@kimiclaw/cli 1.0.41 → 1.0.44

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 (94) hide show
  1. package/README.md +19 -17
  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-Y4TXobGE.js +1 -0
  6. package/web/dist/assets/AutomationView-DfAF2L92.js +3 -0
  7. package/web/dist/assets/Button-D-g7PgYh.js +1 -0
  8. package/web/dist/assets/ChannelConfigView-WJ-zUV8p.js +12 -0
  9. package/web/dist/assets/ChartsView-CSAfGqTC.js +1 -0
  10. package/web/dist/assets/ConnectorsView-DaHmxnGE.js +2 -0
  11. package/web/dist/assets/{MessageBubble-CV16DZMG.js → DiffPreview-D8tIj_aF.js} +64 -67
  12. package/web/dist/assets/FileContextMenu-C5WYeBNu.js +1 -0
  13. package/web/dist/assets/FileTreeView-B7IN0KmE.js +1 -0
  14. package/web/dist/assets/HookConfigView-9gqvrRhQ.js +2 -0
  15. package/web/dist/assets/InboxView-BcEfijbj.js +1 -0
  16. package/web/dist/assets/InputArea-D5F91Uwk.js +14 -0
  17. package/web/dist/assets/Install-Cuelo0If.js +2 -0
  18. package/web/dist/assets/MemoryView-BvZSh5-T.js +1 -0
  19. package/web/dist/assets/ModelsView-BgvMN8xv.js +1 -0
  20. package/web/dist/assets/PluginsView-C3d6e8vV.js +1 -0
  21. package/web/dist/assets/ProjectsView-CM7GOsoK.js +1 -0
  22. package/web/dist/assets/SessionGrid-BQSrCDqQ.js +4 -0
  23. package/web/dist/assets/SettingsModal-BvGXq5EE.js +4 -0
  24. package/web/dist/assets/SkillsView-87kGRliE.js +1 -0
  25. package/web/dist/assets/TemplatesTab-8MLwVNwV.js +1 -0
  26. package/web/dist/assets/ToolsView-CjdYiaNz.js +1 -0
  27. package/web/dist/assets/{agentIconSet-Btsb_SC4.js → agentIconSet-CDeMxTHf.js} +1 -1
  28. package/web/dist/assets/api-ZQf0Ys8y.js +1 -0
  29. package/web/dist/assets/channelMeta-BO645sjD.js +1 -0
  30. package/web/dist/assets/common-CPZxdYLs.js +304 -0
  31. package/web/dist/assets/icons-B8Ngx6rM.js +1 -0
  32. package/web/dist/assets/imageUrl-CrQM4gmf.js +74 -0
  33. package/web/dist/assets/index-Bm7r92T3.css +1 -0
  34. package/web/dist/assets/index-STsyoFCk.js +145 -0
  35. package/web/dist/assets/installDiagnosis-ZYUVgJIJ.js +3 -0
  36. package/web/dist/assets/{markdown-DAQZeY5V.js → markdown-Cps-36Z5.js} +1 -1
  37. package/web/dist/assets/{panels-DYiQiVWh.js → panels-DCwx2Pbu.js} +1 -1
  38. package/web/dist/assets/{react-vendor-BlngCquv.js → react-vendor-CXI113IS.js} +1 -1
  39. package/web/dist/assets/sessionKind-CZ1kQQII.js +1 -0
  40. package/web/dist/assets/settingsStore-BSdi9gNd.js +1 -0
  41. package/web/dist/assets/src-BK8SoTFV.js +1 -0
  42. package/web/dist/assets/{state-_ZfNVAsd.js → state-pOTP5BEk.js} +1 -1
  43. package/web/dist/assets/statusAxesRefresh--2evRuAU.js +1 -0
  44. package/web/dist/assets/sttLanguages-BPcOF0nQ.js +2 -0
  45. package/web/dist/assets/{types-JssxRFJn.js → threads-lr33dwqg.js} +1 -1
  46. package/web/dist/assets/useConfirm-CQjBnYuP.js +1 -0
  47. package/web/dist/assets/{useTranslation-BGmCDuQI.js → useTranslation-gGKZZfux.js} +1 -1
  48. package/web/dist/assets/websocket-CeKJTCdp.js +1 -0
  49. package/web/dist/assets/whatsNewStore-C0hbStfc.js +1 -0
  50. package/web/dist/assets/{workspaceSemantics-RaIRer76.js → workspaceSemantics-CW8ytHq2.js} +3 -3
  51. package/web/dist/favicon.svg +31 -14
  52. package/web/dist/icons/icon-1024.png +0 -0
  53. package/web/dist/icons/icon-180.png +0 -0
  54. package/web/dist/icons/icon-192.png +0 -0
  55. package/web/dist/icons/icon-512.png +0 -0
  56. package/web/dist/icons/icon-maskable-512.png +0 -0
  57. package/web/dist/index.html +38 -35
  58. package/web/dist/logo.svg +42 -20
  59. package/web/dist/manifest.webmanifest +2 -2
  60. package/web/dist/vendor/MANIFEST.json +24 -0
  61. package/web/dist/vendor/d3.min.js +2 -0
  62. package/web/dist/vendor/echarts.min.js +45 -0
  63. package/web/dist/assets/AssistantsView-dhdYVIy0.js +0 -1
  64. package/web/dist/assets/AutomationView-D1dU5ZV7.js +0 -1
  65. package/web/dist/assets/ChannelConfigView-CEPVZntU.js +0 -8
  66. package/web/dist/assets/ChartsView-DdN-beHW.js +0 -1
  67. package/web/dist/assets/ConnectorsView-CseCss9C.js +0 -1
  68. package/web/dist/assets/FileTreeView-Dnc3-gRF.js +0 -1
  69. package/web/dist/assets/HookConfigView-DA2h4HdJ.js +0 -1
  70. package/web/dist/assets/InputArea-DAgOOjOc.js +0 -14
  71. package/web/dist/assets/MemoryView-D6OUBi4-.js +0 -1
  72. package/web/dist/assets/ModelsView-BuqD9vWl.js +0 -1
  73. package/web/dist/assets/PluginsView-CIziDHFJ.js +0 -2
  74. package/web/dist/assets/ProjectsView-c6faWy32.js +0 -1
  75. package/web/dist/assets/SessionGrid-BZJHcklh.js +0 -4
  76. package/web/dist/assets/SettingsModal-BqdGEGW-.js +0 -4
  77. package/web/dist/assets/SkillsView-CB6CKkmb.js +0 -1
  78. package/web/dist/assets/TemplatesTab-B8efVwVZ.js +0 -1
  79. package/web/dist/assets/ThreadsView-CDoM0aNb.js +0 -2
  80. package/web/dist/assets/ToolsView-BG-xsWsO.js +0 -1
  81. package/web/dist/assets/api-CCt9DRQm.js +0 -1
  82. package/web/dist/assets/channelMeta-BGQXQxgj.js +0 -1
  83. package/web/dist/assets/cn-rx4uumOJ.js +0 -1
  84. package/web/dist/assets/common-BHXgEvgk.js +0 -192
  85. package/web/dist/assets/icons-BvYhTENi.js +0 -1
  86. package/web/dist/assets/index-BNI6CNsY.css +0 -1
  87. package/web/dist/assets/index-BX-d2OBW.js +0 -130
  88. package/web/dist/assets/settingsStore-RLUAWgIk.js +0 -1
  89. package/web/dist/assets/src-49LUQhkG.js +0 -1
  90. package/web/dist/assets/sttLanguages-aqoVC79g.js +0 -2
  91. package/web/dist/assets/ttsSettings-DHo3OsOq.js +0 -15
  92. package/web/dist/assets/websocket-C9e3h7VU.js +0 -1
  93. package/web/dist/assets/whatsNewStore-Bf_7lW8o.js +0 -1
  94. /package/web/dist/assets/{MessageBubble-CCTRbIMZ.css → DiffPreview-CCTRbIMZ.css} +0 -0
