@kimiclaw/cli 1.0.42 → 1.0.45

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 (95) hide show
  1. package/README.md +17 -21
  2. package/bin/dscode.exe +4 -0
  3. package/install.cjs +15 -0
  4. package/package.json +9 -9
  5. package/web/dist/assets/AssistantsView-Y3nFezhd.js +1 -0
  6. package/web/dist/assets/AutomationView-bf7_zU_p.js +4 -0
  7. package/web/dist/assets/Button-B43HsIQ3.js +1 -0
  8. package/web/dist/assets/ChannelConfigView---Dwl3Fk.js +12 -0
  9. package/web/dist/assets/ChartsView-Dw6G-jf3.js +1 -0
  10. package/web/dist/assets/ConnectorsView-BWvdrpyK.js +2 -0
  11. package/web/dist/assets/{MessageBubble-CVGXupVH.js → DiffPreview-WQihq3bK.js} +65 -67
  12. package/web/dist/assets/FileContextMenu-CyjXlSHp.js +1 -0
  13. package/web/dist/assets/FileTreeView-Cafy33nT.js +1 -0
  14. package/web/dist/assets/HookConfigView-D-lASVju.js +2 -0
  15. package/web/dist/assets/InboxView-BWajw-Yx.js +1 -0
  16. package/web/dist/assets/InputArea-CSqaA55j.js +31 -0
  17. package/web/dist/assets/Install-ClEm4oGX.js +2 -0
  18. package/web/dist/assets/MemoryView-DLri75dm.js +1 -0
  19. package/web/dist/assets/ModelsView-BBLUMzR5.js +1 -0
  20. package/web/dist/assets/PluginsView-C-fnbDGZ.js +1 -0
  21. package/web/dist/assets/ProjectsView-BruI2W_l.js +1 -0
  22. package/web/dist/assets/SessionGrid-7GLpwn6d.js +4 -0
  23. package/web/dist/assets/SettingsModal-cc9Qu2QU.js +4 -0
  24. package/web/dist/assets/SkillsView-Bf-2-U_q.js +1 -0
  25. package/web/dist/assets/TemplatesTab-CKul8nbL.js +2 -0
  26. package/web/dist/assets/ToolsView-D_aluOsK.js +1 -0
  27. package/web/dist/assets/WorkspaceDirPicker-Z42YqE4a.js +5 -0
  28. package/web/dist/assets/{agentIconSet-B5GUQwel.js → agentIconSet-Cqhm4UOl.js} +1 -1
  29. package/web/dist/assets/api-BW4-5gtM.js +1 -0
  30. package/web/dist/assets/channelMeta-BO645sjD.js +1 -0
  31. package/web/dist/assets/chatStore-D8Zzr1hE.js +242 -0
  32. package/web/dist/assets/cn-CoHJgTJ5.js +1 -0
  33. package/web/dist/assets/common-CP2UB8TN.js +304 -0
  34. package/web/dist/assets/icons-CittejKL.js +1 -0
  35. package/web/dist/assets/imageUrl-BVgcEm7e.js +2 -0
  36. package/web/dist/assets/index-CEUbTcNL.css +1 -0
  37. package/web/dist/assets/index-CxrzleFg.js +122 -0
  38. package/web/dist/assets/installDiagnosis-ZYUVgJIJ.js +3 -0
  39. package/web/dist/assets/{markdown-N5__3T-w.js → markdown-DZQBOzWk.js} +1 -1
  40. package/web/dist/assets/{panels-CIPgN61N.js → panels-CuDz4aqU.js} +1 -1
  41. package/web/dist/assets/projectsStore-B7fdKRzl.js +1 -0
  42. package/web/dist/assets/{react-vendor-CB4cLN-6.js → react-vendor-BEA-EtI-.js} +1 -1
  43. package/web/dist/assets/sessionKind-CZ1kQQII.js +1 -0
  44. package/web/dist/assets/{settingsStore-Xqln0d91.js → settingsStore-DYqiXodu.js} +1 -1
  45. package/web/dist/assets/src-55YckF5W.js +2 -0
  46. package/web/dist/assets/{state-CSZ50keL.js → state-A4wJ8QgR.js} +1 -1
  47. package/web/dist/assets/statusAxesRefresh-BBqszCp-.js +1 -0
  48. package/web/dist/assets/sttLanguages-jnSk4aqg.js +6 -0
  49. package/web/dist/assets/threadStore-CQi4OzSe.js +1 -0
  50. package/web/dist/assets/{types-JssxRFJn.js → threads-lr33dwqg.js} +1 -1
  51. package/web/dist/assets/useConfirm-kTv3x0H6.js +1 -0
  52. package/web/dist/assets/{useTranslation-B-mfApCn.js → useTranslation-2BGEBvJE.js} +1 -1
  53. package/web/dist/assets/websocket-DCs7f54y.js +1 -0
  54. package/web/dist/assets/whatsNewStore-DoCQvcMq.js +1 -0
  55. package/web/dist/favicon.svg +31 -14
  56. package/web/dist/icons/icon-1024.png +0 -0
  57. package/web/dist/icons/icon-180.png +0 -0
  58. package/web/dist/icons/icon-192.png +0 -0
  59. package/web/dist/icons/icon-512.png +0 -0
  60. package/web/dist/icons/icon-maskable-512.png +0 -0
  61. package/web/dist/index.html +42 -35
  62. package/web/dist/logo.svg +42 -20
  63. package/web/dist/manifest.webmanifest +2 -2
  64. package/web/dist/assets/AssistantsView-Ct3BBpYf.js +0 -1
  65. package/web/dist/assets/AutomationView-CO-jVhee.js +0 -3
  66. package/web/dist/assets/ChannelConfigView-Ct1W584x.js +0 -8
  67. package/web/dist/assets/ChartsView-CAc37Sam.js +0 -1
  68. package/web/dist/assets/ConnectorsView-DP4bbh58.js +0 -1
  69. package/web/dist/assets/FileTreeView-DwsYfssO.js +0 -1
  70. package/web/dist/assets/HookConfigView-uFsqieii.js +0 -2
  71. package/web/dist/assets/InputArea-BY8quOiH.js +0 -14
  72. package/web/dist/assets/MemoryView-Bgd_lcTf.js +0 -1
  73. package/web/dist/assets/ModelsView-B271UV9L.js +0 -1
  74. package/web/dist/assets/PluginsView-Dz4fqQR1.js +0 -2
  75. package/web/dist/assets/ProjectsView-DF-YCV8y.js +0 -1
  76. package/web/dist/assets/SessionGrid-BIREstN2.js +0 -4
  77. package/web/dist/assets/SettingsModal-ZJeoZcCd.js +0 -4
  78. package/web/dist/assets/SkillsView-CH2ghYL2.js +0 -1
  79. package/web/dist/assets/TemplatesTab-BGe7_67s.js +0 -1
  80. package/web/dist/assets/ThreadsView-XditIHZ4.js +0 -2
  81. package/web/dist/assets/ToolsView-BBzsFdVZ.js +0 -1
  82. package/web/dist/assets/api-plEYhRn0.js +0 -1
  83. package/web/dist/assets/channelMeta-BGQXQxgj.js +0 -1
  84. package/web/dist/assets/common-Bbatsa0-.js +0 -192
  85. package/web/dist/assets/icons-CYDRRPKW.js +0 -1
  86. package/web/dist/assets/index-CTbLW314.js +0 -133
  87. package/web/dist/assets/index-DdzVrZye.css +0 -1
  88. package/web/dist/assets/src-49LUQhkG.js +0 -1
  89. package/web/dist/assets/sttLanguages-CSNMgUTz.js +0 -2
  90. package/web/dist/assets/ttsSettings-BwXYpDnk.js +0 -2
  91. package/web/dist/assets/useConfirm-Da8iQ_DZ.js +0 -1
  92. package/web/dist/assets/websocket-BnDwh01e.js +0 -1
  93. package/web/dist/assets/whatsNewStore-LpdLRLGl.js +0 -1
  94. package/web/dist/assets/workspaceSemantics-RaIRer76.js +0 -3
  95. /package/web/dist/assets/{MessageBubble-CCTRbIMZ.css → DiffPreview-CCTRbIMZ.css} +0 -0
