@qt4798/pi-web 0.18.8 → 0.18.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +16 -16
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/required-server-files.js +1 -1
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/_global-error.html +1 -1
  9. package/.next/server/app/_global-error.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/.next/server/app/_not-found.html +1 -1
  15. package/.next/server/app/_not-found.rsc +2 -2
  16. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  17. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  18. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  19. package/.next/server/app/api/app-update/route.js +1 -1
  20. package/.next/server/app/index.html +1 -1
  21. package/.next/server/app/index.rsc +4 -4
  22. package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
  23. package/.next/server/app/index.segments/_full.segment.rsc +4 -4
  24. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  25. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  26. package/.next/server/app/login.html +1 -1
  27. package/.next/server/app/login.rsc +2 -2
  28. package/.next/server/app/login.segments/_full.segment.rsc +2 -2
  29. package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  30. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  31. package/.next/server/app/page.js +4 -4
  32. package/.next/server/app/page_client-reference-manifest.js +1 -1
  33. package/.next/server/app-paths-manifest.json +16 -16
  34. package/.next/server/chunks/7915.js +1 -1
  35. package/.next/server/middleware-build-manifest.js +1 -1
  36. package/.next/server/pages/404.html +1 -1
  37. package/.next/server/pages/500.html +1 -1
  38. package/.next/server/server-reference-manifest.json +1 -1
  39. package/.next/static/chunks/app/{page-1b76e2c0f6b23d1d.js → page-b5504be1d93b8430.js} +4 -4
  40. package/.next/static/css/e11550eee90cf54b.css +1 -0
  41. package/.next/trace +83 -83
  42. package/.next/trace-build +1 -1
  43. package/package.json +1 -1
  44. package/.next/static/css/47d64b49986f279b.css +0 -1
  45. /package/.next/static/{tkowCceUM7VKPTDwLEHRB → Bc4W8o_I-azZJvzY-9RoR}/_buildManifest.js +0 -0
  46. /package/.next/static/{tkowCceUM7VKPTDwLEHRB → Bc4W8o_I-azZJvzY-9RoR}/_ssgManifest.js +0 -0
@@ -189,11 +189,11 @@ ${i}`:`${s}
189
189
  ${e}`;(0,o.useEffect)(()=>{t||a(!0)},[t]),(0,o.useEffect)(()=>{if(!l||t)return;let n=!1;return g(null),(async()=>{let{default:t}=await Promise.all([r.e(988),r.e(9425),r.e(3308)]).then(r.bind(r,43328));if(t.initialize({startOnLoad:!1,securityLevel:"strict",suppressErrorRendering:!0,theme:s?"dark":"default"}),!await t.parse(e,{suppressErrors:!0}))throw Error("Invalid Mermaid diagram");let o="u">typeof crypto&&"randomUUID"in crypto?`mermaid-${crypto.randomUUID()}`:`mermaid-${Date.now()}-${Math.random().toString(36).slice(2)}`,i=await t.render(o,e);n||(c(i.svg),p(m))})().catch(()=>{n||g(m)}),()=>{n=!0}},[e,m,s,t,l]);let v=(0,n.jsx)("button",{onClick:()=>a(e=>!e),disabled:t,title:i(t?"desktop.markdownPreviewAvailableAfterStreaming":l?"desktop.source":"desktop.markdownPreviewMermaidDiagram"),className:["markdown-code-action",l?"is-active":""].filter(Boolean).join(" "),children:i(l?"desktop.source":"desktop.preview")});if(!l||t)return(0,n.jsx)(lq,{code:e,lang:"mermaid",headerAction:v,isStreaming:t});let y=h===m?(0,n.jsx)("div",{className:"mermaid-block mermaid-block-error",children:i("desktop.markdownInvalidMermaidDiagram")}):d&&u===m?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",className:"mermaid-block mermaid-preview-button",title:i("desktop.openMermaidViewer"),"aria-label":i("desktop.openMermaidViewer"),onClick:()=>f(!0),dangerouslySetInnerHTML:{__html:d}}),x&&(0,n.jsx)(lU,{svg:d,onClose:()=>f(!1)})]}):(0,n.jsx)("div",{className:"mermaid-block mermaid-block-loading","aria-label":i("desktop.markdownRenderingMermaidDiagram")});return(0,n.jsxs)("div",{className:"markdown-code-block",children:[(0,n.jsxs)("div",{className:"markdown-code-header",children:[(0,n.jsx)("span",{className:"markdown-code-lang",children:"mermaid"}),(0,n.jsx)("div",{className:"markdown-code-actions",children:v})]}),y]})}function lU({svg:e,onClose:t}){let{t:r}=(0,Y.s)(),i=(0,o.useMemo)(()=>(function(e){if("u"<typeof DOMParser)return{html:e,width:800,height:600};let t=new DOMParser().parseFromString(e,"image/svg+xml").documentElement;if(!t||"svg"!==t.tagName.toLowerCase())return{html:e,width:800,height:600};let r=0,n=0,o=t.getAttribute("viewBox");if(o){let e=o.trim().split(/[\s,]+/).map(Number);4===e.length&&e.every(e=>Number.isFinite(e))&&(r=e[2],n=e[3])}return r>0&&n>0||(r=parseFloat(t.getAttribute("width")||""),n=parseFloat(t.getAttribute("height")||"")),r>0&&n>0||(r=800,n=600),t.removeAttribute("width"),t.removeAttribute("height"),t.style.maxWidth="none",t.getAttribute("viewBox")||t.setAttribute("viewBox",`0 0 ${r} ${n}`),{html:t.outerHTML,width:r,height:n}})(e),[e]);return(0,n.jsx)(lW,{contentWidth:i.width,contentHeight:i.height,title:r("desktop.mermaidDiagram"),ariaLabel:r("desktop.mermaidViewer"),onClose:t,children:(0,n.jsx)("div",{dangerouslySetInnerHTML:{__html:i.html}})})}function l_({children:e,onQuoteReply:t,onOpenFile:r,cwd:i,as:s="p",pid:l}){let{openId:a,setOpenId:d}=(0,o.useContext)(lP),{t:c}=(0,Y.s)(),u=a===l,p=(0,o.useRef)(null),[h,g]=(0,o.useState)(null),[x,f]=(0,o.useState)(!1),[m,v]=(0,o.useState)(1),y=(0,o.useRef)(null),[b]=(0,o.useState)(()=>window.matchMedia?.("(pointer: coarse)").matches);(0,o.useEffect)(()=>{!u&&h&&g(null)},[u,h]);let k=(0,o.useRef)(null);(0,o.useEffect)(()=>{h&&k.current&&k.current.scrollIntoView({block:"nearest"})},[h]);let j=()=>{g(null),d(null)},w=()=>{h?j():(()=>{let e;if(h||u)return;let t=p.current,r=(!(e=lC("tr"===s&&t?Array.from(t.querySelectorAll("td, th")).map(e=>(e.textContent??"").trim()).join(" | "):t?.textContent??""))?[]:e.split(/(?<=[??])|[;;]/u).map(e=>e.trim()).filter(e=>e.length>0)).map(e=>({text:e,options:function(e){let t=lC(e);if(!t)return null;let r=t.match(/^(.+?)\s*(?:还是|或者|或者还是|\bor\b)\s*(.+?)[??]?\s*$/iu);if(r){let e=lT(r[1]),t=lT(r[2]);if(e&&t&&e!==t)return[{label:lz(e,12),value:e},{label:lz(t,12),value:t}]}if(!/怎么|如何|怎样|哪个|哪些|什么|为什么|为何|谁|多少|几(个|点|时)?|what|how|why|who|where/u.test(t)&&(/[??]\s*$/u.test(t)||/(?:吗|吧|呢)[??]?\s*$/u.test(t)||/是否|要不要|能不能|可不可以|要不要我|需要我/u.test(t))){let e=t.replace(/^(要我|需要我|要不要我?|是否|能不能|可不可以|要不要|或者|还是|你能|你可以|请|麻烦)\s*/u,"").replace(/[吗吧呢啊呀]?[??]+$/u,"").replace(/[吗吧呢啊呀]$/u,"").trim();return e&&e.length<=16?[{label:`好,${lz(e,10)}`,value:"是的"},{label:"不用",value:"不用了"}]:[{label:"是",value:"是的"},{label:"否",value:"不用了"}]}return null}(e)}));r.length>0&&("tr"===s&&t&&v(Math.max(1,t.querySelectorAll("td, th").length)),g(r),d(l))})()},S=(e,t)=>{y.current&&(y.current.style.left=`${e+12}px`,y.current.style.top=`${t+14}px`)},C=h&&(0,n.jsx)(lR,{innerRef:k,segments:h,onPick:e=>{t(e),j()},onOpenFile:r,cwd:i});return"tr"===s?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("tr",{ref:e=>{p.current=e},onClick:w,title:b||h?void 0:c("desktop.quoteReplyHint"),style:{cursor:"pointer"},children:e}),C&&(0,n.jsx)("tr",{children:(0,n.jsx)("td",{colSpan:m,children:C})})]}):(0,n.jsxs)(s,{ref:p,onMouseEnter:e=>{if(b)return;f(!0);let{clientX:t,clientY:r}=e;requestAnimationFrame(()=>S(t,r))},onMouseMove:b?void 0:e=>S(e.clientX,e.clientY),onMouseLeave:()=>f(!1),onClick:w,style:{position:"relative",cursor:"pointer"},children:[e,x&&!h&&(0,n.jsx)("span",{ref:y,style:{position:"fixed",left:-9999,top:-9999,fontSize:11,color:"var(--text-dim)",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:4,padding:"2px 6px",pointerEvents:"none",zIndex:50,whiteSpace:"nowrap"},children:c("desktop.quoteReplyHint")}),C]})}function lq({code:e,lang:t,headerAction:r,isStreaming:i}){let{t:s}=(0,Y.s)(),[l,a]=(0,o.useState)(!1),[d,c]=(0,o.useState)(!1);return(0,n.jsxs)("div",{className:"markdown-code-block",onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),children:[(0,n.jsxs)("div",{className:"markdown-code-actions",style:{position:"absolute",top:6,right:8,zIndex:1,display:"flex",alignItems:"center",gap:6,opacity:+!!d,pointerEvents:d?"auto":"none",transition:"opacity 0.12s"},children:[(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontFamily:"var(--font-mono)",fontSize:10,fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",userSelect:"none"},children:t||s("desktop.markdownPlainText")}),r,(0,n.jsx)("button",{onClick:()=>{nA(e).then(()=>{a(!0),setTimeout(()=>a(!1),1500)})},title:s(l?"desktop.copied":"desktop.copy"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:22,height:22,border:"none",borderRadius:5,background:"transparent",color:l?"var(--accent)":"var(--text-dim)",cursor:"pointer",fontSize:10,transition:"color 0.12s"},onMouseEnter:e=>{l||(e.currentTarget.style.color="var(--accent)")},onMouseLeave:e=>{l||(e.currentTarget.style.color="var(--text-dim)")},children:l?(0,n.jsx)(f.J,{size:11,"aria-hidden":"true"}):(0,n.jsx)(sA.Q,{size:11,"aria-hidden":"true"})})]}),i?(0,n.jsx)("pre",{className:"markdown-code-streaming",children:(0,n.jsx)("code",{children:e})}):(0,n.jsx)(sF.A,{language:t||"text",style:lS,showLineNumbers:!1,customStyle:{margin:0,padding:"10px 16px",fontSize:13,lineHeight:1.65,borderRadius:0,border:"none",background:"var(--bg-secondary)"},codeTagProps:{style:{fontFamily:"var(--font-mono)"}},children:e})]})}let lK=/^<skill name="([^"]+)" location="([^"]+)">/,lV="\n</skill>",lJ=/<(read-files|modified-files)>\s*([\s\S]*?)\s*<\/\1>/g,lY=/(?:\r?\n){2,}((?:[ \t]*<(?:read-files|modified-files)>[ \t]*\r?\n[\s\S]*?\r?\n[ \t]*<\/(?:read-files|modified-files)>[ \t]*(?:\r?\n)?)+)\s*$/;function lG({content:e}){var t,r,i;let s,{t:l}=(0,Y.s)(),[a,d]=(0,o.useState)(!1),c="string"==typeof e?e:e.filter(e=>"text"===e.type).map(e=>e.text).join("\n"),u=(0,o.useMemo)(()=>{let e,t,r,n,o;return e=[],t=[],r=c.match(lY),n=r?.[1]??"",o=r?.index===void 0?c:c.slice(0,r.index),n.replace(lJ,(r,n,o)=>{let i=o.split(/\r?\n/).map(e=>e.trim()).filter(Boolean);return"read-files"===n?e.push(...i):t.push(...i),""}),{body:o.trim(),readFiles:e,modifiedFiles:t}},[c]),p=(t=u.readFiles.length,r=u.modifiedFiles.length,i=l,s=[],t>0&&s.push(i("desktop.readFilesCount",{count:t})),r>0&&s.push(i("desktop.modifiedFilesCount",{count:r})),s.length>0?s.join(", "):null),[h,g]=(0,o.useState)(!1),[x,f]=(0,o.useState)(!1),m=(0,o.useRef)(null),v=(0,o.useCallback)(()=>{let e=m.current;e&&(g(e.scrollTop>0),f(e.scrollHeight-e.scrollTop-e.clientHeight>1))},[]);return(0,o.useEffect)(()=>{let e=m.current;if(!e||!a)return;let t=new ResizeObserver(v);return e.addEventListener("scroll",v,{passive:!0}),t.observe(e),e.firstElementChild&&t.observe(e.firstElementChild),v(),()=>{e.removeEventListener("scroll",v),t.disconnect()}},[a,v]),(0,n.jsxs)("div",{className:"group/process relative mb-3 min-w-0",children:[(0,n.jsx)("div",{className:"group/summary-row flex items-center justify-between",children:(0,n.jsxs)("button",{type:"button",onClick:()=>d(e=>!e),className:"group/summary flex min-w-0 items-center gap-1.5 text-left text-sm leading-relaxed text-text-muted transition-colors hover:text-text","aria-expanded":a,children:[(0,n.jsx)("span",{className:"truncate",children:l("desktop.conversationCompacted")}),(0,n.jsx)("span",{className:`opacity-0 transition-opacity group-hover/summary:opacity-60 ${a?"rotate-90":""}`,children:(0,n.jsx)(j.J,{size:12,className:"shrink-0 transition-all duration-150"})})]})}),a&&(0,n.jsxs)("div",{className:"relative mt-2",children:[(0,n.jsxs)("div",{ref:m,className:"max-h-[280px] overflow-y-auto pr-2 text-text-dim",children:[(0,n.jsx)("p",{className:"mb-2 text-xs leading-relaxed",children:l("desktop.compactionSummaryDescription")}),u.body?(0,n.jsx)(lH,{className:"!text-text-dim",children:u.body}):(0,n.jsx)("span",{className:"text-xs",children:l("desktop.noSummary")}),p&&(0,n.jsxs)("div",{className:"mt-3 border-t border-border pt-2 text-xs",children:[(0,n.jsx)("div",{className:"font-medium",children:l("desktop.fileContext",{context:p})}),u.modifiedFiles.length>0&&(0,n.jsx)(lX,{title:l("desktop.modifiedFiles"),files:u.modifiedFiles}),u.readFiles.length>0&&(0,n.jsx)(lX,{title:l("desktop.readFiles"),files:u.readFiles})]})]}),h&&(0,n.jsx)("div",{"aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 top-0 z-10 h-6 bg-gradient-to-b from-bg to-transparent"}),x&&(0,n.jsx)("div",{"aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 bottom-0 z-10 h-6 bg-gradient-to-t from-bg to-transparent"})]})]})}function lX({title:e,files:t}){return(0,n.jsxs)("div",{className:"mt-2",children:[(0,n.jsx)("div",{className:"mb-1 font-mono text-[11px] font-medium text-text",children:e}),(0,n.jsx)("ul",{className:"max-h-45 overflow-auto rounded-sm border border-border bg-bg-subtle px-2 py-1.5 font-mono text-[11px] leading-relaxed",children:t.map(e=>(0,n.jsx)("li",{className:"break-all",children:e},e))})]})}function lZ(e){let t,r=[],n=null,o=0,i=0,s=0,l=0,a=[],d=[],c=()=>({lineNo:null,text:"",type:"empty"}),u=()=>{if(!n){a=[],d=[];return}let e=Math.max(a.length,d.length);for(let t=0;t<e;t++){let e=a[t]?{lineNo:a[t].lineNo,text:a[t].text,type:"removed"}:c(),r=d[t]?{lineNo:d[t].lineNo,text:d[t].text,type:"added"}:c();n.rows.push({type:"line",left:e,right:r})}a=[],d=[]};for(let c of e.split(/\r?\n/)){if(!(s>0||l>0)){if(c.startsWith("--- ")){u(),t=lQ(c.slice(4));continue}if(c.startsWith("+++ ")){u(),n={oldPath:t,newPath:lQ(c.slice(4)),rows:[]},r.push(n);continue}}let e=c.match(/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);if(e){n||(n={rows:[]},r.push(n)),u(),o=Number(e[1]),i=Number(e[3]),s=void 0===e[2]?1:Number(e[2]),l=void 0===e[4]?1:Number(e[4]),n.rows.push({type:"hunk",text:c});continue}if(!n)continue;if(c.startsWith("\\ ")){u(),n.rows.push({type:"hunk",text:c});continue}if(0===s&&0===l){""!==c&&n.rows.push({type:"hunk",text:c});continue}let p=c[0],h=c.slice(1);" "===p?(u(),n.rows.push({type:"line",left:{lineNo:o++,text:h,type:"context"},right:{lineNo:i++,text:h,type:"context"}}),s>0&&s--,l>0&&l--):"-"===p?(a.push({lineNo:o++,text:h}),s>0&&s--):"+"===p?(d.push({lineNo:i++,text:h}),l>0&&l--):""!==c&&(u(),n.rows.push({type:"hunk",text:c}))}u();let p=r.filter(e=>e.rows.some(e=>"line"===e.type));return p.length>0?p:null}function lQ(e){return e.split(" ")[0].trim()}let l0=new Set,l1="pi-thinking-expanded-changed";function l2(){return"true"===window.localStorage.getItem("pi-thinking-expanded")}function l6({files:e,onOpenFile:t}){let{t:r}=(0,Y.s)();return 0===e.length?null:(0,n.jsx)("div",{"aria-label":r("desktop.filesWritten"),style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:6,marginTop:6},children:e.map(({filePath:e})=>{let o=oL(e);return(0,n.jsxs)("button",{type:"button",title:e,"aria-label":r("desktop.openWrittenFile",{name:o}),onClick:()=>t?.(e),style:{display:"inline-flex",alignItems:"center",gap:4,padding:"2px 8px",fontSize:12,fontFamily:"var(--font-mono)",color:"var(--text)",background:"var(--bg-subtle)",border:"1px solid var(--border)",borderRadius:6,cursor:"pointer"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M9 1.5H4A1.5 1.5 0 0 0 2.5 3v10A1.5 1.5 0 0 0 4 14.5h8A1.5 1.5 0 0 0 13.5 13V6z"}),(0,n.jsx)("path",{d:"M9 1.5V6h4.5"})]}),(0,n.jsx)("span",{children:o})]},e)})})}var l4=r(35831),l5=r(63522),l3=r(22540),l8=r(36462),l7=r(42405),l9=r(47142);let ae={flash:{cacheRead:.02,input:1,output:2,cacheWrite:0},pro:{cacheRead:.025,input:3,output:6,cacheWrite:0}};function at(e){let t=(e??"").toLowerCase();return t.includes("deepseek-v4-flash")?"flash":t.includes("deepseek-v4-pro")?"pro":null}function ar(e){return null!==at(e)}function an(e,t){let r=at(e);if(!r||!t)return 0;let n=ae[r],o=ai(t.input),i=ai(t.output),s=ai(t.cacheRead),l=ai(t.cacheWrite);return(s*n.cacheRead+o*n.input+i*n.output+l*n.cacheWrite)/1e6}function ao(e){var t;let r="number"==typeof(t=e)&&Number.isFinite(t)?t:0;return!Number.isFinite(r)||r<=0?"\xa50.00":r<.01?"<\xa50.01":r<1?`\xa5${r.toFixed(4)}`:`\xa5${r.toFixed(2)}`}function ai(e){return"number"==typeof e&&Number.isFinite(e)&&e>0?e:0}let as=new Map;function al(e,t,r){let n=`${e}:${t}:${r}`,o=as.get(n);if(o)return as.delete(n),as.set(n,o),o;let i=fetch(`/api/sessions/${encodeURIComponent(e)}/entries/${encodeURIComponent(t)}/thinking?blockIndex=${r}`).then(async e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.json();if("string"!=typeof t.thinking)throw Error("Invalid thinking response");return t.thinking}).catch(e=>{throw as.delete(n),e});if(as.set(n,i),as.size>100){let e=as.keys().next().value;e&&as.delete(e)}return i}function aa(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(),o=t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});if(n)return o;let i=t.toLocaleDateString([],{month:"short",day:"numeric",year:t.getFullYear()!==r.getFullYear()?"numeric":void 0});return`${i} ${o}`}let ad=(0,o.memo)(function({message:e,isStreaming:t,toolResults:r,modelNames:o,cwd:i,onOpenFile:s,onQuoteReply:l,onOpenSession:a,entryId:d,searchBlock:c,onFork:u,forking:p,onNavigate:h,onEditContent:g,showTimestamp:x,prevTimestamp:f,sessionId:m,onCreateTask:v,writtenFiles:y}){return"user"===e.role?(0,n.jsx)(ac,{message:e,cwd:i,onOpenFile:s,entryId:d,onFork:u,forking:p,onNavigate:h,onEditContent:g,onCreateTask:v}):"assistant"===e.role?(0,n.jsx)(au,{message:e,isStreaming:t,toolResults:r,modelNames:o,cwd:i,onOpenFile:s,onQuoteReply:l,onOpenSession:a,showTimestamp:x,prevTimestamp:f,sessionId:m,entryId:d,onFork:u,forking:p,searchBlock:c,writtenFiles:y}):"toolResult"===e.role?null:"custom"===e.role?"compaction"===e.customType?(0,n.jsx)(lG,{content:e.content}):(0,n.jsx)(aT,{message:e,isStreaming:t,cwd:i,onOpenFile:s}):"bashExecution"===e.role?(0,n.jsx)(aR,{message:e,sessionId:m}):null},(e,t)=>e.message===t.message&&e.isStreaming===t.isStreaming&&function(e,t,r){if(t===r||"assistant"!==e.role)return!0;for(let n of e.content??[])if("toolCall"===n.type&&t?.get(n.toolCallId)!==r?.get(n.toolCallId))return!1;return!0}(e.message,e.toolResults,t.toolResults)&&e.modelNames===t.modelNames&&e.cwd===t.cwd&&e.onOpenFile===t.onOpenFile&&e.onQuoteReply===t.onQuoteReply&&e.onOpenSession===t.onOpenSession&&e.entryId===t.entryId&&e.searchBlock===t.searchBlock&&e.onFork===t.onFork&&e.forking===t.forking&&e.onNavigate===t.onNavigate&&e.onEditContent===t.onEditContent&&e.onCreateTask===t.onCreateTask&&e.showTimestamp===t.showTimestamp&&e.prevTimestamp===t.prevTimestamp&&e.sessionId===t.sessionId&&e.writtenFiles===t.writtenFiles);function ac({message:e,cwd:t,onOpenFile:r,entryId:i,onFork:s,forking:l,onNavigate:a,onEditContent:d,onCreateTask:c}){let{t:u}=(0,Y.s)(),[p,h]=(0,o.useState)(!1),[g,x]=(0,o.useState)(!1),m="string"==typeof e.content?e.content:e.content.filter(e=>"text"===e.type).map(e=>e.text).join("\n"),v="string"==typeof e.content?[]:e.content.filter(e=>"image"===e.type),y=v.length>0?m.replace(/(?<!\\)!\[[^\]]*\]\([^)]*\)/g,"").replace(/[ \t]*\n{3,}/g,"\n\n"):m,b=(y&&y.trim()?y.trim().startsWith("/")?y:function(e){let t=e.match(lK);if(!t)return null;let r=t[1],n=e.indexOf(lV),o="";if(-1!==n){let t=e.slice(n+lV.length);t.startsWith("\n\n")&&(o=t.slice(2).trim())}return o?`/skill:${r} ${o}`:`/skill:${r}`}(y):null)??y,k=aa(e.timestamp),j=!!i&&!!s,w=!!i&&!!a;return(0,n.jsxs)("div",{className:"chat-user-message chat-msg-in",onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1),children:[(0,n.jsx)("div",{className:"chat-user-bubble-wrap",children:(0,n.jsxs)("div",{className:"chat-user-bubble",children:[v.length>0&&(0,n.jsx)("div",{style:{display:"flex",gap:6,flexWrap:"wrap",marginBottom:8*!!y},children:v.map((e,t)=>{let r=e.source?"base64"===e.source.type?`data:${e.source.media_type};base64,${e.source.data}`:e.source.url??"":e.data?`data:${e.mimeType};base64,${e.data}`:"";return(0,n.jsx)(lL,{src:r,children:(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)})}),b&&(0,n.jsx)(lH,{className:"markdown-user-message",cwd:t,onOpenFile:r,children:b})]})}),(0,n.jsxs)("div",{className:"msg-actions",style:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:6,marginTop:3},children:[(0,n.jsxs)("div",{className:"msg-actions",style:{display:"flex",gap:3,opacity:+!!p,pointerEvents:p?"auto":"none",transition:"opacity 0.12s"},children:[(0,n.jsx)("button",{onClick:()=>{nA(y).then(()=>{x(!0),setTimeout(()=>x(!1),1500)})},title:u("desktop.copyMessage"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:22,height:22,background:"none",border:"none",borderRadius:5,color:g?"var(--accent)":"var(--text-dim)",cursor:"pointer",transition:"color 0.12s"},onMouseEnter:e=>{g||(e.currentTarget.style.color="var(--accent)")},onMouseLeave:e=>{g||(e.currentTarget.style.color="var(--text-dim)")},children:g?(0,n.jsx)(f.S,{size:11}):(0,n.jsx)(sA.T,{size:11})}),c&&y.trim()&&(0,n.jsx)("button",{onClick:()=>c(y,t),title:u("desktop.createTaskFromMessage"),"aria-label":u("desktop.createTaskFromMessage"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:22,height:22,background:"none",border:"none",borderRadius:5,color:"var(--text-dim)",cursor:"pointer",transition:"color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-dim)"},children:(0,n.jsx)(l7.X,{size:11})})]}),(j||w)&&(0,n.jsxs)("div",{className:"msg-actions",style:{display:"flex",gap:3,opacity:p||l?1:0,pointerEvents:p||l?"auto":"none",transition:"opacity 0.12s"},children:[w&&(0,n.jsx)("button",{onClick:()=>void a(i).then(t=>{t&&d?.(e)}),title:u("desktop.editFromHere"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:22,height:22,background:"none",border:"none",borderRadius:5,color:"var(--text-dim)",cursor:"pointer",transition:"color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-dim)"},children:(0,n.jsx)(l4.S,{size:11})}),j&&(0,n.jsx)("button",{onClick:()=>{s(i)},disabled:l,title:u(l?"desktop.creatingNewSession":"desktop.newSessionFromHere"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:22,height:22,background:"none",border:"none",borderRadius:5,color:l?"var(--accent)":"var(--text-dim)",cursor:l?"not-allowed":"pointer",transition:"color 0.12s"},onMouseEnter:e=>{l||(e.currentTarget.style.color="var(--accent)")},onMouseLeave:e=>{l||(e.currentTarget.style.color="var(--text-dim)")},children:(0,n.jsx)(W.C,{size:11})})]}),k&&(0,n.jsx)("span",{style:{fontSize:11,color:p?"var(--text-muted)":"var(--text-dim)",opacity:p?1:.5,transition:"color 0.15s, opacity 0.15s"},children:k})]})]})}function au({message:e,isStreaming:t,toolResults:r,modelNames:i,cwd:s,onOpenFile:l,onQuoteReply:a,onOpenSession:d,showTimestamp:c,prevTimestamp:u,sessionId:p,entryId:h,onFork:g,forking:x,searchBlock:m,writtenFiles:v}){var y,b;let k,j,w,{t:S}=(0,Y.s)(),C=c?aa(e.timestamp):null,z=(e.content??[]).map((e,t)=>({block:e,originalIndex:t})).filter(({block:e})=>!sl(e,{isStreaming:t})),T=z.map(({block:e})=>e),[R,I]=(0,o.useState)(!1),[M,E]=(0,o.useState)(!1),[$,L]=(0,o.useState)(!1),N=(0,o.useRef)(null),[A,P]=(0,o.useState)(null),F=(0,o.useRef)(z);F.current=z;let D=(0,o.useRef)(new Map),[H,O]=(0,o.useState)(new Map),B=(0,o.useMemo)(()=>{if(!e.timestamp||!u)return;let t=Math.round((e.timestamp-u)/1e3);return t>0?t:void 0},[e.timestamp,u]),U=(0,o.useMemo)(()=>{let t=new Map;if(!r||!e.timestamp)return t;for(let[n,o]of r)if(o.timestamp&&e.timestamp){let r=Math.round((o.timestamp-e.timestamp)/1e3);r>0&&t.set(n,r)}return t},[r,e.timestamp]),_=T.filter(e=>"text"===e.type).map(e=>e.text).join("\n"),K=function(e){let t=new Set;for(let r of e){if("toolCall"!==r.type)continue;let e=(r.toolName??"").toLowerCase();if("apply_patch"===e||e.includes("patch")||!(aw(r.toolName??"")||"write"===e||"create"===e||e.includes("file_write")||e.includes("create_file")||e.includes("multiedit")))continue;let n=r.input??{},o=n.filePath??n.file_path??n.path??n.file??n.destination??n.newFilePath??n.oldPath;"string"==typeof o&&o.trim()&&t.add(o)}return[...t]}(T),[V,J]=(0,o.useState)(!1);(0,o.useEffect)(()=>{if(!t){let e=new Date().getTime();O(t=>{let r=new Map(t);for(let[t,n]of D.current)r.has(t)||r.set(t,Math.round((e-n)/1e3));return r}),N.current=null,P(null);return}let e=setInterval(()=>{let e=F.current,t=e.map(({block:e})=>e),r=Date.now();e.forEach(({originalIndex:e})=>{D.current.has(e)||D.current.set(e,r)}),O(t=>{let n=!1,o=new Map(t);for(let t=0;t<e.length-1;t++){let i=e[t].originalIndex,s=e[t+1].originalIndex;if(!o.has(i)&&D.current.has(i)){let e=D.current.get(i),t=D.current.get(s)??r;o.set(i,Math.round((t-e)/1e3)),n=!0}}return n?o:t});let n=0;for(let e of t)"text"===e.type?n+=e.text?.length??0:"thinking"===e.type?n+=e.thinking?.length??0:"toolCall"===e.type&&(n+=JSON.stringify(e.input??{}).length);if(0===n)return;null===N.current&&(N.current=r);let o=(r-N.current)/1e3;o>.5&&P(n/4/o)},300);return()=>clearInterval(e)},[t]);let G=e=>e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:e.toLocaleString(),X="error"===e.stopReason&&e.errorMessage?e.errorMessage:null;return 0!==T.length||t||X?(0,n.jsxs)("div",{"data-message-role":"assistant","data-entry-id":h,className:["chat-assistant-message chat-msg-in",t?"is-streaming":""].filter(Boolean).join(" "),onMouseEnter:()=>I(!0),onMouseLeave:()=>I(!1),children:[t&&(0,n.jsx)("div",{className:"chat-assistant-meta",children:(()=>{let e,t=0;for(let e of T)"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:S("desktop.estimatedStreamingTokenCount"),children:[(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:2,fontSize:11,fontWeight:400},children:[(0,n.jsx)(l8.g,{size:13}),r]}),null!==A&&(e=A>=50?"--accent-green":A>=30?"--accent-blue":A>=15?"--accent-orange":"--accent-red",(0,n.jsx)("span",{style:{marginLeft:6,padding:"1px 6px",borderRadius:4,background:`var(${e})`,color:"var(--bg)",fontSize:11,fontWeight:400},children:S("desktop.tokensPerSecond",{count:A.toFixed(1)})}))]})})})()}),(0,n.jsxs)("div",{className:"chat-assistant-content",style:{position:"relative"},children:[X&&(0,n.jsxs)("div",{className:"chat-assistant-error",role:"alert",children:[(0,n.jsx)(l9.M,{size:13,weight:"bold"}),(0,n.jsx)("span",{children:X})]}),_&&!t&&(0,n.jsxs)("div",{className:"chat-copy-float",style:{opacity:+!!R,pointerEvents:R?"auto":"none"},children:[(0,n.jsx)("button",{className:"msg-actions",onClick:()=>{nA(_).then(()=>{E(!0),setTimeout(()=>E(!1),1500)})},title:S("desktop.copyMessage"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:24,height:24,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:6,color:M?"var(--accent)":"var(--text-dim)",cursor:"pointer",transition:"color 0.12s, border-color 0.12s"},onMouseEnter:e=>{M||(e.currentTarget.style.color="var(--accent)")},onMouseLeave:e=>{M||(e.currentTarget.style.color="var(--text-dim)")},children:M?(0,n.jsx)(f.S,{size:12}):(0,n.jsx)(sA.T,{size:12})}),(0,n.jsx)("button",{className:"msg-actions",onClick:()=>{nA(_.replace(/`([^`]+)`/g,"$1").replace(/```[^\n]*\n?/g,"\n").replace(/```/g,"\n").replace(/!\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/(\*\*|__)(.*?)\1/g,"$2").replace(/(\*|_)([^*_]+)\1/g,"$2").replace(/~~(.*?)~~/g,"$1").replace(/^#{1,6}\s+/gm,"").replace(/^>\s?/gm,"").replace(/^(\s*)([-*+]|\d+\.)\s+/gm,"$1").replace(/^\s*\|?[\s:|-]+\|?\s*$/gm,"").replace(/\|/g," ").replace(/\n{3,}/g,"\n\n").trim()).then(()=>{L(!0),setTimeout(()=>L(!1),1500)})},title:S("desktop.copyPlainText"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:24,height:24,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:6,color:$?"var(--accent)":"var(--text-dim)",cursor:"pointer",transition:"color 0.12s, border-color 0.12s"},onMouseEnter:e=>{$||(e.currentTarget.style.color="var(--accent)")},onMouseLeave:e=>{$||(e.currentTarget.style.color="var(--text-dim)")},children:$?(0,n.jsx)(f.S,{size:12}):(0,n.jsx)(l7.X,{size:12})})]}),z.map(({block:e,originalIndex:o})=>(0,n.jsx)(ap,{block:e,searchTarget:e===m,toolResults:r,isStreaming:t,streamingDuration:H.get(o)??("thinking"===e.type?B:void 0),toolCallDurations:U,cwd:s,onOpenFile:l,onQuoteReply:a,onOpenSession:d,sessionId:p,entryId:h,blockIndex:o},`${h??"stream"}-${o}`))]}),v&&v.length>0&&(0,n.jsx)(l6,{files:v,onOpenFile:l}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginTop:4},children:[!t&&(e.provider||e.usage)&&(0,n.jsxs)("div",{style:{fontSize:11,color:R?"var(--text-muted)":"var(--text-dim)",opacity:R?1:.5,display:"flex",alignItems:"center",gap:5,flexWrap:"wrap",transition:"color 0.15s, opacity 0.15s"},children:[e.provider&&(0,n.jsx)("span",{children:(y=e.provider,b=e.model,k=y.toLowerCase(),j=b.toLowerCase(),w=Object.entries(i??{}).flatMap(([e,t])=>{let r=e.indexOf(":");return r>0&&e.slice(0,r).toLowerCase()===k?[{id:e.slice(r+1).toLowerCase(),name:t}]:[]}),w.find(e=>e.id===j)?.name??w.find(e=>j.endsWith(`/${e.id}`))?.name??Object.entries(i??{}).find(([e])=>e.toLowerCase()===j)?.[1]??`${y}/${b}`)}),e.usage&&e.usage.input>0&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:2},children:[(0,n.jsx)(l3.K,{size:10}),G(e.usage.input)]}),e.usage&&e.usage.output>0&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:2},children:[(0,n.jsx)(l5.Z,{size:10}),G(e.usage.output)]}),e.usage&&e.usage.cacheRead>0&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:2},children:[(0,n.jsx)(q.b,{size:10}),G(e.usage.cacheRead)]}),e.usage&&e.usage.cost?.total>0&&(()=>{if(ar(e.model)){let t=an(e.model,e.usage);return t<=0?null:(0,n.jsx)("span",{title:S("desktop.turnUsageByOfficialPrice"),children:ao(t)})}return(0,n.jsxs)("span",{children:["$",e.usage.cost.total.toFixed(4)]})})()]}),h&&g&&!t&&(0,n.jsx)("button",{className:"msg-actions",onClick:()=>g(h),disabled:x,title:x?S("desktop.creatingNewSession"):S("desktop.newSessionFromHere"),"aria-label":S("desktop.newSessionFromHere"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:22,height:22,background:"none",border:"none",borderRadius:5,color:x?"var(--accent)":"var(--text-dim)",cursor:x?"not-allowed":"pointer",opacity:+!!R,pointerEvents:R?"auto":"none",transition:"opacity 0.12s, color 0.12s"},children:(0,n.jsx)(W.C,{size:11})}),C&&!t&&(0,n.jsx)("span",{style:{fontSize:11,color:R?"var(--text-muted)":"var(--text-dim)",opacity:R?1:.5,marginLeft:"auto",transition:"color 0.15s, opacity 0.15s"},children:C}),K.length>0&&!t&&(0,n.jsxs)("span",{style:{position:"relative",display:"inline-flex",alignItems:"center"},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>J(e=>!e),title:S("desktop.changedFiles",{count:K.length}),style:{display:"inline-flex",alignItems:"center",gap:4,padding:"1px 7px",border:"1px solid var(--border)",borderRadius:999,background:V?"var(--bg-hover)":"none",color:"var(--text-muted)",fontSize:10,cursor:"pointer",opacity:R||V?1:.5,transition:"opacity 0.12s, border-color 0.12s, background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--accent)",e.currentTarget.style.borderColor="var(--accent)"},onMouseLeave:e=>{V||(e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)")},children:[(0,n.jsx)(W.C,{size:10,"aria-hidden":"true"}),K.length]}),V&&(0,n.jsx)("span",{style:{position:"absolute",right:0,top:"calc(100% + 6px)",zIndex:30,minWidth:200,maxWidth:320,padding:"6px 0",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 8px 24px rgba(0,0,0,0.18)"},children:K.map(e=>(0,n.jsx)("button",{type:"button",onClick:()=>{J(!1),l?.(e)},style:{display:"block",width:"100%",padding:"5px 12px",background:"none",border:"none",color:"var(--text-muted)",fontSize:11,textAlign:"left",fontFamily:"var(--font-mono)",cursor:"pointer",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.background="none",e.currentTarget.style.color="var(--text-muted)"},children:e},e))})]})]})]}):null}function ap({block:e,searchTarget:t,toolResults:r,isStreaming:o,streamingDuration:i,toolCallDurations:s,cwd:l,onOpenFile:a,onQuoteReply:d,onOpenSession:c,sessionId:u,entryId:p,blockIndex:h}){if("text"===e.type)return(0,n.jsx)("div",{"data-message-text":!0,"data-search-target":t||void 0,children:(0,n.jsx)(ah,{block:e,isStreaming:o,cwd:l,onOpenFile:a,onQuoteReply:d})});if("thinking"===e.type)return(0,n.jsx)(ag,{block:e,duration:i,sessionId:u,entryId:p,blockIndex:h});if("image"===e.type){let t=e.source?.type==="base64"?`data:${e.source.media_type};base64,${e.source.data}`:e.source?.url??(e.data?`data:${e.mimeType};base64,${e.data}`:"");return t?(0,n.jsx)(lL,{src:t,children:(0,n.jsx)("img",{src:t,alt:"",className:"max-h-96 max-w-full rounded object-contain"})}):null}if("toolCall"===e.type){let t=r?.get(e.toolCallId),o=s?.get(e.toolCallId);return(0,n.jsx)(af,{block:e,result:t,duration:o,onOpenSession:c})}return null}function ah({block:e,isStreaming:t,cwd:r,onOpenFile:o,onQuoteReply:i}){return(0,n.jsx)(lH,{isStreaming:t,cwd:r,onOpenFile:o,onQuoteReply:i,children:e.text})}function ag({block:e,duration:t,sessionId:r,entryId:i,blockIndex:s,contentOnly:l=!1,isStreaming:a,cwd:d,onOpenFile:c,className:u}){var p;let{t:h}=(0,Y.s)(),[g,x]=(0,o.useState)(l2),[f,m]=(0,o.useState)(null),[v,y]=(0,o.useState)(!1),[b,k]=(0,o.useState)(null);return((0,o.useRef)(h).current=h,p=e.thinking,p.trimStart().match(/^[^\r\n]{0,240}/u)?.[0].trimEnd(),(0,o.useEffect)(()=>{let e=()=>x(l2());return window.addEventListener(l1,e),()=>window.removeEventListener(l1,e)},[]),(0,o.useEffect)(()=>{if(!g||!e.deferred||null!==f)return;if(!r||!i)return void k(h("desktop.thinkingContentUnavailable"));let t=5,n=()=>{y(!0),k(null),al(r,i,s).then(e=>{m(e),y(!1)}).catch(e=>{t>1?(t--,setTimeout(n,2e3)):(y(!1),k(e instanceof Error?e.message:String(e)))})};n()},[g,e.deferred,f,r,i,s,h]),l)?(0,n.jsx)(ax,{block:e,sessionId:r,entryId:i,blockIndex:s,isStreaming:a,cwd:d,onOpenFile:c,className:u}):(0,n.jsxs)("div",{className:"thinking-block",children:[(0,n.jsxs)("button",{onClick:()=>x(e=>!e),className:"thinking-block-trigger","aria-expanded":g,children:[(0,n.jsx)("span",{className:`thinking-block-caret ${g?"is-expanded":""}`,"aria-hidden":"true",children:"›"}),(0,n.jsx)("span",{className:"thinking-block-icon","aria-hidden":"true",children:"✦"}),(0,n.jsx)("span",{children:h("desktop.thinking")}),void 0!==t&&(0,n.jsxs)("span",{style:{marginLeft:"auto",fontSize:11,color:"var(--text-dim)",fontVariantNumeric:"tabular-nums"},children:[t,"s"]})]}),g&&(0,n.jsx)("div",{className:`thinking-block-content ${b?"is-error":""}`,children:v?h("desktop.loadingThinking"):b??(e.deferred?f:e.thinking)}),void 0!==t&&(0,n.jsxs)("span",{style:{flexShrink:0,color:"var(--text-dim)",fontVariantNumeric:"tabular-nums"},children:[t,"s"]})]})}function ax({block:e,sessionId:t,entryId:r,blockIndex:i,isStreaming:s,cwd:l,onOpenFile:a,className:d}){let{t:c}=(0,Y.s)(),[u,p]=(0,o.useState)(null),[h,g]=(0,o.useState)(!0===e.deferred),[x,f]=(0,o.useState)(null);return((0,o.useEffect)(()=>{let n=!1,o=5;if(!e.deferred)return void g(!1);if(!t||!r){g(!1),f(c("desktop.thinkingContentUnavailable"));return}let s=()=>{n||(g(!0),f(null),al(t,r,i).then(e=>{n||(p(e),g(!1))}).catch(e=>{n||(o>1?(o--,setTimeout(s,2e3)):(g(!1),f(e instanceof Error?e.message:String(e))))}))};return s(),()=>{n=!0}},[e.deferred,i,r,t,c]),h)?(0,n.jsx)("div",{className:"text-xs text-text-dim",children:c("desktop.loadingThinking")}):x?(0,n.jsx)("div",{className:"text-xs text-red-400",children:x}):(0,n.jsx)(lH,{isStreaming:s,cwd:l,onOpenFile:a,className:d,children:e.deferred?u??"":e.thinking})}let af=(0,o.memo)(function({block:e,result:t,duration:r,processStyle:i=!1,onOpenSession:s}){var l;let a,{t:d}=(0,Y.s)(),[c,u]=(0,o.useState)(()=>{var t;return void 0!==(t=e.toolCallId)&&l0.has(t)}),p=(0,o.useMemo)(()=>JSON.stringify(e.input,null,2),[e.input]),h=void 0!==e.rawInput,g=aw(e.toolName),x=t&&!t.isError?function(e){let t=e.details;if(!aS(t))return null;let r="string"==typeof t.patch?t.patch:null;if(r)return{text:r};let n="string"==typeof t.diff?t.diff:null;return n?{text:n}:null}(t):null,f=function(e,t){if(!sS(e.toolName))return null;let r=sI(sC(e.input,e.rawInput));if(r)return r;let n=t&&!t.isError?t.details:void 0;if(aS(n)){let e=sM(n.preview);if(e)return e}return null}(e,t),m=sS(e.toolName)?0===(a=function(e){let t=[];for(let r of e.matchAll(/^\*\*\* (?:Add|Delete|Update) File: (.+)$/gm)){let e=(r[1]??"").trim();e&&!t.includes(e)&&t.push(e)}return t}(sC((l=e).input,l.rawInput))).length?null:a.join(", ").slice(0,120):null,v=(0,o.useMemo)(()=>t?t.content.filter(e=>"text"===e.type).map(e=>e.text).join("\n"):null,[t]),y=t?.content.filter(e=>"image"===e.type)??[],b=null!==v&&("(no output)"===v.trim()||""===v.trim()),k=(t?.isError??!1)||sS(e.toolName)&&sT(t?.details),w=sp(t?.details)?t.details:null;return(0,n.jsxs)("div",{className:`tool-call-block ${i?"is-process":""} ${k?"is-error":""}`,children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"stretch",minWidth:0},children:[(0,n.jsxs)("button",{onClick:()=>{var t;let r=!c;t=e.toolCallId,t&&(r?l0.add(t):l0.delete(t)),u(r)},className:"tool-call-trigger","aria-expanded":c,style:{flex:1,minWidth:0},children:[(0,n.jsx)("span",{className:"tool-call-name",children:e.toolName}),(0,n.jsx)("span",{className:"tool-call-preview",children:h?d("chat.generatingToolInput"):m??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)("span",{className:`tool-call-caret ${c?"is-expanded":""}`,"aria-hidden":"true",children:(0,n.jsx)(j.J,{size:12})})]}),w&&s&&(0,n.jsx)("button",{type:"button",className:"tool-call-open-session",onClick:()=>s(w.sessionId),title:d("subagent.open"),"aria-label":d("subagent.open"),children:(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M15 3h6v6"}),(0,n.jsx)("path",{d:"M10 14 21 3"}),(0,n.jsx)("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"})]})})]}),c&&!g&&(0,n.jsx)("pre",{className:"tool-call-input",children:p}),y.length>0&&(0,n.jsx)(aC,{images:y,isError:k}),c&&f&&(0,n.jsx)("div",{style:{borderTop:"1px solid rgba(34,197,94,0.15)",background:"var(--bg)"},children:(0,n.jsx)(ay,{files:f})}),c&&t&&f&&k&&(0,n.jsx)(az,{text:v??"",isEmpty:b,isError:k}),c&&t&&!f&&(x?(0,n.jsx)(am,{diff:x,processStyle:i}):(!b||0===y.length)&&(0,n.jsx)(az,{text:v??"",isEmpty:b,isError:k,processStyle:i}))]})});function am({diff:e,processStyle:t=!1}){return(0,n.jsx)("div",{style:{borderTop:t?"1px solid var(--border)":"1px solid rgba(34,197,94,0.15)",background:"var(--bg)"},children:(0,n.jsx)(av,{text:e.text})})}function av({text:e}){let t=(0,o.useMemo)(()=>lZ(e),[e]);return t?(0,n.jsx)(ay,{files:t}):(0,n.jsx)(aj,{text:e})}function ay({files:e}){let{t}=(0,Y.s)(),r=e.length>1;return(0,n.jsx)("div",{style:{maxHeight:560,overflowY:"auto",overflowX:"hidden",background:"var(--bg)"},children:e.map((e,o)=>(0,n.jsxs)("div",{style:{minWidth:0,borderTop:0===o?"none":"1px solid var(--border)",fontFamily:"var(--font-mono)",fontSize:"calc(12px + var(--chat-font-size-offset, 0px))",lineHeight:1.55},children:[r&&(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) minmax(0, 1fr)",position:"sticky",top:0,zIndex:1,background:"var(--bg-panel)",borderBottom:"1px solid var(--border)"},children:[(0,n.jsx)(ab,{title:e.oldPath||t("desktop.before"),side:"left"}),(0,n.jsx)(ab,{title:e.newPath||t("desktop.after"),side:"right"})]}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) minmax(0, 1fr)"},children:e.rows.map((e,t)=>"hunk"===e.type?null:(0,n.jsxs)("div",{style:{display:"contents"},children:[(0,n.jsx)(ak,{cell:e.left,side:"left"}),(0,n.jsx)(ak,{cell:e.right,side:"right"})]},t))})]},o))})}function ab({title:e,side:t}){return(0,n.jsx)("div",{title:e,style:{padding:"5px 10px",color:"var(--text-dim)",borderRight:"left"===t?"1px solid var(--border)":"none",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e})}function ak({cell:e,side:t}){let r="added"===e.type?"rgba(34,197,94,0.12)":"removed"===e.type?"rgba(248,113,113,0.13)":"empty"===e.type?"var(--bg-subtle)":"transparent",o="added"===e.type?"+":"removed"===e.type?"-":" ",i="added"===e.type?"var(--status-success)":"removed"===e.type?"var(--status-error)":"var(--text-dim)";return(0,n.jsxs)("div",{style:{display:"flex",minWidth:0,background:r,borderRight:"left"===t?"1px solid var(--border)":"none"},children:[(0,n.jsx)("span",{style:{width:42,padding:"0 6px",textAlign:"right",color:"var(--text-dim)",userSelect:"none",background:"var(--bg-panel)",borderRight:"1px solid var(--border)",flexShrink:0},children:e.lineNo??""}),(0,n.jsx)("span",{style:{width:18,padding:"0 5px",color:i,userSelect:"none",fontWeight:"context"===e.type||"empty"===e.type?400:700,flexShrink:0},children:o}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,padding:"0 10px 0 0",color:"empty"===e.type?"var(--text-dim)":"var(--text)",whiteSpace:"pre-wrap",overflowWrap:"anywhere"},children:e.text||"\xa0"})]})}function aj({text:e}){let t=e.split(/\r?\n/);return(0,n.jsx)("div",{style:{maxHeight:520,overflowY:"auto",overflowX:"hidden",fontFamily:"var(--font-mono)",fontSize:"calc(12px + var(--chat-font-size-offset, 0px))",lineHeight:1.55,minWidth:0},children:t.map((e,t)=>{let r=e.startsWith("@@")?"hunk":e.startsWith("+")&&!e.startsWith("+++")?"added":e.startsWith("-")&&!e.startsWith("---")?"removed":"context";return(0,n.jsxs)("div",{style:{display:"flex",background:"added"===r?"rgba(34,197,94,0.12)":"removed"===r?"rgba(248,113,113,0.13)":"hunk"===r?"rgba(96,165,250,0.12)":"transparent",borderLeft:"added"===r?"3px solid var(--status-success)":"removed"===r?"3px solid var(--status-error)":"hunk"===r?"3px solid var(--accent)":"3px solid transparent"},children:[(0,n.jsx)("span",{style:{width:48,padding:"0 8px",color:"var(--text-dim)",background:"var(--bg-panel)",borderRight:"1px solid var(--border)",textAlign:"right",userSelect:"none",flexShrink:0},children:t+1}),(0,n.jsx)("span",{style:{padding:"0 10px",whiteSpace:"pre-wrap",overflowWrap:"anywhere",color:"added"===r?"var(--status-success)":"removed"===r?"var(--status-error)":"hunk"===r?"var(--accent)":"var(--text)"},children:e||"\xa0"})]},t)})})}function aw(e){let t=e.toLowerCase();return"edit"===t||t.startsWith("edit_")||t.endsWith(".edit")||t.endsWith("_edit")||t.includes("str_replace")||t.includes("replace_editor")}function aS(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function aC({images:e,isError:t}){return(0,n.jsx)("div",{style:{display:"flex",gap:8,flexWrap:"wrap",padding:"10px",background:"var(--bg)",borderTop:`1px solid ${t?"rgba(248,113,113,0.3)":"rgba(34,197,94,0.15)"}`},children:e.map((e,t)=>{let r=aI(e);return r?(0,n.jsx)(lL,{src:r,style:{maxWidth:"100%"},children:(0,n.jsx)("img",{src:r,alt:"",loading:"lazy",style:{display:"block",maxWidth:"min(100%, 720px)",maxHeight:520,borderRadius:6,objectFit:"contain",border:"1px solid var(--border)"}})},`${r}-${t}`):null})})}function az({text:e,images:t=[],isEmpty:r,isError:i,processStyle:s=!1}){let{t:l}=(0,Y.s)(),[a,d]=(0,o.useState)(!1),c=!r&&e.length>8e3&&!a,u=c?e.slice(0,8e3):e,p=!r||0===t.length;return(0,n.jsxs)("div",{style:{borderTop:`1px solid ${s?"var(--border)":i?"rgba(248,113,113,0.3)":"rgba(34,197,94,0.15)"}`,background:s?"var(--bg-subtle)":i?"rgba(248,113,113,0.04)":"var(--bg-subtle)"},children:[t.length>0&&(0,n.jsx)("div",{style:{display:"flex",gap:8,flexWrap:"wrap",padding:"10px",background:"var(--bg)"},children:t.map((e,t)=>{let r=aI(e);return r?(0,n.jsx)(lL,{src:r,children:(0,n.jsx)("img",{src:r,alt:`Tool result image ${t+1}`,loading:"lazy",style:{display:"block",maxWidth:"min(100%, 720px)",maxHeight:520,borderRadius:6,objectFit:"contain",border:"1px solid var(--border)"}})},`${r}-${t}`):null})}),p&&(0,n.jsx)("pre",{style:{margin:0,padding:"8px 10px",color:i?"var(--status-error)":r?"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:r?"italic":"normal",opacity:r?.6:1},children:r?l("desktop.noOutput"):u}),c&&(0,n.jsx)("button",{onClick:()=>d(!0),style:{display:"block",margin:"6px 8px 8px",padding:"4px 10px",border:"1px solid var(--border)",borderRadius:5,background:"transparent",color:"var(--text-dim)",fontSize:11,cursor:"pointer"},children:l("desktop.loadFullOutput")})]})}function aT({message:e,isStreaming:t,cwd:r,onOpenFile:i}){var s,l,a,d,c,u;let p,{t:h}=(0,Y.s)(),g=!1===e.display,[x,f]=(0,o.useState)(!g),[m,v]=(0,o.useState)(!1),[y,b]=(0,o.useState)(!1),k="string"==typeof(s=e.content)?s:s.filter(e=>"text"===e.type).map(e=>e.text).join("\n"),j="string"==typeof(l=e.content)?[]:l.filter(e=>"image"===e.type),w=void 0!==e.details,S=w?function(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}(e.details):"",C=(a=e.customType,d=h("desktop.extension"),a||d),z=aa(e.timestamp);return(0,n.jsx)("div",{style:{marginBottom:16},children:(0,n.jsxs)("div",{style:{border:"1px solid var(--border)",borderRadius:8,overflow:"hidden",background:g?"var(--bg-subtle)":"var(--bg)",opacity:g&&!x?.82:1},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"7px 10px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text-muted)",fontSize:12},children:[(0,n.jsx)("span",{style:{color:"var(--text-muted)",fontFamily:"var(--font-mono)",fontSize:11,fontWeight:650},children:C}),g&&(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:11},children:h("desktop.hiddenExtensionMessage")}),z&&(0,n.jsx)("span",{style:{marginLeft:"auto",color:"var(--text-dim)",fontSize:10},children:z})]}),x?(0,n.jsxs)("div",{style:{padding:"6px 9px"},children:[j.length>0&&(0,n.jsx)("div",{style:{display:"flex",gap:6,flexWrap:"wrap",marginBottom:8*!!k},children:j.map((e,t)=>{let r=aI(e);return r?(0,n.jsx)(lL,{src:r,children:(0,n.jsx)("img",{src:r,alt:"",style:{maxWidth:240,maxHeight:240,borderRadius:6,objectFit:"contain",display:"block",border:"1px solid var(--border)"}})},t):null})}),k?(0,n.jsx)(lH,{className:"markdown-custom-message",isStreaming:t,cwd:r,onOpenFile:i,children:k}):(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:12},children:h("desktop.noMessage")})]}):(0,n.jsx)("button",{onClick:()=>f(!0),style:{display:"block",width:"100%",padding:"8px 10px",border:"none",background:"transparent",color:"var(--text-dim)",cursor:"pointer",fontSize:12,textAlign:"left"},children:k?(c=k,u=h("desktop.showExtensionMessage"),(p=c.replace(/\s+/g," ").trim())?p.length>140?`${p.slice(0,140)}...`:p:u):h("desktop.showExtensionMessage")}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"4px 9px",borderTop:"1px solid var(--border)",background:"var(--bg-subtle)"},children:[k||S?(0,n.jsx)("button",{onClick:()=>{nA(k||S).then(()=>{b(!0),setTimeout(()=>b(!1),1500)})},style:{padding:"3px 7px",border:"none",background:"none",color:y?"var(--accent)":"var(--text-dim)",cursor:"pointer",fontSize:11},children:h(y?"desktop.copied":"desktop.copy")}):null,(w||g)&&(0,n.jsx)("button",{onClick:()=>{g?f(e=>!e):v(e=>!e)},style:{marginLeft:"auto",padding:"3px 7px",border:"none",background:"none",color:"var(--text-dim)",cursor:"pointer",fontSize:11},children:h(g?x?"desktop.collapse":"desktop.expand":m?"desktop.hideDetails":"desktop.showDetails")})]}),w&&(g&&x||!g&&m)&&(0,n.jsx)("pre",{style:{margin:0,padding:"9px 10px",borderTop:"1px solid var(--border)",background:"var(--bg)",color:"var(--text-muted)",fontSize:"calc(12px + var(--chat-font-size-offset, 0px))",lineHeight:1.5,whiteSpace:"pre-wrap",wordBreak:"break-word",maxHeight:360,overflow:"auto",fontFamily:"var(--font-mono)"},children:S})]})})}function aR({message:e,sessionId:t}){let{t:r}=(0,Y.s)(),[i,s]=(0,o.useState)(null),[l,a]=(0,o.useState)(!1),[d,c]=(0,o.useState)(null),u=!e.output&&void 0===e.exitCode&&!e.cancelled,p=e.cancelled||void 0!==e.exitCode&&0!==e.exitCode,h=t&&e.fullOutputPath?`/api/agent/${encodeURIComponent(t)}/bash-output?path=${encodeURIComponent(e.fullOutputPath)}`:null,g=i??e.output,x=async()=>{if(h){a(!0),c(null);try{let e=await fetch(h),t=await e.json();if(!e.ok||!t.success)throw Error(t.error??`HTTP ${e.status}`);s(t.data?.output??"")}catch(e){c(e instanceof Error?e.message:String(e))}finally{a(!1)}}},f=e.excludeFromContext?"bash (local)":"bash",m={type:"toolCall",toolCallId:`bash-${e.timestamp??e.command}`,toolName:f,input:{command:e.command}},v=u?void 0:{role:"toolResult",toolCallId:m.toolCallId,toolName:f,content:g?[{type:"text",text:g}]:[],isError:p,timestamp:e.timestamp};return(0,n.jsxs)("div",{style:{margin:"6px 0"},children:[(0,n.jsx)(af,{block:m,result:v}),e.truncated&&h&&null===i&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginTop:4},children:[(0,n.jsx)("button",{type:"button",onClick:()=>void x(),disabled:l,style:{padding:"3px 8px",border:"1px solid var(--border)",borderRadius:4,background:"none",color:"var(--text-muted)",cursor:l?"wait":"pointer",fontSize:11},children:r(l?"desktop.loading":"desktop.loadFullOutput")}),(0,n.jsx)("a",{href:`${h}&download=1`,style:{fontSize:11,color:"var(--accent)"},children:r("desktop.download")})]}),d&&(0,n.jsx)("div",{style:{marginTop:4,color:"var(--accent-red)",fontSize:11},children:d})]})}function aI(e){return e.source?"base64"===e.source.type?`data:${e.source.media_type};base64,${e.source.data}`:e.source.url??"":e.data?`data:${e.mimeType};base64,${e.data}`:""}var aM=r(35828),aE=r(259);function a$({open:e,planText:t,onExecute:r,onFeedback:i,onExit:s,onClose:l,busy:a=!1}){let{t:d}=(0,Y.s)(),[c,u]=(0,o.useState)(!1),[p,h]=(0,o.useState)(""),[g,x]=(0,o.useState)(!0),f=(0,o.useRef)(null);return((0,o.useEffect)(()=>{e&&(u(!1),h(""),x(!0))},[e]),(0,o.useEffect)(()=>{c&&f.current?.focus()},[c]),e)?(0,n.jsxs)("div",{role:"region","aria-label":d("tasks.planReviewTitle"),style:{maxWidth:820,margin:"12px auto 8px",border:"1px solid color-mix(in srgb, var(--accent) 28%, var(--border))",borderRadius:12,background:"var(--bg-panel)",animation:"plan-card-in 0.18s ease-out",overflow:"hidden"},children:[c&&(0,n.jsxs)("div",{style:{padding:"10px 14px",display:"flex",flexDirection:"column",gap:6,borderBottom:"1px solid var(--border)"},children:[(0,n.jsx)("label",{style:{fontSize:11.5,color:"var(--text-muted)"},children:d("tasks.planReviewFeedbackLabel")}),(0,n.jsx)("textarea",{ref:f,value:p,onChange:e=>h(e.target.value),placeholder:d("tasks.planReviewFeedbackPlaceholder"),rows:2,style:{width:"100%",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,padding:"8px 10px",color:"var(--text)",fontSize:12.5,outline:"none",fontFamily:"inherit",resize:"vertical"}}),(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:6},children:[(0,n.jsx)("button",{type:"button",onClick:()=>u(!1),disabled:a,style:{padding:"5px 10px",borderRadius:6,background:"none",border:"1px solid var(--border)",color:"var(--text-muted)",fontSize:11.5,cursor:a?"not-allowed":"pointer"},children:d("i18n.cancel")}),(0,n.jsx)("button",{type:"button",onClick:()=>{p.trim()&&i(p.trim())},disabled:a||!p.trim(),style:{padding:"5px 12px",borderRadius:6,background:"var(--accent)",color:"var(--accent-fg)",border:"none",fontSize:11.5,fontWeight:600,cursor:a||!p.trim()?"not-allowed":"pointer"},children:d("tasks.planReviewSendFeedback")})]})]}),t&&t.trim()?(0,n.jsxs)("div",{style:{padding:"0 14px 10px"},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>x(e=>!e),style:{display:"flex",alignItems:"center",gap:6,background:"none",border:"none",padding:"6px 0",cursor:"pointer",color:"var(--text-muted)",fontSize:11.5,fontFamily:"var(--font-mono)"},children:[(0,n.jsx)("span",{style:{transform:g?"rotate(90deg)":"none",transition:"transform 0.12s"},children:"›"}),d(g?"tasks.planReviewHidePlan":"tasks.planReviewShowPlan")]}),g&&(0,n.jsx)("div",{style:{maxHeight:320,overflow:"auto",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,padding:"10px 12px",fontSize:12.5,lineHeight:1.65,color:"var(--text)",whiteSpace:"pre-wrap",wordBreak:"break-word",fontFamily:"var(--font-mono)"},children:t.trim()})]}):null,(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"6px 10px"},children:[(0,n.jsx)(aM.y,{size:14,weight:"fill",color:"var(--accent)","aria-hidden":"true"}),(0,n.jsx)("span",{style:{fontSize:12,fontWeight:650,color:"var(--text)",marginRight:8,flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:d("tasks.planReviewTitle")}),(0,n.jsxs)("button",{type:"button",onClick:r,disabled:a,title:d("tasks.planReviewExecute"),style:{display:"inline-flex",alignItems:"center",gap:5,padding:"6px 12px",borderRadius:7,background:"var(--accent)",color:"var(--accent-fg)",border:"none",fontSize:12,fontWeight:650,cursor:a?"not-allowed":"pointer",transition:"opacity 0.12s"},onMouseEnter:e=>{a||(e.currentTarget.style.opacity="0.88")},onMouseLeave:e=>{e.currentTarget.style.opacity="1"},children:[(0,n.jsx)(ei.r,{size:13,weight:"fill","aria-hidden":"true"}),d("tasks.planReviewExecute")]}),(0,n.jsxs)("button",{type:"button",onClick:()=>{c?u(!1):(u(!0),requestAnimationFrame(()=>f.current?.focus()))},disabled:a,title:d("tasks.planReviewSuggest"),style:{display:"inline-flex",alignItems:"center",gap:5,padding:"6px 10px",borderRadius:7,background:c?"var(--bg-selected)":"none",border:c?"1px solid var(--accent)":"1px solid var(--border)",color:c?"var(--accent)":"var(--text)",fontSize:12,fontWeight:550,cursor:a?"not-allowed":"pointer",transition:"background 0.12s"},onMouseEnter:e=>{a||c||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{c||(e.currentTarget.style.background="none",e.currentTarget.style.color="var(--text)")},children:[(0,n.jsx)(z.S,{size:12,"aria-hidden":"true"}),d("tasks.planReviewSuggest")]}),(0,n.jsxs)("button",{type:"button",onClick:()=>{u(!1),s()},disabled:a,title:d("tasks.planReviewExit"),style:{display:"inline-flex",alignItems:"center",gap:5,padding:"6px 8px",borderRadius:7,background:"none",border:"none",color:"var(--text-muted)",fontSize:12,cursor:a?"not-allowed":"pointer"},onMouseEnter:e=>{a||(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.jsx)(aE.f,{size:12,"aria-hidden":"true"}),d("tasks.planReviewExit")]}),(0,n.jsx)("button",{type:"button",onClick:l,disabled:a,title:d("i18n.close"),style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:24,height:24,padding:0,background:"none",border:"none",color:"var(--text-muted)",fontSize:12,cursor:a?"not-allowed":"pointer",borderRadius:5},onMouseEnter:e=>{a||(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:"✕"})]})]}):null}var aW=r(19336);let aL={idle:"var(--text-muted)",running:"var(--status-success)",paused:"var(--status-warning)",blocked:"#ea580c",budget_limited:"var(--status-error)",complete:"var(--text-muted)"},aN=new Set(["paused","blocked"]);function aA(e){let t=Math.abs(e);return t>=1e6?`${(e/1e6).toFixed(2)}M`:t>=1e3?`${(e/1e3).toFixed(1)}K`:`${e}`}function aP(e){switch(e){case"running":return"active";case"paused":return"paused";case"blocked":return"stalled";case"budget_limited":return"budget limited";case"complete":return"complete";default:return"idle"}}function aF({goalState:e,onPause:t,onResume:r,onStop:i,onEdit:s}){let{t:l}=(0,Y.s)(),[a,d]=(0,o.useState)(!1),[c,u]=(0,o.useState)(""),p=(0,o.useRef)(null),[h,g]=(0,o.useState)(()=>Date.now());if((0,o.useEffect)(()=>{if("running"!==e.status)return;let t=setInterval(()=>g(Date.now()),1e3);return()=>clearInterval(t)},[e.status]),(0,o.useEffect)(()=>{a&&p.current&&(p.current.focus(),p.current.select())},[a]),"idle"===e.status||"complete"===e.status)return null;let x=aL[e.status]??"var(--text-muted)",f="running"===e.status,m=aN.has(e.status),v="running"===e.status,y=e.timeUsedSeconds??0;v&&e.startedAt&&(y=Math.floor((h-e.startedAt)/1e3));let b=null!=e.tokenBudget?`${aA(e.tokensUsed)}/${aA(e.tokenBudget)}`:aA(e.tokensUsed),k=()=>{d(!1),u("")},j=()=>{let t=c.trim();t&&t!==e.goalText?(s(t),d(!1),u("")):k()},w=(e,t,r)=>(0,n.jsx)("button",{type:"button",onClick:t,style:{padding:"3px 9px",borderRadius:5,border:`1px solid ${r?"var(--accent)":"var(--border)"}`,background:r?"var(--accent)":"var(--bg)",color:r?"#fff":"var(--text-muted)",cursor:"pointer",fontSize:12,lineHeight:1.4,fontFamily:"var(--font-mono)",whiteSpace:"nowrap",flexShrink:0},children:e});return(0,n.jsxs)("div",{style:{flexShrink:0,display:"flex",flexDirection:"column",gap:6,padding:"8px 10px",borderTop:`1px solid ${x}55`,borderBottom:`1px solid ${x}55`,background:`color-mix(in srgb, ${x} 5%, transparent)`,minWidth:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[(0,n.jsx)(aW.d,{size:13,weight:"fill",color:x,"aria-hidden":"true"}),(0,n.jsx)("span",{title:aP(e.status),style:{flexShrink:0,width:8,height:8,borderRadius:"50%",background:x}}),(0,n.jsx)("span",{style:{flexShrink:0,fontSize:11,fontFamily:"var(--font-mono)",color:x,textTransform:"uppercase",letterSpacing:.4},children:aP(e.status)}),(0,n.jsxs)("span",{style:{flex:1,fontSize:11,fontFamily:"var(--font-mono)",color:"var(--text-dim)",whiteSpace:"nowrap",textAlign:"right",minWidth:0,overflow:"hidden",textOverflow:"ellipsis"},children:[function(e){let t=Math.max(0,Math.floor(e));if(t<60)return`${t}s`;let r=Math.floor(t/60);if(r<60)return`${r}m`;let n=Math.floor(r/60),o=r%60;if(n>=24){let e=Math.floor(n/24);return`${e}d ${n%24}h`}return 0===o?`${n}h`:`${n}h ${o}m`}(y)," \xb7 ",b,"t",null!=e.tokenBudget?" \xb7 "+l("desktop.goalBudget"):""]}),(0,n.jsxs)("div",{style:{display:"flex",gap:4,flexShrink:0},children:[f&&w(l("desktop.goalPauseShort"),t,!1),m&&w(l("desktop.goalResumeShort"),r,!0),!a&&w(l("desktop.goalEdit"),()=>{u(e.goalText??""),d(!0)},!1),w("✕",i,!1)]})]}),a?(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[(0,n.jsx)("textarea",{ref:p,value:c,onChange:e=>u(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.metaKey||e.ctrlKey)?(e.preventDefault(),j()):"Escape"===e.key&&(e.preventDefault(),k())},rows:3,style:{width:"100%",padding:"6px 8px",borderRadius:6,border:"1px solid var(--accent)",background:"var(--bg)",color:"var(--text)",fontSize:13,lineHeight:1.5,fontFamily:"var(--font-sans)",resize:"vertical",outline:"none",boxSizing:"border-box"}}),(0,n.jsxs)("div",{style:{display:"flex",gap:6,justifyContent:"flex-end"},children:[w(l("desktop.goalCancel"),k,!1),w(l("desktop.goalSave"),j,!0)]}),(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text-dim)",fontFamily:"var(--font-mono)"},children:l("desktop.goalEditHint")})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{style:{fontSize:13,color:"var(--text)",lineHeight:1.5,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:e.goalText??l("desktop.goalRunning")}),v&&(0,n.jsxs)("div",{style:{display:"flex",gap:10,fontSize:10,color:"var(--text-muted)",fontFamily:"var(--font-mono)",flexWrap:"wrap"},children:[(0,n.jsxs)("span",{children:[l("desktop.goalTurns"),": ",e.turnsUsed,"/",e.turnsLimit]}),e.noProgressTurns>0&&(0,n.jsx)("span",{children:l("desktop.goalNoProgress",{n:e.noProgressTurns})})]})]})]})}function aD(e,t){if("bash"===e.toLowerCase()){let e=t?.command;return"string"==typeof e&&e.trim()?`command:${e.trim()}`:""}let r=t??{},n="string"==typeof r.source_path?r.source_path:"",o="string"==typeof r.destination_path?r.destination_path:"";if(n&&o)return o!==n?`${n}\u0000${o}`:n;for(let e of["path","file_path","file","glob","pattern","directory"]){let t=r[e];if("string"==typeof t&&t)return t}return""}var aH=r(77229);function aO({request:e,queuedCount:t=0,busy:r=!1,onResolve:i,onDismiss:s}){let l,{t:a}=(0,Y.s)(),[d,c]=(0,o.useState)(""),[u,p]=(0,o.useState)(!1),[h,x]=(0,o.useState)(0),f=(0,o.useRef)(null),m=(0,o.useRef)([]);(0,o.useEffect)(()=>{e&&(c(""),p(!1),x(0))},[e?.id]);let v=(0,o.useCallback)((e,t,r)=>{i(e,r,t)},[i]),y=e?[{key:"allowOnce",labelKey:"approval.allow",descKey:"approval.allowOnceDescription",run:()=>v(!0,"once")},{key:"allowAlways",labelKey:"approval.allowAlways",descKey:"approval.allowAlwaysDescription",scopeKey:"approval.scopeAlways",run:()=>v(!0,"always")},{key:"denyOnce",labelKey:"approval.deny",descKey:"approval.denyOnceDescription",run:e=>v(!1,"once",e?.trim()||void 0)},{key:"denyAlways",labelKey:"approval.denyAlways",descKey:"approval.denyAlwaysDescription",scopeKey:"approval.scopeAlways",run:e=>v(!1,"always",e?.trim()||void 0)}]:[],b=(0,o.useCallback)(e=>{let t=y[e];t&&t.run(d)},[y,d]),k=(0,o.useCallback)(e=>{if(r)return;let t=Number(e.key);if(Number.isInteger(t)&&t>=1&&t<=y.length){e.preventDefault(),b(t-1);return}if("ArrowDown"===e.key||"ArrowRight"===e.key||"Tab"===e.key&&!e.shiftKey){e.preventDefault(),x(e=>(e+1)%y.length);return}if("ArrowUp"===e.key||"ArrowLeft"===e.key||"Tab"===e.key&&e.shiftKey){e.preventDefault(),x(e=>(e-1+y.length)%y.length);return}if("Enter"===e.key){e.preventDefault(),b(h);return}"Escape"===e.key&&(e.preventDefault(),(s??(()=>v(!1,"once","Dismissed")))())},[h,b,r,s,y.length,v]);if((0,o.useEffect)(()=>{m.current[h]?.focus()},[h]),!e)return null;let j=function(e){if(null==e)return"{}";if("string"==typeof e)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}(e.args),w=j.length>4e3,S=e.args&&"object"==typeof e.args&&"command"in e.args?String(e.args.command??""):"",C=(l=aD(e.toolName,e.args))?`${e.toolName}(${l})`:e.toolName;return(0,n.jsx)("div",{style:{position:"fixed",left:0,right:0,bottom:130,zIndex:1300,display:"flex",justifyContent:"center",pointerEvents:"none",padding:"0 14px"},children:(0,n.jsxs)("div",{role:"dialog","aria-modal":"true","aria-label":a("approval.title"),onKeyDown:k,style:{pointerEvents:"auto",width:"min(420px, 100%)",maxHeight:"min(70vh, 520px)",display:"flex",flexDirection:"column",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:16,boxShadow:"0 12px 36px rgba(0,0,0,0.28)",animation:"plan-card-in 0.18s ease-out",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"14px 16px 12px"},children:[(0,n.jsx)(aH.Z,{size:18,weight:"fill",color:"var(--accent-orange, #f59e0b)","aria-hidden":"true"}),(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsxs)("div",{style:{fontSize:14,fontWeight:650,color:"var(--text)"},children:[a("approval.title"),t>0&&(0,n.jsxs)("span",{style:{marginLeft:8,fontSize:11,fontWeight:500,color:"var(--text-muted)"},children:["+",t," ",a("approval.queued")]})]}),(0,n.jsx)("div",{style:{fontSize:11.5,color:"var(--text-muted)",marginTop:1},children:a("approval.subtitle")})]}),(0,n.jsx)("button",{type:"button","aria-label":a("i18n.close"),onClick:()=>(s??(()=>v(!1,"once","Dismissed")))(),disabled:r,style:{display:"flex",alignItems:"center",justifyContent:"center",width:26,height:26,padding:0,background:"none",border:"none",borderRadius:6,color:"var(--text-muted)",cursor:r?"not-allowed":"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-muted)"},children:(0,n.jsx)(g.u,{size:14,"aria-hidden":"true"})})]}),(0,n.jsxs)("div",{style:{padding:"0 16px",overflowY:"auto",flex:1},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:10},children:[(0,n.jsx)("span",{style:{display:"inline-flex",alignItems:"center",padding:"3px 10px",borderRadius:6,background:"var(--bg-selected)",color:"var(--text)",fontSize:12.5,fontWeight:600,fontFamily:"var(--font-mono)"},children:e.toolName}),S?(0,n.jsx)("span",{style:{fontSize:11.5,color:"var(--text-muted)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:S}):null]}),(0,n.jsx)("div",{style:{background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,padding:"10px 12px",maxHeight:180,overflow:"auto"},children:(0,n.jsx)("pre",{style:{margin:0,fontSize:11.5,lineHeight:1.55,color:"var(--text-muted)",fontFamily:"var(--font-mono)",whiteSpace:"pre-wrap",wordBreak:"break-all"},children:w?`${j.slice(0,4e3)}
190
190
  …`:j})}),u&&(0,n.jsx)("textarea",{ref:f,value:d,onChange:e=>c(e.target.value),placeholder:a("approval.reasonPlaceholder"),rows:2,style:{width:"100%",marginTop:10,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,padding:"8px 10px",color:"var(--text)",fontSize:12.5,outline:"none",fontFamily:"inherit",resize:"vertical"}})]}),(0,n.jsx)("div",{role:"listbox","aria-label":a("approval.title"),style:{display:"flex",flexDirection:"column",gap:4,padding:"12px 12px 4px"},children:y.map((e,t)=>{let o=t===h;return(0,n.jsxs)("button",{ref:e=>{m.current[t]=e},type:"button",role:"option","aria-selected":o,tabIndex:o?0:-1,disabled:r,onClick:()=>b(t),onMouseEnter:()=>x(t),style:{display:"flex",alignItems:"center",gap:10,width:"100%",padding:"8px 10px",background:o?"var(--bg-selected)":"none",border:"none",borderRadius:10,cursor:r?"not-allowed":"pointer",textAlign:"left",transition:"background 0.12s"},children:[(0,n.jsxs)("span",{style:{width:18,flexShrink:0,color:o?"var(--text)":"var(--text-dim)",fontSize:12.5,fontWeight:600},children:[t+1,"."]}),(0,n.jsxs)("span",{style:{minWidth:0,flex:1},children:[(0,n.jsx)("span",{style:{display:"block",fontSize:12.5,fontWeight:600,color:"denyAlways"===e.key?"var(--status-error)":"var(--text)"},children:a(e.labelKey)}),(0,n.jsx)("span",{style:{display:"block",fontSize:11,color:"var(--text-muted)",marginTop:1,lineHeight:1.4},children:"approval.allowAlwaysDescription"===e.descKey||"approval.denyAlwaysDescription"===e.descKey?a(e.descKey,{rule:C}):a(e.descKey)})]}),e.scopeKey&&(0,n.jsx)("span",{style:{flexShrink:0,fontSize:10.5,color:"var(--text-dim)",fontFamily:"var(--font-mono)",maxWidth:130,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a(e.scopeKey)})]},e.key)})}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,padding:"8px 16px 12px"},children:[(0,n.jsx)("span",{style:{fontSize:10.5,color:"var(--text-dim)"},children:a("approval.keyboardHint")}),(0,n.jsx)("button",{type:"button",onClick:()=>{p(e=>!e),u||requestAnimationFrame(()=>f.current?.focus())},disabled:r,style:{background:"none",border:"none",padding:"4px 6px",color:"var(--text-muted)",fontSize:11,cursor:r?"not-allowed":"pointer",textDecoration:"underline"},children:u?a("approval.hideReason"):a("approval.denyWithReason")})]})]})})}let aB="pi:create-task-from-text",aU=null,a_="pi-process-display-mode-v2",aq="tabs",aK="pi-process-display-mode-change";function aV(){try{let e=window.sessionStorage.getItem(a_);return"timeline"===e||"tabs"===e?e:aq}catch{return aq}}function aJ(e){return window.addEventListener(aK,e),()=>window.removeEventListener(aK,e)}function aY(){return aq}function aG(e,t){if(!e)return!1;let r=new Set(t.map(e=>e.toLowerCase()));return Object.keys(e).some(e=>r.has(e.toLowerCase()))}function aX(e,t){if(!e)return;let r=new Set(t.map(e=>e.toLowerCase()));for(let[t,n]of Object.entries(e)){if(!r.has(t.toLowerCase())||"string"!=typeof n)continue;let e=n.trim();if(e)return e}}function aZ(e){return"object"==typeof e&&null!==e?e:{}}function aQ(e){return"add"===e||"added"===e||"create"===e?"create":"delete"===e||"deleted"===e||"remove"===e||"removed"===e?"delete":"update"===e||"modified"===e||"edit"===e||"move"===e?"edit":void 0}function a0(e){if(0!==e.length)return 1===new Set(e).size?e[0]:"edit"}function a1(e){if(Array.isArray(e))return a0(e.map(e=>aQ(aZ(e).type||aZ(e).status||aZ(e).changeType)).filter(e=>!!e))}function a2(e){if(!e)return;let t=(e.match(/^\*\*\* Add File:/gm)||[]).length,r=(e.match(/^\*\*\* Delete File:/gm)||[]).length,n=(e.match(/^\*\*\* (Update File|Move to):/gm)||[]).length;if(t||r||n){let e=[];if(t)for(let r=0;r<t;r++)e.push("create");if(r)for(let t=0;t<r;t++)e.push("delete");if(n)for(let t=0;t<n;t++)e.push("edit");return a0(e)}return/^@@ -0,0 \+\d+/m.test(e)?"create":/^@@ -\d+(?:,\d+)? \+0,0/m.test(e)?"delete":void 0}function a6(e){let t=aX(e.args,["path","file","filePath","filepath"]);if(t)return t;let r=aX(e.metadata,["relativePath","filePath","filepath","path","file"]);if(r)return r;let n=aX(Array.isArray(e.metadata?.files)?aZ(e.metadata.files[0]):{},["relativePath","filePath","filepath","path","file"]);if(n)return n}function a4(e){return e.split(/[\\/]/).filter(Boolean).pop()||e}let a5=new Set(["cd","chdir","pwd","echo","set","export","source",".","pushd","popd","dirs"]),a3=new Set(["timeout"]),a8=new Set(["ls","dir","ll","la","l","tree","eza","exa"]),a7=new Set(["rg","grep","egrep","fgrep","ack","ag","ripgrep"]),a9=new Set(["find","fd","fdfind","locate","mlocate","glob"]),de=new Set(["cat","head","tail","less","more","bat","nl","wc"]),dt=new Set(["curl","wget","fetch","http","xh","httpx"]),dr=new Set(["rm","del","rmdir","unlink","erase"]),dn=new Set(["cp","mv","copy","move","rename","ren"]);var di=r(36705),ds=r(94366),dl=r(66129),da=r(2152),dd=r(59304),dc=r(8727),du=r(47208),dp=r(95951),dh=r(29886),dg=r(86756);function dx(e,t){var r,n,o;let i,s,l,a,d,c,u,p,h,g="string"==typeof(a=e.input.label)&&a.trim()?a:e.toolName;if("error"===e.status)return{displayLabel:g,iconName:"warning",tone:void 0};let x=(d=[(n=r={toolName:e.toolName,label:"string"==typeof e.input.label?e.input.label:void 0,args:e.input,result:"string"==typeof e.result?e.result:void 0}).toolName,n.title,n.label].filter(Boolean).join("\n").toLowerCase(),c=aG(r.args,["path","file","filePath","filepath"]),u=aG(r.args,["content","oldString","old_string","newString","new_string","patch","diff","edits","text"]),p=aG(r.args,["command","cmd","script"]),h=aG(r.args,["pattern","query"]),p||/\b(bash|shell|terminal|command|run|exec|execute|python|node|npm|pnpm|yarn|cargo|go|pytest|test|build|make|git|docker|kubectl|curl|wget)\b/i.test(d)?"command_execution":/\b(todo|todowrite|todo_write|write_todo|task_list|task\s*list)\b/i.test(d)?"todo_update":/\b(edit|write|patch|apply|modify|replace|update|create|delete|remove|insert|rename|move)\b/i.test(d)||c&&u?"document_change":"ls"===(i=r.toolName.toLowerCase())||"list"===i||"dir"===i||i.startsWith("list_")||i.endsWith("_list")||i.includes("list_directory")||i.includes("list_dir")||/\b(ls|list\s*directory|list\s*dir|dir\s*list|listdir)\b/i.test(d)?"directory_list":"find"===(s=r.toolName.toLowerCase())||"glob"===s||"scan"===s||s.includes("file_search")||s.includes("file_find")||s.startsWith("find_")||s.startsWith("glob_")||s.startsWith("scan_")||/\b(find[_\s]*files?|file[_\s]*find|glob|scan[_\s]*files?)\b/i.test(d)?"file_find":/\b(grep|rg|search|semantic|fuzzy|ripgrep)\b/i.test(d)||(l=r.toolName.toLowerCase()).includes("grep")||l.includes("search")||l.includes("fuzzy")||l.includes("ripgrep")||h&&!u&&!p?"document_search":/\b(read|view|open|cat|show|display)\b/i.test(d)||c&&!u&&!p?"document_read":void 0),f="toolbox";if("document_change"===x){let r,n,i,s=(n=aZ((r=(o={toolName:e.toolName,label:"string"==typeof e.input.label?e.input.label:void 0,args:e.input,result:"string"==typeof e.result?e.result:void 0}).metadata||{}).filediff),i=function(e){if(!e)return{};try{return aZ(JSON.parse(e))}catch{return{}}}(o.result),a1(r.files)??a1(i.files)??aQ(r.type||r.status||r.changeType)??(!1===r.exists?"create":void 0)??(!0===r.exists?"edit":void 0)??a2("string"==typeof r.diff?r.diff:"")??a2("string"==typeof r.patch?r.patch:"")??a2("string"==typeof n.patch?n.patch:"")??a2("string"==typeof o.args?.patchText?o.args.patchText:"")??function(e){if(!e)return;let t=e.split(/\r?\n/).map(e=>e.trim()).filter(e=>/^[ADM]\s+/.test(e));if(0!==t.length)return a0(t.map(e=>e.startsWith("A ")?"create":e.startsWith("D ")?"delete":"edit"))}(o.result)??function(e){if(!e)return;let t=e.trim().replace(/\s+/g," ").toLowerCase();return/^(?:rm|del|erase|unlink)\b/.test(t)||/^remove-item\b/.test(t)?"delete":/^mkdir\b/.test(t)?"create":void 0}("string"==typeof o.args?.command?o.args.command:void 0)??"edit");f="create"===s?"filePlus":"delete"===s?"trash":"pencilSimpleLine";let l=t("create"===s?"desktop.processStepFileCreate":"delete"===s?"desktop.processStepFileDelete":"desktop.processStepFileEdit"),a=a6({toolName:e.toolName,label:"string"==typeof e.input.label?e.input.label:void 0,args:e.input,result:"string"==typeof e.result?e.result:void 0});return a?{displayLabel:`${l} ${a4(a)}`,iconName:f,target:a,tone:x,typeLabel:l}:{displayLabel:`${l}: ${g}`.slice(0,100),iconName:f,tone:x,typeLabel:l}}if("document_read"===x){f="bookOpen";let r=t("desktop.processStepFileRead"),n=a6({toolName:e.toolName,label:"string"==typeof e.input.label?e.input.label:void 0,args:e.input,result:"string"==typeof e.result?e.result:void 0});return n?{displayLabel:`${r} ${a4(n)}`,iconName:f,target:n,tone:x,typeLabel:r}:{displayLabel:g,iconName:f,tone:x,typeLabel:r}}if("document_search"===x){f="magnifyingGlass";let r=t("desktop.processStepSearch"),n="string"==typeof e.input.pattern?e.input.pattern:"string"==typeof e.input.query?e.input.query:"";return n?{displayLabel:`${r} "${n.slice(0,60)}"`,iconName:f,tone:x,typeLabel:r}:{displayLabel:g,iconName:f,tone:x,typeLabel:r}}if("directory_list"===x){f="folder";let r=t("desktop.processStepList"),n=a6({toolName:e.toolName,label:"string"==typeof e.input.label?e.input.label:void 0,args:e.input,result:"string"==typeof e.result?e.result:void 0});return n?{displayLabel:`${r} ${a4(n)}`,iconName:f,target:n,tone:x,typeLabel:r}:{displayLabel:g,iconName:f,tone:x,typeLabel:r}}if("file_find"===x){f="magnifyingGlass";let r=t("desktop.processStepFind"),n="string"==typeof e.input.pattern?e.input.pattern:"string"==typeof e.input.glob?e.input.glob:"";return n?{displayLabel:`${r} "${n.slice(0,60)}"`,iconName:f,tone:x,typeLabel:r}:{displayLabel:g,iconName:f,tone:x,typeLabel:r}}if("command_execution"===x){let r="string"==typeof e.input.command?e.input.command:"string"==typeof e.input.cmd?e.input.cmd:"";if(r){let e=function(e){let t=e.split(/&&|\n|;(?!;)|(?<!\|)\|(?!\|)/),r=e.split(/\s+/)[0]?.replace(/^[.\\/]+/,"")||"sh";for(let e of t){var n;let t=(n=e.trim(),n.match(/"[^"]+"|'[^']+'|\S+/g)?.map(e=>e.replace(/^(["'])(.*)\1$/,"$2"))??[]);if(0===t.length)continue;let r=0;for(;r<t.length&&(a5.has(t[r].toLowerCase())||a3.has(t[r].toLowerCase()));){let e=t[r].toLowerCase();if((r+=1)<t.length&&["cd","chdir","pushd"].includes(e)&&(r+=1),"timeout"===e)for(;r<t.length&&(t[r].startsWith("-")||/^\d/.test(t[r]));)r++}if(r>=t.length)continue;let o=t[r].replace(/^[.\\/]+/,"").toLowerCase(),i=o.split(/[/\\]/).pop()||o,s=r+1;for(;s<t.length&&t[s].startsWith("-");)s+=1;let l=s<t.length?t[s]:void 0;if(a8.has(i))return{kind:"list",binary:i,argument:l};if(a7.has(i))return{kind:"search",binary:i,argument:l};if(a9.has(i))return{kind:"find",binary:i,argument:l};if(de.has(i))return{kind:"read",binary:i,argument:l};if(dt.has(i))return{kind:"fetch",binary:i,argument:l};if(dr.has(i))return{kind:"delete",binary:i,argument:l};if(dn.has(i))return{kind:"copy",binary:i,argument:l};return{kind:"run",binary:i,argument:l}}return{kind:"run",binary:r}}(r);if("list"===e.kind){f="folder";let r=t("desktop.processStepList"),n=e.argument?` ${e.argument}`:"";return{displayLabel:`${r}${n}`,iconName:f,tone:x,typeLabel:r}}if("search"===e.kind){f="magnifyingGlass";let r=t("desktop.processStepSearch"),n=e.argument?` "${e.argument.slice(0,60)}"`:"";return{displayLabel:`${r}${n}`,iconName:f,tone:x,typeLabel:r}}if("find"===e.kind){f="magnifyingGlass";let r=t("desktop.processStepFind"),n=e.argument?` "${e.argument.slice(0,60)}"`:"";return{displayLabel:`${r}${n}`,iconName:f,tone:x,typeLabel:r}}if("read"===e.kind){f="bookOpen";let r=t("desktop.processStepRead"),n=e.argument?` ${e.argument}`:"";return{displayLabel:`${r}${n}`,iconName:f,tone:x,typeLabel:r,target:e.argument||void 0}}if("fetch"===e.kind){f="download";let r=t("desktop.processStepFetch"),n=e.argument?` ${e.argument.slice(0,80)}`:"";return{displayLabel:`${r}${n}`,iconName:f,tone:x,typeLabel:r}}if("delete"===e.kind){f="trash";let r=t("desktop.processStepDelete"),n=e.argument?` ${e.argument}`:"";return{displayLabel:`${r}${n}`,iconName:f,tone:x,typeLabel:r}}if("copy"===e.kind){f="copy";let r=t("desktop.processStepCopy"),n=e.argument?` ${e.argument}`:"";return{displayLabel:`${r}${n}`,iconName:f,tone:x,typeLabel:r}}f="terminal";let n=t("desktop.processStepCommand"),o=e.argument?`${e.binary} ${e.argument.length>60?e.argument.slice(0,57)+"...":e.argument}`:e.binary;return{displayLabel:`${n} ${o}`,iconName:f,tone:x,typeLabel:n}}return{displayLabel:g,iconName:f="terminal",tone:x}}return"todo_update"===x?{displayLabel:g,iconName:f="checklist",tone:x,typeLabel:t("desktop.processStepTodo")}:{displayLabel:g,iconName:f,tone:x}}function df({expanded:e}){return(0,n.jsx)(j.J,{size:12,className:`shrink-0 transition-all duration-150 ${e?"rotate-90":""}`})}function dm(e,t=14){switch(e){case"brain":return(0,n.jsx)(di.$,{size:t});case"bookOpen":return(0,n.jsx)(ds.R,{size:t});case"magnifyingGlass":return(0,n.jsx)(h.$,{size:t});case"pencilSimpleLine":return(0,n.jsx)(du.B,{size:t});case"filePlus":return(0,n.jsx)(oy.u,{size:t});case"trash":return(0,n.jsx)(T.u,{size:t});case"folder":return(0,n.jsx)(dd.sj,{size:t});case"download":return(0,n.jsx)(M.e,{size:t});case"copy":return(0,n.jsx)(da.t,{size:t});case"terminal":return(0,n.jsx)(dh.k,{size:t});case"toolbox":default:return(0,n.jsx)(dg.D,{size:t});case"image":return(0,n.jsx)(dc.x,{size:t});case"listBullets":case"checklist":return(0,n.jsx)(O.j,{size:t});case"warning":case"circleX":return(0,n.jsx)(l9.M,{size:t})}}function dv({step:e,ts:t}){if("thinking"===e.kind)return dm("brain");if("image"===e.kind)return dm("image");if("custom"===e.kind)return dm("listBullets");if("toolGroup"===e.kind)return dm(e.iconName);let{iconName:r}=dx(e.block,t);return dm(r)}function dy({targets:e,typeLabel:t,count:r,label:o}){if(0===e.length)return(0,n.jsx)("span",{className:"max-w-52 truncate",title:o,children:o});if(2===e.length)return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"shrink-0",children:t}),(0,n.jsx)(db,{filePath:e[0]}),(0,n.jsx)(db,{filePath:e[1]})]});let i=e[0].split(".").pop()?.toLowerCase()||"",s=[],l=new Set([i]);for(let t=1;t<e.length&&s.length<2;t++){let r=e[t].split(".").pop()?.toLowerCase()||"";l.has(r)||(l.add(r),s.push({key:e[t],node:oE(e[t],12)}))}return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"shrink-0",children:t}),s.length>0&&(0,n.jsx)("span",{className:"shrink-0 inline-flex gap-px",children:s.map(e=>(0,n.jsx)("span",{className:"inline-flex",children:e.node},e.key))}),(0,n.jsx)(db,{filePath:e[0]}),(0,n.jsxs)("span",{className:"shrink-0 text-[10px] tabular-nums text-text-dim",children:["+",r-1]})]})}function db({filePath:e}){let t=e.split(/[\\/]/).filter(Boolean).pop()||e;return(0,n.jsxs)("span",{className:"process-file-tag",title:e,children:[oE(e,12),(0,n.jsx)("span",{children:t})]})}function dk({mode:e}){return"timeline"===e?(0,n.jsx)(dp.D,{size:14}):(0,n.jsx)(dl.j,{size:14})}let dj=(0,o.memo)(function({block:e,processStyle:t=!0}){let r=(0,o.useMemo)(()=>({type:"toolCall",toolCallId:e.toolCallId,toolName:e.toolName,input:e.input}),[e.toolCallId,e.toolName,e.input]);return(0,n.jsx)(af,{block:r,result:e.result,duration:e.duration,processStyle:t})});function dw({step:e,cwd:t,onOpenFile:r,sessionId:o,ts:i,isStreaming:s}){let l;if("thinking"===e.kind)return(0,n.jsx)(dS,{blocks:e.blocks,cwd:t,onOpenFile:r,sessionId:o,isStreaming:s});if("tool"===e.kind)return(0,n.jsxs)("div",{className:"space-y-2",children:[e.leadBlocks.length>0&&(0,n.jsx)(dS,{blocks:e.leadBlocks,cwd:t,onOpenFile:r,sessionId:o,isStreaming:s}),(0,n.jsx)(dj,{block:e.block})]});if("toolGroup"===e.kind)return(0,n.jsx)("div",{className:"space-y-2",children:e.blocks.map((i,l)=>(0,n.jsxs)("div",{children:[e.leadBlocks[l]&&e.leadBlocks[l].length>0&&(0,n.jsx)("div",{className:"mb-2",children:(0,n.jsx)(dS,{blocks:e.leadBlocks[l],cwd:t,onOpenFile:r,sessionId:o,isStreaming:s})}),(0,n.jsx)(dj,{block:i})]},i.id))});if("custom"===e.kind)return(0,n.jsx)(ad,{message:e.block.message,cwd:t,onOpenFile:r,isStreaming:s});let a="url"===(l=e.block.source).type?l.url:l.data?`data:${l.media_type??"image/png"};base64,${l.data}`:void 0;return a?(0,n.jsx)("img",{src:a,alt:i("desktop.processOutput"),className:"max-h-72 max-w-full rounded border border-border object-contain"}):null}function dS({blocks:e,cwd:t,onOpenFile:r,sessionId:o,isStreaming:i}){return(0,n.jsx)("div",{className:"space-y-2 pr-2",children:e.map(e=>"text"===e.type?(0,n.jsx)(lH,{cwd:t,onOpenFile:r,className:"!text-text-dim",isStreaming:i,children:e.text},e.id):(0,n.jsx)(ag,{block:{type:"thinking",thinking:e.thinking,deferred:e.deferred},sessionId:o,entryId:e.origin.sourceEntryId,blockIndex:e.origin.sourceBlockIndex??0,contentOnly:!0,cwd:t,onOpenFile:r,className:"!text-text-dim",isStreaming:i},e.id))})}function dC({blocks:e,isStreaming:t,defaultExpanded:r=!1,onAutoExpanded:i,cwd:s,onOpenFile:l,sessionId:a,tokenRate:d=null}){let c,{t:u}=(0,Y.s)(),p=(0,o.useCallback)(e=>u(e),[u]),h=(0,o.useMemo)(()=>(function(e,t,r=!1){let n=[],o=[],i=()=>{0!==o.length&&(n.push({kind:"thinking",id:o.map(e=>e.id).join("+"),label:t("desktop.processStepThinking"),blocks:o}),o=[])};for(let r of e){if("thinking"===r.type||"text"===r.type){o.push(r);continue}if("toolCall"===r.type){let{displayLabel:e}=dx(r,t);n.push({kind:"tool",id:r.id,label:e,block:r,leadBlocks:o}),o=[];continue}i(),"custom"===r.type?n.push({kind:"custom",id:r.id,label:r.customType.replace(/[_-]+/g," ").replace(/\b\w/g,e=>e.toUpperCase()),block:r}):"image"===r.type&&n.push({kind:"image",id:r.id,label:t("desktop.processOutput"),block:r})}i();try{return function(e,t,r){if(e.length<2)return e;let n=[],o=0;for(;o<e.length;){let i,s=e[o];if("tool"!==s.kind||"error"===s.block.status){n.push(s),o++;continue}let l=dx(s.block,t).tone;if(!l){n.push(s),o++;continue}let a=o+1;for(;a<e.length&&"tool"===e[a].kind;){let r=e[a];if("error"===r.block.status||dx(r.block,t).tone!==l)break;a++}if(r&&a===e.length&&a>o+1&&a--,a-o<2){n.push(s),o++;continue}let d=e.slice(o,a),c=d.map(e=>dx(e.block,t)),u=c[0].iconName,p=c[0].typeLabel||"",h=d.map(e=>e.block),g=c.map(e=>e.displayLabel),x=c.map(e=>e.target||""),f=c.map(e=>{if(e.target)return a4(e.target);let t=e.displayLabel;return e.typeLabel&&t.startsWith(e.typeLabel+" ")?t.slice(e.typeLabel.length+1):t}),m=new Set,v=new Set,y=[],b=[];for(let e=0;e<f.length;e++){let t=f[e];m.has(t)||(m.add(t),y.push(t));let r=x[e];r&&!v.has(r)&&(v.add(r),b.push(r))}let k=d.length;i=2===k&&2===y.length?`${p} ${y[0]}, ${y[1]}`:1===y.length?1===k?`${p} ${y[0]}`:`${p} ${y[0]} \xd7${k}`:2===y.length?`${p} ${y[0]}, ${y[1]}`:`${p} ${y[0]} +${y.length-1}`,n.push({kind:"toolGroup",id:h.map(e=>e.id).join("+"),label:i,blocks:h,leadBlocks:d.map(e=>e.leadBlocks),iconName:u,tone:l,typeLabel:p,targetLabels:g,targets:b}),o=a}return n}(n,t,r)}catch(e){return console.error("[ProcessGroup] mergeConsecutiveToolSteps crashed:",e),n}})(e,p,t),[e,p,t]),[g,x]=(0,o.useState)(t||r),[f,m]=(0,o.useState)({}),{displayMode:v,setDisplayMode:y}={displayMode:(0,o.useSyncExternalStore)(aJ,aV,aY),setDisplayMode:(0,o.useCallback)(e=>{try{window.sessionStorage.setItem(a_,e)}catch{}window.dispatchEvent(new Event(aK))},[])},[b,k]=(0,o.useState)(0),[j,w]=(0,o.useState)(!1),[S,C]=(0,o.useState)(!1),z=(0,o.useRef)(null),T=(0,o.useRef)(!1),R=(0,o.useRef)(!1),I=(0,o.useRef)(!1),M=(0,o.useRef)(!1),E=(0,o.useRef)(!1),$=(0,o.useRef)(0);(0,o.useEffect)(()=>{if(t){T.current=!0,R.current||x(!0);return}if(!T.current)return;E.current=!1,R.current=!1,m({}),x(!1);let e=window.setTimeout(()=>x(!1),300);return T.current=!1,()=>window.clearTimeout(e)},[t]),(0,o.useEffect)(()=>{if(r&&!t&&!M.current&&h.length>0){let e=h[h.length-1];M.current=!0,m({[e.id]:!0}),window.requestAnimationFrame(()=>i?.())}},[r,t,i,h]),(0,o.useEffect)(()=>{if(0===h.length)return;let e=h[h.length-1];k(e=>I.current&&e<h.length?e:h.length-1),t&&m(t=>!0===t[e.id]&&1===Object.keys(t).length?t:{[e.id]:!0})},[t,h]);let W=(0,o.useCallback)(()=>{let e=z.current;e&&(w(t=>{let r=e.scrollTop>0;return t===r?t:r}),C(t=>{let r=e.scrollHeight-e.scrollTop-e.clientHeight>1;return t===r?t:r}))},[]),L=(0,o.useCallback)(()=>{if(Date.now()<$.current)return;let e=z.current;e&&(E.current=e.scrollHeight-e.scrollTop-e.clientHeight>4)},[]);if((0,o.useEffect)(()=>{let e=z.current;if(!e||!g)return;let t=new ResizeObserver(W);return e.addEventListener("scroll",W,{passive:!0}),t.observe(e),e.firstElementChild&&t.observe(e.firstElementChild),W(),()=>{e.removeEventListener("scroll",W),t.disconnect()}},[b,g,v,t,f,h.length,W]),(0,o.useEffect)(()=>{let e=z.current;if(e&&g)return e.addEventListener("scroll",L,{passive:!0}),()=>e.removeEventListener("scroll",L)},[g,v,L]),(0,o.useEffect)(()=>{t&&z.current&&(E.current||($.current=Date.now()+100,z.current.scrollTop=z.current.scrollHeight,W()))},[e,t,W]),0===h.length)return null;let N=h.reduce((e,t)=>"tool"===t.kind?e+1:"toolGroup"===t.kind?e+t.blocks.length:e,0),A=h.reduce((e,t)=>"tool"===t.kind&&"error"===t.block.status?e+1:"toolGroup"===t.kind?e+t.blocks.filter(e=>"error"===e.status).length:e,0),P=e.filter(e=>"thinking"===e.type||"text"===e.type).length,F=h.filter(e=>"custom"===e.kind).length,D=1===h.length&&"thinking"===h[0].kind&&!t,H=1===h.length&&("tool"===h[0].kind||"toolGroup"===h[0].kind)&&!t;if(t)c=u("desktop.processWorking");else if(D){let e=function(e){let t;if("thinking"===e.kind){for(let r of e.blocks)"thinking"===r.type&&"number"==typeof r.duration&&(t=(t??0)+r.duration);return t}}(h[0]);c=void 0!==e?u("desktop.processThoughtDone",{duration:e}):u("desktop.processThoughtDoneNoDuration")}else if(H){let e=h[0];if("toolGroup"===e.kind){let t=e.blocks.reduce((e,t)=>e+(t.duration??0),0);c=t>0?`${e.label} ${t}s`:e.label}else{let t=e.block,r=dx(t,p),n=t.duration;c=void 0!==n?`${r.displayLabel} ${n}s`:r.displayLabel}}else{let e=[];if(N){let t=1===N?u("desktop.processToolCount",{count:N}):u("desktop.processToolsCount",{count:N});e.push(A>0?t+u("desktop.processFailedCount",{failed:A}):t)}P&&e.push(1===P?u("desktop.processThoughtCount",{count:P}):u("desktop.processThoughtsCount",{count:P})),F&&e.push(1===F?u("desktop.processCustomCount",{count:F}):u("desktop.processCustomsCount",{count:F})),c=e.length>0?u("desktop.processUsed",{summary:e.join(" \xb7 ")}):u("desktop.processCompleted")}return(0,n.jsxs)("div",{className:"group/process relative mb-3 min-w-0",children:[(0,n.jsxs)("div",{className:"group/summary-row flex items-center justify-between",children:[(0,n.jsxs)("button",{type:"button",onClick:()=>x(e=>{let r=!e;return R.current=t&&!r,r}),className:"group/summary flex min-w-0 items-center gap-1.5 text-left text-sm leading-relaxed text-text-muted transition-colors hover:text-text","aria-expanded":g,children:[(0,n.jsx)("span",{className:"truncate",children:c}),t&&null!=d&&d>0&&(0,n.jsx)("span",{className:"shrink-0 text-xs tabular-nums text-text-dim",children:u("desktop.tokensPerSecond",{count:d>=10?String(Math.round(d)):d.toFixed(1)})}),(0,n.jsx)("span",{className:`opacity-0 transition-opacity group-hover/summary:opacity-60 ${g?"rotate-90":""}`,children:(0,n.jsx)(df,{expanded:!1})})]}),!D&&(0,n.jsx)("button",{type:"button",onClick:()=>{y("timeline"===v?"tabs":"timeline"),x(!0)},className:`shrink-0 p-1 text-text-dim transition-colors hover:text-text group-hover/summary-row:opacity-100 pointer-events-none group-hover/summary-row:pointer-events-auto ${"timeline"===v?"opacity-60":"opacity-0"}`,title:"timeline"===v?u("desktop.processTabMode"):u("desktop.processTimelineMode"),children:(0,n.jsx)(dk,{mode:v})})]}),g&&(0,n.jsx)("div",{className:"overflow-hidden",children:D?(0,n.jsxs)("div",{className:"relative mt-2",children:[(0,n.jsx)("div",{ref:z,className:"max-h-[280px] overflow-y-auto pr-2",children:(0,n.jsx)(dw,{step:h[0],cwd:s,onOpenFile:l,sessionId:a,ts:p,isStreaming:t})}),j&&(0,n.jsx)("div",{"aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 top-0 z-10 h-6 bg-gradient-to-b from-bg to-transparent"}),S&&(0,n.jsx)("div",{"aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 bottom-0 z-10 h-6 bg-gradient-to-t from-bg to-transparent"})]}):"timeline"===v?(0,n.jsxs)("div",{className:"relative mt-2",children:[j&&(0,n.jsx)("div",{"aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 top-0 z-10 h-6 bg-gradient-to-b from-bg to-transparent"}),S&&(0,n.jsx)("div",{"aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 bottom-0 z-10 h-6 bg-gradient-to-t from-bg to-transparent"}),(0,n.jsx)("div",{ref:z,className:t?"max-h-[320px] overflow-y-auto":"",children:(0,n.jsxs)("div",{className:"relative ml-5 space-y-2",children:[(0,n.jsx)("div",{className:"absolute -left-3 -top-1.5 h-4 w-2 rounded-bl border-b border-l border-border"}),h.map((e,r)=>{let o=f[e.id]??!1,i="thinking"===e.kind?e.blocks.some(e=>"text"===e.type?e.text.trim().length>0:e.deferred||e.thinking.trim().length>0):"toolGroup"!==e.kind||e.blocks.length>0,d="tool"===e.kind&&"error"===e.block.status||"toolGroup"===e.kind&&e.blocks.some(e=>"error"===e.status),c="tool"===e.kind?dx(e.block,p):null,g="toolGroup"!==e.kind&&c?.target!==void 0&&c?.typeLabel!==void 0;return(0,n.jsxs)("div",{className:"group/step relative min-w-0",children:[r<h.length-1&&(0,n.jsx)("span",{className:"absolute bottom-[-9px] left-[7px] top-[22px] border-l border-border"}),(0,n.jsxs)("button",{type:"button",onClick:()=>i&&m(t=>({...t,[e.id]:!o})),className:`flex w-full min-w-0 items-center gap-1.5 text-left text-sm leading-relaxed transition-colors ${i?"cursor-pointer":"cursor-default"} ${d?"text-red-400 hover:text-red-300":"text-text-dim hover:text-text-muted"}`,children:[(0,n.jsx)("span",{className:"shrink-0",children:(0,n.jsx)(dv,{step:e,ts:p})}),"toolGroup"===e.kind&&e.targets.length>0?(0,n.jsx)(dy,{targets:e.targets,typeLabel:e.typeLabel,count:e.blocks.length,label:e.label}):g?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"shrink-0",children:c.typeLabel}),(0,n.jsx)(db,{filePath:c.target})]}):(0,n.jsx)("span",{className:"truncate",title:"toolGroup"===e.kind?e.targetLabels.join("\n"):void 0,children:e.label}),"tool"===e.kind&&void 0!==e.block.duration&&(0,n.jsxs)("span",{className:"shrink-0 text-[11px] tabular-nums text-text-dim",children:[e.block.duration,"s"]}),d&&(0,n.jsx)("span",{className:"shrink-0 text-[11px] font-medium text-red-400",children:u("desktop.processFailedStep")}),i&&(0,n.jsx)("span",{className:`ml-0.5 shrink-0 opacity-0 transition-opacity group-hover/step:opacity-50 ${o?"rotate-90":""}`,children:(0,n.jsx)(df,{expanded:!1})})]}),o&&i&&(0,n.jsx)("div",{className:"ml-5 mt-1.5 overflow-hidden",children:(0,n.jsx)(dw,{step:e,cwd:s,onOpenFile:l,sessionId:a,ts:p,isStreaming:t})})]},e.id)})]})})]}):(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"mt-2 flex flex-wrap gap-1",children:h.map((e,r)=>{let o="tool"===e.kind&&"error"===e.block.status||"toolGroup"===e.kind&&e.blocks.some(e=>"error"===e.status),i="tool"===e.kind?dx(e.block,p):null,s="toolGroup"!==e.kind&&i?.target!==void 0&&i?.typeLabel!==void 0,l=t&&r===h.length-1,a=b===r;return(0,n.jsxs)("button",{type:"button",onClick:()=>{r===h.length-1&&t?(I.current=!1,E.current=!1):I.current=!0,k(r)},"data-has-file-target":s?"true":void 0,title:"toolGroup"===e.kind?e.targetLabels.join("\n"):void 0,className:`process-tab flex items-center gap-1 font-mono text-xs transition-colors ${a?o?"process-tab-error":"process-tab-active":"text-text-dim hover:text-text"}${l?" process-tab-streaming":""}`,children:[(0,n.jsx)(dv,{step:e,ts:p}),"toolGroup"===e.kind&&e.targets.length>0?(0,n.jsx)(dy,{targets:e.targets,typeLabel:e.typeLabel,count:e.blocks.length,label:e.label}):s?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"shrink-0",children:i.typeLabel}),(0,n.jsx)(db,{filePath:i.target})]}):(0,n.jsx)("span",{className:`truncate ${"toolGroup"===e.kind?"max-w-64":"max-w-52"}`,title:"toolGroup"===e.kind?e.targetLabels.join("\n"):void 0,children:e.label})]},e.id)})}),(0,n.jsxs)("div",{className:"relative mt-2",children:[(0,n.jsx)("div",{ref:z,className:"max-h-[280px] overflow-y-auto pr-2",children:h[b]&&(0,n.jsx)(dw,{step:h[b],cwd:s,onOpenFile:l,sessionId:a,ts:p,isStreaming:t})}),j&&(0,n.jsx)("div",{"aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 top-0 z-10 h-6 bg-gradient-to-b from-bg to-transparent"}),S&&(0,n.jsx)("div",{"aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 bottom-0 z-10 h-6 bg-gradient-to-t from-bg to-transparent"})]})]})})]})}function dz(e){if(!e)return null;let t=Date.parse(e);return Number.isFinite(t)?t:null}function dT(e){return"running"===e||"starting"===e?"var(--accent)":"queued"===e?"var(--text-dim)":"completed"===e?"var(--status-success)":"failed"===e?"var(--status-error)":"aborted"===e?"var(--status-warning)":"var(--text-dim)"}function dR({run:e,onOpenSubagent:t,sessionRun:r}){let{t:i}=(0,Y.s)(),s=sp(e.result?.details)?e.result.details:null,l=s?.profile??("string"==typeof e.input.subagent_type?e.input.subagent_type:"Agent"),a=(s?.description??("string"==typeof e.input.description?e.input.description:""))||l,d=s?.sessionId??null,c=!!(d&&t),[u,p]=(0,o.useState)(null),h=s?.status??("running"===e.status?"running":"error"===e.status?"failed":"completed"),g=r?.status??u?.status??h,x="running"===g||"starting"===g;(0,o.useEffect)(()=>{if(r||!d||!x)return;let e=new AbortController;return fetch(`/api/sessions/${encodeURIComponent(d)}`,{cache:"no-store",signal:e.signal}).then(e=>e.ok?e.json():null).then(e=>{let t=e?.info?.relation;t&&p({...t.status?{status:t.status}:{},...t.createdAt?{createdAt:t.createdAt}:{},...t.completedAt?{completedAt:t.completedAt}:{}})}).catch(()=>{}),()=>e.abort()},[d,r,x]);let[f,m]=(0,o.useState)(null);(0,o.useEffect)(()=>{if(!x)return void m(null);m(Date.now());let e=window.setInterval(()=>m(Date.now()),1e3);return()=>window.clearInterval(e)},[x]);let v=function(e){let t=dz(e.startedAt),r=dz(e.completedAt);if(e.running)return null!==t&&e.nowMs>=t?Math.max(0,Math.round((e.nowMs-t)/1e3)):e.toolDuration??null;if(null!==t&&null!==r){let e=r<t?null:Math.round((r-t)/1e3);if(null!==e)return e}return e.toolDuration??null}({startedAt:s?.createdAt??r?.createdAt??u?.createdAt??null,completedAt:s?.completedAt??r?.completedAt??u?.completedAt??null,toolDuration:e.duration??null,running:x,nowMs:f??0}),y=[l,null!==v?`${v}s`:null].filter(Boolean).join(" \xb7 "),b=i(function(e){switch(e){case"starting":return"agentSwitcher.status.starting";case"queued":return"agentSwitcher.status.queued";case"running":return"agentSwitcher.status.running";case"failed":return"agentSwitcher.status.failed";case"aborted":return"agentSwitcher.status.aborted";case"interrupted":return"agentSwitcher.status.interrupted";default:return"agentSwitcher.status.completed"}}(g));return(0,n.jsxs)("button",{type:"button",className:"subagent-run-row",onClick:()=>{d&&t?.(d,a)},disabled:!c,title:c?i("subagent.openTranscript"):a,"aria-label":`${i("agentSwitcher.subagent")}: ${a} — ${y} — ${b}`,style:{display:"flex",alignItems:"center",gap:9,width:"100%",padding:"7px 10px",margin:"4px 0",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:8,color:"var(--text)",textAlign:"left",cursor:c?"pointer":"default",opacity:c?1:.75},onMouseEnter:e=>{c&&(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-panel)"},children:[(0,n.jsx)("span",{style:{display:"grid",placeItems:"center",width:20,height:20,flexShrink:0,color:dT(g)},children:x?(0,n.jsxs)("svg",{className:"animate-spin",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"9",stroke:"currentColor",strokeWidth:"2",opacity:"0.25"}),(0,n.jsx)("path",{d:"M21 12a9 9 0 0 0-9-9",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})]}):(0,n.jsx)(_.d,{size:15,weight:"regular",color:dT(g),"aria-hidden":"true"})}),(0,n.jsxs)("span",{style:{minWidth:0,flex:1},children:[(0,n.jsx)("span",{style:{display:"block",fontSize:12.5,fontWeight:550,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a}),(0,n.jsx)("span",{style:{display:"block",marginTop:1,fontSize:10.5,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:y})]}),(0,n.jsx)("span",{style:{flexShrink:0,fontSize:11,color:dT(g),whiteSpace:"nowrap"},children:b})]})}function dI(e){var t;if(!e||"object"!=typeof e||"image"!==e.type||"string"!=typeof e.data||"string"!=typeof e.mimeType||(t=e.mimeType,!/^image\/[A-Za-z0-9][A-Za-z0-9!#$&^_.+-]*$/.test(t)))return!1;let r=function(e){if(!e||e.length%4!=0)return null;let t=e.endsWith("==")?2:+!!e.endsWith("="),r=e.length-t,n=null;for(let t=0;t<r;t+=1){var o;let r=(o=e.charCodeAt(t))>=65&&o<=90?o-65:o>=97&&o<=122?o-97+26:o>=48&&o<=57?o-48+52:43===o?62:47===o?63:null;if(null===r)return null;n=r}for(let t=r;t<e.length;t+=1)if("="!==e[t])return null;return 2===t&&n%16!=0||1===t&&n%4!=0?null:e.length/4*3-t}(e.data);return null!==r&&r<=0xa00000}function dM(e){return!!e&&"object"==typeof e&&dI({type:"image",data:e.data,mimeType:e.mimeType})}let dE=new Map;function d$(e){var t;return{value:e.value,images:e.images.map(e=>({...e})),pastedBlocks:(t=e.pastedBlocks)?t.map(e=>({...e})):void 0}}function dW(e){let t=dE.get(e);return t?d$(t):null}function dL(e,t){var r;if(!(r=t).value&&0===r.images.length)return void dE.delete(e);for(dE.delete(e),dE.set(e,d$(t));dE.size>100;){let e=dE.keys().next().value;if(void 0===e)break;dE.delete(e)}}function dN(e){dE.delete(e)}function dA(e,t,r,n,o,i){let s=[...t??[],...n].filter(dM).slice(0,10).map(({data:e,mimeType:t})=>({data:e,mimeType:t}));return{value:e.trim()?r.trim()?`${e}
191
191
 
192
- ${r}`:e:r,images:s,pastedBlocks:function(e,t){if(!e?.length&&!t?.length)return;let r=[],n=new Set;for(let o of[...e??[],...t??[]]){let e=`${o.label}\u0000${o.text}`;n.has(e)||(n.add(e),r.push({...o}))}return r}(i,o)}}function dP(e){let t=e.trim();if(!t.startsWith("file://"))return t;try{let e=new URL(t),r=decodeURIComponent(e.pathname);return/^\/[a-zA-Z]:[\\/]/.test(r)?r=r.slice(1):e.host&&"localhost"!==e.host&&(r=`//${e.host}${r}`),r}catch{let e=t.replace(/^file:\/\/(localhost)?/,"");try{e=decodeURIComponent(e)}catch{}return/^\/[a-zA-Z]:[\\/]/.test(e)&&(e=e.slice(1)),e}}let dF=["text/uri-list","x-special/nautilus-clipboard","x-special/gnome-copied-files","x-special/mate-copied-files","x-special/xfce4-copied-files","application/x-kde-cutselection","public.file-url","text/x-moz-url","application/x-moz-file"];function dD(e){let t=/(?:^|\s)@"([^"\n]*)$/.exec(e);if(t)return{start:e.length-(t[1].length+2),query:t[1],quoted:!0};let r=/(?:^|\s)@([^\s"]*)$/.exec(e);return r?{start:e.length-(r[1].length+1),query:r[1],quoted:!1}:null}function dH(e){let t=0;for(let r=0;r<e.length;r++)"/"===e[r]&&t++;return t}function dO(e,t){if(!e)return!0;let r=0;for(let n=0;n<t.length&&r<e.length;n++)t[n]===e[r]&&r++;return r===e.length}function dB(e,t){let r=t?`${e}/`:e;return r.includes(" ")?`@"${r}" `:`@${r} `}var dU=r(23084),d_=r(70312),dq=r(37597),dK=r(21163),dV=r(4615),dJ=r(25248),dY=r(58506),dG=r(41789),dX=r(87124),dZ=r(65098),dQ=r(93587),d0=r(3736),d1=r(91906),d2=r(50981),d6=r(69203);let d4=[{value:"plan",Icon:d0.A,titleKey:"modes.collabPlanTitle",descKey:"modes.collabPlanDesc"},{value:"build",Icon:d1.A,titleKey:"modes.chatBuildTitle",descKey:"modes.chatBuildDesc"},{value:"edit",Icon:d2.A,titleKey:"modes.chatEditTitle",descKey:"modes.chatEditDesc"},{value:"yolo",Icon:d6.A,titleKey:"modes.chatYoloTitle",descKey:"modes.chatYoloDesc",warning:!0},{value:"goal",Icon:aW.d,titleKey:"modes.collabGoalTitle",descKey:"modes.collabGoalDesc"}];function d5({collaborationMode:e,onCollaborationModeChange:t,toolApprovalMode:r,onToolApprovalModeChange:i,disabled:s=!1}){let l,{t:a}=(0,Y.s)(),d=tp(),[c,u]=(0,o.useState)(null),[p,h]=(0,o.useState)(null),[g,x]=(0,o.useState)({}),m=(0,o.useRef)(null),v=(0,o.useRef)(null);(0,o.useEffect)(()=>()=>{null!==v.current&&window.clearTimeout(v.current)},[]);let y=(0,o.useCallback)(e=>{h(e),window.requestAnimationFrame(()=>u(t=>t===e?null:t)),null!==v.current&&window.clearTimeout(v.current),v.current=window.setTimeout(()=>h(null),150)},[]),b="goal"===e?"goal":"plan"===e?"plan":"yolo"===r?"yolo":"auto"===r?"edit":"build",k=()=>window.visualViewport?.height??window.innerHeight,j=d4.find(e=>e.value===b)??d4[1],w="build"===b?"var(--text-muted)":j.warning?"var(--accent-orange, #f59e0b)":"var(--accent)",S=j.Icon,C=j.titleKey;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",gap:2},children:(0,n.jsxs)("button",{ref:m,type:"button","aria-label":a(C),title:a(C),"aria-expanded":"collab"===c,onClick:(l="collab",()=>{if(s)return;let e=m.current;if(!e)return;let t=e.getBoundingClientRect();x(e=>({...e,[l]:{top:t.top,left:t.left,width:t.width}})),u(e=>e===l?null:l)}),disabled:s,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:5*!d,padding:d?0:"0 6px",width:d?24:void 0,height:24,background:"collab"===c?"var(--bg-hover)":"none",border:"none",borderRadius:4,color:w,cursor:s?"not-allowed":"pointer",fontSize:12,whiteSpace:"nowrap",opacity:s?.5:1,transition:"background 0.12s, color 0.12s"},children:[(0,n.jsx)(S,{size:14,color:w,"aria-hidden":"true"}),!d&&(0,n.jsx)("span",{style:{whiteSpace:"nowrap"},children:a(C)})]})}),(()=>{if("collab"!==c)return null;let o=g.collab;if(!o)return null;let l=Math.min(248,window.innerWidth-16),d=Math.min(o.left,window.innerWidth-l-8),u=k()-o.top+6,h=Math.min(300,Math.max(120,.55*k()));return(0,n.jsx)("div",{role:"menu",style:{position:"fixed",bottom:u,left:d,zIndex:2100,width:l,maxHeight:h,overflowY:"auto",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:10,boxShadow:"0 12px 32px rgba(0,0,0,0.22)",padding:4,opacity:+("collab"!==p),transition:"opacity 0.12s"},children:d4.map(o=>{let l=o.value===b,d=o.Icon;return(0,n.jsxs)("button",{type:"button",role:"menuitemradio","aria-checked":l,onClick:()=>(n=>{if(y("collab"),n===b)return;if("goal"===n)return void t("goal");let o=function(e){switch(e){case"plan":return{collaborationMode:"plan",toolApprovalMode:"ask"};case"edit":return{collaborationMode:"normal",toolApprovalMode:"auto"};case"yolo":return{collaborationMode:"normal",toolApprovalMode:"yolo"};default:return{collaborationMode:"normal",toolApprovalMode:"ask"}}}(n);o.collaborationMode!==e&&t(o.collaborationMode),o.toolApprovalMode!==r&&i?.(o.toolApprovalMode)})(o.value),disabled:s,style:{display:"flex",alignItems:"center",gap:10,width:"100%",padding:"8px 10px",background:l?"var(--bg-selected)":"none",border:"none",borderRadius:8,cursor:s?"not-allowed":"pointer",textAlign:"left",transition:"background 0.12s"},onMouseEnter:e=>{l||s||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{e.currentTarget.style.background=l?"var(--bg-selected)":"none"},children:[(0,n.jsx)(d,{size:16,color:l?o.warning?"var(--accent-orange, #f59e0b)":"var(--accent)":"var(--text-muted)","aria-hidden":"true"}),(0,n.jsxs)("span",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("span",{style:{display:"block",fontSize:12.5,fontWeight:550,color:"var(--text)"},children:a(o.titleKey)}),(0,n.jsx)("span",{style:{display:"block",fontSize:10.5,color:"var(--text-muted)",marginTop:1,lineHeight:1.4},children:a(o.descKey)})]}),l&&(0,n.jsx)(f.S,{size:12,weight:"bold",color:"var(--accent)","aria-hidden":"true"})]},o.value)})})})()]})}let d3=["off","default","full"],d8={off:"none",default:"default",full:"full"},d7=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});function d9(e,t){return d7.compare(e.name||e.modelId,t.name||t.modelId)||d7.compare(e.provider,t.provider)||d7.compare(e.modelId,t.modelId)}let ce=["max","xhigh","high","medium","low","minimal","auto","off"];function ct({level:e,size:t=14}){if("off"===e)return(0,n.jsx)(dY.x,{size:t,weight:"regular",color:"var(--text-dim)"});if("auto"===e)return(0,n.jsx)(dQ.I,{size:t,weight:"regular",color:"var(--accent)"});let r=["medium","high","xhigh","max"].includes(e),o="var(--accent)";return(0,n.jsxs)("span",{style:{position:"relative",display:"inline-flex"},children:[(0,n.jsx)(dY.x,{size:t,weight:r?"fill":"regular",color:o}),"high"===e&&(0,n.jsx)(b.c,{size:Math.round(.57*t),weight:"bold",color:o,style:{position:"absolute",right:-4,top:-1}}),"xhigh"===e&&(0,n.jsx)(x.C,{size:Math.round(.57*t),weight:"fill",color:o,style:{position:"absolute",right:-4,top:-1}}),"max"===e&&(0,n.jsxs)("span",{style:{position:"absolute",right:-6,top:-1,display:"inline-flex"},children:[(0,n.jsx)(x.C,{size:Math.round(.5*t),weight:"fill",color:o,style:{marginRight:-3}}),(0,n.jsx)(x.C,{size:Math.round(.5*t),weight:"fill",color:o})]})]})}function cr(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${Math.round(e/1e3)}k`:e.toLocaleString()}let cn=["builtin","extension","prompt","skill"],co={builtin:0,extension:1,prompt:2,skill:3};function ci(e,t){let r=e.name.toLowerCase(),n=e.description?.toLowerCase()??"";return r===t?0:r.startsWith(t)?1:r.includes(t)?2:n.includes(t)?3:4}function cs(e,t){return"skill"===e.source&&e.name.startsWith("skill:")&&!0===t[e.name.slice(6)]}function cl(e,t,r){return t<=0?0:((e+r)%t+t)%t}async function ca(e){let t=()=>{var t;return t=e.type,new Promise((r,n)=>{let o=new FileReader;o.onload=()=>{let e="string"==typeof o.result?o.result.split(",")[1]:void 0;e?r({data:e,mimeType:t}):n(Error("Failed to read image"))},o.onerror=n,o.readAsDataURL(e)})};if(!(e.size>1048576&&"image/gif"!==e.type)||"function"!=typeof createImageBitmap)return t();let r=await createImageBitmap(e).catch(()=>null);if(!r)return t();try{let n=Math.min(1,1024/Math.max(r.width,r.height)),o=document.createElement("canvas");o.width=Math.max(1,Math.round(r.width*n)),o.height=Math.max(1,Math.round(r.height*n));let i=o.getContext("2d");if(!i)return t();i.fillStyle="#fff",i.fillRect(0,0,o.width,o.height),i.drawImage(r,0,0,o.width,o.height);let s=o.toDataURL("image/jpeg",.85).split(",")[1];return s&&s.length<4*Math.ceil(e.size/3)?{data:s,mimeType:"image/jpeg"}:t()}catch{return t()}finally{r.close()}}function cd(e){return{data:e.data,mimeType:e.mimeType}}function cc(e,t){let r=e;for(let e of t)r=r.split(e.label).join(e.text);return r}function cu(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function cp(e){return"string"==typeof e.content?e.content:e.content.filter(e=>"text"===e.type).map(e=>e.text).join("\n")}function ch(e){return"string"==typeof e.content?[]:e.content.flatMap(e=>{if("image"!==e.type)return[];let t=e.source?.type==="base64"?e.source.data:e.data,r=e.source?.type==="base64"?e.source.media_type:e.mimeType;return"string"!=typeof t||"string"!=typeof r?[]:dI({type:"image",data:t,mimeType:r})?[{data:t,mimeType:r}]:[]})}function cg(e){return{...e,previewUrl:`data:${e.mimeType};base64,${e.data}`}}function cx(e){return(e??[]).filter(dM).slice(0,10).map(cg)}function cf(e){e.previewUrl.startsWith("blob:")&&URL.revokeObjectURL(e.previewUrl)}function cm({kind:e,text:t,label:r,index:o,total:i,onMove:s,onRecall:l,onRemove:a}){let{t:d}=(0,Y.s)(),c={display:"inline-flex",alignItems:"center",justifyContent:"center",width:20,height:20,padding:0,border:"none",borderRadius:4,color:"var(--text-dim)",background:"transparent",cursor:"pointer",flexShrink:0};return(0,n.jsxs)("div",{title:t,className:"chat-input-queue-row",style:{display:"flex",alignItems:"center",gap:8,padding:"3px 10px",fontSize:12,color:"var(--text-muted)",minWidth:0},children:[(0,n.jsx)("span",{style:{flexShrink:0,fontSize:10,fontFamily:"var(--font-mono)",padding:"1px 7px",borderRadius:999,border:`1px solid ${"steer"===e?"color-mix(in srgb, var(--accent) 45%, transparent)":"var(--border)"}`,color:"steer"===e?"var(--accent)":"var(--text-dim)"},children:r}),(0,n.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1},children:t}),s&&i>1&&(0,n.jsxs)("span",{style:{display:"inline-flex",gap:1,flexShrink:0},children:[(0,n.jsx)("button",{type:"button","aria-label":d("desktop.queueMoveUp"),title:d("desktop.queueMoveUp"),disabled:0===o,onClick:()=>s(-1),style:{...c,opacity:0===o?.3:1},children:"↑"}),(0,n.jsx)("button",{type:"button","aria-label":d("desktop.queueMoveDown"),title:d("desktop.queueMoveDown"),disabled:o===i-1,onClick:()=>s(1),style:{...c,opacity:o===i-1?.3:1},children:"↓"})]}),l&&(0,n.jsx)("button",{type:"button","aria-label":d("desktop.queueRecallOne"),title:d("desktop.queueRecallOne"),onClick:l,style:c,children:(0,n.jsx)(d_.Y,{size:13})}),a&&(0,n.jsx)("button",{type:"button","aria-label":d("desktop.queueRemove"),title:d("desktop.queueRemove"),onClick:a,style:c,children:(0,n.jsx)(g.u,{size:13})})]})}let cv=(0,o.memo)((0,o.forwardRef)(function({onSend:e,onBash:t,onAbort:r,onSteer:i,onFollowUp:s,isStreaming:l,model:a,modelNames:d,modelList:c,modelScopeWarnings:u,modelsError:p,onRetryModels:m,onModelChange:v,compactResult:k,toolPreset:w,onToolPresetChange:S,collaborationMode:C="normal",toolApprovalMode:I="auto",onCollaborationModeChange:M,onToolApprovalModeChange:E,goalState:$,onGoalStart:W,onGoalPause:L,onGoalResume:N,onGoalStop:A,thinkingLevel:P,isAutoThinkingSelection:D=!1,onThinkingLevelChange:H,availableThinkingLevels:O,thinkingLevelMap:B,retryInfo:U,queuedMessages:_,inputHistory:q=[],onRecallQueue:K,onMoveQueue:V,onRecallOne:J,onRequeueAt:G,onRemoveQueueItem:X,slashCommands:Z,slashCommandsLoading:Q,onLoadSlashCommands:ee,onBuiltinCommand:et,onAudioUnlock:er,onPromptWithStreamingBehavior:en,draftKey:eo,cwd:ei,tasksBoardEnabled:es=!0,topCenterControl:el},ea){var ed;let ec,eu,ep,eh,eg,ex,ef,em,ev,ey,eb,ek,ej,ew,eS,eC,ez,eT,eR,eI,eM,eE,e$,eW=tp(),{t:eL}=(0,Y.s)(),eN=!!a&&(c?.find(e=>e.id===a.modelId&&e.provider===a.provider)?.input?.includes("image")??!1),eA={auto:"auto",off:"off",minimal:"minimal",low:"low",medium:"medium",high:"high",xhigh:"xhigh",max:"max"},eP={off:eL("desktop.toolOff"),default:eL("desktop.toolDefault"),full:eL("desktop.toolFull")},eF=[{name:"compact",description:eL("desktop.compactCommandDescription"),source:"builtin"},{name:"reload",description:eL("desktop.reloadCommandDescription"),source:"builtin"},{name:"name",description:eL("desktop.nameCommandDescription"),source:"builtin"},{name:"session",description:eL("desktop.sessionCommandDescription"),source:"builtin"},{name:"copy",description:eL("desktop.copyCommandDescription"),source:"builtin"}],eD={builtin:eL("desktop.builtIn"),extension:eL("desktop.extensions"),prompt:eL("desktop.prompts"),skill:eL("desktop.commandSkills")},[eH,eO]=(0,o.useState)(()=>eo?dW(eo)?.value??"":""),[eB,eU]=(0,o.useState)(()=>eo?dW(eo)?.pastedBlocks??[]:[]),[e_,eq]=(0,o.useState)([]),eK=o.useMemo(()=>{try{var e;return e=eL("desktop.pastedLabel",{id:"\0A\0",lines:"\0B\0"}),RegExp(e.split("\0A\0").join("(\\d+)").split("\0B\0").join("(\\d+)").split("(\\d+)").map(cu).join("(\\d+)"),"g")}catch{return null}},[eL]),[eV,eJ]=(0,o.useState)(null),eY=(0,o.useRef)(null),eG=(0,o.useCallback)(e=>{eJ(e),eY.current&&clearTimeout(eY.current),eY.current=setTimeout(()=>eJ(null),5e3)},[]),eX=(0,o.useRef)(0),[eZ,eQ]=(0,o.useState)(!1),[e0,e1]=(0,o.useState)(null),[e2,e6]=(0,o.useState)({height:0,width:0,offsetTop:0}),[e4,e5]=(0,o.useState)(""),[e3,e8]=(0,o.useState)(()=>{try{let e=localStorage.getItem("pi-favorite-models");return e?new Set(JSON.parse(e)):new Set}catch{return new Set}}),[e7,e9]=(0,o.useState)(new Set),[te,tt]=(0,o.useState)(!1),[tr,tn]=(0,o.useState)(null),[to,ti]=(0,o.useState)(!1),[ts,tl]=(0,o.useState)(null),[ta,td]=(0,o.useState)(!1),[tc,tu]=(0,o.useState)(null),[th,tg]=(0,o.useState)(()=>eo?dW(eo)?.images.map(cg)??[]:[]),tx=eH.trimStart(),tf=0===th.length&&tx.startsWith("!"),tm=tf&&tx.startsWith("!!"),[tv,ty]=(0,o.useState)(!1),[tb,tk]=(0,o.useState)(0),[tw,tS]=(0,o.useState)({}),[tC,tz]=(0,o.useState)(()=>{try{return"ctrl-enter"===localStorage.getItem("pi-input-shortcut")?"ctrl-enter":"enter"}catch{return"enter"}}),[tT,tR]=(0,o.useState)(null),[tI,tM]=(0,o.useState)(!1),[tE,t$]=(0,o.useState)(null),[tW,tL]=(0,o.useState)(0),[tN,tA]=(0,o.useState)(!1),[tP,tF]=(0,o.useState)(0),[tD,tH]=(0,o.useState)(!1),tO=(0,o.useRef)(!1),[tB,tU]=(0,o.useState)(null),[t_,tq]=(0,o.useState)(!1),[tK,tV]=(0,o.useState)(null),tJ=(0,o.useRef)(null),tY=(0,o.useRef)(null),tG=(0,o.useRef)(null),tX=(0,o.useRef)(null),tZ=(0,o.useRef)(null),tQ=(0,o.useRef)(null),t0=(0,o.useRef)(null),t1=(0,o.useRef)(null),t2=(0,o.useRef)(null),t6=(0,o.useRef)(null),t4=(0,o.useRef)(!1),t5=(0,o.useRef)(0),t3=(0,o.useRef)(!1),t8=(0,o.useRef)([]),t7=(0,o.useRef)(null),t9=(0,o.useRef)([]),re=(0,o.useRef)([]),rt=(0,o.useRef)(null),rr=(0,o.useRef)(null),rn=(0,o.useRef)(eo),ro=(0,o.useRef)(eH),ri=(0,o.useRef)(th),rs=(0,o.useRef)(eB),rl=(0,o.useRef)(null),[ra,rd]=(0,o.useState)(!1);ro.current=eH,ri.current=th,rs.current=eB;let rc=(0,o.useCallback)(async e=>{let t=e.filter(e=>e.type.startsWith("image/"));if(!t.length)return;if(!eN)return void eG(eL("desktop.imageInputUnsupported"));let r=await Promise.all(t.map(async e=>({...await ca(e),previewUrl:URL.createObjectURL(e)})));tg(e=>[...e,...r])},[eG,eN,eL]);(0,o.useImperativeHandle)(ea,()=>({insertIfEmpty(e){let t=tJ.current;(t?t.value:eH).trim()||(eO(e),tR(null),requestAnimationFrame(()=>{t&&(t.focus(),t.style.height="auto",t.style.height=`${Math.min(t.scrollHeight,200)}px`)}))},replaceMessage(e){var t,r;let n=tJ.current;t=n?n.value:eH,r=ri.current.length,t.trim()||0!==r||(eO(cp(e)),tR(null),tA(!1),tg(t=>(t.forEach(cf),cx(ch(e)))),requestAnimationFrame(()=>{n&&(n.focus(),n.style.height="auto",n.style.height=`${Math.min(n.scrollHeight,200)}px`)}))},restoreSubmission(e){let t=dA(cp(e),ch(e),tJ.current?.value??ro.current,ri.current.map(cd),void 0,rs.current);ro.current=t.value,rs.current=t.pastedBlocks??[];let r=cx(t.images);ri.current.forEach(cf),ri.current=r,eO(t.value),eU(t.pastedBlocks??[]),tg(r),tR(null),rn.current&&dL(rn.current,t)},prependText(e){if(!e.trim())return;let t=tJ.current,r=[e,t?t.value:eH].filter(e=>e.trim()).join("\n\n");eO(r),tR(null),requestAnimationFrame(()=>{t&&(t.focus(),t.setSelectionRange(r.length,r.length),t.style.height="auto",t.style.height=`${Math.min(t.scrollHeight,200)}px`)})},insertText(e){let t=tJ.current;if(!t)return void eO(t=>t+(t?" ":"")+e);let r=t.selectionStart??t.value.length,n=t.selectionEnd??t.value.length,o=t.value.slice(0,r),i=t.value.slice(n),s=o.length>0&&!o.endsWith(" ")?" ":"";eO(o+s+e+i),tR(null),requestAnimationFrame(()=>{if(!t)return;let n=r+s.length+e.length;t.setSelectionRange(n,n),t.focus(),t.style.height="auto",t.style.height=`${Math.min(t.scrollHeight,200)}px`})},addImages(e){rc(e)},addFiles(e,t){let r=function(e,t,r){let n=e.map(()=>null),o=t.split(/\r?\n/).map(e=>e.trim()).filter(e=>e&&!e.startsWith("#")).filter(e=>e.startsWith("file://"));if(o.length===e.length){for(let t=0;t<e.length;t+=1)n[t]=function(e){let t;if(!e.startsWith("file://"))return null;try{t=decodeURIComponent(e.slice(7))}catch{return null}return t?(/^\/[A-Za-z]:[\\/]/.test(t)&&(t=t.slice(1)),t):null}(o[t]);return n}if(1===e.length&&r.trim()){let e=r.trim();(e.startsWith("/")||e.startsWith("~")||/^[A-Za-z]:[\\/]/.test(e))&&(n[0]=e)}return n}(e,t?.getData("text/uri-list")??"",t?.getData("text/plain")??""),n=e.filter(e=>e.type.startsWith("image/")),o=e.map((e,t)=>e.type.startsWith("image/")?null:r[t]??e.name).filter(e=>!!e);if(n.length&&rc(n),o.length&&!l){let e=o.join(" ");eO(t=>t+(t&&!t.endsWith(" ")?" ":"")+e)}},measureHeight:()=>tQ.current?.getBoundingClientRect().height??0}));let rp=(0,o.useCallback)((e,t)=>{e8(r=>{let n=`${e}:${t}`,o=new Set(r);return o.has(n)?o.delete(n):o.add(n),localStorage.setItem("pi-favorite-models",JSON.stringify([...o])),o})},[]),rh=(0,o.useCallback)(e=>{e9(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},[]),rg=(0,o.useCallback)(e=>{tg(t=>{let r=[...t],[n]=r.splice(e,1);return n&&cf(n),r})},[]),rx=(0,o.useCallback)(()=>{tg(e=>(e.forEach(cf),[]))},[]),rf=(0,o.useCallback)(()=>{eO(""),tR(null),eU([]),eq([]),eo&&dN(eo),rn.current&&rn.current!==eo&&dN(rn.current),rx(),tJ.current&&(tJ.current.style.height="auto")},[rx,eo]),rm=(0,o.useCallback)(async(e,t,r)=>{await V?.(e,t,t+r)},[V]),rv=(0,o.useCallback)(async(e,t)=>{await X?.(e,t)},[X]),ry=(0,o.useCallback)(async(e,t)=>{let r=await J?.(e,t);if(!r)return;rl.current={kind:e,index:t,text:r.text,images:r.images},rd(!0);let n=tJ.current?.value??eH,o=[r.text,n].filter(e=>e.trim()).join("\n\n");eO(o),tR(null),requestAnimationFrame(()=>{let e=tJ.current;e&&(e.focus(),e.setSelectionRange(o.length,o.length),e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,200)}px`)})},[J,eH]);(0,o.useEffect)(()=>{eo&&rn.current===eo&&dL(eo,{value:eH,images:th.map(cd),pastedBlocks:eB.length?eB:void 0})},[th,eo,eH,eB]),(0,o.useEffect)(()=>{let e=rn.current;if(e===eo)return;e&&dL(e,{value:ro.current,images:ri.current.map(cd),pastedBlocks:rs.current.length?rs.current:void 0});let t=eo?dW(eo):null;rn.current=eo,eO(t?.value??""),tR(null),eU(t?.pastedBlocks??[]),eq([]),tg(e=>(e.forEach(cf),t?.images.map(cg)??[]))},[eo]),(0,o.useEffect)(()=>{let e=tJ.current;e&&(e.style.height="auto",eH&&(e.style.height=`${Math.min(e.scrollHeight,200)}px`))},[eH]),(0,o.useEffect)(()=>{let e=()=>{try{tz("ctrl-enter"===localStorage.getItem("pi-input-shortcut")?"ctrl-enter":"enter")}catch{tz("enter")}};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[]),(0,o.useEffect)(()=>()=>{ri.current.forEach(cf)},[]);let rb=(0,o.useCallback)(e=>{let t;if(!eK)return null;for(eK.lastIndex=0;null!==(t=eK.exec(e));){let e=t[0];if(!(rs.current.some(t=>t.label===e)||rs.current.some(t=>t.text.includes(e))))return e}return null},[eK]),rk=(0,o.useCallback)(()=>{eG(eL("desktop.pastedMissingContent"))},[eG,eL]),rj=(0,o.useCallback)(async()=>{let r=cc(eH,eB),n=r.trim();if(!n&&!th.length)return;if(rb(r))return void rk();if(l)return;er?.();let o=rl.current;if(o&&G){if(rl.current=null,rd(!1),!await G(o.kind,o.index,n,th.length?th.map(cd):o.images)){rl.current={...o,text:n},rd(!0);return}rf();return}if(!th.length&&n.startsWith("!")&&t){let e=n.startsWith("!!"),r=n.slice(e?2:1).trim();if(!r)return;t(r,e),rf();return}if(!th.length&&n.startsWith("/")&&et){if(tO.current)return;tO.current=!0,tH(!0);try{let e=await et(n);if(e.handled){e.error||rf();return}}finally{tO.current=!1,tH(!1)}}e(n,th.length?th:void 0),rf()},[eH,eB,th,l,t,et,e,rf,er,G,rb,rk]),rw=eH.startsWith("/")&&!/\s/.test(eH.slice(1))?eH.slice(1).toLowerCase():null,{commands:rS,groups:rC}=(ed=null===rw?[]:[...l?[]:eF,...Z??[]].filter(e=>{let t=e.name.toLowerCase(),r=e.description?.toLowerCase()??"";return t.includes(rw)||r.includes(rw)}).sort((e,t)=>{let r=ci(e,rw)-ci(t,rw);return 0!==r?r:co[e.source]-co[t.source]||d7.compare(e.name,t.name)}),ec=0,{commands:(eu=cn.map(e=>{let t=ed.filter(t=>t.source===e),r="skill"===e?[...t.filter(e=>!cs(e,tw)),...t.filter(e=>cs(e,tw))]:t;return{source:e,items:r.map(e=>({command:e,index:ec++}))}}).filter(e=>e.items.length>0)).flatMap(e=>e.items.map(({command:e})=>e)),groups:eu});(0,o.useEffect)(()=>{if(!tv||!ei)return;let e=!1;return fetch(`/api/skills?cwd=${encodeURIComponent(ei)}`).then(e=>e.ok?e.json():null).then(t=>{!e&&t&&tS(Object.fromEntries(t.skills.map(e=>[e.name,e.disableModelInvocation])))}).catch(()=>{}),()=>{e=!0}},[ei,tv]);let rz=`${rS.length} ${eL(rw?1===rS.length?"desktop.match":"desktop.matches":1===rS.length?"desktop.command":"desktop.commands")}`,rT=!!eH.trim()||th.length>0,rR=(0,o.useCallback)((e,t)=>{if(!ei)return void tR(null);let r=t??e.length;tR(dD(e.slice(0,r)))},[ei]),[rI,rM]=(0,o.useState)(null),rE=(0,o.useRef)(rI);rE.current=rI;let[r$,rW]=(0,o.useState)([]),rL=(0,o.useRef)(!1),rN=(0,o.useCallback)(async()=>{try{let e=await fetch("/api/snippets");if(!e.ok)return;let t=await e.json();rW(t.snippets??[]),rL.current=!0}catch{}},[]);(0,o.useEffect)(()=>{rN();let e=()=>void rN();return window.addEventListener("pi:snippets-changed",e),()=>window.removeEventListener("pi:snippets-changed",e)},[rN]);let rA=rI?.query??null,rP=o.useMemo(()=>{if(null===rA||!1===rL.current)return[];let e=rA.toLowerCase();return r$.filter(t=>t.name.toLowerCase().includes(e))},[rA,r$]),[rF,rD]=(0,o.useState)(0);(0,o.useEffect)(()=>{rD(0)},[rA]);let rH=(0,o.useCallback)((e,t)=>{var r;let n,o=t??e.length,i=(r=e.slice(0,o),(n=/(?:^|[\s(])(#[\w-]+)$/.exec(r))?{start:r.length-n[1].length,end:r.length,query:n[1].slice(1)}:null);rM(i),i&&rD(0)},[]),rO=(0,o.useCallback)(e=>{let t=rE.current;if(!t)return;let r=eH.slice(0,t.start),n=eH.slice(t.end);eO(r+e.content+n),rM(null);let o=r.length+e.content.length;requestAnimationFrame(()=>{let e=tJ.current;e&&(e.focus(),e.setSelectionRange(o,o))})},[eH]),rB=(0,o.useCallback)(e=>{let t=rP[e];t&&rO(t)},[rP,rO]),rU=tT?.query??null,r_=o.useMemo(()=>null!==rU&&tB&&tB.cwd===ei?function(e,t,r=20){let n=t.toLowerCase();if(!n)return e.slice(0,r);let o=[];for(let t of e){let e=function(e,t){let r=e.path.toLowerCase(),n=0;if(t.includes("/"))r===t?n=100:r.startsWith(t)?n=80:r.includes(t)?n=50:dO(t,r)&&(n=10);else{let e=r.lastIndexOf("/"),o=-1===e?r:r.slice(e+1);o===t?n=100:o.startsWith(t)?n=80:o.includes(t)?n=50:r.includes(t)?n=30:dO(t,r)&&(n=10)}return e.isDir&&n>0&&(n+=10),n}(t,n);e>0&&o.push({entry:t,score:e})}return o.sort((e,t)=>t.score-e.score||dH(e.entry.path)-dH(t.entry.path)||e.entry.path.localeCompare(t.entry.path)),o.slice(0,r).map(e=>e.entry)}(tB.entries,rU):[],[rU,tB,ei]),rq=!!(rU&&tB?.truncated&&tB.cwd===ei);(0,o.useEffect)(()=>{if(!rq||!ei||!rU)return;let e=setTimeout(()=>{fetch(`/api/file-index?cwd=${encodeURIComponent(ei)}&q=${encodeURIComponent(rU)}`).then(e=>{if(!e.ok)throw Error(`file search failed: ${e.status}`);return e.json()}).then(e=>tV({cwd:ei,query:rU,matches:e.matches??[]})).catch(()=>{})},150);return()=>clearTimeout(e)},[rq,rU,ei]);let rK=rq&&null!==tK&&tK.cwd===ei&&tK.query===rU,rV=rK?tK.matches:r_,rJ=null===tT?null:`${tT.start}:${+!!tT.quoted}:${tT.query}`;(0,o.useEffect)(()=>{if(null===rJ){tM(!1),tL(0);return}tM(!0),tL(0)},[rJ]);let rY=null!==tT;(0,o.useEffect)(()=>{if(!rY||!ei)return;let e=rt.current;e&&e.cwd===ei&&Date.now()-e.fetchedAt<1e4||rr.current===ei||(rr.current=ei,tq(!0),fetch(`/api/file-index?cwd=${encodeURIComponent(ei)}`).then(e=>{if(!e.ok)throw Error(`file index failed: ${e.status}`);return e.json()}).then(e=>{tU({cwd:ei,entries:function(e){let t=new Set;for(let r of e){let e=r.indexOf("/");for(;-1!==e;)t.add(r.slice(0,e)),e=r.indexOf("/",e+1)}let r=[];for(let e of t)r.push({path:e,isDir:!0});for(let t of e)t&&r.push({path:t,isDir:!1});return r.sort((e,t)=>dH(e.path)-dH(t.path)||e.path.localeCompare(t.path)),r}(e.files??[]),truncated:!!e.truncated}),rt.current={cwd:ei,fetchedAt:Date.now()}}).catch(()=>{rt.current=null}).finally(()=>{rr.current=null,tq(!1)}))},[rY,ei]);let rG=(0,o.useCallback)(e=>{if(!tT)return;let t=tJ.current,r=t?.selectionStart??eH.length,n=eH.slice(0,tT.start),o=eH.slice(r);tT.quoted&&o.startsWith('"')&&(o=o.slice(1));let i=function(e,t,r=!1){let n=t?`${e}/`:e,o=r||n.includes(" ");if(t){let e=o?`@"${n}"`:`@${n}`;return{text:e,cursorOffset:o?e.length-1:e.length}}let i=o?`@"${n}" `:`@${n} `;return{text:i,cursorOffset:i.length}}(e.path,e.isDir,tT.quoted),s=n+i.text+o,l=n.length+i.cursorOffset;eO(s),tR(dD(s.slice(0,l))),requestAnimationFrame(()=>{let e=tJ.current;e&&(e.focus(),e.setSelectionRange(l,l),e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,200)}px`)})},[tT,eH]);(0,o.useEffect)(()=>{tW>=rV.length&&tL(Math.max(0,rV.length-1))},[rV.length,tW]),(0,o.useEffect)(()=>{t9.current.length=rV.length},[rV.length]),(0,o.useEffect)(()=>{tI&&t9.current[tW]?.scrollIntoView({block:"nearest",inline:"nearest"})},[tW,tI]),(0,o.useLayoutEffect)(()=>{if(!tI||null===tT)return void t$(null);let e=t7.current;if(e){var t;let r,n,o,i,s,l,a;return t=e=>{t$(t=>t===e?t:e)},r=null,n=()=>{r=null,t(function(e,t,r=8){return Math.max(0,Math.floor(e-t-r))}(e.getBoundingClientRect().bottom,function(e){let t=window.visualViewport?.offsetTop??0;for(let r=e.parentElement;r;r=r.parentElement){let e=window.getComputedStyle(r).overflowY;("auto"===e||"scroll"===e||"hidden"===e||"clip"===e)&&(t=Math.max(t,r.getBoundingClientRect().top+r.clientTop))}return t}(e)))},o=()=>{null!==r&&cancelAnimationFrame(r),r=requestAnimationFrame(n)},n(),i=e.parentElement,s=i?.parentElement,l="u">typeof ResizeObserver&&i?new ResizeObserver(o):null,i&&l?.observe(i),s&&l?.observe(s),a=window.visualViewport,a?.addEventListener("resize",o),a?.addEventListener("scroll",o),window.addEventListener("resize",o),window.addEventListener("scroll",o,!0),()=>{l?.disconnect(),a?.removeEventListener("resize",o),a?.removeEventListener("scroll",o),window.removeEventListener("resize",o),window.removeEventListener("scroll",o,!0),null!==r&&cancelAnimationFrame(r)}}},[tI,tT]);let rX=(0,o.useCallback)(e=>{eO(e),tR(null),tA(!1),tF(0),requestAnimationFrame(()=>{let t=tJ.current;t&&(t.focus(),t.setSelectionRange(e.length,e.length),t.style.height="auto",t.style.height=`${Math.min(t.scrollHeight,200)}px`)})},[]),rZ=(0,o.useCallback)(e=>{let t=`/${e.name} `;eO(t),ty(!1),tk(0),requestAnimationFrame(()=>{let e=tJ.current;e&&(e.focus(),e.setSelectionRange(t.length,t.length),e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,200)}px`)})},[]),rQ=(0,o.useCallback)(()=>{let e=tJ.current;if(!e)return;let t=e.selectionStart??e.value.length,r=e.value.slice(0,t),n=e.value.slice(e.selectionEnd??t),o=r.length>0&&!r.endsWith(" ")?" ":"",i=r+o+"@"+n;eO(i);let s=t+o.length+1;rR(i,s),requestAnimationFrame(()=>{e&&(e.setSelectionRange(s,s),e.focus(),e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,200)}px`)})},[]),r0=(0,o.useCallback)(()=>{let e=tJ.current;if(!e)return;let t=e.selectionStart??e.value.length,r=e.value.slice(0,t),n=e.value.slice(e.selectionEnd??t),o=r.length>0&&!r.endsWith(" ")?" ":"",i=r+o+"#"+n;eO(i),rR(i,t+o.length+1),requestAnimationFrame(()=>{e&&(e.setSelectionRange(t+o.length+1,t+o.length+1),e.focus(),e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,200)}px`)})},[]),r1=(0,o.useCallback)(()=>{let e=tJ.current;if(!e)return;let t=e.selectionStart??e.value.length,r=e.value.slice(0,t),n=e.value.slice(e.selectionEnd??t),o=r.length>0&&!r.endsWith(" ")?" ":"";eO(r+o+"/"+n);let i=t+o.length+1;requestAnimationFrame(()=>{e&&(e.setSelectionRange(i,i),e.focus(),e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,200)}px`)})},[]),r2=(0,o.useCallback)(e=>{let t=cc(eH,eB);if(rb(t))return void rk();let r=t.trim();if(r||th.length){if(er?.(),r.startsWith("/")&&en){en(r,"steer"===e?"steer":"followUp",th.length?th:void 0),rf();return}"steer"===e&&i?i(r,th.length?th:void 0):"followup"===e&&s&&s(r,th.length?th:void 0),rf()}},[eH,eB,th,en,i,s,rf,er,rb,rk]),r6=(0,o.useCallback)(e=>{let t=rS.length-1;if(t<0)return 0;if("left"===e)return Math.max(0,tb-1);if("right"===e)return Math.min(t,tb+1);let r=t8.current[tb];if(!r)return"down"===e?Math.min(t,tb+1):Math.max(0,tb-1);let n=r.getBoundingClientRect(),o=n.left+n.width/2,i=n.top+n.height/2,s=-1,l=1/0;for(let r=0;r<=t;r+=1){if(r===tb)continue;let t=t8.current[r];if(!t)continue;let n=t.getBoundingClientRect(),a=n.top+n.height/2-i;if("down"===e?a<=4:a>=-4)continue;let d=1e3*Math.abs(a)+Math.abs(n.left+n.width/2-o);d<l&&(s=r,l=d)}return s>=0?s:"down"===e?Math.min(t,tb+1):Math.max(0,tb-1)},[rS.length,tb]),r4=(0,o.useCallback)(e=>{let t=e.nativeEvent,n=Date.now()-t5.current<100,o=t4.current||t.isComposing||229===t.keyCode;if("Enter"===e.key&&!e.shiftKey&&(o||n)){n&&e.preventDefault();return}if((e.ctrlKey||e.metaKey)&&!e.altKey&&!e.shiftKey&&"i"===e.key.toLowerCase()&&!o&&ei){e.preventDefault();let t=e.currentTarget,r=t.selectionStart??t.value.length,n=t.selectionEnd??r,o=t.value.slice(0,r),i=t.value.slice(n),s=o&&!/[\s@]$/.test(o)?" ":"",l=`${o}${s}@${i}`,a=o.length+s.length+1;eO(l),tR(dD(l.slice(0,a))),tM(!0),requestAnimationFrame(()=>{t.focus(),t.setSelectionRange(a,a)});return}if(tN&&!o){if("ArrowDown"===e.key){e.preventDefault(),tF(e=>Math.min(Math.max(0,(q?.length??0)-1),e+1));return}if("ArrowUp"===e.key){e.preventDefault(),tF(e=>Math.max(0,e-1));return}if("Escape"===e.key){e.preventDefault(),tA(!1);return}if(("Tab"===e.key||"Enter"===e.key&&!e.shiftKey)&&q?.[tP]){e.preventDefault(),rX(q[tP]);return}}if(tv&&null!==rw){if("ArrowDown"===e.key){e.preventDefault(),tk(r6("down"));return}if("ArrowUp"===e.key){e.preventDefault(),tk(r6("up"));return}if("ArrowRight"===e.key){e.preventDefault(),tk(r6("right"));return}if("ArrowLeft"===e.key){e.preventDefault(),tk(r6("left"));return}if("Escape"===e.key){e.preventDefault(),ty(!1);return}if(("Tab"===e.key||"Enter"===e.key&&!e.shiftKey)&&rS[tb]){e.preventDefault(),rZ(rS[tb]);return}}if(tI&&null!==tT&&!o){if("ArrowDown"===e.key){e.preventDefault(),tL(e=>cl(e,rV.length,1));return}if("ArrowUp"===e.key){e.preventDefault(),tL(e=>cl(e,rV.length,-1));return}if("Escape"===e.key){e.preventDefault(),tM(!1);return}if(("Tab"===e.key||"Enter"===e.key&&!e.shiftKey)&&rV[tW]){e.preventDefault(),rG(rV[tW]);return}}if(null!==rI&&rP.length>0&&!o){if("ArrowDown"===e.key){e.preventDefault(),rD(e=>Math.min(Math.max(0,rP.length-1),e+1));return}if("ArrowUp"===e.key){e.preventDefault(),rD(e=>Math.max(0,e-1));return}if("Escape"===e.key){e.preventDefault(),rM(null);return}if(("Tab"===e.key||"Enter"===e.key&&!e.shiftKey)&&rP[rF]){e.preventDefault(),rB(rF);return}}if("ArrowUp"===e.key&&!o&&!l&&(q?.length??0)>0&&0===eH.trim().length){e.preventDefault(),ty(!1),tM(!1),tF(0),tA(!0);return}if("Escape"===e.key&&!o&&l&&r){e.preventDefault(),r();return}if("Enter"===e.key&&!e.shiftKey){if("ctrl-enter"===tC&&!(e.ctrlKey||e.metaKey))return;e.preventDefault(),l&&(i||s)?r2(i?"steer":"followup"):rj()}},[l,i,s,r,tv,rw,rS,tb,rZ,r2,rj,r6,tI,tT,rV,tW,rG,rI,rP,rF,rB,tC,ei,tN,q,tP,rX,eH]),r5=(0,o.useCallback)(()=>{let e=tJ.current;e&&(e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,200)}px`)},[]),r3=(0,o.useCallback)(e=>{let t=Array.from(e.clipboardData?.items??[]),r=t.filter(e=>e.type.startsWith("image/"));if(r.length){e.preventDefault(),rc(r.map(e=>e.getAsFile()).filter(e=>null!==e));return}let n=function(e,t){if(!e)return[];let r=[],n=Array.from(e.files??[]);for(let e of n){let t=e.path;"string"==typeof t&&t.trim()&&r.push(t.trim())}if(r.length>0)return Array.from(new Set(r));for(let t of Array.from(e.items??[]))if("file"===t.kind){let e=t.getAsFile(),n=e?.path;"string"==typeof n&&n.trim()&&r.push(n.trim())}if(r.length>0)return Array.from(new Set(r));for(let t of dF)try{let n=e.getData(t);if(n){let e=function(e){if(!e)return[];let t=e.split(/\r?\n/),r=[];for(let e of t){let t=e.trim();!(!t||t.startsWith("#"))&&"copy"!==t&&"cut"!==t&&(t.startsWith("file://")?r.push(dP(t)):(t.startsWith("/")||/^[a-zA-Z]:[\\/]/.test(t))&&r.push(t))}return r}(n);e.length>0&&r.push(...e)}}catch{}if(r.length>0)return Array.from(new Set(r));try{let t=e.getData("text/plain")||e.getData("text");if(t){let e=t.split(/\r?\n/).map(e=>e.trim()).filter(Boolean),n=e.filter(e=>e.startsWith("file://"));if(n.length>0&&n.length===e.length)for(let e of n)r.push(dP(e))}}catch{}if(r.length>0)return Array.from(new Set(r));if(t?.fallbackToFileName&&n.length>0)for(let e of n)e.name&&r.push(e.name);return Array.from(new Set(r))}(e.clipboardData,{fallbackToFileName:!0});if(n.length>0){e.preventDefault();let t=function(e,t=" "){return e&&0!==e.length?1===e.length?e[0]:e.map(e=>{let t=e.trim();return!/\s/.test(t)||t.startsWith('"')||t.startsWith("'")?t:`"${t}"`}).join(t):""}(n),r=tJ.current,o=r?.selectionStart??eH.length,i=r?.selectionEnd??eH.length;eO(eH.slice(0,o)+t+eH.slice(i)),requestAnimationFrame(()=>{if(r){let e=o+t.length;r.selectionStart=e,r.selectionEnd=e,r5()}});return}if(!t.find(e=>e.type.startsWith("text/plain")))return;let o=e.clipboardData.getData("text/plain");if(!o)return;let i=e.clipboardData.getData("text/html");if(i){let t=new DOMParser().parseFromString(i,"text/html"),r=function(e,t){let r="",n=0,o=!1;for(let{label:i,href:s,occurrence:l}of t){if(!i||!s)continue;let t=0;for(let r=0;r<=l&&!((t=e.indexOf(i,r?t+i.length:0))<0);r++);if(t<n)continue;let a=i.replace(/([\\[\]])/g,"\\$1"),d=s.replace(/([\\()])/g,"\\$1");r+=`${e.slice(n,t)}[${a}](${d})`,n=t+i.length,o=!0}return o?r+e.slice(n):null}(o,Array.from(t.querySelectorAll("a[href]"),e=>{let r=e.textContent??"",n=t.createRange();return n.setStart(t.body,0),n.setEndBefore(e),{label:r,href:e.getAttribute("href")?.trim()??"",occurrence:r?n.toString().split(r).length-1:0}}));if(null!==r){let t=tJ.current,n=t?.selectionStart??eH.length,o=t?.selectionEnd??eH.length,i=eH.slice(0,n)+r+eH.slice(o);e.preventDefault(),eO(i),tA(!1),rR(i,n+r.length),requestAnimationFrame(()=>{t&&(t.focus(),t.setSelectionRange(n+r.length,n+r.length),r5())});return}}let s=o.split(/\r?\n/).length;if(o.length<2e3&&s<20)return;e.preventDefault();let l=`paste-${++eX.current}`,a=eL("desktop.pastedLabel",{id:eX.current,lines:s}),d=tJ.current,c=d?.selectionStart??eH.length,u=d?.selectionEnd??eH.length,p=eH.slice(0,c),h=eH.slice(u),g=!(p.length>0)||p.endsWith("\n")||p.endsWith(" ")?"":"\n\n";eO(p+g+a+h),eU(e=>[...e,{id:l,label:a,text:o}]),requestAnimationFrame(()=>{if(!d)return;let e=c+g.length+a.length;d.setSelectionRange(e,e),d.focus()})},[rc,eL,eH,r5]);(0,o.useEffect)(()=>{tP>=(q?.length??0)&&tF(Math.max(0,(q?.length??0)-1))},[tP,q]),(0,o.useEffect)(()=>{re.current.length=q?.length??0},[q]),(0,o.useEffect)(()=>{tN&&re.current[tP]?.scrollIntoView({block:"nearest",inline:"nearest"})},[tP,tN]),(0,o.useEffect)(()=>{if(null===rw){ty(!1),tk(0),t3.current=!1;return}ty(!0),tk(0),!t3.current&&ee&&(t3.current=!0,Promise.resolve(ee()).catch(()=>{t3.current=!1}))},[rw,ee]),(0,o.useEffect)(()=>{tb>=rS.length&&tk(Math.max(0,rS.length-1))},[rS.length,tb]),(0,o.useEffect)(()=>{t8.current.length=rS.length},[rS.length]),(0,o.useEffect)(()=>{tv&&t8.current[tb]?.scrollIntoView({block:"nearest",inline:"nearest"})},[tb,tv]);let r8=c&&c.length>0?c.map(e=>({provider:e.provider,modelId:e.id,name:e.name,input:e.input})).sort(d9):Object.entries(d??{}).map(([e,t])=>({provider:a?.provider??"unknown",modelId:e,name:t})).sort(d9),r7=[];for(let e of r8){let t=r7.find(t=>t.provider===e.provider);t?t.options.push(e):r7.push({provider:e.provider,options:[e]})}let r9=a?r8.find(e=>e.modelId===a.modelId&&e.provider===a.provider)?.name??a.modelId:null,ne=k?Math.max(0,k.tokensBefore-k.estimatedTokensAfter):0,nt=k?`${eL("desktop.compacted")} ${cr(k.tokensBefore)} -> ${cr(k.estimatedTokensAfter)} ${eL("desktop.tokens")} (${cr(ne)} ${eL("desktop.saved")})`:null,nr=P&&"auto"!==P?P:null,nn="auto"!==(ep=P??"auto")&&B?B[ep]??eA[ep]:eA[ep],no=Object.entries(d8).find(([,e])=>e===(w??"default"))?.[0],ni="plan"===w?eL("desktop.planModeLabel"):eP[no??"default"];(0,o.useEffect)(()=>{let e=e=>{tY.current&&!tY.current.contains(e.target)&&tG.current&&!tG.current.contains(e.target)&&eQ(!1),tZ.current&&!tZ.current.contains(e.target)&&tt(!1),t0.current&&!t0.current.contains(e.target)&&td(!1),t1.current&&!t1.current.contains(e.target)&&ti(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),(0,o.useEffect)(()=>{let e=null,t=()=>{e=null;let t=window.visualViewport;e6({height:t?.height??window.innerHeight,width:t?.width??window.innerWidth,offsetTop:t?.offsetTop??0})},r=()=>{null!==e&&window.cancelAnimationFrame(e),e=window.requestAnimationFrame(t)};return r(),window.addEventListener("resize",r),window.visualViewport?.addEventListener("resize",r),window.visualViewport?.addEventListener("scroll",r),window.addEventListener("focusin",r),window.addEventListener("focusout",r),window.addEventListener("pageshow",r),()=>{window.removeEventListener("resize",r),window.visualViewport?.removeEventListener("resize",r),window.visualViewport?.removeEventListener("scroll",r),window.removeEventListener("focusin",r),window.removeEventListener("focusout",r),window.removeEventListener("pageshow",r),null!==e&&window.cancelAnimationFrame(e)}},[]),(0,o.useEffect)(()=>{eZ&&tX.current?.focus()},[eZ]);let[ns,nl]=(0,o.useState)(null);return(0,o.useEffect)(()=>{if(!ei||!es)return void nl(null);let e=!1,t=async()=>{try{let t=await fetch("/api/tasks/projects"),{projects:r}=await t.json(),n=r.find(e=>ei===e||ei.startsWith(e+"/")||e.startsWith(ei+"/"));if(!n){e||nl(null);return}let o=await (0,dU.Vk)(n);if(e)return;nl({running:o.filter(e=>["running","awaiting_input","preparing","merging"].includes(e.status)).length,todo:o.filter(e=>["todo","queued"].includes(e.status)).length})}catch{e||nl(null)}};t();let r=new EventSource("/api/tasks/events");return r.onmessage=()=>void t(),()=>{e=!0,r.close()}},[ei,es]),(0,n.jsxs)("fieldset",{disabled:tD,"aria-busy":tD,style:{flexShrink:0,minWidth:0,margin:0,border:0,background:"transparent",padding:eW?"0 16px max(15px, env(safe-area-inset-bottom))":"0 16px 15px",paddingRight:eW?16:34,opacity:tD?.5:1,transition:"opacity 0.15s"},children:[(0,n.jsx)("input",{ref:t6,type:"file",accept:"image/*",multiple:!0,style:{display:"none"},onChange:e=>{rc(Array.from(e.target.files??[])),e.target.value=""}}),(0,n.jsxs)("div",{style:{maxWidth:820,margin:"0 auto"},children:[ns&&(ns.running>0||ns.todo>0)&&(0,n.jsxs)("button",{type:"button",onClick:()=>window.dispatchEvent(new CustomEvent("pi:open-tasks-view")),title:eL("desktop.taskStatusHint"),style:{display:"inline-flex",alignItems:"center",gap:6,marginBottom:8,padding:"3px 10px",borderRadius:999,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text-muted)",fontSize:11,cursor:"pointer",transition:"border-color 0.12s, color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--accent)",e.currentTarget.style.borderColor="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:[(0,n.jsx)(F.m,{size:12,"aria-hidden":"true"}),ns.running>0&&(0,n.jsxs)("span",{style:{color:"var(--accent)"},children:[ns.running," ",eL("desktop.taskRunning")]}),ns.running>0&&ns.todo>0&&(0,n.jsx)("span",{"aria-hidden":"true",children:"\xb7"}),ns.todo>0&&(0,n.jsxs)("span",{children:[ns.todo," ",eL("desktop.taskTodo")]})]}),u&&u.length>0&&(0,n.jsx)("div",{role:"status",style:{marginBottom:8,padding:"6px 10px",borderRadius:6,border:"1px solid color-mix(in srgb, var(--accent-orange) 45%, var(--border))",background:"color-mix(in srgb, var(--accent-orange) 9%, var(--bg-panel))",color:"var(--text-muted)",fontSize:12,lineHeight:1.45},children:u.join(" ")}),(_?.steering.length??0)+(_?.followUp.length??0)>0&&(0,n.jsxs)("div",{style:{marginBottom:8,border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",padding:"5px 0",maxHeight:"30dvh",overflowY:"auto"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,padding:"2px 8px 4px 10px"},children:[(0,n.jsxs)("span",{style:{fontSize:10,fontFamily:"var(--font-mono)",color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:.4},children:[eL("desktop.queued")," \xb7 ",(_?.steering.length??0)+(_?.followUp.length??0)]}),K&&(0,n.jsxs)("button",{onClick:K,title:eL("desktop.recallQueuedMessages"),style:{display:"flex",alignItems:"center",gap:6,padding:"4px 12px",fontSize:12,color:"var(--text)",background:"transparent",border:"1px solid var(--border)",borderRadius:7,cursor:"pointer",transition:"background 0.12s, border-color 0.12s",whiteSpace:"nowrap"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.borderColor="color-mix(in srgb, var(--accent) 45%, var(--border))"},onMouseLeave:e=>{e.currentTarget.style.background="transparent",e.currentTarget.style.borderColor="var(--border)"},children:[(0,n.jsx)(d_.Y,{size:13}),eL("desktop.recallToInput")]})]}),_?.steering.map((e,t)=>(0,n.jsx)(cm,{kind:"steer",label:eL("desktop.steer"),text:e,index:t,total:_.steering.length,onMove:V?e=>void rm("steer",t,e):void 0,onRecall:J?()=>void ry("steer",t):void 0,onRemove:X?()=>void rv("steer",t):void 0},`steer-${t}`)),_?.followUp.map((e,t)=>(0,n.jsx)(cm,{kind:"follow-up",label:eL("desktop.followUp"),text:e,index:t,total:_.followUp.length,onMove:V?e=>void rm("followUp",t,e):void 0,onRecall:J?()=>void ry("followUp",t):void 0,onRemove:X?()=>void rv("followUp",t):void 0},`followup-${t}`))]}),ra&&(0,n.jsx)("div",{style:{marginBottom:8,padding:"5px 10px",borderRadius:6,border:"1px solid color-mix(in srgb, var(--accent) 40%, var(--border))",background:"color-mix(in srgb, var(--accent) 8%, var(--bg-panel))",color:"var(--text-muted)",fontSize:12},children:eL("desktop.recalledEditing")}),U&&(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.jsx)(z.B,{size:11,style:{flexShrink:0}}),eL("desktop.retrying")," (",U.attempt,"/",U.maxAttempts,")…",U.errorMessage&&(0,n.jsxs)("span",{style:{opacity:.7,marginLeft:4},children:["— ",U.errorMessage]})]}),nt&&(0,n.jsxs)("div",{style:{marginBottom:8,padding:"5px 10px",background:"rgba(16,185,129,0.08)",border:"1px solid rgba(16,185,129,0.24)",borderRadius:6,fontSize:12,color:"rgba(5,150,105,0.95)",display:"flex",alignItems:"center",gap:6},children:[(0,n.jsx)(f.S,{size:11,style:{flexShrink:0}}),nt]}),th.length>0&&(0,n.jsx)("div",{style:{display:"flex",gap:6,marginBottom:6,flexWrap:"wrap"},children:th.map((e,t)=>(0,n.jsxs)("div",{style:{position:"relative",flexShrink:0},children:[(0,n.jsx)(lL,{src:e.previewUrl,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"}})},e.previewUrl),(0,n.jsx)("button",{type:"button",onClick:()=>rg(t),title:eL("desktop.removeImage"),"aria-label":eL("desktop.removeImage"),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.jsx)(g.u,{size:8})})]},t))}),(0,n.jsxs)("div",{style:{position:"relative"},children:[tN&&q.length>0&&(0,n.jsxs)("div",{style:{position:"absolute",left:0,right:0,bottom:"calc(100% + 8px)",zIndex:120,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 -6px 20px rgba(0,0,0,0.12)",overflow:"hidden",maxHeight:"min(38vh, 300px)"},children:[(0,n.jsxs)("div",{style:{padding:"4px 8px",borderBottom:"1px solid var(--border)",display:"flex",justifyContent:"space-between",color:"var(--text-dim)",fontSize:11},children:[(0,n.jsx)("span",{children:eL("desktop.inputHistory")}),(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)"},children:eL("desktop.tabOrEnter")})]}),(0,n.jsx)("div",{style:{maxHeight:"calc(min(38vh, 300px) - 24px)",overflowY:"auto",padding:4},children:q.map((e,t)=>(0,n.jsxs)("button",{ref:e=>{re.current[t]=e},type:"button",onMouseDown:t=>{t.preventDefault(),rX(e)},onMouseEnter:()=>tF(t),style:{width:"100%",display:"flex",alignItems:"flex-start",gap:8,padding:"5px 6px",border:"none",borderRadius:5,background:t===tP?"var(--bg-selected)":"transparent",color:"var(--text)",cursor:"pointer",textAlign:"left"},children:[(0,n.jsx)("span",{style:{flexShrink:0,color:"var(--text-dim)",fontFamily:"var(--font-mono)",fontSize:11},children:t+1}),(0,n.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:12},children:e})]},`${t}:${e}`))})]}),tv&&null!==rw&&(0,n.jsxs)("div",{style:{position:"absolute",left:0,right:0,bottom:"calc(100% + 8px)",zIndex:120,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 -6px 20px rgba(0,0,0,0.12)",overflow:"hidden",maxHeight:"min(38vh, 300px)"},children:[(0,n.jsxs)("div",{style:{padding:"4px 8px",borderBottom:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,fontSize:11,color:"var(--text-dim)"},children:[(0,n.jsx)("span",{children:Q?eL("desktop.loadingCommands"):`${eL("desktop.slashCommands")} \xb7 ${rz}`}),(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)"},children:eL("desktop.tabOrEnter")})]}),(0,n.jsx)("div",{style:{maxHeight:"calc(min(38vh, 300px) - 24px)",overflowY:"auto",padding:4},children:Q||0!==rS.length?rC.map(e=>(0,n.jsxs)("section",{style:{marginBottom:6},children:[(0,n.jsxs)("div",{style:{position:"sticky",top:-4,zIndex:1,display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,padding:"2px 0 4px",background:"var(--bg)",color:"var(--text-dim)",fontSize:10,fontWeight:600,textTransform:"uppercase"},children:[(0,n.jsx)("span",{children:eD[e.source]}),(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",fontWeight:500},children:e.items.length})]}),(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:1},children:e.items.map(({command:e,index:t})=>{let r=t===tb;return(0,n.jsxs)("button",{ref:e=>{t8.current[t]=e},type:"button",onMouseDown:t=>{t.preventDefault(),rZ(e)},onMouseEnter:()=>tk(t),style:{width:"100%",display:"flex",alignItems:"center",gap:8,padding:"3px 6px",border:"none",borderRadius:5,background:r?"var(--bg-selected)":"none",color:"var(--text)",cursor:"pointer",textAlign:"left"},children:[(0,n.jsxs)("span",{style:{fontSize:12.5,fontFamily:"var(--font-mono)",whiteSpace:"nowrap",flexShrink:0},children:["/",e.name]}),e.description&&(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:e.description}),cs(e,tw)&&(0,n.jsx)("span",{style:{marginLeft:"auto",flexShrink:0,padding:"1px 5px",borderRadius:999,border:"1px solid var(--border)",color:"var(--text-dim)",fontSize:10},children:eL("desktop.dormant")})]},`${e.source}:${e.name}`)})})]},e.source)):(0,n.jsx)("div",{style:{padding:"2px 2px 2px",fontSize:12,color:"var(--text-dim)"},children:eL("desktop.noSlashCommands")})})]}),tI&&null!==tT&&(eh=t_&&(!tB||tB.cwd!==ei),eg=`${rV.length} ${eL(1===rV.length?"desktop.match":"desktop.matches")}`,ex=tB?.truncated&&!rK?tT.query?` \xb7 ${eL("desktop.searchingAllFiles")}`:` \xb7 ${eL("desktop.indexTruncated")}`:"",(0,n.jsxs)("div",{ref:t7,style:{position:"absolute",left:0,right:0,bottom:"calc(100% + 8px)",zIndex:120,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 -6px 20px rgba(0,0,0,0.12)",overflow:"hidden",boxSizing:"border-box",display:"flex",flexDirection:"column",maxHeight:null===tE?"min(30vh, 240px)":`min(30vh, 240px, ${tE}px)`},children:[(0,n.jsxs)("div",{style:{padding:"4px 8px",borderBottom:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,fontSize:11,color:"var(--text-dim)",flexShrink:0},children:[(0,n.jsx)("span",{children:eh?eL("desktop.loadingFiles"):`${eL("desktop.files")} \xb7 ${eg}${ex}`}),(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)"},children:eL("desktop.tabOrEnter")})]}),(0,n.jsx)("div",{style:{flex:"1 1 auto",minHeight:0,overflowY:"auto",padding:2},children:eh||0!==rV.length?rV.map((e,t)=>{let r=t===tW,o=e.path.split("/").pop()??e.path,i=e.path.slice(0,e.path.length-o.length);return(0,n.jsxs)("button",{ref:e=>{t9.current[t]=e},type:"button",onMouseDown:t=>{t.preventDefault(),rG(e)},onMouseEnter:()=>tL(t),style:{width:"100%",display:"flex",alignItems:"center",gap:5,padding:"3px 6px",border:"none",borderRadius:5,background:r?"var(--bg-selected)":"none",color:"var(--text)",cursor:"pointer",textAlign:"left",fontSize:12.5,fontFamily:"var(--font-mono)"},children:[(0,n.jsx)("span",{style:{flexShrink:0,display:"flex",alignItems:"center"},children:e.isDir?(0,n.jsx)(oz,{size:14,name:o}):oE(o,14)}),(0,n.jsxs)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[i&&(0,n.jsx)("span",{style:{color:"var(--text-dim)"},children:i}),o,e.isDir&&(0,n.jsx)("span",{style:{color:"var(--text-dim)"},children:"/"})]})]},`${e.isDir?"d":"f"}:${e.path}`)}):(0,n.jsx)("div",{style:{padding:"4px 6px",fontSize:12,color:"var(--text-dim)"},children:rq&&!rK?eL("desktop.searching"):eL("desktop.noMatchingFiles")})})]})),null!==rI&&rP.length>0&&(0,n.jsxs)("div",{style:{position:"absolute",left:0,right:0,bottom:"calc(100% + 8px)",zIndex:120,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 -6px 20px rgba(0,0,0,0.12)",overflow:"hidden",maxHeight:"min(30vh, 240px)"},children:[(0,n.jsx)("div",{style:{padding:"4px 8px",borderBottom:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"space-between"},children:(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)",fontWeight:600},children:[rP.length," ",eL("desktop.snippetMatches")]})}),(0,n.jsx)("div",{style:{maxHeight:"min(26vh, 210px)",overflowY:"auto"},children:rP.map((e,t)=>(0,n.jsxs)("button",{type:"button",onMouseEnter:()=>rD(t),onClick:()=>rB(t),style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"6px 10px",background:t===rF?"var(--bg-selected)":"none",border:"none",color:t===rF?"var(--accent)":"var(--text)",cursor:"pointer",fontSize:12,textAlign:"left"},children:[(0,n.jsx)("span",{style:{color:"var(--accent)",fontFamily:"var(--font-mono)",fontSize:11},children:"#"}),(0,n.jsx)("span",{style:{fontWeight:600,flexShrink:0},children:e.name}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text-muted)",fontSize:11},children:e.content.split("\n")[0]})]},e.id))})]}),(0,n.jsxs)("div",{className:`chat-input-shell ${l&&(i||s)?"is-streaming":""} ${"yolo"===I?"is-yolo":""}`,ref:tQ,onClick:e=>{e.target.closest("button, input, select, [role=button]")||tJ.current?.focus()},style:{display:"flex",flexDirection:"column",alignItems:"stretch",gap:0,padding:0,transition:"border-color 0.15s, background 0.15s, box-shadow 0.15s"},children:[l&&(0,n.jsx)("div",{className:"chat-input-streaming-overlay hatch-45","aria-hidden":"true"}),el,l&&(i||s)&&(0,n.jsxs)("div",{className:"chat-input-streaming-actions",children:[i&&(0,n.jsx)("button",{type:"button",className:"chat-input-streaming-action chat-input-streaming-action-steer",onClick:()=>r2("steer"),disabled:!rT,title:eL("desktop.injectMessageNow"),"aria-label":eL("desktop.steer"),children:(0,n.jsx)(dq.A,{size:15})}),s&&(0,n.jsx)("button",{type:"button",className:"chat-input-streaming-action",onClick:()=>r2("followup"),disabled:!rT,title:eL("desktop.queueMessageAfterFinish"),"aria-label":eL("desktop.followUp"),children:(0,n.jsx)(dV.M,{size:15})})]}),eV&&(0,n.jsx)("div",{role:"alert",style:{margin:"0 0 6px",padding:"4px 8px",fontSize:11,lineHeight:1.5,color:"var(--error, #e5484d)",border:"1px solid var(--error, #e5484d)",borderRadius:6},children:eV}),eB.length>0&&(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:4,marginBottom:6},children:eB.map(e=>{let t=e_.includes(e.id);return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"4px 8px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-secondary)",fontSize:11,color:"var(--text-muted)"},children:[(0,n.jsx)(dK.d,{size:12,"aria-hidden":"true"}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"var(--font-mono)"},children:e.label}),(0,n.jsx)("button",{type:"button",onClick:()=>eq(r=>t?r.filter(t=>t!==e.id):[...r,e.id]),title:eL(t?"desktop.pastedHidePreview":"desktop.pastedShowPreview"),style:{background:"none",border:"none",cursor:"pointer",color:"var(--text-muted)",padding:2,display:"flex"},children:(0,n.jsx)(tj.b,{size:12,"aria-hidden":"true"})}),(0,n.jsx)("button",{type:"button",onClick:()=>{eU(t=>t.filter(t=>t.id!==e.id)),eO(t=>t.split(e.label).join(""))},title:eL("desktop.pastedRemove"),style:{background:"none",border:"none",cursor:"pointer",color:"var(--text-muted)",padding:2,display:"flex"},children:(0,n.jsx)(T.u,{size:12,"aria-hidden":"true"})}),t&&(0,n.jsx)("div",{style:{position:"relative"},children:(0,n.jsx)("pre",{style:{position:"absolute",left:0,right:0,top:"calc(100% + 4px)",zIndex:50,maxHeight:200,overflow:"auto",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:6,padding:"8px 10px",fontSize:11,lineHeight:1.5,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:e.text})})]},e.id)})}),(0,n.jsxs)("div",{className:"chat-input-editor-row",style:{borderColor:tf?"var(--tool-bg)":void 0},children:["goal"===C&&$&&"idle"!==$.status&&(0,n.jsxs)("span",{style:{flexShrink:0,display:"inline-flex",alignItems:"center",gap:6,marginRight:8,padding:"2px 8px",borderRadius:6,background:"complete"===$.status?"color-mix(in srgb, var(--accent-green, #22c55e) 14%, transparent)":"blocked"===$.status||"paused"===$.status?"color-mix(in srgb, #f59e0b 14%, transparent)":"color-mix(in srgb, var(--accent) 12%, transparent)",color:"complete"===$.status?"var(--accent-green, #22c55e)":"blocked"===$.status||"paused"===$.status?"var(--status-warning)":"var(--accent)",fontSize:11,fontWeight:600,whiteSpace:"nowrap",userSelect:"none"},title:$.goalText??"",children:[(0,n.jsx)(aW.d,{size:12,weight:"fill","aria-hidden":"true"}),"running"===$.status&&(0,n.jsxs)("span",{children:[eL("desktop.goalRunning")," \xb7 ",$.turnsUsed,"/",$.turnsLimit]}),"complete"===$.status&&(0,n.jsx)("span",{children:eL("desktop.goalComplete")}),"blocked"===$.status&&(0,n.jsx)("span",{children:eL("desktop.goalBlocked")}),"paused"===$.status&&(0,n.jsx)("span",{children:eL("desktop.goalPaused")}),$.noProgressTurns>0&&"running"===$.status&&(0,n.jsxs)("span",{style:{opacity:.8},children:["\xb7 ",eL("desktop.goalNoProgress",{n:$.noProgressTurns})]}),"running"===$.status&&(0,n.jsx)("button",{type:"button",onClick:L,title:eL("desktop.goalPause"),"aria-label":eL("desktop.goalPause"),style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:16,height:16,padding:0,background:"none",border:"none",borderRadius:4,color:"inherit",cursor:"pointer",fontSize:11},children:eL("desktop.goalPauseShort")}),("paused"===$.status||"blocked"===$.status)&&(0,n.jsx)("button",{type:"button",onClick:N,title:eL("desktop.goalResume"),"aria-label":eL("desktop.goalResume"),style:{display:"inline-flex",alignItems:"center",justifyContent:"center",padding:"0 4px",background:"none",border:"none",borderRadius:4,color:"inherit",cursor:"pointer",fontSize:11,fontWeight:600},children:eL("desktop.goalResumeShort")}),(0,n.jsx)("button",{type:"button",onClick:A,title:eL("desktop.goalStop"),"aria-label":eL("desktop.goalStop"),style:{display:"inline-flex",alignItems:"center",justifyContent:"center",padding:"0 3px",background:"none",border:"none",borderRadius:4,color:"inherit",cursor:"pointer",fontSize:11,opacity:.75},children:"✕"})]}),(0,n.jsx)("textarea",{ref:tJ,value:eH,spellCheck:!1,onChange:e=>{eO(e.target.value),rR(e.target.value,e.target.selectionStart),rH(e.target.value,e.target.selectionStart)},onSelect:e=>{let t=e.currentTarget;rR(t.value,t.selectionStart)},onKeyDown:r4,onCompositionStart:()=>{t4.current=!0},onCompositionEnd:e=>{t4.current=!1,t5.current=Date.now();let t=e.currentTarget;rR(t.value,t.selectionStart)},onInput:r5,onPaste:r3,placeholder:l&&(i||s)?eL("desktop.steerOrQueueFollowUp"):l?eL("desktop.agentRunning"):eL("desktop.messageWithCommands"),rows:1,className:"chat-input-textarea",style:{flex:1,background:"none",border:"none",outline:"none",resize:"none",color:"var(--text)",minHeight:24,maxHeight:200,padding:0,overflow:"auto"}})]}),tf&&(0,n.jsxs)("div",{style:{marginTop:4,padding:"2px 8px",fontSize:11,color:tm?"var(--text-muted)":"var(--accent)"},children:[eL("desktop.shellCommand")," \xb7 ",tm?eL("desktop.shellOutputLocal"):eL("desktop.shellOutputModel")]}),(0,n.jsxs)("div",{className:"chat-input-toolbar",style:{display:"flex",alignItems:"center",gap:4},children:[(0,n.jsxs)("div",{ref:t1,className:"chat-input-toolbar-attach",style:{position:"relative"},children:[(0,n.jsx)("button",{onClick:e=>{let t=e.currentTarget.getBoundingClientRect();tl({top:t.top,left:t.left,width:t.width}),ti(e=>!e)},title:eL("desktop.attachMenu"),"aria-label":eL("desktop.attachMenu"),"aria-expanded":to,style:{flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",width:24,height:24,padding:0,background:to?"var(--bg-hover)":"none",border:"none",borderRadius:6,color:th.length?"var(--accent)":"var(--text-muted)",cursor:"pointer",transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color=th.length?"var(--accent)":"var(--text)"},onMouseLeave:e=>{e.currentTarget.style.background=to?"var(--bg-hover)":"none",e.currentTarget.style.color=th.length?"var(--accent)":"var(--text-muted)"},children:(0,n.jsx)(b.c,{size:14})}),to&&ts&&(ef=[{id:"upload",label:eL("desktop.attachUpload"),desc:eL("desktop.attachUploadDesc"),icon:R.J},{id:"reference",label:eL("desktop.attachReference"),desc:eL("desktop.attachReferenceDesc"),icon:dd.sj},{id:"sessions",label:eL("desktop.attachSessions"),desc:eL("desktop.attachSessionsDesc"),icon:dJ.v},{id:"slash",label:eL("desktop.attachCommands"),desc:eL("desktop.attachCommandsDesc"),icon:x.C}],em=window.visualViewport?.height??window.innerHeight,ev=window.innerWidth,ey=Math.min(ts.left,ev-220-8),eb=em-ts.top+6,(0,n.jsx)("div",{role:"menu",style:{position:"fixed",left:ey,bottom:eb,zIndex:1200,width:220,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:12,boxShadow:"0 12px 32px rgba(0,0,0,0.22)",padding:4},children:ef.map(e=>{let t="upload"===e.id&&!eN;return(0,n.jsxs)("button",{type:"button",role:"menuitem",disabled:t,title:t?eL("desktop.imageInputUnsupported"):void 0,onClick:()=>{ti(!1),"upload"===e.id?t6.current?.click():"reference"===e.id?rQ():"sessions"===e.id?r0():"slash"===e.id&&r1()},style:{display:"flex",alignItems:"center",gap:10,width:"100%",padding:"8px 10px",background:e.active?"var(--bg-selected)":"none",border:"none",borderRadius:8,cursor:t?"not-allowed":"pointer",textAlign:"left",opacity:t?.45:1,transition:"background 0.12s"},onMouseEnter:r=>{e.active||t||(r.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:t=>{t.currentTarget.style.background=e.active?"var(--bg-selected)":"none"},children:[(0,n.jsx)(e.icon,{size:16,weight:e.active?"fill":"regular",color:e.active?"var(--accent)":"var(--text-muted)","aria-hidden":"true"}),(0,n.jsxs)("span",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("span",{style:{display:"block",fontSize:12.5,fontWeight:550,color:"var(--text)"},children:e.label}),(0,n.jsx)("span",{style:{display:"block",fontSize:10.5,color:"var(--text-muted)",marginTop:1,lineHeight:1.4},children:t?eL("desktop.imageInputUnsupported"):e.desc})]}),e.active?(0,n.jsx)(f.S,{size:12,weight:"bold",color:"var(--accent)","aria-hidden":"true"}):null]},e.id)})}))]}),(0,n.jsx)("div",{className:"chat-input-toolbar-left",style:{flex:"0 0 auto",minWidth:0,display:"flex",alignItems:"center",gap:2},children:M&&(0,n.jsx)(d5,{collaborationMode:C,onCollaborationModeChange:M,toolApprovalMode:I,onToolApprovalModeChange:E,disabled:l})}),!eW&&(0,n.jsx)("div",{className:"chat-input-toolbar-spacer",style:{flex:1}}),(0,n.jsx)("div",{ref:t2,className:"chat-input-toolbar-controls",style:{flex:eW?"1 1 auto":"0 1 auto",minWidth:0,display:"flex",alignItems:"center",justifyContent:"flex-end",position:"relative",marginLeft:eW?0:"auto"},children:(0,n.jsxs)("div",{className:"chat-input-toolbar-actions",style:{display:"flex",alignItems:"center",gap:eW?1:2,justifyContent:"flex-end",...eW?{flex:"1 1 auto",minWidth:0}:null},children:[H&&(0,n.jsxs)("div",{ref:t0,className:"chat-input-toolbar-thinking",style:{position:"relative"},children:[(0,n.jsxs)("button",{onClick:e=>{if(l)return;let t=e.currentTarget.getBoundingClientRect();tu({top:t.top,left:t.left,width:t.width}),td(e=>!e)},disabled:l,title:l?eL("chat.currentReasoning",{level:nn}):eL("chat.changeReasoning",{level:nn}),"aria-label":eL("chat.changeReasoningLabel"),style:{display:"flex",alignItems:"center",justifyContent:"center",gap:5*!eW,padding:eW?0:"0 6px",width:eW?24:void 0,height:24,background:ta?"var(--bg-hover)":"none",border:"none",borderRadius:6,color:(P??"auto")==="off"?"var(--text-dim)":"var(--accent)",cursor:l?"not-allowed":"pointer",fontSize:12,opacity:l?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{l||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{e.currentTarget.style.background=ta?"var(--bg-hover)":"none"},children:[(0,n.jsx)(ct,{level:P??"auto"}),!eW&&(0,n.jsx)("span",{style:{whiteSpace:"nowrap"},children:nn})]}),ta&&tc&&(ek=window.visualViewport?.height??window.innerHeight,ew=Math.min(240,(ej=window.innerWidth)-16),eS=Math.min(tc.left,ej-ew-8),eC=ek-tc.top+4,ez=Math.min(360,Math.max(120,Math.min(tc.top-8,.6*ek))),(0,n.jsx)("div",{style:{position:"fixed",bottom:eC,left:eS,zIndex:2001,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 4px 24px rgba(0,0,0,0.12)",overflow:"hidden",minWidth:200,maxWidth:ew,maxHeight:ez,overflowY:"auto"},children:ce.filter(e=>!O||"auto"===e||O.includes(e)).map(e=>{let t="auto"===e?D:!D&&nr===e,r="auto"!==e&&B?B[e]:void 0,o=null!=r&&r!==e?r:eA[e],i=null!=r&&r!==e;return(0,n.jsxs)("button",{onClick:()=>{if(td(!1),"auto"===e){D||H("auto");return}(!t||D)&&H(e)},style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"6px 12px",background:t?"var(--bg-selected)":"none",border:"none",color:t?"var(--accent)":"var(--text)",cursor:"pointer",fontSize:12,textAlign:"left",fontFamily:"var(--font-mono)",whiteSpace:"nowrap"},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="none")},children:[(0,n.jsx)(ct,{level:e,size:14}),(0,n.jsxs)("span",{style:{flex:1},children:[o,i&&(0,n.jsxs)("span",{style:{fontSize:10,color:"var(--text-dim)",marginLeft:5},children:["(",e,")"]})]}),t&&(0,n.jsx)(f.S,{size:12,weight:"bold",color:"var(--accent)",style:{flexShrink:0}})]},e)})}))]}),S&&"plan"===w&&(0,n.jsxs)("div",{ref:tZ,className:"chat-input-toolbar-tools",style:{position:"relative"},children:[" ",(0,n.jsxs)("button",{onClick:e=>{if(l)return;let t=e.currentTarget.getBoundingClientRect();tn({top:t.top,left:t.left,width:t.width}),tt(e=>!e)},disabled:l,title:eL("desktop.changeToolPreset",{preset:ni}),"aria-label":eL("desktop.toolPreset"),style:{display:"flex",alignItems:"center",justifyContent:"center",gap:5,padding:eW?"0 5px":"3px 7px",width:eW?"auto":void 0,height:24,background:te?"var(--bg-hover)":"none",border:"none",borderRadius:6,color:"var(--text-muted)",cursor:l?"not-allowed":"pointer",fontSize:12,opacity:l?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{l||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=te?"var(--bg-hover)":"none",e.currentTarget.style.color="var(--text-muted)"},children:[(0,n.jsx)("span",{style:{whiteSpace:"nowrap"},children:ni}),(0,n.jsx)(y.b,{size:11,weight:"bold","aria-hidden":"true",style:{transform:te?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.12s"}})]}),te&&tr&&(eT=window.visualViewport?.height??window.innerHeight,eI=Math.min(200,(eR=window.innerWidth)-16),eM=Math.max(8,eR-(tr.left+tr.width)),eE=eT-tr.top+6,e$=Math.min(320,Math.max(100,Math.min(tr.top-8,.5*eT))),(0,n.jsx)("div",{style:{position:"fixed",bottom:eE,right:eM,zIndex:2001,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 4px 24px rgba(0,0,0,0.12)",overflow:"hidden",minWidth:120,maxWidth:eI,maxHeight:e$,overflowY:"auto"},children:d3.map(e=>{let t=d8[e],r="plan"!==w&&(w??"default")===t,o="off"===e?eL("desktop.noToolsReadOnly"):"default"===e?eL("desktop.fourBuiltInTools"):eL("desktop.allBuiltInTools");return(0,n.jsxs)("button",{onClick:()=>{tt(!1),r||S(t)},style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"6px 12px",background:r?"var(--bg-selected)":"none",border:"none",color:r?"var(--accent)":"var(--text)",cursor:"pointer",fontSize:12,textAlign:"left",fontFamily:"var(--font-mono)",whiteSpace:"nowrap"},onMouseEnter:e=>{r||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{r||(e.currentTarget.style.background="none")},children:[(0,n.jsx)("span",{style:{flex:1},children:eP[e]}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)",marginLeft:8},children:o}),r&&(0,n.jsx)(f.S,{size:12,weight:"bold",color:"var(--accent)",style:{flexShrink:0}})]},e)})}))]}),r8.length>0&&v&&(0,n.jsxs)("div",{ref:tY,className:"chat-input-toolbar-model",style:{position:"relative",flex:eW?"0 1 auto":void 0,minWidth:0},children:[(0,n.jsxs)("button",{onClick:e=>{let t=e.currentTarget.getBoundingClientRect();e1({top:t.top,left:t.left,width:t.width}),eZ||e5(""),eQ(e=>!e)},disabled:l,title:r9??eL("desktop.selectModel"),"aria-label":r9??eL("desktop.selectModel"),style:{display:"flex",alignItems:"center",justifyContent:"center",gap:5*!eW,padding:eW?0:"0 6px",width:eW?28:void 0,maxWidth:eW?void 0:"min(220px, 34vw)",height:24,overflow:"hidden",background:eZ?"var(--bg-hover)":"none",border:"none",borderRadius:6,color:"var(--text-muted)",cursor:l?"not-allowed":"pointer",fontSize:12,opacity:l?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{l||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=eZ?"var(--bg-hover)":"none",e.currentTarget.style.color="var(--text-muted)"},children:[(0,n.jsx)(ru,{id:a?.provider??"unknown",size:14}),!eW&&(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:r9??eL("desktop.selectModel")}),!eW&&(0,n.jsx)(y.b,{size:11,weight:"bold","aria-hidden":"true",style:{flexShrink:0,transform:eZ?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.12s"}})]}),eZ&&e0&&(()=>{let e=e2.height||window.innerHeight,t=e2.width||window.innerWidth,r=e0.top-e2.offsetTop,o=Math.max(6,e-r+6),i=Math.min(400,Math.max(120,Math.min(r-8,.6*e))),s=Math.min(320,i),l=e0.width,d=Math.min(360,t-16),c=eW?{left:8,right:8,maxWidth:"calc(100vw - 16px)"}:{right:Math.max(8,t-(e0.left+e0.width)),width:"max-content",minWidth:Math.min(l,d),maxWidth:d},u=[];for(let e of[...e3]){let[t,r]=e.split(":",2),n=r8.find(e=>e.provider===t&&e.modelId===r);n&&u.push(n)}let p=e4.trim().toLowerCase(),g=p.length>0,x=e=>e.name.toLowerCase().includes(p)||e.modelId.toLowerCase().includes(p)||e.provider.toLowerCase().includes(p),m=g?u.filter(x):u,b=m.length>0,k=g?r7.map(e=>({...e,options:e.options.filter(x)})).filter(e=>e.options.length>0):r7,w=b||k.length>0;return(0,n.jsxs)("div",{ref:tG,className:"chat-input-model-dropdown",style:{position:"fixed",bottom:o,...c,zIndex:2e3,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 4px 24px rgba(0,0,0,0.12)",overflow:"hidden",height:s,maxHeight:i,display:"flex",flexDirection:"column"},children:[(0,n.jsx)("div",{style:{borderBottom:"1px solid var(--border)",flexShrink:0},children:(0,n.jsxs)("div",{style:{position:"relative",display:"flex",alignItems:"center"},children:[(0,n.jsx)(h.$,{size:13,color:"var(--text-dim)",style:{position:"absolute",left:12,pointerEvents:"none"}}),(0,n.jsx)("input",{ref:tX,value:e4,onChange:e=>e5(e.target.value),onKeyDown:e=>{if("Escape"===e.key)e4?e5(""):eQ(!1);else if("ArrowDown"===e.key){let t=tG.current?.querySelector(".model-row button");t&&(e.preventDefault(),t.focus())}},placeholder:eL("desktop.searchModels"),"aria-label":eL("desktop.searchModels"),style:{width:"100%",padding:"5px 12px 5px 34px",background:"transparent",border:"none",outline:"none",color:"var(--text)",fontSize:12,fontFamily:"var(--font-mono)"}})]})}),(0,n.jsxs)("div",{style:{overflowY:"auto",flex:1,minHeight:0},children:[b&&(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{padding:"6px 12px 4px",fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em"},children:eL("desktop.favorites")}),m.map(e=>{let t=e.modelId===a?.modelId&&e.provider===a?.provider,r=e3.has(`${e.provider}:${e.modelId}`);return(0,n.jsx)("div",{className:"model-row",style:{display:"flex",alignItems:"center",width:"100%"},children:(0,n.jsxs)("button",{onClick:()=>{eQ(!1),v(e.provider,e.modelId)},style:{display:"flex",alignItems:"center",gap:8,flex:1,minWidth:0,padding:"6px 12px",background:t?"var(--bg-selected)":"none",border:"none",color:t?"var(--accent)":"var(--text)",cursor:"pointer",fontSize:12,textAlign:"left",fontFamily:"var(--font-mono)",whiteSpace:"nowrap",overflow:"hidden"},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="none")},children:[(0,n.jsx)(ru,{id:e.provider,size:14}),(0,n.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",minWidth:0},children:e.name}),t&&(0,n.jsx)(f.S,{size:12,weight:"bold",color:"var(--accent)",style:{flexShrink:0}}),(0,n.jsx)("span",{onClick:t=>{t.stopPropagation(),rp(e.provider,e.modelId)},className:"model-star",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0,cursor:"pointer",color:r?"var(--accent)":"var(--text-dim)",opacity:+!!r,transition:"opacity 0.12s, color 0.12s"},onMouseEnter:e=>{e.stopPropagation(),e.currentTarget.style.color="var(--accent)"},onMouseLeave:e=>{e.stopPropagation(),e.currentTarget.style.color=r?"var(--accent)":"var(--text-dim)"},title:r?eL("desktop.unfavorite"):eL("desktop.favorite"),"aria-label":r?eL("desktop.unfavorite"):eL("desktop.favorite"),children:(0,n.jsx)(dZ.G,{size:12,weight:r?"fill":"regular"})})]})},`fav-${e.provider}:${e.modelId}`)}),(0,n.jsx)("div",{style:{borderTop:"1px solid var(--border)"}})]}),k.map((e,t)=>{let r=g||e7.has(e.provider),o=r?(0,n.jsx)(y.b,{size:10,color:"var(--text-dim)"}):(0,n.jsx)(j.J,{size:10,color:"var(--text-dim)"});return(0,n.jsxs)("div",{children:[(0,n.jsxs)("button",{onClick:()=>rh(e.provider),title:e.provider,style:{display:"flex",alignItems:"center",gap:4,width:"100%",maxWidth:"100%",padding:"6px 12px 4px",background:"none",border:"none",cursor:"pointer",fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em",overflow:"hidden",whiteSpace:"nowrap",borderTop:t>0?"1px solid var(--border)":"none"},onMouseEnter:e=>{e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-dim)"},children:[o,(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",minWidth:0},children:e.provider})]}),r&&e.options.map(e=>{let t=e.modelId===a?.modelId&&e.provider===a?.provider,r=e3.has(`${e.provider}:${e.modelId}`);return(0,n.jsx)("div",{className:"model-row",style:{display:"flex",alignItems:"center",width:"100%"},children:(0,n.jsxs)("button",{onClick:()=>{eQ(!1),v(e.provider,e.modelId)},style:{display:"flex",alignItems:"center",gap:8,flex:1,minWidth:0,padding:"6px 12px",background:t?"var(--bg-selected)":"none",border:"none",color:t?"var(--accent)":"var(--text)",cursor:"pointer",fontSize:12,textAlign:"left",fontFamily:"var(--font-mono)",whiteSpace:"nowrap",overflow:"hidden"},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="none")},children:[(0,n.jsx)(ru,{id:e.provider,size:14}),(0,n.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",minWidth:0},children:e.name}),t&&(0,n.jsx)(f.S,{size:12,weight:"bold",color:"var(--accent)",style:{flexShrink:0}}),(0,n.jsx)("span",{onClick:t=>{t.stopPropagation(),rp(e.provider,e.modelId)},className:"model-star",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0,cursor:"pointer",color:r?"var(--accent)":"var(--text-dim)",opacity:+!!r,transition:"opacity 0.12s, color 0.12s"},onMouseEnter:e=>{e.stopPropagation(),e.currentTarget.style.color="var(--accent)"},onMouseLeave:e=>{e.stopPropagation(),e.currentTarget.style.color=r?"var(--accent)":"var(--text-dim)"},title:r?eL("desktop.unfavorite"):eL("desktop.favorite"),"aria-label":r?eL("desktop.unfavorite"):eL("desktop.favorite"),children:(0,n.jsx)(dZ.G,{size:12,weight:r?"fill":"regular"})})]})},`${e.provider}:${e.modelId}`)})]},e.provider)}),g&&!w&&(0,n.jsx)("div",{style:{padding:"14px 12px",textAlign:"center",fontSize:12,color:"var(--text-dim)"},children:eL("desktop.noModelsMatch")})]})]})})()]}),0===r8.length&&p&&(0,n.jsxs)("div",{className:"chat-input-toolbar-model",title:`${eL("desktop.modelsLoadFailed")}: ${p}`,style:{display:"flex",alignItems:"center",gap:6,flex:eW?"1 1 auto":void 0,minWidth:0,padding:"3px 7px",height:24,background:"rgba(239,68,68,0.10)",border:"none",borderRadius:6,fontSize:12,overflow:"hidden"},children:[(0,n.jsx)(l9.M,{size:14,color:"var(--status-error)",weight:"fill",style:{flexShrink:0}}),(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0,color:"var(--status-error)"},children:eL("desktop.modelsLoadFailed")}),m&&(0,n.jsx)("button",{type:"button",onClick:m,style:{display:"inline-flex",alignItems:"center",gap:4,flexShrink:0,padding:"1px 6px",background:"rgba(239,68,68,0.14)",border:"none",borderRadius:4,color:"var(--status-error)",cursor:"pointer",fontSize:11,fontWeight:600,transition:"background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="rgba(239,68,68,0.24)"},onMouseLeave:e=>{e.currentTarget.style.background="rgba(239,68,68,0.14)"},children:eL("desktop.retry")})]}),0===r8.length&&!p&&(0,n.jsxs)("div",{className:"chat-input-toolbar-model",title:eL("desktop.noModelsConfigured"),style:{display:"flex",alignItems:"center",gap:6,flex:eW?"1 1 auto":void 0,minWidth:0,padding:"3px 7px",height:24,background:"var(--bg-hover)",border:"none",borderRadius:6,color:"var(--text-dim)",fontSize:12,overflow:"hidden"},children:[(0,n.jsx)(l9.M,{size:14,color:"var(--text-dim)",style:{flexShrink:0}}),(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:eL("desktop.noModelsConfigured")})]}),!l&&(0,n.jsx)("button",{type:"button",onClick:rj,disabled:!eH.trim()&&!th.length,className:"chat-input-send",title:eL("desktop.sendMessage"),"aria-label":eL("desktop.sendMessage"),children:(0,n.jsx)(dG.l,{size:14})}),l&&(0,n.jsx)("button",{onClick:r,title:eL("desktop.stopAgent"),"aria-label":eL("desktop.stopAgent"),className:"chat-input-stop",style:{display:"flex",alignItems:"center",justifyContent:"center",padding:0,width:24,height:24,background:"rgba(239,68,68,0.12)",border:"none",borderRadius:4,color:"var(--status-error)",cursor:"pointer",transition:"background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="rgba(239,68,68,0.20)"},onMouseLeave:e=>{e.currentTarget.style.background="rgba(239,68,68,0.12)"},children:(0,n.jsx)(dX.d,{size:14})})]})})]})]})]})]})]})}));function cy(e){return!!e&&"string"==typeof e.type&&"string"==typeof e.data&&"string"==typeof e.mimeType}function cb(e){let t;if(!e||"object"!=typeof e)return null;let r=e.kind;return"steer"!==r&&"followUp"!==r||"string"!=typeof e.text?null:(Array.isArray(e.images)&&0===(t=e.images.filter(cy)).length&&(t=void 0),{kind:r,text:e.text,...t?{images:t}:{}})}function ck({items:e,sessionId:t,onResolve:r,onExport:i,onStageImport:s,onDismiss:l,mode:a="recovery"}){let{t:d}=(0,Y.s)(),c=tp(),[u,p]=(0,o.useState)(()=>new Set(e.map(e=>e.id))),[h,g]=(0,o.useState)(!1),[x,f]=(0,o.useState)(null),m=(0,o.useRef)(null);(0,o.useEffect)(()=>{p(new Set(e.map(e=>e.id)))},[e]),L(!h,l);let v=e.filter(e=>u.has(e.id)),y=v.length===e.length&&e.length>0,b=e=>p(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r}),k=async(e,t=!1)=>{if(0!==v.length){g(!0),f(null);try{await r("keep"===e?v.map(e=>e.id):[],"discard"===e?v.map(e=>e.id):[],t)}catch(e){f(e instanceof Error?e.message:String(e))}finally{g(!1)}}},j=async e=>{let r=await i();if(!r)return;let n=r.recovery.filter(e=>u.has(e.id));if(n.length){var o;let r,i,s,l,a,c,u;o={sessionId:t,source:"recovery"},i="md"===e?(((r=[]).push("# Queued messages export"),o.sessionId&&r.push(`- Session: ${o.sessionId}`),r.push(`- Source: ${"live"===o.source?"live queue":"pending recovery"}`),r.push(`- Exported: ${o.exportedAt??new Date().toISOString()}`),r.push(""),0===n.length)?r.push("_No entries._"):n.forEach((e,t)=>{var n;r.push(`## ${t+1}. ${"steer"===e.kind?"steer":"follow-up"} \xb7 ${new Date(e.queuedAt).toISOString()}`),e.text&&r.push(e.text),e.images?.length&&r.push(`> _${0===(n=e.images.length)?"":1===n?"(1 image)":`(${n} images)`}_`),r.push("")}),r.join("\n")):JSON.stringify({format:"pi-web-queue",version:1,exportedAt:o.exportedAt??new Date().toISOString(),source:o.source,sessionId:o.sessionId,entries:n.map(({kind:e,text:t,images:r})=>({kind:e,text:t,...r?.length?{images:r}:{}}))},null,2),s=new Date().toISOString().replace(/[:.]/g,"-").slice(0,19),l=`${o.sessionId??"session"}-queue-${o.source}-${s}.${e}`,a=new Blob([i],{type:"md"===e?"text/markdown;charset=utf-8":"application/json;charset=utf-8"}),c=URL.createObjectURL(a),(u=document.createElement("a")).href=c,u.download=l,u.click(),setTimeout(()=>URL.revokeObjectURL(c),1e3),f(d("desktop.queueExported",{count:n.length}))}},w=async e=>{let t=function(e){let t;try{t=JSON.parse(e)}catch{return[]}let r=Array.isArray(t)?t:t&&"object"==typeof t&&Array.isArray(t.entries)?t.entries:null;return r?r.map(cb).filter(e=>null!==e):[]}(await e.text());if(!t.length)return void f(d("desktop.queueImportEmpty"));let r=await s(t);f(null===r?d("desktop.queueImportEmpty"):d("desktop.queueImported",{count:r}))};return(0,n.jsxs)("div",{className:"fixed inset-0 z-[1000] flex items-center justify-center bg-black/40 p-3",role:"presentation",children:[(0,n.jsxs)("div",{role:"dialog","aria-modal":"true","aria-label":"import"===a?d("desktop.queueImportTitle"):d("desktop.queueRecoveryTitle"),className:"flex max-h-[88dvh] w-full max-w-2xl flex-col overflow-hidden rounded-xl border border-(--border) bg-(--bg) shadow-2xl",children:[(0,n.jsxs)("header",{className:"flex flex-wrap items-start gap-3 border-b border-(--border) bg-(--bg-panel) px-4 py-3",children:[(0,n.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,n.jsx)("h2",{className:"text-sm font-semibold text-(--text)",children:"import"===a?d("desktop.queueImportTitle"):d("desktop.queueRecoveryTitle")}),(0,n.jsx)("p",{className:"mt-1 text-xs leading-5 text-(--text-muted)",children:"import"===a?d("desktop.queueImportDescription"):d("desktop.queueRecoveryDescription")})]}),(0,n.jsxs)("div",{className:"flex items-center gap-1",children:[(0,n.jsx)("button",{type:"button",className:"markdown-code-action",onClick:()=>p(new Set(y?[]:e.map(e=>e.id))),children:y?d("desktop.selectNone"):d("desktop.selectAll")}),(0,n.jsx)("button",{type:"button",className:"markdown-code-action",disabled:h||0===v.length,onClick:()=>void j("json"),children:"JSON"}),(0,n.jsx)("button",{type:"button",className:"markdown-code-action",disabled:h||0===v.length,onClick:()=>void j("md"),children:"MD"}),(0,n.jsx)("button",{type:"button",className:"markdown-code-action",disabled:h,onClick:()=>m.current?.click(),children:d("desktop.import")}),(0,n.jsx)("button",{type:"button",className:"markdown-code-action",onClick:l,"aria-label":d("desktop.close"),children:"\xd7"})]})]}),(0,n.jsx)("div",{className:"grid flex-1 content-start gap-2 overflow-y-auto p-3",children:e.map(e=>{let t=u.has(e.id);return(0,n.jsxs)("button",{type:"button",onClick:()=>b(e.id),"aria-pressed":t,className:["flex w-full items-start gap-3 rounded-lg border p-3 text-left transition",t?"border-(--accent) bg-(--bg-selected)":"border-(--border) bg-(--bg-panel) hover:bg-(--bg-hover)"].join(" "),children:[(0,n.jsx)("input",{type:"checkbox",checked:t,onChange:()=>b(e.id),onClick:e=>e.stopPropagation(),className:"mt-1 accent-[var(--accent)]"}),(0,n.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,n.jsxs)("span",{className:"flex flex-wrap items-center gap-2 text-[11px] text-(--text-dim)",children:[(0,n.jsx)("span",{className:"rounded-full border border-(--border) px-2 py-0.5 font-mono uppercase",children:"steer"===e.kind?d("desktop.steer"):d("desktop.followUp")}),(0,n.jsx)("span",{children:new Date(e.queuedAt).toLocaleString()}),e.hasImages?(0,n.jsx)("span",{children:d("desktop.queueImages")}):null]}),(0,n.jsx)("span",{className:"mt-2 block whitespace-pre-wrap break-words border-l-2 border-(--border) pl-2 text-xs leading-5 text-(--text)",children:e.text||d("desktop.queueNoText")})]})]},e.id)})}),(0,n.jsxs)("footer",{className:["flex flex-wrap items-center gap-2 border-t border-(--border) px-4 py-3",c?"justify-stretch":"justify-end"].join(" "),children:[x?(0,n.jsx)("span",{className:"mr-auto text-xs text-(--text-muted)",children:x}):null,(0,n.jsx)("button",{type:"button",className:"rounded-md px-3 py-2 text-xs text-(--text-muted) hover:bg-(--bg-hover)",onClick:l,disabled:h,children:d("desktop.dismiss")}),(0,n.jsx)("button",{type:"button",className:"rounded-md border border-red-400/40 px-3 py-2 text-xs text-red-400 disabled:opacity-40",onClick:()=>void k("discard"),disabled:h||0===v.length,children:d("desktop.discard")}),(0,n.jsx)("button",{type:"button",className:"rounded-md border border-(--accent) px-3 py-2 text-xs text-(--accent) disabled:opacity-40",onClick:()=>void k("keep"),disabled:h||0===v.length,children:d("desktop.requeue")}),(0,n.jsx)("button",{type:"button",className:"rounded-md bg-(--accent) px-3 py-2 text-xs text-white disabled:opacity-40",onClick:()=>void k("keep",!0),disabled:h||0===v.length,children:d("desktop.requeueAndContinue")})]})]}),(0,n.jsx)("input",{ref:m,type:"file",accept:".json,application/json",className:"hidden",onChange:e=>{let t=e.target.files?.[0];t&&w(t),e.currentTarget.value=""}})]})}var cj=r(36405),cw=r(92185),cS=r(75877),cC=r(30830);function cz(e){let t=e,r=t.compressedEntryIds?.length??0;for(;1===t.children.length;)t=t.children[0],r+=1+(t.compressedEntryIds?.length??0);return{node:t,skipped:r}}function cT(e){if(e.length>1)return!0;let t=[...e];for(;t.length>0;){let e=t.pop();if(e.children.length>1)return!0;for(let r of e.children)t.push(r)}return!1}function cR({node:e,assistantLabel:t,activePathIds:r,depth:o,isLast:i,parentLines:s,onSelect:l}){let{node:a,skipped:d}=cz(e),c=r.has(a.entry.id),u=r.has(e.entry.id)||r.has(a.entry.id),p=function(e,t){if("message"===e.type&&"message"in e){let r=e.message,n=r.content,o="";if("string"==typeof n?o=n:Array.isArray(n)&&(o=n.filter(e=>"text"===e.type).map(e=>e.text).join(" ")),o.length>40&&(o=o.slice(0,40)+"…"),o)return o;if("assistant"===r.role)return`[${t}]`}return e.type}(a.entry,t),h="message"===a.entry.type&&"message"in a.entry?a.entry.message.role:null;return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",height:24,cursor:"pointer"},onClick:()=>l(a.entry.id),children:[s.map((e,t)=>(0,n.jsx)("div",{style:{width:16,flexShrink:0,position:"relative",height:"100%",alignSelf:"stretch"},children:e&&(0,n.jsx)("div",{style:{position:"absolute",left:7,top:0,bottom:0,width:1,background:"var(--border)"}})},t)),(0,n.jsxs)("div",{style:{width:16,flexShrink:0,position:"relative",height:"100%",alignSelf:"stretch"},children:[(0,n.jsx)("div",{style:{position:"absolute",left:7,top:0,bottom:i?"50%":0,width:1,background:"var(--border)"}}),(0,n.jsx)("div",{style:{position:"absolute",left:7,top:"50%",width:9,height:1,background:"var(--border)"}})]}),(0,n.jsx)("div",{style:{width:7,height:7,borderRadius:"50%",flexShrink:0,background:c?"var(--accent)":u?"var(--text-muted)":"var(--border)",border:c?"none":"1px solid var(--text-dim)",marginRight:6,transition:"background 0.12s"}}),h&&(0,n.jsx)("span",{style:{fontSize:9,fontFamily:"var(--font-mono)",color:"user"===h?"var(--accent)":"var(--text-dim)",background:"user"===h?"rgba(37,99,235,0.08)":"var(--bg-hover)",border:`1px solid ${"user"===h?"rgba(37,99,235,0.2)":"var(--border)"}`,borderRadius:3,padding:"0 4px",marginRight:5,flexShrink:0,lineHeight:"16px"},children:"user"===h?"U":"A"}),d>0&&(0,n.jsxs)("span",{style:{fontSize:10,color:"var(--text-dim)",marginRight:5,flexShrink:0},children:["+",d]}),(0,n.jsx)("span",{style:{fontSize:11,color:c?"var(--text)":u?"var(--text-muted)":"var(--text-dim)",fontWeight:c?500:400,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1,minWidth:0},children:p})]}),a.children.map((e,d)=>(0,n.jsx)(cR,{node:e,assistantLabel:t,activePathIds:r,depth:o+1,isLast:d===a.children.length-1,parentLines:[...s,!i],onSelect:l},e.entry.id))]})}function cI({tree:e,activeLeafId:t,onLeafChange:r,inline:i,containerRef:s,open:l,onToggle:a,hasSession:d,embedded:c}){let{t:u}=(0,Y.s)(),[p,h]=(0,o.useState)(!1),g=void 0!==l?l:p,x=(0,o.useRef)(null),[f,m]=(0,o.useState)(null);(0,o.useEffect)(()=>{if(!g||!i)return;let e=s?.current??x.current;if(!e)return;let t=()=>{let t=e.getBoundingClientRect(),r=Math.max(8,Math.min(t.left,window.innerWidth-8-180)),n=window.innerWidth-8-r,o=Math.min(Math.max(t.width,Math.min(180,n)),n);m({top:t.bottom,left:r,width:o})};t();let r=new ResizeObserver(t);return r.observe(e),()=>r.disconnect()},[g,i,s]);let v=(0,o.useMemo)(()=>(function(e,t){if(!t)return new Set;let r=e.map(e=>({node:e,path:[e.entry.id]}));for(;r.length>0;){let{node:e,path:n}=r.pop();if(e.entry.id===t||e.compressedEntryIds?.includes(t))return new Set(n);for(let t of e.children)r.push({node:t,path:[...n,t.entry.id]})}return new Set})(e,t),[e,t]),b=(0,o.useCallback)(e=>{r(e)},[r]),j=d?cT(e)?null:u("desktop.sessionHasNoBranches"):u("desktop.noActiveSession"),w=e.length>0?cz(e[0]):null,S=w?.node??null,C=!j&&S&&S.children.length>1,z=(0,n.jsx)(k.Z,{size:16,"aria-hidden":"true",style:{flexShrink:0}}),T=(0,n.jsx)(y.a,{size:8,color:"var(--text-dim)","aria-hidden":"true",style:{marginLeft:1,transition:"transform 0.15s",transform:g?"rotate(180deg)":"none"}});return i?(0,n.jsxs)("div",{style:{height:"100%",display:"flex",alignItems:"stretch"},children:[(0,n.jsx)("button",{ref:x,className:"app-no-drag",onClick:()=>a?a():h(e=>!e),style:{display:"flex",alignItems:"center",justifyContent:"center",width:36,height:36,padding:0,background:g?"var(--bg-selected)":"none",border:"none",cursor:"pointer",color:g?"var(--text)":"var(--text-muted)",flexShrink:0,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=g?"var(--bg-selected)":"none",e.currentTarget.style.color=g?"var(--text)":"var(--text-muted)"},title:u("desktop.branches"),"aria-label":u("desktop.branches"),"aria-pressed":g,children:z}),g&&f&&(0,n.jsx)("div",{className:"app-no-drag",style:{position:"fixed",top:f.top,left:f.left,width:f.width,background:"var(--bg-panel)",borderBottom:"1px solid var(--border)",zIndex:500},children:C&&S?(0,n.jsx)("div",{style:{padding:"4px 12px 8px 12px",maxHeight:260,overflowY:"auto"},children:S.children.map((e,t)=>(0,n.jsx)(cR,{node:e,assistantLabel:u("desktop.assistant"),activePathIds:v,depth:0,isLast:t===S.children.length-1,parentLines:[],onSelect:b},e.entry.id))}):(0,n.jsx)("div",{style:{padding:"10px 16px",fontSize:12,color:"var(--text-muted)",fontStyle:"italic"},children:j})})]}):c?C&&S?(0,n.jsx)("div",{style:{padding:"4px 8px 8px 8px"},children:S.children.map((e,t)=>(0,n.jsx)(cR,{node:e,assistantLabel:u("desktop.assistant"),activePathIds:v,depth:0,isLast:t===S.children.length-1,parentLines:[],onSelect:b},e.entry.id))}):(0,n.jsx)("div",{style:{padding:"10px 12px",fontSize:12,color:"var(--text-muted)",fontStyle:"italic"},children:j??u("desktop.sessionHasNoBranches")}):(0,n.jsxs)("div",{style:{borderBottom:"1px solid var(--border)",background:"var(--bg)",flexShrink:0,position:"relative"},children:[(0,n.jsxs)("button",{onClick:()=>h(e=>!e),style:{display:"flex",alignItems:"center",gap:6,width:"100%",padding:"5px 12px",background:"none",border:"none",cursor:"pointer",color:"var(--text-muted)",fontSize:11,textAlign:"left"},children:[z,(0,n.jsx)("span",{style:{color:"var(--text-muted)"},children:u("desktop.branches")}),T]}),g&&(0,n.jsx)("div",{style:{position:"absolute",top:"100%",left:0,right:0,background:"var(--bg)",borderBottom:"1px solid var(--border)",boxShadow:"0 4px 12px rgba(0,0,0,0.1)",zIndex:100},children:C&&S?(0,n.jsx)("div",{style:{padding:"4px 12px 8px 12px",maxHeight:260,overflowY:"auto"},children:S.children.map((e,t)=>(0,n.jsx)(cR,{node:e,assistantLabel:u("desktop.assistant"),activePathIds:v,depth:0,isLast:t===S.children.length-1,parentLines:[],onSelect:b},e.entry.id))}):(0,n.jsx)("div",{style:{padding:"10px 16px",fontSize:12,color:"var(--text-muted)",fontStyle:"italic"},children:j??u("desktop.sessionHasNoBranches")})})]})}var cM=r(33846);function cE({open:e,onOpenChange:t,cwd:r}){let{t:i}=(0,Y.s)(),[s,l]=(0,o.useState)([]),[a,d]=(0,o.useState)(""),[c,u]=(0,o.useState)(!1),[p,h]=(0,o.useState)(null),[x,f]=(0,o.useState)(null);L(e&&!c,()=>t(!1));let m=(0,o.useCallback)(async()=>{if(r)try{let e=await fetch(`/api/git/stash?${new URLSearchParams({cwd:r}).toString()}`,{cache:"no-store"});if(e.ok){let t=await e.json();l(t.entries)}}catch{}},[r]);if((0,o.useEffect)(()=>{e&&m()},[e,m]),!e)return null;let v=async(e,t)=>{u(!0),h(null),f(null);try{let n=await fetch(`/api/git/stash?${new URLSearchParams({cwd:r??""}).toString()}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:e,message:a||void 0,ref:t})}),o=await n.json();n.ok&&o.ok?(f(o.output??i("tasks.stashDone")),d(""),m()):h(o.error??`HTTP ${n.status}`)}catch(e){h(e instanceof Error?e.message:String(e))}finally{u(!1)}};return(0,n.jsx)("div",{style:{position:"fixed",inset:0,zIndex:950,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.45)"},children:(0,n.jsxs)("div",{style:{width:"min(520px, calc(100vw - 48px))",maxHeight:"min(75vh, 560px)",overflow:"auto",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:14,boxShadow:"0 16px 48px rgba(0,0,0,0.3)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"14px 16px 0"},children:[(0,n.jsx)("h3",{style:{fontSize:15,fontWeight:600,margin:0},children:i("desktop.stashTitle")}),(0,n.jsx)("button",{type:"button",onClick:()=>t(!1),"aria-label":i("i18n.close"),style:{background:"none",border:"none",cursor:"pointer",color:"var(--text-muted)",padding:4,display:"flex"},children:(0,n.jsx)(g.X,{size:16,"aria-hidden":"true"})})]}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:12,padding:"14px 16px 16px"},children:[(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[(0,n.jsx)("input",{value:a,onChange:e=>d(e.target.value),placeholder:i("desktop.stashMessagePlaceholder"),style:{width:"100%",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,padding:"7px 10px",color:"var(--text)",fontSize:13,outline:"none",fontFamily:"inherit"}}),(0,n.jsxs)("button",{type:"button",onClick:()=>void v("push"),disabled:c,style:{alignSelf:"flex-start",display:"inline-flex",alignItems:"center",gap:5,padding:"7px 14px",borderRadius:8,background:"var(--accent)",color:"var(--accent-fg)",border:"none",fontSize:12,fontWeight:600,cursor:c?"not-allowed":"pointer"},children:[(0,n.jsx)(cM.c,{size:13,"aria-hidden":"true"}),i("desktop.stashPush")]})]}),p&&(0,n.jsx)("div",{style:{padding:"8px 10px",borderRadius:8,background:"rgba(239,68,68,0.10)",color:"var(--status-error)",fontSize:12,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:p}),x&&(0,n.jsx)("div",{style:{padding:"8px 10px",borderRadius:8,background:"rgba(34,197,94,0.10)",color:"var(--status-success)",fontSize:12,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:x}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column"},children:[(0,n.jsxs)("div",{style:{fontSize:12,fontWeight:600,color:"var(--text)",marginBottom:6},children:[i("desktop.stashList")," (",s.length,")"]}),0===s.length?(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text-muted)"},children:i("desktop.stashEmpty")}):(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:4},children:s.map(e=>(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"7px 10px",borderRadius:8,border:"1px solid var(--border)",background:"var(--bg)"},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",fontSize:11,color:"var(--text-muted)",flexShrink:0},children:e.index}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,fontSize:12,color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.message||e.ref}),(0,n.jsxs)("button",{type:"button",onClick:()=>void v("pop",e.ref),disabled:c,title:i("desktop.stashPop"),style:{display:"inline-flex",alignItems:"center",gap:3,padding:"4px 8px",borderRadius:6,border:"1px solid var(--border)",background:"none",color:"var(--text)",fontSize:11,cursor:c?"not-allowed":"pointer"},children:[(0,n.jsx)(z.S,{size:11,"aria-hidden":"true"}),i("desktop.stashPop")]}),(0,n.jsx)("button",{type:"button",onClick:()=>void v("drop",e.ref),disabled:c,title:i("desktop.stashDrop"),style:{display:"inline-flex",alignItems:"center",padding:"4px 8px",borderRadius:6,border:"1px solid var(--border)",background:"none",color:"var(--status-error)",fontSize:11,cursor:c?"not-allowed":"pointer"},children:i("desktop.stashDrop")})]},e.ref))})]})]})]})})}function c$({cwd:e}){let{t}=(0,Y.s)(),[r,i]=(0,o.useState)(!1),[s,l]=(0,o.useState)("idle"),[a,d]=(0,o.useState)(null),[c,u]=(0,o.useState)(!1),p=(0,o.useCallback)(async()=>{if(e&&!r){i(!0),l("idle");try{let r=await fetch(`/api/git/push?${new URLSearchParams({cwd:e}).toString()}`,{method:"POST",cache:"no-store"}),n=await r.json();r.ok&&n.ok?(l("ok"),d(n.output||t("desktop.pushOk"))):(l("error"),d(n.error??t("desktop.pushFailed")))}catch(e){l("error"),d(e instanceof Error?e.message:t("desktop.pushFailed"))}finally{i(!1),setTimeout(()=>{l("idle"),d(null)},4e3)}}},[e,r,t]);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",className:"session-info-bar-button",onClick:()=>void p(),disabled:!e||r,title:t("desktop.push"),"aria-label":t("desktop.push"),style:{position:"relative"},children:"ok"===s?(0,n.jsx)(ei.r,{size:13,color:"var(--status-success)",weight:"fill","aria-hidden":"true"}):"error"===s?(0,n.jsx)(nC.J,{size:13,color:"var(--status-error)",weight:"fill","aria-hidden":"true"}):(0,n.jsx)(cM.c,{size:13,"aria-hidden":"true"})}),(0,n.jsx)("button",{type:"button",className:"session-info-bar-button",onClick:()=>u(!0),disabled:!e,title:t("desktop.stash"),"aria-label":t("desktop.stash"),children:(0,n.jsx)(I.T,{size:13,"aria-hidden":"true"})}),a&&(0,n.jsx)("div",{style:{position:"fixed",bottom:60,left:"50%",transform:"translateX(-50%)",zIndex:1200,maxWidth:"60vw",padding:"8px 14px",borderRadius:8,background:"var(--bg-panel)",border:`1px solid ${"ok"===s?"var(--status-success)":"var(--status-error)"}`,boxShadow:"0 8px 24px rgba(0,0,0,0.2)",fontSize:12,color:"ok"===s?"var(--status-success)":"var(--status-error)",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:a}),(0,n.jsx)(cE,{open:c,onOpenChange:u,cwd:e})]})}function cW({onViewFullHistory:e,cwd:t,systemPrompt:r,sessionStats:i,contextUsage:s,hasSession:l,showChat:a,soundEnabled:d,onSoundToggle:c,onCompact:u,onAbortCompaction:p,isCompacting:h,compactError:g,branchTree:x,branchActiveLeafId:m,onBranchLeafChange:v,showSoundLabel:y,lastTurnUsage:b}){let{t:j}=(0,Y.s)(),w=tp(),[S,C]=(0,o.useState)(null),z=(0,o.useCallback)(()=>C(null),[]),T=(0,o.useRef)(null),[R,I]=(0,o.useState)(null),M=(0,o.useCallback)(()=>{let e=T.current;if(!e)return;let t=function(e,t,r=8,n=4){let o=Math.max(0,t.width-2*r),i=Math.max(r,Math.min(Math.round(t.height-e+n),t.height-r-120)),s=Math.max(0,Math.round(t.height-i-r));return{left:r,right:r,width:o,bottom:i,maxHeight:s}}(e.getBoundingClientRect().top,{width:window.innerWidth,height:window.innerHeight});I({position:"fixed",left:t.left,right:t.right,width:t.width,bottom:t.bottom,minWidth:0,maxWidth:t.width,maxHeight:t.maxHeight,overflowY:"auto"})},[]),E=(0,o.useRef)(null),$=(0,o.useCallback)((e,t)=>{if(E.current===e){E.current=null,C(null),I(null),T.current=null;return}E.current=e,T.current=t.closest(".session-info-bar-popover-host"),C(e),w?M():I(null)},[w,M]);(0,o.useEffect)(()=>{if(S&&R)return window.addEventListener("resize",M),()=>window.removeEventListener("resize",M)},[S,R,M]);let[W,L]=(0,o.useState)(null),N=(0,o.useRef)(null),A=(0,o.useCallback)((e,t)=>{nA(t).then(()=>{N.current&&clearTimeout(N.current),L(e),N.current=setTimeout(()=>L(null),1400)})},[]),P=(0,o.useMemo)(()=>{if(!r)return 0;let e=0;for(let t of r){let r=t.codePointAt(0)??0;r>=19968&&r<=40959||r>=13312&&r<=19903||r>=131072&&r<=173791||r>=12352&&r<=12447||r>=12448&&r<=12543||r>=44032&&r<=55215?e+=1:e+=.25}return Math.max(1,Math.round(e))},[r]);if(!a)return null;let F=i?.tokens,D=i?.cost??0,H=i?.costCNY??0,O=i?.costUSD??0,B=[];H>0&&B.push(ao(H)),O>0&&B.push(O>=.01?`$${O.toFixed(2)}`:"<$0.01"),0===B.length&&D>0&&B.push(D>=.01?`$${D.toFixed(2)}`:"<$0.01");let U=B.length>0?B.join(" + "):null,_="var(--text-muted)";if(s?.contextWindow){let e=s.percent;null!==e&&e>90?_="var(--status-error)":null!==e&&e>70&&(_="rgba(234,179,8,0.95)")}let K=null!==r&&""!==r,V=i&&F&&(F.input>0||F.output>0),J=l&&v,G=[];if(F&&(G.push(`${j("desktop.sessionInfoInput")}: ${F.input.toLocaleString()}`),G.push(`${j("desktop.sessionInfoOutput")}: ${F.output.toLocaleString()}`),F.cacheRead>0&&G.push(`${j("desktop.sessionInfoCacheRead")}: ${F.cacheRead.toLocaleString()}`),F.cacheWrite>0&&G.push(`${j("desktop.sessionInfoCacheWrite")}: ${F.cacheWrite.toLocaleString()}`),H>0&&G.push(`${j("desktop.sessionInfoCostOfficial")}: ${ao(H)}`),O>0&&G.push(`${j("desktop.sessionInfoCost")}: $${O.toFixed(4)}`),H<=0&&O<=0&&D>0&&G.push(`${j("desktop.sessionInfoCost")}: $${D.toFixed(4)}`)),s?.contextWindow&&null!==s.percent){let e=s.percent,t=s.tokens;G.push(`${j("desktop.sessionInfoContext")}: ${null!==e?`${e.toFixed(1)}%`:"?"} ${null!==t?ol(t):"?"}/${ol(s.contextWindow)}`)}let X=G.join(" | ");return(0,n.jsxs)("div",{className:"session-info-bar",children:[t&&(0,n.jsx)(c$,{cwd:t}),c&&(0,n.jsxs)("button",{type:"button",className:"session-info-bar-button",onClick:c,title:d?j("desktop.disableCompletionSound"):j("desktop.enableCompletionSound"),"aria-label":d?j("desktop.disableCompletionSound"):j("desktop.enableCompletionSound"),children:[d?(0,n.jsx)(cj.Q,{size:13}):(0,n.jsx)(cw.l,{size:13}),y&&(0,n.jsx)("span",{style:{marginLeft:4},children:d?j("desktop.soundLabelOn"):j("desktop.soundLabelOff")})]}),l&&(0,n.jsx)("button",{type:"button",className:"session-info-bar-button",onClick:e,title:j("desktop.viewFullHistory"),"aria-label":j("desktop.viewFullHistory"),children:(0,n.jsx)(cS.n,{size:13,"aria-hidden":"true"})}),J&&(0,n.jsxs)("div",{className:"session-info-bar-popover-host",children:[(0,n.jsx)("button",{type:"button",className:`session-info-bar-button${"branches"===S?" is-active":""}`,onClick:e=>$("branches",e.currentTarget),title:j("desktop.branches"),"aria-label":j("desktop.branches"),"aria-pressed":"branches"===S,children:(0,n.jsx)(k.Z,{size:13,"aria-hidden":"true"})}),"branches"===S&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"session-info-bar-popover-cover",onClick:z}),(0,n.jsxs)("div",{className:"session-info-bar-popover is-branches",style:R??void 0,children:[(0,n.jsxs)("div",{className:"session-info-bar-popover-header",children:[(0,n.jsx)("span",{className:"session-info-bar-popover-title",children:j("desktop.branches")}),(0,n.jsx)("button",{type:"button",className:"session-info-bar-popover-close",onClick:z,title:j("i18n.close"),"aria-label":j("i18n.close"),children:"✕"})]}),(0,n.jsx)("div",{className:"session-info-bar-popover-body",children:(0,n.jsx)(cI,{tree:x??[],activeLeafId:m??null,onLeafChange:e=>{v(e),z()},hasSession:!0,embedded:!0})})]})]})]}),K&&(0,n.jsxs)("div",{className:"session-info-bar-popover-host",children:[(0,n.jsx)("button",{type:"button",className:`session-info-bar-button${"system"===S?" is-active":""}`,onClick:e=>$("system",e.currentTarget),title:j("desktop.systemPrompt"),"aria-label":j("desktop.systemPrompt"),"aria-pressed":"system"===S,children:(0,n.jsx)(dK.i,{size:13,"aria-hidden":"true"})}),"system"===S&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"session-info-bar-popover-cover",onClick:z}),(0,n.jsxs)("div",{className:"session-info-bar-popover is-system",style:R??void 0,children:[(0,n.jsxs)("div",{className:"session-info-bar-popover-header",children:[(0,n.jsx)("span",{className:"session-info-bar-popover-title",children:j("desktop.systemPrompt")}),(0,n.jsxs)("span",{style:{fontSize:10,color:"var(--text-dim)",marginLeft:8},children:["~",ol(P)," tokens"]}),(0,n.jsx)("div",{style:{flex:1}}),(0,n.jsx)("button",{type:"button",className:"session-info-bar-popover-close",onClick:z,title:j("i18n.close"),"aria-label":j("i18n.close"),children:"✕"})]}),(0,n.jsx)("div",{className:"session-info-bar-system-body",children:r?(0,n.jsx)(sP.oz,{remarkPlugins:[lh.A],children:r}):(0,n.jsx)("span",{className:"session-info-bar-popover-empty",children:"System prompt is empty (tools are disabled)"})})]})]})]}),(0,n.jsx)("div",{className:"session-info-bar-spacer"}),u&&(0,n.jsxs)("div",{className:"session-info-bar-compact-wrap",children:[g&&(0,n.jsx)("div",{className:"session-info-bar-compact-error",children:g}),(0,n.jsx)("button",{type:"button",className:`session-info-bar-button${h?" is-compacting":""}`,onClick:h?p:u,title:h?j("desktop.stopCompaction"):j("desktop.compactContext"),"aria-label":h?j("desktop.stopCompaction"):j("desktop.compactContext"),children:h?(0,n.jsx)(dX.M,{size:13}):(0,n.jsx)(cC.C,{size:13})})]}),V&&(0,n.jsxs)("div",{className:"session-info-bar-popover-host",children:[(0,n.jsxs)("button",{type:"button",className:`session-info-bar-button is-stats${"session"===S?" is-active":""}`,onClick:e=>$("session",e.currentTarget),title:X||j("desktop.sessionInfo"),"aria-label":j("desktop.sessionInfo"),"aria-pressed":"session"===S,children:[F&&F.input>0&&(0,n.jsxs)("span",{className:"session-info-bar-token-chip",children:[(0,n.jsx)(l3.D,{size:10,"aria-hidden":"true"}),ol(F.input)]}),F&&F.output>0&&(0,n.jsxs)("span",{className:"session-info-bar-token-chip",children:[(0,n.jsx)(l5.y,{size:10,"aria-hidden":"true"}),ol(F.output)]}),F&&F.cacheRead>0&&(0,n.jsxs)("span",{className:"session-info-bar-token-chip",children:[(0,n.jsx)(q.W,{size:10,"aria-hidden":"true"}),ol(F.cacheRead)]}),U&&(0,n.jsx)("span",{children:U}),s?.contextWindow&&null!==s.percent&&(0,n.jsx)("span",{className:"session-info-bar-token-chip",style:{color:_},children:(0,n.jsxs)("svg",{className:"session-info-bar-donut",width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"8",cy:"8",r:"6.75",fill:"none",stroke:"var(--border)",strokeWidth:"2.5"}),(0,n.jsx)("circle",{className:"session-info-bar-donut-arc",cx:"8",cy:"8",r:"6.75",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",pathLength:100,strokeDasharray:100,strokeDashoffset:null===s.percent?0:100-Math.min(100,Math.max(0,s.percent)),transform:"rotate(-90 8 8)"})]})})]}),"session"===S&&i&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"session-info-bar-popover-cover",onClick:z}),(0,n.jsx)("div",{className:"session-info-bar-popover is-session",style:R??void 0,children:(0,n.jsx)("div",{className:"session-stats-body",children:(()=>{let e=i.tokens,t=s??i.contextUsage,r=(e,t)=>{let r=W===e;return(0,n.jsx)("button",{type:"button",className:`session-stats-copy${r?" is-copied":""}`,title:r?j("desktop.copied"):"file"===e?j("desktop.copyFilePath"):j("desktop.copySessionId"),onClick:()=>A(e,t),children:r?(0,n.jsx)(f.J,{size:12,"aria-hidden":"true"}):(0,n.jsx)(sA.Q,{size:12,"aria-hidden":"true"})})},o=[];i.sessionName&&o.push((0,n.jsx)("div",{className:"session-stats-info-name",children:i.sessionName},"name")),o.push((0,n.jsxs)("div",{className:"session-stats-info-line",children:[(0,n.jsx)("span",{className:"session-stats-info-text",children:i.sessionFile?i.sessionFile.split(/[/\\]/).pop()??i.sessionFile:j("desktop.sessionInfoInMemory")}),i.sessionFile?r("file",i.sessionFile):null]},"file")),o.push((0,n.jsxs)("div",{className:"session-stats-info-line",children:[(0,n.jsx)("span",{className:"session-stats-info-text",children:i.sessionId}),r("id",i.sessionId)]},"id"));let l=[[j("desktop.sessionInfoUser"),i.userMessages.toLocaleString()],[j("desktop.sessionInfoAssistant"),i.assistantMessages.toLocaleString()],[j("desktop.sessionInfoToolCalls"),i.toolCalls.toLocaleString()],[j("desktop.sessionInfoToolResults"),i.toolResults.toLocaleString()],[j("desktop.sessionInfoTotal"),i.totalMessages.toLocaleString()]],a=[[j("desktop.sessionInfoInput"),e.input.toLocaleString()],[j("desktop.sessionInfoOutput"),e.output.toLocaleString()]];e.cacheRead>0&&a.push([j("desktop.sessionInfoCacheRead"),e.cacheRead.toLocaleString()]),e.cacheWrite>0&&a.push([j("desktop.sessionInfoCacheWrite"),e.cacheWrite.toLocaleString()]),a.push([j("desktop.sessionInfoTotal"),e.total.toLocaleString()]);let d=i.costCNY??0,c=i.costUSD??0;if(d>0&&a.push([j("desktop.sessionInfoCostOfficial"),ao(d)]),c>0&&a.push([j("desktop.sessionInfoCost"),`$${c.toFixed(4)}`]),d<=0&&c<=0&&i.cost>0&&a.push([j("desktop.sessionInfoCost"),`$${i.cost.toFixed(4)}`]),t?.contextWindow&&null!==t.percent){let e=t.percent,r=t.tokens;a.push([j("desktop.sessionInfoContext"),`${null!==e?`${e.toFixed(1)}%`:"?"} ${null!==r?ol(r):"?"}/${ol(t.contextWindow)}`])}(i.totalActiveMs??0)>0&&a.push([j("desktop.sessionInfoActiveTime"),function(e){if(e<=0)return"0s";let t=Math.floor(e/1e3),r=Math.floor(t/3600),n=Math.floor(t%3600/60),o=t%60;return r>0?`${r}h ${n}m`:n>0?`${n}m ${o}s`:`${o}s`}(i.totalActiveMs)]);let u=b?b.costCNY>0?ao(b.costCNY):b.costUSD>0?`$${b.costUSD.toFixed(4)}`:null:null,p=(e,t)=>(0,n.jsxs)("div",{className:"session-stats-row",children:[(0,n.jsx)("div",{className:"session-stats-label",children:e}),(0,n.jsx)("div",{className:"session-stats-value",children:t})]},e);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"session-stats-info-block",children:o}),(0,n.jsxs)("div",{className:"session-stats-side-by-side",children:[(0,n.jsxs)("div",{className:"session-stats-column",children:[(0,n.jsx)("div",{className:"session-stats-section-title",children:j("desktop.sessionInfoMessages")}),(0,n.jsx)("div",{className:"session-stats-compact-grid",children:l.map(([e,t])=>p(e,t))})]}),(0,n.jsxs)("div",{className:"session-stats-column",children:[(0,n.jsx)("div",{className:"session-stats-section-title",children:j("desktop.sessionInfoTokens")}),(0,n.jsx)("div",{className:"session-stats-compact-grid",children:a.map(([e,t])=>p(e,t))})]}),b&&(0,n.jsxs)("div",{className:"session-stats-column",children:[(0,n.jsx)("div",{className:"session-stats-section-title",children:j("desktop.turnUsageTitle")}),(0,n.jsxs)("div",{className:"session-stats-compact-grid",children:[p(j("desktop.sessionInfoInput"),b.input.toLocaleString()),p(j("desktop.sessionInfoOutput"),b.output.toLocaleString()),b.cacheRead>0&&p(j("desktop.sessionInfoCacheRead"),b.cacheRead.toLocaleString()),u&&p(j("desktop.sessionInfoCost"),u)]})]})]})]})})()})})]})]})]})}var cL=r(68635);function cN(e){return Math.ceil(e.getBoundingClientRect().height)}function cA({scrollElementRef:e,items:t,itemKeys:r,estimateSize:i=120,overscan:s=8,virtualizerRef:l,headerHeight:a=0}){let d=(0,o.useRef)(null),c=(0,o.useRef)(r),[u,p]=(0,o.useState)(null);(0,o.useEffect)(()=>{p(e.current)},[e]);let h=(0,cL.Te)({count:t.length,getScrollElement:()=>u??e.current,estimateSize:(0,o.useCallback)(()=>i,[i]),overscan:s,getItemKey:(0,o.useCallback)(e=>r[e]??`idx-${e}`,[r]),scrollMargin:a,measureElement:(e,t,r)=>{let n=r.indexFromElement(e),o=e.getAttribute("data-item-key"),s=r.options.getItemKey(n),l=d.current;return l&&e.isConnected&&e.parentElement===l&&o===s&&o===c.current[n]&&l.getClientRects().length?cN(e):r.itemSizeCache.get(s)??i}});h.shouldAdjustScrollPositionOnItemSizeChange=()=>!1,l&&(l.current=h);let g=(0,o.useCallback)(()=>{let e=d.current;if(e)for(let{index:t,size:r}of function(e,t){if(!e.isConnected||0===e.getClientRects().length)return[];let r=[];for(let n of Array.from(e.children)){let e=Number(n.getAttribute("data-index"));n.isConnected&&Number.isInteger(e)&&!(e<0)&&!(e>=t.length)&&n.getAttribute("data-item-key")===t[e]&&r.push({index:e,size:cN(n)})}return r}(e,c.current))h.options.getItemKey(t)===c.current[t]&&h.resizeItem(t,r)},[h]);(0,o.useLayoutEffect)(()=>{c.current=r,g()},[r,t,g]),(0,o.useEffect)(()=>{let e=d.current;if(!e)return;let t=new MutationObserver(t=>{t.some(t=>"attributes"!==t.type||t.target!==e&&t.target.parentNode!==e)&&g()});t.observe(e,{childList:!0,characterData:!0,subtree:!0,attributes:!0,attributeFilter:["class","style","hidden","open","src","width","height"]});let r=()=>{"visible"===document.visibilityState&&g()};return document.addEventListener("visibilitychange",r),e.addEventListener("load",g,!0),()=>{t.disconnect(),document.removeEventListener("visibilitychange",r),e.removeEventListener("load",g,!0)}},[g]);let x=(0,o.useRef)(!1),f=(0,o.useRef)(h);f.current=h,(0,o.useEffect)(()=>{x.current||0===t.length||u&&(x.current=!0,f.current.scrollToIndex(t.length-1,{align:"end"}))},[t.length,u]);let m=h.getVirtualItems();return(0,n.jsx)("div",{ref:d,className:"virtualized-message-list",style:{position:"relative",width:"100%",minWidth:0,height:h.getTotalSize()},children:m.map(e=>(0,n.jsx)("div",{"data-index":e.index,"data-item-key":e.key,ref:h.measureElement,style:{position:"absolute",top:0,left:0,width:"100%",minWidth:0,overflow:"hidden",transform:`translateY(${e.start-a}px)`},children:t[e.index]},e.key))})}function cP(e){return e.replace(/<\/?[\w:-]+\b[^>]*>/g," ").replace(/&lt;\/?[\w:-]+\b[^&]*?&gt;/gi," ").replace(/\s+/g," ").trim()}function cF(e){return"user"===e.role||"assistant"===e.role&&(e.content??[]).some(e=>"text"===e.type||"thinking"===e.type||"toolCall"===e.type)}function cD({messages:e,streamingMessage:t,scrollContainer:r,messageRefs:i,onWidthChange:s,virtualizer:l}){var a;let[d,c]=(0,o.useState)(0),[u,p]=(0,o.useState)(1),[h,g]=(0,o.useState)(!1),[x,f]=(0,o.useState)([]),[m,v]=(0,o.useState)(!1),[y,b]=(0,o.useState)(null),[k,j]=(0,o.useState)(0),w=(0,o.useRef)(!1),S=(0,o.useRef)(null),C=(0,o.useMemo)(()=>t?[...e,t]:e,[e,t]),z=(0,o.useRef)(C);z.current=C;let T=(0,o.useCallback)(()=>{let e=r.current;if(!e)return;let t=e.scrollHeight,n=e.clientHeight,o=t-n;g(o>20),o<=0?(c(0),p(1)):(c(e.scrollTop/o),p(n/t))},[r]),R=(0,o.useRef)(null),I=(0,o.useRef)([]),M=(0,o.useRef)(l);M.current=l;let E=(0,o.useCallback)(()=>{R.current||(R.current=setTimeout(()=>{R.current=null;let e=r.current;if(!e)return;let t=e.scrollHeight;if(t<=0)return;let n=[],o=z.current,s=M.current;if(s){if(0>=s.totalHeight())return;let e=0,r=new Set;for(let i=0;i<o.length;i++){let l=o[i];if("user"!==l.role&&"assistant"!==l.role)continue;let a=s.refToItemIndex(e);if(e+=1,void 0===a||r.has(a)||!cF(l))continue;r.add(a);let d=s.getOffsetForIndex(a),c=s.sizeFor(a);n.push({topRatio:d/t,heightRatio:Math.max(c/t,1/t),msg:l,index:n.length})}}else{let r=i.current,s=0;for(let i=0;i<o.length;i++){let l=o[i];if("user"!==l.role&&"assistant"!==l.role)continue;let a=r?.[s];if(s++,cF(l)&&a){let r=a.getBoundingClientRect(),o=e.getBoundingClientRect(),i=r.top-o.top+e.scrollTop,s=r.height;n.push({topRatio:i/t,heightRatio:s/t,msg:l,index:n.length})}}}let l=I.current;l.length===n.length&&n.every((e,t)=>1e-6>Math.abs(e.topRatio-l[t].topRatio)&&1e-6>Math.abs(e.heightRatio-l[t].heightRatio))||(I.current=n,f(n))},150))},[r,i]);(0,o.useEffect)(()=>{let e=r.current;if(e)return e.addEventListener("scroll",T,{passive:!0}),()=>e.removeEventListener("scroll",T)},[r,T]),(0,o.useEffect)(()=>{let e=r.current;if(!e)return;let t=()=>{T(),E()},n=new ResizeObserver(t);return n.observe(e),e.firstElementChild&&n.observe(e.firstElementChild),t(),()=>{n.disconnect(),R.current&&(clearTimeout(R.current),R.current=null)}},[r,E,T]),(0,o.useEffect)(()=>{let e=setTimeout(()=>{T(),E()},50);return()=>clearTimeout(e)},[e.length,E,T]);let $=(0,o.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-u,e))/(1-u)*n)},[r,u]),W=(0,o.useCallback)(e=>{if(!h)return;w.current=!0;let t=e.currentTarget.getBoundingClientRect(),r=(e.clientY-t.top)/t.height,n=r-d*(1-u),o=n>=0&&n<=u?n:u/2;$(r-o);let i=e=>{w.current&&$((e.clientY-t.top)/t.height-o)},s=()=>{w.current=!1,window.removeEventListener("mousemove",i),window.removeEventListener("mouseup",s)};window.addEventListener("mousemove",i),window.addEventListener("mouseup",s)},[h,u,d,$]);(0,o.useEffect)(()=>{if(!h)return void j(0);let e=S.current;if(!e)return;let t=()=>j(e.clientHeight),r=new ResizeObserver(t);return r.observe(e),t(),()=>r.disconnect()},[h]);let L=(0,o.useMemo)(()=>{if(k<=0)return[];let e=[];return x.map(t=>{let r=t.topRatio*k,n=Math.max(3,Math.min(46,t.heightRatio*k)),o=Math.max(0,r-n/2),i=Math.min(k,r+n/2),s=e.findIndex(e=>o>=e+1);return -1===s?(s=e.length,e.push(i)):e[s]=i,{...t,displayTopPx:r,lane:s}})},[x,k]),N=Math.max(18,4+5*(a=(0,o.useMemo)(()=>L.reduce((e,t)=>Math.max(e,t.lane+1),1),[L]))+(a-1)*1);if((0,o.useEffect)(()=>{s?.(h?N:18)},[N,s,h]),(0,o.useEffect)(()=>()=>s?.(18),[s]),!h)return null;let A=d*(1-u)*100,P=100*u,F=null!==y&&L.length>0?L.reduce((e,t)=>Math.abs(t.displayTopPx/k-y)<Math.abs(L[e].displayTopPx/k-y)?t.index:e,0):null,D=null===F?null:L.find(e=>e.index===F)??null;return(0,n.jsxs)("div",{ref:S,onMouseDown:W,onMouseEnter:()=>v(!0),onMouseLeave:()=>{v(!1),b(null)},onMouseMove:e=>{let t=e.currentTarget.getBoundingClientRect();b((e.clientY-t.top)/t.height)},style:{width:N,flexShrink:0,position:"relative",cursor:"pointer",userSelect:"none",background:"transparent",overflow:"visible"},children:[(0,n.jsx)("div",{style:{position:"absolute",left:1,right:1,top:`${A}%`,height:`${P}%`,background:"color-mix(in srgb, var(--text-muted) 14%, transparent)",pointerEvents:"none",zIndex:1}}),L.map(e=>{let t=function(e){if("user"===e.role)return"var(--accent)";let t=e.content??[];return t.some(e=>"toolCall"===e.type&&e.error)?"var(--accent-red)":t.some(e=>"toolCall"===e.type)?"var(--accent-green)":"var(--text-dim)"}(e.msg),r=m&&D?.index===e.index,o="user"===e.msg.role,i=Math.max(3,Math.min(46,e.heightRatio*k)),s=2+6*e.lane;return(0,n.jsx)("div",{style:{position:"absolute",top:e.displayTopPx,transform:"translateY(-50%)",left:s,width:5,height:i,display:"flex",alignItems:"stretch",cursor:"pointer",zIndex:function(e){if("user"===e.role)return 6;let t=e.content??[];return t.some(e=>"toolCall"===e.type&&e.error)?5:t.some(e=>"text"===e.type&&!!e.text?.trim())?4:t.some(e=>"toolCall"===e.type)?3:2}(e.msg)},children:(0,n.jsx)("div",{style:{width:"100%",height:"100%",borderRadius:1,background:t,opacity:r?1:o?.92:.72,transition:"opacity 0.1s, filter 0.1s",filter:r?"brightness(1.2)":"none"}})},e.index)}),m&&D&&(()=>{let e=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 cP(r).slice(0,200);let n=t.filter(e=>"thinking"===e.type).map(e=>cP(e.thinking??"")).filter(Boolean).join(" ");if(n)return n.slice(0,200);let o=t.filter(e=>"toolCall"===e.type).map(e=>e.toolName);if(o.length)return o.join(", ")}return""}(D.msg);if(!e)return null;let t=function(e){if("user"===e.role)return"var(--minimap-preview-user-bg)";let t=e.content??[];return t.some(e=>"toolCall"===e.type&&e.error)?"var(--minimap-preview-error-bg)":t.some(e=>"toolCall"===e.type)?"var(--minimap-preview-tool-bg)":"var(--minimap-preview-default-bg)"}(D.msg),r=Math.max(1,Math.min(5,Math.floor(k/120))),o=15*r+4,i=Math.max(o/2,Math.min(k-o/2,D.displayTopPx));return(0,n.jsx)("div",{style:{position:"absolute",top:i,transform:"translateY(-50%)",right:"100%",marginRight:6,background:t,border:"none",borderRadius:4,padding:"2px 7px",width:220,zIndex:100,pointerEvents:"none"},children:(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text)",lineHeight:"15px",display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:r,overflow:"hidden",overflowWrap:"anywhere"},children:e})})})()]})}function cH(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function cO(e){return function(e,t={}){if("assistant"!==e.role)return e;let r=e.content;if(!Array.isArray(r))return e;let n=r.map(e=>(function(e,t={}){if(!cH(e)||"toolCall"!==e.type)return null;let r={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},n=t.includeStreamingRawInput?function(e){if("string"==typeof e.rawInput)return e.rawInput;if("string"==typeof e.partialJson)return e.partialJson;if("string"==typeof e.partialArgs)return e.partialArgs;let t=cH(e.customInput)?e.customInput:null,r=t&&"string"==typeof t.property?t.property:null,n=cH(e.arguments)?e.arguments:null;return r&&n&&"string"==typeof n[r]?n[r]:void 0}(e):void 0;return void 0===n?r:{...r,rawInput:n}})(e,t)??e);return{...e,content:n}}(e)}var cB=r(14755);function cU(e){if(!e)return 0;let t=0;for(let r of e){let e=r.codePointAt(0)??0;e>=19968&&e<=40959||e>=13312&&e<=19903||e>=131072&&e<=173791||e>=12352&&e<=12447||e>=12448&&e<=12543||e>=44032&&e<=55215?t+=1:t+=.25}return Math.max(0,Math.round(t))}function c_(){return"u">typeof performance?performance.now():Date.now()}function cq(){return globalThis.__piSessionViewCache||(globalThis.__piSessionViewCache=new Map),globalThis.__piSessionViewCache}function cK(e){var t;return("message_start"===e.type||"message_end"===e.type)&&"object"==typeof(t=e.message)&&null!==t&&!Array.isArray(t)&&"system"===e.message.role}function cV(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function cJ(e,t,r,n=8){return e+t>=r-n}function cY(e,t){switch(t.type){case"start":return{isStreaming:!0,streamingMessage:null};case"resume":return{...e,isStreaming:!0};case"update":return{isStreaming:!0,streamingMessage:t.message};case"end":case"reset":return{isStreaming:!1,streamingMessage:null};default:return e}}function cG(e){return e?"running_command"===e.phase||e.isBashRunning?{kind:"running_command"}:"waiting_model"===e.phase||e.isStreaming||e.isPromptRunning||e.isCompacting?{kind:"waiting_model"}:null:null}function cX(e,t){return e.length===t.length&&e.every((e,r)=>e===t[r])}function cZ(e){return{steering:e?.steering??[],followUp:e?.followUp??[]}}function cQ(e){return e&&"auto"!==e?e:null}let c0=["You are in PLAN MODE.","<economy-profile>","<delivery-profile>","<goal-profile>"],c1=new Set(["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"," ","Space","Spacebar"]);class c2 extends Error{constructor(e){super("timeout"===e?"Timed out connecting to the agent event stream. Please try again.":"Failed to connect to the agent event stream. Please try again."),this.status=e,this.name="EventStreamConnectionError"}}function c6(e){return new Promise(t=>setTimeout(t,e))}function c4(e){let t=e.findIndex(e=>!e.exiting);return -1===t?e:e.map((e,r)=>r===t?{...e,exiting:!0}:e)}function c5(e,t){switch(t.type){case"add":if(e.visible.some(e=>e.exiting)||e.visible.length>=5)return{visible:e.visible.some(e=>e.exiting)?e.visible:c4(e.visible),pending:[...e.pending,t.notice]};return{...e,visible:[...e.visible,t.notice]};case"mark_oldest_exiting":return{...e,visible:c4(e.visible)};case"remove":return function(e,t){let r=e,n=t;for(;n.length>0&&r.length<5;){let[e,...t]=n;r=[...r,e],n=t}return n.length>0&&!r.some(e=>e.exiting)&&(r=c4(r)),{visible:r,pending:n}}(e.visible.filter(e=>e.id!==t.id),e.pending);default:return e}}function c3(e){if(!e||"object"!=typeof e||"image"!==e.type)return"";let t=e.source;return t&&"object"==typeof t?["url"===t.type?"url":"base64","string"==typeof t.media_type?t.media_type:"","string"==typeof t.data?t.data:"","string"==typeof t.url?t.url:""].join(":"):["base64","string"==typeof e.mimeType?e.mimeType:"","string"==typeof e.data?e.data:"",""].join(":")}function c8(e){let t,r=e.content;return"string"==typeof r?JSON.stringify({text:r,images:[]}):Array.isArray(r)?JSON.stringify({text:"string"==typeof(t=e.content)?t:Array.isArray(t)?t.map(e=>e&&"object"==typeof e&&"text"===e.type&&"string"==typeof e.text?e.text:"").filter(Boolean).join("\n"):"",images:r.map(c3).filter(Boolean)}):JSON.stringify({text:"",images:[]})}function c7(e,t){return e&&"object"==typeof e?"number"!=typeof e.tokensBefore||"number"!=typeof e.estimatedTokensAfter?null:{reason:t,tokensBefore:e.tokensBefore,estimatedTokensAfter:e.estimatedTokensAfter}:null}let c9="pi-web:modes-global-default",ue="pi:open-tasks-view";function ut({session:e,newSessionCwd:t,onAgentEnd:i,onSessionCreated:s,onSessionForked:l,modelsRefreshKey:d,chatInputRef:c,onBranchDataChange:u,onSystemPromptChange:p,onSessionStatsChange:h,onSessionStatsPanelOpen:g,onContextUsageChange:x,onOpenFile:f,onWorkspaceControlsHostChange:m,onViewFullHistory:v,systemPrompt:y,tasksBoardEnabled:b,onOpenSession:k,onOpenSubagent:j,subagentRuns:w}){var S;let C,{soundEnabled:z,onSoundToggle:T,playDoneSound:R,unlockAudio:I}=function(){let[e,t]=(0,o.useState)(()=>{let e=localStorage.getItem("pi-sound-enabled");return null===e||"true"===e}),r=(0,o.useRef)(e);(0,o.useEffect)(()=>{r.current=e},[e]);let n=(0,o.useRef)(null),i=(0,o.useCallback)(()=>{if(n.current&&"closed"!==n.current.state)return n.current;try{n.current=new AudioContext}catch{return null}return n.current},[]),s=(0,o.useCallback)((e=!1)=>{if(!e&&!r.current)return;let t=i();t&&"suspended"===t.state&&t.resume().catch(()=>{})},[i]);return{soundEnabled:e,onSoundToggle:(0,o.useCallback)(()=>{let e=!r.current;e&&s(!0),r.current=e,localStorage.setItem("pi-sound-enabled",String(e)),t(e)},[s]),playDoneSound:(0,o.useCallback)(()=>{if(!r.current)return;let e=i();if(!e)return;let t=()=>{try{let t;t=e.currentTime,[523.25,659.25].forEach((r,n)=>{let o=e.createOscillator(),i=e.createGain();o.connect(i),i.connect(e.destination),o.type="sine",o.frequency.value=r;let s=t+.18*n;i.gain.setValueAtTime(0,s),i.gain.linearRampToValueAtTime(.18,s+.02),i.gain.exponentialRampToValueAtTime(.001,s+.45),o.start(s),o.stop(s+.45)})}catch{}};"suspended"===e.state?e.resume().then(t).catch(()=>{}):t()},[i]),unlockAudio:s,soundEnabledRef:r}}(),M=tp(),{t:E}=(0,Y.s)(),$=(0,o.useRef)(R);$.current=R;let W=(0,o.useRef)(z);W.current=z;let L=(0,o.useRef)(null),N=(0,o.useCallback)(()=>{W.current&&$.current(),i?.()},[i]),A=(0,o.useCallback)(e=>{let t=e;if("string"==typeof e.content){let r=te(e.content);r&&(t={...e,content:r})}c?.current?.replaceMessage(t)},[c]),P=(0,o.useCallback)(e=>{c?.current?.prependText(e)},[c]),F=(0,o.useCallback)((e,t)=>{aU={text:e,projectRoot:t??null},window.dispatchEvent(new CustomEvent(aB)),window.dispatchEvent(new Event(ue))},[]),{loading:D,error:H,messages:O,activeToolResults:B,entryIds:U,streamState:_,agentRunning:q,bashRunning:K,pendingBash:V,modelNames:J,modelList:G,modelThinkingLevels:X,modelThinkingLevelMaps:Z,modelScopeWarnings:Q,modelsError:ee,reloadModels:et,toolPreset:er,thinkingLevel:en,isAutoThinkingSelection:eo,retryInfo:ei,contextUsage:es,forkingEntryId:el,isCompacting:ea,compactError:ed,compactResult:ec,displayModel:eu,sessionStats:ep,tokenRate:eh,slashCommands:eg,slashCommandsLoading:ex,queuedMessages:ef,pendingRecovery:em,recoveryIsImport:ev,notices:ey,extensionDialog:eb,extensionCustomUi:ek,extensionStatuses:ej,extensionWidgets:ew,respondToExtensionUi:eS,sendExtensionCustomInput:eC,agentPhase:ez,isNew:eT,branchTree:eR,activeLeafId:eI,handleLeafChange:eM,sessionIdRef:eE,messagesEndRef:e$,scrollContainerRef:eW,lastUserMsgRef:eL,pendingScrollToUserRef:eN,initialScrollDoneRef:eA,scrollUserMsgToTop:eP,handleSend:eF,executeBash:eD,handleAbort:eH,handleFork:eO,handleNavigate:eB,handleModelChange:eU,handleCompact:e_,handleSteer:eq,handleFollowUp:eK,handlePromptWithStreamingBehavior:eV,handleAbortCompaction:eJ,handleRecallQueue:eY,resolveRecovery:eG,exportQueueData:eX,stageQueueImport:eZ,moveQueuedMessage:tt,recallQueuedMessage:tr,requeueAt:tn,removeQueuedMessage:to,handleBuiltinSlashCommand:ti,handleToolPresetChange:ts,handleThinkingLevelChange:tl,loadSlashCommands:ta,planMode:td,collaborationMode:tc,toolApprovalMode:tu,handleCollaborationModeChange:th,handleToolApprovalModeChange:tg,approvalRequests:tx,resolveApproval:tf,goalState:tm,handleGoalStart:tv,handleGoalPause:ty,handleGoalResume:tb,handleGoalStop:tk,handleGoalEdit:tj,historyCursor:tw,hasEarlierMessages:tS,loadContext:tC}=function(e){let{session:t,newSessionCwd:n,onAgentEnd:i,onSessionCreated:s,onSessionForked:l,modelsRefreshKey:a,onBranchDataChange:d,onSystemPromptChange:c,onSessionStatsPanelOpen:u}=e,p=null===t&&null!==n,h=`${t?.id??"new"}\0${n??t?.cwd??""}`,[g,x]=(0,o.useState)(null),f=(0,o.useRef)(null),m=(0,o.useRef)(0),v=(0,o.useRef)(null),[y,b]=(0,o.useState)(!p),[k,j]=(0,o.useState)(null),[w,S]=(0,o.useState)(null),[C,z]=(0,o.useState)([]),[T,R]=(0,o.useState)(new Map),[I,M]=(0,o.useState)([]),[E,$]=(0,o.useState)(null),[W,L]=(0,o.useState)(!1),[N,A]=(0,o.useReducer)(cY,{isStreaming:!1,streamingMessage:null}),P=(0,o.useRef)(!1);P.current=N.isStreaming;let[F,D]=(0,o.useState)(null),H=(0,o.useRef)({lastChars:0,window:[]}),O=(0,o.useCallback)(()=>{H.current={lastChars:0,window:[]},D(null)},[]),B=(0,o.useCallback)(e=>{if(!e||"assistant"!==e.role)return 0;let t=e.content;if(!Array.isArray(t))return 0;let r=0;for(let e of t)"string"==typeof e?r+=cU(e):e&&"object"==typeof e&&("string"==typeof e.text?r+=cU(e.text):"string"==typeof e.thinking&&(r+=cU(e.thinking)));return r},[]),U=(0,o.useCallback)(e=>{let t=B(e),r=H.current;if(t===r.lastChars)return;let n=Date.now(),o=Math.max(0,t-r.lastChars);r.lastChars=t,r.window.push({at:n,chars:o});let i=n-1e3;for(;r.window.length>0&&r.window[0].at<i;)r.window.shift();let s=r.window.reduce((e,t)=>e+t.chars,0),l=r.window.length>0?n-r.window[0].at:0;l<200||D(Math.max(0,Math.round(s/Math.max(1,l)*1e4)/10))},[B]),[_,q]=(0,o.useState)(!1),[K,V]=(0,o.useState)(!1),[J,Y]=(0,o.useState)(null),[G,X]=(0,o.useState)({}),[Z,Q]=(0,o.useState)([]),[ee,et]=(0,o.useState)({}),[er,en]=(0,o.useState)({}),[eo,ei]=(0,o.useState)([]),[es,el]=(0,o.useState)(null),[ea,ed]=(0,o.useState)(null),[ec,eu]=(0,o.useState)(null),[ep,eh]=(0,o.useState)(cB.Q8),eg=(0,o.useRef)("default"),ex=(0,o.useRef)(!1),[ef,em]=(0,o.useState)(()=>(function(){try{let e=window.localStorage.getItem(c9);if(!e)return null;let t=JSON.parse(e),r=t.permissionRules;return{collaborationMode:e2(t.collaborationMode),tokenMode:e6(t.tokenMode),toolApprovalMode:e4(t.toolApprovalMode),permissionRules:{allow:Array.isArray(r?.allow)?r.allow:[],ask:Array.isArray(r?.ask)?r.ask:[],deny:Array.isArray(r?.deny)?r.deny:[]}}}catch{return null}})()??{collaborationMode:eQ,tokenMode:e0,toolApprovalMode:e1,permissionRules:{allow:[],ask:[],deny:[]}}),ev=(0,o.useRef)(null),ey=(0,o.useRef)(!1),eb=(0,o.useRef)(t?.id??null);eb.current=t?.id??null,(0,o.useEffect)(()=>{let e=!1,t=async()=>{let t=eb.current,r=t?`?session=${encodeURIComponent(t)}`:"";try{let n=await fetch(`/api/modes${r}`);if(!n.ok||e)return;let o=await n.json();if(e)return;let i={collaborationMode:e2(o.collaborationMode),tokenMode:e6(o.tokenMode),toolApprovalMode:e4(o.toolApprovalMode),permissionRules:{allow:Array.isArray(o.permissionRules?.allow)?o.permissionRules.allow:[],ask:Array.isArray(o.permissionRules?.ask)?o.permissionRules.ask:[],deny:Array.isArray(o.permissionRules?.deny)?o.permissionRules.deny:[]}};if(!ey.current&&t&&"plan"===i.collaborationMode){let r=await fetch("/api/modes").catch(()=>null);if(!e&&r?.ok){let n=await r.json().catch(()=>null);if(!e&&n){let e=i.collaborationMode;(i={...i,collaborationMode:e2(n.collaborationMode)}).collaborationMode!==e&&fetch(`/api/modes?session=${encodeURIComponent(t)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)}).catch(()=>{})}}}ey.current=!0,em(i),t||function(e){try{window.localStorage.setItem(c9,JSON.stringify(e))}catch{}}(i)}catch{}};t();let r=()=>void t();return window.addEventListener("pi:modes-changed",r),()=>{e=!0,ey.current=!1,window.removeEventListener("pi:modes-changed",r)}},[t?.id]);let ek=ef.collaborationMode,ej=ef.tokenMode,ew=ef.toolApprovalMode,eS=ef.permissionRules,eC="plan"===ek;(0,o.useEffect)(()=>{ex.current=eC},[eC]);let ez=(0,o.useRef)(ek),eT=(0,o.useRef)(ej),eR=(0,o.useRef)(ew),eI=(0,o.useRef)(ef.permissionRules),eM=(0,o.useRef)(null),eE=(0,o.useRef)({sessionKey:"",signature:""}),e$=(0,o.useRef)(ef);(0,o.useEffect)(()=>{e$.current=ef},[ef]),(0,o.useEffect)(()=>{eR.current=ew},[ew]),(0,o.useEffect)(()=>{eI.current=ef.permissionRules},[ef.permissionRules]),(0,o.useEffect)(()=>{ez.current=ek,eE.current={sessionKey:"",signature:""}},[ek]),(0,o.useEffect)(()=>{eT.current=ej,eE.current={sessionKey:"",signature:""}},[ej]);let[eW,eL]=(0,o.useState)([]),eN=(0,o.useRef)([]);(0,o.useEffect)(()=>{eN.current=eW},[eW]);let[eA,eP]=(0,o.useState)({status:"idle",goalText:null,turnsUsed:0,turnsLimit:10,noProgressTurns:0,noProgressLimit:4,tokensUsed:0,tokenBudget:null,timeUsedSeconds:0}),eF=(0,o.useRef)(eA);(0,o.useEffect)(()=>{eF.current=eA},[eA]);let[eD,eH]=(0,o.useState)(!0),eO=(0,o.useRef)(!1),[eB,eU]=(0,o.useState)("auto"),[e_,eq]=(0,o.useState)(null),[eK,eV]=(0,o.useState)(null),[eJ,eY]=(0,o.useState)(null),[eG,eX]=(0,o.useState)(null),[eZ,tt]=(0,o.useState)(null),[tr,tn]=(0,o.useState)(null),[to,ti]=(0,o.useState)(null),ts=(0,o.useCallback)(e=>{let t=e?.model;t&&"string"==typeof t.provider&&"string"==typeof t.modelId&&ti({provider:t.provider,modelId:t.modelId}),e?.thinkingLevel!==void 0&&eq(cQ(e.thinkingLevel))},[]),[tl,ta]=(0,o.useState)(null),[td,tc]=(0,o.useState)(!1),[tu,tp]=(0,o.useState)(null),[th,tg]=(0,o.useState)(null),[tx,tf]=(0,o.useState)(null),[tm,tv]=(0,o.useState)(!1),[ty,tb]=(0,o.useState)(!1),[tk,tj]=(0,o.useState)([]),[tw,tS]=(0,o.useState)(!1),[tC,tz]=(0,o.useReducer)(c5,{visible:[],pending:[]}),[tT,tI]=(0,o.useState)(null),[tM,t$]=(0,o.useState)(null),[tW,tL]=(0,o.useState)(null),[tN,tA]=(0,o.useState)([]),[tP,tF]=(0,o.useState)([]),[tD,tH]=(0,o.useState)({steering:[],followUp:[]}),tO=(0,o.useCallback)(e=>{tH(t=>{let r="function"==typeof e?e(t):e;return cX(t.steering,r.steering)&&cX(t.followUp,r.followUp)?t:r})},[]),[tB,tU]=(0,o.useState)([]),t_=(0,o.useCallback)(e=>{tU(t=>{let r="function"==typeof e?e(t):e;return t.length===r.length&&t.every((e,t)=>{let n=r[t];return e.id===n.id&&e.kind===n.kind&&e.text===n.text&&e.hasImages===n.hasImages})?t:r})},[]),[tq,tK]=(0,o.useState)(!1),tV=(0,o.useRef)(null),tJ=(0,o.useCallback)(()=>{tV.current&&clearTimeout(tV.current),tV.current=setTimeout(async()=>{tV.current=null;let e=t6.current;if(e)try{let t=await fetch(`/api/agent/${encodeURIComponent(e)}`);if(!t.ok)return;let r=await t.json();r.state?.queuedMessages!==void 0&&tO(cZ(r.state.queuedMessages))}catch{}},8e3)},[tO]),tY=(0,o.useCallback)(()=>{tV.current&&(clearTimeout(tV.current),tV.current=null)},[]),tG=(0,o.useRef)(null),tX=(0,o.useRef)(null),tZ=(0,o.useRef)(null),tQ=(0,o.useRef)(null),t0=(0,o.useRef)(0),t1=(0,o.useRef)(!1),t2=(0,o.useRef)(0),t6=(0,o.useRef)(t?.id??null),t4=(0,o.useRef)(!0),t5=(0,o.useRef)({}),t3=(0,o.useRef)("off"),[t8,t7]=(0,o.useState)(null),t9=(0,o.useRef)(0),re=(0,o.useRef)(t?.id??null);re.current=t?.id??null;let rt=(0,o.useRef)(!1),rr=(0,o.useRef)(!1),rn=(0,o.useRef)(!1),ro=(0,o.useRef)(!1),ri=(0,o.useRef)(-1),rs=(0,o.useRef)(!0),rl=(0,o.useRef)(!1),ra=(0,o.useRef)(!1),rd=(0,o.useRef)(0),rc=(0,o.useRef)(!1),ru=(0,o.useRef)(null),rp=(0,o.useRef)(!1),rh=(0,o.useRef)(null),rg=(0,o.useRef)(!1),rx=(0,o.useRef)(!0),rf=(0,o.useRef)(!0),rm=(0,o.useRef)(0),rv=(0,o.useRef)(0),ry=(0,o.useRef)(null),rb=(0,o.useRef)(null),rk=(0,o.useRef)(null),rj=(0,o.useRef)(!1),rw=(0,o.useRef)(0),rS=(0,o.useRef)(null),rC=(0,o.useRef)(0),rz=(0,o.useRef)(0),rT=(0,o.useRef)(null),rR=(0,o.useRef)(h);rR.current=h;let rI=(0,o.useRef)(null),rM=(0,o.useRef)(null),rE=(0,o.useRef)(null);rE.current||(rE.current=function(e,t={}){let r,n=1e3/Math.max(1,t.maxUpdatesPerSecond??30),o=t.now??c_,i=t.requestFrame??("function"==typeof requestAnimationFrame?requestAnimationFrame:void 0),s=t.cancelFrame??("function"==typeof cancelAnimationFrame?cancelAnimationFrame:void 0),l=t.setTimer??setTimeout,a=t.clearTimer??clearTimeout,d=!1,c=!1,u=null,p=null,h=null,g=()=>{null!==u&&(s?.(u),u=null),null!==p&&(a(p),p=null)},x=(t,n)=>{if(!c||d)return;let o=r;c=!1,r=void 0,h=t;let i=()=>{d||e(o)};n&&"function"==typeof queueMicrotask?queueMicrotask(i):i()},f=()=>{if(!d&&c&&null===u&&null===p){if(!i){let e=null===h?n:o()-h;p=l(()=>{p=null,x(o(),!0),f()},Math.max(0,n-e));return}u=i(e=>{if(u=null,d||!c)return;let t=null===h?n:e-h;if(t<n){p=l(()=>{p=null,f()},n-t);return}x(e,!0),f()})}};return{enqueue(e){d||(r=e,c=!0,f())},flush(){!d&&c&&(g(),x(o(),!1),f())},reset(){g(),c=!1,r=void 0,h=null},destroy(){d||(d=!0,g(),c=!1,r=void 0)}}}(e=>{A({type:"update",message:e})}));let r$=(0,o.useCallback)(()=>{rE.current?.reset()},[]),rW=(0,o.useCallback)(e=>{rE.current?.enqueue(e)},[]),rL=e.setToolPreset??eh,rN=g?.context.model,rA=rN&&rN.provider&&rN.modelId?rN:null,rP=tr??rA??tl??null,rF=p?ea??ec:rP??(g?.context.messages.length===0?ec:null),rD=cQ(g?.context.thinkingLevel&&"off"!==g.context.thinkingLevel?g.context.thinkingLevel:null),rH=rM.current,rO=p?rH??t8:e_??rD??(g?.context.messages.length===0?t8:null),rB=(0,o.useMemo)(()=>{if(tT)return{...tT,totalActiveMs:g?.totalActiveMs};if(t&&g&&void 0===g.stats)return null;let e={input:0,output:0,cacheRead:0,cacheWrite:0,total:0},r=0,n=0,o=0,i=0,s=0,l=0,a=0;for(let t of C){if("user"===t.role&&(i+=1),"toolResult"===t.role&&(l+=1),"assistant"!==t.role)continue;s+=1;let d=t.usage;if(a+=t.content.filter(e=>"toolCall"===e.type).length,!d)continue;e.input+=d.input??0,e.output+=d.output??0,e.cacheRead+=d.cacheRead??0,e.cacheWrite+=d.cacheWrite??0;let c=d.cost?.total??0;r+=c,ar(t.model)?n+=an(t.model,d):o+=c}let d=g?.stats;return(d&&(e.input=Math.max(e.input,d.tokens.input),e.output=Math.max(e.output,d.tokens.output),e.cacheRead=Math.max(e.cacheRead,d.tokens.cacheRead),e.cacheWrite=Math.max(e.cacheWrite,d.tokens.cacheWrite),o=Math.max(o,d.cost),i=Math.max(i,d.userMessages),s=Math.max(s,d.assistantMessages),l=Math.max(l,d.toolResults),a=Math.max(a,d.toolCalls)),e.total=e.input+e.output+e.cacheRead+e.cacheWrite,0!==e.total||0!==C.length||d)?{sessionFile:g?.filePath||void 0,sessionId:t6.current??t?.id??"",sessionName:t?.name,userMessages:i,assistantMessages:s,toolCalls:a,toolResults:l,totalMessages:d?Math.max(C.length,d.totalMessages):C.length,tokens:e,cost:r,costCNY:n,costUSD:o,totalActiveMs:g?.totalActiveMs,...eJ?{contextUsage:eJ}:{}}:null},[C,tT,eJ,g?.filePath,g?.totalActiveMs,g?.stats,t?.id,t?.name]),rU=(0,o.useCallback)(async(e,t=!1,r=!1,n)=>{let o=m.current,i=!1;try{let s;t&&b(!0),f.current?.abort(),o=m.current+1,m.current=o;let l=new AbortController;f.current=l;let a=new URLSearchParams({deferThinking:"1",deferMedia:"1",view:"initial"});n?.force&&a.set("force","1");let d=async()=>{let t=new AbortController,r=setTimeout(()=>t.abort(),3e4),n=()=>t.abort();l.signal.addEventListener("abort",n,{once:!0});try{return await fetch(`/api/sessions/${encodeURIComponent(e)}?${a}`,{signal:t.signal})}finally{clearTimeout(r),l.signal.removeEventListener("abort",n)}};try{s=await d()}catch(e){if(!(e instanceof DOMException&&"AbortError"===e.name))throw e;if(l.signal.aborted)return null;s=await d()}if(404===s.status)return t&&(r1.current+=1,x(null),S(null),z([]),M([]),$(null),L(!1),j(null)),cq().delete(e),null;if(!s.ok)throw Error(`HTTP ${s.status}`);let c=await s.json();if(t6.current!==e||m.current!==o)return null;x(c),v.current?.abort();let u=new AbortController;if(v.current=u,fetch(`/api/sessions/${encodeURIComponent(e)}/details`,{signal:u.signal}).then(async e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return await e.json()}).then(t=>{t6.current!==e||m.current!==o||u.signal.aborted||x(r=>r?.sessionId===e?{...r,...t}:r)}).catch(e=>{"AbortError"!==e.name&&console.warn("Failed to load session details",e)}),S(c.leafId),z(c.context.messages),M(c.context.entryIds??[]),rr.current||(rv.current=Date.now()+700),r1.current+=1,$(c.context.oldestEntryId),L(c.context.hasMore),tn(e=>e?c.context.model&&e.provider===c.context.model.provider&&e.modelId===c.context.model.modelId?null:e:null),rt.current=void 0!==c.toolNames,rL(void 0!==c.toolNames?(0,cB.YO)(c.toolNames):cB.Q8),j(null),c.wrapperRebuilt&&(rY(),rG(e)),!r&&c.context.thinkingLevel&&"off"!==c.context.thinkingLevel&&eq(cQ(c.context.thinkingLevel)),i=!0,t&&b(!1),!r)return null;try{let t,r=new AbortController,n=setTimeout(()=>r.abort(),2e4);try{t=await fetch(`/api/sessions/${encodeURIComponent(e)}/state`,{signal:r.signal})}finally{clearTimeout(n)}if(!t.ok)throw Error(`HTTP ${t.status}`);let i=await t.json();if(t6.current!==e||m.current!==o)return null;let s=i.state;if(ts(s),s){if(void 0!==s.contextUsage&&eY(s.contextUsage??null),void 0!==s.systemPrompt&&eX(s.systemPrompt??null),void 0!==s.extensionStatuses&&tA(s.extensionStatuses??[]),void 0!==s.extensionWidgets&&tF(s.extensionWidgets??[]),void 0!==s.queuedMessages&&tO(cZ(s.queuedMessages)),void 0!==s.pendingRecovery&&t_(s.pendingRecovery??[]),void 0!==s.autoCompactionEnabled&&eH(s.autoCompactionEnabled??!0),void 0!==s.goalState){let e=s.goalState;e&&(eF.current=e,eP(e))}}else i.running||tO({steering:[],followUp:[]});return i}catch(e){return console.error("Failed to load agent state:",e),null}}catch(t){let e=t instanceof DOMException&&"AbortError"===t.name;if(i)return console.warn("Failed to load auxiliary session state",t),null;return j(e?"Timed out loading this conversation. Please try again.":String(t)),null}finally{t&&!i&&m.current===o&&b(!1)}},[t_,tO,rL]);(0,o.useEffect)(()=>{if(!t||!y)return;let e=window.setTimeout(()=>{rs.current&&t6.current&&y&&(f.current?.abort(),v.current?.abort(),b(!1),j("Timed out loading this conversation. Please try again."))},35e3);return()=>window.clearTimeout(e)},[y,t]);let r_=(0,o.useCallback)(async e=>{try{let t=await tE(e,{type:"get_tools"});if(!t||!t4.current||t6.current!==e)return null;let{getPresetFromTools:n}=await Promise.resolve().then(r.bind(r,14755)),o=n(t);return rt.current&&"plan"===o&&!ex.current?(await tE(e,{type:"set_tools",toolNames:(0,cB.xG)("default")}).catch(()=>{}),rL("default")):rL(rt.current?o:cB.Q8),t}catch(e){console.error("Failed to load tools:",e)}},[rL]),rq=(0,o.useCallback)((e=0,t="(no messages)")=>{let r=t6.current;p&&n&&r&&!rj.current&&(rj.current=!0,s?.({id:r,path:"",cwd:n,name:void 0,created:new Date().toISOString(),modified:new Date().toISOString(),messageCount:e,firstMessage:t}))},[p,n,s]),rK=(0,o.useCallback)(async()=>{if(t6.current||!p||!n)return t6.current;if(rk.current)return rk.current;let e=(async()=>{let e,t=rI.current,r=rM.current;t&&ta(t);let o=(0,cB.xG)(ep);rt.current=void 0!==o;let i=new AbortController,s=setTimeout(()=>i.abort(),3e4);try{e=await fetch("/api/agent/new",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:n,type:"ensure_session",...void 0!==o?{toolNames:o}:{},...t?{provider:t.provider,modelId:t.modelId}:{},...r?{thinkingLevel:r}:{}}),signal:i.signal})}catch(e){if(i.signal.aborted)throw Error("Timed out creating a new session after 30s. The agent service may still be starting up — please try again.");throw e}finally{clearTimeout(s)}if(!e.ok){let t=await e.json().catch(()=>null);throw Error(t?.error??`HTTP ${e.status}`)}let l=await e.json();t6.current=l.sessionId;let a=ev.current;return a&&(ev.current=null,fetch(`/api/modes?session=${encodeURIComponent(l.sessionId)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}).catch(e=>{console.error("Failed to persist pending mode settings:",e)})),l.model&&rI.current===t&&(ta(l.model),t||eu(l.model)),l.thinkingLevel&&rM.current===r&&(eU(l.thinkingLevel),eq(cQ(l.thinkingLevel))),l.sessionId})();rk.current=e;try{return await e}finally{rk.current=null}},[p,n,ep]);(0,o.useCallback)(async()=>{let e=t6.current??await rK();if(!e)return;let[t]=await Promise.all([tE(e,{type:"get_state"}),r_(e)]);t4.current&&t6.current===e&&(ts(t),eX(t.systemPrompt??""))},[rK,r_,ts]);let rV=(0,o.useCallback)(async()=>{let e=t6.current??await rK();if(!e)return tj([]),[];tS(!0);try{let t=await tE(e,{type:"get_commands"}),r=t?.commands??[];return tj(r),r}catch(e){return console.error("Failed to load slash commands:",e),tj([]),[]}finally{tS(!1)}},[rK]),rJ=(0,o.useCallback)(()=>{t0.current+=1,t1.current=!1,tQ.current&&(clearTimeout(tQ.current),tQ.current=null)},[]),rY=(0,o.useCallback)(()=>{tG.current?.close(),tG.current=null,tX.current=null,tZ.current=null},[]),rG=(0,o.useCallback)(e=>{rY(),t2.current=Date.now();let t=new EventSource(`/api/agent/${encodeURIComponent(e)}/events`);tG.current=t,tX.current=e;let r=new Promise(r=>{let n=!1,o=e=>{n||(n=!0,clearTimeout(i),tZ.current?.source===t&&(tZ.current.pending=!1),r({status:e,source:t}))},i=setTimeout(()=>o("timeout"),3e4);t.onmessage=e=>{t2.current=Date.now();try{let t=JSON.parse(e.data);"connected"===t.type&&o("connected"),ru.current?.(t)}catch{}},t.onerror=()=>{if(t.readyState!==EventSource.CLOSED||(o("closed"),tG.current!==t||!rr.current&&!t1.current))return;tG.current=null,tX.current=null,tZ.current=null;let r=t0.current;setTimeout(()=>{r===t0.current&&!tG.current&&(rr.current||t1.current)&&rG(e)},1e3)}});return tZ.current={source:t,promise:r,pending:!0},r},[rY]),rX=(0,o.useCallback)(async e=>{let t=tG.current;if(t&&tX.current===e)if(t.readyState===EventSource.OPEN)if(!(Date.now()-t2.current>95e3))return;else rY();else{let e=tZ.current;if(e?.source===t&&e.pending&&(await e.promise,tG.current===t&&t.readyState===EventSource.OPEN))return}let r=await rG(e);if("connected"!==r.status&&r.source.readyState!==EventSource.OPEN)throw tG.current===r.source&&(tG.current=null),tX.current===e&&(tX.current=null),tZ.current?.source===r.source&&(tZ.current=null),r.source.close(),new c2(r.status)},[rG]),rZ=(0,o.useCallback)(async(e,t)=>{let r=t6.current;if(t$(t=>t?.id===e.id?null:t),r)try{await tE(r,{type:"extension_ui_response",id:e.id,...t})}catch(e){console.error("Failed to send extension UI response:",e)}},[]),rQ=(0,o.useCallback)(async(e,t)=>{let r=t6.current;if(r)try{await tE(r,{type:"extension_ui_input",id:e.id,data:t})}catch(e){console.error("Failed to send extension custom UI input:",e)}},[]),r0=(0,o.useCallback)(e=>{let t=e.message.trim();if(!t)return;let r=e.type??"info";("error"===r||"warning"===r)&&fetch("/api/logs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({level:r,source:"agent-notice",sessionId:t6.current??void 0,message:t})}).catch(()=>{}),tz({type:"add",notice:{id:e.id??("u">typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`),message:t,type:r}})},[]),r1=(0,o.useRef)(0),r2=(0,o.useCallback)(async(e,t,r)=>{let n=r1.current,o=async n=>{let o=new URLSearchParams({deferThinking:"1",deferMedia:"1"});return t&&o.set("leafId",t),r&&o.set("before",r),fetch(`/api/sessions/${encodeURIComponent(e)}/context?${o}`,{signal:n})};try{let t,i=new AbortController,s=setTimeout(()=>i.abort(),3e4);try{t=await o(i.signal)}catch(e){if(!(e instanceof DOMException&&"AbortError"===e.name))throw e;t=await o(i.signal)}finally{clearTimeout(s)}if(!t.ok)throw Error(`HTTP ${t.status}`);let l=await t.json();if(t6.current!==e||r1.current!==n)return;$(l.context.oldestEntryId),L(l.context.hasMore),x(t=>{if(!t||t.sessionId!==e)return t;let n=r?{...t.context,messages:[...l.context.messages,...t.context.messages],entryIds:[...l.context.entryIds,...t.context.entryIds],oldestEntryId:l.context.oldestEntryId,hasMore:l.context.hasMore}:l.context;return{...t,context:n}}),r?(z(e=>[...l.context.messages,...e]),M(e=>[...l.context.entryIds,...e])):(z(l.context.messages),M(l.context.entryIds??[]))}catch(t){console.error("Failed to load context:",t),rs.current&&t6.current===e&&r1.current===n&&r0({type:"error",message:"Failed to load earlier messages. Scroll up to retry."})}},[r0]),r6=(0,o.useCallback)(t=>{switch(t.method){case"select":case"confirm":case"input":case"editor":t$(t);break;case"notify":r0({id:t.id,message:function(e){if(!("u">typeof document&&("zh-CN"===document.documentElement.lang||"zh"===document.documentElement.lang)))return e;let t=e.trim();return t.startsWith("Plan mode enabled")?"已启用计划模式:只读分析与产出计划,不修改文件。":t.startsWith("Plan mode disabled")?"已退出计划模式。":t.startsWith("No completed plan is available")?"当前没有可用的已完成计划。":t.startsWith("Unable to send Plan-mode message")?`无法发送计划模式消息:${t.replace(/^Unable to send Plan-mode message:\s*/,"")}`:e}(t.message),type:t.notifyType??"info"});break;case"setStatus":tA(e=>{let r=e.filter(e=>e.key!==t.statusKey);return t.statusText?[...r,{key:t.statusKey,text:t.statusText}]:r});break;case"setWidget":tF(e=>(function(e,t,r,n="aboveEditor"){if(void 0===r)return e.filter(e=>e.key!==t);let o={key:t,lines:r,placement:n},i=e.findIndex(e=>e.key===t);return -1===i?[...e,o]:e.map((e,t)=>t===i?o:e)})(e,t.widgetKey,t.widgetLines,t.widgetPlacement));break;case"setTitle":t.title&&(document.title=t.title);break;case"set_editor_text":e.chatInputRef?.current?.insertText(t.text);break;case"custom":tL(e=>t.closed?e?.id===t.id?null:e:t)}},[r0,e.chatInputRef]),r4=(0,o.useRef)(null),r5=(0,o.useCallback)(()=>{null!==r4.current&&(cancelAnimationFrame(r4.current),r4.current=null)},[]),r3=(0,o.useCallback)(()=>{r$(),r5();let e=rr.current;return rr.current=!1,q(!1),tf(null),eV(null),R(new Map),A({type:"end"}),e},[r5,r$]),r8=(0,o.useCallback)(e=>ri.current!==e&&(ri.current=e,i?.(),!0),[i]),r7=(0,o.useCallback)(e=>{if(re.current===e)return void rJ();rJ(),t1.current=!0;let t=t0.current,r=async()=>{if(t===t0.current&&t6.current===e&&t1.current)try{let n=await fetch(`/api/agent/${encodeURIComponent(e)}`);if(!n.ok)throw Error(`HTTP ${n.status}`);let o=await n.json();if(t!==t0.current||t6.current!==e||!t1.current)return;let i=o.state;if(ts(i),o.running&&i&&(i.isStreaming||i.isPromptRunning)){t1.current=!1,tQ.current=null,rn.current=!!i?.isStreaming,ro.current=!!i?.isPromptRunning,rr.current=!0,q(!0),tf(cG(i));return}if(o.running&&i?.isCompacting){tc(!0),tQ.current=setTimeout(()=>void r(),600);return}t1.current=!1,tQ.current=null,rY()}catch{if(t!==t0.current||t6.current!==e||!t1.current)return;tQ.current=setTimeout(()=>void r(),600)}};tQ.current=setTimeout(()=>void r(),12e4)},[rJ,rY,ts]);(0,o.useEffect)(()=>{let e=t?.id;if(!e)return;let r=!1,n=!1,o=0,i=async()=>{if(!r&&!n){n=!0;try{let t=await fetch(`/api/agent/${encodeURIComponent(e)}/lease`,{method:"POST",cache:"no-store"});if(!t.ok||r)return;let n=await t.json();!r&&0===n.renewed&&t6.current===e&&re.current===e&&Date.now()-o>=3e4&&(o=Date.now(),rY(),rX(e).catch(()=>!1))}catch{}finally{n=!1}}},s=setInterval(()=>void i(),3e4),l=()=>{"visible"===document.visibilityState&&i()};return document.addEventListener("visibilitychange",l),()=>{r=!0,clearInterval(s),document.removeEventListener("visibilitychange",l)}},[rY,rX,t?.id]);let r9=(0,o.useCallback)(async(e=t6.current,t=rw.current)=>{if(rw.current===t)try{e&&await rU(e)}finally{if(rw.current!==t)return;let r=ro.current,n=rn.current;ro.current=!1,rn.current=!1,rS.current=null;let o=r3();r?r8(t):n&&o&&i?.(),e&&r7(e)}},[rU,r8,i,r7,r3]),ne=(0,o.useCallback)(async(e,t=rw.current)=>{await c6(800);let r=Date.now(),n=0;for(;Date.now()-r<2e4;){if(!rs.current||rw.current!==t)return;try{let o=await fetch(`/api/agent/${encodeURIComponent(e)}`);if(o.ok){n=0;let i=await o.json(),s=i.state;if(ts(s),!(i.running&&s&&(s.isStreaming||s.isPromptRunning)))return void await r9(e,t);r=Date.now()}else n+=1}catch{n+=1}if(n>=3){if(rw.current!==t)return;r0({type:"error",message:"Cannot reach the pi-web service. Make sure it is running, then refresh the page."}),ro.current=!1,rS.current=null,r3();return}await c6(3e3)}rw.current===t&&(r0({type:"error",message:"Message delivery could not be confirmed. Refresh the page to see the latest state."}),ro.current=!1,rS.current=null,r3())},[r0,r9,r3]),nt=(0,o.useCallback)(async e=>{let t=rd.current+1;for(rd.current=t;ra.current&&rd.current===t&&t6.current===e;){await c6(1e3);try{let r=await fetch(`/api/agent/${encodeURIComponent(e)}`);if(!r.ok)continue;let n=await r.json();if(ts(n.state),n.state?.isBashRunning)continue;if(await rU(e),rd.current!==t||t6.current!==e)return;ra.current=!1,V(!1),Y(null);return}catch{}}},[rU,ts]),nr=(0,o.useRef)(0),nn=(0,o.useCallback)(async e=>{if(!rr.current&&!P.current)return;let t=rw.current;try{let r,n=new AbortController,o=setTimeout(()=>n.abort(),1e4);try{r=await fetch(`/api/agent/${encodeURIComponent(e)}`,{signal:n.signal})}finally{clearTimeout(o)}if(!r.ok)throw Error(`HTTP ${r.status}`);nr.current=0;let i=await r.json();if(rw.current!==t)return;let s=i.state;if(ts(s),tc(s?.isCompacting??!1),ro.current||tf(cG(s)),tO(cZ(s?.queuedMessages)),t_(s?.pendingRecovery??[]),i.running&&s&&(s.isStreaming||s.isPromptRunning||s.isBashRunning||s.isCompacting)){rn.current=rn.current||!!s.isStreaming,ro.current=ro.current||!!s.isPromptRunning;return}if(!rr.current&&!P.current)return;if(s&&(void 0!==s.contextUsage&&eY(s.contextUsage??null),void 0!==s.systemPrompt&&eX(s.systemPrompt??null),void 0!==s.extensionStatuses&&tA(s.extensionStatuses??[]),void 0!==s.extensionWidgets&&tF(s.extensionWidgets??[]),void 0!==s.goalState)){let e=s.goalState;e&&(eF.current=e,eP(e))}await r9(e,t)}catch{if(nr.current+=1,nr.current<3||!rs.current||rw.current!==t)return;nr.current=0,r0({type:"error",message:"Cannot reach the pi-web service. Make sure it is running, then refresh the page."}),ro.current=!1,rS.current=null,r3()}},[r0,r9,t_,tO,r3,ts]);(0,o.useEffect)(()=>{if(!_&&!N.isStreaming)return;let e=()=>{let e=t6.current;e&&nn(e)},t=()=>{"visible"===document.visibilityState&&e()},r=()=>e(),n=()=>e(),o=setInterval(e,15e3);return document.addEventListener("visibilitychange",t),window.addEventListener("pageshow",r),window.addEventListener("focus",n),window.addEventListener("online",e),()=>{clearInterval(o),document.removeEventListener("visibilitychange",t),window.removeEventListener("pageshow",r),window.removeEventListener("focus",n),window.removeEventListener("online",e)}},[_,N.isStreaming,nn]),(0,o.useEffect)(()=>{if(!_&&!N.isStreaming)return;let e=()=>{let e=t6.current,t=tG.current;e&&t&&t.readyState===EventSource.OPEN&&(Date.now()-t2.current<=95e3||rG(e))};e();let t=setInterval(e,15e3);return()=>clearInterval(t)},[_,N.isStreaming,rG]),(0,o.useEffect)(()=>{rr.current=_,_||tv(!1)},[_]);let no=(0,o.useCallback)((t="smooth")=>{rv.current=Date.now()+700;let r=rb.current,n=ry.current;if(!r||!n)return;let o=Math.max(88,e.chatInputRef?.current?.measureHeight?.()??0),i=()=>{if(!r||!n)return;let e=Math.max(0,n.getBoundingClientRect().top-r.getBoundingClientRect().top+r.scrollTop-96-r.clientHeight+o);r.scrollTo({top:e,behavior:t})};i(),("instant"===t||"auto"===t)&&window.setTimeout(()=>{r&&n&&rf.current&&i()},200)},[]),ni=(0,o.useCallback)(()=>{null===r4.current&&(r4.current=requestAnimationFrame(()=>{r4.current=null,requestAnimationFrame(()=>{if(!rr.current||Date.now()<rm.current)return;let e=rb.current;if(e){let{scrollTop:t,clientHeight:r,scrollHeight:n}=e;rf.current=t+r>=n-150}rf.current&&no("auto")})}))},[no]);ru.current=(0,o.useCallback)(e=>{switch(e.type){case"agent_start":r$(),O(),rJ(),rr.current||(rl.current=!1),rn.current=!0,rr.current=!0,q(!0),tf({kind:"waiting_model"}),A({type:"start"}),ni();break;case"agent_end":{if(r$(),O(),!rr.current)break;let t=tD.steering.length>0||tD.followUp.length>0;if(tf(t?{kind:"waiting_model"}:null),eV(null),A({type:"end"}),!0!==e.willRetry){let t=e.messages??[];for(let e=t.length-1;e>=0;e--){let r=t[e];if(r?.role==="assistant"){"error"===r.stopReason&&r.errorMessage&&r0({type:"error",message:r.errorMessage});break}}}let r=t6.current;if(r){let n=rw.current;t||!0===e.willRetry||rU(r),fetch(`/api/agent/${encodeURIComponent(r)}`).then(e=>e.ok?e.json():void 0).then(e=>{if(rw.current!==n)return;let t=e?.state;if(ts(t),t?.contextUsage!==void 0&&eY(t.contextUsage??null),t?.systemPrompt!==void 0&&eX(t.systemPrompt??null),t?.extensionStatuses!==void 0&&tA(t.extensionStatuses??[]),t?.extensionWidgets!==void 0&&tF(t.extensionWidgets??[]),tO(cZ(t?.queuedMessages)),t_(t?.pendingRecovery??[]),t?.goalState!==void 0){let e=t.goalState;e&&(eF.current=e,eP(e))}}).catch(()=>{})}break}case"agent_settled":{let e=rn.current;if(rn.current=!1,!e||ro.current)break;let t=t6.current,r=r3();tc(!1),t&&(rU(t),r7(t)),r&&!rl.current&&i?.(),rl.current=!1;break}case"goal_state_changed":{let t=e.goalState;t&&(eF.current=t,eP(t));break}case"prompt_done":{let e=rw.current,t=ro.current;ro.current=!1,rS.current=null;let r=r8(e);if(r&&(rl.current=!0),!t&&!r)break;let n=t6.current;n&&!rn.current&&rU(n),!rn.current&&(r3(),n&&r7(n));break}case"tool_approval_request":{let t={id:String(e.id??""),toolName:String(e.toolName??""),args:e.args};if(!t.id)break;eL(e=>e.some(e=>e.id===t.id)?e:[...e,t]);break}case"tool_approval_resolved":{let t=String(e.id??"");if(!t)break;eL(e=>e.filter(e=>e.id!==t));break}case"prompt_error":r0({type:"error",message:e.errorMessage??"Command failed"});break;case"extension_error":r0({type:"error",message:e.error??"Extension command failed"});break;case"message_start":case"message_update":{if(!rr.current||cK(e))break;let t=e.message;if(t?.role==="user")break;t&&(U(t),rW(cO(t))),tf(e=>null===e?e:null),ni();break}case"message_end":{if(!rr.current||cK(e))break;let t=e.message;if(t&&"user"===t.role){let e=cO(t);if("user"===e.role&&"content"in e){let t=e.content;if("string"==typeof t)c0.some(e=>t.startsWith(e))&&(e={...e,content:te(t)});else if(Array.isArray(t)){let r=t.filter(e=>"text"===e.type)[0];r&&"string"==typeof r.text&&c0.some(e=>r.text?.startsWith(e))&&(e={...e,content:t.map((e,t)=>{if("text"!==e.type||0!==t)return e;let r=te(e.text??"");return{...e,text:r}})})}}let r=c8(e),n=rS.current;z(t=>{let o=t[t.length-1];return n&&o?.role==="user"&&c8(o)===n?(rS.current=null,n===r?t:[...t.slice(0,-1),e]):[...t,e]})}else t&&z(e=>[...e,cO(t)]);r$(),A({type:"reset"}),tf({kind:"waiting_model"});break}case"tool_execution_start":{let t=e.toolCallId,r=e.toolName;tf(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_update":{let t=e.partialResult,r=t?.content,n="string"==typeof e.toolName?e.toolName:"",o="string"==typeof e.toolCallId?e.toolCallId:null;o&&("bash"===n||"powershell"===n)&&Array.isArray(r)&&R(e=>{let i=new Map(e);return i.set(o,{role:"toolResult",toolCallId:o,toolName:n,content:r,isError:t?.isError,details:t?.details}),i});let i=function(e){if(!cV(e))return null;let t=e.content;if(!Array.isArray(t))return null;let r=t.filter(e=>cV(e)&&"text"===e.type&&"string"==typeof e.text).map(e=>e.text).join("\n").split(/\r?\n/),n="";for(let e=r.length-1;e>=0&&!(n=r[e].trim());e-=1);if(!n)return null;let o=n.replace(/\s+/g," ");return o.length<=500?o:`...${o.slice(-497)}`}(e.partialResult);o&&tf(e=>{let t=e?.kind==="running_tools"?[...e.tools]:[],r=t.find(e=>e.id===o);if(!r&&!i)return e;let s={id:o,name:n||r?.name||"tool",progress:i??r?.progress};return{kind:"running_tools",tools:[...t.filter(e=>e.id!==o),s]}});let s="string"==typeof e.toolCallId?e.toolCallId:null,l=e.partialResult,a=l?.details;if(!s||!a)break;z(t=>{let r=t.findIndex(e=>"toolResult"===e.role&&e.toolCallId===s);if(-1===r)return[...t,{role:"toolResult",toolCallId:s,toolName:"string"==typeof e.toolName?e.toolName:"Agent",content:[],details:a}];let n=t[r];if("toolResult"!==n.role||n.content.length>0)return t;let o=[...t];return o[r]={...n,details:a},o});break}case"tool_execution_end":{let t=e.toolCallId;R(e=>{if(!e.has(t))return e;let r=new Map(e);return r.delete(t),r}),tf(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"entry_appended":break;case"queue_update":tO({steering:[...e.steering??[]],followUp:[...e.followUp??[]]}),(e.steering??[]).length>0||(e.followUp??[]).length>0?tJ():tY();break;case"state_sync":{let t=e.state;if(!t)break;if(tc(t.isCompacting??!1),ro.current||tf(cG(t)),tO(cZ(t.queuedMessages)),t_(t.pendingRecovery??[]),void 0!==t.contextUsage&&eY(t.contextUsage??null),void 0!==t.systemPrompt&&eX(t.systemPrompt??null),void 0!==t.extensionStatuses&&tA(t.extensionStatuses??[]),void 0!==t.extensionWidgets&&tF(t.extensionWidgets??[]),void 0!==t.goalState){let e=t.goalState;e&&(eF.current=e,eP(e))}if(t.isStreaming||t.isPromptRunning||t.isBashRunning||t.isCompacting){let e=rr.current;rr.current=!0,q(!0),e||A({type:"start"})}else if(rr.current&&!ro.current){let e=t6.current;e&&r9(e,rw.current)}break}case"auto_retry_start":eV({attempt:e.attempt,maxAttempts:e.maxAttempts,errorMessage:e.errorMessage});break;case"auto_retry_end":eV(null);break;case"auto_compaction_start":case"compaction_start":tc(!0),tp(null),tg(null);break;case"auto_compaction_end":case"compaction_end":tc(!1),e.errorMessage?(tp(e.errorMessage),tg(null)):e.aborted||(tg(c7(e.result,e.reason??"auto")),t6.current&&!rr.current&&rU(t6.current));break;case"extension_ui_request":r6(e)}},[r0,rJ,r5,r9,r6,rU,r8,i,tD,r7,ni,r3,rW,r$,tJ,tY,U,O,t_,tO,ts]),(0,o.useEffect)(()=>{let e=new EventSource("/api/events");return e.onmessage=e=>{try{let t=JSON.parse(e.data);if(!t||!t.type||!t.payload||t.sessionId!==t6.current||tG.current?.readyState===EventSource.OPEN)return;ru.current?.(t.payload)}catch{}},()=>e.close()},[]);let ns=(0,o.useCallback)(async(r,o)=>{let i,s=r.trim();if(!s&&!o?.length)return;if(rr.current||ra.current)return void console.warn("[pi-web] Send dropped: a previous run is still marked active",{agentRunning:rr.current,bashRunning:ra.current,sessionId:t6.current});let l=!o?.length&&s.startsWith("/"),a=rw.current+1;rJ(),r$(),ro.current=!0;let d=function(e){let t=[];if("plan"===e.collaborationMode&&t.push(e3),"economy"===e.tokenMode&&t.push(e8),"delivery"===e.tokenMode&&t.push(e7),"goal"===e.collaborationMode){let r=e.goalText?.trim();t.push(r?`${e9}
192
+ ${r}`:e:r,images:s,pastedBlocks:function(e,t){if(!e?.length&&!t?.length)return;let r=[],n=new Set;for(let o of[...e??[],...t??[]]){let e=`${o.label}\u0000${o.text}`;n.has(e)||(n.add(e),r.push({...o}))}return r}(i,o)}}function dP(e){let t=e.trim();if(!t.startsWith("file://"))return t;try{let e=new URL(t),r=decodeURIComponent(e.pathname);return/^\/[a-zA-Z]:[\\/]/.test(r)?r=r.slice(1):e.host&&"localhost"!==e.host&&(r=`//${e.host}${r}`),r}catch{let e=t.replace(/^file:\/\/(localhost)?/,"");try{e=decodeURIComponent(e)}catch{}return/^\/[a-zA-Z]:[\\/]/.test(e)&&(e=e.slice(1)),e}}let dF=["text/uri-list","x-special/nautilus-clipboard","x-special/gnome-copied-files","x-special/mate-copied-files","x-special/xfce4-copied-files","application/x-kde-cutselection","public.file-url","text/x-moz-url","application/x-moz-file"];function dD(e){let t=/(?:^|\s)@"([^"\n]*)$/.exec(e);if(t)return{start:e.length-(t[1].length+2),query:t[1],quoted:!0};let r=/(?:^|\s)@([^\s"]*)$/.exec(e);return r?{start:e.length-(r[1].length+1),query:r[1],quoted:!1}:null}function dH(e){let t=0;for(let r=0;r<e.length;r++)"/"===e[r]&&t++;return t}function dO(e,t){if(!e)return!0;let r=0;for(let n=0;n<t.length&&r<e.length;n++)t[n]===e[r]&&r++;return r===e.length}function dB(e,t){let r=t?`${e}/`:e;return r.includes(" ")?`@"${r}" `:`@${r} `}var dU=r(23084),d_=r(70312),dq=r(37597),dK=r(21163),dV=r(4615),dJ=r(25248),dY=r(58506),dG=r(41789),dX=r(87124),dZ=r(65098),dQ=r(93587),d0=r(3736),d1=r(91906),d2=r(50981),d6=r(69203);let d4=[{value:"plan",Icon:d0.A,titleKey:"modes.collabPlanTitle",descKey:"modes.collabPlanDesc"},{value:"build",Icon:d1.A,titleKey:"modes.chatBuildTitle",descKey:"modes.chatBuildDesc"},{value:"edit",Icon:d2.A,titleKey:"modes.chatEditTitle",descKey:"modes.chatEditDesc"},{value:"yolo",Icon:d6.A,titleKey:"modes.chatYoloTitle",descKey:"modes.chatYoloDesc",warning:!0},{value:"goal",Icon:aW.d,titleKey:"modes.collabGoalTitle",descKey:"modes.collabGoalDesc"}];function d5({collaborationMode:e,onCollaborationModeChange:t,toolApprovalMode:r,onToolApprovalModeChange:i,disabled:s=!1}){let l,{t:a}=(0,Y.s)(),d=tp(),[c,u]=(0,o.useState)(null),[p,h]=(0,o.useState)(null),[g,x]=(0,o.useState)({}),m=(0,o.useRef)(null),v=(0,o.useRef)(null);(0,o.useEffect)(()=>()=>{null!==v.current&&window.clearTimeout(v.current)},[]);let y=(0,o.useCallback)(e=>{h(e),window.requestAnimationFrame(()=>u(t=>t===e?null:t)),null!==v.current&&window.clearTimeout(v.current),v.current=window.setTimeout(()=>h(null),150)},[]),b="goal"===e?"goal":"plan"===e?"plan":"yolo"===r?"yolo":"auto"===r?"edit":"build",k=()=>window.visualViewport?.height??window.innerHeight,j=d4.find(e=>e.value===b)??d4[1],w="build"===b?"var(--text-muted)":j.warning?"var(--accent-orange, #f59e0b)":"var(--accent)",S=j.Icon,C=j.titleKey;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",gap:2},children:(0,n.jsxs)("button",{ref:m,type:"button","aria-label":a(C),title:a(C),"aria-expanded":"collab"===c,onClick:(l="collab",()=>{if(s)return;let e=m.current;if(!e)return;let t=e.getBoundingClientRect();x(e=>({...e,[l]:{top:t.top,left:t.left,width:t.width}})),u(e=>e===l?null:l)}),disabled:s,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:5*!d,padding:d?0:"0 6px",width:d?24:void 0,height:24,background:"collab"===c?"var(--bg-hover)":"none",border:"none",borderRadius:4,color:w,cursor:s?"not-allowed":"pointer",fontSize:12,whiteSpace:"nowrap",opacity:s?.5:1,transition:"background 0.12s, color 0.12s"},children:[(0,n.jsx)(S,{size:14,color:w,"aria-hidden":"true"}),!d&&(0,n.jsx)("span",{style:{whiteSpace:"nowrap"},children:a(C)})]})}),(()=>{if("collab"!==c)return null;let o=g.collab;if(!o)return null;let l=Math.min(248,window.innerWidth-16),d=Math.min(o.left,window.innerWidth-l-8),u=k()-o.top+6,h=Math.min(300,Math.max(120,.55*k()));return(0,n.jsx)("div",{role:"menu",style:{position:"fixed",bottom:u,left:d,zIndex:2100,width:l,maxHeight:h,overflowY:"auto",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:10,boxShadow:"0 12px 32px rgba(0,0,0,0.22)",padding:4,opacity:+("collab"!==p),transition:"opacity 0.12s"},children:d4.map(o=>{let l=o.value===b,d=o.Icon;return(0,n.jsxs)("button",{type:"button",role:"menuitemradio","aria-checked":l,onClick:()=>(n=>{if(y("collab"),n===b)return;if("goal"===n)return void t("goal");let o=function(e){switch(e){case"plan":return{collaborationMode:"plan",toolApprovalMode:"ask"};case"edit":return{collaborationMode:"normal",toolApprovalMode:"auto"};case"yolo":return{collaborationMode:"normal",toolApprovalMode:"yolo"};default:return{collaborationMode:"normal",toolApprovalMode:"ask"}}}(n);o.collaborationMode!==e&&t(o.collaborationMode),o.toolApprovalMode!==r&&i?.(o.toolApprovalMode)})(o.value),disabled:s,style:{display:"flex",alignItems:"center",gap:10,width:"100%",padding:"8px 10px",background:l?"var(--bg-selected)":"none",border:"none",borderRadius:8,cursor:s?"not-allowed":"pointer",textAlign:"left",transition:"background 0.12s"},onMouseEnter:e=>{l||s||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{e.currentTarget.style.background=l?"var(--bg-selected)":"none"},children:[(0,n.jsx)(d,{size:16,color:l?o.warning?"var(--accent-orange, #f59e0b)":"var(--accent)":"var(--text-muted)","aria-hidden":"true"}),(0,n.jsxs)("span",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("span",{style:{display:"block",fontSize:12.5,fontWeight:550,color:"var(--text)"},children:a(o.titleKey)}),(0,n.jsx)("span",{style:{display:"block",fontSize:10.5,color:"var(--text-muted)",marginTop:1,lineHeight:1.4},children:a(o.descKey)})]}),l&&(0,n.jsx)(f.S,{size:12,weight:"bold",color:"var(--accent)","aria-hidden":"true"})]},o.value)})})})()]})}let d3=["off","default","full"],d8={off:"none",default:"default",full:"full"},d7=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});function d9(e,t){return d7.compare(e.name||e.modelId,t.name||t.modelId)||d7.compare(e.provider,t.provider)||d7.compare(e.modelId,t.modelId)}let ce=["max","xhigh","high","medium","low","minimal","auto","off"];function ct({level:e,size:t=14}){if("off"===e)return(0,n.jsx)(dY.x,{size:t,weight:"regular",color:"var(--text-dim)"});if("auto"===e)return(0,n.jsx)(dQ.I,{size:t,weight:"regular",color:"var(--accent)"});let r=["medium","high","xhigh","max"].includes(e),o="var(--accent)";return(0,n.jsxs)("span",{style:{position:"relative",display:"inline-flex"},children:[(0,n.jsx)(dY.x,{size:t,weight:r?"fill":"regular",color:o}),"high"===e&&(0,n.jsx)(b.c,{size:Math.round(.57*t),weight:"bold",color:o,style:{position:"absolute",right:-4,top:-1}}),"xhigh"===e&&(0,n.jsx)(x.C,{size:Math.round(.57*t),weight:"fill",color:o,style:{position:"absolute",right:-4,top:-1}}),"max"===e&&(0,n.jsxs)("span",{style:{position:"absolute",right:-6,top:-1,display:"inline-flex"},children:[(0,n.jsx)(x.C,{size:Math.round(.5*t),weight:"fill",color:o,style:{marginRight:-3}}),(0,n.jsx)(x.C,{size:Math.round(.5*t),weight:"fill",color:o})]})]})}function cr(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${Math.round(e/1e3)}k`:e.toLocaleString()}let cn=["builtin","extension","prompt","skill"],co={builtin:0,extension:1,prompt:2,skill:3};function ci(e,t){let r=e.name.toLowerCase(),n=e.description?.toLowerCase()??"";return r===t?0:r.startsWith(t)?1:r.includes(t)?2:n.includes(t)?3:4}function cs(e,t){return"skill"===e.source&&e.name.startsWith("skill:")&&!0===t[e.name.slice(6)]}function cl(e,t,r){return t<=0?0:((e+r)%t+t)%t}async function ca(e){let t=()=>{var t;return t=e.type,new Promise((r,n)=>{let o=new FileReader;o.onload=()=>{let e="string"==typeof o.result?o.result.split(",")[1]:void 0;e?r({data:e,mimeType:t}):n(Error("Failed to read image"))},o.onerror=n,o.readAsDataURL(e)})};if(!(e.size>1048576&&"image/gif"!==e.type)||"function"!=typeof createImageBitmap)return t();let r=await createImageBitmap(e).catch(()=>null);if(!r)return t();try{let n=Math.min(1,1024/Math.max(r.width,r.height)),o=document.createElement("canvas");o.width=Math.max(1,Math.round(r.width*n)),o.height=Math.max(1,Math.round(r.height*n));let i=o.getContext("2d");if(!i)return t();i.fillStyle="#fff",i.fillRect(0,0,o.width,o.height),i.drawImage(r,0,0,o.width,o.height);let s=o.toDataURL("image/jpeg",.85).split(",")[1];return s&&s.length<4*Math.ceil(e.size/3)?{data:s,mimeType:"image/jpeg"}:t()}catch{return t()}finally{r.close()}}function cd(e){return{data:e.data,mimeType:e.mimeType}}function cc(e,t){let r=e;for(let e of t)r=r.split(e.label).join(e.text);return r}function cu(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function cp(e){return"string"==typeof e.content?e.content:e.content.filter(e=>"text"===e.type).map(e=>e.text).join("\n")}function ch(e){return"string"==typeof e.content?[]:e.content.flatMap(e=>{if("image"!==e.type)return[];let t=e.source?.type==="base64"?e.source.data:e.data,r=e.source?.type==="base64"?e.source.media_type:e.mimeType;return"string"!=typeof t||"string"!=typeof r?[]:dI({type:"image",data:t,mimeType:r})?[{data:t,mimeType:r}]:[]})}function cg(e){return{...e,previewUrl:`data:${e.mimeType};base64,${e.data}`}}function cx(e){return(e??[]).filter(dM).slice(0,10).map(cg)}function cf(e){e.previewUrl.startsWith("blob:")&&URL.revokeObjectURL(e.previewUrl)}function cm({kind:e,text:t,label:r,index:o,total:i,onMove:s,onRecall:l,onRemove:a}){let{t:d}=(0,Y.s)(),c={display:"inline-flex",alignItems:"center",justifyContent:"center",width:20,height:20,padding:0,border:"none",borderRadius:4,color:"var(--text-dim)",background:"transparent",cursor:"pointer",flexShrink:0};return(0,n.jsxs)("div",{title:t,className:"chat-input-queue-row",style:{display:"flex",alignItems:"center",gap:8,padding:"3px 10px",fontSize:12,color:"var(--text-muted)",minWidth:0},children:[(0,n.jsx)("span",{style:{flexShrink:0,fontSize:10,fontFamily:"var(--font-mono)",padding:"1px 7px",borderRadius:999,border:`1px solid ${"steer"===e?"color-mix(in srgb, var(--accent) 45%, transparent)":"var(--border)"}`,color:"steer"===e?"var(--accent)":"var(--text-dim)"},children:r}),(0,n.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1},children:t}),s&&i>1&&(0,n.jsxs)("span",{style:{display:"inline-flex",gap:1,flexShrink:0},children:[(0,n.jsx)("button",{type:"button","aria-label":d("desktop.queueMoveUp"),title:d("desktop.queueMoveUp"),disabled:0===o,onClick:()=>s(-1),style:{...c,opacity:0===o?.3:1},children:"↑"}),(0,n.jsx)("button",{type:"button","aria-label":d("desktop.queueMoveDown"),title:d("desktop.queueMoveDown"),disabled:o===i-1,onClick:()=>s(1),style:{...c,opacity:o===i-1?.3:1},children:"↓"})]}),l&&(0,n.jsx)("button",{type:"button","aria-label":d("desktop.queueRecallOne"),title:d("desktop.queueRecallOne"),onClick:l,style:c,children:(0,n.jsx)(d_.Y,{size:13})}),a&&(0,n.jsx)("button",{type:"button","aria-label":d("desktop.queueRemove"),title:d("desktop.queueRemove"),onClick:a,style:c,children:(0,n.jsx)(g.u,{size:13})})]})}let cv=(0,o.memo)((0,o.forwardRef)(function({onSend:e,onBash:t,onAbort:r,onSteer:i,onFollowUp:s,isStreaming:l,model:a,modelNames:d,modelList:c,modelScopeWarnings:u,modelsError:p,onRetryModels:m,onModelChange:v,compactResult:k,toolPreset:w,onToolPresetChange:S,collaborationMode:C="normal",toolApprovalMode:I="auto",onCollaborationModeChange:M,onToolApprovalModeChange:E,goalState:$,onGoalStart:W,onGoalPause:L,onGoalResume:N,onGoalStop:A,thinkingLevel:P,isAutoThinkingSelection:D=!1,onThinkingLevelChange:H,availableThinkingLevels:O,thinkingLevelMap:B,retryInfo:U,queuedMessages:_,inputHistory:q=[],onRecallQueue:K,onMoveQueue:V,onRecallOne:J,onRequeueAt:G,onRemoveQueueItem:X,slashCommands:Z,slashCommandsLoading:Q,onLoadSlashCommands:ee,onBuiltinCommand:et,onAudioUnlock:er,onPromptWithStreamingBehavior:en,draftKey:eo,cwd:ei,tasksBoardEnabled:es=!0,topCenterControl:el},ea){var ed;let ec,eu,ep,eh,eg,ex,ef,em,ev,ey,eb,ek,ej,ew,eS,eC,ez,eT,eR,eI,eM,eE,e$,eW=tp(),{t:eL}=(0,Y.s)(),eN=!!a&&(c?.find(e=>e.id===a.modelId&&e.provider===a.provider)?.input?.includes("image")??!1),eA={auto:"auto",off:"off",minimal:"minimal",low:"low",medium:"medium",high:"high",xhigh:"xhigh",max:"max"},eP={off:eL("desktop.toolOff"),default:eL("desktop.toolDefault"),full:eL("desktop.toolFull")},eF=[{name:"compact",description:eL("desktop.compactCommandDescription"),source:"builtin"},{name:"reload",description:eL("desktop.reloadCommandDescription"),source:"builtin"},{name:"name",description:eL("desktop.nameCommandDescription"),source:"builtin"},{name:"session",description:eL("desktop.sessionCommandDescription"),source:"builtin"},{name:"copy",description:eL("desktop.copyCommandDescription"),source:"builtin"}],eD={builtin:eL("desktop.builtIn"),extension:eL("desktop.extensions"),prompt:eL("desktop.prompts"),skill:eL("desktop.commandSkills")},[eH,eO]=(0,o.useState)(()=>eo?dW(eo)?.value??"":""),[eB,eU]=(0,o.useState)(()=>eo?dW(eo)?.pastedBlocks??[]:[]),[e_,eq]=(0,o.useState)([]),eK=o.useMemo(()=>{try{var e;return e=eL("desktop.pastedLabel",{id:"\0A\0",lines:"\0B\0"}),RegExp(e.split("\0A\0").join("(\\d+)").split("\0B\0").join("(\\d+)").split("(\\d+)").map(cu).join("(\\d+)"),"g")}catch{return null}},[eL]),[eV,eJ]=(0,o.useState)(null),eY=(0,o.useRef)(null),eG=(0,o.useCallback)(e=>{eJ(e),eY.current&&clearTimeout(eY.current),eY.current=setTimeout(()=>eJ(null),5e3)},[]),eX=(0,o.useRef)(0),[eZ,eQ]=(0,o.useState)(!1),[e0,e1]=(0,o.useState)(null),[e2,e6]=(0,o.useState)({height:0,width:0,offsetTop:0}),[e4,e5]=(0,o.useState)(""),[e3,e8]=(0,o.useState)(()=>{try{let e=localStorage.getItem("pi-favorite-models");return e?new Set(JSON.parse(e)):new Set}catch{return new Set}}),[e7,e9]=(0,o.useState)(new Set),[te,tt]=(0,o.useState)(!1),[tr,tn]=(0,o.useState)(null),[to,ti]=(0,o.useState)(!1),[ts,tl]=(0,o.useState)(null),[ta,td]=(0,o.useState)(!1),[tc,tu]=(0,o.useState)(null),[th,tg]=(0,o.useState)(()=>eo?dW(eo)?.images.map(cg)??[]:[]),tx=eH.trimStart(),tf=0===th.length&&tx.startsWith("!"),tm=tf&&tx.startsWith("!!"),[tv,ty]=(0,o.useState)(!1),[tb,tk]=(0,o.useState)(0),[tw,tS]=(0,o.useState)({}),[tC,tz]=(0,o.useState)(()=>{try{return"ctrl-enter"===localStorage.getItem("pi-input-shortcut")?"ctrl-enter":"enter"}catch{return"enter"}}),[tT,tR]=(0,o.useState)(null),[tI,tM]=(0,o.useState)(!1),[tE,t$]=(0,o.useState)(null),[tW,tL]=(0,o.useState)(0),[tN,tA]=(0,o.useState)(!1),[tP,tF]=(0,o.useState)(0),[tD,tH]=(0,o.useState)(!1),tO=(0,o.useRef)(!1),[tB,tU]=(0,o.useState)(null),[t_,tq]=(0,o.useState)(!1),[tK,tV]=(0,o.useState)(null),tJ=(0,o.useRef)(null),tY=(0,o.useRef)(null),tG=(0,o.useRef)(null),tX=(0,o.useRef)(null),tZ=(0,o.useRef)(null),tQ=(0,o.useRef)(null),t0=(0,o.useRef)(null),t1=(0,o.useRef)(null),t2=(0,o.useRef)(null),t6=(0,o.useRef)(null),t4=(0,o.useRef)(!1),t5=(0,o.useRef)(0),t3=(0,o.useRef)(!1),t8=(0,o.useRef)([]),t7=(0,o.useRef)(null),t9=(0,o.useRef)([]),re=(0,o.useRef)([]),rt=(0,o.useRef)(null),rr=(0,o.useRef)(null),rn=(0,o.useRef)(eo),ro=(0,o.useRef)(eH),ri=(0,o.useRef)(th),rs=(0,o.useRef)(eB),rl=(0,o.useRef)(null),[ra,rd]=(0,o.useState)(!1);ro.current=eH,ri.current=th,rs.current=eB;let rc=(0,o.useCallback)(async e=>{let t=e.filter(e=>e.type.startsWith("image/"));if(!t.length)return;if(!eN)return void eG(eL("desktop.imageInputUnsupported"));let r=await Promise.all(t.map(async e=>({...await ca(e),previewUrl:URL.createObjectURL(e)})));tg(e=>[...e,...r])},[eG,eN,eL]);(0,o.useImperativeHandle)(ea,()=>({insertIfEmpty(e){let t=tJ.current;(t?t.value:eH).trim()||(eO(e),tR(null),requestAnimationFrame(()=>{t&&(t.focus(),t.style.height="auto",t.style.height=`${Math.min(t.scrollHeight,200)}px`)}))},replaceMessage(e){var t,r;let n=tJ.current;t=n?n.value:eH,r=ri.current.length,t.trim()||0!==r||(eO(cp(e)),tR(null),tA(!1),tg(t=>(t.forEach(cf),cx(ch(e)))),requestAnimationFrame(()=>{n&&(n.focus(),n.style.height="auto",n.style.height=`${Math.min(n.scrollHeight,200)}px`)}))},restoreSubmission(e){let t=dA(cp(e),ch(e),tJ.current?.value??ro.current,ri.current.map(cd),void 0,rs.current);ro.current=t.value,rs.current=t.pastedBlocks??[];let r=cx(t.images);ri.current.forEach(cf),ri.current=r,eO(t.value),eU(t.pastedBlocks??[]),tg(r),tR(null),rn.current&&dL(rn.current,t)},prependText(e){if(!e.trim())return;let t=tJ.current,r=[e,t?t.value:eH].filter(e=>e.trim()).join("\n\n");eO(r),tR(null),requestAnimationFrame(()=>{t&&(t.focus(),t.setSelectionRange(r.length,r.length),t.style.height="auto",t.style.height=`${Math.min(t.scrollHeight,200)}px`)})},insertText(e){let t=tJ.current;if(!t)return void eO(t=>t+(t?" ":"")+e);let r=t.selectionStart??t.value.length,n=t.selectionEnd??t.value.length,o=t.value.slice(0,r),i=t.value.slice(n),s=o.length>0&&!o.endsWith(" ")?" ":"";eO(o+s+e+i),tR(null),requestAnimationFrame(()=>{if(!t)return;let n=r+s.length+e.length;t.setSelectionRange(n,n),t.focus(),t.style.height="auto",t.style.height=`${Math.min(t.scrollHeight,200)}px`})},addImages(e){rc(e)},addFiles(e,t){let r=function(e,t,r){let n=e.map(()=>null),o=t.split(/\r?\n/).map(e=>e.trim()).filter(e=>e&&!e.startsWith("#")).filter(e=>e.startsWith("file://"));if(o.length===e.length){for(let t=0;t<e.length;t+=1)n[t]=function(e){let t;if(!e.startsWith("file://"))return null;try{t=decodeURIComponent(e.slice(7))}catch{return null}return t?(/^\/[A-Za-z]:[\\/]/.test(t)&&(t=t.slice(1)),t):null}(o[t]);return n}if(1===e.length&&r.trim()){let e=r.trim();(e.startsWith("/")||e.startsWith("~")||/^[A-Za-z]:[\\/]/.test(e))&&(n[0]=e)}return n}(e,t?.getData("text/uri-list")??"",t?.getData("text/plain")??""),n=e.filter(e=>e.type.startsWith("image/")),o=e.map((e,t)=>e.type.startsWith("image/")?null:r[t]??e.name).filter(e=>!!e);if(n.length&&rc(n),o.length&&!l){let e=o.join(" ");eO(t=>t+(t&&!t.endsWith(" ")?" ":"")+e)}},measureHeight:()=>tQ.current?.getBoundingClientRect().height??0}));let rp=(0,o.useCallback)((e,t)=>{e8(r=>{let n=`${e}:${t}`,o=new Set(r);return o.has(n)?o.delete(n):o.add(n),localStorage.setItem("pi-favorite-models",JSON.stringify([...o])),o})},[]),rh=(0,o.useCallback)(e=>{e9(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},[]),rg=(0,o.useCallback)(e=>{tg(t=>{let r=[...t],[n]=r.splice(e,1);return n&&cf(n),r})},[]),rx=(0,o.useCallback)(()=>{tg(e=>(e.forEach(cf),[]))},[]),rf=(0,o.useCallback)(()=>{eO(""),tR(null),eU([]),eq([]),eo&&dN(eo),rn.current&&rn.current!==eo&&dN(rn.current),rx(),tJ.current&&(tJ.current.style.height="auto")},[rx,eo]),rm=(0,o.useCallback)(async(e,t,r)=>{await V?.(e,t,t+r)},[V]),rv=(0,o.useCallback)(async(e,t)=>{await X?.(e,t)},[X]),ry=(0,o.useCallback)(async(e,t)=>{let r=await J?.(e,t);if(!r)return;rl.current={kind:e,index:t,text:r.text,images:r.images},rd(!0);let n=tJ.current?.value??eH,o=[r.text,n].filter(e=>e.trim()).join("\n\n");eO(o),tR(null),requestAnimationFrame(()=>{let e=tJ.current;e&&(e.focus(),e.setSelectionRange(o.length,o.length),e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,200)}px`)})},[J,eH]);(0,o.useEffect)(()=>{eo&&rn.current===eo&&dL(eo,{value:eH,images:th.map(cd),pastedBlocks:eB.length?eB:void 0})},[th,eo,eH,eB]),(0,o.useEffect)(()=>{let e=rn.current;if(e===eo)return;e&&dL(e,{value:ro.current,images:ri.current.map(cd),pastedBlocks:rs.current.length?rs.current:void 0});let t=eo?dW(eo):null;rn.current=eo,eO(t?.value??""),tR(null),eU(t?.pastedBlocks??[]),eq([]),tg(e=>(e.forEach(cf),t?.images.map(cg)??[]))},[eo]),(0,o.useEffect)(()=>{let e=tJ.current;e&&(e.style.height="auto",eH&&(e.style.height=`${Math.min(e.scrollHeight,200)}px`))},[eH]),(0,o.useEffect)(()=>{let e=()=>{try{tz("ctrl-enter"===localStorage.getItem("pi-input-shortcut")?"ctrl-enter":"enter")}catch{tz("enter")}};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[]),(0,o.useEffect)(()=>()=>{ri.current.forEach(cf)},[]);let rb=(0,o.useCallback)(e=>{let t;if(!eK)return null;for(eK.lastIndex=0;null!==(t=eK.exec(e));){let e=t[0];if(!(rs.current.some(t=>t.label===e)||rs.current.some(t=>t.text.includes(e))))return e}return null},[eK]),rk=(0,o.useCallback)(()=>{eG(eL("desktop.pastedMissingContent"))},[eG,eL]),rj=(0,o.useCallback)(async()=>{let r=cc(eH,eB),n=r.trim();if(!n&&!th.length)return;if(rb(r))return void rk();if(l)return;er?.();let o=rl.current;if(o&&G){if(rl.current=null,rd(!1),!await G(o.kind,o.index,n,th.length?th.map(cd):o.images)){rl.current={...o,text:n},rd(!0);return}rf();return}if(!th.length&&n.startsWith("!")&&t){let e=n.startsWith("!!"),r=n.slice(e?2:1).trim();if(!r)return;t(r,e),rf();return}if(!th.length&&n.startsWith("/")&&et){if(tO.current)return;tO.current=!0,tH(!0);try{let e=await et(n);if(e.handled){e.error||rf();return}}finally{tO.current=!1,tH(!1)}}e(n,th.length?th:void 0),rf()},[eH,eB,th,l,t,et,e,rf,er,G,rb,rk]),rw=eH.startsWith("/")&&!/\s/.test(eH.slice(1))?eH.slice(1).toLowerCase():null,{commands:rS,groups:rC}=(ed=null===rw?[]:[...l?[]:eF,...Z??[]].filter(e=>{let t=e.name.toLowerCase(),r=e.description?.toLowerCase()??"";return t.includes(rw)||r.includes(rw)}).sort((e,t)=>{let r=ci(e,rw)-ci(t,rw);return 0!==r?r:co[e.source]-co[t.source]||d7.compare(e.name,t.name)}),ec=0,{commands:(eu=cn.map(e=>{let t=ed.filter(t=>t.source===e),r="skill"===e?[...t.filter(e=>!cs(e,tw)),...t.filter(e=>cs(e,tw))]:t;return{source:e,items:r.map(e=>({command:e,index:ec++}))}}).filter(e=>e.items.length>0)).flatMap(e=>e.items.map(({command:e})=>e)),groups:eu});(0,o.useEffect)(()=>{if(!tv||!ei)return;let e=!1;return fetch(`/api/skills?cwd=${encodeURIComponent(ei)}`).then(e=>e.ok?e.json():null).then(t=>{!e&&t&&tS(Object.fromEntries(t.skills.map(e=>[e.name,e.disableModelInvocation])))}).catch(()=>{}),()=>{e=!0}},[ei,tv]);let rz=`${rS.length} ${eL(rw?1===rS.length?"desktop.match":"desktop.matches":1===rS.length?"desktop.command":"desktop.commands")}`,rT=!!eH.trim()||th.length>0,rR=(0,o.useCallback)((e,t)=>{if(!ei)return void tR(null);let r=t??e.length;tR(dD(e.slice(0,r)))},[ei]),[rI,rM]=(0,o.useState)(null),rE=(0,o.useRef)(rI);rE.current=rI;let[r$,rW]=(0,o.useState)([]),rL=(0,o.useRef)(!1),rN=(0,o.useCallback)(async()=>{try{let e=await fetch("/api/snippets");if(!e.ok)return;let t=await e.json();rW(t.snippets??[]),rL.current=!0}catch{}},[]);(0,o.useEffect)(()=>{rN();let e=()=>void rN();return window.addEventListener("pi:snippets-changed",e),()=>window.removeEventListener("pi:snippets-changed",e)},[rN]);let rA=rI?.query??null,rP=o.useMemo(()=>{if(null===rA||!1===rL.current)return[];let e=rA.toLowerCase();return r$.filter(t=>t.name.toLowerCase().includes(e))},[rA,r$]),[rF,rD]=(0,o.useState)(0);(0,o.useEffect)(()=>{rD(0)},[rA]);let rH=(0,o.useCallback)((e,t)=>{var r;let n,o=t??e.length,i=(r=e.slice(0,o),(n=/(?:^|[\s(])(#[\w-]+)$/.exec(r))?{start:r.length-n[1].length,end:r.length,query:n[1].slice(1)}:null);rM(i),i&&rD(0)},[]),rO=(0,o.useCallback)(e=>{let t=rE.current;if(!t)return;let r=eH.slice(0,t.start),n=eH.slice(t.end);eO(r+e.content+n),rM(null);let o=r.length+e.content.length;requestAnimationFrame(()=>{let e=tJ.current;e&&(e.focus(),e.setSelectionRange(o,o))})},[eH]),rB=(0,o.useCallback)(e=>{let t=rP[e];t&&rO(t)},[rP,rO]),rU=tT?.query??null,r_=o.useMemo(()=>null!==rU&&tB&&tB.cwd===ei?function(e,t,r=20){let n=t.toLowerCase();if(!n)return e.slice(0,r);let o=[];for(let t of e){let e=function(e,t){let r=e.path.toLowerCase(),n=0;if(t.includes("/"))r===t?n=100:r.startsWith(t)?n=80:r.includes(t)?n=50:dO(t,r)&&(n=10);else{let e=r.lastIndexOf("/"),o=-1===e?r:r.slice(e+1);o===t?n=100:o.startsWith(t)?n=80:o.includes(t)?n=50:r.includes(t)?n=30:dO(t,r)&&(n=10)}return e.isDir&&n>0&&(n+=10),n}(t,n);e>0&&o.push({entry:t,score:e})}return o.sort((e,t)=>t.score-e.score||dH(e.entry.path)-dH(t.entry.path)||e.entry.path.localeCompare(t.entry.path)),o.slice(0,r).map(e=>e.entry)}(tB.entries,rU):[],[rU,tB,ei]),rq=!!(rU&&tB?.truncated&&tB.cwd===ei);(0,o.useEffect)(()=>{if(!rq||!ei||!rU)return;let e=setTimeout(()=>{fetch(`/api/file-index?cwd=${encodeURIComponent(ei)}&q=${encodeURIComponent(rU)}`).then(e=>{if(!e.ok)throw Error(`file search failed: ${e.status}`);return e.json()}).then(e=>tV({cwd:ei,query:rU,matches:e.matches??[]})).catch(()=>{})},150);return()=>clearTimeout(e)},[rq,rU,ei]);let rK=rq&&null!==tK&&tK.cwd===ei&&tK.query===rU,rV=rK?tK.matches:r_,rJ=null===tT?null:`${tT.start}:${+!!tT.quoted}:${tT.query}`;(0,o.useEffect)(()=>{if(null===rJ){tM(!1),tL(0);return}tM(!0),tL(0)},[rJ]);let rY=null!==tT;(0,o.useEffect)(()=>{if(!rY||!ei)return;let e=rt.current;e&&e.cwd===ei&&Date.now()-e.fetchedAt<1e4||rr.current===ei||(rr.current=ei,tq(!0),fetch(`/api/file-index?cwd=${encodeURIComponent(ei)}`).then(e=>{if(!e.ok)throw Error(`file index failed: ${e.status}`);return e.json()}).then(e=>{tU({cwd:ei,entries:function(e){let t=new Set;for(let r of e){let e=r.indexOf("/");for(;-1!==e;)t.add(r.slice(0,e)),e=r.indexOf("/",e+1)}let r=[];for(let e of t)r.push({path:e,isDir:!0});for(let t of e)t&&r.push({path:t,isDir:!1});return r.sort((e,t)=>dH(e.path)-dH(t.path)||e.path.localeCompare(t.path)),r}(e.files??[]),truncated:!!e.truncated}),rt.current={cwd:ei,fetchedAt:Date.now()}}).catch(()=>{rt.current=null}).finally(()=>{rr.current=null,tq(!1)}))},[rY,ei]);let rG=(0,o.useCallback)(e=>{if(!tT)return;let t=tJ.current,r=t?.selectionStart??eH.length,n=eH.slice(0,tT.start),o=eH.slice(r);tT.quoted&&o.startsWith('"')&&(o=o.slice(1));let i=function(e,t,r=!1){let n=t?`${e}/`:e,o=r||n.includes(" ");if(t){let e=o?`@"${n}"`:`@${n}`;return{text:e,cursorOffset:o?e.length-1:e.length}}let i=o?`@"${n}" `:`@${n} `;return{text:i,cursorOffset:i.length}}(e.path,e.isDir,tT.quoted),s=n+i.text+o,l=n.length+i.cursorOffset;eO(s),tR(dD(s.slice(0,l))),requestAnimationFrame(()=>{let e=tJ.current;e&&(e.focus(),e.setSelectionRange(l,l),e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,200)}px`)})},[tT,eH]);(0,o.useEffect)(()=>{tW>=rV.length&&tL(Math.max(0,rV.length-1))},[rV.length,tW]),(0,o.useEffect)(()=>{t9.current.length=rV.length},[rV.length]),(0,o.useEffect)(()=>{tI&&t9.current[tW]?.scrollIntoView({block:"nearest",inline:"nearest"})},[tW,tI]),(0,o.useLayoutEffect)(()=>{if(!tI||null===tT)return void t$(null);let e=t7.current;if(e){var t;let r,n,o,i,s,l,a;return t=e=>{t$(t=>t===e?t:e)},r=null,n=()=>{r=null,t(function(e,t,r=8){return Math.max(0,Math.floor(e-t-r))}(e.getBoundingClientRect().bottom,function(e){let t=window.visualViewport?.offsetTop??0;for(let r=e.parentElement;r;r=r.parentElement){let e=window.getComputedStyle(r).overflowY;("auto"===e||"scroll"===e||"hidden"===e||"clip"===e)&&(t=Math.max(t,r.getBoundingClientRect().top+r.clientTop))}return t}(e)))},o=()=>{null!==r&&cancelAnimationFrame(r),r=requestAnimationFrame(n)},n(),i=e.parentElement,s=i?.parentElement,l="u">typeof ResizeObserver&&i?new ResizeObserver(o):null,i&&l?.observe(i),s&&l?.observe(s),a=window.visualViewport,a?.addEventListener("resize",o),a?.addEventListener("scroll",o),window.addEventListener("resize",o),window.addEventListener("scroll",o,!0),()=>{l?.disconnect(),a?.removeEventListener("resize",o),a?.removeEventListener("scroll",o),window.removeEventListener("resize",o),window.removeEventListener("scroll",o,!0),null!==r&&cancelAnimationFrame(r)}}},[tI,tT]);let rX=(0,o.useCallback)(e=>{eO(e),tR(null),tA(!1),tF(0),requestAnimationFrame(()=>{let t=tJ.current;t&&(t.focus(),t.setSelectionRange(e.length,e.length),t.style.height="auto",t.style.height=`${Math.min(t.scrollHeight,200)}px`)})},[]),rZ=(0,o.useCallback)(e=>{let t=`/${e.name} `;eO(t),ty(!1),tk(0),requestAnimationFrame(()=>{let e=tJ.current;e&&(e.focus(),e.setSelectionRange(t.length,t.length),e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,200)}px`)})},[]),rQ=(0,o.useCallback)(()=>{let e=tJ.current;if(!e)return;let t=e.selectionStart??e.value.length,r=e.value.slice(0,t),n=e.value.slice(e.selectionEnd??t),o=r.length>0&&!r.endsWith(" ")?" ":"",i=r+o+"@"+n;eO(i);let s=t+o.length+1;rR(i,s),requestAnimationFrame(()=>{e&&(e.setSelectionRange(s,s),e.focus(),e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,200)}px`)})},[]),r0=(0,o.useCallback)(()=>{let e=tJ.current;if(!e)return;let t=e.selectionStart??e.value.length,r=e.value.slice(0,t),n=e.value.slice(e.selectionEnd??t),o=r.length>0&&!r.endsWith(" ")?" ":"",i=r+o+"#"+n;eO(i),rR(i,t+o.length+1),requestAnimationFrame(()=>{e&&(e.setSelectionRange(t+o.length+1,t+o.length+1),e.focus(),e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,200)}px`)})},[]),r1=(0,o.useCallback)(()=>{let e=tJ.current;if(!e)return;let t=e.selectionStart??e.value.length,r=e.value.slice(0,t),n=e.value.slice(e.selectionEnd??t),o=r.length>0&&!r.endsWith(" ")?" ":"";eO(r+o+"/"+n);let i=t+o.length+1;requestAnimationFrame(()=>{e&&(e.setSelectionRange(i,i),e.focus(),e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,200)}px`)})},[]),r2=(0,o.useCallback)(e=>{let t=cc(eH,eB);if(rb(t))return void rk();let r=t.trim();if(r||th.length){if(er?.(),r.startsWith("/")&&en){en(r,"steer"===e?"steer":"followUp",th.length?th:void 0),rf();return}"steer"===e&&i?i(r,th.length?th:void 0):"followup"===e&&s&&s(r,th.length?th:void 0),rf()}},[eH,eB,th,en,i,s,rf,er,rb,rk]),r6=(0,o.useCallback)(e=>{let t=rS.length-1;if(t<0)return 0;if("left"===e)return Math.max(0,tb-1);if("right"===e)return Math.min(t,tb+1);let r=t8.current[tb];if(!r)return"down"===e?Math.min(t,tb+1):Math.max(0,tb-1);let n=r.getBoundingClientRect(),o=n.left+n.width/2,i=n.top+n.height/2,s=-1,l=1/0;for(let r=0;r<=t;r+=1){if(r===tb)continue;let t=t8.current[r];if(!t)continue;let n=t.getBoundingClientRect(),a=n.top+n.height/2-i;if("down"===e?a<=4:a>=-4)continue;let d=1e3*Math.abs(a)+Math.abs(n.left+n.width/2-o);d<l&&(s=r,l=d)}return s>=0?s:"down"===e?Math.min(t,tb+1):Math.max(0,tb-1)},[rS.length,tb]),r4=(0,o.useCallback)(e=>{let t=e.nativeEvent,n=Date.now()-t5.current<100,o=t4.current||t.isComposing||229===t.keyCode;if("Enter"===e.key&&!e.shiftKey&&(o||n)){n&&e.preventDefault();return}if((e.ctrlKey||e.metaKey)&&!e.altKey&&!e.shiftKey&&"i"===e.key.toLowerCase()&&!o&&ei){e.preventDefault();let t=e.currentTarget,r=t.selectionStart??t.value.length,n=t.selectionEnd??r,o=t.value.slice(0,r),i=t.value.slice(n),s=o&&!/[\s@]$/.test(o)?" ":"",l=`${o}${s}@${i}`,a=o.length+s.length+1;eO(l),tR(dD(l.slice(0,a))),tM(!0),requestAnimationFrame(()=>{t.focus(),t.setSelectionRange(a,a)});return}if(tN&&!o){if("ArrowDown"===e.key){e.preventDefault(),tF(e=>Math.min(Math.max(0,(q?.length??0)-1),e+1));return}if("ArrowUp"===e.key){e.preventDefault(),tF(e=>Math.max(0,e-1));return}if("Escape"===e.key){e.preventDefault(),tA(!1);return}if(("Tab"===e.key||"Enter"===e.key&&!e.shiftKey)&&q?.[tP]){e.preventDefault(),rX(q[tP]);return}}if(tv&&null!==rw){if("ArrowDown"===e.key){e.preventDefault(),tk(r6("down"));return}if("ArrowUp"===e.key){e.preventDefault(),tk(r6("up"));return}if("ArrowRight"===e.key){e.preventDefault(),tk(r6("right"));return}if("ArrowLeft"===e.key){e.preventDefault(),tk(r6("left"));return}if("Escape"===e.key){e.preventDefault(),ty(!1);return}if(("Tab"===e.key||"Enter"===e.key&&!e.shiftKey)&&rS[tb]){e.preventDefault(),rZ(rS[tb]);return}}if(tI&&null!==tT&&!o){if("ArrowDown"===e.key){e.preventDefault(),tL(e=>cl(e,rV.length,1));return}if("ArrowUp"===e.key){e.preventDefault(),tL(e=>cl(e,rV.length,-1));return}if("Escape"===e.key){e.preventDefault(),tM(!1);return}if(("Tab"===e.key||"Enter"===e.key&&!e.shiftKey)&&rV[tW]){e.preventDefault(),rG(rV[tW]);return}}if(null!==rI&&rP.length>0&&!o){if("ArrowDown"===e.key){e.preventDefault(),rD(e=>Math.min(Math.max(0,rP.length-1),e+1));return}if("ArrowUp"===e.key){e.preventDefault(),rD(e=>Math.max(0,e-1));return}if("Escape"===e.key){e.preventDefault(),rM(null);return}if(("Tab"===e.key||"Enter"===e.key&&!e.shiftKey)&&rP[rF]){e.preventDefault(),rB(rF);return}}if("ArrowUp"===e.key&&!o&&!l&&(q?.length??0)>0&&0===eH.trim().length){e.preventDefault(),ty(!1),tM(!1),tF(0),tA(!0);return}if("Escape"===e.key&&!o&&l&&r){e.preventDefault(),r();return}if("Enter"===e.key&&!e.shiftKey){if("ctrl-enter"===tC&&!(e.ctrlKey||e.metaKey))return;e.preventDefault(),l&&(i||s)?r2(i?"steer":"followup"):rj()}},[l,i,s,r,tv,rw,rS,tb,rZ,r2,rj,r6,tI,tT,rV,tW,rG,rI,rP,rF,rB,tC,ei,tN,q,tP,rX,eH]),r5=(0,o.useCallback)(()=>{let e=tJ.current;e&&(e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,200)}px`)},[]),r3=(0,o.useCallback)(e=>{let t=Array.from(e.clipboardData?.items??[]),r=t.filter(e=>e.type.startsWith("image/"));if(r.length){e.preventDefault(),rc(r.map(e=>e.getAsFile()).filter(e=>null!==e));return}let n=function(e,t){if(!e)return[];let r=[],n=Array.from(e.files??[]);for(let e of n){let t=e.path;"string"==typeof t&&t.trim()&&r.push(t.trim())}if(r.length>0)return Array.from(new Set(r));for(let t of Array.from(e.items??[]))if("file"===t.kind){let e=t.getAsFile(),n=e?.path;"string"==typeof n&&n.trim()&&r.push(n.trim())}if(r.length>0)return Array.from(new Set(r));for(let t of dF)try{let n=e.getData(t);if(n){let e=function(e){if(!e)return[];let t=e.split(/\r?\n/),r=[];for(let e of t){let t=e.trim();!(!t||t.startsWith("#"))&&"copy"!==t&&"cut"!==t&&(t.startsWith("file://")?r.push(dP(t)):(t.startsWith("/")||/^[a-zA-Z]:[\\/]/.test(t))&&r.push(t))}return r}(n);e.length>0&&r.push(...e)}}catch{}if(r.length>0)return Array.from(new Set(r));try{let t=e.getData("text/plain")||e.getData("text");if(t){let e=t.split(/\r?\n/).map(e=>e.trim()).filter(Boolean),n=e.filter(e=>e.startsWith("file://"));if(n.length>0&&n.length===e.length)for(let e of n)r.push(dP(e))}}catch{}if(r.length>0)return Array.from(new Set(r));if(t?.fallbackToFileName&&n.length>0)for(let e of n)e.name&&r.push(e.name);return Array.from(new Set(r))}(e.clipboardData,{fallbackToFileName:!0});if(n.length>0){e.preventDefault();let t=function(e,t=" "){return e&&0!==e.length?1===e.length?e[0]:e.map(e=>{let t=e.trim();return!/\s/.test(t)||t.startsWith('"')||t.startsWith("'")?t:`"${t}"`}).join(t):""}(n),r=tJ.current,o=r?.selectionStart??eH.length,i=r?.selectionEnd??eH.length;eO(eH.slice(0,o)+t+eH.slice(i)),requestAnimationFrame(()=>{if(r){let e=o+t.length;r.selectionStart=e,r.selectionEnd=e,r5()}});return}if(!t.find(e=>e.type.startsWith("text/plain")))return;let o=e.clipboardData.getData("text/plain");if(!o)return;let i=e.clipboardData.getData("text/html");if(i){let t=new DOMParser().parseFromString(i,"text/html"),r=function(e,t){let r="",n=0,o=!1;for(let{label:i,href:s,occurrence:l}of t){if(!i||!s)continue;let t=0;for(let r=0;r<=l&&!((t=e.indexOf(i,r?t+i.length:0))<0);r++);if(t<n)continue;let a=i.replace(/([\\[\]])/g,"\\$1"),d=s.replace(/([\\()])/g,"\\$1");r+=`${e.slice(n,t)}[${a}](${d})`,n=t+i.length,o=!0}return o?r+e.slice(n):null}(o,Array.from(t.querySelectorAll("a[href]"),e=>{let r=e.textContent??"",n=t.createRange();return n.setStart(t.body,0),n.setEndBefore(e),{label:r,href:e.getAttribute("href")?.trim()??"",occurrence:r?n.toString().split(r).length-1:0}}));if(null!==r){let t=tJ.current,n=t?.selectionStart??eH.length,o=t?.selectionEnd??eH.length,i=eH.slice(0,n)+r+eH.slice(o);e.preventDefault(),eO(i),tA(!1),rR(i,n+r.length),requestAnimationFrame(()=>{t&&(t.focus(),t.setSelectionRange(n+r.length,n+r.length),r5())});return}}let s=o.split(/\r?\n/).length;if(o.length<2e3&&s<20)return;e.preventDefault();let l=`paste-${++eX.current}`,a=eL("desktop.pastedLabel",{id:eX.current,lines:s}),d=tJ.current,c=d?.selectionStart??eH.length,u=d?.selectionEnd??eH.length,p=eH.slice(0,c),h=eH.slice(u),g=!(p.length>0)||p.endsWith("\n")||p.endsWith(" ")?"":"\n\n";eO(p+g+a+h),eU(e=>[...e,{id:l,label:a,text:o}]),requestAnimationFrame(()=>{if(!d)return;let e=c+g.length+a.length;d.setSelectionRange(e,e),d.focus()})},[rc,eL,eH,r5]);(0,o.useEffect)(()=>{tP>=(q?.length??0)&&tF(Math.max(0,(q?.length??0)-1))},[tP,q]),(0,o.useEffect)(()=>{re.current.length=q?.length??0},[q]),(0,o.useEffect)(()=>{tN&&re.current[tP]?.scrollIntoView({block:"nearest",inline:"nearest"})},[tP,tN]),(0,o.useEffect)(()=>{if(null===rw){ty(!1),tk(0),t3.current=!1;return}ty(!0),tk(0),!t3.current&&ee&&(t3.current=!0,Promise.resolve(ee()).catch(()=>{t3.current=!1}))},[rw,ee]),(0,o.useEffect)(()=>{tb>=rS.length&&tk(Math.max(0,rS.length-1))},[rS.length,tb]),(0,o.useEffect)(()=>{t8.current.length=rS.length},[rS.length]),(0,o.useEffect)(()=>{tv&&t8.current[tb]?.scrollIntoView({block:"nearest",inline:"nearest"})},[tb,tv]);let r8=c&&c.length>0?c.map(e=>({provider:e.provider,modelId:e.id,name:e.name,input:e.input})).sort(d9):Object.entries(d??{}).map(([e,t])=>({provider:a?.provider??"unknown",modelId:e,name:t})).sort(d9),r7=[];for(let e of r8){let t=r7.find(t=>t.provider===e.provider);t?t.options.push(e):r7.push({provider:e.provider,options:[e]})}let r9=a?r8.find(e=>e.modelId===a.modelId&&e.provider===a.provider)?.name??a.modelId:null,ne=k?Math.max(0,k.tokensBefore-k.estimatedTokensAfter):0,nt=k?`${eL("desktop.compacted")} ${cr(k.tokensBefore)} -> ${cr(k.estimatedTokensAfter)} ${eL("desktop.tokens")} (${cr(ne)} ${eL("desktop.saved")})`:null,nr=P&&"auto"!==P?P:null,nn="auto"!==(ep=P??"auto")&&B?B[ep]??eA[ep]:eA[ep],no=Object.entries(d8).find(([,e])=>e===(w??"default"))?.[0],ni="plan"===w?eL("desktop.planModeLabel"):eP[no??"default"];(0,o.useEffect)(()=>{let e=e=>{tY.current&&!tY.current.contains(e.target)&&tG.current&&!tG.current.contains(e.target)&&eQ(!1),tZ.current&&!tZ.current.contains(e.target)&&tt(!1),t0.current&&!t0.current.contains(e.target)&&td(!1),t1.current&&!t1.current.contains(e.target)&&ti(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),(0,o.useEffect)(()=>{let e=null,t=()=>{e=null;let t=window.visualViewport;e6({height:t?.height??window.innerHeight,width:t?.width??window.innerWidth,offsetTop:t?.offsetTop??0})},r=()=>{null!==e&&window.cancelAnimationFrame(e),e=window.requestAnimationFrame(t)};return r(),window.addEventListener("resize",r),window.visualViewport?.addEventListener("resize",r),window.visualViewport?.addEventListener("scroll",r),window.addEventListener("focusin",r),window.addEventListener("focusout",r),window.addEventListener("pageshow",r),()=>{window.removeEventListener("resize",r),window.visualViewport?.removeEventListener("resize",r),window.visualViewport?.removeEventListener("scroll",r),window.removeEventListener("focusin",r),window.removeEventListener("focusout",r),window.removeEventListener("pageshow",r),null!==e&&window.cancelAnimationFrame(e)}},[]),(0,o.useEffect)(()=>{eZ&&tX.current?.focus()},[eZ]);let[ns,nl]=(0,o.useState)(null);return(0,o.useEffect)(()=>{if(!ei||!es)return void nl(null);let e=!1,t=async()=>{try{let t=await fetch("/api/tasks/projects"),{projects:r}=await t.json(),n=r.find(e=>ei===e||ei.startsWith(e+"/")||e.startsWith(ei+"/"));if(!n){e||nl(null);return}let o=await (0,dU.Vk)(n);if(e)return;nl({running:o.filter(e=>["running","awaiting_input","preparing","merging"].includes(e.status)).length,todo:o.filter(e=>["todo","queued"].includes(e.status)).length})}catch{e||nl(null)}};t();let r=new EventSource("/api/tasks/events");return r.onmessage=()=>void t(),()=>{e=!0,r.close()}},[ei,es]),(0,n.jsxs)("fieldset",{disabled:tD,"aria-busy":tD,style:{flexShrink:0,minWidth:0,margin:0,border:0,background:"transparent",padding:eW?"0 16px max(15px, env(safe-area-inset-bottom))":"0 16px 15px",paddingRight:eW?16:34,opacity:tD?.5:1,transition:"opacity 0.15s"},children:[(0,n.jsx)("input",{ref:t6,type:"file",accept:"image/*",multiple:!0,style:{display:"none"},onChange:e=>{rc(Array.from(e.target.files??[])),e.target.value=""}}),(0,n.jsxs)("div",{style:{maxWidth:820,margin:"0 auto"},children:[ns&&(ns.running>0||ns.todo>0)&&(0,n.jsxs)("button",{type:"button",onClick:()=>window.dispatchEvent(new CustomEvent("pi:open-tasks-view")),title:eL("desktop.taskStatusHint"),style:{display:"inline-flex",alignItems:"center",gap:6,marginBottom:8,padding:"3px 10px",borderRadius:999,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text-muted)",fontSize:11,cursor:"pointer",transition:"border-color 0.12s, color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--accent)",e.currentTarget.style.borderColor="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:[(0,n.jsx)(F.m,{size:12,"aria-hidden":"true"}),ns.running>0&&(0,n.jsxs)("span",{style:{color:"var(--accent)"},children:[ns.running," ",eL("desktop.taskRunning")]}),ns.running>0&&ns.todo>0&&(0,n.jsx)("span",{"aria-hidden":"true",children:"\xb7"}),ns.todo>0&&(0,n.jsxs)("span",{children:[ns.todo," ",eL("desktop.taskTodo")]})]}),u&&u.length>0&&(0,n.jsx)("div",{role:"status",style:{marginBottom:8,padding:"6px 10px",borderRadius:6,border:"1px solid color-mix(in srgb, var(--accent-orange) 45%, var(--border))",background:"color-mix(in srgb, var(--accent-orange) 9%, var(--bg-panel))",color:"var(--text-muted)",fontSize:12,lineHeight:1.45},children:u.join(" ")}),(_?.steering.length??0)+(_?.followUp.length??0)>0&&(0,n.jsxs)("div",{style:{marginBottom:8,border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",padding:"5px 0",maxHeight:"30dvh",overflowY:"auto"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,padding:"2px 8px 4px 10px"},children:[(0,n.jsxs)("span",{style:{fontSize:10,fontFamily:"var(--font-mono)",color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:.4},children:[eL("desktop.queued")," \xb7 ",(_?.steering.length??0)+(_?.followUp.length??0)]}),K&&(0,n.jsxs)("button",{onClick:K,title:eL("desktop.recallQueuedMessages"),style:{display:"flex",alignItems:"center",gap:6,padding:"4px 12px",fontSize:12,color:"var(--text)",background:"transparent",border:"1px solid var(--border)",borderRadius:7,cursor:"pointer",transition:"background 0.12s, border-color 0.12s",whiteSpace:"nowrap"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.borderColor="color-mix(in srgb, var(--accent) 45%, var(--border))"},onMouseLeave:e=>{e.currentTarget.style.background="transparent",e.currentTarget.style.borderColor="var(--border)"},children:[(0,n.jsx)(d_.Y,{size:13}),eL("desktop.recallToInput")]})]}),_?.steering.map((e,t)=>(0,n.jsx)(cm,{kind:"steer",label:eL("desktop.steer"),text:e,index:t,total:_.steering.length,onMove:V?e=>void rm("steer",t,e):void 0,onRecall:J?()=>void ry("steer",t):void 0,onRemove:X?()=>void rv("steer",t):void 0},`steer-${t}`)),_?.followUp.map((e,t)=>(0,n.jsx)(cm,{kind:"follow-up",label:eL("desktop.followUp"),text:e,index:t,total:_.followUp.length,onMove:V?e=>void rm("followUp",t,e):void 0,onRecall:J?()=>void ry("followUp",t):void 0,onRemove:X?()=>void rv("followUp",t):void 0},`followup-${t}`))]}),ra&&(0,n.jsx)("div",{style:{marginBottom:8,padding:"5px 10px",borderRadius:6,border:"1px solid color-mix(in srgb, var(--accent) 40%, var(--border))",background:"color-mix(in srgb, var(--accent) 8%, var(--bg-panel))",color:"var(--text-muted)",fontSize:12},children:eL("desktop.recalledEditing")}),U&&(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.jsx)(z.B,{size:11,style:{flexShrink:0}}),eL("desktop.retrying")," (",U.attempt,"/",U.maxAttempts,")…",U.errorMessage&&(0,n.jsxs)("span",{style:{opacity:.7,marginLeft:4},children:["— ",U.errorMessage]})]}),nt&&(0,n.jsxs)("div",{style:{marginBottom:8,padding:"5px 10px",background:"rgba(16,185,129,0.08)",border:"1px solid rgba(16,185,129,0.24)",borderRadius:6,fontSize:12,color:"rgba(5,150,105,0.95)",display:"flex",alignItems:"center",gap:6},children:[(0,n.jsx)(f.S,{size:11,style:{flexShrink:0}}),nt]}),th.length>0&&(0,n.jsx)("div",{style:{display:"flex",gap:6,marginBottom:6,flexWrap:"wrap"},children:th.map((e,t)=>(0,n.jsxs)("div",{style:{position:"relative",flexShrink:0},children:[(0,n.jsx)(lL,{src:e.previewUrl,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"}})},e.previewUrl),(0,n.jsx)("button",{type:"button",onClick:()=>rg(t),title:eL("desktop.removeImage"),"aria-label":eL("desktop.removeImage"),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.jsx)(g.u,{size:8})})]},t))}),(0,n.jsxs)("div",{style:{position:"relative"},children:[tN&&q.length>0&&(0,n.jsxs)("div",{style:{position:"absolute",left:0,right:0,bottom:"calc(100% + 8px)",zIndex:120,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 -6px 20px rgba(0,0,0,0.12)",overflow:"hidden",maxHeight:"min(38vh, 300px)"},children:[(0,n.jsxs)("div",{style:{padding:"4px 8px",borderBottom:"1px solid var(--border)",display:"flex",justifyContent:"space-between",color:"var(--text-dim)",fontSize:11},children:[(0,n.jsx)("span",{children:eL("desktop.inputHistory")}),(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)"},children:eL("desktop.tabOrEnter")})]}),(0,n.jsx)("div",{style:{maxHeight:"calc(min(38vh, 300px) - 24px)",overflowY:"auto",padding:4},children:q.map((e,t)=>(0,n.jsxs)("button",{ref:e=>{re.current[t]=e},type:"button",onMouseDown:t=>{t.preventDefault(),rX(e)},onMouseEnter:()=>tF(t),style:{width:"100%",display:"flex",alignItems:"flex-start",gap:8,padding:"5px 6px",border:"none",borderRadius:5,background:t===tP?"var(--bg-selected)":"transparent",color:"var(--text)",cursor:"pointer",textAlign:"left"},children:[(0,n.jsx)("span",{style:{flexShrink:0,color:"var(--text-dim)",fontFamily:"var(--font-mono)",fontSize:11},children:t+1}),(0,n.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:12},children:e})]},`${t}:${e}`))})]}),tv&&null!==rw&&(0,n.jsxs)("div",{style:{position:"absolute",left:0,right:0,bottom:"calc(100% + 8px)",zIndex:120,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 -6px 20px rgba(0,0,0,0.12)",overflow:"hidden",maxHeight:"min(38vh, 300px)"},children:[(0,n.jsxs)("div",{style:{padding:"4px 8px",borderBottom:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,fontSize:11,color:"var(--text-dim)"},children:[(0,n.jsx)("span",{children:Q?eL("desktop.loadingCommands"):`${eL("desktop.slashCommands")} \xb7 ${rz}`}),(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)"},children:eL("desktop.tabOrEnter")})]}),(0,n.jsx)("div",{style:{maxHeight:"calc(min(38vh, 300px) - 24px)",overflowY:"auto",padding:4},children:Q||0!==rS.length?rC.map(e=>(0,n.jsxs)("section",{style:{marginBottom:6},children:[(0,n.jsxs)("div",{style:{position:"sticky",top:-4,zIndex:1,display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,padding:"2px 0 4px",background:"var(--bg)",color:"var(--text-dim)",fontSize:10,fontWeight:600,textTransform:"uppercase"},children:[(0,n.jsx)("span",{children:eD[e.source]}),(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",fontWeight:500},children:e.items.length})]}),(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:1},children:e.items.map(({command:e,index:t})=>{let r=t===tb;return(0,n.jsxs)("button",{ref:e=>{t8.current[t]=e},type:"button",onMouseDown:t=>{t.preventDefault(),rZ(e)},onMouseEnter:()=>tk(t),style:{width:"100%",display:"flex",alignItems:"center",gap:8,padding:"3px 6px",border:"none",borderRadius:5,background:r?"var(--bg-selected)":"none",color:"var(--text)",cursor:"pointer",textAlign:"left"},children:[(0,n.jsxs)("span",{style:{fontSize:12.5,fontFamily:"var(--font-mono)",whiteSpace:"nowrap",flexShrink:0},children:["/",e.name]}),e.description&&(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:e.description}),cs(e,tw)&&(0,n.jsx)("span",{style:{marginLeft:"auto",flexShrink:0,padding:"1px 5px",borderRadius:999,border:"1px solid var(--border)",color:"var(--text-dim)",fontSize:10},children:eL("desktop.dormant")})]},`${e.source}:${e.name}`)})})]},e.source)):(0,n.jsx)("div",{style:{padding:"2px 2px 2px",fontSize:12,color:"var(--text-dim)"},children:eL("desktop.noSlashCommands")})})]}),tI&&null!==tT&&(eh=t_&&(!tB||tB.cwd!==ei),eg=`${rV.length} ${eL(1===rV.length?"desktop.match":"desktop.matches")}`,ex=tB?.truncated&&!rK?tT.query?` \xb7 ${eL("desktop.searchingAllFiles")}`:` \xb7 ${eL("desktop.indexTruncated")}`:"",(0,n.jsxs)("div",{ref:t7,style:{position:"absolute",left:0,right:0,bottom:"calc(100% + 8px)",zIndex:120,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 -6px 20px rgba(0,0,0,0.12)",overflow:"hidden",boxSizing:"border-box",display:"flex",flexDirection:"column",maxHeight:null===tE?"min(30vh, 240px)":`min(30vh, 240px, ${tE}px)`},children:[(0,n.jsxs)("div",{style:{padding:"4px 8px",borderBottom:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,fontSize:11,color:"var(--text-dim)",flexShrink:0},children:[(0,n.jsx)("span",{children:eh?eL("desktop.loadingFiles"):`${eL("desktop.files")} \xb7 ${eg}${ex}`}),(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)"},children:eL("desktop.tabOrEnter")})]}),(0,n.jsx)("div",{style:{flex:"1 1 auto",minHeight:0,overflowY:"auto",padding:2},children:eh||0!==rV.length?rV.map((e,t)=>{let r=t===tW,o=e.path.split("/").pop()??e.path,i=e.path.slice(0,e.path.length-o.length);return(0,n.jsxs)("button",{ref:e=>{t9.current[t]=e},type:"button",onMouseDown:t=>{t.preventDefault(),rG(e)},onMouseEnter:()=>tL(t),style:{width:"100%",display:"flex",alignItems:"center",gap:5,padding:"3px 6px",border:"none",borderRadius:5,background:r?"var(--bg-selected)":"none",color:"var(--text)",cursor:"pointer",textAlign:"left",fontSize:12.5,fontFamily:"var(--font-mono)"},children:[(0,n.jsx)("span",{style:{flexShrink:0,display:"flex",alignItems:"center"},children:e.isDir?(0,n.jsx)(oz,{size:14,name:o}):oE(o,14)}),(0,n.jsxs)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[i&&(0,n.jsx)("span",{style:{color:"var(--text-dim)"},children:i}),o,e.isDir&&(0,n.jsx)("span",{style:{color:"var(--text-dim)"},children:"/"})]})]},`${e.isDir?"d":"f"}:${e.path}`)}):(0,n.jsx)("div",{style:{padding:"4px 6px",fontSize:12,color:"var(--text-dim)"},children:rq&&!rK?eL("desktop.searching"):eL("desktop.noMatchingFiles")})})]})),null!==rI&&rP.length>0&&(0,n.jsxs)("div",{style:{position:"absolute",left:0,right:0,bottom:"calc(100% + 8px)",zIndex:120,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 -6px 20px rgba(0,0,0,0.12)",overflow:"hidden",maxHeight:"min(30vh, 240px)"},children:[(0,n.jsx)("div",{style:{padding:"4px 8px",borderBottom:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"space-between"},children:(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)",fontWeight:600},children:[rP.length," ",eL("desktop.snippetMatches")]})}),(0,n.jsx)("div",{style:{maxHeight:"min(26vh, 210px)",overflowY:"auto"},children:rP.map((e,t)=>(0,n.jsxs)("button",{type:"button",onMouseEnter:()=>rD(t),onClick:()=>rB(t),style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"6px 10px",background:t===rF?"var(--bg-selected)":"none",border:"none",color:t===rF?"var(--accent)":"var(--text)",cursor:"pointer",fontSize:12,textAlign:"left"},children:[(0,n.jsx)("span",{style:{color:"var(--accent)",fontFamily:"var(--font-mono)",fontSize:11},children:"#"}),(0,n.jsx)("span",{style:{fontWeight:600,flexShrink:0},children:e.name}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text-muted)",fontSize:11},children:e.content.split("\n")[0]})]},e.id))})]}),(0,n.jsxs)("div",{className:`chat-input-shell ${l&&(i||s)?"is-streaming":""} ${"yolo"===I?"is-yolo":""}`,ref:tQ,onClick:e=>{e.target.closest("button, input, select, [role=button]")||tJ.current?.focus()},style:{display:"flex",flexDirection:"column",alignItems:"stretch",gap:0,padding:0,transition:"border-color 0.15s, background 0.15s, box-shadow 0.15s"},children:[l&&(0,n.jsx)("div",{className:"chat-input-streaming-overlay hatch-45","aria-hidden":"true"}),el,l&&(i||s)&&(0,n.jsxs)("div",{className:"chat-input-streaming-actions",children:[i&&(0,n.jsx)("button",{type:"button",className:"chat-input-streaming-action chat-input-streaming-action-steer",onClick:()=>r2("steer"),disabled:!rT,title:eL("desktop.injectMessageNow"),"aria-label":eL("desktop.steer"),children:(0,n.jsx)(dq.A,{size:15})}),s&&(0,n.jsx)("button",{type:"button",className:"chat-input-streaming-action",onClick:()=>r2("followup"),disabled:!rT,title:eL("desktop.queueMessageAfterFinish"),"aria-label":eL("desktop.followUp"),children:(0,n.jsx)(dV.M,{size:15})})]}),eV&&(0,n.jsx)("div",{role:"alert",style:{margin:"0 0 6px",padding:"4px 8px",fontSize:11,lineHeight:1.5,color:"var(--error, #e5484d)",border:"1px solid var(--error, #e5484d)",borderRadius:6},children:eV}),eB.length>0&&(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:4,marginBottom:6},children:eB.map(e=>{let t=e_.includes(e.id);return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"4px 8px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-secondary)",fontSize:11,color:"var(--text-muted)"},children:[(0,n.jsx)(dK.d,{size:12,"aria-hidden":"true"}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"var(--font-mono)"},children:e.label}),(0,n.jsx)("button",{type:"button",onClick:()=>eq(r=>t?r.filter(t=>t!==e.id):[...r,e.id]),title:eL(t?"desktop.pastedHidePreview":"desktop.pastedShowPreview"),style:{background:"none",border:"none",cursor:"pointer",color:"var(--text-muted)",padding:2,display:"flex"},children:(0,n.jsx)(tj.b,{size:12,"aria-hidden":"true"})}),(0,n.jsx)("button",{type:"button",onClick:()=>{eU(t=>t.filter(t=>t.id!==e.id)),eO(t=>t.split(e.label).join(""))},title:eL("desktop.pastedRemove"),style:{background:"none",border:"none",cursor:"pointer",color:"var(--text-muted)",padding:2,display:"flex"},children:(0,n.jsx)(T.u,{size:12,"aria-hidden":"true"})}),t&&(0,n.jsx)("div",{style:{position:"relative"},children:(0,n.jsx)("pre",{style:{position:"absolute",left:0,right:0,top:"calc(100% + 4px)",zIndex:50,maxHeight:200,overflow:"auto",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:6,padding:"8px 10px",fontSize:11,lineHeight:1.5,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:e.text})})]},e.id)})}),(0,n.jsxs)("div",{className:"chat-input-editor-row",style:{borderColor:tf?"var(--tool-bg)":void 0},children:["goal"===C&&$&&"idle"!==$.status&&(0,n.jsxs)("span",{style:{flexShrink:0,display:"inline-flex",alignItems:"center",gap:6,marginRight:8,padding:"2px 8px",borderRadius:6,background:"complete"===$.status?"color-mix(in srgb, var(--accent-green, #22c55e) 14%, transparent)":"blocked"===$.status||"paused"===$.status?"color-mix(in srgb, #f59e0b 14%, transparent)":"color-mix(in srgb, var(--accent) 12%, transparent)",color:"complete"===$.status?"var(--accent-green, #22c55e)":"blocked"===$.status||"paused"===$.status?"var(--status-warning)":"var(--accent)",fontSize:11,fontWeight:600,whiteSpace:"nowrap",userSelect:"none"},title:$.goalText??"",children:[(0,n.jsx)(aW.d,{size:12,weight:"fill","aria-hidden":"true"}),"running"===$.status&&(0,n.jsxs)("span",{children:[eL("desktop.goalRunning")," \xb7 ",$.turnsUsed,"/",$.turnsLimit]}),"complete"===$.status&&(0,n.jsx)("span",{children:eL("desktop.goalComplete")}),"blocked"===$.status&&(0,n.jsx)("span",{children:eL("desktop.goalBlocked")}),"paused"===$.status&&(0,n.jsx)("span",{children:eL("desktop.goalPaused")}),$.noProgressTurns>0&&"running"===$.status&&(0,n.jsxs)("span",{style:{opacity:.8},children:["\xb7 ",eL("desktop.goalNoProgress",{n:$.noProgressTurns})]}),"running"===$.status&&(0,n.jsx)("button",{type:"button",onClick:L,title:eL("desktop.goalPause"),"aria-label":eL("desktop.goalPause"),style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:16,height:16,padding:0,background:"none",border:"none",borderRadius:4,color:"inherit",cursor:"pointer",fontSize:11},children:eL("desktop.goalPauseShort")}),("paused"===$.status||"blocked"===$.status)&&(0,n.jsx)("button",{type:"button",onClick:N,title:eL("desktop.goalResume"),"aria-label":eL("desktop.goalResume"),style:{display:"inline-flex",alignItems:"center",justifyContent:"center",padding:"0 4px",background:"none",border:"none",borderRadius:4,color:"inherit",cursor:"pointer",fontSize:11,fontWeight:600},children:eL("desktop.goalResumeShort")}),(0,n.jsx)("button",{type:"button",onClick:A,title:eL("desktop.goalStop"),"aria-label":eL("desktop.goalStop"),style:{display:"inline-flex",alignItems:"center",justifyContent:"center",padding:"0 3px",background:"none",border:"none",borderRadius:4,color:"inherit",cursor:"pointer",fontSize:11,opacity:.75},children:"✕"})]}),(0,n.jsx)("textarea",{ref:tJ,value:eH,spellCheck:!1,onChange:e=>{eO(e.target.value),rR(e.target.value,e.target.selectionStart),rH(e.target.value,e.target.selectionStart)},onSelect:e=>{let t=e.currentTarget;rR(t.value,t.selectionStart)},onKeyDown:r4,onCompositionStart:()=>{t4.current=!0},onCompositionEnd:e=>{t4.current=!1,t5.current=Date.now();let t=e.currentTarget;rR(t.value,t.selectionStart)},onInput:r5,onPaste:r3,placeholder:l&&(i||s)?eL("desktop.steerOrQueueFollowUp"):l?eL("desktop.agentRunning"):eL("desktop.messageWithCommands"),rows:1,className:"chat-input-textarea",style:{flex:1,background:"none",border:"none",outline:"none",resize:"none",color:"var(--text)",minHeight:24,maxHeight:200,padding:0,overflow:"auto"}})]}),tf&&(0,n.jsxs)("div",{style:{marginTop:4,padding:"2px 8px",fontSize:11,color:tm?"var(--text-muted)":"var(--accent)"},children:[eL("desktop.shellCommand")," \xb7 ",tm?eL("desktop.shellOutputLocal"):eL("desktop.shellOutputModel")]}),(0,n.jsxs)("div",{className:"chat-input-toolbar",style:{display:"flex",alignItems:"center",gap:4},children:[(0,n.jsxs)("div",{ref:t1,className:"chat-input-toolbar-attach",style:{position:"relative"},children:[(0,n.jsx)("button",{onClick:e=>{let t=e.currentTarget.getBoundingClientRect();tl({top:t.top,left:t.left,width:t.width}),ti(e=>!e)},title:eL("desktop.attachMenu"),"aria-label":eL("desktop.attachMenu"),"aria-expanded":to,style:{flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",width:24,height:24,padding:0,background:to?"var(--bg-hover)":"none",border:"none",borderRadius:6,color:th.length?"var(--accent)":"var(--text-muted)",cursor:"pointer",transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color=th.length?"var(--accent)":"var(--text)"},onMouseLeave:e=>{e.currentTarget.style.background=to?"var(--bg-hover)":"none",e.currentTarget.style.color=th.length?"var(--accent)":"var(--text-muted)"},children:(0,n.jsx)(b.c,{size:14})}),to&&ts&&(ef=[{id:"upload",label:eL("desktop.attachUpload"),desc:eL("desktop.attachUploadDesc"),icon:R.J},{id:"reference",label:eL("desktop.attachReference"),desc:eL("desktop.attachReferenceDesc"),icon:dd.sj},{id:"sessions",label:eL("desktop.attachSessions"),desc:eL("desktop.attachSessionsDesc"),icon:dJ.v},{id:"slash",label:eL("desktop.attachCommands"),desc:eL("desktop.attachCommandsDesc"),icon:x.C}],em=window.visualViewport?.height??window.innerHeight,ev=window.innerWidth,ey=Math.min(ts.left,ev-220-8),eb=em-ts.top+6,(0,n.jsx)("div",{role:"menu",style:{position:"fixed",left:ey,bottom:eb,zIndex:1200,width:220,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:12,boxShadow:"0 12px 32px rgba(0,0,0,0.22)",padding:4},children:ef.map(e=>{let t="upload"===e.id&&!eN;return(0,n.jsxs)("button",{type:"button",role:"menuitem",disabled:t,title:t?eL("desktop.imageInputUnsupported"):void 0,onClick:()=>{ti(!1),"upload"===e.id?t6.current?.click():"reference"===e.id?rQ():"sessions"===e.id?r0():"slash"===e.id&&r1()},style:{display:"flex",alignItems:"center",gap:10,width:"100%",padding:"8px 10px",background:e.active?"var(--bg-selected)":"none",border:"none",borderRadius:8,cursor:t?"not-allowed":"pointer",textAlign:"left",opacity:t?.45:1,transition:"background 0.12s"},onMouseEnter:r=>{e.active||t||(r.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:t=>{t.currentTarget.style.background=e.active?"var(--bg-selected)":"none"},children:[(0,n.jsx)(e.icon,{size:16,weight:e.active?"fill":"regular",color:e.active?"var(--accent)":"var(--text-muted)","aria-hidden":"true"}),(0,n.jsxs)("span",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("span",{style:{display:"block",fontSize:12.5,fontWeight:550,color:"var(--text)"},children:e.label}),(0,n.jsx)("span",{style:{display:"block",fontSize:10.5,color:"var(--text-muted)",marginTop:1,lineHeight:1.4},children:t?eL("desktop.imageInputUnsupported"):e.desc})]}),e.active?(0,n.jsx)(f.S,{size:12,weight:"bold",color:"var(--accent)","aria-hidden":"true"}):null]},e.id)})}))]}),(0,n.jsx)("div",{className:"chat-input-toolbar-left",style:{flex:"0 0 auto",minWidth:0,display:"flex",alignItems:"center",gap:2},children:M&&(0,n.jsx)(d5,{collaborationMode:C,onCollaborationModeChange:M,toolApprovalMode:I,onToolApprovalModeChange:E,disabled:l})}),!eW&&(0,n.jsx)("div",{className:"chat-input-toolbar-spacer",style:{flex:1}}),(0,n.jsx)("div",{ref:t2,className:"chat-input-toolbar-controls",style:{flex:eW?"1 1 auto":"0 1 auto",minWidth:0,display:"flex",alignItems:"center",justifyContent:"flex-end",position:"relative",marginLeft:eW?0:"auto"},children:(0,n.jsxs)("div",{className:"chat-input-toolbar-actions",style:{display:"flex",alignItems:"center",gap:eW?1:2,justifyContent:"flex-end",...eW?{flex:"1 1 auto",minWidth:0}:null},children:[H&&(0,n.jsxs)("div",{ref:t0,className:"chat-input-toolbar-thinking",style:{position:"relative"},children:[(0,n.jsxs)("button",{onClick:e=>{if(l)return;let t=e.currentTarget.getBoundingClientRect();tu({top:t.top,left:t.left,width:t.width}),td(e=>!e)},disabled:l,title:l?eL("chat.currentReasoning",{level:nn}):eL("chat.changeReasoning",{level:nn}),"aria-label":eL("chat.changeReasoningLabel"),style:{display:"flex",alignItems:"center",justifyContent:"center",gap:5*!eW,padding:eW?0:"0 6px",width:eW?24:void 0,height:24,background:ta?"var(--bg-hover)":"none",border:"none",borderRadius:6,color:(P??"auto")==="off"?"var(--text-dim)":"var(--accent)",cursor:l?"not-allowed":"pointer",fontSize:12,opacity:l?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{l||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{e.currentTarget.style.background=ta?"var(--bg-hover)":"none"},children:[(0,n.jsx)(ct,{level:P??"auto"}),!eW&&(0,n.jsx)("span",{style:{whiteSpace:"nowrap"},children:nn})]}),ta&&tc&&(ek=window.visualViewport?.height??window.innerHeight,ew=Math.min(240,(ej=window.innerWidth)-16),eS=Math.min(tc.left,ej-ew-8),eC=ek-tc.top+4,ez=Math.min(360,Math.max(120,Math.min(tc.top-8,.6*ek))),(0,n.jsx)("div",{style:{position:"fixed",bottom:eC,left:eS,zIndex:2001,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 4px 24px rgba(0,0,0,0.12)",overflow:"hidden",minWidth:200,maxWidth:ew,maxHeight:ez,overflowY:"auto"},children:ce.filter(e=>!O||"auto"===e||O.includes(e)).map(e=>{let t="auto"===e?D:!D&&nr===e,r="auto"!==e&&B?B[e]:void 0,o=null!=r&&r!==e?r:eA[e],i=null!=r&&r!==e;return(0,n.jsxs)("button",{onClick:()=>{if(td(!1),"auto"===e){D||H("auto");return}(!t||D)&&H(e)},style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"6px 12px",background:t?"var(--bg-selected)":"none",border:"none",color:t?"var(--accent)":"var(--text)",cursor:"pointer",fontSize:12,textAlign:"left",fontFamily:"var(--font-mono)",whiteSpace:"nowrap"},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="none")},children:[(0,n.jsx)(ct,{level:e,size:14}),(0,n.jsxs)("span",{style:{flex:1},children:[o,i&&(0,n.jsxs)("span",{style:{fontSize:10,color:"var(--text-dim)",marginLeft:5},children:["(",e,")"]})]}),t&&(0,n.jsx)(f.S,{size:12,weight:"bold",color:"var(--accent)",style:{flexShrink:0}})]},e)})}))]}),S&&"plan"===w&&(0,n.jsxs)("div",{ref:tZ,className:"chat-input-toolbar-tools",style:{position:"relative"},children:[" ",(0,n.jsxs)("button",{onClick:e=>{if(l)return;let t=e.currentTarget.getBoundingClientRect();tn({top:t.top,left:t.left,width:t.width}),tt(e=>!e)},disabled:l,title:eL("desktop.changeToolPreset",{preset:ni}),"aria-label":eL("desktop.toolPreset"),style:{display:"flex",alignItems:"center",justifyContent:"center",gap:5,padding:eW?"0 5px":"3px 7px",width:eW?"auto":void 0,height:24,background:te?"var(--bg-hover)":"none",border:"none",borderRadius:6,color:"var(--text-muted)",cursor:l?"not-allowed":"pointer",fontSize:12,opacity:l?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{l||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=te?"var(--bg-hover)":"none",e.currentTarget.style.color="var(--text-muted)"},children:[(0,n.jsx)("span",{style:{whiteSpace:"nowrap"},children:ni}),(0,n.jsx)(y.b,{size:11,weight:"bold","aria-hidden":"true",style:{transform:te?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.12s"}})]}),te&&tr&&(eT=window.visualViewport?.height??window.innerHeight,eI=Math.min(200,(eR=window.innerWidth)-16),eM=Math.max(8,eR-(tr.left+tr.width)),eE=eT-tr.top+6,e$=Math.min(320,Math.max(100,Math.min(tr.top-8,.5*eT))),(0,n.jsx)("div",{style:{position:"fixed",bottom:eE,right:eM,zIndex:2001,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 4px 24px rgba(0,0,0,0.12)",overflow:"hidden",minWidth:120,maxWidth:eI,maxHeight:e$,overflowY:"auto"},children:d3.map(e=>{let t=d8[e],r="plan"!==w&&(w??"default")===t,o="off"===e?eL("desktop.noToolsReadOnly"):"default"===e?eL("desktop.fourBuiltInTools"):eL("desktop.allBuiltInTools");return(0,n.jsxs)("button",{onClick:()=>{tt(!1),r||S(t)},style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"6px 12px",background:r?"var(--bg-selected)":"none",border:"none",color:r?"var(--accent)":"var(--text)",cursor:"pointer",fontSize:12,textAlign:"left",fontFamily:"var(--font-mono)",whiteSpace:"nowrap"},onMouseEnter:e=>{r||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{r||(e.currentTarget.style.background="none")},children:[(0,n.jsx)("span",{style:{flex:1},children:eP[e]}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)",marginLeft:8},children:o}),r&&(0,n.jsx)(f.S,{size:12,weight:"bold",color:"var(--accent)",style:{flexShrink:0}})]},e)})}))]}),r8.length>0&&v&&(0,n.jsxs)("div",{ref:tY,className:"chat-input-toolbar-model",style:{position:"relative",flex:eW?"0 1 auto":void 0,minWidth:0},children:[(0,n.jsxs)("button",{onClick:e=>{let t=e.currentTarget.getBoundingClientRect();e1({top:t.top,left:t.left,width:t.width}),eZ||e5(""),eQ(e=>!e)},disabled:l,title:r9??eL("desktop.selectModel"),"aria-label":r9??eL("desktop.selectModel"),style:{display:"flex",alignItems:"center",justifyContent:"center",gap:5*!eW,padding:eW?0:"0 6px",width:eW?28:void 0,maxWidth:eW?void 0:"min(220px, 34vw)",height:24,overflow:"hidden",background:eZ?"var(--bg-hover)":"none",border:"none",borderRadius:6,color:"var(--text-muted)",cursor:l?"not-allowed":"pointer",fontSize:12,opacity:l?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{l||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=eZ?"var(--bg-hover)":"none",e.currentTarget.style.color="var(--text-muted)"},children:[(0,n.jsx)(ru,{id:a?.provider??"unknown",size:14}),!eW&&(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:r9??eL("desktop.selectModel")}),!eW&&(0,n.jsx)(y.b,{size:11,weight:"bold","aria-hidden":"true",style:{flexShrink:0,transform:eZ?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.12s"}})]}),eZ&&e0&&(()=>{let e=e2.height||window.innerHeight,t=e2.width||window.innerWidth,r=e0.top-e2.offsetTop,o=Math.max(6,e-r+6),i=Math.min(400,Math.max(120,Math.min(r-8,.6*e))),s=Math.min(320,i),l=e0.width,d=Math.min(360,t-16),c=eW?{left:8,right:8,maxWidth:"calc(100vw - 16px)"}:{right:Math.max(8,t-(e0.left+e0.width)),width:"max-content",minWidth:Math.min(l,d),maxWidth:d},u=[];for(let e of[...e3]){let[t,r]=e.split(":",2),n=r8.find(e=>e.provider===t&&e.modelId===r);n&&u.push(n)}let p=e4.trim().toLowerCase(),g=p.length>0,x=e=>e.name.toLowerCase().includes(p)||e.modelId.toLowerCase().includes(p)||e.provider.toLowerCase().includes(p),m=g?u.filter(x):u,b=m.length>0,k=g?r7.map(e=>({...e,options:e.options.filter(x)})).filter(e=>e.options.length>0):r7,w=b||k.length>0;return(0,n.jsxs)("div",{ref:tG,className:"chat-input-model-dropdown",style:{position:"fixed",bottom:o,...c,zIndex:2e3,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 4px 24px rgba(0,0,0,0.12)",overflow:"hidden",height:s,maxHeight:i,display:"flex",flexDirection:"column"},children:[(0,n.jsx)("div",{style:{borderBottom:"1px solid var(--border)",flexShrink:0},children:(0,n.jsxs)("div",{style:{position:"relative",display:"flex",alignItems:"center"},children:[(0,n.jsx)(h.$,{size:13,color:"var(--text-dim)",style:{position:"absolute",left:12,pointerEvents:"none"}}),(0,n.jsx)("input",{ref:tX,value:e4,onChange:e=>e5(e.target.value),onKeyDown:e=>{if("Escape"===e.key)e4?e5(""):eQ(!1);else if("ArrowDown"===e.key){let t=tG.current?.querySelector(".model-row button");t&&(e.preventDefault(),t.focus())}},placeholder:eL("desktop.searchModels"),"aria-label":eL("desktop.searchModels"),style:{width:"100%",padding:"5px 12px 5px 34px",background:"transparent",border:"none",outline:"none",color:"var(--text)",fontSize:12,fontFamily:"var(--font-mono)"}})]})}),(0,n.jsxs)("div",{style:{overflowY:"auto",flex:1,minHeight:0},children:[b&&(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{padding:"6px 12px 4px",fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em"},children:eL("desktop.favorites")}),m.map(e=>{let t=e.modelId===a?.modelId&&e.provider===a?.provider,r=e3.has(`${e.provider}:${e.modelId}`);return(0,n.jsx)("div",{className:"model-row",style:{display:"flex",alignItems:"center",width:"100%"},children:(0,n.jsxs)("button",{onClick:()=>{eQ(!1),v(e.provider,e.modelId)},style:{display:"flex",alignItems:"center",gap:8,flex:1,minWidth:0,padding:"6px 12px",background:t?"var(--bg-selected)":"none",border:"none",color:t?"var(--accent)":"var(--text)",cursor:"pointer",fontSize:12,textAlign:"left",fontFamily:"var(--font-mono)",whiteSpace:"nowrap",overflow:"hidden"},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="none")},children:[(0,n.jsx)(ru,{id:e.provider,size:14}),(0,n.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",minWidth:0},children:e.name}),t&&(0,n.jsx)(f.S,{size:12,weight:"bold",color:"var(--accent)",style:{flexShrink:0}}),(0,n.jsx)("span",{onClick:t=>{t.stopPropagation(),rp(e.provider,e.modelId)},className:"model-star",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0,cursor:"pointer",color:r?"var(--accent)":"var(--text-dim)",opacity:+!!r,transition:"opacity 0.12s, color 0.12s"},onMouseEnter:e=>{e.stopPropagation(),e.currentTarget.style.color="var(--accent)"},onMouseLeave:e=>{e.stopPropagation(),e.currentTarget.style.color=r?"var(--accent)":"var(--text-dim)"},title:r?eL("desktop.unfavorite"):eL("desktop.favorite"),"aria-label":r?eL("desktop.unfavorite"):eL("desktop.favorite"),children:(0,n.jsx)(dZ.G,{size:12,weight:r?"fill":"regular"})})]})},`fav-${e.provider}:${e.modelId}`)}),(0,n.jsx)("div",{style:{borderTop:"1px solid var(--border)"}})]}),k.map((e,t)=>{let r=g||e7.has(e.provider),o=r?(0,n.jsx)(y.b,{size:10,color:"var(--text-dim)"}):(0,n.jsx)(j.J,{size:10,color:"var(--text-dim)"});return(0,n.jsxs)("div",{children:[(0,n.jsxs)("button",{onClick:()=>rh(e.provider),title:e.provider,style:{display:"flex",alignItems:"center",gap:4,width:"100%",maxWidth:"100%",padding:"6px 12px 4px",background:"none",border:"none",cursor:"pointer",fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em",overflow:"hidden",whiteSpace:"nowrap",borderTop:t>0?"1px solid var(--border)":"none"},onMouseEnter:e=>{e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-dim)"},children:[o,(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",minWidth:0},children:e.provider})]}),r&&e.options.map(e=>{let t=e.modelId===a?.modelId&&e.provider===a?.provider,r=e3.has(`${e.provider}:${e.modelId}`);return(0,n.jsx)("div",{className:"model-row",style:{display:"flex",alignItems:"center",width:"100%"},children:(0,n.jsxs)("button",{onClick:()=>{eQ(!1),v(e.provider,e.modelId)},style:{display:"flex",alignItems:"center",gap:8,flex:1,minWidth:0,padding:"6px 12px",background:t?"var(--bg-selected)":"none",border:"none",color:t?"var(--accent)":"var(--text)",cursor:"pointer",fontSize:12,textAlign:"left",fontFamily:"var(--font-mono)",whiteSpace:"nowrap",overflow:"hidden"},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="none")},children:[(0,n.jsx)(ru,{id:e.provider,size:14}),(0,n.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",minWidth:0},children:e.name}),t&&(0,n.jsx)(f.S,{size:12,weight:"bold",color:"var(--accent)",style:{flexShrink:0}}),(0,n.jsx)("span",{onClick:t=>{t.stopPropagation(),rp(e.provider,e.modelId)},className:"model-star",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0,cursor:"pointer",color:r?"var(--accent)":"var(--text-dim)",opacity:+!!r,transition:"opacity 0.12s, color 0.12s"},onMouseEnter:e=>{e.stopPropagation(),e.currentTarget.style.color="var(--accent)"},onMouseLeave:e=>{e.stopPropagation(),e.currentTarget.style.color=r?"var(--accent)":"var(--text-dim)"},title:r?eL("desktop.unfavorite"):eL("desktop.favorite"),"aria-label":r?eL("desktop.unfavorite"):eL("desktop.favorite"),children:(0,n.jsx)(dZ.G,{size:12,weight:r?"fill":"regular"})})]})},`${e.provider}:${e.modelId}`)})]},e.provider)}),g&&!w&&(0,n.jsx)("div",{style:{padding:"14px 12px",textAlign:"center",fontSize:12,color:"var(--text-dim)"},children:eL("desktop.noModelsMatch")})]})]})})()]}),0===r8.length&&p&&(0,n.jsxs)("div",{className:"chat-input-toolbar-model",title:`${eL("desktop.modelsLoadFailed")}: ${p}`,style:{display:"flex",alignItems:"center",gap:6,flex:eW?"1 1 auto":void 0,minWidth:0,padding:"3px 7px",height:24,background:"rgba(239,68,68,0.10)",border:"none",borderRadius:6,fontSize:12,overflow:"hidden"},children:[(0,n.jsx)(l9.M,{size:14,color:"var(--status-error)",weight:"fill",style:{flexShrink:0}}),(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0,color:"var(--status-error)"},children:eL("desktop.modelsLoadFailed")}),m&&(0,n.jsx)("button",{type:"button",onClick:m,style:{display:"inline-flex",alignItems:"center",gap:4,flexShrink:0,padding:"1px 6px",background:"rgba(239,68,68,0.14)",border:"none",borderRadius:4,color:"var(--status-error)",cursor:"pointer",fontSize:11,fontWeight:600,transition:"background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="rgba(239,68,68,0.24)"},onMouseLeave:e=>{e.currentTarget.style.background="rgba(239,68,68,0.14)"},children:eL("desktop.retry")})]}),0===r8.length&&!p&&(0,n.jsxs)("div",{className:"chat-input-toolbar-model",title:eL("desktop.noModelsConfigured"),style:{display:"flex",alignItems:"center",gap:6,flex:eW?"1 1 auto":void 0,minWidth:0,padding:"3px 7px",height:24,background:"var(--bg-hover)",border:"none",borderRadius:6,color:"var(--text-dim)",fontSize:12,overflow:"hidden"},children:[(0,n.jsx)(l9.M,{size:14,color:"var(--text-dim)",style:{flexShrink:0}}),(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:eL("desktop.noModelsConfigured")})]}),!l&&(0,n.jsx)("button",{type:"button",onClick:rj,disabled:!eH.trim()&&!th.length,className:"chat-input-send",title:eL("desktop.sendMessage"),"aria-label":eL("desktop.sendMessage"),children:(0,n.jsx)(dG.l,{size:14})}),l&&(0,n.jsx)("button",{onClick:r,title:eL("desktop.stopAgent"),"aria-label":eL("desktop.stopAgent"),className:"chat-input-stop",style:{display:"flex",alignItems:"center",justifyContent:"center",padding:0,width:24,height:24,background:"rgba(239,68,68,0.12)",border:"none",borderRadius:4,color:"var(--status-error)",cursor:"pointer",transition:"background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="rgba(239,68,68,0.20)"},onMouseLeave:e=>{e.currentTarget.style.background="rgba(239,68,68,0.12)"},children:(0,n.jsx)(dX.d,{size:14})})]})})]})]})]})]})]})}));function cy(e){return!!e&&"string"==typeof e.type&&"string"==typeof e.data&&"string"==typeof e.mimeType}function cb(e){let t;if(!e||"object"!=typeof e)return null;let r=e.kind;return"steer"!==r&&"followUp"!==r||"string"!=typeof e.text?null:(Array.isArray(e.images)&&0===(t=e.images.filter(cy)).length&&(t=void 0),{kind:r,text:e.text,...t?{images:t}:{}})}function ck({items:e,sessionId:t,onResolve:r,onExport:i,onStageImport:s,onDismiss:l,mode:a="recovery"}){let{t:d}=(0,Y.s)(),c=tp(),[u,p]=(0,o.useState)(()=>new Set(e.map(e=>e.id))),[h,g]=(0,o.useState)(!1),[x,f]=(0,o.useState)(null),m=(0,o.useRef)(null);(0,o.useEffect)(()=>{p(new Set(e.map(e=>e.id)))},[e]),L(!h,l);let v=e.filter(e=>u.has(e.id)),y=v.length===e.length&&e.length>0,b=e=>p(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r}),k=async(e,t=!1)=>{if(0!==v.length){g(!0),f(null);try{await r("keep"===e?v.map(e=>e.id):[],"discard"===e?v.map(e=>e.id):[],t)}catch(e){f(e instanceof Error?e.message:String(e))}finally{g(!1)}}},j=async e=>{let r=await i();if(!r)return;let n=r.recovery.filter(e=>u.has(e.id));if(n.length){var o;let r,i,s,l,a,c,u;o={sessionId:t,source:"recovery"},i="md"===e?(((r=[]).push("# Queued messages export"),o.sessionId&&r.push(`- Session: ${o.sessionId}`),r.push(`- Source: ${"live"===o.source?"live queue":"pending recovery"}`),r.push(`- Exported: ${o.exportedAt??new Date().toISOString()}`),r.push(""),0===n.length)?r.push("_No entries._"):n.forEach((e,t)=>{var n;r.push(`## ${t+1}. ${"steer"===e.kind?"steer":"follow-up"} \xb7 ${new Date(e.queuedAt).toISOString()}`),e.text&&r.push(e.text),e.images?.length&&r.push(`> _${0===(n=e.images.length)?"":1===n?"(1 image)":`(${n} images)`}_`),r.push("")}),r.join("\n")):JSON.stringify({format:"pi-web-queue",version:1,exportedAt:o.exportedAt??new Date().toISOString(),source:o.source,sessionId:o.sessionId,entries:n.map(({kind:e,text:t,images:r})=>({kind:e,text:t,...r?.length?{images:r}:{}}))},null,2),s=new Date().toISOString().replace(/[:.]/g,"-").slice(0,19),l=`${o.sessionId??"session"}-queue-${o.source}-${s}.${e}`,a=new Blob([i],{type:"md"===e?"text/markdown;charset=utf-8":"application/json;charset=utf-8"}),c=URL.createObjectURL(a),(u=document.createElement("a")).href=c,u.download=l,u.click(),setTimeout(()=>URL.revokeObjectURL(c),1e3),f(d("desktop.queueExported",{count:n.length}))}},w=async e=>{let t=function(e){let t;try{t=JSON.parse(e)}catch{return[]}let r=Array.isArray(t)?t:t&&"object"==typeof t&&Array.isArray(t.entries)?t.entries:null;return r?r.map(cb).filter(e=>null!==e):[]}(await e.text());if(!t.length)return void f(d("desktop.queueImportEmpty"));let r=await s(t);f(null===r?d("desktop.queueImportEmpty"):d("desktop.queueImported",{count:r}))};return(0,n.jsxs)("div",{className:"fixed inset-0 z-[1000] flex items-center justify-center bg-black/40 p-3",role:"presentation",children:[(0,n.jsxs)("div",{role:"dialog","aria-modal":"true","aria-label":"import"===a?d("desktop.queueImportTitle"):d("desktop.queueRecoveryTitle"),className:"flex max-h-[88dvh] w-full max-w-2xl flex-col overflow-hidden rounded-xl border border-(--border) bg-(--bg) shadow-2xl",children:[(0,n.jsxs)("header",{className:"flex flex-wrap items-start gap-3 border-b border-(--border) bg-(--bg-panel) px-4 py-3",children:[(0,n.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,n.jsx)("h2",{className:"text-sm font-semibold text-(--text)",children:"import"===a?d("desktop.queueImportTitle"):d("desktop.queueRecoveryTitle")}),(0,n.jsx)("p",{className:"mt-1 text-xs leading-5 text-(--text-muted)",children:"import"===a?d("desktop.queueImportDescription"):d("desktop.queueRecoveryDescription")})]}),(0,n.jsxs)("div",{className:"flex items-center gap-1",children:[(0,n.jsx)("button",{type:"button",className:"markdown-code-action",onClick:()=>p(new Set(y?[]:e.map(e=>e.id))),children:y?d("desktop.selectNone"):d("desktop.selectAll")}),(0,n.jsx)("button",{type:"button",className:"markdown-code-action",disabled:h||0===v.length,onClick:()=>void j("json"),children:"JSON"}),(0,n.jsx)("button",{type:"button",className:"markdown-code-action",disabled:h||0===v.length,onClick:()=>void j("md"),children:"MD"}),(0,n.jsx)("button",{type:"button",className:"markdown-code-action",disabled:h,onClick:()=>m.current?.click(),children:d("desktop.import")}),(0,n.jsx)("button",{type:"button",className:"markdown-code-action",onClick:l,"aria-label":d("desktop.close"),children:"\xd7"})]})]}),(0,n.jsx)("div",{className:"grid flex-1 content-start gap-2 overflow-y-auto p-3",children:e.map(e=>{let t=u.has(e.id);return(0,n.jsxs)("button",{type:"button",onClick:()=>b(e.id),"aria-pressed":t,className:["flex w-full items-start gap-3 rounded-lg border p-3 text-left transition",t?"border-(--accent) bg-(--bg-selected)":"border-(--border) bg-(--bg-panel) hover:bg-(--bg-hover)"].join(" "),children:[(0,n.jsx)("input",{type:"checkbox",checked:t,onChange:()=>b(e.id),onClick:e=>e.stopPropagation(),className:"mt-1 accent-[var(--accent)]"}),(0,n.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,n.jsxs)("span",{className:"flex flex-wrap items-center gap-2 text-[11px] text-(--text-dim)",children:[(0,n.jsx)("span",{className:"rounded-full border border-(--border) px-2 py-0.5 font-mono uppercase",children:"steer"===e.kind?d("desktop.steer"):d("desktop.followUp")}),(0,n.jsx)("span",{children:new Date(e.queuedAt).toLocaleString()}),e.hasImages?(0,n.jsx)("span",{children:d("desktop.queueImages")}):null]}),(0,n.jsx)("span",{className:"mt-2 block whitespace-pre-wrap break-words border-l-2 border-(--border) pl-2 text-xs leading-5 text-(--text)",children:e.text||d("desktop.queueNoText")})]})]},e.id)})}),(0,n.jsxs)("footer",{className:["flex flex-wrap items-center gap-2 border-t border-(--border) px-4 py-3",c?"justify-stretch":"justify-end"].join(" "),children:[x?(0,n.jsx)("span",{className:"mr-auto text-xs text-(--text-muted)",children:x}):null,(0,n.jsx)("button",{type:"button",className:"rounded-md px-3 py-2 text-xs text-(--text-muted) hover:bg-(--bg-hover)",onClick:l,disabled:h,children:d("desktop.dismiss")}),(0,n.jsx)("button",{type:"button",className:"rounded-md border border-red-400/40 px-3 py-2 text-xs text-red-400 disabled:opacity-40",onClick:()=>void k("discard"),disabled:h||0===v.length,children:d("desktop.discard")}),(0,n.jsx)("button",{type:"button",className:"rounded-md border border-(--accent) px-3 py-2 text-xs text-(--accent) disabled:opacity-40",onClick:()=>void k("keep"),disabled:h||0===v.length,children:d("desktop.requeue")}),(0,n.jsx)("button",{type:"button",className:"rounded-md bg-(--accent) px-3 py-2 text-xs text-white disabled:opacity-40",onClick:()=>void k("keep",!0),disabled:h||0===v.length,children:d("desktop.requeueAndContinue")})]})]}),(0,n.jsx)("input",{ref:m,type:"file",accept:".json,application/json",className:"hidden",onChange:e=>{let t=e.target.files?.[0];t&&w(t),e.currentTarget.value=""}})]})}var cj=r(36405),cw=r(92185),cS=r(75877),cC=r(30830);function cz(e){let t=e,r=t.compressedEntryIds?.length??0;for(;1===t.children.length;)t=t.children[0],r+=1+(t.compressedEntryIds?.length??0);return{node:t,skipped:r}}function cT(e){if(e.length>1)return!0;let t=[...e];for(;t.length>0;){let e=t.pop();if(e.children.length>1)return!0;for(let r of e.children)t.push(r)}return!1}function cR({node:e,assistantLabel:t,activePathIds:r,depth:o,isLast:i,parentLines:s,onSelect:l}){let{node:a,skipped:d}=cz(e),c=r.has(a.entry.id),u=r.has(e.entry.id)||r.has(a.entry.id),p=function(e,t){if("message"===e.type&&"message"in e){let r=e.message,n=r.content,o="";if("string"==typeof n?o=n:Array.isArray(n)&&(o=n.filter(e=>"text"===e.type).map(e=>e.text).join(" ")),o.length>40&&(o=o.slice(0,40)+"…"),o)return o;if("assistant"===r.role)return`[${t}]`}return e.type}(a.entry,t),h="message"===a.entry.type&&"message"in a.entry?a.entry.message.role:null;return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",height:24,cursor:"pointer"},onClick:()=>l(a.entry.id),children:[s.map((e,t)=>(0,n.jsx)("div",{style:{width:16,flexShrink:0,position:"relative",height:"100%",alignSelf:"stretch"},children:e&&(0,n.jsx)("div",{style:{position:"absolute",left:7,top:0,bottom:0,width:1,background:"var(--border)"}})},t)),(0,n.jsxs)("div",{style:{width:16,flexShrink:0,position:"relative",height:"100%",alignSelf:"stretch"},children:[(0,n.jsx)("div",{style:{position:"absolute",left:7,top:0,bottom:i?"50%":0,width:1,background:"var(--border)"}}),(0,n.jsx)("div",{style:{position:"absolute",left:7,top:"50%",width:9,height:1,background:"var(--border)"}})]}),(0,n.jsx)("div",{style:{width:7,height:7,borderRadius:"50%",flexShrink:0,background:c?"var(--accent)":u?"var(--text-muted)":"var(--border)",border:c?"none":"1px solid var(--text-dim)",marginRight:6,transition:"background 0.12s"}}),h&&(0,n.jsx)("span",{style:{fontSize:9,fontFamily:"var(--font-mono)",color:"user"===h?"var(--accent)":"var(--text-dim)",background:"user"===h?"rgba(37,99,235,0.08)":"var(--bg-hover)",border:`1px solid ${"user"===h?"rgba(37,99,235,0.2)":"var(--border)"}`,borderRadius:3,padding:"0 4px",marginRight:5,flexShrink:0,lineHeight:"16px"},children:"user"===h?"U":"A"}),d>0&&(0,n.jsxs)("span",{style:{fontSize:10,color:"var(--text-dim)",marginRight:5,flexShrink:0},children:["+",d]}),(0,n.jsx)("span",{style:{fontSize:11,color:c?"var(--text)":u?"var(--text-muted)":"var(--text-dim)",fontWeight:c?500:400,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1,minWidth:0},children:p})]}),a.children.map((e,d)=>(0,n.jsx)(cR,{node:e,assistantLabel:t,activePathIds:r,depth:o+1,isLast:d===a.children.length-1,parentLines:[...s,!i],onSelect:l},e.entry.id))]})}function cI({tree:e,activeLeafId:t,onLeafChange:r,inline:i,containerRef:s,open:l,onToggle:a,hasSession:d,embedded:c}){let{t:u}=(0,Y.s)(),[p,h]=(0,o.useState)(!1),g=void 0!==l?l:p,x=(0,o.useRef)(null),[f,m]=(0,o.useState)(null);(0,o.useEffect)(()=>{if(!g||!i)return;let e=s?.current??x.current;if(!e)return;let t=()=>{let t=e.getBoundingClientRect(),r=Math.max(8,Math.min(t.left,window.innerWidth-8-180)),n=window.innerWidth-8-r,o=Math.min(Math.max(t.width,Math.min(180,n)),n);m({top:t.bottom,left:r,width:o})};t();let r=new ResizeObserver(t);return r.observe(e),()=>r.disconnect()},[g,i,s]);let v=(0,o.useMemo)(()=>(function(e,t){if(!t)return new Set;let r=e.map(e=>({node:e,path:[e.entry.id]}));for(;r.length>0;){let{node:e,path:n}=r.pop();if(e.entry.id===t||e.compressedEntryIds?.includes(t))return new Set(n);for(let t of e.children)r.push({node:t,path:[...n,t.entry.id]})}return new Set})(e,t),[e,t]),b=(0,o.useCallback)(e=>{r(e)},[r]),j=d?cT(e)?null:u("desktop.sessionHasNoBranches"):u("desktop.noActiveSession"),w=e.length>0?cz(e[0]):null,S=w?.node??null,C=!j&&S&&S.children.length>1,z=(0,n.jsx)(k.Z,{size:16,"aria-hidden":"true",style:{flexShrink:0}}),T=(0,n.jsx)(y.a,{size:8,color:"var(--text-dim)","aria-hidden":"true",style:{marginLeft:1,transition:"transform 0.15s",transform:g?"rotate(180deg)":"none"}});return i?(0,n.jsxs)("div",{style:{height:"100%",display:"flex",alignItems:"stretch"},children:[(0,n.jsx)("button",{ref:x,className:"app-no-drag",onClick:()=>a?a():h(e=>!e),style:{display:"flex",alignItems:"center",justifyContent:"center",width:36,height:36,padding:0,background:g?"var(--bg-selected)":"none",border:"none",cursor:"pointer",color:g?"var(--text)":"var(--text-muted)",flexShrink:0,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=g?"var(--bg-selected)":"none",e.currentTarget.style.color=g?"var(--text)":"var(--text-muted)"},title:u("desktop.branches"),"aria-label":u("desktop.branches"),"aria-pressed":g,children:z}),g&&f&&(0,n.jsx)("div",{className:"app-no-drag",style:{position:"fixed",top:f.top,left:f.left,width:f.width,background:"var(--bg-panel)",borderBottom:"1px solid var(--border)",zIndex:500},children:C&&S?(0,n.jsx)("div",{style:{padding:"4px 12px 8px 12px",maxHeight:260,overflowY:"auto"},children:S.children.map((e,t)=>(0,n.jsx)(cR,{node:e,assistantLabel:u("desktop.assistant"),activePathIds:v,depth:0,isLast:t===S.children.length-1,parentLines:[],onSelect:b},e.entry.id))}):(0,n.jsx)("div",{style:{padding:"10px 16px",fontSize:12,color:"var(--text-muted)",fontStyle:"italic"},children:j})})]}):c?C&&S?(0,n.jsx)("div",{style:{padding:"4px 8px 8px 8px"},children:S.children.map((e,t)=>(0,n.jsx)(cR,{node:e,assistantLabel:u("desktop.assistant"),activePathIds:v,depth:0,isLast:t===S.children.length-1,parentLines:[],onSelect:b},e.entry.id))}):(0,n.jsx)("div",{style:{padding:"10px 12px",fontSize:12,color:"var(--text-muted)",fontStyle:"italic"},children:j??u("desktop.sessionHasNoBranches")}):(0,n.jsxs)("div",{style:{borderBottom:"1px solid var(--border)",background:"var(--bg)",flexShrink:0,position:"relative"},children:[(0,n.jsxs)("button",{onClick:()=>h(e=>!e),style:{display:"flex",alignItems:"center",gap:6,width:"100%",padding:"5px 12px",background:"none",border:"none",cursor:"pointer",color:"var(--text-muted)",fontSize:11,textAlign:"left"},children:[z,(0,n.jsx)("span",{style:{color:"var(--text-muted)"},children:u("desktop.branches")}),T]}),g&&(0,n.jsx)("div",{style:{position:"absolute",top:"100%",left:0,right:0,background:"var(--bg)",borderBottom:"1px solid var(--border)",boxShadow:"0 4px 12px rgba(0,0,0,0.1)",zIndex:100},children:C&&S?(0,n.jsx)("div",{style:{padding:"4px 12px 8px 12px",maxHeight:260,overflowY:"auto"},children:S.children.map((e,t)=>(0,n.jsx)(cR,{node:e,assistantLabel:u("desktop.assistant"),activePathIds:v,depth:0,isLast:t===S.children.length-1,parentLines:[],onSelect:b},e.entry.id))}):(0,n.jsx)("div",{style:{padding:"10px 16px",fontSize:12,color:"var(--text-muted)",fontStyle:"italic"},children:j??u("desktop.sessionHasNoBranches")})})]})}var cM=r(33846);function cE({open:e,onOpenChange:t,cwd:r}){let{t:i}=(0,Y.s)(),[s,l]=(0,o.useState)([]),[a,d]=(0,o.useState)(""),[c,u]=(0,o.useState)(!1),[p,h]=(0,o.useState)(null),[x,f]=(0,o.useState)(null);L(e&&!c,()=>t(!1));let m=(0,o.useCallback)(async()=>{if(r)try{let e=await fetch(`/api/git/stash?${new URLSearchParams({cwd:r}).toString()}`,{cache:"no-store"});if(e.ok){let t=await e.json();l(t.entries)}}catch{}},[r]);if((0,o.useEffect)(()=>{e&&m()},[e,m]),!e)return null;let v=async(e,t)=>{u(!0),h(null),f(null);try{let n=await fetch(`/api/git/stash?${new URLSearchParams({cwd:r??""}).toString()}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:e,message:a||void 0,ref:t})}),o=await n.json();n.ok&&o.ok?(f(o.output??i("tasks.stashDone")),d(""),m()):h(o.error??`HTTP ${n.status}`)}catch(e){h(e instanceof Error?e.message:String(e))}finally{u(!1)}};return(0,n.jsx)("div",{style:{position:"fixed",inset:0,zIndex:950,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.45)"},children:(0,n.jsxs)("div",{style:{width:"min(520px, calc(100vw - 48px))",maxHeight:"min(75vh, 560px)",overflow:"auto",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:14,boxShadow:"0 16px 48px rgba(0,0,0,0.3)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"14px 16px 0"},children:[(0,n.jsx)("h3",{style:{fontSize:15,fontWeight:600,margin:0},children:i("desktop.stashTitle")}),(0,n.jsx)("button",{type:"button",onClick:()=>t(!1),"aria-label":i("i18n.close"),style:{background:"none",border:"none",cursor:"pointer",color:"var(--text-muted)",padding:4,display:"flex"},children:(0,n.jsx)(g.X,{size:16,"aria-hidden":"true"})})]}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:12,padding:"14px 16px 16px"},children:[(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[(0,n.jsx)("input",{value:a,onChange:e=>d(e.target.value),placeholder:i("desktop.stashMessagePlaceholder"),style:{width:"100%",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,padding:"7px 10px",color:"var(--text)",fontSize:13,outline:"none",fontFamily:"inherit"}}),(0,n.jsxs)("button",{type:"button",onClick:()=>void v("push"),disabled:c,style:{alignSelf:"flex-start",display:"inline-flex",alignItems:"center",gap:5,padding:"7px 14px",borderRadius:8,background:"var(--accent)",color:"var(--accent-fg)",border:"none",fontSize:12,fontWeight:600,cursor:c?"not-allowed":"pointer"},children:[(0,n.jsx)(cM.c,{size:13,"aria-hidden":"true"}),i("desktop.stashPush")]})]}),p&&(0,n.jsx)("div",{style:{padding:"8px 10px",borderRadius:8,background:"rgba(239,68,68,0.10)",color:"var(--status-error)",fontSize:12,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:p}),x&&(0,n.jsx)("div",{style:{padding:"8px 10px",borderRadius:8,background:"rgba(34,197,94,0.10)",color:"var(--status-success)",fontSize:12,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:x}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column"},children:[(0,n.jsxs)("div",{style:{fontSize:12,fontWeight:600,color:"var(--text)",marginBottom:6},children:[i("desktop.stashList")," (",s.length,")"]}),0===s.length?(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text-muted)"},children:i("desktop.stashEmpty")}):(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:4},children:s.map(e=>(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"7px 10px",borderRadius:8,border:"1px solid var(--border)",background:"var(--bg)"},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",fontSize:11,color:"var(--text-muted)",flexShrink:0},children:e.index}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,fontSize:12,color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.message||e.ref}),(0,n.jsxs)("button",{type:"button",onClick:()=>void v("pop",e.ref),disabled:c,title:i("desktop.stashPop"),style:{display:"inline-flex",alignItems:"center",gap:3,padding:"4px 8px",borderRadius:6,border:"1px solid var(--border)",background:"none",color:"var(--text)",fontSize:11,cursor:c?"not-allowed":"pointer"},children:[(0,n.jsx)(z.S,{size:11,"aria-hidden":"true"}),i("desktop.stashPop")]}),(0,n.jsx)("button",{type:"button",onClick:()=>void v("drop",e.ref),disabled:c,title:i("desktop.stashDrop"),style:{display:"inline-flex",alignItems:"center",padding:"4px 8px",borderRadius:6,border:"1px solid var(--border)",background:"none",color:"var(--status-error)",fontSize:11,cursor:c?"not-allowed":"pointer"},children:i("desktop.stashDrop")})]},e.ref))})]})]})]})})}function c$({cwd:e}){let{t}=(0,Y.s)(),[r,i]=(0,o.useState)(!1),[s,l]=(0,o.useState)("idle"),[a,d]=(0,o.useState)(null),[c,u]=(0,o.useState)(!1),p=(0,o.useCallback)(async()=>{if(e&&!r){i(!0),l("idle");try{let r=await fetch(`/api/git/push?${new URLSearchParams({cwd:e}).toString()}`,{method:"POST",cache:"no-store"}),n=await r.json();r.ok&&n.ok?(l("ok"),d(n.output||t("desktop.pushOk"))):(l("error"),d(n.error??t("desktop.pushFailed")))}catch(e){l("error"),d(e instanceof Error?e.message:t("desktop.pushFailed"))}finally{i(!1),setTimeout(()=>{l("idle"),d(null)},4e3)}}},[e,r,t]);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",className:"session-info-bar-button",onClick:()=>void p(),disabled:!e||r,title:t("desktop.push"),"aria-label":t("desktop.push"),style:{position:"relative"},children:"ok"===s?(0,n.jsx)(ei.r,{size:13,color:"var(--status-success)",weight:"fill","aria-hidden":"true"}):"error"===s?(0,n.jsx)(nC.J,{size:13,color:"var(--status-error)",weight:"fill","aria-hidden":"true"}):(0,n.jsx)(cM.c,{size:13,"aria-hidden":"true"})}),(0,n.jsx)("button",{type:"button",className:"session-info-bar-button",onClick:()=>u(!0),disabled:!e,title:t("desktop.stash"),"aria-label":t("desktop.stash"),children:(0,n.jsx)(I.T,{size:13,"aria-hidden":"true"})}),a&&(0,n.jsx)("div",{style:{position:"fixed",bottom:60,left:"50%",transform:"translateX(-50%)",zIndex:1200,maxWidth:"60vw",padding:"8px 14px",borderRadius:8,background:"var(--bg-panel)",border:`1px solid ${"ok"===s?"var(--status-success)":"var(--status-error)"}`,boxShadow:"0 8px 24px rgba(0,0,0,0.2)",fontSize:12,color:"ok"===s?"var(--status-success)":"var(--status-error)",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:a}),(0,n.jsx)(cE,{open:c,onOpenChange:u,cwd:e})]})}function cW({onViewFullHistory:e,cwd:t,systemPrompt:r,sessionStats:i,contextUsage:s,hasSession:l,showChat:a,soundEnabled:d,onSoundToggle:c,onCompact:u,onAbortCompaction:p,isCompacting:h,compactError:g,branchTree:x,branchActiveLeafId:m,onBranchLeafChange:v,showSoundLabel:y,lastTurnUsage:b}){let{t:j}=(0,Y.s)(),w=tp(),[S,C]=(0,o.useState)(null),z=(0,o.useCallback)(()=>C(null),[]),T=(0,o.useRef)(null),[R,I]=(0,o.useState)(null),M=(0,o.useCallback)(()=>{let e=T.current;if(!e)return;let t=function(e,t,r=8,n=4){let o=Math.max(0,t.width-2*r),i=Math.max(r,Math.min(Math.round(t.height-e+n),t.height-r-120)),s=Math.max(0,Math.round(t.height-i-r));return{left:r,right:r,width:o,bottom:i,maxHeight:s}}(e.getBoundingClientRect().top,{width:window.innerWidth,height:window.innerHeight});I({position:"fixed",left:t.left,right:t.right,width:t.width,bottom:t.bottom,minWidth:0,maxWidth:t.width,maxHeight:t.maxHeight,overflowY:"auto"})},[]),E=(0,o.useRef)(null),$=(0,o.useCallback)((e,t)=>{if(E.current===e){E.current=null,C(null),I(null),T.current=null;return}E.current=e,T.current=t.closest(".session-info-bar-popover-host"),C(e),w?M():I(null)},[w,M]);(0,o.useEffect)(()=>{if(S&&R)return window.addEventListener("resize",M),()=>window.removeEventListener("resize",M)},[S,R,M]);let[W,L]=(0,o.useState)(null),N=(0,o.useRef)(null),A=(0,o.useCallback)((e,t)=>{nA(t).then(()=>{N.current&&clearTimeout(N.current),L(e),N.current=setTimeout(()=>L(null),1400)})},[]),P=(0,o.useMemo)(()=>{if(!r)return 0;let e=0;for(let t of r){let r=t.codePointAt(0)??0;r>=19968&&r<=40959||r>=13312&&r<=19903||r>=131072&&r<=173791||r>=12352&&r<=12447||r>=12448&&r<=12543||r>=44032&&r<=55215?e+=1:e+=.25}return Math.max(1,Math.round(e))},[r]);if(!a)return null;let F=i?.tokens,D=i?.cost??0,H=i?.costCNY??0,O=i?.costUSD??0,B=[];H>0&&B.push(ao(H)),O>0&&B.push(O>=.01?`$${O.toFixed(2)}`:"<$0.01"),0===B.length&&D>0&&B.push(D>=.01?`$${D.toFixed(2)}`:"<$0.01");let U=B.length>0?B.join(" + "):null,_="var(--text-muted)";if(s?.contextWindow){let e=s.percent;null!==e&&e>90?_="var(--status-error)":null!==e&&e>70&&(_="rgba(234,179,8,0.95)")}let K=null!==r&&""!==r,V=i&&F&&(F.input>0||F.output>0),J=l&&v,G=[];if(F&&(G.push(`${j("desktop.sessionInfoInput")}: ${F.input.toLocaleString()}`),G.push(`${j("desktop.sessionInfoOutput")}: ${F.output.toLocaleString()}`),F.cacheRead>0&&G.push(`${j("desktop.sessionInfoCacheRead")}: ${F.cacheRead.toLocaleString()}`),F.cacheWrite>0&&G.push(`${j("desktop.sessionInfoCacheWrite")}: ${F.cacheWrite.toLocaleString()}`),H>0&&G.push(`${j("desktop.sessionInfoCostOfficial")}: ${ao(H)}`),O>0&&G.push(`${j("desktop.sessionInfoCost")}: $${O.toFixed(4)}`),H<=0&&O<=0&&D>0&&G.push(`${j("desktop.sessionInfoCost")}: $${D.toFixed(4)}`)),s?.contextWindow&&null!==s.percent){let e=s.percent,t=s.tokens;G.push(`${j("desktop.sessionInfoContext")}: ${null!==e?`${e.toFixed(1)}%`:"?"} ${null!==t?ol(t):"?"}/${ol(s.contextWindow)}`)}let X=G.join(" | ");return(0,n.jsxs)("div",{className:"session-info-bar",children:[t&&(0,n.jsx)(c$,{cwd:t}),c&&(0,n.jsxs)("button",{type:"button",className:"session-info-bar-button",onClick:c,title:d?j("desktop.disableCompletionSound"):j("desktop.enableCompletionSound"),"aria-label":d?j("desktop.disableCompletionSound"):j("desktop.enableCompletionSound"),children:[d?(0,n.jsx)(cj.Q,{size:13}):(0,n.jsx)(cw.l,{size:13}),y&&(0,n.jsx)("span",{style:{marginLeft:4},children:d?j("desktop.soundLabelOn"):j("desktop.soundLabelOff")})]}),l&&(0,n.jsx)("button",{type:"button",className:"session-info-bar-button",onClick:e,title:j("desktop.viewFullHistory"),"aria-label":j("desktop.viewFullHistory"),children:(0,n.jsx)(cS.n,{size:13,"aria-hidden":"true"})}),J&&(0,n.jsxs)("div",{className:"session-info-bar-popover-host",children:[(0,n.jsx)("button",{type:"button",className:`session-info-bar-button${"branches"===S?" is-active":""}`,onClick:e=>$("branches",e.currentTarget),title:j("desktop.branches"),"aria-label":j("desktop.branches"),"aria-pressed":"branches"===S,children:(0,n.jsx)(k.Z,{size:13,"aria-hidden":"true"})}),"branches"===S&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"session-info-bar-popover-cover",onClick:z}),(0,n.jsxs)("div",{className:"session-info-bar-popover is-branches",style:R??void 0,children:[(0,n.jsxs)("div",{className:"session-info-bar-popover-header",children:[(0,n.jsx)("span",{className:"session-info-bar-popover-title",children:j("desktop.branches")}),(0,n.jsx)("button",{type:"button",className:"session-info-bar-popover-close",onClick:z,title:j("i18n.close"),"aria-label":j("i18n.close"),children:"✕"})]}),(0,n.jsx)("div",{className:"session-info-bar-popover-body",children:(0,n.jsx)(cI,{tree:x??[],activeLeafId:m??null,onLeafChange:e=>{v(e),z()},hasSession:!0,embedded:!0})})]})]})]}),K&&(0,n.jsxs)("div",{className:"session-info-bar-popover-host",children:[(0,n.jsx)("button",{type:"button",className:`session-info-bar-button${"system"===S?" is-active":""}`,onClick:e=>$("system",e.currentTarget),title:j("desktop.systemPrompt"),"aria-label":j("desktop.systemPrompt"),"aria-pressed":"system"===S,children:(0,n.jsx)(dK.i,{size:13,"aria-hidden":"true"})}),"system"===S&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"session-info-bar-popover-cover",onClick:z}),(0,n.jsxs)("div",{className:"session-info-bar-popover is-system",style:R??void 0,children:[(0,n.jsxs)("div",{className:"session-info-bar-popover-header",children:[(0,n.jsx)("span",{className:"session-info-bar-popover-title",children:j("desktop.systemPrompt")}),(0,n.jsxs)("span",{style:{fontSize:10,color:"var(--text-dim)",marginLeft:8},children:["~",ol(P)," tokens"]}),(0,n.jsx)("div",{style:{flex:1}}),(0,n.jsx)("button",{type:"button",className:"session-info-bar-popover-close",onClick:z,title:j("i18n.close"),"aria-label":j("i18n.close"),children:"✕"})]}),(0,n.jsx)("div",{className:"session-info-bar-system-body",children:r?(0,n.jsx)(sP.oz,{remarkPlugins:[lh.A],children:r}):(0,n.jsx)("span",{className:"session-info-bar-popover-empty",children:"System prompt is empty (tools are disabled)"})})]})]})]}),(0,n.jsx)("div",{className:"session-info-bar-spacer"}),u&&(0,n.jsxs)("div",{className:"session-info-bar-compact-wrap",children:[g&&(0,n.jsx)("div",{className:"session-info-bar-compact-error",children:g}),(0,n.jsx)("button",{type:"button",className:`session-info-bar-button${h?" is-compacting":""}`,onClick:h?p:u,title:h?j("desktop.stopCompaction"):j("desktop.compactContext"),"aria-label":h?j("desktop.stopCompaction"):j("desktop.compactContext"),children:h?(0,n.jsx)(dX.M,{size:13}):(0,n.jsx)(cC.C,{size:13})})]}),V&&(0,n.jsxs)("div",{className:"session-info-bar-popover-host",children:[(0,n.jsxs)("button",{type:"button",className:`session-info-bar-button is-stats${"session"===S?" is-active":""}`,onClick:e=>$("session",e.currentTarget),title:X||j("desktop.sessionInfo"),"aria-label":j("desktop.sessionInfo"),"aria-pressed":"session"===S,children:[F&&F.input>0&&(0,n.jsxs)("span",{className:"session-info-bar-token-chip",children:[(0,n.jsx)(l3.D,{size:10,"aria-hidden":"true"}),ol(F.input)]}),F&&F.output>0&&(0,n.jsxs)("span",{className:"session-info-bar-token-chip",children:[(0,n.jsx)(l5.y,{size:10,"aria-hidden":"true"}),ol(F.output)]}),F&&F.cacheRead>0&&(0,n.jsxs)("span",{className:"session-info-bar-token-chip",children:[(0,n.jsx)(q.W,{size:10,"aria-hidden":"true"}),ol(F.cacheRead)]}),U&&(0,n.jsx)("span",{children:U}),s?.contextWindow&&null!==s.percent&&(0,n.jsx)("span",{className:"session-info-bar-token-chip",style:{color:_},children:(0,n.jsxs)("svg",{className:"session-info-bar-donut",width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"8",cy:"8",r:"6.75",fill:"none",stroke:"var(--border)",strokeWidth:"2.5"}),(0,n.jsx)("circle",{className:"session-info-bar-donut-arc",cx:"8",cy:"8",r:"6.75",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",pathLength:100,strokeDasharray:100,strokeDashoffset:null===s.percent?0:100-Math.min(100,Math.max(0,s.percent)),transform:"rotate(-90 8 8)"})]})})]}),"session"===S&&i&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"session-info-bar-popover-cover",onClick:z}),(0,n.jsx)("div",{className:"session-info-bar-popover is-session",style:R??void 0,children:(0,n.jsx)("div",{className:"session-stats-body",children:(()=>{let e=i.tokens,t=s??i.contextUsage,r=(e,t)=>{let r=W===e;return(0,n.jsx)("button",{type:"button",className:`session-stats-copy${r?" is-copied":""}`,title:r?j("desktop.copied"):"file"===e?j("desktop.copyFilePath"):j("desktop.copySessionId"),onClick:()=>A(e,t),children:r?(0,n.jsx)(f.J,{size:12,"aria-hidden":"true"}):(0,n.jsx)(sA.Q,{size:12,"aria-hidden":"true"})})},o=[];i.sessionName&&o.push((0,n.jsx)("div",{className:"session-stats-info-name",children:i.sessionName},"name")),o.push((0,n.jsxs)("div",{className:"session-stats-info-line",children:[(0,n.jsx)("span",{className:"session-stats-info-text",children:i.sessionFile?i.sessionFile.split(/[/\\]/).pop()??i.sessionFile:j("desktop.sessionInfoInMemory")}),i.sessionFile?r("file",i.sessionFile):null]},"file")),o.push((0,n.jsxs)("div",{className:"session-stats-info-line",children:[(0,n.jsx)("span",{className:"session-stats-info-text",children:i.sessionId}),r("id",i.sessionId)]},"id"));let l=[[j("desktop.sessionInfoUser"),i.userMessages.toLocaleString()],[j("desktop.sessionInfoAssistant"),i.assistantMessages.toLocaleString()],[j("desktop.sessionInfoToolCalls"),i.toolCalls.toLocaleString()],[j("desktop.sessionInfoToolResults"),i.toolResults.toLocaleString()],[j("desktop.sessionInfoTotal"),i.totalMessages.toLocaleString()]],a=[[j("desktop.sessionInfoInput"),e.input.toLocaleString()],[j("desktop.sessionInfoOutput"),e.output.toLocaleString()]];e.cacheRead>0&&a.push([j("desktop.sessionInfoCacheRead"),e.cacheRead.toLocaleString()]),e.cacheWrite>0&&a.push([j("desktop.sessionInfoCacheWrite"),e.cacheWrite.toLocaleString()]),a.push([j("desktop.sessionInfoTotal"),e.total.toLocaleString()]);let d=i.costCNY??0,c=i.costUSD??0;if(d>0&&a.push([j("desktop.sessionInfoCostOfficial"),ao(d)]),c>0&&a.push([j("desktop.sessionInfoCost"),`$${c.toFixed(4)}`]),d<=0&&c<=0&&i.cost>0&&a.push([j("desktop.sessionInfoCost"),`$${i.cost.toFixed(4)}`]),t?.contextWindow&&null!==t.percent){let e=t.percent,r=t.tokens;a.push([j("desktop.sessionInfoContext"),`${null!==e?`${e.toFixed(1)}%`:"?"} ${null!==r?ol(r):"?"}/${ol(t.contextWindow)}`])}(i.totalActiveMs??0)>0&&a.push([j("desktop.sessionInfoActiveTime"),function(e){if(e<=0)return"0s";let t=Math.floor(e/1e3),r=Math.floor(t/3600),n=Math.floor(t%3600/60),o=t%60;return r>0?`${r}h ${n}m`:n>0?`${n}m ${o}s`:`${o}s`}(i.totalActiveMs)]);let u=b?b.costCNY>0?ao(b.costCNY):b.costUSD>0?`$${b.costUSD.toFixed(4)}`:null:null,p=(e,t)=>(0,n.jsxs)("div",{className:"session-stats-row",children:[(0,n.jsx)("div",{className:"session-stats-label",children:e}),(0,n.jsx)("div",{className:"session-stats-value",children:t})]},e);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"session-stats-info-block",children:o}),(0,n.jsxs)("div",{className:"session-stats-side-by-side",children:[(0,n.jsxs)("div",{className:"session-stats-column",children:[(0,n.jsx)("div",{className:"session-stats-section-title",children:j("desktop.sessionInfoMessages")}),(0,n.jsx)("div",{className:"session-stats-compact-grid",children:l.map(([e,t])=>p(e,t))})]}),(0,n.jsxs)("div",{className:"session-stats-column",children:[(0,n.jsx)("div",{className:"session-stats-section-title",children:j("desktop.sessionInfoTokens")}),(0,n.jsx)("div",{className:"session-stats-compact-grid",children:a.map(([e,t])=>p(e,t))})]}),b&&(0,n.jsxs)("div",{className:"session-stats-column",children:[(0,n.jsx)("div",{className:"session-stats-section-title",children:j("desktop.turnUsageTitle")}),(0,n.jsxs)("div",{className:"session-stats-compact-grid",children:[p(j("desktop.sessionInfoInput"),b.input.toLocaleString()),p(j("desktop.sessionInfoOutput"),b.output.toLocaleString()),b.cacheRead>0&&p(j("desktop.sessionInfoCacheRead"),b.cacheRead.toLocaleString()),u&&p(j("desktop.sessionInfoCost"),u)]})]})]})]})})()})})]})]})]})}var cL=r(68635);function cN(e){return Math.ceil(e.getBoundingClientRect().height)}function cA({scrollElementRef:e,items:t,itemKeys:r,estimateSize:i=120,overscan:s=8,virtualizerRef:l,headerHeight:a=0}){let d=(0,o.useRef)(null),c=(0,o.useRef)(r),[u,p]=(0,o.useState)(null);(0,o.useEffect)(()=>{p(e.current)},[e]);let h=(0,cL.Te)({count:t.length,getScrollElement:()=>u??e.current,estimateSize:(0,o.useCallback)(()=>i,[i]),overscan:s,getItemKey:(0,o.useCallback)(e=>r[e]??`idx-${e}`,[r]),scrollMargin:a,measureElement:(e,t,r)=>{let n=r.indexFromElement(e),o=e.getAttribute("data-item-key"),s=r.options.getItemKey(n),l=d.current;return l&&e.isConnected&&e.parentElement===l&&o===s&&o===c.current[n]&&l.getClientRects().length?cN(e):r.itemSizeCache.get(s)??i}});h.shouldAdjustScrollPositionOnItemSizeChange=()=>!1,l&&(l.current=h);let g=(0,o.useCallback)(()=>{let e=d.current;if(e)for(let{index:t,size:r}of function(e,t){if(!e.isConnected||0===e.getClientRects().length)return[];let r=[];for(let n of Array.from(e.children)){let e=Number(n.getAttribute("data-index"));n.isConnected&&Number.isInteger(e)&&!(e<0)&&!(e>=t.length)&&n.getAttribute("data-item-key")===t[e]&&r.push({index:e,size:cN(n)})}return r}(e,c.current))h.options.getItemKey(t)===c.current[t]&&h.resizeItem(t,r)},[h]);(0,o.useLayoutEffect)(()=>{c.current=r,g()},[r,t,g]),(0,o.useEffect)(()=>{let e=d.current;if(!e)return;let t=new MutationObserver(t=>{t.some(t=>"attributes"!==t.type||t.target!==e&&t.target.parentNode!==e)&&g()});t.observe(e,{childList:!0,characterData:!0,subtree:!0,attributes:!0,attributeFilter:["class","style","hidden","open","src","width","height"]});let r=()=>{"visible"===document.visibilityState&&g()};return document.addEventListener("visibilitychange",r),e.addEventListener("load",g,!0),()=>{t.disconnect(),document.removeEventListener("visibilitychange",r),e.removeEventListener("load",g,!0)}},[g]);let x=(0,o.useRef)(!1),f=(0,o.useRef)(h);f.current=h,(0,o.useEffect)(()=>{x.current||0===t.length||u&&(x.current=!0,f.current.scrollToIndex(t.length-1,{align:"end"}))},[t.length,u]);let m=h.getVirtualItems();return(0,n.jsx)("div",{ref:d,className:"virtualized-message-list",style:{position:"relative",width:"100%",minWidth:0,height:h.getTotalSize()},children:m.map(e=>(0,n.jsx)("div",{"data-index":e.index,"data-item-key":e.key,ref:h.measureElement,style:{position:"absolute",top:0,left:0,width:"100%",minWidth:0,overflow:"clip",transform:`translateY(${e.start-a}px)`},children:t[e.index]},e.key))})}function cP(e){return e.replace(/<\/?[\w:-]+\b[^>]*>/g," ").replace(/&lt;\/?[\w:-]+\b[^&]*?&gt;/gi," ").replace(/\s+/g," ").trim()}function cF(e){return"user"===e.role||"assistant"===e.role&&(e.content??[]).some(e=>"text"===e.type||"thinking"===e.type||"toolCall"===e.type)}function cD({messages:e,streamingMessage:t,scrollContainer:r,messageRefs:i,onWidthChange:s,virtualizer:l}){var a;let[d,c]=(0,o.useState)(0),[u,p]=(0,o.useState)(1),[h,g]=(0,o.useState)(!1),[x,f]=(0,o.useState)([]),[m,v]=(0,o.useState)(!1),[y,b]=(0,o.useState)(null),[k,j]=(0,o.useState)(0),w=(0,o.useRef)(!1),S=(0,o.useRef)(null),C=(0,o.useMemo)(()=>t?[...e,t]:e,[e,t]),z=(0,o.useRef)(C);z.current=C;let T=(0,o.useCallback)(()=>{let e=r.current;if(!e)return;let t=e.scrollHeight,n=e.clientHeight,o=t-n;g(o>20),o<=0?(c(0),p(1)):(c(e.scrollTop/o),p(n/t))},[r]),R=(0,o.useRef)(null),I=(0,o.useRef)([]),M=(0,o.useRef)(l);M.current=l;let E=(0,o.useCallback)(()=>{R.current||(R.current=setTimeout(()=>{R.current=null;let e=r.current;if(!e)return;let t=e.scrollHeight;if(t<=0)return;let n=[],o=z.current,s=M.current;if(s){if(0>=s.totalHeight())return;let e=0,r=new Set;for(let i=0;i<o.length;i++){let l=o[i];if("user"!==l.role&&"assistant"!==l.role)continue;let a=s.refToItemIndex(e);if(e+=1,void 0===a||r.has(a)||!cF(l))continue;r.add(a);let d=s.getOffsetForIndex(a),c=s.sizeFor(a);n.push({topRatio:d/t,heightRatio:Math.max(c/t,1/t),msg:l,index:n.length})}}else{let r=i.current,s=0;for(let i=0;i<o.length;i++){let l=o[i];if("user"!==l.role&&"assistant"!==l.role)continue;let a=r?.[s];if(s++,cF(l)&&a){let r=a.getBoundingClientRect(),o=e.getBoundingClientRect(),i=r.top-o.top+e.scrollTop,s=r.height;n.push({topRatio:i/t,heightRatio:s/t,msg:l,index:n.length})}}}let l=I.current;l.length===n.length&&n.every((e,t)=>1e-6>Math.abs(e.topRatio-l[t].topRatio)&&1e-6>Math.abs(e.heightRatio-l[t].heightRatio))||(I.current=n,f(n))},150))},[r,i]);(0,o.useEffect)(()=>{let e=r.current;if(e)return e.addEventListener("scroll",T,{passive:!0}),()=>e.removeEventListener("scroll",T)},[r,T]),(0,o.useEffect)(()=>{let e=r.current;if(!e)return;let t=()=>{T(),E()},n=new ResizeObserver(t);return n.observe(e),e.firstElementChild&&n.observe(e.firstElementChild),t(),()=>{n.disconnect(),R.current&&(clearTimeout(R.current),R.current=null)}},[r,E,T]),(0,o.useEffect)(()=>{let e=setTimeout(()=>{T(),E()},50);return()=>clearTimeout(e)},[e.length,E,T]);let $=(0,o.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-u,e))/(1-u)*n)},[r,u]),W=(0,o.useCallback)(e=>{if(!h)return;w.current=!0;let t=e.currentTarget.getBoundingClientRect(),r=(e.clientY-t.top)/t.height,n=r-d*(1-u),o=n>=0&&n<=u?n:u/2;$(r-o);let i=e=>{w.current&&$((e.clientY-t.top)/t.height-o)},s=()=>{w.current=!1,window.removeEventListener("mousemove",i),window.removeEventListener("mouseup",s)};window.addEventListener("mousemove",i),window.addEventListener("mouseup",s)},[h,u,d,$]);(0,o.useEffect)(()=>{if(!h)return void j(0);let e=S.current;if(!e)return;let t=()=>j(e.clientHeight),r=new ResizeObserver(t);return r.observe(e),t(),()=>r.disconnect()},[h]);let L=(0,o.useMemo)(()=>{if(k<=0)return[];let e=[];return x.map(t=>{let r=t.topRatio*k,n=Math.max(3,Math.min(46,t.heightRatio*k)),o=Math.max(0,r-n/2),i=Math.min(k,r+n/2),s=e.findIndex(e=>o>=e+1);return -1===s?(s=e.length,e.push(i)):e[s]=i,{...t,displayTopPx:r,lane:s}})},[x,k]),N=Math.max(18,4+5*(a=(0,o.useMemo)(()=>L.reduce((e,t)=>Math.max(e,t.lane+1),1),[L]))+(a-1)*1);if((0,o.useEffect)(()=>{s?.(h?N:18)},[N,s,h]),(0,o.useEffect)(()=>()=>s?.(18),[s]),!h)return null;let A=d*(1-u)*100,P=100*u,F=null!==y&&L.length>0?L.reduce((e,t)=>Math.abs(t.displayTopPx/k-y)<Math.abs(L[e].displayTopPx/k-y)?t.index:e,0):null,D=null===F?null:L.find(e=>e.index===F)??null;return(0,n.jsxs)("div",{ref:S,onMouseDown:W,onMouseEnter:()=>v(!0),onMouseLeave:()=>{v(!1),b(null)},onMouseMove:e=>{let t=e.currentTarget.getBoundingClientRect();b((e.clientY-t.top)/t.height)},style:{width:N,flexShrink:0,position:"relative",cursor:"pointer",userSelect:"none",background:"transparent",overflow:"visible"},children:[(0,n.jsx)("div",{style:{position:"absolute",left:1,right:1,top:`${A}%`,height:`${P}%`,background:"color-mix(in srgb, var(--text-muted) 14%, transparent)",pointerEvents:"none",zIndex:1}}),L.map(e=>{let t=function(e){if("user"===e.role)return"var(--accent)";let t=e.content??[];return t.some(e=>"toolCall"===e.type&&e.error)?"var(--accent-red)":t.some(e=>"toolCall"===e.type)?"var(--accent-green)":"var(--text-dim)"}(e.msg),r=m&&D?.index===e.index,o="user"===e.msg.role,i=Math.max(3,Math.min(46,e.heightRatio*k)),s=2+6*e.lane;return(0,n.jsx)("div",{style:{position:"absolute",top:e.displayTopPx,transform:"translateY(-50%)",left:s,width:5,height:i,display:"flex",alignItems:"stretch",cursor:"pointer",zIndex:function(e){if("user"===e.role)return 6;let t=e.content??[];return t.some(e=>"toolCall"===e.type&&e.error)?5:t.some(e=>"text"===e.type&&!!e.text?.trim())?4:t.some(e=>"toolCall"===e.type)?3:2}(e.msg)},children:(0,n.jsx)("div",{style:{width:"100%",height:"100%",borderRadius:1,background:t,opacity:r?1:o?.92:.72,transition:"opacity 0.1s, filter 0.1s",filter:r?"brightness(1.2)":"none"}})},e.index)}),m&&D&&(()=>{let e=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 cP(r).slice(0,200);let n=t.filter(e=>"thinking"===e.type).map(e=>cP(e.thinking??"")).filter(Boolean).join(" ");if(n)return n.slice(0,200);let o=t.filter(e=>"toolCall"===e.type).map(e=>e.toolName);if(o.length)return o.join(", ")}return""}(D.msg);if(!e)return null;let t=function(e){if("user"===e.role)return"var(--minimap-preview-user-bg)";let t=e.content??[];return t.some(e=>"toolCall"===e.type&&e.error)?"var(--minimap-preview-error-bg)":t.some(e=>"toolCall"===e.type)?"var(--minimap-preview-tool-bg)":"var(--minimap-preview-default-bg)"}(D.msg),r=Math.max(1,Math.min(5,Math.floor(k/120))),o=15*r+4,i=Math.max(o/2,Math.min(k-o/2,D.displayTopPx));return(0,n.jsx)("div",{style:{position:"absolute",top:i,transform:"translateY(-50%)",right:"100%",marginRight:6,background:t,border:"none",borderRadius:4,padding:"2px 7px",width:220,zIndex:100,pointerEvents:"none"},children:(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text)",lineHeight:"15px",display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:r,overflow:"hidden",overflowWrap:"anywhere"},children:e})})})()]})}function cH(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function cO(e){return function(e,t={}){if("assistant"!==e.role)return e;let r=e.content;if(!Array.isArray(r))return e;let n=r.map(e=>(function(e,t={}){if(!cH(e)||"toolCall"!==e.type)return null;let r={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},n=t.includeStreamingRawInput?function(e){if("string"==typeof e.rawInput)return e.rawInput;if("string"==typeof e.partialJson)return e.partialJson;if("string"==typeof e.partialArgs)return e.partialArgs;let t=cH(e.customInput)?e.customInput:null,r=t&&"string"==typeof t.property?t.property:null,n=cH(e.arguments)?e.arguments:null;return r&&n&&"string"==typeof n[r]?n[r]:void 0}(e):void 0;return void 0===n?r:{...r,rawInput:n}})(e,t)??e);return{...e,content:n}}(e)}var cB=r(14755);function cU(e){if(!e)return 0;let t=0;for(let r of e){let e=r.codePointAt(0)??0;e>=19968&&e<=40959||e>=13312&&e<=19903||e>=131072&&e<=173791||e>=12352&&e<=12447||e>=12448&&e<=12543||e>=44032&&e<=55215?t+=1:t+=.25}return Math.max(0,Math.round(t))}function c_(){return"u">typeof performance?performance.now():Date.now()}function cq(){return globalThis.__piSessionViewCache||(globalThis.__piSessionViewCache=new Map),globalThis.__piSessionViewCache}function cK(e){var t;return("message_start"===e.type||"message_end"===e.type)&&"object"==typeof(t=e.message)&&null!==t&&!Array.isArray(t)&&"system"===e.message.role}function cV(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function cJ(e,t,r,n=8){return e+t>=r-n}function cY(e,t){switch(t.type){case"start":return{isStreaming:!0,streamingMessage:null};case"resume":return{...e,isStreaming:!0};case"update":return{isStreaming:!0,streamingMessage:t.message};case"end":case"reset":return{isStreaming:!1,streamingMessage:null};default:return e}}function cG(e){return e?"running_command"===e.phase||e.isBashRunning?{kind:"running_command"}:"waiting_model"===e.phase||e.isStreaming||e.isPromptRunning||e.isCompacting?{kind:"waiting_model"}:null:null}function cX(e,t){return e.length===t.length&&e.every((e,r)=>e===t[r])}function cZ(e){return{steering:e?.steering??[],followUp:e?.followUp??[]}}function cQ(e){return e&&"auto"!==e?e:null}let c0=["You are in PLAN MODE.","<economy-profile>","<delivery-profile>","<goal-profile>"],c1=new Set(["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"," ","Space","Spacebar"]);class c2 extends Error{constructor(e){super("timeout"===e?"Timed out connecting to the agent event stream. Please try again.":"Failed to connect to the agent event stream. Please try again."),this.status=e,this.name="EventStreamConnectionError"}}function c6(e){return new Promise(t=>setTimeout(t,e))}function c4(e){let t=e.findIndex(e=>!e.exiting);return -1===t?e:e.map((e,r)=>r===t?{...e,exiting:!0}:e)}function c5(e,t){switch(t.type){case"add":if(e.visible.some(e=>e.exiting)||e.visible.length>=5)return{visible:e.visible.some(e=>e.exiting)?e.visible:c4(e.visible),pending:[...e.pending,t.notice]};return{...e,visible:[...e.visible,t.notice]};case"mark_oldest_exiting":return{...e,visible:c4(e.visible)};case"remove":return function(e,t){let r=e,n=t;for(;n.length>0&&r.length<5;){let[e,...t]=n;r=[...r,e],n=t}return n.length>0&&!r.some(e=>e.exiting)&&(r=c4(r)),{visible:r,pending:n}}(e.visible.filter(e=>e.id!==t.id),e.pending);default:return e}}function c3(e){if(!e||"object"!=typeof e||"image"!==e.type)return"";let t=e.source;return t&&"object"==typeof t?["url"===t.type?"url":"base64","string"==typeof t.media_type?t.media_type:"","string"==typeof t.data?t.data:"","string"==typeof t.url?t.url:""].join(":"):["base64","string"==typeof e.mimeType?e.mimeType:"","string"==typeof e.data?e.data:"",""].join(":")}function c8(e){let t,r=e.content;return"string"==typeof r?JSON.stringify({text:r,images:[]}):Array.isArray(r)?JSON.stringify({text:"string"==typeof(t=e.content)?t:Array.isArray(t)?t.map(e=>e&&"object"==typeof e&&"text"===e.type&&"string"==typeof e.text?e.text:"").filter(Boolean).join("\n"):"",images:r.map(c3).filter(Boolean)}):JSON.stringify({text:"",images:[]})}function c7(e,t){return e&&"object"==typeof e?"number"!=typeof e.tokensBefore||"number"!=typeof e.estimatedTokensAfter?null:{reason:t,tokensBefore:e.tokensBefore,estimatedTokensAfter:e.estimatedTokensAfter}:null}let c9="pi-web:modes-global-default",ue="pi:open-tasks-view";function ut({session:e,newSessionCwd:t,onAgentEnd:i,onSessionCreated:s,onSessionForked:l,modelsRefreshKey:d,chatInputRef:c,onBranchDataChange:u,onSystemPromptChange:p,onSessionStatsChange:h,onSessionStatsPanelOpen:g,onContextUsageChange:x,onOpenFile:f,onWorkspaceControlsHostChange:m,onViewFullHistory:v,systemPrompt:y,tasksBoardEnabled:b,onOpenSession:k,onOpenSubagent:j,subagentRuns:w}){var S;let C,{soundEnabled:z,onSoundToggle:T,playDoneSound:R,unlockAudio:I}=function(){let[e,t]=(0,o.useState)(()=>{let e=localStorage.getItem("pi-sound-enabled");return null===e||"true"===e}),r=(0,o.useRef)(e);(0,o.useEffect)(()=>{r.current=e},[e]);let n=(0,o.useRef)(null),i=(0,o.useCallback)(()=>{if(n.current&&"closed"!==n.current.state)return n.current;try{n.current=new AudioContext}catch{return null}return n.current},[]),s=(0,o.useCallback)((e=!1)=>{if(!e&&!r.current)return;let t=i();t&&"suspended"===t.state&&t.resume().catch(()=>{})},[i]);return{soundEnabled:e,onSoundToggle:(0,o.useCallback)(()=>{let e=!r.current;e&&s(!0),r.current=e,localStorage.setItem("pi-sound-enabled",String(e)),t(e)},[s]),playDoneSound:(0,o.useCallback)(()=>{if(!r.current)return;let e=i();if(!e)return;let t=()=>{try{let t;t=e.currentTime,[523.25,659.25].forEach((r,n)=>{let o=e.createOscillator(),i=e.createGain();o.connect(i),i.connect(e.destination),o.type="sine",o.frequency.value=r;let s=t+.18*n;i.gain.setValueAtTime(0,s),i.gain.linearRampToValueAtTime(.18,s+.02),i.gain.exponentialRampToValueAtTime(.001,s+.45),o.start(s),o.stop(s+.45)})}catch{}};"suspended"===e.state?e.resume().then(t).catch(()=>{}):t()},[i]),unlockAudio:s,soundEnabledRef:r}}(),M=tp(),{t:E}=(0,Y.s)(),$=(0,o.useRef)(R);$.current=R;let W=(0,o.useRef)(z);W.current=z;let L=(0,o.useRef)(null),N=(0,o.useCallback)(()=>{W.current&&$.current(),i?.()},[i]),A=(0,o.useCallback)(e=>{let t=e;if("string"==typeof e.content){let r=te(e.content);r&&(t={...e,content:r})}c?.current?.replaceMessage(t)},[c]),P=(0,o.useCallback)(e=>{c?.current?.prependText(e)},[c]),F=(0,o.useCallback)((e,t)=>{aU={text:e,projectRoot:t??null},window.dispatchEvent(new CustomEvent(aB)),window.dispatchEvent(new Event(ue))},[]),{loading:D,error:H,messages:O,activeToolResults:B,entryIds:U,streamState:_,agentRunning:q,bashRunning:K,pendingBash:V,modelNames:J,modelList:G,modelThinkingLevels:X,modelThinkingLevelMaps:Z,modelScopeWarnings:Q,modelsError:ee,reloadModels:et,toolPreset:er,thinkingLevel:en,isAutoThinkingSelection:eo,retryInfo:ei,contextUsage:es,forkingEntryId:el,isCompacting:ea,compactError:ed,compactResult:ec,displayModel:eu,sessionStats:ep,tokenRate:eh,slashCommands:eg,slashCommandsLoading:ex,queuedMessages:ef,pendingRecovery:em,recoveryIsImport:ev,notices:ey,extensionDialog:eb,extensionCustomUi:ek,extensionStatuses:ej,extensionWidgets:ew,respondToExtensionUi:eS,sendExtensionCustomInput:eC,agentPhase:ez,isNew:eT,branchTree:eR,activeLeafId:eI,handleLeafChange:eM,sessionIdRef:eE,messagesEndRef:e$,scrollContainerRef:eW,lastUserMsgRef:eL,pendingScrollToUserRef:eN,initialScrollDoneRef:eA,scrollUserMsgToTop:eP,handleSend:eF,executeBash:eD,handleAbort:eH,handleFork:eO,handleNavigate:eB,handleModelChange:eU,handleCompact:e_,handleSteer:eq,handleFollowUp:eK,handlePromptWithStreamingBehavior:eV,handleAbortCompaction:eJ,handleRecallQueue:eY,resolveRecovery:eG,exportQueueData:eX,stageQueueImport:eZ,moveQueuedMessage:tt,recallQueuedMessage:tr,requeueAt:tn,removeQueuedMessage:to,handleBuiltinSlashCommand:ti,handleToolPresetChange:ts,handleThinkingLevelChange:tl,loadSlashCommands:ta,planMode:td,collaborationMode:tc,toolApprovalMode:tu,handleCollaborationModeChange:th,handleToolApprovalModeChange:tg,approvalRequests:tx,resolveApproval:tf,goalState:tm,handleGoalStart:tv,handleGoalPause:ty,handleGoalResume:tb,handleGoalStop:tk,handleGoalEdit:tj,historyCursor:tw,hasEarlierMessages:tS,loadContext:tC}=function(e){let{session:t,newSessionCwd:n,onAgentEnd:i,onSessionCreated:s,onSessionForked:l,modelsRefreshKey:a,onBranchDataChange:d,onSystemPromptChange:c,onSessionStatsPanelOpen:u}=e,p=null===t&&null!==n,h=`${t?.id??"new"}\0${n??t?.cwd??""}`,[g,x]=(0,o.useState)(null),f=(0,o.useRef)(null),m=(0,o.useRef)(0),v=(0,o.useRef)(null),[y,b]=(0,o.useState)(!p),[k,j]=(0,o.useState)(null),[w,S]=(0,o.useState)(null),[C,z]=(0,o.useState)([]),[T,R]=(0,o.useState)(new Map),[I,M]=(0,o.useState)([]),[E,$]=(0,o.useState)(null),[W,L]=(0,o.useState)(!1),[N,A]=(0,o.useReducer)(cY,{isStreaming:!1,streamingMessage:null}),P=(0,o.useRef)(!1);P.current=N.isStreaming;let[F,D]=(0,o.useState)(null),H=(0,o.useRef)({lastChars:0,window:[]}),O=(0,o.useCallback)(()=>{H.current={lastChars:0,window:[]},D(null)},[]),B=(0,o.useCallback)(e=>{if(!e||"assistant"!==e.role)return 0;let t=e.content;if(!Array.isArray(t))return 0;let r=0;for(let e of t)"string"==typeof e?r+=cU(e):e&&"object"==typeof e&&("string"==typeof e.text?r+=cU(e.text):"string"==typeof e.thinking&&(r+=cU(e.thinking)));return r},[]),U=(0,o.useCallback)(e=>{let t=B(e),r=H.current;if(t===r.lastChars)return;let n=Date.now(),o=Math.max(0,t-r.lastChars);r.lastChars=t,r.window.push({at:n,chars:o});let i=n-1e3;for(;r.window.length>0&&r.window[0].at<i;)r.window.shift();let s=r.window.reduce((e,t)=>e+t.chars,0),l=r.window.length>0?n-r.window[0].at:0;l<200||D(Math.max(0,Math.round(s/Math.max(1,l)*1e4)/10))},[B]),[_,q]=(0,o.useState)(!1),[K,V]=(0,o.useState)(!1),[J,Y]=(0,o.useState)(null),[G,X]=(0,o.useState)({}),[Z,Q]=(0,o.useState)([]),[ee,et]=(0,o.useState)({}),[er,en]=(0,o.useState)({}),[eo,ei]=(0,o.useState)([]),[es,el]=(0,o.useState)(null),[ea,ed]=(0,o.useState)(null),[ec,eu]=(0,o.useState)(null),[ep,eh]=(0,o.useState)(cB.Q8),eg=(0,o.useRef)("default"),ex=(0,o.useRef)(!1),[ef,em]=(0,o.useState)(()=>(function(){try{let e=window.localStorage.getItem(c9);if(!e)return null;let t=JSON.parse(e),r=t.permissionRules;return{collaborationMode:e2(t.collaborationMode),tokenMode:e6(t.tokenMode),toolApprovalMode:e4(t.toolApprovalMode),permissionRules:{allow:Array.isArray(r?.allow)?r.allow:[],ask:Array.isArray(r?.ask)?r.ask:[],deny:Array.isArray(r?.deny)?r.deny:[]}}}catch{return null}})()??{collaborationMode:eQ,tokenMode:e0,toolApprovalMode:e1,permissionRules:{allow:[],ask:[],deny:[]}}),ev=(0,o.useRef)(null),ey=(0,o.useRef)(!1),eb=(0,o.useRef)(t?.id??null);eb.current=t?.id??null,(0,o.useEffect)(()=>{let e=!1,t=async()=>{let t=eb.current,r=t?`?session=${encodeURIComponent(t)}`:"";try{let n=await fetch(`/api/modes${r}`);if(!n.ok||e)return;let o=await n.json();if(e)return;let i={collaborationMode:e2(o.collaborationMode),tokenMode:e6(o.tokenMode),toolApprovalMode:e4(o.toolApprovalMode),permissionRules:{allow:Array.isArray(o.permissionRules?.allow)?o.permissionRules.allow:[],ask:Array.isArray(o.permissionRules?.ask)?o.permissionRules.ask:[],deny:Array.isArray(o.permissionRules?.deny)?o.permissionRules.deny:[]}};if(!ey.current&&t&&"plan"===i.collaborationMode){let r=await fetch("/api/modes").catch(()=>null);if(!e&&r?.ok){let n=await r.json().catch(()=>null);if(!e&&n){let e=i.collaborationMode;(i={...i,collaborationMode:e2(n.collaborationMode)}).collaborationMode!==e&&fetch(`/api/modes?session=${encodeURIComponent(t)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)}).catch(()=>{})}}}ey.current=!0,em(i),t||function(e){try{window.localStorage.setItem(c9,JSON.stringify(e))}catch{}}(i)}catch{}};t();let r=()=>void t();return window.addEventListener("pi:modes-changed",r),()=>{e=!0,ey.current=!1,window.removeEventListener("pi:modes-changed",r)}},[t?.id]);let ek=ef.collaborationMode,ej=ef.tokenMode,ew=ef.toolApprovalMode,eS=ef.permissionRules,eC="plan"===ek;(0,o.useEffect)(()=>{ex.current=eC},[eC]);let ez=(0,o.useRef)(ek),eT=(0,o.useRef)(ej),eR=(0,o.useRef)(ew),eI=(0,o.useRef)(ef.permissionRules),eM=(0,o.useRef)(null),eE=(0,o.useRef)({sessionKey:"",signature:""}),e$=(0,o.useRef)(ef);(0,o.useEffect)(()=>{e$.current=ef},[ef]),(0,o.useEffect)(()=>{eR.current=ew},[ew]),(0,o.useEffect)(()=>{eI.current=ef.permissionRules},[ef.permissionRules]),(0,o.useEffect)(()=>{ez.current=ek,eE.current={sessionKey:"",signature:""}},[ek]),(0,o.useEffect)(()=>{eT.current=ej,eE.current={sessionKey:"",signature:""}},[ej]);let[eW,eL]=(0,o.useState)([]),eN=(0,o.useRef)([]);(0,o.useEffect)(()=>{eN.current=eW},[eW]);let[eA,eP]=(0,o.useState)({status:"idle",goalText:null,turnsUsed:0,turnsLimit:10,noProgressTurns:0,noProgressLimit:4,tokensUsed:0,tokenBudget:null,timeUsedSeconds:0}),eF=(0,o.useRef)(eA);(0,o.useEffect)(()=>{eF.current=eA},[eA]);let[eD,eH]=(0,o.useState)(!0),eO=(0,o.useRef)(!1),[eB,eU]=(0,o.useState)("auto"),[e_,eq]=(0,o.useState)(null),[eK,eV]=(0,o.useState)(null),[eJ,eY]=(0,o.useState)(null),[eG,eX]=(0,o.useState)(null),[eZ,tt]=(0,o.useState)(null),[tr,tn]=(0,o.useState)(null),[to,ti]=(0,o.useState)(null),ts=(0,o.useCallback)(e=>{let t=e?.model;t&&"string"==typeof t.provider&&"string"==typeof t.modelId&&ti({provider:t.provider,modelId:t.modelId}),e?.thinkingLevel!==void 0&&eq(cQ(e.thinkingLevel))},[]),[tl,ta]=(0,o.useState)(null),[td,tc]=(0,o.useState)(!1),[tu,tp]=(0,o.useState)(null),[th,tg]=(0,o.useState)(null),[tx,tf]=(0,o.useState)(null),[tm,tv]=(0,o.useState)(!1),[ty,tb]=(0,o.useState)(!1),[tk,tj]=(0,o.useState)([]),[tw,tS]=(0,o.useState)(!1),[tC,tz]=(0,o.useReducer)(c5,{visible:[],pending:[]}),[tT,tI]=(0,o.useState)(null),[tM,t$]=(0,o.useState)(null),[tW,tL]=(0,o.useState)(null),[tN,tA]=(0,o.useState)([]),[tP,tF]=(0,o.useState)([]),[tD,tH]=(0,o.useState)({steering:[],followUp:[]}),tO=(0,o.useCallback)(e=>{tH(t=>{let r="function"==typeof e?e(t):e;return cX(t.steering,r.steering)&&cX(t.followUp,r.followUp)?t:r})},[]),[tB,tU]=(0,o.useState)([]),t_=(0,o.useCallback)(e=>{tU(t=>{let r="function"==typeof e?e(t):e;return t.length===r.length&&t.every((e,t)=>{let n=r[t];return e.id===n.id&&e.kind===n.kind&&e.text===n.text&&e.hasImages===n.hasImages})?t:r})},[]),[tq,tK]=(0,o.useState)(!1),tV=(0,o.useRef)(null),tJ=(0,o.useCallback)(()=>{tV.current&&clearTimeout(tV.current),tV.current=setTimeout(async()=>{tV.current=null;let e=t6.current;if(e)try{let t=await fetch(`/api/agent/${encodeURIComponent(e)}`);if(!t.ok)return;let r=await t.json();r.state?.queuedMessages!==void 0&&tO(cZ(r.state.queuedMessages))}catch{}},8e3)},[tO]),tY=(0,o.useCallback)(()=>{tV.current&&(clearTimeout(tV.current),tV.current=null)},[]),tG=(0,o.useRef)(null),tX=(0,o.useRef)(null),tZ=(0,o.useRef)(null),tQ=(0,o.useRef)(null),t0=(0,o.useRef)(0),t1=(0,o.useRef)(!1),t2=(0,o.useRef)(0),t6=(0,o.useRef)(t?.id??null),t4=(0,o.useRef)(!0),t5=(0,o.useRef)({}),t3=(0,o.useRef)("off"),[t8,t7]=(0,o.useState)(null),t9=(0,o.useRef)(0),re=(0,o.useRef)(t?.id??null);re.current=t?.id??null;let rt=(0,o.useRef)(!1),rr=(0,o.useRef)(!1),rn=(0,o.useRef)(!1),ro=(0,o.useRef)(!1),ri=(0,o.useRef)(-1),rs=(0,o.useRef)(!0),rl=(0,o.useRef)(!1),ra=(0,o.useRef)(!1),rd=(0,o.useRef)(0),rc=(0,o.useRef)(!1),ru=(0,o.useRef)(null),rp=(0,o.useRef)(!1),rh=(0,o.useRef)(null),rg=(0,o.useRef)(!1),rx=(0,o.useRef)(!0),rf=(0,o.useRef)(!0),rm=(0,o.useRef)(0),rv=(0,o.useRef)(0),ry=(0,o.useRef)(null),rb=(0,o.useRef)(null),rk=(0,o.useRef)(null),rj=(0,o.useRef)(!1),rw=(0,o.useRef)(0),rS=(0,o.useRef)(null),rC=(0,o.useRef)(0),rz=(0,o.useRef)(0),rT=(0,o.useRef)(null),rR=(0,o.useRef)(h);rR.current=h;let rI=(0,o.useRef)(null),rM=(0,o.useRef)(null),rE=(0,o.useRef)(null);rE.current||(rE.current=function(e,t={}){let r,n=1e3/Math.max(1,t.maxUpdatesPerSecond??30),o=t.now??c_,i=t.requestFrame??("function"==typeof requestAnimationFrame?requestAnimationFrame:void 0),s=t.cancelFrame??("function"==typeof cancelAnimationFrame?cancelAnimationFrame:void 0),l=t.setTimer??setTimeout,a=t.clearTimer??clearTimeout,d=!1,c=!1,u=null,p=null,h=null,g=()=>{null!==u&&(s?.(u),u=null),null!==p&&(a(p),p=null)},x=(t,n)=>{if(!c||d)return;let o=r;c=!1,r=void 0,h=t;let i=()=>{d||e(o)};n&&"function"==typeof queueMicrotask?queueMicrotask(i):i()},f=()=>{if(!d&&c&&null===u&&null===p){if(!i){let e=null===h?n:o()-h;p=l(()=>{p=null,x(o(),!0),f()},Math.max(0,n-e));return}u=i(e=>{if(u=null,d||!c)return;let t=null===h?n:e-h;if(t<n){p=l(()=>{p=null,f()},n-t);return}x(e,!0),f()})}};return{enqueue(e){d||(r=e,c=!0,f())},flush(){!d&&c&&(g(),x(o(),!1),f())},reset(){g(),c=!1,r=void 0,h=null},destroy(){d||(d=!0,g(),c=!1,r=void 0)}}}(e=>{A({type:"update",message:e})}));let r$=(0,o.useCallback)(()=>{rE.current?.reset()},[]),rW=(0,o.useCallback)(e=>{rE.current?.enqueue(e)},[]),rL=e.setToolPreset??eh,rN=g?.context.model,rA=rN&&rN.provider&&rN.modelId?rN:null,rP=tr??rA??tl??null,rF=p?ea??ec:rP??(g?.context.messages.length===0?ec:null),rD=cQ(g?.context.thinkingLevel&&"off"!==g.context.thinkingLevel?g.context.thinkingLevel:null),rH=rM.current,rO=p?rH??t8:e_??rD??(g?.context.messages.length===0?t8:null),rB=(0,o.useMemo)(()=>{if(tT)return{...tT,totalActiveMs:g?.totalActiveMs};if(t&&g&&void 0===g.stats)return null;let e={input:0,output:0,cacheRead:0,cacheWrite:0,total:0},r=0,n=0,o=0,i=0,s=0,l=0,a=0;for(let t of C){if("user"===t.role&&(i+=1),"toolResult"===t.role&&(l+=1),"assistant"!==t.role)continue;s+=1;let d=t.usage;if(a+=t.content.filter(e=>"toolCall"===e.type).length,!d)continue;e.input+=d.input??0,e.output+=d.output??0,e.cacheRead+=d.cacheRead??0,e.cacheWrite+=d.cacheWrite??0;let c=d.cost?.total??0;r+=c,ar(t.model)?n+=an(t.model,d):o+=c}let d=g?.stats;return(d&&(e.input=Math.max(e.input,d.tokens.input),e.output=Math.max(e.output,d.tokens.output),e.cacheRead=Math.max(e.cacheRead,d.tokens.cacheRead),e.cacheWrite=Math.max(e.cacheWrite,d.tokens.cacheWrite),o=Math.max(o,d.cost),i=Math.max(i,d.userMessages),s=Math.max(s,d.assistantMessages),l=Math.max(l,d.toolResults),a=Math.max(a,d.toolCalls)),e.total=e.input+e.output+e.cacheRead+e.cacheWrite,0!==e.total||0!==C.length||d)?{sessionFile:g?.filePath||void 0,sessionId:t6.current??t?.id??"",sessionName:t?.name,userMessages:i,assistantMessages:s,toolCalls:a,toolResults:l,totalMessages:d?Math.max(C.length,d.totalMessages):C.length,tokens:e,cost:r,costCNY:n,costUSD:o,totalActiveMs:g?.totalActiveMs,...eJ?{contextUsage:eJ}:{}}:null},[C,tT,eJ,g?.filePath,g?.totalActiveMs,g?.stats,t?.id,t?.name]),rU=(0,o.useCallback)(async(e,t=!1,r=!1,n)=>{let o=m.current,i=!1;try{let s;t&&b(!0),f.current?.abort(),o=m.current+1,m.current=o;let l=new AbortController;f.current=l;let a=new URLSearchParams({deferThinking:"1",deferMedia:"1",view:"initial"});n?.force&&a.set("force","1");let d=async()=>{let t=new AbortController,r=setTimeout(()=>t.abort(),3e4),n=()=>t.abort();l.signal.addEventListener("abort",n,{once:!0});try{return await fetch(`/api/sessions/${encodeURIComponent(e)}?${a}`,{signal:t.signal})}finally{clearTimeout(r),l.signal.removeEventListener("abort",n)}};try{s=await d()}catch(e){if(!(e instanceof DOMException&&"AbortError"===e.name))throw e;if(l.signal.aborted)return null;s=await d()}if(404===s.status)return t&&(r1.current+=1,x(null),S(null),z([]),M([]),$(null),L(!1),j(null)),cq().delete(e),null;if(!s.ok)throw Error(`HTTP ${s.status}`);let c=await s.json();if(t6.current!==e||m.current!==o)return null;x(c),v.current?.abort();let u=new AbortController;if(v.current=u,fetch(`/api/sessions/${encodeURIComponent(e)}/details`,{signal:u.signal}).then(async e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return await e.json()}).then(t=>{t6.current!==e||m.current!==o||u.signal.aborted||x(r=>r?.sessionId===e?{...r,...t}:r)}).catch(e=>{"AbortError"!==e.name&&console.warn("Failed to load session details",e)}),S(c.leafId),z(c.context.messages),M(c.context.entryIds??[]),rr.current||(rv.current=Date.now()+700),r1.current+=1,$(c.context.oldestEntryId),L(c.context.hasMore),tn(e=>e?c.context.model&&e.provider===c.context.model.provider&&e.modelId===c.context.model.modelId?null:e:null),rt.current=void 0!==c.toolNames,rL(void 0!==c.toolNames?(0,cB.YO)(c.toolNames):cB.Q8),j(null),c.wrapperRebuilt&&(rY(),rG(e)),!r&&c.context.thinkingLevel&&"off"!==c.context.thinkingLevel&&eq(cQ(c.context.thinkingLevel)),i=!0,t&&b(!1),!r)return null;try{let t,r=new AbortController,n=setTimeout(()=>r.abort(),2e4);try{t=await fetch(`/api/sessions/${encodeURIComponent(e)}/state`,{signal:r.signal})}finally{clearTimeout(n)}if(!t.ok)throw Error(`HTTP ${t.status}`);let i=await t.json();if(t6.current!==e||m.current!==o)return null;let s=i.state;if(ts(s),s){if(void 0!==s.contextUsage&&eY(s.contextUsage??null),void 0!==s.systemPrompt&&eX(s.systemPrompt??null),void 0!==s.extensionStatuses&&tA(s.extensionStatuses??[]),void 0!==s.extensionWidgets&&tF(s.extensionWidgets??[]),void 0!==s.queuedMessages&&tO(cZ(s.queuedMessages)),void 0!==s.pendingRecovery&&t_(s.pendingRecovery??[]),void 0!==s.autoCompactionEnabled&&eH(s.autoCompactionEnabled??!0),void 0!==s.goalState){let e=s.goalState;e&&(eF.current=e,eP(e))}}else i.running||tO({steering:[],followUp:[]});return i}catch(e){return console.error("Failed to load agent state:",e),null}}catch(t){let e=t instanceof DOMException&&"AbortError"===t.name;if(i)return console.warn("Failed to load auxiliary session state",t),null;return j(e?"Timed out loading this conversation. Please try again.":String(t)),null}finally{t&&!i&&m.current===o&&b(!1)}},[t_,tO,rL]);(0,o.useEffect)(()=>{if(!t||!y)return;let e=window.setTimeout(()=>{rs.current&&t6.current&&y&&(f.current?.abort(),v.current?.abort(),b(!1),j("Timed out loading this conversation. Please try again."))},35e3);return()=>window.clearTimeout(e)},[y,t]);let r_=(0,o.useCallback)(async e=>{try{let t=await tE(e,{type:"get_tools"});if(!t||!t4.current||t6.current!==e)return null;let{getPresetFromTools:n}=await Promise.resolve().then(r.bind(r,14755)),o=n(t);return rt.current&&"plan"===o&&!ex.current?(await tE(e,{type:"set_tools",toolNames:(0,cB.xG)("default")}).catch(()=>{}),rL("default")):rL(rt.current?o:cB.Q8),t}catch(e){console.error("Failed to load tools:",e)}},[rL]),rq=(0,o.useCallback)((e=0,t="(no messages)")=>{let r=t6.current;p&&n&&r&&!rj.current&&(rj.current=!0,s?.({id:r,path:"",cwd:n,name:void 0,created:new Date().toISOString(),modified:new Date().toISOString(),messageCount:e,firstMessage:t}))},[p,n,s]),rK=(0,o.useCallback)(async()=>{if(t6.current||!p||!n)return t6.current;if(rk.current)return rk.current;let e=(async()=>{let e,t=rI.current,r=rM.current;t&&ta(t);let o=(0,cB.xG)(ep);rt.current=void 0!==o;let i=new AbortController,s=setTimeout(()=>i.abort(),3e4);try{e=await fetch("/api/agent/new",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:n,type:"ensure_session",...void 0!==o?{toolNames:o}:{},...t?{provider:t.provider,modelId:t.modelId}:{},...r?{thinkingLevel:r}:{}}),signal:i.signal})}catch(e){if(i.signal.aborted)throw Error("Timed out creating a new session after 30s. The agent service may still be starting up — please try again.");throw e}finally{clearTimeout(s)}if(!e.ok){let t=await e.json().catch(()=>null);throw Error(t?.error??`HTTP ${e.status}`)}let l=await e.json();t6.current=l.sessionId;let a=ev.current;return a&&(ev.current=null,fetch(`/api/modes?session=${encodeURIComponent(l.sessionId)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}).catch(e=>{console.error("Failed to persist pending mode settings:",e)})),l.model&&rI.current===t&&(ta(l.model),t||eu(l.model)),l.thinkingLevel&&rM.current===r&&(eU(l.thinkingLevel),eq(cQ(l.thinkingLevel))),l.sessionId})();rk.current=e;try{return await e}finally{rk.current=null}},[p,n,ep]);(0,o.useCallback)(async()=>{let e=t6.current??await rK();if(!e)return;let[t]=await Promise.all([tE(e,{type:"get_state"}),r_(e)]);t4.current&&t6.current===e&&(ts(t),eX(t.systemPrompt??""))},[rK,r_,ts]);let rV=(0,o.useCallback)(async()=>{let e=t6.current??await rK();if(!e)return tj([]),[];tS(!0);try{let t=await tE(e,{type:"get_commands"}),r=t?.commands??[];return tj(r),r}catch(e){return console.error("Failed to load slash commands:",e),tj([]),[]}finally{tS(!1)}},[rK]),rJ=(0,o.useCallback)(()=>{t0.current+=1,t1.current=!1,tQ.current&&(clearTimeout(tQ.current),tQ.current=null)},[]),rY=(0,o.useCallback)(()=>{tG.current?.close(),tG.current=null,tX.current=null,tZ.current=null},[]),rG=(0,o.useCallback)(e=>{rY(),t2.current=Date.now();let t=new EventSource(`/api/agent/${encodeURIComponent(e)}/events`);tG.current=t,tX.current=e;let r=new Promise(r=>{let n=!1,o=e=>{n||(n=!0,clearTimeout(i),tZ.current?.source===t&&(tZ.current.pending=!1),r({status:e,source:t}))},i=setTimeout(()=>o("timeout"),3e4);t.onmessage=e=>{t2.current=Date.now();try{let t=JSON.parse(e.data);"connected"===t.type&&o("connected"),ru.current?.(t)}catch{}},t.onerror=()=>{if(t.readyState!==EventSource.CLOSED||(o("closed"),tG.current!==t||!rr.current&&!t1.current))return;tG.current=null,tX.current=null,tZ.current=null;let r=t0.current;setTimeout(()=>{r===t0.current&&!tG.current&&(rr.current||t1.current)&&rG(e)},1e3)}});return tZ.current={source:t,promise:r,pending:!0},r},[rY]),rX=(0,o.useCallback)(async e=>{let t=tG.current;if(t&&tX.current===e)if(t.readyState===EventSource.OPEN)if(!(Date.now()-t2.current>95e3))return;else rY();else{let e=tZ.current;if(e?.source===t&&e.pending&&(await e.promise,tG.current===t&&t.readyState===EventSource.OPEN))return}let r=await rG(e);if("connected"!==r.status&&r.source.readyState!==EventSource.OPEN)throw tG.current===r.source&&(tG.current=null),tX.current===e&&(tX.current=null),tZ.current?.source===r.source&&(tZ.current=null),r.source.close(),new c2(r.status)},[rG]),rZ=(0,o.useCallback)(async(e,t)=>{let r=t6.current;if(t$(t=>t?.id===e.id?null:t),r)try{await tE(r,{type:"extension_ui_response",id:e.id,...t})}catch(e){console.error("Failed to send extension UI response:",e)}},[]),rQ=(0,o.useCallback)(async(e,t)=>{let r=t6.current;if(r)try{await tE(r,{type:"extension_ui_input",id:e.id,data:t})}catch(e){console.error("Failed to send extension custom UI input:",e)}},[]),r0=(0,o.useCallback)(e=>{let t=e.message.trim();if(!t)return;let r=e.type??"info";("error"===r||"warning"===r)&&fetch("/api/logs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({level:r,source:"agent-notice",sessionId:t6.current??void 0,message:t})}).catch(()=>{}),tz({type:"add",notice:{id:e.id??("u">typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`),message:t,type:r}})},[]),r1=(0,o.useRef)(0),r2=(0,o.useCallback)(async(e,t,r)=>{let n=r1.current,o=async n=>{let o=new URLSearchParams({deferThinking:"1",deferMedia:"1"});return t&&o.set("leafId",t),r&&o.set("before",r),fetch(`/api/sessions/${encodeURIComponent(e)}/context?${o}`,{signal:n})};try{let t,i=new AbortController,s=setTimeout(()=>i.abort(),3e4);try{t=await o(i.signal)}catch(e){if(!(e instanceof DOMException&&"AbortError"===e.name))throw e;t=await o(i.signal)}finally{clearTimeout(s)}if(!t.ok)throw Error(`HTTP ${t.status}`);let l=await t.json();if(t6.current!==e||r1.current!==n)return;$(l.context.oldestEntryId),L(l.context.hasMore),x(t=>{if(!t||t.sessionId!==e)return t;let n=r?{...t.context,messages:[...l.context.messages,...t.context.messages],entryIds:[...l.context.entryIds,...t.context.entryIds],oldestEntryId:l.context.oldestEntryId,hasMore:l.context.hasMore}:l.context;return{...t,context:n}}),r?(z(e=>[...l.context.messages,...e]),M(e=>[...l.context.entryIds,...e])):(z(l.context.messages),M(l.context.entryIds??[]))}catch(t){console.error("Failed to load context:",t),rs.current&&t6.current===e&&r1.current===n&&r0({type:"error",message:"Failed to load earlier messages. Scroll up to retry."})}},[r0]),r6=(0,o.useCallback)(t=>{switch(t.method){case"select":case"confirm":case"input":case"editor":t$(t);break;case"notify":r0({id:t.id,message:function(e){if(!("u">typeof document&&("zh-CN"===document.documentElement.lang||"zh"===document.documentElement.lang)))return e;let t=e.trim();return t.startsWith("Plan mode enabled")?"已启用计划模式:只读分析与产出计划,不修改文件。":t.startsWith("Plan mode disabled")?"已退出计划模式。":t.startsWith("No completed plan is available")?"当前没有可用的已完成计划。":t.startsWith("Unable to send Plan-mode message")?`无法发送计划模式消息:${t.replace(/^Unable to send Plan-mode message:\s*/,"")}`:e}(t.message),type:t.notifyType??"info"});break;case"setStatus":tA(e=>{let r=e.filter(e=>e.key!==t.statusKey);return t.statusText?[...r,{key:t.statusKey,text:t.statusText}]:r});break;case"setWidget":tF(e=>(function(e,t,r,n="aboveEditor"){if(void 0===r)return e.filter(e=>e.key!==t);let o={key:t,lines:r,placement:n},i=e.findIndex(e=>e.key===t);return -1===i?[...e,o]:e.map((e,t)=>t===i?o:e)})(e,t.widgetKey,t.widgetLines,t.widgetPlacement));break;case"setTitle":t.title&&(document.title=t.title);break;case"set_editor_text":e.chatInputRef?.current?.insertText(t.text);break;case"custom":tL(e=>t.closed?e?.id===t.id?null:e:t)}},[r0,e.chatInputRef]),r4=(0,o.useRef)(null),r5=(0,o.useCallback)(()=>{null!==r4.current&&(cancelAnimationFrame(r4.current),r4.current=null)},[]),r3=(0,o.useCallback)(()=>{r$(),r5();let e=rr.current;return rr.current=!1,q(!1),tf(null),eV(null),R(new Map),A({type:"end"}),e},[r5,r$]),r8=(0,o.useCallback)(e=>ri.current!==e&&(ri.current=e,i?.(),!0),[i]),r7=(0,o.useCallback)(e=>{if(re.current===e)return void rJ();rJ(),t1.current=!0;let t=t0.current,r=async()=>{if(t===t0.current&&t6.current===e&&t1.current)try{let n=await fetch(`/api/agent/${encodeURIComponent(e)}`);if(!n.ok)throw Error(`HTTP ${n.status}`);let o=await n.json();if(t!==t0.current||t6.current!==e||!t1.current)return;let i=o.state;if(ts(i),o.running&&i&&(i.isStreaming||i.isPromptRunning)){t1.current=!1,tQ.current=null,rn.current=!!i?.isStreaming,ro.current=!!i?.isPromptRunning,rr.current=!0,q(!0),tf(cG(i));return}if(o.running&&i?.isCompacting){tc(!0),tQ.current=setTimeout(()=>void r(),600);return}t1.current=!1,tQ.current=null,rY()}catch{if(t!==t0.current||t6.current!==e||!t1.current)return;tQ.current=setTimeout(()=>void r(),600)}};tQ.current=setTimeout(()=>void r(),12e4)},[rJ,rY,ts]);(0,o.useEffect)(()=>{let e=t?.id;if(!e)return;let r=!1,n=!1,o=0,i=async()=>{if(!r&&!n){n=!0;try{let t=await fetch(`/api/agent/${encodeURIComponent(e)}/lease`,{method:"POST",cache:"no-store"});if(!t.ok||r)return;let n=await t.json();!r&&0===n.renewed&&t6.current===e&&re.current===e&&Date.now()-o>=3e4&&(o=Date.now(),rY(),rX(e).catch(()=>!1))}catch{}finally{n=!1}}},s=setInterval(()=>void i(),3e4),l=()=>{"visible"===document.visibilityState&&i()};return document.addEventListener("visibilitychange",l),()=>{r=!0,clearInterval(s),document.removeEventListener("visibilitychange",l)}},[rY,rX,t?.id]);let r9=(0,o.useCallback)(async(e=t6.current,t=rw.current)=>{if(rw.current===t)try{e&&await rU(e)}finally{if(rw.current!==t)return;let r=ro.current,n=rn.current;ro.current=!1,rn.current=!1,rS.current=null;let o=r3();r?r8(t):n&&o&&i?.(),e&&r7(e)}},[rU,r8,i,r7,r3]),ne=(0,o.useCallback)(async(e,t=rw.current)=>{await c6(800);let r=Date.now(),n=0;for(;Date.now()-r<2e4;){if(!rs.current||rw.current!==t)return;try{let o=await fetch(`/api/agent/${encodeURIComponent(e)}`);if(o.ok){n=0;let i=await o.json(),s=i.state;if(ts(s),!(i.running&&s&&(s.isStreaming||s.isPromptRunning)))return void await r9(e,t);r=Date.now()}else n+=1}catch{n+=1}if(n>=3){if(rw.current!==t)return;r0({type:"error",message:"Cannot reach the pi-web service. Make sure it is running, then refresh the page."}),ro.current=!1,rS.current=null,r3();return}await c6(3e3)}rw.current===t&&(r0({type:"error",message:"Message delivery could not be confirmed. Refresh the page to see the latest state."}),ro.current=!1,rS.current=null,r3())},[r0,r9,r3]),nt=(0,o.useCallback)(async e=>{let t=rd.current+1;for(rd.current=t;ra.current&&rd.current===t&&t6.current===e;){await c6(1e3);try{let r=await fetch(`/api/agent/${encodeURIComponent(e)}`);if(!r.ok)continue;let n=await r.json();if(ts(n.state),n.state?.isBashRunning)continue;if(await rU(e),rd.current!==t||t6.current!==e)return;ra.current=!1,V(!1),Y(null);return}catch{}}},[rU,ts]),nr=(0,o.useRef)(0),nn=(0,o.useCallback)(async e=>{if(!rr.current&&!P.current)return;let t=rw.current;try{let r,n=new AbortController,o=setTimeout(()=>n.abort(),1e4);try{r=await fetch(`/api/agent/${encodeURIComponent(e)}`,{signal:n.signal})}finally{clearTimeout(o)}if(!r.ok)throw Error(`HTTP ${r.status}`);nr.current=0;let i=await r.json();if(rw.current!==t)return;let s=i.state;if(ts(s),tc(s?.isCompacting??!1),ro.current||tf(cG(s)),tO(cZ(s?.queuedMessages)),t_(s?.pendingRecovery??[]),i.running&&s&&(s.isStreaming||s.isPromptRunning||s.isBashRunning||s.isCompacting)){rn.current=rn.current||!!s.isStreaming,ro.current=ro.current||!!s.isPromptRunning;return}if(!rr.current&&!P.current)return;if(s&&(void 0!==s.contextUsage&&eY(s.contextUsage??null),void 0!==s.systemPrompt&&eX(s.systemPrompt??null),void 0!==s.extensionStatuses&&tA(s.extensionStatuses??[]),void 0!==s.extensionWidgets&&tF(s.extensionWidgets??[]),void 0!==s.goalState)){let e=s.goalState;e&&(eF.current=e,eP(e))}await r9(e,t)}catch{if(nr.current+=1,nr.current<3||!rs.current||rw.current!==t)return;nr.current=0,r0({type:"error",message:"Cannot reach the pi-web service. Make sure it is running, then refresh the page."}),ro.current=!1,rS.current=null,r3()}},[r0,r9,t_,tO,r3,ts]);(0,o.useEffect)(()=>{if(!_&&!N.isStreaming)return;let e=()=>{let e=t6.current;e&&nn(e)},t=()=>{"visible"===document.visibilityState&&e()},r=()=>e(),n=()=>e(),o=setInterval(e,15e3);return document.addEventListener("visibilitychange",t),window.addEventListener("pageshow",r),window.addEventListener("focus",n),window.addEventListener("online",e),()=>{clearInterval(o),document.removeEventListener("visibilitychange",t),window.removeEventListener("pageshow",r),window.removeEventListener("focus",n),window.removeEventListener("online",e)}},[_,N.isStreaming,nn]),(0,o.useEffect)(()=>{if(!_&&!N.isStreaming)return;let e=()=>{let e=t6.current,t=tG.current;e&&t&&t.readyState===EventSource.OPEN&&(Date.now()-t2.current<=95e3||rG(e))};e();let t=setInterval(e,15e3);return()=>clearInterval(t)},[_,N.isStreaming,rG]),(0,o.useEffect)(()=>{rr.current=_,_||tv(!1)},[_]);let no=(0,o.useCallback)((t="smooth")=>{rv.current=Date.now()+700;let r=rb.current,n=ry.current;if(!r||!n)return;let o=Math.max(88,e.chatInputRef?.current?.measureHeight?.()??0),i=()=>{if(!r||!n)return;let e=Math.max(0,n.getBoundingClientRect().top-r.getBoundingClientRect().top+r.scrollTop-96-r.clientHeight+o);r.scrollTo({top:e,behavior:t})};i(),("instant"===t||"auto"===t)&&window.setTimeout(()=>{r&&n&&rf.current&&i()},200)},[]),ni=(0,o.useCallback)(()=>{null===r4.current&&(r4.current=requestAnimationFrame(()=>{r4.current=null,requestAnimationFrame(()=>{if(!rr.current||Date.now()<rm.current)return;let e=rb.current;if(e){let{scrollTop:t,clientHeight:r,scrollHeight:n}=e;rf.current=t+r>=n-150}rf.current&&no("auto")})}))},[no]);ru.current=(0,o.useCallback)(e=>{switch(e.type){case"agent_start":r$(),O(),rJ(),rr.current||(rl.current=!1),rn.current=!0,rr.current=!0,q(!0),tf({kind:"waiting_model"}),A({type:"start"}),ni();break;case"agent_end":{if(r$(),O(),!rr.current)break;let t=tD.steering.length>0||tD.followUp.length>0;if(tf(t?{kind:"waiting_model"}:null),eV(null),A({type:"end"}),!0!==e.willRetry){let t=e.messages??[];for(let e=t.length-1;e>=0;e--){let r=t[e];if(r?.role==="assistant"){"error"===r.stopReason&&r.errorMessage&&r0({type:"error",message:r.errorMessage});break}}}let r=t6.current;if(r){let n=rw.current;t||!0===e.willRetry||rU(r),fetch(`/api/agent/${encodeURIComponent(r)}`).then(e=>e.ok?e.json():void 0).then(e=>{if(rw.current!==n)return;let t=e?.state;if(ts(t),t?.contextUsage!==void 0&&eY(t.contextUsage??null),t?.systemPrompt!==void 0&&eX(t.systemPrompt??null),t?.extensionStatuses!==void 0&&tA(t.extensionStatuses??[]),t?.extensionWidgets!==void 0&&tF(t.extensionWidgets??[]),tO(cZ(t?.queuedMessages)),t_(t?.pendingRecovery??[]),t?.goalState!==void 0){let e=t.goalState;e&&(eF.current=e,eP(e))}}).catch(()=>{})}break}case"agent_settled":{let e=rn.current;if(rn.current=!1,!e||ro.current)break;let t=t6.current,r=r3();tc(!1),t&&(rU(t),r7(t)),r&&!rl.current&&i?.(),rl.current=!1;break}case"goal_state_changed":{let t=e.goalState;t&&(eF.current=t,eP(t));break}case"prompt_done":{let e=rw.current,t=ro.current;ro.current=!1,rS.current=null;let r=r8(e);if(r&&(rl.current=!0),!t&&!r)break;let n=t6.current;n&&!rn.current&&rU(n),!rn.current&&(r3(),n&&r7(n));break}case"tool_approval_request":{let t={id:String(e.id??""),toolName:String(e.toolName??""),args:e.args};if(!t.id)break;eL(e=>e.some(e=>e.id===t.id)?e:[...e,t]);break}case"tool_approval_resolved":{let t=String(e.id??"");if(!t)break;eL(e=>e.filter(e=>e.id!==t));break}case"prompt_error":r0({type:"error",message:e.errorMessage??"Command failed"});break;case"extension_error":r0({type:"error",message:e.error??"Extension command failed"});break;case"message_start":case"message_update":{if(!rr.current||cK(e))break;let t=e.message;if(t?.role==="user")break;t&&(U(t),rW(cO(t))),tf(e=>null===e?e:null),ni();break}case"message_end":{if(!rr.current||cK(e))break;let t=e.message;if(t&&"user"===t.role){let e=cO(t);if("user"===e.role&&"content"in e){let t=e.content;if("string"==typeof t)c0.some(e=>t.startsWith(e))&&(e={...e,content:te(t)});else if(Array.isArray(t)){let r=t.filter(e=>"text"===e.type)[0];r&&"string"==typeof r.text&&c0.some(e=>r.text?.startsWith(e))&&(e={...e,content:t.map((e,t)=>{if("text"!==e.type||0!==t)return e;let r=te(e.text??"");return{...e,text:r}})})}}let r=c8(e),n=rS.current;z(t=>{let o=t[t.length-1];return n&&o?.role==="user"&&c8(o)===n?(rS.current=null,n===r?t:[...t.slice(0,-1),e]):[...t,e]})}else t&&z(e=>[...e,cO(t)]);r$(),A({type:"reset"}),tf({kind:"waiting_model"});break}case"tool_execution_start":{let t=e.toolCallId,r=e.toolName;tf(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_update":{let t=e.partialResult,r=t?.content,n="string"==typeof e.toolName?e.toolName:"",o="string"==typeof e.toolCallId?e.toolCallId:null;o&&("bash"===n||"powershell"===n)&&Array.isArray(r)&&R(e=>{let i=new Map(e);return i.set(o,{role:"toolResult",toolCallId:o,toolName:n,content:r,isError:t?.isError,details:t?.details}),i});let i=function(e){if(!cV(e))return null;let t=e.content;if(!Array.isArray(t))return null;let r=t.filter(e=>cV(e)&&"text"===e.type&&"string"==typeof e.text).map(e=>e.text).join("\n").split(/\r?\n/),n="";for(let e=r.length-1;e>=0&&!(n=r[e].trim());e-=1);if(!n)return null;let o=n.replace(/\s+/g," ");return o.length<=500?o:`...${o.slice(-497)}`}(e.partialResult);o&&tf(e=>{let t=e?.kind==="running_tools"?[...e.tools]:[],r=t.find(e=>e.id===o);if(!r&&!i)return e;let s={id:o,name:n||r?.name||"tool",progress:i??r?.progress};return{kind:"running_tools",tools:[...t.filter(e=>e.id!==o),s]}});let s="string"==typeof e.toolCallId?e.toolCallId:null,l=e.partialResult,a=l?.details;if(!s||!a)break;z(t=>{let r=t.findIndex(e=>"toolResult"===e.role&&e.toolCallId===s);if(-1===r)return[...t,{role:"toolResult",toolCallId:s,toolName:"string"==typeof e.toolName?e.toolName:"Agent",content:[],details:a}];let n=t[r];if("toolResult"!==n.role||n.content.length>0)return t;let o=[...t];return o[r]={...n,details:a},o});break}case"tool_execution_end":{let t=e.toolCallId;R(e=>{if(!e.has(t))return e;let r=new Map(e);return r.delete(t),r}),tf(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"entry_appended":break;case"queue_update":tO({steering:[...e.steering??[]],followUp:[...e.followUp??[]]}),(e.steering??[]).length>0||(e.followUp??[]).length>0?tJ():tY();break;case"state_sync":{let t=e.state;if(!t)break;if(tc(t.isCompacting??!1),ro.current||tf(cG(t)),tO(cZ(t.queuedMessages)),t_(t.pendingRecovery??[]),void 0!==t.contextUsage&&eY(t.contextUsage??null),void 0!==t.systemPrompt&&eX(t.systemPrompt??null),void 0!==t.extensionStatuses&&tA(t.extensionStatuses??[]),void 0!==t.extensionWidgets&&tF(t.extensionWidgets??[]),void 0!==t.goalState){let e=t.goalState;e&&(eF.current=e,eP(e))}if(t.isStreaming||t.isPromptRunning||t.isBashRunning||t.isCompacting){let e=rr.current;rr.current=!0,q(!0),e||A({type:"start"})}else if(rr.current&&!ro.current){let e=t6.current;e&&r9(e,rw.current)}break}case"auto_retry_start":eV({attempt:e.attempt,maxAttempts:e.maxAttempts,errorMessage:e.errorMessage});break;case"auto_retry_end":eV(null);break;case"auto_compaction_start":case"compaction_start":tc(!0),tp(null),tg(null);break;case"auto_compaction_end":case"compaction_end":tc(!1),e.errorMessage?(tp(e.errorMessage),tg(null)):e.aborted||(tg(c7(e.result,e.reason??"auto")),t6.current&&!rr.current&&rU(t6.current));break;case"extension_ui_request":r6(e)}},[r0,rJ,r5,r9,r6,rU,r8,i,tD,r7,ni,r3,rW,r$,tJ,tY,U,O,t_,tO,ts]),(0,o.useEffect)(()=>{let e=new EventSource("/api/events");return e.onmessage=e=>{try{let t=JSON.parse(e.data);if(!t||!t.type||!t.payload||t.sessionId!==t6.current||tG.current?.readyState===EventSource.OPEN)return;ru.current?.(t.payload)}catch{}},()=>e.close()},[]);let ns=(0,o.useCallback)(async(r,o)=>{let i,s=r.trim();if(!s&&!o?.length)return;if(rr.current||ra.current)return void console.warn("[pi-web] Send dropped: a previous run is still marked active",{agentRunning:rr.current,bashRunning:ra.current,sessionId:t6.current});let l=!o?.length&&s.startsWith("/"),a=rw.current+1;rJ(),r$(),ro.current=!0;let d=function(e){let t=[];if("plan"===e.collaborationMode&&t.push(e3),"economy"===e.tokenMode&&t.push(e8),"delivery"===e.tokenMode&&t.push(e7),"goal"===e.collaborationMode){let r=e.goalText?.trim();t.push(r?`${e9}
193
193
 
194
194
  Goal: ${r}`:e9)}return t.join("\n\n")}({collaborationMode:ez.current,tokenMode:eT.current,goalText:"goal"===ez.current?eM.current??void 0:void 0}),c=[ez.current,eT.current,d?String(d.length):""].join("|"),u=t?.id??"new";d&&(eE.current.sessionKey!==u||eE.current.signature!==c)?(eE.current={sessionKey:u,signature:c},i=`${d}
195
195
 
196
- ${r}`):i=r;let h=i,g=o?.map(e=>({type:"image",source:{type:"base64",media_type:e.mimeType,data:e.data}})),x={role:"user",content:g?.length?[...r.trim()?[{type:"text",text:r}]:[],...g]:r,timestamp:Date.now()};z(e=>[...e,x]),rS.current=c8(x),rw.current=a;let f="goal"===ez.current&&!l&&s.length>0&&"idle"===eF.current.status;f&&(eM.current=s,eP(e=>({...e,status:"running",goalText:s,turnsUsed:0,noProgressTurns:0,tokensUsed:0})),eO.current=!0),rr.current=!0,q(!0),tf(l?{kind:"running_command"}:{kind:"waiting_model"}),A({type:"start"}),rg.current=!0,tv(!0),rx.current=!0;let m=o?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType})),v=null,y=!1;try{if(p&&n){let e=t6.current??await rk.current,t=e??await rK();if(t){v=t,rq(1,r),ea&&(ta(ea),e&&await tE(t,{type:"set_model",provider:ea.provider,modelId:ea.modelId}));let n=await Promise.race([rX(t).then(()=>!0).catch(()=>!1),c6(4e3).then(()=>!1)]);y=!0,await tE(t,{type:"prompt",message:h,...m?.length?{images:m}:{}}),n||ne(t,a),f&&tE(t,{type:"goal_start",goalText:s}).catch(()=>{})}else throw Error("Unable to create a session for this message")}else if(t){v=t.id;let e=await Promise.race([rX(t.id).then(()=>!0).catch(()=>!1),c6(4e3).then(()=>!1)]);y=!0,await tE(t.id,{type:"prompt",message:h,...m?.length?{images:m}:{}}),e||ne(t.id,a),f&&tE(t.id,{type:"goal_start",goalText:s}).catch(()=>{})}l&&v&&ne(v,a)}catch(t){if(console.error("Failed to send message:",t),y&&v&&!(t instanceof tR&&"prompt_rejected"===t.code&&!1===t.accepted))return void ne(v,a);if(eE.current={sessionKey:"",signature:""},f&&(eM.current=null,eO.current=!1,eP(e=>({...e,status:"idle",goalText:null}))),ro.current=!1,rY(),t instanceof c2){let e=rS.current;e&&z(t=>{let r=t[t.length-1];return r?.role==="user"&&c8(r)===e?t.slice(0,-1):t}),r0({type:"error",message:t.message})}else{let r=rS.current;r&&z(e=>{let t=e[e.length-1];return t?.role==="user"&&c8(t)===r?e.slice(0,-1):e});let n=e.chatInputRef?.current;n?.restoreSubmission?n.restoreSubmission(x):n?.replaceMessage?.(x),r0({type:"error",message:`Failed to send message: ${t instanceof Error?t.message:String(t)}`})}rS.current=null,rr.current=!1,q(!1),tf(null),A({type:"end"})}},[p,n,ea,t,rK,rX,rq,ne,r0,rJ,rY,r$,e.chatInputRef]),nl=(0,o.useCallback)(async(r,n)=>{if(rr.current||ra.current)return;let o=`${n?"!!":"!"}${r}`;ra.current=!0,Y({command:r,excludeFromContext:n}),V(!0);try{let e=t6.current??t?.id??await rK();if(!e)throw Error("Unable to create a session for the shell command");rq(1,o),await tE(e,{type:"bash",command:r,excludeFromContext:n}),await rU(e)}catch(t){console.error("Failed to execute shell command:",t),r0({type:"error",message:t instanceof Error?t.message:String(t)}),e.chatInputRef?.current?.insertIfEmpty(o)}finally{ra.current=!1,Y(null),V(!1)}},[r0,rK,rU,e.chatInputRef,rq,t]),na=(0,o.useCallback)(async()=>{let e=t6.current;if(e)try{await tE(e,{type:ra.current?"abort_bash":"abort"})}catch(e){console.error("Failed to abort:",e)}},[]),nd=(0,o.useCallback)(async e=>{let t=t6.current;if(t){tt(e);try{let{cancelled:r,newSessionId:n}=await tE(t,{type:"fork",entryId:e})??{};!r&&n&&l?.(n)}catch(e){console.error("Fork failed:",e)}finally{tt(null)}}},[l]),nc=(0,o.useCallback)(async e=>{if(ra.current)return!1;let t=t6.current;if(!t)return!1;try{let r=await tE(t,{type:"navigate_tree",targetId:e});if(r?.cancelled||t6.current!==t)return!1;return S(e),await rU(t),t6.current===t}catch(e){return console.error("Failed to navigate:",e),!1}},[rU]),nu=(0,o.useCallback)(async e=>{S(e);let t=t6.current;t&&(await r2(t,e),e&&tE(t,{type:"navigate_tree",targetId:e}).catch(()=>{}))},[r2]),np=(0,o.useCallback)(async(e,t)=>{if(p){let r={provider:e,modelId:t};rI.current=r,ed(r),ta(r),null===rM.current&&t7(cQ(t5.current[`${e}/${t}`])??t3.current);let n=t6.current??await rk.current;if(!n)return;try{await tE(n,{type:"set_model",provider:e,modelId:t})}catch(e){console.error("Failed to set model:",e)}return}let r=t6.current;if(!r)return;let n=++rC.current,o=tr??g?.context.model??null;tn({provider:e,modelId:t});try{let n=await tE(r,{type:"set_model",provider:e,modelId:t});ti({provider:n.provider,modelId:n.id}),await rU(r)}catch(i){console.error("Failed to set model:",i),rC.current===n&&(tn(o&&(o.provider!==e||o.modelId!==t)?o:null),r0({type:"error",message:i instanceof Error?i.message:String(i)})),await rU(r,!1,!0)}},[r0,tr,g?.context.model,p,ed]),nh=(0,o.useCallback)(async()=>{let e=t6.current;if(e&&!td){tc(!0),tp(null),tg(null);try{let t=await tE(e,{type:"compact"});tg(c7(t,"manual")),await rU(e,!0)}catch(e){tp(e instanceof Error?e.message:String(e)),tg(null)}finally{tc(!1)}}},[td,rU]),ng=(0,o.useCallback)(async e=>{let r=++rz.current,o=n??t?.cwd??"",i=o?`/api/models?cwd=${encodeURIComponent(o)}`:"/api/models",s=rT.current;s?.abort();let l=new AbortController;rT.current=l;let a=()=>l.abort();e?.aborted?l.abort():e?.addEventListener("abort",a,{once:!0});try{let e=await fetch(i,{signal:l.signal});if(!e.ok){let t=`HTTP ${e.status}`;try{let r=await e.json();r?.error&&(t=r.error)}catch{}throw Error(t)}let t=await e.json();if(r!==rz.current||h!==rR.current)return;el(null),X(t.models),et(t.thinkingLevels??{}),en(t.thinkingLevelMaps??{}),ei(t.modelScopeWarnings??[]);let n=t.modelList??[];if(Q(n),p&&!t6.current){let e=(t.defaultModel?n.find(e=>e.id===t.defaultModel?.modelId&&e.provider===t.defaultModel?.provider):void 0)??n[0];eu(e?{provider:e.provider,modelId:e.id}:null);let r=e?t.thinkingLevelPins?.[`${e.provider}/${e.id}`]:void 0;null===rM.current&&eU(r??"auto")}}catch(e){if(l.signal.aborted||r!==rz.current||h!==rR.current)return;el(e instanceof Error?e.message:String(e))}finally{e?.removeEventListener("abort",a),rT.current===l&&(rT.current=null)}},[p,h,n,t?.cwd]),nx=(0,o.useCallback)(async e=>{if(!e.startsWith("/"))return{handled:!1};let t=e.match(/^\/([^\s]+)(?:\s+([\s\S]*))?$/);if(!t)return{handled:!1};let[,r,n=""]=t,o=n.trim(),i=t6.current??await rK(),s=e=>(e.handled&&(e.error?r0({type:"error",message:e.error}):"openSessionStats"!==e.action&&r0({type:"success",message:e.message??"Command completed"})),e);try{switch(r){case"compact":{if(!i||td)return s({handled:!0,error:"No active session to compact"});tc(!0),tp(null),tg(null);let e=await tE(i,{type:"compact",...o?{customInstructions:o}:{}});return tg(c7(e,"manual")),await rU(i,!0)&&rq(),s({handled:!0,message:"Compacted context"})}case"auto-compact":{if(!i)return s({handled:!0,error:"No active session"});let e=await tE(i,{type:"get_state"}),t=!(e?.autoCompactionEnabled??!0);return await tE(i,{type:"set_auto_compaction",enabled:t}),eH(t),s({handled:!0,message:t?"Auto-compaction enabled":"Auto-compaction disabled"})}case"reload":if(!i)return s({handled:!0,error:"No active session to reload"});return await tE(i,{type:"reload"}),await Promise.all([rU(i,!1,!0),r_(i),rV(),ng()]),s({handled:!0,message:"Reloaded session resources"});case"name":if(!i)return s({handled:!0,error:"No active session to name"});if(!o)return s({handled:!0,error:"Usage: /name <name>"});return await tE(i,{type:"set_session_name",name:te(o)}),await rU(i)&&rq(),s({handled:!0,message:`Session renamed to ${o}`});case"session":{if(!i)return s({handled:!0,error:"No active session"});let e=await tE(i,{type:"get_session_stats"});return e&&tI(e),u?.(),s({handled:!0,action:"openSessionStats"})}case"copy":{if(!i)return s({handled:!0,error:"No active session"});let e=await tE(i,{type:"get_last_assistant_text"}),t=e?.text??"";if(!t)return s({handled:!0,error:"No assistant message to copy"});return await navigator.clipboard.writeText(t),s({handled:!0,message:"Copied last assistant message"})}case"clone":{if(!i)return s({handled:!0,error:"No active session to clone"});if(rr.current||ra.current)return s({handled:!0,error:"Cannot clone while the session is running"});let e=await tE(i,{type:"clone",leafId:w});if(e?.cancelled||!e?.newSessionId)return s({handled:!0,error:"Cannot clone an empty or unsaved session"});let t=s({handled:!0,message:"Cloned current session branch"});return l?.(e.newSessionId),t}default:return{handled:!1}}}catch(e){return s({handled:!0,error:e instanceof Error?e.message:String(e)})}finally{"compact"===r&&tc(!1)}},[w,r0,rK,td,ng,rU,rV,r_,rq,l,u]),nf=(0,o.useCallback)(async e=>{let t=!1;try{let r=await fetch(`/api/agent/${encodeURIComponent(e)}`);if(r.ok){let e=await r.json(),n=e.state;if(e.running&&n&&(n.isStreaming||n.isPromptRunning||n.isBashRunning||n.isCompacting))return;t=!0}}catch{}t?r3():ne(e)},[ne,r3]),nm=(0,o.useCallback)(async(e,t)=>{let r=t6.current;if(!r)return;let n=t?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType}));rr.current=!0,q(!0),tf(e=>e??{kind:"waiting_model"});try{await tE(r,{type:"steer",message:e,...n?.length?{images:n}:{}})}catch(e){console.error("Failed to steer:",e),nf(r)}},[nf]),nv=(0,o.useCallback)(async(e,t,r)=>{let n=t6.current;if(!n)return;let o=r?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType}));rr.current=!0,q(!0),tf(e=>e??{kind:"waiting_model"});try{await tE(n,{type:"prompt",message:e,streamingBehavior:t,...o?.length?{images:o}:{}})}catch(e){console.error("Failed to queue prompt:",e),nf(n)}},[nf]),ny=(0,o.useCallback)(async(e,t)=>{let r=t6.current;if(!r)return;let n=t?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType}));rr.current=!0,q(!0),tf(e=>e??{kind:"waiting_model"});try{await tE(r,{type:"follow_up",message:e,...n?.length?{images:n}:{}})}catch(e){console.error("Failed to follow up:",e),nf(r)}},[nf]),nb=(0,o.useCallback)(async()=>{let e=t6.current;if(e)try{await tE(e,{type:"abort_compaction"})}catch(e){console.error("Failed to abort compaction:",e)}},[]),nk=(0,o.useCallback)(async()=>{let t=t6.current;if(t)try{let r=await tE(t,{type:"clear_queue"});tO({steering:[],followUp:[]});let n=[...r?.steering??[],...r?.followUp??[]];n.length>0&&e.chatInputRef?.current?.prependText(n.join("\n\n"))}catch(e){console.error("Failed to recall queued messages:",e),r0({type:"error",message:"Failed to recall queued messages"})}},[e.chatInputRef,r0,tO]);(0,o.useEffect)(()=>{0===tB.length&&tK(!1)},[tB.length]);let nj=(0,o.useCallback)(async(e,t,r=!1)=>{let n=t6.current;if(!n)return tB;try{let o=await tE(n,{type:"resolve_recovery",keep:e,discard:t,continueRun:r}),i=o?.remaining??[];return t_(i),r&&e.length>0&&(async()=>{try{let e=await fetch(`/api/agent/${encodeURIComponent(n)}`);if(!e.ok)return;let t=await e.json(),r=t.state;if(!t.running||!r||!r.isStreaming&&!r.isPromptRunning)return;rn.current=!!r.isStreaming,ro.current=!!r.isPromptRunning,rr.current=!0,q(!0),tf(cG(r)),A({type:"start"}),rG(n),!r.isStreaming&&r.isPromptRunning&&ne(n)}catch{}})(),i}catch(e){return console.error("Failed to resolve queued message recovery:",e),r0({type:"error",message:"Failed to resolve queued message recovery"}),tB}},[tB,r0,rG,ne,t_]),nw=(0,o.useCallback)(async()=>{let e=t6.current;if(!e)return null;try{return await tE(e,{type:"export_queue"})}catch(e){return console.error("Failed to export queue:",e),r0({type:"error",message:"Failed to export queue"}),null}},[r0]),nS=(0,o.useCallback)(async e=>{let t=t6.current;if(!t)return null;try{let r=await tE(t,{type:"import_queue",entries:e});return r&&tO(cZ(r)),r?.imported??0}catch(e){return console.error("Failed to import queue:",e),r0({type:"error",message:"Failed to import queue"}),null}},[r0,tO]),nC=(0,o.useCallback)(async e=>{let t=t6.current;if(!t)return null;try{let r=await tE(t,{type:"stage_recovery",entries:e});return r?.pendingRecovery&&t_(r.pendingRecovery),(r?.staged??0)>0&&tK(!0),r?.staged??0}catch(e){return console.error("Failed to stage imported queue:",e),r0({type:"error",message:"Failed to stage imported queue"}),null}},[r0,t_]),nz=(0,o.useCallback)(async(e,t,r)=>{let n=t6.current;if(!n)return!1;try{let o=await tE(n,{type:"move_queue",kind:e,fromIndex:t,toIndex:r});return o&&tO(cZ(o)),!0}catch(e){return console.error("Failed to move queued message:",e),r0({type:"error",message:e instanceof Error?e.message:"Failed to move queued message"}),!1}},[r0,tO]),nT=(0,o.useCallback)(async(e,t)=>{let r=t6.current;if(!r)return null;try{let n=await tE(r,{type:"recall_queue_item",kind:e,index:t});return n&&(void 0!==n.steering||void 0!==n.followUp)&&tO(cZ(n)),n?.entry?{text:n.entry.text,images:n.entry.images?.map(({data:e,mimeType:t})=>({data:e,mimeType:t}))}:null}catch(e){return console.error("Failed to recall queued message:",e),r0({type:"error",message:e instanceof Error?e.message:"Failed to recall queued message"}),null}},[r0,tO]),nR=(0,o.useCallback)(async(e,t,r,n)=>{let o=t6.current;if(!o)return!1;try{let i=await tE(o,{type:"requeue_at",kind:e,index:t,text:r,images:n?.map(({data:e,mimeType:t})=>({type:"image",data:e,mimeType:t}))});return i&&tO(cZ(i)),!0}catch(e){return console.error("Failed to requeue message:",e),r0({type:"error",message:e instanceof Error?e.message:"Failed to requeue message"}),!1}},[r0,tO]),nI=(0,o.useCallback)(async(e,t)=>{let r=t6.current;if(!r)return!1;try{let n=await tE(r,{type:"remove_queue_item",kind:e,index:t});return n&&tO(cZ(n)),!0}catch(e){return console.error("Failed to remove queued message:",e),r0({type:"error",message:e instanceof Error?e.message:"Failed to remove queued message"}),!1}},[r0,tO]),nM=(0,o.useCallback)(async e=>{if("auto"===e){rM.current=null,eU(e);return}rM.current=e,eU(e);let t=t6.current??await rk.current;if(t)try{await tE(t,{type:"set_thinking_level",level:e}),t4.current&&t6.current===t&&eq(e)}catch(e){console.error("Failed to set thinking level:",e)}},[]),nE=(0,o.useCallback)(async e=>{let t=(0,cB.xG)(e);!function(e,t=function(){try{return window.localStorage}catch{return null}}()){if(t)try{t.setItem("pi-tool-preset",e)}catch{}}(e),rL(e);let r=t6.current??await rk.current;if(!r){rt.current=void 0!==t;return}try{let e=await tE(r,{type:"set_tools",...void 0!==t?{toolNames:t}:{}});rt.current=void 0!==t;let n=e?.sessionId??r;(n!==r||e?.recreated)&&(rJ(),rY(),t6.current=n),tj([]),tA([]),tF([]);let[o]=await Promise.all([tE(n,{type:"get_state"}),r_(n)]);t4.current&&t6.current===n&&(eX(o.systemPrompt??""),ts(o))}catch(e){console.error("Failed to set tools:",e)}},[rJ,rY,r_,rL,ts]),n$=(0,o.useRef)(0),nW=(0,o.useCallback)(async e=>{let t=t6.current??await rk.current,r=++n$.current;if("plan"===e){if(eg.current="plan"===ep||"configured"===ep?"default":ep,t)try{await tE(t,{type:"prompt",message:"/plan"})}catch(e){if(n$.current!==r)return;console.error("Failed to enter plan mode:",e)}return}if(t){try{if(await tE(t,{type:"prompt",message:"/plan exit"}),n$.current!==r)return}catch(e){if(n$.current!==r)return;console.error("Failed to exit plan mode:",e)}if(n$.current!==r)return;try{await tE(t,{type:"set_tools",toolNames:(0,cB.xG)(eg.current)})}catch(e){console.error("Failed to restore tools after plan exit:",e)}}},[ep]),nL=(0,o.useCallback)(e=>{e$.current=e,em(e);let t=t6.current;if(!t){ev.current=e;return}ev.current=null,fetch(`/api/modes?session=${encodeURIComponent(t)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).catch(e=>{console.error("Failed to persist mode settings:",e)})},[]),nN=(0,o.useCallback)(e=>{let t=e2(e),r="plan"===ez.current;if(nL({...e$.current,collaborationMode:t}),ez.current=t,eE.current={sessionKey:"",signature:""},"goal"!==t){eM.current=null,eO.current=!1,eP(e=>"idle"===e.status?e:{...e,status:"idle",goalText:null});let e=t6.current;e&&tE(e,{type:"goal_stop"}).catch(()=>{})}return"plan"!==t||r?"plan"!==t&&r?nW("normal"):Promise.resolve():nW("plan")},[nL,nW]),nA=(0,o.useCallback)(async e=>{nL({...e$.current,tokenMode:e6(e)});let t=t6.current??await rk.current;if(t)try{if("economy"!==e||ex.current){if("economy"!==e){let e=ex.current?cB.SC:(0,cB.xG)("plan"===ep?"default":ep);await tE(t,{type:"set_tools",toolNames:e})}}else await tE(t,{type:"set_tools",toolNames:[...e5]})}catch(e){console.error("Failed to apply token mode tools:",e)}},[nL,ep]),nP=(0,o.useCallback)(async e=>{nL({...e$.current,toolApprovalMode:e4(e)});let t=t6.current??await rk.current;if(t)try{await tE(t,{type:"set_approval_mode",mode:e4(e)})}catch(e){console.error("Failed to apply approval mode:",e)}},[nL]),nF=(0,o.useCallback)(async e=>{nL({...e$.current,permissionRules:e});let t=t6.current??await rk.current;if(t)try{await tE(t,{type:"set_approval_policy",policy:e})}catch(e){console.error("Failed to apply permission rules:",e)}},[nL]),nD=(0,o.useCallback)(async(e,t,r,n)=>{let o=t6.current;if(o){if("always"===n){let r=eN.current.find(t=>t.id===e);if(r){let e=aD(r.toolName,r.args),n=e?`${r.toolName}(${e})`:r.toolName,o=e$.current.permissionRules;(t?o.allow:o.deny).includes(n)||nF(t?{...o,allow:[...o.allow,n]}:{...o,deny:[...o.deny,n]})}}try{await tE(o,{type:"resolve_approval",id:e,approve:t,reason:r})}catch(e){console.error("Failed to resolve approval:",e)}finally{eL(t=>t.filter(t=>t.id!==e))}}},[nF]),nH=(0,o.useCallback)(e=>{eM.current=e},[]),nO=(0,o.useCallback)(e=>{let t=e.trim();if(!t)return;eM.current=t,eP(e=>({...e,status:"running",goalText:t,turnsUsed:0,noProgressTurns:0,tokensUsed:0,startedAt:Date.now()}));let r=t6.current;r&&tE(r,{type:"goal_start",goalText:t}).catch(()=>{})},[]),nB=(0,o.useCallback)(()=>{if("running"!==eF.current.status)return;eP(e=>({...e,status:"paused"}));let e=t6.current;e&&tE(e,{type:"goal_pause"}).catch(()=>{})},[]),nU=(0,o.useCallback)(()=>{let e=eF.current;if("paused"!==e.status&&"blocked"!==e.status)return;eP(e=>({...e,status:"running"}));let t=t6.current;t&&tE(t,{type:"goal_resume"}).catch(()=>{})},[]),n_=(0,o.useCallback)(()=>{eO.current=!1,eM.current=null,eP(e=>({...e,status:"idle",goalText:null,turnsUsed:0,noProgressTurns:0}));let e=t6.current;e&&tE(e,{type:"goal_stop"}).catch(()=>{})},[]),nq=(0,o.useCallback)(e=>{let t=e.trim();if(!t)return;eP(e=>({...e,goalText:t}));let r=t6.current;r&&tE(r,{type:"goal_edit",goalText:t}).catch(()=>{})},[]),nK=(0,o.useCallback)(()=>{let e=rb.current,t=rh.current;if(!e||!t)return;let r=t.getBoundingClientRect().top-e.getBoundingClientRect().top+e.scrollTop,n=Math.max(0,e.scrollHeight-e.clientHeight),o=Math.min(Math.max(0,r-16),n);rf.current=o>=n-150,rv.current=Date.now()+700,e.scrollTo({top:o,behavior:"smooth"})},[]),nV=(0,o.useCallback)(e=>{if(e instanceof KeyboardEvent){if(!c1.has(e.key)||e.target instanceof Element&&e.target.closest("input, textarea, [contenteditable='true']"))return}else if(e instanceof PointerEvent){let t=rb.current;if(t&&e.target instanceof Element&&!t.contains(e.target))return}rm.current=Date.now()+1200},[]),nJ=(0,o.useCallback)(()=>{let e=rb.current;if(e){let{scrollTop:t,clientHeight:r,scrollHeight:n}=e,o=rr.current,i=rf.current,s=function(e,t,r,n,o,i=96){return!!cJ(r,n,o)||!(r<t)&&(!!(!e&&r>t&&cJ(r,n,o,i))||e)}(i,t9.current,t,r,n,o?96:8);rf.current=s,t9.current=t;let l=function(e,t,r,n=8){return!(r<=t)&&!cJ(e,t,r,n)}(t,r,n);tb(e=>e===l?e:l),!i&&s&&o&&no("auto")}if(Date.now()<rm.current){rx.current=!1;return}Date.now()<rv.current||(rx.current=!1)},[]);(0,o.useEffect)(()=>{if(rs.current=!0,t){var e;let r;t6.current=t.id;let n=(e=t.id,(r=cq().get(e))?Date.now()-r.savedAt>6e5?(cq().delete(e),null):(cq().delete(e),cq().set(e,r),r):null);n&&(x({sessionId:t.id,filePath:"",leafId:n.leafId,context:{messages:n.messages,entryIds:n.entryIds,oldestEntryId:n.oldestEntryId,hasMore:n.hasMore,thinkingLevel:n.thinkingLevel,model:n.model},stats:n.stats,...void 0!==n.totalActiveMs?{totalActiveMs:n.totalActiveMs}:{}}),S(n.leafId),z(n.messages),M(n.entryIds),$(n.oldestEntryId),L(n.hasMore),j(null),b(!1));let o=eR.current,i=eI.current;("auto"!==o||i.allow.length||i.ask.length||i.deny.length)&&(tE(t.id,{type:"set_approval_mode",mode:o}).catch(()=>{}),tE(t.id,{type:"set_approval_policy",policy:i}).catch(()=>{}));let s=e=>{!rc.current&&(rc.current=!0,e.isBashRunning&&(ra.current=!0,V(!0),nt(t.id)),r_(t.id),(e.isStreaming||e.isPromptRunning)&&(rn.current=!!e.isStreaming,ro.current=!!e.isPromptRunning,rr.current=!0,q(!0),tf(cG(e)),A({type:"resume"}),rG(t.id),!e.isStreaming&&e.isPromptRunning&&ne(t.id)))};(async()=>{try{let e,r=new AbortController,n=setTimeout(()=>r.abort(),2e4);try{e=await fetch(`/api/sessions/${encodeURIComponent(t.id)}/state`,{signal:r.signal})}finally{clearTimeout(n)}if(!e.ok)throw Error(`HTTP ${e.status}`);let o=await e.json();if(!rs.current||t6.current!==t.id)return;o.running&&o.state&&s(o.state)}catch{}})(),rU(t.id,!n,!0,{force:!0}).then(e=>{e?.running&&e.state&&s(e.state),e?.state&&(void 0!==e.state.isCompacting&&tc(e.state.isCompacting),void 0!==e.state.contextUsage&&eY(e.state.contextUsage??null),void 0!==e.state.systemPrompt&&eX(e.state.systemPrompt??null),void 0!==e.state.extensionStatuses&&tA(e.state.extensionStatuses??[]),void 0!==e.state.extensionWidgets&&tF(e.state.extensionWidgets??[]),void 0!==e.state.queuedMessages&&tO(cZ(e.state.queuedMessages)),void 0!==e.state.pendingRecovery&&t_(e.state.pendingRecovery??[])),e?.running||(async()=>{for(let e=0;e<5;e++){if(e>0&&await new Promise(e=>setTimeout(e,2e3)),!rs.current||t6.current!==t.id||rr.current)return;try{let e=await fetch(`/api/agent/${encodeURIComponent(t.id)}`);if(!e.ok)continue;let r=await e.json();if(!rs.current||t6.current!==t.id)return;if(r?.running&&r.state)return void s(r.state)}catch{}}})()})}return()=>{rs.current=!1,f.current?.abort(),v.current?.abort(),r$(),tY(),rd.current+=1,rJ(),rY()}},[r$]),(0,o.useEffect)(()=>{c?.(eG)},[eG,c]),(0,o.useEffect)(()=>{d&&d(g?.tree??[],w,nu)},[g?.tree,w,nu,d]),(0,o.useEffect)(()=>(window.addEventListener("keydown",nV),window.addEventListener("pointerdown",nV,{passive:!0}),()=>{window.removeEventListener("keydown",nV),window.removeEventListener("pointerdown",nV)}),[nV]),(0,o.useEffect)(()=>{let e=rb.current;if(e)return e.addEventListener("wheel",nV,{passive:!0}),e.addEventListener("touchstart",nV,{passive:!0}),e.addEventListener("scroll",nJ,{passive:!0}),()=>{e.removeEventListener("wheel",nV),e.removeEventListener("touchstart",nV),e.removeEventListener("scroll",nJ)}},[C.length,y,nJ,nV]),(0,o.useEffect)(()=>{C.length>0&&(rg.current?(rp.current=!0,rh.current&&(rg.current=!1,nK())):y||!rp.current?(y||(rp.current=!0),no("instant")):!rr.current&&(rx.current||rf.current)&&(no("smooth"),nX(e=>e+1)))},[C.length,y,_,no,nK]);let nY=(0,o.useRef)(null),[nG,nX]=(0,o.useState)(0),nZ=`${t?.id??null}#${nG}`;(0,o.useEffect)(()=>{let e;if(y){nY.current=null;return}if(0===C.length||nY.current===nZ)return;nY.current=nZ;let t=!1,r=!1,n=-1,o=0,i=Date.now(),s=()=>{if(t||r)return;let l=rb.current;if(l){if(Date.now()<rm.current){let{scrollTop:e,clientHeight:t,scrollHeight:n}=l;if(e+t<n-150){r=!0;return}}if(no("instant"),l.scrollHeight===n){if((o+=1)>=4||Date.now()-i>=3e4)return}else if(n=l.scrollHeight,o=0,Date.now()-i>=3e4)return;e=window.setTimeout(s,o>0?500:250)}};return e=window.setTimeout(s,250),()=>{t=!0,void 0!==e&&window.clearTimeout(e)}},[y,no,nZ]),(0,o.useEffect)(()=>{let e=new AbortController;return ng(e.signal).catch(e=>{if(e instanceof DOMException&&"AbortError"===e.name)return}),()=>e.abort()},[ng,a]),(0,o.useEffect)(()=>{if(!es)return;let e=()=>{"visible"===document.visibilityState&&ng()};return document.addEventListener("visibilitychange",e),window.addEventListener("online",e),()=>{document.removeEventListener("visibilitychange",e),window.removeEventListener("online",e)}},[es,ng]),(0,o.useEffect)(()=>{if(!tu)return;let e=setTimeout(()=>tp(null),3e3);return()=>clearTimeout(e)},[tu]),(0,o.useEffect)(()=>{if(!th)return;let e=setTimeout(()=>tg(null),6e3);return()=>clearTimeout(e)},[th]),(0,o.useEffect)(()=>{if(0===tC.visible.length)return;let e=tC.visible.find(e=>e.exiting);if(e){let t=setTimeout(()=>{tz({type:"remove",id:e.id})},180);return()=>clearTimeout(t)}if(!tC.visible[0])return;let t=setTimeout(()=>{tz({type:"mark_oldest_exiting"})},5e3);return()=>clearTimeout(t)},[tC.visible]),(0,o.useEffect)(()=>{tI(null)},[C.length,eJ?.tokens,eJ?.percent,eJ?.contextWindow]);let nQ=g?.tree??[];return{isAutoThinkingSelection:p&&null===rH,data:g,loading:y,error:k,activeLeafId:w,messages:C,activeToolResults:T,entryIds:I,historyCursor:E,hasEarlierMessages:W,streamState:N,agentRunning:_,bashRunning:K,pendingBash:J,modelNames:G,modelList:Z,modelThinkingLevels:ee,modelThinkingLevelMaps:er,modelScopeWarnings:eo,modelsError:es,newSessionModel:ea,toolPreset:ep,thinkingLevel:rO??eB,retryInfo:eK,contextUsage:eJ,systemPrompt:eG,forkingEntryId:eZ,isCompacting:td,compactError:tu,compactResult:th,currentModel:rP,displayModel:rF,sessionStats:rB,tokenRate:F,planMode:eC,collaborationMode:ek,tokenMode:ej,toolApprovalMode:ew,permissionRules:eS,modeSettings:ef,approvalRequests:eW,handleCollaborationModeChange:nN,handleTokenModeChange:nA,handleToolApprovalModeChange:nP,handlePermissionRulesChange:nF,resolveApproval:nD,setActiveGoalText:nH,goalState:eA,handleGoalStart:nO,handleGoalPause:nB,handleGoalResume:nU,handleGoalStop:n_,handleGoalEdit:nq,slashCommands:tk,slashCommandsLoading:tw,queuedMessages:tD,pendingRecovery:tB,recoveryIsImport:tq,notices:tC.visible,extensionDialog:tM,extensionCustomUi:tW,extensionStatuses:tN,extensionWidgets:tP,respondToExtensionUi:rZ,sendExtensionCustomInput:rQ,agentPhase:tx,isNew:p,promptAnchorActive:tm,branchTree:nQ,autoCompactionEnabled:eD,sessionIdRef:t6,eventSourceRef:tG,messagesEndRef:ry,scrollContainerRef:rb,lastUserMsgRef:rh,pendingScrollToUserRef:rg,initialScrollDoneRef:rp,scrollUserMsgToTop:nK,handleSend:ns,executeBash:nl,handleAbort:na,handleFork:nd,handleNavigate:nc,handleModelChange:np,handleCompact:nh,handleSteer:nm,handleFollowUp:ny,handlePromptWithStreamingBehavior:nv,handleAbortCompaction:nb,handleRecallQueue:nk,resolveRecovery:nj,exportQueueData:nw,importQueueData:nS,stageQueueImport:nC,moveQueuedMessage:nz,recallQueuedMessage:nT,requeueAt:nR,removeQueuedMessage:nI,handleBuiltinSlashCommand:nx,handleToolPresetChange:nE,handleThinkingLevelChange:nM,loadTools:r_,loadSlashCommands:rV,reloadModels:ng,setActiveLeafId:S,setData:x,setMessages:z,loadContext:r2,dispatch:A,setAgentRunning:q,setForkingEntryId:tt,handleLeafChange:nu,handleAgentEventRef:ru}}({session:e,newSessionCwd:t,onAgentEnd:N,onSessionCreated:s,onSessionForked:l,modelsRefreshKey:d,chatInputRef:c,onBranchDataChange:u,onSystemPromptChange:p,onSessionStatsPanelOpen:g}),[tz,tT]=(0,o.useState)(!1);(0,o.useEffect)(()=>{0===em.length&&tT(!1)},[em.length]);let tI=(0,o.useMemo)(()=>{let e=O.findLast(e=>"assistant"===e.role&&!!e.usage);if(!e?.usage)return null;let t=e.usage;return{model:e.model??"",input:t.input??0,output:t.output??0,cacheRead:t.cacheRead??0,costCNY:ar(e.model)?an(e.model,t):0,costUSD:ar(e.model)?0:t.cost?.total??0}},[O]),[tM,t$]=(0,o.useState)(!1),[tW,tL]=(0,o.useState)(null),tN=(0,o.useRef)(!1);(0,o.useEffect)(()=>{if(!td){tN.current=!1;return}if(q){tN.current=!0;return}tN.current&&(tN.current=!1,tL(function(e){for(let t=e.length-1;t>=0;t--){let r=e[t];if("assistant"!==r.role)continue;let n=r.content;if("string"==typeof n&&n.trim())return n;if(Array.isArray(n)){let e=n.filter(e=>"text"===e.type).map(e=>e.text??"").join("\n").trim();if(e)return e}}for(let t=e.length-1;t>=0;t--){let r=e[t];if("toolResult"!==r.role)continue;let n=r.content,o="string"==typeof n?n:Array.isArray(n)?n.map(e=>e.text??"").join("\n"):"";if(!o)continue;let i=o.match(/\*\*Proposed Plan\*\*\s*\n+([\s\S]+)/i);if(i?.[1]?.trim())return i[1].trim()}return null}(O)??null),t$(!0))},[q,td,O]);let tA=(0,o.useCallback)(()=>{t$(!1);let e=tP.current;e&&th("plan"===tc?"normal":tc).catch(e=>{console.error("Failed to leave plan mode before executing:",e)}).then(()=>{eF(E("tasks.planReviewExecutePrompt",{plan:e}))})},[th,eF,E,tc]),tP=(0,o.useRef)(null);(0,o.useEffect)(()=>{tP.current=tW},[tW]);let tF=(0,o.useCallback)(e=>{t$(!1),eF(e)},[eF]),tD=(0,o.useCallback)(()=>{t$(!1),th("plan"===tc?"normal":tc)},[th,tc]);(0,o.useEffect)(()=>{eb&&L.current!==eb.id&&(L.current=eb.id,W.current&&$.current())},[eb]),(0,o.useEffect)(()=>(a=q||K?eH:null,()=>void(a=null)),[q,K,eH]);let[tH,tO]=(0,o.useState)(!1),[tB,tU]=(0,o.useState)(!1),[t_,tq]=(0,o.useState)(!1),tK=(0,o.useCallback)(()=>{let e=eW.current;if(!e)return;let t=e.scrollHeight-e.scrollTop-e.clientHeight;tO(e.scrollTop>1),tU(t>1),tq(t>240)},[eW]),tV=(0,o.useCallback)(()=>{window.requestAnimationFrame(()=>{let e=eW.current,t=e$.current;if(!e||!t)return;let r=Math.max(88,c?.current?.measureHeight?.()??0),n=()=>{if(!e||!t)return;let n=Math.max(0,t.getBoundingClientRect().top-e.getBoundingClientRect().top+e.scrollTop-96-e.clientHeight+r);e.scrollTo({top:n,behavior:"auto"})};n(),tK(),window.setTimeout(n,200)})},[e$,eW,tK,c]);(0,o.useEffect)(()=>{let e=eW.current;if(!e)return;let t=new ResizeObserver(tK);return t.observe(e),e.firstElementChild&&t.observe(e.firstElementChild),e.addEventListener("scroll",tK,{passive:!0}),tK(),()=>{e.removeEventListener("scroll",tK),t.disconnect()}},[O.length,eW,tK]);let tJ=(0,o.useRef)(!1);(0,o.useEffect)(()=>{let t=eW.current;if(!t)return;let r=()=>{if(tJ.current||!tS||!tw||t.scrollTop>8)return;let r=e?.id;if(!r)return;tJ.current=!0;let n=t.scrollHeight-t.scrollTop;tC(r,eI,tw).finally(()=>{tJ.current=!1,requestAnimationFrame(()=>{let e=t.scrollHeight-n;Math.abs(t.scrollTop-e)>1&&t.scrollTo({top:e,behavior:"auto"})})})};return t.addEventListener("scroll",r,{passive:!0}),()=>t.removeEventListener("scroll",r)},[eW,tw,tS,tC,e?.id,eI]);let tY=(0,o.useRef)(!1);(0,o.useEffect)(()=>{if(!tS||!tw)return;let t=eW.current,r=e?.id;if(!t||!r||tJ.current||tY.current||D||t.scrollTop>8||t.scrollHeight>t.clientHeight+50)return;tY.current=!0;let n=t.scrollHeight-t.scrollTop;tC(r,eI,tw).finally(()=>{tY.current=!1,requestAnimationFrame(()=>{let e=t.scrollHeight-n;Math.abs(t.scrollTop-e)>1&&t.scrollTo({top:e,behavior:"auto"})})})},[eW,tw,tS,tC,e?.id,eI,D,O.length]);let tG=(0,o.useRef)(null),tX=(0,o.useRef)([]),tZ=(0,o.useRef)(new Map),tQ=(0,o.useRef)(null),[t0,t1]=(0,o.useState)(0);(0,o.useEffect)(()=>{let e=tQ.current;if(!e)return void t1(e=>0===e?e:0);let t=()=>{let t=Math.round(e.getBoundingClientRect().height);t1(e=>e===t?e:t)};t();let r=new ResizeObserver(t);return r.observe(e),()=>r.disconnect()},[D,H]);let t2=(0,o.useMemo)(()=>({getOffsetForIndex:e=>tG.current?.getOffsetForIndex(e)?.[0]??0,sizeFor:e=>{let t=tG.current;if(!t)return 0;let r=t.measurementsCache[e];return r?.size??t.options.estimateSize?.(e)??0},totalHeight:()=>tG.current?.getTotalSize()??0,refToItemIndex:e=>tX.current[e],itemCount:tX.current.length}),[]),t6=ep?[ep.sessionId,ep.sessionFile??"",ep.sessionName??"",ep.userMessages,ep.assistantMessages,ep.toolCalls,ep.toolResults,ep.totalMessages,ep.tokens.input,ep.tokens.output,ep.tokens.cacheRead,ep.tokens.cacheWrite,ep.tokens.total,ep.cost??0,ep.totalActiveMs??0].join("|"):null,t4=(0,o.useRef)(ep);t4.current=ep,(0,o.useEffect)(()=>{h?.(t4.current)},[t6,h]),(0,o.useEffect)(()=>()=>{h?.(null)},[h]);let t5=es?`${es.percent??"null"}|${es.contextWindow}|${es.tokens??"null"}`:null,t3=(0,o.useRef)(es);t3.current=es,(0,o.useEffect)(()=>{x?.(t3.current)},[t5,x]),(0,o.useEffect)(()=>()=>{x?.(null)},[x]);let{isDragOver:t8,handleDragEnter:t7,handleDragOver:t9,handleDragLeave:re,handleDrop:rt}=function(e){let[t,r]=(0,o.useState)(!1),n=(0,o.useRef)(0),i=(0,o.useCallback)(e=>{e.dataTransfer.files.length&&(e.preventDefault(),n.current+=1,r(!0))},[]),s=(0,o.useCallback)(e=>{e.dataTransfer.files.length&&e.preventDefault()},[]);return{isDragOver:t,handleDragEnter:i,handleDragOver:s,handleDragLeave:(0,o.useCallback)(()=>{n.current-=1,n.current<=0&&(n.current=0,r(!1))},[]),handleDrop:(0,o.useCallback)(t=>{t.preventDefault(),n.current=0,r(!1),e(Array.from(t.dataTransfer.files),t.dataTransfer)},[e])}}((0,o.useCallback)((e,t)=>{if(q){let t=e.filter(e=>e.type.startsWith("image/"));t.length&&c?.current?.addImages(t);return}c?.current?.addFiles(e,t)},[q,c])),rr=O.filter(e=>"user"===e.role||"assistant"===e.role||si(e));(0,o.useMemo)(()=>{let e=new Map(B);for(let t of O)"toolResult"===t.role&&e.set(t.toolCallId,t);return e},[B,O]);let rn=(0,o.useMemo)(()=>{let e=new Set,t=[];for(let n=O.length-1;n>=0&&t.length<50;n-=1){var r;let o="user"!==(r=O[n]).role?null:("string"==typeof r.content?r.content:r.content.filter(e=>"text"===e.type).map(e=>e.text).join("\n")).trim()||null;!o||e.has(o)||(e.add(o),t.push(o))}return t},[O]),ro=(S=rr.length,(C=(0,o.useRef)([])).current.length!==S&&(C.current=Array.from({length:S},(e,t)=>C.current[t]??null)),C),ri=eT&&0===O.length&&!_.isStreaming&&!q,rs=e?.cwd??t??void 0;!function(e,t=!0){(0,o.useEffect)(()=>{if(!t)return;let r=null,n=null,o=!1,i=null,s=()=>{null!==i&&(clearTimeout(i),i=null)},l=()=>{r&&(s(),r.classList.add("scrollbar-visible"))},a=()=>{r&&(s(),i=setTimeout(()=>{i=null,r?.classList.remove("scrollbar-visible")},500))},d=()=>{l(),a()},c=()=>{if(!o){if(!(r=e.current)){n=requestAnimationFrame(c);return}r.addEventListener("pointerenter",l),r.addEventListener("pointerleave",a),r.addEventListener("scroll",d)}};return c(),()=>{o=!0,null!==n&&cancelAnimationFrame(n),r?.removeEventListener("pointerenter",l),r?.removeEventListener("pointerleave",a),r?.removeEventListener("scroll",d),s(),r?.classList.remove("scrollbar-visible")}},[t,e])}(eW,!!e?.id||!ri);let rl=(0,o.useMemo)(()=>sN(O,U,rs,B),[O,U,rs,B]),ra=eu?X[`${eu.provider}:${eu.modelId}`]??null:null,rd=eu?Z[`${eu.provider}:${eu.modelId}`]??null:null,rc=(0,o.useCallback)(()=>{et()},[et]),ru=(0,o.useCallback)(e=>{th(e)},[th]),rp=e?.relation?.kind==="subagent"?(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",gap:8,padding:"14px 16px",borderTop:"1px solid var(--border)",color:"var(--text-dim)",fontSize:12},children:[(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("rect",{x:"3",y:"11",width:"18",height:"10",rx:"2"}),(0,n.jsx)("circle",{cx:"12",cy:"5",r:"2"}),(0,n.jsx)("path",{d:"M12 7v4"})]}),E("subagent.readOnlyNotice")]}):(0,n.jsx)(cv,{ref:c,onSend:eF,onBash:eD,tasksBoardEnabled:b,onAbort:eH,onSteer:q?eq:void 0,onFollowUp:q?eK:void 0,onPromptWithStreamingBehavior:q?eV:void 0,isStreaming:q,model:eu,modelNames:J,modelList:G,modelScopeWarnings:Q,modelsError:ee,onRetryModels:rc,onModelChange:eU,compactResult:ec,toolPreset:er,onToolPresetChange:e||eT?ts:void 0,collaborationMode:tc,toolApprovalMode:tu,onCollaborationModeChange:ru,onToolApprovalModeChange:tg,goalState:tm,onGoalStart:tv,onGoalPause:ty,onGoalResume:tb,onGoalStop:tk,thinkingLevel:en,isAutoThinkingSelection:eo,onThinkingLevelChange:e||eT?tl:void 0,availableThinkingLevels:ra,thinkingLevelMap:rd,retryInfo:ei,queuedMessages:ef,inputHistory:rn,onRecallQueue:eY,onMoveQueue:tt,onRecallOne:tr,onRequeueAt:tn,onRemoveQueueItem:to,slashCommands:eg,slashCommandsLoading:ex,onLoadSlashCommands:ta,onBuiltinCommand:ti,onAudioUnlock:I,draftKey:e?.id??(t?`new:${t}`:void 0),cwd:e?.cwd??t,topCenterControl:t_?(0,n.jsx)("button",{type:"button",className:"chat-input-top-center",onClick:tV,title:E("desktop.scrollToBottom"),"aria-label":E("desktop.scrollToBottom"),children:(0,n.jsx)(l5.Z,{size:16,weight:"bold","aria-hidden":"true"})}):void 0}),rh=ew.filter(e=>"belowEditor"!==e.placement),rg=ew.filter(e=>"belowEditor"===e.placement),rx=ea?E("desktop.compacting"):function(e,t){if(e?.kind==="running_tools"){let r=e.tools.map(e=>e.name);return 0===r.length?t("desktop.runningTool"):t("desktop.runningTools",{tools:r.length<=3?r.join(", "):`${r.slice(0,2).join(", ")} (+${r.length-2})`})}return e?.kind==="waiting_model"?t("desktop.waitingForModel"):e?.kind==="running_command"?t("desktop.runningCommand"):null}(ez,E);return D?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-text-muted",children:E("desktop.loadingSession")}):H?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-red-400",children:H}):(0,n.jsxs)("div",{className:"relative flex h-full min-w-0 flex-col overflow-hidden",onDragEnter:t7,onDragOver:t9,onDragLeave:re,onDrop:rt,children:[t8&&(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"})]})]})]}),eb&&(0,n.jsx)(ui,{request:eb,onRespond:eS}),ek&&(0,n.jsx)(us,{request:ek,onInput:eC}),!eT&&em.length>0&&!tz&&(0,n.jsx)(ck,{items:em,sessionId:e?.id,onResolve:eG,onExport:eX,onStageImport:eZ,onDismiss:()=>tT(!0),mode:ev?"import":"recovery"}),tx.length>0&&(0,n.jsx)(aO,{request:tx[0]??null,queuedCount:Math.max(0,tx.length-1),busy:!1,onResolve:(e,t,r)=>{let n=tx[0];n&&tf(n.id,e,t,r)}}),ri?(0,n.jsx)("div",{className:"flex flex-1 flex-col items-center justify-center overflow-y-auto",children:(0,n.jsxs)("div",{className:"w-full max-w-[820px]",children:[(0,n.jsx)("div",{style:{display:"flex",justifyContent:"center",marginBottom:28},children:(0,n.jsxs)("svg",{fill:"currentColor",fillRule:"evenodd",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",style:{width:64,height:64,color:"var(--accent)",opacity:.85},"aria-label":"Pi",children:[(0,n.jsx)("title",{children:"Pi"}),(0,n.jsx)("path",{clipRule:"evenodd",d:"M1 1h16.5v11H12v5.5H6.5V23H1V1zm5.5 5.5V12H12V6.5H6.5z"}),(0,n.jsx)("path",{d:"M17.5 12H23v11h-5.5V12z"})]})}),M&&(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",gap:10,marginBottom:18,marginTop:-14},children:[(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-muted)",fontFamily:"var(--font-mono)"},children:["web ",(0,n.jsxs)("span",{style:{color:"var(--text)"},children:["v","0.18.8"]})]}),(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-muted)",fontFamily:"var(--font-mono)"},children:["pi ",(0,n.jsxs)("span",{style:{color:"var(--text)"},children:["v","0.87.1"]})]})]}),(0,n.jsx)("div",{style:{padding:"0 34px 6px 7px",paddingRight:M?16:34},children:(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},children:[(0,n.jsx)("div",{ref:m,style:{display:"flex",alignItems:"center",minWidth:0,flex:1,minHeight:48}}),(0,n.jsxs)("div",{style:{display:M?"none":"flex",flexDirection:"column",alignItems:"flex-end",gap:2,flexShrink:0},children:[(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-muted)",fontFamily:"var(--font-mono)"},children:["web ",(0,n.jsxs)("span",{style:{color:"var(--text)"},children:["v","0.18.8"]})]}),(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-muted)",fontFamily:"var(--font-mono)"},children:["pi ",(0,n.jsxs)("span",{style:{color:"var(--text)"},children:["v","0.87.1"]})]})]})]})}),(0,n.jsx)("div",{style:{padding:"0 16px",paddingRight:M?16:34},children:(0,n.jsx)(uo,{notices:ey,align:"right"})}),"goal"===tc&&(0,n.jsx)(aF,{goalState:tm,onPause:ty,onResume:tb,onStop:tk,onEdit:tj}),rp,(0,n.jsx)("div",{style:{padding:"0 16px 6px",paddingRight:M?16:34,marginTop:-15},children:(0,n.jsx)(cW,{onViewFullHistory:v,cwd:rs,systemPrompt:y,sessionStats:ep,contextUsage:es,hasSession:!!e,showChat:!0,showSoundLabel:!0,soundEnabled:z,onSoundToggle:T,onCompact:e?e_:void 0,onAbortCompaction:eJ,isCompacting:ea,compactError:ed,lastTurnUsage:tI})})]})}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"relative flex flex-1 overflow-hidden z-0",children:[(0,n.jsx)("div",{style:{position:"absolute",top:12,left:0,right:18*!M,zIndex:40,padding:"0 16px",pointerEvents:"none"},children:(0,n.jsx)("div",{style:{maxWidth:820,margin:"0 auto"},children:(0,n.jsx)(uo,{notices:ey,floating:!0,align:"right"})})}),(0,n.jsxs)("div",{className:"relative flex-1 min-h-0 min-w-0",children:[(0,n.jsx)("div",{ref:eW,className:"scrollbar-subtle h-full min-w-0 overflow-x-hidden overflow-y-auto pt-4 [scrollbar-gutter:stable]",children:(0,n.jsx)("div",{style:{minWidth:0,padding:"0 16px"},children:(0,n.jsxs)("div",{style:{width:"100%",minWidth:0,maxWidth:820,margin:"0 auto"},children:[(0,n.jsxs)("div",{ref:tQ,children:[(0,n.jsx)(ur,{statuses:ej}),(0,n.jsx)(un,{widgets:rh})]}),(()=>{let{toolResultsMap:t,lastUserIdx:r,visibleRefIndexByMessage:o,items:i}=rl;for(let e=O.length-1;e>=0&&!si(O[e]);e--);let s=tZ.current,l=(i,l={})=>{let a=l.messageOverride??O[i];if(!a||"toolResult"===a.role)return null;let d="user"===a.role||"assistant"===a.role||si(a),c=o.get(i),u=l.keyPrefix??"message",p=!1;if("assistant"===a.role){p=!0;for(let e=i+1;e<O.length;e++){let t=O[e].role;if("user"===t)break;if("assistant"===t){p=!1;break}}p&&_.isStreaming&&i===O.length-1&&(p=!1)}void 0!==l.showTimestamp&&(p=l.showTimestamp);let h=(0,n.jsx)(ad,{message:a,toolResults:t,modelNames:J,cwd:rs,onOpenFile:f,entryId:U[i],onFork:q||eT?void 0:eO,forking:el===U[i],onNavigate:q?void 0:eB,onEditContent:A,onQuoteReply:P,onOpenSession:k,onCreateTask:F,showTimestamp:p,prevTimestamp:i>0?O[i-1].timestamp:void 0,sessionId:e?.id??eE.current??void 0,writtenFiles:l.writtenFiles},`${u}-view-${i}`);return d&&!1!==l.attachRef&&void 0!==c?(0,n.jsx)("div",{ref:((e,t)=>{let n=s.get(t);if(!n){let e={isLastUser:!1};n={state:e,callback:r=>{ro.current[t]=r,e.isLastUser&&(eL.current=r,r&&eN.current&&(eN.current=!1,eA.current=!0,eP()))}},s.set(t,n)}return n.state.isLastUser=e===r,n.callback})(i,c),children:h},`${u}-${i}`):h},a=[],d=[],c=[],u=(e,t,r)=>{null!==e&&(a.push(e),d.push(t),c.push(r))},p=(e,t)=>U[e]||`${t}-${e}`,h=e=>`live-answer-u${e}`,g=e=>`answer-${p(e,"user")}`,x=e=>`subagent-${e}`,m=e=>sp(e.result?.details)?e.result.details.sessionId:"",v=e=>{let t=m(e);if(t&&w){let e=w.get(t);if(e)return"running"===e.status}let r=sp(e.result?.details)?e.result.details:null;return r?"running"===r.status||"starting"===r.status:!e.result},y=(e,t)=>`live-process-u${e}-seg${t}`,b=(e,t,r)=>`process-${p(e,"user")}-${r||`seg${t}`}`;for(let s of i){if("single"===s.kind){if(O[s.idx]?.role==="toolResult")continue;u(l(s.idx),o.get(s.idx),p(s.idx,"single"));continue}let{userIdx:i,endIdx:a,startsCompactionTurn:d,finalAssistantIdx:c}=s;if((q||_.isStreaming)&&a===O.length&&(i===r||d)){i>=0&&u(l(i),o.get(i),p(i,"user"));let r=_.streamingMessage?.role==="assistant",s=[],d=!r&&c>=0?c:a;for(let e=i+1;e<d;e++)sW(O[e])&&s.push(e);let g=sm(O,U,s,t),v=null;if(!r&&c>=0){let e=O[c],r=sc(e,{isStreaming:!0}),n=sf(e,{messageIndex:c,entryId:U[c],toolResults:t,isStreaming:!0});g=g.concat(n.processBlocks),r.answerBlocks.length>0&&(v=sL(e,r.answerBlocks,{omitUsage:!0}))}if(r){let e=_.streamingMessage,r=sc(e,{isStreaming:!0}),n=sf(e,{messageIndex:O.length,toolResults:t,isStreaming:!0});g=g.concat(n.processBlocks),r.answerBlocks.length>0&&(v=sL(e,r.answerBlocks,{omitUsage:!0}))}if(g.length>0){let t=s.map(e=>o.get(e)).find(e=>"number"==typeof e);sh(g).forEach((r,s)=>{let l=o.get(r.blocks[0].origin.sourceMessageIndex)??t;if("subagent"===r.kind&&r.subagent)return void u((0,n.jsx)(dR,{run:r.subagent,onOpenSubagent:j,sessionRun:w?.get(m(r.subagent))},x(r.subagent.toolCallId)),l,x(r.subagent.toolCallId));if("output"===r.kind){let e=r.blocks[0],t=o.get(e.origin.sourceMessageIndex);u((0,n.jsx)(ad,{message:{role:"assistant",provider:"",model:"",content:r.blocks},isStreaming:e.origin.sourceMessageIndex===O.length,cwd:rs,onOpenFile:f,onQuoteReply:P,onOpenSession:k}),t,`output-${e.id}`);return}u((0,n.jsx)("div",{ref:void 0===l?void 0:e=>{ro.current[l]=e},children:(0,n.jsx)(dC,{blocks:r.blocks,isStreaming:q||_.isStreaming,cwd:rs,onOpenFile:f,sessionId:e?.id??eE.current??void 0,tokenRate:eh})},y(i,s)),l,y(i,s))})}v&&u((0,n.jsx)(ad,{message:v,isStreaming:!0,modelNames:J,cwd:rs,onOpenFile:f,onQuoteReply:P,onOpenSession:k},`live-answer-${i}`),c>=0?o.get(c):void 0,h(i));continue}if(-1===c&&0===s.processBlocks.length){if(i>=0)for(let e=i;e<a;e++)u(l(e),o.get(e),p(e,"raw"));continue}i>=0&&u(l(i),o.get(i),p(i,"user"));let{finalAnswerMessage:S,writtenFiles:C,visibleProcessIndices:z}=s;if(s.processBlocks.length>0){let t=z.map(e=>o.get(e)).find(e=>"number"==typeof e)??(S?void 0:o.get(c));s.processSegments.forEach((r,s)=>{let l=o.get(r.blocks[0].origin.sourceMessageIndex)??t;if("subagent"===r.kind&&r.subagent)return void u((0,n.jsx)(dR,{run:r.subagent,onOpenSubagent:j,sessionRun:w?.get(m(r.subagent))},x(r.subagent.toolCallId)),l,x(r.subagent.toolCallId));if("output"===r.kind){let e=r.blocks[0];u((0,n.jsx)(ad,{message:{role:"assistant",provider:"",model:"",content:r.blocks},cwd:rs,onOpenFile:f,onQuoteReply:P,onOpenSession:k}),o.get(e.origin.sourceMessageIndex),`output-${e.id}`);return}u((0,n.jsx)("div",{ref:void 0===l?void 0:e=>{ro.current[l]=e},children:(0,n.jsx)(dC,{blocks:r.blocks,isStreaming:"subagent"===r.kind&&void 0!==r.subagent&&v(r.subagent),defaultExpanded:!1,onAutoExpanded:void 0,cwd:rs,onOpenFile:f,sessionId:e?.id??eE.current??void 0})},`process-group-${i}-${s}`),l,b(i,s,r.blocks[0]?.id??""))})}if(S&&u(l(c,{messageOverride:S,writtenFiles:C}),o.get(c),g(i)),c>=0)for(let e=c+1;e<a;e++)u(l(e),o.get(e),p(e,"tail"))}let S=[],C=d.map((e,t)=>({startRef:e,itemIdx:t})).filter(e=>void 0!==e.startRef);return C.forEach((e,t)=>{let r=C[t+1]?.startRef??rr.length;for(let t=e.startRef;t<r;t++)S[t]=e.itemIdx}),tX.current=S,(0,n.jsx)(cA,{scrollElementRef:eW,items:a,itemKeys:c,virtualizerRef:tG,headerHeight:t0})})(),rx&&(ea||q&&!_.streamingMessage)&&(0,n.jsx)("div",{className:"py-2 text-[13px] text-text-muted",children:(0,n.jsxs)("span",{className:"animate-[pulse_1.5s_infinite]",children:[rx,ez?.kind==="waiting_model"&&(0,n.jsx)("span",{style:{display:"inline-block",width:12,height:12,marginLeft:6,verticalAlign:"-2px",border:"1.5px solid var(--text-muted)",borderTopColor:"transparent",borderRadius:"50%",animation:"spin 0.6s linear infinite"}})]})}),V&&(0,n.jsx)(ad,{message:{role:"bashExecution",command:V.command,output:"",excludeFromContext:V.excludeFromContext},sessionId:e?.id??eE.current??void 0}),K&&!V&&(0,n.jsx)("div",{className:"py-2 text-[13px] text-text-muted",children:(0,n.jsx)("span",{className:"animate-[pulse_1.5s_infinite]",children:E("desktop.runningShellCommand")})}),(0,n.jsx)("div",{style:{height:96}}),(0,n.jsx)("div",{ref:e$}),(0,n.jsx)(a$,{open:tM,planText:tW,busy:q,onExecute:tA,onFeedback:tF,onExit:tD,onClose:()=>t$(!1)})]})})}),tH&&(0,n.jsx)("div",{"aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 top-0 z-10 h-8 bg-gradient-to-b from-[var(--bg)] to-transparent"}),tB&&(0,n.jsx)("div",{"aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 bottom-0 z-10 h-8 bg-gradient-to-t from-[var(--bg)] to-transparent"})]}),M?null:(0,n.jsx)(cD,{messages:O,streamingMessage:_.streamingMessage,scrollContainer:eW,messageRefs:ro,virtualizer:t2})]}),(0,n.jsxs)("div",{className:"relative z-10",children:[(0,n.jsx)("div",{style:{padding:"0 16px",paddingRight:M?16:34},children:(0,n.jsx)("div",{style:{maxWidth:820,margin:"0 auto"},children:(0,n.jsx)(un,{widgets:rg})})}),rp,(0,n.jsx)("div",{className:`session-info-bar-wrap${M?" is-mobile":""}`,children:(0,n.jsx)("div",{className:"session-info-bar-inner",children:(0,n.jsx)(cW,{onViewFullHistory:v,cwd:rs,systemPrompt:y,sessionStats:ep,contextUsage:es,hasSession:!!e,showChat:!0,soundEnabled:z,onSoundToggle:T,onCompact:e?e_:void 0,onAbortCompaction:eJ,isCompacting:ea,compactError:ed,branchTree:eR,branchActiveLeafId:eI,onBranchLeafChange:eM,lastTurnUsage:tI})})})]})]})]})}function ur({statuses:e}){return 0===e.length?null:(0,n.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,marginBottom:10},children:e.map(e=>(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,maxWidth:"100%",padding:"4px 8px",border:"1px solid color-mix(in srgb, var(--accent) 24%, var(--border))",borderRadius:6,background:"color-mix(in srgb, var(--accent) 7%, var(--bg))",color:"var(--text-muted)",fontSize:12},children:[(0,n.jsx)("span",{style:{color:"var(--accent)",fontFamily:"var(--font-mono)",fontSize:11},children:e.key}),(0,n.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.text})]},e.key))})}function un({widgets:e}){return 0===e.length?null:(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:8,marginBottom:10},children:e.map(e=>(0,n.jsxs)("div",{style:{border:"1px solid var(--border)",borderRadius:7,background:"var(--bg-panel)",overflow:"hidden"},children:[(0,n.jsx)("div",{style:{padding:"5px 9px",borderBottom:"1px solid var(--border)",color:"var(--text-dim)",fontSize:11,fontFamily:"var(--font-mono)"},children:e.key}),(0,n.jsx)("pre",{style:{margin:0,padding:"8px 9px",color:"var(--text-muted)",fontSize:12,lineHeight:1.5,whiteSpace:"pre-wrap",wordBreak:"break-word",fontFamily:"var(--font-mono)"},children:e.lines.join("\n")})]},e.key))})}function uo({notices:e,floating:t=!1,align:r="left"}){return 0===e.length?null:(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",alignItems:"right"===r?"flex-end":"stretch",marginBottom:10*!t},children:e.map((r,o)=>{let i="error"===r.type?"var(--status-error)":"warning"===r.type?"var(--status-warning)":"success"===r.type?"#10b981":"var(--accent)";return(0,n.jsxs)("div",{className:"notice-shelf-item",style:{display:"flex",alignItems:"center",gap:10,minHeight:44,maxHeight:180,marginBottom:6*(o!==e.length-1),overflowY:"auto",overflowX:"hidden",borderRadius:14,border:"1px solid color-mix(in srgb, var(--border) 70%, transparent)",background:"var(--bg)",color:"var(--text-muted)",width:"fit-content",maxWidth:"min(100%, 620px)",boxShadow:t?"0 1px 2px rgba(15,23,42,0.05), 0 10px 28px -14px rgba(15,23,42,0.24)":"0 1px 2px rgba(15,23,42,0.04), 0 8px 24px -12px rgba(15,23,42,0.10)",fontSize:13,lineHeight:1.45,transformOrigin:"top center",animation:r.exiting?"notice-shelf-out 0.18s ease-in forwards":"notice-shelf-in 0.18s ease-out both",padding:"0 12px"},children:[(0,n.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:i,flexShrink:0}}),(0,n.jsx)("span",{style:{padding:"10px 0",minWidth:0,maxWidth:"100%",overflowWrap:"anywhere",whiteSpace:"pre-wrap"},children:r.message})]},r.id)})})}function ui({request:e,onRespond:t}){let{t:r}=(0,Y.s)(),[i,s]=(0,o.useState)("editor"===e.method?e.prefill??"":""),[l,a]=(0,o.useState)(!1),[d,c]=(0,o.useState)(()=>Date.now()),u=(0,o.useCallback)(e=>e?.focus(),[]);!function(e){if("select"===e.method&&e.options.length>0)return e.options[0];if("confirm"===e.method){let t=e.message.split("\n").find(e=>e.trim());t?.trim()}}(e);let p=void 0===e.expiresAt?null:Math.max(0,Math.ceil((e.expiresAt-d)/1e3));(0,o.useEffect)(()=>{if(void 0===e.expiresAt)return;let t=setInterval(()=>c(Date.now()),1e3);return()=>clearInterval(t)},[e.expiresAt]);let h=null!==p&&(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)",whiteSpace:"nowrap",flexShrink:0},children:r("chat.extensionExpiresIn",{seconds:p})});(0,o.useEffect)(()=>{s("editor"===e.method?e.prefill??"":"")},[e]);let g=()=>{"confirm"===e.method?t(e,{confirmed:!0}):t(e,{value:i})};return(0,n.jsx)("div",{style:{position:"absolute",inset:0,zIndex:90,display:"flex",alignItems:"center",justifyContent:"center",padding:20,background:"rgba(0,0,0,0.18)"},children:(0,n.jsxs)("div",{role:"dialog","aria-modal":"true",style:{width:"min(560px, 100%)",border:"1px solid var(--border)",borderRadius:8,background:"var(--bg)",boxShadow:"0 20px 60px rgba(0,0,0,0.28)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{flexShrink:0,display:"flex",alignItems:"flex-start",gap:8,padding:"12px 14px",borderBottom:"1px solid var(--border)",maxHeight:"50%",overflowY:"auto"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{color:"var(--text)",fontSize:14,fontWeight:650,lineHeight:1.45,whiteSpace:"pre-wrap",overflowWrap:"anywhere"},children:e.title}),(0,n.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:8,marginTop:3,color:"var(--text-dim)",fontSize:11,fontFamily:"var(--font-mono)"},children:[(0,n.jsx)("span",{children:r("desktop.extensionRequest")}),h]})]}),(0,n.jsx)("button",{type:"button",onClick:()=>a(!0),"aria-expanded":!0,title:r("chat.extensionCollapse"),"aria-label":r("chat.extensionCollapse"),style:{display:"grid",placeItems:"center",width:28,height:28,borderRadius:6,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",flexShrink:0},children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})})]}),(0,n.jsxs)("div",{style:{padding:14},children:["confirm"===e.method&&(0,n.jsx)(lH,{children:e.message}),"select"===e.method&&(0,n.jsx)("div",{onKeyDown:e=>{if(!["ArrowDown","ArrowRight","ArrowUp","ArrowLeft","Home","End"].includes(e.key))return;let t=Array.from(e.currentTarget.querySelectorAll("[data-extension-option]")),r=t.indexOf(e.target);if(r<0)return;e.preventDefault();let n="Home"===e.key?0:"End"===e.key?t.length-1:(r+("ArrowDown"===e.key||"ArrowRight"===e.key?1:-1)+t.length)%t.length;t[n]?.focus()},style:{display:"grid",gap:8},children:e.options.map((r,o)=>(0,n.jsx)("div",{role:"button",tabIndex:0,"data-extension-option":!0,"aria-label":r,ref:0===o?u:void 0,onClick:()=>t(e,{value:r}),onKeyDown:n=>{("Enter"===n.key||" "===n.key)&&(n.preventDefault(),t(e,{value:r}))},style:{width:"100%",padding:"9px 10px",borderRadius:7,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text)",cursor:"pointer",textAlign:"left",fontSize:13,overflowWrap:"anywhere",scrollMargin:14},children:(0,n.jsx)("div",{inert:!0,children:(0,n.jsx)(lH,{children:r})})},r))}),"input"===e.method&&(0,n.jsx)("input",{autoFocus:!0,className:"extension-input",value:i,placeholder:e.placeholder,onChange:e=>s(e.target.value),onKeyDown:r=>{"Enter"===r.key&&g(),"Escape"===r.key&&t(e,{cancelled:!0})},style:{width:"100%",padding:"9px 10px",borderRadius:7,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text)",outline:"none",fontSize:13}}),"editor"===e.method&&(0,n.jsx)("textarea",{autoFocus:!0,value:i,onChange:e=>s(e.target.value),onKeyDown:r=>{"Escape"===r.key&&t(e,{cancelled:!0}),(r.metaKey||r.ctrlKey)&&"Enter"===r.key&&g()},style:{width:"100%",minHeight:220,padding:10,borderRadius:7,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text)",outline:"none",resize:"vertical",fontSize:13,lineHeight:1.55,fontFamily:"var(--font-mono)"}})]}),(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,padding:"10px 14px",borderTop:"1px solid var(--border)",background:"var(--bg-panel)"},children:[(0,n.jsx)("button",{onClick:()=>t(e,{cancelled:!0}),style:{padding:"6px 10px",borderRadius:6,border:"1px solid var(--border)",background:"var(--bg)",color:"var(--text-muted)",cursor:"pointer"},children:r("desktop.cancel")}),"confirm"===e.method?(0,n.jsx)("button",{onClick:g,style:{padding:"6px 10px",borderRadius:6,border:"1px solid var(--accent)",background:"var(--accent)",color:"var(--accent-fg)",cursor:"pointer"},children:r("desktop.confirm")}):"select"!==e.method?(0,n.jsx)("button",{onClick:g,style:{padding:"6px 10px",borderRadius:6,border:"1px solid var(--accent)",background:"var(--accent)",color:"var(--accent-fg)",cursor:"pointer"},children:r("desktop.submit")}):null]})]})})}function us({request:e,onInput:t}){let{t:r}=(0,Y.s)(),i=(0,o.useRef)(null),s=function(e){let t=/^[┌├└╭╰][─┬┴┼]+[┐┤┘╮╯]$/,r=[];for(let n of e){let e=st(n).trimEnd();if(t.test(e))continue;let o=n,i=so(o);("│"===i||"┃"===i)&&" "===so(o=sn(o,0))&&(o=sn(o,0));let s=function(e){let t=sr(e);for(let e=t.length-1;e>=0;e--)if(""!==t[e].char.trim())return e;return -1}(o),l=s>=0?sr(o)[s]?.char:void 0;("│"===l||"┃"===l)&&(o=sn(o,s)),r.push(function(e){let t=e;for(;;){let e=sr(t),r=e[e.length-1];if(!r||""!==r.char.trim())return t;t=t.slice(0,r.start)+t.slice(r.end)}}(o))}for(;r.length>0&&""===st(r[0]).trim();)r.shift();for(;r.length>0&&""===st(r[r.length-1]).trim();)r.pop();return r.length?r:e}(e.lines);return(0,o.useEffect)(()=>{i.current?.focus()},[e.id]),(0,n.jsx)("div",{style:{position:"absolute",inset:0,zIndex:95,display:"flex",alignItems:"center",justifyContent:"center",padding:20,background:"rgba(0,0,0,0.18)"},children:(0,n.jsxs)("div",{ref:i,tabIndex:0,role:"dialog","aria-modal":"true",onKeyDown:r=>{let n=function(e){if(e.ctrlKey&&!e.metaKey&&!e.altKey&&1===e.key.length){let t=e.key.toLowerCase();if(t>="a"&&t<="z")return String.fromCharCode(t.charCodeAt(0)-96)}switch(e.key){case"ArrowUp":return"\x1b[A";case"ArrowDown":return"\x1b[B";case"ArrowRight":return"\x1b[C";case"ArrowLeft":return"\x1b[D";case"Enter":return"\r";case"Escape":return"\x1b";case"Backspace":return"";case"Tab":return" ";case" ":return" ";default:if(!e.ctrlKey&&!e.metaKey&&!e.altKey&&1===e.key.length)return e.key;return null}}(r);n&&(r.preventDefault(),r.stopPropagation(),t(e,n))},style:{width:"min(920px, 100%)",maxHeight:"min(760px, calc(100vh - 40px))",border:"1px solid var(--border)",borderRadius:8,background:"var(--bg)",boxShadow:"0 20px 60px rgba(0,0,0,0.28)",overflow:"hidden",outline:"none"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,padding:"10px 12px",borderBottom:"1px solid var(--border)"},children:[(0,n.jsx)("div",{style:{color:"var(--text)",fontSize:13,fontWeight:650},children:r("desktop.extensionPanel")}),(0,n.jsx)("button",{onClick:()=>t(e,"\x03"),style:{padding:"5px 9px",borderRadius:6,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:r("desktop.close")})]}),(0,n.jsx)("pre",{style:{margin:0,padding:14,maxHeight:"calc(min(760px, 100vh - 40px) - 48px)",overflow:"auto",background:"var(--bg-panel)",color:"var(--text)",fontFamily:"var(--font-mono)",fontSize:13,lineHeight:1.45,whiteSpace:"pre"},children:(s.length?s:[""]).map((e,t,r)=>{var i;return(0,n.jsxs)(o.Fragment,{children:[(i=`line-${t}`,(function(e){let t,r=[],n={},o=0;for(i7.lastIndex=0;null!==(t=i7.exec(e));)t.index>o&&r.push({text:e.slice(o,t.index),style:n}),n=function(e,t){let r={...e};for(let e=0;e<t.length;e++){let n=t[e];if(0===n)for(let e of Object.keys(r))delete r[e];else if(1===n)r.fontWeight=700;else if(2===n)r.opacity=.65;else if(3===n)r.fontStyle="italic";else if(4===n)r.textDecoration="underline";else if(22===n)delete r.fontWeight,delete r.opacity;else if(23===n)delete r.fontStyle;else if(24===n)delete r.textDecoration;else if(39===n)delete r.color;else if(49===n)delete r.backgroundColor;else if(n>=30&&n<=37)r.color=i9[n-30];else if(n>=90&&n<=97)r.color=se[n-90];else if(n>=40&&n<=47)r.backgroundColor=i9[n-40];else if(n>=100&&n<=107)r.backgroundColor=se[n-100];else if((38===n||48===n)&&2===t[e+1]){let[o,i,s]=[t[e+2],t[e+3],t[e+4]];[o,i,s].every(e=>"number"==typeof e&&Number.isFinite(e))&&(38===n?r.color=`rgb(${o}, ${i}, ${s})`:r.backgroundColor=`rgb(${o}, ${i}, ${s})`),e+=4}else if((38===n||48===n)&&5===t[e+1]){let o=function(e){if(e>=0&&e<8)return i9[e];if(e>=8&&e<16)return se[e-8];if(e>=16&&e<=231){let t=e-16,r=Math.floor(t/36),n=Math.floor(t%36/6),o=e=>0===e?0:55+40*e;return`rgb(${o(r)}, ${o(n)}, ${o(t%6)})`}if(e>=232&&e<=255){let t=8+(e-232)*10;return`rgb(${t}, ${t}, ${t})`}}(t[e+2]);o&&(38===n?r.color=o:r.backgroundColor=o),e+=2}}return r}(n,t[1]?t[1].split(";").map(e=>Number(e||"0")):[0]),o=t.index+t[0].length;return o<e.length&&r.push({text:e.slice(o),style:n}),r})(e).map((e,t)=>Object.keys(e.style).length>0?(0,n.jsx)("span",{style:e.style,children:e.text},`${i}-${t}`):e.text)),t<r.length-1?"\n":null]},t)})})]})})}var ul=r(93549);let ua={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",bmp:"image/bmp",ico:"image/x-icon",avif:"image/avif"},ud={mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",oga:"audio/ogg",opus:"audio/ogg",m4a:"audio/mp4",aac:"audio/aac",flac:"audio/flac",weba:"audio/webm"};function uc(e){return(e.replace(/\\/g,"/").split("/").pop()??"").toLowerCase().split(".").pop()??""}function uu(e){let t=e.nodeType===Node.ELEMENT_NODE?e:e.parentElement;return t?.closest(".file-source-line[data-line-number]")??null}function up(e,t){if(!t||t.isCollapsed||0===t.rangeCount)return null;let r=t.getRangeAt(0);if(!e.contains(r.startContainer)||!e.contains(r.endContainer))return null;let n=Number(uu(r.startContainer)?.dataset.lineNumber),o=Number(uu(r.endContainer)?.dataset.lineNumber);return Number.isInteger(n)&&Number.isInteger(o)?n<=o?{startLine:n,endLine:o}:{startLine:o,endLine:n}:null}function uh(e,t,r,n={}){let o=oW(e),i=new URLSearchParams({type:t});for(let[e,t]of(r&&i.set("sessionId",r),Object.entries(n)))void 0!==t&&i.set(e,String(t));return`/api/files/${o}?${i.toString()}`}function ug({filePath:e,sourceSessionId:t}){let{t:r}=(0,Y.s)();return(0,n.jsx)("a",{href:uh(e,"download",t),download:oL(e),title:r("desktop.downloadFile"),style:{display:"flex",alignItems:"center",justifyContent:"center",height:20,padding:"0 5px",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:4,color:"var(--text-muted)",cursor:"pointer",flexShrink:0,textDecoration:"none"},children:(0,n.jsx)(M.z,{size:11,"aria-hidden":"true"})})}let ux={fontFamily:"var(--font-mono)",fontSize:13,lineHeight:1.6,tabSize:2},uf={fontFamily:"var(--font-mono)",fontSize:13,lineHeight:1.6,padding:"12px 0 12px 16px",color:"var(--text-dim)",textAlign:"right",userSelect:"none"};async function um(e,t){let r=await fetch(`/api/files/${oW(e)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:t})});if(!r.ok)throw Error((await r.json().catch(()=>({}))).error??`HTTP ${r.status}`);let n=await r.json();return"number"==typeof n.size?n.size:0}let uv={delete:"3px solid var(--git-status-deleted)",add:"3px solid var(--git-status-added)",edit:"3px solid var(--git-status-modified)"},uy="var(--git-status-deleted-bg)",ub="var(--git-status-added-bg)",uk="var(--git-status-added)";function uj(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function uw({oldContent:e,newContent:t}){let{t:r}=(0,Y.s)(),o=function(e,t){let r=e.length,n=t.length,o=r+n,i=Array(2*o+1).fill(0),s=[];for(let l=0;l<=o;l++){s.push([...i]);for(let a=-l;a<=l;a+=2){let d,c=(d=a===-l||a!==l&&i[a-1+o]<i[a+1+o]?i[a+1+o]:i[a-1+o]+1)-a;for(;d<r&&c<n&&e[d]===t[c];)d++,c++;if(i[a+o]=d,d>=r&&c>=n){let i=[],a=r,d=n;for(let r=l;r>0;r--){let n,l=s[r-1],c=a-d;n=c===-r||c!==r&&l[c-1+o]<l[c+1+o]?c+1:c-1;let u=l[n+o],p=u-n;for(;a>u&&d>p;)a--,d--,i.unshift({type:"unchanged",text:e[a]});r>0&&(a>u?(a--,i.unshift({type:"removed",text:e[a]})):(d--,i.unshift({type:"added",text:t[d]})))}for(;a>0&&d>0;)a--,d--,i.unshift({type:"unchanged",text:e[a]});return i}}}return[...e.map(e=>({type:"removed",text:e})),...t.map(e=>({type:"added",text:e}))]}(e.split("\n"),t.split("\n"));if(!o.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:r("desktop.noChanges")});let i=new Set(o.flatMap((e,t)=>"unchanged"!==e.type?[t]:[])),s=new Set;for(let e of i)for(let t=Math.max(0,e-3);t<=Math.min(o.length-1,e+3);t++)s.add(t);let l=[],a=0;for(;a<o.length;)if(s.has(a)){let e=[];for(;a<o.length&&s.has(a);)e.push(o[a]),a++;l.push({hidden:!1,lines:e})}else{let e=0;for(;a<o.length&&!s.has(a);)e++,a++;l.push({hidden:!0,count:e})}let d=[],c=1;for(let e of o)"removed"===e.type?d.push(0):d.push(c++);let u=0;return(0,n.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:13,lineHeight:1.6,minWidth:"max-content"},children:l.map((e,t)=>{if(e.hidden){let o=(0,n.jsx)("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:r("desktop.unchangedLines",{count:e.count})},t);return u+=e.count,o}let o=[],i=[],s=[],l=()=>{if(i.length||s.length){let e=i.length&&s.length?"edit":i.length?"delete":"add";for(let t of i)o.push({key:t.key,kind:"removed",text:t.text,lineNo:null,block:e});for(let t of s)o.push({key:t.key,kind:"added",text:t.text,lineNo:t.lineNo,block:e});i=[],s=[]}};e.lines.forEach((e,r)=>{"unchanged"===e.type?(l(),o.push({key:`${t}:${r}`,kind:"context",text:e.text,lineNo:d[u+r],block:null})):"removed"===e.type?i.push({key:`${t}:${r}`,text:e.text}):s.push({key:`${t}:${r}`,text:e.text,lineNo:d[u+r]})}),l();let a=o.map(e=>{let t="removed"===e.kind?uy:"added"===e.kind?ub:"transparent",r=e.block?uv[e.block]:"3px solid transparent",o="added"===e.kind?uk:"var(--text-dim)";return(0,n.jsxs)("div",{style:{display:"flex",background:t,borderLeft:r},children:[(0,n.jsx)("span",{style:{minWidth:44,padding:"0 8px 0 16px",textAlign:"right",color:o,userSelect:"none",fontSize:11,lineHeight:1.6,flexShrink:0},children:e.lineNo??""}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,padding:"0 8px 0 0",whiteSpace:"pre",color:"var(--text)"},children:e.text||"\xa0"})]},e.key)});return u+=e.lines.length,(0,n.jsx)("div",{children:a},t)})})}function uS({patch:e}){let t=lZ(e);if(!t)return null;let r=[],o=[],i=[],s=()=>{if(o.length||i.length){let e=o.length&&i.length?"edit":o.length?"delete":"add";for(let t of o)r.push({key:t.key,kind:"removed",text:t.text,lineNo:null,block:e});for(let t of i)r.push({key:t.key,kind:"added",text:t.text,lineNo:t.lineNo,block:e});o=[],i=[]}};return t.forEach((e,t)=>{e.rows.forEach((e,n)=>{if("hunk"===e.type){s(),r.push({key:`${t}:${n}:h`,kind:"hunk",text:e.text,lineNo:null,block:null});return}let{left:l,right:a}=e;if("context"===l.type&&"context"===a.type){s(),r.push({key:`${t}:${n}:c`,kind:"context",text:l.text,lineNo:a.lineNo,block:null});return}"removed"===l.type&&o.push({key:`${t}:${n}:l`,text:l.text}),"added"===a.type&&i.push({key:`${t}:${n}:r`,text:a.text,lineNo:a.lineNo})})}),s(),(0,n.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:12,lineHeight:1.55,minWidth:"max-content"},children:r.map(e=>{if("hunk"===e.kind)return(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{height:"1.55em"}}),(0,n.jsx)("div",{style:{padding:"3px 12px",color:"var(--accent-blue)",background:"var(--bg-secondary)"},children:e.text}),(0,n.jsx)("div",{style:{height:"1.55em"}})]},e.key);let t="removed"===e.kind?uy:"added"===e.kind?ub:"transparent",r=e.block?uv[e.block]:"3px solid transparent",o="added"===e.kind?uk:"var(--text-dim)";return(0,n.jsxs)("div",{style:{display:"flex",background:t,borderLeft:r},children:[(0,n.jsx)("span",{style:{width:44,flexShrink:0,padding:"0 8px 0 16px",textAlign:"right",color:o,userSelect:"none",fontSize:11},children:e.lineNo??""}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,padding:"0 8px 0 0",whiteSpace:"pre",color:"var(--text)"},children:e.text||"\xa0"})]},e.key)})})}function uC({filePath:e,cwd:t,sourceSessionId:r}){let{t:i}=(0,Y.s)(),[s,l]=(0,o.useState)(0),[a,d]=(0,o.useState)(null),[c,u]=(0,o.useState)(null),[p,h]=(0,o.useState)(null),g=(0,o.useRef)(null),x=oL(e).toLowerCase().split(".").pop()??"";(0,o.useEffect)(()=>{l(0),d(null),u(null),h(null),g.current&&(g.current.close(),g.current=null);let t=new EventSource(uh(e,"watch",r));return g.current=t,t.addEventListener("change",e=>{try{let t=JSON.parse(e.data);"number"==typeof t.size&&d(t.size)}catch{}l(e=>e+1)}),()=>{t.close(),g.current=null}},[e,r]);let f=uh(e,"read",r,s?{v:s}:void 0),m=null!=a?uj(a):null;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{className:"file-viewer-status-bar",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,flexWrap:"wrap",rowGap:4},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:"0 1 auto"},title:e,children:oN(e,t)}),(0,n.jsx)("span",{style:{marginLeft:"auto"},children:x||i("desktop.image")}),c&&(0,n.jsxs)("span",{children:[c.w," \xd7 ",c.h]}),m&&(0,n.jsx)("span",{children:m}),(0,n.jsx)(ug,{filePath:e,sourceSessionId:r})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"auto",background:"var(--bg-panel)",display:"flex",alignItems:"center",justifyContent:"center",padding:16,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:{color:"var(--status-error)",fontSize:13},children:p}):(0,n.jsx)("img",{src:f,alt:e,onLoad:e=>{let t=e.currentTarget;u({w:t.naturalWidth,h:t.naturalHeight})},onError:()=>h(i("desktop.failedToLoadImage")),style:{maxWidth:"100%",maxHeight:"100%",objectFit:"contain",boxShadow:"0 2px 8px rgba(0,0,0,0.15)"}})})]})}function uz({filePath:e,cwd:t,sourceSessionId:r}){let{t:i}=(0,Y.s)(),[s,l]=(0,o.useState)(0),[a,d]=(0,o.useState)(null),[c,u]=(0,o.useState)(null),[p,h]=(0,o.useState)(null),g=(0,o.useRef)(null),x=oL(e).toLowerCase().split(".").pop()??"";(0,o.useEffect)(()=>{l(0),d(null),u(null),h(null),g.current&&(g.current.close(),g.current=null);let t=new EventSource(uh(e,"watch",r));return g.current=t,t.addEventListener("change",e=>{try{let t=JSON.parse(e.data);"number"==typeof t.size&&d(t.size)}catch{}u(null),h(null),l(e=>e+1)}),()=>{t.close(),g.current=null}},[e,r]);let f=uh(e,"read",r,s?{v:s}:void 0);return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{className:"file-viewer-status-bar",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,flexWrap:"wrap",rowGap:4},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:"0 1 auto"},title:e,children:oN(e,t)}),(0,n.jsx)("span",{style:{marginLeft:"auto"},children:x||i("desktop.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:uj(a)}),(0,n.jsx)(ug,{filePath:e,sourceSessionId:r})]}),(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:"var(--status-error)",fontSize:13,marginBottom:12,textAlign:"center"},children:p}),(0,n.jsx)("audio",{controls:!0,preload:"metadata",src:f,onLoadedMetadata:e=>u(e.currentTarget.duration),onError:()=>h(i("desktop.failedToLoadAudio")),style:{width:"100%"}},f)]})})]})}function uT({filePath:e,cwd:t,sourceSessionId:r,initialPage:i}){let{t:s}=(0,Y.s)(),[l,a]=(0,o.useState)(0),[d,c]=(0,o.useState)(null),[u,p]=(0,o.useState)(null),h=(0,o.useRef)(null),g=uc(e),x="pdf"===g,f=x&&i&&i>0?`#page=${i}`:"",m=x?`${uh(e,"read",r,l?{v:l}:void 0)}${f}`:uh(e,"preview",r,l?{v:l}:void 0);return(0,o.useEffect)(()=>{a(0),c(null),p(null),h.current&&(h.current.close(),h.current=null),fetch(uh(e,"meta",r)).then(e=>e.json()).then(e=>{e.error&&p(e.error),"number"==typeof e.size&&(c(e.size),!x&&e.size>0xa00000&&p(s("desktop.docxTooLargeForPreview")))}).catch(e=>p(String(e)));let t=new EventSource(uh(e,"watch",r));return h.current=t,t.addEventListener("change",e=>{try{let t=JSON.parse(e.data);if("number"==typeof t.size&&(c(t.size),!x&&t.size>0xa00000))return void p(s("desktop.docxTooLargeForPreview"))}catch{}p(null),a(e=>e+1)}),()=>{t.close(),h.current=null}},[e,x,r,s]),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{className:"file-viewer-status-bar",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,flexWrap:"wrap",rowGap:4},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:e,children:oN(e,t)}),(0,n.jsx)("span",{style:{marginLeft:"auto"},children:"docx"===g?s("desktop.docxPreview"):"pdf"}),null!=d&&(0,n.jsx)("span",{children:uj(d)}),(0,n.jsx)(ug,{filePath:e,sourceSessionId:r})]}),(0,n.jsx)("div",{style:{flex:1,minHeight:0,background:"var(--bg-panel)"},children:u?(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",padding:24,color:"var(--status-error)",fontSize:13,textAlign:"center"},children:u}):(0,n.jsx)("iframe",{src:m,sandbox:x?void 0:"allow-same-origin",title:s("desktop.previewFile",{file:oL(e)}),style:{width:"100%",height:"100%",border:"none",background:x?"var(--bg)":"#eef1f5"}},m)})]})}function uR({filePath:e,cwd:t,sourceSessionId:r,onOpenFile:o,onAtMention:i,onMentionLines:s,initialDisplayMode:l,initialPage:a,onFileSaved:d}){let c;return null!==(ua[uc(e)]??null)?(0,n.jsx)(uC,{filePath:e,cwd:t,sourceSessionId:r}):null!==(ud[uc(e)]??null)?(0,n.jsx)(uz,{filePath:e,cwd:t,sourceSessionId:r}):null!==("pdf"===(c=uc(e))||"docx"===c?c:null)?(0,n.jsx)(uT,{filePath:e,cwd:t,sourceSessionId:r,initialPage:a}):(0,n.jsx)(uI,{filePath:e,cwd:t,sourceSessionId:r,onOpenFile:o,onAtMention:i,onMentionLines:s,initialDisplayMode:l,onFileSaved:d})}function uI({filePath:e,cwd:t,sourceSessionId:r,onOpenFile:i,onAtMention:s,onMentionLines:l,initialDisplayMode:a,onFileSaved:d}){let c,u,{t:p}=(0,Y.s)(),[h,x]=(0,o.useState)(null),[f,v]=(0,o.useState)(null),[y,b]=(0,o.useState)(null),[k,j]=(0,o.useState)(!0),[w,S]=(0,o.useState)(!1),[C,z]=(0,o.useState)(null),[T,R]=(0,o.useState)(!1),[I,M]=(0,o.useState)("source"),[E,$]=(0,o.useState)(!1),[W,L]=(0,o.useState)(0),[N,A]=(0,o.useState)(null),P=(0,o.useRef)(null),F=(0,o.useRef)(null),[D,H]=(0,o.useState)(!1),[O,B]=(0,o.useState)(""),[U,_]=(0,o.useState)(""),[q,K]=(0,o.useState)(!1),[V,J]=(0,o.useState)(null),[G,X]=(0,o.useState)(!1),Z=(0,o.useRef)(null),Q=(0,o.useRef)(null),ee=(0,o.useRef)(0),et=(0,o.useRef)(!1);(0,o.useEffect)(()=>{et.current=D},[D]);let er=D&&O!==U,en=!!(h?.content&&h.content.includes("\0")),eo=(0,o.useCallback)(async e=>{if(!t)return void b(null);try{let r=new URLSearchParams({cwd:t,path:e}),n=await fetch(`/api/git/diff?${r.toString()}`),o=await n.json();b(n.ok&&o.supported&&"string"==typeof o.patch?o:null)}catch{b(null)}},[t]),ei=(0,o.useCallback)((e,t=!1,n=0)=>fetch(uh(e,"read",r,n?{offset:n}:void 0)).then(e=>e.json()).then(e=>e.error?(z(e.error),null):(t?(x(t=>(t&&v(t.content),e)),L(e=>e+1)):n?x(t=>t?{...e,content:t.content+e.content}:e):x(e),e)).catch(e=>(z(String(e)),null)),[r]);(0,o.useEffect)(()=>{j(!0),z(null),x(null),v(null),b(null),R(!1),M("source"),$(!1),L(0),H(!1),B(""),_(""),J(null),X(!1),K(!1),P.current&&(P.current.close(),P.current=null),ei(e).then(e=>{e?.truncated||e?.language!=="markdown"&&e?.language!=="html"||"diff"===a||R(!0)}).finally(()=>j(!1)),eo(e);let t=new EventSource(uh(e,"watch",r));return P.current=t,t.addEventListener("change",()=>{et.current?X(!0):(ei(e,!0),eo(e))}),()=>{t.close(),P.current=null}},[e,ei,eo,a,r]);let es=(0,o.useCallback)(()=>{h&&!en&&(B(h.content),_(h.content),J(null),X(!1),H(!0))},[h,en]),el=(0,o.useCallback)(()=>{H(!1),B(""),_(""),J(null),X(!1)},[]),ea=(0,o.useCallback)(()=>{(!er||window.confirm(p("files.unsavedChanges")))&&el()},[er,el,p]),ed=(0,o.useCallback)(async()=>{if(!h||q)return;let t=++ee.current;K(!0),J(null);try{let r=await um(e,O);if(t!==ee.current)return;x(e=>e?{...e,content:O,size:r}:e),_(O),K(!1),el(),eo(e),d?.()}catch(e){if(t!==ee.current)return;J(e instanceof Error?e.message:String(e)),K(!1)}},[h,q,O,e,el,eo,d]);(0,o.useEffect)(()=>{if(!D)return;let e=e=>{if((e.metaKey||e.ctrlKey)&&"s"===e.key.toLowerCase()){e.preventDefault(),ed();return}"Escape"===e.key&&(e.preventDefault(),ea())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[D,ed,ea]),(0,o.useEffect)(()=>{if(!er)return;let e=e=>{e.preventDefault(),e.returnValue=""};return window.addEventListener("beforeunload",e),()=>window.removeEventListener("beforeunload",e)},[er]);let ec=(0,o.useCallback)(()=>{let e=Z.current,t=Q.current;e&&t&&(t.scrollTop=e.scrollTop)},[]),eu=(0,o.useCallback)(e=>{if("Tab"!==e.key||e.metaKey||e.ctrlKey||e.altKey)return;e.preventDefault();let t=e.currentTarget,{selectionStart:r,selectionEnd:n}=t;B(t.value.slice(0,r)+" "+t.value.slice(n)),requestAnimationFrame(()=>{let e=Z.current;if(!e)return;let t=r+2;e.selectionStart=t,e.selectionEnd=t})},[]),ep=(0,o.useMemo)(()=>ly(h?.content??""),[h?.content]),eh=y?.supported===!0&&"string"==typeof y.patch;(0,o.useEffect)(()=>{"diff"===a&&eh&&M("diff")},[eh,a]);let eg=eh&&y?.status==="deleted",ex=(0,o.useCallback)(r=>{l&&r&&l(oN(e,t),r.startLine,r.endLine)},[t,e,l]);if((0,o.useEffect)(()=>{let e=()=>{let e=F.current,t="source"===I&&!T;A(l&&t&&e?up(e,window.getSelection()):null)};if(e(),l&&"source"===I&&!T)return document.addEventListener("selectionchange",e),()=>document.removeEventListener("selectionchange",e)},[h?.content,l,T,I]),(0,o.useEffect)(()=>{if(!l||"source"!==I||T)return;let e=e=>{if(e.repeat||"i"!==e.key.toLowerCase()||!e.metaKey&&!e.ctrlKey||e.altKey||e.shiftKey)return;let t=e.target;if(t instanceof Element&&t.closest("input, textarea, [contenteditable='true']"))return;let r=F.current,n=r?up(r,window.getSelection()):null;n&&(e.preventDefault(),ex(n))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[ex,l,T,I]),k)return(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:p("desktop.loadingFile")});if(eg&&!h)return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsx)("div",{style:{padding:"5px 16px",borderBottom:"1px solid var(--border)",color:"var(--text-dim)",fontFamily:"var(--font-mono)",fontSize:11},title:e,children:oN(e,t)}),(0,n.jsx)("div",{style:{flex:1,overflow:"auto",background:"var(--bg)"},children:(0,n.jsx)(uS,{patch:y.patch})})]});if(C)return(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--status-error)",fontSize:13},children:C});if(!h)return null;let ef="html"===h.language,em="markdown"===h.language,ev=(u=(c=o$(e).replace(/\/+$/,"")).lastIndexOf("/"))<0?"":0===u?"/":2===u&&/^[a-zA-Z]:\//.test(c)?c.slice(0,3):c.slice(0,u),ey=h.content.split("\n"),eb=null!==f&&f!==h.content||eh,ek=!eg&&!en&&oF();return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{className:"file-viewer-status-bar",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,flexWrap:"wrap",rowGap:4},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:"0 1 auto"},title:e,children:oN(e,t)}),(0,n.jsx)("span",{style:{marginLeft:"auto"},children:h.language}),"source"===I&&!D&&(0,n.jsx)("span",{children:p("desktop.lines",{count:ey.length})}),(0,n.jsx)("span",{children:uj(h.size)}),eb&&!D&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>M("source"),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:"source"===I?"var(--bg-selected)":"var(--bg-hover)",color:"source"===I?"var(--text)":"var(--text-muted)",fontWeight:"source"===I?600:400},children:p("desktop.source")}),(0,n.jsxs)("button",{onClick:()=>M("diff"),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:"diff"===I?"var(--bg-selected)":"var(--bg-hover)",color:"diff"===I?"var(--text)":"var(--text-muted)",fontWeight:"diff"===I?600:400},children:[p("desktop.diff")," ",W>0&&(0,n.jsxs)("span",{style:{color:"var(--git-status-added)",marginLeft:2},children:["+",W]})]})]}),"source"===I&&!T&&!D&&(0,n.jsx)("button",{onClick:()=>$(e=>!e),title:E?p("desktop.disableWordWrap"):p("desktop.enableWordWrap"),style:{padding:"2px 8px",fontSize:11,cursor:"pointer",background:E?"var(--bg-selected)":"var(--bg-hover)",color:E?"var(--text)":"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5,fontWeight:E?600:400},children:p("desktop.wrap")}),ef&&"source"===I&&!D&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>R(!1),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:T?"var(--bg-hover)":"var(--bg-selected)",color:T?"var(--text-muted)":"var(--text)",fontWeight:T?400:600},children:p("desktop.code")}),(0,n.jsx)("button",{onClick:()=>R(!0),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:T?"var(--bg-selected)":"var(--bg-hover)",color:T?"var(--text)":"var(--text-muted)",fontWeight:T?600:400},children:p("desktop.preview")})]}),em&&"source"===I&&!D&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>R(!0),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:T?"var(--bg-selected)":"var(--bg-hover)",color:T?"var(--text)":"var(--text-muted)",fontWeight:T?600:400},children:p("desktop.preview")}),(0,n.jsx)("button",{onClick:()=>R(!1),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:T?"var(--bg-hover)":"var(--bg-selected)",color:T?"var(--text-muted)":"var(--text)",fontWeight:T?400:600},children:p("desktop.raw")})]}),D?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",onClick:()=>void ed(),disabled:q,title:p("files.saveHint"),"aria-label":p("files.save"),style:{height:20,minWidth:20,padding:"0 5px",display:"inline-flex",alignItems:"center",justifyContent:"center",border:"1px solid var(--border)",borderRadius:4,background:"var(--bg-selected)",color:"var(--text)",cursor:"pointer"},children:(0,n.jsx)(ul.g,{size:13,"aria-hidden":"true"})}),(0,n.jsx)("button",{type:"button",onClick:ea,disabled:q,title:p("files.cancelEdit"),"aria-label":p("files.cancelEdit"),style:{height:20,minWidth:20,padding:"0 5px",display:"inline-flex",alignItems:"center",justifyContent:"center",border:"1px solid var(--border)",borderRadius:4,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer"},children:(0,n.jsx)(g.X,{size:13,"aria-hidden":"true"})})]}):"source"===I&&ek?(0,n.jsx)("button",{type:"button",onClick:es,title:p("files.edit"),"aria-label":p("files.edit"),style:{height:20,minWidth:20,padding:"0 5px",display:"inline-flex",alignItems:"center",justifyContent:"center",border:"1px solid var(--border)",borderRadius:4,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer"},children:(0,n.jsx)(m.I,{size:13,"aria-hidden":"true"})}):null,(s||l)&&!D&&(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.preventDefault(),onClick:()=>{N&&l?ex(N):s?.(oN(e,t),!1)},title:N?p("desktop.mentionSelectedLines",{start:N.startLine,end:N.endLine}):p("desktop.mentionFile"),"aria-label":N?p("desktop.mentionSelectedLines",{start:N.startLine,end:N.endLine}):p("desktop.mentionFile"),style:{height:20,minWidth:20,padding:"0 5px",border:"1px solid var(--border)",borderRadius:4,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer"},children:"@"}),!D&&(0,n.jsx)(ug,{filePath:e,sourceSessionId:r})]}),h?.truncated&&"source"===I&&!D&&(0,n.jsxs)("div",{className:"file-viewer-load-more",style:{display:"flex",alignItems:"center",justifyContent:"center",gap:10,padding:"5px 8px",borderBottom:"1px solid var(--border)",color:"var(--text-dim)",fontSize:11},children:[(0,n.jsxs)("span",{children:[uj(h.nextOffset)," / ",uj(h.size)]}),(0,n.jsx)("button",{type:"button",disabled:w,onClick:()=>{S(!0),ei(e,!1,h.nextOffset).finally(()=>S(!1))},style:{padding:"2px 10px",fontSize:11,cursor:"pointer",border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-hover)",color:"var(--text)",opacity:w?.6:1},children:w?p("i18n.loading"):p("i18n.loadMore")})]}),(0,n.jsx)("div",{ref:F,style:{flex:1,overflow:"auto",background:"var(--bg)"},children:D?(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[G&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"5px 12px",borderBottom:"1px solid var(--border)",background:"rgba(214,168,75,0.14)",color:"#d6a84b",fontSize:11,flexShrink:0},children:[(0,n.jsx)("span",{style:{flex:1},children:p("files.externalModified")}),(0,n.jsx)("button",{type:"button",onClick:()=>{(!er||window.confirm(p("files.reloadOverwriteConfirm")))&&ei(e).then(e=>{e&&(B(e.content),_(e.content),X(!1))})},disabled:q,style:{padding:"2px 8px",fontSize:11,border:"1px solid #d6a84b",borderRadius:4,background:"transparent",color:"#d6a84b",cursor:"pointer"},children:p("files.reload")})]}),V&&(0,n.jsx)("div",{style:{padding:"5px 12px",borderBottom:"1px solid var(--border)",background:"rgba(248,113,113,0.14)",color:"var(--status-error)",fontSize:11,flexShrink:0},children:p("files.saveFailed",{error:V})}),(0,n.jsxs)("div",{style:{flex:1,display:"flex",overflow:"hidden"},children:[(0,n.jsx)("div",{ref:Q,"aria-hidden":"true",style:{...uf,height:"100%",overflow:"hidden",whiteSpace:"pre",pointerEvents:"none"},children:O.split("\n").map((e,t)=>`${t+1}
196
+ ${r}`):i=r;let h=i,g=o?.map(e=>({type:"image",source:{type:"base64",media_type:e.mimeType,data:e.data}})),x={role:"user",content:g?.length?[...r.trim()?[{type:"text",text:r}]:[],...g]:r,timestamp:Date.now()};z(e=>[...e,x]),rS.current=c8(x),rw.current=a;let f="goal"===ez.current&&!l&&s.length>0&&"idle"===eF.current.status;f&&(eM.current=s,eP(e=>({...e,status:"running",goalText:s,turnsUsed:0,noProgressTurns:0,tokensUsed:0})),eO.current=!0),rr.current=!0,q(!0),tf(l?{kind:"running_command"}:{kind:"waiting_model"}),A({type:"start"}),rg.current=!0,tv(!0),rx.current=!0;let m=o?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType})),v=null,y=!1;try{if(p&&n){let e=t6.current??await rk.current,t=e??await rK();if(t){v=t,rq(1,r),ea&&(ta(ea),e&&await tE(t,{type:"set_model",provider:ea.provider,modelId:ea.modelId}));let n=await Promise.race([rX(t).then(()=>!0).catch(()=>!1),c6(4e3).then(()=>!1)]);y=!0,await tE(t,{type:"prompt",message:h,...m?.length?{images:m}:{}}),n||ne(t,a),f&&tE(t,{type:"goal_start",goalText:s}).catch(()=>{})}else throw Error("Unable to create a session for this message")}else if(t){v=t.id;let e=await Promise.race([rX(t.id).then(()=>!0).catch(()=>!1),c6(4e3).then(()=>!1)]);y=!0,await tE(t.id,{type:"prompt",message:h,...m?.length?{images:m}:{}}),e||ne(t.id,a),f&&tE(t.id,{type:"goal_start",goalText:s}).catch(()=>{})}l&&v&&ne(v,a)}catch(t){if(console.error("Failed to send message:",t),y&&v&&!(t instanceof tR&&"prompt_rejected"===t.code&&!1===t.accepted))return void ne(v,a);if(eE.current={sessionKey:"",signature:""},f&&(eM.current=null,eO.current=!1,eP(e=>({...e,status:"idle",goalText:null}))),ro.current=!1,rY(),t instanceof c2){let e=rS.current;e&&z(t=>{let r=t[t.length-1];return r?.role==="user"&&c8(r)===e?t.slice(0,-1):t}),r0({type:"error",message:t.message})}else{let r=rS.current;r&&z(e=>{let t=e[e.length-1];return t?.role==="user"&&c8(t)===r?e.slice(0,-1):e});let n=e.chatInputRef?.current;n?.restoreSubmission?n.restoreSubmission(x):n?.replaceMessage?.(x),r0({type:"error",message:`Failed to send message: ${t instanceof Error?t.message:String(t)}`})}rS.current=null,rr.current=!1,q(!1),tf(null),A({type:"end"})}},[p,n,ea,t,rK,rX,rq,ne,r0,rJ,rY,r$,e.chatInputRef]),nl=(0,o.useCallback)(async(r,n)=>{if(rr.current||ra.current)return;let o=`${n?"!!":"!"}${r}`;ra.current=!0,Y({command:r,excludeFromContext:n}),V(!0);try{let e=t6.current??t?.id??await rK();if(!e)throw Error("Unable to create a session for the shell command");rq(1,o),await tE(e,{type:"bash",command:r,excludeFromContext:n}),await rU(e)}catch(t){console.error("Failed to execute shell command:",t),r0({type:"error",message:t instanceof Error?t.message:String(t)}),e.chatInputRef?.current?.insertIfEmpty(o)}finally{ra.current=!1,Y(null),V(!1)}},[r0,rK,rU,e.chatInputRef,rq,t]),na=(0,o.useCallback)(async()=>{let e=t6.current;if(e)try{await tE(e,{type:ra.current?"abort_bash":"abort"})}catch(e){console.error("Failed to abort:",e)}},[]),nd=(0,o.useCallback)(async e=>{let t=t6.current;if(t){tt(e);try{let{cancelled:r,newSessionId:n}=await tE(t,{type:"fork",entryId:e})??{};!r&&n&&l?.(n)}catch(e){console.error("Fork failed:",e)}finally{tt(null)}}},[l]),nc=(0,o.useCallback)(async e=>{if(ra.current)return!1;let t=t6.current;if(!t)return!1;try{let r=await tE(t,{type:"navigate_tree",targetId:e});if(r?.cancelled||t6.current!==t)return!1;return S(e),await rU(t),t6.current===t}catch(e){return console.error("Failed to navigate:",e),!1}},[rU]),nu=(0,o.useCallback)(async e=>{S(e);let t=t6.current;t&&(await r2(t,e),e&&tE(t,{type:"navigate_tree",targetId:e}).catch(()=>{}))},[r2]),np=(0,o.useCallback)(async(e,t)=>{if(p){let r={provider:e,modelId:t};rI.current=r,ed(r),ta(r),null===rM.current&&t7(cQ(t5.current[`${e}/${t}`])??t3.current);let n=t6.current??await rk.current;if(!n)return;try{await tE(n,{type:"set_model",provider:e,modelId:t})}catch(e){console.error("Failed to set model:",e)}return}let r=t6.current;if(!r)return;let n=++rC.current,o=tr??g?.context.model??null;tn({provider:e,modelId:t});try{let n=await tE(r,{type:"set_model",provider:e,modelId:t});ti({provider:n.provider,modelId:n.id}),await rU(r)}catch(i){console.error("Failed to set model:",i),rC.current===n&&(tn(o&&(o.provider!==e||o.modelId!==t)?o:null),r0({type:"error",message:i instanceof Error?i.message:String(i)})),await rU(r,!1,!0)}},[r0,tr,g?.context.model,p,ed]),nh=(0,o.useCallback)(async()=>{let e=t6.current;if(e&&!td){tc(!0),tp(null),tg(null);try{let t=await tE(e,{type:"compact"});tg(c7(t,"manual")),await rU(e,!0)}catch(e){tp(e instanceof Error?e.message:String(e)),tg(null)}finally{tc(!1)}}},[td,rU]),ng=(0,o.useCallback)(async e=>{let r=++rz.current,o=n??t?.cwd??"",i=o?`/api/models?cwd=${encodeURIComponent(o)}`:"/api/models",s=rT.current;s?.abort();let l=new AbortController;rT.current=l;let a=()=>l.abort();e?.aborted?l.abort():e?.addEventListener("abort",a,{once:!0});try{let e=await fetch(i,{signal:l.signal});if(!e.ok){let t=`HTTP ${e.status}`;try{let r=await e.json();r?.error&&(t=r.error)}catch{}throw Error(t)}let t=await e.json();if(r!==rz.current||h!==rR.current)return;el(null),X(t.models),et(t.thinkingLevels??{}),en(t.thinkingLevelMaps??{}),ei(t.modelScopeWarnings??[]);let n=t.modelList??[];if(Q(n),p&&!t6.current){let e=(t.defaultModel?n.find(e=>e.id===t.defaultModel?.modelId&&e.provider===t.defaultModel?.provider):void 0)??n[0];eu(e?{provider:e.provider,modelId:e.id}:null);let r=e?t.thinkingLevelPins?.[`${e.provider}/${e.id}`]:void 0;null===rM.current&&eU(r??"auto")}}catch(e){if(l.signal.aborted||r!==rz.current||h!==rR.current)return;el(e instanceof Error?e.message:String(e))}finally{e?.removeEventListener("abort",a),rT.current===l&&(rT.current=null)}},[p,h,n,t?.cwd]),nx=(0,o.useCallback)(async e=>{if(!e.startsWith("/"))return{handled:!1};let t=e.match(/^\/([^\s]+)(?:\s+([\s\S]*))?$/);if(!t)return{handled:!1};let[,r,n=""]=t,o=n.trim(),i=t6.current??await rK(),s=e=>(e.handled&&(e.error?r0({type:"error",message:e.error}):"openSessionStats"!==e.action&&r0({type:"success",message:e.message??"Command completed"})),e);try{switch(r){case"compact":{if(!i||td)return s({handled:!0,error:"No active session to compact"});tc(!0),tp(null),tg(null);let e=await tE(i,{type:"compact",...o?{customInstructions:o}:{}});return tg(c7(e,"manual")),await rU(i,!0)&&rq(),s({handled:!0,message:"Compacted context"})}case"auto-compact":{if(!i)return s({handled:!0,error:"No active session"});let e=await tE(i,{type:"get_state"}),t=!(e?.autoCompactionEnabled??!0);return await tE(i,{type:"set_auto_compaction",enabled:t}),eH(t),s({handled:!0,message:t?"Auto-compaction enabled":"Auto-compaction disabled"})}case"reload":if(!i)return s({handled:!0,error:"No active session to reload"});return await tE(i,{type:"reload"}),await Promise.all([rU(i,!1,!0),r_(i),rV(),ng()]),s({handled:!0,message:"Reloaded session resources"});case"name":if(!i)return s({handled:!0,error:"No active session to name"});if(!o)return s({handled:!0,error:"Usage: /name <name>"});return await tE(i,{type:"set_session_name",name:te(o)}),await rU(i)&&rq(),s({handled:!0,message:`Session renamed to ${o}`});case"session":{if(!i)return s({handled:!0,error:"No active session"});let e=await tE(i,{type:"get_session_stats"});return e&&tI(e),u?.(),s({handled:!0,action:"openSessionStats"})}case"copy":{if(!i)return s({handled:!0,error:"No active session"});let e=await tE(i,{type:"get_last_assistant_text"}),t=e?.text??"";if(!t)return s({handled:!0,error:"No assistant message to copy"});return await navigator.clipboard.writeText(t),s({handled:!0,message:"Copied last assistant message"})}case"clone":{if(!i)return s({handled:!0,error:"No active session to clone"});if(rr.current||ra.current)return s({handled:!0,error:"Cannot clone while the session is running"});let e=await tE(i,{type:"clone",leafId:w});if(e?.cancelled||!e?.newSessionId)return s({handled:!0,error:"Cannot clone an empty or unsaved session"});let t=s({handled:!0,message:"Cloned current session branch"});return l?.(e.newSessionId),t}default:return{handled:!1}}}catch(e){return s({handled:!0,error:e instanceof Error?e.message:String(e)})}finally{"compact"===r&&tc(!1)}},[w,r0,rK,td,ng,rU,rV,r_,rq,l,u]),nf=(0,o.useCallback)(async e=>{let t=!1;try{let r=await fetch(`/api/agent/${encodeURIComponent(e)}`);if(r.ok){let e=await r.json(),n=e.state;if(e.running&&n&&(n.isStreaming||n.isPromptRunning||n.isBashRunning||n.isCompacting))return;t=!0}}catch{}t?r3():ne(e)},[ne,r3]),nm=(0,o.useCallback)(async(e,t)=>{let r=t6.current;if(!r)return;let n=t?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType}));rr.current=!0,q(!0),tf(e=>e??{kind:"waiting_model"});try{await tE(r,{type:"steer",message:e,...n?.length?{images:n}:{}})}catch(e){console.error("Failed to steer:",e),nf(r)}},[nf]),nv=(0,o.useCallback)(async(e,t,r)=>{let n=t6.current;if(!n)return;let o=r?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType}));rr.current=!0,q(!0),tf(e=>e??{kind:"waiting_model"});try{await tE(n,{type:"prompt",message:e,streamingBehavior:t,...o?.length?{images:o}:{}})}catch(e){console.error("Failed to queue prompt:",e),nf(n)}},[nf]),ny=(0,o.useCallback)(async(e,t)=>{let r=t6.current;if(!r)return;let n=t?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType}));rr.current=!0,q(!0),tf(e=>e??{kind:"waiting_model"});try{await tE(r,{type:"follow_up",message:e,...n?.length?{images:n}:{}})}catch(e){console.error("Failed to follow up:",e),nf(r)}},[nf]),nb=(0,o.useCallback)(async()=>{let e=t6.current;if(e)try{await tE(e,{type:"abort_compaction"})}catch(e){console.error("Failed to abort compaction:",e)}},[]),nk=(0,o.useCallback)(async()=>{let t=t6.current;if(t)try{let r=await tE(t,{type:"clear_queue"});tO({steering:[],followUp:[]});let n=[...r?.steering??[],...r?.followUp??[]];n.length>0&&e.chatInputRef?.current?.prependText(n.join("\n\n"))}catch(e){console.error("Failed to recall queued messages:",e),r0({type:"error",message:"Failed to recall queued messages"})}},[e.chatInputRef,r0,tO]);(0,o.useEffect)(()=>{0===tB.length&&tK(!1)},[tB.length]);let nj=(0,o.useCallback)(async(e,t,r=!1)=>{let n=t6.current;if(!n)return tB;try{let o=await tE(n,{type:"resolve_recovery",keep:e,discard:t,continueRun:r}),i=o?.remaining??[];return t_(i),r&&e.length>0&&(async()=>{try{let e=await fetch(`/api/agent/${encodeURIComponent(n)}`);if(!e.ok)return;let t=await e.json(),r=t.state;if(!t.running||!r||!r.isStreaming&&!r.isPromptRunning)return;rn.current=!!r.isStreaming,ro.current=!!r.isPromptRunning,rr.current=!0,q(!0),tf(cG(r)),A({type:"start"}),rG(n),!r.isStreaming&&r.isPromptRunning&&ne(n)}catch{}})(),i}catch(e){return console.error("Failed to resolve queued message recovery:",e),r0({type:"error",message:"Failed to resolve queued message recovery"}),tB}},[tB,r0,rG,ne,t_]),nw=(0,o.useCallback)(async()=>{let e=t6.current;if(!e)return null;try{return await tE(e,{type:"export_queue"})}catch(e){return console.error("Failed to export queue:",e),r0({type:"error",message:"Failed to export queue"}),null}},[r0]),nS=(0,o.useCallback)(async e=>{let t=t6.current;if(!t)return null;try{let r=await tE(t,{type:"import_queue",entries:e});return r&&tO(cZ(r)),r?.imported??0}catch(e){return console.error("Failed to import queue:",e),r0({type:"error",message:"Failed to import queue"}),null}},[r0,tO]),nC=(0,o.useCallback)(async e=>{let t=t6.current;if(!t)return null;try{let r=await tE(t,{type:"stage_recovery",entries:e});return r?.pendingRecovery&&t_(r.pendingRecovery),(r?.staged??0)>0&&tK(!0),r?.staged??0}catch(e){return console.error("Failed to stage imported queue:",e),r0({type:"error",message:"Failed to stage imported queue"}),null}},[r0,t_]),nz=(0,o.useCallback)(async(e,t,r)=>{let n=t6.current;if(!n)return!1;try{let o=await tE(n,{type:"move_queue",kind:e,fromIndex:t,toIndex:r});return o&&tO(cZ(o)),!0}catch(e){return console.error("Failed to move queued message:",e),r0({type:"error",message:e instanceof Error?e.message:"Failed to move queued message"}),!1}},[r0,tO]),nT=(0,o.useCallback)(async(e,t)=>{let r=t6.current;if(!r)return null;try{let n=await tE(r,{type:"recall_queue_item",kind:e,index:t});return n&&(void 0!==n.steering||void 0!==n.followUp)&&tO(cZ(n)),n?.entry?{text:n.entry.text,images:n.entry.images?.map(({data:e,mimeType:t})=>({data:e,mimeType:t}))}:null}catch(e){return console.error("Failed to recall queued message:",e),r0({type:"error",message:e instanceof Error?e.message:"Failed to recall queued message"}),null}},[r0,tO]),nR=(0,o.useCallback)(async(e,t,r,n)=>{let o=t6.current;if(!o)return!1;try{let i=await tE(o,{type:"requeue_at",kind:e,index:t,text:r,images:n?.map(({data:e,mimeType:t})=>({type:"image",data:e,mimeType:t}))});return i&&tO(cZ(i)),!0}catch(e){return console.error("Failed to requeue message:",e),r0({type:"error",message:e instanceof Error?e.message:"Failed to requeue message"}),!1}},[r0,tO]),nI=(0,o.useCallback)(async(e,t)=>{let r=t6.current;if(!r)return!1;try{let n=await tE(r,{type:"remove_queue_item",kind:e,index:t});return n&&tO(cZ(n)),!0}catch(e){return console.error("Failed to remove queued message:",e),r0({type:"error",message:e instanceof Error?e.message:"Failed to remove queued message"}),!1}},[r0,tO]),nM=(0,o.useCallback)(async e=>{if("auto"===e){rM.current=null,eU(e);return}rM.current=e,eU(e);let t=t6.current??await rk.current;if(t)try{await tE(t,{type:"set_thinking_level",level:e}),t4.current&&t6.current===t&&eq(e)}catch(e){console.error("Failed to set thinking level:",e)}},[]),nE=(0,o.useCallback)(async e=>{let t=(0,cB.xG)(e);!function(e,t=function(){try{return window.localStorage}catch{return null}}()){if(t)try{t.setItem("pi-tool-preset",e)}catch{}}(e),rL(e);let r=t6.current??await rk.current;if(!r){rt.current=void 0!==t;return}try{let e=await tE(r,{type:"set_tools",...void 0!==t?{toolNames:t}:{}});rt.current=void 0!==t;let n=e?.sessionId??r;(n!==r||e?.recreated)&&(rJ(),rY(),t6.current=n),tj([]),tA([]),tF([]);let[o]=await Promise.all([tE(n,{type:"get_state"}),r_(n)]);t4.current&&t6.current===n&&(eX(o.systemPrompt??""),ts(o))}catch(e){console.error("Failed to set tools:",e)}},[rJ,rY,r_,rL,ts]),n$=(0,o.useRef)(0),nW=(0,o.useCallback)(async e=>{let t=t6.current??await rk.current,r=++n$.current;if("plan"===e){if(eg.current="plan"===ep||"configured"===ep?"default":ep,t)try{await tE(t,{type:"prompt",message:"/plan"})}catch(e){if(n$.current!==r)return;console.error("Failed to enter plan mode:",e)}return}if(t){try{if(await tE(t,{type:"prompt",message:"/plan exit"}),n$.current!==r)return}catch(e){if(n$.current!==r)return;console.error("Failed to exit plan mode:",e)}if(n$.current!==r)return;try{await tE(t,{type:"set_tools",toolNames:(0,cB.xG)(eg.current)})}catch(e){console.error("Failed to restore tools after plan exit:",e)}}},[ep]),nL=(0,o.useCallback)(e=>{e$.current=e,em(e);let t=t6.current;if(!t){ev.current=e;return}ev.current=null,fetch(`/api/modes?session=${encodeURIComponent(t)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).catch(e=>{console.error("Failed to persist mode settings:",e)})},[]),nN=(0,o.useCallback)(e=>{let t=e2(e),r="plan"===ez.current;if(nL({...e$.current,collaborationMode:t}),ez.current=t,eE.current={sessionKey:"",signature:""},"goal"!==t){eM.current=null,eO.current=!1,eP(e=>"idle"===e.status?e:{...e,status:"idle",goalText:null});let e=t6.current;e&&tE(e,{type:"goal_stop"}).catch(()=>{})}return"plan"!==t||r?"plan"!==t&&r?nW("normal"):Promise.resolve():nW("plan")},[nL,nW]),nA=(0,o.useCallback)(async e=>{nL({...e$.current,tokenMode:e6(e)});let t=t6.current??await rk.current;if(t)try{if("economy"!==e||ex.current){if("economy"!==e){let e=ex.current?cB.SC:(0,cB.xG)("plan"===ep?"default":ep);await tE(t,{type:"set_tools",toolNames:e})}}else await tE(t,{type:"set_tools",toolNames:[...e5]})}catch(e){console.error("Failed to apply token mode tools:",e)}},[nL,ep]),nP=(0,o.useCallback)(async e=>{nL({...e$.current,toolApprovalMode:e4(e)});let t=t6.current??await rk.current;if(t)try{await tE(t,{type:"set_approval_mode",mode:e4(e)})}catch(e){console.error("Failed to apply approval mode:",e)}},[nL]),nF=(0,o.useCallback)(async e=>{nL({...e$.current,permissionRules:e});let t=t6.current??await rk.current;if(t)try{await tE(t,{type:"set_approval_policy",policy:e})}catch(e){console.error("Failed to apply permission rules:",e)}},[nL]),nD=(0,o.useCallback)(async(e,t,r,n)=>{let o=t6.current;if(o){if("always"===n){let r=eN.current.find(t=>t.id===e);if(r){let e=aD(r.toolName,r.args),n=e?`${r.toolName}(${e})`:r.toolName,o=e$.current.permissionRules;(t?o.allow:o.deny).includes(n)||nF(t?{...o,allow:[...o.allow,n]}:{...o,deny:[...o.deny,n]})}}try{await tE(o,{type:"resolve_approval",id:e,approve:t,reason:r})}catch(e){console.error("Failed to resolve approval:",e)}finally{eL(t=>t.filter(t=>t.id!==e))}}},[nF]),nH=(0,o.useCallback)(e=>{eM.current=e},[]),nO=(0,o.useCallback)(e=>{let t=e.trim();if(!t)return;eM.current=t,eP(e=>({...e,status:"running",goalText:t,turnsUsed:0,noProgressTurns:0,tokensUsed:0,startedAt:Date.now()}));let r=t6.current;r&&tE(r,{type:"goal_start",goalText:t}).catch(()=>{})},[]),nB=(0,o.useCallback)(()=>{if("running"!==eF.current.status)return;eP(e=>({...e,status:"paused"}));let e=t6.current;e&&tE(e,{type:"goal_pause"}).catch(()=>{})},[]),nU=(0,o.useCallback)(()=>{let e=eF.current;if("paused"!==e.status&&"blocked"!==e.status)return;eP(e=>({...e,status:"running"}));let t=t6.current;t&&tE(t,{type:"goal_resume"}).catch(()=>{})},[]),n_=(0,o.useCallback)(()=>{eO.current=!1,eM.current=null,eP(e=>({...e,status:"idle",goalText:null,turnsUsed:0,noProgressTurns:0}));let e=t6.current;e&&tE(e,{type:"goal_stop"}).catch(()=>{})},[]),nq=(0,o.useCallback)(e=>{let t=e.trim();if(!t)return;eP(e=>({...e,goalText:t}));let r=t6.current;r&&tE(r,{type:"goal_edit",goalText:t}).catch(()=>{})},[]),nK=(0,o.useCallback)(()=>{let e=rb.current,t=rh.current;if(!e||!t)return;let r=t.getBoundingClientRect().top-e.getBoundingClientRect().top+e.scrollTop,n=Math.max(0,e.scrollHeight-e.clientHeight),o=Math.min(Math.max(0,r-16),n);rf.current=o>=n-150,rv.current=Date.now()+700,e.scrollTo({top:o,behavior:"smooth"})},[]),nV=(0,o.useCallback)(e=>{if(e instanceof KeyboardEvent){if(!c1.has(e.key)||e.target instanceof Element&&e.target.closest("input, textarea, [contenteditable='true']"))return}else if(e instanceof PointerEvent){let t=rb.current;if(t&&e.target instanceof Element&&!t.contains(e.target))return}rm.current=Date.now()+1200},[]),nJ=(0,o.useCallback)(()=>{let e=rb.current;if(e){let{scrollTop:t,clientHeight:r,scrollHeight:n}=e,o=rr.current,i=rf.current,s=function(e,t,r,n,o,i=96){return!!cJ(r,n,o)||!(r<t)&&(!!(!e&&r>t&&cJ(r,n,o,i))||e)}(i,t9.current,t,r,n,o?96:8);rf.current=s,t9.current=t;let l=function(e,t,r,n=8){return!(r<=t)&&!cJ(e,t,r,n)}(t,r,n);tb(e=>e===l?e:l),!i&&s&&o&&no("auto")}if(Date.now()<rm.current){rx.current=!1;return}Date.now()<rv.current||(rx.current=!1)},[]);(0,o.useEffect)(()=>{if(rs.current=!0,t){var e;let r;t6.current=t.id;let n=(e=t.id,(r=cq().get(e))?Date.now()-r.savedAt>6e5?(cq().delete(e),null):(cq().delete(e),cq().set(e,r),r):null);n&&(x({sessionId:t.id,filePath:"",leafId:n.leafId,context:{messages:n.messages,entryIds:n.entryIds,oldestEntryId:n.oldestEntryId,hasMore:n.hasMore,thinkingLevel:n.thinkingLevel,model:n.model},stats:n.stats,...void 0!==n.totalActiveMs?{totalActiveMs:n.totalActiveMs}:{}}),S(n.leafId),z(n.messages),M(n.entryIds),$(n.oldestEntryId),L(n.hasMore),j(null),b(!1));let o=eR.current,i=eI.current;("auto"!==o||i.allow.length||i.ask.length||i.deny.length)&&(tE(t.id,{type:"set_approval_mode",mode:o}).catch(()=>{}),tE(t.id,{type:"set_approval_policy",policy:i}).catch(()=>{}));let s=e=>{!rc.current&&(rc.current=!0,e.isBashRunning&&(ra.current=!0,V(!0),nt(t.id)),r_(t.id),(e.isStreaming||e.isPromptRunning)&&(rn.current=!!e.isStreaming,ro.current=!!e.isPromptRunning,rr.current=!0,q(!0),tf(cG(e)),A({type:"resume"}),rG(t.id),!e.isStreaming&&e.isPromptRunning&&ne(t.id)))};(async()=>{try{let e,r=new AbortController,n=setTimeout(()=>r.abort(),2e4);try{e=await fetch(`/api/sessions/${encodeURIComponent(t.id)}/state`,{signal:r.signal})}finally{clearTimeout(n)}if(!e.ok)throw Error(`HTTP ${e.status}`);let o=await e.json();if(!rs.current||t6.current!==t.id)return;o.running&&o.state&&s(o.state)}catch{}})(),rU(t.id,!n,!0,{force:!0}).then(e=>{e?.running&&e.state&&s(e.state),e?.state&&(void 0!==e.state.isCompacting&&tc(e.state.isCompacting),void 0!==e.state.contextUsage&&eY(e.state.contextUsage??null),void 0!==e.state.systemPrompt&&eX(e.state.systemPrompt??null),void 0!==e.state.extensionStatuses&&tA(e.state.extensionStatuses??[]),void 0!==e.state.extensionWidgets&&tF(e.state.extensionWidgets??[]),void 0!==e.state.queuedMessages&&tO(cZ(e.state.queuedMessages)),void 0!==e.state.pendingRecovery&&t_(e.state.pendingRecovery??[])),e?.running||(async()=>{for(let e=0;e<5;e++){if(e>0&&await new Promise(e=>setTimeout(e,2e3)),!rs.current||t6.current!==t.id||rr.current)return;try{let e=await fetch(`/api/agent/${encodeURIComponent(t.id)}`);if(!e.ok)continue;let r=await e.json();if(!rs.current||t6.current!==t.id)return;if(r?.running&&r.state)return void s(r.state)}catch{}}})()})}return()=>{rs.current=!1,f.current?.abort(),v.current?.abort(),r$(),tY(),rd.current+=1,rJ(),rY()}},[r$]),(0,o.useEffect)(()=>{c?.(eG)},[eG,c]),(0,o.useEffect)(()=>{d&&d(g?.tree??[],w,nu)},[g?.tree,w,nu,d]),(0,o.useEffect)(()=>(window.addEventListener("keydown",nV),window.addEventListener("pointerdown",nV,{passive:!0}),()=>{window.removeEventListener("keydown",nV),window.removeEventListener("pointerdown",nV)}),[nV]),(0,o.useEffect)(()=>{let e=rb.current;if(e)return e.addEventListener("wheel",nV,{passive:!0}),e.addEventListener("touchstart",nV,{passive:!0}),e.addEventListener("scroll",nJ,{passive:!0}),()=>{e.removeEventListener("wheel",nV),e.removeEventListener("touchstart",nV),e.removeEventListener("scroll",nJ)}},[C.length,y,nJ,nV]),(0,o.useEffect)(()=>{C.length>0&&(rg.current?(rp.current=!0,rh.current&&(rg.current=!1,nK())):y||!rp.current?(y||(rp.current=!0),no("instant")):!rr.current&&(rx.current||rf.current)&&(no("smooth"),nX(e=>e+1)))},[C.length,y,_,no,nK]);let nY=(0,o.useRef)(null),[nG,nX]=(0,o.useState)(0),nZ=`${t?.id??null}#${nG}`;(0,o.useEffect)(()=>{let e;if(y){nY.current=null;return}if(0===C.length||nY.current===nZ)return;nY.current=nZ;let t=!1,r=!1,n=-1,o=0,i=Date.now(),s=()=>{if(t||r)return;let l=rb.current;if(l){if(Date.now()<rm.current){let{scrollTop:e,clientHeight:t,scrollHeight:n}=l;if(e+t<n-150){r=!0;return}}if(no("instant"),l.scrollHeight===n){if((o+=1)>=4||Date.now()-i>=3e4)return}else if(n=l.scrollHeight,o=0,Date.now()-i>=3e4)return;e=window.setTimeout(s,o>0?500:250)}};return e=window.setTimeout(s,250),()=>{t=!0,void 0!==e&&window.clearTimeout(e)}},[y,no,nZ]),(0,o.useEffect)(()=>{let e=new AbortController;return ng(e.signal).catch(e=>{if(e instanceof DOMException&&"AbortError"===e.name)return}),()=>e.abort()},[ng,a]),(0,o.useEffect)(()=>{if(!es)return;let e=()=>{"visible"===document.visibilityState&&ng()};return document.addEventListener("visibilitychange",e),window.addEventListener("online",e),()=>{document.removeEventListener("visibilitychange",e),window.removeEventListener("online",e)}},[es,ng]),(0,o.useEffect)(()=>{if(!tu)return;let e=setTimeout(()=>tp(null),3e3);return()=>clearTimeout(e)},[tu]),(0,o.useEffect)(()=>{if(!th)return;let e=setTimeout(()=>tg(null),6e3);return()=>clearTimeout(e)},[th]),(0,o.useEffect)(()=>{if(0===tC.visible.length)return;let e=tC.visible.find(e=>e.exiting);if(e){let t=setTimeout(()=>{tz({type:"remove",id:e.id})},180);return()=>clearTimeout(t)}if(!tC.visible[0])return;let t=setTimeout(()=>{tz({type:"mark_oldest_exiting"})},5e3);return()=>clearTimeout(t)},[tC.visible]),(0,o.useEffect)(()=>{tI(null)},[C.length,eJ?.tokens,eJ?.percent,eJ?.contextWindow]);let nQ=g?.tree??[];return{isAutoThinkingSelection:p&&null===rH,data:g,loading:y,error:k,activeLeafId:w,messages:C,activeToolResults:T,entryIds:I,historyCursor:E,hasEarlierMessages:W,streamState:N,agentRunning:_,bashRunning:K,pendingBash:J,modelNames:G,modelList:Z,modelThinkingLevels:ee,modelThinkingLevelMaps:er,modelScopeWarnings:eo,modelsError:es,newSessionModel:ea,toolPreset:ep,thinkingLevel:rO??eB,retryInfo:eK,contextUsage:eJ,systemPrompt:eG,forkingEntryId:eZ,isCompacting:td,compactError:tu,compactResult:th,currentModel:rP,displayModel:rF,sessionStats:rB,tokenRate:F,planMode:eC,collaborationMode:ek,tokenMode:ej,toolApprovalMode:ew,permissionRules:eS,modeSettings:ef,approvalRequests:eW,handleCollaborationModeChange:nN,handleTokenModeChange:nA,handleToolApprovalModeChange:nP,handlePermissionRulesChange:nF,resolveApproval:nD,setActiveGoalText:nH,goalState:eA,handleGoalStart:nO,handleGoalPause:nB,handleGoalResume:nU,handleGoalStop:n_,handleGoalEdit:nq,slashCommands:tk,slashCommandsLoading:tw,queuedMessages:tD,pendingRecovery:tB,recoveryIsImport:tq,notices:tC.visible,extensionDialog:tM,extensionCustomUi:tW,extensionStatuses:tN,extensionWidgets:tP,respondToExtensionUi:rZ,sendExtensionCustomInput:rQ,agentPhase:tx,isNew:p,promptAnchorActive:tm,branchTree:nQ,autoCompactionEnabled:eD,sessionIdRef:t6,eventSourceRef:tG,messagesEndRef:ry,scrollContainerRef:rb,lastUserMsgRef:rh,pendingScrollToUserRef:rg,initialScrollDoneRef:rp,scrollUserMsgToTop:nK,handleSend:ns,executeBash:nl,handleAbort:na,handleFork:nd,handleNavigate:nc,handleModelChange:np,handleCompact:nh,handleSteer:nm,handleFollowUp:ny,handlePromptWithStreamingBehavior:nv,handleAbortCompaction:nb,handleRecallQueue:nk,resolveRecovery:nj,exportQueueData:nw,importQueueData:nS,stageQueueImport:nC,moveQueuedMessage:nz,recallQueuedMessage:nT,requeueAt:nR,removeQueuedMessage:nI,handleBuiltinSlashCommand:nx,handleToolPresetChange:nE,handleThinkingLevelChange:nM,loadTools:r_,loadSlashCommands:rV,reloadModels:ng,setActiveLeafId:S,setData:x,setMessages:z,loadContext:r2,dispatch:A,setAgentRunning:q,setForkingEntryId:tt,handleLeafChange:nu,handleAgentEventRef:ru}}({session:e,newSessionCwd:t,onAgentEnd:N,onSessionCreated:s,onSessionForked:l,modelsRefreshKey:d,chatInputRef:c,onBranchDataChange:u,onSystemPromptChange:p,onSessionStatsPanelOpen:g}),[tz,tT]=(0,o.useState)(!1);(0,o.useEffect)(()=>{0===em.length&&tT(!1)},[em.length]);let tI=(0,o.useMemo)(()=>{let e=O.findLast(e=>"assistant"===e.role&&!!e.usage);if(!e?.usage)return null;let t=e.usage;return{model:e.model??"",input:t.input??0,output:t.output??0,cacheRead:t.cacheRead??0,costCNY:ar(e.model)?an(e.model,t):0,costUSD:ar(e.model)?0:t.cost?.total??0}},[O]),[tM,t$]=(0,o.useState)(!1),[tW,tL]=(0,o.useState)(null),tN=(0,o.useRef)(!1);(0,o.useEffect)(()=>{if(!td){tN.current=!1;return}if(q){tN.current=!0;return}tN.current&&(tN.current=!1,tL(function(e){for(let t=e.length-1;t>=0;t--){let r=e[t];if("assistant"!==r.role)continue;let n=r.content;if("string"==typeof n&&n.trim())return n;if(Array.isArray(n)){let e=n.filter(e=>"text"===e.type).map(e=>e.text??"").join("\n").trim();if(e)return e}}for(let t=e.length-1;t>=0;t--){let r=e[t];if("toolResult"!==r.role)continue;let n=r.content,o="string"==typeof n?n:Array.isArray(n)?n.map(e=>e.text??"").join("\n"):"";if(!o)continue;let i=o.match(/\*\*Proposed Plan\*\*\s*\n+([\s\S]+)/i);if(i?.[1]?.trim())return i[1].trim()}return null}(O)??null),t$(!0))},[q,td,O]);let tA=(0,o.useCallback)(()=>{t$(!1);let e=tP.current;e&&th("plan"===tc?"normal":tc).catch(e=>{console.error("Failed to leave plan mode before executing:",e)}).then(()=>{eF(E("tasks.planReviewExecutePrompt",{plan:e}))})},[th,eF,E,tc]),tP=(0,o.useRef)(null);(0,o.useEffect)(()=>{tP.current=tW},[tW]);let tF=(0,o.useCallback)(e=>{t$(!1),eF(e)},[eF]),tD=(0,o.useCallback)(()=>{t$(!1),th("plan"===tc?"normal":tc)},[th,tc]);(0,o.useEffect)(()=>{eb&&L.current!==eb.id&&(L.current=eb.id,W.current&&$.current())},[eb]),(0,o.useEffect)(()=>(a=q||K?eH:null,()=>void(a=null)),[q,K,eH]);let[tH,tO]=(0,o.useState)(!1),[tB,tU]=(0,o.useState)(!1),[t_,tq]=(0,o.useState)(!1),tK=(0,o.useCallback)(()=>{let e=eW.current;if(!e)return;let t=e.scrollHeight-e.scrollTop-e.clientHeight;tO(e.scrollTop>1),tU(t>1),tq(t>240)},[eW]),tV=(0,o.useCallback)(()=>{window.requestAnimationFrame(()=>{let e=eW.current,t=e$.current;if(!e||!t)return;let r=Math.max(88,c?.current?.measureHeight?.()??0),n=()=>{if(!e||!t)return;let n=Math.max(0,t.getBoundingClientRect().top-e.getBoundingClientRect().top+e.scrollTop-96-e.clientHeight+r);e.scrollTo({top:n,behavior:"auto"})};n(),tK(),window.setTimeout(n,200)})},[e$,eW,tK,c]);(0,o.useEffect)(()=>{let e=eW.current;if(!e)return;let t=new ResizeObserver(tK);return t.observe(e),e.firstElementChild&&t.observe(e.firstElementChild),e.addEventListener("scroll",tK,{passive:!0}),tK(),()=>{e.removeEventListener("scroll",tK),t.disconnect()}},[O.length,eW,tK]);let tJ=(0,o.useRef)(!1);(0,o.useEffect)(()=>{let t=eW.current;if(!t)return;let r=()=>{if(tJ.current||!tS||!tw||t.scrollTop>8)return;let r=e?.id;if(!r)return;tJ.current=!0;let n=t.scrollHeight-t.scrollTop;tC(r,eI,tw).finally(()=>{tJ.current=!1,requestAnimationFrame(()=>{let e=t.scrollHeight-n;Math.abs(t.scrollTop-e)>1&&t.scrollTo({top:e,behavior:"auto"})})})};return t.addEventListener("scroll",r,{passive:!0}),()=>t.removeEventListener("scroll",r)},[eW,tw,tS,tC,e?.id,eI]);let tY=(0,o.useRef)(!1);(0,o.useEffect)(()=>{if(!tS||!tw)return;let t=eW.current,r=e?.id;if(!t||!r||tJ.current||tY.current||D||t.scrollTop>8||t.scrollHeight>t.clientHeight+50)return;tY.current=!0;let n=t.scrollHeight-t.scrollTop;tC(r,eI,tw).finally(()=>{tY.current=!1,requestAnimationFrame(()=>{let e=t.scrollHeight-n;Math.abs(t.scrollTop-e)>1&&t.scrollTo({top:e,behavior:"auto"})})})},[eW,tw,tS,tC,e?.id,eI,D,O.length]);let tG=(0,o.useRef)(null),tX=(0,o.useRef)([]),tZ=(0,o.useRef)(new Map),tQ=(0,o.useRef)(null),[t0,t1]=(0,o.useState)(0);(0,o.useEffect)(()=>{let e=tQ.current;if(!e)return void t1(e=>0===e?e:0);let t=()=>{let t=Math.round(e.getBoundingClientRect().height);t1(e=>e===t?e:t)};t();let r=new ResizeObserver(t);return r.observe(e),()=>r.disconnect()},[D,H]);let t2=(0,o.useMemo)(()=>({getOffsetForIndex:e=>tG.current?.getOffsetForIndex(e)?.[0]??0,sizeFor:e=>{let t=tG.current;if(!t)return 0;let r=t.measurementsCache[e];return r?.size??t.options.estimateSize?.(e)??0},totalHeight:()=>tG.current?.getTotalSize()??0,refToItemIndex:e=>tX.current[e],itemCount:tX.current.length}),[]),t6=ep?[ep.sessionId,ep.sessionFile??"",ep.sessionName??"",ep.userMessages,ep.assistantMessages,ep.toolCalls,ep.toolResults,ep.totalMessages,ep.tokens.input,ep.tokens.output,ep.tokens.cacheRead,ep.tokens.cacheWrite,ep.tokens.total,ep.cost??0,ep.totalActiveMs??0].join("|"):null,t4=(0,o.useRef)(ep);t4.current=ep,(0,o.useEffect)(()=>{h?.(t4.current)},[t6,h]),(0,o.useEffect)(()=>()=>{h?.(null)},[h]);let t5=es?`${es.percent??"null"}|${es.contextWindow}|${es.tokens??"null"}`:null,t3=(0,o.useRef)(es);t3.current=es,(0,o.useEffect)(()=>{x?.(t3.current)},[t5,x]),(0,o.useEffect)(()=>()=>{x?.(null)},[x]);let{isDragOver:t8,handleDragEnter:t7,handleDragOver:t9,handleDragLeave:re,handleDrop:rt}=function(e){let[t,r]=(0,o.useState)(!1),n=(0,o.useRef)(0),i=(0,o.useCallback)(e=>{e.dataTransfer.files.length&&(e.preventDefault(),n.current+=1,r(!0))},[]),s=(0,o.useCallback)(e=>{e.dataTransfer.files.length&&e.preventDefault()},[]);return{isDragOver:t,handleDragEnter:i,handleDragOver:s,handleDragLeave:(0,o.useCallback)(()=>{n.current-=1,n.current<=0&&(n.current=0,r(!1))},[]),handleDrop:(0,o.useCallback)(t=>{t.preventDefault(),n.current=0,r(!1),e(Array.from(t.dataTransfer.files),t.dataTransfer)},[e])}}((0,o.useCallback)((e,t)=>{if(q){let t=e.filter(e=>e.type.startsWith("image/"));t.length&&c?.current?.addImages(t);return}c?.current?.addFiles(e,t)},[q,c])),rr=O.filter(e=>"user"===e.role||"assistant"===e.role||si(e));(0,o.useMemo)(()=>{let e=new Map(B);for(let t of O)"toolResult"===t.role&&e.set(t.toolCallId,t);return e},[B,O]);let rn=(0,o.useMemo)(()=>{let e=new Set,t=[];for(let n=O.length-1;n>=0&&t.length<50;n-=1){var r;let o="user"!==(r=O[n]).role?null:("string"==typeof r.content?r.content:r.content.filter(e=>"text"===e.type).map(e=>e.text).join("\n")).trim()||null;!o||e.has(o)||(e.add(o),t.push(o))}return t},[O]),ro=(S=rr.length,(C=(0,o.useRef)([])).current.length!==S&&(C.current=Array.from({length:S},(e,t)=>C.current[t]??null)),C),ri=eT&&0===O.length&&!_.isStreaming&&!q,rs=e?.cwd??t??void 0;!function(e,t=!0){(0,o.useEffect)(()=>{if(!t)return;let r=null,n=null,o=!1,i=null,s=()=>{null!==i&&(clearTimeout(i),i=null)},l=()=>{r&&(s(),r.classList.add("scrollbar-visible"))},a=()=>{r&&(s(),i=setTimeout(()=>{i=null,r?.classList.remove("scrollbar-visible")},500))},d=()=>{l(),a()},c=()=>{if(!o){if(!(r=e.current)){n=requestAnimationFrame(c);return}r.addEventListener("pointerenter",l),r.addEventListener("pointerleave",a),r.addEventListener("scroll",d)}};return c(),()=>{o=!0,null!==n&&cancelAnimationFrame(n),r?.removeEventListener("pointerenter",l),r?.removeEventListener("pointerleave",a),r?.removeEventListener("scroll",d),s(),r?.classList.remove("scrollbar-visible")}},[t,e])}(eW,!!e?.id||!ri);let rl=(0,o.useMemo)(()=>sN(O,U,rs,B),[O,U,rs,B]),ra=eu?X[`${eu.provider}:${eu.modelId}`]??null:null,rd=eu?Z[`${eu.provider}:${eu.modelId}`]??null:null,rc=(0,o.useCallback)(()=>{et()},[et]),ru=(0,o.useCallback)(e=>{th(e)},[th]),rp=e?.relation?.kind==="subagent"?(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",gap:8,padding:"14px 16px",borderTop:"1px solid var(--border)",color:"var(--text-dim)",fontSize:12},children:[(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("rect",{x:"3",y:"11",width:"18",height:"10",rx:"2"}),(0,n.jsx)("circle",{cx:"12",cy:"5",r:"2"}),(0,n.jsx)("path",{d:"M12 7v4"})]}),E("subagent.readOnlyNotice")]}):(0,n.jsx)(cv,{ref:c,onSend:eF,onBash:eD,tasksBoardEnabled:b,onAbort:eH,onSteer:q?eq:void 0,onFollowUp:q?eK:void 0,onPromptWithStreamingBehavior:q?eV:void 0,isStreaming:q,model:eu,modelNames:J,modelList:G,modelScopeWarnings:Q,modelsError:ee,onRetryModels:rc,onModelChange:eU,compactResult:ec,toolPreset:er,onToolPresetChange:e||eT?ts:void 0,collaborationMode:tc,toolApprovalMode:tu,onCollaborationModeChange:ru,onToolApprovalModeChange:tg,goalState:tm,onGoalStart:tv,onGoalPause:ty,onGoalResume:tb,onGoalStop:tk,thinkingLevel:en,isAutoThinkingSelection:eo,onThinkingLevelChange:e||eT?tl:void 0,availableThinkingLevels:ra,thinkingLevelMap:rd,retryInfo:ei,queuedMessages:ef,inputHistory:rn,onRecallQueue:eY,onMoveQueue:tt,onRecallOne:tr,onRequeueAt:tn,onRemoveQueueItem:to,slashCommands:eg,slashCommandsLoading:ex,onLoadSlashCommands:ta,onBuiltinCommand:ti,onAudioUnlock:I,draftKey:e?.id??(t?`new:${t}`:void 0),cwd:e?.cwd??t,topCenterControl:t_?(0,n.jsx)("button",{type:"button",className:"chat-input-top-center",onClick:tV,title:E("desktop.scrollToBottom"),"aria-label":E("desktop.scrollToBottom"),children:(0,n.jsx)(l5.Z,{size:16,weight:"bold","aria-hidden":"true"})}):void 0}),rh=ew.filter(e=>"belowEditor"!==e.placement),rg=ew.filter(e=>"belowEditor"===e.placement),rx=ea?E("desktop.compacting"):function(e,t){if(e?.kind==="running_tools"){let r=e.tools.map(e=>e.name);return 0===r.length?t("desktop.runningTool"):t("desktop.runningTools",{tools:r.length<=3?r.join(", "):`${r.slice(0,2).join(", ")} (+${r.length-2})`})}return e?.kind==="waiting_model"?t("desktop.waitingForModel"):e?.kind==="running_command"?t("desktop.runningCommand"):null}(ez,E);return D?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-text-muted",children:E("desktop.loadingSession")}):H?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-red-400",children:H}):(0,n.jsxs)("div",{className:"relative flex h-full min-w-0 flex-col overflow-hidden",onDragEnter:t7,onDragOver:t9,onDragLeave:re,onDrop:rt,children:[t8&&(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"})]})]})]}),eb&&(0,n.jsx)(ui,{request:eb,onRespond:eS}),ek&&(0,n.jsx)(us,{request:ek,onInput:eC}),!eT&&em.length>0&&!tz&&(0,n.jsx)(ck,{items:em,sessionId:e?.id,onResolve:eG,onExport:eX,onStageImport:eZ,onDismiss:()=>tT(!0),mode:ev?"import":"recovery"}),tx.length>0&&(0,n.jsx)(aO,{request:tx[0]??null,queuedCount:Math.max(0,tx.length-1),busy:!1,onResolve:(e,t,r)=>{let n=tx[0];n&&tf(n.id,e,t,r)}}),ri?(0,n.jsx)("div",{className:"flex flex-1 flex-col items-center justify-center overflow-y-auto",children:(0,n.jsxs)("div",{className:"w-full max-w-[820px]",children:[(0,n.jsx)("div",{style:{display:"flex",justifyContent:"center",marginBottom:28},children:(0,n.jsxs)("svg",{fill:"currentColor",fillRule:"evenodd",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",style:{width:64,height:64,color:"var(--accent)",opacity:.85},"aria-label":"Pi",children:[(0,n.jsx)("title",{children:"Pi"}),(0,n.jsx)("path",{clipRule:"evenodd",d:"M1 1h16.5v11H12v5.5H6.5V23H1V1zm5.5 5.5V12H12V6.5H6.5z"}),(0,n.jsx)("path",{d:"M17.5 12H23v11h-5.5V12z"})]})}),M&&(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",gap:10,marginBottom:18,marginTop:-14},children:[(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-muted)",fontFamily:"var(--font-mono)"},children:["web ",(0,n.jsxs)("span",{style:{color:"var(--text)"},children:["v","0.18.10"]})]}),(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-muted)",fontFamily:"var(--font-mono)"},children:["pi ",(0,n.jsxs)("span",{style:{color:"var(--text)"},children:["v","0.87.1"]})]})]}),(0,n.jsx)("div",{style:{padding:"0 34px 6px 7px",paddingRight:M?16:34},children:(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},children:[(0,n.jsx)("div",{ref:m,style:{display:"flex",alignItems:"center",minWidth:0,flex:1,minHeight:48}}),(0,n.jsxs)("div",{style:{display:M?"none":"flex",flexDirection:"column",alignItems:"flex-end",gap:2,flexShrink:0},children:[(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-muted)",fontFamily:"var(--font-mono)"},children:["web ",(0,n.jsxs)("span",{style:{color:"var(--text)"},children:["v","0.18.10"]})]}),(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-muted)",fontFamily:"var(--font-mono)"},children:["pi ",(0,n.jsxs)("span",{style:{color:"var(--text)"},children:["v","0.87.1"]})]})]})]})}),(0,n.jsx)("div",{style:{padding:"0 16px",paddingRight:M?16:34},children:(0,n.jsx)(uo,{notices:ey,align:"right"})}),"goal"===tc&&(0,n.jsx)(aF,{goalState:tm,onPause:ty,onResume:tb,onStop:tk,onEdit:tj}),rp,(0,n.jsx)("div",{style:{padding:"0 16px 6px",paddingRight:M?16:34,marginTop:-15},children:(0,n.jsx)(cW,{onViewFullHistory:v,cwd:rs,systemPrompt:y,sessionStats:ep,contextUsage:es,hasSession:!!e,showChat:!0,showSoundLabel:!0,soundEnabled:z,onSoundToggle:T,onCompact:e?e_:void 0,onAbortCompaction:eJ,isCompacting:ea,compactError:ed,lastTurnUsage:tI})})]})}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"relative flex flex-1 overflow-hidden z-0",children:[(0,n.jsx)("div",{style:{position:"absolute",top:12,left:0,right:18*!M,zIndex:40,padding:"0 16px",pointerEvents:"none"},children:(0,n.jsx)("div",{style:{maxWidth:820,margin:"0 auto"},children:(0,n.jsx)(uo,{notices:ey,floating:!0,align:"right"})})}),(0,n.jsxs)("div",{className:"relative flex-1 min-h-0 min-w-0",children:[(0,n.jsx)("div",{ref:eW,className:"scrollbar-subtle h-full min-w-0 overflow-x-hidden overflow-y-auto pt-4 [scrollbar-gutter:stable]",children:(0,n.jsx)("div",{style:{minWidth:0,padding:"0 16px"},children:(0,n.jsxs)("div",{style:{width:"100%",minWidth:0,maxWidth:820,margin:"0 auto"},children:[(0,n.jsxs)("div",{ref:tQ,children:[(0,n.jsx)(ur,{statuses:ej}),(0,n.jsx)(un,{widgets:rh})]}),(()=>{let{toolResultsMap:t,lastUserIdx:r,visibleRefIndexByMessage:o,items:i}=rl;for(let e=O.length-1;e>=0&&!si(O[e]);e--);let s=tZ.current,l=(i,l={})=>{let a=l.messageOverride??O[i];if(!a||"toolResult"===a.role)return null;let d="user"===a.role||"assistant"===a.role||si(a),c=o.get(i),u=l.keyPrefix??"message",p=!1;if("assistant"===a.role){p=!0;for(let e=i+1;e<O.length;e++){let t=O[e].role;if("user"===t)break;if("assistant"===t){p=!1;break}}p&&_.isStreaming&&i===O.length-1&&(p=!1)}void 0!==l.showTimestamp&&(p=l.showTimestamp);let h=(0,n.jsx)(ad,{message:a,toolResults:t,modelNames:J,cwd:rs,onOpenFile:f,entryId:U[i],onFork:q||eT?void 0:eO,forking:el===U[i],onNavigate:q?void 0:eB,onEditContent:A,onQuoteReply:P,onOpenSession:k,onCreateTask:F,showTimestamp:p,prevTimestamp:i>0?O[i-1].timestamp:void 0,sessionId:e?.id??eE.current??void 0,writtenFiles:l.writtenFiles},`${u}-view-${i}`);return d&&!1!==l.attachRef&&void 0!==c?(0,n.jsx)("div",{ref:((e,t)=>{let n=s.get(t);if(!n){let e={isLastUser:!1};n={state:e,callback:r=>{ro.current[t]=r,e.isLastUser&&(eL.current=r,r&&eN.current&&(eN.current=!1,eA.current=!0,eP()))}},s.set(t,n)}return n.state.isLastUser=e===r,n.callback})(i,c),children:h},`${u}-${i}`):h},a=[],d=[],c=[],u=(e,t,r)=>{null!==e&&(a.push(e),d.push(t),c.push(r))},p=(e,t)=>U[e]||`${t}-${e}`,h=e=>`live-answer-u${e}`,g=e=>`answer-${p(e,"user")}`,x=e=>`subagent-${e}`,m=e=>sp(e.result?.details)?e.result.details.sessionId:"",v=e=>{let t=m(e);if(t&&w){let e=w.get(t);if(e)return"running"===e.status}let r=sp(e.result?.details)?e.result.details:null;return r?"running"===r.status||"starting"===r.status:!e.result},y=(e,t)=>`live-process-u${e}-seg${t}`,b=(e,t,r)=>`process-${p(e,"user")}-${r||`seg${t}`}`;for(let s of i){if("single"===s.kind){if(O[s.idx]?.role==="toolResult")continue;u(l(s.idx),o.get(s.idx),p(s.idx,"single"));continue}let{userIdx:i,endIdx:a,startsCompactionTurn:d,finalAssistantIdx:c}=s;if((q||_.isStreaming)&&a===O.length&&(i===r||d)){i>=0&&u(l(i),o.get(i),p(i,"user"));let r=_.streamingMessage?.role==="assistant",s=[],d=!r&&c>=0?c:a;for(let e=i+1;e<d;e++)sW(O[e])&&s.push(e);let g=sm(O,U,s,t),v=null;if(!r&&c>=0){let e=O[c],r=sc(e,{isStreaming:!0}),n=sf(e,{messageIndex:c,entryId:U[c],toolResults:t,isStreaming:!0});g=g.concat(n.processBlocks),r.answerBlocks.length>0&&(v=sL(e,r.answerBlocks,{omitUsage:!0}))}if(r){let e=_.streamingMessage,r=sc(e,{isStreaming:!0}),n=sf(e,{messageIndex:O.length,toolResults:t,isStreaming:!0});g=g.concat(n.processBlocks),r.answerBlocks.length>0&&(v=sL(e,r.answerBlocks,{omitUsage:!0}))}if(g.length>0){let t=s.map(e=>o.get(e)).find(e=>"number"==typeof e);sh(g).forEach((r,s)=>{let l=o.get(r.blocks[0].origin.sourceMessageIndex)??t;if("subagent"===r.kind&&r.subagent)return void u((0,n.jsx)(dR,{run:r.subagent,onOpenSubagent:j,sessionRun:w?.get(m(r.subagent))},x(r.subagent.toolCallId)),l,x(r.subagent.toolCallId));if("output"===r.kind){let e=r.blocks[0],t=o.get(e.origin.sourceMessageIndex);u((0,n.jsx)(ad,{message:{role:"assistant",provider:"",model:"",content:r.blocks},isStreaming:e.origin.sourceMessageIndex===O.length,cwd:rs,onOpenFile:f,onQuoteReply:P,onOpenSession:k}),t,`output-${e.id}`);return}u((0,n.jsx)("div",{ref:void 0===l?void 0:e=>{ro.current[l]=e},children:(0,n.jsx)(dC,{blocks:r.blocks,isStreaming:q||_.isStreaming,cwd:rs,onOpenFile:f,sessionId:e?.id??eE.current??void 0,tokenRate:eh})},y(i,s)),l,y(i,s))})}v&&u((0,n.jsx)(ad,{message:v,isStreaming:!0,modelNames:J,cwd:rs,onOpenFile:f,onQuoteReply:P,onOpenSession:k},`live-answer-${i}`),c>=0?o.get(c):void 0,h(i));continue}if(-1===c&&0===s.processBlocks.length){if(i>=0)for(let e=i;e<a;e++)u(l(e),o.get(e),p(e,"raw"));continue}i>=0&&u(l(i),o.get(i),p(i,"user"));let{finalAnswerMessage:S,writtenFiles:C,visibleProcessIndices:z}=s;if(s.processBlocks.length>0){let t=z.map(e=>o.get(e)).find(e=>"number"==typeof e)??(S?void 0:o.get(c));s.processSegments.forEach((r,s)=>{let l=o.get(r.blocks[0].origin.sourceMessageIndex)??t;if("subagent"===r.kind&&r.subagent)return void u((0,n.jsx)(dR,{run:r.subagent,onOpenSubagent:j,sessionRun:w?.get(m(r.subagent))},x(r.subagent.toolCallId)),l,x(r.subagent.toolCallId));if("output"===r.kind){let e=r.blocks[0];u((0,n.jsx)(ad,{message:{role:"assistant",provider:"",model:"",content:r.blocks},cwd:rs,onOpenFile:f,onQuoteReply:P,onOpenSession:k}),o.get(e.origin.sourceMessageIndex),`output-${e.id}`);return}u((0,n.jsx)("div",{ref:void 0===l?void 0:e=>{ro.current[l]=e},children:(0,n.jsx)(dC,{blocks:r.blocks,isStreaming:"subagent"===r.kind&&void 0!==r.subagent&&v(r.subagent),defaultExpanded:!1,onAutoExpanded:void 0,cwd:rs,onOpenFile:f,sessionId:e?.id??eE.current??void 0})},`process-group-${i}-${s}`),l,b(i,s,r.blocks[0]?.id??""))})}if(S&&u(l(c,{messageOverride:S,writtenFiles:C}),o.get(c),g(i)),c>=0)for(let e=c+1;e<a;e++)u(l(e),o.get(e),p(e,"tail"))}let S=[],C=d.map((e,t)=>({startRef:e,itemIdx:t})).filter(e=>void 0!==e.startRef);return C.forEach((e,t)=>{let r=C[t+1]?.startRef??rr.length;for(let t=e.startRef;t<r;t++)S[t]=e.itemIdx}),tX.current=S,(0,n.jsx)(cA,{scrollElementRef:eW,items:a,itemKeys:c,virtualizerRef:tG,headerHeight:t0})})(),rx&&(ea||q&&!_.streamingMessage)&&(0,n.jsx)("div",{className:"py-2 text-[13px] text-text-muted",children:(0,n.jsxs)("span",{className:"animate-[pulse_1.5s_infinite]",children:[rx,ez?.kind==="waiting_model"&&(0,n.jsx)("span",{style:{display:"inline-block",width:12,height:12,marginLeft:6,verticalAlign:"-2px",border:"1.5px solid var(--text-muted)",borderTopColor:"transparent",borderRadius:"50%",animation:"spin 0.6s linear infinite"}})]})}),V&&(0,n.jsx)(ad,{message:{role:"bashExecution",command:V.command,output:"",excludeFromContext:V.excludeFromContext},sessionId:e?.id??eE.current??void 0}),K&&!V&&(0,n.jsx)("div",{className:"py-2 text-[13px] text-text-muted",children:(0,n.jsx)("span",{className:"animate-[pulse_1.5s_infinite]",children:E("desktop.runningShellCommand")})}),(0,n.jsx)("div",{style:{height:96}}),(0,n.jsx)("div",{ref:e$}),(0,n.jsx)(a$,{open:tM,planText:tW,busy:q,onExecute:tA,onFeedback:tF,onExit:tD,onClose:()=>t$(!1)})]})})}),tH&&(0,n.jsx)("div",{"aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 top-0 z-10 h-8 bg-gradient-to-b from-[var(--bg)] to-transparent"}),tB&&(0,n.jsx)("div",{"aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 bottom-0 z-10 h-8 bg-gradient-to-t from-[var(--bg)] to-transparent"})]}),M?null:(0,n.jsx)(cD,{messages:O,streamingMessage:_.streamingMessage,scrollContainer:eW,messageRefs:ro,virtualizer:t2})]}),(0,n.jsxs)("div",{className:"relative z-10",children:[(0,n.jsx)("div",{style:{padding:"0 16px",paddingRight:M?16:34},children:(0,n.jsx)("div",{style:{maxWidth:820,margin:"0 auto"},children:(0,n.jsx)(un,{widgets:rg})})}),rp,(0,n.jsx)("div",{className:`session-info-bar-wrap${M?" is-mobile":""}`,children:(0,n.jsx)("div",{className:"session-info-bar-inner",children:(0,n.jsx)(cW,{onViewFullHistory:v,cwd:rs,systemPrompt:y,sessionStats:ep,contextUsage:es,hasSession:!!e,showChat:!0,soundEnabled:z,onSoundToggle:T,onCompact:e?e_:void 0,onAbortCompaction:eJ,isCompacting:ea,compactError:ed,branchTree:eR,branchActiveLeafId:eI,onBranchLeafChange:eM,lastTurnUsage:tI})})})]})]})]})}function ur({statuses:e}){return 0===e.length?null:(0,n.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,marginBottom:10},children:e.map(e=>(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,maxWidth:"100%",padding:"4px 8px",border:"1px solid color-mix(in srgb, var(--accent) 24%, var(--border))",borderRadius:6,background:"color-mix(in srgb, var(--accent) 7%, var(--bg))",color:"var(--text-muted)",fontSize:12},children:[(0,n.jsx)("span",{style:{color:"var(--accent)",fontFamily:"var(--font-mono)",fontSize:11},children:e.key}),(0,n.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.text})]},e.key))})}function un({widgets:e}){return 0===e.length?null:(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:8,marginBottom:10},children:e.map(e=>(0,n.jsxs)("div",{style:{border:"1px solid var(--border)",borderRadius:7,background:"var(--bg-panel)",overflow:"hidden"},children:[(0,n.jsx)("div",{style:{padding:"5px 9px",borderBottom:"1px solid var(--border)",color:"var(--text-dim)",fontSize:11,fontFamily:"var(--font-mono)"},children:e.key}),(0,n.jsx)("pre",{style:{margin:0,padding:"8px 9px",color:"var(--text-muted)",fontSize:12,lineHeight:1.5,whiteSpace:"pre-wrap",wordBreak:"break-word",fontFamily:"var(--font-mono)"},children:e.lines.join("\n")})]},e.key))})}function uo({notices:e,floating:t=!1,align:r="left"}){return 0===e.length?null:(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",alignItems:"right"===r?"flex-end":"stretch",marginBottom:10*!t},children:e.map((r,o)=>{let i="error"===r.type?"var(--status-error)":"warning"===r.type?"var(--status-warning)":"success"===r.type?"#10b981":"var(--accent)";return(0,n.jsxs)("div",{className:"notice-shelf-item",style:{display:"flex",alignItems:"center",gap:10,minHeight:44,maxHeight:180,marginBottom:6*(o!==e.length-1),overflowY:"auto",overflowX:"hidden",borderRadius:14,border:"1px solid color-mix(in srgb, var(--border) 70%, transparent)",background:"var(--bg)",color:"var(--text-muted)",width:"fit-content",maxWidth:"min(100%, 620px)",boxShadow:t?"0 1px 2px rgba(15,23,42,0.05), 0 10px 28px -14px rgba(15,23,42,0.24)":"0 1px 2px rgba(15,23,42,0.04), 0 8px 24px -12px rgba(15,23,42,0.10)",fontSize:13,lineHeight:1.45,transformOrigin:"top center",animation:r.exiting?"notice-shelf-out 0.18s ease-in forwards":"notice-shelf-in 0.18s ease-out both",padding:"0 12px"},children:[(0,n.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:i,flexShrink:0}}),(0,n.jsx)("span",{style:{padding:"10px 0",minWidth:0,maxWidth:"100%",overflowWrap:"anywhere",whiteSpace:"pre-wrap"},children:r.message})]},r.id)})})}function ui({request:e,onRespond:t}){let{t:r}=(0,Y.s)(),[i,s]=(0,o.useState)("editor"===e.method?e.prefill??"":""),[l,a]=(0,o.useState)(!1),[d,c]=(0,o.useState)(()=>Date.now()),u=(0,o.useCallback)(e=>e?.focus(),[]);!function(e){if("select"===e.method&&e.options.length>0)return e.options[0];if("confirm"===e.method){let t=e.message.split("\n").find(e=>e.trim());t?.trim()}}(e);let p=void 0===e.expiresAt?null:Math.max(0,Math.ceil((e.expiresAt-d)/1e3));(0,o.useEffect)(()=>{if(void 0===e.expiresAt)return;let t=setInterval(()=>c(Date.now()),1e3);return()=>clearInterval(t)},[e.expiresAt]);let h=null!==p&&(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)",whiteSpace:"nowrap",flexShrink:0},children:r("chat.extensionExpiresIn",{seconds:p})});(0,o.useEffect)(()=>{s("editor"===e.method?e.prefill??"":"")},[e]);let g=()=>{"confirm"===e.method?t(e,{confirmed:!0}):t(e,{value:i})};return(0,n.jsx)("div",{style:{position:"absolute",inset:0,zIndex:90,display:"flex",alignItems:"center",justifyContent:"center",padding:20,background:"rgba(0,0,0,0.18)"},children:(0,n.jsxs)("div",{role:"dialog","aria-modal":"true",style:{width:"min(560px, 100%)",border:"1px solid var(--border)",borderRadius:8,background:"var(--bg)",boxShadow:"0 20px 60px rgba(0,0,0,0.28)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{flexShrink:0,display:"flex",alignItems:"flex-start",gap:8,padding:"12px 14px",borderBottom:"1px solid var(--border)",maxHeight:"50%",overflowY:"auto"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{color:"var(--text)",fontSize:14,fontWeight:650,lineHeight:1.45,whiteSpace:"pre-wrap",overflowWrap:"anywhere"},children:e.title}),(0,n.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:8,marginTop:3,color:"var(--text-dim)",fontSize:11,fontFamily:"var(--font-mono)"},children:[(0,n.jsx)("span",{children:r("desktop.extensionRequest")}),h]})]}),(0,n.jsx)("button",{type:"button",onClick:()=>a(!0),"aria-expanded":!0,title:r("chat.extensionCollapse"),"aria-label":r("chat.extensionCollapse"),style:{display:"grid",placeItems:"center",width:28,height:28,borderRadius:6,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",flexShrink:0},children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})})]}),(0,n.jsxs)("div",{style:{padding:14},children:["confirm"===e.method&&(0,n.jsx)(lH,{children:e.message}),"select"===e.method&&(0,n.jsx)("div",{onKeyDown:e=>{if(!["ArrowDown","ArrowRight","ArrowUp","ArrowLeft","Home","End"].includes(e.key))return;let t=Array.from(e.currentTarget.querySelectorAll("[data-extension-option]")),r=t.indexOf(e.target);if(r<0)return;e.preventDefault();let n="Home"===e.key?0:"End"===e.key?t.length-1:(r+("ArrowDown"===e.key||"ArrowRight"===e.key?1:-1)+t.length)%t.length;t[n]?.focus()},style:{display:"grid",gap:8},children:e.options.map((r,o)=>(0,n.jsx)("div",{role:"button",tabIndex:0,"data-extension-option":!0,"aria-label":r,ref:0===o?u:void 0,onClick:()=>t(e,{value:r}),onKeyDown:n=>{("Enter"===n.key||" "===n.key)&&(n.preventDefault(),t(e,{value:r}))},style:{width:"100%",padding:"9px 10px",borderRadius:7,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text)",cursor:"pointer",textAlign:"left",fontSize:13,overflowWrap:"anywhere",scrollMargin:14},children:(0,n.jsx)("div",{inert:!0,children:(0,n.jsx)(lH,{children:r})})},r))}),"input"===e.method&&(0,n.jsx)("input",{autoFocus:!0,className:"extension-input",value:i,placeholder:e.placeholder,onChange:e=>s(e.target.value),onKeyDown:r=>{"Enter"===r.key&&g(),"Escape"===r.key&&t(e,{cancelled:!0})},style:{width:"100%",padding:"9px 10px",borderRadius:7,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text)",outline:"none",fontSize:13}}),"editor"===e.method&&(0,n.jsx)("textarea",{autoFocus:!0,value:i,onChange:e=>s(e.target.value),onKeyDown:r=>{"Escape"===r.key&&t(e,{cancelled:!0}),(r.metaKey||r.ctrlKey)&&"Enter"===r.key&&g()},style:{width:"100%",minHeight:220,padding:10,borderRadius:7,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text)",outline:"none",resize:"vertical",fontSize:13,lineHeight:1.55,fontFamily:"var(--font-mono)"}})]}),(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,padding:"10px 14px",borderTop:"1px solid var(--border)",background:"var(--bg-panel)"},children:[(0,n.jsx)("button",{onClick:()=>t(e,{cancelled:!0}),style:{padding:"6px 10px",borderRadius:6,border:"1px solid var(--border)",background:"var(--bg)",color:"var(--text-muted)",cursor:"pointer"},children:r("desktop.cancel")}),"confirm"===e.method?(0,n.jsx)("button",{onClick:g,style:{padding:"6px 10px",borderRadius:6,border:"1px solid var(--accent)",background:"var(--accent)",color:"var(--accent-fg)",cursor:"pointer"},children:r("desktop.confirm")}):"select"!==e.method?(0,n.jsx)("button",{onClick:g,style:{padding:"6px 10px",borderRadius:6,border:"1px solid var(--accent)",background:"var(--accent)",color:"var(--accent-fg)",cursor:"pointer"},children:r("desktop.submit")}):null]})]})})}function us({request:e,onInput:t}){let{t:r}=(0,Y.s)(),i=(0,o.useRef)(null),s=function(e){let t=/^[┌├└╭╰][─┬┴┼]+[┐┤┘╮╯]$/,r=[];for(let n of e){let e=st(n).trimEnd();if(t.test(e))continue;let o=n,i=so(o);("│"===i||"┃"===i)&&" "===so(o=sn(o,0))&&(o=sn(o,0));let s=function(e){let t=sr(e);for(let e=t.length-1;e>=0;e--)if(""!==t[e].char.trim())return e;return -1}(o),l=s>=0?sr(o)[s]?.char:void 0;("│"===l||"┃"===l)&&(o=sn(o,s)),r.push(function(e){let t=e;for(;;){let e=sr(t),r=e[e.length-1];if(!r||""!==r.char.trim())return t;t=t.slice(0,r.start)+t.slice(r.end)}}(o))}for(;r.length>0&&""===st(r[0]).trim();)r.shift();for(;r.length>0&&""===st(r[r.length-1]).trim();)r.pop();return r.length?r:e}(e.lines);return(0,o.useEffect)(()=>{i.current?.focus()},[e.id]),(0,n.jsx)("div",{style:{position:"absolute",inset:0,zIndex:95,display:"flex",alignItems:"center",justifyContent:"center",padding:20,background:"rgba(0,0,0,0.18)"},children:(0,n.jsxs)("div",{ref:i,tabIndex:0,role:"dialog","aria-modal":"true",onKeyDown:r=>{let n=function(e){if(e.ctrlKey&&!e.metaKey&&!e.altKey&&1===e.key.length){let t=e.key.toLowerCase();if(t>="a"&&t<="z")return String.fromCharCode(t.charCodeAt(0)-96)}switch(e.key){case"ArrowUp":return"\x1b[A";case"ArrowDown":return"\x1b[B";case"ArrowRight":return"\x1b[C";case"ArrowLeft":return"\x1b[D";case"Enter":return"\r";case"Escape":return"\x1b";case"Backspace":return"";case"Tab":return" ";case" ":return" ";default:if(!e.ctrlKey&&!e.metaKey&&!e.altKey&&1===e.key.length)return e.key;return null}}(r);n&&(r.preventDefault(),r.stopPropagation(),t(e,n))},style:{width:"min(920px, 100%)",maxHeight:"min(760px, calc(100vh - 40px))",border:"1px solid var(--border)",borderRadius:8,background:"var(--bg)",boxShadow:"0 20px 60px rgba(0,0,0,0.28)",overflow:"hidden",outline:"none"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,padding:"10px 12px",borderBottom:"1px solid var(--border)"},children:[(0,n.jsx)("div",{style:{color:"var(--text)",fontSize:13,fontWeight:650},children:r("desktop.extensionPanel")}),(0,n.jsx)("button",{onClick:()=>t(e,"\x03"),style:{padding:"5px 9px",borderRadius:6,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:r("desktop.close")})]}),(0,n.jsx)("pre",{style:{margin:0,padding:14,maxHeight:"calc(min(760px, 100vh - 40px) - 48px)",overflow:"auto",background:"var(--bg-panel)",color:"var(--text)",fontFamily:"var(--font-mono)",fontSize:13,lineHeight:1.45,whiteSpace:"pre"},children:(s.length?s:[""]).map((e,t,r)=>{var i;return(0,n.jsxs)(o.Fragment,{children:[(i=`line-${t}`,(function(e){let t,r=[],n={},o=0;for(i7.lastIndex=0;null!==(t=i7.exec(e));)t.index>o&&r.push({text:e.slice(o,t.index),style:n}),n=function(e,t){let r={...e};for(let e=0;e<t.length;e++){let n=t[e];if(0===n)for(let e of Object.keys(r))delete r[e];else if(1===n)r.fontWeight=700;else if(2===n)r.opacity=.65;else if(3===n)r.fontStyle="italic";else if(4===n)r.textDecoration="underline";else if(22===n)delete r.fontWeight,delete r.opacity;else if(23===n)delete r.fontStyle;else if(24===n)delete r.textDecoration;else if(39===n)delete r.color;else if(49===n)delete r.backgroundColor;else if(n>=30&&n<=37)r.color=i9[n-30];else if(n>=90&&n<=97)r.color=se[n-90];else if(n>=40&&n<=47)r.backgroundColor=i9[n-40];else if(n>=100&&n<=107)r.backgroundColor=se[n-100];else if((38===n||48===n)&&2===t[e+1]){let[o,i,s]=[t[e+2],t[e+3],t[e+4]];[o,i,s].every(e=>"number"==typeof e&&Number.isFinite(e))&&(38===n?r.color=`rgb(${o}, ${i}, ${s})`:r.backgroundColor=`rgb(${o}, ${i}, ${s})`),e+=4}else if((38===n||48===n)&&5===t[e+1]){let o=function(e){if(e>=0&&e<8)return i9[e];if(e>=8&&e<16)return se[e-8];if(e>=16&&e<=231){let t=e-16,r=Math.floor(t/36),n=Math.floor(t%36/6),o=e=>0===e?0:55+40*e;return`rgb(${o(r)}, ${o(n)}, ${o(t%6)})`}if(e>=232&&e<=255){let t=8+(e-232)*10;return`rgb(${t}, ${t}, ${t})`}}(t[e+2]);o&&(38===n?r.color=o:r.backgroundColor=o),e+=2}}return r}(n,t[1]?t[1].split(";").map(e=>Number(e||"0")):[0]),o=t.index+t[0].length;return o<e.length&&r.push({text:e.slice(o),style:n}),r})(e).map((e,t)=>Object.keys(e.style).length>0?(0,n.jsx)("span",{style:e.style,children:e.text},`${i}-${t}`):e.text)),t<r.length-1?"\n":null]},t)})})]})})}var ul=r(93549);let ua={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",bmp:"image/bmp",ico:"image/x-icon",avif:"image/avif"},ud={mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",oga:"audio/ogg",opus:"audio/ogg",m4a:"audio/mp4",aac:"audio/aac",flac:"audio/flac",weba:"audio/webm"};function uc(e){return(e.replace(/\\/g,"/").split("/").pop()??"").toLowerCase().split(".").pop()??""}function uu(e){let t=e.nodeType===Node.ELEMENT_NODE?e:e.parentElement;return t?.closest(".file-source-line[data-line-number]")??null}function up(e,t){if(!t||t.isCollapsed||0===t.rangeCount)return null;let r=t.getRangeAt(0);if(!e.contains(r.startContainer)||!e.contains(r.endContainer))return null;let n=Number(uu(r.startContainer)?.dataset.lineNumber),o=Number(uu(r.endContainer)?.dataset.lineNumber);return Number.isInteger(n)&&Number.isInteger(o)?n<=o?{startLine:n,endLine:o}:{startLine:o,endLine:n}:null}function uh(e,t,r,n={}){let o=oW(e),i=new URLSearchParams({type:t});for(let[e,t]of(r&&i.set("sessionId",r),Object.entries(n)))void 0!==t&&i.set(e,String(t));return`/api/files/${o}?${i.toString()}`}function ug({filePath:e,sourceSessionId:t}){let{t:r}=(0,Y.s)();return(0,n.jsx)("a",{href:uh(e,"download",t),download:oL(e),title:r("desktop.downloadFile"),style:{display:"flex",alignItems:"center",justifyContent:"center",height:20,padding:"0 5px",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:4,color:"var(--text-muted)",cursor:"pointer",flexShrink:0,textDecoration:"none"},children:(0,n.jsx)(M.z,{size:11,"aria-hidden":"true"})})}let ux={fontFamily:"var(--font-mono)",fontSize:13,lineHeight:1.6,tabSize:2},uf={fontFamily:"var(--font-mono)",fontSize:13,lineHeight:1.6,padding:"12px 0 12px 16px",color:"var(--text-dim)",textAlign:"right",userSelect:"none"};async function um(e,t){let r=await fetch(`/api/files/${oW(e)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:t})});if(!r.ok)throw Error((await r.json().catch(()=>({}))).error??`HTTP ${r.status}`);let n=await r.json();return"number"==typeof n.size?n.size:0}let uv={delete:"3px solid var(--git-status-deleted)",add:"3px solid var(--git-status-added)",edit:"3px solid var(--git-status-modified)"},uy="var(--git-status-deleted-bg)",ub="var(--git-status-added-bg)",uk="var(--git-status-added)";function uj(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function uw({oldContent:e,newContent:t}){let{t:r}=(0,Y.s)(),o=function(e,t){let r=e.length,n=t.length,o=r+n,i=Array(2*o+1).fill(0),s=[];for(let l=0;l<=o;l++){s.push([...i]);for(let a=-l;a<=l;a+=2){let d,c=(d=a===-l||a!==l&&i[a-1+o]<i[a+1+o]?i[a+1+o]:i[a-1+o]+1)-a;for(;d<r&&c<n&&e[d]===t[c];)d++,c++;if(i[a+o]=d,d>=r&&c>=n){let i=[],a=r,d=n;for(let r=l;r>0;r--){let n,l=s[r-1],c=a-d;n=c===-r||c!==r&&l[c-1+o]<l[c+1+o]?c+1:c-1;let u=l[n+o],p=u-n;for(;a>u&&d>p;)a--,d--,i.unshift({type:"unchanged",text:e[a]});r>0&&(a>u?(a--,i.unshift({type:"removed",text:e[a]})):(d--,i.unshift({type:"added",text:t[d]})))}for(;a>0&&d>0;)a--,d--,i.unshift({type:"unchanged",text:e[a]});return i}}}return[...e.map(e=>({type:"removed",text:e})),...t.map(e=>({type:"added",text:e}))]}(e.split("\n"),t.split("\n"));if(!o.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:r("desktop.noChanges")});let i=new Set(o.flatMap((e,t)=>"unchanged"!==e.type?[t]:[])),s=new Set;for(let e of i)for(let t=Math.max(0,e-3);t<=Math.min(o.length-1,e+3);t++)s.add(t);let l=[],a=0;for(;a<o.length;)if(s.has(a)){let e=[];for(;a<o.length&&s.has(a);)e.push(o[a]),a++;l.push({hidden:!1,lines:e})}else{let e=0;for(;a<o.length&&!s.has(a);)e++,a++;l.push({hidden:!0,count:e})}let d=[],c=1;for(let e of o)"removed"===e.type?d.push(0):d.push(c++);let u=0;return(0,n.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:13,lineHeight:1.6,minWidth:"max-content"},children:l.map((e,t)=>{if(e.hidden){let o=(0,n.jsx)("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:r("desktop.unchangedLines",{count:e.count})},t);return u+=e.count,o}let o=[],i=[],s=[],l=()=>{if(i.length||s.length){let e=i.length&&s.length?"edit":i.length?"delete":"add";for(let t of i)o.push({key:t.key,kind:"removed",text:t.text,lineNo:null,block:e});for(let t of s)o.push({key:t.key,kind:"added",text:t.text,lineNo:t.lineNo,block:e});i=[],s=[]}};e.lines.forEach((e,r)=>{"unchanged"===e.type?(l(),o.push({key:`${t}:${r}`,kind:"context",text:e.text,lineNo:d[u+r],block:null})):"removed"===e.type?i.push({key:`${t}:${r}`,text:e.text}):s.push({key:`${t}:${r}`,text:e.text,lineNo:d[u+r]})}),l();let a=o.map(e=>{let t="removed"===e.kind?uy:"added"===e.kind?ub:"transparent",r=e.block?uv[e.block]:"3px solid transparent",o="added"===e.kind?uk:"var(--text-dim)";return(0,n.jsxs)("div",{style:{display:"flex",background:t,borderLeft:r},children:[(0,n.jsx)("span",{style:{minWidth:44,padding:"0 8px 0 16px",textAlign:"right",color:o,userSelect:"none",fontSize:11,lineHeight:1.6,flexShrink:0},children:e.lineNo??""}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,padding:"0 8px 0 0",whiteSpace:"pre",color:"var(--text)"},children:e.text||"\xa0"})]},e.key)});return u+=e.lines.length,(0,n.jsx)("div",{children:a},t)})})}function uS({patch:e}){let t=lZ(e);if(!t)return null;let r=[],o=[],i=[],s=()=>{if(o.length||i.length){let e=o.length&&i.length?"edit":o.length?"delete":"add";for(let t of o)r.push({key:t.key,kind:"removed",text:t.text,lineNo:null,block:e});for(let t of i)r.push({key:t.key,kind:"added",text:t.text,lineNo:t.lineNo,block:e});o=[],i=[]}};return t.forEach((e,t)=>{e.rows.forEach((e,n)=>{if("hunk"===e.type){s(),r.push({key:`${t}:${n}:h`,kind:"hunk",text:e.text,lineNo:null,block:null});return}let{left:l,right:a}=e;if("context"===l.type&&"context"===a.type){s(),r.push({key:`${t}:${n}:c`,kind:"context",text:l.text,lineNo:a.lineNo,block:null});return}"removed"===l.type&&o.push({key:`${t}:${n}:l`,text:l.text}),"added"===a.type&&i.push({key:`${t}:${n}:r`,text:a.text,lineNo:a.lineNo})})}),s(),(0,n.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:12,lineHeight:1.55,minWidth:"max-content"},children:r.map(e=>{if("hunk"===e.kind)return(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{height:"1.55em"}}),(0,n.jsx)("div",{style:{padding:"3px 12px",color:"var(--accent-blue)",background:"var(--bg-secondary)"},children:e.text}),(0,n.jsx)("div",{style:{height:"1.55em"}})]},e.key);let t="removed"===e.kind?uy:"added"===e.kind?ub:"transparent",r=e.block?uv[e.block]:"3px solid transparent",o="added"===e.kind?uk:"var(--text-dim)";return(0,n.jsxs)("div",{style:{display:"flex",background:t,borderLeft:r},children:[(0,n.jsx)("span",{style:{width:44,flexShrink:0,padding:"0 8px 0 16px",textAlign:"right",color:o,userSelect:"none",fontSize:11},children:e.lineNo??""}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,padding:"0 8px 0 0",whiteSpace:"pre",color:"var(--text)"},children:e.text||"\xa0"})]},e.key)})})}function uC({filePath:e,cwd:t,sourceSessionId:r}){let{t:i}=(0,Y.s)(),[s,l]=(0,o.useState)(0),[a,d]=(0,o.useState)(null),[c,u]=(0,o.useState)(null),[p,h]=(0,o.useState)(null),g=(0,o.useRef)(null),x=oL(e).toLowerCase().split(".").pop()??"";(0,o.useEffect)(()=>{l(0),d(null),u(null),h(null),g.current&&(g.current.close(),g.current=null);let t=new EventSource(uh(e,"watch",r));return g.current=t,t.addEventListener("change",e=>{try{let t=JSON.parse(e.data);"number"==typeof t.size&&d(t.size)}catch{}l(e=>e+1)}),()=>{t.close(),g.current=null}},[e,r]);let f=uh(e,"read",r,s?{v:s}:void 0),m=null!=a?uj(a):null;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{className:"file-viewer-status-bar",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,flexWrap:"wrap",rowGap:4},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:"0 1 auto"},title:e,children:oN(e,t)}),(0,n.jsx)("span",{style:{marginLeft:"auto"},children:x||i("desktop.image")}),c&&(0,n.jsxs)("span",{children:[c.w," \xd7 ",c.h]}),m&&(0,n.jsx)("span",{children:m}),(0,n.jsx)(ug,{filePath:e,sourceSessionId:r})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"auto",background:"var(--bg-panel)",display:"flex",alignItems:"center",justifyContent:"center",padding:16,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:{color:"var(--status-error)",fontSize:13},children:p}):(0,n.jsx)("img",{src:f,alt:e,onLoad:e=>{let t=e.currentTarget;u({w:t.naturalWidth,h:t.naturalHeight})},onError:()=>h(i("desktop.failedToLoadImage")),style:{maxWidth:"100%",maxHeight:"100%",objectFit:"contain",boxShadow:"0 2px 8px rgba(0,0,0,0.15)"}})})]})}function uz({filePath:e,cwd:t,sourceSessionId:r}){let{t:i}=(0,Y.s)(),[s,l]=(0,o.useState)(0),[a,d]=(0,o.useState)(null),[c,u]=(0,o.useState)(null),[p,h]=(0,o.useState)(null),g=(0,o.useRef)(null),x=oL(e).toLowerCase().split(".").pop()??"";(0,o.useEffect)(()=>{l(0),d(null),u(null),h(null),g.current&&(g.current.close(),g.current=null);let t=new EventSource(uh(e,"watch",r));return g.current=t,t.addEventListener("change",e=>{try{let t=JSON.parse(e.data);"number"==typeof t.size&&d(t.size)}catch{}u(null),h(null),l(e=>e+1)}),()=>{t.close(),g.current=null}},[e,r]);let f=uh(e,"read",r,s?{v:s}:void 0);return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{className:"file-viewer-status-bar",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,flexWrap:"wrap",rowGap:4},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:"0 1 auto"},title:e,children:oN(e,t)}),(0,n.jsx)("span",{style:{marginLeft:"auto"},children:x||i("desktop.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:uj(a)}),(0,n.jsx)(ug,{filePath:e,sourceSessionId:r})]}),(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:"var(--status-error)",fontSize:13,marginBottom:12,textAlign:"center"},children:p}),(0,n.jsx)("audio",{controls:!0,preload:"metadata",src:f,onLoadedMetadata:e=>u(e.currentTarget.duration),onError:()=>h(i("desktop.failedToLoadAudio")),style:{width:"100%"}},f)]})})]})}function uT({filePath:e,cwd:t,sourceSessionId:r,initialPage:i}){let{t:s}=(0,Y.s)(),[l,a]=(0,o.useState)(0),[d,c]=(0,o.useState)(null),[u,p]=(0,o.useState)(null),h=(0,o.useRef)(null),g=uc(e),x="pdf"===g,f=x&&i&&i>0?`#page=${i}`:"",m=x?`${uh(e,"read",r,l?{v:l}:void 0)}${f}`:uh(e,"preview",r,l?{v:l}:void 0);return(0,o.useEffect)(()=>{a(0),c(null),p(null),h.current&&(h.current.close(),h.current=null),fetch(uh(e,"meta",r)).then(e=>e.json()).then(e=>{e.error&&p(e.error),"number"==typeof e.size&&(c(e.size),!x&&e.size>0xa00000&&p(s("desktop.docxTooLargeForPreview")))}).catch(e=>p(String(e)));let t=new EventSource(uh(e,"watch",r));return h.current=t,t.addEventListener("change",e=>{try{let t=JSON.parse(e.data);if("number"==typeof t.size&&(c(t.size),!x&&t.size>0xa00000))return void p(s("desktop.docxTooLargeForPreview"))}catch{}p(null),a(e=>e+1)}),()=>{t.close(),h.current=null}},[e,x,r,s]),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{className:"file-viewer-status-bar",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,flexWrap:"wrap",rowGap:4},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:e,children:oN(e,t)}),(0,n.jsx)("span",{style:{marginLeft:"auto"},children:"docx"===g?s("desktop.docxPreview"):"pdf"}),null!=d&&(0,n.jsx)("span",{children:uj(d)}),(0,n.jsx)(ug,{filePath:e,sourceSessionId:r})]}),(0,n.jsx)("div",{style:{flex:1,minHeight:0,background:"var(--bg-panel)"},children:u?(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",padding:24,color:"var(--status-error)",fontSize:13,textAlign:"center"},children:u}):(0,n.jsx)("iframe",{src:m,sandbox:x?void 0:"allow-same-origin",title:s("desktop.previewFile",{file:oL(e)}),style:{width:"100%",height:"100%",border:"none",background:x?"var(--bg)":"#eef1f5"}},m)})]})}function uR({filePath:e,cwd:t,sourceSessionId:r,onOpenFile:o,onAtMention:i,onMentionLines:s,initialDisplayMode:l,initialPage:a,onFileSaved:d}){let c;return null!==(ua[uc(e)]??null)?(0,n.jsx)(uC,{filePath:e,cwd:t,sourceSessionId:r}):null!==(ud[uc(e)]??null)?(0,n.jsx)(uz,{filePath:e,cwd:t,sourceSessionId:r}):null!==("pdf"===(c=uc(e))||"docx"===c?c:null)?(0,n.jsx)(uT,{filePath:e,cwd:t,sourceSessionId:r,initialPage:a}):(0,n.jsx)(uI,{filePath:e,cwd:t,sourceSessionId:r,onOpenFile:o,onAtMention:i,onMentionLines:s,initialDisplayMode:l,onFileSaved:d})}function uI({filePath:e,cwd:t,sourceSessionId:r,onOpenFile:i,onAtMention:s,onMentionLines:l,initialDisplayMode:a,onFileSaved:d}){let c,u,{t:p}=(0,Y.s)(),[h,x]=(0,o.useState)(null),[f,v]=(0,o.useState)(null),[y,b]=(0,o.useState)(null),[k,j]=(0,o.useState)(!0),[w,S]=(0,o.useState)(!1),[C,z]=(0,o.useState)(null),[T,R]=(0,o.useState)(!1),[I,M]=(0,o.useState)("source"),[E,$]=(0,o.useState)(!1),[W,L]=(0,o.useState)(0),[N,A]=(0,o.useState)(null),P=(0,o.useRef)(null),F=(0,o.useRef)(null),[D,H]=(0,o.useState)(!1),[O,B]=(0,o.useState)(""),[U,_]=(0,o.useState)(""),[q,K]=(0,o.useState)(!1),[V,J]=(0,o.useState)(null),[G,X]=(0,o.useState)(!1),Z=(0,o.useRef)(null),Q=(0,o.useRef)(null),ee=(0,o.useRef)(0),et=(0,o.useRef)(!1);(0,o.useEffect)(()=>{et.current=D},[D]);let er=D&&O!==U,en=!!(h?.content&&h.content.includes("\0")),eo=(0,o.useCallback)(async e=>{if(!t)return void b(null);try{let r=new URLSearchParams({cwd:t,path:e}),n=await fetch(`/api/git/diff?${r.toString()}`),o=await n.json();b(n.ok&&o.supported&&"string"==typeof o.patch?o:null)}catch{b(null)}},[t]),ei=(0,o.useCallback)((e,t=!1,n=0)=>fetch(uh(e,"read",r,n?{offset:n}:void 0)).then(e=>e.json()).then(e=>e.error?(z(e.error),null):(t?(x(t=>(t&&v(t.content),e)),L(e=>e+1)):n?x(t=>t?{...e,content:t.content+e.content}:e):x(e),e)).catch(e=>(z(String(e)),null)),[r]);(0,o.useEffect)(()=>{j(!0),z(null),x(null),v(null),b(null),R(!1),M("source"),$(!1),L(0),H(!1),B(""),_(""),J(null),X(!1),K(!1),P.current&&(P.current.close(),P.current=null),ei(e).then(e=>{e?.truncated||e?.language!=="markdown"&&e?.language!=="html"||"diff"===a||R(!0)}).finally(()=>j(!1)),eo(e);let t=new EventSource(uh(e,"watch",r));return P.current=t,t.addEventListener("change",()=>{et.current?X(!0):(ei(e,!0),eo(e))}),()=>{t.close(),P.current=null}},[e,ei,eo,a,r]);let es=(0,o.useCallback)(()=>{h&&!en&&(B(h.content),_(h.content),J(null),X(!1),H(!0))},[h,en]),el=(0,o.useCallback)(()=>{H(!1),B(""),_(""),J(null),X(!1)},[]),ea=(0,o.useCallback)(()=>{(!er||window.confirm(p("files.unsavedChanges")))&&el()},[er,el,p]),ed=(0,o.useCallback)(async()=>{if(!h||q)return;let t=++ee.current;K(!0),J(null);try{let r=await um(e,O);if(t!==ee.current)return;x(e=>e?{...e,content:O,size:r}:e),_(O),K(!1),el(),eo(e),d?.()}catch(e){if(t!==ee.current)return;J(e instanceof Error?e.message:String(e)),K(!1)}},[h,q,O,e,el,eo,d]);(0,o.useEffect)(()=>{if(!D)return;let e=e=>{if((e.metaKey||e.ctrlKey)&&"s"===e.key.toLowerCase()){e.preventDefault(),ed();return}"Escape"===e.key&&(e.preventDefault(),ea())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[D,ed,ea]),(0,o.useEffect)(()=>{if(!er)return;let e=e=>{e.preventDefault(),e.returnValue=""};return window.addEventListener("beforeunload",e),()=>window.removeEventListener("beforeunload",e)},[er]);let ec=(0,o.useCallback)(()=>{let e=Z.current,t=Q.current;e&&t&&(t.scrollTop=e.scrollTop)},[]),eu=(0,o.useCallback)(e=>{if("Tab"!==e.key||e.metaKey||e.ctrlKey||e.altKey)return;e.preventDefault();let t=e.currentTarget,{selectionStart:r,selectionEnd:n}=t;B(t.value.slice(0,r)+" "+t.value.slice(n)),requestAnimationFrame(()=>{let e=Z.current;if(!e)return;let t=r+2;e.selectionStart=t,e.selectionEnd=t})},[]),ep=(0,o.useMemo)(()=>ly(h?.content??""),[h?.content]),eh=y?.supported===!0&&"string"==typeof y.patch;(0,o.useEffect)(()=>{"diff"===a&&eh&&M("diff")},[eh,a]);let eg=eh&&y?.status==="deleted",ex=(0,o.useCallback)(r=>{l&&r&&l(oN(e,t),r.startLine,r.endLine)},[t,e,l]);if((0,o.useEffect)(()=>{let e=()=>{let e=F.current,t="source"===I&&!T;A(l&&t&&e?up(e,window.getSelection()):null)};if(e(),l&&"source"===I&&!T)return document.addEventListener("selectionchange",e),()=>document.removeEventListener("selectionchange",e)},[h?.content,l,T,I]),(0,o.useEffect)(()=>{if(!l||"source"!==I||T)return;let e=e=>{if(e.repeat||"i"!==e.key.toLowerCase()||!e.metaKey&&!e.ctrlKey||e.altKey||e.shiftKey)return;let t=e.target;if(t instanceof Element&&t.closest("input, textarea, [contenteditable='true']"))return;let r=F.current,n=r?up(r,window.getSelection()):null;n&&(e.preventDefault(),ex(n))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[ex,l,T,I]),k)return(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:p("desktop.loadingFile")});if(eg&&!h)return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsx)("div",{style:{padding:"5px 16px",borderBottom:"1px solid var(--border)",color:"var(--text-dim)",fontFamily:"var(--font-mono)",fontSize:11},title:e,children:oN(e,t)}),(0,n.jsx)("div",{style:{flex:1,overflow:"auto",background:"var(--bg)"},children:(0,n.jsx)(uS,{patch:y.patch})})]});if(C)return(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--status-error)",fontSize:13},children:C});if(!h)return null;let ef="html"===h.language,em="markdown"===h.language,ev=(u=(c=o$(e).replace(/\/+$/,"")).lastIndexOf("/"))<0?"":0===u?"/":2===u&&/^[a-zA-Z]:\//.test(c)?c.slice(0,3):c.slice(0,u),ey=h.content.split("\n"),eb=null!==f&&f!==h.content||eh,ek=!eg&&!en&&oF();return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{className:"file-viewer-status-bar",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,flexWrap:"wrap",rowGap:4},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:"0 1 auto"},title:e,children:oN(e,t)}),(0,n.jsx)("span",{style:{marginLeft:"auto"},children:h.language}),"source"===I&&!D&&(0,n.jsx)("span",{children:p("desktop.lines",{count:ey.length})}),(0,n.jsx)("span",{children:uj(h.size)}),eb&&!D&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>M("source"),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:"source"===I?"var(--bg-selected)":"var(--bg-hover)",color:"source"===I?"var(--text)":"var(--text-muted)",fontWeight:"source"===I?600:400},children:p("desktop.source")}),(0,n.jsxs)("button",{onClick:()=>M("diff"),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:"diff"===I?"var(--bg-selected)":"var(--bg-hover)",color:"diff"===I?"var(--text)":"var(--text-muted)",fontWeight:"diff"===I?600:400},children:[p("desktop.diff")," ",W>0&&(0,n.jsxs)("span",{style:{color:"var(--git-status-added)",marginLeft:2},children:["+",W]})]})]}),"source"===I&&!T&&!D&&(0,n.jsx)("button",{onClick:()=>$(e=>!e),title:E?p("desktop.disableWordWrap"):p("desktop.enableWordWrap"),style:{padding:"2px 8px",fontSize:11,cursor:"pointer",background:E?"var(--bg-selected)":"var(--bg-hover)",color:E?"var(--text)":"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5,fontWeight:E?600:400},children:p("desktop.wrap")}),ef&&"source"===I&&!D&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>R(!1),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:T?"var(--bg-hover)":"var(--bg-selected)",color:T?"var(--text-muted)":"var(--text)",fontWeight:T?400:600},children:p("desktop.code")}),(0,n.jsx)("button",{onClick:()=>R(!0),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:T?"var(--bg-selected)":"var(--bg-hover)",color:T?"var(--text)":"var(--text-muted)",fontWeight:T?600:400},children:p("desktop.preview")})]}),em&&"source"===I&&!D&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>R(!0),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:T?"var(--bg-selected)":"var(--bg-hover)",color:T?"var(--text)":"var(--text-muted)",fontWeight:T?600:400},children:p("desktop.preview")}),(0,n.jsx)("button",{onClick:()=>R(!1),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:T?"var(--bg-hover)":"var(--bg-selected)",color:T?"var(--text-muted)":"var(--text)",fontWeight:T?400:600},children:p("desktop.raw")})]}),D?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",onClick:()=>void ed(),disabled:q,title:p("files.saveHint"),"aria-label":p("files.save"),style:{height:20,minWidth:20,padding:"0 5px",display:"inline-flex",alignItems:"center",justifyContent:"center",border:"1px solid var(--border)",borderRadius:4,background:"var(--bg-selected)",color:"var(--text)",cursor:"pointer"},children:(0,n.jsx)(ul.g,{size:13,"aria-hidden":"true"})}),(0,n.jsx)("button",{type:"button",onClick:ea,disabled:q,title:p("files.cancelEdit"),"aria-label":p("files.cancelEdit"),style:{height:20,minWidth:20,padding:"0 5px",display:"inline-flex",alignItems:"center",justifyContent:"center",border:"1px solid var(--border)",borderRadius:4,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer"},children:(0,n.jsx)(g.X,{size:13,"aria-hidden":"true"})})]}):"source"===I&&ek?(0,n.jsx)("button",{type:"button",onClick:es,title:p("files.edit"),"aria-label":p("files.edit"),style:{height:20,minWidth:20,padding:"0 5px",display:"inline-flex",alignItems:"center",justifyContent:"center",border:"1px solid var(--border)",borderRadius:4,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer"},children:(0,n.jsx)(m.I,{size:13,"aria-hidden":"true"})}):null,(s||l)&&!D&&(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.preventDefault(),onClick:()=>{N&&l?ex(N):s?.(oN(e,t),!1)},title:N?p("desktop.mentionSelectedLines",{start:N.startLine,end:N.endLine}):p("desktop.mentionFile"),"aria-label":N?p("desktop.mentionSelectedLines",{start:N.startLine,end:N.endLine}):p("desktop.mentionFile"),style:{height:20,minWidth:20,padding:"0 5px",border:"1px solid var(--border)",borderRadius:4,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer"},children:"@"}),!D&&(0,n.jsx)(ug,{filePath:e,sourceSessionId:r})]}),h?.truncated&&"source"===I&&!D&&(0,n.jsxs)("div",{className:"file-viewer-load-more",style:{display:"flex",alignItems:"center",justifyContent:"center",gap:10,padding:"5px 8px",borderBottom:"1px solid var(--border)",color:"var(--text-dim)",fontSize:11},children:[(0,n.jsxs)("span",{children:[uj(h.nextOffset)," / ",uj(h.size)]}),(0,n.jsx)("button",{type:"button",disabled:w,onClick:()=>{S(!0),ei(e,!1,h.nextOffset).finally(()=>S(!1))},style:{padding:"2px 10px",fontSize:11,cursor:"pointer",border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-hover)",color:"var(--text)",opacity:w?.6:1},children:w?p("i18n.loading"):p("i18n.loadMore")})]}),(0,n.jsx)("div",{ref:F,style:{flex:1,overflow:"auto",background:"var(--bg)"},children:D?(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[G&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"5px 12px",borderBottom:"1px solid var(--border)",background:"rgba(214,168,75,0.14)",color:"#d6a84b",fontSize:11,flexShrink:0},children:[(0,n.jsx)("span",{style:{flex:1},children:p("files.externalModified")}),(0,n.jsx)("button",{type:"button",onClick:()=>{(!er||window.confirm(p("files.reloadOverwriteConfirm")))&&ei(e).then(e=>{e&&(B(e.content),_(e.content),X(!1))})},disabled:q,style:{padding:"2px 8px",fontSize:11,border:"1px solid #d6a84b",borderRadius:4,background:"transparent",color:"#d6a84b",cursor:"pointer"},children:p("files.reload")})]}),V&&(0,n.jsx)("div",{style:{padding:"5px 12px",borderBottom:"1px solid var(--border)",background:"rgba(248,113,113,0.14)",color:"var(--status-error)",fontSize:11,flexShrink:0},children:p("files.saveFailed",{error:V})}),(0,n.jsxs)("div",{style:{flex:1,display:"flex",overflow:"hidden"},children:[(0,n.jsx)("div",{ref:Q,"aria-hidden":"true",style:{...uf,height:"100%",overflow:"hidden",whiteSpace:"pre",pointerEvents:"none"},children:O.split("\n").map((e,t)=>`${t+1}
197
197
  `).join("")}),(0,n.jsx)("textarea",{ref:Z,className:"file-editor-textarea",value:O,onChange:e=>B(e.target.value),onScroll:ec,onKeyDown:eu,spellCheck:!1,autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",wrap:"off",style:{flex:1,height:"100%",resize:"none",border:"none",outline:"none",background:"var(--bg)",color:"var(--text)",...ux,whiteSpace:"pre",overflow:"auto",padding:0,tabSize:2}})]})]}):"diff"===I&&eb?eh?(0,n.jsx)(uS,{patch:y.patch}):(0,n.jsx)(uw,{oldContent:f,newContent:h.content}):ef&&T?(0,n.jsx)("iframe",{srcDoc:h.content,sandbox:"allow-scripts",style:{width:"100%",height:"100%",border:"none",background:"var(--bg)"},title:p("desktop.htmlPreview")}):em&&T?(0,n.jsx)("div",{className:"markdown-body markdown-file-preview",style:{padding:"24px 32px"},children:(0,n.jsx)(sP.oz,{remarkPlugins:lj,rehypePlugins:lw,components:{h1:({children:e})=>(0,n.jsx)("h1",{id:lm(e),children:e}),h2:({children:e})=>(0,n.jsx)("h2",{id:lm(e),children:e}),h3:({children:e})=>(0,n.jsx)("h3",{id:lm(e),children:e}),code({className:e,children:t,...r}){let o=e?.replace("language-","").toLowerCase()??"",i=String(t);return e?.includes("language-")||i.includes("\n")?"mermaid"===o?(0,n.jsx)(lB,{code:i.replace(/\n$/,"")}):(0,n.jsx)(lq,{code:i.replace(/\n$/,""),lang:o}):(0,n.jsx)("code",{className:"inline max-w-full whitespace-normal break-words [overflow-wrap:anywhere] align-baseline bg-(--bg-secondary) border border-(--border) px-1.5 py-0.5 text-xs font-mono text-(--accent-blue)",...r,children:t})},pre:({children:e})=>(0,n.jsx)(n.Fragment,{children:e}),a({href:e,children:r,...o}){delete o.node;let s="text-(--accent-blue) underline underline-offset-2 hover:text-(--accent-blue)/80",l=i?sk(e,ev,t??ev):null;return l&&i?(0,n.jsx)("a",{href:e,...o,className:s,onClick:t=>{if(t.defaultPrevented||0!==t.button||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey)return;let r=t.currentTarget.getAttribute("target");r&&"_self"!==r||(t.preventDefault(),i(l,sw(e)??void 0))},children:r}):(0,n.jsx)("a",{href:e,...o,className:s,target:"_blank",rel:"noopener noreferrer",children:r})},table:({children:e})=>(0,n.jsx)("div",{className:"my-3 rounded-lg overflow-hidden border border-(--border)",children:(0,n.jsx)("div",{className:"overflow-x-auto",children:(0,n.jsx)("table",{className:"w-full text-sm border-collapse [&_tr:last-child>td]:border-b-0",children:e})})})},children:ep})}):(0,n.jsx)(sF.A,{language:"text"===h.language?"plaintext":h.language,style:lS,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)"}},lineProps:e=>({className:"file-source-line","data-line-number":String(e)}),wrapLongLines:E,children:h.content})})]})}function uM({sessionId:e,label:t,running:r=!1,onOpenFile:i}){let{t:s}=(0,Y.s)(),[l,a]=(0,o.useState)([]),[d,c]=(0,o.useState)([]),[u,p]=(0,o.useState)(!0),[h,g]=(0,o.useState)(null);(0,o.useEffect)(()=>{let t=!1;return(async r=>{r&&p(!0);try{let r=await fetch(`/api/sessions/${encodeURIComponent(e)}?tail=500`,{cache:"no-store"}),n=await r.json();if(t)return;if(!r.ok)throw Error(n.error??`HTTP ${r.status}`);a(n.context?.messages??[]),c(n.context?.entryIds??[]),g(null)}catch(e){if(t)return;g(e instanceof Error?e.message:String(e))}finally{t||p(!1)}})(!0),()=>{t=!0}},[e]),(0,o.useEffect)(()=>{if(!r)return;let t=!1,n=window.setInterval(async()=>{if("visible"===document.visibilityState)try{let r=await fetch(`/api/sessions/${encodeURIComponent(e)}?tail=500`,{cache:"no-store"});if(!r.ok)return;let n=await r.json();if(t)return;a(n.context?.messages??[]),c(n.context?.entryIds??[])}catch{}},2500);return()=>{t=!0,window.clearInterval(n)}},[r,e]);let x=(0,o.useMemo)(()=>{let e=new Map;for(let t of l)"toolResult"===t.role&&e.set(t.toolCallId,t);return e},[l]),f=(0,o.useMemo)(()=>sN(l,d,void 0,x),[l,d,x]),m=(0,o.useMemo)(()=>l.filter(e=>"user"===e.role||"assistant"===e.role).length,[l]),v=(t,r)=>(0,n.jsx)(ad,{message:r?.messageOverride??l[t],toolResults:f.toolResultsMap,entryId:d[t],sessionId:e,onOpenFile:i},`subagent-msg-${t}`);return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",minHeight:0,background:"var(--bg)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,flexShrink:0,padding:"8px 12px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)"},children:[(0,n.jsx)("span",{style:{fontSize:12,fontWeight:600,color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t||s("subagent.transcriptTitle")}),r&&(0,n.jsx)("span",{style:{marginLeft:"auto",fontSize:11,color:"var(--accent)",whiteSpace:"nowrap"},children:s("agentSwitcher.status.running")})]}),(0,n.jsxs)("div",{className:"scrollbar-subtle scroll-overlay",style:{flex:1,minHeight:0,overflowY:"auto",padding:"10px 12px"},children:[u&&0===l.length&&(0,n.jsx)("div",{style:{color:"var(--text-dim)",fontSize:12},children:s("subagent.transcriptLoading")}),h&&0===l.length&&(0,n.jsx)("div",{style:{color:"var(--status-error)",fontSize:12},children:s("subagent.transcriptFailed",{error:h})}),!u&&!h&&0===m&&(0,n.jsx)("div",{style:{color:"var(--text-dim)",fontSize:12},children:s(r?"subagent.transcriptWaiting":"subagent.transcriptEmpty")}),f.items.map((e,t)=>{if("single"===e.kind)return(0,n.jsx)("div",{children:v(e.idx)},`single-${e.idx}`);let{userIdx:o,endIdx:s,finalAssistantIdx:l,finalAnswerMessage:a}=e,d=t===f.items.length-1,c=r&&d;return(0,n.jsxs)("div",{children:[o>=0&&v(o),e.processSegments.map((t,r)=>(0,n.jsx)(dC,{blocks:t.blocks,isStreaming:c&&r===e.processSegments.length-1&&-1===l,defaultExpanded:c&&r===e.processSegments.length-1&&-1===l,onOpenFile:i},`seg-${o}-${r}`)),a&&v(l,{messageOverride:a}),l>=0&&(()=>{let e=[];for(let t=l+1;t<s;t++)e.push((0,n.jsx)("div",{children:v(t)},`tail-${t}`));return e})()]},`turn-${o}-${t}`)})]})]})}function uE({tabs:e,activeTabId:t,onSelectTab:r,onCloseTab:i}){let{t:s}=(0,Y.s)(),l=(0,o.useRef)(null),[a,d]=(0,o.useState)(!1);(0,o.useEffect)(()=>{if(!t)return;let e=l.current;if(!e)return;let r=e.querySelector(`[data-tab-id="${CSS.escape(t)}"]`);r?.scrollIntoView({block:"nearest",inline:"nearest"})},[t,e.length]),(0,o.useEffect)(()=>{let e=l.current;if(!e)return;let t=()=>d(e.scrollWidth>e.clientWidth+1);t();let r=new ResizeObserver(t);return r.observe(e),()=>r.disconnect()},[e.length]);let c=(0,o.useCallback)((t,n)=>{if(t.target!==t.currentTarget)return;if("Enter"===t.key||" "===t.key){t.preventDefault(),r(n.id);return}if(!["ArrowLeft","ArrowRight","Home","End"].includes(t.key))return;t.preventDefault();let o=e.findIndex(e=>e.id===n.id),i="Home"===t.key?0:"End"===t.key?e.length-1:(o+("ArrowRight"===t.key?1:-1)+e.length)%e.length;r(e[i].id);let s=l.current;s?.querySelector(`[data-tab-id="${CSS.escape(e[i].id)}"]`)?.focus()},[r,e]);return(0,n.jsx)("div",{ref:l,role:"tablist",className:`file-tab-bar${a?"":" no-overflow"}`,children:e.map(o=>{let l=o.id===t;return(0,n.jsxs)("div",{role:"tab","data-tab-id":o.id,"aria-label":"terminal"===o.kind?s("terminal.tabLabel",{name:o.label}):"subagent"===o.kind?s("subagent.transcriptTitle")+": "+o.label:o.label,"aria-selected":l,tabIndex:l||!t&&e[0].id===o.id?0:-1,className:"file-tab",onKeyDown:e=>c(e,o),onClick:()=>r(o.id),onMouseDown:e=>{1===e.button&&e.preventDefault()},onAuxClick:e=>{1===e.button&&(e.preventDefault(),e.stopPropagation(),o.closing||i(o.id))},children:[(0,n.jsx)("span",{className:"file-tab-icon",children:"subagent"===o.kind?(0,n.jsx)(_.d,{size:13,"aria-hidden":"true"}):"terminal"===o.kind?(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)("polyline",{points:"4 17 10 11 4 5"}),(0,n.jsx)("line",{x1:"12",y1:"19",x2:"20",y2:"19"})]}):oE(o.label,13)}),(0,n.jsx)("span",{className:"file-tab-label",title:o.filePath,children:o.label}),(0,n.jsx)("button",{type:"button",className:"file-tab-close",disabled:o.closing,onClick:e=>{e.stopPropagation(),i(o.id)},title:s("desktop.closeTab"),"aria-label":s("desktop.closeTabWithLabel",{label:o.label}),children:(0,n.jsx)(g.X,{size:11,"aria-hidden":"true"})})]},o.id)})})}let u$="pi-web:file-tabs";function uW(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}let uL=new Set(["awaiting_input","review","failed"]),uN=(0,o.createContext)(null);function uA(){let e=(0,o.useContext)(uN);if(!e)throw Error("useTasksView must be used within TasksViewProvider");return e}function uP({children:e}){let{t}=(0,Y.s)(),r=(0,o.useRef)(t);(0,o.useEffect)(()=>{r.current=t},[t]);let[i,s]=(0,o.useState)([]),[l,a]=(0,o.useState)([]),d=(0,o.useRef)(0),c=(0,o.useCallback)(async()=>{let e=++d.current;try{let t=await (0,dU.Wt)(),r=(await Promise.all(t.map(e=>(0,dU.Vk)(e).catch(()=>[])))).flat().sort((e,t)=>t.id-e.id);if(e!==d.current)return;a(e=>uF(e,t)?e:t),s(e=>uF(e,r)?e:r)}catch{}},[]);(0,o.useEffect)(()=>{c();let e=null,t=!1,r=()=>{t||((e=new EventSource("/api/tasks/events")).onmessage=()=>{c()},e.onerror=()=>{e?.close(),e=null,c(),setTimeout(r,2e3)})};r();let n=()=>{"visible"===document.visibilityState&&c()},o=()=>void c();document.addEventListener("visibilitychange",n),window.addEventListener("online",o);let i=setInterval(()=>void c(),6e4);return()=>{t=!0,e?.close(),document.removeEventListener("visibilitychange",n),window.removeEventListener("online",o),clearInterval(i)}},[c]);let u=(0,o.useMemo)(()=>i.filter(e=>uL.has(e.status)&&null==e.archivedAt).length,[i]),p=(0,o.useRef)(null);(0,o.useEffect)(()=>{let e=p.current;if((p.current=new Map(i.map(e=>[e.id,e.status])),e&&0!==i.length)&&"Notification"in window){for(let r of i)if(e.get(r.id)!==r.status&&("review"===r.status||"failed"===r.status)&&null==r.archivedAt&&"visible"!==document.visibilityState)try{let e="review"===r.status?t("tasks.notifyReview",{title:r.title}):t("tasks.notifyFailed",{title:r.title});!function(e,t){new Promise(r=>{if(!("Notification"in window))return void r();let n=()=>{try{new Notification(e,{body:t,tag:"pi-tasks"})}catch{}r()};"granted"===Notification.permission?n():"denied"!==Notification.permission?Notification.requestPermission().then(e=>{"granted"===e?n():r()}):r()})}("Pi Web Tasks",e)}catch{}}},[i,t]);let h=(0,o.useMemo)(()=>({tasks:i,projects:l,attentionCount:u,refetch:c}),[i,l,u,c]);return(0,n.jsx)(uN.Provider,{value:h,children:e})}function uF(e,t){return JSON.stringify(e)===JSON.stringify(t)}var uD=r(4539),uH=r(12449),uO=r(2571);let uB=["todo","inProgress","attention","done"];function uU(e){return"review"===e.status&&0===e.filesChanged}function u_(){return{defaultAgentType:null,modeId:null,configValues:{},autoProcess:!0,maxConcurrent:1,mergeStrategy:"merge",deleteWorktreeDefault:!0,preflightCommand:null,initCommand:null,stagePrompts:null}}let uq=["todo","inProgress","attention","done"],uK={todo:{id:"todo",marker:"var(--text-dim)"},inProgress:{id:"inProgress",marker:"var(--accent)"},attention:{id:"attention",marker:"var(--status-warning)"},done:{id:"done",marker:"var(--status-success)"}};var uV=r(54775),uJ=r(98998),uY=r(36668);function uG({task:e}){let{t}=(0,Y.s)(),r=t("failed"===e.status&&"interrupted"===e.failureReason?"tasks.statusInterrupted":function(e){switch(e){case"todo":return"tasks.statusTodo";case"queued":return"tasks.statusQueued";case"preparing":return"tasks.statusPreparing";case"running":return"tasks.statusRunning";case"awaiting_input":return"tasks.statusAwaitingInput";case"review":return"tasks.statusReview";case"merging":return"tasks.statusMerging";case"done":return"tasks.statusDone";case"failed":return"tasks.statusFailed";case"canceled":return"tasks.statusCanceled"}}(e.status)),o={display:"inline-flex",alignItems:"center",gap:4,borderRadius:999,padding:"2px 8px",fontSize:10,fontWeight:600,lineHeight:1.4,flexShrink:0,whiteSpace:"nowrap"};switch(e.status){case"queued":case"preparing":case"running":case"merging":return(0,n.jsxs)("span",{style:{...o,color:"var(--accent)"},children:[(0,n.jsx)(uV.N,{size:11,className:"pi-spin",style:{animation:"pi-spin 1s linear infinite"},"aria-hidden":"true"}),r]});case"awaiting_input":case"review":return(0,n.jsx)("span",{style:{...o,border:"1px solid rgba(245,158,11,0.45)",background:"rgba(245,158,11,0.08)",color:"var(--status-warning)"},children:r});case"done":return(0,n.jsxs)("span",{style:{...o,background:"rgba(16,185,129,0.12)",color:"#059669"},children:[(0,n.jsx)(f.J,{size:10,weight:"bold","aria-hidden":"true"}),r]});case"failed":return(0,n.jsx)("span",{style:{...o,background:"rgba(239,68,68,0.12)",color:"var(--status-error)"},children:r});default:return(0,n.jsx)("span",{style:{...o,background:"var(--bg-hover)",color:"var(--text-muted)"},children:r})}}function uX({task:e}){let t=e.preflight;if(!t||"review"!==e.status)return null;let r="passed"===t.status?{background:"rgba(16,185,129,0.12)",color:"#059669"}:"failed"===t.status?{background:"rgba(239,68,68,0.12)",color:"var(--status-error)"}:{background:"var(--bg-hover)",color:"var(--text-muted)"};return(0,n.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:4,borderRadius:999,padding:"1px 6px",fontSize:10,fontWeight:500,lineHeight:1.5,maxWidth:"100%",...r},title:t.command,children:["running"===t.status?(0,n.jsx)(uV.N,{size:10,style:{animation:"pi-spin 1s linear infinite"},"aria-hidden":"true"}):"passed"===t.status?(0,n.jsx)(ei.r,{size:10,"aria-hidden":"true"}):(0,n.jsx)(nC.J,{size:10,"aria-hidden":"true"}),(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t.command})]})}function uZ({task:e,folderName:t,now:r,onOpen:o,onStart:i,onCancel:s,onRetry:l,onRequeue:a,onViewSession:d,onMerge:c,onArchive:u,onEdit:p}){let{t:h}=(0,Y.s)(),g=null!=e.archivedAt,x="running"===e.status||"awaiting_input"===e.status||"merging"===e.status,m=null!=e.filesChanged&&e.filesChanged>0?(0,n.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:3,fontFamily:"var(--font-mono)",fontSize:10},children:[(0,n.jsxs)("span",{style:{color:"#059669"},children:["+",e.additions??0]}),(0,n.jsxs)("span",{style:{color:"var(--status-error)"},children:["-",e.deletions??0]})]}):null,v=function(e,t){if(!e)return"";let r=new Date(e).getTime();if(Number.isNaN(r))return"";let n=Math.floor(Math.max(0,t-r)/6e4);if(n<1)return"now";if(n<60)return`${n}m`;let o=Math.floor(n/60);if(o<24)return`${o}h`;let i=Math.floor(o/24);return`${i}d`}(e.finishedAt??e.settledAt??e.startedAt??e.createdAt,r),{primary:y,more:b}=(()=>{let t=[],r=null;if(g)return{primary:r={icon:I.T,label:h("tasks.actionUnarchive"),onClick:u},more:t};switch(e.status){case"todo":r={icon:uO.j,label:h("tasks.actionStart"),onClick:i},t.push({icon:du.S,label:h("tasks.actionEdit"),onClick:p});break;case"queued":case"preparing":case"running":case"awaiting_input":r={icon:uJ.k,label:h("tasks.actionCancel"),onClick:s};break;case"review":r=uU(e)?{icon:f.J,label:h("tasks.actionComplete"),onClick:c}:{icon:uY.r,label:h("tasks.actionMerge"),onClick:c};break;case"merging":break;case"failed":r={icon:z.S,label:h("tasks.actionRetry"),onClick:l},t.push({icon:du.S,label:h("tasks.actionEdit"),onClick:p}),t.push({icon:I.T,label:h("tasks.actionArchive"),onClick:u});break;case"done":r={icon:I.T,label:h("tasks.actionArchive"),onClick:u};break;case"canceled":r={icon:aE.f,label:h("tasks.actionRequeue"),onClick:a},t.push({icon:I.T,label:h("tasks.actionArchive"),onClick:u})}return{primary:r,more:t}})(),k=[...b];return null!=e.conversationId&&k.push({icon:aM.y,label:h("tasks.actionViewSession"),onClick:d}),(0,n.jsxs)("div",{role:"button",tabIndex:0,onClick:o,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),o())},style:{display:"flex",flexDirection:"column",cursor:"pointer",borderRadius:12,border:"1px solid color-mix(in srgb, var(--border) 85%, transparent)",background:"var(--bg-panel)",padding:12,textAlign:"left",transition:"border-color 0.12s",opacity:g?.6:1,boxShadow:"0 1px 2px rgba(0,0,0,0.04)"},className:"task-card-hover",onMouseEnter:e=>{e.currentTarget.style.borderColor="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="color-mix(in srgb, var(--border) 85%, transparent)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:8},children:[(0,n.jsx)("span",{style:{minWidth:0,overflowWrap:"break-word",fontSize:13,fontWeight:500,lineHeight:1.4},children:e.title}),(0,n.jsx)(uG,{task:e})]}),(0,n.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:"2px 6px",marginTop:6,fontSize:11,color:"var(--text-muted)"},children:[t?(0,n.jsx)("span",{style:{maxWidth:160,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t}):null,t&&e.workBranch?(0,n.jsx)("span",{style:{opacity:.5},children:"/"}):null,e.workBranch?(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",fontSize:10,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:180},children:e.workBranch}):null,(t||e.workBranch)&&(m||v)?(0,n.jsx)("span",{style:{opacity:.5},children:"\xb7"}):null,m,m&&v?(0,n.jsx)("span",{style:{opacity:.5},children:"\xb7"}):null,v?(0,n.jsx)("span",{style:{flexShrink:0},children:v}):null,(0,n.jsx)(uX,{task:e})]}),e.lastError&&("failed"===e.status||"review"===e.status)?(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginTop:8,borderRadius:8,background:"rgba(239,68,68,0.08)",padding:"6px 8px",fontSize:11,color:"var(--status-error)"},children:[(0,n.jsx)(l9.t,{size:13,style:{flexShrink:0},"aria-hidden":"true"}),(0,n.jsx)("span",{style:{minWidth:0,flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.lastError}),(0,n.jsx)("button",{type:"button",style:{flexShrink:0,fontWeight:600,background:"none",border:"none",cursor:"pointer",color:"inherit",fontSize:11,textDecoration:"underline"},onClick:e=>{e.stopPropagation(),o()},children:h("tasks.errorView")})]}):null,"review"===e.status&&e.resultSummary?(0,n.jsx)("p",{style:{margin:"6px 0 0",display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden",fontSize:11,lineHeight:1.5,color:"var(--text-muted)"},children:e.resultSummary}):null,x&&e.latestProgress?(0,n.jsx)("p",{style:{margin:"6px 0 0",display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden",fontSize:11,lineHeight:1.5,color:"var(--text-muted)",fontStyle:"italic"},children:e.latestProgress}):null,y||k.length>0?(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginTop:12,paddingTop:12,borderTop:"1px solid var(--border)"},children:[y?(0,n.jsxs)("button",{type:"button",onClick:e=>{e.stopPropagation(),y.onClick()},style:{display:"inline-flex",alignItems:"center",gap:5,padding:"4px 10px",borderRadius:7,background:"var(--accent)",color:"var(--accent-fg)",border:"none",cursor:"pointer",fontSize:11,fontWeight:600},children:[(0,n.jsx)(y.icon,{size:12,weight:"bold","aria-hidden":"true"}),y.label]}):null,(0,n.jsx)("div",{style:{flex:1}}),k.map(e=>(0,n.jsx)("button",{type:"button",title:e.label,"aria-label":e.label,onClick:t=>{t.stopPropagation(),e.onClick()},style:{display:"flex",alignItems:"center",justifyContent:"center",width:26,height:26,padding:0,borderRadius:999,background:"none",border:"1px solid var(--border)",color:"var(--text-muted)",cursor:"pointer",opacity:0,transition:"opacity 0.12s, background 0.12s, color 0.12s"},className:"task-card-secondary",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.jsx)(e.icon,{size:13,"aria-hidden":"true"})},e.label))]}):null]})}function uQ({open:e,onOpenChange:t,task:r}){let{t:i}=(0,Y.s)(),{refetch:s}=uA(),[l,a]=(0,o.useState)(""),[d,c]=(0,o.useState)(!1);if(L(!d,()=>t(!1)),(0,o.useEffect)(()=>{e&&(a(""),c(!1))},[e,r]),!e||!r)return null;let u=async()=>{if(!d){c(!0);try{await (0,dU.oQ)(r.id,r.projectRoot,"cancel",{reason:l.trim()||null}),t(!1),s()}catch(e){console.error("cancel failed",e)}finally{c(!1)}}};return(0,n.jsx)("div",{style:{position:"fixed",inset:0,zIndex:950,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.45)"},children:(0,n.jsxs)("div",{style:{width:"min(440px, calc(100vw - 48px))",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:14,boxShadow:"0 16px 48px rgba(0,0,0,0.3)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"14px 16px 0"},children:[(0,n.jsx)("h3",{style:{fontSize:15,fontWeight:600,margin:0},children:i("tasks.cancelTitle")}),(0,n.jsx)("button",{type:"button",onClick:()=>t(!1),"aria-label":i("i18n.close"),style:{background:"none",border:"none",cursor:"pointer",color:"var(--text-muted)",padding:4,display:"flex"},children:(0,n.jsx)(g.X,{size:16,"aria-hidden":"true"})})]}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:12,padding:"14px 16px 16px"},children:[(0,n.jsx)("p",{style:{margin:0,fontSize:12,lineHeight:1.5,color:"var(--text-muted)"},children:i("tasks.cancelDescription")}),(0,n.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:5},children:[(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text-muted)"},children:i("tasks.cancelReasonLabel")}),(0,n.jsx)("textarea",{value:l,onChange:e=>a(e.target.value),placeholder:i("tasks.cancelReasonPlaceholder"),rows:3,autoFocus:!0,style:{width:"100%",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,padding:"8px 10px",color:"var(--text)",fontSize:13,outline:"none",fontFamily:"inherit",resize:"vertical"}})]}),(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,marginTop:4},children:[(0,n.jsx)("button",{type:"button",onClick:()=>t(!1),disabled:d,style:{padding:"8px 14px",borderRadius:8,background:"none",border:"1px solid var(--border)",color:"var(--text)",fontSize:12,cursor:"pointer"},children:i("tasks.cancelKeep")}),(0,n.jsx)("button",{type:"button",onClick:()=>void u(),disabled:d,style:{padding:"8px 16px",borderRadius:8,background:"var(--accent)",color:"var(--accent-fg)",border:"none",fontSize:12,fontWeight:600,cursor:"pointer"},children:i("tasks.cancelSubmit")})]})]})]})})}function u0({open:e,onOpenChange:t,task:r}){let{t:i}=(0,Y.s)(),{refetch:s}=uA(),[l,a]=(0,o.useState)(!0),[d,c]=(0,o.useState)(!1);L(!d,()=>t(!1));let u=r?.worktreePath!=null;if((0,o.useEffect)(()=>{if(!e||!r)return;c(!1);let t=!1;return(0,dU.CG)(r.projectRoot).then(e=>{t||a(e.deleteWorktreeDefault)}).catch(()=>{t||a(!0)}),()=>{t=!0}},[e,r]),!e||!r)return null;let p=async()=>{if(!d){c(!0);try{await (0,dU.ZX)(r.id,r.projectRoot,u&&l),t(!1),s()}catch(e){console.error("complete failed",e)}finally{c(!1)}}};return(0,n.jsx)("div",{style:{position:"fixed",inset:0,zIndex:950,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.45)"},children:(0,n.jsxs)("div",{style:{width:"min(440px, calc(100vw - 48px))",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:14,boxShadow:"0 16px 48px rgba(0,0,0,0.3)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"14px 16px 0"},children:[(0,n.jsx)("h3",{style:{fontSize:15,fontWeight:600,margin:0},children:i("tasks.completeTitle")}),(0,n.jsx)("button",{type:"button",onClick:()=>t(!1),"aria-label":i("i18n.close"),style:{background:"none",border:"none",cursor:"pointer",color:"var(--text-muted)",padding:4,display:"flex"},children:(0,n.jsx)(g.X,{size:16,"aria-hidden":"true"})})]}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:12,padding:"14px 16px 16px"},children:[(0,n.jsx)("p",{style:{margin:0,fontSize:12,lineHeight:1.5,color:"var(--text-muted)"},children:i("tasks.completeDescription")}),u?(0,n.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:8,fontSize:13,cursor:"pointer"},children:[(0,n.jsx)("input",{type:"checkbox",checked:l,onChange:e=>a(e.target.checked),style:{accentColor:"var(--accent)"}}),i("tasks.completeDeleteWorktree")]}):null,(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,marginTop:4},children:[(0,n.jsx)("button",{type:"button",onClick:()=>t(!1),disabled:d,style:{padding:"8px 14px",borderRadius:8,background:"none",border:"1px solid var(--border)",color:"var(--text)",fontSize:12,cursor:"pointer"},children:i("i18n.cancel")}),(0,n.jsx)("button",{type:"button",onClick:()=>void p(),disabled:d,style:{padding:"8px 16px",borderRadius:8,background:"var(--accent)",color:"var(--accent-fg)",border:"none",fontSize:12,fontWeight:600,cursor:"pointer"},children:i("tasks.completeSubmit")})]})]})]})})}var u1=r(51285),u2=r(16894);function u6({open:e,onOpenChange:t,task:r,onViewSession:i,onMerge:s,onEdit:l,onCancel:a,onRetry:d,onRequeue:c,onComplete:u}){let{t:p}=(0,Y.s)(),{refetch:h}=uA(),[x,m]=(0,o.useState)([]),[v,y]=(0,o.useState)([]),[b,j]=(0,o.useState)(null),[w,S]=(0,o.useState)(null),[C,R]=(0,o.useState)(!1),[M,E]=(0,o.useState)(!1),[$,W]=(0,o.useState)(""),[N,A]=(0,o.useState)(!1),[P,F]=(0,o.useState)(!1),[D,H]=(0,o.useState)(!1);L(!0,()=>t(!1));let O=r?.id??null,B=r?.projectRoot??null,U=(0,o.useCallback)(async()=>{if(null==O||null==B)return;let[e,t]=await Promise.all([(0,dU.HB)(B,O).catch(()=>[]),r?.worktreePath?(0,dU.JH)(B,O).then(e=>e.files).catch(()=>[]):Promise.resolve([])]);m(e),y(t)},[O,B,r?.worktreePath]);(0,o.useEffect)(()=>{if(!e||null==O)return;m([]),y([]),E(!1),W(""),U();let t=window.setInterval(()=>void U(),5e3);return()=>window.clearInterval(t)},[e,O,U]);let _=(0,o.useCallback)(async e=>{H(!0);try{await e()}catch(e){console.error("detail action failed",e)}finally{H(!1),h()}},[h]),q=(0,o.useCallback)(async e=>{if(null!=B&&null!=O){R(!0);try{let t=await (0,dU.h)(B,O,e);S(t.supported&&t.patch?t.patch:null)}catch{S(null)}finally{R(!1)}}},[B,O]),K=async()=>{null!=r&&null!=B&&(await _(()=>(0,dU.bH)(r.id,B,P)),t(!1))},V=async()=>{null!=r&&null!=B&&$.trim()&&(await _(()=>(0,dU.in)(r.id,B,$.trim())),E(!1),W(""))};if(!e||null==r||null==B)return null;let J=[];if(null==r.archivedAt)switch(r.status){case"todo":J.push({label:p("tasks.actionStart"),icon:uO.j,onClick:()=>void _(()=>(0,dU.oQ)(r.id,B,"start")),filled:!0}),J.push({label:p("tasks.actionEdit"),icon:du.S,onClick:()=>l(r)});break;case"queued":case"preparing":case"running":case"awaiting_input":J.push({label:p("tasks.actionCancel"),icon:uJ.k,onClick:()=>a(r),danger:!0});break;case"review":J.push({label:uU(r)?p("tasks.actionComplete"):p("tasks.actionMerge"),icon:uU(r)?f.J:u1.Y,onClick:()=>uU(r)?u(r):s(r),filled:!0}),J.push({label:p("tasks.actionReturn"),icon:aE.f,onClick:()=>E(!0)});break;case"failed":J.push({label:p("tasks.actionRetry"),icon:z.S,onClick:()=>d(r),filled:!0}),J.push({label:p("tasks.actionEdit"),icon:du.S,onClick:()=>l(r)});break;case"done":J.push({label:p("tasks.actionArchive"),icon:I.T,onClick:()=>void _(()=>(0,dU.et)(r.id,B,!0))});break;case"canceled":J.push({label:p("tasks.actionRequeue"),icon:aE.f,onClick:()=>c(r),filled:!0})}else J.push({label:p("tasks.actionUnarchive"),icon:I.T,onClick:()=>void _(()=>(0,dU.et)(r.id,B,!1))});return null!=r.conversationId&&J.push({label:p("tasks.actionViewSession"),icon:aM.y,onClick:()=>i(r)}),(0,n.jsx)("div",{style:{position:"fixed",inset:0,zIndex:800,background:"rgba(0,0,0,0.35)"},children:(0,n.jsxs)("div",{style:{position:"absolute",top:0,right:0,bottom:0,width:"min(480px, 90vw)",background:"var(--bg-panel)",borderLeft:"1px solid var(--border)",display:"flex",flexDirection:"column",boxShadow:"-8px 0 32px rgba(0,0,0,0.2)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:12,padding:"16px 16px 0"},children:[(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("h3",{style:{margin:0,fontSize:15,fontWeight:600,lineHeight:1.4,overflowWrap:"break-word"},children:r.title}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginTop:6},children:[(0,n.jsx)(uG,{task:r}),r.workBranch?(0,n.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:4,fontFamily:"var(--font-mono)",fontSize:11,color:"var(--text-muted)"},children:[(0,n.jsx)(k.Z,{size:12,"aria-hidden":"true"}),r.workBranch]}):null]})]}),(0,n.jsx)("button",{type:"button",onClick:()=>t(!1),"aria-label":p("i18n.close"),style:{background:"none",border:"none",cursor:"pointer",color:"var(--text-muted)",padding:4,display:"flex",flexShrink:0},children:(0,n.jsx)(g.X,{size:16,"aria-hidden":"true"})})]}),(0,n.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:8,padding:"14px 16px 0"},children:J.map(e=>{let t,r;return(0,n.jsxs)("button",{type:"button",onClick:e.onClick,disabled:D,style:(t=e.filled,r=e.danger,{display:"inline-flex",alignItems:"center",gap:5,padding:"7px 12px",borderRadius:8,fontSize:12,fontWeight:600,cursor:"pointer",background:t?"var(--accent)":r?"rgba(239,68,68,0.1)":"var(--bg-hover)",color:t?"#fff":r?"var(--status-error)":"var(--text)",border:t||r?"none":"1px solid var(--border)"}),children:[(0,n.jsx)(e.icon,{size:13,weight:"bold","aria-hidden":"true"}),e.label]},e.label)})}),M&&(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:8,padding:"12px 16px 0"},children:[(0,n.jsx)("textarea",{value:$,onChange:e=>W(e.target.value),placeholder:p("tasks.returnPlaceholder"),rows:3,style:{width:"100%",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,padding:"8px 10px",color:"var(--text)",fontSize:12,resize:"vertical",fontFamily:"inherit"}}),(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:8},children:[(0,n.jsx)("button",{type:"button",onClick:()=>E(!1),style:{padding:"6px 12px",borderRadius:8,background:"none",border:"1px solid var(--border)",color:"var(--text)",fontSize:12,cursor:"pointer"},children:p("i18n.cancel")}),(0,n.jsx)("button",{type:"button",onClick:()=>void V(),disabled:!$.trim(),style:{padding:"6px 14px",borderRadius:8,background:"var(--accent)",color:"var(--accent-fg)",border:"none",fontSize:12,fontWeight:600,cursor:"pointer"},children:p("tasks.returnSubmit")})]})]}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:6,padding:"14px 16px 0",fontSize:12,color:"var(--text-muted)"},children:[(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsx)("span",{style:{flexShrink:0,color:"var(--text-dim)",width:64},children:p("tasks.metaProject")}),(0,n.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"var(--font-mono)",fontSize:11},children:r.projectRoot})]}),r.createdAt?(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsx)("span",{style:{flexShrink:0,color:"var(--text-dim)",width:64},children:p("tasks.metaCreated")}),(0,n.jsx)("span",{children:new Date(r.createdAt).toLocaleString()})]}):null,r.mergeCommit?(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsx)("span",{style:{flexShrink:0,color:"var(--text-dim)",width:64},children:p("tasks.metaCommit")}),(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",fontSize:11},children:r.mergeCommit})]}):null]}),v.length>0&&(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:4,padding:"14px 16px 0"},children:[(0,n.jsx)("span",{style:{fontSize:11,fontWeight:600,color:"var(--text-muted)",textTransform:"uppercase",letterSpacing:"0.05em"},children:p("tasks.changedFiles")}),(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:2,maxHeight:140,overflowY:"auto"},children:v.map(e=>(0,n.jsxs)("button",{type:"button",onClick:()=>{var t;j(t=e.file),S(null),q(t)},style:{display:"flex",alignItems:"center",gap:8,textAlign:"left",padding:"4px 6px",borderRadius:6,background:"none",border:"none",color:"var(--text)",fontSize:12,cursor:"pointer"},children:[(0,n.jsx)(u2.o,{size:13,style:{flexShrink:0,color:"var(--text-muted)"},"aria-hidden":"true"}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"var(--font-mono)",fontSize:11},children:e.file}),(0,n.jsxs)("span",{style:{fontFamily:"var(--font-mono)",fontSize:10,color:"#059669",flexShrink:0},children:["+",e.additions]}),(0,n.jsxs)("span",{style:{fontFamily:"var(--font-mono)",fontSize:10,color:"var(--status-error)",flexShrink:0},children:["-",e.deletions]})]},e.file))})]}),null!=b&&(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:6,padding:"12px 16px 0",minHeight:0,flexShrink:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,n.jsx)("span",{style:{fontSize:11,fontWeight:600,color:"var(--text-muted)"},children:p("tasks.diff")}),(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",fontSize:10,color:"var(--text-muted)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1},children:b}),(0,n.jsx)("button",{type:"button",onClick:()=>j(null),style:{background:"none",border:"none",cursor:"pointer",color:"var(--text-muted)",padding:2,display:"flex"},children:(0,n.jsx)(g.X,{size:12,"aria-hidden":"true"})})]}),C?(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text-muted)",padding:8},children:p("tasks.loading")}):w?(0,n.jsx)("pre",{style:{margin:0,maxHeight:200,overflow:"auto",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,padding:10,fontSize:11,lineHeight:1.5,fontFamily:"var(--font-mono)",color:"var(--text-muted)",whiteSpace:"pre"},children:w.split("\n").map((e,t)=>{let r;return e.startsWith("+")&&!e.startsWith("+++")?r="#059669":e.startsWith("-")&&!e.startsWith("---")?r="var(--status-error)":e.startsWith("@@")&&(r="var(--accent)"),(0,n.jsx)("div",{style:{color:r},children:e||" "},t)})}):(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text-muted)",padding:8},children:p("tasks.noDiff")})]}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:4,padding:"14px 16px 0",flex:1,minHeight:0},children:[(0,n.jsx)("span",{style:{fontSize:11,fontWeight:600,color:"var(--text-muted)",textTransform:"uppercase",letterSpacing:"0.05em"},children:p("tasks.timeline")}),(0,n.jsx)("div",{style:{flex:1,minHeight:0,overflowY:"auto",paddingBottom:8},children:0===x.length?(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text-dim)",padding:8},children:p("tasks.noEvents")}):(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:2},children:[...x].reverse().map(e=>{var t;let r,o;return(0,n.jsxs)("div",{style:{display:"flex",gap:8,padding:"4px 6px",borderRadius:6,fontSize:11},children:[(0,n.jsx)("span",{style:{color:"var(--text-dim)",flexShrink:0,fontFamily:"var(--font-mono)",fontSize:10,paddingTop:1},children:new Date(e.createdAt).toLocaleTimeString()}),(0,n.jsx)("span",{style:{color:"var(--text)",flexShrink:0,fontWeight:500},children:(t=e.kind,(o=p(r=`tasks.event_${t}`))===r?t:o)}),e.payload?.feedback?(0,n.jsx)("span",{style:{color:"var(--text-muted)",fontStyle:"italic",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:String(e.payload.feedback)}):null]},e.id)})})})]}),(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:8,padding:"10px 16px",borderTop:"1px solid var(--border)",flexShrink:0},children:N?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:6,fontSize:12,cursor:"pointer"},children:[(0,n.jsx)("input",{type:"checkbox",checked:P,onChange:e=>F(e.target.checked),style:{accentColor:"var(--accent)"}}),p("tasks.deleteWorktree")]}),(0,n.jsx)("button",{type:"button",onClick:()=>A(!1),style:{padding:"6px 12px",borderRadius:8,background:"none",border:"1px solid var(--border)",color:"var(--text)",fontSize:12,cursor:"pointer"},children:p("i18n.cancel")}),(0,n.jsx)("button",{type:"button",onClick:()=>void K(),disabled:D,style:{padding:"6px 14px",borderRadius:8,background:"var(--status-error)",color:"#fff",border:"none",fontSize:12,fontWeight:600,cursor:"pointer"},children:p("tasks.deleteConfirm")})]}):(0,n.jsxs)("button",{type:"button",onClick:()=>A(!0),style:{display:"inline-flex",alignItems:"center",gap:5,padding:"6px 12px",borderRadius:8,background:"none",border:"1px solid var(--border)",color:"var(--status-error)",fontSize:12,cursor:"pointer"},children:[(0,n.jsx)(T.l,{size:13,"aria-hidden":"true"}),p("tasks.delete")]})})]})})}var u4=r(17757);function u5({open:e,onOpenChange:t,task:r,defaultProject:i,projects:s,prefillTitle:l,prefillPrompt:a,onSubmit:d}){let{t:c}=(0,Y.s)(),[u,p]=(0,o.useState)(""),[h,x]=(0,o.useState)(""),[f,m]=(0,o.useState)(""),[v,y]=(0,o.useState)([]),[b,k]=(0,o.useState)(""),[j,w]=(0,o.useState)(!1);L(!j,()=>t(!1));let S=(0,o.useRef)(!1);if((0,o.useEffect)(()=>{if(!e){S.current=!1;return}S.current||(S.current=!0,p(r?.projectRoot??i??s[0]??""),x(r?.title??l??""),m(r?.config?.prompt??a??""),(0,dU.VB)().then(y).catch(()=>void 0))},[e,r,i,s,l,a]),!e)return null;let C=async()=>{if(u&&h.trim()&&!j){w(!0);try{await d(u,h.trim(),{prompt:f.trim(),agentType:r?.config?.agentType??null,modelId:r?.config?.modelId??null,thinkingLevel:r?.config?.thinkingLevel??null}),t(!1)}catch(e){console.error("submit task failed",e)}finally{w(!1)}}},z=async()=>{if(b.trim()&&h.trim())try{await (0,dU.nY)({name:b.trim(),title:h.trim(),config:{prompt:f.trim()}}),k(""),(0,dU.VB)().then(y).catch(()=>void 0)}catch(e){console.error("save template failed",e)}},R=async e=>{try{await (0,dU.B_)(e),(0,dU.VB)().then(y).catch(()=>void 0)}catch(e){console.error("delete template failed",e)}},I={width:"100%",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,padding:"8px 10px",color:"var(--text)",fontSize:13,outline:"none"};return(0,n.jsx)("div",{style:{position:"fixed",inset:0,zIndex:900,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.45)"},children:(0,n.jsxs)("div",{style:{width:"min(520px, calc(100vw - 48px))",maxHeight:"80vh",overflowY:"auto",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:14,boxShadow:"0 16px 48px rgba(0,0,0,0.3)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"14px 16px 0"},children:[(0,n.jsx)("h3",{style:{fontSize:15,fontWeight:600,margin:0},children:r?c("tasks.editTitle"):c("tasks.newTitle")}),(0,n.jsx)("button",{type:"button",onClick:()=>t(!1),"aria-label":c("i18n.close"),style:{background:"none",border:"none",cursor:"pointer",color:"var(--text-muted)",padding:4,display:"flex"},children:(0,n.jsx)(g.X,{size:16,"aria-hidden":"true"})})]}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:12,padding:"14px 16px 16px"},children:[v.length>0&&(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[(0,n.jsx)("span",{style:{fontSize:11,fontWeight:600,color:"var(--text-muted)",textTransform:"uppercase",letterSpacing:"0.05em"},children:c("tasks.templates")}),(0,n.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:v.map(e=>(0,n.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:4,borderRadius:999,background:"var(--bg-hover)",padding:"3px 8px",fontSize:11},children:[(0,n.jsx)("button",{type:"button",onClick:()=>{x(e.title),m(e.config?.prompt??"")},style:{background:"none",border:"none",cursor:"pointer",color:"var(--text)",fontSize:11,padding:0},children:e.name}),(0,n.jsx)("button",{type:"button",onClick:()=>void R(e.id),"aria-label":c("tasks.deleteTemplate"),style:{background:"none",border:"none",cursor:"pointer",color:"var(--text-dim)",padding:0,display:"flex"},children:(0,n.jsx)(T.l,{size:10,"aria-hidden":"true"})})]},e.id))})]}),(0,n.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:4},children:[(0,n.jsx)("span",{style:{fontSize:12,fontWeight:500,color:"var(--text)"},children:c("tasks.fieldProject")}),(0,n.jsx)("select",{value:u,onChange:e=>p(e.target.value),style:I,children:s.map(e=>(0,n.jsx)("option",{value:e,children:e.split("/").filter(Boolean).pop()??e},e))})]}),(0,n.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:4},children:[(0,n.jsx)("span",{style:{fontSize:12,fontWeight:500,color:"var(--text)"},children:c("tasks.fieldTitle")}),(0,n.jsx)("input",{value:h,onChange:e=>x(e.target.value),placeholder:c("tasks.fieldTitlePlaceholder"),style:I,autoFocus:!0})]}),(0,n.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:4},children:[(0,n.jsx)("span",{style:{fontSize:12,fontWeight:500,color:"var(--text)"},children:c("tasks.fieldPrompt")}),(0,n.jsx)("textarea",{value:f,onChange:e=>m(e.target.value),placeholder:c("tasks.fieldPromptPlaceholder"),rows:6,style:{...I,resize:"vertical",fontFamily:"inherit",lineHeight:1.5}})]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6},children:[(0,n.jsx)("input",{value:b,onChange:e=>k(e.target.value),placeholder:c("tasks.templateNamePlaceholder"),style:{...I,flex:1}}),(0,n.jsxs)("button",{type:"button",onClick:()=>void z(),disabled:!b.trim()||!h.trim(),style:{display:"inline-flex",alignItems:"center",gap:5,padding:"8px 12px",borderRadius:8,background:"var(--bg-hover)",border:"1px solid var(--border)",color:"var(--text)",fontSize:12,cursor:"pointer"},children:[(0,n.jsx)(u4.D,{size:13,"aria-hidden":"true"}),c("tasks.saveAsTemplate")]})]}),(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,marginTop:4},children:[(0,n.jsx)("button",{type:"button",onClick:()=>t(!1),style:{padding:"8px 14px",borderRadius:8,background:"none",border:"1px solid var(--border)",color:"var(--text)",fontSize:12,cursor:"pointer"},children:c("i18n.cancel")}),(0,n.jsx)("button",{type:"button",onClick:()=>void C(),disabled:!u||!h.trim()||j,style:{padding:"8px 16px",borderRadius:8,background:"var(--accent)",color:"var(--accent-fg)",border:"none",fontSize:12,fontWeight:600,cursor:"pointer"},children:c("tasks.save")})]})]})]})})}function u3({open:e,onOpenChange:t,task:r}){let{t:i}=(0,Y.s)(),{refetch:s}=uA(),[l,a]=(0,o.useState)(!0),[d,c]=(0,o.useState)(""),[u,p]=(0,o.useState)(!0),[h,x]=(0,o.useState)(!1);if(L(!h,()=>t(!1)),(0,o.useEffect)(()=>{e&&r&&(a(!0),c(r.title),x(!1),(0,dU.CG)(r.projectRoot).then(e=>p(e.deleteWorktreeDefault)).catch(()=>p(!0)))},[e,r]),!e||!r)return null;let f=async()=>{if((l||d.trim())&&!h){x(!0);try{await (0,dU.oB)(r.id,r.projectRoot,l?null:d.trim(),u),t(!1),s()}catch(e){console.error("merge failed",e)}finally{x(!1)}}};return(0,n.jsx)("div",{style:{position:"fixed",inset:0,zIndex:950,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.45)"},children:(0,n.jsxs)("div",{style:{width:"min(440px, calc(100vw - 48px))",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:14,boxShadow:"0 16px 48px rgba(0,0,0,0.3)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"14px 16px 0"},children:[(0,n.jsx)("h3",{style:{fontSize:15,fontWeight:600,margin:0},children:i("tasks.mergeTitle")}),(0,n.jsx)("button",{type:"button",onClick:()=>t(!1),"aria-label":i("i18n.close"),style:{background:"none",border:"none",cursor:"pointer",color:"var(--text-muted)",padding:4,display:"flex"},children:(0,n.jsx)(g.X,{size:16,"aria-hidden":"true"})})]}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:12,padding:"14px 16px 16px"},children:[(0,n.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:8,fontSize:13,cursor:"pointer"},children:[(0,n.jsx)("input",{type:"radio",checked:l,onChange:()=>a(!0),style:{accentColor:"var(--accent)"}}),i("tasks.mergeAutoMessage")]}),(0,n.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:8,fontSize:13,cursor:"pointer"},children:[(0,n.jsx)("input",{type:"radio",checked:!l,onChange:()=>a(!1),style:{accentColor:"var(--accent)"}}),i("tasks.mergeManualMessage")]}),!l&&(0,n.jsx)("input",{value:d,onChange:e=>c(e.target.value),placeholder:i("tasks.mergeMessagePlaceholder"),style:{width:"100%",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,padding:"8px 10px",color:"var(--text)",fontSize:13,outline:"none",fontFamily:"inherit"}}),(0,n.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:8,fontSize:13,cursor:"pointer"},children:[(0,n.jsx)("input",{type:"checkbox",checked:u,onChange:e=>p(e.target.checked),style:{accentColor:"var(--accent)"}}),i("tasks.mergeDeleteWorktree")]}),(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,marginTop:4},children:[(0,n.jsx)("button",{type:"button",onClick:()=>t(!1),style:{padding:"8px 14px",borderRadius:8,background:"none",border:"1px solid var(--border)",color:"var(--text)",fontSize:12,cursor:"pointer"},children:i("i18n.cancel")}),(0,n.jsx)("button",{type:"button",onClick:()=>void f(),disabled:!l&&!d.trim()||h,style:{padding:"8px 16px",borderRadius:8,background:"var(--accent)",color:"var(--accent-fg)",border:"none",fontSize:12,fontWeight:600,cursor:"pointer"},children:i("tasks.mergeConfirm")})]})]})]})})}function u8({open:e,onOpenChange:t,task:r,kind:i}){let{t:s}=(0,Y.s)(),{refetch:l}=uA(),[a,d]=(0,o.useState)(""),[c,u]=(0,o.useState)(!1);if(L(!c,()=>t(!1)),(0,o.useEffect)(()=>{e&&(d(""),u(!1))},[e,r]),!e||!r)return null;let p="retry"===i,h=async()=>{if(!c){u(!0);try{await (0,dU.oQ)(r.id,r.projectRoot,i,{note:a.trim()||null}),t(!1),l()}catch(e){console.error("restart failed",e)}finally{u(!1)}}};return(0,n.jsx)("div",{style:{position:"fixed",inset:0,zIndex:950,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.45)"},children:(0,n.jsxs)("div",{style:{width:"min(480px, calc(100vw - 48px))",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:14,boxShadow:"0 16px 48px rgba(0,0,0,0.3)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"14px 16px 0"},children:[(0,n.jsx)("h3",{style:{fontSize:15,fontWeight:600,margin:0},children:s(p?"tasks.restartTitleRetry":"tasks.restartTitleRequeue")}),(0,n.jsx)("button",{type:"button",onClick:()=>t(!1),"aria-label":s("i18n.close"),style:{background:"none",border:"none",cursor:"pointer",color:"var(--text-muted)",padding:4,display:"flex"},children:(0,n.jsx)(g.X,{size:16,"aria-hidden":"true"})})]}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:12,padding:"14px 16px 16px"},children:[(0,n.jsx)("p",{style:{margin:0,fontSize:12,lineHeight:1.5,color:"var(--text-muted)"},children:s("tasks.restartDescription")}),(0,n.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:5},children:[(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text-muted)"},children:s("tasks.actionAddNote")}),(0,n.jsx)("textarea",{value:a,onChange:e=>d(e.target.value),placeholder:s(p?"tasks.followUpPlaceholderRetry":"tasks.followUpPlaceholderRequeue"),rows:3,autoFocus:!0,style:{width:"100%",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,padding:"8px 10px",color:"var(--text)",fontSize:13,outline:"none",fontFamily:"inherit",resize:"vertical"}})]}),(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,marginTop:4},children:[(0,n.jsx)("button",{type:"button",onClick:()=>t(!1),disabled:c,style:{padding:"8px 14px",borderRadius:8,background:"none",border:"1px solid var(--border)",color:"var(--text)",fontSize:12,cursor:"pointer"},children:s("i18n.cancel")}),(0,n.jsx)("button",{type:"button",onClick:()=>void h(),disabled:c,style:{padding:"8px 16px",borderRadius:8,background:"var(--accent)",color:"var(--accent-fg)",border:"none",fontSize:12,fontWeight:600,cursor:"pointer"},children:s(p?"tasks.actionRetry":"tasks.actionRequeue")})]})]})]})})}let u7=["work","retry","return","merge"];function u9({open:e,onOpenChange:t,projectRoot:r}){let{t:i}=(0,Y.s)(),{projects:s}=uA(),[l,a]=(0,o.useState)(""),[d,c]=(0,o.useState)(()=>u_()),[u,p]=(0,o.useState)(!1),[h,x]=(0,o.useState)(!1);if(L(!h,()=>t(!1)),(0,o.useEffect)(()=>{if(!e)return;let t=r??s[0]??"";a(t),t&&(0,dU.Pf)(t).then(e=>{p(null!=e),c(e??u_())}).catch(()=>{p(!1),c(u_())})},[e,r,s]),!e)return null;let f=(e,t)=>{c(r=>({...r,[e]:t}))},m=async()=>{if(l&&!h){x(!0);try{await (0,dU.eA)(l,d),p(!0),t(!1)}catch(e){console.error("save settings failed",e)}finally{x(!1)}}},v=async()=>{if(l)try{await (0,dU.E)(l),p(!1),c(u_())}catch(e){console.error("reset settings failed",e)}},y={width:"100%",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,padding:"7px 10px",color:"var(--text)",fontSize:12,outline:"none",fontFamily:"inherit"},b={display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,padding:"10px 0",borderBottom:"1px solid var(--border)"};return(0,n.jsx)("div",{style:{position:"fixed",inset:0,zIndex:960,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.45)"},children:(0,n.jsxs)("div",{style:{width:"min(560px, calc(100vw - 48px))",maxHeight:"82vh",overflowY:"auto",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:14,boxShadow:"0 16px 48px rgba(0,0,0,0.3)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"14px 16px 0"},children:[(0,n.jsx)("h3",{style:{fontSize:15,fontWeight:600,margin:0},children:i("tasks.settingsTitle")}),(0,n.jsx)("button",{type:"button",onClick:()=>t(!1),"aria-label":i("i18n.close"),style:{background:"none",border:"none",cursor:"pointer",color:"var(--text-muted)",padding:4,display:"flex"},children:(0,n.jsx)(g.X,{size:16,"aria-hidden":"true"})})]}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:10,padding:"14px 16px 16px"},children:[(0,n.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:4},children:[(0,n.jsx)("span",{style:{fontSize:12,fontWeight:500},children:i("tasks.settingsProject")}),(0,n.jsx)("select",{value:l,onChange:e=>a(e.target.value),style:y,children:s.map(e=>(0,n.jsx)("option",{value:e,children:e.split("/").filter(Boolean).pop()??e},e))})]}),l?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{style:b,children:[(0,n.jsx)("span",{style:{fontSize:12},children:i("tasks.settingsAutoProcess")}),(0,n.jsx)("input",{type:"checkbox",checked:d.autoProcess,onChange:e=>f("autoProcess",e.target.checked),style:{accentColor:"var(--accent)"}})]}),(0,n.jsxs)("div",{style:b,children:[(0,n.jsx)("span",{style:{fontSize:12},children:i("tasks.settingsMaxConcurrent")}),(0,n.jsx)("input",{type:"number",min:0,value:d.maxConcurrent,onChange:e=>f("maxConcurrent",Math.max(0,Number(e.target.value)||0)),style:{...y,width:90}})]}),(0,n.jsxs)("div",{style:b,children:[(0,n.jsx)("span",{style:{fontSize:12},children:i("tasks.settingsMergeStrategy")}),(0,n.jsxs)("select",{value:d.mergeStrategy,onChange:e=>f("mergeStrategy",e.target.value),style:{...y,width:140},children:[(0,n.jsx)("option",{value:"merge",children:i("tasks.mergeStrategyMerge")}),(0,n.jsx)("option",{value:"squash",children:i("tasks.mergeStrategySquash")})]})]}),(0,n.jsxs)("div",{style:b,children:[(0,n.jsx)("span",{style:{fontSize:12},children:i("tasks.settingsDeleteWorktree")}),(0,n.jsx)("input",{type:"checkbox",checked:d.deleteWorktreeDefault,onChange:e=>f("deleteWorktreeDefault",e.target.checked),style:{accentColor:"var(--accent)"}})]}),(0,n.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:4},children:[(0,n.jsx)("span",{style:{fontSize:12},children:i("tasks.settingsPreflightCommand")}),(0,n.jsx)("input",{value:d.preflightCommand??"",onChange:e=>f("preflightCommand",e.target.value||null),placeholder:i("tasks.settingsPreflightPlaceholder"),style:{...y,fontFamily:"var(--font-mono)",fontSize:11}})]}),(0,n.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:4},children:[(0,n.jsx)("span",{style:{fontSize:12},children:i("tasks.settingsInitCommand")}),(0,n.jsx)("input",{value:d.initCommand??"",onChange:e=>f("initCommand",e.target.value||null),placeholder:i("tasks.settingsInitPlaceholder"),style:{...y,fontFamily:"var(--font-mono)",fontSize:11}})]}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:6,paddingTop:4},children:[(0,n.jsx)("span",{style:{fontSize:12,fontWeight:500},children:i("tasks.settingsStagePrompts")}),u7.map(e=>(0,n.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:4},children:[(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-muted)"},children:i(`tasks.stage.${e}`)}),(0,n.jsx)("input",{value:d.stagePrompts?.[e]??"",onChange:t=>f("stagePrompts",{...d.stagePrompts??{},[e]:t.target.value}),style:{...y,fontSize:11}})]},e))]}),u&&(0,n.jsx)("button",{type:"button",onClick:()=>void v(),style:{alignSelf:"flex-start",padding:"6px 12px",borderRadius:8,background:"none",border:"1px solid var(--border)",color:"var(--text-muted)",fontSize:12,cursor:"pointer"},children:i("tasks.settingsReset")})]}):(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text-muted)",padding:8},children:i("tasks.settingsNoProject")}),(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,marginTop:4},children:[(0,n.jsx)("button",{type:"button",onClick:()=>t(!1),style:{padding:"8px 14px",borderRadius:8,background:"none",border:"1px solid var(--border)",color:"var(--text)",fontSize:12,cursor:"pointer"},children:i("i18n.cancel")}),(0,n.jsx)("button",{type:"button",onClick:()=>void m(),disabled:!l||h,style:{padding:"8px 16px",borderRadius:8,background:"var(--accent)",color:"var(--accent-fg)",border:"none",fontSize:12,fontWeight:600,cursor:"pointer"},children:i("tasks.save")})]})]})]})})}function pe({open:e,onOpenChange:t,task:r}){let{t:i}=(0,Y.s)();return(L(e&&!!r,()=>t(!1)),(0,o.useEffect)(()=>{if(!e)return},[e,r]),e&&r)?(0,n.jsx)("div",{style:{position:"fixed",inset:0,zIndex:970,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.45)"},children:(0,n.jsxs)("div",{style:{width:"min(520px, calc(100vw - 48px))",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:14,boxShadow:"0 16px 48px rgba(0,0,0,0.3)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"14px 16px 0"},children:[(0,n.jsx)("h3",{style:{fontSize:15,fontWeight:600,margin:0},children:i("tasks.sessionTitle")}),(0,n.jsx)("button",{type:"button",onClick:()=>t(!1),"aria-label":i("i18n.close"),style:{background:"none",border:"none",cursor:"pointer",color:"var(--text-muted)",padding:4,display:"flex"},children:(0,n.jsx)(g.X,{size:16,"aria-hidden":"true"})})]}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:10,padding:"14px 16px 16px",fontSize:12},children:[(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:4,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,padding:10},children:[(0,n.jsx)("span",{style:{color:"var(--text-muted)"},children:i("tasks.sessionId")}),(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",fontSize:11,overflowWrap:"anywhere"},children:r.conversationId??"—"})]}),r.sessionFile?(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:4,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,padding:10},children:[(0,n.jsx)("span",{style:{color:"var(--text-muted)"},children:i("tasks.sessionFile")}),(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",fontSize:11,overflowWrap:"anywhere"},children:r.sessionFile})]}):null,(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text-muted)",lineHeight:1.6},children:i("tasks.sessionHint")}),(0,n.jsx)("div",{style:{display:"flex",justifyContent:"flex-end",marginTop:4},children:(0,n.jsx)("button",{type:"button",onClick:()=>t(!1),style:{padding:"8px 16px",borderRadius:8,background:"var(--accent)",color:"var(--accent-fg)",border:"none",fontSize:12,fontWeight:600,cursor:"pointer"},children:i("i18n.close")})})]})]})}):null}let pt="__all__",pr="pi-tasks-board-filter",pn={showCanceled:!1,showArchived:!1},po="pi:open-task-settings";function pi(){let{t:e}=(0,Y.s)(),{attentionCount:t}=uA();return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,height:36,flexShrink:0,padding:"0 16px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)"},children:[(0,n.jsxs)("h1",{style:{margin:0,display:"flex",alignItems:"center",gap:6,fontSize:13,fontWeight:600},children:[(0,n.jsx)(eJ.x,{size:15,color:"var(--text-muted)","aria-hidden":"true"}),e("tasks.title"),(0,n.jsx)("span",{style:{borderRadius:999,background:"rgba(37,99,235,0.12)",color:"var(--accent)",padding:"1px 8px",fontSize:9,fontWeight:700,textTransform:"uppercase",letterSpacing:"0.04em"},children:"Beta"})]}),t>0?(0,n.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:4,borderRadius:999,background:"rgba(239,68,68,0.12)",color:"var(--status-error)",padding:"1px 8px",fontSize:10,fontWeight:700},children:[t," ",e("tasks.attentionBadge")]}):null,(0,n.jsx)("div",{style:{flex:1}}),(0,n.jsxs)("button",{type:"button",onClick:()=>window.dispatchEvent(new Event(po)),style:{display:"inline-flex",alignItems:"center",gap:5,height:26,padding:"0 10px",borderRadius:7,background:"none",border:"none",color:"var(--text-muted)",fontSize:12,cursor:"pointer"},title:e("tasks.settingsTitle"),children:[(0,n.jsx)(uD.O,{size:13,"aria-hidden":"true"}),e("tasks.settingsTitle")]})]})}function ps({activeProject:e}){let{t}=(0,Y.s)(),{tasks:i,projects:s,refetch:l}=uA(),[a,d]=(0,o.useState)(null),[c,u]=(0,o.useState)(()=>(function(){try{let e=window.localStorage.getItem(pr);if(e){let t=JSON.parse(e);return{showCanceled:t.showCanceled??!1,showArchived:t.showArchived??!1}}}catch{}return pn})()),[h,g]=(0,o.useState)(!1);(0,o.useEffect)(()=>{try{window.localStorage.setItem(pr,JSON.stringify(c))}catch{}},[c]);let[x,f]=(0,o.useState)(null),[m,v]=(0,o.useState)(!1),y=(0,o.useRef)(null),k=(0,o.useRef)({x:0,y:0}),j=(0,o.useRef)(null),w=(0,o.useRef)(null),[S,C]=(0,o.useState)(null),z=(0,o.useRef)(null);z.current=S;let T=(0,o.useRef)(!1),R=(0,o.useRef)(!1),[I,M]=(0,o.useState)(()=>Date.now());(0,o.useEffect)(()=>{let e=window.setInterval(()=>M(Date.now()),6e4);return()=>window.clearInterval(e)},[]);let[E,$]=(0,o.useState)(!1),[W,L]=(0,o.useState)(null),[N,A]=(0,o.useState)(null);(0,o.useEffect)(()=>{let e=()=>{let e,t=(e=aU,aU=null,e);t&&(L(null),A(t),$(!0))};return e(),window.addEventListener(aB,e),()=>window.removeEventListener(aB,e)},[]);let[P,F]=(0,o.useState)(null),[D,H]=(0,o.useState)(null),[O,B]=(0,o.useState)(!1),[U,_]=(0,o.useState)(null),[q,K]=(0,o.useState)(!1),[V,J]=(0,o.useState)(null),[G,X]=(0,o.useState)("retry"),[Z,Q]=(0,o.useState)(!1),[ee,et]=(0,o.useState)(null),[er,en]=(0,o.useState)(!1),[eo,ei]=(0,o.useState)(!1),[es,el]=(0,o.useState)(null),[ea,ed]=(0,o.useState)(!1);(0,o.useEffect)(()=>{let e=()=>ei(!0);return window.addEventListener(po,e),()=>window.removeEventListener(po,e)},[]);let ec=(0,o.useMemo)(()=>null==a?i:i.filter(e=>e.projectRoot===a),[i,a]),eu=(0,o.useMemo)(()=>(function(e,t,r=!1){let n={todo:[],inProgress:[],attention:[],done:[]};for(let o of e)("canceled"!==o.status||t)&&(null==o.archivedAt||r)&&n[function(e){switch(e){case"todo":case"queued":return"todo";case"preparing":case"running":return"inProgress";case"awaiting_input":case"review":case"merging":case"failed":return"attention";case"done":case"canceled":return"done"}}(o.status)].push(o);for(let e of uB)n[e].sort((e,t)=>(t.updatedAt??"").localeCompare(e.updatedAt??""));return n})(ec,c.showCanceled,c.showArchived),[ec,c]),ep=(0,o.useMemo)(()=>{let e=eu.todo;if(null==S)return e;let t=new Map(e.map(e=>[e.id,e])),r=S.flatMap(e=>t.get(e)??[]);for(let t of e)S.includes(t.id)||r.push(t);return r},[eu.todo,S]),eh=(0,o.useMemo)(()=>i.find(e=>e.id===P)??null,[i,P]),eg=(0,o.useMemo)(()=>i.find(e=>e.id===es)??null,[i,es]),ex=(0,o.useCallback)(async e=>{try{await e()}catch(e){console.error("task action failed",e)}finally{l()}},[l]),ef=(0,o.useCallback)(e=>{null!=e.conversationId&&(el(e.id),ed(!0))},[el,ed]),em=(0,o.useCallback)(e=>{H(e),B(!0)},[H,B]),ev=(0,o.useCallback)(()=>{L(null),$(!0)},[L,$]),ey=(0,o.useCallback)((e,t)=>{let r=j.current,n=y.current;r&&n&&(r.style.transform=`translate3d(${e-n.dx}px, ${t-n.dy}px, 0)`)},[]),eb=e=>{let t=e.currentTarget.getBoundingClientRect();y.current={dx:e.clientX-t.left,dy:e.clientY-t.top,width:t.width}},ek=(0,o.useCallback)(e=>{if(f(null),v(!1),e){T.current=!1;return}requestAnimationFrame(()=>{T.current=!1})},[f,v]),ej=(0,o.useCallback)(()=>{R.current=!0,C(null),ek(!0)},[ek,C]);(0,o.useEffect)(()=>{if(!x)return;let e=()=>{document.hidden&&ej()};return window.addEventListener("blur",ej),document.addEventListener("visibilitychange",e),()=>{window.removeEventListener("blur",ej),document.removeEventListener("visibilitychange",e)}},[x,ej]),(0,o.useEffect)(()=>{x&&!ep.some(e=>e.id===x.task.id)&&ej()},[x,ep,ej]);let ew=(0,o.useCallback)((e,t,r)=>{if(R.current){ek(!0),C(null);return}let n=w.current?.getBoundingClientRect(),o=null!=n&&t>=n.left&&t<=n.right&&r>=n.top&&r<=n.bottom;if(ek(!1),o){C(null);let t=i.find(t=>t.id===e.id);t?.status==="todo"&&null!=a&&ex(()=>(0,dU.oQ)(e.id,e.projectRoot,"start"));return}let s=z.current;null!=a&&null!=s&&(async()=>{try{await (0,dU.Lu)(a,s)}catch(e){console.error("reorder failed",e)}await l(),C(null)})()},[ex,ek,a,l,i]),eS=(0,o.useCallback)(()=>{ex(async()=>{let e=await (0,dU.a5)(a);e>0&&console.log(`started ${e} tasks`)})},[ex,a]),eC=(0,o.useCallback)(()=>{let e=eu.done.filter(e=>null==e.archivedAt);0!==e.length&&ex(()=>Promise.all(e.map(e=>(0,dU.et)(e.id,e.projectRoot,!0))))},[ex,eu.done]),ez=+(c.showCanceled!==pn.showCanceled)+ +(c.showArchived!==pn.showArchived),eT=i.length>0,eR=(0,o.useMemo)(()=>{let t=new Set(s);return e&&t.add(e),[...t].sort()},[s,e]),eI=(0,o.useMemo)(()=>{let e=new Map;for(let t of eR)e.set(t,t.split("/").filter(Boolean).pop()??t);return e},[eR]);return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",minHeight:0},children:[eT&&(0,n.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:8,padding:"14px 16px 8px"},children:[(0,n.jsxs)("select",{value:a??pt,onChange:e=>d(e.target.value===pt?null:e.target.value),style:{height:30,borderRadius:999,padding:"0 10px",background:"var(--bg-panel)",border:"1px solid var(--border)",color:"var(--text)",fontSize:12,fontWeight:500,cursor:"pointer",maxWidth:"14rem"},"aria-label":t("tasks.allFolders"),children:[(0,n.jsx)("option",{value:pt,children:t("tasks.allFolders")}),eR.map(e=>(0,n.jsx)("option",{value:e,children:eI.get(e)??e},e))]}),(0,n.jsxs)("div",{style:{position:"relative"},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>g(e=>!e),style:{display:"inline-flex",alignItems:"center",gap:6,height:30,borderRadius:999,padding:"0 12px",background:"var(--bg-panel)",border:"1px solid var(--border)",color:"var(--text)",fontSize:12,fontWeight:500,cursor:"pointer"},children:[(0,n.jsx)(uH.n,{size:13,"aria-hidden":"true"}),t("tasks.filter"),ez>0?(0,n.jsx)("span",{style:{borderRadius:999,background:"rgba(37,99,235,0.12)",color:"var(--accent)",padding:"1px 6px",fontSize:10,fontWeight:700},children:ez}):null]}),h&&(0,n.jsx)("div",{style:{position:"absolute",top:34,left:0,zIndex:50,width:200,borderRadius:12,padding:6,background:"var(--bg-panel)",border:"1px solid var(--border)",boxShadow:"0 8px 24px rgba(0,0,0,0.16)"},children:[["showCanceled",t("tasks.showCanceled")],["showArchived",t("tasks.showArchived")]].map(([e,t])=>(0,n.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:8,padding:"6px 8px",borderRadius:8,cursor:"pointer",fontSize:12},children:[(0,n.jsx)("input",{type:"checkbox",checked:c[e],onChange:t=>u(r=>({...r,[e]:t.target.checked})),style:{accentColor:"var(--accent)"}}),t]},e))})]}),(0,n.jsx)("div",{style:{flex:1}}),(0,n.jsxs)("button",{type:"button",onClick:eS,style:{display:"inline-flex",alignItems:"center",gap:6,height:30,borderRadius:999,padding:"0 12px",background:"none",border:"none",color:"var(--text)",fontSize:12,cursor:"pointer"},title:t("tasks.startAll"),children:[(0,n.jsx)(uO.j,{size:13,"aria-hidden":"true"}),t("tasks.startAll")]}),(0,n.jsxs)("button",{type:"button",onClick:ev,style:{display:"inline-flex",alignItems:"center",gap:6,height:30,borderRadius:999,padding:"0 14px",background:"var(--accent)",color:"var(--accent-fg)",border:"none",fontSize:12,fontWeight:600,cursor:"pointer"},children:[(0,n.jsx)(b.F,{size:13,weight:"bold","aria-hidden":"true"}),t("tasks.new")]})]}),eT?(0,n.jsx)("div",{style:{flex:1,minHeight:0,overflowX:"auto"},children:(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(4, minmax(0, 1fr))",gap:16,minWidth:"56rem",height:"100%",padding:"4px 16px 16px"},children:uq.map(e=>{let r="todo"===e?ep:eu[e],o=uK[e],i=e=>(0,n.jsx)(uZ,{task:e,folderName:e.projectRoot?eI.get(e.projectRoot)??null:null,now:I,onOpen:()=>{T.current||F(e.id)},onStart:()=>void ex(()=>(0,dU.oQ)(e.id,e.projectRoot,"start")),onCancel:()=>{_(e),K(!0)},onRetry:()=>{J(e),X("retry"),Q(!0)},onRequeue:()=>{J(e),X("requeue"),Q(!0)},onViewSession:()=>ef(e),onMerge:()=>{uU(e)?(et(e),en(!0)):em(e)},onArchive:()=>void ex(()=>(0,dU.et)(e.id,e.projectRoot,null==e.archivedAt)),onEdit:()=>{L(e),$(!0)}},e.id);return(0,n.jsxs)("div",{ref:"inProgress"===e?w:void 0,style:{display:"flex",flexDirection:"column",minHeight:0,gap:8},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,height:24,flexShrink:0,padding:"0 2px"},children:[(0,n.jsx)("span",{style:{width:3,height:14,borderRadius:999,background:o.marker,flexShrink:0},"aria-hidden":"true"}),(0,n.jsx)("h2",{style:{fontSize:12,fontWeight:600,color:"var(--text)"},children:t(`tasks.col${e[0].toUpperCase()}${e.slice(1)}`)}),(0,n.jsx)("span",{style:{borderRadius:999,background:"var(--bg-hover)",padding:"1px 8px",fontSize:10,fontWeight:600,color:"var(--text-muted)"},children:r.length}),(0,n.jsx)("div",{style:{flex:1}}),"done"===e&&eu.done.some(e=>null==e.archivedAt)?(0,n.jsx)("button",{type:"button",onClick:eC,style:{background:"none",border:"none",cursor:"pointer",fontSize:11,color:"var(--text-muted)",padding:"2px 6px",borderRadius:6},children:t("tasks.archiveAllDone")}):null]}),0===r.length?(0,n.jsx)("div",{style:{flex:1,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:4,borderRadius:12,border:"1px dashed var(--border)",padding:16,textAlign:"center",..."inProgress"===e&&x?m?{borderColor:"var(--accent)",background:"rgba(37,99,235,0.08)"}:{borderColor:"var(--accent)"}:{}},children:(0,n.jsx)("p",{style:{fontSize:12,color:"var(--text-muted)"},children:t(`tasks.emptyCol${e[0].toUpperCase()}${e.slice(1)}`)})}):(0,n.jsx)("div",{style:{flex:1,minHeight:0,overflowY:"auto",borderRadius:12,transition:"background 0.15s, box-shadow 0.15s",..."inProgress"===e&&x?m?{background:"rgba(37,99,235,0.06)",boxShadow:"inset 0 0 0 2px var(--accent)"}:{boxShadow:"inset 0 0 0 1px rgba(37,99,235,0.25)"}:{}},children:(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:16,paddingBottom:4},children:r.map(t=>"todo"===e?(0,n.jsx)("div",{draggable:!0,onDragStart:e=>{var r,n;e.dataTransfer.effectAllowed="move",r=e.clientX,n=e.clientY,T.current=!0,R.current=!1,k.current={x:r,y:n},f({task:t,width:y.current?.width??280})},onDrag:e=>{var t,r;let n,o;return k.current={x:t=e.clientX,y:r=e.clientY},ey(t,r),void((o=null!=(n=w.current?.getBoundingClientRect())&&t>=n.left&&t<=n.right&&r>=n.top&&r<=n.bottom)!==m&&v(o))},onDragEnd:e=>ew(t,e.clientX,e.clientY),onPointerDown:eb,style:{cursor:"grab",opacity:x?.task.id===t.id?.4:1},children:i(t)},t.id):(0,n.jsx)("div",{children:i(t)},t.id))})})]},e)})})}):(0,n.jsxs)("div",{style:{flex:1,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:12,padding:32,textAlign:"center"},children:[(0,n.jsx)(eJ.x,{size:40,color:"var(--text-dim)",opacity:.4,"aria-hidden":"true"}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[(0,n.jsx)("p",{style:{fontSize:14,fontWeight:500,color:"var(--text)"},children:t("tasks.empty")}),(0,n.jsx)("p",{style:{maxWidth:320,fontSize:12,color:"var(--text-muted)",lineHeight:1.6},children:t("tasks.emptyHint")})]}),(0,n.jsxs)("button",{type:"button",onClick:ev,style:{display:"inline-flex",alignItems:"center",gap:6,padding:"7px 14px",borderRadius:8,background:"var(--accent)",color:"var(--accent-fg)",border:"none",fontSize:12,fontWeight:600,cursor:"pointer"},children:[(0,n.jsx)(b.F,{size:13,weight:"bold","aria-hidden":"true"}),t("tasks.new")]})]}),(0,n.jsx)(u5,{open:E,onOpenChange:$,task:W,defaultProject:N?.projectRoot??a??e??null,projects:eR,prefillTitle:N?N.text.slice(0,80):void 0,prefillPrompt:N?N.text:void 0,onSubmit:async(e,t,n)=>{await ex(async()=>{let{createTaskApi:o}=await Promise.resolve().then(r.bind(r,23084)),{updateTaskApi:i}=await Promise.resolve().then(r.bind(r,23084));W?await i(W.id,e,{title:t,config:n}):await o({projectRoot:e,title:t,config:n})}),$(!1),A(null)}}),(0,n.jsx)(u6,{open:null!=P,onOpenChange:e=>{e||F(null)},task:eh,onViewSession:ef,onMerge:em,onEdit:e=>{L(e),$(!0)},onCancel:e=>{_(e),K(!0)},onRetry:e=>{J(e),X("retry"),Q(!0)},onRequeue:e=>{J(e),X("requeue"),Q(!0)},onComplete:e=>{et(e),en(!0)}}),(0,n.jsx)(u3,{open:O,onOpenChange:B,task:D}),(0,n.jsx)(uQ,{open:q,onOpenChange:K,task:U}),(0,n.jsx)(u8,{open:Z,onOpenChange:Q,task:V,kind:G}),(0,n.jsx)(u0,{open:er,onOpenChange:en,task:ee}),(0,n.jsx)(pe,{open:ea&&null!=eg,onOpenChange:ed,task:eg}),(0,n.jsx)(u9,{open:eo,onOpenChange:ei,projectRoot:a}),x?(0,p.createPortal)((0,n.jsx)("div",{ref:j,style:{position:"fixed",left:0,top:0,zIndex:999,pointerEvents:"none",width:x.width,willChange:"transform"},"aria-hidden":"true",children:(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:8,borderRadius:12,border:m?"1px solid var(--accent)":"1px solid var(--border)",background:"var(--bg-panel)",padding:12,boxShadow:"0 8px 24px rgba(0,0,0,0.2)",transform:"rotate(-1deg)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:8},children:[(0,n.jsx)("span",{style:{minWidth:0,overflowWrap:"break-word",fontSize:13,fontWeight:500},children:x.task.title}),(0,n.jsx)(uG,{task:x.task})]}),m?(0,n.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:4,fontSize:11,fontWeight:600,color:"var(--accent)"},children:[(0,n.jsx)(uO.j,{size:11,weight:"bold","aria-hidden":"true"}),t("tasks.dropToStart")]}):null]})}),document.body):null]})}var pl=r(62235),pa=r(1022);function pd(){return!!window.__TAURI_INTERNALS__}let pc=null;function pu(){return pc||(pc=r.e(8518).then(r.bind(r,38518)).then(e=>e.getCurrentWindow())),pc}async function pp(e){let t=await pu();await e(t)}async function ph(){await pp(e=>e.minimize())}async function pg(){await pp(e=>e.toggleMaximize())}async function px(){await pp(e=>e.startDragging())}async function pf(){await pp(e=>e.close())}async function pm(){return(await pu()).isMaximized()}function pv(){let[e,t]=(0,o.useState)(null);return(0,o.useEffect)(()=>{pd()&&t(function(){if("u"<typeof navigator)return null;let e=navigator.platform||"";return/mac/i.test(e)?"macos":/win/i.test(e)?"windows":/linux/i.test(e)?"linux":null}())},[]),{platform:e,isDesktop:null!==e,isMacOS:"macos"===e,dragRegionProps:e?{"data-tauri-drag-region":!0}:{}}}let py="pi-web-island-pos";function pb(e,t,r,n,o,i){return{x:Math.min(Math.max(0,e),Math.max(0,r-o)),y:Math.min(Math.max(0,t),Math.max(0,n-i))}}let pk={display:"flex",alignItems:"center",justifyContent:"center",width:26,height:26,padding:0,flexShrink:0,background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",borderRadius:7,transition:"background 0.12s, color 0.12s"};function pj({onRefreshSession:e}={}){let{t:t}=(0,Y.s)(),{isDark:r}=eA(),{isDesktop:i,isMacOS:s}=pv(),l=i&&!s,[a,d]=(0,o.useState)(!1),[c,u]=(0,o.useState)(null),[p,h]=(0,o.useState)(null),g=(0,o.useRef)(null),x=(0,o.useRef)(null);(0,o.useEffect)(()=>{l&&pu().then(()=>void 0,e=>{throw pc=null,e}).catch(e=>{console.error("[DynamicIsland] window API preload failed:",e)})},[l]);let f=(0,o.useCallback)(e=>{e().catch(e=>{console.error("[DynamicIsland] window command failed:",e),u(String(e)),window.setTimeout(()=>u(null),4e3)})},[]),m=(0,o.useCallback)(()=>{window.location.reload()},[]);(0,o.useEffect)(()=>{if(!pd()||!l)return;let e=()=>{pm().then(d)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[l]),(0,o.useEffect)(()=>{if(l)try{let e=localStorage.getItem(py);if(e){let t=JSON.parse(e);"number"==typeof t.x&&"number"==typeof t.y&&h(pb(t.x,t.y,window.innerWidth,window.innerHeight,168,34))}}catch{}},[l]),(0,o.useEffect)(()=>{if(l&&p)try{localStorage.setItem(py,JSON.stringify(p))}catch{}},[p,l]);let[v,y]=(0,o.useState)(0);(0,o.useEffect)(()=>{if(!l)return;let e=()=>{y(window.innerWidth),h(e=>e?pb(e.x,e.y,window.innerWidth,window.innerHeight,168,34):e)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[l]);let b=(0,o.useCallback)(e=>{if(0!==e.button||e.target.closest?.("[data-island-btn]"))return;let t=g.current;if(!t)return;let r=t.getBoundingClientRect();x.current={startX:e.clientX,startY:e.clientY,origX:r.left,origY:r.top},e.currentTarget.setPointerCapture(e.pointerId)},[]),k=(0,o.useCallback)(e=>{let t=x.current;if(!t)return;let r=e.clientX-t.startX,n=e.clientY-t.startY;h(pb(t.origX+r,t.origY+n,window.innerWidth,window.innerHeight,168,34))},[]),j=(0,o.useCallback)(e=>{x.current=null;try{e.currentTarget.releasePointerCapture(e.pointerId)}catch{}},[]),w=(0,o.useCallback)(()=>pg().then(()=>{d(e=>!e)}),[]),S=(0,o.useCallback)(e=>{if(!x.current&&!e.target.closest?.("[data-island-btn]")){h(null);try{localStorage.removeItem(py)}catch{}}},[]);if(!l)return null;let C=v||window.innerWidth,T=null!==p?p.x:Math.max(0,C-168-14);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{ref:g,role:"toolbar","aria-label":t("desktop.islandLabel"),title:t("desktop.islandResetHint"),onPointerDown:b,onPointerMove:k,onPointerUp:j,onPointerCancel:j,onDoubleClick:S,onMouseDown:e=>e.stopPropagation(),onDoubleClickCapture:e=>e.stopPropagation(),style:{position:"fixed",top:null!==p?p.y:100,left:T,zIndex:700,display:"flex",alignItems:"center",gap:1,padding:"3px 5px",borderRadius:999,background:"color-mix(in srgb, var(--bg-panel) 88%, transparent)",border:"1px solid var(--border)",boxShadow:r?"0 6px 24px rgba(0,0,0,0.45)":"0 6px 20px rgba(0,0,0,0.12)",cursor:"grab",userSelect:"none",touchAction:"none"},children:[(0,n.jsx)("span",{"data-island-grip":!0,"aria-hidden":"true",title:t("desktop.islandDrag"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:12,height:26,flexShrink:0,marginRight:2,color:"var(--text-dim)",cursor:"grab"},children:(0,n.jsxs)("svg",{width:"6",height:"14",viewBox:"0 0 6 14",fill:"currentColor","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"1.5",cy:"2",r:"1.2"}),(0,n.jsx)("circle",{cx:"4.5",cy:"2",r:"1.2"}),(0,n.jsx)("circle",{cx:"1.5",cy:"7",r:"1.2"}),(0,n.jsx)("circle",{cx:"4.5",cy:"7",r:"1.2"}),(0,n.jsx)("circle",{cx:"1.5",cy:"12",r:"1.2"}),(0,n.jsx)("circle",{cx:"4.5",cy:"12",r:"1.2"})]})}),e&&(0,n.jsx)("button",{type:"button","data-island-btn":!0,"aria-label":t("desktop.refreshSession"),title:t("desktop.refreshSession"),onClick:()=>{try{e()}catch(e){console.error("[DynamicIsland] refresh session failed:",e)}},style:pk,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.jsx)(pa.P,{size:13,"aria-hidden":"true"})}),(0,n.jsx)("button",{type:"button","data-island-btn":!0,"aria-label":t("desktop.reloadPage"),title:t("desktop.reloadPage"),onClick:m,style:pk,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.jsx)(z.S,{size:13,"aria-hidden":"true"})}),(0,n.jsx)("span",{"aria-hidden":"true",style:{width:1,height:18,flexShrink:0,background:"var(--border)",margin:"0 3px"}}),(0,n.jsx)("button",{type:"button","data-island-btn":!0,"aria-label":t("desktop.minimize"),title:t("desktop.minimize"),onClick:()=>f(ph),style:pk,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.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1",children:(0,n.jsx)("line",{x1:"1",y1:"5",x2:"9",y2:"5"})})}),(0,n.jsx)("button",{type:"button","data-island-btn":!0,"aria-label":t(a?"desktop.restore":"desktop.maximize"),title:t(a?"desktop.restore":"desktop.maximize"),onClick:()=>f(w),style:pk,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:a?(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1",children:[(0,n.jsx)("rect",{x:"2",y:"0.5",width:"7.5",height:"7.5"}),(0,n.jsx)("path",{d:"M0.5 2.5 V9.5 H7.5"})]}):(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1",children:(0,n.jsx)("rect",{x:"0.5",y:"0.5",width:"9",height:"9"})})}),(0,n.jsx)("button",{type:"button","data-island-btn":!0,"aria-label":t("desktop.close"),title:t("desktop.close"),onClick:()=>f(pf),style:pk,onMouseEnter:e=>{e.currentTarget.style.background="#e81123",e.currentTarget.style.color="#fff"},onMouseLeave:e=>{e.currentTarget.style.background="none",e.currentTarget.style.color="var(--text-muted)"},children:(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1",children:[(0,n.jsx)("line",{x1:"0",y1:"0",x2:"10",y2:"10"}),(0,n.jsx)("line",{x1:"10",y1:"0",x2:"0",y2:"10"})]})})]}),c&&(0,n.jsx)("div",{role:"alert",style:{position:"fixed",top:(null!==p?p.y:100)+34+6,left:T,zIndex:700,maxWidth:280,padding:"5px 10px",borderRadius:8,background:"var(--bg-panel)",border:"1px solid var(--status-error, #f85149)",color:"var(--status-error, #f85149)",fontSize:11,lineHeight:1.5,wordBreak:"break-all",boxShadow:r?"0 6px 24px rgba(0,0,0,0.45)":"0 6px 20px rgba(0,0,0,0.12)",pointerEvents:"none"},children:c})]})}function pw(){try{return window.localStorage}catch{return null}}let pS="pi-web:desktop-server-hint-seen";function pC(e=pw()){if(e)try{e.setItem(pS,"1")}catch{}}function pz(){let{t:e}=(0,Y.s)(),[t,r]=(0,o.useState)(!1);(0,o.useEffect)(()=>{let e=!1;try{e=new URLSearchParams(window.location.search).has("piweb_connected")}catch{e=!1}e&&function(e=pw()){if(!e)return!1;try{return"1"!==e.getItem(pS)}catch{return!1}}()&&r(!0)},[]);let i=(0,o.useCallback)(()=>{pC(),r(!1)},[]),s=(0,o.useCallback)(()=>{pC(),r(!1),window.location.href="piweb-switch://manage"},[]);return t?(0,n.jsxs)("div",{role:"status",style:{position:"fixed",top:56,right:16,zIndex:700,width:288,padding:"14px 16px 14px",borderRadius:12,background:"var(--bg-panel)",border:"1px solid var(--border)",boxShadow:"0 12px 36px rgba(0,0,0,0.32)",color:"var(--text)"},children:[(0,n.jsx)("span",{"aria-hidden":"true",style:{position:"absolute",top:-6,right:28,width:10,height:10,background:"var(--bg-panel)",borderTop:"1px solid var(--border)",borderLeft:"1px solid var(--border)",transform:"rotate(45deg)"}}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:10},children:[(0,n.jsx)(N.X,{size:18,color:"var(--accent)",style:{flexShrink:0,marginTop:1}}),(0,n.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,n.jsx)("div",{style:{fontSize:13.5,fontWeight:600,lineHeight:1.45},children:e("desktop.serverHintTitle")}),(0,n.jsx)("p",{style:{margin:"6px 0 0",fontSize:12.5,lineHeight:1.65,color:"var(--text-muted)"},children:e("desktop.serverHintBody")})]}),(0,n.jsx)("button",{type:"button",onClick:i,"aria-label":e("desktop.serverHintDismiss"),title:e("desktop.serverHintDismiss"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:22,height:22,padding:0,flexShrink:0,background:"none",border:"none",cursor:"pointer",color:"var(--text-dim)"},children:(0,n.jsx)(g.X,{size:14,"aria-hidden":"true"})})]}),(0,n.jsx)("button",{type:"button",onClick:s,style:{marginTop:12,width:"100%",display:"flex",alignItems:"center",justifyContent:"center",gap:6,padding:"8px 12px",borderRadius:9,background:"var(--accent)",border:"none",color:"var(--accent-fg)",fontSize:13,fontWeight:600,cursor:"pointer"},children:e("desktop.serverHintAction")})]}):null}function pT({isDark:e,toggleTheme:t,translate:r}){let[i,s]=(0,o.useState)(!1);(0,o.useEffect)(()=>{s(!0)},[]);let l=r(i?e?"desktop.switchToLight":"desktop.switchToDark":"desktop.switchToLight");return(0,n.jsx)("button",{className:"app-no-drag",suppressHydrationWarning:!0,onClick:e=>{let r=e.currentTarget.getBoundingClientRect();t({x:r.left+r.width/2,y:r.top+r.height/2})},title:l,"aria-label":l,"aria-pressed":!i||e,style:{display:"flex",alignItems:"center",justifyContent:"center",width:36,height:36,padding:0,background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",flexShrink:0,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:i?e?(0,n.jsx)(ec.b,{size:16,"aria-hidden":"true"}):(0,n.jsx)(ed.A,{size:16,"aria-hidden":"true"}):(0,n.jsx)(ec.b,{size:16,"aria-hidden":"true"})})}function pR({topBarRef:e,sidebarOpen:t,onSidebarToggle:r,isDark:i,toggleTheme:s,isMobile:l,showTasks:a,tasksBoardEnabled:d,onToggleTasks:c,systemPrompt:u,activeTopPanel:p,topPanelPos:h,sessionStats:g,selectedSession:x,contextUsage:m,copiedSessionField:v,onCopySessionField:y,rightPanelOpen:b,onToggleFilePanel:k,onRefreshSession:j,onOpenSettings:S,sessionTitle:C,onWorkspaceControlsHostChange:T,onTitleRightHostChange:R,desktopChrome:I,windowDrag:M}){let E,$,W,A,P,F,D,H,O,B,U,{t:_}=(0,Y.s)(),[q,K]=(0,o.useState)(!1);L(q,()=>K(!1));let[V,J]=(0,o.useState)(!1);return(0,o.useEffect)(()=>{try{J(new URLSearchParams(window.location.search).has("piweb_connected"))}catch{J(!1)}},[]),(0,n.jsxs)(n.Fragment,{children:[V&&(0,n.jsx)(pz,{}),(0,n.jsxs)("div",{ref:e,className:"app-title-bar",...I?.dragRegionProps,...M,style:{display:"flex",alignItems:"center",flexShrink:0,borderBottom:"1px solid var(--border)",height:48,background:"var(--bg-panel)",position:"relative",zIndex:600,paddingLeft:76*!!I?.isMacOS},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",minWidth:0,height:"100%",flex:"0 1 auto",position:"relative",zIndex:1},children:[(0,n.jsx)("button",{className:"app-no-drag",onClick:r,title:t?_("desktop.hideSidebar"):_("desktop.showSidebar"),"aria-label":t?_("desktop.hideSidebar"):_("desktop.showSidebar"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:36,height:36,padding:0,flexShrink:0,background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",transition:"color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-muted)"},children:t?(0,n.jsx)(pl.V,{size:16,"aria-hidden":"true"}):(0,n.jsx)(w.B,{size:16,"aria-hidden":"true"})}),(0,n.jsx)("div",{className:"app-no-drag",ref:T,style:{flex:"0 1 auto",minWidth:0,maxWidth:"min(60vw, 820px)",height:"100%",display:"flex",alignItems:"center",padding:"0 8px 0 0",overflow:"visible"}})]}),(0,n.jsxs)("div",{className:"app-title-drag",style:{...l?{position:"relative",flex:"1 1 auto",minWidth:0}:{position:"absolute",left:"var(--pi-titlebar-sidebar-offset, 0px)",right:0,top:0,bottom:0},display:"flex",alignItems:"center",justifyContent:l?"flex-start":"center",padding:l?"0 8px 0 4px":"0 12px",overflow:"hidden",userSelect:"none"},children:[C&&(0,n.jsx)("button",{type:"button",className:"app-no-drag",onClick:()=>{l&&K(!0)},style:{display:"block",flex:"0 1 auto",minWidth:0,maxWidth:l?"100%":"calc(100% - 320px)",fontSize:12,fontWeight:500,color:"var(--text-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",background:"none",border:"none",cursor:"pointer",padding:"2px 6px",borderRadius:5},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.background="none"},children:C}),(0,n.jsx)("div",{className:"app-no-drag",ref:R,style:{flexShrink:0,display:"flex",alignItems:"center",marginLeft:4}})]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:3,minWidth:0,height:"100%",flexShrink:+!l,overflow:"hidden",marginLeft:"auto",position:"relative",zIndex:1},children:[!l&&d&&(0,n.jsx)("button",{className:"app-no-drag",onClick:c,title:a?_("desktop.hideTaskBoard"):_("desktop.showTaskBoard"),"aria-label":a?_("desktop.hideTaskBoard"):_("desktop.showTaskBoard"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:36,height:36,padding:0,background:a?"var(--bg-selected)":"none",border:"none",color:a?"var(--text)":"var(--text-muted)",cursor:"pointer",flexShrink:0,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=a?"var(--bg-selected)":"none",e.currentTarget.style.color=a?"var(--text)":"var(--text-muted)"},children:(0,n.jsx)(eJ.x,{size:16,"aria-hidden":"true"})}),(0,n.jsx)("button",{className:"app-no-drag",onClick:k,title:b?_("desktop.hideFilePanel"):_("desktop.showFilePanel"),"aria-label":b?_("desktop.hideFilePanel"):_("desktop.showFilePanel"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:36,height:36,padding:0,background:b?"var(--bg-selected)":"none",border:"none",color:b?"var(--text)":"var(--text-muted)",cursor:"pointer",flexShrink:0,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=b?"var(--bg-selected)":"none",e.currentTarget.style.color=b?"var(--text)":"var(--text-muted)"},children:(0,n.jsx)(pl.V,{size:16,"aria-hidden":"true",style:{transform:"scaleX(-1)"}})}),(0,n.jsx)(pT,{isDark:i,toggleTheme:s,translate:_}),V&&(0,n.jsx)("button",{className:"app-no-drag",type:"button",onClick:()=>{window.location.href="piweb-switch://manage"},title:_("desktop.serverSwitch"),"aria-label":_("desktop.serverSwitch"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:36,height:36,padding:0,background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",flexShrink:0,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.jsx)(N.X,{size:16,"aria-hidden":"true"})}),!V&&!l&&(0,n.jsx)("button",{className:"app-no-drag",type:"button",onClick:j,title:_("desktop.refreshSession"),"aria-label":_("desktop.refreshSession"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:36,height:36,padding:0,background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",flexShrink:0,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.jsx)(z.S,{size:16,"aria-hidden":"true"})}),(0,n.jsx)("button",{className:"app-no-drag",type:"button",onClick:S,title:_("desktop.settings"),"aria-label":_("desktop.settings"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:36,height:36,padding:0,background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",flexShrink:0,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.jsx)(uD.O,{size:16,"aria-hidden":"true"})})]})]}),(0,n.jsx)(pj,{onRefreshSession:j}),p&&h&&(0,n.jsxs)("div",{style:{position:"fixed",top:h.top,left:h.left,width:h.width,maxHeight:`calc(100dvh - ${h.top}px)`,overflowY:"auto",zIndex:500},children:["system"===p&&(0,n.jsx)("div",{style:{background:"var(--bg-panel)",borderBottom:"1px solid var(--border)"},children:u?(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:u}):""===u?(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"})}),"session"===p&&(0,n.jsx)("div",{style:{background:"var(--bg-panel)",borderBottom:"1px solid var(--border)",boxShadow:"0 10px 28px rgba(0,0,0,0.10)",padding:"12px 16px"},children:g?(E=[...g.sessionName?[{label:_("desktop.name"),value:g.sessionName,copyField:null}]:[],{label:_("desktop.sessionInfoFile"),value:g.sessionFile??_("desktop.sessionInfoInMemory"),copyField:"file"},{label:_("desktop.sessionInfoId"),value:g.sessionId,copyField:"id"}],$=[[_("desktop.sessionInfoUser"),g.userMessages.toLocaleString()],[_("desktop.sessionInfoAssistant"),g.assistantMessages.toLocaleString()],[_("desktop.sessionInfoToolCalls"),g.toolCalls.toLocaleString()],[_("desktop.sessionInfoToolResults"),g.toolResults.toLocaleString()],[_("desktop.sessionInfoTotal"),g.totalMessages.toLocaleString()]],W=[[_("desktop.sessionInfoInput"),g.tokens.input.toLocaleString()],[_("desktop.sessionInfoOutput"),g.tokens.output.toLocaleString()],...g.tokens.cacheRead>0?[[_("desktop.sessionInfoCacheRead"),g.tokens.cacheRead.toLocaleString()]]:[],...g.tokens.cacheWrite>0?[[_("desktop.sessionInfoCacheWrite"),g.tokens.cacheWrite.toLocaleString()]]:[],[_("desktop.sessionInfoTotal"),g.tokens.total.toLocaleString()]],A=m??g.contextUsage,F=[...g.cost>0?[[_("desktop.sessionInfoCost"),`$${g.cost.toFixed(4)}`]]:[],...A?.contextWindow?[[_("desktop.sessionInfoContext"),`${null!==A.percent?`${A.percent.toFixed(1)}%`:"?"} / ${(P=A.contextWindow)>=1e6?`${(P/1e6).toFixed(1)}M`:P>=1e3?`${(P/1e3).toFixed(0)}k`:String(P)}`]]:[]],D=(e,t,r="left",o=!1)=>(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"var(--text)",marginBottom:6},children:e}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:o?"max-content max-content":"auto minmax(0, 1fr)",columnGap:o?14:12,rowGap:4,justifyContent:o?"start":void 0},children:t.map(([t,i])=>(0,n.jsxs)("div",{style:{display:"contents"},children:[(0,n.jsx)("div",{style:{color:"var(--text-dim)",whiteSpace:"nowrap"},children:t}),(0,n.jsx)("div",{style:{color:"var(--text-muted)",minWidth:0,overflowWrap:o?"normal":"anywhere",textAlign:r,whiteSpace:"right"===r?"nowrap":"normal"},children:i})]},`${e}:${t}`))})]}),H=(e,t)=>{let r=v===e;return(0,n.jsx)("button",{type:"button",title:r?_("desktop.copied"):_({file:"desktop.copyFilePath",id:"desktop.copySessionId",projectDir:"desktop.copyProjectDir",gitBranch:"desktop.copyGitBranch",gitWorktree:"desktop.copyGitWorktree"}[e]),onClick:()=>y(e,t),style:{alignSelf:"start",display:"inline-flex",alignItems:"center",justifyContent:"center",width:22,height:22,marginTop:-2,color:r?"var(--accent)":"var(--text-dim)",background:"transparent",border:"1px solid var(--border)",borderRadius:4,cursor:"pointer",flex:"0 0 auto",transition:"color 0.12s, border-color 0.12s, background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--accent)",e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=r?"var(--accent)":"var(--text-dim)",e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.background="transparent"},children:r?(0,n.jsx)(f.J,{size:12,"aria-hidden":"true"}):(0,n.jsx)(sA.Q,{size:12,"aria-hidden":"true"})})},O=(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"var(--text)",marginBottom:6},children:_("desktop.sessionInfoTitle")}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:"auto minmax(0, 1fr) auto",columnGap:12,rowGap:8,alignItems:"start"},children:E.map(e=>(0,n.jsxs)("div",{style:{display:"contents"},children:[(0,n.jsx)("div",{style:{color:"var(--text-dim)",whiteSpace:"nowrap"},children:e.label}),(0,n.jsx)("div",{style:{color:"var(--text-muted)",minWidth:0,overflowWrap:"anywhere",wordBreak:"break-word",whiteSpace:"normal"},children:e.value}),(0,n.jsx)("div",{children:e.copyField?H(e.copyField,e.value):null})]},`session-info:${e.label}`))})]}),U=(B=[...x?[{label:_("desktop.projectDir"),value:x.projectRoot??x.cwd,copyField:"projectDir"}]:[],...x?.branch?[{label:_("desktop.gitBranch"),value:x.branch,copyField:"gitBranch"}]:[],...x?.isWorktree?[{label:_("desktop.gitWorktree"),value:x.cwd,copyField:"gitWorktree"}]:[]]).length>0?(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"var(--text)",marginBottom:6},children:_("desktop.projectSection")}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:"auto minmax(0, 1fr) auto",columnGap:12,rowGap:8,alignItems:"start"},children:B.map(e=>(0,n.jsxs)("div",{style:{display:"contents"},children:[(0,n.jsx)("div",{style:{color:"var(--text-dim)",whiteSpace:"nowrap"},children:e.label}),(0,n.jsx)("div",{style:{color:"var(--text-muted)",minWidth:0,overflowWrap:"anywhere",wordBreak:"break-word",whiteSpace:"normal"},children:e.value}),(0,n.jsx)("div",{children:e.copyField?H(e.copyField,e.value):null})]},`project-info:${e.label}`))})]}):null,(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:l?"1fr":"minmax(360px, 1.7fr) minmax(140px, 0.55fr) minmax(190px, 0.75fr)",gap:l?16:24,fontSize:12,lineHeight:1.5,fontFamily:"var(--font-mono)"},children:[(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:l?16:20,minWidth:0},children:[O,U]}),D(_("desktop.sessionInfoMessages"),$),D(_("desktop.sessionInfoTokens"),[...W,...F],"right",!0)]})):(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text-muted)",fontStyle:"italic"},children:_("desktop.sendMessageForSessionInfo")})})]}),q&&C&&(0,n.jsx)("div",{className:"app-no-drag",onClick:()=>K(!1),style:{position:"fixed",inset:0,zIndex:3e3,display:"flex",alignItems:"flex-start",justifyContent:"center",paddingTop:48,background:"rgba(0,0,0,0.35)",cursor:"pointer"},children:(0,n.jsxs)("div",{role:"dialog","aria-label":C,style:{position:"relative",maxWidth:"min(560px, calc(100vw - 32px))",maxHeight:"min(60vh, 400px)",overflow:"auto",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:12,boxShadow:"0 16px 40px rgba(0,0,0,0.3)",padding:"14px 40px 14px 18px",fontSize:13,lineHeight:1.6,color:"var(--text)",wordBreak:"break-word",whiteSpace:"pre-wrap",cursor:"default"},children:[C,(0,n.jsx)("button",{type:"button","aria-label":_("i18n.close"),title:_("i18n.close"),onClick:e=>{e.stopPropagation(),K(!1)},style:{position:"sticky",top:0,float:"right",marginLeft:8,display:"inline-flex",alignItems:"center",justifyContent:"center",width:24,height:24,padding:0,border:"none",borderRadius:5,background:"none",color:"var(--text-muted)",cursor:"pointer",fontSize:14,lineHeight:1},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="none"},children:"✕"})]})})]})}function pI({status:e}){return"running"===e||"starting"===e?(0,n.jsxs)("svg",{className:"animate-spin",width:"13",height:"13",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"9",stroke:"currentColor",strokeWidth:"2",opacity:"0.25"}),(0,n.jsx)("path",{d:"M21 12a9 9 0 0 0-9-9",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})]}):"queued"===e?(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"9"}),(0,n.jsx)("path",{d:"M12 7v5l3 2"})]}):"failed"===e?(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"9"}),(0,n.jsx)("path",{d:"m9 9 6 6M15 9l-6 6"})]}):"aborted"===e||"interrupted"===e?(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"9"}),(0,n.jsx)("path",{d:"M9 9h6v6H9z"})]}):(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)("circle",{cx:"12",cy:"12",r:"9"}),(0,n.jsx)("path",{d:"m8 12 3 3 5-6"})]})}function pM({session:e,main:t,selected:r,running:o,onSelect:i}){let{locale:s,t:l}=(0,Y.s)(),a=e.relation?.kind==="subagent"?e.relation:null,d=o?"running":a?.status??"completed",c=t?l("agentSwitcher.main"):a?.description||os(e),u=t?os(e):`${a?.profile??l("agentSwitcher.subagent")} \xb7 ${function(e,t){let r=new Date(e).getTime();if(!Number.isFinite(r))return"";let n=Math.round((r-Date.now())/1e3),o=new Intl.RelativeTimeFormat(t,{numeric:"auto"});if(60>Math.abs(n))return o.format(n,"second");let i=Math.round(n/60);if(60>Math.abs(i))return o.format(i,"minute");let s=Math.round(i/60);return 24>Math.abs(s)?o.format(s,"hour"):o.format(Math.round(s/24),"day")}(e.modified,s)}`;return(0,n.jsxs)("button",{type:"button",role:"option","aria-selected":r,onClick:i,style:{width:"100%",minHeight:56,display:"grid",gridTemplateColumns:"28px minmax(0, 1fr) auto",alignItems:"center",gap:9,padding:"7px 12px",border:"none",borderBottom:"1px solid var(--border)",borderLeft:r?"2px solid var(--accent)":"2px solid transparent",background:r?"var(--bg-selected)":"transparent",color:"var(--text)",cursor:"pointer",textAlign:"left"},onMouseEnter:e=>{r||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{r||(e.currentTarget.style.background="transparent")},children:[(0,n.jsx)("span",{style:{width:28,height:28,display:"grid",placeItems:"center",color:t?"var(--text-muted)":"var(--accent)"},children:t?(0,n.jsxs)("svg",{width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"12",cy:"8",r:"4"}),(0,n.jsx)("path",{d:"M4 21a8 8 0 0 1 16 0"})]}):(0,n.jsxs)("svg",{width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("rect",{x:"5",y:"7",width:"14",height:"11",rx:"2"}),(0,n.jsx)("path",{d:"M9 11h.01M15 11h.01M9 15h6M12 7V4M10 4h4"})]})}),(0,n.jsxs)("span",{style:{minWidth:0},children:[(0,n.jsx)("span",{style:{display:"block",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:12,fontWeight:r?600:500},title:c,children:c}),(0,n.jsx)("span",{style:{display:"block",marginTop:2,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text-dim)",fontSize:11},title:u,children:u})]}),(0,n.jsx)("span",{style:{display:"flex",alignItems:"center",gap:6,color:t&&!o?"var(--text-dim)":"running"===d||"starting"===d?"var(--accent)":"queued"===d?"var(--text-dim)":"completed"===d?"var(--status-success)":"failed"===d?"var(--status-error)":"aborted"===d?"var(--status-warning)":"var(--text-dim)",fontSize:11,whiteSpace:"nowrap"},children:t&&!o?r?l("agentSwitcher.current"):null:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(pI,{status:d}),(0,n.jsx)("span",{children:l(`agentSwitcher.status.${d}`)})]})})]})}function pE({rootSession:e,subagents:t,selectedSessionId:r,runningSessionIds:i,onSelectSession:s}){let{t:l}=(0,Y.s)(),[a,d]=(0,o.useState)(""),c=(0,o.useMemo)(()=>[...t].sort((e,t)=>{let r=i.has(e.id);return r!==i.has(t.id)?r?-1:1:t.modified.localeCompare(e.modified)}),[i,t]),u=a.trim().toLowerCase(),p=u?c.filter(e=>{let t=e.relation?.kind==="subagent"?e.relation:null;return[t?.description,t?.profile,e.name,e.firstMessage].some(e=>e?.toLowerCase().includes(u))}):c,h=t.filter(e=>i.has(e.id)).length;return(0,n.jsx)("div",{role:"listbox","aria-label":l("agentSwitcher.title"),style:{background:"var(--bg-panel)",borderLeft:"1px solid var(--border)",borderRight:"1px solid var(--border)",borderBottom:"1px solid var(--border)",borderRadius:"0 0 6px 6px",boxShadow:"0 10px 28px rgba(0,0,0,0.10)",overflow:"hidden"},children:(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:{minHeight:44,display:"flex",alignItems:"center",gap:8,padding:"7px 12px",borderBottom:"1px solid var(--border)"},children:[(0,n.jsx)("strong",{style:{fontSize:12,fontWeight:600},children:l("agentSwitcher.title")}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:11},children:l("agentSwitcher.count",{count:t.length})}),h>0&&(0,n.jsx)("span",{style:{marginLeft:"auto",color:"var(--accent)",fontSize:11},children:l("agentSwitcher.runningCount",{count:h})})]}),t.length>8&&(0,n.jsx)("div",{style:{padding:8,borderBottom:"1px solid var(--border)"},children:(0,n.jsx)("input",{type:"search",value:a,onChange:e=>d(e.target.value),placeholder:l("agentSwitcher.search"),"aria-label":l("agentSwitcher.search"),style:{width:"100%",height:32,padding:"0 10px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg)",color:"var(--text)",fontSize:12,outline:"none"}})}),(0,n.jsxs)("div",{style:{maxHeight:"min(58dvh, 480px)",overflowY:"auto"},children:[(0,n.jsx)(pM,{session:e,main:!0,selected:e.id===r,running:i.has(e.id),onSelect:()=>s(e)}),p.map(e=>(0,n.jsx)(pM,{session:e,selected:e.id===r,running:i.has(e.id),onSelect:()=>s(e)},e.id)),0===p.length&&(0,n.jsx)("div",{style:{padding:"22px 12px",color:"var(--text-dim)",fontSize:12,textAlign:"center"},children:l("agentSwitcher.noMatches")})]})]})})}function p$({loading:e,prompt:t,translate:r}){return(0,n.jsxs)("section",{className:"system-prompt-panel","aria-label":r("system.prompt"),children:[(0,n.jsx)("div",{className:"system-prompt-scroll",children:t?(0,n.jsx)("div",{className:"system-prompt-text",children:t}):(0,n.jsx)("div",{className:"system-prompt-empty",children:r(""===t?"system.empty":e?"system.loading":"system.load")})}),(0,n.jsx)("style",{children:`
198
198
  .system-prompt-panel {
199
199
  display: flex;
@@ -223,7 +223,7 @@ ${r}`):i=r;let h=i,g=o?.map(e=>({type:"image",source:{type:"base64",media_type:e
223
223
  font-size: 12px;
224
224
  font-style: italic;
225
225
  }
226
- `})]})}function pW({cwd:e,busy:t,error:r,onCancelAction:o,onConfirmAction:i}){let{t:s}=(0,Y.s)();return L(!t,o),(0,n.jsx)("div",{role:"presentation",style:{position:"fixed",inset:0,zIndex:1100,display:"flex",alignItems:"center",justifyContent:"center",padding:16,background:"rgba(0, 0, 0, 0.4)"},children:(0,n.jsxs)("section",{role:"dialog","aria-modal":"true","aria-labelledby":"project-trust-title",style:{width:440,maxWidth:"100%",border:"1px solid var(--border)",borderRadius:8,background:"var(--bg-panel)",boxShadow:"0 12px 36px rgba(0, 0, 0, 0.24)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",gap:12,padding:"18px 18px 14px"},children:[(0,n.jsx)(aH.o,{size:21,weight:"duotone",color:"var(--accent-orange)",style:{flexShrink:0,marginTop:1},"aria-hidden":"true"}),(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("h2",{id:"project-trust-title",style:{margin:0,fontSize:15,fontWeight:700,color:"var(--text)"},children:s("desktop.trustProjectTitle")}),(0,n.jsx)("p",{style:{margin:"7px 0 0",fontSize:12,lineHeight:1.6,color:"var(--text-muted)"},children:s("desktop.trustProjectBody")}),(0,n.jsx)("code",{style:{display:"block",marginTop:10,padding:"8px 10px",border:"1px solid var(--border)",borderRadius:5,background:"var(--bg)",color:"var(--text)",fontFamily:"var(--font-mono)",fontSize:11,overflowWrap:"anywhere"},children:e}),r&&(0,n.jsx)("div",{role:"alert",style:{marginTop:10,color:"var(--accent-red)",fontSize:12,lineHeight:1.5},children:r})]})]}),(0,n.jsxs)("footer",{style:{display:"flex",justifyContent:"flex-end",gap:8,padding:"10px 18px",borderTop:"1px solid var(--border)"},children:[(0,n.jsx)("button",{type:"button",onClick:o,disabled:t,style:{height:32,padding:"0 12px",border:"1px solid var(--border)",borderRadius:5,background:"transparent",color:"var(--text-muted)",cursor:t?"not-allowed":"pointer",fontSize:12},children:s("desktop.cancel")}),(0,n.jsx)("button",{type:"button",onClick:i,disabled:t,style:{height:32,padding:"0 12px",border:"1px solid var(--accent)",borderRadius:5,background:"var(--accent)",color:"var(--accent-contrast)",cursor:t?"wait":"pointer",opacity:t?.7:1,fontSize:12,fontWeight:600},children:s(t?"desktop.trustingProject":"desktop.trustProject")})]})]})})}function pL(e,t,r){let n=Number.isFinite(e)?e:t,o=Math.max(t,r);return Math.round(Math.max(t,Math.min(o,n)))}function pN(e){return pL(.42*e,360,640)}function pA(e,t){try{window.localStorage.setItem(e,String(t))}catch{}}function pP(e){let{ariaLabel:t,axis:r="horizontal",cssVariable:n,defaultWidth:i,getDefaultWidth:s,getMaxWidth:l,growthDirection:a,maxWidth:d,minWidth:c,storageKey:u,widthRef:p}=e,h=(0,o.useRef)(null),g=(0,o.useRef)(null),x=(0,o.useRef)(!1),[f,m]=(0,o.useState)(i),[v,y]=(0,o.useState)(!1),[b,k]=(0,o.useState)(!1);(0,o.useEffect)(()=>{k(!0)},[]);let j=(0,o.useCallback)(()=>Math.min(d,Math.max(c,l())),[l,d,c]),w=(0,o.useCallback)(e=>pL(e,c,j()),[j,c]),S=(0,o.useCallback)(e=>{p.current=e;let t=`${e}px`;h.current?.style.setProperty(n,t),h.current?.parentElement?.style.setProperty(n,t)},[n,p]),C=(0,o.useCallback)((e,t={})=>{let{forcePersist:r=!1,persist:n=!0}=t,o=w(e),i=o!==p.current;return S(o),m(o),n&&(i||r)&&pA(u,o),o},[S,w,u,p]),z=(0,o.useCallback)(e=>{document.body.style.cursor=e.previousCursor,document.body.style.userSelect=e.previousUserSelect},[]),T=(0,o.useCallback)(e=>{let t=g.current;if(t&&t.pointerId===e){g.current=null,z(t),y(!1),C(p.current,{forcePersist:!0});try{t.target.hasPointerCapture(e)&&t.target.releasePointerCapture(e)}catch{}}},[C,z,p]),R=(0,o.useCallback)(e=>{if("mouse"===e.pointerType&&0!==e.button)return;e.preventDefault(),e.stopPropagation();let t=g.current;t&&T(t.pointerId);let n=e.currentTarget;n.focus({preventScroll:!0}),n.setPointerCapture(e.pointerId),g.current={pointerId:e.pointerId,startPosition:"vertical"===r?e.clientY:e.clientX,startWidth:p.current,target:n,previousCursor:document.body.style.cursor,previousUserSelect:document.body.style.userSelect},document.body.style.cursor="vertical"===r?"row-resize":"col-resize",document.body.style.userSelect="none",y(!0)},[r,T,p]),I=(0,o.useCallback)(e=>{let t=g.current;if(!t||t.pointerId!==e.pointerId)return;if("mouse"===e.pointerType&&0===e.buttons)return void T(e.pointerId);e.preventDefault();let n="right"===a||"down"===a?1:-1,o="vertical"===r?e.clientY:e.clientX,i=w(t.startWidth+(o-t.startPosition)*n);S(i),e.currentTarget.setAttribute("aria-valuenow",String(i)),e.currentTarget.setAttribute("aria-valuetext",`${i} px`)},[S,r,w,T,a]),M=(0,o.useCallback)(e=>{T(e.pointerId)},[T]),E=(0,o.useCallback)(e=>{T(e.pointerId)},[T]),$=(0,o.useCallback)(e=>{T(e.pointerId)},[T]),W=(0,o.useCallback)(()=>{C(s?.()??i,{forcePersist:!0})},[C,i,s]),L=(0,o.useCallback)(()=>{C(p.current)},[C,p]),N=(0,o.useCallback)(e=>{let t=e.shiftKey?32:12,n="right"===a||"down"===a,o="vertical"===r?"ArrowDown":"ArrowRight",i="vertical"===r?"ArrowUp":"ArrowLeft";e.key===(n?o:i)?(e.preventDefault(),C(p.current+t,{forcePersist:!0})):e.key===(n?i:o)?(e.preventDefault(),C(p.current-t,{forcePersist:!0})):"Home"===e.key?(e.preventDefault(),C(c,{forcePersist:!0})):"End"===e.key?(e.preventDefault(),C(j(),{forcePersist:!0})):"Enter"===e.key&&(e.preventDefault(),W())},[r,C,j,a,c,W,p]);return(0,o.useEffect)(()=>{if(x.current)return;x.current=!0;let e=function(e){try{let t=window.localStorage.getItem(e);if(null===t)return null;let r=Number.parseInt(t,10);return Number.isFinite(r)?r:null}catch{return null}}(u),t=C(e??s?.()??i,{persist:!1});null!==e&&e!==t&&pA(u,t)},[C,i,s,u]),(0,o.useEffect)(()=>{if(!x.current)return;C(p.current);let e=()=>{C(p.current)};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[C,p]),(0,o.useEffect)(()=>{if(!v)return;let e=()=>{let e=g.current;e&&T(e.pointerId)},t=()=>{"visible"!==document.visibilityState&&e()};return window.addEventListener("blur",e),document.addEventListener("visibilitychange",t),()=>{window.removeEventListener("blur",e),document.removeEventListener("visibilitychange",t)}},[T,v]),(0,o.useEffect)(()=>()=>{let e=g.current;e&&(g.current=null,z(e))},[z]),{isResizing:v,panelRef:h,reclampWidth:L,separatorProps:{"aria-label":t,"aria-orientation":"vertical"===r?"horizontal":"vertical","aria-valuemax":b?j():d,"aria-valuemin":c,"aria-valuenow":f,"aria-valuetext":`${f} px`,onDoubleClick:W,onKeyDown:N,onLostPointerCapture:$,onPointerCancel:E,onPointerDown:R,onPointerMove:I,onPointerUp:M,role:"separator",tabIndex:0},width:f}}let pF=null;async function pD(e){if(!("serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window)||"granted"!==Notification.permission)return!1;if(pF)return pF;let t=(async()=>{try{let t=await fetch("/api/push/config");if(!t.ok)return!1;let{publicKey:r}=await t.json();if(!r)return!1;let n=await navigator.serviceWorker.ready,o=await n.pushManager.getSubscription();return o||(o=await n.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:function(e){let t="=".repeat((4-e.length%4)%4),r=atob((e+t).replace(/-/g,"+").replace(/_/g,"/")),n=new Uint8Array(r.length);for(let e=0;e<r.length;e+=1)n[e]=r.charCodeAt(e);return n}(r)})),(await fetch("/api/push/subscribe",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({subscription:o.toJSON(),locale:e})})).ok}catch{return pF=null,!1}})();return pF=t,t.then(e=>{e||pF!==t||(pF=null)}),t}let pH="pi-web:tab-open-session";function pO(){try{return window.sessionStorage}catch{return null}}function pB(e){if("string"!=typeof e||0===e.length)return null;if(e.startsWith("{"))try{let t=JSON.parse(e);if(!t||"object"!=typeof t||Array.isArray(t))return null;if("session"===t.kind&&"string"==typeof t.sessionId&&t.sessionId)return{kind:"session",sessionId:t.sessionId};if("new"===t.kind&&"string"==typeof t.cwd&&t.cwd.trim())return{kind:"new",cwd:t.cwd};return null}catch{return null}return{kind:"session",sessionId:e}}function pU(e,t){t.setItem(pH,JSON.stringify(e))}function p_(e,t){return t?(function(e){let t=function(e){let t=new Map(e.map(e=>[e.id,e])),r=new Map;for(let n of e){if(r.has(n.id))continue;let e=[],o=new Set,i=n.id,s=null;for(;;){if(r.has(i)){s=r.get(i)??null;break}if(o.has(i))break;o.add(i),e.push(i);let n=t.get(i);if(!n)break;if(n.relation?.kind!=="subagent"){s=n.id;break}i=n.relation.parentSessionId}for(let t of e)r.set(t,s)}return r}(e),r=new Map;for(let t of e)t.relation?.kind!=="subagent"&&r.set(t.id,{root:t,subagents:[],latestModified:t.modified});for(let n of e){if(n.relation?.kind!=="subagent")continue;let e=t.get(n.id),o=e?r.get(e):void 0;o&&(o.subagents.push(n),n.modified>o.latestModified&&(o.latestModified=n.modified))}return[...r.values()].sort((e,t)=>t.latestModified.localeCompare(e.latestModified))})(e).find(e=>e.root.id===t||e.subagents.some(e=>e.id===t))??null:null}let pq="pi-web:last-open-by-workspace";function pK(){try{return window.localStorage}catch{return null}}function pV(e){let t=e.getItem(pq);if(!t)return{};try{let e=JSON.parse(t);return null===e||"object"!=typeof e||Array.isArray(e)?{}:e}catch{return{}}}function pJ(e,t=pK()){if(t)try{let r=pV(t);if(!(e in r))return;delete r[e],0===Object.keys(r).length?t.removeItem(pq):t.setItem(pq,JSON.stringify(r))}catch{}}function pY(e){return e.projectKey??e.projectRoot??e.cwd}function pG(){let e,t,r,d,c,u,p,h,g,x,f,m,v,y,b,k=(0,s.useRouter)(),j=(0,s.useSearchParams)(),[w,S]=(0,o.useState)(()=>l(j));(0,o.useEffect)(()=>{S(l(j))},[j]),(0,o.useMemo)(()=>w,[w]);let{isDark:C,toggleTheme:z}=eA(),{locale:T,t:R}=(0,Y.s)(),I=tp(),[M,E]=(0,o.useState)(!1);(0,o.useEffect)(()=>{let e=window.matchMedia("(max-width: 480px)"),t=()=>E(e.matches);return t(),e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]);let[$,W]=(0,o.useState)(null),[L,N]=(0,o.useState)([]);(0,o.useCallback)(e=>{N(e),W(t=>{if(!t)return t;let r=e.find(e=>e.id===t.id);return r?{...t,...r,detailsPending:r.detailsPending,relation:r.relation,branch:r.branch,isWorktree:r.isWorktree}:t})},[]);let A=(0,o.useMemo)(()=>$?[...L.filter(e=>e.id!==$.id),$]:L,[$,L]),P=(0,o.useMemo)(()=>p_(A,$?.id),[$?.id,A]),F=!!P?.subagents.length,[D,H]=(0,o.useState)(()=>new Set);(0,o.useCallback)(e=>{H(t=>t.size===e.size&&[...e].every(e=>t.has(e))?t:e)},[]);let[O,B]=(0,o.useState)(null),[U,_]=(0,o.useState)(null),q=(0,o.useRef)(0),K=(0,o.useRef)(null),V=(0,o.useRef)(null),[J,G]=(0,o.useState)(0),[X,Z]=(0,o.useState)(0),[Q,ee]=(0,o.useState)(0),[et,er]=(0,o.useState)(!1),[en,eo]=(0,o.useState)("models"),[ei,es]=(0,o.useState)(0),[el,ea]=(0,o.useState)(null),[ed,ec]=(0,o.useState)(!1),[eu,ep]=(0,o.useState)(!1),[eh,eg]=(0,o.useState)(null),[ex,ef]=(0,o.useState)(()=>!w.sidebarCollapsed),[em,ev]=(0,o.useState)(!1),[ey,eb]=(0,o.useState)(!1),ek=em&&ey&&!I;(0,o.useEffect)(()=>{(!em||I)&&eb(!1)},[em,I]);let[ej,ew]=(0,o.useState)(!1),[eS,eC]=(0,o.useState)(!1);(0,o.useEffect)(()=>{I&&ef(!1)},[I]),(0,o.useEffect)(()=>{eC(!0)},[]);let ez=(0,o.useRef)(null),eT=(0,o.useRef)(null),eR=(0,o.useRef)(null),[eI,eM]=(0,o.useState)(null),[eE,e$]=(0,o.useState)(null),[eW,eL]=(0,o.useState)(null),eN=pv(),eP=function(){let{isDesktop:e,isMacOS:t}=pv(),r=(0,o.useCallback)(e=>{var t;0===e.button&&(t=e.target).closest("[data-tauri-drag-region]")&&!t.closest('button, a, input, textarea, select, [role="button"], [contenteditable="true"], [data-no-drag]')&&(e.preventDefault(),e.stopPropagation(),2===e.detail?pg():px())},[]);return e&&!t?{onMouseDown:r}:{}}(),[eF,eD]=(0,o.useState)([]),[eH,eO]=(0,o.useState)(null),eB=(0,o.useRef)(null),eU=cT(eF),[e_,eq]=(0,o.useState)(null),eK=(0,o.useCallback)(e=>{eq(e)},[]),[eV,eJ]=(0,o.useState)(null),eY=(0,o.useCallback)(e=>{eJ(e)},[]),[eG,eX]=(0,o.useState)(null),eZ=(0,o.useRef)(null),eQ=(0,o.useCallback)((e,t)=>{nA(t).then(()=>{eZ.current&&clearTimeout(eZ.current),eX(e),eZ.current=setTimeout(()=>eX(null),1400)})},[]);(0,o.useEffect)(()=>()=>{eZ.current&&clearTimeout(eZ.current)},[]);let[e0,e1]=(0,o.useState)(null),e2=(0,o.useCallback)(e=>{e1(e)},[]),[e6,e4]=(0,o.useState)(null),[e5,e3]=(0,o.useState)(null);(0,o.useEffect)(()=>{eU||e4(e=>"branches"===e?null:e)},[eU]),(0,o.useEffect)(()=>{F||e4(e=>"agents"===e?null:e)},[F]),(0,o.useEffect)(()=>{ek&&e4(null)},[ek]);let e8=(0,o.useCallback)((e,t=!1)=>{I&&ef(!1),e4(t=>t===e?null:e),I&&M&&t&&ew(!0)},[I,M]),[e7,e9]=(0,o.useState)({kind:"idle"}),te=(0,o.useRef)(null),tt=(0,o.useRef)($?.id??null);tt.current=$?.id??null;let[tr,tn]=(0,o.useState)(null),[to,ti]=(0,o.useState)(!1),ts=(0,o.useRef)(null),tl=(0,o.useRef)(0),ta=(0,o.useRef)(null),td=(0,o.useRef)(new Set),tc=(0,o.useCallback)((e,t=!1)=>{let r=e6!==e;if(e8(e,t),!r||to)return;let n=ts.current;if(!n)return;let o=++tl.current;ti(!0),n().catch(e=>{console.error("Failed to load system information:",e)}).finally(()=>{tl.current===o&&ti(!1)})},[e6,to,e8]),tu=(0,o.useCallback)(()=>{I&&ef(!1),e4("session")},[I]),th=(0,o.useCallback)(()=>{I&&e4(null),ef(e=>!e)},[I]),tg=(0,o.useCallback)(()=>{ef(!1),e4(null),ew(e=>!e)},[]),tx=(0,o.useCallback)(()=>{I&&(ef(!1),e4(null),ew(!1)),ev(e=>!e)},[I]),tf=(0,o.useCallback)(()=>{e4(null),eb(e=>!e)},[]);(0,o.useEffect)(()=>{if(!ej)return;let e=e=>{let t=ez.current;t&&e.composedPath().includes(t)||ew(!1)},t=e=>{"Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),ew(!1))};return document.addEventListener("pointerdown",e,!0),document.addEventListener("keydown",t,!0),()=>{document.removeEventListener("pointerdown",e,!0),document.removeEventListener("keydown",t,!0)}},[ej]),(0,o.useEffect)(()=>{ew(!1)},[I,M,$?.id,U]),(0,o.useEffect)(()=>{if(!e6||!eR.current)return;let e=()=>{let e=eR.current.getBoundingClientRect();"agents"===e6?e3({top:e.bottom,left:e.left,width:Math.min(420,e.width)}):e3({top:e.bottom,left:e.left,width:e.width})};e();let t=new ResizeObserver(e);return t.observe(eR.current),()=>t.disconnect()},[e6]);let[tm,tv]=(0,o.useState)([]),[ty,tb]=(0,o.useState)(null),tk=(0,o.useRef)(!1);(0,o.useEffect)(()=>{let e;if(!tk.current){tk.current=!0;try{e=function(e){try{let t=JSON.parse(e??"null");if(!uW(t))return{tabs:[],activeId:null,open:!1};let r=[],n=new Set;for(let e of Array.isArray(t.tabs)?t.tabs:[]){if(!uW(e))continue;let t="string"==typeof e.id?e.id:"",o="string"==typeof e.filePath?e.filePath:"",i="string"==typeof e.label?e.label:"",s="subagent"===e.kind,l="string"==typeof e.sessionId?e.sessionId:"";!(!t||!i||n.has(t))&&(s?l:o)&&(n.add(t),r.push({id:t,label:i,filePath:o,..."terminal"===e.kind?{kind:"terminal"}:{},...s?{kind:"subagent",sessionId:l}:{},..."string"==typeof e.sourceSessionId?{sourceSessionId:e.sourceSessionId}:{},..."diff"===e.initialDisplayMode?{initialDisplayMode:"diff"}:{}}))}let o="string"==typeof t.activeId&&r.some(e=>e.id===t.activeId)?t.activeId:r[r.length-1]?.id??null;return{tabs:r,activeId:o,open:!0===t.open&&r.length>0}}catch{return{tabs:[],activeId:null,open:!1}}}(localStorage.getItem(u$))}catch{return}0!==e.tabs.length&&(tv(e.tabs),tb(e.activeId),ev(e.open))}},[]),(0,o.useEffect)(()=>{if(tk.current)try{localStorage.setItem(u$,JSON.stringify({tabs:tm.filter(e=>!e.closing).map(e=>({id:e.id,label:e.label,filePath:e.filePath,...e.kind?{kind:e.kind}:{},...e.sessionId?{sessionId:e.sessionId}:{},...e.sourceSessionId?{sourceSessionId:e.sourceSessionId}:{},...e.initialDisplayMode?{initialDisplayMode:e.initialDisplayMode}:{}})),activeId:ty,open:em}))}catch{}},[tm,ty,em]);let[tj,tw]=(0,o.useState)(!1),[tS,tC]=(0,o.useState)([]),[tz,tT]=(0,o.useState)(()=>new Set);(0,o.useEffect)(()=>{if(!tj)return void tC(e=>0===e.length?e:[]);let e=!1,t=()=>{fetch("/api/sessions",{cache:"no-store"}).then(e=>e.json()).then(t=>{e||(tC(t.sessions??[]),tT(new Set(t.runningSessionIds??[])))}).catch(()=>{})};t();let r=setInterval(t,3e3);return()=>{e=!0,clearInterval(r)}},[tj,$?.id,J]);let tR=(0,o.useCallback)(async e=>{try{let t=await fetch(`/api/sessions/${encodeURIComponent(e)}`,{cache:"no-store"}),r=await t.json();if(!t.ok||!r.info)throw Error(r.error??`HTTP ${t.status}`);t4.current(r.info)}catch(e){console.error("[pi-web] failed to open session:",e instanceof Error?e.message:e)}},[]),tI=(0,o.useRef)(260),tM=(0,o.useRef)(pN(1366)),tE=(0,o.useCallback)(()=>pN(window.innerWidth),[]),t$=(0,o.useCallback)(()=>(function(e){let{viewportWidth:t,rightPanelOpen:r,rightPanelWidth:n}=e;if(t<=640)return 480;let o=t<960;return Math.min(480,t-(o?320:420)-(!o&&r?n:0))})({viewportWidth:window.innerWidth,rightPanelOpen:em,rightPanelWidth:tM.current}),[em]),tW=(0,o.useCallback)(()=>(function(e){let{viewportWidth:t,sidebarOpen:r,sidebarWidth:n}=e;return t<960?1200:Math.min(1200,t-420-(r?n:0))})({viewportWidth:window.innerWidth,sidebarOpen:ex,sidebarWidth:tI.current}),[ex]),tL=pP({ariaLabel:R("desktop.resizeSidebar"),cssVariable:"--sidebar-width",defaultWidth:260,getMaxWidth:t$,growthDirection:"right",maxWidth:480,minWidth:180,storageKey:"pi-sidebar-width",widthRef:tI}),tN=pP({ariaLabel:R("desktop.resizeFilePanel"),cssVariable:"--right-panel-width",defaultWidth:pN(1366),getDefaultWidth:tE,getMaxWidth:tW,growthDirection:"left",maxWidth:1200,minWidth:300,storageKey:"pi-right-panel-width",widthRef:tM}),tA=tL.reclampWidth,tP=tN.reclampWidth;(0,o.useEffect)(()=>{em&&(tA(),tP())},[tP,tA,em]);let tF=(0,o.useCallback)((e,t)=>{eT.current?.insertText(dB(e,t))},[]),tD=(0,o.useCallback)(e=>{let t=e.map(e=>dB(e,!1)).join("");t&&eT.current?.insertText(t)},[]);(0,o.useCallback)((e,t,r)=>{let n,o,i,s;eT.current?.insertText((n=Math.max(1,Math.min(t,r)),o=Math.max(1,Math.max(t,r)),i=e.includes(" ")?`@"${e}"`:`@${e}`,s=n===o?`:${n}`:`:${n}-${o}`,`${i}${s} `))},[]);let[tH,tO]=(0,o.useState)(()=>w.sessionId),[tB,tU]=(0,o.useState)(null),[t_,tq]=(0,o.useState)(()=>w.requestedCwd?"validating":"idle"),[tK,tV]=(0,o.useState)(null),[tJ,tY]=(0,o.useState)(()=>!tH);(0,o.useLayoutEffect)(()=>{var e;let t=(e=function(e=pO()){if(!e)return null;try{return pB(e.getItem(pH))}catch{return null}}(),w.requestedCwd||w.sessionId||!e?w:"session"===e.kind?{...w,sessionId:e.sessionId}:{...w,requestedCwd:e.cwd});t!==w&&(S(t),t.sessionId&&tY(!1))},[w]);let tG=(0,o.useRef)(!1),tX=(0,o.useRef)(new Map),[tZ,tQ]=(0,o.useState)(null),t0=(0,o.useRef)("");(0,o.useEffect)(()=>{let e=`${w.requestedCwd??""}|${w.sessionId??""}`;t0.current!==e&&(t0.current=e,tO(w.sessionId),tY(!w.sessionId),w.requestedCwd||tq("idle"),tV(null))},[w]),(0,o.useEffect)(()=>{if($){!function(e,t,r=pK()){if(r)try{let n=pV(r);n[e]=t,r.setItem(pq,JSON.stringify(n))}catch{}}($.projectKey??K.current??pY($),$.id),function(e,t=pO()){if(t&&e)try{pU({kind:"session",sessionId:e},t)}catch{}}($.id);return}O&&function(e,t=pO()){let r=e.trim();if(t&&r)try{pU({kind:"new",cwd:r},t)}catch{}}(O)},[O,$]),(0,o.useEffect)(()=>{let e=w.requestedCwd;if(!e)return;let t=new AbortController;return tq("validating"),tV(null),fetch("/api/cwd/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e}),signal:t.signal}).then(async e=>{let t=await e.json().catch(()=>({}));if(!e.ok||!t.cwd)throw Error(t.error??`HTTP ${e.status}`);tG.current=!0,B(t.cwd),tq("ready"),new URLSearchParams(window.location.search).get("cwd")||k.replace(`?cwd=${encodeURIComponent(t.cwd)}`,{scroll:!1})}).catch(e=>{t.signal.aborted||(tV(e instanceof Error?e.message:String(e)),tq("error"))}),()=>t.abort()},[w,k]),(0,o.useCallback)((e,t)=>{let r=++q.current,n=function(e,t=pK()){if(!t)return null;try{let r=pV(t)[e];return"string"==typeof r&&r.length>0?r:null}catch{return null}}(e);if(!n)return;let o=o=>{if(r!==q.current)return;let i=o?.sessions.find(e=>e.id===n);if(!i){o&&pJ(e);return}if(pY(i)!==e)return void pJ(e);let s=V.current;s&&function(e,t){if(e===t)return dW(t);let r=dW(e)??null,n=dW(t);if(dN(e),!r)return;let o=n?dA(n.value,n.images,r.value,r.images,n.pastedBlocks,r.pastedBlocks):r;dL(t,o),d$(o)}(s,`parked-new:${t}`),V.current=null,W(i),Z(e=>e+1),new URLSearchParams(window.location.search).get("session")!==i.id&&k.replace(`?session=${encodeURIComponent(i.id)}`,{scroll:!1})};L.length>0?o({sessions:L}):fetch("/api/sessions").then(e=>e.ok?e.json():null).then(o).catch(()=>{})},[k,L]);let t1=(0,o.useCallback)(()=>{q.current+=1},[]),t2=(0,o.useCallback)((e,t,r)=>{if(t1(),tU(e),!e)return;if(tU(e),tG.current&&$&&i_($.projectRoot??$.cwd,t??e)){if(tG.current=!1,$){let e=$.projectRoot??$.cwd;e&&tX.current.set(e,$.id)}return}tG.current=!1;let n=t??e;if($&&i_($.projectRoot??$.cwd,n)){($.projectRoot??$.cwd)&&tX.current.set(n,$.id);return}if($){let e=$.projectRoot??$.cwd;e&&tX.current.set(e,$.id)}W(null),B(t=>t&&t!==e?null:t),Z(e=>e+1),eq(null),e4(null),window.history.replaceState(null,"","/");let o=tX.current.get(n);tQ(o?{projectRoot:n,sessionId:o}:null)},[$]);(0,o.useEffect)(()=>{let e=tB?oL(tB)||tB:null;document.title=e?`${e} — Pi Agent Web`:"Pi Agent Web"},[tB]);let t6=(0,o.useCallback)((e,t=!1)=>{if(t||tQ(null),!t&&$){let t=i_($.projectRoot??$.cwd,e.projectRoot??e.cwd);if($.id===e.id&&t){I&&ef(!1);return}}let r=e.projectRoot??e.cwd;r&&tX.current.set(r,e.id),B(null),W(e),Z(e=>e+1),eq(null),tY(!0),I&&!t&&ef(!1),t&&(tG.current=!0),t&&new URLSearchParams(window.location.search).get("session")===e.id||k.replace(`?session=${encodeURIComponent(e.id)}`,{scroll:!1})},[I,$]),t4=(0,o.useRef)(()=>{});(0,o.useEffect)(()=>{t4.current=t6},[t6]);let t5=(0,o.useCallback)(e=>{eB.current?.(e)},[]),t3=(0,o.useCallback)(({targetSession:e,title:t,body:r,tag:n})=>{if(!("Notification"in window))return;let o=()=>{iK({title:t,body:r,sessionUrl:e?`/?session=${encodeURIComponent(e.id)}`:"/",tag:n,onClick:()=>{window.focus(),e&&t6(e)}})};"granted"===Notification.permission?(o(),pD(T)):"default"===Notification.permission&&Notification.requestPermission().then(e=>{"granted"===e&&(o(),pD(T))})},[t6,T]);(0,o.useCallback)(e=>{var t;$?.relation?.kind!=="subagent"&&iq()&&(t=td.current,!(!function(e){switch(e.method){case"select":case"confirm":case"input":case"editor":return!0;case"custom":return!0!==e.closed;default:return!1}}(e)||t.has(e.id))&&(t.add(e.id),1)&&t3({targetSession:$,title:R("i18n.attentionNeeded"),body:"custom"===e.method?R("i18n.extensionInputNeeded"):e.title,tag:`pi-extension-ui:${e.id}`}))},[t3,$,R]);let t8=(0,o.useCallback)(async()=>{let e=$?.id;if(e&&"naming"!==e7.kind){te.current&&clearTimeout(te.current),e4(null),e9({kind:"naming"});try{let t=await fetch(`/api/sessions/${encodeURIComponent(e)}/auto-name`,{method:"POST"}),r=await t.json().catch(()=>({}));if(!t.ok||!r.title)throw Error(r.error||`HTTP ${t.status}`);let n=r.title.trim();if(G(e=>e+1),tt.current!==e)return;W(t=>t?.id===e?{...t,name:n}:t),eJ(t=>t?.sessionId===e?{...t,sessionName:n}:t),e9({kind:"success"}),te.current=setTimeout(()=>e9({kind:"idle"}),1800)}catch(t){if(tt.current!==e)return;e9({kind:"error",message:t instanceof Error?t.message:String(t)}),te.current=setTimeout(()=>e9({kind:"idle"}),5e3)}}},[e7.kind,$?.id]);(0,o.useEffect)(()=>{te.current&&clearTimeout(te.current),e9({kind:"idle"})},[$?.id]),(0,o.useCallback)(()=>{ee(e=>e+1)},[]);let t7=(0,o.useCallback)(()=>{tY(!0)},[]),t9=(0,o.useCallback)(e=>{if(G(e=>e+1),$?.id===e){!function(e,t=pO()){if(t&&e)try{let r=pB(t.getItem(pH));if(r?.kind!=="session"||r.sessionId!==e)return;t.removeItem(pH)}catch{}}(e);let t=$.cwd;W(null),B(t??null),Z(e=>e+1),eq(null),e4(null),window.history.replaceState(null,"","/")}},[k,$]),re=(0,o.useCallback)(e=>{fetch("/api/sessions").then(e=>e.ok?e.json():null).then(t=>{let r=t?.sessions.find(t=>t.id===e);r&&W(t=>!t||t.id!==e||t.projectRoot&&t.name?t:r)}).catch(()=>{})},[]),rt=(0,o.useCallback)((e,t)=>{G(e=>e+1),V.current===t&&(t1(),V.current=null,B(null),W(e),re(e.id),k.replace(`?session=${encodeURIComponent(e.id)}`,{scroll:!1}))},[t1,k,re]),rr=(0,o.useCallback)(e=>{t1(),V.current=null,G(e=>e+1),Z(e=>e+1),B(null),W(t=>({...t??{path:"",cwd:"",created:"",modified:"",messageCount:0,firstMessage:""},id:e,transient:!1})),re(e),k.replace(`?session=${encodeURIComponent(e)}`,{scroll:!1})},[t1,k,re]),rn=(0,o.useCallback)(()=>{G(e=>e+1),ee(e=>e+1),$&&re($.id),$?.relation?.kind!=="subagent"&&iq()&&t3({targetSession:$,title:$?.name??R("i18n.sessionComplete"),body:R("i18n.taskFinished"),tag:$?`pi-session-complete:${$.id}`:"pi-session-complete"})},[t3,re,$,R]);(0,o.useEffect)(()=>{if(!tZ)return;let{projectRoot:e,sessionId:t}=tZ;t4.current({path:"",id:t,cwd:e,created:"",modified:"",messageCount:0,firstMessage:"",projectRoot:e},!0),re(t),window.history.replaceState(null,"",`?session=${encodeURIComponent(t)}`),tQ(null)},[tZ,re]);let ro=(0,o.useCallback)((e,t)=>{tQ(null),W(null),B(t),Z(e=>e+1),eq(null),e4(null),I&&ef(!1),_(null),k.replace(`?cwd=${encodeURIComponent(t)}`,{scroll:!1})},[k,I]);!function(e){let{onNewSession:t,activeCwd:r}=e;(0,o.useEffect)(()=>{let e=e=>{if("Escape"===e.key){if(!a)return;let t=e.target?.tagName;if("TEXTAREA"===t||"INPUT"===t)return;e.preventDefault(),a();return}if("n"===e.key&&e.ctrlKey&&e.altKey){if(!r||!t)return;e.preventDefault(),t(r)}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[r,t])}({onNewSession:e=>ro(`kb-${Date.now()}`,e),activeCwd:tB});let ri=(0,o.useCallback)((e,t,r,n)=>{let o="string"==typeof r||null===r?r:r?.sourceSessionId??void 0,i=("object"==typeof r&&null!==r?r:n)??{},s=`file:${e}`;tv(r=>(function(e,t){let r=e.find(e=>e.id===t.tabId);if(!r)return[...e,{id:t.tabId,label:t.fileName,filePath:t.filePath,sourceSessionId:t.sourceSessionId,initialDisplayMode:t.modeHint,page:t.page,viewerState:t.modeHint?{displayMode:t.modeHint,wrapLines:!1,scrollTop:0,scrollLeft:0}:void 0,viewerRevision:0}];let n=!!(t.sourceSessionId&&r.sourceSessionId!==t.sourceSessionId),o=r.page!==t.page;return n||t.modeHint||o?e.map(e=>{if(e.id!==t.tabId)return e;let r={...e},i=!1;return n&&(r.sourceSessionId=t.sourceSessionId,i=!0),o&&(r.page=t.page,i=!0),t.modeHint&&(r.initialDisplayMode=t.modeHint,r.viewerState={displayMode:t.modeHint,wrapLines:e.viewerState?.wrapLines??!1,scrollTop:0,scrollLeft:0},i=!0),i&&(r.viewerRevision=(e.viewerRevision??0)+1),r}):e})(r,{fileName:t,filePath:e,modeHint:i.initialDisplayMode,page:i.page,sourceSessionId:o,tabId:s})),tb(s),ev(!0),I&&ef(!1)},[I]),rs=(0,o.useCallback)((e,t)=>{ri(e,oL(e),{sourceSessionId:$?.id??null,page:t})},[ri,$?.id]),rl=(0,o.useMemo)(()=>{let e=new Map;for(let t of tS){if(t.relation?.kind!=="subagent")continue;let r=t.relation;e.set(t.id,{status:tz.has(t.id)?"running":r.status,...r.createdAt?{createdAt:r.createdAt}:{},...r.completedAt?{completedAt:r.completedAt}:{}})}return e},[tS,tz]),ra=(0,o.useCallback)((e,t)=>{let r=`subagent:${e}`;tv(n=>n.some(e=>e.id===r)?n:[...n,{id:r,label:t,filePath:"",kind:"subagent",sessionId:e}]),tb(r),ev(!0),I&&ef(!1)},[I]),rd=(0,o.useCallback)(e=>{tv(t=>{let r=t.filter(t=>t.id!==e);return 0===r.length&&ev(!1),r}),tb(t=>{if(t!==e)return t;let r=tm.filter(t=>t.id!==e);return r.length>0?r[r.length-1].id:null})},[tm]),rc=(0,o.useCallback)(e=>{ee(e=>e+1),ri(e,oL(e))},[ri]),ru=(0,o.useCallback)((e,t)=>{ee(e=>e+1);let r=e.endsWith("/")?e:e+"/",n=n=>n===e||t&&n.startsWith(r);tv(e=>{let t=e.filter(e=>!n(e.filePath));return 0===t.length&&ev(!1),t}),tb(e=>{if(!e)return e;let t=tm.find(t=>t.id===e);if(!t||!n(t.filePath))return e;let r=tm.filter(e=>!n(e.filePath));return r.length>0?r[r.length-1].id:null})},[tm]),rp=$?os({name:$.name||eV?.sessionName||void 0,firstMessage:$.firstMessage,id:$.id},($.cwd??tB??"").replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).pop()):(e=tB??O)?e.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).pop()||e:null,rh=(0,o.useCallback)(()=>{$&&window.open(`/api/sessions/${encodeURIComponent($.id)}/export?inline=1`,"_blank","noopener,noreferrer")},[$]),rg=O??(null===$&&tB?tB:null),rx="validating"!==t_&&"error"!==t_&&(null!==$||null!==rg),rf=$?.cwd??rg,[rm,rv]=(0,o.useState)(!1),ry=(0,o.useCallback)(()=>{I||rv(e=>!e)},[I]),[rb,rk]=(0,o.useState)(!0);(0,o.useEffect)(()=>{let e=!1,t=()=>fetch("/api/features").then(e=>e.ok?e.json():null).then(t=>{!e&&t&&"boolean"==typeof t.tasksBoard&&(rk(t.tasksBoard),t.tasksBoard||rv(!1))}).catch(()=>{});t();let r=()=>t();return window.addEventListener("pi:features-changed",r),()=>{e=!0,window.removeEventListener("pi:features-changed",r)}},[]);let rj=tJ&&!rx;(0,o.useEffect)(()=>{let e=()=>{I||rv(!0)};return window.addEventListener(ue,e),()=>window.removeEventListener(ue,e)},[I]),(0,o.useEffect)(()=>{if(ea(null),ec(!1),eg(null),!rf)return;let e=new AbortController;return fetch(`/api/project-trust?cwd=${encodeURIComponent(rf)}`,{signal:e.signal}).then(async e=>{let t=await e.json();if(!e.ok||t.error)throw Error(t.error??`HTTP ${e.status}`);ea(t)}).catch(e=>{e instanceof DOMException&&"AbortError"===e.name||console.error("Failed to load project trust:",e)}),()=>e.abort()},[rf]);let rw=(0,o.useCallback)(async()=>{if(rf&&!eu){ep(!0),eg(null);try{let e=await fetch("/api/project-trust",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:rf})}),t=await e.json();if(!e.ok||t.error)throw Error(t.error??`HTTP ${e.status}`);ea(t),ec(!1),es(e=>e+1),Z(e=>e+1)}catch(e){eg(e instanceof Error?e.message:String(e))}finally{ep(!1)}}},[eu,rf]),rS=tm.find(e=>e.id===ty)??null,rC=tB??$?.cwd??O,rz=(0,o.useCallback)(e=>{eo(e),er(!0)},[]),rT=(0,n.jsx)(n.Fragment,{children:(0,n.jsx)(i1,{selectedSessionId:$?.id??null,onSelectSession:t6,onNewSession:ro,initialSessionId:tH,onInitialRestoreDone:t7,refreshKey:J,onSessionDeleted:t9,selectedCwd:$?.cwd??O??null,onCwdChange:t2,onOpenFile:ri,selectedSessionStats:eV,onOpenSettings:e=>{rz(e??"models")},explorerRefreshKey:Q,onAtMention:tF,onAtMentions:tD,onFileCreated:rc,onFileDeleted:ru,workspaceControlsHosts:{title:eI,welcome:eW,titleRight:eE},showWorkspaceControls:!0})}),rR=e=>rx&&el?.requiresTrust&&!el.trusted?(0,n.jsxs)("button",{type:"button",onClick:()=>{eg(null),ec(!0)},title:R("trust.resourcesNotLoaded"),"aria-label":R("trust.resourcesNotLoaded"),style:{display:"flex",alignItems:"center",justifyContent:e?"flex-start":"center",gap:6,width:e?"100%":void 0,minHeight:e?32:void 0,height:e?void 0:"100%",padding:e?"6px 12px":"0 12px",background:e?"color-mix(in srgb, #d97706 8%, var(--bg-panel))":"none",border:"none",borderRight:e?"none":"1px solid var(--border)",borderBottom:e?"1px solid var(--border)":"none",color:"#d97706",cursor:"pointer",flexShrink:0,fontSize:11,lineHeight:1.35,textAlign:"left"},"data-mobile-trust-banner":e?"true":void 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",style:{flexShrink:0},children:[(0,n.jsx)("path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10Z"}),(0,n.jsx)("path",{d:"M12 8v4"}),(0,n.jsx)("path",{d:"M12 16h.01"})]}),(0,n.jsx)("span",{children:R("trust.resourcesNotLoaded")})]}):null,rI=e=>{let t,r,o,i,s,l;return e||rx?(0,n.jsxs)("div",{style:{display:"flex",alignItems:"stretch",height:"100%"},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>{rh(),e&&M&&ew(!0)},disabled:!$,title:$?R("history.full"):R("history.unsaved"),"aria-label":R("history.full"),style:{display:"flex",alignItems:"center",justifyContent:"center",gap:6,width:e?36:void 0,height:"100%",padding:e?0:"0 12px",background:"none",border:"none",borderTop:"2px solid transparent",borderRight:"1px solid var(--border)",color:$?"var(--text-muted)":"var(--text-dim)",cursor:$?"pointer":"not-allowed",opacity:$?1:.45,flexShrink:0,fontSize:11,whiteSpace:"nowrap",transition:"color 0.1s, background 0.1s, opacity 0.1s"},onMouseEnter:e=>{$&&(e.currentTarget.style.color="var(--text)",e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{e.currentTarget.style.color=$?"var(--text-muted)":"var(--text-dim)",e.currentTarget.style.background="none"},"data-mobile-toolbar-action":e?"history":void 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:{color:$?"var(--text-muted)":"var(--text-dim)",flexShrink:0},"aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M3 12a9 9 0 1 0 3-6.7L3 8"}),(0,n.jsx)("path",{d:"M3 3v5h5"}),(0,n.jsx)("path",{d:"M12 7v5l3 2"})]}),!e&&(0,n.jsx)("span",{children:R("history.label")})]}),(t=!!($&&((eV?.userMessages??0)>0||$.messageCount>0)),r=!$||$.transient||!t||"naming"===e7.kind,o="success"===e7.kind,i="error"===e7.kind,s="naming"===e7.kind?R("title.generating"):o?R("title.updated"):i?R("title.failed"):R("title.generate"),l=!$||$.transient?R("title.unsaved"):t?i?e7.message:R("title.generateSession"):R("title.noMessages"),(0,n.jsxs)("button",{type:"button",onClick:()=>{t8(),e&&M&&ew(!0)},disabled:r,title:l,"aria-label":s,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:6,width:e?36:void 0,height:"100%",padding:e?0:"0 12px",background:"none",border:"none",borderTop:"2px solid transparent",borderRight:"1px solid var(--border)",color:i?"#dc2626":o?"var(--accent)":r?"var(--text-dim)":"var(--text-muted)",cursor:r?"not-allowed":"pointer",opacity:r&&"naming"!==e7.kind?.45:1,flexShrink:0,fontSize:11,whiteSpace:"nowrap",transition:"color 0.1s, background 0.1s, opacity 0.1s"},onMouseEnter:e=>{r||(e.currentTarget.style.color=i?"#dc2626":"var(--text)",e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{e.currentTarget.style.color=i?"#dc2626":o?"var(--accent)":r?"var(--text-dim)":"var(--text-muted)",e.currentTarget.style.background="none"},"data-mobile-toolbar-action":e?"name":void 0,children:["naming"===e7.kind?(0,n.jsxs)("svg",{className:"animate-spin",width:"13",height:"13",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"9",stroke:"currentColor",strokeWidth:"2",opacity:"0.25"}),(0,n.jsx)("path",{d:"M21 12a9 9 0 0 0-9-9",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})]}):o?(0,n.jsx)("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)("polyline",{points:"20 6 9 17 4 12"})}):(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"m15 4 5 5L7 22l-5-5Z"}),(0,n.jsx)("path",{d:"m14 5 5 5"}),(0,n.jsx)("path",{d:"M6 4V2M5 3H3M19 19v3M17.5 20.5h3"})]}),!e&&(0,n.jsx)("span",{children:s})]})),F&&(0,n.jsxs)("button",{type:"button",onClick:()=>e8("agents",e),title:R("agentSwitcher.title"),"aria-label":R("agentSwitcher.title"),"aria-pressed":"agents"===e6,style:{position:"relative",display:"flex",alignItems:"center",justifyContent:"center",gap:6,width:e?36:void 0,height:"100%",padding:e?0:"0 12px",background:"agents"===e6?"var(--bg-selected)":"none",border:"none",borderTop:"agents"===e6?"2px solid var(--accent)":"2px solid transparent",borderRight:"1px solid var(--border)",color:"agents"===e6?"var(--text)":"var(--text-muted)",cursor:"pointer",flexShrink:0,fontSize:11,whiteSpace:"nowrap",transition:"color 0.1s, background 0.1s"},"data-mobile-toolbar-action":e?"agents":void 0,children:[(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.9",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("rect",{x:"5",y:"7",width:"14",height:"11",rx:"2"}),(0,n.jsx)("path",{d:"M9 11h.01M15 11h.01M9 15h6M12 7V4M10 4h4"})]}),!e&&(0,n.jsx)("span",{children:R("agentSwitcher.title")}),(0,n.jsx)("span",{"aria-hidden":"true",style:{minWidth:15,height:15,padding:"0 4px",display:"grid",placeItems:"center",borderRadius:7,background:"var(--bg-selected)",color:"var(--accent)",fontSize:10,lineHeight:1,fontVariantNumeric:"tabular-nums",...e?{position:"absolute",top:2,right:2,minWidth:13,height:13,padding:"0 3px",fontSize:9}:{}},children:P.subagents.length})]}),eU&&(e?(0,n.jsx)("button",{type:"button",onClick:()=>e8("branches",!0),title:R("i18n.branches"),"aria-label":R("i18n.branches"),"aria-pressed":"branches"===e6,style:{display:"flex",alignItems:"center",justifyContent:"center",width:36,height:"100%",padding:0,background:"branches"===e6?"var(--bg-selected)":"none",border:"none",borderTop:"branches"===e6?"2px solid var(--accent)":"2px solid transparent",borderRight:"1px solid var(--border)",color:"branches"===e6?"var(--text)":"var(--text-muted)",cursor:"pointer",flexShrink:0},"data-mobile-toolbar-action":"branches",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:eF.length>0?"var(--accent)":"var(--text-dim)"},"aria-hidden":"true",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.jsx)(cI,{tree:eF,activeLeafId:eH,onLeafChange:t5,inline:!0,containerRef:eR,open:"branches"===e6,onToggle:()=>e8("branches"),hasSession:!0})),(0,n.jsxs)("button",{ref:ta,type:"button",onClick:()=>tc("system",e),disabled:e&&!rx,title:R("system.prompt"),"aria-label":R("system.prompt"),"aria-pressed":"system"===e6,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:6,width:e?36:void 0,height:"100%",padding:e?0:"0 12px",background:"system"===e6?"var(--bg-selected)":"none",border:"none",borderTop:"system"===e6?"2px solid var(--accent)":"2px solid transparent",borderRight:"1px solid var(--border)",cursor:e&&!rx?"not-allowed":"pointer",color:"system"===e6?"var(--text)":"var(--text-muted)",opacity:e&&!rx?.45:1,fontSize:11,whiteSpace:"nowrap",transition:"color 0.1s, background 0.1s"},onMouseEnter:t=>{(!e||rx)&&(t.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.color="system"===e6?"var(--text)":"var(--text-muted)"},"data-mobile-toolbar-action":e?"system":void 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:{color:e_?"var(--accent)":"var(--text-dim)",flexShrink:0},"aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),(0,n.jsx)("polyline",{points:"14 2 14 8 20 8"}),(0,n.jsx)("line",{x1:"8",y1:"13",x2:"16",y2:"13"}),(0,n.jsx)("line",{x1:"8",y1:"17",x2:"13",y2:"17"})]}),!e&&(0,n.jsx)("span",{children:R("system.label")})]}),(0,n.jsxs)("button",{type:"button",onClick:()=>tc("tools",e),disabled:e&&!rx,title:R("tools.title"),"aria-label":R("tools.title"),"aria-pressed":"tools"===e6,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:6,width:e?36:void 0,height:"100%",padding:e?0:"0 12px",background:"tools"===e6?"var(--bg-selected)":"none",border:"none",borderTop:"tools"===e6?"2px solid var(--accent)":"2px solid transparent",borderRight:"1px solid var(--border)",cursor:e&&!rx?"not-allowed":"pointer",color:"tools"===e6?"var(--text)":"var(--text-muted)",opacity:e&&!rx?.45:1,fontSize:11,whiteSpace:"nowrap",transition:"color 0.1s, background 0.1s"},onMouseEnter:t=>{(!e||rx)&&(t.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.color="tools"===e6?"var(--text)":"var(--text-muted)"},"data-mobile-toolbar-action":e?"tools":void 0,children:[(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{color:tr?.some(e=>e.active)?"var(--accent)":"var(--text-dim)",flexShrink:0},"aria-hidden":"true",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.8-3.8a6 6 0 0 1-7.9 7.9l-6.9 6.9a2.1 2.1 0 0 1-3-3l6.9-6.9a6 6 0 0 1 7.9-7.9z"})}),!e&&(0,n.jsx)("span",{children:R("tools.label")})]})]}):null},rM=e=>{if(!e&&(!rx||!eV&&!e0))return null;let t=eV?.tokens,r=eV?.cost??0,o=e=>e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(0)}k`:String(e),i=r>0?r>=.01?`$${r.toFixed(2)}`:"<$0.01":null,s="var(--text-muted)",l=null,a=null;if(e0?.contextWindow){let e=e0.percent;null!==e&&e>90?s="#ef4444":null!==e&&e>70&&(s="rgba(234,179,8,0.95)"),l=null!==e?`${e.toFixed(0)}% / ${o(e0.contextWindow)}`:`? / ${o(e0.contextWindow)}`,a=null!==e?`${e.toFixed(0)}%`:null}let d=[];if(t&&(d.push(`in: ${t.input.toLocaleString(T)}`),d.push(`out: ${t.output.toLocaleString(T)}`),d.push(`cache read: ${t.cacheRead.toLocaleString(T)}`),d.push(`cache write: ${t.cacheWrite.toLocaleString(T)}`),r>0&&d.push(`cost: $${r.toFixed(4)}`)),e0?.contextWindow){let e=e0.percent;d.push(`context: ${null!==e?e.toFixed(1)+"%":"unknown"} of ${e0.contextWindow.toLocaleString()} tokens`)}let c=d.join(" | "),u=e&&M&&ej,p=!!(t&&(t.input>0||t.output>0)||i||a);return(0,n.jsx)("button",{type:"button",onClick:()=>e8("session"),disabled:!rx||u,tabIndex:u?-1:void 0,title:c||R("session.title"),"aria-label":R("session.title"),"aria-pressed":"session"===e6,"aria-hidden":!!u||void 0,className:e?"mobile-session-stats":void 0,"data-mobile-toolbar-stats":e?"true":void 0,style:{marginLeft:e?0:"auto",display:"flex",alignItems:"center",justifyContent:"flex-end",flex:e?1:void 0,minWidth:0,gap:e?7:10,paddingLeft:e?6:12,paddingRight:e?6:12,height:"100%",overflow:"hidden",visibility:u?"hidden":"visible",pointerEvents:u?"none":"auto",background:"session"===e6?"var(--bg-selected)":"none",border:"none",borderTop:"session"===e6?"2px solid var(--accent)":"2px solid transparent",fontSize:11,color:"var(--text-muted)",whiteSpace:"nowrap",cursor:rx?"pointer":"default",fontVariantNumeric:"tabular-nums",transition:"color 0.1s, background 0.1s"},onMouseEnter:e=>{rx&&!u&&(e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.color="session"===e6?"var(--text)":"var(--text-muted)"},children:e?(0,n.jsxs)(n.Fragment,{children:[t&&t.input>0&&(0,n.jsxs)("span",{className:"mobile-session-stat-io",style:{display:"flex",alignItems:"center",gap:2,flexShrink:0},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","aria-hidden":"true",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"})]}),o(t.input)]}),t&&t.output>0&&(0,n.jsxs)("span",{className:"mobile-session-stat-io",style:{display:"flex",alignItems:"center",gap:2,flexShrink:0},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","aria-hidden":"true",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"})]}),o(t.output)]}),i&&(0,n.jsx)("span",{className:"mobile-session-stat-cost",style:{color:"var(--text)",fontWeight:500,flexShrink:0},children:i}),a&&(0,n.jsx)("span",{style:{color:s,flexShrink:0},children:a}),!p&&rx&&(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",color:"var(--text-dim)"},children:R("session.title")})]}):(0,n.jsxs)(n.Fragment,{children:[t&&t.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","aria-hidden":"true",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"})]}),o(t.input)]}),t&&t.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","aria-hidden":"true",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"})]}),o(t.output)]}),t&&t.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","aria-hidden":"true",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"})]}),o(t.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:s},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","aria-hidden":"true",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]})]})})},rE=e=>{let t=e&&M&&ej;return(0,n.jsx)("button",{type:"button",onClick:tx,disabled:t,tabIndex:t?-1:void 0,"aria-controls":"file-panel","aria-expanded":em,"aria-hidden":!!t||void 0,title:em?R("files.hidePanel"):R("files.showPanel"),"aria-label":em?R("files.hidePanel"):R("files.showPanel"),"data-mobile-toolbar-file":e?"true":void 0,style:{marginLeft:e||eV||e0?0:"auto",display:"flex",alignItems:"center",justifyContent:"center",width:36,height:36,padding:0,visibility:t?"hidden":"visible",pointerEvents:t?"none":"auto",background:em?"var(--bg-selected)":"none",border:"none",borderLeft:"1px solid var(--border)",color:em?"var(--text)":"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s, background 0.12s"},onMouseEnter:e=>{t||(e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.color=em?"var(--text)":"var(--text-muted)"},children:(0,n.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",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"})]})})};return(0,n.jsxs)(uP,{children:[(0,n.jsx)("style",{children:`
226
+ `})]})}function pW({cwd:e,busy:t,error:r,onCancelAction:o,onConfirmAction:i}){let{t:s}=(0,Y.s)();return L(!t,o),(0,n.jsx)("div",{role:"presentation",style:{position:"fixed",inset:0,zIndex:1100,display:"flex",alignItems:"center",justifyContent:"center",padding:16,background:"rgba(0, 0, 0, 0.4)"},children:(0,n.jsxs)("section",{role:"dialog","aria-modal":"true","aria-labelledby":"project-trust-title",style:{width:440,maxWidth:"100%",border:"1px solid var(--border)",borderRadius:8,background:"var(--bg-panel)",boxShadow:"0 12px 36px rgba(0, 0, 0, 0.24)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",gap:12,padding:"18px 18px 14px"},children:[(0,n.jsx)(aH.o,{size:21,weight:"duotone",color:"var(--accent-orange)",style:{flexShrink:0,marginTop:1},"aria-hidden":"true"}),(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("h2",{id:"project-trust-title",style:{margin:0,fontSize:15,fontWeight:700,color:"var(--text)"},children:s("desktop.trustProjectTitle")}),(0,n.jsx)("p",{style:{margin:"7px 0 0",fontSize:12,lineHeight:1.6,color:"var(--text-muted)"},children:s("desktop.trustProjectBody")}),(0,n.jsx)("code",{style:{display:"block",marginTop:10,padding:"8px 10px",border:"1px solid var(--border)",borderRadius:5,background:"var(--bg)",color:"var(--text)",fontFamily:"var(--font-mono)",fontSize:11,overflowWrap:"anywhere"},children:e}),r&&(0,n.jsx)("div",{role:"alert",style:{marginTop:10,color:"var(--accent-red)",fontSize:12,lineHeight:1.5},children:r})]})]}),(0,n.jsxs)("footer",{style:{display:"flex",justifyContent:"flex-end",gap:8,padding:"10px 18px",borderTop:"1px solid var(--border)"},children:[(0,n.jsx)("button",{type:"button",onClick:o,disabled:t,style:{height:32,padding:"0 12px",border:"1px solid var(--border)",borderRadius:5,background:"transparent",color:"var(--text-muted)",cursor:t?"not-allowed":"pointer",fontSize:12},children:s("desktop.cancel")}),(0,n.jsx)("button",{type:"button",onClick:i,disabled:t,style:{height:32,padding:"0 12px",border:"1px solid var(--accent)",borderRadius:5,background:"var(--accent)",color:"var(--accent-contrast)",cursor:t?"wait":"pointer",opacity:t?.7:1,fontSize:12,fontWeight:600},children:s(t?"desktop.trustingProject":"desktop.trustProject")})]})]})})}function pL(e,t,r){let n=Number.isFinite(e)?e:t,o=Math.max(t,r);return Math.round(Math.max(t,Math.min(o,n)))}function pN(e){return pL(.42*e,360,640)}function pA(e,t){try{window.localStorage.setItem(e,String(t))}catch{}}function pP(e){let{ariaLabel:t,axis:r="horizontal",cssVariable:n,defaultWidth:i,getDefaultWidth:s,getMaxWidth:l,growthDirection:a,maxWidth:d,minWidth:c,storageKey:u,widthRef:p}=e,h=(0,o.useRef)(null),g=(0,o.useRef)(null),x=(0,o.useRef)(!1),[f,m]=(0,o.useState)(i),[v,y]=(0,o.useState)(!1),[b,k]=(0,o.useState)(!1);(0,o.useEffect)(()=>{k(!0)},[]);let j=(0,o.useCallback)(()=>Math.min(d,Math.max(c,l())),[l,d,c]),w=(0,o.useCallback)(e=>pL(e,c,j()),[j,c]),S=(0,o.useCallback)(e=>{p.current=e;let t=`${e}px`;h.current?.style.setProperty(n,t),h.current?.parentElement?.style.setProperty(n,t)},[n,p]),C=(0,o.useCallback)((e,t={})=>{let{forcePersist:r=!1,persist:n=!0}=t,o=w(e),i=o!==p.current;return S(o),m(o),n&&(i||r)&&pA(u,o),o},[S,w,u,p]),z=(0,o.useCallback)(e=>{document.body.style.cursor=e.previousCursor,document.body.style.userSelect=e.previousUserSelect},[]),T=(0,o.useCallback)(e=>{let t=g.current;if(t&&t.pointerId===e){g.current=null,z(t),y(!1),C(p.current,{forcePersist:!0});try{t.target.hasPointerCapture(e)&&t.target.releasePointerCapture(e)}catch{}}},[C,z,p]),R=(0,o.useCallback)(e=>{if("mouse"===e.pointerType&&0!==e.button)return;e.preventDefault(),e.stopPropagation();let t=g.current;t&&T(t.pointerId);let n=e.currentTarget;n.focus({preventScroll:!0}),n.setPointerCapture(e.pointerId),g.current={pointerId:e.pointerId,startPosition:"vertical"===r?e.clientY:e.clientX,startWidth:p.current,target:n,previousCursor:document.body.style.cursor,previousUserSelect:document.body.style.userSelect},document.body.style.cursor="vertical"===r?"row-resize":"col-resize",document.body.style.userSelect="none",y(!0)},[r,T,p]),I=(0,o.useCallback)(e=>{let t=g.current;if(!t||t.pointerId!==e.pointerId)return;if("mouse"===e.pointerType&&0===e.buttons)return void T(e.pointerId);e.preventDefault();let n="right"===a||"down"===a?1:-1,o="vertical"===r?e.clientY:e.clientX,i=w(t.startWidth+(o-t.startPosition)*n);S(i),e.currentTarget.setAttribute("aria-valuenow",String(i)),e.currentTarget.setAttribute("aria-valuetext",`${i} px`)},[S,r,w,T,a]),M=(0,o.useCallback)(e=>{T(e.pointerId)},[T]),E=(0,o.useCallback)(e=>{T(e.pointerId)},[T]),$=(0,o.useCallback)(e=>{T(e.pointerId)},[T]),W=(0,o.useCallback)(()=>{C(s?.()??i,{forcePersist:!0})},[C,i,s]),L=(0,o.useCallback)(()=>{C(p.current)},[C,p]),N=(0,o.useCallback)(e=>{let t=e.shiftKey?32:12,n="right"===a||"down"===a,o="vertical"===r?"ArrowDown":"ArrowRight",i="vertical"===r?"ArrowUp":"ArrowLeft";e.key===(n?o:i)?(e.preventDefault(),C(p.current+t,{forcePersist:!0})):e.key===(n?i:o)?(e.preventDefault(),C(p.current-t,{forcePersist:!0})):"Home"===e.key?(e.preventDefault(),C(c,{forcePersist:!0})):"End"===e.key?(e.preventDefault(),C(j(),{forcePersist:!0})):"Enter"===e.key&&(e.preventDefault(),W())},[r,C,j,a,c,W,p]);return(0,o.useEffect)(()=>{if(x.current)return;x.current=!0;let e=function(e){try{let t=window.localStorage.getItem(e);if(null===t)return null;let r=Number.parseInt(t,10);return Number.isFinite(r)?r:null}catch{return null}}(u),t=C(e??s?.()??i,{persist:!1});null!==e&&e!==t&&pA(u,t)},[C,i,s,u]),(0,o.useEffect)(()=>{if(!x.current)return;C(p.current);let e=()=>{C(p.current)};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[C,p]),(0,o.useEffect)(()=>{if(!v)return;let e=()=>{let e=g.current;e&&T(e.pointerId)},t=()=>{"visible"!==document.visibilityState&&e()};return window.addEventListener("blur",e),document.addEventListener("visibilitychange",t),()=>{window.removeEventListener("blur",e),document.removeEventListener("visibilitychange",t)}},[T,v]),(0,o.useEffect)(()=>()=>{let e=g.current;e&&(g.current=null,z(e))},[z]),{isResizing:v,panelRef:h,reclampWidth:L,separatorProps:{"aria-label":t,"aria-orientation":"vertical"===r?"horizontal":"vertical","aria-valuemax":b?j():d,"aria-valuemin":c,"aria-valuenow":f,"aria-valuetext":`${f} px`,onDoubleClick:W,onKeyDown:N,onLostPointerCapture:$,onPointerCancel:E,onPointerDown:R,onPointerMove:I,onPointerUp:M,role:"separator",tabIndex:0},width:f}}let pF=null;async function pD(e){if(!("serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window)||"granted"!==Notification.permission)return!1;if(pF)return pF;let t=(async()=>{try{let t=await fetch("/api/push/config");if(!t.ok)return!1;let{publicKey:r}=await t.json();if(!r)return!1;let n=await navigator.serviceWorker.ready,o=await n.pushManager.getSubscription();return o||(o=await n.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:function(e){let t="=".repeat((4-e.length%4)%4),r=atob((e+t).replace(/-/g,"+").replace(/_/g,"/")),n=new Uint8Array(r.length);for(let e=0;e<r.length;e+=1)n[e]=r.charCodeAt(e);return n}(r)})),(await fetch("/api/push/subscribe",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({subscription:o.toJSON(),locale:e})})).ok}catch{return pF=null,!1}})();return pF=t,t.then(e=>{e||pF!==t||(pF=null)}),t}let pH="pi-web:tab-open-session";function pO(){try{return window.sessionStorage}catch{return null}}function pB(e){if("string"!=typeof e||0===e.length)return null;if(e.startsWith("{"))try{let t=JSON.parse(e);if(!t||"object"!=typeof t||Array.isArray(t))return null;if("session"===t.kind&&"string"==typeof t.sessionId&&t.sessionId)return{kind:"session",sessionId:t.sessionId};if("new"===t.kind&&"string"==typeof t.cwd&&t.cwd.trim())return{kind:"new",cwd:t.cwd};return null}catch{return null}return{kind:"session",sessionId:e}}function pU(e,t){t.setItem(pH,JSON.stringify(e))}function p_(e,t){return t?(function(e){let t=function(e){let t=new Map(e.map(e=>[e.id,e])),r=new Map;for(let n of e){if(r.has(n.id))continue;let e=[],o=new Set,i=n.id,s=null;for(;;){if(r.has(i)){s=r.get(i)??null;break}if(o.has(i))break;o.add(i),e.push(i);let n=t.get(i);if(!n)break;if(n.relation?.kind!=="subagent"){s=n.id;break}i=n.relation.parentSessionId}for(let t of e)r.set(t,s)}return r}(e),r=new Map;for(let t of e)t.relation?.kind!=="subagent"&&r.set(t.id,{root:t,subagents:[],latestModified:t.modified});for(let n of e){if(n.relation?.kind!=="subagent")continue;let e=t.get(n.id),o=e?r.get(e):void 0;o&&(o.subagents.push(n),n.modified>o.latestModified&&(o.latestModified=n.modified))}return[...r.values()].sort((e,t)=>t.latestModified.localeCompare(e.latestModified))})(e).find(e=>e.root.id===t||e.subagents.some(e=>e.id===t))??null:null}let pq="pi-web:last-open-by-workspace";function pK(){try{return window.localStorage}catch{return null}}function pV(e){let t=e.getItem(pq);if(!t)return{};try{let e=JSON.parse(t);return null===e||"object"!=typeof e||Array.isArray(e)?{}:e}catch{return{}}}function pJ(e,t=pK()){if(t)try{let r=pV(t);if(!(e in r))return;delete r[e],0===Object.keys(r).length?t.removeItem(pq):t.setItem(pq,JSON.stringify(r))}catch{}}function pY(e){return e.projectKey??e.projectRoot??e.cwd}function pG(){let e,t,r,d,c,u,p,h,g,x,f,m,v,y,b,k,j=(0,s.useRouter)(),w=(0,s.useSearchParams)(),[S,C]=(0,o.useState)(()=>l(w));(0,o.useEffect)(()=>{C(l(w))},[w]),(0,o.useMemo)(()=>S,[S]);let{isDark:z,toggleTheme:T}=eA(),{locale:R,t:I}=(0,Y.s)(),M=tp(),[E,$]=(0,o.useState)(!1);(0,o.useEffect)(()=>{let e=window.matchMedia("(max-width: 480px)"),t=()=>$(e.matches);return t(),e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]);let[W,L]=(0,o.useState)(null),[N,A]=(0,o.useState)([]);(0,o.useCallback)(e=>{A(e),L(t=>{if(!t)return t;let r=e.find(e=>e.id===t.id);return r?{...t,...r,detailsPending:r.detailsPending,relation:r.relation,branch:r.branch,isWorktree:r.isWorktree}:t})},[]);let P=(0,o.useMemo)(()=>W?[...N.filter(e=>e.id!==W.id),W]:N,[W,N]),F=(0,o.useMemo)(()=>p_(P,W?.id),[W?.id,P]),D=!!F?.subagents.length,[H,O]=(0,o.useState)(()=>new Set);(0,o.useCallback)(e=>{O(t=>t.size===e.size&&[...e].every(e=>t.has(e))?t:e)},[]);let[B,U]=(0,o.useState)(null),[_,q]=(0,o.useState)(null),K=(0,o.useRef)(0),V=(0,o.useRef)(null),J=(0,o.useRef)(null),[G,X]=(0,o.useState)(0),[Z,Q]=(0,o.useState)(0),[ee,et]=(0,o.useState)(0),[er,en]=(0,o.useState)(!1),[eo,ei]=(0,o.useState)("models"),[es,el]=(0,o.useState)(0),[ea,ed]=(0,o.useState)(null),[ec,eu]=(0,o.useState)(!1),[ep,eh]=(0,o.useState)(!1),[eg,ex]=(0,o.useState)(null),[ef,em]=(0,o.useState)(()=>!S.sidebarCollapsed),[ev,ey]=(0,o.useState)(!1),[eb,ek]=(0,o.useState)(!1),ej=ev&&eb&&!M;(0,o.useEffect)(()=>{(!ev||M)&&ek(!1)},[ev,M]);let[ew,eS]=(0,o.useState)(!1),[eC,ez]=(0,o.useState)(!1);(0,o.useEffect)(()=>{M&&em(!1)},[M]),(0,o.useEffect)(()=>{ez(!0)},[]);let eT=(0,o.useRef)(null),eR=(0,o.useRef)(null),eI=(0,o.useRef)(null),eM=(0,o.useRef)(null),[eE,e$]=(0,o.useState)(null),[eW,eL]=(0,o.useState)(null),[eN,eP]=(0,o.useState)(null),eF=pv(),eD=function(){let{isDesktop:e,isMacOS:t}=pv(),r=(0,o.useCallback)(e=>{var t;0===e.button&&(t=e.target).closest("[data-tauri-drag-region]")&&!t.closest('button, a, input, textarea, select, [role="button"], [contenteditable="true"], [data-no-drag]')&&(e.preventDefault(),e.stopPropagation(),2===e.detail?pg():px())},[]);return e&&!t?{onMouseDown:r}:{}}(),[eH,eO]=(0,o.useState)([]),[eB,eU]=(0,o.useState)(null),e_=(0,o.useRef)(null),eq=cT(eH),[eK,eV]=(0,o.useState)(null),eJ=(0,o.useCallback)(e=>{eV(e)},[]),[eY,eG]=(0,o.useState)(null),eX=(0,o.useCallback)(e=>{eG(e)},[]),[eZ,eQ]=(0,o.useState)(null),e0=(0,o.useRef)(null),e1=(0,o.useCallback)((e,t)=>{nA(t).then(()=>{e0.current&&clearTimeout(e0.current),eQ(e),e0.current=setTimeout(()=>eQ(null),1400)})},[]);(0,o.useEffect)(()=>()=>{e0.current&&clearTimeout(e0.current)},[]);let[e2,e6]=(0,o.useState)(null),e4=(0,o.useCallback)(e=>{e6(e)},[]),[e5,e3]=(0,o.useState)(null),[e8,e7]=(0,o.useState)(null);(0,o.useEffect)(()=>{eq||e3(e=>"branches"===e?null:e)},[eq]),(0,o.useEffect)(()=>{D||e3(e=>"agents"===e?null:e)},[D]),(0,o.useEffect)(()=>{ej&&e3(null)},[ej]);let e9=(0,o.useCallback)((e,t=!1)=>{M&&em(!1),e3(t=>t===e?null:e),M&&E&&t&&eS(!0)},[M,E]),[te,tt]=(0,o.useState)({kind:"idle"}),tr=(0,o.useRef)(null),tn=(0,o.useRef)(W?.id??null);tn.current=W?.id??null;let[to,ti]=(0,o.useState)(null),[ts,tl]=(0,o.useState)(!1),ta=(0,o.useRef)(null),td=(0,o.useRef)(0),tc=(0,o.useRef)(null),tu=(0,o.useRef)(new Set),th=(0,o.useCallback)((e,t=!1)=>{let r=e5!==e;if(e9(e,t),!r||ts)return;let n=ta.current;if(!n)return;let o=++td.current;tl(!0),n().catch(e=>{console.error("Failed to load system information:",e)}).finally(()=>{td.current===o&&tl(!1)})},[e5,ts,e9]),tg=(0,o.useCallback)(()=>{M&&em(!1),e3("session")},[M]),tx=(0,o.useCallback)(()=>{M&&e3(null),em(e=>!e)},[M]),tf=(0,o.useCallback)(()=>{em(!1),e3(null),eS(e=>!e)},[]),tm=(0,o.useCallback)(()=>{M&&(em(!1),e3(null),eS(!1)),ey(e=>!e)},[M]),tv=(0,o.useCallback)(()=>{e3(null),ek(e=>!e)},[]);(0,o.useEffect)(()=>{if(!ew)return;let e=e=>{let t=eT.current;t&&e.composedPath().includes(t)||eS(!1)},t=e=>{"Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),eS(!1))};return document.addEventListener("pointerdown",e,!0),document.addEventListener("keydown",t,!0),()=>{document.removeEventListener("pointerdown",e,!0),document.removeEventListener("keydown",t,!0)}},[ew]),(0,o.useEffect)(()=>{eS(!1)},[M,E,W?.id,_]),(0,o.useEffect)(()=>{let e=eM.current;if(!e5||!e)return;let t=()=>{let t=e.getBoundingClientRect();"agents"===e5?e7({top:t.bottom,left:t.left,width:Math.min(420,t.width)}):e7({top:t.bottom,left:t.left,width:t.width})};t();let r=new ResizeObserver(t);return r.observe(e),()=>r.disconnect()},[e5]);let[ty,tb]=(0,o.useState)([]),[tk,tj]=(0,o.useState)(null),tw=(0,o.useRef)(!1);(0,o.useEffect)(()=>{let e;if(!tw.current){tw.current=!0;try{e=function(e){try{let t=JSON.parse(e??"null");if(!uW(t))return{tabs:[],activeId:null,open:!1};let r=[],n=new Set;for(let e of Array.isArray(t.tabs)?t.tabs:[]){if(!uW(e))continue;let t="string"==typeof e.id?e.id:"",o="string"==typeof e.filePath?e.filePath:"",i="string"==typeof e.label?e.label:"",s="subagent"===e.kind,l="string"==typeof e.sessionId?e.sessionId:"";!(!t||!i||n.has(t))&&(s?l:o)&&(n.add(t),r.push({id:t,label:i,filePath:o,..."terminal"===e.kind?{kind:"terminal"}:{},...s?{kind:"subagent",sessionId:l}:{},..."string"==typeof e.sourceSessionId?{sourceSessionId:e.sourceSessionId}:{},..."diff"===e.initialDisplayMode?{initialDisplayMode:"diff"}:{}}))}let o="string"==typeof t.activeId&&r.some(e=>e.id===t.activeId)?t.activeId:r[r.length-1]?.id??null;return{tabs:r,activeId:o,open:!0===t.open&&r.length>0}}catch{return{tabs:[],activeId:null,open:!1}}}(localStorage.getItem(u$))}catch{return}0!==e.tabs.length&&(tb(e.tabs),tj(e.activeId),ey(e.open))}},[]),(0,o.useEffect)(()=>{if(tw.current)try{localStorage.setItem(u$,JSON.stringify({tabs:ty.filter(e=>!e.closing).map(e=>({id:e.id,label:e.label,filePath:e.filePath,...e.kind?{kind:e.kind}:{},...e.sessionId?{sessionId:e.sessionId}:{},...e.sourceSessionId?{sourceSessionId:e.sourceSessionId}:{},...e.initialDisplayMode?{initialDisplayMode:e.initialDisplayMode}:{}})),activeId:tk,open:ev}))}catch{}},[ty,tk,ev]);let[tS,tC]=(0,o.useState)(!1),[tz,tT]=(0,o.useState)([]),[tR,tI]=(0,o.useState)(()=>new Set);(0,o.useEffect)(()=>{if(!tS)return void tT(e=>0===e.length?e:[]);let e=!1,t=()=>{fetch("/api/sessions",{cache:"no-store"}).then(e=>e.json()).then(t=>{e||(tT(t.sessions??[]),tI(new Set(t.runningSessionIds??[])))}).catch(()=>{})};t();let r=setInterval(t,3e3);return()=>{e=!0,clearInterval(r)}},[tS,W?.id,G]);let tM=(0,o.useCallback)(async e=>{try{let t=await fetch(`/api/sessions/${encodeURIComponent(e)}`,{cache:"no-store"}),r=await t.json();if(!t.ok||!r.info)throw Error(r.error??`HTTP ${t.status}`);t3.current(r.info)}catch(e){console.error("[pi-web] failed to open session:",e instanceof Error?e.message:e)}},[]),tE=(0,o.useRef)(260),t$=(0,o.useRef)(pN(1366)),tW=(0,o.useCallback)(()=>pN(window.innerWidth),[]),tL=(0,o.useCallback)(()=>(function(e){let{viewportWidth:t,rightPanelOpen:r,rightPanelWidth:n}=e;if(t<=640)return 480;let o=t<960;return Math.min(480,t-(o?320:420)-(!o&&r?n:0))})({viewportWidth:window.innerWidth,rightPanelOpen:ev,rightPanelWidth:t$.current}),[ev]),tN=(0,o.useCallback)(()=>(function(e){let{viewportWidth:t,sidebarOpen:r,sidebarWidth:n}=e;return t<960?1200:Math.min(1200,t-420-(r?n:0))})({viewportWidth:window.innerWidth,sidebarOpen:ef,sidebarWidth:tE.current}),[ef]),tA=pP({ariaLabel:I("desktop.resizeSidebar"),cssVariable:"--sidebar-width",defaultWidth:260,getMaxWidth:tL,growthDirection:"right",maxWidth:480,minWidth:180,storageKey:"pi-sidebar-width",widthRef:tE}),tP=pP({ariaLabel:I("desktop.resizeFilePanel"),cssVariable:"--right-panel-width",defaultWidth:pN(1366),getDefaultWidth:tW,getMaxWidth:tN,growthDirection:"left",maxWidth:1200,minWidth:300,storageKey:"pi-right-panel-width",widthRef:t$}),tF=tA.reclampWidth,tD=tP.reclampWidth;(0,o.useEffect)(()=>{ev&&(tF(),tD())},[tD,tF,ev]);let tH=(0,o.useCallback)((e,t)=>{eR.current?.insertText(dB(e,t))},[]),tO=(0,o.useCallback)(e=>{let t=e.map(e=>dB(e,!1)).join("");t&&eR.current?.insertText(t)},[]);(0,o.useCallback)((e,t,r)=>{let n,o,i,s;eR.current?.insertText((n=Math.max(1,Math.min(t,r)),o=Math.max(1,Math.max(t,r)),i=e.includes(" ")?`@"${e}"`:`@${e}`,s=n===o?`:${n}`:`:${n}-${o}`,`${i}${s} `))},[]);let[tB,tU]=(0,o.useState)(()=>S.sessionId),[t_,tq]=(0,o.useState)(null),[tK,tV]=(0,o.useState)(()=>S.requestedCwd?"validating":"idle"),[tJ,tY]=(0,o.useState)(null),[tG,tX]=(0,o.useState)(()=>!tB);(0,o.useLayoutEffect)(()=>{var e;let t=(e=function(e=pO()){if(!e)return null;try{return pB(e.getItem(pH))}catch{return null}}(),S.requestedCwd||S.sessionId||!e?S:"session"===e.kind?{...S,sessionId:e.sessionId}:{...S,requestedCwd:e.cwd});t!==S&&(C(t),t.sessionId&&tX(!1))},[S]);let tZ=(0,o.useRef)(!1),tQ=(0,o.useRef)(new Map),[t0,t1]=(0,o.useState)(null),t2=(0,o.useRef)("");(0,o.useEffect)(()=>{let e=`${S.requestedCwd??""}|${S.sessionId??""}`;t2.current!==e&&(t2.current=e,tU(S.sessionId),tX(!S.sessionId),S.requestedCwd||tV("idle"),tY(null))},[S]),(0,o.useEffect)(()=>{if(W){!function(e,t,r=pK()){if(r)try{let n=pV(r);n[e]=t,r.setItem(pq,JSON.stringify(n))}catch{}}(W.projectKey??V.current??pY(W),W.id),function(e,t=pO()){if(t&&e)try{pU({kind:"session",sessionId:e},t)}catch{}}(W.id);return}B&&function(e,t=pO()){let r=e.trim();if(t&&r)try{pU({kind:"new",cwd:r},t)}catch{}}(B)},[B,W]),(0,o.useEffect)(()=>{let e=S.requestedCwd;if(!e)return;let t=new AbortController;return tV("validating"),tY(null),fetch("/api/cwd/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e}),signal:t.signal}).then(async e=>{let t=await e.json().catch(()=>({}));if(!e.ok||!t.cwd)throw Error(t.error??`HTTP ${e.status}`);tZ.current=!0,U(t.cwd),tV("ready"),new URLSearchParams(window.location.search).get("cwd")||j.replace(`?cwd=${encodeURIComponent(t.cwd)}`,{scroll:!1})}).catch(e=>{t.signal.aborted||(tY(e instanceof Error?e.message:String(e)),tV("error"))}),()=>t.abort()},[S,j]),(0,o.useCallback)((e,t)=>{let r=++K.current,n=function(e,t=pK()){if(!t)return null;try{let r=pV(t)[e];return"string"==typeof r&&r.length>0?r:null}catch{return null}}(e);if(!n)return;let o=o=>{if(r!==K.current)return;let i=o?.sessions.find(e=>e.id===n);if(!i){o&&pJ(e);return}if(pY(i)!==e)return void pJ(e);let s=J.current;s&&function(e,t){if(e===t)return dW(t);let r=dW(e)??null,n=dW(t);if(dN(e),!r)return;let o=n?dA(n.value,n.images,r.value,r.images,n.pastedBlocks,r.pastedBlocks):r;dL(t,o),d$(o)}(s,`parked-new:${t}`),J.current=null,L(i),Q(e=>e+1),new URLSearchParams(window.location.search).get("session")!==i.id&&j.replace(`?session=${encodeURIComponent(i.id)}`,{scroll:!1})};N.length>0?o({sessions:N}):fetch("/api/sessions").then(e=>e.ok?e.json():null).then(o).catch(()=>{})},[j,N]);let t6=(0,o.useCallback)(()=>{K.current+=1},[]),t4=(0,o.useCallback)((e,t,r)=>{if(t6(),tq(e),!e)return;if(tq(e),tZ.current&&W&&i_(W.projectRoot??W.cwd,t??e)){if(tZ.current=!1,W){let e=W.projectRoot??W.cwd;e&&tQ.current.set(e,W.id)}return}tZ.current=!1;let n=t??e;if(W&&i_(W.projectRoot??W.cwd,n)){(W.projectRoot??W.cwd)&&tQ.current.set(n,W.id);return}if(W){let e=W.projectRoot??W.cwd;e&&tQ.current.set(e,W.id)}L(null),U(t=>t&&t!==e?null:t),Q(e=>e+1),eV(null),e3(null),window.history.replaceState(null,"","/");let o=tQ.current.get(n);t1(o?{projectRoot:n,sessionId:o}:null)},[W]);(0,o.useEffect)(()=>{let e=t_?oL(t_)||t_:null;document.title=e?`${e} — Pi Agent Web`:"Pi Agent Web"},[t_]);let t5=(0,o.useCallback)((e,t=!1)=>{if(t||t1(null),!t&&W){let t=i_(W.projectRoot??W.cwd,e.projectRoot??e.cwd);if(W.id===e.id&&t){M&&em(!1);return}}let r=e.projectRoot??e.cwd;r&&tQ.current.set(r,e.id),U(null),L(e),Q(e=>e+1),eV(null),tX(!0),M&&!t&&em(!1),t&&(tZ.current=!0),t&&new URLSearchParams(window.location.search).get("session")===e.id||j.replace(`?session=${encodeURIComponent(e.id)}`,{scroll:!1})},[M,W]),t3=(0,o.useRef)(()=>{});(0,o.useEffect)(()=>{t3.current=t5},[t5]);let t8=(0,o.useCallback)(e=>{e_.current?.(e)},[]),t7=(0,o.useCallback)(({targetSession:e,title:t,body:r,tag:n})=>{if(!("Notification"in window))return;let o=()=>{iK({title:t,body:r,sessionUrl:e?`/?session=${encodeURIComponent(e.id)}`:"/",tag:n,onClick:()=>{window.focus(),e&&t5(e)}})};"granted"===Notification.permission?(o(),pD(R)):"default"===Notification.permission&&Notification.requestPermission().then(e=>{"granted"===e&&(o(),pD(R))})},[t5,R]);(0,o.useCallback)(e=>{var t;W?.relation?.kind!=="subagent"&&iq()&&(t=tu.current,!(!function(e){switch(e.method){case"select":case"confirm":case"input":case"editor":return!0;case"custom":return!0!==e.closed;default:return!1}}(e)||t.has(e.id))&&(t.add(e.id),1)&&t7({targetSession:W,title:I("i18n.attentionNeeded"),body:"custom"===e.method?I("i18n.extensionInputNeeded"):e.title,tag:`pi-extension-ui:${e.id}`}))},[t7,W,I]);let t9=(0,o.useCallback)(async()=>{let e=W?.id;if(e&&"naming"!==te.kind){tr.current&&clearTimeout(tr.current),e3(null),tt({kind:"naming"});try{let t=await fetch(`/api/sessions/${encodeURIComponent(e)}/auto-name`,{method:"POST"}),r=await t.json().catch(()=>({}));if(!t.ok||!r.title)throw Error(r.error||`HTTP ${t.status}`);let n=r.title.trim();if(X(e=>e+1),tn.current!==e)return;L(t=>t?.id===e?{...t,name:n}:t),eG(t=>t?.sessionId===e?{...t,sessionName:n}:t),tt({kind:"success"}),tr.current=setTimeout(()=>tt({kind:"idle"}),1800)}catch(t){if(tn.current!==e)return;tt({kind:"error",message:t instanceof Error?t.message:String(t)}),tr.current=setTimeout(()=>tt({kind:"idle"}),5e3)}}},[te.kind,W?.id]);(0,o.useEffect)(()=>{tr.current&&clearTimeout(tr.current),tt({kind:"idle"})},[W?.id]),(0,o.useCallback)(()=>{et(e=>e+1)},[]);let re=(0,o.useCallback)(()=>{tX(!0)},[]),rt=(0,o.useCallback)(e=>{if(X(e=>e+1),W?.id===e){!function(e,t=pO()){if(t&&e)try{let r=pB(t.getItem(pH));if(r?.kind!=="session"||r.sessionId!==e)return;t.removeItem(pH)}catch{}}(e);let t=W.cwd;L(null),U(t??null),Q(e=>e+1),eV(null),e3(null),window.history.replaceState(null,"","/")}},[j,W]),rr=(0,o.useCallback)(e=>{fetch("/api/sessions").then(e=>e.ok?e.json():null).then(t=>{let r=t?.sessions.find(t=>t.id===e);r&&L(t=>!t||t.id!==e||t.projectRoot&&t.name?t:r)}).catch(()=>{})},[]),rn=(0,o.useCallback)((e,t)=>{X(e=>e+1),J.current===t&&(t6(),J.current=null,U(null),L(e),rr(e.id),j.replace(`?session=${encodeURIComponent(e.id)}`,{scroll:!1}))},[t6,j,rr]),ro=(0,o.useCallback)(e=>{t6(),J.current=null,X(e=>e+1),Q(e=>e+1),U(null),L(t=>({...t??{path:"",cwd:"",created:"",modified:"",messageCount:0,firstMessage:""},id:e,transient:!1})),rr(e),j.replace(`?session=${encodeURIComponent(e)}`,{scroll:!1})},[t6,j,rr]),ri=(0,o.useCallback)(()=>{X(e=>e+1),et(e=>e+1),W&&rr(W.id),W?.relation?.kind!=="subagent"&&iq()&&t7({targetSession:W,title:W?.name??I("i18n.sessionComplete"),body:I("i18n.taskFinished"),tag:W?`pi-session-complete:${W.id}`:"pi-session-complete"})},[t7,rr,W,I]);(0,o.useEffect)(()=>{if(!t0)return;let{projectRoot:e,sessionId:t}=t0;t3.current({path:"",id:t,cwd:e,created:"",modified:"",messageCount:0,firstMessage:"",projectRoot:e},!0),rr(t),window.history.replaceState(null,"",`?session=${encodeURIComponent(t)}`),t1(null)},[t0,rr]);let rs=(0,o.useCallback)((e,t)=>{t1(null),L(null),U(t),Q(e=>e+1),eV(null),e3(null),M&&em(!1),q(null),j.replace(`?cwd=${encodeURIComponent(t)}`,{scroll:!1})},[j,M]);!function(e){let{onNewSession:t,activeCwd:r}=e;(0,o.useEffect)(()=>{let e=e=>{if("Escape"===e.key){if(!a)return;let t=e.target?.tagName;if("TEXTAREA"===t||"INPUT"===t)return;e.preventDefault(),a();return}if("n"===e.key&&e.ctrlKey&&e.altKey){if(!r||!t)return;e.preventDefault(),t(r)}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[r,t])}({onNewSession:e=>rs(`kb-${Date.now()}`,e),activeCwd:t_});let rl=(0,o.useCallback)((e,t,r,n)=>{let o="string"==typeof r||null===r?r:r?.sourceSessionId??void 0,i=("object"==typeof r&&null!==r?r:n)??{},s=`file:${e}`;tb(r=>(function(e,t){let r=e.find(e=>e.id===t.tabId);if(!r)return[...e,{id:t.tabId,label:t.fileName,filePath:t.filePath,sourceSessionId:t.sourceSessionId,initialDisplayMode:t.modeHint,page:t.page,viewerState:t.modeHint?{displayMode:t.modeHint,wrapLines:!1,scrollTop:0,scrollLeft:0}:void 0,viewerRevision:0}];let n=!!(t.sourceSessionId&&r.sourceSessionId!==t.sourceSessionId),o=r.page!==t.page;return n||t.modeHint||o?e.map(e=>{if(e.id!==t.tabId)return e;let r={...e},i=!1;return n&&(r.sourceSessionId=t.sourceSessionId,i=!0),o&&(r.page=t.page,i=!0),t.modeHint&&(r.initialDisplayMode=t.modeHint,r.viewerState={displayMode:t.modeHint,wrapLines:e.viewerState?.wrapLines??!1,scrollTop:0,scrollLeft:0},i=!0),i&&(r.viewerRevision=(e.viewerRevision??0)+1),r}):e})(r,{fileName:t,filePath:e,modeHint:i.initialDisplayMode,page:i.page,sourceSessionId:o,tabId:s})),tj(s),ey(!0),M&&em(!1)},[M]),ra=(0,o.useCallback)((e,t)=>{rl(e,oL(e),{sourceSessionId:W?.id??null,page:t})},[rl,W?.id]),rd=(0,o.useMemo)(()=>{let e=new Map;for(let t of tz){if(t.relation?.kind!=="subagent")continue;let r=t.relation;e.set(t.id,{status:tR.has(t.id)?"running":r.status,...r.createdAt?{createdAt:r.createdAt}:{},...r.completedAt?{completedAt:r.completedAt}:{}})}return e},[tz,tR]),rc=(0,o.useCallback)((e,t)=>{let r=`subagent:${e}`;tb(n=>n.some(e=>e.id===r)?n:[...n,{id:r,label:t,filePath:"",kind:"subagent",sessionId:e}]),tj(r),ey(!0),M&&em(!1)},[M]),ru=(0,o.useCallback)(e=>{tb(t=>{let r=t.filter(t=>t.id!==e);return 0===r.length&&ey(!1),r}),tj(t=>{if(t!==e)return t;let r=ty.filter(t=>t.id!==e);return r.length>0?r[r.length-1].id:null})},[ty]),rp=(0,o.useCallback)(e=>{et(e=>e+1),rl(e,oL(e))},[rl]),rh=(0,o.useCallback)((e,t)=>{et(e=>e+1);let r=e.endsWith("/")?e:e+"/",n=n=>n===e||t&&n.startsWith(r);tb(e=>{let t=e.filter(e=>!n(e.filePath));return 0===t.length&&ey(!1),t}),tj(e=>{if(!e)return e;let t=ty.find(t=>t.id===e);if(!t||!n(t.filePath))return e;let r=ty.filter(e=>!n(e.filePath));return r.length>0?r[r.length-1].id:null})},[ty]),rg=W?os({name:W.name||eY?.sessionName||void 0,firstMessage:W.firstMessage,id:W.id},(W.cwd??t_??"").replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).pop()):(e=t_??B)?e.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).pop()||e:null,rx=(0,o.useCallback)(()=>{W&&window.open(`/api/sessions/${encodeURIComponent(W.id)}/export?inline=1`,"_blank","noopener,noreferrer")},[W]),rf=B??(null===W&&t_?t_:null),rm="validating"!==tK&&"error"!==tK&&(null!==W||null!==rf),rv=W?.cwd??rf,[ry,rb]=(0,o.useState)(!1),rk=(0,o.useCallback)(()=>{M||rb(e=>!e)},[M]),[rj,rw]=(0,o.useState)(!0);(0,o.useEffect)(()=>{let e=!1,t=()=>fetch("/api/features").then(e=>e.ok?e.json():null).then(t=>{!e&&t&&"boolean"==typeof t.tasksBoard&&(rw(t.tasksBoard),t.tasksBoard||rb(!1))}).catch(()=>{});t();let r=()=>t();return window.addEventListener("pi:features-changed",r),()=>{e=!0,window.removeEventListener("pi:features-changed",r)}},[]);let rS=tG&&!rm;(0,o.useEffect)(()=>{let e=()=>{M||rb(!0)};return window.addEventListener(ue,e),()=>window.removeEventListener(ue,e)},[M]),(0,o.useEffect)(()=>{if(ed(null),eu(!1),ex(null),!rv)return;let e=new AbortController;return fetch(`/api/project-trust?cwd=${encodeURIComponent(rv)}`,{signal:e.signal}).then(async e=>{let t=await e.json();if(!e.ok||t.error)throw Error(t.error??`HTTP ${e.status}`);ed(t)}).catch(e=>{e instanceof DOMException&&"AbortError"===e.name||console.error("Failed to load project trust:",e)}),()=>e.abort()},[rv]);let rC=(0,o.useCallback)(async()=>{if(rv&&!ep){eh(!0),ex(null);try{let e=await fetch("/api/project-trust",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:rv})}),t=await e.json();if(!e.ok||t.error)throw Error(t.error??`HTTP ${e.status}`);ed(t),eu(!1),el(e=>e+1),Q(e=>e+1)}catch(e){ex(e instanceof Error?e.message:String(e))}finally{eh(!1)}}},[ep,rv]),rz=ty.find(e=>e.id===tk)??null,rT=t_??W?.cwd??B,rR=(0,o.useCallback)(e=>{ei(e),en(!0)},[]),rI=(0,n.jsx)(n.Fragment,{children:(0,n.jsx)(i1,{selectedSessionId:W?.id??null,onSelectSession:t5,onNewSession:rs,initialSessionId:tB,onInitialRestoreDone:re,refreshKey:G,onSessionDeleted:rt,selectedCwd:W?.cwd??B??null,onCwdChange:t4,onOpenFile:rl,selectedSessionStats:eY,onOpenSettings:e=>{rR(e??"models")},explorerRefreshKey:ee,onAtMention:tH,onAtMentions:tO,onFileCreated:rp,onFileDeleted:rh,workspaceControlsHosts:{title:eE,welcome:eN,titleRight:eW},showWorkspaceControls:!0})}),rM=e=>rm&&ea?.requiresTrust&&!ea.trusted?(0,n.jsxs)("button",{type:"button",onClick:()=>{ex(null),eu(!0)},title:I("trust.resourcesNotLoaded"),"aria-label":I("trust.resourcesNotLoaded"),style:{display:"flex",alignItems:"center",justifyContent:e?"flex-start":"center",gap:6,width:e?"100%":void 0,minHeight:e?32:void 0,height:e?void 0:"100%",padding:e?"6px 12px":"0 12px",background:e?"color-mix(in srgb, #d97706 8%, var(--bg-panel))":"none",border:"none",borderRight:e?"none":"1px solid var(--border)",borderBottom:e?"1px solid var(--border)":"none",color:"#d97706",cursor:"pointer",flexShrink:0,fontSize:11,lineHeight:1.35,textAlign:"left"},"data-mobile-trust-banner":e?"true":void 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",style:{flexShrink:0},children:[(0,n.jsx)("path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10Z"}),(0,n.jsx)("path",{d:"M12 8v4"}),(0,n.jsx)("path",{d:"M12 16h.01"})]}),(0,n.jsx)("span",{children:I("trust.resourcesNotLoaded")})]}):null,rE=e=>{let t,r,o,i,s,l;return e||rm?(0,n.jsxs)("div",{style:{display:"flex",alignItems:"stretch",height:"100%"},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>{rx(),e&&E&&eS(!0)},disabled:!W,title:W?I("history.full"):I("history.unsaved"),"aria-label":I("history.full"),style:{display:"flex",alignItems:"center",justifyContent:"center",gap:6,width:e?36:void 0,height:"100%",padding:e?0:"0 12px",background:"none",border:"none",borderTop:"2px solid transparent",borderRight:"1px solid var(--border)",color:W?"var(--text-muted)":"var(--text-dim)",cursor:W?"pointer":"not-allowed",opacity:W?1:.45,flexShrink:0,fontSize:11,whiteSpace:"nowrap",transition:"color 0.1s, background 0.1s, opacity 0.1s"},onMouseEnter:e=>{W&&(e.currentTarget.style.color="var(--text)",e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{e.currentTarget.style.color=W?"var(--text-muted)":"var(--text-dim)",e.currentTarget.style.background="none"},"data-mobile-toolbar-action":e?"history":void 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:{color:W?"var(--text-muted)":"var(--text-dim)",flexShrink:0},"aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M3 12a9 9 0 1 0 3-6.7L3 8"}),(0,n.jsx)("path",{d:"M3 3v5h5"}),(0,n.jsx)("path",{d:"M12 7v5l3 2"})]}),!e&&(0,n.jsx)("span",{children:I("history.label")})]}),(t=!!(W&&((eY?.userMessages??0)>0||W.messageCount>0)),r=!W||W.transient||!t||"naming"===te.kind,o="success"===te.kind,i="error"===te.kind,s="naming"===te.kind?I("title.generating"):o?I("title.updated"):i?I("title.failed"):I("title.generate"),l=!W||W.transient?I("title.unsaved"):t?i?te.message:I("title.generateSession"):I("title.noMessages"),(0,n.jsxs)("button",{type:"button",onClick:()=>{t9(),e&&E&&eS(!0)},disabled:r,title:l,"aria-label":s,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:6,width:e?36:void 0,height:"100%",padding:e?0:"0 12px",background:"none",border:"none",borderTop:"2px solid transparent",borderRight:"1px solid var(--border)",color:i?"#dc2626":o?"var(--accent)":r?"var(--text-dim)":"var(--text-muted)",cursor:r?"not-allowed":"pointer",opacity:r&&"naming"!==te.kind?.45:1,flexShrink:0,fontSize:11,whiteSpace:"nowrap",transition:"color 0.1s, background 0.1s, opacity 0.1s"},onMouseEnter:e=>{r||(e.currentTarget.style.color=i?"#dc2626":"var(--text)",e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{e.currentTarget.style.color=i?"#dc2626":o?"var(--accent)":r?"var(--text-dim)":"var(--text-muted)",e.currentTarget.style.background="none"},"data-mobile-toolbar-action":e?"name":void 0,children:["naming"===te.kind?(0,n.jsxs)("svg",{className:"animate-spin",width:"13",height:"13",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"9",stroke:"currentColor",strokeWidth:"2",opacity:"0.25"}),(0,n.jsx)("path",{d:"M21 12a9 9 0 0 0-9-9",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})]}):o?(0,n.jsx)("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)("polyline",{points:"20 6 9 17 4 12"})}):(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"m15 4 5 5L7 22l-5-5Z"}),(0,n.jsx)("path",{d:"m14 5 5 5"}),(0,n.jsx)("path",{d:"M6 4V2M5 3H3M19 19v3M17.5 20.5h3"})]}),!e&&(0,n.jsx)("span",{children:s})]})),D&&(0,n.jsxs)("button",{type:"button",onClick:()=>e9("agents",e),title:I("agentSwitcher.title"),"aria-label":I("agentSwitcher.title"),"aria-pressed":"agents"===e5,style:{position:"relative",display:"flex",alignItems:"center",justifyContent:"center",gap:6,width:e?36:void 0,height:"100%",padding:e?0:"0 12px",background:"agents"===e5?"var(--bg-selected)":"none",border:"none",borderTop:"agents"===e5?"2px solid var(--accent)":"2px solid transparent",borderRight:"1px solid var(--border)",color:"agents"===e5?"var(--text)":"var(--text-muted)",cursor:"pointer",flexShrink:0,fontSize:11,whiteSpace:"nowrap",transition:"color 0.1s, background 0.1s"},"data-mobile-toolbar-action":e?"agents":void 0,children:[(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.9",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("rect",{x:"5",y:"7",width:"14",height:"11",rx:"2"}),(0,n.jsx)("path",{d:"M9 11h.01M15 11h.01M9 15h6M12 7V4M10 4h4"})]}),!e&&(0,n.jsx)("span",{children:I("agentSwitcher.title")}),(0,n.jsx)("span",{"aria-hidden":"true",style:{minWidth:15,height:15,padding:"0 4px",display:"grid",placeItems:"center",borderRadius:7,background:"var(--bg-selected)",color:"var(--accent)",fontSize:10,lineHeight:1,fontVariantNumeric:"tabular-nums",...e?{position:"absolute",top:2,right:2,minWidth:13,height:13,padding:"0 3px",fontSize:9}:{}},children:F.subagents.length})]}),eq&&(e?(0,n.jsx)("button",{type:"button",onClick:()=>e9("branches",!0),title:I("i18n.branches"),"aria-label":I("i18n.branches"),"aria-pressed":"branches"===e5,style:{display:"flex",alignItems:"center",justifyContent:"center",width:36,height:"100%",padding:0,background:"branches"===e5?"var(--bg-selected)":"none",border:"none",borderTop:"branches"===e5?"2px solid var(--accent)":"2px solid transparent",borderRight:"1px solid var(--border)",color:"branches"===e5?"var(--text)":"var(--text-muted)",cursor:"pointer",flexShrink:0},"data-mobile-toolbar-action":"branches",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:eH.length>0?"var(--accent)":"var(--text-dim)"},"aria-hidden":"true",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.jsx)(cI,{tree:eH,activeLeafId:eB,onLeafChange:t8,inline:!0,containerRef:eI,open:"branches"===e5,onToggle:()=>e9("branches"),hasSession:!0})),(0,n.jsxs)("button",{ref:tc,type:"button",onClick:()=>th("system",e),disabled:e&&!rm,title:I("system.prompt"),"aria-label":I("system.prompt"),"aria-pressed":"system"===e5,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:6,width:e?36:void 0,height:"100%",padding:e?0:"0 12px",background:"system"===e5?"var(--bg-selected)":"none",border:"none",borderTop:"system"===e5?"2px solid var(--accent)":"2px solid transparent",borderRight:"1px solid var(--border)",cursor:e&&!rm?"not-allowed":"pointer",color:"system"===e5?"var(--text)":"var(--text-muted)",opacity:e&&!rm?.45:1,fontSize:11,whiteSpace:"nowrap",transition:"color 0.1s, background 0.1s"},onMouseEnter:t=>{(!e||rm)&&(t.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.color="system"===e5?"var(--text)":"var(--text-muted)"},"data-mobile-toolbar-action":e?"system":void 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:{color:eK?"var(--accent)":"var(--text-dim)",flexShrink:0},"aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),(0,n.jsx)("polyline",{points:"14 2 14 8 20 8"}),(0,n.jsx)("line",{x1:"8",y1:"13",x2:"16",y2:"13"}),(0,n.jsx)("line",{x1:"8",y1:"17",x2:"13",y2:"17"})]}),!e&&(0,n.jsx)("span",{children:I("system.label")})]}),(0,n.jsxs)("button",{type:"button",onClick:()=>th("tools",e),disabled:e&&!rm,title:I("tools.title"),"aria-label":I("tools.title"),"aria-pressed":"tools"===e5,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:6,width:e?36:void 0,height:"100%",padding:e?0:"0 12px",background:"tools"===e5?"var(--bg-selected)":"none",border:"none",borderTop:"tools"===e5?"2px solid var(--accent)":"2px solid transparent",borderRight:"1px solid var(--border)",cursor:e&&!rm?"not-allowed":"pointer",color:"tools"===e5?"var(--text)":"var(--text-muted)",opacity:e&&!rm?.45:1,fontSize:11,whiteSpace:"nowrap",transition:"color 0.1s, background 0.1s"},onMouseEnter:t=>{(!e||rm)&&(t.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.color="tools"===e5?"var(--text)":"var(--text-muted)"},"data-mobile-toolbar-action":e?"tools":void 0,children:[(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{color:to?.some(e=>e.active)?"var(--accent)":"var(--text-dim)",flexShrink:0},"aria-hidden":"true",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.8-3.8a6 6 0 0 1-7.9 7.9l-6.9 6.9a2.1 2.1 0 0 1-3-3l6.9-6.9a6 6 0 0 1 7.9-7.9z"})}),!e&&(0,n.jsx)("span",{children:I("tools.label")})]})]}):null};return(0,n.jsxs)(uP,{children:[(0,n.jsx)("style",{children:`
227
227
  @media (max-width: 640px) {
228
228
  .sidebar-overlay-backdrop.sidebar-mobile-pending {
229
229
  opacity: 0 !important;
@@ -234,4 +234,4 @@ ${r}`):i=r;let h=i,g=o?.map(e=>({type:"image",source:{type:"base64",media_type:e
234
234
  box-shadow: none;
235
235
  }
236
236
  }
237
- `}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100dvh",overflow:"hidden",background:"var(--bg)","--pi-titlebar-sidebar-offset":`${I||!ex?0:tL.width}px`},children:[(0,n.jsx)(pR,{topBarRef:eR,sidebarOpen:ex,onSidebarToggle:th,isDark:C,toggleTheme:z,isMobile:I,showTasks:rm,tasksBoardEnabled:rb,onToggleTasks:ry,systemPrompt:e_,activeTopPanel:e6,topPanelPos:e5,sessionStats:eV,selectedSession:$,contextUsage:e0,copiedSessionField:eG,onCopySessionField:eQ,rightPanelOpen:em,onToggleFilePanel:()=>ev(e=>!e),onRefreshSession:()=>Z(e=>e+1),onOpenSettings:()=>rz("models"),sessionTitle:rp,onWorkspaceControlsHostChange:eM,onTitleRightHostChange:e$,desktopChrome:eN,windowDrag:eP}),rx&&el?.requiresTrust&&!el.trusted&&(0,n.jsxs)("button",{type:"button",onClick:()=>{eg(null),ec(!0)},title:R("desktop.projectResourcesRestricted"),"aria-label":R("desktop.projectResourcesRestricted"),style:{position:"fixed",top:60,right:I?12:20,zIndex:700,display:"inline-flex",alignItems:"center",gap:7,padding:"8px 11px",border:"1px solid color-mix(in srgb, var(--accent-orange) 52%, var(--border))",borderRadius:7,background:"color-mix(in srgb, var(--accent-orange) 11%, var(--bg-panel))",color:"var(--accent-orange)",boxShadow:"0 8px 24px rgba(0, 0, 0, 0.16)",cursor:"pointer",fontSize:12,fontWeight:600},children:[(0,n.jsx)("span",{"aria-hidden":"true",children:"⚠"}),R("desktop.trustProject")]}),(0,n.jsxs)("div",{style:{"--right-panel-width":`${tN.width}px`,flex:1,display:"flex",overflow:"hidden",minWidth:0,position:"relative"},children:[(0,n.jsx)("div",{className:`sidebar-overlay-backdrop${eS?"":" sidebar-mobile-pending"}`,onClick:()=>ef(!1),style:{position:"fixed",inset:0,zIndex:199,background:"rgba(0,0,0,0.4)",opacity:+!!ex,pointerEvents:ex?"auto":"none",transition:"opacity 0.25s ease"}}),(0,n.jsx)("div",{ref:tL.panelRef,id:"session-sidebar",inert:ek,className:`sidebar-container${ex?" sidebar-open":" sidebar-closed"}${eS?"":" sidebar-mobile-pending"}${tL.isResizing?" sidebar-resizing":""}`,style:{"--sidebar-width":`${tL.width}px`,background:"var(--bg-panel)",borderRight:"1px solid var(--border)",display:"flex",flexDirection:"column",flexShrink:0,zIndex:200},children:rT}),ex&&(0,n.jsx)("div",{...tL.separatorProps,inert:ek,"aria-controls":"session-sidebar",className:`panel-resize-handle sidebar-resize-handle${tL.isResizing?" is-resizing":""}`,"data-resize-handle":"sidebar",title:`${R("layout.resizeSidebar")}: ${R("layout.resizeHint")}`}),(0,n.jsxs)("div",{inert:ek,style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden",minWidth:0},children:[(0,n.jsxs)("div",{ref:eR,style:{flexShrink:0,background:"var(--bg-panel)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",position:"relative",borderBottom:"1px solid var(--border)",height:"calc(36px + env(safe-area-inset-top))",paddingTop:"env(safe-area-inset-top)"},children:[(0,n.jsx)("button",{onClick:th,title:ex?R("sidebar.hide"):R("sidebar.show"),"aria-label":ex?R("sidebar.hide"):R("sidebar.show"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:36,height:36,padding:0,background:"none",border:"none",borderRight:"1px solid var(--border)",color:"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-muted)"},children:ex?(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"})]})}),I&&(0,n.jsxs)("div",{ref:ez,"data-mobile-toolbar":"true",style:{position:"relative",display:"flex",alignItems:"stretch",flex:1,minWidth:0,height:"100%"},children:[M&&(0,n.jsx)("button",{type:"button",onClick:tg,title:ej?R("chat.close"):R("chat.moreControls"),"aria-label":ej?R("chat.close"):R("chat.moreControls"),"aria-controls":"mobile-toolbar-actions","aria-expanded":ej,"data-mobile-toolbar-more":"true",style:{position:"relative",zIndex:ej?21:void 0,display:"flex",alignItems:"center",justifyContent:"center",width:36,height:36,padding:0,background:ej?"var(--bg-selected)":"none",border:"none",borderRight:"1px solid var(--border)",color:ej?"var(--text)":"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s, background 0.12s"},children:ej?(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"5",y1:"5",x2:"19",y2:"19"}),(0,n.jsx)("line",{x1:"19",y1:"5",x2:"5",y2:"19"})]}):(0,n.jsxs)("svg",{width:"17",height:"17",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"5",cy:"12",r:"1.5"}),(0,n.jsx)("circle",{cx:"12",cy:"12",r:"1.5"}),(0,n.jsx)("circle",{cx:"19",cy:"12",r:"1.5"})]})}),!M&&rI(!0),rM(!0),rE(!0),M&&ej&&(0,n.jsx)("div",{id:"mobile-toolbar-actions",role:"toolbar","aria-label":R("chat.moreControls"),"data-mobile-toolbar-actions":"true",style:{position:"absolute",top:0,right:0,bottom:0,left:36,zIndex:20,display:"flex",alignItems:"stretch",background:"color-mix(in srgb, var(--bg-panel) 94%, var(--bg))",boxShadow:"4px 0 18px rgba(0,0,0,0.12)",backdropFilter:"blur(10px)"},children:rI(!0)})]}),!I&&(0,n.jsxs)(n.Fragment,{children:[rR(!1),rI(!1),rM(!1)]}),!I&&rE(!1),I&&eU&&(0,n.jsx)(cI,{tree:eF,activeLeafId:eH,onLeafChange:t5,inline:!0,compact:!0,containerRef:eR,open:"branches"===e6,onToggle:()=>e8("branches"),hasSession:rx,hideInlineButton:!0}),e6&&e5&&(0,n.jsxs)("div",{style:{position:"fixed",top:e5.top,left:e5.left,width:e5.width,maxHeight:`calc(100dvh - ${e5.top}px)`,overflowY:"auto",zIndex:500},children:["agents"===e6&&P&&$&&(0,n.jsx)(pE,{rootSession:P.root,subagents:P.subagents,selectedSessionId:$.id,runningSessionIds:D,onSelectSession:t6}),"system"===e6&&(0,n.jsx)(p$,{loading:to,prompt:e_,translate:R}),"tools"===e6&&(0,n.jsx)(or,{loading:to,tools:tr,translate:R}),"session"===e6&&(0,n.jsx)("div",{className:"session-info-popover",style:{background:"var(--bg-panel)",borderBottom:"1px solid var(--border)",boxShadow:"0 10px 28px rgba(0,0,0,0.10)",padding:"12px 16px"},children:eV?(t=eV.totalActiveMs??0,r=[...eV.sessionName?[{label:R("session.name"),value:eV.sessionName,copyField:null}]:[],{label:R("session.file"),value:eV.sessionFile??R("session.inMemory"),copyField:"file"},{label:R("session.id"),value:eV.sessionId,copyField:"id"},...t>0?[{label:R("session.totalActive"),value:(e=>{if(e<=0)return"0s";let t=Math.floor(e/1e3),r=Math.floor(t/3600),n=Math.floor(t%3600/60),o=t%60;return r>0?`${r}h ${n}m`:n>0?`${n}m ${o}s`:`${o}s`})(t),copyField:null}]:[]],d=[...$?[{label:R("session.projectDir"),value:$.projectRoot??$.cwd,copyField:"projectDir"}]:[],...$?.branch?[{label:R("session.gitBranch"),value:$.branch,copyField:"gitBranch"}]:[],...$?.isWorktree?[{label:R("session.gitWorktree"),value:$.cwd,copyField:"gitWorktree"}]:[]],c=[[R("session.user"),eV.userMessages.toLocaleString(T)],[R("session.assistant"),eV.assistantMessages.toLocaleString(T)],[R("session.toolCalls"),eV.toolCalls.toLocaleString(T)],[R("session.toolResults"),eV.toolResults.toLocaleString(T)],[R("session.total"),eV.totalMessages.toLocaleString(T)]],u=[[R("session.input"),eV.tokens.input.toLocaleString(T)],[R("session.output"),eV.tokens.output.toLocaleString(T)],...eV.tokens.cacheRead>0?[[R("session.cacheRead"),eV.tokens.cacheRead.toLocaleString(T)]]:[],...eV.tokens.cacheWrite>0?[[R("session.cacheWrite"),eV.tokens.cacheWrite.toLocaleString(T)]]:[],[R("session.total"),eV.tokens.total.toLocaleString(T)]],p=e0??eV.contextUsage,g=[...eV.cost>0?[[R("session.cost"),`$${eV.cost.toFixed(4)}`]]:[],...p?.contextWindow?[[R("session.context"),`${null!==p.percent?`${p.percent.toFixed(1)}%`:"?"} / ${(h=p.contextWindow)>=1e6?`${(h/1e6).toFixed(1)}M`:h>=1e3?`${(h/1e3).toFixed(0)}k`:String(h)}`]]:[],...eV.tokens.cacheRead+eV.tokens.cacheWrite>0&&eV.tokens.cacheRead+eV.tokens.cacheWrite+eV.tokens.input>0?[[R("session.cacheHitRate"),`${(eV.tokens.cacheRead/(eV.tokens.cacheRead+eV.tokens.cacheWrite+eV.tokens.input)*100).toFixed(1)}%`]]:[]],x=(e,t,r="left",o=!1)=>(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"var(--text)",marginBottom:6},children:e}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:o?"max-content max-content":"auto minmax(0, 1fr)",columnGap:o?14:12,rowGap:4,justifyContent:o?"start":void 0},children:t.map(([t,i])=>(0,n.jsxs)("div",{style:{display:"contents"},children:[(0,n.jsx)("div",{style:{color:"var(--text-dim)",whiteSpace:"nowrap"},children:t}),(0,n.jsx)("div",{style:{color:"var(--text-muted)",minWidth:0,overflowWrap:o?"normal":"anywhere",textAlign:r,whiteSpace:"right"===r?"nowrap":"normal"},children:i})]},`${e}:${t}`))})]}),f={file:"session.copyFile",id:"session.copyId",projectDir:"session.copyProjectDir",gitBranch:"session.copyGitBranch",gitWorktree:"session.copyGitWorktree"},m=(e,t)=>{let r=eG===e;return(0,n.jsx)("button",{type:"button",title:r?R("session.copied"):R(f[e]),onClick:()=>eQ(e,t),style:{alignSelf:"start",display:"inline-flex",alignItems:"center",justifyContent:"center",width:22,height:22,marginTop:-2,color:r?"var(--accent)":"var(--text-dim)",background:"transparent",border:"1px solid var(--border)",borderRadius:4,cursor:"pointer",flex:"0 0 auto",transition:"color 0.12s, border-color 0.12s, background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--accent)",e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=r?"var(--accent)":"var(--text-dim)",e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.background="transparent"},children:r?(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,n.jsx)("polyline",{points:"20 6 9 17 4 12"})}):(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",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"})]})})},v=(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"var(--text)",marginBottom:6},children:R("session.infoSection")}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:"auto minmax(0, 1fr) auto",columnGap:12,rowGap:8,alignItems:"start"},children:r.map(e=>(0,n.jsxs)("div",{style:{display:"contents"},children:[(0,n.jsx)("div",{style:{color:"var(--text-dim)",whiteSpace:"nowrap"},children:e.label}),(0,n.jsx)("div",{style:{color:"var(--text-muted)",minWidth:0,overflowWrap:"anywhere",wordBreak:"break-word",whiteSpace:"normal"},children:e.value}),(0,n.jsx)("div",{children:e.copyField?m(e.copyField,e.value):null})]},`session-info:${e.label}`))})]}),y=d.length>0?(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"var(--text)",marginBottom:6},children:R("session.projectSection")}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:"auto minmax(0, 1fr) auto",columnGap:12,rowGap:8,alignItems:"start"},children:d.map(e=>(0,n.jsxs)("div",{style:{display:"contents"},children:[(0,n.jsx)("div",{style:{color:"var(--text-dim)",whiteSpace:"nowrap"},children:e.label}),(0,n.jsx)("div",{style:{color:"var(--text-muted)",minWidth:0,overflowWrap:"anywhere",wordBreak:"break-word",whiteSpace:"normal"},children:e.value}),(0,n.jsx)("div",{children:e.copyField?m(e.copyField,e.value):null})]},`project-info:${e.label}`))})]}):null,(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:I?"1fr":"minmax(360px, 1.7fr) minmax(140px, 0.55fr) minmax(190px, 0.75fr)",gap:I?16:24,fontSize:12,lineHeight:1.5,fontFamily:"var(--font-mono)"},children:[(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:I?16:20},children:[v,y]}),x(R("session.messages"),c),x(R("session.tokens"),[...u,...g],"right",!0)]})):(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text-muted)",fontStyle:"italic"},children:R("session.load")})})]})]}),I&&rR(!0)]}),(0,n.jsx)("div",{style:{flex:1,overflow:"hidden",position:"relative"},children:rm&&rb?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(pi,{}),(0,n.jsx)(ps,{activeProject:tB??void 0})]}):rx?(0,n.jsx)(ut,{session:$,newSessionCwd:rg,onAgentEnd:rn,onSessionCreated:rt,onSessionForked:rr,modelsRefreshKey:ei,chatInputRef:eT,tasksBoardEnabled:rb,onSystemPromptChange:eK,onSessionStatsChange:eY,onOpenSession:tR,onOpenSubagent:ra,subagentRuns:rl,onSessionStatsPanelOpen:tu,onContextUsageChange:e2,onOpenFile:rs,onWorkspaceControlsHostChange:eL,onViewFullHistory:rh,systemPrompt:e_},X):"validating"===t_?(0,n.jsxs)("div",{role:"status",style:{height:"100%",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:8,padding:24,color:"var(--text-muted)",textAlign:"center"},children:[(0,n.jsx)("div",{style:{fontSize:14,color:"var(--text)"},children:R("desktop.openingWorkspace")}),(0,n.jsx)("div",{style:{maxWidth:"min(720px, 100%)",overflowWrap:"anywhere",fontFamily:"var(--font-mono)",fontSize:12},children:w.requestedCwd})]}):"error"===t_?(0,n.jsxs)("div",{role:"alert",style:{height:"100%",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:8,padding:24,color:"var(--text-muted)",textAlign:"center"},children:[(0,n.jsx)("div",{style:{fontSize:14,color:"var(--status-error)"},children:R("desktop.unableToOpenWorkspace")}),(0,n.jsx)("div",{style:{maxWidth:"min(720px, 100%)",overflowWrap:"anywhere",fontFamily:"var(--font-mono)",fontSize:12},children:w.requestedCwd}),(0,n.jsx)("div",{style:{maxWidth:720,fontSize:12},children:tK})]}):rj?tB?(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:15},children:R("desktop.selectSessionFromSidebar")}):(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.jsx)(i.n,{size:44,color:"var(--accent)","aria-hidden":"true",style:{opacity:.7,flexShrink:0}}),(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:18,fontWeight:600,color:"var(--text)",marginBottom:8},children:R("desktop.getStarted")}),(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."}),R("desktop.selectProjectDirectory"),(0,n.jsx)("br",{}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",marginRight:6},children:"2."}),R("desktop.addModelsFromBottom")]})]})]}):null})]}),em&&(0,n.jsx)("div",{...tN.separatorProps,inert:ek,"aria-controls":"file-panel",className:`panel-resize-handle right-panel-resize-handle${tN.isResizing?" is-resizing":""}`,"data-resize-handle":"right-panel",title:`${R("layout.resizeFilePanel")}: ${R("layout.resizeHint")}`}),(0,n.jsxs)("div",{ref:tN.panelRef,id:"file-panel",className:`right-panel-container${em?" right-panel-open":" right-panel-closed"}${ek?" right-panel-full-width":""}${tN.isResizing?" right-panel-resizing":""}`,style:{display:"flex",flexDirection:"column",borderLeft:"1px solid var(--border)",background:"var(--bg)"},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.jsx)("div",{style:{flex:1,overflow:"hidden"},children:(0,n.jsx)(uE,{tabs:tm,activeTabId:ty??"",onSelectTab:tb,onCloseTab:rd})}),(0,n.jsx)("div",{style:{width:1,height:18,flexShrink:0,background:"var(--border)",marginRight:6},"aria-hidden":"true"}),(0,n.jsx)("button",{type:"button",className:"file-panel-expand-button",onClick:tf,"aria-controls":"file-panel","aria-pressed":ek,title:R(ek?"files.restorePanelWidth":"files.expandPanel"),"aria-label":R(ek?"files.restorePanelWidth":"files.expandPanel"),children:(0,n.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,n.jsx)("path",{d:ek?"M9 3v6H3m12-6v6h6M9 21v-6H3m12 6v-6h6M3 3l6 6m12-6-6 6M3 21l6-6m12 6-6-6":"M8 3H3v5m13-5h5v5M3 16v5h5m13-5v5h-5M3 3l6 6m12-6-6 6M3 21l6-6m12 6-6-6"})})}),(0,n.jsxs)("button",{type:"button",onClick:()=>ev(!1),"aria-controls":"file-panel","aria-expanded":em,title:R("files.hidePanel"),"aria-label":R("files.hidePanel"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:36,height:36,padding:0,background:"var(--bg-selected)",border:"none",borderLeft:"1px solid var(--border)",color:"var(--text)",cursor:"pointer",flexShrink:0,transition:"color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text)"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("rect",{x:"3",y:"11",width:"18",height:"10",rx:"2"}),(0,n.jsx)("circle",{cx:"12",cy:"5",r:"2"}),(0,n.jsx)("path",{d:"M12 7v4"})]}),R("agentSwitcher.title")]})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"hidden",display:"flex",flexDirection:"column",minHeight:0},children:tj?(b=p_(tS,$?.id))?(0,n.jsx)(pE,{rootSession:b.root,subagents:b.subagents,selectedSessionId:$?.id??"",runningSessionIds:tz,onSelectSession:e=>{tw(!1),t4.current(e)}}):(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:12},children:R("agentSwitcher.noFamily")}):rS?.kind==="subagent"&&rS.sessionId?(0,n.jsx)(uM,{sessionId:rS.sessionId,label:rS.label,running:tz.has(rS.sessionId),onOpenFile:rs}):rS?.filePath?(0,n.jsx)(uR,{filePath:rS.filePath,cwd:tB??void 0,sourceSessionId:rS.sourceSessionId,initialDisplayMode:rS.initialDisplayMode,initialPage:rS.page,initialState:rS.viewerState,onOpenFile:(e,t)=>ri(e,oL(e),{sourceSessionId:rS.sourceSessionId,page:t}),onFileSaved:()=>ee(e=>e+1)}):(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:12},children:"No file open"})})]})]}),ed&&rf&&(0,n.jsx)(pW,{cwd:rf,busy:eu,error:eh,onCancelAction:()=>{eu||ec(!1)},onConfirmAction:()=>void rw()}),et&&(0,n.jsx)(op,{initialTab:en,cwd:rC,sessionId:$?.id??null,onCloseAction:()=>{er(!1),es(e=>e+1)},onModelsSavedAction:()=>es(e=>e+1),onSessionReloadedAction:()=>Z(e=>e+1),onSessionsChanged:()=>G(e=>e+1)})]})]})}},79023:(e,t,r)=>{Promise.resolve().then(r.bind(r,40888)),Promise.resolve().then(r.bind(r,32981))}},e=>{e.O(0,[7330,7650,2981,8441,3794,7358],()=>e(e.s=79023)),_N_E=e.O()}]);
237
+ `}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100dvh",overflow:"hidden",background:"var(--bg)","--pi-titlebar-sidebar-offset":`${M||!ef?0:tA.width}px`},children:[(0,n.jsx)(pR,{topBarRef:eI,sidebarOpen:ef,onSidebarToggle:tx,isDark:z,toggleTheme:T,isMobile:M,showTasks:ry,tasksBoardEnabled:rj,onToggleTasks:rk,systemPrompt:eK,activeTopPanel:e5,topPanelPos:e8,sessionStats:eY,selectedSession:W,contextUsage:e2,copiedSessionField:eZ,onCopySessionField:e1,rightPanelOpen:ev,onToggleFilePanel:()=>ey(e=>!e),onRefreshSession:()=>Q(e=>e+1),onOpenSettings:()=>rR("models"),sessionTitle:rg,onWorkspaceControlsHostChange:e$,onTitleRightHostChange:eL,desktopChrome:eF,windowDrag:eD}),rm&&ea?.requiresTrust&&!ea.trusted&&(0,n.jsxs)("button",{type:"button",onClick:()=>{ex(null),eu(!0)},title:I("desktop.projectResourcesRestricted"),"aria-label":I("desktop.projectResourcesRestricted"),style:{position:"fixed",top:60,right:M?12:20,zIndex:700,display:"inline-flex",alignItems:"center",gap:7,padding:"8px 11px",border:"1px solid color-mix(in srgb, var(--accent-orange) 52%, var(--border))",borderRadius:7,background:"color-mix(in srgb, var(--accent-orange) 11%, var(--bg-panel))",color:"var(--accent-orange)",boxShadow:"0 8px 24px rgba(0, 0, 0, 0.16)",cursor:"pointer",fontSize:12,fontWeight:600},children:[(0,n.jsx)("span",{"aria-hidden":"true",children:"⚠"}),I("desktop.trustProject")]}),(0,n.jsxs)("div",{style:{"--right-panel-width":`${tP.width}px`,flex:1,display:"flex",overflow:"hidden",minWidth:0,position:"relative"},children:[(0,n.jsx)("div",{className:`sidebar-overlay-backdrop${eC?"":" sidebar-mobile-pending"}`,onClick:()=>em(!1),style:{position:"fixed",inset:0,zIndex:199,background:"rgba(0,0,0,0.4)",opacity:+!!ef,pointerEvents:ef?"auto":"none",transition:"opacity 0.25s ease"}}),(0,n.jsx)("div",{ref:tA.panelRef,id:"session-sidebar",inert:ej,className:`sidebar-container${ef?" sidebar-open":" sidebar-closed"}${eC?"":" sidebar-mobile-pending"}${tA.isResizing?" sidebar-resizing":""}`,style:{"--sidebar-width":`${tA.width}px`,background:"var(--bg-panel)",borderRight:"1px solid var(--border)",display:"flex",flexDirection:"column",flexShrink:0,zIndex:200},children:rI}),ef&&(0,n.jsx)("div",{...tA.separatorProps,inert:ej,"aria-controls":"session-sidebar",className:`panel-resize-handle sidebar-resize-handle${tA.isResizing?" is-resizing":""}`,"data-resize-handle":"sidebar",title:`${I("layout.resizeSidebar")}: ${I("layout.resizeHint")}`}),(0,n.jsxs)("div",{inert:ej,style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden",minWidth:0},children:[(0,n.jsxs)("div",{ref:eM,style:{flexShrink:0,background:"var(--bg-panel)"},children:[!M&&rM(!1),(0,n.jsxs)("div",{style:{display:"none",alignItems:"center",position:"relative",borderBottom:"1px solid var(--border)",height:"calc(36px + env(safe-area-inset-top))",paddingTop:"env(safe-area-inset-top)"},children:[(0,n.jsx)("button",{onClick:tx,title:ef?I("sidebar.hide"):I("sidebar.show"),"aria-label":ef?I("sidebar.hide"):I("sidebar.show"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:36,height:36,padding:0,background:"none",border:"none",borderRight:"1px solid var(--border)",color:"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-muted)"},children:ef?(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"})]})}),M&&(0,n.jsxs)("div",{ref:eT,"data-mobile-toolbar":"true",style:{position:"relative",display:"flex",alignItems:"stretch",flex:1,minWidth:0,height:"100%"},children:[E&&(0,n.jsx)("button",{type:"button",onClick:tf,title:ew?I("chat.close"):I("chat.moreControls"),"aria-label":ew?I("chat.close"):I("chat.moreControls"),"aria-controls":"mobile-toolbar-actions","aria-expanded":ew,"data-mobile-toolbar-more":"true",style:{position:"relative",zIndex:ew?21:void 0,display:"flex",alignItems:"center",justifyContent:"center",width:36,height:36,padding:0,background:ew?"var(--bg-selected)":"none",border:"none",borderRight:"1px solid var(--border)",color:ew?"var(--text)":"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s, background 0.12s"},children:ew?(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"5",y1:"5",x2:"19",y2:"19"}),(0,n.jsx)("line",{x1:"19",y1:"5",x2:"5",y2:"19"})]}):(0,n.jsxs)("svg",{width:"17",height:"17",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"5",cy:"12",r:"1.5"}),(0,n.jsx)("circle",{cx:"12",cy:"12",r:"1.5"}),(0,n.jsx)("circle",{cx:"19",cy:"12",r:"1.5"})]})}),!E&&rE(!0),(e=>{if(!e&&(!rm||!eY&&!e2))return null;let t=eY?.tokens,r=eY?.cost??0,o=e=>e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(0)}k`:String(e),i=r>0?r>=.01?`$${r.toFixed(2)}`:"<$0.01":null,s="var(--text-muted)",l=null,a=null;if(e2?.contextWindow){let e=e2.percent;null!==e&&e>90?s="#ef4444":null!==e&&e>70&&(s="rgba(234,179,8,0.95)"),l=null!==e?`${e.toFixed(0)}% / ${o(e2.contextWindow)}`:`? / ${o(e2.contextWindow)}`,a=null!==e?`${e.toFixed(0)}%`:null}let d=[];if(t&&(d.push(`in: ${t.input.toLocaleString(R)}`),d.push(`out: ${t.output.toLocaleString(R)}`),d.push(`cache read: ${t.cacheRead.toLocaleString(R)}`),d.push(`cache write: ${t.cacheWrite.toLocaleString(R)}`),r>0&&d.push(`cost: $${r.toFixed(4)}`)),e2?.contextWindow){let e=e2.percent;d.push(`context: ${null!==e?e.toFixed(1)+"%":"unknown"} of ${e2.contextWindow.toLocaleString()} tokens`)}let c=d.join(" | "),u=e&&E&&ew,p=!!(t&&(t.input>0||t.output>0)||i||a);return(0,n.jsx)("button",{type:"button",onClick:()=>e9("session"),disabled:!rm||u,tabIndex:u?-1:void 0,title:c||I("session.title"),"aria-label":I("session.title"),"aria-pressed":"session"===e5,"aria-hidden":!!u||void 0,className:e?"mobile-session-stats":void 0,"data-mobile-toolbar-stats":e?"true":void 0,style:{marginLeft:e?0:"auto",display:"flex",alignItems:"center",justifyContent:"flex-end",flex:e?1:void 0,minWidth:0,gap:e?7:10,paddingLeft:e?6:12,paddingRight:e?6:12,height:"100%",overflow:"hidden",visibility:u?"hidden":"visible",pointerEvents:u?"none":"auto",background:"session"===e5?"var(--bg-selected)":"none",border:"none",borderTop:"session"===e5?"2px solid var(--accent)":"2px solid transparent",fontSize:11,color:"var(--text-muted)",whiteSpace:"nowrap",cursor:rm?"pointer":"default",fontVariantNumeric:"tabular-nums",transition:"color 0.1s, background 0.1s"},onMouseEnter:e=>{rm&&!u&&(e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.color="session"===e5?"var(--text)":"var(--text-muted)"},children:e?(0,n.jsxs)(n.Fragment,{children:[t&&t.input>0&&(0,n.jsxs)("span",{className:"mobile-session-stat-io",style:{display:"flex",alignItems:"center",gap:2,flexShrink:0},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","aria-hidden":"true",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"})]}),o(t.input)]}),t&&t.output>0&&(0,n.jsxs)("span",{className:"mobile-session-stat-io",style:{display:"flex",alignItems:"center",gap:2,flexShrink:0},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","aria-hidden":"true",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"})]}),o(t.output)]}),i&&(0,n.jsx)("span",{className:"mobile-session-stat-cost",style:{color:"var(--text)",fontWeight:500,flexShrink:0},children:i}),a&&(0,n.jsx)("span",{style:{color:s,flexShrink:0},children:a}),!p&&rm&&(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",color:"var(--text-dim)"},children:I("session.title")})]}):(0,n.jsxs)(n.Fragment,{children:[t&&t.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","aria-hidden":"true",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"})]}),o(t.input)]}),t&&t.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","aria-hidden":"true",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"})]}),o(t.output)]}),t&&t.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","aria-hidden":"true",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"})]}),o(t.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:s},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","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M1 9 L1 5 Q1 1 5 1 Q9 1 9 5 L9 9"}),(0,n.jsx)("line",{x1:"1",y1:"9",x2:"9",y2:"9"})]}),l]})]})})})(!0),(t=E&&ew,(0,n.jsx)("button",{type:"button",onClick:tm,disabled:t,tabIndex:t?-1:void 0,"aria-controls":"file-panel","aria-expanded":ev,"aria-hidden":!!t||void 0,title:ev?I("files.hidePanel"):I("files.showPanel"),"aria-label":ev?I("files.hidePanel"):I("files.showPanel"),"data-mobile-toolbar-file":"true",style:{marginLeft:0,display:"flex",alignItems:"center",justifyContent:"center",width:36,height:36,padding:0,visibility:t?"hidden":"visible",pointerEvents:t?"none":"auto",background:ev?"var(--bg-selected)":"none",border:"none",borderLeft:"1px solid var(--border)",color:ev?"var(--text)":"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s, background 0.12s"},onMouseEnter:e=>{t||(e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.color=ev?"var(--text)":"var(--text-muted)"},children:(0,n.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",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"})]})})),E&&ew&&(0,n.jsx)("div",{id:"mobile-toolbar-actions",role:"toolbar","aria-label":I("chat.moreControls"),"data-mobile-toolbar-actions":"true",style:{position:"absolute",top:0,right:0,bottom:0,left:36,zIndex:20,display:"flex",alignItems:"stretch",background:"color-mix(in srgb, var(--bg-panel) 94%, var(--bg))",boxShadow:"4px 0 18px rgba(0,0,0,0.12)",backdropFilter:"blur(10px)"},children:rE(!0)})]}),M&&eq&&(0,n.jsx)(cI,{tree:eH,activeLeafId:eB,onLeafChange:t8,inline:!0,compact:!0,containerRef:eI,open:"branches"===e5,onToggle:()=>e9("branches"),hasSession:rm,hideInlineButton:!0}),M&&e5&&e8&&(0,n.jsxs)("div",{style:{position:"fixed",top:e8.top,left:e8.left,width:e8.width,maxHeight:`calc(100dvh - ${e8.top}px)`,overflowY:"auto",zIndex:500},children:["agents"===e5&&F&&W&&(0,n.jsx)(pE,{rootSession:F.root,subagents:F.subagents,selectedSessionId:W.id,runningSessionIds:H,onSelectSession:t5}),"system"===e5&&(0,n.jsx)(p$,{loading:ts,prompt:eK,translate:I}),"tools"===e5&&(0,n.jsx)(or,{loading:ts,tools:to,translate:I}),"session"===e5&&(0,n.jsx)("div",{className:"session-info-popover",style:{background:"var(--bg-panel)",borderBottom:"1px solid var(--border)",boxShadow:"0 10px 28px rgba(0,0,0,0.10)",padding:"12px 16px"},children:eY?(r=eY.totalActiveMs??0,d=[...eY.sessionName?[{label:I("session.name"),value:eY.sessionName,copyField:null}]:[],{label:I("session.file"),value:eY.sessionFile??I("session.inMemory"),copyField:"file"},{label:I("session.id"),value:eY.sessionId,copyField:"id"},...r>0?[{label:I("session.totalActive"),value:(e=>{if(e<=0)return"0s";let t=Math.floor(e/1e3),r=Math.floor(t/3600),n=Math.floor(t%3600/60),o=t%60;return r>0?`${r}h ${n}m`:n>0?`${n}m ${o}s`:`${o}s`})(r),copyField:null}]:[]],c=[...W?[{label:I("session.projectDir"),value:W.projectRoot??W.cwd,copyField:"projectDir"}]:[],...W?.branch?[{label:I("session.gitBranch"),value:W.branch,copyField:"gitBranch"}]:[],...W?.isWorktree?[{label:I("session.gitWorktree"),value:W.cwd,copyField:"gitWorktree"}]:[]],u=[[I("session.user"),eY.userMessages.toLocaleString(R)],[I("session.assistant"),eY.assistantMessages.toLocaleString(R)],[I("session.toolCalls"),eY.toolCalls.toLocaleString(R)],[I("session.toolResults"),eY.toolResults.toLocaleString(R)],[I("session.total"),eY.totalMessages.toLocaleString(R)]],p=[[I("session.input"),eY.tokens.input.toLocaleString(R)],[I("session.output"),eY.tokens.output.toLocaleString(R)],...eY.tokens.cacheRead>0?[[I("session.cacheRead"),eY.tokens.cacheRead.toLocaleString(R)]]:[],...eY.tokens.cacheWrite>0?[[I("session.cacheWrite"),eY.tokens.cacheWrite.toLocaleString(R)]]:[],[I("session.total"),eY.tokens.total.toLocaleString(R)]],h=e2??eY.contextUsage,x=[...eY.cost>0?[[I("session.cost"),`$${eY.cost.toFixed(4)}`]]:[],...h?.contextWindow?[[I("session.context"),`${null!==h.percent?`${h.percent.toFixed(1)}%`:"?"} / ${(g=h.contextWindow)>=1e6?`${(g/1e6).toFixed(1)}M`:g>=1e3?`${(g/1e3).toFixed(0)}k`:String(g)}`]]:[],...eY.tokens.cacheRead+eY.tokens.cacheWrite>0&&eY.tokens.cacheRead+eY.tokens.cacheWrite+eY.tokens.input>0?[[I("session.cacheHitRate"),`${(eY.tokens.cacheRead/(eY.tokens.cacheRead+eY.tokens.cacheWrite+eY.tokens.input)*100).toFixed(1)}%`]]:[]],f=(e,t,r="left",o=!1)=>(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"var(--text)",marginBottom:6},children:e}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:o?"max-content max-content":"auto minmax(0, 1fr)",columnGap:o?14:12,rowGap:4,justifyContent:o?"start":void 0},children:t.map(([t,i])=>(0,n.jsxs)("div",{style:{display:"contents"},children:[(0,n.jsx)("div",{style:{color:"var(--text-dim)",whiteSpace:"nowrap"},children:t}),(0,n.jsx)("div",{style:{color:"var(--text-muted)",minWidth:0,overflowWrap:o?"normal":"anywhere",textAlign:r,whiteSpace:"right"===r?"nowrap":"normal"},children:i})]},`${e}:${t}`))})]}),m={file:"session.copyFile",id:"session.copyId",projectDir:"session.copyProjectDir",gitBranch:"session.copyGitBranch",gitWorktree:"session.copyGitWorktree"},v=(e,t)=>{let r=eZ===e;return(0,n.jsx)("button",{type:"button",title:r?I("session.copied"):I(m[e]),onClick:()=>e1(e,t),style:{alignSelf:"start",display:"inline-flex",alignItems:"center",justifyContent:"center",width:22,height:22,marginTop:-2,color:r?"var(--accent)":"var(--text-dim)",background:"transparent",border:"1px solid var(--border)",borderRadius:4,cursor:"pointer",flex:"0 0 auto",transition:"color 0.12s, border-color 0.12s, background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--accent)",e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=r?"var(--accent)":"var(--text-dim)",e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.background="transparent"},children:r?(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,n.jsx)("polyline",{points:"20 6 9 17 4 12"})}):(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",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=(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"var(--text)",marginBottom:6},children:I("session.infoSection")}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:"auto minmax(0, 1fr) auto",columnGap:12,rowGap:8,alignItems:"start"},children:d.map(e=>(0,n.jsxs)("div",{style:{display:"contents"},children:[(0,n.jsx)("div",{style:{color:"var(--text-dim)",whiteSpace:"nowrap"},children:e.label}),(0,n.jsx)("div",{style:{color:"var(--text-muted)",minWidth:0,overflowWrap:"anywhere",wordBreak:"break-word",whiteSpace:"normal"},children:e.value}),(0,n.jsx)("div",{children:e.copyField?v(e.copyField,e.value):null})]},`session-info:${e.label}`))})]}),b=c.length>0?(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"var(--text)",marginBottom:6},children:I("session.projectSection")}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:"auto minmax(0, 1fr) auto",columnGap:12,rowGap:8,alignItems:"start"},children:c.map(e=>(0,n.jsxs)("div",{style:{display:"contents"},children:[(0,n.jsx)("div",{style:{color:"var(--text-dim)",whiteSpace:"nowrap"},children:e.label}),(0,n.jsx)("div",{style:{color:"var(--text-muted)",minWidth:0,overflowWrap:"anywhere",wordBreak:"break-word",whiteSpace:"normal"},children:e.value}),(0,n.jsx)("div",{children:e.copyField?v(e.copyField,e.value):null})]},`project-info:${e.label}`))})]}):null,(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:M?"1fr":"minmax(360px, 1.7fr) minmax(140px, 0.55fr) minmax(190px, 0.75fr)",gap:M?16:24,fontSize:12,lineHeight:1.5,fontFamily:"var(--font-mono)"},children:[(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:M?16:20},children:[y,b]}),f(I("session.messages"),u),f(I("session.tokens"),[...p,...x],"right",!0)]})):(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text-muted)",fontStyle:"italic"},children:I("session.load")})})]})]}),M&&rM(!0)]}),(0,n.jsx)("div",{style:{flex:1,overflow:"hidden",position:"relative"},children:ry&&rj?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(pi,{}),(0,n.jsx)(ps,{activeProject:t_??void 0})]}):rm?(0,n.jsx)(ut,{session:W,newSessionCwd:rf,onAgentEnd:ri,onSessionCreated:rn,onSessionForked:ro,modelsRefreshKey:es,chatInputRef:eR,tasksBoardEnabled:rj,onSystemPromptChange:eJ,onSessionStatsChange:eX,onOpenSession:tM,onOpenSubagent:rc,subagentRuns:rd,onSessionStatsPanelOpen:tg,onContextUsageChange:e4,onOpenFile:ra,onWorkspaceControlsHostChange:eP,onViewFullHistory:rx,systemPrompt:eK},Z):"validating"===tK?(0,n.jsxs)("div",{role:"status",style:{height:"100%",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:8,padding:24,color:"var(--text-muted)",textAlign:"center"},children:[(0,n.jsx)("div",{style:{fontSize:14,color:"var(--text)"},children:I("desktop.openingWorkspace")}),(0,n.jsx)("div",{style:{maxWidth:"min(720px, 100%)",overflowWrap:"anywhere",fontFamily:"var(--font-mono)",fontSize:12},children:S.requestedCwd})]}):"error"===tK?(0,n.jsxs)("div",{role:"alert",style:{height:"100%",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:8,padding:24,color:"var(--text-muted)",textAlign:"center"},children:[(0,n.jsx)("div",{style:{fontSize:14,color:"var(--status-error)"},children:I("desktop.unableToOpenWorkspace")}),(0,n.jsx)("div",{style:{maxWidth:"min(720px, 100%)",overflowWrap:"anywhere",fontFamily:"var(--font-mono)",fontSize:12},children:S.requestedCwd}),(0,n.jsx)("div",{style:{maxWidth:720,fontSize:12},children:tJ})]}):rS?t_?(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:15},children:I("desktop.selectSessionFromSidebar")}):(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.jsx)(i.n,{size:44,color:"var(--accent)","aria-hidden":"true",style:{opacity:.7,flexShrink:0}}),(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:18,fontWeight:600,color:"var(--text)",marginBottom:8},children:I("desktop.getStarted")}),(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."}),I("desktop.selectProjectDirectory"),(0,n.jsx)("br",{}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",marginRight:6},children:"2."}),I("desktop.addModelsFromBottom")]})]})]}):null})]}),ev&&(0,n.jsx)("div",{...tP.separatorProps,inert:ej,"aria-controls":"file-panel",className:`panel-resize-handle right-panel-resize-handle${tP.isResizing?" is-resizing":""}`,"data-resize-handle":"right-panel",title:`${I("layout.resizeFilePanel")}: ${I("layout.resizeHint")}`}),(0,n.jsxs)("div",{ref:tP.panelRef,id:"file-panel",className:`right-panel-container${ev?" right-panel-open":" right-panel-closed"}${ej?" right-panel-full-width":""}${tP.isResizing?" right-panel-resizing":""}`,style:{display:"flex",flexDirection:"column",borderLeft:"1px solid var(--border)",background:"var(--bg)"},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.jsx)("div",{style:{flex:1,overflow:"hidden"},children:(0,n.jsx)(uE,{tabs:ty,activeTabId:tk??"",onSelectTab:tj,onCloseTab:ru})}),(0,n.jsx)("div",{style:{width:1,height:18,flexShrink:0,background:"var(--border)",marginRight:6},"aria-hidden":"true"}),(0,n.jsx)("button",{type:"button",className:"file-panel-expand-button",onClick:tv,"aria-controls":"file-panel","aria-pressed":ej,title:I(ej?"files.restorePanelWidth":"files.expandPanel"),"aria-label":I(ej?"files.restorePanelWidth":"files.expandPanel"),children:(0,n.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,n.jsx)("path",{d:ej?"M9 3v6H3m12-6v6h6M9 21v-6H3m12 6v-6h6M3 3l6 6m12-6-6 6M3 21l6-6m12 6-6-6":"M8 3H3v5m13-5h5v5M3 16v5h5m13-5v5h-5M3 3l6 6m12-6-6 6M3 21l6-6m12 6-6-6"})})}),(0,n.jsxs)("button",{type:"button",onClick:()=>tC(e=>!e),"aria-controls":"file-panel","aria-pressed":tS,title:I("agentSwitcher.title"),"aria-label":I("agentSwitcher.title"),style:{display:"inline-flex",alignItems:"center",gap:5,flexShrink:0,height:28,marginRight:6,padding:"0 10px",border:"1px solid var(--border)",borderRadius:6,background:tS?"var(--bg-selected)":"transparent",color:tS?"var(--text)":"var(--text-muted)",cursor:"pointer",fontSize:11,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","aria-hidden":"true",children:[(0,n.jsx)("rect",{x:"3",y:"11",width:"18",height:"10",rx:"2"}),(0,n.jsx)("circle",{cx:"12",cy:"5",r:"2"}),(0,n.jsx)("path",{d:"M12 7v4"})]}),I("agentSwitcher.title")]}),(0,n.jsx)("button",{type:"button",onClick:()=>ey(!1),"aria-controls":"file-panel","aria-expanded":ev,title:I("files.hidePanel"),"aria-label":I("files.hidePanel"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:36,height:36,padding:0,background:"var(--bg-selected)",border:"none",borderLeft:"1px solid var(--border)",color:"var(--text)",cursor:"pointer",flexShrink:0,transition:"color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text)"},children:(0,n.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",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"})]})})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"hidden",display:"flex",flexDirection:"column",minHeight:0},children:tS?(k=p_(tz,W?.id))?(0,n.jsx)(pE,{rootSession:k.root,subagents:k.subagents,selectedSessionId:W?.id??"",runningSessionIds:tR,onSelectSession:e=>{tC(!1),t3.current(e)}}):(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:12},children:I("agentSwitcher.noFamily")}):rz?.kind==="subagent"&&rz.sessionId?(0,n.jsx)(uM,{sessionId:rz.sessionId,label:rz.label,running:tR.has(rz.sessionId),onOpenFile:ra}):rz?.filePath?(0,n.jsx)(uR,{filePath:rz.filePath,cwd:t_??void 0,sourceSessionId:rz.sourceSessionId,initialDisplayMode:rz.initialDisplayMode,initialPage:rz.page,initialState:rz.viewerState,onOpenFile:(e,t)=>rl(e,oL(e),{sourceSessionId:rz.sourceSessionId,page:t}),onFileSaved:()=>et(e=>e+1)}):(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:12},children:"No file open"})})]})]}),ec&&rv&&(0,n.jsx)(pW,{cwd:rv,busy:ep,error:eg,onCancelAction:()=>{ep||eu(!1)},onConfirmAction:()=>void rC()}),er&&(0,n.jsx)(op,{initialTab:eo,cwd:rT,sessionId:W?.id??null,onCloseAction:()=>{en(!1),el(e=>e+1)},onModelsSavedAction:()=>el(e=>e+1),onSessionReloadedAction:()=>Q(e=>e+1),onSessionsChanged:()=>X(e=>e+1)})]})]})}},79023:(e,t,r)=>{Promise.resolve().then(r.bind(r,40888)),Promise.resolve().then(r.bind(r,32981))}},e=>{e.O(0,[7330,7650,2981,8441,3794,7358],()=>e(e.s=79023)),_N_E=e.O()}]);