@@ -0,0 +1,4 @@
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{A as t,Dr as n,E as r,Er as i,Gn as a,It as o,Kt as s,Or as c,Tr as l,Un as u,V as d,Wn as f,Wt as p,Xt as m,Y as h,Yr as g,Z as _,d as v,dt as y,et as b,g as x,kr as S,n as C,ni as w,p as T,pr as E,q as D,rt as O,sr as k,un as A,vr as j,wr as M,x as N,xr as P,z as F}from"./icons-B8Ngx6rM.js";import{r as I}from"./react-vendor-CXI113IS.js";import{t as L}from"./useTranslation-gGKZZfux.js";import{E as R,T as z,_ as B,g as V,m as ee,u as H}from"./imageUrl-CrQM4gmf.js";import{n as U,t as W}from"./state-pOTP5BEk.js";import{r as G,t as K}from"./Button-D-g7PgYh.js";import"./src-BK8SoTFV.js";import{c as q}from"./DiffPreview-D8tIj_aF.js";import{f as J,i as te,t as ne}from"./workspaceSemantics-CW8ytHq2.js";import{r as re,t as Y}from"./InputArea-D5F91Uwk.js";import{t as ie}from"./api-ZQf0Ys8y.js";import{j as ae}from"./settingsStore-BSdi9gNd.js";import{I as oe}from"./markdown-Cps-36Z5.js";import{n as X}from"./websocket-CeKJTCdp.js";import{i as se}from"./useConfirm-CQjBnYuP.js";import"./common-CPZxdYLs.js";import{B as ce,Dt as le,Et as ue,F as de,H as fe,I as pe,J as me,L as he,M as ge,N as _e,P as ve,R as ye,Tt as be,U as xe,V as Se,W as Ce,bt as we,d as Te,m as Ee,q as De,yt as Oe,z as ke}from"./index-STsyoFCk.js";import{t as Ae}from"./profileChange-xrd7jkii.js";var Z=e(w(),1);function je(e){return e.recordId===void 0?e.callId===void 0?e.sourceSeq===void 0?`${e.kind}\u0000index\u0000${e.index}`:`${e.kind}\u0000seq\u0000${e.sourceSeq}`:`${e.kind}\u0000call\u0000${e.callId}`:e.recordId}function Me(e){return q(e===null?null:e*1e3)}var Ne=2048,Pe=512;function Fe(e){return e.replace(/```[^\n]*\n([\s\S]*?)```/g,`$1`).replace(/`([^`]+)`/g,`$1`).replace(/!\[([^\]]*)\]\([^)]*\)/g,`$1`).replace(/\[([^\]]+)\]\([^)]*\)/g,`$1`).replace(/^#{1,6}\s+/gm,``).replace(/^[ \t]*[-*+]\s+/gm,``).replace(/^[ \t]*>\s?/gm,``).replace(/(\*\*|__)(.*?)\1/g,`$2`).replace(/(\*|_)(.*?)\1/g,`$2`).replace(/~~(.*?)~~/g,`$1`)}function Ie(e){let t=e.slice(0,Ne),n=Fe(t).replace(/\s+/g,` `).trim(),r=n.slice(0,Pe).trimEnd();return t.length<e.length||r.length<n.length?`${r}…`:r}function Le(e){if(Number.isFinite(e))return Me(e)}function Re(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function ze(e){if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return``}}function Be(e){if(typeof e==`string`)return e;if(e==null)return``;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function Ve(e){if(e.status===`error`)return{result:e.result===void 0?`error`:Be(e.result)};let t=Be(e.result);return t===``?{result:`No output`}:{result:``,resultPreviewMarkdown:t}}function He(e,t){let n=t?.get(e.id)??null,r=e.summary?.durationMs===void 0?null:(n??e.timestamp)+e.summary.durationMs,i=n!==null||r!==null;if(i)return{timingRecorded:i,stepStartTime:e.timestamp,firstTokenTime:n,completedTime:r,usageProvided:!1,outputTokens:null}}function Ue(e,t,n){let r=e.thinkingBlocks?e.thinkingBlocks.map(e=>e.text).join(`
2
+ `):e.thinking??``,i=He(e,n),a=e.summary?.durationMs;return{index:t,kind:`message`,text:``,...e.content===``?{}:{previewMarkdown:e.content},sourceSeq:t,inputDetail:e.content,...r===``?{}:{thinkingDetail:r},...i===void 0?{}:{assistantMetrics:i},timeSeconds:a===void 0?null:a/1e3,startedAt:e.timestamp}}function We(e,t){let n=ze(e.args),r=Be(e.result),i=Ve(e);return{index:t,kind:`tool`,text:e.name,...n===``?{}:{previewMarkdown:n},sourceSeq:t,callId:e.id,...n===``?{}:{inputDetail:n},...r===``?{}:{outputDetail:r},...i,isError:e.status===`error`,timeSeconds:e.duration===void 0?null:e.duration/1e3,startedAt:e.timestamp}}function Ge(e,t){return{index:t,kind:`user`,text:``,...e.content===``?{}:{previewMarkdown:e.content},sourceSeq:t,inputDetail:e.content,opensTurn:!0,timeSeconds:0,startedAt:e.timestamp}}function Ke(e,t){let n=[e.originalCount===void 0?``:`original ${e.originalCount} msgs`,e.compressedCount===void 0?``:`compressed ${e.compressedCount} msgs`,e.tokensSaved===void 0?``:`freed ${e.tokensSaved} tokens`].filter(Boolean).join(`, `);return{index:t,kind:`compacted`,text:`Context compressed`,sourceSeq:e.seq,...n===``?{}:{outputDetail:n},timeSeconds:0,startedAt:e.timestamp}}function qe(e){let t=[],n=[];for(let t of e)t.absTime!==null&&Number.isFinite(t.absTime)&&(n.push(t.absTime),t.cell.kind===`tool`&&t.cell.timeSeconds!==null&&Number.isFinite(t.cell.timeSeconds)&&n.push(t.absTime+t.cell.timeSeconds*1e3));if(n.length>=2){let e=Le((Math.max(...n)-Math.min(...n))/1e3);e!==void 0&&t.push(e)}else if(n.length===1){let r=e.find(e=>e.absTime===n[0])?.cell.timeSeconds,i=r==null?void 0:Le(r);i!==void 0&&t.push(i)}let r=new Map;for(let t of e)t.toolName!==void 0&&t.cell.kind===`tool`&&r.set(t.toolName,(r.get(t.toolName)??0)+1);for(let[e,n]of r)t.push(n>1?`${e}×${n}`:e);return t.length===0?void 0:t.join(` `)}function Je(e,t){return{turn:e,groups:t.groups.map(({title:e,laid:t})=>{let n=qe(t);return{title:e,...n===void 0?{}:{description:n},cells:t.map(e=>e.cell)}})}}function Ye(e){return Math.min(...e.groups.flatMap(e=>e.cells.map(e=>e.index)),1/0)}function Xe(e){let{messages:t,compacted:n=[],ttft:r}=e,i=new Map,a=[],o=0,s=0,c=null,l=e=>{let t=i.get(e);return t===void 0&&(t={groups:[]},i.set(e,t)),t},u=(e,t)=>{let n=l(e).groups,r=n[n.length-1];r?.title===`Message`?r.laid.push(t):n.push({title:`Message`,laid:[t]})},d=(e,t,n)=>{if(n.length===0)return;let r=l(e).groups,i=`Step ${t}`,a=r.find(e=>e.title===i);a===void 0?r.push({title:i,laid:[...n]}):a.laid.push(...n)},f=[...t.map(e=>({kind:`message`,message:e})),...n.map(e=>({kind:`compacted`,record:e}))].sort((e,t)=>(e.kind===`message`?e.message.timestamp:e.record.timestamp)-(t.kind===`message`?t.message.timestamp:t.record.timestamp));for(let e of f){if(e.kind===`compacted`){let t=Ke(e.record,++o);a.push({groups:[{title:`Compaction ${e.record.seq}`,laid:[{absTime:Re(e.record.timestamp),cell:t}]}]});continue}let t=e.message;if(z(t)){s+=1;let e=Ge(t,++o);u(s,{absTime:Re(t.timestamp),cell:e});continue}let n=s>0?s:c??1,i=R(t)?Ge(t,++o):Ue(t,++o,r);u(n,{absTime:Re(t.timestamp),cell:i}),c=n;for(let e of t.toolCalls??[]){let t=We(e,++o);u(n,{absTime:Re(e.timestamp),toolName:e.name,callId:e.id,cell:t})}for(let[e,r]of(t.steps??[]).entries()){let t=(r.toolCalls??[]).map(e=>{let t=We(e,++o);return{absTime:Re(e.timestamp),toolName:e.name,callId:e.id,cell:t}});d(n,e+1,t)}}return[...[...i.entries()].map(([e,t])=>Je(e,t)),...a.map(e=>Je(null,e))].sort((e,t)=>Ye(e)-Ye(t))}function Ze(e){if(e.text!==``)return e.text;if(e.previewMarkdown!==void 0){let t=Ie(e.previewMarkdown);if(t!==``)return t}if(e.result!==void 0&&e.result!==``)return e.result;if(e.resultPreviewMarkdown!==void 0){let t=Ie(e.resultPreviewMarkdown);if(t!==``)return t}return e.kind}function Qe(e){return q(e)}function $e(e){return e===`tool`||e===`subtool`?2:+(e===`message`||e===`compacted`)}function et(e){return e!=null&&Number.isFinite(e)}function tt(e){if(!et(e.startedAt))return null;let t=et(e.timeSeconds)?Math.max(0,e.timeSeconds*1e3):0;return{start:e.startedAt,end:e.startedAt+t}}function nt(e,t=`sequence`){if(t!==`sequence`)return rt(e,t===`duration`);let n=[],r=[];for(let t of e){let e=t.groups.flatMap(e=>e.cells.filter(e=>e.requestOnly!==!0));e.length!==0&&(t.turn!==null&&r.push({turn:t.turn,time:n.length}),n.push(...e.map((e,t)=>({start:n.length+t,end:n.length+t+1,index:e.index,isError:e.isError===!0,kind:e.kind,label:e.text,lane:$e(e.kind)}))))}return n.length===0?null:{start:0,end:n.length,spans:n,turnBoundaries:r}}function rt(e,t){let n=e.flatMap(e=>{let t=e.groups.flatMap(e=>e.cells.flatMap(e=>{if(e.requestOnly===!0)return[];let t=tt(e);return t===null?[]:[{...t,index:e.index,isError:e.isError===!0,kind:e.kind,label:e.text,lane:$e(e.kind)}]}));return t.length===0?[]:[{turn:e.turn,rawSpans:t}]}),r=n.flatMap(e=>e.rawSpans);if(r.length===0)return null;let i=new Map,a=0,o=null;for(let e of[...r].sort((e,t)=>e.start-t.start||e.end-t.end))t&&o!==null&&e.start>o&&(a+=e.start-o),i.set(e,a),o=o===null?e.end:Math.max(o,e.end);let s=[],c=[];for(let e of n){let t=e.rawSpans.map(e=>{let t=i.get(e)??0;return{...e,start:e.start-t,end:e.end-t}});s.push(...t),e.turn!==null&&c.push({turn:e.turn,time:Math.min(...t.map(e=>e.start))})}return{start:Math.min(...s.map(e=>e.start)),end:Math.max(...s.map(e=>e.end)),spans:s,turnBoundaries:c}}function it(e,t,n=`sequence`){let r=nt(e,n);return new Set(r?.spans.filter(e=>e.start<=t.end&&e.end>=t.start).map(e=>e.index))}function at(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function ot(e){if(e.previewMarkdown===void 0)return``;let t=Ie(e.previewMarkdown);return e.text===``?t:t===``?e.text:`${e.text} · ${t}`}function st(e){return e.resultPreviewMarkdown===void 0?e.result??``:Ie(e.resultPreviewMarkdown)}function ct(e,t,n){let r=[...n.sourceBlocks??[],...n.outputBlocks??[]];return[e===null?`between turns`:`turn ${e}`,t,n.kind,n.kind===`message`?`assistant`:``,n.text,n.previewMarkdown??``,n.inputDetail??``,n.outputDetail??``,n.thinkingDetail??``,n.schemaDetail??``,n.result??``,n.resultPreviewMarkdown??``,n.callId??``,...r.flatMap(e=>[e.type,e.content,e.callId??``,e.toolName??``,e.imageAlt??``])]}var lt=class{entries=new Map;layouts;update(e){if(this.layouts===e)return!1;this.layouts=e;let t=new Set;for(let n of e)for(let e of n)for(let n of e.groups)for(let r of n.cells){if(r.requestOnly===!0)continue;let i=je(r),a=ct(e.turn,n.title,r),o=this.entries.get(i),s=o!==void 0&&at(o.sources,a)?o:{sources:a,text:[...a,ot(r),st(r)].join(`
3
+ `).toLocaleLowerCase()};this.entries.set(i,s),t.add(i)}for(let e of this.entries.keys())t.has(e)||this.entries.delete(e);return!0}search(e){let t=e.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);if(t.length===0)return null;let n=new Set;for(let[e,r]of this.entries)t.every(e=>r.text.includes(e))&&n.add(e);return n}},Q=oe(),ut=(0,Z.memo)(function({actualDuration:e,onActualDurationChange:t,allTurnsCollapsed:n,onToggleAllTurns:r,allAssistantsCollapsed:i,onToggleAllAssistants:a,searchQuery:o,onSearchQueryChange:s}){let{t:c}=L();return(0,Q.jsxs)(`div`,{className:`flex h-9 shrink-0 items-center gap-1 border-b border-dark-border/40 px-2`,role:`toolbar`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1.5 rounded px-2 py-1 text-xs text-dark-muted hover:bg-dark-surface/60`,"aria-pressed":e,title:c(e?`trajectory.toolbar.equalWidth`:`trajectory.toolbar.actualDuration`),onClick:()=>t(!e),children:[(0,Q.jsx)(N,{size:13}),c(`trajectory.toolbar.duration`)]}),(0,Q.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1.5 rounded px-2 py-1 text-xs text-dark-muted hover:bg-dark-surface/60`,"aria-pressed":n,title:c(n?`trajectory.toolbar.expandTurns`:`trajectory.toolbar.collapseTurns`),onClick:r,children:[n?(0,Q.jsx)(M,{size:13}):(0,Q.jsx)(P,{size:13}),c(`trajectory.toolbar.turns`)]}),(0,Q.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1.5 rounded px-2 py-1 text-xs text-dark-muted hover:bg-dark-surface/60`,"aria-pressed":i,title:c(i?`trajectory.toolbar.expandCalls`:`trajectory.toolbar.collapseCalls`),onClick:a,children:[(0,Q.jsx)(m,{size:13}),c(`trajectory.toolbar.calls`)]}),(0,Q.jsx)(`div`,{className:`ms-auto flex min-w-0 flex-1 items-center justify-end`,children:(0,Q.jsxs)(`div`,{className:`relative flex w-56 items-center`,children:[(0,Q.jsx)(h,{size:12,className:`pointer-events-none absolute start-2 text-dark-muted/50`}),(0,Q.jsx)(`input`,{type:`search`,className:`h-7 w-full rounded border border-dark-border/40 bg-dark-surface/60 ps-7 pe-2 text-xs text-dark-text outline-none placeholder:text-dark-muted/40 focus:border-accent-blue/50`,"aria-label":c(`trajectory.toolbar.search`),placeholder:c(`trajectory.toolbar.searchPlaceholder`),value:o,onChange:e=>s(e.currentTarget.value)})]})})]})}),dt=3,ft=500,pt=8,mt=8;function ht(e){let t=e?.stepStartTime,n=e?.firstTokenTime,r=e?.completedTime;return e?.timingRecorded!==!0||typeof t!=`number`||typeof n!=`number`||typeof r!=`number`||!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)||n<t||r<n?{}:{ttftMs:n-t,decodingMs:r-n}}function gt(e){let t=e.timeSeconds===null||!Number.isFinite(e.timeSeconds)?void 0:Math.max(0,e.timeSeconds*1e3),n=e.startedAt===null||!Number.isFinite(e.startedAt)?void 0:e.startedAt;return{...t===void 0?{}:{durationMs:t},...n===void 0?{}:{startedAt:n},...ht(e.assistantMetrics)}}function _t(e){switch(e){case`system`:return`SYSTEM`;case`user`:return`USER`;case`context`:return`CONTEXT`;case`compacted`:return`COMPACTED`;case`message`:return`ASSISTANT`;case`tool`:return`TOOL`;case`subtool`:return`SUBTOOL`}}function vt(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}.${(e=>String(e).padStart(3,`0`))(t.getMilliseconds())}`}function yt(e,t){let n=_t(e);if(t===void 0)return n;let r=t.durationMs===void 0?null:`Total ${Qe(t.durationMs)}`;return[n,t.startedAt===void 0?null:t.durationMs===void 0?`Started ${vt(t.startedAt)}`:`${vt(t.startedAt)} → ${vt(t.startedAt+t.durationMs)}`,[r,t.ttftMs===void 0||t.decodingMs===void 0?null:`TTFT ${Qe(t.ttftMs)} · Decoding ${Qe(t.decodingMs)}`].filter(e=>e!==null).join(` · `)].filter(e=>e!==null&&e!==``).join(`
4
+ `)}function bt(e,t){return e<=t?{start:e,end:t}:{start:t,end:e}}function xt(e){return Math.min(1,Math.max(0,e))}var St=(0,Z.memo)(function({turns:e,mode:t,range:n,selectedIndex:r=null,searchMatchIndexes:i=null,onRangeChange:a,onRecordSelect:o}){let s=(0,Z.useMemo)(()=>nt(e,t),[t,e]),c=(0,Z.useMemo)(()=>new Map(e.flatMap(e=>e.groups.flatMap(e=>e.cells.map(e=>[e.index,gt(e)])))),[e]),l=(0,Z.useMemo)(()=>new Map(e.flatMap(e=>e.groups.flatMap(e=>e.cells.map(e=>[e.index,Ze(e)])))),[e]),u=(0,Z.useRef)(null),d=(0,Z.useRef)(null),[f,p]=(0,Z.useState)(null),[m,h]=(0,Z.useState)(null),g=(0,Z.useRef)(null),_=(0,Z.useRef)(null),[v,y]=(0,Z.useState)(1),b=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{s!==null&&n!==null&&(n.end<s.start||n.start>s.end)&&a(null)},[s,a,n]),(0,Z.useLayoutEffect)(()=>{let e=b.current,t=_.current;b.current=null,e!==null&&t!==null&&(t.scrollLeft=e.fraction*t.scrollWidth-e.contentOffsetPx)},[v]);let x=(0,Z.useRef)(()=>{});if((0,Z.useEffect)(()=>{let e=u.current;if(!e)return;let t=e=>{e.preventDefault(),x.current(e)};return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[s]),s===null)return(0,Q.jsxs)(`div`,{className:`traj-root`,"data-empty":``,children:[(0,Q.jsxs)(`div`,{className:`traj-labels`,"aria-hidden":`true`,children:[(0,Q.jsx)(`span`,{children:`Input`}),(0,Q.jsx)(`span`,{children:`Model`}),(0,Q.jsx)(`span`,{children:`Tools`})]}),(0,Q.jsx)(`div`,{className:`traj-track`})]});let S=Math.max(1,s.end-s.start),C=Math.max(1,s.spans.length)*pt*v,w=e=>{let t=u.current;if(!t)return 0;let n=t.getBoundingClientRect();return xt((e-n.left)/Math.max(1,n.width))},T=e=>s.start+e*S,E=e=>{if(e.button===2){a(null);return}let t=e.target.closest(`[data-timeline-record-index]`),n=t===null?null:Number(t.dataset.timelineRecordIndex);n!==null&&Number.isFinite(n)?o?.(n):(d.current={pointerId:e.pointerId,anchorFraction:w(e.clientX),anchorClientX:e.clientX,recordIndex:null},e.currentTarget.setPointerCapture(e.pointerId))},D=e=>{let t=d.current;if(t!==null&&e.pointerId===t.pointerId){let n=w(e.clientX);if(Math.abs(e.clientX-t.anchorClientX)>=dt){let e=T(t.anchorFraction),r=T(n);p(bt(e,r))}return}let n=w(e.clientX),r=e.target.closest(`[data-timeline-record-index]`),i=r===null?null:Number(r.dataset.timelineRecordIndex);g.current&&clearTimeout(g.current),g.current=setTimeout(()=>{h({fraction:n,recordIndex:Number.isFinite(i)?i:null})},ft)},O=e=>{let t=d.current;t!==null&&e.pointerId===t.pointerId&&(d.current=null,f!==null&&(a(f),p(null)))},k=e=>{d.current?.pointerId===e.pointerId&&(d.current=null,p(null))};x.current=e=>{if(s===null)return;let t=_.current;if(t===null)return;if(e.ctrlKey||e.metaKey||e.altKey){let n=Math.min(mt,Math.max(1,v*(e.deltaY<0?1.25:.8)));if(n===v)return;let r=u.current;if(r!==null){let n=r.getBoundingClientRect();b.current={fraction:xt((e.clientX-n.left)/Math.max(1,n.width)),contentOffsetPx:e.clientX-t.getBoundingClientRect().left}}y(n);return}let n=e.deltaX===0?e.deltaY:e.deltaX;n!==0&&(t.scrollLeft+=n)};let A=f??n,j=m?.recordIndex;return(0,Q.jsxs)(`div`,{ref:_,className:`traj-root`,children:[(0,Q.jsxs)(`div`,{className:`traj-labels`,"aria-hidden":`true`,children:[(0,Q.jsx)(`span`,{children:`Input`}),(0,Q.jsx)(`span`,{children:`Model`}),(0,Q.jsx)(`span`,{children:`Tools`})]}),(0,Q.jsxs)(`div`,{ref:u,className:`traj-track`,style:{width:`max(100%, ${C}px)`},role:`slider`,"aria-label":`Trajectory timeline`,tabIndex:0,onKeyDown:e=>{e.key===`Escape`&&a(null)},onPointerDown:E,onPointerMove:D,onPointerUp:O,onPointerCancel:k,onPointerLeave:()=>{g.current&&clearTimeout(g.current),g.current=null,d.current===null&&h(null)},onDoubleClick:e=>{e.preventDefault(),a(null)},onContextMenu:e=>{e.preventDefault(),a(null)},children:[m!==null&&m.recordIndex===null&&f===null&&(0,Q.jsx)(`div`,{className:`traj-hoverLine`,"aria-hidden":`true`,style:{"--trajectory-hover-left":`${m.fraction*100}%`}}),A!==null&&(0,Q.jsx)(`div`,{className:`traj-selection`,"data-dragging":f===null?void 0:`true`,"aria-hidden":`true`,style:{"--trajectory-selection-left":`${(A.start-s.start)/S*100}%`,"--trajectory-selection-width":`${(A.end-A.start)/S*100}%`}}),(0,Q.jsx)(`div`,{className:`traj-turnBoundaries`,"aria-hidden":`true`,children:s.turnBoundaries.filter(e=>e.time>s.start).map(e=>(0,Q.jsx)(`span`,{className:`traj-turnBoundary`,"data-turn":e.turn,style:{"--trajectory-turn-left":`${(e.time-s.start)/S*100}%`}},e.turn))}),(0,Q.jsx)(`div`,{className:`traj-lanes`,"data-timeline-domain":``,children:s.spans.map(e=>{let t=(e.start-s.start)/S,n=(e.end-e.start)/S*100,a=c.get(e.index),o=a?.ttftMs,u=a?.decodingMs,d=o===void 0||u===void 0||o+u<=0?null:o/(o+u),f=l.get(e.index)??e.label;return(0,Q.jsx)(`span`,{"aria-hidden":`true`,className:`traj-span`,"data-timeline-span":e.kind,"data-timeline-record-index":e.index,"data-assistant-timing":d===null?void 0:`true`,"data-error":e.isError||void 0,"data-current":e.index===r||void 0,"data-hovered":j===e.index||void 0,"data-search-match":i===null?void 0:i.has(e.index)?`true`:`false`,"data-selected":A===null?void 0:e.start<=A.end&&e.end>=A.start?`true`:`false`,title:yt(e.kind,a),style:{"--trajectory-span-left":`${t*100}%`,"--trajectory-span-width":`${n}%`,"--trajectory-span-lane":e.lane,...d===null?{}:{"--trajectory-assistant-ttft":`${d*100}%`}},children:(0,Q.jsx)(`span`,{className:`traj-spanLabel`,children:f})},e.index)})})]})]})}),Ct=I();function wt(e){return typeof e==`object`?e.key:e}function Tt(e,t){let n=e.length;return new Proxy(e,{get(e,r,i){if(typeof r==`string`){let i=r.charCodeAt(0);if(i>=48&&i<=57){let i=+r;if(Number.isInteger(i)&&i>=0&&i<n){let n=e[i];if(typeof n!=`object`){let r=t[i*2];n=e[i]={index:i,key:n,start:r,size:t[i*2+1],end:r+t[i*2+1],lane:0}}return n}}if(r===`length`)return n}return Reflect.get(e,r,i)}})}function Et(e,t,n){let r=n.initialDeps??[],i,a=!0;function o(){let o=e();return(o.length!==r.length||o.some((e,t)=>r[t]!==e))&&(r=o,i=t(...o),n?.onChange&&!(a&&n.skipInitialOnChange)&&n.onChange(i),a=!1),i}return o.updateDeps=e=>{r=e},o}function Dt(e,t){if(e===void 0)throw Error(`Unexpected undefined${t?`: ${t}`:``}`);return e}var Ot=(e,t)=>Math.abs(e-t)<1.01,kt=(e,t,n)=>{let r;return Object.assign(function(...i){e.clearTimeout(r),r=e.setTimeout(()=>t.apply(this,i),n)},{cancel:()=>{e.clearTimeout(r)}})};function At({offset:e,isScrolling:t,elementMax:n,holdOffset:r,scrollOffset:i,pendingWrite:a,clampedMaxAtWrite:o}){return t&&a===null&&e===i?`spurious`:a!==null&&Math.abs(e-a.target)<1.5?`readBack`:a!==null&&!a.smooth&&n!==null&&a.target>n+r+.5&&Math.abs(e-(n+r))<1.5||a!==null&&!a.smooth&&a.lowMaxes?.some(t=>Math.abs(e-t)<1.5)?`clampedReadBack`:o!==null&&Math.abs(e-o)<1.5?`clampedEcho`:`external`}var jt=e=>e===`smooth`||e===`smoothFinishing`;function Mt({kind:e,offset:t,command:n,target:r}){return e!==`spurious`&&e!==`readBack`&&e!==`clampedReadBack`&&n?.index!=null&&n.phase!==`queued`&&!jt(n.phase)&&!Ot(t,n.lastTargetOffset)&&!Ot(t,r())&&e!==`clampedEcho`}var Nt=40;function Pt(e){let t=e[e.length-1];if(t===void 0)return!1;let n=e.length-2;for(;n>=0&&t.t-e[n].t<Nt;)n--;if(n<0)return!1;let r=e[n],i=n-1;for(;i>=0&&r.t-e[i].t<Nt;)i--;if(i<0)return!1;let a=e[i],o=(t.offset-r.offset)/(t.t-r.t),s=(r.offset-a.offset)/(r.t-a.t);return o*s>=0&&Math.abs(o)>=2*Math.abs(s)&&Math.abs(o)-Math.abs(s)>=.8}function Ft(e){let t=e[e.length-1];if(t===void 0)return!1;let n=e.length-2;for(;n>=0&&t.t-e[n].t<Nt;)n--;if(n<0)return!1;let r=e[n];return Math.abs(t.offset-r.offset)/(t.t-r.t)>=.05}var It,Lt=()=>{if(It!==void 0)return It;if(typeof navigator>`u`)return It=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return It=!0;let e=navigator.maxTouchPoints;return It=navigator.platform===`MacIntel`&&e!==void 0&&e>0},Rt,zt=()=>Rt===void 0?Rt=Lt()&&typeof CSS<`u`&&typeof CSS.supports==`function`&&CSS.supports(`overflow-anchor: auto`):Rt,Bt={capture:!0,passive:!0},Vt=class{constructor(e){this.host=e,this._touch=null,this.inMotion=()=>this._touch!==null&&this._touch.phase!==`lateFling`,this.dragging=()=>this._touch?.phase===`down`&&this._touch.moved,this.tail=()=>this._touch?.phase===`tail`?this._touch.moved?`fling`:`tap`:null,this.onScroll=({isScrolling:e,ownReadBack:t,moved:n,external:r})=>(e&&this._touch?.phase===`tail`?this._openTail(this._touch.moved||!t,!1):this._touch?.phase===`lateFling`&&(this.host.now()>this._touch.until?this._touch=null:r&&e&&n&&this._openTail(!0,!1)),!t&&e&&n&&this._touch?.phase===`down`?(this._touch.moved=!0,!0):!1),this.touchStart=()=>{this.end(),this._touch={phase:`down`,moved:!1}},this.touchEnd=()=>{let e=this._touch?.phase===`down`&&this._touch.moved;this.end(),this._openTail(e,e)},this.end=()=>{let e=this.host.getWindow();this._touch?.phase===`tail`&&e!=null&&e.clearTimeout(this._touch.timerId),this._touch=null},this.listen=e=>{let t=()=>this.touchStart(),n=()=>this.touchEnd();return e.addEventListener(`touchstart`,t,Bt),e.addEventListener(`touchend`,n,Bt),e.addEventListener(`touchcancel`,n,Bt),()=>{e.removeEventListener(`touchstart`,t,Bt),e.removeEventListener(`touchend`,n,Bt),e.removeEventListener(`touchcancel`,n,Bt),this.end()}},this._openTail=(e,t)=>{let n=this.host.getWindow();if(!Lt()||n==null)return;this.end();let r={phase:`tail`,moved:e,awaitingFling:t,timerId:n.setTimeout(()=>{this.host.tailStillMoving()?this._openTail(r.moved,r.awaitingFling):(this._touch=r.awaitingFling?{phase:`lateFling`,until:this.host.now()+1e3}:null,this.host.onTailClosed())},150)};this._touch=r}}get touch(){return this._touch}},Ht=e=>{let{clientWidth:t,clientHeight:n}=e;return{width:t,height:n}},Ut=e=>{let t=new Set;return{schedule:n=>{let r=e.requestAnimationFrame(()=>{t.delete(r),n()});t.add(r)},cancel:()=>{t.forEach(t=>e.cancelAnimationFrame(t)),t.clear()}}},Wt=e=>e,Gt=e=>{let t=e.overscan*Math.max(e.lanes??1,1),n=Math.max(e.startIndex-t,0),r=Math.min(e.endIndex+t,e.count-1)-n+1,i=Array(r);for(let e=0;e<r;e++)i[e]=n+e;return i},Kt=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=e=>{let{width:n,height:r}=e;t({width:Math.round(n),height:Math.round(r)})};if(i(Ht(n)),!r.ResizeObserver)return()=>{};let a=Ut(r),o=new r.ResizeObserver(()=>{let t=()=>{i(Ht(n))};e.options.useAnimationFrameWithResizeObserver?a.schedule(t):t()});return o.observe(n,{box:`content-box`}),()=>{o.unobserve(n),a.cancel()}},qt={passive:!0},Jt=typeof window>`u`||`onscrollend`in window,Yt=(e,t,n)=>{let r=e.scrollElement;if(!r)return;let i=e.targetWindow;if(!i)return;let a=e.options.useScrollendEvent&&Jt,o=0,s=a?null:kt(i,()=>t(n(r),!1),e.options.isScrollingResetDelay),c=e=>()=>{o=n(r),s?.(),t(o,e)},l=c(!0),u=c(!1);return r.addEventListener(`scroll`,l,qt),a&&r.addEventListener(`scrollend`,u,qt),()=>{r.removeEventListener(`scroll`,l),a&&r.removeEventListener(`scrollend`,u),s?.cancel()}},Xt=(e,t)=>Yt(e,t,t=>{let{horizontal:n,isRtl:r}=e.options;return n?t.scrollLeft*(r&&-1||1):t.scrollTop}),Zt=(e,t,n)=>{if(n.options.useCachedMeasurements){let t=n.indexFromElement(e),r=n.options.getItemKey(t);return n.itemSizeCache.get(r)??n.options.estimateSize(t)}if(t?.borderBoxSize){let e=t.borderBoxSize[0];if(e)return Math.round(e[n.options.horizontal?`inlineSize`:`blockSize`])}if(!t){let t=n.indexFromElement(e),r=n.options.getItemKey(t),i=n.itemSizeCache.get(r);if(i!==void 0)return i}return e[n.options.horizontal?`offsetWidth`:`offsetHeight`]},Qt=(e,{adjustments:t=0,behavior:n},r)=>{var i,a;(a=(i=r.scrollElement)?.scrollTo)==null||a.call(i,{[r.options.horizontal?`left`:`top`]:e+t,behavior:n})},$t=(e,t)=>e===`smooth`?t?`smoothLanded`:`smooth`:`instant`,en=e=>e?.phase===`smooth`||e?.phase===`smoothLanded`;function tn(e,t,n,r){if(t===0)return!1;let i=r(0),a=new Set,o=0;for(;o<e;){let e=n(o);if(e===i)break;a.add(e),o++}let s=e-o;if(s===0||s>=t)return!1;for(let e=0;e<s;e++)if(r(e)!==n(o+e))return!1;for(let e=s;e<t;e++)if(a.has(r(e)))return!1;return!0}var nn=class{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._singleLaneMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this._holdOffset=0,this._reportedOverscroll=!1,this._iosGesture=new Vt({getWindow:()=>this.targetWindow,now:()=>this.now(),tailStillMoving:()=>{let e=this.scrollState;if(e?.phase!==`queued`||this.pendingWrite!==null)return!1;let t=this._readElementOffset();return t===null||this._lastElementOffset===null||Math.abs(t-this._lastElementOffset)<1?!1:(this._lastElementOffset=t,e.samples=[...e.samples??[],{t:this.now(),offset:t}],!0)},onTailClosed:()=>{let e=this.scrollState;e?.phase===`queued`&&Ft(e.samples??[])&&(this.scrollState=null),this._flushHoldIfReady(!0),this._writeAwaitingCommand()}}),this._lastElementOffset=null,this.pendingWrite=null,this._clampedAdjustment=null,this.elementsCache=new Map,this._resizeBatch=null,this.now=()=>{var e;return((e=this.targetWindow?.performance)?.now)?.call(e)??Date.now()},this.observer=(()=>{let e=null,t=null,n=()=>{if(e)return e;let n=this.targetWindow;if(!n||!n.ResizeObserver)return null;let i=t=Ut(n);return e=new n.ResizeObserver(e=>{let t=()=>{let t={sync:!1};this._resizeBatch=t;try{e.forEach(r)}finally{this._resizeBatch=null,t.notify&&(this.notify(t.sync),this._noteClampMax(),this._flushHoldIfReady(!0),this._retryClampedAdjustment())}};this.options.useAnimationFrameWithResizeObserver?i.schedule(t):t()})},r=e=>{let t=e.target,n=this.indexFromElement(t);if(t.isConnected)this.isIndexInRange(n)&&this.shouldMeasureDuringScroll(n)&&this.resizeItem(n,this.options.measureElement(t,e,this));else{this.observer.unobserve(t);for(let[e,n]of this.elementsCache)if(n===t){this.elementsCache.delete(e);break}}};return{disconnect:()=>{var r;(r=n())==null||r.disconnect(),t?.cancel(),e=null,t=null},observe:e=>n()?.observe(e,{box:`border-box`}),unobserve:e=>n()?.unobserve(e)}})(),this.range=null,this.setOptions=e=>{let t={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:Wt,rangeExtractor:Gt,onChange:()=>{},measureElement:Zt,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:`data-index`,initialMeasurementsCache:[],lanes:1,anchorTo:`start`,followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:`estimate`,useCachedMeasurements:!1};for(let n in e){let r=e[n];r!==void 0&&(t[n]=r)}let n=this.options,r=null,i=null,a=!1;if(n!==void 0&&n.enabled&&t.enabled&&t.anchorTo===`end`&&this.scrollElement!==null){let e=n.count,o=t.count,s=this.getMeasurements(),c=this._singleLaneMeasurements?.items??s,l=e=>wt(c[e]),u=e>0?l(0):null,d=e>0?l(e-1):null;if(o!==e||e>0&&o>0&&(t.getItemKey(0)!==u||t.getItemKey(o-1)!==d)){a=!0;let c=e>0?this.getVirtualItemForOffset(this.getScrollOffset())??s[0]:null;c&&(r=[c.key,this.getScrollOffset()-c.start]);let u=t.followOnAppend===!0?`auto`:t.followOnAppend||null;u&&o>0&&this.isAtEnd(n.scrollEndThreshold)&&(e===0||t.getItemKey(o-1)!==d)&&(o>e||tn(e,o,l,t.getItemKey))&&(i=u)}}this.options=t,a&&(this.pendingMin=0,this.itemSizeCacheVersion++);let o=null;if(r&&this.scrollOffset!==null&&!this._awaitingCommandReadBack()){let[e,t]=r,n=this.getMeasurements(),{count:a,getItemKey:s}=this.options,c=0;for(;c<a&&s(c)!==e;)c++;if(c<a){let e=n[c];if(e){let n=Math.max(0,e.start+t);!i&&n!==this.scrollOffset&&(o=n-this.scrollOffset,this.scrollOffset=n)}}}i?this.pendingScrollAnchor={kind:`follow`,behavior:i}:o!==null&&(this._canWriteScroll()?this.pendingScrollAnchor={kind:`anchor`,delta:o}:(this._holdOffset+=o,this._followOffsetTarget(o)))},this.notify=e=>{var t,n;(n=(t=this.options).onChange)==null||n.call(t,this,e)},this.maybeNotify=Et(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{var e;this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,(e=this._momentumStop)==null||e.restore(),this._momentumStop=null,this.isScrolling=!1,this.scrollDirection=null,this._holdOffset=0,this._reportedOverscroll=!1,this._clampedAdjustment=null,this.pendingWrite=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{let e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}this.scrollElement=e,this.targetWindow=this.scrollElement&&`ownerDocument`in this.scrollElement?this.scrollElement.ownerDocument.defaultView:this.scrollElement?.window??null,this.elementsCache.forEach(e=>{this.observer.observe(e)}),this.unsubs.push(this.options.observeElementRect(this,e=>{this.scrollRect=e,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(e,t)=>{let n=t?this._elementMaxScrollOffset():null,r=this._reportedOverscroll;this._reportedOverscroll=e<0||n!==null&&e>n+1;let i=e;this._lastElementOffset=i,e=this._toLayoutOffset(e);let a=this._classifyScrollEvent(e,t,n);if(a===`spurious`)return;a===`readBack`?e=this.pendingWrite.target:a===`clampedReadBack`&&this.scrollState?.index!=null&&e<this.getMaxScrollOffset()-1.5?this.scrollState.lastTargetOffset=e:Mt({kind:a,offset:e,command:this.scrollState,target:()=>this.getScrollStateTarget(this.scrollState)})&&(this.scrollState=null),this.pendingWrite=null,this._clampedAdjustment!==null&&Math.abs(e-this._clampedAdjustment.maxAtWrite)>=1.5&&(this._clampedAdjustment=null);let o=this.getScrollOffset(),s=this.scrollDirection;this.scrollDirection=t?o===e?this.scrollDirection:o<e?`forward`:`backward`:null,this.scrollOffset=e,this.isScrolling=t;let c=this.scrollState;if(c?.phase===`queued`&&a===`external`&&t){if(r||this._reportedOverscroll)c.samples=[];else{let e=this.now();c.samples=[...(c.samples??[]).filter(t=>e-t.t<=200),{t:e,offset:i}],(s!==null&&this.scrollDirection!==s||Pt(c.samples))&&(this.scrollState=null)}}this._iosGesture.onScroll({isScrolling:t,ownReadBack:a===`readBack`,moved:e!==o,external:a===`external`&&this.scrollState?.phase!==`smooth`&&this.scrollState?.phase!==`smoothFinishing`})&&this.scrollState?.phase===`queued`&&(this.scrollState=null),this._flushHoldIfReady(!0),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),`addEventListener`in this.scrollElement&&this.unsubs.push(this._iosGesture.listen(this.scrollElement)),this._scrollToOffset(this.getScrollOffset())}this._noteClampMax();let t=this.pendingScrollAnchor;this.pendingScrollAnchor=null,t&&this.scrollElement&&this.options.enabled&&(t.kind===`anchor`?this._canWriteScroll()?en(this.scrollState)&&!Ot(this.getScrollOffset()-t.delta,this.scrollState.lastTargetOffset)||(this._followOffsetTarget(t.delta),this._scrollToOffset(this.getScrollOffset())):(this._holdOffset+=t.delta,this._followOffsetTarget(t.delta),this.notify(!1)):this.scrollToEnd({behavior:t.behavior})),this._flushHoldIfReady(!1),this._retryClampedAdjustment()},this._classifyScrollEvent=(e,t,n)=>At({offset:e,isScrolling:t,elementMax:n,holdOffset:this._holdOffset,scrollOffset:this.scrollOffset,pendingWrite:this.pendingWrite,clampedMaxAtWrite:this._clampedAdjustment?.maxAtWrite??null}),this._retryClampedAdjustment=()=>{if(this._clampedAdjustment===null||!this.scrollElement||!this.options.enabled)return;let{target:e,maxAtWrite:t}=this._clampedAdjustment,n=this.getMaxScrollOffset();n>t+.5&&(this._clampedAdjustment=e>n+.5?{target:e,maxAtWrite:n}:null,this._scrollToOffset(e))},this._writeAwaitingCommand=()=>{let e=this.scrollState;if(e===null||e.phase!==`queued`)return;let{behavior:t}=e;this.getMeasurements();let n=this.getScrollStateTarget(e);e.lastTargetOffset=n,this._clampedAdjustment=null,e.phase=$t(t,e.index!=null&&Ot(n,this.getScrollOffset())),this._scrollToOffset(n,{behavior:t}),this.scheduleScrollReconcile()},this._readElementOffset=()=>{let e=this.scrollElement;if(e==null)return null;let{horizontal:t,isRtl:n}=this.options;return typeof e.scrollTop==`number`?t?e.scrollLeft*(n&&-1||1):e.scrollTop:typeof e.scrollY==`number`?t?e.scrollX:e.scrollY:null},this._canWriteScroll=()=>!(Lt()&&this._iosGesture.inMotion())&&!this._reportedOverscroll,this._flushHoldIfReady=e=>{if(this._holdOffset===0||!this.scrollElement||!this.options.enabled||!this._canWriteScroll()||this.scrollState?.phase===`smooth`)return;this._holdOffset=0,this.scrollOffset!==null&&this.scrollOffset<0&&(this.scrollOffset=0),this.notify(e);let t=this.getCommandWrittenOffset()??this.getScrollOffset();this._clampedAdjustment=this._clampedBy(t),this._scrollToOffset(t)},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?`width`:`height`]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset==`function`?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getMeasurementOptions=Et(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode,this.options.gap],(e,t,n,r,i,a,o,s)=>(this.prevLanes!==void 0&&this.prevLanes!==a&&(this.lanesChangedFlag=!0),this.prevLanes=a,this.pendingMin=null,{count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o,gap:s}),{key:!1}),this.isIndexInRange=e=>e>=0&&e<this.options.count,this.getMeasurements=Et(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o,gap:s},c)=>{let l=this.itemSizeCache;if(!i)return this.measurementsCache=[],this._singleLaneMeasurements=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(let t of this.laneAssignments.keys())t>=e&&this.laneAssignments.delete(t);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this._singleLaneMeasurements=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(e=>{this.itemSizeCache.set(e.key,e.size)}));let u=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1),a===1){let i=e*2,a=this._singleLaneMeasurements?.flat;if(!a||a.length<i){let e=new Float64Array(i);a&&u>0&&e.set(a.subarray(0,u*2)),a=e}let o=u===0?Array(e):this._singleLaneMeasurements.items.slice(),c;if(u===0)c=t+n;else{let e=u-1;c=a[e*2]+a[e*2+1]+s}for(let t=u;t<e;t++){let e=r(t);o[t]=e;let n=l.get(e),i=typeof n==`number`?n:this.options.estimateSize(t);a[t*2]=c,a[t*2+1]=i,c+=i+s}this._singleLaneMeasurements={flat:a,items:o};let d=Tt(o,a);return this.measurementsCache=d,d}let d=this.measurementsCache.slice(0,u),f=Array(a).fill(void 0),p=new Float64Array(a),m=0;for(let e=0;e<u;e++){let t=d[e];t&&(f[t.lane]===void 0&&m++,f[t.lane]=e,p[t.lane]=t.end)}for(let i=u;i<e;i++){let e=r(i),c=this.laneAssignments.get(i),u,h,g=o===`estimate`||l.has(e);if(c!==void 0&&this.options.lanes>1){u=c;let e=f[u],r=e===void 0?void 0:d[e];h=r?r.end+s:t+n}else if(m===a){let e=0,t=p[0],n=f[0];for(let r=1;r<a;r++){let i=p[r];(i<t||i===t&&f[r]<n)&&(e=r,t=i,n=f[r])}u=e,h=t+s,g&&this.laneAssignments.set(i,u)}else u=i%this.options.lanes,h=t+n,g&&this.laneAssignments.set(i,u);let _=l.get(e),v=typeof _==`number`?_:this.options.estimateSize(i),y=h+v;d[i]={index:i,start:h,size:v,end:y,key:e,lane:u},f[u]===void 0&&m++,f[u]=i,p[u]=y}return this.measurementsCache=d,d},{key:!1,debug:()=>this.options.debug}),this.calculateRange=Et(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,n,r)=>e.length===0||t===0?(this.range=null,null):(this.range=on(e,t,n,r,r===1&&this._singleLaneMeasurements!==null?this._singleLaneMeasurements.flat:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=Et(()=>{let e=null,t=null,n=this.calculateRange();return n&&(e=n.startIndex,t=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t,this.options.lanes]},(e,t,n,r,i,a)=>r===null||i===null?[]:e({startIndex:r,endIndex:i,overscan:t,count:n,lanes:a}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{if(!en(this.scrollState))return!0;let t=this.scrollState.index??this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)?.index;if(t!==void 0&&this.range){let n=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),r=Math.max(0,t-n),i=Math.min(this.options.count-1,t+n);return e>=r&&e<=i}return!0},this.measureElement=e=>{if(!e){this.elementsCache.forEach((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))});return}let t=this.indexFromElement(e);if(!this.isIndexInRange(t))return;let n=this.options.getItemKey(t),r=this.elementsCache.get(n);r!==e&&(r&&this.observer.unobserve(r),this.observer.observe(e),this.elementsCache.set(n,e)),e.isConnected&&(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(t)&&this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{var n;if(!this.isIndexInRange(e))return;this._resizeBatch?.sync&&this.getMeasurements();let r,i,a,o=this._singleLaneMeasurements?.flat;if(this.options.lanes===1&&o!=null)a=this.options.getItemKey(e),i=o[e*2],r=o[e*2+1];else{let t=this.measurementsCache[e];if(!t)return;a=t.key,i=t.start,r=t.size}let s=this.itemSizeCache.get(a)??r,c=t-s;if(c!==0){let o=this.options.anchorTo===`end`&&!en(this.scrollState)&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,l=o?this._getLayoutTotalSize():0,u=this.getScrollOffset(),d=this.itemSizeCache.has(a)?i+s<=u&&this.scrollDirection!==`backward`:i<u,f=!en(this.scrollState)&&(this.shouldAdjustScrollPositionOnItemSizeChange===void 0?d:this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[e]??{index:e,key:a,start:i,size:r,end:i+r,lane:0},c,this));(this.pendingMin===null||e<this.pendingMin)&&(this.pendingMin=e),this.itemSizeCache.set(a,t),this.itemSizeCacheVersion++;let p=!1;if(this._awaitingCommandReadBack()||(o?p=this.applyScrollAdjustment(this._getLayoutTotalSize()-l):f&&(p=this.applyScrollAdjustment(c))),this._resizeBatch){this._resizeBatch.notify=!0,(n=this._resizeBatch).sync||(n.sync=p);return}this.notify(p),this._noteClampMax(),this._flushHoldIfReady(!0),this._retryClampedAdjustment()}},this.getVirtualItems=Et(()=>[this.getVirtualIndexes(),this.getMeasurements(),this._holdOffset],(e,t,n)=>{let r=[];for(let i=0,a=e.length;i<a;i++){let a=t[e[i]];r.push(n===0?a:{...a,start:a.start-n,end:a.end-n})}return r},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{let t=this.getMeasurements();if(t.length===0)return;let n=this._singleLaneMeasurements?.flat,r=this.options.lanes===1&&n!=null;return Dt(t[rn(0,t.length-1,r?e=>n[e*2]:e=>Dt(t[e]).start,e)])},this._noteClampMax=()=>{if(!this._awaitingCommandReadBack())return;let e=this._elementMaxScrollOffset();if(e===null)return;let t=this.pendingWrite,n=Math.max(e,0)+this._holdOffset;if(n>=t.target)return;let r=t.lowMaxes??=[];r[r.length-1]!==n&&r.push(n)},this.getMaxScrollOffset=()=>(this._elementMaxScrollOffset()??0)+this._holdOffset,this._toLayoutOffset=e=>{let t=e+this._holdOffset;return this.pendingScrollAnchor?.kind===`anchor`&&(t+=this.pendingScrollAnchor.delta),t},this._elementMaxScrollOffset=()=>{let e=this.scrollElement;if(e===null)return null;if(`scrollHeight`in e)return this.options.horizontal?e.scrollWidth-e.clientWidth:e.scrollHeight-e.clientHeight;if(`document`in e){let t=e.document.documentElement;return this.options.horizontal?t.scrollWidth-e.innerWidth:t.scrollHeight-e.innerHeight}return null},this._momentumStop=null,this._stopMomentum=e=>{let t=this.scrollElement,n=this.targetWindow;if(t===null||n===null)return;let r=`document`in t?t.document.scrollingElement:t;if(!r?.style)return;if(this._momentumStop){this._momentumStop.done=e;return}let{style:i}=r,a=this.options.horizontal?`overflow-x`:`overflow-y`,o=i.getPropertyValue(a),s=i.getPropertyPriority(a);i.setProperty(a,`hidden`,`important`);let c={restore:()=>i.getPropertyValue(a)!==`hidden`||i.getPropertyPriority(a)!==`important`?!1:(i.setProperty(a,o,s),!0),done:e};this._momentumStop=c,n.requestAnimationFrame(()=>n.requestAnimationFrame(()=>{this._momentumStop===c&&(this._momentumStop=null,c.restore()&&c.done())}))},this._clampedBy=e=>{let t=this._elementMaxScrollOffset();if(t===null)return null;let n=t+this._holdOffset;return e>n+.5?{target:e,maxAtWrite:n}:null},this.getVirtualDistanceFromEnd=()=>Math.max(this._getLayoutTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(e=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=e,this.getOffsetForAlignment=(e,t,n=0)=>{if(!this.scrollElement)return 0;let r=this.getSize(),i=this.getScrollOffset();t===`auto`&&(t=e>=i+r?`end`:`start`),t===`center`?e+=(n-r)/2:t===`end`&&(e-=r);let a=this.getMaxScrollOffset();return Math.max(Math.min(a,e),0)},this.getOffsetForIndex=(e,t=`auto`)=>{e=Math.max(0,Math.min(e,this.options.count-1));let n=this.getSize(),r=this.getScrollOffset(),i=this.measurementsCache[e];if(!i)return;if(t===`auto`){if(i.end>=r+n-this.options.scrollPaddingEnd)t=`end`;else if(i.start<=r+this.options.scrollPaddingStart)t=`start`;else return[r,t]}if(t===`end`&&e===this.options.count-1){let e=this.getMaxScrollOffset(),n=e-this.options.paddingEnd+this.options.scrollPaddingEnd;return[Math.max(Math.min(n,e),0),t]}let a=t===`end`?i.end+this.options.scrollPaddingEnd:i.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,t,i.size),t]},this.scrollToOffset=(e,{align:t=`start`,behavior:n=`auto`}={})=>{this._startScroll({index:null,align:t},this.getOffsetForAlignment(e,t),n,`absolute`)},this.scrollToIndex=(e,{align:t=`auto`,behavior:n=`auto`}={})=>{e=Math.max(0,Math.min(e,this.options.count-1));let r=this.getOffsetForIndex(e,t);if(!r)return;let[i,a]=r;this._startScroll({index:e,align:a},i,n,`absolute`)},this.scrollBy=(e,{behavior:t=`auto`}={})=>{let n=this.getOffsetForAlignment((this.getCommandWrittenOffset()??this.getScrollOffset())+e,`start`);this._startScroll({index:null,align:`start`},n,t,`relative`)},this.scrollToEnd=({behavior:e=`auto`}={})=>{this.options.count>0?this._startScroll({index:this.options.count-1,align:`end`,toEnd:!0},Math.max(this.getMaxScrollOffset(),0),e,`absolute`):this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:e})},this.cancelScroll=()=>{this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null},this.getTotalSize=()=>Math.max(this._getLayoutTotalSize()-this._holdOffset,0),this._getLayoutTotalSize=()=>{let e=this.getMeasurements(),t;if(e.length===0)t=this.options.paddingStart;else if(this.options.lanes===1){let n=e.length-1,r=this._singleLaneMeasurements?.flat;t=r==null?e[n]?.end??0:r[n*2]+r[n*2+1]}else{let n=Array(this.options.lanes).fill(null),r=e.length-1;for(;r>=0&&n.some(e=>e===null);){let t=e[r];n[t.lane]===null&&(n[t.lane]=t.end),r--}t=Math.max(...n.filter(e=>e!==null))}return Math.max(t-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{let e=[];if(this.itemSizeCache.size===0)return e;let t=this.getMeasurements();for(let n of t)n&&this.itemSizeCache.has(n.key)&&e.push({index:n.index,key:n.key,start:n.start,size:n.size,end:n.end,lane:n.lane});return e},this._scrollToOffset=(e,{adjustments:t,behavior:n}={})=>{let r={target:e+(t??0),smooth:n===`smooth`};return this.pendingWrite=r,this.options.scrollToFn(e-this._holdOffset,{behavior:n,adjustments:t},this),r},this.getCommandWrittenOffset=()=>this.scrollState!==null&&this.pendingWrite!==null&&!this.pendingWrite.smooth?this.pendingWrite.target:null,this._awaitingCommandReadBack=()=>{let e=this.getCommandWrittenOffset();return!(Lt()&&this._iosGesture.dragging())&&e!==null&&!Ot(e,this.getScrollOffset())},this._followOffsetTarget=e=>{this.scrollState!==null&&this.scrollState.index==null&&(this.scrollState.lastTargetOffset+=e)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(e)}get scrollAdjustments(){return 0}applyScrollAdjustment(e,t){if(e===0)return!1;if(this._followOffsetTarget(e),this._canWriteScroll()){let n=this.getScrollOffset();this._clampedAdjustment=this._clampedBy(n+e);let r=this._scrollToOffset(n,{adjustments:e,behavior:t});return this.scrollOffset!==null&&(this.pendingWrite===r&&(this.scrollOffset+=e),this.scrollOffset<0&&(this.scrollOffset=0)),!0}return this._holdOffset+=e,this.scrollOffset!==null&&(this.scrollOffset+=e),!0}scheduleScrollReconcile(){this.targetWindow?this.rafId??=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}):this.scrollState=null}getScrollStateTarget(e){let t=e.toEnd?[Math.max(this.getMaxScrollOffset(),0)]:e.index==null?void 0:this.getOffsetForIndex(e.index,e.align);return t?t[0]:e.lastTargetOffset}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}if(this.scrollState.phase===`queued`){this.scheduleScrollReconcile();return}this.getMeasurements();let e=this.getScrollStateTarget(this.scrollState),t=this.scrollState.index==null?1:this.options.useAnimationFrameWithResizeObserver?3:2,n=e!==this.scrollState.lastTargetOffset;if(!n&&Ot(e,this.getScrollOffset())){if(this.scrollState.phase===`smooth`?this.scrollState.phase=`smoothLanded`:this.scrollState.phase===`smoothFinishing`&&(this.scrollState.phase=`instant`),this.scrollState.stableFrames++,this.scrollState.stableFrames>=t){this.getScrollOffset()!==e&&this._scrollToOffset(e,{behavior:`auto`}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,n){let t=this.getSize()||600,n=Math.abs(e-this.getScrollOffset()),r=en(this.scrollState)&&n>t;this.scrollState.lastTargetOffset=e,r?this.scrollState.phase=`smooth`:this.scrollState.phase===`smooth`?this.scrollState.phase=`smoothFinishing`:this.scrollState.phase===`smoothLanded`&&(this.scrollState.phase=`instant`),this._scrollToOffset(e,{behavior:r?`smooth`:`auto`})}this.scheduleScrollReconcile()}_startScroll(e,t,n,r){let i=this._iosGesture.tail();if(r===`absolute`&&i!==null){if(i===`fling`&&zt()){this._stopMomentum(()=>{this.scrollState?.phase!==`queued`||this._iosGesture.tail()!==`fling`||this._reportedOverscroll||(this._iosGesture.end(),this._flushHoldIfReady(!0),this._writeAwaitingCommand())}),this.scrollState={...e,startedAt:this.now(),lastTargetOffset:t,stableFrames:0,phase:`queued`,behavior:n,samples:[]},this.scheduleScrollReconcile();return}this._iosGesture.end()}this.scrollState={...e,startedAt:this.now(),lastTargetOffset:t,stableFrames:0,behavior:n,phase:$t(n,e.index!=null&&Ot(t,this.getScrollOffset()))},this._scrollToOffset(t,{behavior:n}),this.scheduleScrollReconcile()}},rn=(e,t,n,r)=>{for(;e<=t;){let i=(e+t)/2|0,a=n(i);if(a<r)e=i+1;else if(a>r)t=i-1;else return i}return e>0?e-1:0};function an(e,t,n){let r=0;for(;r<=t;){let i=(r+t)/2|0,a=e[i*2];if(a<n)r=i+1;else if(a>n)t=i-1;else return i}return r>0?r-1:0}function on(e,t,n,r,i){let a=e.length-1;if(e.length<=r)return{startIndex:0,endIndex:a};if(r===1&&i!==null){let e=an(i,a,n),r=e,o=n+t;for(;r<a&&i[r*2]+i[r*2+1]<o;)r++;return{startIndex:e,endIndex:r}}let o=rn(0,a,t=>e[t].start,n),s=o;if(r===1)for(;s<a&&e[s].end<n+t;)s++;else if(r>1){let i=Array(r).fill(0);for(;s<a&&i.some(e=>e<n+t);){let t=e[s];i[t.lane]=t.end,s++}let c=Array(r).fill(n+t);for(;o>=0&&c.some(e=>e>=n);){let t=e[o];c[t.lane]=t.start,o--}o=Math.max(0,o-o%r),s=Math.min(a,s+(r-1-s%r))}return{startIndex:o,endIndex:s}}var sn=typeof document<`u`?Z.useLayoutEffect:Z.useEffect;function cn({useFlushSync:e=!0,directDomUpdates:t=!1,directDomUpdatesMode:n=`transform`,...r}){let i=Z.useReducer(e=>e+1,0)[1],a=Z.useRef({enabled:t,mode:n,container:null,lastSize:null,lastPositions:new WeakMap,prevRange:null});a.current.enabled=t,a.current.mode=n;let o=Z.useRef(!1),s=e=>{let t=a.current;if(!t.enabled||!t.container)return;let n=e.getTotalSize();if(n!==t.lastSize){t.lastSize=n;let r=e.options.horizontal?`width`:`height`;t.container.style[r]=`${n}px`}},c=(e,t,n)=>{let r=a.current,i=!!e.options.horizontal,o=t.start-e.options.scrollMargin;r.lastPositions.get(n)!==o&&(r.lastPositions.set(n,o),r.mode===`transform`?n.style.transform=i?`translate3d(${o}px, 0, 0)`:`translate3d(0, ${o}px, 0)`:n.style[i?`left`:`top`]=`${o}px`)},l=e=>{let t=a.current;if(t.enabled&&t.container){s(e);for(let t of e.getVirtualItems()){let n=e.elementsCache.get(t.key);n&&c(e,t,n)}}},u={...r,onChange:(t,n)=>{var s;let c=a.current,u=!0;if(c.enabled){l(t);let e=t.range,n=c.prevRange;u=!n||n.isScrolling!==t.isScrolling||n.startIndex!==e?.startIndex||n.endIndex!==e?.endIndex,u&&(c.prevRange=e?{startIndex:e.startIndex,endIndex:e.endIndex,isScrolling:t.isScrolling}:null)}u&&(e&&n&&!o.current?(0,Ct.flushSync)(i):i()),(s=r.onChange)==null||s.call(r,t,n)}},[d]=Z.useState(()=>{let e=new nn(u),t=e.measureElement;return e.measureElement=n=>{o.current=!0;try{t(n)}finally{o.current=!1}let r=a.current;if(n!==null&&r.enabled&&r.container){let t=e.measurementsCache[e.indexFromElement(n)];t&&c(e,t,n)}},Object.assign(e,{containerRef:t=>{let n=a.current;n.container=t,n.lastSize=null,t!==null&&l(e)}})});return d.setOptions(u),sn(()=>d._didMount(),[]),sn(()=>(s(d),d._willUpdate())),sn(()=>{l(d)}),d}function ln(e){return cn({observeElementRect:Kt,observeElementOffset:Xt,scrollToFn:Qt,...e})}var un=30,dn=20,fn=26,pn=22,mn=9;function hn(e){let t=encodeURIComponent(je(e.cell));return e.collapsedSummaryKind===void 0?t:`${t}\u0000summary\u0000${e.collapsedSummaryKind}`}function gn(e){if(e.collapsedSummaryKind!==void 0)return dn;let t=un;return e.turnStart===!0&&e.turn!==null&&e.turn!==void 0&&(t+=fn),e.groupStart===!0&&(t+=pn),t}function _n(e){let t=[],n=[];for(let[r,i]of e.entries()){let e={logicalIndex:r,record:i};if(i.cell.requestOnly===!0){n.push(e);continue}let a=[...n,e];n=[],t.push({entries:a,height:a.reduce((e,t)=>e+gn(t.record),0),key:hn(i)})}return n.length>0&&t.push({entries:n,height:mn,key:n.map(e=>hn(e.record)).join(`|`)}),t}var vn=[`Input`,`Output`,`Think`,`Time`],yn=(0,Z.memo)(function({turn:e}){return(0,Q.jsxs)(`div`,{className:`sticky top-0 z-10 flex h-[26px] items-center border-b border-dark-border/40 bg-dark-surface/95 px-2 backdrop-blur`,children:[(0,Q.jsxs)(`span`,{className:`text-meta font-semibold text-dark-text`,children:[`Turn `,e]}),(0,Q.jsx)(`div`,{className:`ms-auto flex items-center gap-3 pe-1 text-badge text-dark-muted/50`,"aria-hidden":`true`,children:vn.map(e=>(0,Q.jsx)(`span`,{className:`w-12 text-end`,children:e},e))})]})}),bn=(0,Z.memo)(function({title:e,description:t}){return(0,Q.jsxs)(`div`,{className:`flex h-[22px] items-center gap-2 px-2 text-meta`,children:[(0,Q.jsx)(`span`,{className:`font-medium text-dark-muted`,children:e}),t!==void 0&&t!==``&&(0,Q.jsx)(`span`,{className:`truncate text-dark-muted/50`,children:t})]})}),xn={system:`System`,user:`User`,context:`Context`,compacted:`Compacted`,message:`Message`,tool:`Tool`,subtool:`Sub`},Sn={system:`bg-dark-surface text-dark-muted border-dark-border/40`,user:`bg-accent-blue/10 text-accent-blue border-accent-blue/30`,context:`bg-dark-surface text-dark-muted border-dark-border/40`,compacted:`bg-accent-yellow/15 text-accent-yellow border-accent-yellow`,message:`bg-accent-green/10 text-accent-green border-accent-green/30`,tool:`bg-accent-purple/10 text-accent-purple border-accent-purple/30`,subtool:`bg-dark-surface text-dark-muted border-dark-border/40`},Cn=(0,Z.memo)(function({cell:e,selected:t=!1,onClick:n}){let{index:r,kind:i,timeSeconds:a,input:o,output:s,think:c}=e,l=Ze(e),u=i===`message`;return(0,Q.jsxs)(`div`,{className:[`flex h-[30px] items-center gap-2 border-b border-dark-border/20 px-2 text-xs cursor-pointer select-none`,t?`bg-accent-blue/10`:`hover:bg-dark-surface/40`].join(` `),"data-kind":i,"data-selected":t||void 0,onClick:()=>n?.(r),children:[(0,Q.jsxs)(`span`,{className:`w-10 shrink-0 text-end tabular-nums text-dark-muted/50`,children:[`#`,r]}),(0,Q.jsx)(`span`,{className:`w-[74px] shrink-0`,children:(0,Q.jsx)(`span`,{className:[`inline-block rounded border px-1 py-px text-badge leading-none`,Sn[i]].join(` `),children:xn[i]})}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-dark-text`,title:l,children:l}),(0,Q.jsxs)(`span`,{className:`flex shrink-0 items-center gap-2 tabular-nums text-dark-muted/60`,children:[u&&(0,Q.jsxs)(Q.Fragment,{children:[o!==void 0&&(0,Q.jsx)(`span`,{title:`Input tokens`,children:o}),s!==void 0&&(0,Q.jsx)(`span`,{title:`Output tokens`,children:s}),c!==void 0&&(0,Q.jsx)(`span`,{title:`Reasoning tokens`,children:c})]}),(0,Q.jsx)(`span`,{className:`w-16 text-end`,children:Me(a)})]})]})}),wn=100,Tn=12,En=600,Dn=2;function On(e){let t=(0,Z.useRef)({rows:[],structure:[]});if(t.current.rows===e)return t.current.structure;let n=t.current.structure.length===e.length&&e.every((e,n)=>{let r=t.current.structure[n];return r?.key===e.key&&r.height===e.height})?t.current.structure:e.map(e=>({key:e.key,height:e.height}));return t.current={rows:e,structure:n},n}function kn(e){let t=[];for(let n of e){let e=[];for(let t of n.groups)t.cells.forEach((r,i)=>{e.push({turn:n.turn,group:t.title,groupDescription:t.description,groupStart:i===0,turnStart:e.length===0,cell:r,turnEnd:!1})});if(e.length>0){let t=e[e.length-1];t&&(t.turnEnd=!0)}t.push(...e)}return t}function An(e,t){let n=[],r=[],i=null,a=()=>{if(r.length!==0){if(i!==null&&t.has(i)){let e=r.filter(e=>e.cell.requestOnly!==!0&&e.cell.kind!==`system`),t=r[0];n.push({...t,groupStart:!0,turnStart:!0,turnEnd:!0,collapsedSummary:`Turn ${i} · ${e.length} records`,collapsedSummaryKind:`turn`,cell:{...t.cell,index:t.cell.index}})}else n.push(...r);r=[],i=null}};for(let t of e)t.turnStart&&a(),i=t.turn,r.push(t);return a(),n}function jn(e,t){let n=[],r=0;for(;r<e.length;){let i=e[r],a=e[r+1];if(i.cell.kind===`message`&&a!==void 0&&(a.cell.kind===`tool`||a.cell.kind===`subtool`)&&t.has(je(i.cell))){let t=r+1;for(;t<e.length&&(e[t].cell.kind===`tool`||e[t].cell.kind===`subtool`);)t+=1;let a=t-r-1;n.push({...i,groupStart:!0,turnEnd:e[t-1]?.turnEnd??i.turnEnd,collapsedSummary:`${Ze(i.cell)||`Message`} · ${a} tool call${a>1?`s`:``}`,collapsedSummaryKind:`assistant`}),r=t}else n.push(i),r+=1}return n}function Mn(e,t){let n=[],r=null,i=null;for(let a of e){if(a.turnStart&&(r=a),a.groupStart&&(i=a),!t.has(a.cell.index))continue;let e=a;r!==null&&n.length===0&&(r===a?e={...e,groupStart:!0,turnStart:!0}:n.push({...r,groupStart:!0,turnStart:!0}),r=null),i!==null&&n.length>0&&n[n.length-1].group!==a.group&&(i===a?e={...e,groupStart:!0}:n.push({...i,groupStart:!0,turnStart:!1}),i=null),n.push(e)}return n}function Nn(e){if(e===null||!Number.isFinite(e))return`Not available`;let t=new Date(e),n=e=>String(e).padStart(2,`0`),r=`${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}.${(e=>String(e).padStart(3,`0`))(t.getMilliseconds())}`;return`${`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())}`} ${r}`}function Pn(e){let t=[{id:`overview`,label:`Summary`}];return e.inputDetail!==void 0&&e.inputDetail!==``&&t.push({id:`input`,label:`Input`}),e.outputDetail!==void 0&&e.outputDetail!==``&&t.push({id:`output`,label:`Output`}),e.thinkingDetail!==void 0&&e.thinkingDetail!==``&&t.push({id:`thinking`,label:`Thinking`}),e.assistantMetrics!==void 0&&t.push({id:`timing`,label:`Timing`}),(e.input!==void 0||e.output!==void 0||e.think!==void 0)&&t.push({id:`usage`,label:`Usage`}),t}function Fn({cell:e,onClose:t}){let n=Pn(e),[r,i]=(0,Z.useState)(n[0]?.id??`overview`),a=Ze(e);return(0,Q.jsxs)(`div`,{className:`flex h-full w-[360px] shrink-0 flex-col border-s border-dark-border/40 bg-dark-surface/40`,children:[(0,Q.jsxs)(`div`,{className:`flex h-9 shrink-0 items-center justify-between border-b border-dark-border/40 px-3`,children:[(0,Q.jsxs)(`span`,{className:`text-xs font-medium text-dark-text`,children:[`Record #`,e.index]}),(0,Q.jsx)(`button`,{type:`button`,className:`rounded p-1 text-dark-muted hover:bg-dark-surface/60`,onClick:t,"aria-label":`Close details`,children:(0,Q.jsx)(C,{size:14})})]}),(0,Q.jsx)(`div`,{className:`flex shrink-0 flex-wrap gap-1 border-b border-dark-border/40 px-2 py-1.5`,children:n.map(e=>(0,Q.jsx)(`button`,{type:`button`,className:`traj-detailTab`,"data-active":r===e.id||void 0,onClick:()=>i(e.id),children:e.label},e.id))}),(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto p-3`,children:(()=>{switch(r){case`overview`:return(0,Q.jsxs)(`dl`,{className:`space-y-1.5`,children:[(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-20 shrink-0`,children:`Kind`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue`,children:e.kind})]}),(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-20 shrink-0`,children:`Index`}),(0,Q.jsxs)(`dd`,{className:`traj-detailValue`,children:[`#`,e.index]})]}),e.callId!==void 0&&(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-20 shrink-0`,children:`Call ID`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue break-all`,children:e.callId})]}),(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-20 shrink-0`,children:`Duration`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue`,children:Me(e.timeSeconds)})]}),(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-20 shrink-0`,children:`Started`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue`,children:Nn(e.startedAt??null)})]}),e.isError===!0&&(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-20 shrink-0`,children:`Status`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue text-accent-red`,children:`error`})]}),a!==``&&(0,Q.jsxs)(`div`,{className:`pt-1`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey mb-1`,children:`Summary`}),(0,Q.jsx)(`dd`,{className:`traj-detailBody`,children:a})]})]});case`input`:return(0,Q.jsx)(`div`,{className:`traj-detailBody`,children:e.inputDetail});case`output`:return(0,Q.jsx)(`div`,{className:`traj-detailBody`,children:e.outputDetail});case`thinking`:return(0,Q.jsx)(`div`,{className:`traj-detailBody`,children:e.thinkingDetail});case`timing`:{let t=e.assistantMetrics;if(!t)return null;let n=t.firstTokenTime!==null&&t.stepStartTime!==null?t.firstTokenTime-t.stepStartTime:null,r=t.completedTime!==null&&t.firstTokenTime!==null?t.completedTime-t.firstTokenTime:null;return(0,Q.jsxs)(`dl`,{className:`space-y-1.5`,children:[(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-24 shrink-0`,children:`Step start`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue`,children:Nn(t.stepStartTime)})]}),(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-24 shrink-0`,children:`First token`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue`,children:Nn(t.firstTokenTime)})]}),(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-24 shrink-0`,children:`TTFT`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue`,children:n===null?`—`:`${n} ms`})]}),(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-24 shrink-0`,children:`Decoding`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue`,children:r===null?`—`:`${r} ms`})]})]})}case`usage`:return(0,Q.jsxs)(`dl`,{className:`space-y-1.5`,children:[e.input!==void 0&&(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-24 shrink-0`,children:`Input`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue`,children:e.input})]}),e.output!==void 0&&(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-24 shrink-0`,children:`Output`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue`,children:e.output})]}),e.think!==void 0&&(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-24 shrink-0`,children:`Reasoning`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue`,children:e.think})]}),e.input===void 0&&e.output===void 0&&e.think===void 0&&(0,Q.jsx)(`div`,{className:`traj-detailValue`,children:`Token usage not reported by provider yet.`})]});default:return null}})()})]})}function In({turns:e,searchMatchIndexes:t=null,selectedIndex:n,onSelectIndex:r,onDeselect:i,onClearSelection:a,collapsedTurns:o,onToggleTurn:s,collapsedAssistants:c,onToggleAssistant:l}){let u=(0,Z.useRef)(null),d=(0,Z.useMemo)(()=>kn(e),[e]),f=(0,Z.useMemo)(()=>n===null?void 0:d.find(e=>e.cell.index===n),[d,n]),p=(0,Z.useMemo)(()=>{if(t!==null)return Mn(d,t);let e=o.size===0?d:An(d,o);return c.size===0?e:jn(e,c)},[d,c,o,t]),m=(0,Z.useMemo)(()=>_n(p),[p]),h=On(m),g=p.length>wn,_=(0,Z.useCallback)(e=>h[e]?.height??30,[h]),v=(0,Z.useCallback)(e=>h[e]?.key??e,[h]),y=(0,Z.useCallback)(()=>u.current,[]),b=ln({count:g?h.length:0,enabled:g,estimateSize:_,getItemKey:v,getScrollElement:y,initialRect:{width:0,height:En},overscan:Tn,scrollEndThreshold:Dn}),x=g?b.getVirtualItems():[],S=g?b.getTotalSize():0,C=(0,Z.useRef)(!1);(0,Z.useLayoutEffect)(()=>{if(C.current||t!==null)return;let e=u.current;e!==null&&p.length!==0&&(e.scrollHeight>e.clientHeight&&(e.scrollTop=e.scrollHeight),C.current=!0)},[p.length,t]),(0,Z.useLayoutEffect)(()=>{if(t===null)return;let e=u.current;e!==null&&p.length!==0&&(e.scrollTop=0,C.current=!0)},[t,p.length]);let w=e=>{r(e)},T=e=>e.collapsedSummary===void 0?(0,Q.jsxs)(Q.Fragment,{children:[e.turnStart&&e.turn!==null&&(0,Q.jsx)(yn,{turn:e.turn}),e.groupStart&&(0,Q.jsx)(bn,{title:e.group,description:e.groupDescription}),(0,Q.jsx)(Cn,{cell:e.cell,selected:n===e.cell.index,onClick:w})]}):(0,Q.jsxs)(`div`,{className:`flex h-[20px] cursor-pointer items-center gap-2 px-2 text-xs text-dark-muted hover:bg-dark-surface/40`,onClick:()=>{e.collapsedSummaryKind===`turn`&&e.turn!==null?s(e.turn):e.collapsedSummaryKind===`assistant`&&l(je(e.cell))},children:[(0,Q.jsx)(`span`,{className:`text-dark-muted/50`,children:`▸`}),(0,Q.jsx)(`span`,{className:`truncate`,children:e.collapsedSummary})]});return(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1`,children:[(0,Q.jsx)(`div`,{ref:u,className:`min-w-0 flex-1 overflow-auto`,onClick:e=>{e.target===e.currentTarget&&a?.()},children:g?(0,Q.jsx)(`div`,{style:{height:S,position:`relative`},children:x.map(e=>{let t=m[e.index];return t?(0,Q.jsx)(`div`,{"data-virtual-row-key":t.key,style:{position:`absolute`,top:0,left:0,width:`100%`,transform:`translateY(${e.start}px)`,height:t.height},children:t.entries.map(e=>(0,Q.jsx)(`div`,{children:T(e.record)},hn(e.record)))},t.key):null})}):p.map(e=>(0,Q.jsx)(`div`,{children:T(e)},hn(e)))}),f!==void 0&&(0,Q.jsx)(Fn,{cell:f.cell,onClose:i},f.cell.index)]})}function Ln(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}var Rn=(0,Z.memo)(function({errors:e,onOpenLogs:t}){let{t:n}=L(),[r,i]=(0,Z.useState)(!1),[a,o]=(0,Z.useState)(null),s=(0,Z.useMemo)(()=>e.filter(e=>e.level===`error`),[e]);if((0,Z.useEffect)(()=>{o(e=>e!==null&&s.length>e?null:e)},[s.length]),s.length===0||a!==null)return null;let u=s[s.length-1];if(u===void 0)return null;let d=s.slice(-20).reverse();return(0,Q.jsxs)(`div`,{"data-trajectory-error-banner":``,className:`mx-2 mt-1 shrink-0 rounded-md border border-accent-red/50 bg-accent-red/10 text-xs`,role:`alert`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 px-2 py-1.5 text-accent-red`,children:[(0,Q.jsx)(x,{size:14,className:`shrink-0`,"aria-hidden":`true`}),(0,Q.jsxs)(`button`,{type:`button`,className:`flex min-w-0 flex-1 items-center gap-2 text-start`,onClick:()=>i(e=>!e),title:n(r?`trajectory.errorBanner.collapse`:`trajectory.errorBanner.expand`),children:[(0,Q.jsxs)(`span`,{className:`shrink-0 font-semibold`,children:[n(`trajectory.errorBanner.title`),s.length>1&&(0,Q.jsxs)(`span`,{className:`ms-1.5 rounded bg-accent-red px-1.5 py-0.5 text-badge font-semibold text-accent-fg`,children:[`×`,s.length]})]}),(0,Q.jsxs)(`span`,{className:`min-w-0 flex-1 truncate text-dark-text`,children:[Ln(u.timestamp),` · `,u.message]}),r?(0,Q.jsx)(l,{size:14,className:`shrink-0`,"aria-hidden":`true`}):(0,Q.jsx)(c,{size:14,className:`shrink-0`,"aria-hidden":`true`})]}),t&&(0,Q.jsxs)(`button`,{type:`button`,className:`flex shrink-0 items-center gap-1 rounded px-1.5 py-0.5 text-accent-red hover:bg-accent-red/15`,onClick:t,title:n(`trajectory.errorBanner.viewLogs`),children:[(0,Q.jsx)(_,{size:12,"aria-hidden":`true`}),n(`trajectory.errorBanner.viewLogs`)]}),(0,Q.jsx)(`button`,{type:`button`,className:`shrink-0 rounded p-0.5 text-dark-muted hover:bg-accent-red/15 hover:text-accent-red`,onClick:()=>{o(s.length),i(!1)},title:n(`trajectory.errorBanner.dismiss`),children:(0,Q.jsx)(C,{size:14,"aria-hidden":`true`})})]}),r&&(0,Q.jsx)(`div`,{className:`max-h-40 overflow-y-auto border-t border-accent-red/30 px-2 py-1.5 font-mono text-meta custom-scrollbar`,children:d.map(e=>(0,Q.jsxs)(`div`,{className:`flex items-start gap-2 py-0.5`,children:[(0,Q.jsx)(`span`,{className:`shrink-0 text-dark-muted`,children:Ln(e.timestamp)}),(0,Q.jsx)(`span`,{className:`shrink-0 rounded bg-accent-red px-1 py-0.5 text-avatar font-semibold uppercase leading-none text-accent-fg`,children:e.source}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 whitespace-pre-wrap break-all text-dark-text`,children:e.message})]},e.id))})]})}),zn=new Set,Bn=new Set,Vn=[],Hn=3e3;function Un({sessionId:e,messages:t,errorLogs:n,onOpenLogs:r}){let[i,a]=(0,Z.useState)(zn),[o,s]=(0,Z.useState)(Bn),[c,l]=(0,Z.useState)(null),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(``),[m]=(0,Z.useState)(()=>new lt),[h,g]=(0,Z.useState)(0),_=(0,Z.useRef)(null),v=(0,Z.useRef)(!1),[y,b]=(0,Z.useState)(null),x=Te(t=>t.compactedBySession[e]??Wn),S=Te(t=>t.ttftBySession[e]),C=(0,Z.useMemo)(()=>{if(S!==void 0)return new Map(Object.entries(S))},[S]),w=(0,Z.useMemo)(()=>Xe({messages:t,compacted:x,ttft:C}),[t,x,C]),T=u?`duration`:`sequence`;(0,Z.useEffect)(()=>(_.current&&clearTimeout(_.current),_.current=setTimeout(()=>{m.update([w]),g(e=>e+1),v.current=!0},v.current?Hn:0),()=>{_.current&&clearTimeout(_.current)}),[w,m]);let E=(0,Z.useMemo)(()=>f.trim()===``?null:m.search(f),[f,h]),D=(0,Z.useMemo)(()=>{if(E===null)return null;let e=new Set;for(let t of w)for(let n of t.groups)for(let t of n.cells)E.has(je(t))&&e.add(t.index);return e},[w,E]),O=(0,Z.useMemo)(()=>c===null?null:it(w,c,T),[w,T,c]),k=(0,Z.useMemo)(()=>(n??Vn).filter(t=>t.sessionId===e),[n,e]),A=(0,Z.useMemo)(()=>r?()=>r(e):void 0,[r,e]),j=(0,Z.useMemo)(()=>w.filter(e=>e.turn!==null&&e.groups.reduce((e,t)=>e+t.cells.filter(e=>e.requestOnly!==!0&&e.kind!==`system`).length,0)>1).flatMap(e=>e.turn===null?[]:[e.turn]),[w]),M=j.length>0&&j.every(e=>i.has(e)),N=(0,Z.useMemo)(()=>{let e=[];for(let t of w){let n=t.groups.flatMap(e=>e.cells);for(let t=0;t<n.length;t++){let r=n[t];if(r?.kind!==`message`)continue;let i=n[t+1];(i?.kind===`tool`||i?.kind===`subtool`)&&e.push(je(r))}}return e},[w]),P=N.length>0&&N.every(e=>o.has(e)),F=(0,Z.useCallback)(e=>{a(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),I=(0,Z.useCallback)(()=>{a(e=>{let t=new Set(e);if(M)for(let e of j)t.delete(e);else for(let e of j)t.add(e);return t})},[M,j]),L=(0,Z.useCallback)(e=>{s(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),R=(0,Z.useCallback)(()=>{s(e=>{let t=new Set(e);if(P)for(let e of N)t.delete(e);else for(let e of N)t.add(e);return t})},[P,N]),z=(0,Z.useCallback)(e=>{l(e)},[]),B=(0,Z.useCallback)(e=>{O!==null&&!O.has(e)&&l(null),b(t=>t===e?null:e)},[O]),V=(0,Z.useCallback)(()=>{b(null)},[]),ee=(0,Z.useCallback)(()=>{l(null),b(null)},[]);return(0,Q.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,"data-conversation-composer-overlay":``,children:[(0,Q.jsx)(ut,{actualDuration:u,onActualDurationChange:e=>{d(e),l(null)},allTurnsCollapsed:M,onToggleAllTurns:I,allAssistantsCollapsed:P,onToggleAllAssistants:R,searchQuery:f,onSearchQueryChange:p}),(0,Q.jsx)(Rn,{errors:k,onOpenLogs:A}),(0,Q.jsx)(St,{turns:w,mode:T,range:c,selectedIndex:y,searchMatchIndexes:D,onRangeChange:z,onRecordSelect:B}),(0,Q.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:(0,Q.jsx)(In,{turns:w,searchMatchIndexes:D,selectedIndex:y,onSelectIndex:B,onDeselect:V,onClearSelection:ee,collapsedTurns:i,onToggleTurn:F,collapsedAssistants:o,onToggleAssistant:L})})]})}var Wn=[],Gn=(0,Z.memo)(function({activeSessionId:e}){let{t}=L(),n=le(e=>e.observed).filter(t=>t.id!==e);return n.length===0?null:(0,Q.jsxs)(`div`,{className:`mb-2 flex flex-col gap-1.5`,children:[n.map(e=>(0,Q.jsx)(Kn,{id:e.id,title:e.title},e.id)),(0,Q.jsx)(`span`,{className:`sr-only`,children:t(`chat.observedTitle`)})]})});function Kn({id:e,title:t}){let{t:n}=L(),r=H(t=>t.generatingSessions?.includes(e)??!1),i=H(t=>{let n=t.messagesBySession[e];return!!(n&&n.length>0?n[n.length-1]:void 0)?.errorCard}),a=H(t=>{let n=t.messagesBySession[e];if(!n||n.length===0)return``;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t.type===`user`)continue;let r=t.content||``;if(r.trim())return r.trim().slice(-160)}return``}),o=n(r?`chat.observedRunning`:i?`chat.observedFailed`:`chat.observedDone`);return(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-dark-border bg-dark-surface px-2.5 py-1.5 text-xs`,children:[(0,Q.jsx)(v,{size:13,className:`shrink-0 text-accent-blue`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`max-w-[180px] truncate font-medium text-dark-text`,title:t,children:t}),(0,Q.jsx)(`span`,{className:`shrink-0 text-badge text-dark-muted`,children:e.slice(0,8)}),r?(0,Q.jsx)(s,{size:12,className:`shrink-0 animate-spin text-accent-yellow`,"aria-hidden":`true`}):i?(0,Q.jsx)(E,{size:12,className:`shrink-0 text-accent-red`,"aria-hidden":`true`}):(0,Q.jsx)(j,{size:12,className:`shrink-0 text-accent-green`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`shrink-0 text-badge ${i?`text-accent-red`:r?`text-accent-yellow`:`text-accent-green`}`,children:o}),a&&(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-dark-muted/80`,title:a,children:a})]})}function qn({isOpen:e,onClose:t,title:n,collapsedSummary:r,badge:i,leading:a,children:o,maxHeight:s=`45vh`,onExpandedChange:l,alignToComposer:u=!1,className:d}){let{t:f}=L(),[p,m]=(0,Z.useState)(!0);(0,Z.useEffect)(()=>{e&&m(!0)},[e]),(0,Z.useEffect)(()=>{l?.(p)},[p,l]),se({isOpen:e,onClose:t,lockScroll:!1});let h=(0,Z.useCallback)(()=>{m(e=>!e)},[]);return e?(0,Q.jsx)(`div`,{className:G(`shrink-0`,u&&`chat-drawer-col`),children:(0,Q.jsxs)(`div`,{className:G(`bg-dark-overlay/95 ui-surface-overlay backdrop-blur shadow-drawer`,u?`overflow-hidden rounded-xl border border-dark-border`:`border-t border-dark-border`,d),children:[(0,Q.jsxs)(`div`,{role:`button`,"aria-expanded":p,tabIndex:0,onClick:h,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),h())},title:f(p?`commonUi.drawerCollapseTitle`:`commonUi.drawerExpandTitle`),className:G(`flex items-center gap-2 px-4 py-2 cursor-pointer select-none transition-colors`,`hover:bg-dark-hover/60`),children:[a&&(0,Q.jsx)(`span`,{className:`shrink-0 flex items-center`,onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),children:a}),(0,Q.jsx)(`span`,{className:G(`shrink-0 text-dark-muted transition-transform duration-200`,!p&&`rotate-180`),children:(0,Q.jsx)(c,{size:16})}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1 flex items-center gap-2`,children:[(0,Q.jsx)(`span`,{className:`text-sm font-semibold text-dark-text truncate`,children:n}),i,!p&&r&&(0,Q.jsx)(`span`,{className:`min-w-0 flex items-center gap-1.5 text-xs text-dark-muted truncate`,children:r})]}),(0,Q.jsx)(`button`,{type:`button`,"aria-label":f(`common.close`),onClick:e=>{e.stopPropagation(),t()},className:`shrink-0 p-1 rounded-md text-dark-muted hover:text-dark-text hover:bg-dark-hover transition-colors`,children:(0,Q.jsx)(C,{size:15})})]}),p&&(0,Q.jsx)(`div`,{className:`animate-slide-up border-t border-dark-border/60 overflow-y-auto custom-scrollbar p-4`,style:{maxHeight:s},children:o})]})}):null}function Jn(e,t){if(!e||!t||t.length===0)return;let n=e.find(e=>e.switchMode&&t.includes(e.label));n?.switchMode&&be.getState().setBaseMode(n.switchMode)}var Yn=15e3,Xn=300,Zn=4,Qn=8388608;function $n(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(typeof r.result==`string`?r.result:``),r.onerror=()=>n(r.error instanceof Error?r.error:Error(`image read failed`)),r.readAsDataURL(e)})}function er(e){let t=[];for(let n of Array.from(e.items??[])){if(n.kind!==`file`||!n.type.startsWith(`image/`))continue;let e=n.getAsFile();e&&t.push(e)}if(t.length===0)for(let n of Array.from(e.files??[]))n.type.startsWith(`image/`)&&t.push(n);return t}function tr(e){let{t}=L();return(0,Z.useMemo)(()=>{if(e.secret)return{allItems:[],otherIdx:-1,proceedIdx:-1,displayItems:[]};let n=t(`chat.askOtherLabel`),r=t(`chat.askProceedLabel`),i=e.options||[],a=i.some(e=>e.label===n),o=i.some(e=>e.label===r),s=[...i];return o||s.push({label:r,description:t(`chat.askProceedDesc`)}),a||s.push({label:n,description:t(`chat.askCustomDesc`)}),{allItems:s,otherIdx:a?s.findIndex(e=>e.label===n):s.length-1,proceedIdx:o?s.findIndex(e=>e.label===r):s.length-(a?1:2),displayItems:s}},[e,t])}function nr(e){let t=(0,Z.useRef)(null),[n,r]=(0,Z.useState)({top:!1,bottom:!1}),i=(0,Z.useCallback)(()=>{let e=t.current;if(!e)return;let n=e.scrollHeight-e.clientHeight,i=n>2&&e.scrollTop>2,a=n>2&&e.scrollTop<n-2;r(e=>e.top===i&&e.bottom===a?e:{top:i,bottom:a})},[]);return(0,Z.useEffect)(()=>{i();let e=t.current;if(!e)return;e.addEventListener(`scroll`,i,{passive:!0});let n=typeof ResizeObserver<`u`?new ResizeObserver(i):null;return n?.observe(e),()=>{e.removeEventListener(`scroll`,i),n?.disconnect()}},[i,e]),{ref:t,style:{"--ui-fade-top":n.top?`14px`:`0px`,"--ui-fade-bottom":n.bottom?`14px`:`0px`}}}function rr({ms:e}){let{t}=L();return(0,Q.jsx)(`span`,{className:`inline-flex items-center self-start text-xs leading-relaxed tabular-nums text-accent-yellow`,children:t(`chat.askAutoContinue`,{seconds:Math.max(1,Math.round(e/1e3))})})}function ir({children:e,tone:t}){return(0,Q.jsx)(`span`,{className:G(`shrink-0 rounded-full px-1.5 py-0.5 text-meta leading-none`,t===`green`?`bg-accent-green/10 text-accent-green`:`bg-dark-hover text-dark-muted`),children:e})}function ar({label:e,description:t,index:n,multi:r,active:i,checked:a,tag:o,onSelect:s}){let c=r?a:i;return(0,Q.jsxs)(`button`,{type:`button`,role:r?`checkbox`:`radio`,"aria-checked":c,onClick:s,className:G(`w-full min-h-11 flex items-start gap-3 rounded-lg border px-3 py-2.5 text-start`,`transition duration-snap ease-expo`,c?`border-accent-blue/40 bg-accent-blue/10`:`border-dark-border/60 bg-transparent hover:border-dark-border hover:bg-dark-hover`),children:[(0,Q.jsx)(`span`,{className:G(`shrink-0 w-5 h-5 inline-flex items-center justify-center text-meta font-medium tabular-nums`,`transition duration-snap ease-expo`,r?`rounded-md`:`rounded-full`,c?`border border-accent-blue bg-accent-blue text-accent-fg`:r?`border border-dark-border text-transparent`:`border border-dark-border text-dark-muted`),children:r?(0,Q.jsx)(S,{size:12}):n}),(0,Q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Q.jsxs)(`span`,{className:`flex flex-wrap items-center gap-x-1.5 gap-y-1`,children:[(0,Q.jsx)(`span`,{className:`text-sm font-medium text-dark-text`,children:e}),o]}),t&&(0,Q.jsx)(`span`,{className:`block mt-0.5 text-xs leading-snug text-dark-muted`,children:t})]}),!r&&(0,Q.jsx)(S,{size:15,"aria-hidden":`true`,className:G(`shrink-0 mt-0.5 transition-opacity duration-snap ease-expo`,c?`text-accent-blue opacity-100`:`opacity-0`)})]})}function or({value:e,onChange:t,onSubmit:n}){let{t:r}=L(),[i,a]=(0,Z.useState)(!1);return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,className:`pointer-events-none absolute start-3 top-1/2 -translate-y-1/2 text-dark-muted`,children:(0,Q.jsx)(p,{size:14})}),(0,Q.jsx)(`input`,{type:i?`text`:`password`,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,className:`input ps-9 pe-11 font-mono`,value:e,onChange:e=>t(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),n())},placeholder:r(`chat.askSecretPlaceholder`),autoFocus:!0}),(0,Q.jsx)(`button`,{type:`button`,onClick:()=>a(e=>!e),"aria-label":r(i?`chat.askSecretHide`:`chat.askSecretReveal`),"aria-pressed":i,className:G(`absolute end-1 top-1/2 -translate-y-1/2 inline-flex h-8 w-8 items-center justify-center`,`rounded-md text-dark-muted transition-colors duration-snap ease-expo`,`hover:bg-dark-hover hover:text-dark-text`),children:i?(0,Q.jsx)(f,{size:14,"aria-hidden":`true`}):(0,Q.jsx)(u,{size:14,"aria-hidden":`true`})})]}),(0,Q.jsx)(`p`,{className:`text-xs leading-relaxed text-dark-muted`,children:r(`chat.askSecretHint`)}),(0,Q.jsx)(K,{variant:`primary`,shape:`pill`,leftIcon:(0,Q.jsx)(D,{size:15}),onClick:n,disabled:!e,className:`w-full min-h-11 sm:w-auto sm:self-start`,children:r(`chat.askSubmit`)})]})}function sr({item:e,answered:t,selectedIdx:n,multiSelected:r,customInput:i,showCustomInput:a,onSelect:o,onToggleMulti:s,onProceed:c,onEnterCustom:l,onCancelCustom:u,onSubmitCustom:d,onCustomChange:f,inputRef:p}){let{t:m}=L(),{otherIdx:h,proceedIdx:g,displayItems:_}=tr(e),v=!!e.multiSelect,{ref:y,style:b}=nr(_.length);if(e.secret)return(0,Q.jsx)(or,{value:i,onChange:f,onSubmit:d});let x=e=>{e===g?c():e===h?l():v?s(e):o(e)};return(0,Q.jsxs)(`div`,{ref:y,style:b,role:v?`group`:`radiogroup`,"aria-label":e.question,className:`fade-mask-y flex flex-col gap-2 pe-1 overflow-y-auto custom-scrollbar sm:max-h-72`,children:[_.map((e,t)=>{let o=n===t,s=t===h;return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Q.jsx)(ar,{label:e.label,description:e.description,index:t+1,multi:v,active:o,checked:r.has(t),tag:t===g?(0,Q.jsx)(ir,{tone:`green`,children:m(`chat.askDirectTag`)}):s?(0,Q.jsx)(ir,{tone:`muted`,children:m(`chat.askCustomTag`)}):null,onSelect:()=>x(t)}),s&&o&&a&&(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2 ps-8`,children:[(0,Q.jsx)(`textarea`,{ref:p,className:`input resize-none`,rows:3,value:i,onChange:e=>f(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),d()),e.key===`Escape`&&u()},placeholder:m(`chat.askAnswerPlaceholder`),autoFocus:!0}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(K,{variant:`primary`,size:`sm`,shape:`pill`,leftIcon:(0,Q.jsx)(D,{size:13}),onClick:d,children:m(`chat.askSubmit`)}),(0,Q.jsx)(K,{variant:`ghost`,size:`sm`,shape:`pill`,leftIcon:(0,Q.jsx)(C,{size:13}),onClick:u,children:m(`common.cancel`)})]})]})]},`opt-${t}`)}),t&&(0,Q.jsx)(`div`,{className:`text-xs font-medium text-accent-green`,children:m(`chat.askAnswered`)})]})}var cr=(e,t)=>e?.secret===!0||t?.secret===!0;function lr({images:e,notice:t,onRemove:n}){let{t:r}=L();return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[e.length>0&&(0,Q.jsx)(`div`,{className:`flex flex-wrap items-center gap-2`,children:e.map((e,t)=>(0,Q.jsxs)(`div`,{className:`relative overflow-hidden rounded-lg border border-dark-border bg-dark-surface`,children:[(0,Q.jsx)(`img`,{src:e,alt:r(`chat.askImageAlt`,{index:t+1}),className:`h-14 w-14 object-cover`}),(0,Q.jsx)(`button`,{type:`button`,"aria-label":r(`chat.askImageRemove`),onClick:()=>n(t),className:`absolute end-0.5 top-0.5 inline-flex h-5 w-5 items-center justify-center rounded-full bg-dark-bg/80 text-dark-muted transition-colors hover:bg-accent-red/80 hover:text-dark-bg`,children:(0,Q.jsx)(C,{size:11})})]},`ask-img-${t}`))}),t?(0,Q.jsxs)(`p`,{className:`flex items-center gap-1.5 text-meta text-accent-yellow`,children:[(0,Q.jsx)(x,{size:11,className:`shrink-0`}),(0,Q.jsx)(`span`,{children:t})]}):(0,Q.jsxs)(`p`,{className:`flex items-center gap-1.5 text-meta text-dark-muted`,children:[(0,Q.jsx)(A,{size:11,className:`shrink-0`}),(0,Q.jsx)(`span`,{children:r(`chat.askImagePasteHint`)})]})]})}function ur({isOpen:e,onClose:t}){let{t:r}=L(),[a,o]=(0,Z.useState)(null),[s,c]=(0,Z.useState)(-1),[l,u]=(0,Z.useState)(new Set),[d,f]=(0,Z.useState)(``),[p,m]=(0,Z.useState)(!1),[h,g]=(0,Z.useState)(!1),[_,v]=(0,Z.useState)(!1),[y,b]=(0,Z.useState)(!1),[C,w]=(0,Z.useState)(0),[T,E]=(0,Z.useState)([]),[O,k]=(0,Z.useState)(!1),[j,M]=(0,Z.useState)([]),[N,P]=(0,Z.useState)(null),F=(0,Z.useRef)(null),I=(0,Z.useRef)(null),R=(0,Z.useMemo)(()=>a?a.questions&&a.questions.length>0?a.questions:[{question:a.question,header:a.header,options:a.options,multiSelect:a.multiSelect,secret:a.secret}]:[],[a]),z=R.length>1,B=(0,Z.useCallback)(e=>{o(e),c(e.multiSelect?-1:0),u(new Set),f(``);let t=e.questions&&e.questions.length>0?e.questions:[e];m(cr(t[0],e)),g(!1),v(!1),b(!1),w(0),k(!1),E(t.map(()=>null)),M([]),P(null)},[]);(0,Z.useEffect)(()=>{I.current=a}),(0,Z.useEffect)(()=>{if(e){let e=window.__pendingQuestion;e&&B(e)}},[e,B]),(0,Z.useEffect)(()=>{let e=e=>{let n=e.detail,r=I.current?.questionId??null;if(n&&r&&n!==r)return;let i=r;g(!0),setTimeout(()=>{let e=I.current?.questionId??null;i&&e&&e!==i||(t(),o(null),g(!1))},Xn)};return window.addEventListener(`ask-question-dismiss`,e),()=>window.removeEventListener(`ask-question-dismiss`,e)},[t]),(0,Z.useEffect)(()=>{if(!h)return;let e=setTimeout(()=>{g(!1),v(!0)},Yn);return()=>clearTimeout(e)},[h]),(0,Z.useEffect)(()=>{let e=()=>{v(!1),b(!1)};return window.addEventListener(`ask-question-dismiss`,e),()=>window.removeEventListener(`ask-question-dismiss`,e)},[]),(0,Z.useEffect)(()=>{let e=e=>{let t=e.detail,n=I.current?.questionId??null;t&&n&&t!==n||(g(!1),v(!0),b(!0))};return window.addEventListener(`ask-question-ack-failed`,e),()=>window.removeEventListener(`ask-question-ack-failed`,e)},[]),(0,Z.useEffect)(()=>{let e=e=>{let t=e.detail,n=ee.getState().activeSessionId;if(t&&n&&t!==n)return;let r=window.__pendingQuestion;r&&B(r)};return window.addEventListener(`ask-question-required`,e),()=>window.removeEventListener(`ask-question-required`,e)},[B]),(0,Z.useEffect)(()=>{c(0),u(new Set),f(``),m(cr(R[C],a))},[C,O,a,R]);let V=R[C]||null,{allItems:H,otherIdx:U}=tr(V||{question:``}),W=cr(V,a),q=j[C]??[],J=(0,Z.useCallback)((e,t)=>{!h&&a&&(v(!1),g(!0),Jn(a.options,t),X.send({type:`question_answer`,sessionId:a.sessionId||X.getSessionId()||void 0,data:JSON.stringify({questionId:a.questionId,answer:e,selectedOptions:t,...q.length>0?{images:q}:{}})}))},[h,a,q]),te=(0,Z.useCallback)(()=>{!h&&a&&(v(!1),g(!0),X.send({type:`question_answer`,sessionId:a.sessionId||X.getSessionId()||void 0,data:JSON.stringify({questionId:a.questionId,answers:R.map((e,t)=>{let n=T[t]||{answer:r(`chat.askUnansweredValue`)},i=j[t]??[];return i.length>0?{...n,images:i}:n})})}))},[h,a,R,T,j,r]),ne=(0,Z.useCallback)(e=>{M(t=>{let n=t.slice();return n[C]=(n[C]??[]).filter((t,n)=>n!==e),n}),P(null)},[C]),re=(0,Z.useCallback)(e=>{if(h||W||O)return;let t=e.clipboardData;if(!t)return;let n=er(t);if(n.length===0)return;e.preventDefault();let i=C,a=j[i]?.length??0;(async()=>{let e=[],t=0,o=0;for(let r of n)if(r.size>Qn)t++;else if(a+e.length>=Zn)o++;else try{let t=await $n(r);t.startsWith(`data:image/`)&&e.push(t)}catch{}e.length>0&&M(t=>{let n=t.slice();return n[i]=[...n[i]??[],...e].slice(0,Zn),n}),t>0?P(r(`chat.askImageTooLarge`)):o>0?P(r(`chat.askImageTooMany`,{count:Zn})):e.length>0&&P(null)})()},[h,W,O,C,j,r]),Y=(0,Z.useCallback)((e,t,n)=>{Jn(R[e]?.options,n),E(r=>{let i=r.slice();return i[e]={answer:t,selectedOptions:n},i}),e<R.length-1?w(e+1):k(!0)},[R]),ie=(0,Z.useCallback)(e=>{if(h||!a)return;let t=H[e];t&&(c(e),J(t.label,[t.label]))},[h,a,H,J]),ae=(0,Z.useCallback)(()=>{if(h||!a||s<0)return;let e=H[s];e&&J(e.label,[e.label])},[h,a,s,H,J]),oe=(0,Z.useCallback)(()=>{if(h||s<0)return;let e=H[s];e&&Y(C,e.label,[e.label])},[h,s,H,Y,C]),se=(0,Z.useCallback)(e=>{if(h)return;let t=H[e];t&&Y(C,t.label,[t.label])},[h,H,Y,C]),ce=(0,Z.useCallback)(e=>{h||u(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[h]),le=(0,Z.useCallback)(()=>{if(h)return;let e=[...l].map(e=>H[e]?.label||``);z?Y(C,e.join(`, `),e):J(e.join(`, `),e)},[h,l,H,z,Y,C,J]),ue=(0,Z.useCallback)(()=>{if(h)return;let e=r(`chat.askProceedLabel`);z?Y(C,e,[e]):J(e,[e])},[h,z,Y,C,J,r]),de=(0,Z.useCallback)(()=>{h||(c(U),m(!0),setTimeout(()=>F.current?.focus(),100))},[h,U]),fe=(0,Z.useCallback)(()=>{m(!1),f(``)},[]),pe=(0,Z.useCallback)(()=>{if(h||W&&!d.trim())return;let e=d||r(`chat.askEmptyInputValue`);z?Y(C,e):J(e)},[h,d,z,Y,C,J,r,W]),me=(0,Z.useCallback)(()=>{!h&&a&&(v(!1),g(!0),X.send({type:`question_answer`,sessionId:a.sessionId||X.getSessionId()||void 0,data:JSON.stringify({questionId:a.questionId,answers:R.map(()=>({answer:`(cancelled)`}))})}))},[h,a,R]),he=(0,Z.useCallback)(()=>{if(!h){if(y)t();else if(z){if(p&&!W){m(!1),f(``);return}if(O){k(!1),w(R.length-1);return}me()}else p&&!W?(m(!1),f(``)):J(`(cancelled)`)}},[h,z,p,O,R.length,me,J,y,t,W]);if(!e||!a)return null;let ge=T.filter(e=>!e).length,_e=T.filter(Boolean).length,ve=h||_||p,ye=h?(0,Q.jsx)(`span`,{children:r(`chat.askSubmitting`)}):_?(0,Q.jsxs)(`span`,{className:`flex items-center gap-1.5 text-accent-yellow`,children:[(0,Q.jsx)(x,{size:12}),r(`chat.askSubmitRetry`)]}):p?W?null:(0,Q.jsx)(`span`,{children:r(`chat.askEnterHint`)}):a.multiSelect?(0,Q.jsx)(`span`,{children:r(`chat.askMultiHintSingle`)}):(0,Q.jsx)(`span`,{children:r(`chat.askSingleHintSingle`)});return(0,Q.jsx)(qn,{isOpen:e,onClose:he,title:a.header||r(z?`chat.askBatchTitle`:`chat.askSingleTitle`),badge:z?(0,Q.jsxs)(`span`,{className:`shrink-0 inline-flex items-center rounded-full bg-dark-hover px-2 py-0.5 text-meta font-medium tabular-nums text-dark-muted`,children:[_e,`/`,R.length]}):void 0,collapsedSummary:(0,Q.jsx)(`span`,{className:`truncate`,children:V?.question||a.question}),maxHeight:`min(85dvh, 40rem)`,alignToComposer:!0,children:z?(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,onPaste:re,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5 flex-wrap`,children:[R.map((e,t)=>{let n=!!T[t],r=!O&&C===t;return(0,Q.jsxs)(`button`,{type:`button`,"aria-current":r?`step`:void 0,onClick:()=>{w(t),k(!1)},className:G(`inline-flex items-center gap-1 rounded-full px-3 min-h-9 text-xs font-medium tabular-nums`,`transition duration-snap ease-expo`,r?`bg-dark-text text-dark-bg`:n?`border border-accent-green/40 bg-accent-green/10 text-accent-green`:`border border-dark-border bg-dark-surface text-dark-muted hover:bg-dark-hover`),children:[`Q`,t+1,n&&(0,Q.jsx)(S,{size:11})]},`nav-${t}`)}),(0,Q.jsx)(`button`,{type:`button`,"aria-current":O?`step`:void 0,onClick:()=>k(!0),className:G(`inline-flex items-center rounded-full px-3 min-h-9 text-xs font-medium`,`transition duration-snap ease-expo`,O?`bg-dark-text text-dark-bg`:`border border-dark-border bg-dark-surface text-dark-muted hover:bg-dark-hover`),children:r(`chat.askSubmit`)})]}),a.autoResolutionMs&&a.autoResolutionMs>0&&(0,Q.jsx)(rr,{ms:a.autoResolutionMs}),O?(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Q.jsx)(`div`,{className:`text-sm font-medium text-dark-text`,children:r(`chat.askReviewTitle`)}),(0,Q.jsx)(`div`,{className:`overflow-hidden rounded-lg border border-dark-border`,children:R.map((e,t)=>{let n=T[t];return(0,Q.jsxs)(`div`,{className:G(`flex items-start gap-3 px-3 py-2.5`,t>0&&`border-t border-dark-border`),children:[(0,Q.jsx)(`span`,{className:`shrink-0 w-5 h-5 rounded-full border border-dark-border text-meta font-medium tabular-nums text-dark-muted inline-flex items-center justify-center`,children:t+1}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`div`,{className:`text-sm leading-snug text-dark-text`,children:e.question}),(0,Q.jsxs)(`div`,{className:G(`mt-1 text-xs break-words`,n?`text-accent-green`:`text-accent-yellow`),children:[n?n.answer:r(`chat.askNotAnswered`),(j[t]??[]).length>0&&(0,Q.jsxs)(`span`,{className:`ms-2 inline-flex items-center gap-0.5 text-meta text-dark-muted`,children:[(0,Q.jsx)(A,{size:11}),`${(j[t]??[]).length}`]})]})]})]},`rev-${t}`)})}),ge>0&&(0,Q.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-accent-yellow/30 bg-accent-yellow/10 px-3 py-2 text-xs leading-relaxed text-accent-yellow`,children:[(0,Q.jsx)(x,{size:14,className:`shrink-0 mt-0.5`}),(0,Q.jsx)(`span`,{children:r(`chat.askUnansweredWarning`,{count:ge})})]}),(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center`,children:[(0,Q.jsx)(K,{variant:`primary`,shape:`pill`,leftIcon:(0,Q.jsx)(D,{size:15}),onClick:te,disabled:h,className:`w-full min-h-11 sm:w-auto`,children:r(`chat.askSubmitAll`)}),(0,Q.jsx)(K,{variant:`secondary`,shape:`pill`,leftIcon:(0,Q.jsx)(n,{size:14}),onClick:()=>{k(!1),w(R.length-1)},disabled:h,className:`w-full min-h-11 sm:w-auto`,children:r(`chat.askBackToEdit`)})]})]}):V?(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between sm:gap-3`,children:[(0,Q.jsx)(`p`,{className:`min-w-0 text-base leading-relaxed text-dark-text text-pretty`,children:V.question}),(0,Q.jsxs)(`div`,{className:`hidden sm:flex items-center gap-1.5 shrink-0`,children:[(0,Q.jsx)(K,{variant:`secondary`,size:`sm`,shape:`pill`,leftIcon:(0,Q.jsx)(n,{size:13}),onClick:()=>{w(e=>Math.max(0,e-1)),k(!1)},disabled:C===0,children:r(`chat.askPrevQuestion`)}),C<R.length-1?(0,Q.jsx)(K,{variant:`secondary`,size:`sm`,shape:`pill`,rightIcon:(0,Q.jsx)(i,{size:13}),onClick:()=>{w(e=>Math.min(R.length-1,e+1)),k(!1)},children:r(`chat.askNextQuestion`)}):(0,Q.jsx)(K,{variant:`secondary`,size:`sm`,shape:`pill`,rightIcon:(0,Q.jsx)(i,{size:13}),onClick:()=>k(!0),children:r(`chat.askViewSubmit`)})]})]}),(0,Q.jsx)(sr,{item:V,answered:!!T[C],selectedIdx:s,multiSelected:l,customInput:d,showCustomInput:p,onSelect:se,onToggleMulti:ce,onProceed:ue,onEnterCustom:de,onCancelCustom:fe,onSubmitCustom:pe,onCustomChange:f,inputRef:F}),!W&&(q.length>0||p)&&(0,Q.jsx)(lr,{images:q,notice:N,onRemove:ne}),(0,Q.jsxs)(`div`,{className:`flex flex-col-reverse gap-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,Q.jsx)(`p`,{className:G(`text-xs leading-relaxed text-dark-muted`,!ve&&`hidden sm:block`),children:p?(0,Q.jsx)(`span`,{children:r(`chat.askEnterHint`)}):V.multiSelect?(0,Q.jsx)(`span`,{children:r(`chat.askMultiHintBatch`)}):(0,Q.jsx)(`span`,{children:r(`chat.askSingleHintBatch`)})}),!p&&(0,Q.jsx)(K,{variant:V.multiSelect?`primary`:`secondary`,shape:`pill`,leftIcon:(0,Q.jsx)(S,{size:15}),onClick:V.multiSelect?le:oe,disabled:h||(V.multiSelect?l.size===0:s<0),className:`w-full min-h-11 sm:w-auto sm:shrink-0`,children:V.multiSelect?r(`chat.askFinishQuestion`,{count:l.size}):r(`chat.askConfirmQuestion`)})]})]}):null]}):(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,onPaste:re,children:[(0,Q.jsx)(`p`,{className:`text-base leading-relaxed text-dark-text text-pretty`,children:a.question}),a.autoResolutionMs&&a.autoResolutionMs>0&&(0,Q.jsx)(rr,{ms:a.autoResolutionMs}),(0,Q.jsx)(sr,{item:R[0],answered:!1,selectedIdx:s,multiSelected:l,customInput:d,showCustomInput:p,onSelect:ie,onToggleMulti:ce,onProceed:ue,onEnterCustom:de,onCancelCustom:fe,onSubmitCustom:pe,onCustomChange:f,inputRef:F}),!W&&(q.length>0||p)&&(0,Q.jsx)(lr,{images:q,notice:N,onRemove:ne}),(0,Q.jsxs)(`div`,{className:`flex flex-col-reverse gap-2 sm:flex-row sm:items-center sm:justify-between`,children:[ye?(0,Q.jsx)(`p`,{className:G(`text-xs leading-relaxed text-dark-muted`,!ve&&`hidden sm:block`),children:ye}):(0,Q.jsx)(`span`,{className:`hidden sm:block`}),!p&&(0,Q.jsx)(K,{variant:a.multiSelect?`primary`:`secondary`,shape:`pill`,leftIcon:(0,Q.jsx)(S,{size:15}),onClick:a.multiSelect?le:ae,disabled:h||(a.multiSelect?l.size===0:s<0),className:`w-full min-h-11 sm:w-auto sm:shrink-0`,children:a.multiSelect?r(`chat.askSubmitSelected`,{count:l.size}):r(`chat.askSubmit`)})]})]})})}var dr=(0,Z.memo)(function({sessionId:e}){let{t:n}=L(),{offer:r,respond:i}=we(e);if(!r)return null;let a=r.fileName||n(`widgets.dwf.offerFallbackTitle`);return(0,Q.jsx)(`div`,{className:`chat-drawer-col shrink-0 pb-1.5`,"data-testid":`dwf-offer-card`,children:(0,Q.jsxs)(`div`,{className:`animate-fade-in-up overflow-hidden rounded-xl border border-accent-purple/40 bg-dark-surface`,style:{boxShadow:`var(--shadow-air-1)`},role:`group`,"aria-label":a,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5 border-b border-dark-border/60 px-3 py-2`,children:[(0,Q.jsx)(t,{size:13,className:`text-accent-purple shrink-0`}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-meta font-semibold text-dark-text`,children:a})]}),(0,Q.jsx)(`div`,{className:`px-3 py-2`,children:(0,Q.jsx)(Oe,{offer:r,onRespond:i,layout:`wide`})})]})})}),fr=15;function pr({isOpen:e,onCloseModal:t}){let{t:n}=L(`hook`),r=ue(),i=r.pendingApprovals,o=r.autoMode,s=r.setAutoMode,[c,l]=(0,Z.useState)(0),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(fr),[m,h]=(0,Z.useState)(!0),[g,_]=(0,Z.useState)(!1),v=(0,Z.useRef)(null),y=(0,Z.useRef)(!1);(0,Z.useEffect)(()=>{i.length!==0&&(o?(i.forEach(e=>{X.send({type:`hook_allow`,data:JSON.stringify({approvalId:e.approvalId})})}),r.clearApprovals()):l(e=>Math.min(e,i.length-1)))},[i.length,o]);let b=i[c]??null,S=i.length>0&&b!==null,C=i.length,w=S?C-c-1:0;(0,Z.useEffect)(()=>{if(S&&!u&&e&&b)return p(fr),v.current=setInterval(()=>{p(e=>e<=1?(v.current&&clearInterval(v.current),0):e-1)},1e3),()=>{v.current&&clearInterval(v.current)}},[S,u,e,b?.approvalId]);let T=b?ce(b.toolName,b.askPayload):{level:`MEDIUM`,reasonKey:`risk_default`},E=ke[T.level],D=te[T.level===`CRITICAL`?`critical`:T.level===`HIGH`?`high`:T.level===`LOW`?`low`:`medium`],O=b?de(b.toolName,b.askPayload):null,A=b?fe(b.toolName,b.askPayload):null,j=b?{verb:ye(b.toolName),target:he(b.toolName,b.askPayload)}:null,M=b?Se(b.askPayload)!==null:!1,N=b?pe(b.toolName,b.askPayload):null,P=(O?ve(O.text):A?ve(A):!1)&&!g;(0,Z.useEffect)(()=>{_(!1)},[b?.approvalId]);let I=f/fr*100,R=f<=5,z=q((fr-f)*1e3),B=(0,Z.useCallback)((e,t)=>{let n=ee.getState().activeSessionId;n&&H.getState().updateHookApprovalStatus(n,e,t)},[]),V=(0,Z.useCallback)(e=>{b&&(e&&B(b.approvalId,e),d(!0),setTimeout(()=>{r.removeApproval(b.approvalId),l(0),d(!1),y.current=!1,p(fr)},200))},[b?.approvalId,r,B]),U=(0,Z.useCallback)(()=>{!b||u||y.current||(P?_(!0):(y.current=!0,v.current&&clearInterval(v.current),X.send({type:`hook_allow`,data:JSON.stringify({approvalId:b.approvalId})}),V(`approved`)))},[b,V,u,P]),W=(0,Z.useCallback)(()=>{!b||u||y.current||(y.current=!0,v.current&&clearInterval(v.current),X.send({type:`hook_deny`,data:JSON.stringify({approvalId:b.approvalId})}),V(`denied`))},[b,V,u]),G=(0,Z.useCallback)(()=>{if(!b||u||y.current)return;if(P){_(!0);return}y.current=!0,v.current&&clearInterval(v.current);let e=Se(b.askPayload);e?(r.addToSessionAllowList(b.toolName,e),X.send({type:`hook_allow`,data:JSON.stringify({approvalId:b.approvalId,sessionAllow:!0})})):(r.addToSessionAllowList(b.toolName),X.send({type:`hook_allow`,data:JSON.stringify({approvalId:b.approvalId})})),V(`approved`)},[b,V,r,u,P]),J=(0,Z.useCallback)(()=>{!b||u||y.current||(P?_(!0):(y.current=!0,v.current&&clearInterval(v.current),s(!0),be.getState().setAuto(!0),X.send({type:`hook_allow`,data:JSON.stringify({approvalId:b.approvalId})}),V(`approved`)))},[b,V,u,s,P]),re=(b?.timeoutMs??15e3)>0,Y=b?.timeoutAction===`deny`?W:U;if((0,Z.useEffect)(()=>{f===0&&e&&!u&&b&&re&&Y()},[f,e,u,b,Y,re]),(0,Z.useEffect)(()=>{if(!e||!m)return;let t=e=>{let t=e.target;t&&typeof t.closest==`function`&&t.closest(`input, textarea, select, [contenteditable="true"]`)||(e.key===`Escape`?(e.preventDefault(),e.stopPropagation(),W()):e.key===`Enter`?(e.preventDefault(),U()):e.key===`1`?U():e.key===`2`?W():e.key===`3`?G():e.key===`4`&&J())};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e,m,U,W,G,J]),!S||!b)return null;let ie=n(`optionAllowHint`),ae=n(`optionDenyHint`),oe=M?n(`optionAllowPathHint`):n(`optionAllowAlwaysHint`,{tool:b.toolName}),se=n(`optionAutoModeHint`),le=O?.text??A??null,me=le?(0,Q.jsxs)(`span`,{className:`flex items-center gap-1.5 min-w-0`,children:[(0,Q.jsx)(`code`,{className:`font-mono text-meta bg-dark-surface text-accent-blue px-1 py-0.5 rounded shrink-0`,children:b.toolName}),(0,Q.jsx)(`span`,{className:`truncate`,children:le})]}):null;return(0,Q.jsx)(qn,{isOpen:e,onClose:()=>t?.(),title:(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(F,{className:`w-4 h-4 text-accent-yellow`}),(0,Q.jsx)(`span`,{children:n(`hookApproval`)}),(0,Q.jsxs)(`span`,{className:`text-xs text-dark-muted`,children:[`(`,c+1,`/`,C,`)`]})]}),badge:(0,Q.jsxs)(`span`,{className:`px-1.5 py-0.5 rounded text-badge font-bold border shrink-0 ${E.badge}`,children:[E.icon,` `,T.level]}),collapsedSummary:me,onExpandedChange:h,maxHeight:`50vh`,alignToComposer:!0,children:(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 rounded-lg ${E.bg} border ${E.border}`,children:[(0,Q.jsxs)(`span`,{className:`px-1.5 py-0.5 rounded text-xs font-bold border ${E.badge}`,children:[E.icon,` `,T.level]}),(0,Q.jsx)(`span`,{className:`text-xs text-dark-muted truncate`,children:n(T.reasonKey)}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5 ms-auto shrink-0`,children:[(0,Q.jsx)(k,{size:12,className:R?`text-accent-red`:`text-dark-muted`}),(0,Q.jsx)(`span`,{className:`text-xs font-mono ${R?`text-accent-red animate-pulse`:`text-dark-muted`}`,children:re?`${f}s`:`∞`}),(0,Q.jsx)(`div`,{className:`w-12 h-1.5 bg-dark-border rounded-full overflow-hidden`,children:(0,Q.jsx)(`div`,{className:`h-full rounded-full transition-all duration-700 ${R?`bg-accent-red`:f<=8?`bg-accent-yellow`:`bg-accent-green`}`,style:{width:`${I}%`}})})]})]}),(0,Q.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2.5 min-w-0`,children:[(0,Q.jsx)(`span`,{className:`flex-none w-7 h-7 rounded-lg bg-accent-blue/10 text-accent-blue inline-flex items-center justify-center`,children:(0,Q.jsx)(F,{size:15})}),j&&(0,Q.jsx)(_e,{pre:n(j.verb),obj:j.target})]}),N&&(N.external&&N.path?(0,Q.jsxs)(`span`,{className:`flex items-center gap-1 text-meta px-1.5 py-0.5 rounded bg-accent-yellow/15 text-accent-yellow border border-accent-yellow shrink-0`,title:N.path,children:[(0,Q.jsx)(a,{size:10}),n(`scopeExternal`),`: `,N.path.length>48?`${N.path.slice(0,47)}…`:N.path]}):(0,Q.jsx)(`span`,{className:`text-meta text-dark-muted/60 shrink-0`,children:n(`scopeLocal`)}))]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,Q.jsx)(`span`,{className:`text-dark-muted shrink-0`,children:n(`tool`)}),(0,Q.jsx)(`code`,{className:`text-accent-blue font-mono text-xs bg-dark-surface px-1.5 py-0.5 rounded truncate`,children:b.toolName}),(0,Q.jsx)(`span`,{className:`text-dark-muted/50`,children:z}),(0,Q.jsx)(`span`,{className:`text-dark-muted/50`,children:D.label}),b.timeoutAction&&(0,Q.jsxs)(`span`,{className:`text-xs ${b.timeoutAction===`deny`?`text-accent-red`:`text-accent-green`}`,children:[`timeout: `,re?`${b.timeoutAction===`allow`?`auto-allow`:`auto-deny`}${b.timeoutMs?` (${(b.timeoutMs/1e3).toFixed(0)}s)`:``}`:n(`timeoutWaitUser`)]})]}),O?(0,Q.jsx)(ge,{text:O.text,mono:O.mono,expanded:g,onToggle:()=>_(e=>!e)}):A?(0,Q.jsx)(ge,{text:A,expanded:g,onToggle:()=>_(e=>!e)}):null,P&&(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>_(!0),className:`flex items-center gap-1.5 text-xs px-2 py-1.5 rounded bg-accent-red/10 text-accent-red border border-accent-red/30 hover:bg-accent-red/20 transition-colors text-left`,children:[(0,Q.jsx)(x,{size:13}),(0,Q.jsx)(`span`,{children:n(`showAll`)})]}),(T.level===`CRITICAL`||T.level===`HIGH`)&&(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs px-2 py-1.5 rounded ${E.bg} ${E.text}`,children:[(0,Q.jsx)(x,{size:13}),(0,Q.jsx)(`span`,{children:T.level===`CRITICAL`?n(`highRiskWarning`):n(`mediumRiskConfirm`)})]}),(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Q.jsxs)(K,{variant:`accent`,onClick:U,disabled:u||P,children:[(0,Q.jsx)(`span`,{className:`text-badge font-mono bg-accent-fg/20 rounded px-1`,children:`1`}),(0,Q.jsx)(`span`,{children:ne.allow.label}),(0,Q.jsx)(`span`,{className:`text-meta text-accent-fg/70 hidden sm:inline`,children:ie})]}),(0,Q.jsxs)(`button`,{onClick:G,disabled:u||P,className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg border border-dark-border bg-dark-bg text-dark-text hover:bg-dark-hover text-sm transition-colors disabled:opacity-50`,children:[(0,Q.jsx)(`span`,{className:`text-badge font-mono text-dark-muted bg-dark-surface rounded px-1`,children:`3`}),(0,Q.jsx)(`span`,{children:ne.allow_session.label}),(0,Q.jsx)(`span`,{className:`text-meta text-dark-muted/60 hidden sm:inline`,children:oe})]}),(0,Q.jsxs)(`button`,{onClick:J,disabled:u||P,className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg border border-dark-border bg-dark-bg text-dark-text hover:bg-dark-hover text-sm transition-colors disabled:opacity-50`,children:[(0,Q.jsx)(`span`,{className:`text-badge font-mono text-dark-muted bg-dark-surface rounded px-1`,children:`4`}),(0,Q.jsx)(`span`,{children:ne.auto.label}),(0,Q.jsx)(`span`,{className:`text-meta text-dark-muted/60 hidden sm:inline`,children:se})]}),(0,Q.jsx)(`span`,{className:`flex-1`}),(0,Q.jsxs)(`button`,{onClick:W,disabled:u,className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-dark-muted hover:bg-accent-red/15 hover:text-accent-red text-sm transition-colors disabled:opacity-50`,children:[(0,Q.jsx)(`span`,{className:`text-badge font-mono text-dark-muted/60 rounded px-1`,children:`2`}),(0,Q.jsx)(`span`,{children:ne.deny.label}),(0,Q.jsx)(`span`,{className:`text-meta text-dark-muted/60 hidden sm:inline`,children:ae})]})]}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-between text-xs text-dark-muted/60`,children:[(0,Q.jsx)(`span`,{children:n(`shortcutHint`)}),(0,Q.jsx)(`span`,{children:w>0?n(`morePending`,{n:w}):n(`lastItem`)})]})]})})}var mr=`dsc-auto-access-banner-dismissed`,hr=(0,Z.memo)(function(){let{t:e}=L(),t=be(e=>e.mode),[n,r]=(0,Z.useState)(()=>localStorage.getItem(mr)===`1`);(0,Z.useEffect)(()=>{J(t===`normal`?`act`:t)||localStorage.getItem(mr)===`1`&&r(!1)},[t]);let i=(0,Z.useCallback)(e=>{e&&localStorage.setItem(mr,`1`),r(!0)},[]);return!(t!==`normal`&&J(t))||n?null:(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5 px-4 py-1 text-meta leading-snug text-accent-yellow/75 bg-accent-yellow/[0.05] border-b border-accent-yellow/10 select-none`,role:`note`,title:e(`autoAccess.desc`),children:[(0,Q.jsx)(d,{size:11,className:`shrink-0 text-accent-yellow/70`}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1 truncate`,children:[(0,Q.jsx)(`span`,{className:`font-medium`,children:e(`autoAccess.title`)}),(0,Q.jsxs)(`span`,{className:`text-accent-yellow/60`,children:[` · `,e(`autoAccess.desc`)]})]}),(0,Q.jsx)(`button`,{onClick:()=>i(!1),className:`shrink-0 rounded p-0.5 text-accent-yellow/50 hover:text-accent-yellow hover:bg-accent-yellow/10 transition-colors`,title:e(`autoAccess.dismiss`),"aria-label":e(`autoAccess.dismiss`),children:(0,Q.jsx)(C,{size:11})}),(0,Q.jsx)(`button`,{onClick:()=>i(!0),className:`shrink-0 rounded px-1 py-px text-badge text-accent-yellow/50 hover:text-accent-yellow hover:bg-accent-yellow/10 transition-colors whitespace-nowrap`,children:e(`autoAccess.neverShow`)})]})});function gr(e,t){let n=e.replace(/\s+/g,` `).trim();return n.length>t?`${n.slice(0,t)}…`:n}function _r(e){return gr(e,12)}function vr(){return`custom-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}function yr(e,t){return e.some(e=>e.kind===`scenario`&&e.id===t)}function br(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id!=`string`||t.id===``||typeof t.label!=`string`||t.label===``||typeof t.hint!=`string`?!1:t.kind===`template`?typeof t.templateId==`string`&&t.templateId!==``:t.kind!==void 0&&t.kind!==`prompt`?!1:typeof t.prompt==`string`&&t.prompt!==``}function xr(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id==`string`&&t.id!==``&&typeof t.label==`string`&&t.label!==``&&Array.isArray(t.scenarios)&&t.scenarios.length>0&&t.scenarios.every(br)}function Sr(e){let t=e(`chat.start.categories`,{returnObjects:!0,defaultValue:[]});return Array.isArray(t)?t.filter(xr):[]}var Cr=`tpl:`,wr=`tpl-`;function Tr(e){return e.trim().toLowerCase()}function Er(e){let t=new Map;for(let n of e){let e=(n.category??``).trim();if(!e)continue;let r=(n.name??``).trim();if(!r)continue;let i={id:`${wr}${n.id}`,label:r,hint:n.description??``,prompt:``,kind:`template`,templateId:n.id},a=t.get(e);a?a.push(i):t.set(e,[i])}return[...t].map(([e,t])=>({id:`${Cr}${e}`,label:e,scenarios:t}))}function Dr(e,t){if(t.length===0)return e;let n=e.map(e=>({...e})),r=new Set(n.map(e=>e.id)),i=new Map(n.map((e,t)=>[Tr(e.label),t]));for(let e of t){let t=Tr(e.label),a=i.get(t);if(a!==void 0){let t=n[a];n[a]={...t,scenarios:[...t.scenarios,...e.scenarios]}}else r.has(e.id)||(r.add(e.id),i.set(t,n.length),n.push(e))}return n}function Or(e,t,n){let r=new Map;for(let t of e)for(let e of t.scenarios)r.set(e.id,e);let i=new Set,a=[];for(let e of t){if(i.has(e.id))continue;if(i.add(e.id),e.kind===`custom`){a.push({id:e.id,label:e.label,hint:gr(e.prompt,56),prompt:e.prompt});continue}let t=r.get(e.id);t&&a.push(t)}return jr(a,n).slice(0,6)}function kr(e){return e<5?`chat.start.greetingDawn`:e<11?`chat.start.greetingMorning`:e<13?`chat.start.greetingNoon`:e<18?`chat.start.greetingAfternoon`:`chat.start.greetingEvening`}function Ar(e,t,n){let r=e(kr(t)),i=(n??``).trim();return i?e(`chat.start.withName`,{greeting:r,name:i}):r}function jr(e,t){return e.map((e,n)=>({scenario:e,index:n,count:t[e.id]??0})).sort((e,t)=>t.count-e.count||e.index-t.index).map(e=>e.scenario)}function Mr(e,t){return e.length===0||!t?null:e.find(e=>e.id===t)??null}var $=U()(W((e,t)=>({categoryId:null,clickCounts:{},favorites:[],suggestionsHidden:!0,prefillNonce:0,setCategoryId:t=>e({categoryId:t,suggestionsHidden:!1}),recordUse:t=>e(e=>({clickCounts:{...e.clickCounts,[t]:(e.clickCounts[t]??0)+1},favorites:e.favorites.some(e=>e.id===t)?e.favorites:[{kind:`scenario`,id:t},...e.favorites]})),toggleFavorite:t=>e(e=>({favorites:e.favorites.some(e=>e.kind===`scenario`&&e.id===t)?e.favorites.filter(e=>e.kind!==`scenario`||e.id!==t):[{kind:`scenario`,id:t},...e.favorites]})),removeFavorite:t=>e(e=>({favorites:e.favorites.filter(e=>e.id!==t)})),addCustomFavorite:(n,r)=>{let i=r.trim();if(!i)return null;let a=vr(),o=new Set(t().favorites.map(e=>e.id));for(;o.has(a);)a=vr();let s={kind:`custom`,id:a,label:n.trim()||_r(i),prompt:i};return e(e=>({favorites:[s,...e.favorites]})),s},toggleSuggestions:()=>e(e=>({suggestionsHidden:!e.suggestionsHidden})),requestFocus:()=>e(e=>({prefillNonce:e.prefillNonce+1})),reset:()=>e({categoryId:null,clickCounts:{},favorites:[],suggestionsHidden:!0,prefillNonce:0})}),{name:`deepseekcode-start-page-storage`,partialize:e=>({categoryId:e.categoryId,clickCounts:e.clickCounts,favorites:e.favorites,suggestionsHidden:e.suggestionsHidden}),version:2,migrate:(e,t)=>{let n=t??0;if(n>=2||!e||typeof e!=`object`)return e;let r=e,i=n<1||r.suggestionsHidden,a=n<1?Object.entries(r.clickCounts??{}).sort((e,t)=>t[1]-e[1]).slice(0,6).map(([e])=>e):r.favoriteIds??[];return{categoryId:r.categoryId??null,clickCounts:r.clickCounts??{},suggestionsHidden:i,favorites:a.map(e=>({kind:`scenario`,id:e}))}}}));function Nr(e){return typeof e!=`string`||!e?null:e.split(/[\\/]+/).pop()||null}var Pr={enabled:!0,exists:!1,name:null,file:null};function Fr(){let[e,t]=(0,Z.useState)(Pr);return(0,Z.useEffect)(()=>{let e=!1,n=()=>{ie.profile.get().then(n=>{if(e||!n.success||!n.data)return;let r=n.data,i=r.enabled!==!1,a=r.exists===!0,o={enabled:i,exists:a,name:i&&r.name?r.name:null,file:i&&a?Nr(r.path):null};t(e=>e.enabled===o.enabled&&e.exists===o.exists&&e.name===o.name&&e.file===o.file?e:o)}).catch(()=>{})};return n(),window.addEventListener(Ae,n),()=>{e=!0,window.removeEventListener(Ae,n)}},[]),e}var Ir=(0,Z.memo)(function(){return(0,Q.jsxs)(`div`,{className:`relative isolate flex min-h-[8.5rem] w-full flex-col justify-end pb-1`,children:[(0,Q.jsx)(Lr,{}),(0,Q.jsx)(Br,{})]})}),Lr=(0,Z.memo)(function(){let{t:e}=L(),{enabled:t,exists:n,name:r,file:i}=Fr(),a=(0,Z.useMemo)(()=>Ar(e,new Date().getHours(),r),[e,r]);return(0,Q.jsxs)(`div`,{className:`chat-col px-4 pt-2 sm:px-6`,children:[(0,Q.jsxs)(`h1`,{className:`text-2xl font-semibold leading-snug tracking-tight text-dark-text`,children:[(0,Q.jsx)(`span`,{className:`block`,children:a}),(0,Q.jsx)(`span`,{className:`block`,children:e(`chat.start.question`)})]}),(0,Q.jsx)(Rr,{enabled:t,exists:n,name:r,file:i})]})});function Rr({enabled:e,exists:t,name:n,file:r}){let{t:i}=L(),a=e?n?i(`chat.start.profileOn`,{name:n}):t?r?i(`chat.start.profileFile`,{file:r}):i(`chat.start.profileSet`):i(`chat.start.profileAnonymous`):i(`chat.start.profileDisabled`),o=(0,Z.useCallback)(()=>{typeof window<`u`&&window.dispatchEvent(new CustomEvent(`switch-tab`,{detail:{tab:`settings`,section:`profile`}}))},[]);return(0,Q.jsx)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2`,children:(0,Q.jsxs)(`button`,{type:`button`,onClick:o,title:i(`chat.start.profileHint`),className:`inline-flex min-w-0 items-center gap-1.5 rounded-full border border-dark-border/70 bg-dark-surface/50 px-2.5 py-1 text-meta text-dark-muted transition-colors hover:border-accent-blue/40 hover:text-dark-text`,children:[(0,Q.jsx)(T,{size:11,"aria-hidden":`true`,className:`shrink-0`}),(0,Q.jsx)(`span`,{className:`truncate`,children:a}),(0,Q.jsxs)(`span`,{className:`shrink-0 text-dark-muted/70`,children:[`· `,i(`chat.start.profileEdit`)]})]})})}var zr=[{glyph:`/`,labelKey:`shortcuts.slashCommand`},{glyph:`@`,labelKey:`shortcuts.fileRef`},{glyph:`!`,labelKey:`shortcuts.shellCommand`},{glyph:`$`,labelKey:`shortcuts.skillRef`}],Br=(0,Z.memo)(function(){let{t:e}=L();return(0,Q.jsx)(`ul`,{"data-testid":`start-tips`,"aria-label":e(`shortcuts.title`),className:`chat-col mt-3 flex flex-wrap items-center gap-x-4 gap-y-1.5 px-4 sm:px-6`,children:zr.map(t=>(0,Q.jsxs)(`li`,{className:`inline-flex items-center gap-1.5 text-badge text-dark-muted/60`,children:[(0,Q.jsx)(`kbd`,{className:`rounded border border-dark-border bg-dark-bg px-1.5 py-0.5 font-mono text-badge leading-none text-dark-muted`,children:t.glyph}),(0,Q.jsx)(`span`,{children:e(t.labelKey)})]},t.glyph))})}),Vr=(0,Z.memo)(function({sessionId:e,onStartTemplate:t}){let{t:n}=L(),[a,o]=(0,Z.useState)([]);(0,Z.useEffect)(()=>{if(!t)return;let e=!1;return ie.templates.list().then(t=>{!e&&t.success&&t.data&&o(t.data)}).catch(()=>{}),()=>{e=!0}},[t]);let s=(0,Z.useMemo)(()=>Dr(Sr(n),Er(a)),[n,a]),c=$(e=>e.categoryId),l=$(e=>e.setCategoryId),d=$(e=>e.clickCounts),p=$(e=>e.favorites),m=$(e=>e.recordUse),h=$(e=>e.toggleFavorite),_=$(e=>e.removeFavorite),v=$(e=>e.addCustomFavorite),b=$(e=>e.suggestionsHidden),x=$(e=>e.toggleSuggestions),S=$(e=>e.requestFocus),w=(0,Z.useMemo)(()=>Mr(s,c),[s,c]),T=(0,Z.useCallback)(()=>l(null),[l]),E=(0,Z.useMemo)(()=>w?jr(w.scenarios,d):Or(s,p,d),[w,s,p,d]),[D,O]=(0,Z.useState)(!1),[k,A]=(0,Z.useState)(``),[j,M]=(0,Z.useState)(``),N=(0,Z.useCallback)(()=>{O(!1),A(``),M(``)},[]),P=(0,Z.useCallback)(()=>{O(!0),b&&x()},[b,x]),F=(0,Z.useCallback)(e=>{e.preventDefault(),v(k,j)&&N()},[v,N,k,j]),I=(0,Z.useCallback)(t=>{e&&(H.getState().setSessionInput(e,t.prompt),m(t.id),S())},[e,m,S]),[R,z]=(0,Z.useState)(null),[B,V]=(0,Z.useState)(``),ee=(0,Z.useCallback)(async e=>{V(``);let t=await ie.templates.get(e);!t.success||!t.data?V(n(`templates.loadFailed`)):(z(t.data),b&&x())},[n,b,x]),U=(0,Z.useCallback)(e=>{e.kind===`template`&&e.templateId?t&&ee(e.templateId):I(e)},[t,ee,I]),W=(0,Z.useRef)([]),[G,K]=(0,Z.useState)(0),q=(0,Z.useCallback)((e,t,n)=>{if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let n=e.key===`ArrowDown`?Math.min(t+1,E.length-1):Math.max(t-1,0);K(n),W.current[n]?.focus()}else e.key===`Tab`&&(e.preventDefault(),U(n))},[U,E.length]);return s.length===0?null:(0,Q.jsxs)(`div`,{className:`start-col max-md:order-3 px-4 pb-4 sm:px-6`,children:[(0,Q.jsxs)(`div`,{role:`tablist`,"aria-label":n(`chat.start.categoriesLabel`),onKeyDown:e=>{e.key===`Escape`&&c&&(e.preventDefault(),T())},className:`snap-row mt-5 flex items-center gap-2 overflow-x-auto pb-1`,children:[s.map(e=>{let t=e.id===c;return(0,Q.jsxs)(`span`,{"data-testid":`start-chip`,"data-category-id":e.id,"data-selected":t?`true`:void 0,className:`inline-flex shrink-0 items-center overflow-hidden rounded-full border transition-colors focus-within:ring-1 focus-within:ring-accent-blue/60 ${t?`border-transparent bg-gradient-to-r rtl:bg-gradient-to-l from-accent-blue to-accent-purple text-accent-fg shadow-sm`:`border-dark-border/70 text-dark-muted hover:border-accent-blue/40 hover:text-dark-text`}`,children:[(0,Q.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":t,"data-testid":`start-chip-label`,onClick:()=>l(t?null:e.id),className:`py-1 text-meta transition-colors focus-visible:outline-none ${t?`ps-3 pe-1.5`:`px-3`}`,children:e.label}),t&&(0,Q.jsx)(`button`,{type:`button`,"data-testid":`start-chip-clear`,"aria-label":n(`chat.start.clearCategory`,{label:e.label}),title:n(`chat.start.clearCategory`,{label:e.label}),onClick:T,className:`py-1 pl-0 pe-2 text-accent-fg/75 transition-colors hover:text-accent-fg focus-visible:outline-none`,children:(0,Q.jsx)(C,{size:12,"aria-hidden":`true`})})]},e.id)}),(0,Q.jsx)(i,{size:13,"aria-hidden":`true`,className:`shrink-0 text-dark-muted/50`})]}),(0,Q.jsxs)(`div`,{className:`mt-2.5`,children:[(0,Q.jsxs)(`div`,{className:`mb-1 flex items-center justify-between gap-3`,children:[(0,Q.jsxs)(`span`,{className:`min-w-0 truncate text-meta text-dark-muted/60`,children:[w?n(`chat.start.categoryTitle`,{label:w.label}):n(`chat.start.frequentTitle`),(0,Q.jsx)(`span`,{className:`ms-2 text-dark-muted/40`,children:n(w?`chat.start.selectedHint`:`chat.start.frequentHint`)})]}),(0,Q.jsxs)(`span`,{className:`flex shrink-0 items-center gap-3`,children:[!w&&!D&&(0,Q.jsxs)(`button`,{type:`button`,"data-testid":`start-custom-add`,onClick:P,className:`inline-flex items-center gap-1 text-meta text-dark-muted/60 transition-colors hover:text-dark-text`,children:[(0,Q.jsx)(y,{size:11,"aria-hidden":`true`}),n(`chat.start.customAdd`)]}),(0,Q.jsx)(`button`,{type:`button`,onClick:x,className:`inline-flex items-center gap-1 text-meta text-dark-muted/60 transition-colors hover:text-dark-text`,children:b?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(u,{size:11,"aria-hidden":`true`}),n(`chat.start.show`)]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(f,{size:11,"aria-hidden":`true`}),n(`chat.start.hide`)]})})]})]}),B&&(0,Q.jsx)(`div`,{"data-testid":`start-template-error`,className:`mb-2 text-meta text-accent-red`,children:B}),R&&(0,Q.jsxs)(`div`,{"data-testid":`start-template-form`,className:`mb-2 rounded-xl border border-dark-border/60 bg-dark-surface/40 p-3`,children:[(0,Q.jsx)(`div`,{className:`mb-2 text-xs font-medium text-dark-text`,children:R.name}),(0,Q.jsx)(Ee,{template:R,onCancel:()=>z(null),onSubmit:e=>{let n=R;z(null),t?.(n,e)},submitLabel:n(`templates.launch`)})]}),D&&!w&&(0,Q.jsxs)(`form`,{"data-testid":`start-custom-form`,onSubmit:F,className:`mb-2 flex flex-col gap-2 rounded-xl border border-dark-border/60 bg-dark-surface/40 p-3`,children:[(0,Q.jsx)(`input`,{"data-testid":`start-custom-label`,value:k,onChange:e=>A(e.target.value),placeholder:n(`chat.start.customLabelPlaceholder`),maxLength:40,className:`w-full rounded-md border border-dark-border/60 bg-dark-bg/60 px-2.5 py-1.5 text-xs text-dark-text placeholder:text-dark-muted/50 focus:border-accent-blue/50 focus-visible:outline-none`}),(0,Q.jsx)(`textarea`,{"data-testid":`start-custom-prompt`,value:j,onChange:e=>M(e.target.value),placeholder:n(`chat.start.customPromptPlaceholder`),rows:2,autoFocus:!0,className:`w-full resize-none rounded-md border border-dark-border/60 bg-dark-bg/60 px-2.5 py-1.5 text-xs leading-snug text-dark-text placeholder:text-dark-muted/50 focus:border-accent-blue/50 focus-visible:outline-none`}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-end gap-2`,children:[(0,Q.jsx)(`button`,{type:`button`,"data-testid":`start-custom-cancel`,onClick:N,className:`rounded-md px-2.5 py-1 text-meta text-dark-muted transition-colors hover:text-dark-text`,children:n(`chat.start.customCancel`)}),(0,Q.jsx)(`button`,{type:`submit`,"data-testid":`start-custom-save`,disabled:!j.trim(),className:`rounded-md border border-accent-blue/40 bg-accent-blue/10 px-2.5 py-1 text-meta font-medium text-accent-blue transition-colors hover:bg-accent-blue/20 disabled:cursor-not-allowed disabled:border-dark-border/60 disabled:bg-transparent disabled:text-dark-muted/40`,children:n(`chat.start.customSave`)})]})]}),!b&&!R&&(E.length===0?D?null:(0,Q.jsx)(`p`,{"data-testid":`start-frequent-empty`,className:`rounded-xl border border-dashed border-dark-border/60 px-4 py-3 text-xs leading-relaxed text-dark-muted/70`,children:n(`chat.start.frequentEmpty`)}):(0,Q.jsx)(`div`,{className:`overflow-hidden rounded-xl border border-dark-border/60 bg-dark-surface/40`,children:E.map((e,t)=>{let i=yr(p,e.id);return(0,Q.jsxs)(`div`,{"data-testid":`start-row-shell`,className:`group flex items-center transition-colors hover:bg-dark-hover/40 focus-within:bg-dark-hover/40 ${t>0?`border-t border-dark-border/40`:``}`,children:[(0,Q.jsxs)(`button`,{ref:e=>{W.current[t]=e},type:`button`,"data-testid":`start-row`,"data-scenario-id":e.id,tabIndex:t===G?0:-1,onClick:()=>U(e),onKeyDown:n=>q(n,t,e),className:`flex min-w-0 flex-1 items-baseline gap-3 py-2.5 ps-4 pe-2 text-start transition-colors focus-visible:outline-none`,children:[(0,Q.jsx)(`span`,{className:`w-[84px] shrink-0 text-compact font-medium leading-snug text-dark-text`,children:e.label}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 border-s border-dark-border/50 ps-3 text-compact leading-snug text-dark-muted`,children:e.hint}),(0,Q.jsx)(g,{size:12,"aria-hidden":`true`,className:`mt-0.5 shrink-0 text-dark-muted/40`})]}),w?(0,Q.jsx)(`button`,{type:`button`,"data-testid":`start-row-favorite`,"aria-pressed":i,"aria-label":n(i?`chat.start.removeFavorite`:`chat.start.addFavorite`,{label:e.label}),title:n(i?`chat.start.removeFavorite`:`chat.start.addFavorite`,{label:e.label}),onClick:()=>h(e.id),className:`me-2 shrink-0 rounded-md p-1.5 transition-colors focus-visible:outline-none ${i?`text-accent-yellow`:`text-dark-muted/40 hover:text-dark-text`}`,children:(0,Q.jsx)(r,{size:13,"aria-hidden":`true`,className:i?`fill-current`:``})}):(0,Q.jsx)(`button`,{type:`button`,"data-testid":`start-row-remove`,"aria-label":n(`chat.start.removeFavorite`,{label:e.label}),title:n(`chat.start.removeFavorite`,{label:e.label}),onClick:()=>_(e.id),className:`me-2 shrink-0 rounded-md p-1.5 text-dark-muted/40 transition-colors hover:text-dark-text focus-visible:outline-none`,children:(0,Q.jsx)(C,{size:13,"aria-hidden":`true`})})]},e.id)})}))]})]})}),Hr=(0,Z.memo)(function({currentSessionId:e}){let{t}=L(),[n]=(0,Z.useState)(V),r=(0,Z.useCallback)(()=>{if(!n)return;let e=ee.getState();e.sessionTabs.some(e=>e.id===n.id)?e.setActiveSession(n.id):e.historySessions.some(e=>e.id===n.id)?e.restoreHistorySession(n.id):e.addSessionTab(n.title||void 0,n.dir||void 0,n.id),X.setSessionId(n.id)},[n]);if(!n||n.id===e)return null;let i=n.title.trim();return i?(0,Q.jsx)(`div`,{className:`mb-1 flex shrink-0 justify-center px-4 max-md:justify-start`,children:(0,Q.jsxs)(`button`,{type:`button`,onClick:r,title:t(`chat.resumeLastTitle`),"data-testid":`resume-last-session`,className:`group flex max-w-full items-center gap-1.5 rounded-full border border-dark-border/70 bg-dark-surface/50 px-2.5 py-1 text-meta leading-none text-dark-muted transition-colors hover:border-accent-blue/40 hover:bg-accent-blue/10 hover:text-dark-text focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent-blue/60`,children:[(0,Q.jsx)(O,{size:11,className:`shrink-0 text-dark-muted/70 group-hover:text-accent-blue`}),(0,Q.jsx)(`span`,{className:`truncate`,children:t(`chat.resumeLast`,{title:i})})]})}):null});function Ur(e){let{sessionId:t,isGenerating:n,messages:r}=e,{i18n:i}=L(),a=(0,Z.useRef)(n),o=(0,Z.useRef)(t);(0,Z.useEffect)(()=>{let e=a.current,s=o.current!==t;if(a.current=n,o.current=t,s||!e||n)return;let c=me();if(c.enabled&&c.autoPlay)for(let e=r.length-1;e>=0;e--){let t=r[e];if(!t||t.type!==`assistant`)continue;let n=(t.content||``).trim();if(n){if(!De(n))return;xe(n,ae(i.language));return}}},[n,t,r,i.language]),(0,Z.useEffect)(()=>()=>Ce(),[t])}var Wr=[{mode:`chat`,Icon:o,labelKey:`trajectory.viewChat`},{mode:`trajectory`,Icon:b,labelKey:`trajectory.viewTrajectory`}],Gr=[],Kr=(0,Z.memo)(function({tabs:e,activeSessionId:t,onSend:n,onStop:r,onPause:i,onResume:a,activeTab:o,setActiveTab:s,createNewSession:c,setTheme:l,setThemePreset:u,setLogs:d,setUnreadLogs:f,onRegenerate:p,onRetryTurn:m,onDeleteMessage:h,onUndoLastUser:g,onOpenSidebarView:_,hookDrawerOpen:v,onCloseHookDrawer:y,questionDrawerOpen:b,onCloseQuestionDrawer:x,workspaceDir:S,onWorkspaceSelect:C,onNewSessionInDir:w,errorLogs:T,onOpenLogs:E,onStartTemplate:D}){let O=(0,Z.useMemo)(()=>({setActiveTab:s,createNewSession:c,setTheme:l,setThemePreset:u,setLogs:d,setUnreadLogs:f}),[s,c,l,u,d,f]),[k,A]=(0,Z.useState)(`chat`),{t:j}=L(),M=H(e=>t?e.messagesBySession[t]??Gr:Gr),N=H(e=>t?e.generatingSessions.includes(t):!1),P=H(e=>t?e.pausedSessions.includes(t):!1);Ur({sessionId:t,isGenerating:N,messages:M});let F=e.find(e=>e.id===t)||null,I=(0,Z.useMemo)(()=>M.filter(e=>!e.deleted).length===0,[M]),R=H(e=>!t||e.snapshotLoadedSessions.includes(t)),z=I&&!R;(0,Z.useEffect)(()=>{F&&!I&&B({id:F.id,title:F.title,dir:S})},[F,I,S]);let V=$(e=>e.prefillNonce),ee=(0,Z.useCallback)((e,r,i,a,o,s)=>{t&&n(t,e,r,i,a||s?{...a?{mentions:a,mentionDeliveryMode:o}:{},...s?{display:s}:{}}:void 0)},[n,t]),U=(0,Z.useCallback)(async e=>{let n=t;if(!n)return;let r=`shell_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,i=Date.now();H.getState().addMessage(n,{id:r,type:`user`,content:`!${e}`,timestamp:i,noTruncate:!0,shellRun:{command:e,stdout:``,stderr:``,exitCode:null,durationMs:0,running:!0}});let a=await ie.shell.exec(e,S),o=a.success&&a.data?{...a.data,running:!1}:{command:e,stdout:``,stderr:``,exitCode:null,durationMs:Date.now()-i,running:!1,error:a.error||j(`chat.shellRequestFailedGeneric`)};H.getState().updateMessage(n,r,{shellRun:o})},[t,S,j]),W=(0,Z.useCallback)(e=>{t&&p&&p(t,e)},[p,t]),G=(0,Z.useCallback)(e=>{t&&h&&h(t,e)},[h,t]);return(0,Q.jsx)(`div`,{className:`flex-1 flex min-h-0`,children:(0,Q.jsxs)(`div`,{className:`flex-1 flex flex-col min-w-0 min-h-0`,children:[(0,Q.jsx)(hr,{}),F&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`flex h-7 shrink-0 items-center justify-end px-3`,children:(0,Q.jsxs)(`div`,{role:`radiogroup`,"aria-label":j(`trajectory.viewToggleTitle`),className:`relative inline-grid grid-cols-2 items-center rounded-full border border-dark-border bg-dark-surface/60 p-0.5 text-meta leading-none`,children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-y-0.5 left-0.5 w-[calc(50%-2px)] rounded-full ring-1 transition-transform duration-200 ease-out motion-reduce:transition-none ${k===`trajectory`?`translate-x-full bg-accent-blue/20 ring-accent-blue/40`:`translate-x-0 bg-dark-hover ring-dark-border`}`}),Wr.map(({mode:e,Icon:t,labelKey:n})=>{let r=k===e;return(0,Q.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":r,title:j(`trajectory.viewToggleTitle`),onClick:()=>A(e),className:`relative z-10 flex items-center justify-center gap-1 whitespace-nowrap rounded-full px-2.5 py-1 transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent-blue/60 ${r?`text-dark-text`:`text-dark-muted hover:text-dark-text`}`,children:[(0,Q.jsx)(t,{size:11}),j(n)]},e)})]})}),(0,Q.jsxs)(`div`,{className:`relative flex min-h-0 flex-1 flex-col ${I&&k===`chat`?`justify-center overflow-y-auto custom-scrollbar py-2 max-md:justify-start`:``}`,children:[k===`chat`?(0,Q.jsxs)(Q.Fragment,{children:[z?(0,Q.jsx)(`div`,{className:`animate-session-switch flex items-center justify-center py-10 text-sm text-dark-muted`,role:`status`,children:j(`chat.loading`)},`restoring-${F.id}`):I?(0,Q.jsxs)(`div`,{className:`animate-session-switch`,children:[(0,Q.jsx)(Hr,{currentSessionId:F.id}),(0,Q.jsx)(Ir,{})]},`empty-${F.id}`):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col animate-session-switch`,children:(0,Q.jsx)(re,{messages:M,isGenerating:N,isPaused:P,sessionId:F.id,onRegenerate:p?W:void 0,onRetryTurn:m,onDeleteMessage:h?G:void 0,onUndoLastUser:g,onOpenSidebarView:_})},F.id),(0,Q.jsx)(dr,{sessionId:F.id})]}),(0,Q.jsx)(pr,{isOpen:!!v,onCloseModal:y}),(0,Q.jsx)(ur,{isOpen:!!b,onClose:x??(()=>{})})]}):(0,Q.jsx)(Un,{sessionId:F.id,messages:M,errorLogs:T,onOpenLogs:E}),(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsx)(Gn,{activeSessionId:F.id})}),(0,Q.jsx)(Y,{sessionId:F.id,onSend:ee,onRunShell:U,onStop:()=>r(F.id),onPause:()=>i(F.id),onResume:()=>a(F.id),slashOptions:O,workspaceDir:S,onWorkspaceSelect:C?e=>C(e,F.id):void 0,onNewSessionInDir:w,focusRequest:V}),k===`chat`&&I&&R&&(0,Q.jsx)(Vr,{sessionId:F.id,onStartTemplate:D})]})]})]})})});export{Kr as SessionGrid};
@@ -0,0 +1,4 @@
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{$ as t,A as n,Bn as r,Dt as i,Er as a,Et as o,G as s,Gn as c,Jn as l,K as u,Kn as d,Kt as f,Mn as p,N as m,Or as h,Pt as g,Qn as _,S as v,Un as y,Wr as b,Xn as x,Y as S,_n as C,_t as w,a as T,bn as E,fr as D,ft as O,g as k,it as A,j,kr as M,kt as N,l as ee,lt as te,n as P,ni as ne,nr as F,nt as re,pr as ie,rn as ae,sn as I,vr as L,z as oe}from"./icons-B8Ngx6rM.js";import{t as R}from"./useTranslation-gGKZZfux.js";import{a as z}from"./imageUrl-CrQM4gmf.js";import{i as B,n as se,r as V,t as H}from"./Button-D-g7PgYh.js";import{v as ce,y as le}from"./src-BK8SoTFV.js";import{a as ue,i as de,o as fe,r as pe,t as me}from"./sttLanguages-BPcOF0nQ.js";import{r as he,t as U}from"./api-ZQf0Ys8y.js";import{A as ge,C as _e,D as ve,M as ye,O as be,S as xe,T as Se,r as Ce,v as W,y as we}from"./settingsStore-BSdi9gNd.js";import{I as Te}from"./markdown-Cps-36Z5.js";import{t as Ee}from"./whatsNewStore-C0hbStfc.js";import{i as De,t as G}from"./useConfirm-CQjBnYuP.js";import"./common-CPZxdYLs.js";import{G as Oe,J as ke,K as Ae,O as je,Y as Me,ft as K,l as Ne,p as Pe}from"./index-STsyoFCk.js";import{n as q}from"./profileChange-xrd7jkii.js";var J=e(ne(),1),Y=Te();function Fe(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function Ie(e){return new Date(e).toLocaleString()}function Le(){let[e,n]=(0,J.useState)([]),[r,i]=(0,J.useState)(null),[a,o]=(0,J.useState)(``),[s,c]=(0,J.useState)(``),[l,u]=(0,J.useState)(!1),[d,f]=(0,J.useState)(!1),m=(0,J.useCallback)(async()=>{u(!0);try{let e=await U.config.files.list();e.success&&Array.isArray(e.data)&&n(e.data)}catch{B.error(`Failed to load config files`)}finally{u(!1)}},[]),h=(0,J.useCallback)(async e=>{try{let t=await U.config.files.read(e);if(t.success&&t.data){let e=t.data;i(e.name),o(e.content),c(e.content)}}catch{B.error(`Failed to read ${e}`)}},[]);(0,J.useEffect)(()=>{m()},[m]);let g=(0,J.useCallback)(async()=>{if(r){f(!0);try{let e=await U.config.files.write(r,a);e.success?(c(a),B.success(`${r} saved`),m()):B.error(e.error||`Failed to save`)}catch{B.error(`Failed to save file`)}finally{f(!1)}}},[r,a,m]),_=a!==s,v=r?.endsWith(`.yaml`)||r?.endsWith(`.yml`),y=r?.endsWith(`.json`),b=e=>e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`);return(0,Y.jsxs)(`div`,{className:`space-y-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsx)(`h4`,{className:`text-sm font-medium text-dark-text`,children:`Config Files`}),(0,Y.jsx)(`button`,{onClick:m,disabled:l,className:`p-1.5 rounded hover:bg-dark-hover transition-colors text-dark-muted`,title:`Refresh file list`,children:(0,Y.jsx)(A,{size:14,className:l?`animate-spin`:``})})]}),e.length===0&&!l&&(0,Y.jsx)(`p`,{className:`text-xs text-dark-muted`,children:`No config files found in ~/.agent/`}),e.length>0&&(0,Y.jsxs)(`div`,{className:`flex gap-3`,children:[(0,Y.jsx)(`div`,{className:`w-48 shrink-0 space-y-0.5 max-h-[300px] overflow-y-auto custom-scrollbar`,children:e.map(e=>(0,Y.jsxs)(`button`,{onClick:()=>h(e.name),className:`w-full text-start px-2.5 py-1.5 rounded text-xs flex items-center gap-2 transition-colors ${r===e.name?`bg-accent-blue/10 text-accent-blue`:`text-dark-text hover:bg-dark-hover`}`,children:[(0,Y.jsx)(p,{size:12,className:`shrink-0`}),(0,Y.jsx)(`span`,{className:`truncate flex-1`,children:e.name}),!e.editable&&(0,Y.jsx)(`span`,{className:`text-badge text-dark-muted shrink-0`,title:`Read-only`,children:`read`})]},e.name))}),r?(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between mb-1.5`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-dark-muted`,children:[(0,Y.jsx)(`span`,{className:`text-dark-text font-medium`,children:r}),e.find(e=>e.name===r)&&(0,Y.jsxs)(`span`,{children:[Fe(e.find(e=>e.name===r).size),` · `,Ie(e.find(e=>e.name===r).modified)]}),_&&(0,Y.jsxs)(`span`,{className:`text-accent-yellow flex items-center gap-1`,children:[(0,Y.jsx)(k,{size:10}),`unsaved changes`]})]}),(0,Y.jsx)(H,{variant:`accent`,size:`sm`,leftIcon:(0,Y.jsx)(t,{size:12}),loading:d,disabled:!_,onClick:g,children:`Save`})]}),(0,Y.jsxs)(`div`,{className:`relative`,children:[(0,Y.jsx)(`pre`,{className:`w-full h-[260px] p-3 rounded-lg bg-dark-bg border border-dark-border font-mono text-xs leading-relaxed overflow-auto custom-scrollbar pointer-events-none`,dangerouslySetInnerHTML:{__html:a.split(`
2
+ `).map(e=>{let t=b(e);return v?t.replace(/(#.*)$/,`<span class="text-dark-muted">$1</span>`).replace(/^(\s*)([\w-]+)(:)/,`$1<span class="text-accent-blue">$2</span>$3`).replace(/:\s+(true|false|null|~)(\s*)$/,`: <span class="text-accent-purple">$1</span>$2`).replace(/:\s+(\d+\.?\d*)(\s*)$/,`: <span class="text-accent-green">$1</span>$2`).replace(/:\s+"([^"]*)"(\s*)$/,`: <span class="text-accent-yellow">"$1"</span>$2`):y?t.replace(/(\s*"[^"]*")(\s*:)/g,`<span class="text-accent-blue">$1</span>$2`).replace(/:\s+(true|false|null)/g,`: <span class="text-accent-purple">$1</span>`).replace(/:\s+(\d+\.?\d*)/g,`: <span class="text-accent-green">$1</span>`).replace(/:\s+"([^"]*)"/g,`: <span class="text-accent-yellow">"$1"</span>`):t}).join(`
3
+ `)||`&nbsp;`}}),(0,Y.jsx)(`textarea`,{value:a,onChange:e=>o(e.target.value),className:`absolute inset-0 w-full h-full p-3 rounded-lg bg-transparent border border-dark-border font-mono text-xs leading-relaxed resize-none overflow-auto custom-scrollbar text-transparent caret-dark-text focus:outline-none focus:border-accent-blue/50`,style:{color:`transparent`},spellCheck:!1})]})]}):(0,Y.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-xs text-dark-muted`,children:`Select a file to edit`})]})]})}var Re=[{key:`pipIndexUrl`,labelKey:`stt.sources.pipIndexUrl`,placeholderKey:`stt.sources.phPipIndex`,preset:`pipIndexUrl`},{key:`pipExtraIndexUrl`,labelKey:`stt.sources.pipExtraIndexUrl`,placeholderKey:`stt.sources.phPipExtra`},{key:`proxy`,labelKey:`stt.sources.proxy`,placeholderKey:`stt.sources.phProxy`},{key:`hfEndpoint`,labelKey:`stt.sources.hfEndpoint`,placeholderKey:`stt.sources.phHub`,preset:`hfEndpoint`}],ze=`w-full bg-dark-bg border border-dark-border rounded-lg px-3 py-1.5 text-sm text-dark-text font-mono focus:border-accent-blue/60 focus:ring-2 focus:ring-accent-blue/15 outline-none transition-all disabled:opacity-50`;function Be(){let{t:e}=R(),[n,r]=(0,J.useState)(!1),[i,o]=(0,J.useState)(!1),[s,c]=(0,J.useState)(!1),[l,u]=(0,J.useState)(!1),[d,p]=(0,J.useState)(null),[m,g]=(0,J.useState)({pipIndexUrl:``,pipExtraIndexUrl:``,proxy:``,hfEndpoint:``}),_=(0,J.useCallback)(e=>{p(e),g({pipIndexUrl:e.settings.pipIndexUrl??``,pipExtraIndexUrl:e.settings.pipExtraIndexUrl??``,proxy:e.settings.proxy??``,hfEndpoint:e.settings.hfEndpoint??``})},[]),v=(0,J.useCallback)(async()=>{c(!0);try{let e=await U.stt.getConfig();e.success&&e.data?_(e.data):e.error&&B.error(e.error)}catch{}c(!1),o(!0)},[_]);(0,J.useEffect)(()=>{n&&!i&&v()},[n,i,v]);let y=d?.envKeys,b=d?.resolved.fromEnv??[],x=e=>b.includes(e),S=Object.keys(m).filter(e=>{let t=m[e].trim();return!t||x(e)?!1:e===`pipExtraIndexUrl`||e===`proxy`||t!==d?.official[e]}),w=Object.keys(m).some(e=>!x(e)&&m[e].trim()!==(d?.settings[e]??``)),T=(0,J.useCallback)(async()=>{u(!0);try{let t={};for(let{key:e}of Re)x(e)||(t[e]=m[e].trim()||null);let n=await U.stt.setConfig(t);n.success&&n.data?(B.success(e(`stt.sources.saved`)),await v()):B.error(n.error||e(`stt.sources.saveFailed`))}catch(e){B.error(e instanceof Error?e.message:String(e))}u(!1)},[m,x,v,e]),E=(0,J.useCallback)(async()=>{u(!0);try{let t=await U.stt.setConfig({pipIndexUrl:null,pipExtraIndexUrl:null,proxy:null,hfEndpoint:null});t.success&&t.data?(B.success(e(`stt.sources.resetDone`)),await v()):B.error(t.error||e(`stt.sources.saveFailed`))}catch(e){B.error(e instanceof Error?e.message:String(e))}u(!1)},[v,e]);return(0,Y.jsxs)(`div`,{className:`rounded-lg border border-dark-border bg-dark-surface overflow-hidden`,children:[(0,Y.jsxs)(`button`,{type:`button`,className:`w-full flex items-center gap-2 px-3 py-2.5 text-start hover:bg-dark-hover transition-colors`,onClick:()=>r(e=>!e),children:[n?(0,Y.jsx)(h,{size:14,className:`text-dark-muted`}):(0,Y.jsx)(a,{size:14,className:`text-dark-muted`}),(0,Y.jsx)(C,{size:14,className:`text-accent-blue`}),(0,Y.jsx)(`span`,{className:`text-sm font-medium text-dark-text flex-1`,children:e(`stt.sources.title`)}),S.length>0&&!n&&(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium bg-accent-orange/15 text-accent-orange`,children:[(0,Y.jsx)(k,{size:11}),e(`stt.sources.badgeCustom`,{count:S.length})]})]}),n&&(0,Y.jsxs)(`div`,{className:`px-3 pb-3 space-y-3 border-t border-dark-border pt-3`,children:[(0,Y.jsx)(`p`,{className:`text-meta text-dark-muted`,children:e(`stt.sources.hint`)}),s&&!d?(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-dark-muted py-2`,children:[(0,Y.jsx)(f,{size:13,className:`animate-spin`}),e(`stt.sources.loading`)]}):(0,Y.jsxs)(Y.Fragment,{children:[Re.map(({key:t,labelKey:n,placeholderKey:r,preset:i})=>{let a=x(t),o=(y?.[t]??[]).join(` / `)||`ENV`,s=i?d?.presets?.[i]??[]:[];return(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`label`,{className:`flex items-center gap-2 text-xs text-dark-muted mb-1`,children:[e(n),a&&(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-badge text-accent-yellow`,title:e(`stt.sources.envTitle`,{name:o}),children:[(0,Y.jsx)(k,{size:11}),`env: `,o]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`input`,{type:`text`,value:a?d?.resolved[t]??``:m[t],disabled:a,spellCheck:!1,placeholder:e(r),onChange:e=>g(n=>({...n,[t]:e.target.value})),className:ze}),s.length>0&&(0,Y.jsxs)(`select`,{value:``,disabled:a,title:e(`stt.sources.preset`),onChange:e=>{let n=s.find(t=>t.id===e.target.value);n&&g(e=>({...e,[t]:n.url}))},className:`shrink-0 bg-dark-bg border border-dark-border rounded-lg px-2 py-1.5 text-xs text-dark-text focus:border-accent-blue/60 outline-none transition-all disabled:opacity-50`,children:[(0,Y.jsx)(`option`,{value:``,children:e(`stt.sources.preset`)}),s.map(e=>(0,Y.jsx)(`option`,{value:e.id,children:e.label},e.id))]})]})]},t)}),S.length>0&&(0,Y.jsxs)(`div`,{className:`rounded-md border border-accent-orange/30 bg-accent-orange/5 px-2.5 py-2 text-meta text-accent-orange flex items-start gap-1.5`,children:[(0,Y.jsx)(k,{size:12,className:`mt-0.5 shrink-0`}),(0,Y.jsx)(`span`,{children:e(`stt.sources.warning`)})]}),d&&!d.allowPrivateHosts&&(0,Y.jsx)(`p`,{className:`text-badge text-dark-muted`,children:e(`stt.sources.privateBlocked`)}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 pt-0.5`,children:[(0,Y.jsx)(H,{variant:`accent`,size:`sm`,leftIcon:(0,Y.jsx)(t,{size:13}),loading:l,disabled:!w,onClick:()=>void T(),children:e(`stt.sources.save`)}),(0,Y.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-sm border border-dark-border text-dark-muted hover:border-dark-hover hover:text-dark-text transition-colors disabled:opacity-50`,disabled:l,onClick:()=>void E(),children:[(0,Y.jsx)(re,{size:13}),e(`stt.sources.reset`)]}),(0,Y.jsx)(`span`,{className:`text-badge text-dark-muted`,children:e(`stt.sources.httpsOnly`)})]})]})]})]})}function Ve(){let{t:e}=R(),[t,r]=(0,J.useState)(null),[a,o]=(0,J.useState)(null),[s,c]=(0,J.useState)({running:!1,logs:[]}),[u,d]=(0,J.useState)(!1),p=(0,J.useRef)(null),m=(0,J.useRef)(s),h=(0,J.useRef)(null),[g,y]=(0,J.useState)(de),b=(0,J.useCallback)(e=>{y(e),pe(e),window.dispatchEvent(new CustomEvent(`stt-lang-changed`,{detail:{lang:e}}))},[]);(0,J.useEffect)(()=>{m.current=s},[s]);let x=(0,J.useCallback)(async()=>{d(!0);let e=await U.stt.status();e.success&&e.data?(r(e.data),e.data.env&&o(e.data.env)):e.error&&B.error(e.error),d(!1)},[]);(0,J.useEffect)(()=>{x()},[x]);let S=(0,J.useCallback)(async()=>{let e=await U.stt.installStatus();if(e.success&&e.data){let t=m.current.running;c(e.data),e.data.running?p.current=window.setTimeout(()=>void S(),1e3):(x(),t&&e.data.status===`done`&&window.dispatchEvent(new CustomEvent(`stt-backends-changed`)))}},[x]);(0,J.useEffect)(()=>()=>{p.current&&window.clearTimeout(p.current)},[]),(0,J.useEffect)(()=>{h.current&&(h.current.scrollTop=h.current.scrollHeight)},[s.logs]);let C=(0,J.useCallback)(async()=>{let t=await U.stt.install();t.success&&t.data?.started?(c({running:!0,logs:[],status:`running`}),S()):t.data?.alreadyRunning?(B.info(e(`stt.setup.jobInProgress`)),S()):c({running:!1,logs:[],status:`error`,error:t.error||t.data?.error||`install failed`,manualCommand:t.data?.manualCommand})},[S,e]),w=(0,J.useCallback)(async()=>{await U.stt.cancelInstall(),S()},[S]),T=(0,J.useCallback)(t=>{navigator.clipboard.writeText(t).then(()=>B.success(e(`stt.setup.copySuccess`)),()=>B.error(e(`stt.setup.copyFailed`)))},[e]),E=s.running,D=!E&&s.status===`done`?t?.backends?.en:void 0,O=D?!D.installed:!1,j=t=>t?(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium bg-accent-green/15 text-accent-green`,children:[(0,Y.jsx)(L,{size:12}),e(`stt.setup.installed`)]}):(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium bg-dark-hover text-dark-muted`,children:[(0,Y.jsx)(ie,{size:12}),e(`stt.setup.notInstalled`)]}),M=g===`en`?`base.en`:`base`,N=ue(g),ee=()=>{let n=t?.backends?.en??{installed:!1,loaded:!1,model:`base.en`};return(0,Y.jsxs)(`div`,{className:`rounded-lg border border-dark-border bg-dark-bg p-3 flex items-start justify-between gap-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-start gap-3 min-w-0`,children:[(0,Y.jsx)(`div`,{className:`w-9 h-9 shrink-0 rounded-lg flex items-center justify-center text-sm font-semibold bg-accent-blue/15 text-accent-blue`,children:`W`}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,Y.jsx)(`span`,{className:`text-sm font-medium text-dark-text`,children:e(`stt.setup.whisperTitle`)}),j(n.installed),(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium bg-accent-blue/15 text-accent-blue`,children:[(0,Y.jsx)(ae,{size:12}),e(`stt.setup.inUse`)]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 mt-1 text-meta text-dark-muted`,children:[(0,Y.jsx)(`code`,{className:`text-badge bg-dark-hover px-1.5 py-0.5 rounded`,children:`base.en / base`}),(0,Y.jsx)(`span`,{children:e(`stt.setup.whisperDesc`)})]}),!n.installed&&(0,Y.jsxs)(`p`,{className:`mt-1 text-meta text-accent-orange flex items-center gap-1`,children:[(0,Y.jsx)(k,{size:11}),e(`stt.setup.engineNotInstalledHint`)]}),!n.installed&&n.error&&(0,Y.jsxs)(`p`,{className:`mt-1 text-meta text-accent-orange break-all`,title:n.error,children:[(0,Y.jsx)(k,{size:11}),e(`stt.setup.probeError`),n.error]})]})]}),(0,Y.jsx)(`div`,{className:`shrink-0`,onClick:e=>e.stopPropagation(),children:E?(0,Y.jsxs)(`button`,{className:`btn btn-secondary cursor-not-allowed opacity-70`,disabled:!0,children:[(0,Y.jsx)(f,{size:14,className:`animate-spin`}),e(`stt.setup.installing`)]}):n.installed?(0,Y.jsxs)(`button`,{className:`btn btn-ghost`,onClick:()=>void x(),title:e(`stt.setup.recheck`),children:[(0,Y.jsx)(A,{size:14}),e(`stt.setup.recheck`)]}):(0,Y.jsxs)(`button`,{className:`btn btn-accent`,onClick:()=>void C(),children:[(0,Y.jsx)(l,{size:14}),e(`stt.setup.install`)]})})]})},te=a?.pythonAvailable&&a?.pipAvailable,P=s.error||t?.backends?.en?.error||null,ne=!!a&&!te,re=(0,J.useCallback)(()=>{K(e(`stt.setup.askAiPrompt`,{python:a?.pythonAvailable?`ok`:`missing`,pip:a?.pipAvailable?`ok`:`missing`,error:P||`—`})),B.info(e(`stt.setup.askAiHint`))},[a?.pipAvailable,a?.pythonAvailable,P,e]);return(0,Y.jsxs)(`div`,{className:`space-y-3`,children:[(0,Y.jsxs)(`div`,{className:`rounded-lg border border-dark-border bg-dark-bg p-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-dark-text`,children:[(0,Y.jsx)(v,{size:14,className:`text-accent-blue`}),e(`stt.setup.envCard`)]}),(0,Y.jsxs)(`button`,{className:`btn btn-ghost`,onClick:()=>void x(),disabled:u,children:[(0,Y.jsx)(A,{size:13,className:u?`animate-spin`:``}),e(`stt.setup.recheck`)]})]}),(0,Y.jsxs)(`div`,{className:`mt-2.5 space-y-2`,children:[a?a.pythonAvailable?(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-dark-text`,children:[(0,Y.jsx)(L,{size:13,className:`text-accent-green`}),e(`stt.setup.pythonOk`,{version:(a.pythonVersion||``).replace(/^Python\s*/i,``)||a.pythonPath||`Python`}),a.pythonPath?(0,Y.jsx)(`code`,{className:`text-badge text-dark-muted`,children:a.pythonPath}):null]}):(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-2 rounded-md border border-accent-red/30 bg-accent-red/5 px-2.5 py-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-accent-red`,children:[(0,Y.jsx)(k,{size:13}),e(`stt.setup.pythonMissing`)]}),(0,Y.jsx)(`a`,{className:`btn btn-secondary !py-1 !px-2 text-xs`,href:`https://www.python.org/downloads/`,target:`_blank`,rel:`noreferrer`,children:e(`stt.setup.pythonGuide`)})]}):(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-dark-muted`,children:[(0,Y.jsx)(f,{size:13,className:`animate-spin`}),e(`stt.setup.envChecking`)]}),a&&!a.pipAvailable&&(0,Y.jsxs)(`div`,{className:`rounded-md border border-accent-red/30 bg-accent-red/5 px-2.5 py-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-accent-red`,children:[(0,Y.jsx)(k,{size:13}),e(`stt.setup.pipMissing`)]}),(0,Y.jsxs)(`div`,{className:`mt-1.5`,children:[(0,Y.jsx)(`div`,{className:`text-badge text-dark-muted mb-1`,children:e(`stt.setup.pipGuide`)}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsxs)(`code`,{className:`flex-1 rounded bg-dark-bg border border-dark-border px-2 py-1 font-mono text-badge text-dark-text break-all select-all`,children:[a.pythonPath||`python`,` -m ensurepip --upgrade`]}),(0,Y.jsx)(`button`,{className:`btn btn-ghost !py-1 !px-2 text-xs`,onClick:()=>T(`${a.pythonPath||`python`} -m ensurepip --upgrade`),children:(0,Y.jsx)(F,{size:12})})]})]})]})]})]}),(ne||!!P)&&(0,Y.jsx)(`div`,{className:`px-1`,children:(0,Y.jsx)(H,{variant:`secondary`,size:`sm`,leftIcon:(0,Y.jsx)(n,{size:13,"aria-hidden":`true`}),onClick:re,children:e(`stt.setup.askAi`)})}),(0,Y.jsxs)(`div`,{className:`rounded-lg border border-dark-border bg-dark-surface p-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-dark-text`,children:[(0,Y.jsx)(ae,{size:14,className:`text-accent-blue`}),e(`stt.setup.defaultLang`)]}),(0,Y.jsx)(`p`,{className:`mt-1 text-meta text-dark-muted`,children:e(`stt.setup.defaultLangHint`)}),(0,Y.jsxs)(`div`,{className:`mt-2 flex items-center gap-2`,children:[(0,Y.jsx)(`select`,{value:g,onChange:e=>b(e.target.value),className:`bg-dark-bg border border-dark-border rounded-lg px-2 py-1.5 text-xs text-dark-text focus:border-accent-blue/60 outline-none transition-all`,"aria-label":e(`stt.setup.defaultLang`),children:me.map(e=>(0,Y.jsx)(`option`,{value:e.code,children:e.label},e.code))}),(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-meta text-dark-muted`,children:[(0,Y.jsx)(_,{size:11}),e(`stt.setup.modelForLang`,{lang:N.label,model:M})]})]})]}),ee(),(0,Y.jsx)(Be,{}),E&&(0,Y.jsxs)(`div`,{className:`rounded-lg border border-dark-border bg-dark-bg p-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-2 mb-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-accent-blue font-medium`,children:[(0,Y.jsx)(f,{size:13,className:`animate-spin`}),e(`stt.setup.installing`),(0,Y.jsx)(`span`,{className:`text-dark-muted font-normal`,children:`(faster-whisper)`})]}),(0,Y.jsx)(`button`,{className:`btn btn-danger !py-1 !px-2 text-xs`,onClick:()=>void w(),children:e(`stt.setup.cancel`)})]}),(0,Y.jsx)(`div`,{ref:h,className:`rounded-md border border-dark-border bg-dark-bg p-2.5 font-mono text-meta text-dark-muted overflow-auto max-h-48 whitespace-pre-wrap custom-scrollbar`,children:s.logs.length===0?(0,Y.jsx)(`span`,{className:`text-dark-muted/70`,children:e(`stt.setup.logWaiting`)}):s.logs.join(`
4
+ `)})]}),!E&&s.status&&s.status!==`done`&&(0,Y.jsxs)(`div`,{className:`rounded-lg border border-accent-red/30 bg-accent-red/5 p-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-accent-red font-medium`,children:[(0,Y.jsx)(k,{size:13}),s.status===`timeout`?e(`stt.setup.installTimeout`):s.status===`cancelled`?e(`stt.setup.installCancelled`):e(`stt.setup.installFailed`)]}),s.error?(0,Y.jsx)(`p`,{className:`mt-1 text-xs text-accent-red/90 break-all`,children:s.error}):null,s.manualCommand&&(0,Y.jsxs)(`div`,{className:`mt-2`,children:[(0,Y.jsxs)(`div`,{className:`text-badge text-dark-muted mb-1 flex items-center gap-1`,children:[(0,Y.jsx)(i,{size:11}),e(`stt.setup.manualCommand`)]}),(0,Y.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,Y.jsx)(`code`,{className:`flex-1 rounded bg-dark-bg border border-dark-border px-2 py-1.5 font-mono text-badge text-dark-text break-all whitespace-pre-wrap select-all`,children:s.manualCommand}),(0,Y.jsxs)(`button`,{className:`btn btn-ghost !py-1 !px-2 text-xs shrink-0`,onClick:()=>T(s.manualCommand),children:[(0,Y.jsx)(F,{size:12}),e(`stt.setup.copyCommand`)]})]})]})]}),!E&&s.status===`done`&&!O&&(0,Y.jsxs)(`div`,{className:`rounded-lg border border-accent-green/30 bg-accent-green/5 px-3 py-2.5 flex items-center gap-2 text-xs text-accent-green`,children:[(0,Y.jsx)(L,{size:14}),e(`stt.setup.installDone`)]}),!E&&s.status===`done`&&O&&(0,Y.jsxs)(`div`,{className:`rounded-lg border border-accent-orange/30 bg-accent-orange/5 p-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-accent-orange font-medium`,children:[(0,Y.jsx)(k,{size:13}),e(`stt.setup.installDoneButMissing`)]}),D?.error&&(0,Y.jsx)(`p`,{className:`mt-1 text-xs text-accent-orange/90 break-all`,children:D.error}),(0,Y.jsx)(`p`,{className:`mt-1 text-meta text-dark-muted`,children:e(`stt.setup.installDoneButMissingHint`)})]}),!E&&te&&t&&!t.backends.en?.installed&&(0,Y.jsx)(`p`,{className:`text-meta text-dark-muted px-1`,children:e(`stt.setup.chooseHint`)})]})}function He(){let{t:e}=R(),[t,n]=(0,J.useState)(null),[r,i]=(0,J.useState)({running:!1,logs:[]}),[a,o]=(0,J.useState)(!1),[s,c]=(0,J.useState)(Oe),u=(0,J.useRef)(null),d=(0,J.useRef)(r),p=(0,J.useRef)(null);(0,J.useEffect)(()=>{d.current=r},[r]),(0,J.useEffect)(()=>{c(ke())},[]),(0,J.useEffect)(()=>()=>{u.current&&window.clearTimeout(u.current)},[]),(0,J.useEffect)(()=>{p.current&&(p.current.scrollTop=p.current.scrollHeight)},[r.logs]);let m=(0,J.useCallback)(async()=>{o(!0);let e=await U.tts.status();e.success&&e.data?n(e.data):e.error&&B.error(e.error),o(!1)},[]);(0,J.useEffect)(()=>{m()},[m]);let h=(0,J.useCallback)(async()=>{let e=await U.tts.installStatus();if(!e.success||!e.data)return;let t=d.current.running;i(e.data),e.data.running?u.current=window.setTimeout(()=>void h(),1e3):t&&m()},[m]),g=(0,J.useCallback)(async()=>{let t=await U.tts.install();t.success&&t.data?.started?(i({running:!0,logs:[],status:`running`}),h()):t.data?.alreadyRunning?(B.info(e(`tts.setup.jobInProgress`)),h()):i({running:!1,logs:[],status:`error`,error:t.error||t.data?.error||`install failed`,manualCommand:t.data?.manualCommand})},[h,e]),_=(0,J.useCallback)(async()=>{await U.tts.cancelInstall(),h()},[h]),y=(0,J.useCallback)(t=>{navigator.clipboard.writeText(t).then(()=>B.success(e(`tts.setup.copySuccess`)),()=>B.error(e(`tts.setup.copyFailed`)))},[e]),b=(0,J.useCallback)(e=>{c(Me(e))},[]),x=t?.engine,S=t?.service===`ok`,C=x?.voiceNames??[],w=t?.env,T=w?!w.pythonAvailable:!1,D=t?.missingWeights??x?.missingWeights??[];return(0,Y.jsxs)(`div`,{className:`space-y-3`,children:[(0,Y.jsxs)(`div`,{className:`rounded-lg border border-dark-border p-3 space-y-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,Y.jsx)(`span`,{className:`text-sm font-medium`,children:e(`tts.setup.engine`)}),((e,t)=>(0,Y.jsxs)(`span`,{className:V(`inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium`,e?`bg-accent-green/15 text-accent-green`:`bg-dark-hover text-dark-muted`),children:[e?(0,Y.jsx)(L,{size:12}):(0,Y.jsx)(ie,{size:12}),t]}))(S,e(S?`tts.setup.ready`:`tts.setup.notReady`))]}),(0,Y.jsx)(`button`,{type:`button`,className:`p-1.5 rounded-md hover:bg-dark-hover text-dark-muted`,onClick:()=>void m(),disabled:a,title:e(`tts.setup.refresh`),children:(0,Y.jsx)(A,{size:14,className:V(a&&`animate-spin`)})})]}),t?.error&&(0,Y.jsxs)(`div`,{className:`flex items-start gap-2 text-xs text-accent-red`,children:[(0,Y.jsx)(k,{size:12,className:`mt-0.5 shrink-0`}),(0,Y.jsx)(`span`,{className:`break-all`,children:t.error})]}),D.length>0&&(0,Y.jsx)(`div`,{className:`text-xs text-dark-muted`,children:e(`tts.setup.missingWeights`,{files:D.join(`、`)})}),T&&(0,Y.jsx)(`div`,{className:`text-xs text-accent-yellow`,children:e(`tts.setup.envMissing`)}),x?.model&&(0,Y.jsx)(`div`,{className:`text-xs text-dark-muted`,children:e(`tts.setup.model`,{model:x.model})}),r.running?(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(f,{size:14,className:`animate-spin text-accent-blue`}),(0,Y.jsxs)(`span`,{className:`text-xs text-dark-muted`,children:[e(`tts.setup.installing`),r.phase?` · ${r.phase}`:``]}),(0,Y.jsx)(`button`,{type:`button`,className:`ms-auto text-xs text-accent-red hover:underline`,onClick:()=>void _(),children:e(`tts.setup.cancel`)})]}):(0,Y.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-2 px-3 py-1.5 rounded-md text-xs bg-accent-blue/15 text-accent-blue hover:bg-accent-blue/25 disabled:opacity-50`,onClick:()=>void g(),disabled:S,children:[(0,Y.jsx)(l,{size:14}),e(S?`tts.setup.installed`:`tts.setup.install`)]}),r.status===`error`&&r.error&&!r.running&&(0,Y.jsxs)(`div`,{className:`flex items-start gap-2 text-xs text-accent-red`,children:[(0,Y.jsx)(k,{size:12,className:`mt-0.5 shrink-0`}),(0,Y.jsx)(`span`,{className:`break-all`,children:r.error})]}),r.manualCommand&&!r.running&&(0,Y.jsxs)(`div`,{className:`rounded-md bg-dark-bg border border-dark-border p-2 space-y-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-xs text-dark-muted`,children:[(0,Y.jsx)(v,{size:12}),e(`tts.setup.manualCommand`)]}),(0,Y.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1 text-xs text-accent-blue hover:underline`,onClick:()=>y(r.manualCommand),children:[(0,Y.jsx)(F,{size:12}),e(`tts.setup.copy`)]})]}),(0,Y.jsx)(`code`,{className:`block text-xs break-all text-dark-text`,children:r.manualCommand})]}),r.logs.length>0&&(0,Y.jsx)(`div`,{ref:p,className:`max-h-40 overflow-auto rounded-md bg-dark-bg border border-dark-border p-2`,children:r.logs.map((e,t)=>(0,Y.jsx)(`div`,{className:`text-xs font-mono text-dark-muted whitespace-pre-wrap break-all`,children:e},t))})]}),(0,Y.jsxs)(`div`,{className:`rounded-lg border border-dark-border p-3 space-y-3`,children:[(0,Y.jsxs)(`label`,{className:`flex items-center justify-between gap-3 cursor-pointer`,children:[(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-2 text-sm`,children:[(0,Y.jsx)(ee,{size:14,className:`text-accent-blue`}),e(`tts.setup.enabled`)]}),(0,Y.jsx)(`input`,{type:`checkbox`,className:`accent-accent-blue`,checked:s.enabled,onChange:e=>b({enabled:e.target.checked})})]}),(0,Y.jsxs)(`label`,{className:V(`flex items-center justify-between gap-3 cursor-pointer`,!s.enabled&&`opacity-50`),children:[(0,Y.jsxs)(`span`,{className:`text-sm`,children:[e(`tts.setup.autoPlay`),(0,Y.jsx)(`span`,{className:`block text-xs text-dark-muted`,children:e(`tts.setup.autoPlayHint`)})]}),(0,Y.jsx)(`input`,{type:`checkbox`,className:`accent-accent-blue`,checked:s.autoPlay,disabled:!s.enabled,onChange:e=>b({autoPlay:e.target.checked})})]}),(0,Y.jsxs)(`div`,{className:V(`flex items-center justify-between gap-3`,!s.enabled&&`opacity-50`),children:[(0,Y.jsx)(`span`,{className:`text-sm`,children:e(`tts.setup.voice`)}),(0,Y.jsxs)(`select`,{className:`bg-dark-bg border border-dark-border rounded-md px-2 py-1 text-xs max-w-[60%]`,value:s.voice??``,disabled:!s.enabled||C.length===0,onChange:e=>b({voice:e.target.value||null}),children:[(0,Y.jsx)(`option`,{value:``,children:e(`tts.setup.voiceAuto`)}),C.map(e=>(0,Y.jsx)(`option`,{value:e,children:e},e))]})]}),(0,Y.jsxs)(`label`,{className:V(`flex items-center justify-between gap-3`,!s.enabled&&`opacity-50`),children:[(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-2 text-sm`,children:[(0,Y.jsx)(E,{size:14,className:`text-accent-blue`}),e(`tts.setup.speed`)]}),(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[(0,Y.jsx)(`input`,{type:`range`,min:Ae,max:2,step:.1,value:s.speed,disabled:!s.enabled,onChange:e=>b({speed:Number(e.target.value)})}),(0,Y.jsx)(`span`,{className:`text-xs text-dark-muted w-8 text-end`,children:s.speed.toFixed(1)})]})]})]})]})}function X({label:e,value:t,onChange:n,min:r,max:i,disabled:a,envOverridden:o,hint:s}){return(0,Y.jsxs)(`div`,{className:`mb-3`,children:[(0,Y.jsxs)(`label`,{className:`flex items-center gap-2 text-sm text-dark-muted mb-1`,children:[e,o&&(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-xs text-accent-yellow`,title:s,children:[(0,Y.jsx)(k,{size:12}),` env`]})]}),(0,Y.jsx)(`input`,{type:`number`,value:t,onChange:e=>n(e.target.value),min:r,max:i,disabled:a||o,className:`w-40 bg-dark-bg border border-dark-border rounded-lg px-3 py-1.5 text-sm text-dark-text font-mono focus:border-accent-blue/60 focus:ring-2 focus:ring-accent-blue/15 outline-none transition-all disabled:opacity-50`})]})}function Ue(){let{t:e}=R(),[t,n]=(0,J.useState)(!0),[r,i]=(0,J.useState)(!1),[a,o]=(0,J.useState)({}),[s,c]=(0,J.useState)(!1),[l,u]=(0,J.useState)(``),[d,p]=(0,J.useState)(null),[m,h]=(0,J.useState)(!1),[g,_]=(0,J.useState)(``),[v,y]=(0,J.useState)(``),[b,x]=(0,J.useState)(``),[S,C]=(0,J.useState)(``),[w,T]=(0,J.useState)(``),E=(0,J.useCallback)(async()=>{n(!0);try{let e=await U.config.context.get();if(e.success&&e.data){let t=e.data.values??{};o(e.data.envOverridden??{}),c(e.data.effective.offload),u(e.data.defaultArtifactRoot??``),p(e.data.stats??null),h(typeof t.artifactOffload==`boolean`?t.artifactOffload:e.data.effective.offload),_(typeof t.artifactDir==`string`?t.artifactDir:``),y(t.artifactMaxTotalMb==null?``:String(t.artifactMaxTotalMb)),x(t.artifactTtlDays==null?``:String(t.artifactTtlDays)),C(t.outboundToolBytes==null?``:String(t.outboundToolBytes)),T(t.turnBudgetTokens==null?``:String(t.turnBudgetTokens))}}catch{}n(!1)},[]);return(0,J.useEffect)(()=>{E()},[E]),t?(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-dark-muted py-2`,children:[(0,Y.jsx)(f,{size:14,className:`animate-spin`}),e(`common.loading`)]}):(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`p`,{className:`text-sm text-dark-muted mb-3`,children:e(`settings.contextOffload.desc`)}),(0,Y.jsxs)(`label`,{className:`flex items-center justify-between mb-4 cursor-pointer`,children:[(0,Y.jsxs)(`span`,{className:`text-sm`,children:[e(`settings.contextOffload.enableLabel`),(0,Y.jsxs)(`span`,{className:`ms-2 text-xs ${s?`text-accent-green`:`text-dark-muted`}`,children:[`(`,e(`settings.contextOffload.currently`),`: `,s?`ON`:`OFF`,`)`]})]}),(0,Y.jsx)(`button`,{role:`switch`,"aria-checked":m,onClick:()=>h(!m),className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors ${m?`bg-accent-green`:`bg-dark-border`}`,children:(0,Y.jsx)(`span`,{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${m?`translate-x-6`:`translate-x-1`}`})})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-x-6`,children:[(0,Y.jsx)(X,{label:e(`settings.contextOffload.maxTotalMb`),value:v,onChange:y,min:1,envOverridden:a.artifactMaxTotalMb}),(0,Y.jsx)(X,{label:e(`settings.contextOffload.ttlDays`),value:b,onChange:x,min:1,max:365,envOverridden:a.artifactTtlDays}),(0,Y.jsx)(X,{label:`${e(`settings.contextOffload.outboundBytes`)} (${e(`settings.contextOffload.optional`)})`,value:S,onChange:C,min:1024,envOverridden:a.outboundToolBytes}),(0,Y.jsx)(X,{label:e(`settings.contextOffload.turnBudget`),value:w,onChange:T,min:1e3,envOverridden:a.turnBudgetTokens})]}),(0,Y.jsxs)(`div`,{className:`mb-3`,children:[(0,Y.jsxs)(`label`,{className:`flex items-center gap-2 text-sm text-dark-muted mb-1`,children:[e(`settings.contextOffload.dir`),` (`,e(`settings.contextOffload.optional`),`)`,a.artifactDir&&(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-xs text-accent-yellow`,children:[(0,Y.jsx)(k,{size:12}),` env`]})]}),(0,Y.jsx)(`input`,{type:`text`,value:g,onChange:e=>_(e.target.value),disabled:a.artifactDir,placeholder:l,className:`w-full bg-dark-bg border border-dark-border rounded-lg px-3 py-1.5 text-sm text-dark-text font-mono focus:border-accent-blue/60 focus:ring-2 focus:ring-accent-blue/15 outline-none transition-all disabled:opacity-50`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Y.jsx)(H,{variant:`accent`,size:`sm`,onClick:async()=>{i(!0);try{let t={artifactOffload:m};a.artifactDir||(t.artifactDir=g.trim()||null),!a.artifactMaxTotalMb&&v.trim()&&(t.artifactMaxTotalMb=parseInt(v,10)),!a.artifactTtlDays&&b.trim()&&(t.artifactTtlDays=parseInt(b,10)),!a.outboundToolBytes&&S.trim()&&(t.outboundToolBytes=parseInt(S,10)),!a.turnBudgetTokens&&w.trim()&&(t.turnBudgetTokens=parseInt(w,10));for(let n of[`artifactMaxTotalMb`,`artifactTtlDays`,`outboundToolBytes`,`turnBudgetTokens`])if(n in t&&(isNaN(t[n])||t[n]<=0)){B.error(e(`settings.contextOffload.invalidNumber`)),i(!1);return}let n=await U.config.context.save(t);n.success?(B.success(e(`settings.contextOffload.saved`)),await E()):B.error(n.error||e(`settings.contextOffload.saveFailed`))}catch(e){B.error(e instanceof Error?e.message:String(e))}i(!1)},loading:r,disabled:t,children:e(`common.save`)}),(0,Y.jsx)(`span`,{className:`text-xs text-dark-muted`,children:e(`settings.contextOffload.envHint`)})]}),d&&d.count>0&&(0,Y.jsx)(`p`,{className:`text-xs text-dark-muted mt-2`,children:e(`settings.contextOffload.stats`,{count:d.count,size:(d.totalBytes/1024/1024).toFixed(1)})})]})}var We=[32e3,64e3,128e3,256e3,512e3,1e6,2e6],Ge=1e3;function Ke(){let{t:e}=R(),t=z(e=>e.maxContextTokens),n=z(e=>e.setMaxContextTokens),r=z(e=>e.bumpContextWindowRefresh),[i,a]=(0,J.useState)(String(t)),[o,s]=(0,J.useState)(null),[c,l]=(0,J.useState)(!0),[u,d]=(0,J.useState)(!1),p=(0,J.useCallback)(async()=>{l(!0);try{let e=await U.config.provider.get();if(e.success&&e.data){s(e.data.defaultProvider??null);let t=e.data.active?.contextWindow;typeof t==`number`&&t>=Ge&&(n(t),a(String(t)))}}catch{}l(!1)},[n]);(0,J.useEffect)(()=>{p()},[p]);let m=(0,J.useCallback)(async t=>{let n=Number.parseInt(t,10);if(!Number.isFinite(n)||n<Ge)B.error(e(`settings.contextWindow.invalid`));else if(!o)B.error(e(`settings.contextWindow.noProvider`));else{d(!0);try{let t=await U.config.provider.save({provider:o,contextWindow:n});t.success?(B.success(e(`settings.contextWindow.saved`)),r(),await p()):B.error(t.error||e(`settings.contextWindow.saveFailed`))}catch(e){B.error(e instanceof Error?e.message:String(e))}d(!1)}},[o,p,r,e]),h=e=>e>=1e6?`${(e/1e6).toFixed(0)}M`:`${(e/1e3).toFixed(0)}K`;return c?(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-dark-muted py-2`,children:[(0,Y.jsx)(f,{size:14,className:`animate-spin`}),e(`common.loading`)]}):(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`p`,{className:`text-sm text-dark-muted mb-3`,children:e(`settings.contextWindow.desc`)}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 mb-3`,children:[(0,Y.jsx)(`input`,{type:`number`,"aria-label":e(`settings.contextWindow.label`),"data-testid":`context-window-input`,value:i,onChange:e=>a(e.target.value),min:Ge,max:1e7,step:1e3,className:`w-32 bg-dark-bg border border-dark-border rounded-lg px-3 py-1.5 text-sm text-dark-text font-mono focus:border-accent-blue/60 focus:ring-2 focus:ring-accent-blue/15 outline-none transition-all`}),(0,Y.jsx)(`span`,{className:`text-sm text-dark-muted`,children:e(`settings.contextWindow.tokens`)}),(0,Y.jsx)(H,{variant:`accent`,size:`sm`,onClick:()=>void m(i),loading:u,"data-testid":`context-window-apply`,children:e(`settings.contextWindow.apply`)})]}),(0,Y.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:We.map(e=>(0,Y.jsx)(`button`,{type:`button`,"data-testid":`context-window-preset-${e}`,onClick:()=>{a(String(e)),m(String(e))},className:`px-3 py-1 rounded-lg text-xs border border-dark-border text-dark-muted hover:bg-dark-hover hover:text-dark-text transition-colors`,children:h(e)},e))}),(0,Y.jsxs)(`p`,{className:`text-xs text-dark-muted mt-2`,children:[e(`settings.contextWindow.current`),`:`,` `,(0,Y.jsx)(`span`,{className:`font-mono text-dark-text tabular-nums`,"data-testid":`context-window-current`,children:Number.parseInt(i,10).toLocaleString()}),` `,e(`settings.contextWindow.tokens`),o?` · ${e(`settings.contextWindow.provider`,{provider:o})}`:``]}),(0,Y.jsx)(`p`,{className:`text-xs text-dark-muted mt-1`,children:e(`settings.contextWindow.catalogHint`)})]})}var qe=`bg-dark-bg border border-dark-border rounded-lg px-3 py-1.5 text-sm text-dark-text focus:border-accent-blue/60 focus:ring-2 focus:ring-accent-blue/15 outline-none transition-all disabled:opacity-50`;function Z({checked:e,onChange:t,disabled:n}){return(0,Y.jsx)(`button`,{role:`switch`,"aria-checked":e,disabled:n,onClick:()=>t(!e),className:`relative inline-flex h-6 w-11 shrink-0 items-center rounded-full transition-colors disabled:opacity-40 ${e?`bg-accent-green`:`bg-dark-border`}`,children:(0,Y.jsx)(`span`,{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${e?`translate-x-6`:`translate-x-1`}`})})}function Je(){let{t:e}=R(),[t,n]=(0,J.useState)(!0),[r,i]=(0,J.useState)(!1),[a,o]=(0,J.useState)(null),[s,c]=(0,J.useState)(`none`),[l,u]=(0,J.useState)(``),[d,p]=(0,J.useState)(!0),[m,h]=(0,J.useState)(!1),[g,_]=(0,J.useState)(!1),v=(0,J.useCallback)(async()=>{n(!0);try{let e=await U.config.sandbox.get();if(e.success&&e.data){let t=e.data;o(t);let n=t.values??{};c(n.backend??`none`),u(n.policy??``),p(n.networkAccess!==!1),h(n.excludeTmpdirEnvVar===!0),_(n.excludeSlashTmp===!0)}}catch{}n(!1)},[]);(0,J.useEffect)(()=>{v()},[v]);let y=l===`danger-full-access`,b=s!==`none`&&l!==``&&!y,x=b&&l===`workspace-write`,S=e=>{e?(c(`auto`),u(l===`read-only`||l===`workspace-write`?l:`workspace-write`)):(c(`none`),u(``))},C=e=>{u(e),e===`danger-full-access`&&c(`none`)},w=async()=>{if(s!==`none`&&l===``)B.error(e(`settings.sandbox.needPolicy`));else{i(!0);try{let t=await U.config.sandbox.save({backend:s,policy:s===`none`?null:l,networkAccess:d,excludeTmpdirEnvVar:m,excludeSlashTmp:g});t.success?(B.success(e(`settings.sandbox.saved`)),await v()):B.error(t.error||e(`settings.sandbox.saveFailed`))}catch(e){B.error(e instanceof Error?e.message:String(e))}i(!1)}};if(t)return(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-dark-muted py-2`,children:[(0,Y.jsx)(f,{size:14,className:`animate-spin`}),e(`common.loading`)]});let T=a?.status,E=T?.backendId===`docker`,D=T!==void 0&&T.status===`enabled`&&T.backendId===null,O=T!==void 0&&T.status===`enabled`&&T.backendId!==null||E,A=O?L:T?.status===`invalid`?ie:k,j=O?`text-accent-green`:T?.status===`invalid`?`text-accent-red`:D?`text-accent-yellow`:`text-dark-muted`,M=E?e(`settings.sandbox.statusDocker`):D?e(`settings.sandbox.statusNoBackend`):T?.status===`enabled`?e(`settings.sandbox.statusOn`,{backend:T.backendId??`—`}):T?.status===`invalid`?e(`settings.sandbox.statusInvalid`):e(`settings.sandbox.statusOff`);return(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`p`,{className:`text-sm text-dark-muted mb-3`,children:e(`settings.sandbox.desc`)}),(0,Y.jsxs)(`div`,{className:`mb-4 rounded-lg border border-dark-border bg-dark-bg/40 px-3 py-2.5`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-sm ${j}`,children:[(0,Y.jsx)(A,{size:14}),(0,Y.jsx)(`span`,{children:M}),(0,Y.jsxs)(`span`,{className:`text-xs text-dark-muted`,children:[`(`,e(`settings.sandbox.restartNotice`),`)`]})]}),T?.policyDescription&&(0,Y.jsx)(`p`,{className:`mt-1 text-xs text-dark-muted`,children:T.policyDescription}),T?.reason&&(0,Y.jsx)(`p`,{className:`mt-1 text-xs text-dark-muted`,children:T.reason}),T?.error&&(0,Y.jsx)(`p`,{className:`mt-1 text-xs text-accent-red whitespace-pre-wrap`,children:T.error}),T&&T.capabilityGaps.length>0&&(0,Y.jsx)(`p`,{className:`mt-1 text-xs text-accent-yellow`,children:e(`settings.sandbox.gaps`,{fields:T.capabilityGaps.join(`, `)})})]}),a?.envOverride.active&&(0,Y.jsxs)(`p`,{className:`mb-3 flex items-start gap-1.5 text-xs text-accent-yellow`,children:[(0,Y.jsx)(k,{size:12,className:`mt-0.5 shrink-0`}),a.envOverride.note||e(`settings.sandbox.envOverride`,{value:a.envOverride.value})]}),a?.status.platform===`win32`&&(0,Y.jsxs)(`p`,{className:`mb-3 flex items-start gap-1.5 text-xs text-accent-yellow`,children:[(0,Y.jsx)(k,{size:12,className:`mt-0.5 shrink-0`}),e(`settings.sandbox.win32Warn`)]}),a?.status.legacySource&&(0,Y.jsx)(`p`,{className:`mb-3 text-xs text-accent-blue`,children:e(`settings.sandbox.legacySource`)}),a?.status.bothPresent&&(0,Y.jsxs)(`p`,{className:`mb-3 flex items-start gap-1.5 text-xs text-accent-yellow`,children:[(0,Y.jsx)(k,{size:12,className:`mt-0.5 shrink-0`}),e(`settings.sandbox.bothPresent`)]}),(0,Y.jsxs)(`label`,{className:`flex items-center justify-between mb-4 cursor-pointer`,children:[(0,Y.jsxs)(`span`,{className:`text-sm`,children:[e(`settings.sandbox.enableLabel`),(0,Y.jsxs)(`span`,{className:`ms-2 text-xs ${b?`text-accent-green`:`text-dark-muted`}`,children:[`(`,e(`settings.sandbox.currently`),`: `,b?`ON`:`OFF`,`)`]})]}),(0,Y.jsx)(Z,{checked:b,onChange:S})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-x-6`,children:[(0,Y.jsxs)(`div`,{className:`mb-3`,children:[(0,Y.jsx)(`label`,{className:`block text-sm text-dark-muted mb-1`,children:e(`settings.sandbox.backend`)}),(0,Y.jsxs)(`select`,{value:s,onChange:e=>c(e.target.value),className:`w-full ${qe}`,children:[(0,Y.jsx)(`option`,{value:`auto`,children:e(`settings.sandbox.backendAuto`)}),(0,Y.jsx)(`option`,{value:`bubblewrap`,children:e(`settings.sandbox.backendBubblewrap`)}),(0,Y.jsx)(`option`,{value:`macos-sandbox`,children:e(`settings.sandbox.backendMacos`)}),(0,Y.jsx)(`option`,{value:`windows-mxc`,children:e(`settings.sandbox.backendWindows`)}),(0,Y.jsx)(`option`,{value:`none`,children:e(`settings.sandbox.backendNone`)})]})]}),(0,Y.jsxs)(`div`,{className:`mb-3`,children:[(0,Y.jsx)(`label`,{className:`block text-sm text-dark-muted mb-1`,children:e(`settings.sandbox.policy`)}),(0,Y.jsxs)(`select`,{value:l,onChange:e=>C(e.target.value),disabled:s===`none`,className:`w-full ${qe}`,children:[(0,Y.jsx)(`option`,{value:``,children:e(`settings.sandbox.policyEmpty`)}),(0,Y.jsx)(`option`,{value:`read-only`,children:e(`settings.sandbox.policyReadOnly`)}),(0,Y.jsx)(`option`,{value:`workspace-write`,children:e(`settings.sandbox.policyWorkspaceWrite`)}),(0,Y.jsx)(`option`,{value:`danger-full-access`,children:e(`settings.sandbox.policyDanger`)})]}),y&&(0,Y.jsx)(`p`,{className:`mt-1 text-xs text-accent-yellow`,children:e(`settings.sandbox.policyDangerHint`)})]})]}),(0,Y.jsxs)(`label`,{className:`flex items-center justify-between mb-4 cursor-pointer`,children:[(0,Y.jsxs)(`span`,{className:`text-sm`,children:[e(`settings.sandbox.networkAccess`),(0,Y.jsx)(`span`,{className:`block text-xs text-dark-muted mt-0.5`,children:e(`settings.sandbox.networkAccessHint`)})]}),(0,Y.jsx)(Z,{checked:d,onChange:p,disabled:!b})]}),x&&(0,Y.jsxs)(`div`,{className:`mb-4 rounded-lg border border-dark-border px-3 py-2.5`,children:[(0,Y.jsx)(`p`,{className:`text-xs text-dark-muted mb-2`,children:e(`settings.sandbox.advancedHint`)}),(0,Y.jsxs)(`label`,{className:`flex items-center justify-between mb-2 cursor-pointer`,children:[(0,Y.jsx)(`span`,{className:`text-sm`,children:e(`settings.sandbox.excludeTmpdir`)}),(0,Y.jsx)(Z,{checked:m,onChange:h})]}),(0,Y.jsxs)(`label`,{className:`flex items-center justify-between cursor-pointer`,children:[(0,Y.jsx)(`span`,{className:`text-sm`,children:e(`settings.sandbox.excludeSlashTmp`)}),(0,Y.jsx)(Z,{checked:g,onChange:_})]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Y.jsx)(H,{variant:`accent`,size:`sm`,onClick:w,loading:r,children:e(`common.save`)}),(0,Y.jsx)(`span`,{className:`text-xs text-dark-muted`,children:e(`settings.sandbox.restartHint`)})]})]})}function Q({icon:e,iconColor:t,title:n,children:r}){return(0,Y.jsxs)(`div`,{className:`rounded-xl border border-dark-border bg-dark-bg/40 p-4 mb-4`,children:[(0,Y.jsxs)(`h3`,{className:`font-medium mb-3 flex items-center gap-2`,children:[(0,Y.jsx)(e,{size:16,className:t}),n]}),r]})}var Ye=6e4,Xe=0,$;async function Ze(e={}){if(!e.force&&$&&Date.now()-Xe<Ye)return{draft:$};try{let e=await U.profile.draft();return e.success&&e.data?($=e.data,Xe=Date.now(),{draft:$}):{error:e.error||`profile draft failed`}}catch(e){return{error:e instanceof Error?e.message:String(e)}}}function Qe(e){return e?e.candidates.filter(e=>e.verdict===`adopt`).length:0}function $e(){$=void 0,Xe=0}var et={duplicate:`duplicate`,"already-covered":`duplicate`,"near-duplicate":`duplicate`,ignored:`ignored`,environment:`environment`,"over-budget":`limit`,empty:`invalid`,multiline:`invalid`,too_long:`invalid`,structural:`invalid`};function tt(e){return e.verdict===`adopt`?`adopt`:e.reason?et[e.reason]:`adopt`}function nt({onApply:e,applyBusy:t,disabled:r}){let{t:i}=R(),[a,o]=(0,J.useState)(void 0),[s,c]=(0,J.useState)(!1),[l,u]=(0,J.useState)(null),d=async(e={})=>{if(s)return;c(!0);let{draft:t,error:n}=await Ze({force:e.force});t?o(t):e.silent||B.error(n||i(`settings.profile.draft.loadFailed`)),c(!1)};(0,J.useEffect)(()=>{d({silent:!0})},[]);let f=async(e,t)=>{let n=e.itemId;if(!l){u(n);try{let r=await U.profile.ignore({itemId:n,text:t,...e.subject?{subject:e.subject}:{},...e.layer?{layer:e.layer}:{}});r.success?(B.success(i(`settings.profile.draft.ignoreOk`)),await d({force:!0})):B.error(r.error||i(`settings.profile.draft.actionFailed`))}catch(e){B.error(`${i(`settings.profile.draft.actionFailed`)}: ${e instanceof Error?e.message:String(e)}`)}u(null)}},p=async e=>{let t=e.itemId;if(!l){u(t);try{let n=await U.profile.unignore({itemId:t,...e.fingerprint?{fingerprint:e.fingerprint}:{}});n.success?(B.success(i(`settings.profile.draft.restoreOk`)),await d({force:!0})):B.error(n.error||i(`settings.profile.draft.actionFailed`))}catch(e){B.error(`${i(`settings.profile.draft.actionFailed`)}: ${e instanceof Error?e.message:String(e)}`)}u(null)}},m=(0,J.useMemo)(()=>a?[...a.candidates].filter(e=>e.reason!==`ignored`).sort((e,t)=>e.verdict===t.verdict?0:e.verdict===`adopt`?-1:1).slice(0,8):[],[a]),h=Qe(a);return(0,Y.jsxs)(`div`,{className:`mt-4 border-t border-dark-border pt-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsxs)(`div`,{className:`text-xs font-medium text-dark-text flex items-center gap-1.5`,children:[(0,Y.jsx)(n,{size:13,className:`text-accent-purple shrink-0`}),i(`settings.profile.draft.title`)]}),(0,Y.jsx)(`div`,{className:`text-meta text-dark-muted mt-0.5 leading-relaxed`,children:i(`settings.profile.draft.hint`)})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>void d({force:!0}),disabled:s||r,className:`shrink-0 px-2.5 py-1 rounded-lg text-xs bg-dark-hover border border-dark-border text-dark-muted hover:text-dark-text hover:bg-accent-blue/10 hover:border-accent-blue/40 transition-colors disabled:opacity-50`,children:i(a?`settings.profile.draft.refresh`:`settings.profile.draft.action`)})]}),a&&(0,Y.jsxs)(`div`,{className:`mt-3`,children:[h>0&&(0,Y.jsxs)(`div`,{role:`status`,className:`mb-2 flex items-start gap-1.5 rounded-lg border border-accent-green/30 bg-accent-green/10 px-2.5 py-1.5`,children:[(0,Y.jsx)(n,{size:12,className:`mt-[2px] shrink-0 text-accent-green`}),(0,Y.jsx)(`span`,{className:`text-meta text-accent-green leading-relaxed`,children:i(`settings.profile.draft.pending`,{n:h})})]}),a.warnings.some(e=>e.code===`memory-unreadable`)&&(0,Y.jsxs)(`div`,{className:`mb-2 flex items-start gap-1.5 text-meta text-accent-yellow`,children:[(0,Y.jsx)(k,{size:12,className:`mt-[1px] shrink-0`}),(0,Y.jsx)(`span`,{children:i(`settings.profile.draft.memoryUnreadable`)})]}),m.length===0?(0,Y.jsx)(`p`,{className:`text-meta text-dark-muted`,children:i(`settings.profile.draft.empty`)}):(0,Y.jsx)(`ul`,{className:`space-y-1.5`,children:m.map(e=>{let t=tt(e),n=t===`adopt`?`bg-accent-green/10 text-accent-green border-accent-green/30`:t===`limit`?`bg-accent-yellow/10 text-accent-yellow border-accent-yellow/30`:t===`invalid`?`bg-accent-red/10 text-accent-red border-accent-red/30`:`bg-dark-hover text-dark-muted border-dark-border`;return(0,Y.jsxs)(`li`,{className:`flex items-start gap-2 rounded-lg border border-dark-border bg-dark-surface px-2.5 py-1.5`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`div`,{className:`text-xs text-dark-text break-words`,children:e.text}),(0,Y.jsx)(`span`,{className:`mt-1 inline-block px-1.5 py-0.5 rounded text-badge border ${n}`,children:i(`settings.profile.draft.reason.${t}`)})]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>void f(e.source,e.text),disabled:l!==null,title:i(`settings.profile.draft.ignore`),className:`shrink-0 flex items-center gap-1 px-1.5 py-0.5 rounded text-badge text-dark-muted hover:text-accent-red hover:bg-accent-red/10 transition-colors disabled:opacity-40`,children:[(0,Y.jsx)(P,{size:11}),i(`settings.profile.draft.ignore`)]})]},`${e.source.itemId}:${e.text}`)})}),h>0&&(0,Y.jsxs)(`div`,{className:`mt-2 flex items-center gap-2 flex-wrap`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>e(a.proposedBody),disabled:t||r,className:`px-2.5 py-1 rounded-lg text-xs bg-accent-blue/10 text-accent-blue hover:bg-accent-blue/20 border border-accent-blue/30 transition-colors disabled:opacity-50`,children:i(`settings.profile.draft.apply`)}),(0,Y.jsx)(`span`,{className:`text-meta text-dark-muted`,children:i(`settings.profile.draft.applyHint`)})]}),a.ignores.length>0&&(0,Y.jsxs)(`div`,{className:`mt-3`,children:[(0,Y.jsx)(`div`,{className:`text-meta text-dark-muted mb-1`,children:i(`settings.profile.draft.ignoredTitle`)}),(0,Y.jsx)(`ul`,{className:`space-y-1`,children:a.ignores.slice(0,8).map(e=>(0,Y.jsxs)(`li`,{className:`flex items-start gap-2 px-2.5 py-1 rounded-lg bg-dark-hover`,children:[(0,Y.jsx)(`span`,{className:`min-w-0 flex-1 text-badge text-dark-muted break-words line-through`,children:e.text}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>void p(e),disabled:l!==null,className:`shrink-0 px-1.5 py-0.5 rounded text-badge text-dark-muted hover:text-accent-blue hover:bg-accent-blue/10 transition-colors disabled:opacity-40`,children:i(`settings.profile.draft.restore`)})]},e.itemId))})]})]})]})}var rt=8e3,it=[`assistant`,`pet`,`lover`];function at(){let[e,t]=G(),{t:n}=R(),[r,i]=(0,J.useState)(void 0),[a,o]=(0,J.useState)(!0),[s,c]=(0,J.useState)(!1),[l,u]=(0,J.useState)(!1),[f,m]=(0,J.useState)(``),[h,g]=(0,J.useState)(``),[_,v]=(0,J.useState)(!1),y=(0,J.useCallback)(async()=>{o(!0);try{let e=await U.profile.get();e.success&&e.data?i(e.data):B.error(e.error||n(`settings.profile.loadFailed`))}catch(e){B.error(`${n(`settings.profile.loadFailed`)}: ${e instanceof Error?e.message:String(e)}`)}o(!1)},[n]);(0,J.useEffect)(()=>{y()},[y]);let b=r?.maxBytes??rt,x=(0,J.useMemo)(()=>{let e=f.trim(),t=h.trim(),n=e?`---\nname: ${e}\n---\n\n${t}\n`:t?`${t}\n`:``;return new TextEncoder().encode(n).length},[f,h]),S=async()=>{if(!r||s)return;let e=!r.enabled;c(!0),i({...r,enabled:e});try{let t=await U.config.profile.set({enabled:e});t.success?q():(i(t=>t&&{...t,enabled:!e}),B.error(t.error||n(`settings.profile.saveFailed`)))}catch(t){i(t=>t&&{...t,enabled:!e}),B.error(`${n(`settings.profile.saveFailed`)}: ${t instanceof Error?t.message:String(t)}`)}c(!1)},C=async()=>{if(!_){v(!0);try{let e=await U.profile.raw();e.success&&e.data?(m(e.data.name??``),g(e.data.content),u(!0)):B.error(e.error||n(`settings.profile.loadFailed`))}catch(e){B.error(`${n(`settings.profile.loadFailed`)}: ${e instanceof Error?e.message:String(e)}`)}v(!1)}},T=()=>{u(!1),m(``),g(``)},E=async e=>{let r=n(`settings.profile.templates.${e}Body`),i=h.trim();(!i||i===r.trim()||await t({message:n(`settings.profile.templates.overwriteConfirm`)}))&&g(r)},O=async()=>{if(!s){if(!f.trim()&&!h.trim())B.error(n(`settings.profile.empty`));else{c(!0);try{let e=await U.profile.set({name:f.trim()?f.trim():null,body:h});e.success?(B.success(n(`settings.profile.saveOk`)),u(!1),m(``),g(``),$e(),q(),await y()):B.error(e.error||n(`settings.profile.saveFailed`))}catch(e){B.error(`${n(`settings.profile.saveFailed`)}: ${e instanceof Error?e.message:String(e)}`)}c(!1)}}},A=async()=>{if(!s&&await t({message:n(`settings.profile.clearConfirm`),variant:`danger`})){c(!0);try{let e=await U.profile.clear();e.success?(B.success(n(`settings.profile.clearOk`)),T(),$e(),q(),await y()):B.error(e.error||n(`settings.profile.clearFailed`))}catch(e){B.error(`${n(`settings.profile.clearFailed`)}: ${e instanceof Error?e.message:String(e)}`)}c(!1)}},j=async e=>{if(!_){v(!0);try{let t=await U.profile.raw();m(t.success&&t.data?t.data.name??``:``),g(e),u(!0)}catch(e){B.error(`${n(`settings.profile.loadFailed`)}: ${e instanceof Error?e.message:String(e)}`)}v(!1)}};return a?(0,Y.jsx)(`div`,{className:`text-sm text-dark-muted`,children:n(`settings.profile.loading`)}):r?(0,Y.jsxs)(Y.Fragment,{children:[e,(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-3 py-1 mb-3`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsxs)(`div`,{className:`text-sm text-dark-text font-medium flex items-center gap-2`,children:[(0,Y.jsx)(D,{size:15,className:`text-accent-purple shrink-0`}),n(`settings.profile.enabled`)]}),(0,Y.jsx)(`div`,{className:`text-xs text-dark-muted mt-1`,children:n(`settings.profile.enabledHint`)})]}),(0,Y.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":r.enabled,"aria-label":n(`settings.profile.enabled`),disabled:s,onClick:()=>void S(),className:`relative w-9 h-5 rounded-full transition-colors shrink-0 mt-0.5 ${r.enabled?`bg-accent-blue`:`bg-dark-border`} ${s?`opacity-60`:``}`,children:(0,Y.jsx)(`span`,{className:`absolute top-0.5 left-0 w-4 h-4 rounded-full bg-white shadow transition-transform ${r.enabled?`translate-x-[18px]`:`translate-x-0.5`}`})})]}),(0,Y.jsx)(`p`,{className:`text-xs text-dark-muted mb-4 leading-relaxed`,children:n(`settings.profile.hint`)}),(0,Y.jsxs)(`div`,{className:`mb-4`,children:[(0,Y.jsxs)(`div`,{className:`text-xs font-medium text-dark-text mb-1.5 flex items-center gap-1.5`,children:[(0,Y.jsx)(p,{size:13,className:`text-dark-muted`}),n(`settings.profile.path`)]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,Y.jsx)(`code`,{className:`flex-1 min-w-0 truncate bg-dark-bg border border-dark-border rounded px-2 py-1 text-meta font-mono text-dark-text`,title:r.path,children:r.path}),(0,Y.jsx)(`span`,{className:`shrink-0 px-1.5 py-0.5 rounded text-badge border ${r.exists?`bg-accent-green/10 text-accent-green border-accent-green/30`:`bg-dark-hover text-dark-muted border-dark-border`}`,children:r.exists?n(`settings.profile.exists`):n(`settings.profile.missing`)})]}),(0,Y.jsx)(`div`,{className:`mt-1.5 text-meta text-dark-muted font-mono`,children:n(`settings.profile.size`,{used:r.bytes,max:r.maxBytes})}),r.truncated&&(0,Y.jsxs)(`div`,{className:`mt-1.5 flex items-start gap-1.5 text-meta text-accent-yellow`,children:[(0,Y.jsx)(k,{size:12,className:`mt-[1px] shrink-0`}),(0,Y.jsx)(`span`,{children:n(`settings.profile.truncated`)})]})]}),l?(0,Y.jsxs)(`div`,{className:`border-t border-dark-border pt-3`,children:[(0,Y.jsxs)(`div`,{className:`mb-4`,children:[(0,Y.jsx)(`div`,{className:`text-xs font-medium text-dark-text mb-1.5`,children:n(`settings.profile.templates.title`)}),(0,Y.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:it.map(e=>(0,Y.jsx)(`button`,{type:`button`,onClick:()=>void E(e),className:`px-2.5 py-1 rounded-lg text-xs text-dark-muted bg-dark-hover border border-dark-border hover:text-dark-text hover:bg-accent-blue/10 hover:border-accent-blue/40 transition-colors`,children:n(`settings.profile.templates.${e}`)},e))}),(0,Y.jsx)(`div`,{className:`text-meta text-dark-muted mt-1.5 leading-relaxed`,children:n(`settings.profile.templates.hint`)})]}),(0,Y.jsxs)(`label`,{className:`block mb-3`,children:[(0,Y.jsx)(`div`,{className:`text-xs font-medium text-dark-text mb-1`,children:n(`settings.profile.name`)}),(0,Y.jsx)(`input`,{type:`text`,value:f,onChange:e=>m(e.target.value),placeholder:n(`settings.profile.namePlaceholder`),maxLength:200,className:`w-full bg-dark-bg border border-dark-border rounded-lg px-3 py-1.5 text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue/60 focus:ring-2 focus:ring-accent-blue/15 outline-none transition-all`})]}),(0,Y.jsx)(`div`,{className:`text-xs font-medium text-dark-text mb-1`,children:n(`settings.profile.body`)}),(0,Y.jsx)(`textarea`,{value:h,onChange:e=>g(e.target.value),placeholder:n(`settings.profile.bodyPlaceholder`),rows:10,className:`w-full bg-dark-bg border border-dark-border rounded-lg px-3 py-2 text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue/60 focus:ring-2 focus:ring-accent-blue/15 outline-none transition-all resize-y font-mono leading-relaxed`}),(0,Y.jsx)(`div`,{className:`mt-1 text-meta font-mono ${x>b?`text-accent-yellow`:`text-dark-muted`}`,children:n(`settings.profile.size`,{used:x,max:b})}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 mt-3`,children:[(0,Y.jsx)(H,{variant:`accent`,size:`sm`,onClick:()=>void O(),loading:s,children:n(`settings.profile.save`)}),(0,Y.jsx)(`button`,{onClick:T,disabled:s,className:`px-3 py-1.5 rounded-lg text-sm text-dark-muted hover:text-dark-text hover:bg-dark-hover transition-colors disabled:opacity-50`,children:n(`settings.profile.cancel`)})]})]}):(0,Y.jsxs)(`div`,{className:`border-t border-dark-border pt-3`,children:[r.preview?(0,Y.jsx)(`p`,{className:`text-xs text-dark-muted whitespace-pre-wrap break-words mb-3 leading-relaxed max-h-40 overflow-y-auto custom-scrollbar`,children:r.preview}):(0,Y.jsx)(`p`,{className:`text-xs text-dark-muted mb-3`,children:n(`settings.profile.empty`)}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsxs)(`button`,{onClick:()=>void C(),disabled:_||s,className:`flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-sm bg-accent-blue/10 text-accent-blue hover:bg-accent-blue/20 border border-accent-blue/30 transition-colors disabled:opacity-50`,children:[(0,Y.jsx)(w,{size:13}),n(`settings.profile.edit`)]}),r.exists&&(0,Y.jsxs)(`button`,{onClick:()=>void A(),disabled:s,className:`flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-sm bg-accent-red/10 text-accent-red hover:bg-accent-red/20 border border-accent-red/30 transition-colors disabled:opacity-50`,children:[(0,Y.jsx)(d,{size:13}),n(`settings.profile.clear`)]})]}),(0,Y.jsx)(nt,{onApply:e=>void j(e),applyBusy:_,disabled:s})]})]}):(0,Y.jsxs)(`button`,{onClick:()=>void y(),className:`text-sm text-accent-blue hover:underline`,children:[n(`settings.profile.loadFailed`),` — `,n(`common.retry`)]})}var ot=e=>new Promise(t=>setTimeout(t,e));function st(){let{t:e}=R(),[t,n]=(0,J.useState)(null),[r,i]=(0,J.useState)(!1),[a,o]=(0,J.useState)(null),[s,c]=(0,J.useState)(null),[l,u]=G(),d=(0,J.useCallback)(async()=>{let t=await U.system.network();return t.success&&t.data?(n(t.data),o(t.data.lastError)):o(t.error||e(`settings.network.loadFailed`)),t},[e]);(0,J.useEffect)(()=>{d()},[d]);let f=t?!t.loopbackOnly:!1,p=(0,J.useCallback)(async()=>{if(!t||r)return;let a=!f;if(!await u({message:e(a?`settings.network.confirmEnable`:`settings.network.confirmDisable`),variant:a?`default`:`danger`}))return;i(!0),o(null);let s=await U.system.setNetwork(a);if(!s.success)o(s.error||e(`settings.network.applyFailed`)),i(!1);else{B.info(e(a?`settings.network.enabledToast`:`settings.network.disabledToast`)),await ot(900);for(let e=0;e<8;e++){let e=await U.system.network();if(e.success&&e.data&&(n(e.data),o(e.data.lastError),e.data.loopbackOnly===!a&&!e.data.lastError)){i(!1);return}await ot(600)}o(e(`settings.network.applyFailed`)),i(!1)}},[r,u,f,t,e]),m=(0,J.useCallback)(async e=>{await je(e)&&(c(e),setTimeout(()=>c(t=>t===e?null:t),1800))},[]),h=t?.lockedByHostOverride?e(`settings.network.lockedByHost`,{host:t.hostOverride||``}):t?.fromEnv?e(`settings.network.lockedByEnv`,{env:t.envKey}):null;return(0,Y.jsxs)(Y.Fragment,{children:[l,(0,Y.jsx)(`p`,{className:`text-sm text-dark-muted mb-3`,children:e(`settings.network.description`)}),a&&(0,Y.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-accent-red/40 bg-accent-red/10 px-3 py-2 mb-3`,children:[(0,Y.jsx)(k,{size:14,className:`text-accent-red mt-0.5 shrink-0`}),(0,Y.jsx)(`span`,{className:`text-xs text-accent-red break-all`,children:a})]}),(0,Y.jsxs)(`label`,{className:`flex items-center justify-between gap-3 py-1 ${h?`cursor-not-allowed opacity-60`:`cursor-pointer`}`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`div`,{className:`text-sm text-dark-text`,children:e(`settings.network.toggleLabel`)}),(0,Y.jsx)(`div`,{className:`text-xs text-dark-muted mt-0.5`,children:e(`settings.network.toggleHint`)})]}),(0,Y.jsx)(ct,{checked:f,disabled:r||!t||!!h,onToggle:()=>void p(),label:e(`settings.network.toggleLabel`)})]}),r&&(0,Y.jsx)(`p`,{className:`text-xs text-accent-blue mt-2`,children:e(`settings.network.pendingHint`)}),h&&(0,Y.jsx)(`p`,{className:`text-xs text-dark-muted mt-2`,children:h}),t&&(0,Y.jsxs)(`div`,{className:`mt-3 pt-3 border-t border-dark-border space-y-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between text-xs`,children:[(0,Y.jsx)(`span`,{className:`text-dark-muted`,children:e(f?`settings.network.stateLan`:`settings.network.stateLocal`)}),(0,Y.jsxs)(`span`,{className:`text-dark-text font-mono`,children:[t.bindHost,`:`,t.httpPort]})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`text-xs text-dark-muted mb-1`,children:e(`settings.network.addresses`)}),(0,Y.jsx)(`div`,{className:`space-y-1`,children:(f&&t.lanUrls.length?t.lanUrls:[t.loopbackUrl]).map(t=>(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`code`,{className:`flex-1 min-w-0 break-all text-xs text-dark-text bg-dark-surface border border-dark-border rounded px-2 py-1 font-mono`,children:t}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>void m(t),title:e(`settings.network.copy`),className:`shrink-0 flex items-center gap-1 px-2 py-1 rounded text-xs text-dark-muted hover:text-dark-text hover:bg-dark-hover transition-colors`,children:[s===t?(0,Y.jsx)(M,{size:13,className:`text-accent-green`}):(0,Y.jsx)(F,{size:13}),e(s===t?`settings.network.copied`:`settings.network.copy`)]})]},t))}),f&&t.lanUrls.length===0&&(0,Y.jsx)(`p`,{className:`text-xs text-dark-muted mt-1`,children:e(`settings.network.noLanAddress`)})]})]}),f&&(0,Y.jsxs)(`div`,{className:`mt-3 rounded-lg border border-accent-yellow/40 bg-accent-yellow/10 px-3 py-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs font-medium text-accent-yellow`,children:[(0,Y.jsx)(k,{size:13}),e(`settings.network.warningTitle`)]}),(0,Y.jsx)(`p`,{className:`text-xs text-dark-muted mt-1`,children:e(`settings.network.warning`)}),(0,Y.jsx)(`p`,{className:`text-xs text-dark-muted mt-1`,children:t?.authTokenRequired?e(`settings.network.tokenHint`):e(`settings.network.noTokenHint`)})]}),(0,Y.jsx)(lt,{state:t,onState:n})]})}function ct({checked:e,disabled:t,onToggle:n,label:r}){return(0,Y.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":e,"aria-label":r,disabled:t,onClick:n,className:`relative w-9 h-5 rounded-full transition-colors shrink-0 disabled:cursor-not-allowed ${e?`bg-accent-green`:`bg-dark-border`}`,children:(0,Y.jsx)(`span`,{className:`absolute top-0.5 left-0 w-4 h-4 rounded-full bg-white shadow transition-transform ${e?`translate-x-[18px]`:`translate-x-0.5`}`})})}function lt({state:e,onState:t}){let{t:r}=R(),[i,a]=(0,J.useState)(!1),[o,s]=(0,J.useState)(null),[c,l]=(0,J.useState)(null),[u,d]=G(),f=e?.tailscale,p=(0,J.useCallback)(async()=>{if(!f||i)return;let e=!f.serving;if(!await d({message:r(e?`settings.network.tailscale.confirmEnable`:`settings.network.tailscale.confirmDisable`),variant:e?`default`:`danger`}))return;a(!0),s(null);let n=await U.system.setTailscale(e);a(!1),!n.success||!n.data?s(n.error||r(`settings.network.tailscale.applyFailed`)):(t(n.data),B.info(n.data.message))},[i,d,t,r,f]),m=(0,J.useCallback)(async e=>{await je(e)&&(l(e),setTimeout(()=>l(t=>t===e?null:t),1800))},[]),h=o||f?.lastError||f?.probeError,g=(0,J.useCallback)(()=>{K(r(`settings.network.tailscale.askAiPrompt`,{state:f?.backendState||`unknown`,error:h||`—`})),B.info(r(`settings.network.tailscale.askAiHint`))},[h,r,f?.backendState]);if(!f)return null;let _=f.installed&&f.running,v=f.fromEnv?r(`settings.network.tailscale.lockedByEnv`,{env:f.envKey}):null;return(0,Y.jsxs)(`div`,{className:`mt-4 pt-4 border-t border-dark-border`,children:[u,(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`div`,{className:`text-sm text-dark-text`,children:r(`settings.network.tailscale.title`)}),(0,Y.jsx)(`div`,{className:`text-xs text-dark-muted mt-0.5`,children:r(`settings.network.tailscale.hint`)})]}),(0,Y.jsx)(ct,{checked:f.serving,disabled:i||!_||!!v,onToggle:()=>void p(),label:r(`settings.network.tailscale.title`)})]}),!f.installed&&(0,Y.jsxs)(`p`,{className:`text-xs text-accent-yellow mt-2`,children:[r(`settings.network.tailscale.notInstalled`),` `,(0,Y.jsx)(`a`,{href:`https://tailscale.com/download`,target:`_blank`,rel:`noreferrer`,className:`underline hover:text-accent-blue`,children:`tailscale.com/download`})]}),f.installed&&!f.running&&(0,Y.jsx)(`p`,{className:`text-xs text-accent-yellow mt-2`,children:r(`settings.network.tailscale.notRunning`,{state:f.backendState||`unknown`})}),i&&(0,Y.jsx)(`p`,{className:`text-xs text-accent-blue mt-2`,children:r(`settings.network.tailscale.pendingHint`)}),h&&(0,Y.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-accent-red/40 bg-accent-red/10 px-3 py-2 mt-2`,children:[(0,Y.jsx)(k,{size:14,className:`text-accent-red mt-0.5 shrink-0`}),(0,Y.jsx)(`span`,{className:`text-xs text-accent-red break-all`,children:h})]}),(!_||!!h)&&(0,Y.jsx)(`div`,{className:`mt-2`,children:(0,Y.jsx)(H,{variant:`secondary`,size:`sm`,leftIcon:(0,Y.jsx)(n,{size:13,"aria-hidden":`true`}),onClick:g,children:r(`settings.network.tailscale.askAi`)})}),v&&(0,Y.jsx)(`p`,{className:`text-xs text-dark-muted mt-2`,children:v}),f.serving&&f.url&&(0,Y.jsxs)(`div`,{className:`mt-2`,children:[(0,Y.jsx)(`div`,{className:`text-xs text-dark-muted mb-1`,children:r(`settings.network.tailscale.address`)}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`code`,{className:`flex-1 min-w-0 break-all text-xs text-dark-text bg-dark-surface border border-dark-border rounded px-2 py-1 font-mono`,children:f.url}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>void m(f.url),title:r(`settings.network.copy`),className:`shrink-0 flex items-center gap-1 px-2 py-1 rounded text-xs text-dark-muted hover:text-dark-text hover:bg-dark-hover transition-colors`,children:[c===f.url?(0,Y.jsx)(M,{size:13,className:`text-accent-green`}):(0,Y.jsx)(F,{size:13}),c===f.url?r(`settings.network.copied`):r(`settings.network.copy`)]})]}),f.allServeUrls.length>1&&(0,Y.jsx)(`p`,{className:`text-xs text-dark-muted mt-1`,children:r(`settings.network.tailscale.otherEntries`,{n:f.allServeUrls.length-1})})]}),f.serving&&(0,Y.jsxs)(`div`,{className:`mt-2 rounded-lg border border-accent-yellow/40 bg-accent-yellow/10 px-3 py-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs font-medium text-accent-yellow`,children:[(0,Y.jsx)(k,{size:13}),r(`settings.network.tailscale.warningTitle`)]}),(0,Y.jsx)(`p`,{className:`text-xs text-dark-muted mt-1`,children:r(`settings.network.tailscale.warning`)})]})]})}function ut(){let{t:e}=R(),[t,r]=G(),[i,a]=(0,J.useState)(null),[o,s]=(0,J.useState)(!1),[c,l]=(0,J.useState)(null),u=(0,J.useCallback)(async()=>{let t=await U.system.daemon();return t.success&&t.data?a(t.data):l(t.error||e(`settings.daemon.loadFailed`)),t},[e]);(0,J.useEffect)(()=>{u()},[u]);let d=i?.daemonEnabled??!1,f=i?.fromEnv?e(`settings.daemon.lockedByEnv`,{env:i.envKey}):null,p=(0,J.useCallback)(()=>{K(e(`settings.daemon.askAiPrompt`,{enabled:String(d),env:i?.envKey||`—`,error:c||`—`})),B.info(e(`settings.daemon.askAiHint`))},[d,c,i?.envKey,e]),m=(0,J.useCallback)(async()=>{if(!i||o)return;let t=!d;if(!await r({message:e(t?`settings.daemon.confirmEnable`:`settings.daemon.confirmDisable`)}))return;s(!0),l(null);let n=await U.system.setDaemon(t);s(!1),n.success?(n.data&&a(n.data),B.info(e(t?`settings.daemon.enabledToast`:`settings.daemon.disabledToast`))):l(n.error||e(`settings.daemon.applyFailed`))},[o,r,d,i,e]);return(0,Y.jsxs)(Y.Fragment,{children:[t,(0,Y.jsx)(`p`,{className:`text-sm text-dark-muted mb-3`,children:e(`settings.daemon.description`)}),c&&(0,Y.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-accent-red/40 bg-accent-red/10 px-3 py-2 mb-3`,children:[(0,Y.jsx)(k,{size:14,className:`text-accent-red mt-0.5 shrink-0`}),(0,Y.jsx)(`span`,{className:`text-xs text-accent-red break-all`,children:c})]}),c&&(0,Y.jsx)(`div`,{className:`mb-3`,children:(0,Y.jsx)(H,{variant:`secondary`,size:`sm`,leftIcon:(0,Y.jsx)(n,{size:13,"aria-hidden":`true`}),onClick:p,children:e(`settings.daemon.askAi`)})}),(0,Y.jsxs)(`label`,{className:`flex items-center justify-between gap-3 py-1 ${f?`cursor-not-allowed opacity-60`:`cursor-pointer`}`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`div`,{className:`text-sm text-dark-text`,children:e(`settings.daemon.toggleLabel`)}),(0,Y.jsx)(`div`,{className:`text-xs text-dark-muted mt-0.5`,children:e(`settings.daemon.toggleHint`)})]}),(0,Y.jsx)(dt,{checked:d,disabled:o||!i||!!f,onToggle:()=>void m(),label:e(`settings.daemon.toggleLabel`)})]}),f&&(0,Y.jsx)(`p`,{className:`text-xs text-dark-muted mt-2`,children:f})]})}function dt({checked:e,disabled:t,onToggle:n,label:r}){return(0,Y.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":e,"aria-label":r,disabled:t,onClick:n,className:`relative w-9 h-5 rounded-full transition-colors shrink-0 disabled:cursor-not-allowed ${e?`bg-accent-green`:`bg-dark-border`}`,children:(0,Y.jsx)(`span`,{className:`absolute top-0.5 left-0 w-4 h-4 rounded-full bg-white shadow transition-transform ${e?`translate-x-[18px]`:`translate-x-0.5`}`})})}function ft(){let{t:e}=R(),[t,n]=(0,J.useState)(null),[r,i]=(0,J.useState)(!0),[a,o]=(0,J.useState)(null),[s,c]=(0,J.useState)(!1),[l,u]=(0,J.useState)(``),[d,p]=(0,J.useState)(!1),m=(0,J.useCallback)(async()=>{let t=await U.config.desktop();t.success&&t.data?(n(t.data),o(null),u(t.data.values.port===null?``:String(t.data.values.port)),p(!1)):o(t.error||e(`settings.desktop.loadFailed`))},[e]);(0,J.useEffect)(()=>{(async()=>{await m(),i(!1)})()},[m]);let h=!!t?.envOverridden.autoLaunch,g=!!t?.envOverridden.closeToTray,_=!!t?.envOverridden.port,v=(0,J.useCallback)(async t=>{if(s)return;c(!0),o(null);let r=await U.config.setDesktop(t);c(!1),r.success?(r.data&&(n(r.data),u(r.data.values.port===null?``:String(r.data.values.port)),p(!1)),B.info(e(`settings.desktop.savedRestartHint`))):o(r.error||e(`settings.desktop.applyFailed`))},[s,e]),y=(0,J.useCallback)(()=>{t&&!h&&v({autoLaunch:!t.values.autoLaunch})},[h,v,t]),b=(0,J.useCallback)(()=>{t&&!g&&v({closeToTray:!t.values.closeToTray})},[g,v,t]),x=(0,J.useCallback)(()=>{let e=l.trim();if(!e)return{ok:!0,value:null};if(!/^\d+$/.test(e))return{ok:!1};let t=Number(e);return t<1||t>65534?{ok:!1}:{ok:!0,value:t}},[l]),S=d&&!x().ok,C=t?.values.port??null,w=x(),T=!d||w.ok&&w.value===C,E=(0,J.useCallback)(()=>{let e=x();e.ok&&v({port:e.value})},[x,v]),D=(0,J.useCallback)(()=>{u(``),p(!1),C!==null&&v({port:null})},[C,v]);return r?(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 py-4 text-sm text-dark-muted`,children:[(0,Y.jsx)(f,{size:14,className:`animate-spin`}),e(`settings.desktop.loading`)]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`p`,{className:`text-sm text-dark-muted mb-3`,children:e(`settings.desktop.description`)}),a&&(0,Y.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-accent-red/40 bg-accent-red/10 px-3 py-2 mb-3`,children:[(0,Y.jsx)(k,{size:14,className:`text-accent-red mt-0.5 shrink-0`}),(0,Y.jsx)(`span`,{className:`text-xs text-accent-red break-all`,children:a})]}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-3 py-1`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`div`,{className:`text-sm text-dark-text`,children:e(`settings.desktop.autoLaunchLabel`)}),(0,Y.jsx)(`div`,{className:`text-xs text-dark-muted mt-0.5`,children:e(`settings.desktop.autoLaunchHint`)})]}),(0,Y.jsx)(pt,{checked:!!t?.values.autoLaunch,disabled:s||h,onToggle:y,label:e(`settings.desktop.autoLaunchLabel`)})]}),h&&(0,Y.jsx)(`p`,{className:`text-xs text-dark-muted mt-1`,children:e(`settings.desktop.lockedByEnv`,{env:t?.envKeys.autoLaunch||``})}),(0,Y.jsxs)(`div`,{className:`mt-4 pt-4 border-t border-dark-border flex items-center justify-between gap-3`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`div`,{className:`text-sm text-dark-text`,children:e(`settings.desktop.closeToTrayLabel`)}),(0,Y.jsx)(`div`,{className:`text-xs text-dark-muted mt-0.5`,children:e(`settings.desktop.closeToTrayHint`)})]}),(0,Y.jsx)(pt,{checked:!!t?.values.closeToTray,disabled:s||g,onToggle:b,label:e(`settings.desktop.closeToTrayLabel`)})]}),g&&(0,Y.jsx)(`p`,{className:`text-xs text-dark-muted mt-1`,children:e(`settings.desktop.lockedByEnv`,{env:t?.envKeys.closeToTray||``})}),(0,Y.jsxs)(`div`,{className:`mt-4 pt-4 border-t border-dark-border`,children:[(0,Y.jsx)(`div`,{className:`text-sm text-dark-text`,children:e(`settings.desktop.portLabel`)}),(0,Y.jsx)(`div`,{className:`text-xs text-dark-muted mt-0.5 mb-2`,children:e(`settings.desktop.portHint`)}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`input`,{type:`number`,inputMode:`numeric`,min:1,max:65534,value:l,disabled:s||_,placeholder:e(`settings.desktop.portAuto`),onChange:e=>{u(e.target.value),p(!0)},onKeyDown:e=>{e.key===`Enter`&&!S&&!T&&E()},className:`flex-1 min-w-0 rounded-lg bg-dark-surface border px-3 py-2 text-sm text-dark-text font-mono focus:outline-none disabled:opacity-60 ${S?`border-accent-red`:`border-dark-border focus:border-accent-blue`}`}),(0,Y.jsx)(`button`,{type:`button`,onClick:E,disabled:s||_||S||T,className:`shrink-0 px-3 py-2 rounded-lg text-sm bg-accent-blue/10 text-accent-blue hover:bg-accent-blue/20 border border-accent-blue/30 disabled:opacity-40 disabled:cursor-not-allowed`,children:e(`settings.desktop.save`)}),C!==null&&(0,Y.jsx)(`button`,{type:`button`,onClick:D,disabled:s||_,className:`shrink-0 px-3 py-2 rounded-lg text-sm text-dark-muted hover:text-dark-text hover:bg-dark-hover border border-dark-border disabled:opacity-40`,children:e(`settings.desktop.portAuto`)})]}),S&&(0,Y.jsx)(`p`,{className:`text-xs text-accent-red mt-1`,children:e(`settings.desktop.portInvalid`)}),_&&(0,Y.jsx)(`p`,{className:`text-xs text-dark-muted mt-1`,children:e(`settings.desktop.lockedByEnv`,{env:t?.envKeys.port||``})}),C!==null&&!S&&(0,Y.jsxs)(`div`,{className:`mt-2 rounded-lg border border-accent-yellow/40 bg-accent-yellow/10 px-3 py-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs font-medium text-accent-yellow`,children:[(0,Y.jsx)(k,{size:13}),e(`settings.desktop.pinnedWarningTitle`)]}),(0,Y.jsx)(`p`,{className:`text-xs text-dark-muted mt-1`,children:e(`settings.desktop.pinnedWarning`,{port:C})})]})]}),(0,Y.jsxs)(`div`,{className:`mt-4 pt-3 border-t border-dark-border flex items-start gap-2`,children:[(0,Y.jsx)(I,{size:13,className:`text-dark-muted mt-0.5 shrink-0`}),(0,Y.jsxs)(`p`,{className:`text-xs text-dark-muted`,children:[e(`settings.desktop.restartHint`),t?.configPath&&(0,Y.jsx)(`span`,{className:`block mt-1 font-mono break-all`,children:t.configPath})]})]})]})}function pt({checked:e,disabled:t,onToggle:n,label:r}){return(0,Y.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":e,"aria-label":r,disabled:t,onClick:n,className:`relative w-9 h-5 rounded-full transition-colors shrink-0 disabled:cursor-not-allowed ${e?`bg-accent-green`:`bg-dark-border`}`,children:(0,Y.jsx)(`span`,{className:`absolute top-0.5 left-0 w-4 h-4 rounded-full bg-white shadow transition-transform ${e?`translate-x-[18px]`:`translate-x-0.5`}`})})}var mt={get:()=>he.get(`/api/config/attention`),set:e=>he.post(`/api/config/attention`,{sound:e})};function ht(){let{t:e}=R(),[t,n]=(0,J.useState)(!0),[r,i]=(0,J.useState)(!1),[a,o]=(0,J.useState)(null),s=(0,J.useCallback)(async()=>{try{let t=await mt.get();t.success&&t.data?(n(t.data.sound),o(null)):o(t.error||e(`settings.notifications.loadFailed`))}catch{o(e(`settings.notifications.loadFailed`))}},[e]);(0,J.useEffect)(()=>{s()},[s]);let c=(0,J.useCallback)(async()=>{if(r)return;let a=!t;i(!0),o(null),n(a);try{let t=await mt.set(a);!t.success||!t.data?(n(!a),o(t.error||e(`settings.notifications.saveFailed`))):n(t.data.sound)}catch{n(!a),o(e(`settings.notifications.saveFailed`))}finally{i(!1)}},[r,t,e]);return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`label`,{className:`flex items-center justify-between gap-3 py-1 cursor-pointer`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`div`,{className:`text-sm text-dark-text`,children:e(`settings.notifications.soundLabel`)}),(0,Y.jsx)(`div`,{className:`text-xs text-dark-muted mt-0.5`,children:e(`settings.notifications.soundHint`)})]}),(0,Y.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":t,disabled:r,onClick:c,className:`relative w-9 h-5 rounded-full transition-colors shrink-0 disabled:cursor-not-allowed ${t?`bg-accent-blue`:`bg-dark-border`}`,children:(0,Y.jsx)(`span`,{className:`absolute top-0.5 left-0 w-4 h-4 rounded-full bg-white shadow transition-transform ${t?`translate-x-[18px]`:`translate-x-0.5`}`})})]}),a&&(0,Y.jsxs)(`div`,{className:`mt-2 flex items-start gap-2 text-xs text-accent-red`,children:[(0,Y.jsx)(k,{size:13,className:`mt-0.5 shrink-0`}),(0,Y.jsx)(`span`,{className:`break-all`,children:a})]})]})}var gt=(0,J.memo)(function({label:e,description:t,colors:n,pattern:r,isSelected:i,onClick:a}){return(0,Y.jsxs)(`button`,{onClick:a,className:`relative flex w-full flex-col items-center rounded-xl p-2 transition-all focus:outline-none focus:ring-2 focus:ring-accent-blue/50 ${i?`ring-2 ring-accent-blue/60 bg-dark-bg border border-accent-blue/40 shadow-sm`:`border border-dark-border hover:border-accent-blue/30 bg-dark-bg hover:shadow-sm`}`,title:t||e,"aria-pressed":i,"aria-label":e,children:[(0,Y.jsxs)(`div`,{className:`relative flex gap-0.5 rounded-md overflow-hidden w-full h-8 mb-1.5 border border-dark-border/40`,children:[[`bg`,`surface`,`border`,`text`,`muted`,`accentBlue`,`accentGreen`,`accentRed`,`accentYellow`,`accentPurple`].map(e=>(0,Y.jsx)(`div`,{className:`flex-1`,style:{backgroundColor:n[e]},title:e},e)),r===`grid`&&(0,Y.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-0`,style:{backgroundImage:`linear-gradient(${n.border} 1px, transparent 1px), linear-gradient(90deg, ${n.border} 1px, transparent 1px)`,backgroundSize:`7px 7px`}})]}),(0,Y.jsx)(`span`,{className:`text-meta font-medium truncate w-full text-center ${i?`text-accent-blue`:`text-dark-text`}`,children:e}),i&&(0,Y.jsx)(`span`,{className:`absolute top-1 end-1 w-4 h-4 bg-accent-blue rounded-full flex items-center justify-center shadow-sm`,children:(0,Y.jsx)(`svg`,{width:`8`,height:`8`,viewBox:`0 0 8 8`,fill:`none`,children:(0,Y.jsx)(`path`,{d:`M1.5 4L3.5 6L6.5 2`,stroke:`white`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`})})})]})}),_t={name:`deepseekcode-web`,private:!0,version:`1.0.0`,type:`module`,scripts:{dev:`vite`,build:`node ../../scripts/tsc.mjs && vite build`,typecheck:`node ../../scripts/tsc.mjs -p tsconfig.json --noEmit`,preview:`vite preview`,icons:`node scripts/generate-pwa-icons.mjs`,test:`vitest run`,"test:watch":`vitest`},dependencies:{"@deepseekcode/protocol":`*`,"@deepseekcode/shared":`*`,"@milkdown/core":`7.22.3`,"@milkdown/preset-commonmark":`7.22.3`,"@milkdown/preset-gfm":`7.22.3`,"@milkdown/utils":`7.22.3`,"@monaco-editor/react":`4.7.0`,"@tanstack/react-virtual":`3.14.21`,clsx:`2.1.1`,"date-fns":`4.4.0`,diff:`9.0.0`,i18next:`26.5.4`,katex:`0.19.0`,"lucide-react":`1.61.0`,mermaid:`12.2.0`,prismjs:`1.30.0`,qrcode:`1.5.4`,react:`19.3.1`,"react-dom":`19.3.1`,"react-i18next":`17.1.0`,"react-markdown":`10.1.0`,"react-resizable-panels":`4.14.8`,"rehype-katex":`7.0.1`,"rehype-remark":`10.0.1`,"remark-gfm":`4.0.1`,"remark-math":`6.0.0`,shiki:`4.5.0`,zustand:`5.0.15`},devDependencies:{"@testing-library/jest-dom":`7.0.1`,"@testing-library/react":`16.3.3`,"@types/prismjs":`1.26.6`,"@types/qrcode":`1.5.6`,"@types/react":`19.3.0`,"@types/react-dom":`19.3.0`,"@vitejs/plugin-react":`6.1.2`,autoprefixer:`10.6.1`,jsdom:`30.1.3`,postcss:`8.5.31`,tailwindcss:`3.4.19`,typescript:`5.9.3`,vite:`8.3.5`,vitest:`5.0.5`}},vt=[{labelKey:`settings.groups.general`,items:[{id:`general`,icon:s,labelKey:`settings.nav.general`,searchKeys:[`language`,`display`,`developer`,`general`,`语言`,`界面`,`开发者`,`通用`]},{id:`appearance`,icon:o,labelKey:`settings.nav.appearance`,searchKeys:[`theme`,`color`,`palette`,`custom`,`ripple`,`effect`,`icon`,`blob`,`brand`,`主题`,`颜色`,`波纹`,`动效`,`背景`,`图标`,`品牌`,`团子`]},{id:`profile`,icon:D,labelKey:`settings.nav.profile`,searchKeys:[`profile`,`soul`,`persona`,`identity`,`name`,`画像`,`个性化`,`身份`,`称呼`,`soul.md`]},{id:`voice`,icon:g,labelKey:`settings.nav.voice`,searchKeys:[`voice`,`stt`,`whisper`,`speech`,`语音`,`安装`]}]},{labelKey:`settings.groups.features`,items:[{id:`models`,icon:_,labelKey:`settings.nav.models`,searchKeys:[`provider`,`model`,`api`,`key`,`openai`,`anthropic`,`deepseek`,`模型`]},{id:`connectors`,icon:O,labelKey:`settings.nav.connectors`,searchKeys:[`connector`,`capabilities`,`computer use`,`gmail`,`grok`,`连接器`,`能力`]},{id:`context`,icon:x,labelKey:`settings.nav.context`,searchKeys:[`context`,`token`,`offload`,`artifact`,`上下文`,`外置`]},{id:`configFiles`,icon:r,labelKey:`settings.nav.configFiles`,searchKeys:[`config`,`file`,`yaml`,`json`,`editor`,`配置文件`]}]},{labelKey:`settings.groups.system`,items:[{id:`sandbox`,icon:oe,labelKey:`settings.nav.sandbox`,searchKeys:[`sandbox`,`sandbox-exec`,`bwrap`,`bubblewrap`,`isolation`,`seccomp`,`permission`,`沙箱`,`隔离`,`命令`,`权限`]},{id:`network`,icon:T,labelKey:`settings.nav.network`,searchKeys:[`network`,`lan`,`wifi`,`port`,`share`,`access`,`server`,`bind`,`网络`,`局域网`,`内网`,`多人`,`共享`,`访问`,`端口`]},{id:`daemon`,icon:u,labelKey:`settings.nav.daemon`,searchKeys:[`daemon`,`background`,`persistent`,`server`,`backend`,`service`,`常驻`,`后台`,`守护`,`进程`,`服务`]},{id:`desktop`,icon:N,labelKey:`settings.nav.desktop`,searchKeys:[`desktop`,`autolaunch`,`autostart`,`startup`,`boot`,`launch`,`port`,`backend`,`桌面`,`客户端`,`开机`,`自启`,`启动`,`端口`,`后台`]},{id:`system`,icon:u,labelKey:`settings.nav.system`,searchKeys:[`system`,`server`,`uptime`,`restart`,`reboot`,`系统`,`重启`]},{id:`about`,icon:I,labelKey:`settings.nav.about`,searchKeys:[`about`,`version`,`info`,`关于`,`版本`]}]}],yt=[{key:`bg`,labelKey:`settings.colorBg`},{key:`surface`,labelKey:`settings.colorSurface`},{key:`border`,labelKey:`settings.colorBorder`},{key:`text`,labelKey:`settings.colorText`},{key:`muted`,labelKey:`settings.colorMuted`},{key:`accentBlue`,labelKey:`settings.colorAccentBlue`},{key:`accentGreen`,labelKey:`settings.colorAccentGreen`},{key:`accentRed`,labelKey:`settings.colorAccentRed`},{key:`accentYellow`,labelKey:`settings.colorAccentYellow`},{key:`accentPurple`,labelKey:`settings.colorAccentPurple`}],bt=(0,J.memo)(function({isOpen:e,onClose:t,onNavigate:r,focusSection:i}){let{t:a}=R(),[o,s]=(0,J.useState)(`general`),[c,l]=(0,J.useState)(``),[d,f]=(0,J.useState)(0);(0,J.useEffect)(()=>{if(!e)return;let t=!0;return(async()=>{let{draft:e}=await Ze();t&&f(Qe(e))})(),()=>{t=!1}},[e]),De({isOpen:e,onClose:t});let p=(0,J.useRef)(null);(0,J.useEffect)(()=>{e&&i?.section===`stt`&&(s(`voice`),requestAnimationFrame(()=>{p.current?.scrollIntoView({behavior:`smooth`,block:`start`})}))},[i?.nonce,e]);let m=(0,J.useRef)(null);(0,J.useEffect)(()=>{e&&i?.section===`profile`&&(s(`profile`),requestAnimationFrame(()=>{m.current?.scrollIntoView({behavior:`smooth`,block:`start`})}))},[i?.nonce,e]),(0,J.useEffect)(()=>{e&&l(``)},[e]);let h=(0,J.useMemo)(()=>{if(!c.trim())return vt;let e=c.toLowerCase().trim();return vt.map(t=>({...t,items:t.items.filter(t=>a(t.labelKey).toLowerCase().includes(e)||t.searchKeys.some(t=>t.toLowerCase().includes(e)))})).filter(e=>e.items.length>0)},[c,a]),{visible:g,phase:_}=se(e);return g?(0,Y.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center overflow-hidden p-4 max-md:p-0`,role:`dialog`,"aria-modal":`true`,"aria-label":a(`settings.title`),children:[(0,Y.jsx)(`div`,{className:`absolute inset-0 ui-scrim ui-overlay-backdrop`,"data-phase":_,onClick:t}),(0,Y.jsxs)(`div`,{className:`relative w-full max-w-4xl h-[80vh] bg-dark-overlay ui-surface-overlay border border-dark-border rounded-2xl shadow-pop flex flex-col overflow-hidden ui-overlay-panel max-md:h-full max-md:max-w-none max-md:rounded-none max-md:pt-[var(--safe-area-top)] max-md:pb-[var(--safe-area-bottom)]`,"data-phase":_,children:[(0,Y.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between ps-5 pe-3 py-3 border-b border-dark-border`,children:[(0,Y.jsx)(`h2`,{className:`text-base font-semibold text-dark-text`,children:a(`settings.title`)}),(0,Y.jsx)(`button`,{onClick:t,"aria-label":`Close`,className:`p-1.5 rounded-lg text-dark-muted hover:text-dark-text hover:bg-dark-hover transition-colors`,children:(0,Y.jsx)(P,{size:18,"aria-hidden":`true`})})]}),(0,Y.jsxs)(`div`,{className:`flex flex-1 min-h-0 max-md:flex-col`,children:[(0,Y.jsxs)(`nav`,{className:`w-52 shrink-0 border-e border-dark-border bg-dark-surface/40 flex flex-col min-h-0 max-md:w-full max-md:border-e-0 max-md:border-b`,children:[(0,Y.jsx)(`div`,{className:`p-3 pb-1 max-md:px-2 max-md:pt-2 max-md:pb-1`,children:(0,Y.jsxs)(`div`,{className:`relative`,children:[(0,Y.jsx)(S,{size:13,className:`absolute start-2.5 top-1/2 -translate-y-1/2 text-dark-muted pointer-events-none`}),(0,Y.jsx)(`input`,{type:`text`,value:c,onChange:e=>l(e.target.value),placeholder:a(`settings.searchPlaceholder`),className:`w-full bg-dark-surface border border-dark-border rounded-lg ps-8 pe-2 py-1.5 text-xs text-dark-text placeholder-dark-muted focus:border-accent-blue/60 focus:ring-2 focus:ring-accent-blue/15 outline-none transition-all`})]})}),(0,Y.jsxs)(`div`,{className:`flex-1 min-h-0 overflow-y-auto custom-scrollbar px-3 pb-3 max-md:flex-none max-md:flex max-md:flex-row max-md:items-center max-md:gap-1 max-md:overflow-x-auto max-md:overflow-y-hidden max-md:px-2 max-md:pb-2`,children:[h.map(e=>(0,Y.jsxs)(`div`,{className:`mt-3 first:mt-1 max-md:mt-0 max-md:flex max-md:shrink-0 max-md:items-center max-md:gap-1`,children:[(0,Y.jsx)(`div`,{className:`px-2 mb-1 text-badge font-medium uppercase tracking-wide text-dark-muted/80 max-md:hidden`,children:a(e.labelKey)}),(0,Y.jsx)(`div`,{className:`space-y-0.5 max-md:flex max-md:gap-1 max-md:space-y-0`,children:e.items.map(e=>{let t=e.icon,n=o===e.id;return(0,Y.jsxs)(`button`,{onClick:()=>s(e.id),"aria-current":n?`page`:void 0,className:`w-full flex items-center gap-2.5 px-2.5 py-1.5 rounded-lg text-sm transition-colors max-md:w-auto max-md:shrink-0 max-md:gap-2 max-md:whitespace-nowrap ${n?`bg-accent-blue/10 text-accent-blue font-medium`:`text-dark-text/90 hover:bg-dark-hover`}`,children:[(0,Y.jsx)(t,{size:15,className:n?`text-accent-blue`:`text-dark-muted`}),(0,Y.jsx)(`span`,{className:`truncate`,children:a(e.labelKey)}),e.id===`profile`&&d>0&&(0,Y.jsx)(`span`,{className:`ml-auto shrink-0 min-w-[16px] h-4 px-1 rounded-full bg-accent-green/15 text-accent-green border border-accent-green/30 text-[10px] leading-4 text-center font-medium`,title:a(`settings.profile.draft.pendingNav`,{n:d}),children:d})]},e.id)})})]},e.labelKey)),h.length===0&&(0,Y.jsx)(`div`,{className:`mt-6 text-center text-xs text-dark-muted`,children:a(`settings.noResults`)})]})]}),(0,Y.jsx)(`div`,{className:`flex-1 min-w-0 min-h-0 overflow-y-auto custom-scrollbar`,children:(0,Y.jsx)(Ne,{fallbackRender:(e,t)=>(0,Y.jsx)(xt,{error:e,onRetry:t}),children:(0,Y.jsxs)(`div`,{className:`max-w-2xl px-6 py-5 max-md:px-4 max-md:py-4`,children:[o===`general`&&(0,Y.jsx)(St,{}),o===`appearance`&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(Ct,{}),(0,Y.jsx)(Q,{icon:n,iconColor:`text-accent-purple`,title:a(`brand.title`),children:(0,Y.jsx)(Pe,{dense:!0})})]}),o===`profile`&&(0,Y.jsx)(`div`,{ref:m,id:`settings-section-profile`,className:`scroll-mt-5`,children:(0,Y.jsx)(Tt,{})}),o===`voice`&&(0,Y.jsx)(`div`,{ref:p,id:`settings-section-stt`,className:`scroll-mt-5`,children:(0,Y.jsx)(wt,{})}),o===`models`&&(0,Y.jsx)(Et,{onNavigate:r}),o===`connectors`&&(0,Y.jsx)(Dt,{onNavigate:r}),o===`context`&&(0,Y.jsx)(Ot,{}),o===`configFiles`&&(0,Y.jsx)(kt,{}),o===`sandbox`&&(0,Y.jsx)(At,{}),o===`network`&&(0,Y.jsx)(Q,{icon:T,iconColor:`text-accent-green`,title:a(`settings.nav.network`),children:(0,Y.jsx)(st,{})}),o===`daemon`&&(0,Y.jsx)(Q,{icon:u,iconColor:`text-accent-green`,title:a(`settings.daemon.title`),children:(0,Y.jsx)(ut,{})}),o===`desktop`&&(0,Y.jsx)(Q,{icon:N,iconColor:`text-accent-blue`,title:a(`settings.nav.desktop`),children:(0,Y.jsx)(ft,{})}),o===`system`&&(0,Y.jsx)(jt,{}),o===`about`&&(0,Y.jsx)(Mt,{})]})},o)})]})]})]}):null});function xt({error:e,onRetry:t}){let{t:n}=R();return(0,Y.jsxs)(`div`,{role:`alert`,className:`rounded-xl border border-accent-red/30 bg-accent-red/5 p-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-accent-red`,children:[(0,Y.jsx)(k,{size:16,className:`shrink-0`}),(0,Y.jsx)(`span`,{children:n(`error.pageError`)})]}),(0,Y.jsx)(`p`,{className:`mt-1.5 text-xs text-dark-muted break-words`,children:e.message||n(`error.unknownError`)}),(0,Y.jsx)(H,{className:`mt-3 w-fit`,variant:`accent`,leftIcon:(0,Y.jsx)(A,{size:14}),onClick:t,children:n(`common.retry`)})]})}function St(){let{t:e}=R(),{language:t,setLanguage:n,developerView:r,setDeveloperView:i,effort:a}=Ce(),o=ce[le(a)],s=be(t),c=[{code:Se,label:e(`settings.languageAuto`)},...ve.map(e=>({code:e.code,label:e.label}))];return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(Q,{icon:C,iconColor:`text-accent-blue`,title:e(`settings.language`),children:[(0,Y.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:c.map(({code:e,label:t})=>(0,Y.jsx)(`button`,{lang:e===`auto`?void 0:e,onClick:()=>{n(e),e!==s&&U.config.language.set(ye(ge(e))).catch(()=>{})},className:`px-4 py-2 rounded-lg transition-all ${s===e?`bg-accent-blue text-accent-fg`:`bg-dark-hover text-dark-text hover:bg-dark-border`}`,children:t},e))}),(0,Y.jsx)(`p`,{className:`text-xs text-dark-muted mt-2`,children:e(`settings.languageHint`)})]}),(0,Y.jsx)(Q,{icon:y,iconColor:`text-accent-blue`,title:e(`settings.display`),children:(0,Y.jsxs)(`label`,{className:`flex items-center justify-between gap-3 py-1 cursor-pointer`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`div`,{className:`text-sm text-dark-text`,children:e(`settings.developerView`)}),(0,Y.jsx)(`div`,{className:`text-xs text-dark-muted mt-0.5`,children:e(`settings.developerViewHint`)})]}),(0,Y.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":r,onClick:()=>i(!r),className:`relative w-9 h-5 rounded-full transition-colors shrink-0 ${r?`bg-accent-blue`:`bg-dark-border`}`,children:(0,Y.jsx)(`span`,{className:`absolute top-0.5 left-0 w-4 h-4 rounded-full bg-white shadow transition-transform ${r?`translate-x-[18px]`:`translate-x-0.5`}`})})]})}),(0,Y.jsx)(Q,{icon:E,iconColor:`text-accent-yellow`,title:e(`settings.effort`),children:(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-4 py-1`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`div`,{className:`text-xs text-dark-muted`,children:e(`settings.effortHint`)}),(0,Y.jsx)(`div`,{className:`text-xs text-dark-muted mt-1`,children:o.hint})]}),(0,Y.jsx)(fe,{syncSession:!1})]})}),(0,Y.jsx)(Q,{icon:b,iconColor:`text-accent-yellow`,title:e(`settings.notifications.title`),children:(0,Y.jsx)(ht,{})})]})}function Ct(){let{t:e}=R(),{theme:t,setTheme:n,themePresetId:r,setThemePreset:i,customTheme:a,customThemeEnabled:s,setCustomTheme:c,setCustomThemeEnabled:l,resetCustomTheme:u}=Ce(),d=W(e=>e.customThemes),f=W(e=>e.rejected),p=W(e=>e.error),m=W(e=>e.loading),h=W(e=>e.load),g=W(e=>e.removeCustomTheme),[_,v]=(0,J.useState)(s),y=(0,J.useMemo)(()=>t===`dark`?`dark`:t===`light`?`light`:window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`,[t]),b=(0,J.useMemo)(()=>we(d),[d]);return(0,Y.jsxs)(Q,{icon:o,iconColor:`text-accent-purple`,title:e(`settings.theme`),children:[(0,Y.jsx)(`div`,{className:`flex gap-2 mb-4`,children:[`dark`,`light`,`auto`].map(r=>(0,Y.jsx)(`button`,{onClick:()=>n(r),className:`px-4 py-2 rounded-lg transition-all ${t===r?`bg-accent-blue text-accent-fg`:`bg-dark-hover text-dark-text hover:bg-dark-border`}`,children:e(r===`dark`?`settings.themeDark`:r===`light`?`settings.themeLight`:`settings.themeAuto`)},r))}),(0,Y.jsxs)(`div`,{className:`mb-4`,children:[(0,Y.jsx)(`h4`,{className:`text-xs font-semibold text-dark-text mb-2`,children:e(`settings.themePresets`)}),(0,Y.jsx)(`div`,{className:`grid grid-cols-2 sm:grid-cols-3 gap-2`,children:b.map(t=>{let n=(r||`graph`)===t.id,a=y===`dark`?t.dark:t.light,o=_e(t,e);return(0,Y.jsxs)(`div`,{className:`relative`,children:[(0,Y.jsx)(gt,{id:t.id,label:o,description:xe(t,e),colors:a,pattern:t.pattern,isSelected:n,onClick:()=>i(t.id)}),t.custom&&(0,Y.jsx)(`button`,{type:`button`,title:e(`settings.themeCustomDelete`,{name:o}),"aria-label":e(`settings.themeCustomDelete`,{name:o}),onClick:()=>{g(t.id)},className:`absolute top-1 start-1 flex h-4 w-4 items-center justify-center rounded-full border border-dark-border bg-dark-surface/90 text-badge leading-none text-dark-muted transition-colors hover:border-accent-red/50 hover:text-accent-red`,children:`×`})]},t.id)})}),(0,Y.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-x-3 gap-y-1 text-meta text-dark-muted`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{h(!0)},disabled:m,className:`inline-flex items-center gap-1 transition-colors hover:text-dark-text disabled:opacity-50`,children:[(0,Y.jsx)(A,{size:12,className:m?`animate-spin`:void 0}),e(`settings.themeCustomReload`)]}),(0,Y.jsx)(`span`,{children:e(`settings.themeCustomHint`)})]}),p&&(0,Y.jsx)(`p`,{className:`mt-1 text-meta text-accent-red`,children:e(`settings.themeCustomError`,{error:p})}),f.length>0&&(0,Y.jsx)(`ul`,{className:`mt-1 space-y-0.5 text-meta text-accent-yellow`,children:f.map((t,n)=>(0,Y.jsx)(`li`,{children:e(`settings.themeCustomRejected`,{index:t.index>=0?t.index+1:`-`,reason:t.reason})},`${t.index}-${n}`))})]}),(0,Y.jsxs)(`div`,{className:`pt-4 border-t border-dark-border`,children:[(0,Y.jsxs)(`button`,{onClick:()=>{let e=!_;v(e),l(e)},className:`flex items-center gap-2 text-sm text-dark-muted hover:text-dark-text transition-colors`,children:[(0,Y.jsx)(o,{size:14}),(0,Y.jsx)(`span`,{children:e(`settings.customOverrides`)}),(0,Y.jsx)(`span`,{className:`w-8 h-4 rounded-full transition-colors ${_?`bg-accent-blue`:`bg-dark-border`}`,children:(0,Y.jsx)(`span`,{className:`block w-3 h-3 rounded-full bg-white transition-transform mt-0.5 ${_?`ms-4`:`ms-0.5`}`})})]}),_&&(0,Y.jsx)(`p`,{className:`text-badge text-dark-muted mt-1 mb-2`,children:e(`settings.customOverridesHint`)}),_&&(0,Y.jsxs)(`div`,{className:`mt-3`,children:[(0,Y.jsx)(`div`,{className:`flex gap-1 mb-3 rounded-lg overflow-hidden h-6`,children:yt.map(({key:e})=>(0,Y.jsx)(`div`,{className:`flex-1`,style:{backgroundColor:a[e]},title:e},e))}),(0,Y.jsx)(`div`,{className:`grid grid-cols-2 gap-x-4 gap-y-2`,children:yt.map(({key:t,labelKey:n})=>(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`input`,{type:`color`,value:a[t],onChange:e=>c({[t]:e.target.value}),className:`w-8 h-8 rounded border border-dark-border cursor-pointer bg-transparent p-0.5 shrink-0`}),(0,Y.jsx)(`span`,{className:`text-xs text-dark-muted flex-1 truncate`,children:e(n)}),(0,Y.jsx)(`input`,{type:`text`,value:a[t],onChange:e=>{let n=e.target.value;/^#[0-9a-fA-F]{0,6}$/.test(n)&&c({[t]:n})},className:`w-16 bg-dark-bg border border-dark-border rounded px-1 py-0.5 text-xs text-dark-text font-mono text-center`,maxLength:7})]},t))}),(0,Y.jsx)(`button`,{onClick:u,className:`mt-2 text-xs text-dark-muted hover:text-accent-red transition-colors`,children:e(`settings.resetColors`)})]})]})]})}function wt(){let{t:e}=R();return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(Q,{icon:g,iconColor:`text-accent-blue`,title:e(`stt.setup.title`),children:(0,Y.jsx)(Ve,{})}),(0,Y.jsx)(Q,{icon:j,iconColor:`text-accent-purple`,title:e(`tts.setup.title`),children:(0,Y.jsx)(He,{})})]})}function Tt(){let{t:e}=R();return(0,Y.jsx)(Q,{icon:D,iconColor:`text-accent-purple`,title:e(`settings.profile.title`),children:(0,Y.jsx)(at,{})})}function Et({onNavigate:e}){return(0,Y.jsxs)(Q,{icon:_,iconColor:`text-accent-yellow`,title:`Provider & Models`,children:[(0,Y.jsx)(`p`,{className:`text-sm text-dark-muted mb-3`,children:`Configure AI providers, API keys, and model settings. Add or remove providers like OpenAI, Anthropic, DeepSeek, and more.`}),(0,Y.jsx)(H,{variant:`accent`,leftIcon:(0,Y.jsx)(c,{size:14}),onClick:()=>e?.(`models`),className:`w-fit`,children:`Manage Providers & Models`})]})}function Dt({onNavigate:e}){let{t}=R();return(0,Y.jsxs)(Q,{icon:N,iconColor:`text-accent-green`,title:t(`settings.capabilities.title`),children:[(0,Y.jsx)(`p`,{className:`text-sm text-dark-muted mb-3`,children:`Computer Use、外部服务连接器(X/Twitter、Gmail、Google Workspace、Microsoft 365 等)与 xAI (Grok) 统一在连接器页集中管理。`}),(0,Y.jsx)(H,{variant:`accent`,leftIcon:(0,Y.jsx)(c,{size:14}),onClick:()=>e?.(`connectors`),className:`w-fit`,children:`Manage Connectors & Capabilities`})]})}function Ot(){let{t:e}=R();return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(Q,{icon:m,iconColor:`text-accent-blue`,title:e(`settings.contextWindow.title`),children:(0,Y.jsx)(Ke,{})}),(0,Y.jsx)(Q,{icon:y,iconColor:`text-accent-purple`,title:e(`settings.contextOffload.title`),children:(0,Y.jsx)(Ue,{})})]})}function kt(){return(0,Y.jsx)(Q,{icon:r,iconColor:`text-accent-green`,title:`Config Files (~/.agent/)`,children:(0,Y.jsx)(Le,{})})}function At(){let{t:e}=R();return(0,Y.jsx)(Q,{icon:oe,iconColor:`text-accent-green`,title:e(`settings.sandbox.title`),children:(0,Y.jsx)(Je,{})})}function jt(){let[e,t]=G(),[n,r]=(0,J.useState)(0),[i,a]=(0,J.useState)(!1),[o,s]=(0,J.useState)(!1);(0,J.useEffect)(()=>{let e=!0,t=async()=>{try{let t=await U.system.status();e&&t.success&&t.data&&r(t.data.uptime)}catch{}};t();let n=setInterval(t,i?2e3:1e4);return()=>{e=!1,clearInterval(n)}},[i]);let c=(0,J.useCallback)(async()=>{if(await t({message:`Restart the server? All active sessions will be disconnected.`,variant:`danger`})){a(!0);try{let e=await U.system.restart();e.success?B.info(`Server restarting...`):(B.error(e.error||`Restart failed`),a(!1))}catch{B.error(`Failed to send restart request`),a(!1)}}},[t]),l=(0,J.useCallback)(async()=>{if(await t({title:`Shutdown server`,message:`This stops the entire backend process. All active sessions and unsaved work will be lost.`,confirmText:`Shut down`,variant:`danger`})){s(!0);try{let e=await U.system.shutdown();e.success?B.info(`Server shutting down...`):(B.error(e.error||`Shutdown failed`),s(!1))}catch{B.error(`Failed to send shutdown request`),s(!1)}}},[t]);return(0,J.useEffect)(()=>{i&&n<1e4&&(a(!1),B.success(`Server restarted`))},[n,i]),(0,Y.jsxs)(Q,{icon:u,iconColor:`text-dark-muted`,title:`System`,children:[e,(0,Y.jsxs)(`div`,{className:`space-y-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between text-sm`,children:[(0,Y.jsx)(`span`,{className:`text-dark-muted`,children:`Server Uptime`}),(0,Y.jsx)(`span`,{className:`text-dark-text font-mono`,children:(e=>{let t=Math.floor(e/1e3),n=Math.floor(t/60),r=Math.floor(n/60);return r>0?`${r}h ${n%60}m`:n>0?`${n}m ${t%60}s`:`${t}s`})(n)})]}),(0,Y.jsxs)(`button`,{onClick:c,disabled:i,className:`flex items-center gap-2 px-4 py-2 rounded-lg text-sm transition-all ${i?`bg-dark-hover text-dark-muted cursor-wait`:`bg-accent-red/10 text-accent-red hover:bg-accent-red/20 border border-accent-red/30`}`,children:[(0,Y.jsx)(A,{size:14,className:i?`animate-spin`:``}),i?`Restarting...`:`Restart Server`]}),(0,Y.jsxs)(`button`,{onClick:l,disabled:o,className:`flex items-center gap-2 px-4 py-2 rounded-lg text-sm transition-all ${o?`bg-dark-hover text-dark-muted cursor-wait`:`bg-accent-red/10 text-accent-red hover:bg-accent-red/20 border border-accent-red/30`}`,children:[(0,Y.jsx)(te,{size:14,className:o?`animate-pulse`:``}),o?`Shutting Down...`:`Shutdown Server`]})]})]})}function Mt(){let{t:e}=R();return(0,Y.jsx)(Q,{icon:I,iconColor:`text-accent-blue`,title:e(`settings.about`),children:(0,Y.jsxs)(`div`,{className:`text-sm text-dark-muted space-y-2`,children:[(0,Y.jsxs)(`p`,{children:[(0,Y.jsx)(`span`,{className:`text-dark-text`,children:`DeepSeekCode Web`}),` v`,_t.version]}),(0,Y.jsx)(`p`,{children:e(`settings.aboutDesc`)}),(0,Y.jsx)(`p`,{className:`text-xs`,children:`Powered by React + TypeScript + TailwindCSS`}),(0,Y.jsx)(`p`,{className:`text-xs`,children:`联系:ngwlh2026@gmail.com`}),(0,Y.jsxs)(`button`,{onClick:()=>Ee.getState().openWhatsNew(),className:`mt-2 flex items-center gap-2 px-4 py-2 rounded-lg text-sm transition-all bg-accent-blue/10 text-accent-blue hover:bg-accent-blue/20 border border-accent-blue/30`,children:[(0,Y.jsx)(n,{size:14}),e(`settings.whatsNew`)]})]})})}export{bt as SettingsModal};