@@ -0,0 +1,31 @@
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{$r as t,A as n,Ar as r,At as i,Bn as a,Cn as o,D as s,Dr as c,Fn as l,Ft as u,G as d,Gn as f,Gt as p,Hn as m,It as h,Jr as g,Kt as _,Mt as v,Nr as y,Or as b,Pn as x,S,Sn as C,Vr as w,Xn as T,Xr as E,Xt as D,Y as O,Yr as k,Zr as A,_t as j,a as M,br as ee,bt as te,c as ne,d as N,dn as re,er as ie,f as ae,g as oe,h as se,hr as ce,ii as P,ir as le,it as F,jn as I,jr as ue,l as L,lr as R,mt as de,n as fe,ni as pe,pt as z,qn as me,qt as B,r as he,rr as ge,sn as _e,t as ve,tr as V,v as ye,x as be,xn as xe,xt as Se,yn as Ce,z as we}from"./icons-CittejKL.js";import{r as Te}from"./react-vendor-BEA-EtI-.js";import{t as H}from"./useTranslation-2BGEBvJE.js";import{A as Ee,O as De,R as Oe,S as ke,a as U,c as Ae,j as je,n as Me,t as Ne,w as Pe,x as Fe}from"./chatStore-D8Zzr1hE.js";import{n as Ie,r as W,t as Le}from"./Button-B43HsIQ3.js";import{n as Re}from"./src-55YckF5W.js";import{B as G,Ft as ze,It as Be,Mt as Ve,Ot as He,_ as Ue,_t as We,a as Ge,b as Ke,bt as qe,c as Je,d as K,f as Ye,g as Xe,i as Ze,l as Qe,m as $e,n as et,o as tt,p as nt,t as rt,u as it,v as at,vt as ot,wt as st,yt as q}from"./DiffPreview-WQihq3bK.js";import{a as ct,c as lt,d as ut,h as dt,i as ft,l as pt,n as mt,o as ht,r as gt,s as _t,t as vt,u as yt}from"./sttLanguages-jnSk4aqg.js";import{r as bt,t as J}from"./api-BW4-5gtM.js";import{j as xt,r as St,t as Ct}from"./settingsStore-DYqiXodu.js";import{I as wt}from"./markdown-DZQBOzWk.js";import{n as Tt}from"./websocket-DCs7f54y.js";import{a as Et,n as Dt,s as Ot,t as kt}from"./imageUrl-BVgcEm7e.js";import{d as At,f as jt,g as Mt,l as Nt,o as Pt,t as Ft,u as It}from"./FileContextMenu-CyjXlSHp.js";import{t as Y}from"./cn-CoHJgTJ5.js";import{n as Lt,r as Rt,s as zt,t as Bt,u as Vt}from"./common-CP2UB8TN.js";import{r as Ht}from"./useConfirm-kTv3x0H6.js";import{n as Ut}from"./WorkspaceDirPicker-Z42YqE4a.js";import{_t as Wt,a as Gt,c as Kt,d as qt,f as Jt,gt as Yt,ht as Xt,i as Zt,lt as Qt,m as $t,mt as en,n as tn,o as nn,p as rn,pt as an,s as on,st as sn,t as cn,ut as ln,vt as un,yt as dn}from"./index-CxrzleFg.js";var fn=/\[Pasted text #(\d+)(?:\s*\+\d+ lines?)?\]/g,pn=0,mn=new Map;function hn(e){let t=++pn;return mn.set(t,e.replace(/\r\n?/g,`
2
+ `)),t}function gn(e){return mn.get(e)}function _n(e){mn.delete(e)}function vn(e){return e.length>800||yn(e)>0}function yn(e){return(e.match(/\r\n|\r|\n/g)||[]).length}function bn(e){let t=hn(e),n=yn(e);return n===0?{id:t,label:`[Pasted text #${t}]`}:{id:t,label:`[Pasted text #${t} +${n} lines]`}}function xn(e){return fn.lastIndex=0,e.replace(fn,(e,t)=>{let n=parseInt(t,10),r=mn.get(n);return r===void 0?e:r})}function Sn(e){fn.lastIndex=0;let t=[],n;for(;(n=fn.exec(e))!==null;){let e=n[1];e!==void 0&&t.push(parseInt(e,10))}return fn.lastIndex=0,t}function Cn(e){for(let t of e)mn.delete(t)}function wn(e){let t=e.match(/\[Pasted text #\d+(?:\s*\+\d+ lines?)?\]$/);return t?t[0]:null}function Tn(e){let t=e.match(/^\[Pasted text #\d+(?:\s*\+\d+ lines?)?\]/);return t?t[0]:null}function En(e){let t=e.match(/#(\d+)/);t&&_n(parseInt(t[1]??``,10))}function Dn(e){let t=[],n=e.tasks??[];n.length>0&&t.push(kn(n)?jn(n):An(n));let r=Mn(e.threads??[]);r&&t.push(r),e.stats&&e.stats.length>0&&t.push({id:`derived-metrics`,kind:`stats`,source:`events`,series:[...e.stats]});let i=On(e.cards);return i&&t.push(i),Ke(t)}function On(e){return!e||e.items.length===0?null:{id:`derived-cards`,kind:`cards`,source:`events`,title:e.title,groupTitle:e.groupTitle,layout:e.layout??`carousel`,chrome:e.chrome??`card`,app:e.app,items:[...e.items]}}function kn(e){let t=0;for(let n of e){let e=n.deps??[];if(e.length>1)return!1;e.length===1&&(t+=1)}return t>0}function An(e){return{id:`derived-tasks-board`,kind:`board`,source:`events`,title:`Tasks`,items:e.map(e=>({id:e.id,label:e.title,status:e.status,detail:e.detail&&e.detail.trim()!==e.title.trim()?e.detail:void 0,deps:e.deps&&e.deps.length>0?[...e.deps]:void 0}))}}function jn(e){let t=new Map(e.map(e=>[e.id,e])),n=new Map,r=[];for(let i of e){let e=i.deps?.[0];if(e&&e!==i.id&&t.has(e)){let t=n.get(e)??[];t.push(i),n.set(e,t)}else r.push(i)}let i=new Set,a=e=>{if(i.has(e.id))return{id:e.id,label:e.title,meta:e.status};i.add(e.id);let t=(n.get(e.id)??[]).map(a);return{id:e.id,label:e.title,meta:e.status,children:t.length>0?t:void 0}};return{id:`derived-tasks-tree`,kind:`tree`,source:`events`,root:r.length===1?a(r[0]):{id:`derived-tasks-root`,label:`Tasks`,children:r.map(a)}}}function Mn(e){if(e.length===0)return null;let t=0,n=0,r=0,i=0,a=0;for(let o of e){let e=o.status.toLowerCase();e===`working`||e===`running`?t+=1:e===`done`||e===`completed`?n+=1:(e===`failed`||e===`error`)&&(r+=1),typeof o.costUsd==`number`&&(i+=o.costUsd),typeof o.tokens==`number`&&(a+=o.tokens)}let o=[{label:`Threads`,value:e.length}];return t>0&&o.push({label:`Active`,value:t,tone:`neutral`}),n>0&&o.push({label:`Done`,value:n,tone:`good`}),r>0&&o.push({label:`Failed`,value:r,tone:`bad`}),i>0&&o.push({label:`Cost`,value:Number(i.toFixed(4)),unit:`USD`}),a>0&&o.push({label:`Tokens`,value:a}),{id:`derived-threads-stats`,kind:`stats`,source:`events`,series:o}}var X=e(P(),1),Nn=new Set([`edit_file`,`edit_file_line`,`file_edit`,`file_append`,`notebook_edit`,`apply_patch`,`git_apply_patch`,`Edit`,`EditTool`,`NotebookEditTool`]),Pn=/^\s*\*\*\*\s*Add File:\s*(.+?)\s*$/,Fn=/^\s*\*\*\*\s*(?:Update File|Move to):\s*(.+?)\s*$/;function In(e){return e.replace(/\\/g,`/`).replace(/^\.\//,``)}function Ln(e){return typeof e.diff==`string`&&e.diff.trim().length>0}function Rn(e){let t=qe(e);if(!t)return null;let n=String(t.patch??t.input??``);if(!n.trim())return null;let r=[],i=[];for(let e of n.split(/\r?\n/)){let t=Pn.exec(e);if(t?.[1]){r.push(t[1]);continue}let n=Fn.exec(e);n?.[1]&&i.push(n[1])}return r.length===0&&i.length===0?null:{created:r,modified:i}}var zn=class{created=new Map;modified=new Map;addCreated(e){if(!e)return;let t=In(e);this.created.has(t)||(this.modified.delete(t),this.created.set(t,e))}addModified(e){if(!e)return;let t=In(e);this.created.has(t)||this.modified.has(t)||this.modified.set(t,e)}addMessage(e){for(let t of e.fileJob?.result??[])t?.path&&this.addCreated(t.path);for(let t of e.toolCalls??[]){if(!t||t.status===`error`||!ot(t.name))continue;let e=Rn(t.args);if(e){for(let t of e.created)this.addCreated(t);for(let t of e.modified)this.addModified(t)}else for(let e of We(t.name,t.args))Nn.has(t.name)||Ln(t)?this.addModified(e):this.addCreated(e)}}result(){return{created:Array.from(this.created.values()),modified:Array.from(this.modified.values())}}};function Bn(e){let t=new zn;return t.addMessage(e),t.result()}function Vn(e){let t=new zn;for(let n of e)t.addMessage(n);return t.result()}function Hn(e){let t=new Map,n=[],r=()=>{if(n.length!==0){for(let e=n.length-1;e>=0;e--){let r=n[e];if(!r||r.type!==`assistant`)continue;let i=Vn(n);(i.created.length>0||i.modified.length>0)&&t.set(r.id,i);break}n=[]}};for(let t of e)t.type===`user`&&r(),n.push(t);return r(),t}var Un=`idle`,Wn=null,Gn=null,Kn=0,qn=new Set;function Jn(e){if(Un!==e){Un=e;for(let t of qn)t(e)}}function Yn(e){return qn.add(e),()=>{qn.delete(e)}}function Xn(){return Un}function Zn(){Kn++,Wn&&=(Wn.pause(),Wn.src=``,null),Gn&&=(URL.revokeObjectURL(Gn),null),Jn(`idle`)}function Qn(e){let t=atob(e),n=new Uint8Array(new ArrayBuffer(t.length));for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}async function $n(e,t){let n=e.trim();if(!n)return null;Zn();let r=++Kn;Jn(`loading`);let i=dt(),a=await J.tts.synthesize({text:n,lang:t||void 0,voice:i.voice??void 0,speed:i.speed});if(r!==Kn)return null;if(!a.success||!a.data?.audio)return Jn(`idle`),a.error||`synthesize failed`;let o=new Blob([Qn(a.data.audio)],{type:`audio/wav`}),s=URL.createObjectURL(o),c=new Audio(s);Wn=c,Gn=s,c.onended=()=>{r===Kn&&Zn()},c.onerror=()=>{r===Kn&&Zn()};try{await c.play(),r===Kn&&Jn(`playing`)}catch(e){return r===Kn&&Zn(),e instanceof Error?e.message:String(e)}return null}function er(){let[e,t]=(0,X.useState)(Xn);return(0,X.useEffect)(()=>Yn(t),[]),e}function tr(e){let t=(0,X.useRef)(null),n=(0,X.useRef)(0);return(0,X.useEffect)(()=>{if(!e){n.current=0;return}n.current=Date.now();let r=t.current;if(!r)return;let i=()=>{let e=Math.floor((Date.now()-n.current)/1e3),t=e>=60?`${Math.floor(e/60)}m ${e%60}s`:`${e}s`;r.textContent=t};i();let a=setInterval(i,1e3);return()=>clearInterval(a)},[e]),t}var Z=wt();function nr(e){if(typeof e==`string`)try{let t=JSON.parse(e);return t&&typeof t==`object`&&!Array.isArray(t)?t:null}catch{return null}return e&&typeof e==`object`&&!Array.isArray(e)?e:null}function Q(e,t){let n=nr(e);if(!n)return``;for(let e of t){let t=n[e];if(typeof t==`string`&&t)return t}return``}function rr(e,t){let n=nr(e);if(n)for(let e of t){let t=n[e],r=typeof t==`number`?t:typeof t==`string`&&t.trim()?Number(t):NaN;if(Number.isFinite(r)&&r>0)return r}}function ir(e){return typeof e==`string`?e:e&&typeof e==`object`?JSON.stringify(e,null,2):String(e??``)}function ar(e){for(let t of e.split(`
3
+ `)){let e=t.trim();if(e)return e}return``}var or=40;function sr(e){return e===``?0:e.split(`
4
+ `).length}function cr({label:e,tone:t=`text-dark-muted`,contentKey:n,children:r}){return(0,Z.jsxs)(`div`,{className:`px-2 py-1`,children:[(0,Z.jsx)(`div`,{className:`mb-0.5 text-badge ${t}`,children:e}),(0,Z.jsx)(`div`,{className:`rounded border border-dark-border bg-dark-bg`,children:(0,Z.jsx)(Bt,{lines:or,contentKey:n,children:r})})]})}function lr({toolCall:e}){let{t}=H(),n=Q(e.args,[`command`,`cmd`,`script`]),r=e.status===`error`,i=e.status===`running`,a=ir(e.result),o=i&&!a&&e.liveOutput||``;return(0,Z.jsxs)(`div`,{className:`space-y-0.5 py-0.5`,children:[n&&(0,Z.jsx)(cr,{label:t(`step.params`),contentKey:n,children:(0,Z.jsxs)(`pre`,{className:`tv-pre`,children:[(0,Z.jsx)(`span`,{className:`select-none text-accent-green`,children:`$ `}),n]})}),o&&(0,Z.jsx)(cr,{label:t(`step.result`),tone:`text-accent-green`,contentKey:`live:${sr(o)}`,children:(0,Z.jsx)(`pre`,{className:`tv-pre`,children:o})}),e.result!==void 0&&e.result!==null&&(0,Z.jsx)(cr,{label:t(r?`step.error`:`step.result`),tone:r?`text-accent-red`:`text-accent-green`,contentKey:a,children:(0,Z.jsx)(`pre`,{className:`tv-pre ${r?`text-accent-red`:``}`,children:a})})]})}function ur({toolCall:e}){let t=q(e.args),n=ir(e.result),r=e.diff||(n&&(n.includes(`@@`)||n.includes(`+++`)||n.includes(`---`))?n:void 0);return!r&&!n?(0,Z.jsx)(mr,{toolCall:e}):(0,Z.jsx)(`div`,{className:`px-2 py-1`,children:(0,Z.jsx)(rt,{filePath:t,content:r||n})})}function dr({toolCall:e}){let{t}=H(),n=q(e.args),r=e.status===`error`,i=ir(e.result);return(0,Z.jsxs)(`div`,{className:`space-y-0.5 py-0.5`,children:[n&&(0,Z.jsx)(`div`,{className:`flex items-center gap-1.5 px-2 pt-1 font-mono text-meta text-accent-blue`,title:n,children:(0,Z.jsx)(`span`,{className:`truncate`,children:n})}),e.result!==void 0&&e.result!==null&&(0,Z.jsx)(cr,{label:t(r?`step.error`:`step.result`),tone:r?`text-accent-red`:`text-accent-green`,contentKey:i,children:(0,Z.jsx)(`pre`,{className:`tv-pre ${r?`text-accent-red`:``}`,children:i})})]})}function fr({toolCall:e}){let{t}=H(),n=Q(e.args,[`pattern`,`query`,`regex`]),r=e.status===`error`,i=e.result!==void 0&&e.result!==null,a=i?ir(e.result):``;return(0,Z.jsxs)(`div`,{className:`space-y-0.5 py-0.5`,children:[n&&(0,Z.jsx)(`div`,{className:`flex items-center gap-1.5 px-2 pt-1 text-meta text-dark-muted`,children:(0,Z.jsx)(`span`,{className:`font-mono text-accent-blue`,children:n})}),i&&(0,Z.jsx)(cr,{label:t(r?`step.error`:`step.result`),tone:r?`text-accent-red`:`text-accent-green`,contentKey:a,children:(0,Z.jsx)(`pre`,{className:`tv-pre ${r?`text-accent-red`:``}`,children:a})})]})}function pr({toolCall:e}){let{t}=H(),n=Q(e.args,[`url`,`query`]),r=e.status===`error`,i=ir(e.result);return(0,Z.jsxs)(`div`,{className:`space-y-0.5 py-0.5`,children:[n&&(0,Z.jsx)(`div`,{className:`truncate px-2 pt-1 font-mono text-meta text-accent-blue`,title:n,children:n}),e.result!==void 0&&e.result!==null&&(0,Z.jsx)(cr,{label:t(r?`step.error`:`step.result`),tone:r?`text-accent-red`:`text-accent-green`,contentKey:i,children:(0,Z.jsx)(`pre`,{className:`tv-pre ${r?`text-accent-red`:``}`,children:i})})]})}function mr({toolCall:e}){let{t}=H(),n=e.status===`error`,r=e.result!==void 0&&e.result!==null,i=typeof e.args==`string`?e.args:JSON.stringify(e.args,null,2),a=r?ir(e.result):``;return(0,Z.jsxs)(`div`,{className:`space-y-0.5 py-0.5`,children:[(0,Z.jsx)(cr,{label:t(`step.params`),contentKey:i,children:(0,Z.jsx)(`pre`,{className:`tv-pre`,children:i})}),r&&(0,Z.jsx)(cr,{label:t(n?`step.error`:`step.result`),tone:n?`text-accent-red`:`text-accent-green`,contentKey:a,children:(0,Z.jsx)(`pre`,{className:`tv-pre ${n?`text-accent-red`:``}`,children:a})})]})}function hr({toolCall:e}){let{t}=H(),n=e.status===`error`,r=ir(e.result),i=(e.attachments??[]).filter(e=>e.mime.startsWith(`image/`));return(0,Z.jsxs)(`div`,{className:`space-y-0.5 py-0.5`,children:[i.length>0&&(0,Z.jsxs)(`div`,{className:`px-2 pt-1`,children:[(0,Z.jsx)(`div`,{className:`mb-0.5 text-badge text-dark-muted`,children:t(`step.screenshot`,`Screenshot`)}),(0,Z.jsx)(`div`,{className:`max-h-72 overflow-y-auto custom-scrollbar rounded border border-dark-border bg-dark-bg`,children:i.slice(0,4).map((e,t)=>(0,Z.jsx)(`img`,{src:e.url,alt:e.filename??`computer screenshot ${t+1}`,className:`block w-full object-contain`,loading:`lazy`},t))})]}),e.result!==void 0&&e.result!==null&&(0,Z.jsx)(cr,{label:t(n?`step.error`:`step.result`),tone:n?`text-accent-red`:`text-accent-green`,contentKey:r,children:(0,Z.jsx)(`pre`,{className:`tv-pre ${n?`text-accent-red`:``}`,children:r})})]})}var gr=112;function _r(e){let t=/^(\d+)\s*[x×]\s*(\d+)$/i.exec(e.trim()),n=t?Number(t[1]):0,r=t?Number(t[2]):0;return!n||!r?1:Math.min(Math.max(n/r,.5),2)}function vr({toolCall:e}){let{t}=H(),n=Q(e.args,[`prompt`]),r=Q(e.args,[`size`]),i=Math.min(Math.max(Math.floor(rr(e.args,[`n`])??1),1),4),a=_r(r),o=n.length>200?`${n.slice(0,199)}…`:n;return(0,Z.jsxs)(`div`,{className:`px-2 py-1.5`,"data-testid":`image-generating`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`text-shimmer text-compact font-medium`,children:t(`step.imageGenerating`)}),(0,Z.jsxs)(`span`,{className:`chat-typing-dots`,"aria-hidden":`true`,children:[(0,Z.jsx)(`span`,{}),(0,Z.jsx)(`span`,{}),(0,Z.jsx)(`span`,{})]})]}),(0,Z.jsx)(`div`,{className:`mt-1.5 flex flex-wrap items-start gap-1.5`,children:Array.from({length:i},(e,t)=>(0,Z.jsx)(Vt,{shimmer:!0,className:`shrink-0 border border-dark-border`,height:gr,width:Math.round(gr*a)},t))}),o&&(0,Z.jsx)(`p`,{className:`mt-1.5 max-w-[26rem] text-meta leading-snug text-dark-muted`,title:n,children:o}),r&&(0,Z.jsx)(`p`,{className:`mt-0.5 font-mono text-badge text-dark-muted`,children:r})]})}function yr({toolCall:e}){let{t}=H(),n=e.status===`error`,r=ir(e.result),i=(e.generatedImages??[]).filter(e=>e.length>0),a=Q(e.args,[`prompt`]),o=Q(e.args,[`size`]),s=e.generatedImageModel??``,c=a.length>300?`${a.slice(0,299)}…`:a,[l,u]=(0,X.useState)(null);return(0,Z.jsxs)(`div`,{className:`space-y-0.5 py-0.5`,children:[i.length>0&&(0,Z.jsxs)(`div`,{className:`px-2 pt-1`,children:[(0,Z.jsxs)(`div`,{className:`mb-1 flex flex-wrap items-center gap-x-2 text-badge text-dark-muted`,children:[(0,Z.jsx)(`span`,{children:t(`step.generatedImages`,{count:i.length})}),o&&(0,Z.jsx)(`span`,{className:`font-mono`,children:o})]}),(0,Z.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:i.map((e,n)=>(0,Z.jsx)(`button`,{onClick:()=>u(kt(e)),title:t(`fileJob.imagePreview`),className:`cursor-zoom-in overflow-hidden rounded-lg border border-dark-border transition-colors hover:border-accent-blue/40`,children:(0,Z.jsx)(`img`,{src:kt(e),alt:`generated image ${n+1}`,loading:`lazy`,className:`h-28 w-auto max-w-[220px] object-cover`})},`${e}-${n}`))}),(c||s)&&(0,Z.jsxs)(`dl`,{className:`mt-1.5 max-w-[26rem] space-y-0.5`,"data-testid":`image-gen-meta`,children:[c&&(0,Z.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,Z.jsx)(`dt`,{className:`shrink-0 text-badge text-dark-muted`,children:t(`step.imagePrompt`)}),(0,Z.jsx)(`dd`,{className:`min-w-0 break-words text-meta leading-snug text-dark-text/85`,title:a,children:c})]}),s&&(0,Z.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,Z.jsx)(`dt`,{className:`shrink-0 text-badge text-dark-muted`,children:t(`step.imageModel`)}),(0,Z.jsx)(`dd`,{className:`break-all font-mono text-meta text-dark-text/85`,children:s})]})]})]}),e.result!==void 0&&e.result!==null&&(0,Z.jsx)(cr,{label:t(n?`step.error`:`step.result`),tone:n?`text-accent-red`:`text-accent-green`,contentKey:r,children:(0,Z.jsx)(`pre`,{className:`tv-pre ${n?`text-accent-red`:``}`,children:r})}),(0,Z.jsx)(G,{isOpen:!!l,src:l??``,alt:t(`fileJob.imagePreview`),onClose:()=>u(null)})]})}function br(e){let t=e.slice(5),n=t.indexOf(`__`);if(!(n<=0))return t.slice(0,n)||void 0}function xr({toolCall:e}){let t=(0,X.useMemo)(()=>e.status===`error`?void 0:at(e.result),[e.status,e.result]);if(e.status===`running`){let t=br(e.name);return(0,Z.jsx)(Xe,{app:t?{id:t,name:t}:void 0})}return t?(0,Z.jsx)(Ue,{blocks:Dn({cards:t.source})}):(0,Z.jsx)(mr,{toolCall:e})}var Sr=/(?:^|[_\W])(bash|powershell|pwsh|cmd|command|shell|exec|terminal)(?:[_\W]|$)/i,Cr=/(?:^|[_\W])(read|cat|view|open)(?:[_\W]|$)/i,wr=/(?:^|[_\W])(grep|glob|search|find|list)(?:[_\W]|$)/i,Tr=/(?:^|[_\W])(webfetch|websearch|fetch|web|http|curl|url)(?:[_\W]|$)/i,Er=/(?:^|[_\W])(computer)(?:[_\W]|$)/i,Dr=/^agent$/i,Or=/generate[-_]?image|imagegen|create[-_]?image/i,$=/^mcp__/;function kr(e){return Dr.test(e)?`agent`:Or.test(e)?`image`:$.test(e)?`app`:ot(e)?`diff`:Sr.test(e)?`terminal`:Er.test(e)?`computer`:Tr.test(e)?`web`:wr.test(e)?`search`:Cr.test(e)?`read`:`generic`}function Ar(e,t){let n=kr(e),r=``;switch(n){case`terminal`:r=Q(t,[`command`,`cmd`,`script`]);break;case`computer`:if(r=Q(t,[`action`])||Q(t,[`scope`]),r){let e=r,n=e===`type`||e===`key`?Q(t,[`text`]):e===`focus`?Q(t,[`keyword`]):e===`scroll`?Q(t,[`direction`]):``;r=n?`${e} ${n}`:e}break;case`diff`:case`read`:r=q(t)??``;break;case`search`:r=Q(t,[`pattern`,`query`,`regex`,`glob`]);break;case`web`:r=Q(t,[`url`,`query`]);break;case`image`:r=Q(t,[`prompt`]);break;case`agent`:r=Q(t,[`scope`])||Q(t,[`prompt`]);break;case`app`:if(r=Q(t,[`query`,`url`,`q`,`text`,`input`]),!r)try{let e=typeof t==`string`?JSON.parse(t):t;r=e&&typeof e==`object`?JSON.stringify(e):String(t??``)}catch{r=typeof t==`string`?t:``}break;default:try{let e=typeof t==`string`?JSON.parse(t):t;r=e&&typeof e==`object`?JSON.stringify(e):String(t??``)}catch{r=typeof t==`string`?t:``}}let i=r.replace(/\s+/g,` `).trim();return i.length>64?`${i.slice(0,63)}…`:i}function jr({toolCall:e}){switch(kr(e.name)){case`terminal`:return(0,Z.jsx)(lr,{toolCall:e});case`diff`:return(0,Z.jsx)(ur,{toolCall:e});case`read`:return(0,Z.jsx)(dr,{toolCall:e});case`search`:return(0,Z.jsx)(fr,{toolCall:e});case`web`:return(0,Z.jsx)(pr,{toolCall:e});case`computer`:return(0,Z.jsx)(hr,{toolCall:e});case`image`:return e.status===`running`?(0,Z.jsx)(vr,{toolCall:e}):(0,Z.jsx)(yr,{toolCall:e});case`app`:return(0,Z.jsx)(xr,{toolCall:e});default:return(0,Z.jsx)(mr,{toolCall:e})}}function Mr(e){return{phase:`streaming`,since:e,dryAt:null}}function Nr(e,t,n,r={}){let i=r.settleDelayMs??600;switch(t){case`erase`:return e.phase===`erased`?e:{phase:`erased`,since:n,dryAt:null};case`stream`:return e.phase===`erased`||e.phase===`streaming`&&e.dryAt===null?e:{phase:`streaming`,since:n,dryAt:null};case`settle`:return e.phase===`streaming`?r.reducedMotion?{phase:`settled`,since:n,dryAt:null}:{...e,dryAt:(e.dryAt??n)+i}:e}}function Pr(e,t){return e.phase!==`streaming`||e.dryAt===null||t<e.dryAt?e:{phase:`settled`,since:e.dryAt,dryAt:null}}function Fr(){return typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches}function Ir(e,t){let[n,r]=(0,X.useState)(()=>t?{phase:`erased`,since:0,dryAt:null}:e?Mr(0):{phase:`settled`,since:0,dryAt:null});return(0,X.useEffect)(()=>{r(n=>{let r=performance.now();return t?Nr(n,`erase`,r):e?n.since===0?Mr(r):Nr(n,`stream`,r):n.since===0?{phase:`settled`,since:r,dryAt:null}:Nr(n,`settle`,r,{reducedMotion:Fr()})})},[e,t]),(0,X.useEffect)(()=>{if(n.dryAt===null)return;let e=Math.max(0,n.dryAt-performance.now()),t=window.setTimeout(()=>r(e=>Pr(e,performance.now())),e);return()=>window.clearTimeout(t)},[n.dryAt]),n.phase}function Lr(e){let t=Math.max(0,Math.floor(e/1e3));return`${String(Math.floor(t/60)).padStart(2,`0`)}:${String(t%60).padStart(2,`0`)}`}var Rr=e=>e===`completed`||e===`failed`||e===`paused`;function zr(e){return e===`paused`?`bg-accent-yellow`:e===`completed`?`bg-accent-green`:e===`failed`?`bg-accent-red`:`bg-accent-blue`}function Br({status:e}){return e===`paused`?(0,Z.jsx)(te,{size:10,className:`text-accent-yellow`,"aria-hidden":`true`}):e===`failed`?(0,Z.jsx)(ce,{size:10,className:`text-accent-red`,"aria-hidden":`true`}):e===`completed`?(0,Z.jsx)(ue,{size:10,className:`text-accent-green`,"aria-hidden":`true`}):(0,Z.jsx)(B,{size:10,className:`spin-slow text-accent-blue`,style:Ze,"aria-hidden":`true`})}function Vr(e){if(e===`paused`)return`已暂停`;if(e===`completed`)return`已完成`;if(e===`failed`)return`已失败`;if(e===`scheduled`)return`排队中`;if(e===`idle`)return`待启动`}var Hr=`立即返回结果`,Ur=`终止并返回结果`;function Wr({agent:e,labeled:t=!1}){let[n,r]=(0,X.useState)(!1);if(e.status!==`running`&&e.status!==`scheduled`&&e.status!==`paused`)return null;let i=async t=>{r(!0);try{let n=await et(e.sessionId,e.id,t);n.ok?(n.alreadyFinished||n.stopInProgress)&&W.info(n.message,4e3):W.error(n.message,5e3)}finally{r(!1)}};return(0,Z.jsxs)(`span`,{className:`flex shrink-0 items-center gap-0.5`,children:[(0,Z.jsxs)(`button`,{type:`button`,title:`在轮次边界停下来,把已经拿到的结果交回父代理`,"aria-label":Hr,disabled:n,onClick:e=>{e.stopPropagation(),i(`stop`)},className:`flex items-center gap-1 rounded border border-dark-border/70 text-accent-blue hover:bg-dark-hover disabled:opacity-40 ${t?`px-1.5 py-0.5 text-badge`:`p-0.5`}`,children:[(0,Z.jsx)(V,{size:11}),t&&(0,Z.jsx)(`span`,{children:`立即返回结果`})]}),(0,Z.jsxs)(`button`,{type:`button`,title:`立刻终止这个子代理,并把它已经拿到的结果交回父代理`,"aria-label":Ur,disabled:n,onClick:e=>{e.stopPropagation(),i(`kill`)},className:`flex items-center gap-1 rounded border border-dark-border/70 text-accent-red hover:bg-dark-hover disabled:opacity-40 ${t?`px-1.5 py-0.5 text-badge`:`p-0.5`}`,children:[(0,Z.jsx)(s,{size:11}),t&&(0,Z.jsx)(`span`,{children:`终止并返回结果`})]})]})}var Gr=(0,X.memo)(function({agent:e}){Ge();let t=Rr(e.status),n=Ir(e.status===`running`||e.status===`scheduled`||e.status===`idle`||e.status===`paused`,!1)===`streaming`?`draft`:e.status===`failed`?`failed`:e.status===`completed`?`committed`:`draft`,r=e.elapsedMs===void 0?void 0:!t&&e.elapsedAt?e.elapsedMs+Math.max(0,Date.now()-e.elapsedAt):e.elapsedMs,i=typeof e.round==`number`&&e.round>0&&typeof e.maxRounds==`number`&&e.maxRounds>0,a=i?Math.max(0,Math.min(100,Math.round(e.round/e.maxRounds*100))):0,o=[e.round===void 0?``:e.maxRounds?`Turn ${e.round}/${e.maxRounds}`:`Turn ${e.round}`,e.currentTool&&e.status!==`completed`?`⚙ ${e.currentTool}`:``,r===void 0?``:Lr(r)].filter(Boolean);return(0,Z.jsxs)(`div`,{className:`ui-gram ${tt[n]} ms-[15px] mb-1 me-1 rounded-md border border-dark-border/70 bg-dark-surface px-2 py-1.5`,"data-testid":`subagent-progress`,"data-agent-id":e.id,"data-agent-status":e.status,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Z.jsx)(`span`,{className:`flex shrink-0 items-center`,title:e.status,children:(0,Z.jsx)(Br,{status:e.status})}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-meta font-medium text-dark-text`,title:e.name,children:e.name}),Vr(e.status)&&(0,Z.jsx)(`span`,{className:`shrink-0 text-badge text-dark-muted`,children:Vr(e.status)}),(0,Z.jsx)(Wr,{agent:e,labeled:!0})]}),(0,Z.jsx)(`div`,{className:`mt-1 flex items-center gap-2`,children:(0,Z.jsx)(`div`,{className:`h-1 min-w-0 flex-1 overflow-hidden rounded-full bg-dark-hover`,role:`progressbar`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":i?a:void 0,"aria-label":e.name,children:i?(0,Z.jsx)(`div`,{className:`h-full rounded-full transition-[width] duration-500 ease-out ${zr(e.status)}`,style:{width:`${a}%`}}):(0,Z.jsx)(`div`,{className:`h-full w-1/4 animate-pulse rounded-full ${zr(e.status)}`})})}),o.length>0&&(0,Z.jsx)(`div`,{className:`mt-0.5`,children:(0,Z.jsx)(`span`,{className:`whitespace-nowrap font-mono text-badge tabular-nums text-dark-muted`,children:o.join(` · `)})})]})}),Kr=(0,X.memo)(function({sessionId:e,toolCallId:t,scope:n}){let r=st(t=>e?t.agentsBySession[e]:void 0),i=(0,X.useMemo)(()=>e&&r?st.getState().getAgentByToolCallId(e,t,n):void 0,[e,t,n,r]);return i?(0,Z.jsx)(Gr,{agent:i}):null}),qr=/^agent$/i;function Jr(e){let t=e;if(typeof e==`string`)try{t=JSON.parse(e)}catch{return}if(!t||typeof t!=`object`||Array.isArray(t))return;let n=t.scope;return typeof n==`string`&&n.trim()?n:void 0}function Yr(){let e=Ot(e=>e.tokenRate);return(0,Z.jsx)(Lt,{size:12,rate:e})}var Xr={terminal:S,diff:j,read:x,search:O,web:Ce,computer:i,image:re,app:pe,agent:w,generic:he},Zr=(0,X.memo)(function({toolCall:e,defaultCollapsed:t=!0,sessionId:n}){let i=e.status===`running`,a=qr.test(e.name)&&!!n,o=a?Jr(e.args):void 0,s=tr(i),c=e.result!==void 0&&e.result!==null,l=e.status===`error`,u=ot(e.name),d=c?ir(e.result):``,p=q(e.args),{openFileMenu:m,menuNode:h}=Ft(),g=Ar(e.name,e.args),_=l&&c?ar(d):``,[v,y]=(0,X.useState)(t),b=(0,X.useRef)(e.status);(0,X.useEffect)(()=>{b.current===`running`&&e.status!==`running`&&(e.diff||y(!0)),b.current=e.status},[e.status,e.diff,e.name]);let x=Je(e.duration),S=i?`bg-accent-blue`:l?`bg-accent-red`:`bg-accent-green`,C=i?`running`:l?`error`:`success`,w=Ir(i,!1)===`streaming`?`draft`:l?`failed`:`committed`,T=Xr[kr(e.name)];return(0,Z.jsxs)(`div`,{className:`tl-row ui-gram ui-gram--flat ui-gram--wash ${tt[w]} group rounded-lg transition-colors hover:bg-dark-surface/40`,"data-testid":`toolcall-row`,children:[(0,Z.jsx)(`span`,{className:`tl-line`,"aria-hidden":`true`}),(0,Z.jsxs)(`div`,{className:`relative flex items-center gap-2 px-2 py-1 cursor-pointer select-none`,onClick:()=>y(!v),"data-testid":`toolcall-row-header`,children:[(0,Z.jsx)(`span`,{className:`flex h-3 w-3 shrink-0 items-center justify-center`,children:i?(0,Z.jsx)(Yr,{}):(0,Z.jsx)(`span`,{className:`tl-node ${S}`,"data-status":C})}),(0,Z.jsx)(`span`,{className:`shrink-0 ${l?`text-accent-red`:`text-dark-muted`}`,children:(0,Z.jsx)(T,{size:12,"aria-hidden":`true`})}),(0,Z.jsx)(`span`,{className:`font-medium text-compact shrink-0 truncate ${i?`text-shimmer`:`text-dark-text`}`,children:e.name}),l&&_?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`span`,{className:`shrink-0 text-dark-muted/50`,children:`·`}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-meta text-accent-red`,title:d,children:_})]}):g?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`span`,{className:`shrink-0 text-dark-muted/50`,children:`·`}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-meta text-dark-muted`,title:g,children:g})]}):(0,Z.jsx)(`span`,{className:`min-w-0 flex-1`}),u&&p&&!l&&(0,Z.jsxs)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),Mt(p)},onContextMenu:e=>m(e,p),className:`flex max-w-[16rem] shrink-0 items-center gap-1 truncate rounded-full border border-dark-border/70 px-2 py-0.5 text-meta font-mono text-accent-blue
5
+ transition-colors hover:border-accent-blue/40 hover:bg-dark-hover`,title:p,children:[(0,Z.jsx)(f,{size:10,className:`shrink-0`}),(0,Z.jsx)(`span`,{className:`truncate`,children:p})]}),i&&!a&&(0,Z.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1 text-meta tabular-nums text-accent-blue`,children:[(0,Z.jsx)(R,{size:10}),(0,Z.jsx)(`span`,{ref:s,children:`0s`})]}),!i&&x&&!a&&(0,Z.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1 text-badge tabular-nums text-dark-muted`,children:[(0,Z.jsx)(R,{size:10}),(0,Z.jsx)(`span`,{children:x})]}),(0,Z.jsx)(`span`,{className:`ms-auto shrink-0 text-dark-muted/60 transition-transform ${v?`opacity-0 group-hover:opacity-100`:`rotate-180`}`,children:(0,Z.jsx)(r,{size:13})})]}),a&&(0,Z.jsx)(Kr,{sessionId:n,toolCallId:e.id,scope:o}),!v&&(0,Z.jsx)(`div`,{className:`relative ms-[15px] pb-1 ps-3 border-s border-dark-border/25`,children:(0,Z.jsx)(jr,{toolCall:e})}),h]})});function Qr(e){let t=e??``,n=t,r=null,i=null;try{let e=JSON.parse(t);if(e&&typeof e==`object`){if(`payload`in e){i=typeof e.toolName==`string`?e.toolName:null;let t=e.payload;typeof t==`string`?n=t:t&&typeof t==`object`?(r=t,n=JSON.stringify(t,null,2)):n=``}else Array.isArray(e)||(r=e)}}catch{n=t}if(!r&&n.length>0&&/^[\s]*[{[]/.test(n))try{let e=JSON.parse(n);e&&typeof e==`object`&&!Array.isArray(e)&&(r=e)}catch{}return{toolName:i,payloadText:n,args:r}}var $r=/\b(bash|shell|exec|cmd|powershell|terminal)\b/i,ei=/write_file|write|save|create|upload|deploy|publish/i,ti=/edit_file|edit|patch|apply|update|replace/i,ni=/read_file|read|view|cat|open|list|dir\b/i,ri=/file_delete|delete|remove|unlink|\brm\b|\bdel\b/i,ii=/\b(glob|find|locate)\b/i,ai=/\b(grep|rg|search_contents)\b/i,oi=/web_search|search_web|browse/i,si=/web_fetch|fetch|http|curl|wget|download|request|api/i,ci=/git|commit|merge|rebase|push|checkout/i,li=/install|uninstall|npm|pnpm|yarn|pip|cargo|gem|apt|brew|choco/i,ui=/send_message|send_file|message|notify|post/i;function di(e){let t=e.toLowerCase();return $r.test(t)?`verbRunCommand`:oi.test(t)?`verbSearchWeb`:ei.test(t)?`verbWriteFile`:ti.test(t)?`verbEditFile`:ri.test(t)?`verbDeleteFile`:ni.test(t)?`verbReadFile`:ai.test(t)?`verbSearchContents`:ii.test(t)?`verbFindFiles`:si.test(t)?`verbFetchUrl`:ci.test(t)?`verbGit`:li.test(t)?`verbInstall`:ui.test(t)?`verbSendMessage`:`verbRunTool`}function fi(e,t){let n=(e??``).replace(/\s+/g,` `).trim();return n.length>t?`${n.slice(0,t-1)}…`:n}function pi(e){if(!e)return null;for(let t of[`file_path`,`filePath`,`path`,`file`,`target`]){let n=e[t];if(typeof n==`string`&&n.length>0)return n}return null}function mi(e,t){let{payloadText:n,args:r}=Qr(t),i=e.toLowerCase();if($r.test(i))return``;let a=pi(r);if(a)return a;let o=n.match(/(?:file_path|path|file)["\s:=]+([^\s",}]+)/i);return o?.[1]?o[1]:si.test(i)&&typeof r?.url==`string`&&r.url?fi(r.url,48):ui.test(i)?fi(typeof r?.text==`string`?r.text:typeof r?.message==`string`?r.message:n,48):fi(n,48)}function hi(e,t){let{payloadText:n,args:r}=Qr(t),i=e.toLowerCase();if($r.test(i)){let e=typeof r?.command==`string`?r.command:n;return e?{text:e,mono:!0}:null}if(ei.test(i)||ti.test(i)){let e=typeof r?.content==`string`?r.content:typeof r?.data==`string`?r.data:``;if(e)return{text:e,mono:!0};if(r){let e=gi(r);if(e)return{text:e,mono:!0}}return n?{text:n,mono:!0}:null}if(ui.test(i)){let e=typeof r?.text==`string`?r.text:typeof r?.message==`string`?r.message:n;return e?{text:e,mono:!1}:null}if(ni.test(i))return null;if(r){let e=gi(r);if(e)return{text:e,mono:!0}}return n?{text:n,mono:!0}:null}function gi(e){return e?Object.entries(e).filter(([,e])=>e!=null).map(([e,t])=>{let n=typeof t==`string`?t:JSON.stringify(t);return n.length>96&&(n=`${n.slice(0,95)}…`),`${e}=${n.replace(/\n/g,` `)}`}).join(` `):``}function _i(e,t){let n=$t(t);return n?{path:n,external:!0}:{key:`scopeLocal`,external:!1}}function vi({pre:e,obj:t}){return(0,Z.jsxs)(`span`,{className:`min-w-0 text-sm text-dark-muted`,children:[(0,Z.jsx)(`span`,{children:e}),t&&(0,Z.jsx)(`b`,{className:`font-semibold text-dark-text`,children:t})]})}var yi=5,bi=420;function xi(e){return e.split(`
6
+ `).length>yi||e.length>bi}function Si({text:e,mono:t=!0,expanded:n,onToggle:r}){let{t:i}=H(`hook`),[a,o]=(0,X.useState)(!1),s=n??a,c=r??(()=>o(e=>!e)),l=e.split(`
7
+ `),u=xi(e),d=e;!s&&u&&(d=l.slice(0,yi).join(`
8
+ `),d.length>bi&&(d=`${d.slice(0,bi).trimEnd()}…`));let f=s?i(`showLess`):l.length>yi?i(`showAllLines`,{n:l.length}):i(`showAll`);return(0,Z.jsxs)(`div`,{className:`rounded-lg border border-dark-border bg-dark-surface p-2.5 text-xs leading-relaxed break-all whitespace-pre-wrap ${t?`font-mono`:``} text-dark-text`,children:[d,u&&(0,Z.jsx)(`button`,{type:`button`,onClick:c,className:`mt-1 block text-meta text-accent-blue hover:underline`,children:f})]})}var Ci=15,wi=(0,X.memo)(function({approval:e,onResolved:t}){let{t:n}=H(`hook`),[r,i]=(0,X.useState)(!1),[a,o]=(0,X.useState)(Ci),s=(0,X.useRef)(null),c=e.status===`pending`,{level:l,reasonKey:u}=rn(e.toolName,e.askPayload),d=Jt[l],f=hi(e.toolName,e.askPayload),p=_i(e.toolName,e.askPayload),m=$t(e.askPayload)!==null;(0,X.useEffect)(()=>{if(c)return o(Ci),s.current=setInterval(()=>{o(e=>e<=1?(s.current&&clearInterval(s.current),0):e-1)},1e3),()=>{s.current&&clearInterval(s.current)}},[c,e.approvalId]),(0,X.useEffect)(()=>{let t=(e.timeoutMs??15e3)>0;a===0&&c&&!r&&t&&h()},[a]);let h=(0,X.useCallback)(()=>{c&&!r&&(i(!0),s.current&&clearInterval(s.current),Tt.send({type:`hook_allow`,data:JSON.stringify({approvalId:e.approvalId})}),t?.(e.approvalId,`approved`))},[c,r,e.approvalId,t]),g=(0,X.useCallback)(()=>{c&&!r&&(i(!0),s.current&&clearInterval(s.current),Tt.send({type:`hook_deny`,data:JSON.stringify({approvalId:e.approvalId})}),t?.(e.approvalId,`denied`))},[c,r,e.approvalId,t]),_=(0,X.useCallback)(()=>{if(!c||r)return;i(!0),s.current&&clearInterval(s.current);let n=ln.getState(),a=$t(e.askPayload);a?(n.addToSessionAllowList(e.toolName,a),Tt.send({type:`hook_allow`,data:JSON.stringify({approvalId:e.approvalId,sessionAllow:!0})})):(n.addToSessionAllowList(e.toolName),Tt.send({type:`hook_allow`,data:JSON.stringify({approvalId:e.approvalId})})),t?.(e.approvalId,`approved`)},[c,r,e.approvalId,e.toolName,e.askPayload,t]),v=(0,X.useCallback)(()=>{c&&!r&&(i(!0),s.current&&clearInterval(s.current),ln.getState().setAutoMode(!0),Qt.getState().setAuto(!0),Tt.send({type:`hook_allow`,data:JSON.stringify({approvalId:e.approvalId})}),t?.(e.approvalId,`approved`))},[c,r,e.approvalId,t]);if(!c){let t=e.status===`approved`;return(0,Z.jsx)(`div`,{className:`flex items-center gap-2 px-3 py-2 rounded-lg text-xs ${t?`bg-accent-green/10 border border-accent-green/30 text-accent-green`:`bg-accent-red/10 border border-accent-red/30 text-accent-red`}`,children:t?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(ue,{size:14}),(0,Z.jsxs)(`span`,{children:[n(`alreadyAllowed`),e.toolName]})]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(fe,{size:14}),(0,Z.jsxs)(`span`,{children:[n(`alreadyDenied`),e.toolName]})]})})}let y=a/Ci*100,b=a<=5,x=[{id:`allow`,index:1,label:n(`optionAllow`),hint:n(`optionAllowHint`),action:h,kind:`primary`},{id:`allow_session`,index:3,label:n(`optionAllowAlways`),hint:m?n(`optionAllowPathHint`):n(`optionAllowAlwaysHint`,{tool:e.toolName}),action:_,kind:`secondary`},{id:`auto_mode`,index:4,label:n(`optionAutoMode`),hint:n(`optionAutoModeHint`),action:v,kind:`secondary`},{id:`deny`,index:2,label:n(`optionDeny`),hint:n(`optionDenyHint`),action:g,kind:`danger`}],S={primary:`bg-accent-blue text-accent-fg hover:opacity-90 shadow-sm`,secondary:`border border-dark-border bg-dark-bg text-dark-text hover:bg-dark-hover`,danger:`text-dark-muted hover:bg-accent-red/15 hover:text-accent-red`};return(0,Z.jsxs)(`div`,{className:`bg-dark-bg border rounded-xl overflow-hidden ${p.external?`border-accent-yellow`:d.border}`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 border-b ${d.bg} ${p.external?`border-accent-yellow`:d.border}`,children:[(0,Z.jsxs)(`span`,{className:"px-1.5 py-0.5 rounded text-badge font-bold border shrink-0 ${rc.badge}",children:[d.icon,` `,l]}),(0,Z.jsx)(`span`,{className:`flex-none w-6 h-6 rounded-md bg-accent-blue/10 text-accent-blue inline-flex items-center justify-center`,children:(0,Z.jsx)(we,{size:13})}),(0,Z.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,Z.jsx)(vi,{pre:n(di(e.toolName)),obj:mi(e.toolName,e.askPayload)})}),p.external&&p.path?(0,Z.jsxs)(`span`,{className:`flex items-center gap-1 text-badge px-1.5 py-0.5 rounded bg-accent-yellow/15 text-accent-yellow border border-accent-yellow shrink-0`,title:p.path,children:[(0,Z.jsx)(me,{size:10}),p.path.length>32?`${p.path.slice(0,31)}…`:p.path]}):(0,Z.jsx)(`span`,{className:`text-badge text-dark-muted/60 shrink-0`,children:n(`scopeLocal`)}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5 ms-1 shrink-0`,children:[(0,Z.jsx)(R,{size:11,className:b?`text-accent-red`:`text-dark-muted`}),(0,Z.jsxs)(`span`,{className:`text-meta font-mono ${b?`text-accent-red animate-pulse`:`text-dark-muted`}`,children:[a,`s`]}),(0,Z.jsx)(`div`,{className:`w-10 h-1 bg-dark-border rounded-full overflow-hidden`,children:(0,Z.jsx)(`div`,{className:`h-full rounded-full transition-all duration-1000 ${b?`bg-accent-red`:a<=8?`bg-accent-yellow`:`bg-accent-green`}`,style:{width:`${y}%`}})})]})]}),(0,Z.jsxs)(`div`,{className:`px-3 py-2.5 space-y-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,Z.jsx)(`span`,{className:`text-dark-muted shrink-0`,children:n(`tool`)}),(0,Z.jsx)(`code`,{className:`text-accent-blue font-mono text-xs bg-dark-surface px-1.5 py-0.5 rounded`,children:e.toolName}),(0,Z.jsx)(`span`,{className:`text-badge text-dark-muted/50`,children:n(u)})]}),f&&(0,Z.jsx)(Si,{text:f.text,mono:f.mono}),(l===`CRITICAL`||l===`HIGH`)&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5 text-meta px-2 py-1 rounded ${d.bg} ${d.text}`,children:[(0,Z.jsx)(oe,{size:12}),(0,Z.jsx)(`span`,{children:n(l===`CRITICAL`?`highRiskWarning`:`mediumRiskConfirm`)})]}),(0,Z.jsx)(`div`,{className:`flex flex-wrap items-center gap-1.5 pt-1`,children:x.map(e=>(0,Z.jsxs)(`button`,{onClick:e.action,disabled:r,className:`inline-flex items-center gap-1.5 px-2.5 py-1 rounded-md text-xs transition-colors disabled:opacity-50 ${S[e.kind]}`,children:[(0,Z.jsx)(`span`,{className:`text-avatar font-mono rounded px-0.5 ${e.kind===`primary`?`bg-white/20`:`bg-dark-surface text-dark-muted`}`,children:e.index}),(0,Z.jsx)(`span`,{children:e.label}),(0,Z.jsx)(`span`,{className:`text-badge ${e.kind===`primary`?`text-accent-fg/70`:`text-dark-muted/60`} hidden sm:inline`,children:e.hint})]},e.id))}),(0,Z.jsx)(`div`,{className:`text-badge text-dark-muted/50 pt-0.5 border-t border-dark-border/50`,children:n(`clickToSelect`)})]})]})}),Ti={xlsx:{icon:l},xls:{icon:l},csv:{icon:x},docx:{icon:x},text:{icon:I}};function Ei(e){return!e&&e!==0?`—`:e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(2)} MB`}var Di=(0,X.memo)(function({job:e}){let{t}=H(),{stage:n}=e,{openFileMenu:r,menuNode:i}=Ft(),a=(0,X.useCallback)(e=>{switch(e){case`xlsx`:case`xls`:return`Excel`;case`csv`:return`CSV`;case`docx`:return`Word`;default:return t(`fileJob.kindText`)}},[t]),o=(0,X.useCallback)(e=>{J.files.download(e).then(e=>{e.success||W.error(e.error||t(`fileJob.downloadFailed`))})},[t]),s=(0,X.useMemo)(()=>e.attachments||[],[e.attachments]),c=(0,X.useMemo)(()=>e.parsedFiles||[],[e.parsedFiles]),l=(0,X.useMemo)(()=>e.mapping||[],[e.mapping]),u=(0,X.useMemo)(()=>e.result||[],[e.result]),d=e.renderProgress??(n===`rendering`?0:100),p=e.parseProgress??(n===`parsing`?0:100);return(0,Z.jsxs)(`div`,{className:`mt-2 rounded-xl border border-dark-border bg-dark-surface/60 overflow-hidden max-w-2xl`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 px-3.5 py-2.5 border-b border-dark-border/60 bg-dark-surface`,children:[n===`complete`?(0,Z.jsx)(ee,{size:15,className:`text-accent-green shrink-0`}):n===`error`?(0,Z.jsx)(oe,{size:15,className:`text-accent-red shrink-0`}):(0,Z.jsx)(B,{size:15,className:`text-accent-blue animate-spin shrink-0`}),(0,Z.jsx)(`span`,{className:`text-compact font-medium text-dark-text`,children:Oi(n,t)}),(0,Z.jsx)(`div`,{className:`flex-1`}),(0,Z.jsx)(`span`,{className:`text-badge font-mono text-dark-muted/60`,children:e.jobId})]}),(0,Z.jsxs)(`div`,{className:`px-3.5 py-3 space-y-3`,children:[s.length>0&&(0,Z.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:s.map((e,n)=>{let r=(Ti[e.kind]||Ti.text).icon;return(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-dark-border bg-dark-bg px-2.5 py-1.5`,children:[(0,Z.jsx)(r,{size:14,className:`text-accent-blue shrink-0`}),(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[(0,Z.jsx)(`div`,{className:`text-xs text-dark-text truncate max-w-[160px]`,children:e.fileName}),(0,Z.jsxs)(`div`,{className:`text-badge text-dark-muted`,children:[Ei(e.size),` · `,a(e.kind),e.role&&e.role!==`unknown`&&(0,Z.jsxs)(`span`,{className:Y(`ms-1`,e.role===`data`?`text-accent-green`:`text-accent-purple`),children:[`· `,e.role===`data`?t(`fileJob.roleData`):t(`fileJob.roleTemplate`)]})]})]})]},`${e.fileName}-${n}`)})}),n===`parsing`&&(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsx)(`div`,{className:`text-xs text-dark-muted`,children:t(`fileJob.parsing`,{file:s[0]?.fileName||c[0]?.fileName||``})}),(0,Z.jsx)(Rt,{value:p,size:`sm`,showLabel:!0})]}),c.length>0&&n!==`error`&&(0,Z.jsxs)(`div`,{className:`space-y-1.5`,children:[c.map(e=>(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-dark-muted`,children:[(0,Z.jsx)(ee,{size:13,className:`text-accent-green shrink-0`}),(0,Z.jsx)(`span`,{className:`truncate`,children:e.fileName}),(0,Z.jsx)(`span`,{className:`text-badge text-dark-muted/70`,children:t(`fileJob.parsedSummary`,{rows:e.rowCount,fields:e.fields.length})})]},e.fileName)),c[0]&&(0,Z.jsxs)(`div`,{className:`flex flex-wrap gap-1 pt-1`,children:[c[0].fields.slice(0,12).map(e=>(0,Z.jsx)(`span`,{className:`rounded bg-dark-bg border border-dark-border/60 px-1.5 py-0.5 text-badge font-mono text-dark-muted`,children:e},e)),c[0].fields.length>12&&(0,Z.jsxs)(`span`,{className:`text-badge text-dark-muted/60`,children:[`+`,c[0].fields.length-12]})]})]}),l.length>0&&(0,Z.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Z.jsx)(`div`,{className:`text-meta text-dark-muted`,children:t(`fileJob.mappingTitle`)}),(0,Z.jsx)(`div`,{className:`overflow-hidden rounded-lg border border-dark-border`,children:(0,Z.jsxs)(`table`,{className:`w-full text-xs`,children:[(0,Z.jsx)(`thead`,{children:(0,Z.jsxs)(`tr`,{className:`bg-dark-bg text-dark-muted`,children:[(0,Z.jsx)(`th`,{className:`text-start px-2.5 py-1.5 font-medium`,children:t(`fileJob.templatePlaceholder`)}),(0,Z.jsx)(`th`,{className:`px-2 py-1.5`}),(0,Z.jsx)(`th`,{className:`text-start px-2.5 py-1.5 font-medium`,children:t(`fileJob.dataField`)})]})}),(0,Z.jsx)(`tbody`,{children:l.slice(0,8).map(e=>(0,Z.jsxs)(`tr`,{className:`border-t border-dark-border/50`,children:[(0,Z.jsx)(`td`,{className:`px-2.5 py-1.5 font-mono text-accent-purple`,children:`{{`+e.placeholder+`}}`}),(0,Z.jsx)(`td`,{className:`px-2 py-1.5 text-dark-muted`,children:(0,Z.jsx)(A,{size:11})}),(0,Z.jsx)(`td`,{className:`px-2.5 py-1.5 font-mono text-accent-blue`,children:e.field})]},e.placeholder))})]})}),l.length>8&&(0,Z.jsx)(`div`,{className:`text-badge text-dark-muted/60`,children:t(`fileJob.mappingMore`,{n:l.length-8})})]}),n===`rendering`&&(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsx)(`div`,{className:`text-xs text-dark-muted`,children:t(`fileJob.rendering`,{current:e.currentRow||0,total:e.totalRows||0})}),(0,Z.jsx)(Rt,{value:d,size:`sm`,variant:`warning`,showLabel:!0})]}),u.length>0&&n===`complete`&&(0,Z.jsx)(`div`,{className:`space-y-1.5`,children:u.map(e=>{let n=(Ti[e.format]||Ti.text).icon,i=e.failedRows.length>0;return(0,Z.jsxs)(`div`,{onContextMenu:t=>r(t,e.path),className:`rounded-lg border border-dark-border bg-dark-bg px-3 py-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(n,{size:15,className:`text-accent-green shrink-0`}),(0,Z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Z.jsx)(`div`,{className:`text-xs text-dark-text truncate`,children:e.fileName}),(0,Z.jsxs)(`div`,{className:`text-badge text-dark-muted`,children:[Ei(e.size),` · `,t(`fileJob.rowsDone`,{done:e.successCount,total:e.rowCount}),i&&(0,Z.jsxs)(`span`,{className:`text-accent-red`,children:[` · `,t(`fileJob.rowsFailed`,{n:e.failedRows.length})]})]})]}),(0,Z.jsxs)(`button`,{onClick:()=>Mt(e.path),className:`flex items-center gap-1 rounded-md bg-dark-surface border border-dark-border text-dark-muted px-2 py-1 text-meta hover:bg-dark-hover hover:text-dark-text transition-colors`,title:t(`chat.previewInPanel`),children:[(0,Z.jsx)(f,{size:12}),t(`chat.previewInPanel`)]}),(0,Z.jsxs)(`button`,{onClick:()=>o(e.path),className:`flex items-center gap-1 rounded-md bg-accent-blue/10 text-accent-blue px-2 py-1 text-meta hover:bg-accent-blue/20 transition-colors`,title:t(`fileJob.download`),children:[(0,Z.jsx)(T,{size:12}),t(`fileJob.download`)]})]}),i&&(0,Z.jsxs)(`div`,{className:`mt-1.5 space-y-0.5 border-t border-dark-border/50 pt-1.5`,children:[e.failedRows.slice(0,3).map(e=>(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5 text-badge text-accent-red`,children:[(0,Z.jsx)(ce,{size:10,className:`shrink-0`}),(0,Z.jsxs)(`span`,{children:[`#`,e.index+1]}),(0,Z.jsx)(`span`,{className:`truncate`,children:e.error})]},e.index)),e.failedRows.length>3&&(0,Z.jsx)(`div`,{className:`text-badge text-dark-muted/70`,children:t(`fileJob.moreRows`,{n:e.failedRows.length-3})})]})]},e.path)})}),n===`error`&&(0,Z.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-accent-red/30 bg-accent-red/5 px-3 py-2.5`,children:[(0,Z.jsx)(oe,{size:15,className:`text-accent-red shrink-0 mt-0.5`}),(0,Z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Z.jsx)(`div`,{className:`text-xs font-medium text-accent-red`,children:e.error||t(`fileJob.error`)}),e.errorDetail&&(0,Z.jsx)(`div`,{className:`mt-0.5 text-meta text-dark-muted break-words`,children:e.errorDetail})]})]})]}),i]})});function Oi(e,t){switch(e){case`uploaded`:return t(`fileJob.stageUploaded`);case`parsing`:return t(`fileJob.stageParsing`);case`mapping`:return t(`fileJob.stageMapping`);case`rendering`:return t(`fileJob.stageRendering`);case`complete`:return t(`fileJob.stageComplete`);case`error`:return t(`fileJob.stageError`);default:return t(`fileJob.stageUploaded`)}}var ki={auth:{icon:_e,color:`text-accent-red`},rate_limit:{icon:be,color:`text-accent-yellow`},quota:{icon:ne,color:`text-accent-red`},busy:{icon:be,color:`text-accent-yellow`},timeout:{icon:be,color:`text-accent-yellow`},network:{icon:M,color:`text-accent-yellow`},model:{icon:w,color:`text-accent-red`},tool:{icon:oe,color:`text-accent-yellow`},unknown:{icon:oe,color:`text-accent-red`}},Ai=(0,X.memo)(function({error:e,onRetry:t}){let{t:n}=H(),[i,a]=(0,X.useState)(!1),o=ki[e.category]||ki.unknown,s=o.icon;return(0,Z.jsxs)(`div`,{className:`mt-2 max-w-2xl overflow-hidden rounded-xl border border-accent-red/30 bg-dark-surface`,children:[(0,Z.jsxs)(`div`,{className:`flex items-start gap-3 px-3.5 py-3`,children:[(0,Z.jsx)(s,{size:18,className:Y(`shrink-0 mt-0.5`,o.color)}),(0,Z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Z.jsx)(`div`,{className:`text-compact font-medium text-dark-text`,children:e.summary}),e.detail&&e.detail!==e.summary&&(0,Z.jsx)(`div`,{className:`mt-0.5 text-meta text-dark-muted/80 break-words`,children:e.detail.slice(0,160)}),(0,Z.jsxs)(`div`,{className:`mt-1.5 flex items-center gap-2`,children:[e.retryable&&t&&(0,Z.jsxs)(`button`,{onClick:t,className:`flex items-center gap-1 rounded-md bg-accent-blue/10 text-accent-blue px-2 py-1 text-meta hover:bg-accent-blue/20 transition-colors`,children:[(0,Z.jsx)(F,{size:11}),n(`errorCard.retry`)]}),e.category===`auth`&&(0,Z.jsxs)(`button`,{onClick:()=>{window.dispatchEvent(new CustomEvent(`switch-tab`,{detail:`models`}))},className:`flex items-center gap-1 rounded-md bg-dark-hover text-dark-text px-2 py-1 text-meta hover:bg-dark-border transition-colors`,children:[(0,Z.jsx)(d,{size:11}),n(`errorCard.modelSettings`)]}),e.detail&&(0,Z.jsxs)(`button`,{onClick:()=>a(e=>!e),className:`flex items-center gap-0.5 text-meta text-dark-muted hover:text-dark-text transition-colors`,children:[(0,Z.jsx)(r,{size:11,className:Y(`transition-transform`,i&&`rotate-180`)}),n(`errorCard.details`)]})]})]})]}),i&&e.detail&&(0,Z.jsx)(`div`,{className:`border-t border-dark-border/60 bg-dark-bg px-3.5 py-2.5 text-meta font-mono text-dark-muted break-words max-h-40 overflow-y-auto custom-scrollbar`,children:e.detail})]})});function ji({info:e}){let{t}=H(),n=e.stdout.length>0,r=e.stderr.length>0,i=n||r,a=!e.running&&(!!e.error||e.timedOut===!0||e.exitCode!==null&&e.exitCode!==0);return(0,Z.jsxs)(`div`,{className:`min-w-0 text-dark-text`,children:[(0,Z.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,Z.jsx)(`span`,{className:`select-none pt-[1px] font-mono text-compact leading-relaxed text-accent-green`,children:`$`}),(0,Z.jsx)(`code`,{className:`min-w-0 flex-1 break-all whitespace-pre-wrap font-mono text-compact leading-relaxed`,children:e.command})]}),e.running?(0,Z.jsxs)(`div`,{className:`mt-2 flex items-center gap-1.5 text-xs text-dark-muted`,children:[(0,Z.jsx)(B,{size:12,className:`animate-spin`,"aria-hidden":`true`}),t(`chat.shellRunning`)]}):(0,Z.jsxs)(Z.Fragment,{children:[i&&(0,Z.jsxs)(`pre`,{className:`mt-2 max-h-[420px] overflow-auto rounded-lg border border-dark-border/40 bg-dark-bg/70 px-3 py-2 font-mono text-compact leading-relaxed whitespace-pre-wrap break-all custom-scrollbar`,children:[n&&(0,Z.jsx)(`span`,{children:e.stdout}),r&&(0,Z.jsxs)(`span`,{className:`text-accent-red`,children:[n?e.stdout.endsWith(`
9
+ `)?``:`
10
+ `:``,e.stderr]})]}),(0,Z.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap items-center gap-x-2.5 gap-y-1 text-meta`,children:[e.error?(0,Z.jsxs)(`span`,{className:`flex items-center gap-1 text-accent-red`,children:[(0,Z.jsx)(oe,{size:11,"aria-hidden":`true`}),t(`chat.shellRequestFailed`,{message:e.error})]}):(0,Z.jsx)(`span`,{className:a?`text-accent-red`:`text-accent-green`,children:e.exitCode===null?t(`chat.shellNoExitCode`):t(`chat.shellExitCode`,{code:e.exitCode})}),e.durationMs>0&&(0,Z.jsx)(`span`,{className:`tabular-nums text-dark-muted/70`,children:Je(e.durationMs)}),e.timedOut&&(0,Z.jsx)(`span`,{className:`text-accent-red`,children:t(`chat.shellTimedOut`)}),e.truncated&&(0,Z.jsx)(`span`,{className:`text-dark-muted/70`,children:t(`chat.shellTruncated`)}),e.shellKind&&(0,Z.jsx)(`span`,{className:`text-dark-muted/60`,children:e.shellKind})]}),!i&&!e.error&&(0,Z.jsx)(`div`,{className:`mt-1.5 text-meta text-dark-muted/70`,children:t(`chat.shellNoOutput`)})]}),!e.running&&e.cwd&&(0,Z.jsx)(`div`,{className:`mt-1 truncate font-mono text-meta text-dark-muted/50`,title:e.cwd,children:e.cwd})]})}var Mi=Te(),Ni=360,Pi=300,Fi=180,Ii=8;function Li({src:e,alt:t,children:n,className:r}){let i=(0,X.useRef)(null),a=(0,X.useRef)(null),[o,s]=(0,X.useState)(null),c=(0,X.useCallback)(()=>{a.current!==null&&(window.clearTimeout(a.current),a.current=null)},[]),l=(0,X.useCallback)(()=>{c(),a.current=window.setTimeout(()=>{a.current=null;let e=i.current?.getBoundingClientRect();e&&e.width>0&&s(e)},Fi)},[c]),u=(0,X.useCallback)(()=>{c(),s(null)},[c]);(0,X.useEffect)(()=>()=>c(),[c]),(0,X.useEffect)(()=>{if(!o)return;let e=()=>s(null),t=t=>{Pt(t,i.current,o)||e()};return window.addEventListener(`scroll`,t,!0),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`scroll`,t,!0),window.removeEventListener(`resize`,e)}},[o]);let d=null;if(o){let e=window.innerWidth,t=window.innerHeight,n=o.top>=316,r=n?o.top-Ii:o.bottom+Ii,i=o.left+o.width/2-Ni/2;d={left:Math.max(Ii,Math.min(i,Math.max(Ii,e-Ni-Ii))),top:n?r:Math.min(r,Math.max(Ii,t-Pi-Ii)),transform:n?`translateY(-100%)`:void 0}}return(0,Z.jsxs)(`span`,{ref:i,className:Y(`inline-flex min-w-0`,r),onMouseEnter:l,onMouseLeave:u,onFocus:l,onBlur:u,children:[n,o&&d&&(0,Mi.createPortal)((0,Z.jsx)(`div`,{role:`tooltip`,"data-testid":`image-hover-preview`,className:`pointer-events-none fixed z-[70] overflow-hidden rounded-lg border border-dark-border bg-dark-surface p-1 shadow-pop`,style:d,children:(0,Z.jsx)(`img`,{src:e,alt:t,draggable:!1,className:`block rounded object-contain`,style:{maxWidth:352,maxHeight:Pi}})}),document.body)]})}function Ri({src:e,alt:t,className:n}){let[r,i]=(0,X.useState)(!1);return(0,X.useEffect)(()=>{i(!1)},[e]),r?(0,Z.jsx)(`span`,{"data-testid":`image-thumb-unavailable`,role:`img`,"aria-label":t,title:t,className:Y(`flex h-10 w-10 shrink-0 items-center justify-center rounded-md bg-dark-hover text-dark-muted`,n),children:(0,Z.jsx)(a,{size:14,"aria-hidden":`true`})}):(0,Z.jsx)(`img`,{src:e,alt:t,draggable:!1,loading:`lazy`,onError:()=>i(!0),className:Y(`block h-10 w-10 shrink-0 rounded-md object-cover`,n)})}function zi({src:e,name:t,path:n,size:r=13,className:i,hoverPreview:o=!0,thumb:s=!1}){let{t:c}=H(),l=(0,X.useCallback)(()=>{He({src:e,name:t,path:n})},[e,t,n]);if(!e)return(0,Z.jsx)(a,{size:r,className:`shrink-0 text-dark-muted`,"aria-hidden":`true`});let u=(0,Z.jsx)(`button`,{type:`button`,onClick:l,title:`${t} · ${c(`fileJob.openInPanel`)}`,"aria-label":`${t} — ${c(`fileJob.openInPanel`)}`,className:Y(s?`cursor-zoom-in overflow-hidden rounded-md ring-1 ring-dark-border/60 transition-transform hover:scale-[1.03] focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-blue/60`:`cursor-zoom-in rounded p-0.5 text-dark-muted transition-colors hover:bg-accent-blue/10 hover:text-accent-blue focus:outline-none focus-visible:ring-1 focus-visible:ring-accent-blue/60`,i),children:s?(0,Z.jsx)(Ri,{src:e,alt:t,className:`rounded-none`}):(0,Z.jsx)(a,{size:r,"aria-hidden":`true`})});return o?(0,Z.jsx)(Li,{src:e,alt:t,className:`shrink-0`,children:u}):u}function Bi({src:e,name:t,path:n,className:r}){let{t:i}=H(),a=(0,X.useCallback)(()=>{He({src:e,name:t,path:n})},[e,t,n]);return(0,Z.jsx)(Li,{src:e,alt:t,className:r,children:(0,Z.jsxs)(`button`,{type:`button`,onClick:a,title:`${t} · ${i(`fileJob.openInPanel`)}`,className:`inline-flex max-w-full cursor-zoom-in items-center gap-2 rounded-lg border border-dark-border/60 bg-dark-bg/60 p-1 pe-2 text-xs transition-colors hover:border-accent-blue/40 hover:bg-dark-hover`,children:[(0,Z.jsx)(Ri,{src:e,alt:t}),(0,Z.jsx)(`span`,{className:`truncate font-mono text-dark-text`,children:t})]})})}var Vi=/<attachment\s+path="([^"]*)"\s*\/>/g,Hi=/<image\s+name="([^"]*)"\s*\/>/g,Ui=/\[Pasted text #(\d+)(?:\s*\+\d+ lines?)?\]/g,Wi=/(?<![\w@.])@((?:[\w@.()[\]{}$%-]+[\\/])+[\w@.()[\]{}$%-]+|[\w@.()[\]{}$%-]*[\w@()[\]{}$%-]\.[A-Za-z0-9]{1,12})/g;function Gi(e){return!e||e.length>400?!1:e.includes(`/`)||e.includes(`\\`)?nt(e):/\.[A-Za-z0-9]{1,12}$/.test(e)}function Ki(e){if(!e)return[];let t=[],n=e=>{e&&t.push({kind:`text`,value:e})};return e.split(Wi).forEach((e,r)=>{r%2==1?Gi(e)?t.push({kind:`mention`,value:e}):n(`@${e??``}`):e.split(K).forEach((e,r)=>{if(r%2==1){let{path:r,tail:i}=$e(e);if(r&&nt(r)){t.push({kind:`path`,value:r}),n(i);return}}n(e)})}),t}function qi(e,t){let n=[],r=0;for(let i of e.matchAll(Ui)){let a=i.index??0,o=Number.parseInt(i[1]??``,10);a>r&&n.push(...Ki(e.slice(r,a)));let s=t.get(o);s===void 0?n.push({kind:`text`,value:i[0]}):n.push({kind:`paste`,value:i[0],id:o,content:s}),r=a+i[0].length}return r<e.length&&n.push(...Ki(e.slice(r))),n}function Ji(e,t){let n=[],r=[],i=(e||``).replace(Vi,(e,t)=>(t&&n.push(t),``)).replace(Hi,(e,t)=>(t&&r.push(t),``));(n.length>0||r.length>0)&&(i=i.replace(/^(?:[ \t]*\n)+/,``)),i=i.replace(/\n{3,}/g,`
11
+
12
+ `);let a=new Map((t??[]).map(e=>[e.id,e.content]));return{attachments:n,imageNames:r,segments:a.size>0?qi(i,a):Ki(i)}}function Yi({path:e}){let{openFileMenu:t,menuNode:n}=Ft(),r=e.split(/[\\/]/).pop()||e;return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`button`,{type:`button`,title:e,onClick:()=>Mt(e),onContextMenu:n=>t(n,e),className:`me-1 inline-flex max-w-full items-center gap-1.5 rounded-lg border border-dark-border bg-dark-bg/60 px-2 py-1 align-middle text-xs transition-colors hover:border-accent-blue/40 hover:bg-dark-hover`,children:[(0,Z.jsx)(Se,{size:11,className:`shrink-0 text-dark-muted`}),(0,Z.jsx)(`span`,{className:`truncate font-mono text-dark-text`,children:r}),(0,Z.jsx)(`span`,{className:`shrink-0 text-badge font-medium text-accent-blue`,children:`<attachment>`})]}),n]})}function Xi({token:e,content:t}){let{t:n}=H(),[i,a]=(0,X.useState)(!1),[o,s]=(0,X.useState)(!1);return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>a(e=>!e),title:n(i?`chat.pasteCollapse`:`chat.pasteExpand`),"aria-expanded":i,className:`me-1 inline-flex max-w-full items-center gap-1.5 rounded-lg border border-dark-border bg-dark-bg/60 px-2 py-1 align-middle text-xs transition-colors hover:border-accent-blue/40 hover:bg-dark-hover`,children:[(0,Z.jsx)(Se,{size:11,className:`shrink-0 text-dark-muted`}),(0,Z.jsx)(`span`,{className:`truncate font-mono text-dark-text`,children:e}),i?(0,Z.jsx)(c,{size:11,className:`shrink-0 text-dark-muted`}):(0,Z.jsx)(r,{size:11,className:`shrink-0 text-dark-muted`})]}),i&&(0,Z.jsxs)(`div`,{className:`my-1.5 rounded-lg border border-dark-border bg-dark-bg/70 p-2`,children:[(0,Z.jsxs)(`div`,{className:`mb-1.5 flex items-center justify-between gap-2`,children:[(0,Z.jsx)(`span`,{className:`text-badge font-medium text-dark-muted`,children:n(`chat.pasteOriginal`)}),(0,Z.jsxs)(`button`,{type:`button`,onClick:async()=>{try{await navigator.clipboard.writeText(t),s(!0),setTimeout(()=>s(!1),2e3)}catch{}},className:`inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-badge text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,children:[o?(0,Z.jsx)(ue,{size:10}):(0,Z.jsx)(le,{size:10}),n(o?`common.copied`:`common.copy`)]})]}),(0,Z.jsx)(`pre`,{className:`max-h-56 overflow-auto whitespace-pre-wrap break-words font-mono text-meta leading-relaxed text-dark-text`,children:t})]})]})}function Zi({content:e,images:t,pastes:n}){let{t:r}=H(),{openFileMenu:i,menuNode:a}=Ft(),o=(0,X.useMemo)(()=>Ji(e,n),[e,n]),s=(0,X.useMemo)(()=>(t??[]).map((e,t)=>{let n=o.imageNames[t],i=e.startsWith(`data:`)||e.startsWith(`blob:`),a=i?r(`fileJob.imageN`,{n:t+1}):(e.split(/[?#]/)[0]??``).split(/[\\/]/).pop()||r(`fileJob.imageN`,{n:t+1});return{key:`${t}-${e.slice(0,48)}`,src:Dt(e),name:n||a,path:i?void 0:e}}),[t,o.imageNames,r]);return(0,Z.jsxs)(Bt,{contentKey:`${e}|i${t?.length??0}|p${n?.length??0}`,className:`whitespace-pre-wrap break-words text-[14.5px] leading-relaxed`,children:[o.attachments.map((e,t)=>(0,Z.jsx)(Yi,{path:e},`${e}-${t}`)),s.map(e=>(0,Z.jsx)(Bi,{src:e.src,name:e.name,path:e.path,className:`me-1 align-middle`},e.key)),o.segments.map((e,t)=>e.kind===`text`?(0,Z.jsx)(`span`,{children:e.value},t):e.kind===`paste`?(0,Z.jsx)(Xi,{token:e.value,content:e.content},t):e.kind===`mention`?(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>Mt(e.value),onContextMenu:t=>i(t,e.value),title:e.value,className:`inline-flex items-baseline rounded px-0.5 font-mono text-[0.9em] text-accent-blue underline decoration-accent-blue/40 underline-offset-2 hover:bg-accent-blue/10 transition-colors cursor-pointer`,children:[(0,Z.jsx)(`span`,{className:`text-dark-muted`,children:`@`}),(0,Z.jsx)(`span`,{className:`break-all`,children:e.value})]},t):(0,Z.jsx)(Ye,{path:e.value},t)),a]})}var Qi=12;function $i(e){let t=e.slice(0,Qi).join(`
13
+ `),n=e.length-Qi;return n>0?`${t}\n… (${n})`:t}function ea({paths:e,testId:t,onOpenAll:n,openAllLabel:r}){return(0,Z.jsxs)(`div`,{className:`mt-1.5 overflow-hidden rounded-lg border border-dark-border/70 bg-dark-bg/50`,children:[(0,Z.jsx)(`ul`,{className:`max-h-44 overflow-y-auto py-0.5`,"data-testid":t,children:e.map(e=>(0,Z.jsx)(`li`,{children:(0,Z.jsxs)(`button`,{type:`button`,title:e,onClick:()=>Mt(e),"data-testid":`turn-result-file`,className:`group flex w-full cursor-pointer items-center gap-1.5 px-2 py-1 text-start transition-colors hover:bg-dark-hover`,children:[(0,Z.jsx)(x,{size:11,className:`shrink-0 text-accent-blue/60`}),(0,Z.jsx)(`span`,{"data-testid":`turn-result-file-path`,className:`min-w-0 flex-1 truncate font-mono text-accent-blue underline decoration-accent-blue/30 underline-offset-2 group-hover:decoration-accent-blue`,children:e}),(0,Z.jsx)(E,{size:11,"aria-hidden":!0,className:`shrink-0 text-dark-muted/30 transition-colors group-hover:text-accent-blue`})]})},e))}),n&&(0,Z.jsxs)(`button`,{type:`button`,onClick:n,"data-testid":`${t}-open-all`,className:`flex w-full items-center justify-between gap-1 border-t border-dark-border/60 px-2 py-1 text-dark-muted transition-colors hover:text-dark-text`,children:[(0,Z.jsx)(`span`,{children:r}),(0,Z.jsx)(b,{size:11,className:`shrink-0 opacity-70`})]})]})}var ta=(0,X.memo)(function({created:e,modified:t,onOpenArtifacts:n,onOpenChanges:r}){let{t:i}=H(),[a,o]=(0,X.useState)(null);if(e.length===0&&t.length===0)return null;let s=e=>o(t=>t===e?null:e),c=`inline-flex items-center gap-0.5 text-dark-muted hover:text-dark-text transition-colors focus:outline-none focus-visible:ring-1 focus-visible:ring-accent-blue/50 rounded`,l=`shrink-0 opacity-70 transition-transform`;return(0,Z.jsxs)(`div`,{className:`mt-2 text-xs`,"data-testid":`turn-result-footer`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-0.5`,children:[e.length>0&&(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>s(`created`),"aria-expanded":a===`created`,className:c,"data-testid":`turn-result-artifacts`,title:$i(e),children:[i(`chat.viewAllArtifacts`,{n:e.length}),(0,Z.jsx)(b,{size:11,className:Y(l,a===`created`&&`rotate-90`)})]}),t.length>0&&(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>s(`modified`),"aria-expanded":a===`modified`,className:c,"data-testid":`turn-result-changes`,title:$i(t),children:[i(`chat.viewAllChanges`,{n:t.length}),(0,Z.jsx)(b,{size:11,className:Y(l,a===`modified`&&`rotate-90`)})]})]}),a===`created`&&(0,Z.jsx)(ea,{paths:e,testId:`turn-result-artifacts-list`,onOpenAll:n,openAllLabel:i(`chat.openInSidebar`)}),a===`modified`&&(0,Z.jsx)(ea,{paths:t,testId:`turn-result-changes-list`,onOpenAll:r,openAllLabel:i(`chat.openInSidebar`)})]})});function na(e){for(let t of e.split(`
14
+ `)){let e=t.trim();if(e)return e}return``}function ra(e){let t=e.split(`
15
+ `);for(let e=t.length-1;e>=0;e--){let n=t[e]?.trim();if(n)return n}return``}function ia({index:e,text:t,isStreaming:n,collapsed:r,onToggle:i}){let{t:a}=H(),o=r?n?ra(t):na(t):``,s=Ir(n,!1)===`streaming`?`draft`:`committed`;return(0,Z.jsxs)(`div`,{children:[(0,Z.jsxs)(`button`,{className:`ui-gram ui-gram--flat ui-gram--wash ${tt[s]} flex w-full cursor-pointer select-none items-center gap-1.5 py-0.5 text-start text-xs`,onClick:()=>i(e),"data-testid":`thinking-toggle`,children:[(0,Z.jsx)(b,{size:12,className:`shrink-0 text-dark-muted transition-transform ${r?``:`rotate-90`}`}),(0,Z.jsx)(`span`,{className:`shrink-0 ${n?`text-shimmer`:`text-dark-muted`}`,children:n?`${a(`chat.thinking`)}…`:a(`chat.thoughtProcess`)}),o&&(0,Z.jsx)(`span`,{"data-testid":`thinking-summary`,className:`min-w-0 flex-1 truncate text-dark-muted/60`,title:o,children:o})]}),!r&&(0,Z.jsx)(`div`,{"data-testid":`thinking-body`,className:`mt-1 whitespace-pre-wrap break-words border-s border-dark-border/25 ps-3 text-xs text-dark-muted`,children:t.replace(/\n{3,}/g,`
16
+
17
+ `)})]})}var aa=5,oa=30,sa=`让我.我先.我现在.我发现.我注意到.我决定.我重新.我重试.我继续.我现在要.让我现在.let me.let's.i should.i need.i will.i'll.i am.i notice.i see.i try.i retry.i think.i continue.i re-.now i.first i.first, i`.split(`.`);function ca(e){let t=e.charCodeAt(0);return t>=19968&&t<=40959}function la(e){let t=``,n=!1;for(let r of e)r===` `||r===` `||r===`\xA0`?(n||(t+=` `),n=!0):(t+=r,n=!1);return t}function ua(e){return e>=97&&e<=122||e>=48&&e<=57||e===95}function da(e){let t=la(e.trimStart().toLowerCase());return sa.some(e=>{if(!t.startsWith(e))return!1;let n=t[e.length];return n===void 0||ca(e)||e===`i re-`?!0:!ua(n.charCodeAt(0))})}function fa(e){if(!e)return!1;let t=e.split(/\r?\n/).slice(0,oa),n=0;for(let e of t)if(e.trim()){if(da(e)){if(n++,n>=aa)return!0}else return!1}return!1}function pa(e,t){if(!e||!t)return{body:e||``,absorbed:``};if(!fa(e))return{body:e,absorbed:``};let n=e.split(/\r?\n/),r=0,i=0;for(let e of n)if(!e.trim())i++;else if(da(e))r++,i++;else break;if(r<aa)return{body:e,absorbed:``};let a=0;for(let t of n.slice(0,i)){if(a+=t.length,a>=e.length)break;e.startsWith(`\r
18
+ `,a)?a+=2:(e[a]===`
19
+ `||e[a]===`\r`)&&(a+=1)}return{body:e.slice(a),absorbed:e.slice(0,a)}}var ma={thinking:0,tool:1,text:2};function ha(e){return e.thinkingBlocks&&e.thinkingBlocks.length>0?e.thinkingBlocks:e.thinking?[{index:-(2**53-1),text:e.thinking}]:[]}function ga(e){return e.textBlocks&&e.textBlocks.length>0?e.textBlocks:e.content?[{index:2**53-1,text:e.content}]:[]}function _a(e,t,n){let r=[];for(let t of e)r.push({kind:`thinking`,key:`thinking-${t.index}`,index:t.index,block:t});for(let e of t)r.push({kind:`text`,key:`text-${e.index}`,index:e.index,block:e});for(let e of n??[])r.push({kind:`tool`,key:`tool-${e.id}`,index:e.index??2**53-1,toolCall:e});return r.sort((e,t)=>e.index-t.index||ma[e.kind]-ma[t.kind]),r}function va(e){let t=-(2**53-1);for(let n of e)t=Math.max(t,n.index);return t}function ya(e,t){return e.some(e=>e.index>t)}function ba(e){return!!(e.status===`running`||e.diff)}function xa({onClick:e,title:t,children:n,danger:r=!1}){return(0,Z.jsx)(`button`,{onClick:e,title:t,"aria-label":t,className:`inline-flex items-center justify-center rounded-md p-1.5 transition-colors ${r?`text-dark-muted hover:bg-accent-red/10 hover:text-accent-red`:`text-dark-muted hover:bg-dark-hover hover:text-dark-text`}`,children:n})}function Sa({message:e,sessionId:t,onRegenerate:n,onDeleteMessage:r,onUndoLastUser:i}){let{t:a,i18n:o}=H(),[c,l]=(0,X.useState)(!1),u=(0,X.useRef)(null);(0,X.useEffect)(()=>()=>{u.current&&clearTimeout(u.current)},[]);let d=(0,X.useCallback)(async()=>{let t=e.content||e.thinking||``;try{if(e.type===`user`&&e.images?.length)await lt({text:ut(t),images:e.images});else if(!await pt(t))throw Error(`clipboard write failed`);l(!0),u.current&&clearTimeout(u.current),u.current=setTimeout(()=>l(!1),2e3)}catch(e){console.error(`Failed to copy message:`,e)}},[e.content,e.thinking,e.type,e.images]),f=er(),p=(0,X.useCallback)(()=>{f===`idle`?$n(e.content||``,xt(o.language)).then(e=>{e&&W.error(a(`tts.speakFailed`))}):Zn()},[f,e.content,a,o.language]);return t?(0,Z.jsxs)(`div`,{className:`absolute bottom-2 end-3 z-10 flex items-center gap-0.5 rounded-lg border border-dark-border/60 bg-dark-bg/85 px-1 py-0.5 opacity-0 shadow-md backdrop-blur-sm transition-opacity duration-150 group-hover:opacity-100 group-focus-within:opacity-100`,children:[(0,Z.jsx)(xa,{onClick:d,title:a(`chat.copyMessage`),children:c?(0,Z.jsx)(ue,{size:13,className:`text-accent-green`}):(0,Z.jsx)(le,{size:13})}),e.type===`assistant`&&!!e.content&&(0,Z.jsx)(xa,{onClick:p,title:a(f===`idle`?`tts.speak`:`tts.stop`),children:f===`loading`?(0,Z.jsx)(B,{size:13,className:`animate-spin`}):f===`playing`?(0,Z.jsx)(s,{size:13}):(0,Z.jsx)(L,{size:13})}),e.type===`assistant`&&n&&(0,Z.jsx)(xa,{onClick:()=>n(e.id),title:a(`chat.regenerate`),children:(0,Z.jsx)(F,{size:13})}),i&&(0,Z.jsx)(xa,{onClick:i,title:a(`chat.undoLastUser`),children:(0,Z.jsx)(se,{size:13})}),r&&(0,Z.jsx)(xa,{onClick:()=>r(e.id),title:a(`chat.deleteMessage`),danger:!0,children:(0,Z.jsx)(ye,{size:13})})]}):null}function Ca({ts:e,children:t}){let{i18n:n}=H(),r=n.language===`en`?`en-US`:`zh-CN`;return(0,Z.jsxs)(`div`,{className:`absolute bottom-2 start-3 select-none z-10 flex items-center gap-0.5 text-meta leading-none whitespace-nowrap opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 transition-opacity duration-150`,children:[(0,Z.jsx)(`span`,{className:`pe-1 text-badge text-dark-muted/50`,children:new Date(e).toLocaleTimeString(r,{hour:`2-digit`,minute:`2-digit`})}),t]})}var wa=(0,X.memo)(function({message:e,sessionId:t,turnFiles:n,onRegenerate:r,onRetryTurn:i,onDeleteMessage:a,onUndoLastUser:o,onOpenSidebarView:s}){let{t:c}=H(),l=St(e=>e.developerView),u=U(n=>{if(!t||!n.generatingSessions.includes(t))return!1;let r=n.messagesBySession[t];return r?r[r.length-1]?.id===e.id:!1}),d=U(n=>{if(!t)return!1;let r=n.messagesBySession[t];return r?r[r.length-1]?.id===e.id:!1}),f=(0,X.useMemo)(()=>Bn(e),[e.toolCalls,e.fileJob]),p=n??f,m=(0,X.useMemo)(()=>ha(e),[e.thinkingBlocks,e.thinking]),h=(0,X.useMemo)(()=>ga(e),[e.textBlocks,e.content]),g=(0,X.useMemo)(()=>_a(m,h,e.toolCalls),[m,h,e.toolCalls]),_=(0,X.useMemo)(()=>va(g),[g]),[v,y]=(0,X.useState)({}),b=(0,X.useCallback)(e=>!l&&(!u||ya(g,e)),[l,u,g]),x=(0,X.useCallback)(e=>{y(t=>({...t,[e]:!(t[e]??b(e))}))},[b]),C=m.length>0,T=(0,X.useCallback)(e=>{if(!C)return e;let{body:t}=pa(e,!0);return t||e},[C]),E=e.type===`user`,D=e.type===`system`,O=(0,X.useCallback)((n,r)=>{if(!t)return;let i=U.getState().getMessages(t),a=i.findIndex(t=>t.id===e.id);if(a===-1)return;let o=i[a];if(!o)return;let s={...o,hookApproval:o.hookApproval?{...o.hookApproval,status:r}:void 0},c=[...i];c[a]=s,U.setState({messagesBySession:{...U.getState().messagesBySession,[t]:c}})},[t,e.id]);return e.deleted||Re(e)?null:e.shellRun?(0,Z.jsxs)(`div`,{className:`chat-msg`,"data-role":`shell`,children:[(0,Z.jsx)(`div`,{className:`chat-avatar`,"aria-hidden":!0,children:(0,Z.jsx)(S,{size:14,strokeWidth:2.4})}),(0,Z.jsxs)(`div`,{className:`chat-card group relative`,children:[(0,Z.jsx)(Ca,{ts:e.timestamp}),(0,Z.jsx)(Sa,{message:e,sessionId:t,onRegenerate:r,onDeleteMessage:a}),(0,Z.jsx)(ji,{info:e.shellRun})]})]}):E?(0,Z.jsxs)(`div`,{className:`chat-msg`,"data-role":`user`,children:[(0,Z.jsx)(`div`,{className:`chat-avatar`,"aria-hidden":!0,children:(0,Z.jsx)(ae,{size:14,strokeWidth:2.4})}),(0,Z.jsxs)(`div`,{className:`max-w-[78%] flex flex-col`,children:[e.channel&&(e.channel.senderName||e.channel.channelType)&&(0,Z.jsx)(`div`,{className:`mb-0.5 self-end px-1 text-badge text-dark-muted`,"data-testid":`channel-source`,children:[e.channel.channelType,e.channel.senderName].filter(Boolean).join(` · `)}),(0,Z.jsxs)(`div`,{className:`group relative inline-block self-end rounded-2xl border border-hairline border-dark-border/40 bg-dark-surface px-4 pb-8 pt-2.5 text-dark-text shadow-sm`,style:{borderBottomRightRadius:`0.375rem`},children:[(0,Z.jsx)(Ca,{ts:e.timestamp}),(0,Z.jsx)(Sa,{message:e,sessionId:t,onRegenerate:r,onDeleteMessage:a,onUndoLastUser:o}),(0,Z.jsx)(Zi,{content:(e.display?.content??e.content)?.replace(/\n{3,}/g,`
20
+
21
+ `)??``,images:e.images,pastes:e.display?.pastes})]})]})]}):D?(0,Z.jsx)(`div`,{className:`chat-msg`,"data-role":`system`,children:(0,Z.jsx)(`div`,{className:`text-meta text-dark-muted bg-dark-surface border border-dark-border/60 rounded-full px-3.5 py-1 max-w-[90%] text-center`,children:e.content})}):(0,Z.jsxs)(`div`,{className:`chat-msg`,"data-role":`assistant`,children:[(0,Z.jsx)(`div`,{className:`chat-avatar`,"aria-hidden":!0,children:(0,Z.jsx)(w,{size:14,strokeWidth:2.4})}),(0,Z.jsxs)(`div`,{className:`chat-card group relative`,children:[(0,Z.jsx)(Ca,{ts:e.timestamp}),(0,Z.jsx)(Sa,{message:e,sessionId:t,onRegenerate:r,onDeleteMessage:a,onUndoLastUser:o}),g.length>0&&!e.hookApproval&&(0,Z.jsx)(`div`,{className:`mb-1 space-y-1`,"data-testid":`message-chronology`,children:g.map(e=>e.kind===`thinking`?(0,Z.jsx)(ia,{index:e.block.index,text:e.block.text,isStreaming:u&&e.block.index===_,collapsed:v[e.block.index]??b(e.block.index),onToggle:x},e.key):e.kind===`text`?(0,Z.jsx)(`div`,{className:`leading-relaxed`,children:(0,Z.jsx)(it,{content:T(e.block.text).replace(/\n{3,}/g,`
22
+
23
+ `),streaming:u&&e.block.index===_})},e.key):(0,Z.jsx)(Zr,{toolCall:e.toolCall,sessionId:t,defaultCollapsed:!l&&!ba(e.toolCall)},e.key))}),g.length===0&&!e.hookApproval&&u&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 py-1 text-xs text-dark-muted`,"data-testid":`thinking-typing`,children:[(0,Z.jsxs)(`span`,{className:`chat-typing-dots`,children:[(0,Z.jsx)(`span`,{}),(0,Z.jsx)(`span`,{}),(0,Z.jsx)(`span`,{})]}),(0,Z.jsxs)(`span`,{children:[c(`chat.thinking`),`…`]})]}),e.summary&&!u&&(0,Z.jsx)(`div`,{className:`mt-1.5 text-meta text-dark-muted/70`,"data-testid":`turn-summary`,children:Ee(e.summary)}),d&&!u&&!e.hookApproval&&(0,Z.jsx)(ta,{created:p.created,modified:p.modified,onOpenArtifacts:()=>s?.(`artifacts`),onOpenChanges:()=>s?.(`changes`)}),e.fileJob&&(0,Z.jsx)(`div`,{className:`mt-3`,children:(0,Z.jsx)(Di,{job:e.fileJob})}),e.errorCard&&(0,Z.jsx)(`div`,{className:`mt-3`,children:(0,Z.jsx)(Ai,{error:e.errorCard,onRetry:t&&i?()=>i(t):t&&r?()=>r(e.id):void 0})}),e.hookApproval&&(0,Z.jsx)(`div`,{className:`mt-3 border-s-2 border-accent-yellow/50 ps-3`,children:(0,Z.jsx)(wi,{approval:e.hookApproval,onResolved:O})})]})]})});function Ta(e,t=28){let n=e.replace(/\s+/g,` `).trim();return n.length>t?`${n.slice(0,t)}…`:n}var Ea=`cubic-bezier(0.34, 1.56, 0.64, 1)`,Da=14,Oa=7,ka=.6,Aa=160,ja=440;function Ma(){let e=(0,X.useCallback)(()=>typeof window>`u`?ja:Math.max(Aa,Math.min(ja,Math.round(window.innerHeight*ka))),[]),[t,n]=(0,X.useState)(e);return(0,X.useEffect)(()=>{let t=()=>n(e());return window.addEventListener(`resize`,t),()=>window.removeEventListener(`resize`,t)},[e]),t}var Na=`(hover: none), (pointer: coarse)`;function Pa(){let e=(0,X.useCallback)(()=>typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(Na).matches,[]),[t,n]=(0,X.useState)(e);return(0,X.useEffect)(()=>{if(typeof window>`u`||typeof window.matchMedia!=`function`)return;let e=window.matchMedia(Na),t=()=>n(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]),t}var Fa=(0,X.memo)(function({items:e,activeId:t,onJump:n}){let{t:r}=H(),[i,a]=(0,X.useState)(!1),o=(0,X.useRef)(null),s=Ma(),c=Pa(),l=(0,X.useRef)(null),u=(0,X.useCallback)(()=>{c||(o.current&&window.clearTimeout(o.current),a(!0))},[c]),d=(0,X.useCallback)(()=>{c||(o.current&&window.clearTimeout(o.current),o.current=window.setTimeout(()=>a(!1),180))},[c]),f=(0,X.useCallback)(e=>{n(e),c&&a(!1)},[n,c]);(0,X.useEffect)(()=>{if(!i||!c)return;let e=e=>{let t=l.current;t&&e.target instanceof Node&&t.contains(e.target)||a(!1)},t=e=>{e.key===`Escape`&&a(!1)};return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,t)}},[i,c]),(0,X.useEffect)(()=>()=>{o.current&&window.clearTimeout(o.current)},[]);let p=Math.max(Oa,Math.min(Da,Math.floor(s/Math.max(1,e.length)))),m=Math.max(1,Math.floor(s/Oa)),h=(0,X.useMemo)(()=>{let n=e.length,r=Math.min(n,m),i=n/r,a=t?e.findIndex(e=>e.id===t):-1;return Array.from({length:r},(e,t)=>{let r=Math.round(t*i),o=Math.min(n,Math.max(r+1,Math.round((t+1)*i)));return{start:r,end:o,active:a>=r&&a<o}}).flatMap(t=>{let n=e[t.start];return n?[{...t,key:n.id,first:n}]:[]})},[e,t,m]),g=p>=12?6:p>=9?5:4,_=Math.min(g+2,Math.max(4,p-2)),v=p>=12?`ring-2 ring-accent-blue/25`:`ring-1 ring-accent-blue/30`;return e.length===0?null:(0,Z.jsxs)(`div`,{ref:l,"data-testid":`rail-trigger`,"data-touch":c?`1`:`0`,role:`group`,"aria-label":r(`chat.messageRail`),onMouseEnter:u,onMouseLeave:d,className:Y(`pointer-events-auto absolute z-30`,c?`bottom-16 end-3`:`end-4 top-1/2 -translate-y-1/2`),children:[c?(0,Z.jsxs)(`button`,{type:`button`,"data-testid":`rail-fab`,"aria-expanded":i,"aria-label":r(`chat.messageIndex`),title:r(`chat.messageIndex`),onClick:()=>a(e=>!e),className:Y(`relative grid h-10 w-10 place-items-center rounded-full border shadow-lg backdrop-blur transition-colors duration-200 active:scale-95`,i?`border-accent-blue/50 bg-accent-blue/15 text-accent-blue`:`border-dark-border/70 bg-dark-surface/90 text-dark-muted`),children:[(0,Z.jsx)(D,{size:16,"aria-hidden":`true`}),(0,Z.jsx)(`span`,{"data-testid":`rail-fab-count`,className:`pointer-events-none absolute -end-1 -top-1 grid h-4 min-w-4 place-items-center rounded-full bg-accent-blue px-1 text-[10px] font-semibold leading-none tabular-nums text-accent-fg`,children:e.length})]}):(0,Z.jsx)(`ul`,{"data-testid":`rail-dots`,"aria-label":r(`chat.messageIndex`),className:`flex flex-col items-end py-3`,style:{maxHeight:s},children:h.map(e=>{let{first:t}=e,n=e.end-e.start>1,r=n?`${e.start+1}–${e.end} (${e.end-e.start})`:`${e.start+1}. ${Ta(t.content)}`;return(0,Z.jsx)(`li`,{children:(0,Z.jsx)(`button`,{type:`button`,onClick:()=>f(t.id),title:n?`${e.start+1}–${e.end}: ${t.content}`:t.content,"aria-label":r,"aria-current":e.active?`true`:void 0,className:`group/dot pointer-events-auto flex items-center justify-center rounded-full transition-colors duration-200 hover:bg-dark-surface/80`,style:{height:p,width:20},children:(0,Z.jsx)(`span`,{style:{height:e.active?_:g,width:e.active?_:g},className:e.active?`rounded-full bg-accent-blue transition-all duration-300 ease-out group-hover/dot:scale-125 ${v}`:`rounded-full bg-dark-muted/35 transition-all duration-300 ease-out group-hover/dot:scale-125 group-hover/dot:bg-dark-muted`})})},e.key)})}),(0,Z.jsx)(`div`,{"data-testid":`rail-panel`,"aria-hidden":!i,inert:!i,className:Y(`absolute z-40`,c?`bottom-0 end-full me-2`:`top-1/2 end-full -translate-y-1/2`),children:(0,Z.jsxs)(`div`,{className:Y(`flex flex-col overflow-hidden rounded-xl border border-dark-border/70 bg-dark-bg/90 shadow-pop backdrop-blur-xl transition-all duration-300`,c?`w-[min(18rem,calc(100vw-5.5rem))] max-h-[60vh] origin-bottom-right`:`w-72 max-h-[55vh] origin-right rtl:origin-left`,i?`scale-100 opacity-100`:`pointer-events-none scale-95 opacity-0`,i?c?`translate-y-0`:`translate-x-0`:c?`translate-y-2`:`translate-x-4 rtl:-translate-x-4`),style:{transitionTimingFunction:i?Ea:`ease`},children:[(0,Z.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-b border-dark-border/60 px-3 py-2`,children:[(0,Z.jsxs)(`span`,{className:`flex items-center gap-1.5 text-meta font-semibold uppercase tracking-[0.08em] text-dark-muted`,children:[(0,Z.jsx)(D,{size:12,className:`text-accent-blue`,"aria-hidden":`true`}),r(`chat.messageIndex`)]}),(0,Z.jsx)(`span`,{className:`rounded-full bg-dark-hover px-1.5 py-0.5 text-badge font-medium tabular-nums text-dark-muted`,children:e.length})]}),(0,Z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-1.5 custom-scrollbar`,children:e.map((e,n)=>{let r=e.id===t;return(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>f(e.id),title:e.content,"aria-current":r?`true`:void 0,tabIndex:i?0:-1,className:Y(`group/item flex w-full items-start gap-2 rounded-lg px-2 text-start transition-all duration-200`,c?`py-2.5`:`py-1.5`,i?`translate-x-0 opacity-100`:`translate-x-2 rtl:-translate-x-2 opacity-0`,r?`bg-accent-blue/10`:`hover:bg-dark-hover`),style:{transitionDelay:i?`${Math.min(n*24,264)}ms`:`0ms`},children:[(0,Z.jsx)(`span`,{className:Y(`mt-px flex h-4 w-4 shrink-0 items-center justify-center rounded text-badge font-semibold tabular-nums transition-colors duration-200`,r?`bg-accent-blue text-accent-fg`:`bg-dark-hover text-dark-muted group-hover/item:bg-dark-border/80 group-hover/item:text-dark-text`),children:n+1}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1`,children:(0,Z.jsx)(`span`,{"data-testid":`rail-entry-content`,className:Y(`block break-words text-xs leading-snug transition-colors duration-200`,c?`line-clamp-3`:`line-clamp-2 group-hover/item:line-clamp-none`,r?`font-medium text-accent-blue`:`text-dark-text/90`),children:e.content})}),!c&&(0,Z.jsx)(b,{size:12,"aria-hidden":`true`,className:`mt-0.5 shrink-0 -translate-x-1 rtl:translate-x-1 rtl:rotate-180 text-dark-muted/50 opacity-0 transition-all duration-200 group-hover/item:translate-x-0 group-hover/item:opacity-100`})]},e.id)})})]})})]})});function Ia({sessionId:e,suppressSummary:t=!1}){let n=Ot(t=>Et(t,e,`compactionProgress`)),r=Ot(t=>Et(t,e,`lastCompactSummary`));return n?(0,Z.jsx)(za,{progress:n}):r&&!t?(0,Z.jsx)(Ba,{summary:r,className:`chat-col px-4 pb-1.5 pt-1 sm:px-6`,sessionId:e}):null}function La(e){return e<1e4?`${(e/1e3).toFixed(1)}s`:`${Math.round(e/1e3)}s`}function Ra(e){return Math.max(0,Math.min(100,Math.round(e)))}function za({progress:e}){let t=e.percent>=100,n=Ra(e.percent),{tokensBefore:r,startedAt:i}=e,[a,o]=(0,X.useState)(()=>i===void 0?0:Date.now()-i);return(0,X.useEffect)(()=>{if(i===void 0||t)return;let e=()=>o(Date.now()-i);e();let n=window.setInterval(e,1e3);return()=>window.clearInterval(n)},[i,t]),(0,Z.jsx)(`div`,{"data-testid":`compaction-indicator`,className:`chat-col animate-fade-in px-4 py-1.5 text-xs text-dark-muted sm:px-6`,title:e.message||void 0,children:(0,Z.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,Z.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1.5 whitespace-nowrap text-dark-text`,children:[(0,Z.jsx)(`span`,{className:`inline-block h-1.5 w-1.5 rounded-full ${t?`bg-accent-green`:`compact-live-dot bg-accent-blue`}`}),`compact`]}),e.stage&&(0,Z.jsx)(`span`,{className:`hidden shrink-0 whitespace-nowrap text-meta uppercase tracking-wide text-dark-muted/80 sm:inline`,children:e.stage}),(0,Z.jsxs)(`span`,{className:`w-9 shrink-0 text-right tabular-nums whitespace-nowrap text-dark-text`,children:[n,`%`]}),(0,Z.jsx)(`span`,{role:`progressbar`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":n,className:`relative h-2 min-w-0 flex-1 overflow-hidden rounded-full bg-dark-border/50`,children:(0,Z.jsxs)(`span`,{className:`compact-progress-fill absolute inset-y-0 left-0 overflow-hidden rounded-full ${t?`bg-accent-green`:`bg-gradient-to-r from-accent-blue/70 to-accent-blue`}`,style:{width:`${n}%`},children:[!t&&(0,Z.jsx)(`span`,{className:`compact-stripes absolute -inset-x-4 inset-y-0`}),!t&&(0,Z.jsx)(`span`,{className:`animate-compact-sheen absolute inset-y-0 left-0 w-1/3 rounded-full bg-gradient-to-r from-transparent via-white/60 to-transparent`})]})}),r!==void 0&&(0,Z.jsxs)(`span`,{className:`shrink-0 whitespace-nowrap tabular-nums text-dark-muted`,children:[De(r),` → …`]}),!t&&i!==void 0&&a>=1e3&&(0,Z.jsx)(`span`,{className:`w-8 shrink-0 text-right whitespace-nowrap tabular-nums text-dark-muted/80`,children:La(a)})]})})}function Ba({summary:e,className:t=``,sessionId:n}){let{tokensBefore:r,tokensAfter:i,tokensSaved:a,messagesBefore:o,messagesAfter:s,durationMs:c}=e,l=r!==void 0&&i!==void 0&&r>0,u=l?Math.max(0,Math.min(100,Math.round(a/r*100))):void 0,d=l?Math.max(0,Math.min(100,i/r*100)):0,[f,p]=(0,X.useState)(!1);(0,X.useEffect)(()=>{p(!1);let e=window.requestAnimationFrame(()=>p(!0));return()=>window.cancelAnimationFrame(e)},[e.at]);let m=[o!==void 0&&s!==void 0?`${o} → ${s} msgs`:s===void 0?o===void 0?``:`${o} msgs`:`${s} msgs`,c!==void 0&&c>=300?La(c):``].filter(Boolean).join(` · `);return(0,Z.jsx)(`div`,{"data-testid":`compaction-summary`,className:`animate-fade-in-up ${t}`.trim(),children:(0,Z.jsxs)(`div`,{className:`rounded-lg border border-dark-border/60 bg-dark-surface/50 px-3 py-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,Z.jsx)(`span`,{className:`text-accent-green`,children:`✓`}),(0,Z.jsx)(`span`,{className:`whitespace-nowrap text-dark-text`,children:`compact`}),l?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`span`,{className:`tabular-nums whitespace-nowrap text-dark-muted`,children:[De(r),` → `,De(i)]}),u!==void 0&&u>0&&(0,Z.jsxs)(`span`,{className:`whitespace-nowrap rounded-full bg-accent-green/[0.12] px-1.5 text-accent-green`,children:[`−`,u,`%`]})]}):a>0&&(0,Z.jsxs)(`span`,{className:`tabular-nums whitespace-nowrap text-accent-green`,children:[`−`,De(a)]}),(0,Z.jsx)(`span`,{className:`flex-1`}),(0,Z.jsx)(`span`,{className:`whitespace-nowrap tabular-nums text-dark-muted`,children:m}),(0,Z.jsx)(`button`,{type:`button`,onClick:()=>Ot.getState().setCompactSummary(null,n),"aria-label":`hide compaction summary`,title:`hide`,className:`-me-1 flex h-4 w-4 shrink-0 items-center justify-center rounded text-dark-muted/60 transition-colors hover:text-dark-text`,children:(0,Z.jsx)(fe,{size:12})})]}),l&&(0,Z.jsxs)(`div`,{className:`mt-1.5 space-y-1`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`h-1.5 min-w-0 flex-1 rounded-full bg-dark-muted/35`}),(0,Z.jsx)(`span`,{className:`min-w-10 shrink-0 text-right text-meta tabular-nums text-dark-muted`,children:De(r)})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`relative h-1.5 min-w-0 flex-1 overflow-hidden rounded-full bg-dark-border/40`,children:(0,Z.jsx)(`span`,{className:`compact-bar-collapse absolute inset-y-0 left-0 rounded-full bg-accent-green/80`,style:{width:`${f?d:100}%`}})}),(0,Z.jsx)(`span`,{className:`min-w-10 shrink-0 text-right text-meta tabular-nums text-accent-green`,children:De(i)})]})]})]})})}var Va=24,Ha=2e3,Ua=150,Wa=28,Ga=120;function Ka({label:e}){let t=(0,X.useRef)(Date.now()),n=(0,X.useRef)(null),[r,i]=(0,X.useState)(!1);return(0,X.useEffect)(()=>{let e=window.setTimeout(()=>i(!0),15e3);return()=>window.clearTimeout(e)},[]),(0,X.useEffect)(()=>{if(!r)return;let e=()=>{let e=n.current;if(!e)return;let r=Math.floor((Date.now()-t.current)/1e3);e.textContent=r>=60?`${Math.floor(r/60)}m ${r%60}s`:`${r}s`};e();let i=window.setInterval(e,1e3);return()=>window.clearInterval(i)},[r]),(0,Z.jsxs)(`div`,{className:`chat-col flex items-center gap-2 px-4 py-3 text-xs text-dark-muted sm:px-6`,children:[(0,Z.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,Z.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full bg-accent-blue animate-blink`}),(0,Z.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full bg-accent-blue animate-blink`,style:{animationDelay:`0.2s`}}),(0,Z.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full bg-accent-blue animate-blink`,style:{animationDelay:`0.4s`}})]}),(0,Z.jsx)(`span`,{className:`text-shimmer`,children:e}),r&&(0,Z.jsxs)(`span`,{className:`flex items-center gap-1 tabular-nums text-dark-muted/70`,children:[(0,Z.jsx)(R,{size:10}),(0,Z.jsx)(`span`,{ref:n,children:`15s`})]})]})}var qa=(0,X.memo)(function({messages:e,isGenerating:t,sessionId:n,onRegenerate:i,onRetryTurn:a,onDeleteMessage:o,onUndoLastUser:s,onOpenSidebarView:c}){let{t:l}=H(),u=(0,X.useRef)(null),d=Ot(e=>Et(e,n,`compactionProgress`)),f=Ot(e=>Et(e,n,`lastCompactSummary`)),p=(0,X.useRef)(new Map),[m,h]=(0,X.useState)(!0),[g,_]=(0,X.useState)(null),v=(0,X.useRef)(m),y=(0,X.useRef)(g),b=(0,X.useCallback)(e=>{v.current!==e&&(v.current=e,h(e))},[]),x=(0,X.useCallback)(e=>{y.current!==e&&(y.current=e,_(e))},[]),[S,C]=(0,X.useState)(null),[w,T]=(0,X.useState)(0),E=(0,X.useRef)(null),D=(0,X.useRef)(!1),O=(0,X.useRef)(null),k=(0,X.useRef)(!1),A=(0,X.useRef)(null),j=(0,X.useRef)(!1),M=(0,X.useRef)(null),ee=(0,X.useRef)(null),te=(0,X.useRef)(t);te.current=t;let ne=(0,X.useRef)(0),[N,re]=(0,X.useState)({top:0,bottom:0}),ie=(0,X.useRef)(N),ae=(0,X.useCallback)((e,t)=>{(ie.current.top!==e||ie.current.bottom!==t)&&(ie.current={top:e,bottom:t},re({top:e,bottom:t}))},[]),oe=U(e=>e.historyMetaBySession[n]),se=(0,X.useRef)(null),ce=(0,X.useCallback)(async()=>{if(!n)return;let e=U.getState(),t=e.historyMetaBySession[n];if(!t?.hasMore||t.loading)return;let r=e.getMessages(n).find(e=>!e.deleted);if(!r)return;let i=u.current;se.current=i?{height:i.scrollHeight,top:i.scrollTop}:null,e.setHistoryMeta(n,{loading:!0});try{let e=await J.sessions.messages(n,{before:r.id,limit:200}),t=U.getState();if(!e.success||!e.data){se.current=null,t.setHistoryMeta(n,{loading:!1});return}let i=qt(e.data.messages),a=t.getMessages(n);t.prependOlderMessages(n,i),t.getMessages(n)===a&&(se.current=null),t.setHistoryMeta(n,{loading:!1,hasMore:e.data.hasMore&&i.length>0})}catch{se.current=null,U.getState().setHistoryMeta(n,{loading:!1})}},[n]),P=(0,X.useMemo)(()=>e.filter(e=>!e.deleted),[e]),le=(0,X.useMemo)(()=>{for(let e=P.length-1;e>=0;e--)if(P[e]?.type===`user`)return P[e].id},[P]),F=f?.anchorMessageId,I=(0,X.useMemo)(()=>!!F&&P.some(e=>e.id===F),[F,P]),ue=(0,X.useMemo)(()=>{if(!t)return!1;let e=P[P.length-1];return!e||e.type!==`assistant`?!1:!e.content},[t,P]),L=(0,X.useMemo)(()=>P.filter(e=>Oe(e)).map(e=>({id:e.id,content:e.content})),[P]),R=(0,X.useMemo)(()=>L.map(e=>e.id),[L]),de=(0,X.useMemo)(()=>Hn(P),[P]),fe=(0,X.useCallback)(e=>{if(e){let t=e.dataset.mid;t&&p.current.set(t,e)}},[]);(0,X.useEffect)(()=>{let e=new Set(R);for(let t of p.current.keys())e.has(t)||p.current.delete(t)},[R]);let pe=(0,X.useCallback)(()=>{let e=u.current;if(!e||R.length===0){x(null);return}let t=e.getBoundingClientRect(),n=t.top+t.height*.35,r=R[0]??null;for(let e of R){let t=p.current.get(e);if(t&&t.isConnected){if(t.getBoundingClientRect().top<=n)r=e;else break}}e.scrollHeight-e.scrollTop-e.clientHeight<Va&&(r=R[R.length-1]??r),x(r)},[R,x]),z=(0,X.useCallback)(()=>{let e=u.current;if(!e)return;let t=e.scrollTop<=2,n=e.scrollTop+e.clientHeight>=e.scrollHeight-2;ae(t?0:Wa,n?0:Wa)},[ae]),me=(0,X.useCallback)(()=>{let e=u.current;if(!e)return;let t=e.scrollHeight-e.scrollTop-e.clientHeight,n=t<Va;k.current?n&&(k.current=!1):D.current?t>=Va&&(D.current=!1):b(n),e.scrollTop<=Ga&&ce(),pe(),z()},[pe,z,b,ce]),B=(0,X.useCallback)(()=>{let e=u.current;if(!e||te.current||D.current||k.current)return;let t=e.scrollHeight-e.scrollTop-e.clientHeight;b(t<Va),z()},[b,z]);(0,X.useLayoutEffect)(()=>{j.current=!0,M.current&&window.clearTimeout(M.current),M.current=window.setTimeout(()=>{j.current=!1},Ha),O.current&&window.clearTimeout(O.current),D.current=!1,k.current=!1;let e=u.current;e&&(e.scrollTop=e.scrollHeight),b(!0),z()},[n,b,z]),(0,X.useEffect)(()=>{let e=u.current,t=ee.current;if(!e||!t||typeof ResizeObserver>`u`)return;let n=new ResizeObserver(()=>{j.current&&v.current&&(e.scrollTop=e.scrollHeight)});return n.observe(t),()=>n.disconnect()},[]),(0,X.useLayoutEffect)(()=>{let e=se.current;if(!e)return;se.current=null;let t=u.current;if(!t)return;let n=t.scrollHeight-e.height;n>0&&(t.scrollTop=e.top+n)},[e]),(0,X.useEffect)(()=>{pe(),z()},[e,pe,z]),(0,X.useEffect)(()=>{let e=u.current;if(!e)return;let t=()=>{z(),B()},n=()=>{ne.current=performance.now(),k.current=!1,j.current=!1},r=e=>{(e.key===`PageUp`||e.key===`PageDown`||e.key===`ArrowUp`||e.key===`ArrowDown`||e.key===`Home`||e.key===`End`)&&n()};return e.addEventListener(`wheel`,n,{passive:!0}),e.addEventListener(`touchmove`,n,{passive:!0}),e.addEventListener(`keydown`,r),window.addEventListener(`resize`,t),()=>{e.removeEventListener(`wheel`,n),e.removeEventListener(`touchmove`,n),e.removeEventListener(`keydown`,r),window.removeEventListener(`resize`,t)}},[z,B]);let he=(0,X.useCallback)(e=>{let t=u.current,n=p.current.get(e);if(!t||!n||!n.isConnected)return;b(!1),C(e),T(e=>e+1),E.current&&window.clearTimeout(E.current),E.current=window.setTimeout(()=>C(null),1600);let r=t.getBoundingClientRect(),i=n.getBoundingClientRect(),a=t.scrollTop+(i.top-r.top)-t.clientHeight/2+i.height/2;O.current&&window.clearTimeout(O.current),D.current=!0,t.scrollTo({top:Math.max(0,a),behavior:`smooth`}),`onscrollend`in t&&t.addEventListener(`scrollend`,()=>{D.current=!1},{once:!0}),O.current=window.setTimeout(()=>{D.current=!1},1500)},[b]);(0,X.useEffect)(()=>()=>{E.current&&window.clearTimeout(E.current),O.current&&window.clearTimeout(O.current),A.current&&window.clearTimeout(A.current),M.current&&window.clearTimeout(M.current)},[]);let ge=(0,X.useCallback)(()=>{O.current&&window.clearTimeout(O.current),D.current=!1;let e=u.current;e&&(e.scrollTop=e.scrollHeight)},[]),_e=(0,X.useCallback)(()=>{O.current&&window.clearTimeout(O.current),D.current=!1,b(!0);let e=u.current;e&&(k.current=!0,A.current&&window.clearTimeout(A.current),A.current=window.setTimeout(()=>{k.current=!1},1e3),`onscrollend`in e&&e.addEventListener(`scrollend`,()=>{k.current=!1},{once:!0}),e.scrollTo({top:e.scrollHeight,behavior:`smooth`}))},[b]);(0,X.useEffect)(()=>{t&&(b(!0),ge())},[t,ge,b]);let ve=(0,X.useMemo)(()=>{let e=P[P.length-1],t=d?`c:${Math.round(d.percent)}`:f?`s:${f.at}`:``;return`${P.length}:${e?.id??``}:${e?.content?.length??0}:${e?.textBlocks?.length??0}:${e?.toolCalls?.length??0}:${e?.thinkingBlocks?.length??0}:${e?.thinking?.length??0}:${t}`},[P,d,f]),V=(0,X.useRef)(ve);return(0,X.useEffect)(()=>{m?ve!==V.current&&(V.current=ve,!(performance.now()-ne.current<=Ua)&&ge()):V.current=ve},[ve,m,ge]),(0,Z.jsxs)(`div`,{className:`relative flex-1 min-h-0`,children:[(0,Z.jsxs)(`div`,{ref:u,onScroll:me,style:{"--ui-fade-top":`${N.top}px`,"--ui-fade-bottom":`${N.bottom}px`},className:`fade-mask-y h-full overflow-y-auto custom-scrollbar`,children:[(0,Z.jsxs)(`div`,{ref:ee,className:`chat-stack flex flex-col pb-8 pt-5`,children:[oe?.loading&&(0,Z.jsxs)(`div`,{className:`chat-col flex items-center gap-2 px-4 pb-1 text-xs text-dark-muted sm:px-6`,children:[(0,Z.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full bg-dark-muted animate-pulse`}),l(`chat.loadingOlderHistory`)]}),oe&&!oe.loading&&!oe.hasMore&&e.length>=200&&(0,Z.jsx)(`div`,{className:`chat-col px-4 pb-1 text-xs text-dark-muted/60 sm:px-6`,children:l(`chat.reachedHistoryStart`)}),P.map((e,t)=>{let r=P[t-1],l=r?r.type===e.type?`mt-2`:`mt-5`:``;return(0,Z.jsxs)(X.Fragment,{children:[(0,Z.jsxs)(`div`,{"data-mid":e.id,ref:fe,className:`relative w-full ${l}`,children:[S===e.id&&(0,Z.jsx)(`div`,{className:`animate-rail-flash pointer-events-none absolute inset-0`},w),(0,Z.jsx)(wa,{message:e,sessionId:n,turnFiles:de.get(e.id),onRegenerate:i,onRetryTurn:a,onDeleteMessage:o,onUndoLastUser:e.id===le&&s&&n?()=>s(n):void 0,onOpenSidebarView:c})]}),I&&f&&e.id===F&&(0,Z.jsx)(Ba,{summary:f,className:`pb-1.5 pt-1`,sessionId:n})]},e.id)})]}),(0,Z.jsx)(Ia,{sessionId:n,suppressSummary:I}),t&&!ue&&(0,Z.jsx)(Ka,{label:l(`chat.thinkingEllipsis`)},n)]}),L.length>0&&(0,Z.jsx)(Fa,{items:L,activeId:g,onJump:he}),!m&&P.length>0&&(0,Z.jsx)(`button`,{type:`button`,onClick:_e,title:l(`chat.backToBottom`),"aria-label":l(`chat.backToBottom`),className:`absolute bottom-5 end-5 z-20 flex h-8 w-8 animate-fade-in-up items-center justify-center rounded-full border border-dark-border/70 bg-dark-surface/90 text-dark-muted shadow-lg backdrop-blur transition-all duration-200 hover:scale-110 hover:text-dark-text hover:shadow-xl`,children:(0,Z.jsx)(r,{size:15})})]})}),Ja=(0,X.memo)(function(){let{t:e}=H(),t=Qt(e=>e.mode),n=Qt(e=>e.setAutoLevel),r=ln(e=>e.autoLevel),i=t!==`normal`&&je(t),a=un(i?r:0),o=(t===`normal`?`act`:Pe(t))===`chat`,s=Wt[a],[c,l]=(0,X.useState)(!1),[u,d]=(0,X.useState)(null),f=(0,X.useId)(),p=u??a,m=Wt[p],h=(0,X.useRef)(null),g=(0,X.useRef)(null),_=e=>{o||(l(!0),h.current?.contains(e.target)||d(null))},v=e=>{let t=e.relatedTarget;t&&g.current?.contains(t)||(l(!1),d(null))},y=(0,X.useCallback)(e=>{o||e!==a&&n(e)},[o,a,n]),b=(0,X.useRef)(0);(0,X.useEffect)(()=>{let e=g.current;if(!e||o)return;let t=e=>{let t=Math.abs(e.deltaY)>=Math.abs(e.deltaX)?e.deltaY:0;if(t===0||(e.preventDefault(),b.current+=t,Math.abs(b.current)<30))return;let n=b.current>0?1:-1;b.current=0,y(dn(a,n>0?-1:1))};return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[y,o,a]);let x=(0,X.useCallback)(e=>{if(o)return;let t=t=>{e.preventDefault(),y(dn(a,t))};switch(e.key){case`ArrowUp`:case`ArrowRight`:t(1);break;case`ArrowDown`:case`ArrowLeft`:t(-1);break;case`Home`:e.preventDefault(),y(0);break;case`End`:e.preventDefault(),y(4)}},[y,o,a]),S=t=>{let n=Wt[t];return`${t}/4 · ${n.label} — ${n.hint}\n${e(`plan.autoAllows`)}: ${n.allows}\n${e(`plan.autoAsks`)}: ${n.asks}`},C=`${e(`plan.autoApprove`)} ${S(a)}`;return(0,Z.jsxs)(`div`,{ref:g,role:`slider`,tabIndex:o?-1:0,"aria-label":e(`plan.autoApprove`),"aria-valuemin":0,"aria-valuemax":4,"aria-valuenow":a,"aria-valuetext":`${s.label} (${a}/4)`,"aria-describedby":c?f:void 0,"aria-disabled":o||void 0,onKeyDown:x,onMouseOver:_,onMouseOut:v,onFocus:()=>l(!o),onBlur:()=>{l(!1),d(null)},title:c?void 0:o?`${e(`plan.autoApprove`)} — chat · ${s.hint}`:C,className:Y(`relative flex items-center gap-1.5 rounded-full border px-2 py-0.5 text-xs whitespace-nowrap transition-colors select-none`,o?`border-dark-border text-dark-muted opacity-50 cursor-not-allowed`:Y(`cursor-pointer outline-none focus-visible:ring-1 focus-visible:ring-accent-yellow/60`,i?`border-accent-yellow/40 bg-accent-yellow/10 text-accent-yellow`:`border-dark-border text-dark-muted hover:bg-dark-hover`)),children:[(0,Z.jsx)(`span`,{ref:h,className:`flex items-end gap-[2px]`,"aria-hidden":!0,children:Yt.map(e=>{let t=e>0&&a>=e;return(0,Z.jsx)(`span`,{title:c?void 0:S(e),onMouseOver:()=>d(e),onMouseDown:t=>{t.preventDefault(),y(e)},className:Y(`w-[3px] rounded-sm transition-colors`,t?`bg-accent-yellow`:i?`bg-accent-yellow/25 hover:bg-accent-yellow/60`:`bg-dark-border`,!o&&(i?`hover:bg-accent-yellow/70`:`hover:bg-dark-muted/50`)),style:{height:4+e*2.5}},e)})}),(0,Z.jsx)(`span`,{className:`font-medium tabular-nums`,children:a}),(0,Z.jsx)(`span`,{className:`uppercase tracking-wide`,children:s.label}),c&&(0,Z.jsxs)(`div`,{id:f,role:`tooltip`,className:`pointer-events-none absolute bottom-full left-0 z-50 mb-2 w-max max-w-[min(80vw,30rem)] space-y-1 whitespace-normal break-words rounded-lg border border-dark-border bg-dark-surface px-2.5 py-2 text-start font-normal normal-case tracking-wide text-dark-text shadow-pop`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-1.5`,children:[(0,Z.jsx)(`span`,{className:`font-medium tabular-nums`,children:p}),(0,Z.jsx)(`span`,{className:`uppercase tracking-wide text-accent-yellow`,children:m.label}),(0,Z.jsx)(`span`,{className:`text-dark-muted`,children:m.hint})]}),(0,Z.jsxs)(`div`,{className:`grid grid-cols-[auto_minmax(0,1fr)] gap-x-1.5 gap-y-0.5`,children:[(0,Z.jsx)(`span`,{className:`whitespace-nowrap text-accent-green`,children:e(`plan.autoAllows`)}),(0,Z.jsx)(`span`,{className:`text-dark-muted`,children:m.allows}),(0,Z.jsx)(`span`,{className:`whitespace-nowrap text-accent-yellow`,children:e(`plan.autoAsks`)}),(0,Z.jsx)(`span`,{className:`text-dark-muted`,children:m.asks})]})]})]})}),Ya={act:`border-accent-green/30 text-accent-green bg-accent-green/10`,"auto-act":`border-accent-yellow/30 text-accent-yellow bg-accent-yellow/10`,goal:`border-accent-purple/30 text-accent-purple bg-accent-purple/10`,"auto-goal":`border-accent-red/30 text-accent-red bg-accent-red/10`,chat:`border-accent-cyan/30 text-accent-cyan bg-accent-cyan/10`,normal:`border-accent-green/30 text-accent-green`},Xa=(0,X.memo)(function(){let{t:e}=H(),t=Qt(e=>e.mode),n=Qt(e=>e.modeSource),r=Qt(e=>e.setBaseMode),i=Pe(t===`normal`?`act`:t),a=n===`user_override`;return(0,Z.jsxs)(`div`,{className:`flex items-center gap-1`,children:[Fe.map(n=>{let o=i===n,s=ke[n],c=t!==`normal`&&o?Ya[t]??`border-dark-border text-dark-muted`:`border-dark-border text-dark-muted hover:bg-dark-hover`;return(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>r(n),className:Y(`px-2 py-0.5 rounded-full border text-xs whitespace-nowrap transition-colors cursor-pointer`,c),title:e(`chat.clickToSwitchMode`),"aria-pressed":o,children:[s.label,o&&a&&(0,Z.jsx)(p,{size:10,className:`ms-1 inline-block -mt-px`,"aria-hidden":!0})]},n)}),a&&(0,Z.jsx)(`span`,{className:`flex items-center text-accent-yellow`,title:e(`plan.modeLocked`),"aria-label":e(`plan.modeLocked`),children:(0,Z.jsx)(p,{size:11,"aria-hidden":!0})}),(0,Z.jsx)(Ja,{})]})}),Za=(0,X.memo)(function(){let{t:e}=H(),t=Ae(e=>e.activeSessionId),n=Qt(e=>t?e.pendingSuggestionsBySession[t]:void 0),r=Qt(e=>e.clearPendingSuggestion),i=Qt(e=>e.setBaseMode);if(!n)return null;let a=n.suggestedMode;if(a!==`act`&&a!==`goal`)return null;let o=a,s=ke[o]?.label??o,c=ke[Pe(n.currentMode)]?.label??n.currentMode,l=typeof n.confidence==`number`?` · ${e(`plan.modeSuggestionConfidence`)} ${Math.round(n.confidence*100)}%`:``;return(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-accent-cyan/20 bg-accent-cyan/10 px-4 py-1.5 text-xs`,role:`status`,children:[(0,Z.jsx)(`span`,{className:`shrink-0 font-medium text-accent-cyan`,children:e(`plan.modeSuggestionTitle`)}),(0,Z.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1 text-dark-muted`,children:[(0,Z.jsx)(`span`,{className:`whitespace-nowrap`,children:c}),(0,Z.jsx)(A,{size:11,className:`shrink-0`,"aria-hidden":!0}),(0,Z.jsx)(`span`,{className:`whitespace-nowrap text-dark-text`,children:s}),(0,Z.jsx)(`span`,{className:`shrink-0`,children:l}),n.reason&&(0,Z.jsxs)(`span`,{className:`hidden min-w-0 truncate md:inline`,title:n.reason,children:[`· `,n.reason]})]}),(0,Z.jsxs)(`span`,{className:`ms-auto flex shrink-0 items-center gap-1.5`,children:[(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>{i(o),r(n.sessionId)},className:Y(`flex items-center gap-1 rounded-full border border-accent-cyan/40 px-2.5 py-0.5`,`text-accent-cyan transition-colors hover:bg-accent-cyan/20 cursor-pointer`),children:[(0,Z.jsx)(ue,{size:11,"aria-hidden":!0}),e(`plan.modeSuggestionApply`,{mode:s})]}),(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>r(n.sessionId),className:Y(`flex items-center gap-1 rounded-full border border-dark-border px-2.5 py-0.5`,`text-dark-muted transition-colors hover:bg-dark-hover cursor-pointer`),children:[(0,Z.jsx)(fe,{size:11,"aria-hidden":!0}),e(`plan.modeSuggestionKeep`,{mode:c})]})]})]})});function Qa(){return bt.get(`/api/models/cached`)}var $a=(0,X.memo)(function(){let{t:e}=H(),n=Ve(),i=Ot(e=>Et(e,n,`model`)),a=Ot(e=>Et(e,n,`modelRef`)),o=Ot(e=>e.setModel),s=Ot(e=>e.setModelRef),c=Qt(e=>e.mode),l=St(e=>e.effort),u=St(e=>e.setEffort),[d,f]=(0,X.useState)([]),[p,m]=(0,X.useState)(!1),{visible:h,phase:g}=Ie(p),v=(0,X.useRef)(null),y=(0,X.useRef)(null),[b,x]=(0,X.useState)(`session`),[S,w]=(0,X.useState)(`user`),T=zt(e=>e.kinds),E=zt(e=>e.load),D=Ae(e=>e.activeSessionId),[k,A]=(0,X.useState)(`models`),[j,M]=(0,X.useState)(``),[ee,te]=(0,X.useState)(``),[ne,N]=(0,X.useState)({}),[re,ae]=(0,X.useState)({}),[oe,se]=(0,X.useState)(!1),[ce,P]=(0,X.useState)(null),[le,F]=(0,X.useState)([]),I=(0,X.useMemo)(()=>on(Array.from(new Set(d.map(e=>e.provider).filter(Boolean))),d,le),[d,le]),L=(0,X.useCallback)(async()=>{try{let e=await J.models.list();e.success&&e.data&&Array.isArray(e.data.models)&&f(e.data.models.filter(e=>e.enabled!==!1))}catch{}},[]),R=(0,X.useCallback)(async()=>{try{let e=await Qa();e.success&&e.data?.providers&&N(e.data.providers)}catch{}},[]),de=(0,X.useCallback)(async t=>{if(t){se(!0),P(null);try{let n=await J.models.byProvider(t);if(n.success&&n.data){let e=n.data.models||[];ae(n=>({...n,[t]:e}))}else P(n.error||e(`chat.loadModelsFailed`))}catch{P(e(`chat.loadModelsFailed`))}finally{se(!1)}}},[e]);(0,X.useEffect)(()=>{L()},[L]);let[fe,pe]=(0,X.useState)(0);(0,X.useEffect)(()=>{let e=()=>{L(),R(),pe(e=>e+1)};return window.addEventListener(`models-updated`,e),()=>window.removeEventListener(`models-updated`,e)},[L,R]);let[z,me]=(0,X.useState)(null),B=(0,X.useCallback)(()=>{let e=v.current;if(!e)return;let t=e.getBoundingClientRect();me({left:Math.max(8,Math.min(t.left,window.innerWidth-400-8)),bottom:Math.max(8,window.innerHeight-t.top+6),maxHeight:Math.max(160,t.top-6-8)})},[]),he=(0,X.useCallback)(()=>{let e=nn(a)||d.find(e=>e.isGlobalDefault)?.provider||I[0]||``;A(`models`),M(e),te(``),P(null),B(),m(!0),R()},[a,d,I,R,B]);(0,X.useEffect)(()=>{p&&j&&de(j)},[p,j,fe,de]),(0,X.useEffect)(()=>{p&&(j&&I.includes(j)||M(I[0]||``))},[p,j,I]),(0,X.useEffect)(()=>{p&&E()},[p,E]),(0,X.useEffect)(()=>{T.length!==0&&(T.some(e=>e.id===S)||w(T[0].id))},[T,S]);let ge=(0,X.useCallback)(()=>m(!1),[]);(0,X.useEffect)(()=>{if(p)return B(),window.addEventListener(`resize`,B),window.addEventListener(`scroll`,B,!0),()=>{window.removeEventListener(`resize`,B),window.removeEventListener(`scroll`,B,!0)}},[p,B]),(0,X.useEffect)(()=>{if(!p)return;let e=e=>{let t=e.target;v.current?.contains(t)||y.current?.contains(t)||ge()},t=e=>{e.key===`Escape`&&ge()};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[p,ge]);let _e=(0,X.useMemo)(()=>{let e=re[j];return e&&e.length>0?e:ne[j]?.models??[]},[re,ne,j]),ve=(0,X.useMemo)(()=>Kt(Zt(j,_e,d),le,j),[j,_e,d,le]),V=(0,X.useMemo)(()=>{let e=ee.trim().toLowerCase();return e?ve.filter(t=>t.id.toLowerCase().includes(e)||t.name.toLowerCase().includes(e)):ve},[ve,ee]),ye=e=>{F(t=>[e,...t.filter(t=>t!==e)].slice(0,20))},be=async t=>{if(ge(),b===`session`&&!D){W.error(e(`chat.sessionModelNoSession`));return}let n=j,r=`${n}:${t.id}`,l=i,u=a;o(t.id),s(r);try{if(!t.configured){let r=await J.models.create({provider:n,model:{id:t.id,name:t.name||t.id}});if(!r.success){o(l),s(u),W.error(r.error||e(`chat.addModelFailed`));return}}if(b===`session`){let i=await J.models.setSessionModel(D,n,t.id);if(!i.success){o(l),s(u),W.error(i.error||e(`chat.switchModelFailed`));return}ye(r),await L();return}if(b===`kind`){let i=zt.getState(),a=T.find(e=>e.id===S)?.labelKey?e(T.find(e=>e.id===S).labelKey):S;if(!await i.saveEntry(S,{...i.entries[S]??{},model:`${n}/${t.id}`,provider:n})){o(l),s(u),W.error(i.error||e(`chat.kindBindFailed`));return}if(D){let r=await J.models.setSessionModel(D,n,t.id);if(!r.success){o(l),s(u),W.error(r.error||e(`chat.switchModelFailed`));return}}ye(r),W.success(e(`chat.kindBoundToast`,{kind:a,model:t.id})),await L();return}let i=Pe(c===`normal`?`act`:c)===`goal`?{goal:r}:{global:r,act:r},a=await J.models.setDefaults(i);if(!a.success){o(l),s(u),W.error(a.error||e(`chat.switchModelFailed`));return}ye(r),await L()}catch{o(l),s(u),W.error(e(`chat.addModelFailed`))}},xe=Pe(c===`normal`?`act`:c),Se=xe===`goal`?`isGoalDefault`:`isActDefault`,Ce=e=>{let t=`${j}:${e.id}`;return a?a===t:i===t||i===e.id},we=d.some(e=>e[Se]===!0),Te=d.find(e=>e.isGlobalDefault),Ee=async()=>{ge();let e=xe===`goal`?{goal:null}:{act:null};try{(await J.models.setDefaults(e)).success&&(Te?(o(Te.id),s(`${Te.provider}:${Te.id}`)):(o(``),s(``)),await L())}catch{}},De=Gt(i,a),Oe=ee.trim().toLowerCase();return(0,Z.jsxs)(`div`,{className:`relative min-w-0`,ref:v,children:[(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>p?ge():he(),className:`flex w-full items-center gap-1 px-2 py-0.5 rounded-full border border-dark-border text-dark-muted whitespace-nowrap transition-colors hover:bg-dark-hover cursor-pointer`,title:De||e(`chat.clickToSelectModel`),"aria-haspopup":`listbox`,"aria-expanded":p,children:[(0,Z.jsx)(ie,{size:12,className:`shrink-0`}),(0,Z.jsx)(`span`,{className:`font-medium max-w-[8rem] truncate`,children:De||e(`chat.selectModel`)}),(0,Z.jsx)(r,{size:12,className:Y(`transition-transform`,p&&`rotate-180`)})]}),h&&(0,Mi.createPortal)((0,Z.jsxs)(`div`,{ref:y,role:`listbox`,"data-phase":g,"aria-label":e(`chat.selectModel`),style:z?{left:z.left,bottom:z.bottom,maxHeight:z.maxHeight}:void 0,className:`fixed z-50 flex w-[400px] max-w-[92vw] flex-col overflow-hidden rounded-lg border border-dark-border bg-dark-overlay ui-surface-overlay shadow-pop ui-overlay-panel-fade`,children:[(0,Z.jsx)(`div`,{role:`tablist`,"aria-label":e(`chat.selectModel`),className:`flex shrink-0 items-center gap-1 px-2 py-1.5 border-b border-dark-border`,children:[{key:`models`,label:e(`chat.selectModel`),Icon:ie},{key:`effort`,label:e(`chat.effort`),Icon:C}].map(({key:e,label:t,Icon:n})=>(0,Z.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":k===e,onClick:()=>A(e),className:Y(`flex items-center gap-1 text-meta px-2 py-0.5 rounded-full border transition-colors cursor-pointer`,k===e?`border-accent-blue text-accent-blue bg-accent-blue/10 font-medium`:`border-dark-border text-dark-muted hover:text-dark-text hover:bg-dark-hover`),children:[(0,Z.jsx)(n,{size:11,className:`shrink-0`}),t]},e))}),k===`models`?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`flex shrink-0 items-center gap-1 px-2 py-1.5 border-b border-dark-border`,children:[{key:`session`,label:e(`chat.applyScopeSession`),hint:e(`chat.sessionScopeHint`)},{key:`kind`,label:e(`chat.applyScopeKind`),hint:e(`chat.kindScopeHint`)},{key:`global`,label:e(`chat.applyScopeGlobal`),hint:e(`chat.globalScopeHint`)}].map(({key:e,label:t,hint:n})=>(0,Z.jsx)(`button`,{type:`button`,onClick:()=>x(e),title:n,className:Y(`text-meta px-2 py-0.5 rounded-full border transition-colors cursor-pointer`,b===e?`border-accent-blue text-accent-blue bg-accent-blue/10 font-medium`:`border-dark-border text-dark-muted hover:text-dark-text hover:bg-dark-hover`),children:t},e))}),b===`kind`&&(0,Z.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5 px-2 py-1.5 border-b border-dark-border text-meta`,children:[(0,Z.jsx)(`span`,{className:`text-dark-muted`,children:e(`chat.kindSelectLabel`)}),(0,Z.jsx)(`select`,{value:S,onChange:e=>w(e.target.value),className:`rounded border border-dark-border bg-dark-surface px-1.5 py-0.5 text-meta text-dark-text`,children:T.map(t=>(0,Z.jsx)(`option`,{value:t.id,children:t.labelKey?e(t.labelKey):t.id},t.id))})]}),we&&(0,Z.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":!1,onClick:Ee,title:e(`chat.followGlobalDefaultHint`),className:`flex w-full shrink-0 items-center gap-2 px-3 py-2 text-start transition-colors hover:bg-dark-hover border-b border-dark-border/60`,children:[(0,Z.jsx)(t,{size:11,className:`shrink-0 text-accent-green`}),(0,Z.jsxs)(`span`,{className:`flex-1 min-w-0`,children:[(0,Z.jsx)(`span`,{className:`text-xs font-semibold text-accent-green`,children:e(`chat.followGlobalDefault`)}),(0,Z.jsx)(`span`,{className:`block text-badge text-dark-muted mt-0.5 truncate`,children:Te?Te.name||Te.id:e(`chat.noGlobalDefault`)})]})]}),I.length>0?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{role:`tablist`,"aria-label":e(`chat.selectProvider`),className:`flex shrink-0 items-center gap-1 px-2 py-1.5 border-b border-dark-border overflow-x-auto custom-scrollbar`,children:I.map(e=>{let t=e===j,n=re[e]?.length||ne[e]?.models.length||0;return(0,Z.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":t,onClick:()=>{M(e),te(``),P(null)},className:Y(`shrink-0 flex items-center gap-1 text-meta px-2 py-0.5 rounded-full border transition-colors cursor-pointer`,t?`border-accent-blue text-accent-blue bg-accent-blue/10 font-medium`:`border-dark-border text-dark-muted hover:text-dark-text hover:bg-dark-hover`),children:[(0,Z.jsx)(`span`,{className:`max-w-[7rem] truncate`,children:e}),n>0&&(0,Z.jsx)(`span`,{className:`text-badge opacity-70`,children:n})]},e)})}),(0,Z.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5 px-2 py-1.5 border-b border-dark-border`,children:[(0,Z.jsx)(O,{size:11,className:`shrink-0 text-dark-muted`}),(0,Z.jsx)(`input`,{value:ee,onChange:e=>te(e.target.value),placeholder:e(`chat.searchModels`),"aria-label":e(`chat.searchModels`),className:`flex-1 min-w-0 bg-dark-surface text-dark-text text-xs px-2 py-1 rounded border border-dark-border placeholder-dark-muted/60 focus:outline-none focus:border-accent-blue`})]}),(0,Z.jsxs)(`div`,{className:`min-h-0 overflow-y-auto py-1 custom-scrollbar`,style:{height:253},children:[oe&&V.length===0&&(0,Z.jsxs)(`div`,{className:`px-3 py-2 text-xs text-dark-muted flex items-center gap-1.5`,children:[(0,Z.jsx)(_,{size:11,className:`animate-spin`}),e(`chat.loadingModels`)]}),!oe&&ce&&V.length===0&&(0,Z.jsx)(`div`,{className:`px-3 py-2 text-xs text-accent-red`,children:ce}),V.map(t=>{let n=Ce(t);return(0,Z.jsx)(`button`,{type:`button`,role:`option`,"aria-selected":n,onClick:()=>{be(t)},className:Y(`w-full shrink-0 flex items-center gap-2 px-3 py-2 text-start transition-colors`,n?`bg-dark-hover`:`hover:bg-dark-hover`),children:(0,Z.jsxs)(`span`,{className:`flex-1 min-w-0`,children:[(0,Z.jsxs)(`span`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,Z.jsx)(`span`,{className:Y(`flex h-3.5 w-3.5 items-center justify-center rounded-full border transition-colors shrink-0`,n?`border-accent-green bg-accent-green/20 text-accent-green`:`border-dark-border text-transparent`),children:(0,Z.jsx)(ue,{size:10,strokeWidth:3})}),(0,Z.jsx)(`span`,{className:`text-xs font-semibold text-dark-text truncate`,children:t.name||t.id})]}),(0,Z.jsxs)(`span`,{className:`flex items-center gap-1 mt-0.5 flex-wrap ps-[1.375rem]`,children:[(0,Z.jsx)(`span`,{className:`text-badge text-dark-muted truncate`,children:t.id}),t.isGlobalDefault&&(0,Z.jsx)(`span`,{className:`text-badge px-1 rounded bg-accent-red/20 text-accent-red`,children:e(`chat.globalDefault`)}),t.isActDefault&&!t.isGlobalDefault&&(0,Z.jsx)(`span`,{className:`text-badge px-1 rounded bg-accent-yellow/20 text-accent-yellow`,children:e(`chat.actDefault`)}),t.isGoalDefault&&(0,Z.jsx)(`span`,{className:`text-badge px-1 rounded bg-accent-purple/20 text-accent-purple`,children:e(`chat.goalDefault`)})]})]})},t.id)}),!oe&&!ce&&V.length===0&&(0,Z.jsx)(`div`,{className:`px-3 py-2 text-xs text-dark-muted`,children:e(Oe?`chat.noModelsFound`:`chat.noProviderModels`)})]})]}):(0,Z.jsx)(`div`,{className:`px-3 py-2 text-xs text-dark-muted`,children:e(`chat.noConfiguredProviders`)})]}):(0,Z.jsx)(Z.Fragment,{children:(0,Z.jsx)(`div`,{className:`shrink-0 py-1`,children:Ct.map(t=>{let n=_t[t],r=t===l;return(0,Z.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":r,onClick:()=>{u(t),ge()},className:Y(`w-full flex items-center gap-2 px-3 py-1.5 text-start transition-colors`,r?`bg-dark-hover`:`hover:bg-dark-hover`),children:[(0,Z.jsx)(`span`,{className:Y(`flex h-4 w-4 items-center justify-center rounded border transition-colors shrink-0`,r?`border-accent-green bg-accent-green/20 text-accent-green`:`border-dark-border text-transparent`),children:(0,Z.jsx)(ue,{size:11,strokeWidth:3})}),(0,Z.jsx)(`span`,{className:`text-xs font-medium ${r?n.color:`text-dark-text`}`,children:e(n.labelKey)})]},t)})})})]}),document.body)]})});function eo(e){let t=(e??``).toLowerCase();return t?t.includes(`android`)?`android`:t.includes(`iphone`)||t.includes(`ipad`)||t.includes(`ipod`)?`ios`:t.includes(`mac`)||t.includes(`darwin`)?`macos`:t.includes(`win`)?`windows`:t.includes(`linux`)||t.includes(`x11`)||t.includes(`cros`)?`linux`:null:null}function to(){if(typeof navigator>`u`)return`unknown`;let e=typeof navigator.userAgent==`string`?navigator.userAgent:``,t=eo(e);if(t===`android`||t===`ios`)return t;let n=navigator.userAgentData,r=eo(n?.platform);if(r)return r;let i=typeof navigator.platform==`string`?navigator.platform:``;return eo(i)===`macos`&&(navigator.maxTouchPoints??0)>1?`ios`:eo(i)??eo(e)??`unknown`}function no(){if(typeof navigator>`u`)return`unknown`;let e=`${navigator.userAgentData?.architecture??``} ${navigator.userAgent??``} ${navigator.platform??``}`.toLowerCase();return/arm|aarch64|apple silicon/.test(e)?`arm64`:/x86_64|amd64|x64|win64|wow64|intel/.test(e)?`x64`:`unknown`}function ro(){return typeof window<`u`&&window.__TAURI__!==void 0}var io={windows:`chat.desktopDownloadOsWindows`,macos:`chat.desktopDownloadOsMacos`,linux:`chat.desktopDownloadOsLinux`,android:`chat.desktopDownloadOsAndroid`,ios:`chat.desktopDownloadOsIos`,unknown:`chat.desktopDownloadOsUnknown`},ao=[`windows`,`macos`,`linux`];function oo(e){if(typeof e!=`number`||!Number.isFinite(e)||e<=0)return null;let t=e/1048576;return t>=10?`${Math.round(t)} MB`:`${t.toFixed(1)} MB`}function so(e){try{return new URL(e).host}catch{return e}}function co(e){return e.url||e.mirrors[0]||``}function lo(e,t){let n=document.createElement(`a`);n.href=e,n.download=t,n.target=`_blank`,n.rel=`noopener`,n.style.display=`none`,document.body.appendChild(n),n.click(),n.remove()}var uo=(0,X.memo)(function({onHandoffToAi:e}){let{t}=H(),[r,i]=(0,X.useState)(`idle`),[a,o]=(0,X.useState)(null),[s,l]=(0,X.useState)(!1),u=(0,X.useRef)(null),d=(0,X.useRef)(!0),f=(0,X.useRef)(!1),p=(0,X.useRef)(!1);(0,X.useEffect)(()=>(d.current=!0,()=>{d.current=!1}),[]);let m=(0,X.useMemo)(()=>to(),[]),h=(0,X.useMemo)(()=>no(),[]),g=(0,X.useMemo)(()=>ro(),[]),_=t(io[m]),y=m===`android`||m===`ios`,b=g?t(`chat.desktopDownloadOtherPlatforms`):t(`chat.desktopDownloadTitle`,{os:_}),x=t(g?`chat.desktopDownloadOtherPlatforms`:`chat.desktopDownloadRecommend`),S=a?.artifacts??{},C=S[m]?.[0],w=a?.page||Be(),T=h===`arm64`&&(m===`windows`||m===`linux`),E=(0,X.useCallback)(()=>{f.current||(f.current=!0,i(`loading`),J.system.desktopDownload().then(e=>{d.current&&(e.success&&e.data?(o(e.data),i(`ready`)):i(`failed`))}).catch(()=>{d.current&&i(`failed`)}))},[]);(0,X.useEffect)(()=>{if(!s)return;let e=e=>{u.current?.contains(e.target)||l(!1)},t=e=>{e.key===`Escape`&&l(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[s]);let D=(0,X.useCallback)(()=>{window.open(w,`_blank`,`noopener`)},[w]),O=(0,X.useCallback)(e=>{let n=co(e);l(!1),n?(lo(n,e.name),e.url&&e.source===`mirror`&&W.info(t(`chat.desktopDownloadViaMirrorToast`))):(D(),W.warning(t(`chat.desktopDownloadUnavailable`)))},[D,t]),k=(0,X.useCallback)(()=>{y?(D(),W.info(t(`chat.desktopDownloadMobileHint`))):r===`failed`?(D(),W.warning(t(`chat.desktopDownloadUnavailable`))):r===`ready`?C?O(C):(D(),W.warning(t(`chat.desktopDownloadUnavailable`))):(p.current=!0,E(),W.info(t(`chat.desktopDownloadFetching`)))},[O,y,D,C,E,r,t]);(0,X.useEffect)(()=>{(r===`ready`||r===`failed`)&&p.current&&(p.current=!1,k())},[r,k]);let A=(0,X.useCallback)(()=>{let n=C?co(C):w,r=(C?.mirrors??[]).slice(0,3).join(` `);e(t(`chat.desktopDownloadPrompt`,{os:_,url:n||w,mirrors:r||t(`chat.desktopDownloadPromptNoMirror`)})),l(!1),W.success(t(`chat.desktopDownloadHandToAiHint`))},[e,_,C,w,t]),j=(e,n,r)=>{let i=oo(e.size),a=ze(e.name);return(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>O(e),className:`flex w-full items-center gap-2 px-3 py-1.5 text-start text-xs text-dark-text transition-colors hover:bg-dark-hover`,children:[(0,Z.jsx)(v,{size:12,className:`shrink-0 text-dark-muted`,"aria-hidden":`true`}),(0,Z.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,children:[(0,Z.jsxs)(`span`,{className:`font-medium`,children:[r?`${t(io[n])} · `:``,a]}),e.source===`mirror`&&(0,Z.jsx)(`span`,{className:`ms-1.5 rounded bg-accent-yellow/15 px-1 py-0.5 text-badge text-accent-yellow`,children:t(`chat.desktopDownloadFromMirror`)}),(0,Z.jsx)(`span`,{className:`mt-0.5 block truncate text-badge text-dark-muted`,children:e.name})]}),i&&(0,Z.jsx)(`span`,{className:`shrink-0 text-badge text-dark-muted`,children:t(`chat.desktopDownloadSize`,{size:i})})]},`${n}-${e.name}`)},M=ao.filter(e=>e!==m&&(S[e]?.length??0)>0),ee=C?.mirrors??[];return(0,Z.jsxs)(`div`,{className:`relative flex shrink-0 items-center`,ref:u,onPointerEnter:E,onFocus:E,children:[(0,Z.jsxs)(`button`,{type:`button`,onClick:k,className:`flex h-8 items-center gap-1.5 rounded-s-full ps-2.5 pe-1.5 text-meta font-medium text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,title:b,"aria-label":b,children:[(0,Z.jsx)(v,{size:14,className:`shrink-0`,"aria-hidden":`true`}),(0,Z.jsx)(`span`,{className:`hidden whitespace-nowrap sm:inline`,children:x})]}),(0,Z.jsx)(`button`,{type:`button`,onClick:()=>{s||E(),l(!s)},className:`flex h-8 w-4 items-center justify-center rounded-e-full text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,title:t(`chat.desktopDownloadMenu`),"aria-label":t(`chat.desktopDownloadMenu`),"aria-haspopup":`menu`,"aria-expanded":s,children:(0,Z.jsx)(c,{size:11,className:Y(`transition-transform`,s&&`rotate-180`),"aria-hidden":`true`})}),s&&(0,Z.jsxs)(`div`,{role:`menu`,"aria-label":t(`chat.desktopDownloadMenu`),className:`absolute bottom-full left-0 mb-1 z-50 w-72 overflow-hidden rounded-lg border border-dark-border bg-dark-overlay ui-surface-overlay shadow-pop`,children:[(0,Z.jsx)(`div`,{className:`border-b border-dark-border px-3 py-1.5 text-badge font-semibold uppercase tracking-wide text-dark-muted`,children:t(`chat.desktopDownloadYourSystem`,{os:_})}),(0,Z.jsx)(`div`,{className:`py-1`,children:(S[m]??[]).length>0?(S[m]??[]).map(e=>j(e,m,!1)):(0,Z.jsx)(`div`,{className:`px-3 py-1.5 text-meta leading-relaxed text-dark-muted`,children:t(y?`chat.desktopDownloadMobileMenuHint`:r===`failed`?`chat.desktopDownloadUnavailable`:`chat.desktopDownloadLoading`)})}),T&&(0,Z.jsx)(`div`,{className:`border-t border-dark-border px-3 py-1.5 text-badge leading-relaxed text-accent-yellow`,children:t(`chat.desktopDownloadArmHint`)}),M.length>0&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`border-y border-dark-border px-3 py-1.5 text-badge font-semibold uppercase tracking-wide text-dark-muted`,children:t(`chat.desktopDownloadOtherSystems`)}),(0,Z.jsx)(`div`,{className:`py-1`,children:[...M].flatMap(e=>(S[e]??[]).map(t=>j(t,e,!0)))})]}),(0,Z.jsx)(`div`,{className:`border-y border-dark-border px-3 py-1.5 text-badge font-semibold uppercase tracking-wide text-dark-muted`,children:t(`chat.desktopDownloadTrouble`)}),(0,Z.jsxs)(`div`,{className:`py-1`,children:[ee.slice(0,2).map(e=>(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>{l(!1),lo(e,C?.name??``)},className:`flex w-full items-center gap-2 px-3 py-1.5 text-start text-xs text-dark-text transition-colors hover:bg-dark-hover`,children:[(0,Z.jsx)(me,{size:12,className:`shrink-0 text-dark-muted`,"aria-hidden":`true`}),(0,Z.jsx)(`span`,{className:`truncate`,children:t(`chat.desktopDownloadViaMirror`,{host:so(e)})})]},e)),(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>{l(!1),D()},className:`flex w-full items-center gap-2 px-3 py-1.5 text-start text-xs text-dark-text transition-colors hover:bg-dark-hover`,children:[(0,Z.jsx)(me,{size:12,className:`shrink-0 text-dark-muted`,"aria-hidden":`true`}),(0,Z.jsx)(`span`,{className:`truncate`,children:t(`chat.desktopDownloadOpenRelease`)})]})]}),(0,Z.jsx)(`div`,{className:`border-t border-dark-border`,children:(0,Z.jsxs)(`button`,{type:`button`,onClick:A,className:`flex w-full items-center gap-2 px-3 py-2 text-start text-xs text-accent-blue transition-colors hover:bg-dark-hover`,children:[(0,Z.jsx)(n,{size:12,className:`shrink-0`,"aria-hidden":`true`}),(0,Z.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Z.jsx)(`span`,{className:`font-medium`,children:t(`chat.desktopDownloadHandToAi`)}),(0,Z.jsx)(`span`,{className:`mt-0.5 block text-badge text-dark-muted`,children:t(`chat.desktopDownloadHandToAiDesc`)})]})]})}),m===`macos`&&(0,Z.jsx)(`div`,{className:`border-t border-dark-border px-3 py-1.5 text-badge leading-relaxed text-dark-muted/80`,children:t(`chat.desktopDownloadMacUnsignedHint`)}),r!==`ready`&&r!==`failed`&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5 border-t border-dark-border px-3 py-1.5 text-badge text-dark-muted`,children:[(0,Z.jsx)(B,{size:10,className:`animate-spin`,"aria-hidden":`true`}),t(`chat.desktopDownloadFetching`)]})]})]})});function fo(e){return e?.find(e=>e.current)??null}function po(e){let t=fo(e),n=e?.[0];return t&&n&&t.path!==n.path?t.path:null}function mo(e){let t=new Map;for(let n of e??[])!n.current&&n.branch&&t.set(n.branch,n.path);return t}var ho=(0,X.memo)(function({compact:e=!1,disabled:t=!1}){let{t:n}=H(),i=sn(e=>e.status),a=sn(e=>e.branches),o=sn(e=>e.branchesLoading),s=sn(e=>e.switchingTo),c=sn(e=>e.fetching),l=sn(e=>e.refreshBranches),u=sn(e=>e.switchBranch),d=sn(e=>e.fetchRemote),[f,p]=(0,X.useState)(!1),[m,h]=(0,X.useState)(``),g=(0,X.useRef)(null),_=(0,X.useRef)(null),v=i?.branch??a?.current;(0,X.useEffect)(()=>{if(!f)return;h(``),l();let e=window.setTimeout(()=>_.current?.focus(),0);return()=>window.clearTimeout(e)},[f,l]),(0,X.useEffect)(()=>{if(!f)return;let e=e=>{g.current&&!g.current.contains(e.target)&&p(!1)},t=e=>{e.key===`Escape`&&p(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[f]);let y=(0,X.useCallback)(async e=>{if(e===v){p(!1);return}let t=await u(e);t?W.error(t):p(!1)},[v,u]),b=(0,X.useCallback)(async()=>{let e=await d();e?W.error(e):W.success(n(`git.fetchDone`))},[d,n]),x=(0,X.useMemo)(()=>{let e=a?.branches??[],t=m.trim().toLowerCase();return t?e.filter(e=>e.toLowerCase().includes(t)):e},[a,m]),S=(0,X.useMemo)(()=>mo(a?.worktrees),[a]),C=po(i?.worktrees),w=a?po(a.worktrees):C;if(!i?.available||!v)return null;let T=s!==null,E=C?`${v}\n${n(`git.inWorktree`,{path:C})}\n${n(`git.clickToSwitchBranch`)}`:`${v}\n${n(`git.clickToSwitchBranch`)}`;return(0,Z.jsxs)(`div`,{className:Y(`min-w-0`,e?`w-full`:`relative max-w-[min(40%,16rem)]`),ref:g,children:[(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>{t||p(e=>!e)},className:Y(`flex w-full items-center gap-1 py-0.5 rounded-full border text-xs whitespace-nowrap transition-colors`,e?`px-1.5`:`px-2`,t?`cursor-not-allowed opacity-60`:`cursor-pointer`,f?`border-accent-blue/40 text-accent-blue bg-accent-blue/10`:`border-dark-border text-dark-muted hover:bg-dark-hover hover:text-dark-text`),title:t?v:E,"aria-label":n(`git.clickToSwitchBranch`),"aria-expanded":f,"aria-haspopup":`menu`,disabled:t,children:[(0,Z.jsx)(xe,{size:12,className:`shrink-0 text-accent-blue/80`,"aria-hidden":`true`}),(0,Z.jsx)(`span`,{className:Y(`truncate font-mono text-meta`,e&&`max-sm:hidden`),children:v}),C&&(0,Z.jsx)(`span`,{title:n(`git.inWorktree`,{path:C}),className:Y(`shrink-0 rounded-sm bg-dark-border/60 px-1 font-mono text-badge text-dark-text`,e&&`max-sm:hidden`),children:n(`git.worktreeBadge`)}),(0,Z.jsx)(r,{size:11,className:Y(`shrink-0 transition-transform`,f&&`rotate-180`),"aria-hidden":`true`})]}),f&&(0,Z.jsxs)(`div`,{role:`menu`,className:`absolute bottom-full right-0 mb-2 w-72 max-w-[calc(100vw-1.5rem)] rounded-xl border border-dark-border bg-dark-overlay ui-surface-overlay shadow-pop z-40 animate-fade-in`,children:[(0,Z.jsxs)(`div`,{className:`relative p-2 border-b border-dark-border`,children:[(0,Z.jsx)(O,{size:12,className:`absolute start-4 top-1/2 -translate-y-1/2 text-dark-muted`,"aria-hidden":`true`}),(0,Z.jsx)(`input`,{ref:_,type:`text`,value:m,onChange:e=>h(e.target.value),placeholder:n(`git.searchBranch`),className:`w-full ps-6 pe-2 py-1 text-xs bg-dark-bg border border-dark-border rounded focus:border-accent-blue focus:outline-none`})]}),(0,Z.jsxs)(`div`,{className:`max-h-[50vh] overflow-y-auto custom-scrollbar py-1`,children:[(0,Z.jsx)(`div`,{className:`px-3 pt-1 pb-1 text-badge font-semibold uppercase tracking-wide text-dark-muted/50 select-none`,children:n(`git.localBranches`)}),w&&(0,Z.jsx)(`div`,{className:`px-3 pb-1 font-mono text-badge text-dark-muted/70 truncate`,title:w,"data-testid":`branch-picker-worktree`,children:n(`git.inWorktree`,{path:w})}),x.length===0?(0,Z.jsx)(`div`,{className:`px-3 py-2 text-xs text-dark-muted`,children:n(o?`git.loading`:`git.noBranchMatch`)}):x.map(e=>{let t=e===v,r=S.get(e);return(0,Z.jsxs)(`button`,{type:`button`,role:`menuitem`,onClick:()=>{y(e)},disabled:T||r!==void 0,title:r?n(`git.branchHeldByWorktree`,{path:r}):void 0,className:Y(`flex w-full items-center gap-2 px-3 py-1.5 text-xs text-start transition-colors`,T?`cursor-wait opacity-60`:r?`cursor-not-allowed opacity-50`:`hover:bg-dark-hover`,t?`text-accent-blue`:r?`text-dark-muted`:`text-dark-text`),children:[(0,Z.jsx)(`span`,{className:`flex-1 truncate font-mono`,children:e}),r&&(0,Z.jsx)(`span`,{className:`shrink-0 rounded border border-dark-border px-1 text-badge text-dark-muted`,children:n(`git.worktreeBadge`)}),s===e?(0,Z.jsx)(F,{size:12,className:`shrink-0 animate-spin`,"aria-hidden":`true`}):t?(0,Z.jsx)(ue,{size:12,className:`shrink-0`,"aria-hidden":`true`}):null]},e)})]}),(0,Z.jsx)(`div`,{className:`border-t border-dark-border p-1`,children:(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>{b()},disabled:c,className:`flex w-full items-center gap-2 rounded px-2 py-1.5 text-xs text-dark-muted hover:bg-dark-hover hover:text-dark-text disabled:cursor-wait disabled:opacity-60`,children:[(0,Z.jsx)(F,{size:12,className:Y(`shrink-0`,c&&`animate-spin`),"aria-hidden":`true`}),(0,Z.jsx)(`span`,{children:n(`git.fetchAndRefresh`)})]})})]})]})}),go=`__files__`,_o=`__sessions__`;function vo(e){return e===`enqueue`?`summarize`:e===`summarize`?`next-step`:e===`next-step`?`direct`:`enqueue`}function yo(e){return e.replace(/[\\/]+$/,``).replace(/\\/g,`/`).toLowerCase()}function bo(e){return[{key:go,label:e.files},{key:_o,label:e.sessions}]}function xo(e){return e?yo(e):`￿`}function So(e,t){return t===`__files__`?e.filter(e=>e.kind===`file`):[...e.filter(e=>e.kind===`session`)].sort((e,t)=>xo(e.kind===`session`?e.dir:``).localeCompare(xo(t.kind===`session`?t.dir:``)))}function Co(e,t,n){if(e.length===0)return t;let r=e.indexOf(t),i=r<0?-1:r;return n?e[(i+1)%e.length]:e[((i<0?e.length:i)-1+e.length)%e.length]}var wo=new Set([`running`]);function To(e){return wo.has(String(e.status||``))?!0:e.live===!0}function Eo(e,t){let n=[];for(let r of e){let e=String(r.id||r.sessionId||``);if(!e||e===t)continue;let i=String(r.title||e.slice(0,8));n.push({kind:`session`,key:e,label:i,detail:e.slice(0,8),dir:String(r.workspaceDir||``),status:r.status===void 0?void 0:String(r.status),updatedAt:r.updatedAt===void 0?void 0:String(r.updatedAt),messageCount:typeof r.messageCount==`number`?r.messageCount:void 0})}return n}function Do(e,t,n=`active`){let r=Eo(e,t);if(n===`all`)return r;let i=new Map(e.map(e=>[String(e.id||e.sessionId||``),e]));return r.filter(e=>{let t=i.get(e.key);return t?To(t):!1})}var Oo={enqueue:`chat.mentionDeliveryEnqueue`,summarize:`chat.mentionDeliverySummarize`,"next-step":`chat.mentionDeliveryNextStep`,direct:`chat.mentionDeliveryDirect`},ko={enqueue:`text-dark-muted hover:text-dark-text hover:bg-dark-hover`,summarize:`text-dark-muted hover:text-dark-text hover:bg-dark-hover`,"next-step":`bg-accent-blue/20 text-accent-blue font-medium`,direct:`bg-accent-green/20 text-accent-green font-medium`};function Ao(e){return e===`running`?`bg-accent-green/15 text-accent-green`:e===`paused`||e===`interrupted`||e===`error`?`bg-accent-yellow/15 text-accent-yellow`:`bg-dark-hover text-dark-muted`}function jo(e){return e===`running`?`chat.mentionStatusRunning`:e===`paused`||e===`interrupted`?`chat.mentionStatusPaused`:e===`error`?`chat.mentionStatusError`:e===`stopped`?`chat.mentionStatusStopped`:`chat.mentionStatusIdle`}function Mo(e){return e?/^\d{12,}$/.test(e)?Number(e):e:0}function No({isOpen:e,items:t,selectedIndex:n,query:r,isSearching:i,onSelect:a,onHover:s,selectedCount:c=0,onFinish:l,tabs:u,activeTab:d,onTabChange:f,scope:p=`active`,onToggleScope:m,deliveryMode:h=`enqueue`,onToggleDelivery:g}){let{t:_}=H(),{visible:v,phase:y}=Ie(e);if(!v)return null;let b=!!(f&&u&&u.length>1);return(0,Z.jsxs)(`div`,{className:`absolute bottom-full left-0 right-0 mb-2 bg-dark-overlay ui-surface-overlay border border-dark-border rounded-lg shadow-pop overflow-hidden z-50 ui-overlay-panel-fade`,"data-phase":y,children:[(0,Z.jsxs)(`div`,{className:`max-h-60 overflow-y-auto custom-scrollbar`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 text-meta text-dark-muted border-b border-dark-border bg-dark-surface`,children:[(0,Z.jsx)(`span`,{className:`font-medium text-dark-text`,children:r?`@${r}`:`@ ${_(`chat.mentionFilesGroup`)} / ${_(`chat.mentionSessionsGroup`)}`}),(0,Z.jsxs)(`span`,{className:`opacity-70 flex items-center gap-2`,children:[c>0&&(0,Z.jsx)(`span`,{className:`px-1.5 py-0.5 rounded-full bg-accent-blue/20 text-accent-blue font-medium`,children:_(`chat.selectedCountShort`,{n:c})}),(0,Z.jsx)(`span`,{children:_(b?`chat.mentionTabHint`:`chat.fileMentionHelpMulti`)})]})]}),b&&(0,Z.jsx)(`div`,{className:`flex items-center gap-1 px-3 py-1.5 border-b border-dark-border bg-dark-surface overflow-x-auto custom-scrollbar`,children:u.map(e=>{let t=e.key===d;return(0,Z.jsx)(`button`,{type:`button`,onMouseDown:t=>{t.preventDefault(),f(e.key)},className:`px-2 py-0.5 rounded text-meta whitespace-nowrap transition-colors ${t?`bg-accent-blue/20 text-accent-blue font-medium`:`text-dark-muted hover:text-dark-text hover:bg-dark-hover`}`,children:e.label},e.key)})}),t.length===0?(0,Z.jsx)(`div`,{className:`px-3 py-6 text-center text-dark-muted text-xs flex flex-col items-center gap-1`,children:i?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(B,{size:16,className:`animate-spin`}),(0,Z.jsx)(`span`,{children:_(`chat.searchingFiles`)})]}):(0,Z.jsx)(`span`,{children:_(b&&d!==`__files__`?`chat.mentionEmptySessions`:`chat.noMatchingFiles`)})}):t.map((e,r)=>{let i=t[r-1],c=i&&i.kind===`session`?i.dir||``:null,l=e.kind===`session`?e.dir||``:null,u=!i||i.kind!==e.kind||l!==null&&c!==l,d=l===null?_(`chat.mentionFilesGroup`):`📁 ${l||_(`chat.mentionTabUnknownDir`)}`;return(0,Z.jsxs)(`div`,{children:[u&&(0,Z.jsx)(`div`,{className:`px-3 pt-2 pb-1 text-badge uppercase tracking-wide text-dark-muted/70 bg-dark-surface/40 truncate`,title:d,children:d}),(0,Z.jsxs)(`button`,{onClick:()=>a(e),onMouseEnter:()=>s(r),className:`w-full px-3 py-1.5 flex items-center gap-2 text-start text-xs transition-colors border-s-2 ${r===n?`bg-accent-blue/20 text-accent-blue border-accent-blue`:`hover:bg-dark-hover text-dark-text border-transparent`}`,children:[e.kind===`session`?(0,Z.jsx)(N,{size:12,className:`text-accent-blue shrink-0`}):e.isDir?(0,Z.jsx)(o,{size:12,className:`text-accent-yellow shrink-0`}):(0,Z.jsx)(I,{size:12,className:`text-dark-muted shrink-0`}),(0,Z.jsx)(`span`,{className:`truncate`,children:e.label}),e.kind===`session`?(0,Z.jsxs)(`span`,{className:`ms-auto flex shrink-0 items-center gap-1.5`,children:[e.detail&&(0,Z.jsx)(`span`,{className:`text-badge text-dark-muted truncate`,children:e.detail}),e.updatedAt&&(0,Z.jsx)(`span`,{className:`text-badge text-dark-muted/70`,children:Qe(Mo(e.updatedAt),Date.now(),_)}),e.messageCount!==void 0&&(0,Z.jsx)(`span`,{className:`text-badge text-dark-muted/70`,children:_(`chat.mentionMsgCount`,{count:e.messageCount})}),(0,Z.jsx)(`span`,{className:`px-1.5 py-0.5 rounded-full text-badge whitespace-nowrap ${Ao(e.status)}`,children:_(jo(e.status))})]}):e.detail&&(0,Z.jsx)(`span`,{className:`text-badge text-dark-muted truncate ms-auto`,children:e.detail})]})]},e.key)})]}),l&&(0,Z.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-t border-dark-border bg-dark-surface`,children:[(0,Z.jsxs)(`span`,{className:`flex items-center gap-2 text-badge text-dark-muted`,children:[b&&m&&(0,Z.jsxs)(`button`,{type:`button`,onMouseDown:e=>e.preventDefault(),onClick:m,className:`px-1.5 py-0.5 rounded text-badge transition-colors ${p===`all`?`bg-accent-blue/20 text-accent-blue font-medium`:`text-dark-muted hover:text-dark-text hover:bg-dark-hover`}`,title:_(`chat.mentionScopeHint`),children:[_(`chat.mentionScopeLabel`),_(p===`all`?`chat.mentionScopeAll`:`chat.mentionScopeActive`)]}),b&&g&&(0,Z.jsxs)(`button`,{type:`button`,onMouseDown:e=>e.preventDefault(),onClick:g,className:`px-1.5 py-0.5 rounded text-badge transition-colors ${ko[h]}`,title:_(`chat.mentionDeliveryHint`),children:[_(`chat.mentionDeliveryLabel`),_(Oo[h])]}),(0,Z.jsx)(`span`,{children:c>0?_(`chat.selectedFilesCount`,{n:c}):_(`chat.enterInsertMulti`)})]}),(0,Z.jsx)(Le,{variant:`accent`,size:`sm`,onClick:l,children:_(`chat.finishMention`)})]})]})}function Po({open:e,onClose:t,onSelect:n}){let{t:r}=H(),[i,a]=(0,X.useState)([]),[o,s]=(0,X.useState)(!1),[c,l]=(0,X.useState)(``);(0,X.useEffect)(()=>{e&&(l(``),s(!0),J.skills.list().then(e=>{let t=Array.isArray(e.data)?e.data:[];a(t.filter(e=>e.enabled!==!1))}).catch(()=>a([])).finally(()=>s(!1)))},[e]);let u=(0,X.useMemo)(()=>{let e=c.trim().toLowerCase();return e?i.filter(t=>[t.id,t.name,t.description,t.category,...t.tags||[]].join(` `).toLowerCase().includes(e)):i},[i,c]);return(0,Z.jsx)(Ht,{isOpen:e,onClose:t,title:r(`skills.pickTitle`),size:`lg`,children:(0,Z.jsxs)(`div`,{className:`space-y-3`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 rounded-lg bg-dark-bg border border-dark-border focus-within:border-accent-blue`,children:[(0,Z.jsx)(O,{size:14,className:`text-dark-muted shrink-0`}),(0,Z.jsx)(`input`,{value:c,onChange:e=>l(e.target.value),placeholder:r(`skills.pickPlaceholder`),autoFocus:!0,className:`flex-1 bg-transparent outline-none text-sm placeholder-dark-muted/60`}),o&&(0,Z.jsx)(F,{size:13,className:`animate-spin text-dark-muted`})]}),o?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,Z.jsx)(F,{size:20,className:`animate-spin text-accent-blue`})}):u.length===0?(0,Z.jsx)(`div`,{className:`text-center py-12 text-sm text-dark-muted`,children:r(`skills.pickEmpty`)}):(0,Z.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-2`,children:u.map(e=>(0,Z.jsxs)(`button`,{onClick:()=>n(e),className:`text-start rounded-lg border border-dark-border p-3 flex flex-col gap-1 transition-colors hover:border-accent-blue/50 hover:bg-dark-hover`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-2 min-w-0`,children:[(0,Z.jsxs)(`span`,{className:`font-medium text-sm truncate`,children:[e.icon||`⭐`,` `,e.name]}),(0,Z.jsx)(`span`,{className:`text-badge px-1.5 py-0.5 rounded bg-dark-bg border border-dark-border text-dark-muted shrink-0`,children:e.injection||`lazy`})]}),(0,Z.jsxs)(`div`,{className:`text-xs text-dark-muted truncate font-mono`,children:[`$`,e.id]}),e.description&&(0,Z.jsx)(`div`,{className:`text-xs text-dark-muted line-clamp-2`,children:e.description}),(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-2 mt-1`,children:[(0,Z.jsx)(`span`,{className:`text-badge px-1.5 py-0.5 rounded bg-dark-bg border border-dark-border text-dark-muted truncate`,children:e.category||`—`}),(0,Z.jsxs)(`span`,{className:`flex items-center gap-1 text-meta text-accent-blue shrink-0`,children:[(0,Z.jsx)(ve,{size:11}),r(`skills.pickUse`)]})]})]},e.id))})]})})}function Fo({isOpen:e,items:t,selectedIndex:r,query:i,isLoading:a,onSelect:o,onHover:s}){let{t:c}=H(),{visible:l,phase:u}=Ie(e);return l?(0,Z.jsx)(`div`,{className:`absolute bottom-full left-0 right-0 mb-2 bg-dark-overlay ui-surface-overlay border border-dark-border rounded-lg shadow-pop overflow-hidden z-50 ui-overlay-panel-fade`,"data-phase":u,children:(0,Z.jsxs)(`div`,{className:`max-h-60 overflow-y-auto custom-scrollbar`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 text-meta text-dark-muted border-b border-dark-border bg-dark-surface`,children:[(0,Z.jsx)(`span`,{className:`font-medium text-dark-text truncate`,children:i?`$${i}`:c(`chat.skillMenuTitle`)}),(0,Z.jsx)(`span`,{className:`opacity-70 shrink-0`,children:c(`chat.skillMenuHint`)})]}),t.length===0?(0,Z.jsx)(`div`,{className:`px-3 py-6 text-center text-dark-muted text-xs flex flex-col items-center gap-1`,children:a?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(B,{size:16,className:`animate-spin`}),(0,Z.jsx)(`span`,{children:c(`chat.skillMenuLoading`)})]}):(0,Z.jsx)(`span`,{children:c(`chat.skillMenuEmpty`)})}):t.map((e,t)=>(0,Z.jsxs)(`button`,{onClick:()=>o(e),onMouseEnter:()=>s(t),className:`w-full px-3 py-1.5 flex items-center gap-2 text-start text-xs transition-colors border-s-2 ${t===r?`bg-accent-blue/20 text-accent-blue border-accent-blue`:`hover:bg-dark-hover text-dark-text border-transparent`}`,children:[(0,Z.jsx)(`span`,{className:`shrink-0`,"aria-hidden":`true`,children:e.icon||(0,Z.jsx)(n,{size:12,className:`text-accent-blue`})}),(0,Z.jsx)(`span`,{className:`truncate`,children:e.name||e.id}),(0,Z.jsxs)(`span`,{className:`text-badge font-mono text-dark-muted shrink-0`,children:[`$`,e.id]}),e.description&&(0,Z.jsx)(`span`,{className:`text-badge text-dark-muted truncate ms-auto`,children:e.description})]},e.id))]})}):null}function Io(e){for(let t=e.length-1;t>=0;t--)if(e[t]===`$`){if(t>0&&/\w/.test(e.charAt(t-1)))continue;return t}return-1}function Lo(e,t){let n=t.filter(e=>e.enabled!==!1);if(!e)return`prefix`;for(let t of n)if(t.id.toLowerCase()===e)return`exact`;for(let t of n)if(t.id.toLowerCase().startsWith(e))return`prefix`;return null}function Ro(e,t,n){let r=e.slice(0,t),i=Io(r);if(i===-1)return{active:!1,query:``,start:-1};let a=r.slice(i+1);if(a.length>=200||!/^[\w.\-\\/\s]*$/.test(a))return{active:!1,query:``,start:-1};let o=(a.split(/[\s/\\]/)[0]??``).toLowerCase();return(n.length===0?`prefix`:Lo(o,n))===`prefix`?{active:!0,query:a,start:i}:{active:!1,query:``,start:-1}}function zo(e,t){let n=t.trim().toLowerCase();if(!n)return 1;let r=e.id.toLowerCase(),i=(e.name||``).toLowerCase(),a=(e.description||``).toLowerCase(),o=(e.tags||[]).join(` `).toLowerCase();return r===n||i===n?100:r.startsWith(n)?90:i.startsWith(n)?80:r.includes(n)?60:i.includes(n)?55:o.includes(n)?40:a.includes(n)?30:0}function Bo(e,t){let n=t.replace(/^\$/,``).trim().split(/\s+/)[0]??``;return e.filter(e=>e.enabled!==!1).map(e=>({skill:e,score:zo(e,n)})).filter(e=>e.score>0).sort((e,t)=>t.score-e.score||e.skill.id.localeCompare(t.skill.id)).map(e=>e.skill)}var Vo=class extends Error{code;constructor(e,t){super(t??e),this.code=e,this.name=`ScreenshotError`}};function Ho(e){let t=document.createElement(`canvas`);t.width=e.videoWidth,t.height=e.videoHeight;let n=t.getContext(`2d`);if(!n)throw new Vo(`failed`,`Canvas 2D context unavailable`);return n.drawImage(e,0,0,t.width,t.height),new Promise((e,n)=>{t.toBlob(t=>t?e(t):n(new Vo(`failed`,`canvas.toBlob returned null`)),`image/png`)})}async function Uo(){if(!navigator.mediaDevices?.getDisplayMedia)throw new Vo(`unsupported`,`Screen capture is not supported in this browser`);let e=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1}).catch(e=>{let t=e instanceof DOMException?e.name:``;throw t===`NotAllowedError`||t===`AbortError`?new Vo(`cancelled`,`User dismissed the screen picker`):new Vo(`failed`,e instanceof Error?e.message:String(e))}),t=e.getTracks();try{let t=document.createElement(`video`);t.srcObject=e,t.muted=!0,t.playsInline=!0,await t.play().catch(()=>void 0),t.readyState<2&&await new Promise(e=>{let n=()=>e();t.addEventListener(`loadeddata`,n,{once:!0}),setTimeout(n,1e3)}),await new Promise(e=>requestAnimationFrame(()=>e()));let n=t.videoWidth,r=t.videoHeight;if(!n||!r)throw new Vo(`failed`,`Captured video frame has no pixels`);let i=await Ho(t);t.srcObject=null;let a=new Date().toISOString().replace(/[:.]/g,`-`).slice(0,19);return new File([i],`screenshot-${a}.png`,{type:`image/png`})}finally{for(let e of t)e.stop()}}var Wo=16e3;function Go(){let e=[`audio/webm;codecs=opus`,`audio/webm`,`audio/mp4`];if(typeof MediaRecorder>`u`)return``;for(let t of e)if(MediaRecorder.isTypeSupported(t))return t;return``}async function Ko(e){if(e.sampleRate===Wo&&e.numberOfChannels===1)return e.getChannelData(0);let t=Math.max(1,Math.ceil(e.length*Wo/e.sampleRate)),n=new OfflineAudioContext(1,t,Wo),r=n.createBufferSource();return r.buffer=e,r.connect(n.destination),r.start(0),(await n.startRendering()).getChannelData(0)}function qo(e,t){let n=new ArrayBuffer(44+e.length*2),r=new DataView(n),i=(e,t)=>{for(let n=0;n<t.length;n++)r.setUint8(e+n,t.charCodeAt(n))};i(0,`RIFF`),r.setUint32(4,36+e.length*2,!0),i(8,`WAVE`),i(12,`fmt `),r.setUint32(16,16,!0),r.setUint16(20,1,!0),r.setUint16(22,1,!0),r.setUint32(24,t,!0),r.setUint32(28,t*2,!0),r.setUint16(32,2,!0),r.setUint16(34,16,!0),i(36,`data`),r.setUint32(40,e.length*2,!0);let a=44;for(let t=0;t<e.length;t++){let n=Math.max(-1,Math.min(1,e[t]??0));r.setInt16(a,n<0?n*32768:n*32767,!0),a+=2}return n}function Jo(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{let e=String(r.result||``),n=e.indexOf(`,`);t(n>=0?e.slice(n+1):e)},r.onerror=()=>n(r.error),r.readAsDataURL(e)})}function Yo(e){let[t,n]=(0,X.useState)(`idle`),[r,i]=(0,X.useState)(0),a=(0,X.useRef)(null),o=(0,X.useRef)(null),s=(0,X.useRef)([]),c=(0,X.useRef)(null),l=(0,X.useRef)(0),u=(0,X.useCallback)(()=>{o.current?.getTracks().forEach(e=>e.stop()),o.current=null},[]),d=(0,X.useCallback)(()=>{c.current&&=(clearInterval(c.current),null)},[]);return(0,X.useEffect)(()=>()=>{d(),a.current&&a.current.state!==`inactive`&&a.current.stop(),u()},[d,u]),{state:t,elapsedMs:r,start:(0,X.useCallback)(async()=>{if(t!==`idle`)return;if(typeof MediaRecorder>`u`)throw Error(`当前浏览器不支持语音输入(需要 MediaRecorder)。请使用 Chrome/Edge/Firefox 或桌面版。`);let e;try{e=await navigator.mediaDevices.getUserMedia({audio:{channelCount:1,echoCancellation:!0,noiseSuppression:!0}})}catch(e){throw e instanceof DOMException&&e.name===`NotAllowedError`?Error(`麦克风权限被拒绝。请在浏览器地址栏允许麦克风权限后重试。`):Error(`无法访问麦克风:`+(e instanceof Error?e.message:String(e)))}o.current=e,s.current=[];let r=new MediaRecorder(e,Go()?{mimeType:Go()}:void 0);r.ondataavailable=e=>{e.data&&e.data.size>0&&s.current.push(e.data)},a.current=r,r.start(),l.current=Date.now(),i(0),n(`recording`),c.current=setInterval(()=>i(Date.now()-l.current),100)},[t]),stop:(0,X.useCallback)(async()=>{let t=a.current;if(!t||t.state===`inactive`)throw Error(`当前没有进行中的录音。`);let r=new Promise(e=>{t.onstop=()=>e()});t.stop(),await r,d(),u(),a.current=null,n(`transcribing`);try{let t=new Blob(s.current,{type:Go()||`audio/webm`});s.current=[];let r=await t.arrayBuffer(),i=new AudioContext,a;try{a=await i.decodeAudioData(r)}finally{i.close()}if(a.duration<.25)return n(`idle`),``;let o=qo(await Ko(a),Wo),c=await Jo(new Blob([o],{type:`audio/wav`})),l=await J.stt.transcribe(e,c,`wav`);if(!l.success)throw Error(l.error||`语音转写失败`);return l.data?.text??``}finally{n(`idle`)}},[e,d,u]),cancel:(0,X.useCallback)(()=>{let e=a.current;e&&e.state!==`inactive`&&e.stop(),a.current=null,s.current=[],d(),u(),n(`idle`)},[d,u])}}var Xo=({isOpen:e,commands:t,selectedIndex:n,filter:r,onSelect:i,onHover:a,containerRef:o})=>{let{t:s}=H();return!e||t.length===0?null:(0,Z.jsxs)(`div`,{ref:o,className:`absolute bottom-full left-0 right-0 mb-2 bg-dark-overlay ui-surface-overlay border border-dark-border rounded-lg shadow-pop overflow-hidden z-50 max-h-72 overflow-y-auto custom-scrollbar`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 text-meta text-dark-muted border-b border-dark-border bg-dark-surface`,children:[(0,Z.jsx)(`span`,{className:`font-medium text-dark-text`,children:r?`/${r}`:s(`slashCommands.quickCommands`)}),(0,Z.jsx)(`span`,{className:`opacity-70`,children:s(`slashCommands.help`)})]}),t.map((e,t)=>(0,Z.jsxs)(`button`,{"data-index":t,onClick:()=>i(e),onMouseEnter:()=>a(t),className:`w-full px-3 py-2 flex items-start gap-3 text-start transition-colors border-s-2 ${t===n?`bg-accent-blue/10 border-accent-blue`:`border-transparent hover:bg-dark-hover`}`,children:[(0,Z.jsx)(`span`,{className:`text-lg leading-none shrink-0`,"aria-hidden":`true`,children:e.icon}),(0,Z.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsxs)(`span`,{className:`text-sm font-medium text-dark-text`,children:[`/`,e.name]}),e.args&&(0,Z.jsx)(`span`,{className:`text-xs text-dark-muted`,children:e.args}),!e.local&&(0,Z.jsx)(`span`,{className:`text-badge px-1.5 py-0.5 rounded bg-accent-blue/20 text-accent-blue shrink-0`,children:s(`slashCommands.backend`)})]}),(0,Z.jsx)(`div`,{className:`text-xs text-dark-muted truncate`,children:e.description})]}),t===n&&(0,Z.jsx)(ge,{size:14,className:`text-dark-muted shrink-0 mt-0.5`,"aria-hidden":`true`})]},e.id))]})},Zo=`xlsx.xls.csv.docx.txt.md.mdx.rst.adoc.ts.tsx.js.jsx.mjs.cjs.mts.cts.json.jsonc.yaml.yml.toml.xml.html.css.scss.less.py.rb.go.rs.java.kt.swift.c.h.cpp.hpp.cc.cs.sh.bash.zsh.ps1.bat.cmd.sql.graphql.proto.vue.svelte.astro.env.gitignore.gitattributes.editorconfig`.split(`.`),Qo=RegExp(`(?:\\.(${Zo.join(`|`)})|dockerfile|makefile)$`,`i`),$o=[`png`,`jpg`,`jpeg`,`webp`,`gif`,`bmp`,`svg`],es=Object.freeze([]),ts=RegExp(`\\.(${$o.join(`|`)})$`,`i`),ns=10485760,rs=Zo.map(e=>`.${e}`).join(`,`)+`,.Dockerfile,.Makefile,`+$o.map(e=>`.${e}`).join(`,`),is=`.agent/attachments`,as=52428800,os=10,ss=`chat-col`,cs=72,ls=.7,us=`deepseekcode.composerPref`,ds=550;function fs(){try{let e=window.localStorage.getItem(us);return e===`collapsed`||e===`expanded`?e:`auto`}catch{return`auto`}}function ps(){return typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(hover: hover) and (pointer: fine)`).matches}var ms=/["<>]/g;function hs(e){return`<image name="${(e||`image`).replace(ms,``)}" />`}var gs=e=>/\.xlsx?$/i.test(e)?l:/\.(csv|docx|txt|md|mdx|rst|adoc|json|jsonc|yaml|yml|toml|xml|html|css|scss|less|env|gitignore|gitattributes|editorconfig)$/i.test(e)?x:/\.(ts|tsx|js|jsx|mjs|cjs|mts|cts|py|rb|go|rs|java|kt|swift|c|h|cpp|hpp|cc|cs|sh|bash|zsh|ps1|bat|cmd|sql|graphql|proto|vue|svelte|astro|dockerfile|makefile)$/i.test(e)?m:I,_s=50,vs=5e3,ys={enqueue:`chat.mentionDeliveryEnqueue`,summarize:`chat.mentionDeliverySummarize`,"next-step":`chat.mentionDeliveryNextStep`,direct:`chat.mentionDeliveryDirect`},bs={enqueue:`text-dark-muted hover:bg-dark-hover hover:text-dark-text`,summarize:`text-dark-muted hover:bg-dark-hover hover:text-dark-text`,"next-step":`bg-accent-blue/10 text-accent-blue`,direct:`bg-accent-blue/10 text-accent-blue`};function xs(e,t){let n=e.slice(0,t),r=n.lastIndexOf(`@`);if(r===-1)return{active:!1,query:``,start:-1};let i=n.slice(r+1);return/^[\p{L}\p{N}_\-./]*$/u.test(i)?{active:!0,query:i,start:r}:{active:!1,query:``,start:-1}}function Ss(e,t){let n=e.lastIndexOf(`
24
+ `,t-1)+1,r=e.slice(n,t);return!r.startsWith(`/`)||/\s/.test(r)?{active:!1,query:``}:{active:!0,query:r.slice(1)}}var Cs=(0,X.memo)(function({sessionId:e,onSend:t,onRunShell:i,onStop:a,onPause:o,onResume:l,slashOptions:d,workspaceDir:f,onWorkspaceSelect:p,onNewSessionInDir:m,focusRequest:_,inputDisabled:v,inputDisabledHint:b}){let{t:x}=H(),S=U(t=>t.sessionInputs?.[e]??``),C=U(e=>e.setSessionInput),w=U(t=>t.generatingSessions?.includes(e)??!1),T=U(t=>t.pausedSessions?.includes(e)??!1),E=U(t=>t.sessionSuggestions?.[e]),D=U(t=>t.sessionTurns?.[e]??``),O=U(e=>e.clearSessionSuggestion),A=!S&&!w&&!v&&E&&(E.turnId??``)===D?E.text:``,M=U(t=>t.pendingBySession?.[e])??es,ee=M.length,ne=U(t=>t.draftRestores?.[e]),N=(0,X.useRef)(null),[re,ie]=(0,X.useState)(null),ae=(0,X.useRef)(null),[oe,se]=(0,X.useState)(!1),ce=(0,X.useRef)(null),P=(0,X.useRef)(!1),le=(0,X.useRef)(0),F=en(t=>t.attachmentsBySession[e])??an,I=(0,X.useRef)(e);I.current=e;let L=(0,X.useCallback)(e=>en.getState().setSessionAttachments(I.current,e),[]),[R,pe]=(0,X.useState)(!1),[me,he]=(0,X.useState)(!1),[ge,_e]=(0,X.useState)(!1),[V,be]=(0,X.useState)(!1),[xe,Ce]=(0,X.useState)(``),[we,Te]=(0,X.useState)(0),[Ee,De]=(0,X.useState)([]),[Oe,ke]=(0,X.useState)(!1),Ae=(0,X.useRef)(-1),je=(0,X.useRef)([]);je.current=Ee;let Pe=(0,X.useRef)(null),Fe=(0,X.useCallback)(()=>{let t=U.getState().clearPending(e);t>0&&W.info(x(`toast.queueRevoked`,{count:t}))},[e,x]),Ie=(0,X.useCallback)(t=>{let n=U.getState();n.promotePending(e,t),!n.isGenerating(e)&&!n.isPaused(e)?Ne(e):W.info(x(`toast.queuePromoted`))},[e,x]),Le=(0,X.useCallback)(t=>{let n=U.getState(),r=n.removePending(e,t);r&&(Me(e,r)?W.info(x(`toast.queueSteered`)):n.enqueuePending(e,r.content,r.files,r.images,r.display,r.skipAddUserMessage,r.requeuedFromMessageId))},[e,x]),Re=(0,X.useCallback)(t=>{U.getState().removePending(e,t)&&W.info(x(`toast.queueRemoved`))},[e,x]),G=(0,X.useCallback)(t=>{C(e,t)},[e,C]),ze=(0,X.useCallback)(()=>{let e=E?.text??``;e&&(G(e),requestAnimationFrame(()=>{let t=N.current;t&&(t.focus(),t.selectionStart=t.selectionEnd=e.length)}))},[G,E]),Be=(0,X.useCallback)(t=>{let n=[],r=[],i=(t.display?.content??t.content).replace(/<attachment path="([^"]*)"\s*\/>/g,(e,t)=>(n.push(t),``)).replace(/<image name="([^"]*)"\s*\/>/g,(e,t)=>(r.push(t),``)).trim();if(t.display)for(let e of t.display.pastes){let t=hn(e.content),n=yn(e.content),r=n>0?`[Pasted text #${t} +${n} lines]`:`[Pasted text #${t}]`;i=i.replace(RegExp(`\\[Pasted text #${e.id}(?:\\s*\\+\\d+ lines?)?\\]`,`g`),r)}for(let e of t.files??[])Kt.current.add(e);let a=n.map((e,t)=>({id:`restored-att-${Date.now()}-${t}`,name:e.split(`/`).pop()||e,size:0,uploading:!1,path:e}));(t.images??[]).forEach((e,t)=>{a.push({id:`restored-img-${Date.now()}-${t}`,name:r[t]||`image-${t+1}.png`,size:Math.max(1,Math.round((e.length-e.indexOf(`,`)-1)*3/4)),uploading:!1,imageDataUri:e})}),a.length>0&&L(e=>[...e,...a].slice(-10));let o=U.getState().getSessionInput(e);G(o.trim()?`${o.trimEnd()}\n\n${i}`:i),requestAnimationFrame(()=>N.current?.focus())},[e,G]),Ve=(0,X.useCallback)(t=>{let n=U.getState().removePending(e,t);n&&Be({content:n.content,...n.display?{display:n.display}:{},...n.images?.length?{images:n.images}:{},...n.files?.length?{files:n.files}:{}})},[e,Be]);(0,X.useEffect)(()=>{if(!ne)return;let t=U.getState().takeDraftRestore(e);t&&Be(t)},[e,ne,Be]);let He=(0,X.useCallback)(e=>e.replace(/<attachment path="[^"]*"\s*\/>/g,``).replace(/<image name="[^"]*"\s*\/>/g,``).trim(),[]),[Ue,We]=(0,X.useState)(ft),[Ge,Ke]=(0,X.useState)(!1),qe=(0,X.useRef)(null),Je=(0,X.useCallback)(e=>{We(e),gt(e),Ke(!1)},[]);(0,X.useEffect)(()=>{if(!Ge)return;let e=e=>{qe.current&&!qe.current.contains(e.target)&&Ke(!1)},t=e=>{e.key===`Escape`&&Ke(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[Ge]);let K=Yo(Ue),Ye=(0,X.useRef)(null),Xe=(0,X.useCallback)(async()=>{try{if(!Ye.current){let e=await J.stt.status();e.success&&e.data&&(Ye.current=e.data)}let e=Ye.current;if(!e)return!0;if(e.service!==`ok`&&e.service!==`stopped`)return W.warning(x(`stt.backendMissing`)),window.dispatchEvent(new CustomEvent(`switch-tab`,{detail:{tab:`settings`,section:`stt`}})),!1;let t=e.backends?.[Ue];return t&&!t.installed?(W.warning(x(`stt.backendMissing`)),window.dispatchEvent(new CustomEvent(`switch-tab`,{detail:{tab:`settings`,section:`stt`}})),!1):!0}catch{return!0}},[x,Ue]);(0,X.useEffect)(()=>{let e=()=>{Ye.current=null};return window.addEventListener(`stt-backends-changed`,e),()=>window.removeEventListener(`stt-backends-changed`,e)},[]),(0,X.useEffect)(()=>{let e=e=>{let t=mt(e.detail?.lang);We(t)};return window.addEventListener(`stt-lang-changed`,e),()=>window.removeEventListener(`stt-lang-changed`,e)},[]);let Ze=(0,X.useCallback)(e=>{let t=N.current,n=t?.selectionStart??S.length,r=S.slice(0,n)+e+S.slice(n);G(r),requestAnimationFrame(()=>{t?.focus();let r=n+e.length;t&&(t.selectionStart=t.selectionEnd=r)})},[S,G]);(0,X.useEffect)(()=>{if(!_)return;let e=N.current;if(!e)return;e.focus();let t=e.value.length;e.selectionStart=t,e.selectionEnd=t},[_]);let Qe=(0,X.useCallback)(async()=>{if(w)W.info(x(`stt.generatingTitle`));else if(K.state===`recording`)try{let e=await K.stop();e?Ze(e):W.info(x(`stt.noSpeech`))}catch(e){W.error(e instanceof Error?e.message:String(e))}else if(K.state===`idle`&&await Xe())try{await K.start()}catch(e){W.error(e instanceof Error?e.message:String(e))}},[K,Ze,Xe,x,w]),{isOpen:$e,filter:et,filteredCommands:tt,selectedIndex:nt,setSelectedIndex:rt,selectNext:it,selectPrev:at,executeCommand:ot,openMenu:st,closeMenu:q,setFilter:lt,allCommands:ut,containerRef:dt}=tn(d),[pt,_t]=(0,X.useState)(!1),[bt,xt]=(0,X.useState)(``),[St,Ct]=(0,X.useState)([]),[wt,Tt]=(0,X.useState)(0),[Et,Dt]=(0,X.useState)(!1),[kt,Mt]=(0,X.useState)(0),Pt=(0,X.useRef)(-1),[Ft,Lt]=(0,X.useState)(`active`),Rt=(0,X.useRef)(`active`),[zt,Bt]=(0,X.useState)(`summarize`),Vt=(0,X.useRef)(`summarize`);Vt.current=zt;let[Ht,Wt]=(0,X.useState)([]),Gt=(0,X.useCallback)(()=>{Wt(Array.from(qt.current.values()))},[]);Rt.current=Ft;let Kt=(0,X.useRef)(new Set),qt=(0,X.useRef)(new Map),Jt=(0,X.useRef)([]),Yt=(0,X.useRef)(0),Zt=(0,X.useRef)(!1);(0,X.useEffect)(()=>{let t=t=>{let n=U.getState().getSessionInput(e),r=`@${t} `,i=n.trim()?`${n.trimEnd()} ${r}`:r;Kt.current.add(t),C(e,i),Mt(Kt.current.size+qt.current.size),requestAnimationFrame(()=>N.current?.focus())};return Nt(t),()=>At(t)},[e,C]),(0,X.useEffect)(()=>{let t=t=>{let n=U.getState().getSessionInput(e),r=n.trim()?`${n.trimEnd()}\n\n${t}`:t;C(e,r),requestAnimationFrame(()=>N.current?.focus())};return It(t),()=>jt(t)},[e,C]);let Qt=(0,X.useCallback)(t=>{let n=U.getState().getSessionInput(e),r=n.trim()?`${n.trimEnd()}\n\n${t}`:t;C(e,r),requestAnimationFrame(()=>N.current?.focus())},[e,C]),$t=(0,X.useRef)([]),[nn,rn]=(0,X.useState)(go),on=(0,X.useRef)([]),sn=(0,X.useRef)([]),ln=(0,X.useRef)(0),un=(0,X.useRef)(``);un.current=bt;let dn=(0,X.useCallback)((e,t)=>{let n=e.map(e=>({kind:`file`,key:e.path,label:e.name,detail:e.path,isDir:e.type===`directory`})),r=on.current,i=t.toLowerCase(),a=(i?r.filter(e=>e.label.toLowerCase().includes(i)||e.key.toLowerCase().includes(i)):r).slice(0,_s);return[...n,...a]},[]),fn=(0,X.useCallback)(async()=>{let e=Date.now();if(sn.current.length>0&&e-ln.current<vs)return sn.current;try{let e=await J.sessions.list(),t=e.success&&e.data?e.data:[];(t.length>0||sn.current.length===0)&&(sn.current=t),ln.current=Date.now()}catch{}return sn.current},[]),pn=(0,X.useCallback)(async()=>{let t=await fn();return on.current=Do(t,e,Rt.current),on.current},[fn,e]),mn=(0,X.useCallback)(e=>{$t.current=e,Ct(e)},[]),_n=(0,X.useCallback)((e,t)=>{mn(dn(e.slice(0,_s),t))},[mn,dn]),Dn=(0,X.useCallback)(()=>{let t=Rt.current===`active`?`all`:`active`;Rt.current=t,Lt(t),(async()=>{let n=await fn();on.current=Do(n,e,t),_n(Jt.current,un.current.toLowerCase())})()},[fn,e,_n]),On=(0,X.useCallback)(()=>{let e=vo(Vt.current);(e===`direct`||e===`summarize`)&&Kt.current.size>0&&(e=`enqueue`),Vt.current=e,Bt(e)},[]),kn=(0,X.useMemo)(()=>bo({files:x(`chat.mentionTabFiles`),sessions:x(`chat.mentionTabSessions`)}),[x]),An=kn.some(e=>e.key===nn)?nn:go,jn=(0,X.useMemo)(()=>So(St,An),[St,An]);(0,X.useEffect)(()=>{Kt.current=new Set,qt.current=new Map,Gt(),Zt.current=!1,rn(go),on.current=[],sn.current=[],ln.current=0,Yt.current++,_t(!1),xt(``),Ct([]),$t.current=[],Mt(0),q()},[e,q,Gt]);let Mn=(0,X.useDeferredValue)(S),Nn=Ot(e=>e.estimateTokens),Pn=(0,X.useMemo)(()=>Nn(Mn),[Mn,Nn]),Fn=(0,X.useCallback)(()=>{let e=N.current;e&&(re==null?(e.style.maxHeight=``,e.style.height=`auto`,e.style.height=Math.min(e.scrollHeight,200)+`px`):(e.style.maxHeight=`${re}px`,e.style.height=`${re}px`))},[re]);(0,X.useEffect)(()=>{Fn()},[S,F.length,Fn]),(0,X.useEffect)(()=>()=>{document.body.style.userSelect=``},[]);let In=(0,X.useCallback)(e=>{let t=N.current;t&&e.button===0&&(e.preventDefault(),ae.current={startY:e.clientY,startHeight:t.getBoundingClientRect().height,current:0},e.currentTarget.setPointerCapture(e.pointerId),document.body.style.userSelect=`none`,se(!0))},[]),Ln=(0,X.useCallback)(e=>{let t=ae.current,n=N.current;if(!t||!n)return;t.movedY=e.clientY-t.startY;let r=Math.max(cs,Math.min(Math.round(window.innerHeight*ls),t.startHeight-(e.clientY-t.startY)));t.current=r,n.style.maxHeight=`${r}px`,n.style.height=`${r}px`},[]),Rn=(0,X.useCallback)(e=>{let t=ae.current;if(ae.current=null,document.body.style.userSelect=``,se(!1),t){try{e.currentTarget.releasePointerCapture(e.pointerId)}catch{}t.current>0&&Math.abs(t.movedY??0)>3&&ie(t.current)}},[]),zn=(0,X.useCallback)(()=>ie(null),[]),Bn=(0,X.useCallback)(e=>{let t=N.current;if(!t)return;let n=re??t.getBoundingClientRect().height,r=Math.max(cs,Math.min(Math.round(window.innerHeight*ls),n+e));ie(r)},[re]),Vn=(0,X.useCallback)(async e=>{let t=++Yt.current;Dt(!0);try{let n=await J.files.search(e);if(t!==Yt.current)return null;let r=(n.success&&n.data?n.data.files:[]).map(e=>({id:e,name:e.slice(e.lastIndexOf(`/`)+1),path:e,type:`file`}));return Jt.current=r,r}catch{return null}finally{t===Yt.current&&Dt(!1)}},[]),Hn=(0,X.useCallback)(async(e,t)=>{if(Zt.current){let n=Pt.current;if(n<0||t<n){Zt.current=!1,_t(!1);return}let r=e.slice(n,t);if(/\s/.test(r)){Zt.current=!1,_t(!1);return}Pt.current=n,xt(r),_t(!0),Tt(0);let i=r.toLowerCase(),[a]=await Promise.all([Vn(i),pn()]);if(!a)return;_n(a,i);return}let n=xs(e,t);if(!n.active){pt&&_t(!1);return}Pt.current=n.start,xt(n.query),_t(!0),Tt(0);let r=n.query.toLowerCase(),[i]=await Promise.all([Vn(r),pn()]);i&&_n(i,r)},[pt,Vn,pn,_n]),Un=(0,X.useCallback)(async()=>{if(je.current.length>0)return je.current;if(Pe.current)return Pe.current;ke(!0);let e=J.skills.list().then(e=>{let t=Array.isArray(e.data)?e.data:[];return De(t),t}).catch(()=>[]).finally(()=>{Pe.current=null,ke(!1)});return Pe.current=e,e},[]),Wn=(0,X.useMemo)(()=>Bo(Ee,xe),[Ee,xe]),Gn=(0,X.useCallback)((e,t)=>{let n=Ro(e,t,je.current);n.active?(Ae.current=n.start,Ce(n.query),Te(0),be(!0),je.current.length===0&&Un()):V&&(be(!1),Ce(``))},[V,Un]);(0,X.useEffect)(()=>{if(!V||Ee.length===0)return;let e=N.current;if(!e)return;let t=Ro(e.value,e.selectionStart??e.value.length,Ee);t.active?(Ae.current=t.start,Ce(t.query)):(be(!1),Ce(``))},[Ee,V]);let Kn=(0,X.useCallback)(e=>{let t=e.target.value,n=e.target.selectionStart??t.length;G(t),Hn(t,n),Gn(t,n);let r=Ss(t,n);r.active?($e||st(),lt(r.query),rt(0)):$e&&q()},[G,Hn,Gn,$e,st,lt,rt,q]),qn=(0,X.useCallback)(e=>{let t=N.current,n=S,r=Pt.current>=0?Pt.current:t?.selectionStart??n.length,i=Math.min(n.length,r+1+bt.length),a,o;if(e.kind===`session`){let t=e.label||e.key;a=/\s/.test(t)?e.key:t,qt.current.set(e.key,t),Gt(),o=`@${a} `}else a=e.key,Kt.current.add(a),o=`@${a} `;let s=n.slice(0,r)+o+n.slice(i);G(s),_t(!0),xt(``),(async()=>{let e=await Vn(``);e&&_n(e,``)})(),Tt(0),Mt(Kt.current.size+qt.current.size),Pt.current=r+o.length,Zt.current=!0,requestAnimationFrame(()=>{t?.focus(),t&&(t.selectionStart=t.selectionEnd=r+o.length)})},[S,bt,G,Vn,_n]),Jn=(0,X.useCallback)(()=>{Zt.current=!1,_t(!1),xt(``),Mt(0),rn(go)},[]),Yn=(0,X.useCallback)(e=>{let t=N.current;if(!e.args){let n=ot(e,``);if(n?.message&&(n.success?W.success(n.message):W.error(n.message)),n?.draft){G(n.draft),ie(null),requestAnimationFrame(()=>{t?.focus(),t&&(t.selectionStart=t.selectionEnd=n.draft.length)});return}G(``),ie(null);return}let n=t?.selectionStart??S.length,r=S.lastIndexOf(`
25
+ `,n-1)+1,i=S.slice(0,r)+`/${e.name} `+S.slice(n);G(i),q(),requestAnimationFrame(()=>{t?.focus();let n=r+e.name.length+2;t&&(t.selectionStart=t.selectionEnd=n)})},[S,G,ot,q]),Xn=(0,X.useCallback)(e=>{let t=N.current,n=Ae.current>=0?Ae.current:t?.selectionStart??S.length,r=Math.min(S.length,n+1+xe.length),i=`$${e.id} `,a=S.slice(0,n)+i+S.slice(r);G(a),be(!1),Ce(``),Ae.current=-1,requestAnimationFrame(()=>{t?.focus();let e=n+i.length;t&&(t.selectionStart=t.selectionEnd=e)})},[S,xe,G]),Zn=(0,X.useCallback)(()=>{be(!1),Ce(``),Ae.current=-1},[]),Qn=(0,X.useCallback)(e=>{let t=N.current,n=t?.selectionStart??S.length,r=`$${e.id} `,i=S.slice(0,n)+r+S.slice(n);G(i),_e(!1),Zt.current=!1,_t(!1),xt(``),be(!1),Ce(``),requestAnimationFrame(()=>{t?.focus();let e=n+r.length;t&&(t.selectionStart=t.selectionEnd=e)})},[S,G]),$n=2048,er=(0,X.useCallback)(e=>new Promise((t,n)=>{let r=()=>{let r=new FileReader;r.onload=()=>t(String(r.result??``)),r.onerror=()=>n(Error(`Failed to read image`)),r.readAsDataURL(e)};(async()=>{let n=null;try{n=await createImageBitmap(e)}catch{r();return}try{let i=Math.max(n.width,n.height);if(i<=$n){n.close(),r();return}let a=$n/i,o=document.createElement(`canvas`);o.width=Math.max(1,Math.round(n.width*a)),o.height=Math.max(1,Math.round(n.height*a));let s=o.getContext(`2d`);if(!s){n.close(),r();return}s.drawImage(n,0,0,o.width,o.height),n.close();let c=e.type===`image/jpeg`?`image/jpeg`:`image/png`;t(o.toDataURL(c,c===`image/jpeg`?.9:void 0))}catch{n?.close(),r()}})()}),[]),tr=(0,X.useCallback)(e=>{let t=Array.from(e);L(e=>{let n=os-e.length,r=e.slice();for(let e of t.slice(0,n)){let t=ts.test(e.name);if(!t&&!Qo.test(e.name)){W.warning(x(`fileJob.unsupportedType`,{name:e.name}));continue}if(e.size>(t?ns:as)){W.error(x(`fileJob.fileTooLarge`,{name:e.name}));continue}if(r.some(t=>t.name===e.name&&t.size===e.size)){W.warning(x(`fileJob.duplicateFile`,{name:e.name}));continue}let n={id:`att-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,file:e,name:e.name,size:e.size,uploading:!1};t&&er(e).then(e=>{L(t=>t.map(t=>t.id===n.id?{...t,imageDataUri:e}:t))}).catch(()=>{L(e=>e.filter(e=>e.id!==n.id)),W.error(`${e.name}: ${x(`fileJob.uploadFailed`)}`)}),r.push(n)}return r.length>=os&&W.warning(x(`fileJob.maxAttachments`,{n:os})),r})},[x,er]),nr=(0,X.useCallback)(e=>{e.target.files&&e.target.files.length>0&&(tr(e.target.files),e.target.value=``)},[tr]),Q=(0,X.useCallback)(()=>{ce.current?.click()},[]),rr=(0,X.useCallback)(async()=>{if(!(me||w)){he(!0);try{let e=await Uo();tr([e])}catch(e){e instanceof Vo&&e.code===`cancelled`||W.error(x(`fileJob.screenshotFailed`))}finally{he(!1)}}},[tr,x,me,w]),ir=(0,X.useRef)(rr);(0,X.useEffect)(()=>{ir.current=rr},[rr]),(0,X.useEffect)(()=>{let e=e=>{(e.ctrlKey||e.metaKey)&&e.shiftKey&&(e.key===`s`||e.key===`S`)&&(e.preventDefault(),ir.current())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]);let ar=(0,X.useCallback)(e=>{L(t=>t.filter(t=>t.id!==e))},[]),or=(0,X.useCallback)(e=>{e.preventDefault(),pe(!0)},[]),sr=(0,X.useCallback)(e=>{e.preventDefault(),pe(!1)},[]),cr=(0,X.useCallback)(e=>{e.preventDefault(),pe(!1),e.dataTransfer.files&&e.dataTransfer.files.length>0&&tr(e.dataTransfer.files)},[tr]),lr=(0,X.useCallback)(async()=>{if(F.length===0)return``;let e=[];for(let t of F){if(t.imageDataUri)continue;if(t.path){e.push(`<attachment path="${t.path}" />`);continue}if(!t.file)continue;L(e=>e.map(e=>e.id===t.id?{...e,uploading:!0,error:void 0}:e));let n=`${is}/${t.name}`,r=await J.files.upload(t.file,n);if(r.success&&r.data?.path){let n=r.data.path.replace(/\\/g,`/`);L(e=>e.map(e=>e.id===t.id?{...e,uploading:!1,path:n}:e)),e.push(`<attachment path="${n}" />`)}else L(e=>e.map(e=>e.id===t.id?{...e,uploading:!1,error:r.error||x(`fileJob.uploadFailed`)}:e)),W.error(`${t.name}: ${r.error||x(`fileJob.uploadFailed`)}`)}return e.length>0?`${e.join(`
26
+ `)}\n\n`:``},[F,x]),ur=(0,X.useCallback)(e=>{if(!e)return;let t=vn(e)?bn(e).label:e,n=N.current;if(!n)return;let r=n.selectionStart??n.value.length,i=n.selectionEnd??r;G(n.value.slice(0,r)+t+n.value.slice(i)),requestAnimationFrame(()=>{n.selectionStart=n.selectionEnd=r+t.length})},[G]),dr=(0,X.useCallback)(e=>{let t=e.clipboardData.getData(`text/plain`),n=yt(e.clipboardData.getData(`text/html`)),r=e.clipboardData.files?Array.from(e.clipboardData.files):[],i=n.length>0?n:r.filter(e=>e.type.startsWith(`image/`)),a=r.filter(e=>!e.type.startsWith(`image/`));i.length>0||a.length>0?(e.preventDefault(),tr([...i,...a]),ur(t)):t&&vn(t)&&(e.preventDefault(),ur(t))},[tr,ur]),fr=(0,X.useCallback)(async()=>{let n=S.trim()?S:A,r=Sn(n),a=r.map(e=>({id:e,content:gn(e)??``})).filter(e=>e.content!==``),o=xn(n);Cn(r),Zt.current=!1,_t(!1),q();let s=o.trim(),c=F.length>0;if(!s&&!c)return;let l=o.trim();if(l.startsWith(`/`)&&!c){let e=cn(l);if(e){let t=ut.find(t=>t.name===e.command);if(t){let n=ot(t,e.args);if(n?.message&&(n.success?W.success(n.message):W.error(n.message)),n?.draft){G(n.draft),ie(null),requestAnimationFrame(()=>{let e=N.current;e&&(e.focus(),e.setSelectionRange(n.draft.length,n.draft.length))});return}G(``),ie(null),L([]),Kt.current=new Set,qt.current=new Map,Gt(),Mt(0);return}W.error(x(`slashCommands.unknownCommand`,{cmd:`/${e.command}`}));return}}if(l.startsWith(`!`)&&!c){let t=l.slice(1).trim();if(!t)return;if(i){i(t),G(``),ie(null),L([]),Kt.current=new Set,qt.current=new Map,Mt(0),O(e);return}}let u=Array.from(Kt.current).filter(e=>o.includes(`@${e}`)),d=Array.from(qt.current.entries()).map(([e,t])=>({id:e,title:t})).filter(e=>o.includes(`@${e.title}`)||o.includes(`@${e.id}`)),f=``;if(c){if(F.some(e=>e.uploading)){W.warning(x(`fileJob.stillUploading`));return}f=await lr()}let p=F.filter(e=>e.imageDataUri),m=p.map(e=>e.imageDataUri);if(p.length>0){let e=p.map(e=>hs(e.name)).join(`
27
+ `);f=f?`${f}${e}\n\n`:`${e}\n\n`}let h=(f+o).trim();if(!h&&!c)return;let g=a.length>0?{content:`${f}${S}`,pastes:a}:void 0;t(h||f.trim(),u.length>0?u:void 0,m.length>0?m:void 0,d.length>0?d:void 0,d.length>0?Vt.current:void 0,g),G(``),O(e),ie(null),L([]),Kt.current=new Set,qt.current=new Map,Mt(0),be(!1),Ce(``)},[S,A,F,t,i,G,O,e,lr,x,q,ut,ot]),pr=(0,X.useCallback)(e=>{if(!e.nativeEvent.isComposing){if((e.key===`Backspace`||e.key===`Delete`)&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&!e.shiftKey){let t=N.current;if(t&&t.selectionStart===t.selectionEnd){let n=t.selectionStart,r=t.value;if(e.key===`Backspace`&&n>0){let i=wn(r.slice(0,n));if(i){e.preventDefault(),G(r.slice(0,n-i.length)+r.slice(n)),En(i),requestAnimationFrame(()=>{t.focus();let e=n-i.length;t.selectionStart=t.selectionEnd=e});return}}else if(e.key===`Delete`&&n<r.length){let i=Tn(r.slice(n));if(i){e.preventDefault(),G(r.slice(0,n)+r.slice(n+i.length)),En(i),requestAnimationFrame(()=>{t.focus(),t.selectionStart=t.selectionEnd=n});return}}}}if(e.key===`Backspace`&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&!e.shiftKey&&F.length>0){let t=N.current;if(t&&t.selectionStart===0&&t.selectionEnd===0){let t=F[F.length-1];if(t){e.preventDefault(),ar(t.id);return}}}if(pt&&kn.length>1&&e.key===`Tab`){e.preventDefault();let t=kn.map(e=>e.key);rn(n=>Co(t,n,!e.shiftKey)),Tt(0)}else if(pt&&kn.length>1&&e.key===`S`&&!e.ctrlKey&&!e.metaKey&&!e.altKey)e.preventDefault(),Dn();else if(pt&&kn.length>1&&e.key===`M`&&!e.ctrlKey&&!e.metaKey&&!e.altKey)e.preventDefault(),On();else{if(pt&&jn.length>0){if(e.key===`ArrowDown`){e.preventDefault(),Tt(e=>(e+1)%jn.length);return}if(e.key===`ArrowUp`){e.preventDefault(),Tt(e=>(e-1+jn.length)%jn.length);return}if(e.key===`Enter`&&!e.shiftKey&&!e.ctrlKey&&!e.metaKey){let t=jn[wt];t&&(e.preventDefault(),qn(t));return}if(e.key===`Escape`){e.preventDefault(),Jn();return}}else if(pt&&e.key===`Escape`){e.preventDefault(),Jn();return}if(V&&Wn.length>0){if(e.key===`ArrowDown`){e.preventDefault(),Te(e=>(e+1)%Wn.length);return}if(e.key===`ArrowUp`){e.preventDefault(),Te(e=>(e-1+Wn.length)%Wn.length);return}if(e.key===`Enter`&&!e.shiftKey&&!e.ctrlKey&&!e.metaKey){let t=Wn[we];t&&(e.preventDefault(),Xn(t));return}if(e.key===`Escape`){e.preventDefault(),Zn();return}}else if(V&&e.key===`Escape`){e.preventDefault(),Zn();return}if($e&&tt.length>0){if(e.key===`ArrowDown`){e.preventDefault(),it();return}if(e.key===`ArrowUp`){e.preventDefault(),at();return}if(e.key===`Enter`&&!e.shiftKey&&!e.ctrlKey&&!e.metaKey){let t=tt[nt];t&&(e.preventDefault(),Yn(t));return}if(e.key===`Escape`){e.preventDefault(),q();return}}else if($e&&e.key===`Escape`){e.preventDefault(),q();return}if(e.key===`Tab`&&!e.shiftKey&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&A)e.preventDefault(),ze();else if(e.key===`Escape`&&w){e.preventDefault();let t=Date.now(),n=Xt(ee,T,le.current,t);le.current=t,n===`revokeQueue`?(Fe(),le.current=0):n===`stop`?a():o()}else(e.key===`Enter`&&(e.ctrlKey||e.metaKey)||e.key===`Enter`&&!e.shiftKey)&&(e.preventDefault(),fr())}}},[w,T,ee,Fe,fr,o,l,a,pt,St,wt,qn,Jn,kn,Dn,On,V,Wn,we,Xn,Zn,$e,tt,nt,it,at,Yn,q,G,F,ar,A,ze]),mr=(0,X.useCallback)(()=>{P.current=!0},[]),hr=(0,X.useCallback)(()=>{P.current=!1},[]),[gr,_r]=(0,X.useState)(()=>typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(max-width: 767px)`).matches);(0,X.useEffect)(()=>{if(typeof window.matchMedia!=`function`)return;let e=window.matchMedia(`(max-width: 767px)`),t=()=>{_r(e.matches),e.matches||Cr(!1)};return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let[vr,yr]=(0,X.useState)(()=>fs()),[br,xr]=(0,X.useState)(()=>fs()===`collapsed`),[Sr,Cr]=(0,X.useState)(!1),[wr,Tr]=(0,X.useState)(!1),Er=vr===`expanded`,Dr=(0,X.useCallback)(e=>{yr(e);try{e===`auto`?window.localStorage.removeItem(us):window.localStorage.setItem(us,e)}catch{}},[]),Or=(0,X.useRef)(null),$=(0,X.useCallback)(()=>{Or.current!==null&&(clearTimeout(Or.current),Or.current=null)},[]);(0,X.useEffect)(()=>$,[$]),(0,X.useEffect)(()=>{gr&&w&&!Er&&Cr(!0)},[gr,w,Er]);let[kr,Ar]=(0,X.useState)(()=>ps());(0,X.useEffect)(()=>{if(typeof window.matchMedia!=`function`)return;let e=window.matchMedia(`(hover: hover) and (pointer: fine)`),t=()=>Ar(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let jr=P.current||S.trim().length>0||F.length>0||ee>0||v||R||pt||$e||V,Mr=kr&&vr===`auto`&&!br,Nr=(0,X.useRef)(jr);Nr.current=jr;let Pr=br||gr&&Sr||wr,Fr=wr&&!br&&!(gr&&Sr),Ir=(0,X.useCallback)(()=>{$(),Tr(!1),xr(!0),Dr(`collapsed`)},[$,Dr]),Lr=(0,X.useCallback)(()=>{$(),Cr(!1),Tr(!1),vr===`collapsed`&&(xr(!1),Dr(`auto`))},[$,vr,Dr]),Rr=(0,X.useCallback)(()=>{$(),Er?Dr(`auto`):(Tr(!1),Cr(!1),xr(!1),Dr(`expanded`))},[$,Er,Dr]),zr=(0,X.useCallback)(()=>{$(),Tr(!1)},[$]),Br=(0,X.useCallback)(()=>{Mr&&($(),Or.current=setTimeout(()=>{Or.current=null,!Nr.current&&Tr(!0)},ds))},[$,Mr]),Vr=(0,X.useCallback)(()=>{$(),Tr(!1)},[$]),Hr=Pn>8e3,Ur=!v&&(S.trim().length>0||F.length>0),Wr=w?x(`stt.generatingTitle`):K.state===`recording`?x(`stt.stopTitle`):x(`stt.title`),Gr=K.state===`transcribing`||w,Kr=/mac/i.test(navigator.platform||``)?`⌘`:`Ctrl`;return(0,Z.jsxs)(`div`,{className:`chat-composer-shell shrink-0 pb-3 pt-2 max-md:order-4 max-md:mt-auto max-md:pb-5`,onMouseEnter:zr,onMouseLeave:Br,onDragOver:or,onDragLeave:sr,onDrop:cr,children:[M.length>0&&(0,Z.jsxs)(`div`,{className:`${ss} mb-2 rounded-lg border border-dark-border bg-dark-surface px-2.5 py-1.5 text-xs text-dark-muted`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{"aria-hidden":`true`,children:`⏳`}),(0,Z.jsx)(`span`,{className:`font-medium text-dark-text`,children:x(`chat.queuedCount`,{count:M.length})}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1`}),(0,Z.jsx)(`span`,{className:`shrink-0 text-badge text-dark-muted/60`,children:x(`chat.queuedEscHint`)}),(0,Z.jsx)(`button`,{onClick:Fe,className:`flex h-5 w-5 shrink-0 items-center justify-center rounded-full text-dark-muted transition-colors hover:bg-dark-hover hover:text-accent-red`,title:x(`chat.queuedRevoke`),"aria-label":x(`chat.queuedRevoke`),children:(0,Z.jsx)(fe,{size:12,"aria-hidden":`true`})})]}),(0,Z.jsx)(`ul`,{className:`mt-1 max-h-40 space-y-0.5 overflow-y-auto`,children:M.map((e,t)=>(0,Z.jsxs)(`li`,{className:`group flex items-center gap-2 rounded px-1 py-0.5 transition-colors hover:bg-dark-hover/60`,children:[(0,Z.jsx)(`span`,{className:`w-4 shrink-0 text-center text-badge tabular-nums text-dark-muted/60`,children:t+1}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-dark-muted/80`,title:He(e.content),children:He(e.content)||x(`chat.queuedEmptyPreview`)}),(0,Z.jsxs)(`span`,{className:`flex shrink-0 items-center gap-0.5 opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100`,children:[(0,Z.jsx)(`button`,{onClick:()=>Le(e.id),className:`flex h-5 w-5 items-center justify-center rounded text-dark-muted transition-colors hover:bg-dark-hover hover:text-accent-blue`,title:x(`chat.queuedSteerNow`),"aria-label":x(`chat.queuedSteerNow`),children:(0,Z.jsx)(ve,{size:12,"aria-hidden":`true`})}),(0,Z.jsx)(`button`,{onClick:()=>Ie(e.id),className:`flex h-5 w-5 items-center justify-center rounded text-dark-muted transition-colors hover:bg-dark-hover hover:text-accent-blue`,title:x(`chat.queuedSendNow`),"aria-label":x(`chat.queuedSendNow`),children:(0,Z.jsx)(k,{size:12,"aria-hidden":`true`})}),(0,Z.jsx)(`button`,{onClick:()=>Ve(e.id),className:`flex h-5 w-5 items-center justify-center rounded text-dark-muted transition-colors hover:bg-dark-hover hover:text-accent-blue`,title:x(`chat.queuedEdit`),"aria-label":x(`chat.queuedEdit`),children:(0,Z.jsx)(j,{size:12,"aria-hidden":`true`})}),(0,Z.jsx)(`button`,{onClick:()=>Re(e.id),className:`flex h-5 w-5 items-center justify-center rounded text-dark-muted transition-colors hover:bg-dark-hover hover:text-accent-red`,title:x(`chat.queuedDelete`),"aria-label":x(`chat.queuedDelete`),children:(0,Z.jsx)(ye,{size:12,"aria-hidden":`true`})})]})]},e.id))})]}),F.length>0&&(0,Z.jsx)(`div`,{className:`${ss} mb-2 flex flex-wrap gap-1.5`,children:F.map(e=>{let t=gs(e.name),n=e.imageDataUri,r=(0,Z.jsxs)(Z.Fragment,{children:[n?(0,Z.jsx)(zi,{src:n,name:e.name,size:13,hoverPreview:!1,thumb:!0}):e.uploading?(0,Z.jsx)(B,{size:13,className:`animate-spin`}):(0,Z.jsx)(t,{size:13}),(0,Z.jsx)(`span`,{className:`max-w-[140px] truncate`,children:e.name}),(0,Z.jsx)(`span`,{className:`text-badge text-dark-muted`,children:e.size>1048576?`${(e.size/1024/1024).toFixed(1)} MB`:`${Math.max(1,Math.round(e.size/1024))} KB`}),!e.uploading&&(0,Z.jsx)(`button`,{onClick:()=>ar(e.id),className:`rounded p-0.5 text-dark-muted hover:text-accent-red hover:bg-accent-red/10 transition-colors`,"aria-label":x(`a11y.close`),children:(0,Z.jsx)(fe,{size:11})})]}),i=Y(`flex items-center gap-1.5 rounded-lg border text-xs transition-colors ${n?`p-1 pe-2`:`px-2 py-1`}`,e.error?`border-accent-red/40 bg-accent-red/5 text-accent-red`:e.uploading?`border-accent-blue/40 bg-accent-blue/5 text-accent-blue`:`border-dark-border bg-dark-surface text-dark-text`,n&&`cursor-zoom-in hover:border-accent-blue/40`);return n?(0,Z.jsx)(Li,{src:n,alt:e.name,className:`min-w-0`,children:(0,Z.jsx)(`div`,{className:i,children:r})},e.id):(0,Z.jsx)(`div`,{className:i,children:r},e.id)})}),R&&(0,Z.jsx)(`div`,{className:`${ss} mb-2 rounded-xl border-2 border-dashed border-accent-blue/50 bg-accent-blue/5 py-3 text-center text-xs text-accent-blue`,children:x(`fileJob.dropHint`)}),(0,Z.jsx)(Za,{}),(0,Z.jsxs)(`div`,{className:`chat-composer-card relative rounded-xl border ${oe?``:`transition-all duration-150`} ${ss} ${Pr?`flex items-end gap-1 px-2 py-1.5`:``} ${Fr?`pointer-events-none opacity-0`:``}`,children:[!Pr&&(0,Z.jsx)(`div`,{role:`separator`,"aria-orientation":`horizontal`,"aria-label":x(`chat.resizeHint`),title:x(`chat.resizeHint`),tabIndex:0,onPointerDown:In,onPointerMove:Ln,onPointerUp:Rn,onPointerCancel:Rn,onDoubleClick:zn,onKeyDown:e=>{e.key===`ArrowUp`?(e.preventDefault(),Bn(24)):e.key===`ArrowDown`&&(e.preventDefault(),Bn(-24))},className:`group absolute inset-x-0 top-0 z-10 flex h-2.5 cursor-row-resize touch-none items-center justify-center rounded-t-xl outline-none focus-visible:bg-accent-blue/10`,children:(0,Z.jsx)(`span`,{"aria-hidden":`true`,className:`h-1 w-9 rounded-full bg-dark-border transition-colors group-hover:bg-accent-blue/70 group-focus-visible:bg-accent-blue/70`})}),!Pr&&(0,Z.jsxs)(`div`,{className:`flex items-center justify-end gap-2 px-3 pt-2.5`,children:[(0,Z.jsx)(ho,{disabled:v}),p&&(0,Z.jsx)(Ut,{workspaceDir:f,onSelect:p,onNewSessionInDir:m})]}),pt&&(0,Z.jsx)(`div`,{onMouseDown:e=>e.preventDefault(),"aria-hidden":!pt,children:(0,Z.jsx)(No,{isOpen:pt,items:jn,selectedIndex:wt,query:bt,isSearching:Et,onSelect:qn,onHover:Tt,selectedCount:kt,onFinish:Jn,tabs:kn,activeTab:An,onTabChange:rn,scope:Ft,onToggleScope:Dn,deliveryMode:zt,onToggleDelivery:On})}),V&&(0,Z.jsx)(`div`,{onMouseDown:e=>e.preventDefault(),"aria-hidden":!V,children:(0,Z.jsx)(Fo,{isOpen:V,items:Wn,selectedIndex:we,query:xe,isLoading:Oe,onSelect:Xn,onHover:Te})}),$e&&(0,Z.jsx)(`div`,{onMouseDown:e=>e.preventDefault(),"aria-hidden":!$e,children:(0,Z.jsx)(Xo,{isOpen:$e,commands:tt,selectedIndex:nt,filter:et,onSelect:Yn,onHover:rt,containerRef:dt})}),(0,Z.jsxs)(`div`,{className:Pr?`relative flex min-w-0 flex-1 items-start`:`relative`,children:[A&&(0,Z.jsx)(`div`,{"aria-hidden":`true`,className:Pr?`pointer-events-none absolute inset-0 overflow-hidden px-1.5 py-1.5 text-sm leading-relaxed`:`pointer-events-none absolute inset-0 overflow-hidden px-4 pt-2 pb-3 text-sm leading-relaxed`,children:(0,Z.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,Z.jsx)(`button`,{type:`button`,tabIndex:-1,onMouseDown:e=>e.preventDefault(),onClick:ze,className:`pointer-events-auto relative z-20 min-w-0 cursor-pointer whitespace-pre-wrap break-words border-0 bg-transparent p-0 text-start text-dark-muted/70 transition-colors hover:text-dark-muted`,title:x(`chat.suggestionAccept`),"aria-label":x(`chat.suggestionAccept`),children:A}),(0,Z.jsx)(`span`,{className:`mt-0.5 shrink-0 rounded border border-dark-border px-1.5 py-0.5 text-badge text-dark-muted/70`,"aria-hidden":`true`,children:x(`chat.suggestionAccept`)}),(0,Z.jsx)(`button`,{type:`button`,tabIndex:-1,onMouseDown:e=>e.preventDefault(),onClick:()=>O(e),className:`pointer-events-auto relative z-20 mt-0.5 shrink-0 rounded border border-dark-border px-1.5 py-0.5 text-badge text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,title:x(`chat.suggestionDismiss`),"aria-label":x(`chat.suggestionDismiss`),children:x(`chat.suggestionDismiss`)})]})}),(0,Z.jsx)(`textarea`,{ref:N,value:S,onChange:Kn,onKeyDown:pr,onPaste:dr,onFocus:Vr,onInput:Vr,onBlur:()=>{pt&&Jn(),q(),V&&Zn()},onCompositionStart:mr,onCompositionEnd:hr,placeholder:A?``:v&&b?b:x(Pr?`chat.inputPlaceholderCollapsed`:w?`chat.generatingPlaceholder`:`chat.inputPlaceholder`),rows:1,"aria-label":`Message input`,disabled:v,className:Pr?`w-full flex-1 bg-transparent px-1.5 py-1.5 text-sm text-dark-text placeholder-dark-muted/60 resize-none focus:outline-none min-h-[36px] max-h-[28vh] leading-relaxed${A?` relative z-10`:``}`:`w-full bg-transparent px-4 pt-2 pb-3 text-sm text-dark-text placeholder-dark-muted/60
28
+ resize-none focus:outline-none min-h-[72px] max-h-[40vh] leading-relaxed${A?` relative z-10`:``}`})]}),Pr&&(0,Z.jsxs)(`div`,{className:`flex min-w-0 max-w-[min(55%,16rem)] shrink items-center gap-1 pb-0.5`,children:[(0,Z.jsx)(ho,{compact:!0,disabled:v}),p&&(0,Z.jsx)(Ut,{workspaceDir:f,onSelect:p,onNewSessionInDir:m,compact:!0})]}),Pr&&(0,Z.jsxs)(`div`,{className:`flex shrink-0 items-center gap-0.5 pb-0.5`,children:[(0,Z.jsx)(`button`,{type:`button`,onClick:Lr,className:`flex h-8 w-8 items-center justify-center rounded-full text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,title:x(`chat.composerExpand`),"aria-label":x(`chat.composerExpand`),children:(0,Z.jsx)(c,{size:15,"aria-hidden":`true`})}),(0,Z.jsx)(`button`,{type:`button`,onClick:()=>void Qe(),disabled:Gr,className:Y(`flex h-8 w-8 items-center justify-center rounded-full text-dark-muted transition-colors`,K.state===`recording`?`bg-accent-red/15 text-accent-red animate-pulse`:`hover:bg-dark-hover hover:text-dark-text`,`disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:bg-transparent`),title:Wr,"aria-label":Wr,children:K.state===`transcribing`?(0,Z.jsx)(B,{size:15,className:`animate-spin`,"aria-hidden":`true`}):K.state===`recording`?(0,Z.jsx)(h,{size:15,"aria-hidden":`true`}):(0,Z.jsx)(u,{size:15,"aria-hidden":`true`})}),K.state===`recording`&&(0,Z.jsxs)(`span`,{className:`text-badge tabular-nums text-accent-red`,"aria-hidden":`true`,children:[(K.elapsedMs/1e3).toFixed(0),`s`]}),w&&(0,Z.jsx)(`button`,{onClick:a,className:`flex h-8 w-8 items-center justify-center rounded-full bg-accent-red/80 text-accent-fg transition-all hover:opacity-85 active:scale-95`,title:x(`chat.stopGen`),"aria-label":x(`chat.stopGen`),children:(0,Z.jsx)(s,{size:13,"aria-hidden":`true`})}),(0,Z.jsx)(`button`,{onClick:()=>void fr(),disabled:!Ur,className:`flex h-8 w-8 items-center justify-center rounded-full bg-dark-text text-dark-bg transition-all
29
+ hover:opacity-80 active:scale-95 disabled:opacity-25 disabled:cursor-not-allowed`,title:x(w?`chat.sendQueuedBtn`:`chat.sendBtn`),"aria-label":x(w?`chat.sendQueuedBtn`:`chat.sendBtn`),children:(0,Z.jsx)(g,{size:15,"aria-hidden":`true`})})]}),!Pr&&(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1.5 px-3 pb-3 lg:flex-nowrap`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-x-2`,children:[(0,Z.jsx)(`button`,{type:`button`,onClick:Ir,className:`flex h-8 w-8 items-center justify-center rounded-full text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,title:x(`chat.composerCollapse`),"aria-label":x(`chat.composerCollapse`),children:(0,Z.jsx)(r,{size:15,"aria-hidden":`true`})}),(0,Z.jsx)(`button`,{type:`button`,onClick:Rr,"aria-pressed":Er,className:`flex h-8 w-8 items-center justify-center rounded-full transition-colors ${Er?`bg-accent-blue/15 text-accent-blue hover:bg-accent-blue/25`:`text-dark-muted hover:bg-dark-hover hover:text-dark-text`}`,title:x(Er?`chat.composerUnpin`:`chat.composerPin`),"aria-label":x(Er?`chat.composerUnpin`:`chat.composerPin`),children:(0,Z.jsx)(de,{size:15,"aria-hidden":`true`})}),(0,Z.jsx)(Xa,{}),(0,Z.jsx)(`span`,{className:`hidden min-w-0 sm:block`,children:(0,Z.jsx)($a,{})}),(0,Z.jsx)(ht,{}),(0,Z.jsx)(uo,{onHandoffToAi:Qt}),Ht.length>0&&(0,Z.jsx)(`button`,{type:`button`,onClick:On,className:Y(`flex h-8 min-w-0 items-center rounded-full px-2.5 text-meta font-medium transition-colors`,bs[zt]),title:x(`chat.mentionDeliveryHint`),children:(0,Z.jsx)(`span`,{className:`max-w-[180px] truncate`,children:x(`chat.mentionDeliveryChip`,{titles:Ht.join(`、`),mode:x(ys[zt])})})})]}),(0,Z.jsx)(`div`,{className:`flex-1`}),(0,Z.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:[Pn>0&&S.length>0&&(0,Z.jsxs)(`span`,{className:`text-badge tabular-nums ${Hr?`text-accent-red font-medium`:`text-dark-muted/60`}`,children:[`~`,Pn,` tokens`,Hr?` · ${x(`chat.nearLimit`)}`:``]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,Z.jsxs)(`div`,{ref:qe,className:`relative`,children:[(0,Z.jsxs)(`button`,{onClick:()=>Ke(e=>!e),disabled:K.state!==`idle`||w,className:`flex h-8 items-center justify-center gap-0.5 rounded-full px-2 text-meta font-semibold text-dark-muted transition-colors
30
+ hover:bg-dark-hover hover:text-dark-text disabled:opacity-40 disabled:hover:bg-transparent disabled:cursor-not-allowed`,title:x(w?`stt.generatingTitle`:`stt.langToggle`),"aria-label":x(w?`stt.generatingTitle`:`stt.langToggle`),"aria-haspopup":`listbox`,"aria-expanded":Ge,children:[ct(Ue).short,(0,Z.jsx)(c,{size:11,"aria-hidden":`true`})]}),Ge&&(0,Z.jsxs)(`div`,{role:`listbox`,"aria-label":x(`stt.langToggle`),className:`absolute bottom-full right-0 mb-2 z-50 w-44 rounded-lg border border-dark-border bg-dark-overlay ui-surface-overlay shadow-lg py-1 max-h-72 overflow-auto custom-scrollbar`,children:[vt.map(e=>(0,Z.jsxs)(`button`,{role:`option`,"aria-selected":e.code===Ue,onClick:()=>Je(e.code),className:Y(`flex w-full items-center justify-between gap-2 px-3 py-1.5 text-xs transition-colors`,e.code===Ue?`text-accent-blue bg-accent-blue/10`:`text-dark-text hover:bg-dark-hover`),children:[(0,Z.jsx)(`span`,{className:`font-medium`,children:e.label}),(0,Z.jsxs)(`span`,{className:`flex items-center gap-1.5 text-badge text-dark-muted`,children:[`Whisper`,e.code===Ue&&(0,Z.jsx)(ue,{size:12,"aria-hidden":`true`})]})]},e.code)),(0,Z.jsx)(`div`,{className:`mt-1 border-t border-dark-border px-3 pt-1.5 pb-0.5 text-badge leading-relaxed text-dark-muted/70`,children:x(`stt.multiHint`)})]})]}),(0,Z.jsx)(`button`,{onClick:()=>void Qe(),disabled:Gr,className:Y(`flex h-8 w-8 items-center justify-center rounded-full text-dark-muted transition-colors`,K.state===`recording`?`bg-accent-red/15 text-accent-red animate-pulse`:`hover:bg-dark-hover hover:text-dark-text`,`disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:bg-transparent`),title:Wr,"aria-label":Wr,children:K.state===`transcribing`?(0,Z.jsx)(B,{size:15,className:`animate-spin`,"aria-hidden":`true`}):K.state===`recording`?(0,Z.jsx)(h,{size:15,"aria-hidden":`true`}):(0,Z.jsx)(u,{size:15,"aria-hidden":`true`})}),K.state===`recording`&&(0,Z.jsxs)(`span`,{className:`text-badge tabular-nums text-accent-red`,"aria-hidden":`true`,children:[(K.elapsedMs/1e3).toFixed(0),`s`]})]}),!w&&(0,Z.jsx)(`button`,{onClick:()=>_e(!0),className:`flex h-8 w-8 items-center justify-center rounded-full text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,title:x(`skills.pickTitle`),"aria-label":x(`skills.pickTitle`),children:(0,Z.jsx)(n,{size:15,"aria-hidden":`true`})}),!w&&(0,Z.jsx)(`button`,{onClick:()=>void rr(),disabled:me,className:`flex h-8 w-8 items-center justify-center rounded-full text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text disabled:opacity-40 disabled:cursor-not-allowed`,title:`${x(`fileJob.screenshot`)} (${Kr}+Shift+S)`,"aria-label":`${x(`fileJob.screenshot`)} (${Kr}+Shift+S)`,children:me?(0,Z.jsx)(B,{size:15,className:`animate-spin`,"aria-hidden":`true`}):(0,Z.jsx)(y,{size:15,"aria-hidden":`true`})}),!w&&(0,Z.jsx)(`button`,{onClick:()=>void Q(),className:`flex h-8 w-8 items-center justify-center rounded-full text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,title:x(`fileJob.attach`),"aria-label":x(`fileJob.attach`),children:(0,Z.jsx)(Se,{size:15,"aria-hidden":`true`})}),(0,Z.jsx)(`input`,{ref:ce,type:`file`,multiple:!0,accept:rs,className:`hidden`,onChange:nr}),w&&!Ur?(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[T?(0,Z.jsx)(`button`,{onClick:l,className:`flex h-8 w-8 items-center justify-center rounded-full bg-accent-green text-accent-fg transition-all hover:opacity-85 active:scale-95`,title:x(`chat.resumeGen`),"aria-label":x(`chat.resumeGen`),children:(0,Z.jsx)(z,{size:14,"aria-hidden":`true`})}):(0,Z.jsx)(`button`,{onClick:o,className:`flex h-8 w-8 items-center justify-center rounded-full bg-accent-yellow text-accent-fg transition-all hover:opacity-85 active:scale-95`,title:x(`chat.pauseGen`),"aria-label":x(`chat.pauseGen`),children:(0,Z.jsx)(te,{size:14,"aria-hidden":`true`})}),(0,Z.jsx)(`button`,{onClick:a,className:`flex h-8 w-8 items-center justify-center rounded-full bg-accent-red text-accent-fg transition-all hover:opacity-85 active:scale-95`,title:x(`chat.stopGen`),"aria-label":x(`chat.stopGen`),children:(0,Z.jsx)(s,{size:13,"aria-hidden":`true`})})]}):(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[w&&(0,Z.jsx)(`button`,{onClick:a,className:`flex h-8 w-8 items-center justify-center rounded-full bg-accent-red/80 text-accent-fg transition-all hover:opacity-85 active:scale-95`,title:x(`chat.stopGen`),"aria-label":x(`chat.stopGen`),children:(0,Z.jsx)(s,{size:13,"aria-hidden":`true`})}),(0,Z.jsx)(`button`,{onClick:()=>void fr(),disabled:!Ur,className:`flex h-8 w-8 items-center justify-center rounded-full bg-dark-text text-dark-bg transition-all
31
+ hover:opacity-80 active:scale-95 disabled:opacity-25 disabled:cursor-not-allowed`,title:x(w?`chat.sendQueuedBtn`:`chat.sendBtn`),"aria-label":x(w?`chat.sendQueuedBtn`:`chat.sendBtn`),children:(0,Z.jsx)(g,{size:15,"aria-hidden":`true`})})]})]})]})]}),(0,Z.jsxs)(`div`,{className:`mt-1.5 hidden select-none items-center justify-center gap-3 text-badge text-dark-muted/55 transition-opacity duration-150 sm:flex ${Fr?`opacity-0`:``}`,children:[(0,Z.jsx)(`span`,{children:x(`chat.shiftEnter`)}),(0,Z.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,Z.jsx)(`span`,{children:x(`chat.escHint`)}),(0,Z.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,Z.jsx)(`span`,{children:`${Kr}+Shift+S ${x(`shortcuts.screenshot`)}`}),(0,Z.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,Z.jsx)(`span`,{children:x(`chat.bangHint`)})]}),(0,Z.jsx)(Po,{open:ge,onClose:()=>_e(!1),onSelect:Qn})]})});export{xi as a,mi as c,Zn as d,vi as i,di as l,qa as n,hi as o,Si as r,_i as s,Cs as t,$n as u};
@@ -0,0 +1,2 @@
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{A as t,S as n,g as r,ii as i,jr as a,n as o}from"./icons-CittejKL.js";import{t as s}from"./useTranslation-2BGEBvJE.js";import{I as c}from"./markdown-DZQBOzWk.js";import{X as l}from"./index-CxrzleFg.js";import{t as u}from"./installDiagnosis-ZYUVgJIJ.js";var d=e(i(),1),f=c(),p={queued:`queued`,resolve:`resolve`,fetch:`fetch`,verify:`verify`,load:`load`,register:`register`,activate:`activate`,done:`done`,error:`error`},m={queued:`Queued`,resolve:`Resolving market entry`,fetch:`Downloading package`,verify:`Verifying manifest`,load:`Loading plugin`,register:`Registering`,activate:`Activating`,done:`Done`,error:`Failed`};function h(e,t,n=`plugins`){let r=`${n}.installStages.${p[e]}`,i=t(r);return i===r?m[e]:i}function g({job:e,error:i,onClose:c,onRetry:p,stagesPrefix:m=`plugins`,diagnosis:g,testId:_=`install-console`}){let{t:v}=s(),y=(0,d.useRef)(null),b=e?.status===`running`,x=e?.status===`error`||!!i,S=Math.max(0,Math.min(100,e?.progress??0)),C=e?.stage??`error`,w=e?.logs??[],T=(e,t)=>{let n=`${m}.${e}`,r=v(n,t);if(r!==n)return r;let i=`plugins.${e}`,a=v(i,t);return a===i?e:a};(0,d.useEffect)(()=>{let e=y.current;e&&(e.scrollTop=e.scrollHeight)},[w.length]);let E=x?`bg-accent-red`:e?.status===`done`?`bg-accent-green`:`bg-accent-blue`;return(0,f.jsxs)(`div`,{"data-testid":_,className:`mt-2 rounded-md border border-dark-border bg-dark-bg px-2 py-1.5`,children:[(0,f.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[x?(0,f.jsx)(r,{size:12,className:`shrink-0 text-accent-red`}):e?.status===`done`?(0,f.jsx)(a,{size:12,className:`shrink-0 text-accent-green`}):(0,f.jsx)(`div`,{className:`h-3 w-3 shrink-0 spin-slow rounded-full border-2 border-accent-blue border-t-transparent`}),(0,f.jsx)(`span`,{className:`text-meta text-dark-text truncate`,children:e?.alreadyInstalled&&b?T(`installAlreadyInstalled`):h(C,v,m)}),(0,f.jsx)(`div`,{className:`flex-1`}),e&&(0,f.jsxs)(`span`,{className:`text-meta tabular-nums text-dark-muted shrink-0`,children:[S,`%`]}),p&&x&&(0,f.jsx)(`button`,{type:`button`,onClick:p,className:`px-1.5 py-0.5 rounded border border-dark-border bg-dark-hover text-meta text-dark-muted hover:text-dark-text transition-colors`,children:T(`installRetry`)}),(0,f.jsx)(`button`,{type:`button`,onClick:c,title:T(`installClose`),className:`p-0.5 rounded text-dark-muted hover:text-dark-text transition-colors`,children:(0,f.jsx)(o,{size:12})})]}),e?(0,f.jsx)(`div`,{className:`mt-1 h-1 rounded-full bg-dark-hover overflow-hidden`,role:`progressbar`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":S,"aria-label":h(C,v,m),children:(0,f.jsx)(`div`,{className:`h-full ${E} transition-[width] duration-300 ease-out`,style:{width:`${S}%`}})}):x?null:(0,f.jsx)(`div`,{className:`mt-1 h-1 rounded-full bg-dark-hover overflow-hidden`,role:`progressbar`,"aria-label":h(`queued`,v,m),children:(0,f.jsx)(`div`,{className:`h-full w-1/3 rounded-full bg-accent-blue animate-pulse`})}),(e?.error||i)&&(0,f.jsx)(`div`,{className:`mt-1 rounded border border-accent-red bg-accent-red/15 px-1.5 py-1 text-meta text-accent-red break-words`,children:e?.error||i}),x&&g&&(0,f.jsxs)(`button`,{type:`button`,"data-testid":`install-ask-ai`,onClick:()=>l(u({diagnosis:g,job:e,error:i??null})),className:`mt-1 inline-flex items-center gap-1 px-1.5 py-0.5 rounded border border-accent-blue/40 bg-accent-blue/10 text-meta text-accent-blue hover:bg-accent-blue/20 transition-colors`,children:[(0,f.jsx)(t,{size:11}),T(`installAskAi`)]}),e&&(0,f.jsxs)(`details`,{open:!0,className:`mt-1 group`,children:[(0,f.jsxs)(`summary`,{className:`flex items-center gap-1 cursor-pointer select-none text-meta text-dark-muted hover:text-dark-text transition-colors`,children:[(0,f.jsx)(n,{size:11}),T(`installLogs`,{count:w.length})]}),(0,f.jsx)(`pre`,{ref:y,className:`mt-1 max-h-32 overflow-auto rounded border border-dark-border bg-dark-surface px-1.5 py-1 font-mono text-meta text-dark-muted whitespace-pre-wrap break-all`,children:w.length?w.join(`
2
+ `):T(`installLogsEmpty`)})]})]})}export{h as n,g as t};
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{Ar as t,Or as n,Qn as r,ii as i,it as a,kr as o,v as s}from"./icons-CittejKL.js";import{t as c}from"./useTranslation-2BGEBvJE.js";import{r as l}from"./api-BW4-5gtM.js";import{n as u,r as d}from"./settingsStore-DYqiXodu.js";import{I as f}from"./markdown-DZQBOzWk.js";var p=e(i(),1),m=f(),h=[`fact`,`code_change`,`user_preference`,`error_fix`,`decision`,`convention`,`goal`,`interaction`],ee=6e3,g=500;function _(e){if(!Number.isFinite(e))return 50;let t=Math.floor(e);return t>=5&&t<=g?t:50}function v(e){if(!Number.isFinite(e)||e<=0)return`—`;try{return new Date(e).toLocaleString()}catch{return`—`}}function y(){let{t:e}=c(),i=_(d(e=>e.memoryPageSize)),o=d(e=>e.setMemoryPageSize),s=(0,p.useMemo)(()=>u.includes(i)?u:[...u,i].sort((e,t)=>e-t),[i]),[f,v]=(0,p.useState)([]),[y,x]=(0,p.useState)(null),[S,ne]=(0,p.useState)(null),[C,w]=(0,p.useState)(!1),[T,E]=(0,p.useState)(null),[D,re]=(0,p.useState)(`all`),[O,ie]=(0,p.useState)(`all`),[k,ae]=(0,p.useState)(`time`),[A,oe]=(0,p.useState)({}),[j,M]=(0,p.useState)(null),[N,P]=(0,p.useState)([]),[F,I]=(0,p.useState)([]),[L,R]=(0,p.useState)(1),z=(0,p.useRef)(null),B=(0,p.useRef)(null),V=(0,p.useRef)(null),[H,U]=(0,p.useState)(null),W=(0,p.useCallback)(e=>{R(e),V.current&&(V.current.scrollTop=0)},[]),G=(0,p.useCallback)(async()=>{w(!0),E(null);let[t,n]=await Promise.all([l.get(`/api/memory/status`),l.get(`/api/memory/list?limit=${g}`)]);t.success&&t.data?x(t.data):E(t.error??e(`memory.loadFailed`)),n.success&&n.data?(v(n.data.items??[]),ne(n.data.stats??null),oe(n.data.usage??{}),M(n.data.usageSummary??null),P([]),n.data.warnings?.length&&E(e(`memory.partialRead`,{reason:n.data.warnings[0]}))):E(n.error??e(`memory.loadFailed`)),w(!1)},[e]);(0,p.useEffect)(()=>{G()},[G]);let K=(0,p.useCallback)(async t=>{z.current!==null&&(window.clearTimeout(z.current),z.current=null),B.current=null,U(null);let n=await l.post(`/api/memory/delete`,{id:t});if(n.success&&n.data?.deleted===!0){E(e(`memory.deleted`));return}let r=n.success?n.data?.reason??e(`memory.deleteUnavailable`):n.error??``;P(e=>e.filter(e=>e!==t)),E(e(`memory.deleteFailed`,{reason:r}))},[e]),q=(0,p.useCallback)(e=>{B.current&&K(B.current.id),P(t=>t.includes(e.id)?t:[...t,e.id]);let t={id:e.id,content:e.content};B.current=t,U(t),z.current=window.setTimeout(()=>{K(e.id)},ee)},[K]),se=(0,p.useCallback)(()=>{let t=B.current;t&&(z.current!==null&&(window.clearTimeout(z.current),z.current=null),B.current=null,U(null),P(e=>e.filter(e=>e!==t.id)),E(e(`memory.undoDone`)))},[e]);(0,p.useEffect)(()=>()=>{z.current!==null&&window.clearTimeout(z.current);let e=B.current;e&&l.post(`/api/memory/delete`,{id:e.id})},[]);let J=(0,p.useMemo)(()=>{let e=new Set(N);return f.filter(t=>!(e.has(t.id)||D!==`all`&&t.scope!==D||O!==`all`&&t.type!==O))},[f,N,D,O]),Y=(0,p.useMemo)(()=>{let e=new Map;for(let t of J){let n=t.subject?`s:${t.subject}|${t.layer??`fact`}`:`i:${t.id}`,r=e.get(n);r?r.push(t):e.set(n,[t])}let t=[];for(let[n,r]of e){let[e,...i]=[...r].sort((e,t)=>t.timestamp-e.timestamp);e&&t.push({key:n,head:e,rest:i})}return t.sort((e,t)=>{if(k===`usage`){let n=(A[t.head.id]?.count??0)-(A[e.head.id]?.count??0);if(n!==0)return n}return t.head.timestamp-e.head.timestamp})},[J,k,A]),X=Math.max(1,Math.ceil(Y.length/i)),Z=Math.min(L,X),ce=(0,p.useMemo)(()=>Y.slice((Z-1)*i,Z*i),[Y,Z,i]),le=e=>{I(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},Q=y!=null&&!y.tombstones,$=(0,p.useMemo)(()=>{let e=new Set(f.map(e=>e.scope));return[`global`,`workspace`].filter(t=>e.has(t))},[f]);return(0,m.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[(0,m.jsxs)(`div`,{className:`flex h-12 shrink-0 items-center gap-3 border-b border-dark-border px-4 max-md:gap-2 max-md:px-3`,children:[(0,m.jsx)(r,{size:16,className:`shrink-0 text-dark-muted`,"aria-hidden":`true`}),(0,m.jsx)(`span`,{className:`truncate text-sm font-medium text-dark-text`,children:e(`memory.title`)}),y?.workspaceHash?(0,m.jsx)(`span`,{className:`truncate text-meta text-dark-muted opacity-60`,children:y.workspaceHash}):null,(0,m.jsx)(`span`,{className:`ms-auto truncate text-meta text-dark-muted`,children:e(`memory.recallElsewhere`)})]}),y&&!y.active?(0,m.jsxs)(`div`,{className:`mx-4 mt-3 rounded border border-amber-500/40 bg-amber-500/10 px-3 py-2 text-xs text-amber-200`,children:[(0,m.jsx)(`div`,{className:`font-medium`,children:e(`memory.disabled`)}),(0,m.jsx)(`div`,{className:`mt-1 text-amber-200/80`,children:y.reason??e(`memory.disabledHint`)}),(0,m.jsxs)(`div`,{className:`mt-1 text-amber-200/60`,children:[e(`memory.backendLabel`),`: `,y.backend,y.cause?` · ${y.cause}`:``]})]}):null,(0,m.jsxs)(`div`,{className:`flex shrink-0 flex-wrap items-center gap-2 border-b border-dark-border px-4 py-2 max-md:px-3`,children:[(0,m.jsxs)(`label`,{className:`flex items-center gap-1 text-xs text-dark-muted`,children:[e(`memory.filterScope`),(0,m.jsxs)(`select`,{value:D,onChange:e=>{re(e.target.value),W(1)},className:`rounded border border-dark-border bg-dark-surface px-1.5 py-1 text-xs text-dark-text`,children:[(0,m.jsx)(`option`,{value:`all`,children:e(`memory.all`)}),($.length>0?$:[`global`,`workspace`]).map(t=>(0,m.jsx)(`option`,{value:t,children:e(t===`global`?`memory.scopeGlobal`:`memory.scopeWorkspace`)},t))]})]}),(0,m.jsxs)(`label`,{className:`flex items-center gap-1 text-xs text-dark-muted`,children:[e(`memory.filterCategory`),(0,m.jsxs)(`select`,{value:O,onChange:e=>{ie(e.target.value),W(1)},className:`rounded border border-dark-border bg-dark-surface px-1.5 py-1 text-xs text-dark-text`,children:[(0,m.jsx)(`option`,{value:`all`,children:e(`memory.all`)}),h.map(t=>(0,m.jsx)(`option`,{value:t,children:e(`memory.category.${t}`)},t))]})]}),(0,m.jsxs)(`label`,{className:`flex items-center gap-1 text-xs text-dark-muted`,children:[e(`memory.sortBy`),(0,m.jsxs)(`select`,{value:k,onChange:e=>{ae(e.target.value),W(1)},className:`rounded border border-dark-border bg-dark-surface px-1.5 py-1 text-xs text-dark-text`,children:[(0,m.jsx)(`option`,{value:`time`,children:e(`memory.sortTime`)}),(0,m.jsx)(`option`,{value:`usage`,children:e(`memory.sortUsage`)})]})]}),(0,m.jsxs)(`label`,{className:`flex items-center gap-1 text-xs text-dark-muted`,children:[e(`memory.pageSize`),(0,m.jsx)(`select`,{"data-testid":`memory-page-size`,value:i,onChange:e=>{o(Number(e.target.value)),W(1)},className:`rounded border border-dark-border bg-dark-surface px-1.5 py-1 text-xs text-dark-text`,children:s.map(t=>(0,m.jsx)(`option`,{value:t,children:e(`memory.pageSizeOption`,{count:t})},t))})]}),(0,m.jsxs)(`span`,{className:`text-xs text-dark-muted`,children:[e(`memory.count`,{count:J.length}),S?` · ${e(`memory.totalCount`,{count:S.totalItems})}`:``,S?.truncated?` (${e(`memory.truncated`)})`:``]}),j?(0,m.jsx)(`span`,{className:`text-meta text-dark-muted opacity-70`,title:j.ledgerPath??void 0,children:j.enabled?e(`memory.usageSummary`,{events:j.totalEvents,ids:j.distinctIds}):e(`memory.usageOff`)}):null,(0,m.jsxs)(`button`,{type:`button`,onClick:()=>void G(),disabled:C,className:`ms-auto flex items-center gap-1 rounded px-2 py-1 text-xs text-dark-muted hover:bg-dark-hover hover:text-dark-text disabled:opacity-50`,children:[(0,m.jsx)(a,{size:13,className:C?`animate-spin`:void 0,"aria-hidden":`true`}),e(`memory.refresh`)]})]}),Q?(0,m.jsxs)(`div`,{className:`mx-4 mt-2 rounded border border-dark-border bg-dark-surface px-3 py-2 text-xs text-dark-muted`,children:[(0,m.jsx)(`span`,{className:`text-dark-text`,children:e(`memory.localDeleteOff`)}),(0,m.jsx)(`span`,{className:`ms-1`,children:e(`memory.localDeleteOffHint`)})]}):null,T?(0,m.jsx)(`div`,{className:`mx-4 mt-2 rounded border border-dark-border bg-dark-surface px-3 py-2 text-xs text-dark-text`,children:T}):null,(0,m.jsx)(`div`,{ref:V,className:`flex-1 overflow-y-auto px-4 py-3 max-md:px-3`,children:C&&f.length===0?(0,m.jsx)(`div`,{className:`text-xs text-dark-muted`,children:e(`memory.loading`)}):Y.length===0?(0,m.jsxs)(`div`,{className:`text-xs text-dark-muted`,children:[(0,m.jsx)(`div`,{children:e(`memory.empty`)}),(0,m.jsx)(`div`,{className:`mt-1 text-dark-muted/70`,children:e(`memory.emptyHint`)})]}):(0,m.jsx)(`ul`,{className:`space-y-2`,children:ce.map(({key:r,head:i,rest:a})=>{let o=F.includes(r);return(0,m.jsxs)(`li`,{className:`rounded border border-dark-border bg-dark-surface p-3`,children:[(0,m.jsx)(b,{item:i,usage:A[i.id],onDelete:Q?void 0:q,muted:!1}),a.length>0?(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)(`button`,{type:`button`,onClick:()=>le(r),className:`mt-2 flex items-center gap-1 text-xs text-dark-muted hover:text-dark-text`,children:[o?(0,m.jsx)(t,{size:12,"aria-hidden":`true`}):(0,m.jsx)(n,{size:12,"aria-hidden":`true`}),e(`memory.collapsed`,{count:a.length})]}),o?(0,m.jsx)(`ul`,{className:`mt-2 space-y-2 border-s border-dark-border ps-3`,children:a.map(e=>(0,m.jsx)(`li`,{children:(0,m.jsx)(b,{item:e,usage:A[e.id],onDelete:Q?void 0:q,muted:!0})},e.id))}):null]}):null]},r)})})}),X>1?(0,m.jsx)(te,{page:Z,pageCount:X,onChange:W}):null,H?(0,m.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-3 border-t border-dark-border bg-dark-surface px-4 py-2 max-md:px-3`,children:[(0,m.jsxs)(`span`,{className:`min-w-0 flex-1 truncate text-xs text-dark-muted`,children:[e(`memory.pendingDelete`),`: `,H.content]}),(0,m.jsx)(`button`,{type:`button`,onClick:se,className:`shrink-0 rounded border border-dark-border px-2 py-1 text-xs text-dark-text hover:bg-dark-hover`,children:e(`memory.undo`)})]}):null]})}function b({item:e,usage:t,onDelete:n,muted:r}){let{t:i}=c();return(0,m.jsxs)(`div`,{className:r?`opacity-60`:void 0,children:[(0,m.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,m.jsx)(`p`,{className:`min-w-0 flex-1 whitespace-pre-wrap break-words text-sm text-dark-text`,children:e.content}),n?(0,m.jsx)(`button`,{type:`button`,onClick:()=>n(e),title:i(`memory.delete`),"aria-label":i(`memory.delete`),className:`shrink-0 rounded p-1 text-dark-muted hover:bg-dark-hover hover:text-red-400`,children:(0,m.jsx)(s,{size:13,"aria-hidden":`true`})}):null]}),(0,m.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap items-center gap-x-2 gap-y-1 text-meta text-dark-muted`,children:[(0,m.jsx)(`span`,{className:`rounded bg-dark-hover px-1.5 py-0.5`,children:i(e.scope===`global`?`memory.scopeGlobal`:e.scope===`session`?`memory.scopeSession`:`memory.scopeWorkspace`)}),(0,m.jsx)(`span`,{className:`rounded bg-dark-hover px-1.5 py-0.5`,children:i(`memory.category.${e.type}`,{defaultValue:e.type})}),e.layer===`experience`?(0,m.jsxs)(`span`,{className:`rounded bg-dark-hover px-1.5 py-0.5 text-amber-300/90`,children:[i(`memory.layerExperience`),e.boundaryEnvs?.length?`: ${e.boundaryEnvs.join(`, `)}`:``]}):null,e.subject?(0,m.jsxs)(`span`,{className:`rounded bg-dark-hover px-1.5 py-0.5`,children:[`#`,e.subject]}):null,(0,m.jsx)(`span`,{children:i(`memory.confidenceShort`,{value:Math.round((e.confidence??0)*100)})}),(0,m.jsx)(`span`,{className:t?.count?`text-emerald-300/90`:`opacity-70`,children:t?.count?i(`memory.usageUsed`,{count:t.count}):i(`memory.usageNever`)}),t?.lastUsedAt?(0,m.jsx)(`span`,{className:`opacity-70`,children:i(`memory.usageLastAt`,{time:v(t.lastUsedAt)})}):null,(0,m.jsx)(`span`,{children:v(e.timestamp)}),e.id?(0,m.jsx)(`span`,{className:`truncate opacity-60`,children:e.id}):null]})]})}function x(e,t){if(t<=7)return Array.from({length:t},(e,t)=>t+1);let n=[1],r=Math.max(2,e-1),i=Math.min(t-1,e+1);r>2&&n.push(null);for(let e=r;e<=i;e+=1)n.push(e);return i<t-1&&n.push(null),n.push(t),n}function te({page:e,pageCount:t,onChange:r}){let{t:i}=c(),a=`rounded border border-dark-border p-1 text-dark-muted hover:bg-dark-hover hover:text-dark-text disabled:cursor-not-allowed disabled:opacity-40`;return(0,m.jsxs)(`div`,{"data-testid":`memory-pager`,className:`flex shrink-0 items-center justify-end gap-1 border-t border-dark-border px-4 py-2 max-md:flex-wrap max-md:justify-start max-md:px-3`,children:[(0,m.jsx)(`button`,{type:`button`,onClick:()=>r(e-1),disabled:e<=1,"aria-label":i(`common.prevPage`),className:a,children:(0,m.jsx)(o,{size:13,"aria-hidden":`true`})}),x(e,t).map((t,n)=>t===null?(0,m.jsx)(`span`,{className:`px-1 text-xs text-dark-muted opacity-60`,children:`…`},`gap-${n}`):(0,m.jsx)(`button`,{type:`button`,"data-testid":`memory-page-${t}`,onClick:()=>r(t),"aria-current":t===e?`page`:void 0,className:t===e?`min-w-[1.75rem] rounded border border-accent-blue/60 bg-accent-blue/15 px-1.5 py-1 text-xs text-dark-text`:`min-w-[1.75rem] rounded border border-dark-border px-1.5 py-1 text-xs text-dark-muted hover:bg-dark-hover hover:text-dark-text`,children:t},t)),(0,m.jsx)(`button`,{type:`button`,onClick:()=>r(e+1),disabled:e>=t,"aria-label":i(`common.nextPage`),className:a,children:(0,m.jsx)(n,{size:13,"aria-hidden":`true`})})]})}export{y as MemoryView};