cc-viewer 1.6.312 → 1.6.313

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.
@@ -1,2 +1,2 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/jszip.min-DDU-_oA-.js","assets/vendor-antd-Bur5ZxWE.js"])))=>i.map(i=>d[i]);
2
- var __defProp=Object.defineProperty,__publicField=(obj,key,value)=>((obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value)(obj,"symbol"!=typeof key?key+"":key,value);import{j as jsxRuntimeExports}from"./vendor-codemirror-Si44UqBp.js";import{a as reactExports,I as Icon,b as _extends,w as Tag,P as Popover,T as Tooltip,x as RefIcon$7,M as Modal,y as Input,i as Button,s as staticMethods,S as Spin,z as RefIcon$8,A as RefIcon$b,D as RefIcon$c,m as RefIcon$d,E as Dropdown,F as RefIcon$e,n as Switch,l as Select,k as RefIcon$g,G as Drawer,H as Empty,R as React__default,J as RefIcon$j,K as Segmented,L as RefIcon$k,N as Collapse,d as reactDomExports,O as Space,Q as RefIcon$l,p as RefIcon$m,U as Tabs,o as Radio,V as List,W as Typography,C as ConfigProvider,X as Layout,Y as Alert,Z as Checkbox,j as RefIcon$o}from"./vendor-antd-Bur5ZxWE.js";import{L as CachePopoverContent,Z as useProjectAlias,a0 as normalizeAlias,a1 as _internals,a2 as setProjectAlias,a3 as clearProjectAlias,S as SkillsManagerModal,V as RefIcon$9,a4 as RefIcon$a,a5 as RefIcon$f,a6 as IM_PLATFORMS,a7 as reconstructEntries,w as isMainAgent,a8 as mergeMainAgentSessions,a9 as cachedBuildToolResultMap,v as classifyUserContent,aa as ChatMessage,t as isSystemText,ab as RefIcon$h,ac as RefIcon$i,o as loadFsSkills,p as loadProjectMemory,q as loadClaudeMdList,r as parseImOrigin,d as computeTokenStats,e as computeToolUsageStats,g as computeSkillUsageStats,k as sharedChrome,m as formatTokenCount,C as ConceptHelp,h as computeCacheRebuildStats,ad as resolveTeammateNames,j as classifyRequest,z as sumUsageContextTokens,B as sumUsageInputTokens,ae as resolveCalibrationTokens,O as OPTIMISTIC_CLEAR_PERCENT,M as MemoryDetailModal,W as autoApproveSelectOptions,_ as PERM_AUTO_APPROVE_OPTIONS,$ as PLAN_AUTO_APPROVE_OPTIONS,X as VoicePackSettings,af as DISPLAY_SCALE_PRESETS,P as PluginModal,N as ProcessModal,Q as ProxyModal,D as adaptContextWindow,n as appConfig,ag as getModelShort,ah as formatRequestTag,ai as stripPrivateKeys,aj as renderMarkdown,ak as restoreSlimmedEntry,al as isClaudeMdReminder,am as isSkillsReminder,an as hasClaudeMdReminder,ao as hasSkillsReminder,ap as extractCachedContent,A as AppBase,aq as filterRelevantRequests,ar as findPrevMainAgentTimestamp,T as TerminalWsProvider,G as ApprovalModal,x as styles$f,R as RefIcon$n,J as ChatView,U as OpenFolderIcon}from"./seqResourceLoaders-BVRDP3Yd.js";import{t,a as apiUrl,S as SettingsContext,h as hasNativeZoom,d as isMac,L as LANG_OPTIONS,c as setLang,g as getLang,s as setViewMode,e as isMobile,f as isElectron}from"./index-4qAcuvOR.js";import{Q as QRCodeCanvas}from"./vendor-qrcode-Dn3GYC4l.js";import{_ as __vitePreload}from"./vendor-mdxeditor-Cco3AQJS.js";import"./vendor-xterm-DckPrCx1.js";import"./vendor-markdown-DOJHsAxX.js";import"./vendor-highlight-IFTJ9nxW.js";import"./vendor-virtuoso-CW9EqKMt.js";var BarChartOutlined$1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-600-80h56c4.4 0 8-3.6 8-8V560c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V384c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v320c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V462c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v242c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v400c0 4.4 3.6 8 8 8z"}}]},name:"bar-chart",theme:"outlined"},BarChartOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:BarChartOutlined$1}))},RefIcon$6=reactExports.forwardRef(BarChartOutlined),CodeOutlined$1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M516 673c0 4.4 3.4 8 7.5 8h185c4.1 0 7.5-3.6 7.5-8v-48c0-4.4-3.4-8-7.5-8h-185c-4.1 0-7.5 3.6-7.5 8v48zm-194.9 6.1l192-161c3.8-3.2 3.8-9.1 0-12.3l-192-160.9A7.95 7.95 0 00308 351v62.7c0 2.4 1 4.6 2.9 6.1L420.7 512l-109.8 92.2a8.1 8.1 0 00-2.9 6.1V673c0 6.8 7.9 10.5 13.1 6.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"}}]},name:"code",theme:"outlined"},CodeOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:CodeOutlined$1}))},RefIcon$5=reactExports.forwardRef(CodeOutlined),ExportOutlined$1={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 912H144c-17.7 0-32-14.3-32-32V144c0-17.7 14.3-32 32-32h360c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H184v656h656V520c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v360c0 17.7-14.3 32-32 32zM770.87 199.13l-52.2-52.2a8.01 8.01 0 014.7-13.6l179.4-21c5.1-.6 9.5 3.7 8.9 8.9l-21 179.4c-.8 6.6-8.9 9.4-13.6 4.7l-52.4-52.4-256.2 256.2a8.03 8.03 0 01-11.3 0l-42.4-42.4a8.03 8.03 0 010-11.3l256.1-256.3z"}}]},name:"export",theme:"outlined"},ExportOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:ExportOutlined$1}))},RefIcon$4=reactExports.forwardRef(ExportOutlined),ImportOutlined$1={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 912H144c-17.7 0-32-14.3-32-32V144c0-17.7 14.3-32 32-32h360c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H184v656h656V520c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v360c0 17.7-14.3 32-32 32zM653.3 424.6l52.2 52.2a8.01 8.01 0 01-4.7 13.6l-179.4 21c-5.1.6-9.5-3.7-8.9-8.9l21-179.4c.8-6.6 8.9-9.4 13.6-4.7l52.4 52.4 256.2-256.2c3.1-3.1 8.2-3.1 11.3 0l42.4 42.4c3.1 3.1 3.1 8.2 0 11.3L653.3 424.6z"}}]},name:"import",theme:"outlined"},ImportOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:ImportOutlined$1}))},RefIcon$3=reactExports.forwardRef(ImportOutlined),MessageOutlined$1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M464 512a48 48 0 1096 0 48 48 0 10-96 0zm200 0a48 48 0 1096 0 48 48 0 10-96 0zm-400 0a48 48 0 1096 0 48 48 0 10-96 0zm661.2-173.6c-22.6-53.7-55-101.9-96.3-143.3a444.35 444.35 0 00-143.3-96.3C630.6 75.7 572.2 64 512 64h-2c-60.6.3-119.3 12.3-174.5 35.9a445.35 445.35 0 00-142 96.5c-40.9 41.3-73 89.3-95.2 142.8-23 55.4-34.6 114.3-34.3 174.9A449.4 449.4 0 00112 714v152a46 46 0 0046 46h152.1A449.4 449.4 0 00510 960h2.1c59.9 0 118-11.6 172.7-34.3a444.48 444.48 0 00142.8-95.2c41.3-40.9 73.8-88.7 96.5-142 23.6-55.2 35.6-113.9 35.9-174.5.3-60.9-11.5-120-34.8-175.6zm-151.1 438C704 845.8 611 884 512 884h-1.7c-60.3-.3-120.2-15.3-173.1-43.5l-8.4-4.5H188V695.2l-4.5-8.4C155.3 633.9 140.3 574 140 513.7c-.4-99.7 37.7-193.3 107.6-263.8 69.8-70.5 163.1-109.5 262.8-109.9h1.7c50 0 98.5 9.7 144.2 28.9 44.6 18.7 84.6 45.6 119 80 34.3 34.3 61.3 74.4 80 119 19.4 46.2 29.1 95.2 28.9 145.8-.6 99.6-39.7 192.9-110.1 262.7z"}}]},name:"message",theme:"outlined"},MessageOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:MessageOutlined$1}))},RefIcon$2=reactExports.forwardRef(MessageOutlined),PushpinFilled$1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M878.3 392.1L631.9 145.7c-6.5-6.5-15-9.7-23.5-9.7s-17 3.2-23.5 9.7L423.8 306.9c-12.2-1.4-24.5-2-36.8-2-73.2 0-146.4 24.1-206.5 72.3-15.4 12.3-16.6 35.4-2.7 49.4l181.7 181.7-215.4 215.2a15.8 15.8 0 00-4.6 9.8l-3.4 37.2c-.9 9.4 6.6 17.4 15.9 17.4.5 0 1 0 1.5-.1l37.2-3.4c3.7-.3 7.2-2 9.8-4.6l215.4-215.4 181.7 181.7c6.5 6.5 15 9.7 23.5 9.7 9.7 0 19.3-4.2 25.9-12.4 56.3-70.3 79.7-158.3 70.2-243.4l161.1-161.1c12.9-12.8 12.9-33.8 0-46.8z"}}]},name:"pushpin",theme:"filled"},PushpinFilled=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:PushpinFilled$1}))},RefIcon$1=reactExports.forwardRef(PushpinFilled),PushpinOutlined$1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M878.3 392.1L631.9 145.7c-6.5-6.5-15-9.7-23.5-9.7s-17 3.2-23.5 9.7L423.8 306.9c-12.2-1.4-24.5-2-36.8-2-73.2 0-146.4 24.1-206.5 72.3a33.23 33.23 0 00-2.7 49.4l181.7 181.7-215.4 215.2a15.8 15.8 0 00-4.6 9.8l-3.4 37.2c-.9 9.4 6.6 17.4 15.9 17.4.5 0 1 0 1.5-.1l37.2-3.4c3.7-.3 7.2-2 9.8-4.6l215.4-215.4 181.7 181.7c6.5 6.5 15 9.7 23.5 9.7 9.7 0 19.3-4.2 25.9-12.4 56.3-70.3 79.7-158.3 70.2-243.4l161.1-161.1c12.9-12.8 12.9-33.8 0-46.8zM666.2 549.3l-24.5 24.5 3.8 34.4a259.92 259.92 0 01-30.4 153.9L262 408.8c12.9-7.1 26.3-13.1 40.3-17.9 27.2-9.4 55.7-14.1 84.7-14.1 9.6 0 19.3.5 28.9 1.6l34.4 3.8 24.5-24.5L608.5 224 800 415.5 666.2 549.3z"}}]},name:"pushpin",theme:"outlined"},PushpinOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:PushpinOutlined$1}))},RefIcon=reactExports.forwardRef(PushpinOutlined);function parsePinned(raw){if("string"!=typeof raw||""===raw)return[];let arr;try{arr=JSON.parse(raw)}catch{return[]}if(!Array.isArray(arr))return[];const seen=new Set,out=[];for(const item2 of arr)"string"==typeof item2&&""!==item2&&(seen.has(item2)||(seen.add(item2),out.push(item2)));return out}function togglePinned(arr,key){const list=function(arr){if(!Array.isArray(arr))return[];const seen=new Set,out=[];for(const item2 of arr)"string"==typeof item2&&""!==item2&&(seen.has(item2)||(seen.add(item2),out.push(item2)));return out}(arr);return"string"!=typeof key||""===key?list:list.includes(key)?list.filter(k=>k!==key):[...list,key]}const styles$e_liveTag="_liveTag_8g4c3_3",styles$e_liveTagFill="_liveTagFill_8g4c3_23",styles$e_liveTagContent="_liveTagContent_8g4c3_44",styles$e_liveTagHistory="_liveTagHistory_8g4c3_52",styles$e_liveTagText="_liveTagText_8g4c3_59",styles$e_cachePopoverPlaceholder="_cachePopoverPlaceholder_8g4c3_65",POPOVER_OVERLAY_STYLE$1={background:"var(--bg-elevated)",border:"1px solid var(--border-hover)",borderRadius:8,padding:"8px 8px"};const LiveTagPopover$1=reactExports.memo(function({isLocalLog:isLocalLog,localLogFile:localLogFile,cachePopoverOpen:cachePopoverOpen,onOpenChange:onOpenChange,requests:requests,serverCachedContent:serverCachedContent,contextPercent:contextPercent,contextTokens:contextTokens,ctxColor:ctxColor,onSkillImported:onSkillImported,fsSkills:fsSkills,memory:memory,memoryRefreshing:memoryRefreshing,claudeMd:claudeMd,calibrationModel:calibrationModel,onCalibrationModelChange:onCalibrationModelChange,onOpenMemoryDetail:onOpenMemoryDetail,onOpenClaudeMd:onOpenClaudeMd,onOpenSkillsModal:onOpenSkillsModal,onRefreshMemory:onRefreshMemory,projectName:projectName}){const triggerStyle=reactExports.useMemo(()=>({"--ctx-color":ctxColor,"--ctx-percent":`${contextPercent}%`}),[ctxColor,contextPercent]);return isLocalLog?jsxRuntimeExports.jsx(Tag,{className:`${styles$e_liveTag} ${styles$e_liveTagHistory}`,children:jsxRuntimeExports.jsx("span",{className:styles$e_liveTagText,children:t("ui.historyLog",{file:localLogFile})})}):jsxRuntimeExports.jsx(Popover,{content:cachePopoverOpen?jsxRuntimeExports.jsx(CachePopoverContent,{requests:requests,serverCachedContent:serverCachedContent,contextPercent:contextPercent,contextTokens:contextTokens,fsSkills:fsSkills,memory:memory,memoryRefreshing:memoryRefreshing,claudeMd:claudeMd,calibrationModel:calibrationModel,onCalibrationModelChange:onCalibrationModelChange,onOpenMemoryDetail:onOpenMemoryDetail,onOpenClaudeMd:onOpenClaudeMd,onOpenSkillsModal:onOpenSkillsModal,onSkillImported:onSkillImported,onRefreshMemory:onRefreshMemory}):jsxRuntimeExports.jsx("div",{className:styles$e_cachePopoverPlaceholder}),trigger:"hover",placement:"topRight",overlayInnerStyle:POPOVER_OVERLAY_STYLE$1,open:cachePopoverOpen,onOpenChange:onOpenChange,children:jsxRuntimeExports.jsxs("span",{className:styles$e_liveTag,style:triggerStyle,children:[jsxRuntimeExports.jsx("span",{className:styles$e_liveTagFill}),jsxRuntimeExports.jsx("span",{className:styles$e_liveTagContent,children:jsxRuntimeExports.jsx("span",{className:styles$e_liveTagText,children:contextTokens>0?`${(contextTokens/1e3).toFixed(1)}K (${contextPercent}%)`:`${contextPercent}%`})})]})})}),styles$d_editButton="_editButton_31hdb_10",styles$d_footer="_footer_31hdb_55",styles$d_footerLeft="_footerLeft_31hdb_61",styles$d_footerRight="_footerRight_31hdb_65",styles$d_projectNameRow="_projectNameRow_31hdb_70",styles$d_projectNameLabel="_projectNameLabel_31hdb_80",styles$d_projectNameValue="_projectNameValue_31hdb_83",ALIAS_MAX_LEN=_internals.MAX_LEN;function ProjectAliasEditor({projectName:projectName,isLocalLog:isLocalLog=!1}){const alias=useProjectAlias(projectName),[open,setOpen]=reactExports.useState(!1),[draft,setDraft]=reactExports.useState(""),[dirty,setDirty]=reactExports.useState(!1);if(reactExports.useEffect(()=>{open?dirty||setDraft(alias||""):setDirty(!1)},[open,alias,dirty]),!projectName||isLocalLog)return null;const valueDiffers=normalizeAlias(draft)!==(alias||""),handleSave=()=>{setProjectAlias(projectName,draft)?setOpen(!1):staticMethods.error(t("ui.projectAlias.saveFailed"))},tooltipLabel=t("ui.projectAlias.tooltip");return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Tooltip,{title:tooltipLabel,placement:"top",children:jsxRuntimeExports.jsx("button",{type:"button",className:styles$d_editButton,"aria-label":tooltipLabel,onClick:()=>setOpen(!0),"data-alias-edit-trigger":"",children:jsxRuntimeExports.jsx(RefIcon$7,{})})}),jsxRuntimeExports.jsxs(Modal,{title:t("ui.projectAlias.modalTitle"),open:open,onCancel:()=>setOpen(!1),destroyOnClose:!0,width:420,footer:jsxRuntimeExports.jsxs("div",{className:styles$d_footer,children:[jsxRuntimeExports.jsx("div",{className:styles$d_footerLeft,children:alias?jsxRuntimeExports.jsx(Button,{danger:!0,onClick:()=>{clearProjectAlias(projectName)?setOpen(!1):staticMethods.error(t("ui.projectAlias.saveFailed"))},children:t("ui.projectAlias.clear")}):null}),jsxRuntimeExports.jsxs("div",{className:styles$d_footerRight,children:[jsxRuntimeExports.jsx(Button,{onClick:()=>setOpen(!1),children:t("ui.projectAlias.cancel")}),jsxRuntimeExports.jsx(Button,{type:"primary",disabled:!valueDiffers,onClick:handleSave,children:t("ui.projectAlias.save")})]})]}),children:[jsxRuntimeExports.jsxs("div",{className:styles$d_projectNameRow,children:[jsxRuntimeExports.jsx("span",{className:styles$d_projectNameLabel,children:t("ui.projectAlias.projectLabel")}),jsxRuntimeExports.jsx("span",{className:styles$d_projectNameValue,children:projectName})]}),jsxRuntimeExports.jsx(Input,{autoFocus:!0,value:draft,onChange:e=>{setDraft(e.target.value),setDirty(!0)},onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),valueDiffers&&handleSave())},placeholder:t("ui.projectAlias.placeholder"),maxLength:ALIAS_MAX_LEN,showCount:!0,allowClear:!0})]})]})}const imTr=(key,params,fallback)=>{try{const r=t(key,params);return r&&r!==key?r:fallback}catch{return fallback}};function ImClaudeMdModal({open:open,platform:platform,onClose:onClose}){const[content2,setContent]=reactExports.useState(""),[loading,setLoading]=reactExports.useState(!1),[saving,setSaving]=reactExports.useState(!1);reactExports.useEffect(()=>{if(!open||!platform)return;let cancelled=!1;return setLoading(!0),fetch(apiUrl(`/api/im/${encodeURIComponent(platform)}/claude-md`)).then(r=>r.ok?r.json():Promise.reject(new Error("load failed"))).then(d=>{cancelled||setContent("string"==typeof d.content?d.content:"")}).catch(()=>{cancelled||staticMethods.error(imTr("ui.imRecord.loadFailed",null,"Load failed"))}).finally(()=>{cancelled||setLoading(!1)}),()=>{cancelled=!0}},[open,platform]);return jsxRuntimeExports.jsx(Modal,{open:open,onCancel:onClose,onOk:async()=>{setSaving(!0);try{const r=await fetch(apiUrl(`/api/im/${encodeURIComponent(platform)}/claude-md`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:content2})});if(!r.ok){const j=await r.json().catch(()=>({}));throw new Error(j.error||`HTTP ${r.status}`)}staticMethods.success(imTr("ui.im.personaSaved",null,"Saved — takes effect after you restart this IM")),onClose()}catch(e){staticMethods.error(imTr("ui.im.saveFailed",null,"Save failed")+((null==e?void 0:e.message)?`: ${e.message}`:""))}finally{setSaving(!1)}},okText:imTr("ui.im.save",null,"Save"),cancelText:imTr("ui.cancel",null,"Cancel"),confirmLoading:saving,okButtonProps:{disabled:loading},width:680,destroyOnClose:!0,title:imTr("ui.im.persona",null,"Model personality"),styles:{content:{background:"var(--bg-elevated)"},header:{background:"var(--bg-elevated)"}},children:loading?jsxRuntimeExports.jsx("div",{style:{textAlign:"center",padding:"40px 0"},children:jsxRuntimeExports.jsx(Spin,{})}):jsxRuntimeExports.jsx(Input.TextArea,{value:content2,onChange:e=>setContent(e.target.value),autoSize:{minRows:16,maxRows:28},spellCheck:!1,style:{fontFamily:"var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace)",fontSize:13}})})}function ImSkillsModal({open:open,platform:platform,reloadKey:reloadKey,onClose:onClose}){const[skills,setSkills]=reactExports.useState([]),[loading,setLoading]=reactExports.useState(!1),[error,setError]=reactExports.useState(null),[toggling,setToggling]=reactExports.useState(()=>new Set);reactExports.useEffect(()=>{if(!open||!platform)return;let cancelled=!1;return setLoading(!0),setError(null),fetch(apiUrl(`/api/im/${encodeURIComponent(platform)}/skills`)).then(r=>r.ok?r.json():Promise.reject(new Error(`http:${r.status}`))).then(d=>{cancelled||setSkills(Array.isArray(d.skills)?d.skills:[])}).catch(e=>{cancelled||setError(String((null==e?void 0:e.message)||"load_failed"))}).finally(()=>{cancelled||setLoading(!1)}),()=>{cancelled=!0}},[open,platform,reloadKey]);return jsxRuntimeExports.jsx(SkillsManagerModal,{open:open,onClose:onClose,loading:loading,error:error,skills:skills,toggling:toggling,onToggle:async skill=>{const enable=!skill.enabled,key=`${skill.source}-${skill.name}`,same=s=>s.name===skill.name&&s.source===skill.source;setToggling(prev=>new Set(prev).add(key)),setSkills(prev=>prev.map(s=>same(s)?{...s,enabled:enable}:s));try{const r=await fetch(apiUrl(`/api/im/${encodeURIComponent(platform)}/skills/toggle`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:skill.name,enable:enable})});if(!r.ok){const j=await r.json().catch(()=>({}));throw Object.assign(new Error(j.error||`http:${r.status}`),{code:j.code})}staticMethods.success(imTr("ui.im.skillsRestartHint",null,"Updated — takes effect after you restart this IM"))}catch(e){setSkills(prev=>prev.map(s=>same(s)?{...s,enabled:!enable}:s)),staticMethods.error("DEST_CONFLICT"===(null==e?void 0:e.code)?imTr("ui.skillToggleConflict",{name:skill.name},"A duplicate already exists; clean up and retry"):imTr("ui.skillToggleFailed",{reason:(null==e?void 0:e.message)||""},"Toggle failed"))}finally{setToggling(prev=>{const n=new Set(prev);return n.delete(key),n})}}})}const styles$c_panel="_panel_1nxl3_1",styles$c_required="_required_1nxl3_7",styles$c_optional="_optional_1nxl3_12",styles$c_row="_row_1nxl3_19",styles$c_label="_label_1nxl3_26",styles$c_control="_control_1nxl3_31",styles$c_field="_field_1nxl3_37",styles$c_fieldLabel="_fieldLabel_1nxl3_43",styles$c_warn="_warn_1nxl3_54",styles$c_hint="_hint_1nxl3_60",styles$c_helpIcon="_helpIcon_1nxl3_67",styles$c_detailsToggle="_detailsToggle_1nxl3_74",styles$c_details="_details_1nxl3_74",styles$c_actions="_actions_1nxl3_98",styles$c_testBtn="_testBtn_1nxl3_108",SUPPORTS_DIRECTORY_UPLOAD="undefined"!=typeof document&&"webkitdirectory"in document.createElement("input");function defaultValue(field2){var _a,_b;return"tags"===field2.type?[]:"switch"!==field2.type&&("select"===field2.type?field2.default??(null==(_b=null==(_a=field2.options)?void 0:_a[0])?void 0:_b.value)??"":"")}function ImPlatformSettings({descriptor:descriptor}){var _a;const initialValues=reactExports.useMemo(()=>{const v={};for(const f of descriptor.fields)v[f.key]=defaultValue(f);return v},[descriptor]),[enabled,setEnabled]=reactExports.useState(!1),[values,setValues]=reactExports.useState(initialValues),[hasSecret,setHasSecret]=reactExports.useState(!1),[connection,setConnection]=reactExports.useState(null),[proc,setProc]=reactExports.useState(null),[starting,setStarting]=reactExports.useState(!1),[stopping,setStopping]=reactExports.useState(!1),[testing,setTesting]=reactExports.useState(!1),[showDetails,setShowDetails]=reactExports.useState(!1),[claudeMdOpen,setClaudeMdOpen]=reactExports.useState(!1),[skillsModalOpen,setSkillsModalOpen]=reactExports.useState(!1),[skillsReloadKey,setSkillsReloadKey]=reactExports.useState(0),skillFileInputRef=reactExports.useRef(null),skillFolderInputRef=reactExports.useRef(null),label2=(()=>{try{return imTr(descriptor.labelKey,null,descriptor.fallback)}catch{return descriptor.fallback}})(),postSkillImport=async file=>{try{const form=new FormData;form.append("file",file);const resp=await fetch(apiUrl(`/api/im/${encodeURIComponent(descriptor.id)}/skills/import`),{method:"POST",body:form}),data=await resp.json().catch(()=>({}));if(!resp.ok){let reason=data.error||resp.statusText;return"INVALID_TYPE"===data.code?reason=imTr("ui.skills.invalidType",null,"Only .zip or SKILL.md"):"MISSING_SKILL_MD"===data.code&&(reason=imTr("ui.skills.zipMissingSkillMd",null,"SKILL.md not found in the zip")),void staticMethods.error(imTr("ui.skills.uploadFailed",{reason:reason},`Failed to add skill: ${reason}`))}staticMethods.success(imTr("ui.im.skillsRestartHint",null,"Updated — takes effect after you restart this IM")),setSkillsReloadKey(k=>k+1)}catch(err){staticMethods.error(imTr("ui.skills.uploadFailed",{reason:(null==err?void 0:err.message)||"network"},"Failed to add skill"))}},skillAddMenu={items:[...SUPPORTS_DIRECTORY_UPLOAD?[{key:"folder",icon:jsxRuntimeExports.jsx(RefIcon$8,{}),label:imTr("ui.skills.addFolder",null,"Select folder"),onClick:()=>{var _a2;return null==(_a2=skillFolderInputRef.current)?void 0:_a2.click()}}]:[],{key:"zip",icon:jsxRuntimeExports.jsx(RefIcon$9,{}),label:imTr("ui.skills.addZip",null,"Upload .zip"),onClick:()=>{skillFileInputRef.current&&(skillFileInputRef.current.accept=".zip",skillFileInputRef.current.click())}},{key:"md",icon:jsxRuntimeExports.jsx(RefIcon$a,{}),label:imTr("ui.skills.addMd",null,"Upload SKILL.md"),onClick:()=>{skillFileInputRef.current&&(skillFileInputRef.current.accept=".md",skillFileInputRef.current.click())}}]},valuesRef=reactExports.useRef(initialValues),enabledRef=reactExports.useRef(!1),lastSavedSigRef=reactExports.useRef(null),mountedRef=reactExports.useRef(!0),busyRef=reactExports.useRef(!1),writeValues=next=>{valuesRef.current=next,setValues(next)},setField=(key,val)=>writeValues({...valuesRef.current,[key]:val}),fieldSig=reactExports.useCallback((vals,en)=>{const o={enabled:en};for(const f of descriptor.fields)"password"===f.type?vals[f.key]&&(o[f.key]=vals[f.key]):o[f.key]=vals[f.key];return JSON.stringify(o)},[descriptor]),buildBody=(vals,en,applyProcess)=>{const body={enabled:en,applyProcess:applyProcess};for(const f of descriptor.fields)"password"===f.type?vals[f.key]&&(body[f.key]=vals[f.key]):body[f.key]=vals[f.key];return body},postConfig=reactExports.useCallback(async body=>{try{const r=await fetch(apiUrl(descriptor.endpoints.config),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(body)});if(!r.ok){let detail="";try{const e=await r.json();detail=e.detail||e.error||""}catch{detail=`HTTP ${r.status}`}return{ok:!1,detail:detail}}return{ok:!0}}catch{return{ok:!1,detail:""}}},[descriptor]),fetchStatus=reactExports.useCallback(async full=>{let d=null,ok=!1;try{const r=await fetch(apiUrl(descriptor.endpoints.status));r.ok&&(d=await r.json(),ok=!0)}catch{}if(!mountedRef.current)return d;if(!ok)return setConnection({running:!1,connected:!1}),setProc(null),null;if(setConnection(d.connection||null),setProc(d.process||null),setEnabled(!!d.enabled),enabledRef.current=!!d.enabled,full){setHasSecret(!!d.hasSecret);const v={};for(const f of descriptor.fields){const incoming=d[f.key];"tags"===f.type?v[f.key]=Array.isArray(incoming)?incoming:[]:"switch"===f.type?v[f.key]=!!incoming:v[f.key]=incoming??defaultValue(f)}writeValues(v),lastSavedSigRef.current=fieldSig(v,!!d.enabled)}return d},[descriptor,fieldSig]);reactExports.useEffect(()=>{mountedRef.current=!0,fetchStatus(!0);const id=setInterval(()=>{busyRef.current||fetchStatus(!1)},5e3);return()=>{mountedRef.current=!1,clearInterval(id)}},[fetchStatus]);const commit=reactExports.useCallback(async()=>{const sig=fieldSig(valuesRef.current,enabledRef.current);if(sig===lastSavedSigRef.current)return;const{ok:ok,detail:detail}=await postConfig(buildBody(valuesRef.current,enabledRef.current,!1));ok?(lastSavedSigRef.current=sig,setHasSecret(prev=>prev||descriptor.fields.some(f=>"password"===f.type&&valuesRef.current[f.key]))):staticMethods.error(imTr("ui.im.saveFailed",null,"Save failed")+(detail?`: ${detail}`:""))},[descriptor,fieldSig,postConfig]),setFieldAndCommit=(key,val)=>{setField(key,val),commit()},allowlistField=descriptor.fields.find(f=>"tags"===f.type),procState=null==proc?void 0:proc.state,showStop=stopping||enabled&&!starting,renderField=f=>"switch"===f.type?jsxRuntimeExports.jsxs("div",{className:styles$c_row,children:[jsxRuntimeExports.jsxs("span",{className:styles$c_label,children:[imTr(f.labelKey,null,f.fallback),f.helpKey&&jsxRuntimeExports.jsx(Tooltip,{title:imTr(f.helpKey,null,f.helpFallback),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$c_helpIcon})})]}),jsxRuntimeExports.jsx("span",{className:styles$c_control,children:jsxRuntimeExports.jsx(Switch,{checked:!!values[f.key],onChange:v=>setFieldAndCommit(f.key,v)})})]},f.key):jsxRuntimeExports.jsxs("div",{className:styles$c_field,children:[jsxRuntimeExports.jsxs("label",{className:styles$c_fieldLabel,children:[imTr(f.labelKey,null,f.fallback),f.required&&jsxRuntimeExports.jsx("span",{className:styles$c_required,children:"*"}),f.helpKey?jsxRuntimeExports.jsx(Tooltip,{title:imTr(f.helpKey,null,f.helpFallback),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$c_helpIcon})}):f.optional?jsxRuntimeExports.jsx("span",{className:styles$c_optional,children:imTr("ui.im.optional",null,"Optional")}):null]}),"text"===f.type&&jsxRuntimeExports.jsx(Input,{value:values[f.key],onChange:e=>setField(f.key,e.target.value),onBlur:commit,placeholder:imTr(f.labelKey,null,f.fallback),autoComplete:"off"}),"password"===f.type&&jsxRuntimeExports.jsx(Input.Password,{value:values[f.key],onChange:e=>setField(f.key,e.target.value),onBlur:commit,placeholder:hasSecret?`•••••• ${imTr("ui.im.secretSaved",null,"Saved (leave blank to keep)")}`:imTr(f.labelKey,null,f.fallback),autoComplete:"new-password"}),"select"===f.type&&jsxRuntimeExports.jsx(Select,{value:values[f.key],onChange:v=>setFieldAndCommit(f.key,v),style:{width:"100%"},options:f.options.map(o=>({value:o.value,label:imTr(o.labelKey,null,o.fallback)}))}),"tags"===f.type&&jsxRuntimeExports.jsx(Select,{mode:"tags",value:values[f.key],onChange:v=>setFieldAndCommit(f.key,v),tokenSeparators:[","," "],placeholder:imTr(f.placeholderKey,null,f.placeholderFallback),style:{width:"100%"},open:!1})]},f.key),mainFields=descriptor.fields.filter(f=>"more"!==f.section),moreFields=descriptor.fields.filter(f=>"more"===f.section);return jsxRuntimeExports.jsxs("div",{className:styles$c_panel,children:[jsxRuntimeExports.jsxs("div",{className:styles$c_row,children:[jsxRuntimeExports.jsx("span",{className:styles$c_label,children:imTr(descriptor.enable.key,null,descriptor.enable.fallback)}),jsxRuntimeExports.jsx("span",{className:styles$c_control,children:(()=>{if(null==connection?void 0:connection.lastError)return jsxRuntimeExports.jsxs(Tag,{color:"error",children:[imTr("ui.im.statusError",null,"Error"),": ",connection.lastError]});const portSuffix=(null==proc?void 0:proc.port)?` :${proc.port}`:"";return procState?"ready"===procState?(null==connection?void 0:connection.connected)?jsxRuntimeExports.jsxs(Tag,{color:"success",children:[imTr("ui.im.statusConnected",null,"Connected"),portSuffix]}):jsxRuntimeExports.jsxs(Tag,{color:"processing",children:[imTr("ui.im.statusRunning",null,"Running, connecting…"),portSuffix]}):"booting"===procState?jsxRuntimeExports.jsx(Tag,{color:"processing",children:imTr("ui.im.statusBooting",null,"Starting…")}):"hung"===procState?jsxRuntimeExports.jsx(Tag,{color:"warning",children:imTr("ui.im.statusHung",null,"Not responding")}):jsxRuntimeExports.jsx(Tag,{children:imTr("ui.im.statusDisconnected",null,"Disconnected")}):connection?connection.connected?jsxRuntimeExports.jsx(Tag,{color:"success",children:imTr("ui.im.statusConnected",null,"Connected")}):connection.running?jsxRuntimeExports.jsx(Tag,{color:"processing",children:imTr("ui.im.statusRunning",null,"Running, connecting…")}):jsxRuntimeExports.jsx(Tag,{children:imTr("ui.im.statusDisconnected",null,"Disconnected")}):null})()})]}),mainFields.map(renderField),(moreFields.length>0||(null==(_a=descriptor.notes)?void 0:_a.length)>0)&&jsxRuntimeExports.jsxs("button",{type:"button",className:styles$c_detailsToggle,onClick:()=>setShowDetails(v=>!v),children:[showDetails?jsxRuntimeExports.jsx(RefIcon$b,{}):jsxRuntimeExports.jsx(RefIcon$c,{}),jsxRuntimeExports.jsx("span",{children:imTr("ui.im.moreSettings",null,"More settings")})]}),showDetails&&jsxRuntimeExports.jsxs("div",{className:styles$c_details,children:[moreFields.map(renderField),jsxRuntimeExports.jsxs("div",{className:styles$c_row,children:[jsxRuntimeExports.jsxs("span",{className:styles$c_label,children:[imTr("ui.im.persona",null,"Model personality"),jsxRuntimeExports.jsx(Tooltip,{title:imTr("ui.im.personaHelp",null,"Edit this IM's CLAUDE.md to define the bot's personality and behavior; takes effect after you restart this IM."),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$c_helpIcon})})]}),jsxRuntimeExports.jsx("span",{className:styles$c_control,children:jsxRuntimeExports.jsx(Button,{size:"small",onClick:()=>setClaudeMdOpen(!0),children:imTr("ui.im.edit",null,"Edit")})})]}),jsxRuntimeExports.jsxs("div",{className:styles$c_row,children:[jsxRuntimeExports.jsxs("span",{className:styles$c_label,children:[label2," ",imTr("ui.im.skillsRow",null,"SKILL management")]}),jsxRuntimeExports.jsxs("span",{className:styles$c_control,style:{display:"inline-flex",gap:8},children:[jsxRuntimeExports.jsx(Dropdown,{trigger:["click"],menu:skillAddMenu,children:jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$e,{}),children:imTr("ui.skills.add",null,"Add")})}),jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$f,{}),onClick:()=>setSkillsModalOpen(!0),children:imTr("ui.skillManage",null,"Manage")})]})]}),(descriptor.notes||[]).map((n,i)=>jsxRuntimeExports.jsx("div",{className:"warn"===n.kind?styles$c_warn:styles$c_hint,children:imTr(n.key,null,n.fallback)},i))]}),jsxRuntimeExports.jsx(ImClaudeMdModal,{open:claudeMdOpen,platform:descriptor.id,onClose:()=>setClaudeMdOpen(!1)}),jsxRuntimeExports.jsx(ImSkillsModal,{open:skillsModalOpen,platform:descriptor.id,reloadKey:skillsReloadKey,onClose:()=>setSkillsModalOpen(!1)}),jsxRuntimeExports.jsx("input",{type:"file",ref:skillFileInputRef,style:{display:"none"},accept:".zip,.md",onChange:async e=>{var _a2;const file=null==(_a2=e.target.files)?void 0:_a2[0];if(e.target.value="",!file)return;const lower=file.name.toLowerCase();lower.endsWith(".zip")||lower.endsWith(".md")?await postSkillImport(file):staticMethods.error(imTr("ui.skills.invalidType",null,"Only .zip or SKILL.md"))}}),SUPPORTS_DIRECTORY_UPLOAD&&jsxRuntimeExports.jsx("input",{type:"file",ref:skillFolderInputRef,style:{display:"none"},webkitdirectory:"",directory:"",onChange:async e=>{const fileList=e.target.files;if(e.target.value="",!fileList||0===fileList.length)return;const files=Array.from(fileList);if(files.some(f=>{const parts=(f.webkitRelativePath||"").split("/");return 2===parts.length&&"skill.md"===parts[1].toLowerCase()}))try{const zip=new(0,(await __vitePreload(async()=>{const{default:__vite_default__}=await import("./jszip.min-DDU-_oA-.js").then(n=>n.j);return{default:__vite_default__}},__vite__mapDeps([0,1]))).default);for(const f of files){const rel=f.webkitRelativePath||f.name;rel&&!rel.includes("..")&&zip.file(rel,f)}const blob=await zip.generateAsync({type:"blob"}),rootName=(files[0].webkitRelativePath||"").split("/")[0]||"skill";await postSkillImport(new File([blob],`${rootName}.zip`,{type:"application/zip"}))}catch(err){staticMethods.error(imTr("ui.skills.uploadFailed",{reason:(null==err?void 0:err.message)||"pack failed"},"Failed to add skill"))}else staticMethods.error(imTr("ui.skills.folderMissingSkillMd",null,"SKILL.md not found at the folder root"))}}),jsxRuntimeExports.jsxs("div",{className:styles$c_actions,children:[jsxRuntimeExports.jsx(Button,{className:styles$c_testBtn,onClick:async()=>{setTesting(!0);try{const r=await fetch(apiUrl(descriptor.endpoints.test),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(buildBody(valuesRef.current,enabledRef.current,!1))}),d=await r.json();d.ok?staticMethods.success(imTr("ui.im.testOk",null,"Connection OK")):staticMethods.error(imTr("ui.im.testFail",null,"Connection failed")+(d.detail?`: ${d.detail}`:""))}catch{staticMethods.error(imTr("ui.im.testFail",null,"Connection failed"))}finally{setTesting(!1)}},loading:testing,children:imTr("ui.im.test",null,"Test connection")}),jsxRuntimeExports.jsx(Button,{type:showStop?"default":"primary",danger:showStop,loading:starting||stopping,onClick:showStop?async()=>{setStopping(!0),busyRef.current=!0;try{const{ok:ok,detail:detail}=await postConfig(buildBody(valuesRef.current,!1,!0));if(!ok)return void staticMethods.error(imTr("ui.im.saveFailed",null,"Save failed")+(detail?`: ${detail}`:""));setEnabled(!1),enabledRef.current=!1,lastSavedSigRef.current=fieldSig(valuesRef.current,!1)}finally{busyRef.current=!1,mountedRef.current&&(setStopping(!1),fetchStatus(!1))}}:async()=>{var _a2;setStarting(!0),busyRef.current=!0;try{const{ok:ok,detail:detail}=await postConfig(buildBody(valuesRef.current,!0,!0));if(!ok)return void staticMethods.error(imTr("ui.im.startFailed",null,"Start failed")+(detail?`: ${detail}`:""));setEnabled(!0),enabledRef.current=!0,lastSavedSigRef.current=fieldSig(valuesRef.current,!0),(()=>{if(!allowlistField)return!1;const v=valuesRef.current[allowlistField.key];return!Array.isArray(v)||0===v.length})()&&staticMethods.warning(imTr("ui.im.savedNoAllowlistWarn",null,"No sender allowlist set: the first conversation that messages the bot is bound and anyone in it can drive the local session with no approval. Add an allowlist under More settings."),8);const deadline=Date.now()+15e3;let ready=!1;for(;Date.now()<deadline;){if(await new Promise(res=>setTimeout(res,500)),!mountedRef.current)return;const d=await fetchStatus(!1);if("ready"===(null==(_a2=null==d?void 0:d.process)?void 0:_a2.state)){ready=!0;break}}if(!mountedRef.current)return;ready?staticMethods.success(imTr("ui.im.statusConnected",null,"Connected")):staticMethods.error(imTr("ui.im.startFailed",null,"Start failed: worker did not become ready in time"),6)}finally{busyRef.current=!1,mountedRef.current&&(setStarting(!1),fetchStatus(!1))}},children:showStop?imTr("ui.im.stop",null,"Stop"):imTr("ui.im.start",null,"Start")})]})]})}const styles$b_tabRow="_tabRow_1q32a_4",styles$b_tabBtn="_tabBtn_1q32a_24",styles$b_tabBtnActive="_tabBtnActive_1q32a_52",styles$b_toolBody="_toolBody_1q32a_8",TOOLS=IM_PLATFORMS.map(p=>({id:p.id,labelKey:p.labelKey,fallback:p.fallback,Icon:p.icon,color:p.color,render:()=>jsxRuntimeExports.jsx(ImPlatformSettings,{descriptor:p})}));function MessagingModal({open:open,onClose:onClose,initialTool:initialTool}){const[selected,setSelected]=reactExports.useState(initialTool||TOOLS[0].id);reactExports.useEffect(()=>{open&&initialTool&&setSelected(initialTool)},[open,initialTool]);const active=TOOLS.find(x=>x.id===selected)||TOOLS[0];return jsxRuntimeExports.jsxs(Modal,{open:open,onCancel:onClose,footer:null,width:680,destroyOnClose:!0,styles:{content:{background:"var(--bg-elevated)"},header:{background:"var(--bg-elevated)"}},title:jsxRuntimeExports.jsxs("span",{children:[jsxRuntimeExports.jsx(RefIcon$2,{style:{marginInlineEnd:8}}),imTr("ui.messaging.title",null,"Messaging Integrations")]}),children:[jsxRuntimeExports.jsx("div",{className:styles$b_tabRow,children:TOOLS.map(tool=>{const isActive=selected===tool.id,Icon2=tool.Icon;return jsxRuntimeExports.jsxs("button",{type:"button",className:`${styles$b_tabBtn}${isActive?` ${styles$b_tabBtnActive}`:""}`,onClick:()=>setSelected(tool.id),children:[jsxRuntimeExports.jsx(Icon2,{size:16,style:{color:isActive?tool.color:"var(--text-tertiary, #999)"}}),jsxRuntimeExports.jsx("span",{style:isActive?{color:tool.color}:void 0,children:imTr(tool.labelKey,null,tool.fallback)})]},tool.id)})}),jsxRuntimeExports.jsx("div",{className:styles$b_toolBody,children:active.render()})]})}const styles$a_scrollBody="_scrollBody_riojj_1",styles$a_headerBar="_headerBar_riojj_15",styles$a_refreshBtn="_refreshBtn_riojj_21",styles$a_statusTag="_statusTag_riojj_27",styles$a_center="_center_riojj_36",styles$a_hint="_hint_riojj_46";function ImConversationModal({open:open,onClose:onClose,platform:platform,onOpenConfig:onOpenConfig}){const[sessions,setSessions]=reactExports.useState([]),[loading,setLoading]=reactExports.useState(!1),[error,setError]=reactExports.useState(null),[reloadKey,setReloadKey]=reactExports.useState(0),prevRef=reactExports.useRef({open:!1,platform:null}),sessionsRef=reactExports.useRef(sessions);sessionsRef.current=sessions;const bodyRef=reactExports.useRef(null),scrollMemRef=reactExports.useRef({}),positionedRef=reactExports.useRef(!1);reactExports.useEffect(()=>{positionedRef.current=!1},[open,platform]),reactExports.useLayoutEffect(()=>{if(!open||loading||positionedRef.current)return;const el=bodyRef.current;if(!el)return;const mem=scrollMemRef.current[platform];el.scrollTop=!mem||mem.atBottom?el.scrollHeight:Math.min(mem.top,el.scrollHeight),positionedRef.current=!0},[open,platform,loading,sessions]);const descriptor=IM_PLATFORMS.find(p=>p.id===platform)||null,label2=descriptor?(()=>{try{return t(descriptor.labelKey)}catch{return descriptor.fallback}})():"",[senderMap,setSenderMap]=reactExports.useState({});reactExports.useEffect(()=>{if(!open||!platform)return;let cancelled=!1;return fetch(apiUrl(`/api/im/${encodeURIComponent(platform)}/senders`)).then(r=>r.ok?r.json():null).then(d=>{cancelled||setSenderMap(d&&d.senders||{})}).catch(()=>{cancelled||setSenderMap({})}),()=>{cancelled=!0}},[open,platform,reloadKey]);const[imConn,setImConn]=reactExports.useState(null),[imProc,setImProc]=reactExports.useState(null);reactExports.useEffect(()=>{if(!open||!platform)return;let cancelled=!1;const poll=async()=>{try{const r=await fetch(apiUrl(`/api/im/${encodeURIComponent(platform)}/status`));if(!r.ok)return void(cancelled||(setImConn({running:!1,connected:!1}),setImProc(null)));const d=await r.json();cancelled||(setImConn(d.connection||null),setImProc(d.process||null))}catch{cancelled||(setImConn({running:!1,connected:!1}),setImProc(null))}};poll();const id=setInterval(poll,5e3);return()=>{cancelled=!0,clearInterval(id)}},[open,platform,reloadKey]);reactExports.useEffect(()=>{if(!open||!platform)return void(prevRef.current={open:open,platform:platform});const isPureRefresh=!0===prevRef.current.open&&prevRef.current.platform===platform;prevRef.current={open:open,platform:platform};let es=null,cancelled=!1;setLoading(!0),setError(null),isPureRefresh||setSessions([]);const reportError=e=>{setError(String((null==e?void 0:e.message)||e)||"load_failed"),sessionsRef.current.length>0&&staticMethods.error(t("ui.imRecord.loadFailed"))};return(async()=>{try{const r=await fetch(apiUrl(`/api/im/${encodeURIComponent(platform)}/logs`));if(!r.ok)throw new Error(`logs ${r.status}`);const{latest:latest}=await r.json();if(cancelled)return;if(!latest)return setSessions([]),void setLoading(!1);const entries=[];es=new EventSource(apiUrl(`/api/local-log?file=${encodeURIComponent(latest)}`)),es.addEventListener("load_chunk",ev=>{try{const chunk=JSON.parse(ev.data);if(Array.isArray(chunk))for(const e of chunk)entries.push(e)}catch{}}),es.addEventListener("load_end",()=>{if(es.close(),!cancelled){try{const reconstructed=reconstructEntries(entries);setSessions(function(entries){let sessions=[];for(const entry of entries)isMainAgent(entry)&&entry.body&&Array.isArray(entry.body.messages)&&!entry._slimmed&&(sessions=mergeMainAgentSessions(sessions,entry));return sessions}(reconstructed))}catch(e){reportError(e)}setLoading(!1)}}),es.onerror=()=>{try{es.close()}catch{}cancelled||(reportError("load_failed"),setLoading(!1))}}catch(e){cancelled||(reportError(e),setLoading(!1))}})(),()=>{if(cancelled=!0,es)try{es.close()}catch{}}},[open,platform,reloadKey]),reactExports.useEffect(()=>{if(!open||!platform)return;const onUpdate=e=>{var _a;(null==(_a=null==e?void 0:e.detail)?void 0:_a.platform)===platform&&setReloadKey(k=>k+1)};return window.addEventListener("ccv:im-log-update",onUpdate),()=>window.removeEventListener("ccv:im-log-update",onUpdate)},[open,platform]);const items=function(sessions,senderMap,imAgent){const out=[];return sessions.forEach((session,si)=>{const messages=Array.isArray(session.messages)?session.messages:[];if(0===messages.length)return;const maps=cachedBuildToolResultMap(messages),kp=`s${si}`;messages.forEach((msg,mi)=>{if(!msg)return;const ts=msg._timestamp||null,content2=msg.content;if("user"===msg.role){if(Array.isArray(content2)){const{commands:commands,textBlocks:textBlocks,skillBlocks:skillBlocks}=classifyUserContent(content2);commands.forEach((cmd,ci)=>out.push(jsxRuntimeExports.jsx(ChatMessage,{role:"user",text:cmd,timestamp:ts,isHistoryLog:!0,imSenderMap:senderMap},`${kp}-cmd-${mi}-${ci}`))),skillBlocks.forEach((sb,ski)=>{const m=(sb.text||"").match(/^#\s+(.+)$/m);out.push(jsxRuntimeExports.jsx(ChatMessage,{role:"skill-loaded",text:sb.text,skillName:m?m[1]:"Skill",timestamp:ts,isHistoryLog:!0},`${kp}-skill-${mi}-${ski}`))}),textBlocks.forEach((tb,ti)=>{const isPlan=/Implement the following plan:/i.test(tb.text||"");out.push(jsxRuntimeExports.jsx(ChatMessage,{role:isPlan?"plan-prompt":"user",text:tb.text,timestamp:ts,isHistoryLog:!0,imSenderMap:senderMap},`${kp}-user-${mi}-${ti}`))})}else if("string"==typeof content2&&!isSystemText(content2)){const isPlan=/Implement the following plan:/i.test(content2);out.push(jsxRuntimeExports.jsx(ChatMessage,{role:isPlan?"plan-prompt":"user",text:content2,timestamp:ts,isHistoryLog:!0,imSenderMap:senderMap},`${kp}-user-${mi}`))}}else if("assistant"===msg.role){let blocks=null;Array.isArray(content2)?blocks=content2.filter(b=>"text"!==b.type||!isSystemText(b.text)):"string"!=typeof content2||isSystemText(content2)||(blocks=[{type:"text",text:content2}]),blocks&&blocks.length>0&&out.push(jsxRuntimeExports.jsx(ChatMessage,{role:"assistant",content:blocks,toolResultMap:maps.toolResultMap,readContentMap:maps.readContentMap,editSnapshotMap:maps.editSnapshotMap,askAnswerMap:maps.askAnswerMap,planApprovalMap:maps.planApprovalMap,latestPlanContent:maps.latestPlanContent,timestamp:ts,displayTs:msg._generatedTs,collapseToolResults:!0,isHistoryLog:!0,imAgent:imAgent},`${kp}-asst-${mi}`))}})}),out}(sessions,senderMap,reactExports.useMemo(()=>descriptor?{name:label2,Icon:descriptor.icon,color:descriptor.color}:null,[platform,label2])),title=jsxRuntimeExports.jsxs("div",{className:styles$a_headerBar,children:[jsxRuntimeExports.jsx("span",{children:t("ui.imRecord.title")}),onOpenConfig?jsxRuntimeExports.jsx(Tooltip,{title:t("ui.imRecord.config"),children:jsxRuntimeExports.jsx(Button,{type:"text",size:"small",icon:jsxRuntimeExports.jsx(RefIcon$f,{}),className:styles$a_refreshBtn,onClick:()=>onOpenConfig(platform)})}):null,jsxRuntimeExports.jsx(Tooltip,{title:t("ui.imRecord.refresh"),children:jsxRuntimeExports.jsx(Button,{type:"text",size:"small",icon:jsxRuntimeExports.jsx(RefIcon$g,{spin:loading}),className:styles$a_refreshBtn,disabled:loading,onClick:()=>setReloadKey(k=>k+1)})}),jsxRuntimeExports.jsx("span",{className:styles$a_statusTag,children:(()=>{if(null==imConn?void 0:imConn.lastError)return jsxRuntimeExports.jsxs(Tag,{color:"error",children:[t("ui.im.statusError"),": ",imConn.lastError]});const portSuffix=(null==imProc?void 0:imProc.port)?` :${imProc.port}`:"",st=null==imProc?void 0:imProc.state;return st?"ready"===st?(null==imConn?void 0:imConn.connected)?jsxRuntimeExports.jsxs(Tag,{color:"success",children:[t("ui.im.statusConnected"),portSuffix]}):jsxRuntimeExports.jsxs(Tag,{color:"processing",children:[t("ui.im.statusRunning"),portSuffix]}):"booting"===st?jsxRuntimeExports.jsx(Tag,{color:"processing",children:t("ui.im.statusBooting")}):"hung"===st?jsxRuntimeExports.jsx(Tag,{color:"warning",children:t("ui.im.statusHung")}):jsxRuntimeExports.jsx(Tag,{children:t("ui.im.statusDisconnected")}):imConn?imConn.connected?jsxRuntimeExports.jsx(Tag,{color:"success",children:t("ui.im.statusConnected")}):imConn.running?jsxRuntimeExports.jsx(Tag,{color:"processing",children:t("ui.im.statusRunning")}):jsxRuntimeExports.jsx(Tag,{children:t("ui.im.statusDisconnected")}):null})()})]});return jsxRuntimeExports.jsx(Drawer,{open:open,onClose:onClose,placement:"left",width:"min(760px, 92vw)",rootClassName:"ccvSideDrawer",destroyOnHidden:!0,title:title,styles:{body:{padding:0,overflow:"hidden",background:"var(--bg-elevated)"},header:{background:"var(--bg-elevated)"}},children:jsxRuntimeExports.jsx("div",{className:styles$a_scrollBody,ref:bodyRef,onScroll:e=>{if(!open||!platform)return;const el=e.currentTarget,atBottom=el.scrollHeight-el.scrollTop-el.clientHeight<=24;scrollMemRef.current[platform]={top:el.scrollTop,atBottom:atBottom}},children:items.length>0?items:loading?jsxRuntimeExports.jsxs("div",{className:styles$a_center,children:[jsxRuntimeExports.jsx(Spin,{}),jsxRuntimeExports.jsx("span",{className:styles$a_hint,children:t("ui.imRecord.loading")})]}):error?jsxRuntimeExports.jsxs("div",{className:styles$a_center,children:[jsxRuntimeExports.jsx(Empty,{description:t("ui.imRecord.loadFailed")}),jsxRuntimeExports.jsx(Button,{size:"small",onClick:()=>setReloadKey(k=>k+1),children:t("ui.imRecord.refresh")})]}):jsxRuntimeExports.jsx(Empty,{description:t("ui.imRecord.empty")})})})}const styles$9_chip="_chip_bvaji_4",styles$9_logo="_logo_bvaji_16",styles$9_connecting="_connecting_bvaji_22",styles$9_dotError="_dotError_bvaji_27";function ImStatusChip({descriptor:descriptor,onClick:onClick,onStatus:onStatus}){const[enabled,setEnabled]=reactExports.useState(!1),[connection,setConnection]=reactExports.useState(null),Icon2=descriptor.icon,fetchStatus=reactExports.useCallback(async()=>{try{const r=await fetch(apiUrl(descriptor.endpoints.status));if(!r.ok)return void setConnection({running:!1,connected:!1});const d=await r.json();setEnabled(!!d.enabled),setConnection(d.connection||null)}catch{setConnection({running:!1,connected:!1})}},[descriptor]);if(reactExports.useEffect(()=>{fetchStatus();const id=setInterval(fetchStatus,5e3);return()=>clearInterval(id)},[fetchStatus]),reactExports.useEffect(()=>{onStatus&&onStatus(descriptor.id,{enabled:enabled,running:!!(null==connection?void 0:connection.running),connected:!(!connection||!connection.connected||connection.lastError)})},[enabled,connection,onStatus,descriptor.id]),!enabled)return null;let state="stopped";(null==connection?void 0:connection.lastError)?state="error":(null==connection?void 0:connection.running)&&(null==connection?void 0:connection.connected)?state="connected":(null==connection?void 0:connection.running)&&(state="running");const statusLabel="connected"===state?imTr("ui.im.statusConnected",null,"Connected"):"running"===state?imTr("ui.im.statusRunning",null,"Running, connecting…"):"error"===state?`${imTr("ui.im.statusError",null,"Error")}: ${connection.lastError}`:imTr("ui.im.statusStopped",null,"Stopped"),label2=imTr(descriptor.labelKey,null,descriptor.fallback),color="connected"===state||"running"===state?descriptor.color:"var(--text-tertiary, #999)",iconClass="running"===state?`${styles$9_logo} ${styles$9_connecting}`:styles$9_logo;return jsxRuntimeExports.jsx(Tooltip,{title:`${label2} · ${statusLabel}`,children:jsxRuntimeExports.jsxs("span",{className:styles$9_chip,onClick:onClick,role:"button",tabIndex:0,"aria-label":`${label2} · ${statusLabel}`,onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||null==onClick||onClick()},children:[jsxRuntimeExports.jsx(Icon2,{size:16,className:iconClass,style:{color:color}}),"error"===state?jsxRuntimeExports.jsx("span",{className:styles$9_dotError,"aria-hidden":"true"}):null]})})}const styles$8_headerBar="_headerBar_uzc7r_2",styles$8_logoWrap="_logoWrap_uzc7r_10",styles$8_logoWrapActive="_logoWrapActive_uzc7r_17",styles$8_logoImage="_logoImage_uzc7r_26",styles$8_logoImageActive="_logoImageActive_uzc7r_36",styles$8_compactBtn="_compactBtn_uzc7r_43",styles$8_headerProjectName="_headerProjectName_uzc7r_79",styles$8_countdownStrong="_countdownStrong_uzc7r_96",styles$8_qrcodePopover="_qrcodePopover_uzc7r_101",styles$8_qrcodeTitle="_qrcodeTitle_uzc7r_119",styles$8_qrcodeUrlInput="_qrcodeUrlInput_uzc7r_126",styles$8_qrcodeUrlCopy="_qrcodeUrlCopy_uzc7r_132",styles$8_authSection="_authSection_uzc7r_143",styles$8_authHeaderRow="_authHeaderRow_uzc7r_157",styles$8_authTitle="_authTitle_uzc7r_163",styles$8_authPasswordInput="_authPasswordInput_uzc7r_174",styles$8_authSaveBtn="_authSaveBtn_uzc7r_179",styles$8_authEmptyWarn="_authEmptyWarn_uzc7r_183",styles$8_settingsGroupBox="_settingsGroupBox_uzc7r_191",styles$8_settingsGroupTitle="_settingsGroupTitle_uzc7r_199",styles$8_settingsItem="_settingsItem_uzc7r_208",styles$8_settingsLabel="_settingsLabel_uzc7r_215",styles$8_settingsHelpIcon="_settingsHelpIcon_uzc7r_220",styles$8_settingsDivider="_settingsDivider_uzc7r_227",styles$8_logDirInput="_logDirInput_uzc7r_232",styles$8_tokenStatsEmpty="_tokenStatsEmpty_uzc7r_242",styles$8_tokenStatsContainer="_tokenStatsContainer_uzc7r_249",styles$8_tokenStatsColumn="_tokenStatsColumn_uzc7r_255",styles$8_toolStatsColumn="_toolStatsColumn_uzc7r_259",styles$8_modelCardSpaced="_modelCardSpaced_uzc7r_265 _modelCard_8xfmi_3",styles$8_promptExportBar="_promptExportBar_uzc7r_283",styles$8_promptScrollArea="_promptScrollArea_uzc7r_287",styles$8_promptEmpty="_promptEmpty_uzc7r_292",styles$8_promptTimestamp="_promptTimestamp_uzc7r_298",styles$8_textPromptCard="_textPromptCard_uzc7r_306",styles$8_preText="_preText_uzc7r_315",styles$8_systemCollapse="_systemCollapse_uzc7r_325",styles$8_systemLabel="_systemLabel_uzc7r_332",styles$8_preSys="_preSys_uzc7r_337",styles$8_promptTextarea="_promptTextarea_uzc7r_347",styles$8_projectStatsCenter="_projectStatsCenter_uzc7r_363",styles$8_projectStatsEmpty="_projectStatsEmpty_uzc7r_369",styles$8_projectStatsContent="_projectStatsContent_uzc7r_376",styles$8_projectStatsUpdated="_projectStatsUpdated_uzc7r_382",styles$8_projectStatsSummary="_projectStatsSummary_uzc7r_388",styles$8_projectStatCard="_projectStatCard_uzc7r_394",styles$8_projectStatValue="_projectStatValue_uzc7r_402",styles$8_projectStatLabel="_projectStatLabel_uzc7r_410",styles$8_projectStatsSection="_projectStatsSection_uzc7r_416",styles$8_projectStatsSectionTitle="_projectStatsSectionTitle_uzc7r_422",styles$8_projectStatsModelCard="_projectStatsModelCard_uzc7r_430",styles$8_projectStatsModelHeader="_projectStatsModelHeader_uzc7r_437",styles$8_projectStatsModelName="_projectStatsModelName_uzc7r_446",styles$8_projectStatsModelCount="_projectStatsModelCount_uzc7r_452",styles$8_thLeft="_thLeft_uzc7r_584",styles$8_qrcodeIcon="_qrcodeIcon_uzc7r_627",styles$8_approvalBell="_approvalBell_uzc7r_653",styles$8_approvalBellBadge="_approvalBellBadge_uzc7r_678",styles$8_proxySwapIcon="_proxySwapIcon_uzc7r_695",styles$8_proxyProfileTag="_proxyProfileTag_uzc7r_701",styles$8_pinnedShortcut="_pinnedShortcut_uzc7r_717",styles$8_themeToggle="_themeToggle_uzc7r_746",styles$8_themeToggleIcon="_themeToggleIcon_uzc7r_772",styles$8_headerRightRow="_headerRightRow_uzc7r_777",styles$8_headerCountdownTag="_headerCountdownTag_uzc7r_783",CALIBRATION_MODELS=appConfig.calibrationModels,LEGACY_CALIBRATION_MIGRATION={"opus-4.7-1m":"1m","sonnet-4.6":"200k",glm5:"200k","kimi-k2.5":"200k","minimax-2.1":"200k","Qwen 3.5":"200k"};function readCalibrationModel(){const raw=localStorage.getItem("ccv_calibrationModel")||"auto",migrated=LEGACY_CALIBRATION_MIGRATION[raw]||raw;return CALIBRATION_MODELS.some(m=>m.value===migrated)?migrated:"auto"}function makeAuthState(over={}){return{enabled:!1,isAdmin:!1,password:null,scope:"global",hasProjectOverride:!1,projectDir:null,global:{enabled:!1,password:null},...over}}function HeaderProjectLabel({projectName:projectName,isLocalLog:isLocalLog}){const alias=useProjectAlias(projectName);return jsxRuntimeExports.jsxs("span",{className:styles$8_headerProjectName,children:[t("ui.liveMonitoring"),projectName?`:${projectName}`:"",alias?` (${alias})`:"",jsxRuntimeExports.jsx(ProjectAliasEditor,{projectName:projectName,isLocalLog:isLocalLog})]})}const _AppHeader=class _AppHeader extends React__default.Component{constructor(props){super(props),__publicField(this,"togglePin",key=>{this.setState(s=>{const next=togglePinned(s.pinnedKeys,key);try{localStorage.setItem("ccv_pinnedMenuKeys",(arr=next,JSON.stringify(Array.isArray(arr)?arr:[])))}catch{}var arr;return{pinnedKeys:next}})}),__publicField(this,"_imStatus",{}),__publicField(this,"_onImStatus",(id,info)=>{const prev=this._imStatus[id];prev&&prev.enabled===info.enabled&&prev.connected===info.connected||(this._imStatus[id]=info,this._pushHeaderModel())}),__publicField(this,"_syncMenuBarState",()=>{var _a,_b;try{null==(_b=null==(_a=window.tabBridge)?void 0:_a.menuBarState)||_b.call(_a,!!this.state.electronMenuBar)}catch{}}),__publicField(this,"_closeMenuBar",()=>this.setState({electronMenuBar:null},this._syncMenuBarState)),__publicField(this,"reloadFsSkills",async()=>loadFsSkills(this,{isLocalLog:this.props.isLocalLog})),__publicField(this,"postAuthConfig",async(body,opts={})=>{if(!this.state._authSaving){this.setState({_authSaving:!0});try{const post=async b=>{const r=await fetch(apiUrl("/api/auth/config"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!r.ok)throw new Error("auth-config "+r.status);return r.json()};let data=await post(body);opts.thenClearOverride&&(data=await post({clearOverride:!0})),this._applyAuthState(data),staticMethods.success(t("ui.auth.saved"))}catch{staticMethods.error(t("ui.auth.saveFailed"))}finally{this.setState({_authSaving:!1})}}}),__publicField(this,"loadMemory",async()=>loadProjectMemory(this)),__publicField(this,"handleRefreshMemory",async()=>{if(this.state._memoryRefreshing)return;this.setState({_memoryRefreshing:!0});const seq=++this._memorySeq;let ok=!1,stale=!1;try{const r=await fetch(apiUrl("/api/project-memory")),data=await r.json();seq!==this._memorySeq?stale=!0:r.ok?(this.setState({_memory:data}),ok=!0):this.setState({_memory:!1})}catch{seq!==this._memorySeq?stale=!0:this.setState({_memory:!1})}finally{stale||this.setState({_memoryRefreshing:!1})}stale||(ok?staticMethods.success(t("ui.memoryRefreshSuccess")):staticMethods.error(t("ui.memoryRefreshFailed"),5))}),__publicField(this,"_isCacheDetailModalOpen",()=>!!(this.state._memoryDetail||this.state._claudeMdDetail||this.state._skillsModal&&this.state._skillsModal.open)),__publicField(this,"handleCachePopoverOpenChange",open=>{!open&&this._isCacheDetailModalOpen()||(this.setState({_cachePopoverOpen:open}),open||(this._cacheScrollInited=!1),open&&null===this.state._fsSkills&&!this.props.isLocalLog&&this.reloadFsSkills(),open&&null===this.state._memory&&this.loadMemory(),open&&null===this.state._claudeMd&&this.loadClaudeMdList())}),__publicField(this,"loadClaudeMdList",async()=>loadClaudeMdList(this)),__publicField(this,"loadClaudeMdDetail",async(id,tail,scope)=>{const seq=++this._claudeMdDetailSeq,title=`${t("global"===scope?"ui.claudeMdScopeGlobal":"ui.claudeMdScopeProject")} · ${tail}`;this.setState({_claudeMdDetail:{name:title,loading:!0}});try{const r=await fetch(apiUrl(`/api/claude-md?id=${encodeURIComponent(id)}`)),data=await r.json();if(seq!==this._claudeMdDetailSeq)return;if(!r.ok)return void this.setState({_claudeMdDetail:{name:title,error:data.error||`http:${r.status}`}});this.setState({_claudeMdDetail:{name:title,content:data.content||""}})}catch(e){seq===this._claudeMdDetailSeq&&this.setState({_claudeMdDetail:{name:title,error:e.message||"network"}})}}),__publicField(this,"loadMemoryDetail",async name=>{const seq=++this._memoryDetailSeq;this.setState({_memoryDetail:{name:name,loading:!0}});try{const r=await fetch(apiUrl(`/api/project-memory?file=${encodeURIComponent(name)}`)),data=await r.json();if(seq!==this._memoryDetailSeq)return;if(!r.ok)return void this.setState({_memoryDetail:{name:name,error:data.error||`http:${r.status}`}});this.setState({_memoryDetail:{name:name,content:data.content||""}})}catch(e){seq===this._memoryDetailSeq&&this.setState({_memoryDetail:{name:name,error:e.message||"network"}})}}),__publicField(this,"handleShowPrompts",()=>{this.setState({promptModalVisible:!0,promptData:this.extractUserPrompts()})}),__publicField(this,"handleExportPromptsTxt",()=>{const prompts=this.state.promptData;if(!prompts||0===prompts.length)return;const blocks=[];for(const p of prompts){const lines=[],ts=p.timestamp?new Date(p.timestamp).toLocaleString():"";ts&&lines.push(`${ts}:\n`);const textParts=(p.segments||[]).filter(seg=>"text"===seg.type).map(seg=>seg.content);textParts.length>0&&lines.push(textParts.join("\n")),blocks.push(lines.join("\n"))}if(0===blocks.length)return;const blob=new Blob([blocks.join("\n\n\n\n")],{type:"text/plain;charset=utf-8"}),url=URL.createObjectURL(blob),a=document.createElement("a");a.href=url,a.download=`user-prompts-${(new Date).toISOString().slice(0,10)}.txt`,a.click(),URL.revokeObjectURL(url)}),__publicField(this,"handleCalibrationModelChange",value=>{this.setState({calibrationModel:value}),localStorage.setItem("ccv_calibrationModel",value)}),__publicField(this,"handleShowProjectStats",()=>{this.setState({projectStatsVisible:!0,projectStatsLoading:!0}),fetch(apiUrl("/api/project-stats")).then(res=>{if(!res.ok)throw new Error("not found");return res.json()}).then(data=>this.setState({projectStats:data,projectStatsLoading:!1})).catch(()=>this.setState({projectStats:null,projectStatsLoading:!1}))}),__publicField(this,"handleShowPlugins",()=>this.setState({pluginModalVisible:!0})),__publicField(this,"handleShowProcesses",()=>this.setState({processModalVisible:!0})),__publicField(this,"handleOpenSkillsModal",async()=>{const cached=this.state._fsSkills,needFetch=!Array.isArray(cached);if(this.setState(prev=>{var _a;return{_skillsModal:{open:!0,loading:needFetch,skills:Array.isArray(cached)?cached:[],error:null,toggling:(null==(_a=prev._skillsModal)?void 0:_a.toggling)||new Set}}}),needFetch){const result=await this.reloadFsSkills();this.setState(prev=>({_skillsModal:{...prev._skillsModal,loading:!1,skills:result.ok?result.skills:[],error:result.ok?null:result.reason}}))}}),__publicField(this,"handleToggleSkill",async skill=>{var _a,_b;const key=`${skill.source}-${skill.name}`;if(null==(_b=null==(_a=this.state._skillsModal)?void 0:_a.toggling)?void 0:_b.has(key))return;const enable=!skill.enabled,flipEnabled=target=>s=>s.source===skill.source&&s.name===skill.name?{...s,enabled:target}:s;this.setState(prev=>{const next=new Set(prev._skillsModal.toggling);return next.add(key),{_skillsModal:{...prev._skillsModal,toggling:next,skills:prev._skillsModal.skills.map(flipEnabled(enable))}}});try{const r=await fetch(apiUrl("/api/skills/toggle"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({source:skill.source,name:skill.name,enable:enable})}),data=await r.json();if(!r.ok)return this.setState(prev=>({_skillsModal:{...prev._skillsModal,skills:prev._skillsModal.skills.map(flipEnabled(!enable))}})),void("DEST_CONFLICT"===data.code?staticMethods.error(t("ui.skillToggleConflict",{name:skill.name})):staticMethods.error(t("ui.skillToggleFailed",{reason:data.error||"unknown"})));this.setState(prev=>({_fsSkills:Array.isArray(prev._fsSkills)?prev._fsSkills.map(s=>s.source===skill.source&&s.name===skill.name?{...s,enabled:enable}:s):prev._fsSkills}));const result=await this.reloadFsSkills();result.ok&&this.setState(prev=>{const orderMap=new Map(prev._skillsModal.skills.map((s,i)=>[`${s.source}-${s.name}`,i])),merged=[...result.skills].sort((a,b)=>{const ai=orderMap.get(`${a.source}-${a.name}`),bi=orderMap.get(`${b.source}-${b.name}`);return void 0===ai&&void 0===bi?0:void 0===ai?1:void 0===bi?-1:ai-bi});return{_skillsModal:{...prev._skillsModal,skills:merged}}})}catch(e){this.setState(prev=>({_skillsModal:{...prev._skillsModal,skills:prev._skillsModal.skills.map(flipEnabled(!enable))}})),staticMethods.error(t("ui.skillToggleFailed",{reason:e.message}))}finally{this.setState(prev=>{const next=new Set(prev._skillsModal.toggling);return next.delete(key),{_skillsModal:{...prev._skillsModal,toggling:next}}})}}),this.state={countdownText:"",promptModalVisible:!1,promptData:[],promptViewMode:"original",settingsDrawerVisible:!1,globalSettingsVisible:!1,projectStatsVisible:!1,projectStats:null,projectStatsLoading:!1,localUrl:"",pluginModalVisible:!1,processModalVisible:!1,logoDropdownOpen:!1,electronMenuOpen:!1,electronMenuBar:null,cacheHighlightIdx:null,cacheHighlightFading:!1,calibrationModel:readCalibrationModel(),proxyModalVisible:!1,messagingModalVisible:!1,messagingInitialTool:null,imRecordVisible:!1,imRecordPlatform:null,logDirDraft:null,qrPopoverOpen:!1,electronQrOpen:!1,_skillsModal:{open:!1,loading:!1,skills:[],error:null,toggling:new Set},_fsSkills:null,_memory:null,_memoryRefreshing:!1,_memoryDetail:null,_claudeMd:null,_claudeMdDetail:null,authState:makeAuthState(),_authPasswordDraft:null,_authSaving:!1,_authScope:null,pinnedKeys:parsePinned("undefined"!=typeof localStorage?localStorage.getItem("ccv_pinnedMenuKeys"):null)},this._countdownTimer=null,this._expiredTimer=null,this._fsSkillsSeq=0,this._memorySeq=0,this._memoryDetailSeq=0,this._claudeMdSeq=0,this._claudeMdDetailSeq=0,this.updateCountdown=this.updateCountdown.bind(this)}_isElectronTab(){return"undefined"!=typeof window&&!(!window.tabBridge||!window.tabBridge.setHeaderModel)}_getMenuDescriptors(){const{viewMode:viewMode,onImportLocalLogs:onImportLocalLogs,isLocalLog:isLocalLog}=this.props;return[{key:"import-local",icon:jsxRuntimeExports.jsx(RefIcon$3,{}),label:t("ui.importLocalLogs"),onClick:onImportLocalLogs},{key:"export-prompts",icon:jsxRuntimeExports.jsx(RefIcon$4,{}),label:t("ui.exportPrompts"),onClick:this.handleShowPrompts},{key:"plugin-management",icon:jsxRuntimeExports.jsx(RefIcon$h,{}),label:t("ui.pluginManagement"),onClick:this.handleShowPlugins},{key:"process-management",icon:jsxRuntimeExports.jsx(RefIcon$i,{}),label:t("ui.processManagement"),onClick:this.handleShowProcesses},...isLocalLog?[]:[{key:"messaging",icon:jsxRuntimeExports.jsx(RefIcon$2,{}),label:t("ui.messaging.menu"),onClick:()=>this.setState({messagingModalVisible:!0,messagingInitialTool:null})}],{key:"proxy-switch",icon:jsxRuntimeExports.jsx(RefIcon$j,{}),label:t("ui.proxySwitch"),onClick:()=>this.setState({proxyModalVisible:!0}),dividerAfter:!0},{key:"project-stats",icon:jsxRuntimeExports.jsx(RefIcon$6,{}),label:t("ui.projectStats"),onClick:this.handleShowProjectStats},..."raw"===viewMode?[{key:"global-settings",icon:jsxRuntimeExports.jsx(RefIcon$f,{}),label:t("ui.globalSettings"),onClick:()=>this.setState({globalSettingsVisible:!0})}]:[],..."chat"===viewMode?[{key:"display-settings",icon:jsxRuntimeExports.jsx(RefIcon$f,{}),label:t("ui.settings"),onClick:()=>this.setState({settingsDrawerVisible:!0})}]:[]]}getMenuItems(){const pinned=new Set(this.state.pinnedKeys),items=[];for(const d of this._getMenuDescriptors()){const isPinned=pinned.has(d.key),pinTitle=t(isPinned?"ui.menuUnpin":"ui.menuPin");items.push({key:d.key,icon:d.icon,onClick:d.onClick,label:jsxRuntimeExports.jsxs("span",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},children:[jsxRuntimeExports.jsx("span",{children:d.label}),jsxRuntimeExports.jsx("span",{"data-pin-trigger":!0,"data-pinned":isPinned?"true":"false",role:"button",tabIndex:0,"aria-label":pinTitle,title:pinTitle,style:{display:"inline-flex",alignItems:"center"},onClick:e=>{e.stopPropagation(),this.togglePin(d.key)},children:isPinned?jsxRuntimeExports.jsx(RefIcon$1,{}):jsxRuntimeExports.jsx(RefIcon,{})})]})}),d.dividerAfter&&items.push({type:"divider"})}return items}_buildApprovalInfo(){var _a,_b,_c,_d,_e,_f;const ag=this.props.approvalGlobal,adi=this.props.approvalDismissedIds,own=this.props.approvalOwnPending||{ask:0,ptyPlan:0};if(!ag||!this.props.onApprovalReopen)return null;let dismissedActive=0;null!=(null==(_b=null==(_a=ag.ask)?void 0:_a.ask)?void 0:_b.id)&&adi instanceof Set&&adi.has(`ask:${ag.ask.ask.id}`)&&dismissedActive++,null!=(null==(_d=null==(_c=ag.ptyPlan)?void 0:_c.ptyPlan)?void 0:_d.id)&&adi instanceof Set&&adi.has(`ptyPlan:${ag.ptyPlan.ptyPlan.id}`)&&dismissedActive++;const total=dismissedActive+(!(null==(_e=ag.ask)?void 0:_e.ask)&&!(null==(_f=ag.ptyPlan)?void 0:_f.ptyPlan)?(own.ask||0)+(own.ptyPlan||0):0);if(0===total)return null;return{count:total,title:((k,p,f)=>{try{const r=t(k,p);return r&&r!==k?r:f}catch{return f}})(dismissedActive>0?"ui.approval.bell.reopen":"ui.approval.bell.orphan",null,dismissedActive>0?"Reopen approval modal":"Server has pending approvals")}}_buildHeaderModel(){const{viewMode:viewMode,themeColor:themeColor,terminalVisible:terminalVisible,cliMode:cliMode,isLocalLog:isLocalLog,activeProxyId:activeProxyId,proxyProfiles:proxyProfiles}=this.props;let proxy=null;if(activeProxyId&&"max"!==activeProxyId){const p=(proxyProfiles||[]).find(x=>x.id===activeProxyId);p&&(proxy={label:`${p.name}${p.activeModel?` · ${p.activeModel}`:""}`})}const showThemeBlock="chat"===viewMode&&cliMode&&!isLocalLog&&!!this.state.localUrl,im=IM_PLATFORMS.filter(p=>this._imStatus[p.id]&&this._imStatus[p.id].enabled).map(p=>{const nm=t(p.labelKey);return{id:p.id,connected:!!this._imStatus[p.id].connected,name:nm&&nm!==p.labelKey?nm:p.fallback||p.id}}),descByKey=new Map(this._getMenuDescriptors().map(d=>[d.key,d])),pins=this.state.pinnedKeys.map(k=>descByKey.get(k)).filter(Boolean).map(d=>({key:d.key,name:d.label})),cd=this.state.countdownText,countdown="raw"===viewMode&&cd?{text:`${t("ui.cacheCountdown",{type:this.props.cacheType?`(${this.props.cacheType})`:""})} ${cd}`}:null;return{menu:{title:t("ui.menu")},deviceMode:{toIpad:t("ui.deviceMode.toIpad"),toPc:t("ui.deviceMode.toPc")},proxy:proxy,approval:this._buildApprovalInfo(),theme:showThemeBlock?{mode:"light"===themeColor?"light":"dark",title:t("light"===themeColor?"ui.themeColor.light":"ui.themeColor.dark")}:null,terminal:cliMode&&"chat"===viewMode&&!isLocalLog?{active:!!terminalVisible,label:t("ui.terminal")}:null,viewMode:{mode:viewMode,label:t("raw"===viewMode?"ui.chatMode":"ui.rawMode")},im:im,pins:pins,countdown:countdown,qr:showThemeBlock?{title:t("ui.scanToCoding")}:null}}_pushHeaderModel(){if(this._isElectronTab())try{const model=this._buildHeaderModel(),json=JSON.stringify(model);if(json===this._lastHeaderModelJson)return;this._lastHeaderModelJson=json,window.tabBridge.setHeaderModel(model)}catch{}}_setupHeaderBridge(){if(this._isElectronTab()){if(this._headerActionDispose){try{this._headerActionDispose()}catch{}this._headerActionDispose=null}try{this._headerActionDispose=window.tabBridge.onHeaderAction(payload=>this._handleHeaderAction(payload))}catch{}this._pushHeaderModel()}}_handleHeaderAction(payload){if(!payload||!payload.type)return;const{themeColor:themeColor,onThemeColorChange:onThemeColorChange,onToggleTerminal:onToggleTerminal,onToggleViewMode:onToggleViewMode,onApprovalReopen:onApprovalReopen}=this.props;switch(payload.type){case"menuOpen":this.setState(s=>({electronMenuOpen:!s.electronMenuOpen}));break;case"menuBarOpen":this.setState(s=>{const cur=s.electronMenuBar;return{electronMenuBar:cur&&cur.menuId===payload.menuId?null:{menuId:payload.menuId,x:payload.x||0,menus:payload.menus||cur&&cur.menus||[]}}},this._syncMenuBarState);break;case"theme":onThemeColorChange&&onThemeColorChange("light"===themeColor?"dark":"light");break;case"terminal":onToggleTerminal&&onToggleTerminal();break;case"viewMode":onToggleViewMode&&onToggleViewMode();break;case"approval":onApprovalReopen&&onApprovalReopen();break;case"proxy":this.setState({proxyModalVisible:!0});break;case"im":this.setState({imRecordVisible:!0,imRecordPlatform:payload.id});break;case"menuShortcut":{const d=this._getMenuDescriptors().find(x=>x.key===payload.key);d&&d.onClick&&d.onClick();break}case"qrOpen":this.setState(s=>({electronQrOpen:!s.electronQrOpen}))}}componentDidMount(){this.startCountdown(),fetch(apiUrl("/api/local-url")).then(r=>r.json()).then(data=>{data.url&&this.setState({localUrl:data.url})}).catch(()=>{}),fetch(apiUrl("/api/auth/state")).then(r=>{if(!r.ok)throw new Error("auth-state "+r.status);return r.json()}).then(data=>{this._applyAuthState(data)}).catch(()=>{this.setState({authState:makeAuthState({enabled:!0,global:{enabled:!0,password:null}})})}),this.context._claudeSettingsReady.then(data=>{data&&data.model&&this.setState({settingsModel:data.model})}),this.props.isLocalLog||this.reloadFsSkills(),this._setupHeaderBridge()}componentDidUpdate(prevProps){this._pushHeaderModel(),prevProps.cacheExpireAt!==this.props.cacheExpireAt&&this.startCountdown(),prevProps.projectName!==this.props.projectName&&(this._fsSkillsSeq++,this.setState({_fsSkills:null}),!this.props.isLocalLog&&this.props.projectName&&this.reloadFsSkills(),this._memorySeq++,this.setState({_memory:null,_memoryDetail:null,_memoryRefreshing:!1}),this._claudeMdSeq++,this._claudeMdDetailSeq++,this.setState({_claudeMd:null,_claudeMdDetail:null}))}_applyAuthState(data){this.setState({authState:makeAuthState({enabled:!!data.enabled,isAdmin:!!data.isAdmin,password:data.password??null,scope:"project"===data.scope?"project":"global",hasProjectOverride:!!data.hasProjectOverride,projectDir:data.projectDir||null,global:data.global&&"object"==typeof data.global?data.global:{enabled:!1,password:null}}),_authPasswordDraft:null})}shareUrl(){const{localUrl:localUrl,authState:authState}=this.state;if(!localUrl||!authState.enabled)return localUrl;const i=localUrl.indexOf("?");return-1===i?localUrl:localUrl.slice(0,i)}renderPasswordSection(){const{authState:authState,_authScope:_authScope,_authSaving:_authSaving}=this.state;if(!!!authState.projectDir)return authState.enabled?jsxRuntimeExports.jsxs("div",{className:styles$8_authSection,children:[jsxRuntimeExports.jsxs("div",{className:styles$8_authHeaderRow,children:[jsxRuntimeExports.jsx("span",{className:styles$8_authTitle,children:t("ui.auth.title")}),jsxRuntimeExports.jsx(Switch,{size:"small",checked:!0,loading:_authSaving,title:t("ui.auth.disable"),onChange:()=>this.postAuthConfig({scope:"global",enabled:!1})})]}),this.renderPasswordInput("global",{enabled:authState.enabled,password:authState.password})]}):jsxRuntimeExports.jsx("div",{className:styles$8_authSection,children:jsxRuntimeExports.jsx(Button,{size:"small",type:"primary",loading:_authSaving,onClick:()=>this.postAuthConfig({scope:"global",enabled:!0}),children:t("ui.auth.enableBtn")})});const protectedNow=authState.enabled,sourceTab=_authScope||authState.scope||"project",cfg="global"===sourceTab?authState.global||{enabled:!1,password:null}:{enabled:authState.enabled,password:authState.password};return jsxRuntimeExports.jsxs("div",{className:styles$8_authSection,children:[jsxRuntimeExports.jsxs("div",{className:styles$8_authHeaderRow,children:[jsxRuntimeExports.jsx("span",{className:styles$8_authTitle,children:t("ui.auth.title")}),jsxRuntimeExports.jsx(Switch,{size:"small",checked:protectedNow,loading:_authSaving,title:t(protectedNow?"ui.auth.disable":"ui.auth.enableBtn"),onChange:on=>{on?(this.setState({_authScope:"project"}),this.postAuthConfig({scope:"project",enabled:!0})):this.postAuthConfig({scope:"project",enabled:!1})}})]}),protectedNow&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Segmented,{size:"small",block:!0,value:sourceTab,onChange:v=>{this.setState({_authScope:v,_authPasswordDraft:null}),"global"===v?authState.global&&authState.global.enabled?this.postAuthConfig({clearOverride:!0}):this.postAuthConfig({scope:"global",enabled:!0},{thenClearOverride:!0}):this.postAuthConfig({scope:"project",enabled:!0})},options:[{label:t("ui.auth.scopeProject"),value:"project"},{label:t("ui.auth.scopeGlobal"),value:"global"}]}),this.renderPasswordInput(sourceTab,cfg)]})]})}renderPasswordInput(scope,cfg){const{_authPasswordDraft:_authPasswordDraft,_authSaving:_authSaving}=this.state,pw=(cfg.password??"").toUpperCase(),draft=null==_authPasswordDraft?pw:_authPasswordDraft,dirty=null!=_authPasswordDraft&&_authPasswordDraft!==pw;return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Input,{value:draft,className:styles$8_authPasswordInput,onChange:e=>this.setState({_authPasswordDraft:e.target.value.toUpperCase()}),onPressEnter:()=>dirty&&this.postAuthConfig({scope:scope,password:draft}),suffix:jsxRuntimeExports.jsx(RefIcon$k,{className:styles$8_qrcodeUrlCopy,title:t("ui.auth.copy"),onClick:()=>{navigator.clipboard.writeText(pw).then(()=>staticMethods.success(t("ui.auth.copied"))).catch(()=>{})}})}),dirty&&jsxRuntimeExports.jsx(Button,{size:"small",type:"primary",loading:_authSaving,className:styles$8_authSaveBtn,onClick:()=>this.postAuthConfig({scope:scope,password:draft}),children:t("ui.auth.save")}),""===draft&&jsxRuntimeExports.jsx("div",{className:styles$8_authEmptyWarn,children:t("ui.auth.emptyWarning")})]})}shouldComponentUpdate(nextProps,nextState){return nextProps.requests!==this.props.requests||nextProps.requestCount!==this.props.requestCount||nextProps.viewMode!==this.props.viewMode||nextProps.cacheExpireAt!==this.props.cacheExpireAt||nextProps.cacheType!==this.props.cacheType||nextProps.isLocalLog!==this.props.isLocalLog||nextProps.localLogFile!==this.props.localLogFile||nextProps.projectName!==this.props.projectName||nextProps.filterIrrelevant!==this.props.filterIrrelevant||nextProps.logDir!==this.props.logDir||nextProps.cliMode!==this.props.cliMode||nextProps.sdkMode!==this.props.sdkMode||nextProps.terminalVisible!==this.props.terminalVisible||nextProps.contextWindow!==this.props.contextWindow||nextProps.contextBarOptimistic!==this.props.contextBarOptimistic||nextProps.contextBarLocked!==this.props.contextBarLocked||nextProps.contextBarSlot!==this.props.contextBarSlot||nextProps.serverCachedContent!==this.props.serverCachedContent||nextProps.resumeAutoChoice!==this.props.resumeAutoChoice||nextProps.themeColor!==this.props.themeColor||nextProps.displayScale!==this.props.displayScale||nextProps.autoApproveSeconds!==this.props.autoApproveSeconds||nextProps.proxyProfiles!==this.props.proxyProfiles||nextProps.activeProxyId!==this.props.activeProxyId||nextProps.defaultConfig!==this.props.defaultConfig||nextProps.approvalPrefs!==this.props.approvalPrefs||nextProps.approvalGlobal!==this.props.approvalGlobal||nextProps.approvalDismissedIds!==this.props.approvalDismissedIds||nextProps.approvalOwnPending!==this.props.approvalOwnPending||nextState!==this.state}componentWillUnmount(){if(this._headerActionDispose){try{this._headerActionDispose()}catch{}this._headerActionDispose=null}this._countdownTimer&&clearTimeout(this._countdownTimer),this._expiredTimer&&clearTimeout(this._expiredTimer),this._cacheFadeClearTimer&&clearTimeout(this._cacheFadeClearTimer),this._cacheScrollSettleTimer&&clearTimeout(this._cacheScrollSettleTimer),this._cacheAutoFadeTimer&&clearTimeout(this._cacheAutoFadeTimer),this._cacheHighlightDelayTimer&&clearTimeout(this._cacheHighlightDelayTimer),this._cacheUnbindScrollFade(),this._fsSkillsSeq++,this._memorySeq++,this._memoryDetailSeq++,this._claudeMdSeq++,this._claudeMdDetailSeq++}startCountdown(){this._countdownTimer&&clearTimeout(this._countdownTimer),this._expiredTimer&&clearTimeout(this._expiredTimer),this.props.cacheExpireAt?this.updateCountdown():""!==this.state.countdownText&&this.setState({countdownText:""})}updateCountdown(){const{cacheExpireAt:cacheExpireAt}=this.props;if(!cacheExpireAt)return void(""!==this.state.countdownText&&this.setState({countdownText:""}));const now=Date.now(),remaining=Math.max(0,cacheExpireAt-now);if(remaining<=0){const expired=t("ui.cacheExpired");return this.state.countdownText!==expired&&this.setState({countdownText:expired}),void(this._expiredTimer=setTimeout(()=>{""!==this.state.countdownText&&this.setState({countdownText:""})},5e3))}const totalSec=Math.ceil(remaining/1e3);let text;if(totalSec>=60){const m=Math.floor(totalSec/60);text=t("ui.minuteSecond",{m:m,s:String(totalSec%60).padStart(2,"0")})}else text=t("ui.second",{s:totalSec});text!==this.state.countdownText&&this.setState({countdownText:text});const delay=1e3-now%1e3;this._countdownTimer=setTimeout(this.updateCountdown,delay)}static parseSegments(text){const segments=[],regex=/<([a-zA-Z_][\w-]*)(?:\s[^>]*)?>[\s\S]*?<\/\1>/g;let match,lastIndex=0;for(;null!==(match=regex.exec(text));){const before=text.slice(lastIndex,match.index).trim();before&&segments.push({type:"text",content:before});const tagName=match[1];if(lastIndex=match.index+match[0].length,_AppHeader.COMMAND_TAGS.has(tagName))continue;const innerRegex=new RegExp(`^<${tagName}(?:\\s[^>]*)?>([\\s\\S]*)<\\/${tagName}>$`),innerMatch=match[0].match(innerRegex),content2=innerMatch?innerMatch[1].trim():match[0].trim();segments.push({type:"system",content:content2,label:tagName})}const after=text.slice(lastIndex).trim();return after&&segments.push({type:"text",content:after}),segments}static extractUserTexts(messages){const userMsgs=[],fullTexts=[];let slashCmd=null;for(const msg of messages)if("user"===msg.role)if("string"==typeof msg.content){const text=parseImOrigin(msg.content).text.trim();if(!text)continue;if(!isSystemText(text)){if(/Implement the following plan:/i.test(text))continue;userMsgs.push(text),fullTexts.push(text)}}else if(Array.isArray(msg.content)){const{commands:commands,textBlocks:textBlocks}=classifyUserContent(msg.content);commands.length>0&&(slashCmd=commands[commands.length-1]);const userParts=[];for(const b of textBlocks)/Implement the following plan:/i.test((b.text||"").trim())||userParts.push(b.text.trim());const allParts=msg.content.filter(b=>{var _a;return"text"===b.type&&(null==(_a=b.text)?void 0:_a.trim())}).map(b=>b.text.trim());userParts.length>0&&(userMsgs.push(userParts.join("\n")),fullTexts.push(allParts.join("\n")))}return{userMsgs:userMsgs,fullTexts:fullTexts,slashCmd:slashCmd}}extractUserPrompts(){var _a;const{requests:requests=[]}=this.props,prompts=[],seen=new Set;let prevSlashCmd=null;const mainAgentRequests=requests.filter(r=>isMainAgent(r));for(let ri=0;ri<mainAgentRequests.length;ri++){const req=mainAgentRequests[ri],messages=(null==(_a=req.body)?void 0:_a.messages)||[],timestamp=req.timestamp||"",{userMsgs:userMsgs,fullTexts:fullTexts,slashCmd:slashCmd}=_AppHeader.extractUserTexts(messages);slashCmd&&"/compact"!==slashCmd&&slashCmd!==prevSlashCmd&&prompts.push({type:"prompt",segments:[{type:"text",content:slashCmd}],timestamp:timestamp}),prevSlashCmd=slashCmd;for(let i=0;i<userMsgs.length;i++){const key=userMsgs[i];if(seen.has(key))continue;seen.add(key);const raw=fullTexts[i]||key;prompts.push({type:"prompt",segments:_AppHeader.parseSegments(raw),timestamp:timestamp})}}return prompts}renderTokenStats(){const{requests:requests=[]}=this.props,{cacheHighlightIdx:cacheHighlightIdx,cacheHighlightFading:cacheHighlightFading}=this.state;if(this._tokenStatsCache&&this._tokenStatsCacheReq===requests&&this._tokenStatsCacheHl===cacheHighlightIdx&&this._tokenStatsCacheFade===cacheHighlightFading)return this._tokenStatsCache;const byModel=computeTokenStats(requests),models=Object.keys(byModel),toolStats=computeToolUsageStats(requests),skillStats=computeSkillUsageStats(requests);if(0===models.length&&0===toolStats.length)return jsxRuntimeExports.jsx("div",{className:styles$8_tokenStatsEmpty,children:"暂无 token 数据"});const tokenColumn=jsxRuntimeExports.jsx("div",{className:styles$8_tokenStatsColumn,children:models.map(model=>{const s=byModel[model],totalInput=s.input+s.cacheCreation+s.cacheRead,cacheHitRate=totalInput>0?(s.cacheRead/totalInput*100).toFixed(1):"0.0";return jsxRuntimeExports.jsxs("div",{className:models.length>1?styles$8_modelCardSpaced:sharedChrome.modelCard,children:[jsxRuntimeExports.jsx("div",{className:sharedChrome.modelName,children:model}),jsxRuntimeExports.jsx("table",{className:sharedChrome.statsTable,children:jsxRuntimeExports.jsxs("tbody",{children:[jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Token"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"input"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"output"})]}),jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(totalInput)}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(s.output)})]}),jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Cache"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"create"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"read"})]}),jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(s.cacheCreation)}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(s.cacheRead)})]}),jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:t("ui.hitRate")}),jsxRuntimeExports.jsxs("td",{colSpan:2,className:sharedChrome.td,children:[cacheHitRate,"%"]})]})]})})]},model)})}),cacheRebuildColumn=this.renderCacheRebuildStats(),toolColumn=toolStats.length>0?jsxRuntimeExports.jsx("div",{className:styles$8_toolStatsColumn,children:jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelCard,children:[jsxRuntimeExports.jsx("div",{className:sharedChrome.modelName,children:t("ui.toolUsageStats")}),jsxRuntimeExports.jsxs("table",{className:sharedChrome.statsTable,children:[jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:`${sharedChrome.th} ${styles$8_thLeft}`,children:"Tool"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.count")})]})}),jsxRuntimeExports.jsxs("tbody",{children:[toolStats.map(([name,count])=>jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsxs("td",{className:sharedChrome.label,children:[name," ",jsxRuntimeExports.jsx(ConceptHelp,{doc:`Tool-${name}`})]}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:count})]},name)),toolStats.length>1&&jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rebuildTotalRow,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Total"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:toolStats.reduce((s,e)=>s+e[1],0)})]})]})]})]})}):null,skillColumn=skillStats.length>0?jsxRuntimeExports.jsx("div",{className:styles$8_toolStatsColumn,children:jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelCard,children:[jsxRuntimeExports.jsx("div",{className:sharedChrome.modelName,children:t("ui.skillUsageStats")}),jsxRuntimeExports.jsxs("table",{className:sharedChrome.statsTable,children:[jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:`${sharedChrome.th} ${styles$8_thLeft}`,children:"Skill"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.count")})]})}),jsxRuntimeExports.jsxs("tbody",{children:[skillStats.map(([name,count])=>jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:name}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:count})]},name)),skillStats.length>1&&jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rebuildTotalRow,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Total"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:skillStats.reduce((s,e)=>s+e[1],0)})]})]})]})]})}):null,result=jsxRuntimeExports.jsxs("div",{className:styles$8_tokenStatsContainer,children:[tokenColumn,cacheRebuildColumn,toolColumn,skillColumn]});return this._tokenStatsCache=result,this._tokenStatsCacheReq=requests,this._tokenStatsCacheHl=cacheHighlightIdx,this._tokenStatsCacheFade=cacheHighlightFading,result}_cacheUnbindScrollFade(){this._cacheOnScrollFade&&this._cacheScrollEl&&(this._cacheScrollEl.removeEventListener("scroll",this._cacheOnScrollFade),this._cacheOnScrollFade=null)}_cacheBindScrollFade(){this._cacheUnbindScrollFade();const el=this._cacheScrollEl;el&&(this._cacheOnScrollFade=()=>{clearTimeout(this._cacheAutoFadeTimer),this.setState({cacheHighlightFading:!0}),this._cacheFadeClearTimer=setTimeout(()=>{this.setState({cacheHighlightIdx:null,cacheHighlightFading:!1})},3e3),this._cacheUnbindScrollFade()},el.addEventListener("scroll",this._cacheOnScrollFade,{passive:!0}))}scrollToCacheMsg(idx){if("raw"===this.props.viewMode&&this.props.onNavigateCacheMsg&&this.props.onNavigateCacheMsg(idx),(this.state._cacheSectionCollapsed||{}).messages)return void this.setState(prev=>({_cacheSectionCollapsed:{...prev._cacheSectionCollapsed||{},messages:!1}}),()=>this.scrollToCacheMsg(idx));const el=this._cacheScrollEl;if(!el)return;const target=el.querySelector(`[data-msg-idx="${idx}"]`);if(!target)return;clearTimeout(this._cacheScrollSettleTimer),clearTimeout(this._cacheFadeClearTimer),clearTimeout(this._cacheAutoFadeTimer),clearTimeout(this._cacheHighlightDelayTimer),this._cacheUnbindScrollFade(),this._cacheScrollEndHandler&&el.removeEventListener("scrollend",this._cacheScrollEndHandler),this.setState({cacheHighlightIdx:null,cacheHighlightFading:!1});let scrollDone=!1,minPassed=!1;const showHighlight=()=>{scrollDone&&minPassed&&(this.setState({cacheHighlightIdx:idx,cacheHighlightFading:!1}),this._cacheScrollSettleTimer=setTimeout(()=>this._cacheBindScrollFade(),200),this._cacheAutoFadeTimer=setTimeout(()=>{this.state.cacheHighlightIdx!==idx||this.state.cacheHighlightFading||(this.setState({cacheHighlightFading:!0}),this._cacheFadeClearTimer=setTimeout(()=>{this.setState({cacheHighlightIdx:null,cacheHighlightFading:!1})},3e3),this._cacheUnbindScrollFade())},3e3))};this._cacheScrollEndHandler=()=>{el.removeEventListener("scrollend",this._cacheScrollEndHandler),scrollDone=!0,showHighlight()},el.addEventListener("scrollend",this._cacheScrollEndHandler,{once:!0}),this._cacheScrollSettleTimer=setTimeout(()=>{el.removeEventListener("scrollend",this._cacheScrollEndHandler),scrollDone=!0,showHighlight()},800),this._cacheHighlightDelayTimer=setTimeout(()=>{minPassed=!0,showHighlight()},500),target.scrollIntoView({behavior:"smooth",block:"center"})}renderCacheRebuildStats(){const{requests:requests=[]}=this.props,stats=computeCacheRebuildStats(requests),i18nMap={ttl:"cacheLoss.ttl",system_change:"cacheLoss.systemChange",tools_change:"cacheLoss.toolsChange",model_change:"cacheLoss.modelChange",msg_truncated:"cacheLoss.msgTruncated",msg_modified:"cacheLoss.msgModified",key_change:"cacheLoss.keyChange"},activeReasons=["ttl","system_change","tools_change","model_change","msg_truncated","msg_modified","key_change"].filter(k=>stats[k].count>0),totalCount=activeReasons.reduce((sum,k)=>sum+stats[k].count,0),totalCache=activeReasons.reduce((sum,k)=>sum+stats[k].cacheCreate,0);resolveTeammateNames(requests);const subAgentCounts={},teammateCounts={};for(let i=0;i<requests.length;i++){const cls=classifyRequest(requests[i],requests[i+1]);if("SubAgent"===cls.type){const label2=cls.subType||"Other";subAgentCounts[label2]=(subAgentCounts[label2]||0)+1}else if("Teammate"===cls.type){const label2=cls.subType||"Teammate";teammateCounts[label2]=(teammateCounts[label2]||0)+1}}const subAgentEntries=Object.entries(subAgentCounts).sort((a,b)=>b[1]-a[1]),teammateEntries=Object.entries(teammateCounts).sort((a,b)=>b[1]-a[1]),hasCacheStats=activeReasons.length>0,hasSubAgentStats=subAgentEntries.length>0,hasTeammateStats=teammateEntries.length>0;return hasCacheStats||hasSubAgentStats||hasTeammateStats?jsxRuntimeExports.jsxs("div",{className:styles$8_toolStatsColumn,children:[hasCacheStats&&jsxRuntimeExports.jsxs("div",{className:hasSubAgentStats||hasTeammateStats?styles$8_modelCardSpaced:sharedChrome.modelCard,children:[jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelName,children:["MainAgent",jsxRuntimeExports.jsx(ConceptHelp,{doc:"MainAgent"})," ",t("ui.cacheRebuildStats"),jsxRuntimeExports.jsx(ConceptHelp,{doc:"CacheRebuild"})]}),jsxRuntimeExports.jsxs("table",{className:sharedChrome.statsTable,children:[jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:`${sharedChrome.th} ${styles$8_thLeft}`,children:t("ui.cacheRebuild.reason")}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.count")}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.cacheCreate")})]})}),jsxRuntimeExports.jsxs("tbody",{children:[activeReasons.map(k=>jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:t(`ui.${i18nMap[k]}`)}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:stats[k].count}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(stats[k].cacheCreate)})]},k)),activeReasons.length>1&&jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rebuildTotalRow,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Total"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:totalCount}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(totalCache)})]})]})]})]}),hasSubAgentStats&&jsxRuntimeExports.jsxs("div",{className:hasTeammateStats?styles$8_modelCardSpaced:sharedChrome.modelCard,children:[jsxRuntimeExports.jsx("div",{className:sharedChrome.modelName,children:t("ui.subAgentStats")}),jsxRuntimeExports.jsxs("table",{className:sharedChrome.statsTable,children:[jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:`${sharedChrome.th} ${styles$8_thLeft}`,children:"SubAgent"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.count")})]})}),jsxRuntimeExports.jsxs("tbody",{children:[subAgentEntries.map(([name,count])=>jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsxs("td",{className:sharedChrome.label,children:[name," ",jsxRuntimeExports.jsx(ConceptHelp,{doc:`SubAgent-${name}`})]}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:count})]},name)),subAgentEntries.length>1&&jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rebuildTotalRow,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Total"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:subAgentEntries.reduce((s,e)=>s+e[1],0)})]})]})]})]}),hasTeammateStats&&jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelCard,children:[jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelName,children:["Teammate",jsxRuntimeExports.jsx(ConceptHelp,{doc:"Teammate"})]}),jsxRuntimeExports.jsxs("table",{className:sharedChrome.statsTable,children:[jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:`${sharedChrome.th} ${styles$8_thLeft}`,children:"Name"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.count")})]})}),jsxRuntimeExports.jsxs("tbody",{children:[teammateEntries.map(([name,count])=>jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:name}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:count})]},name)),teammateEntries.length>1&&jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rebuildTotalRow,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Total"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:teammateEntries.reduce((s,e)=>s+e[1],0)})]})]})]})]})]}):null}renderTextPrompt(p){return jsxRuntimeExports.jsx("div",{className:styles$8_textPromptCard,children:p.segments.map((seg,j)=>"text"===seg.type?jsxRuntimeExports.jsx("pre",{className:styles$8_preText,children:seg.content},j):jsxRuntimeExports.jsx(Collapse,{size:"small",className:styles$8_systemCollapse,items:[{key:`sys-${j}`,label:jsxRuntimeExports.jsx("span",{className:styles$8_systemLabel,children:seg.label}),children:jsxRuntimeExports.jsx("pre",{className:styles$8_preSys,children:seg.content})}]},j))})}renderOriginalPrompt(p){const textSegments=p.segments.filter(seg=>"text"===seg.type);return 0===textSegments.length?null:jsxRuntimeExports.jsx("div",{className:styles$8_textPromptCard,children:textSegments.map((seg,j)=>jsxRuntimeExports.jsx("pre",{className:styles$8_preText,children:seg.content},j))})}buildTextModeContent(){const{promptData:promptData}=this.state,blocks=[];for(const p of promptData){const textParts=(p.segments||[]).filter(seg=>"text"===seg.type).map(seg=>seg.content);textParts.length>0&&blocks.push(textParts.join("\n"))}return blocks.join("\n\n\n")}renderProjectStatsContent(){const{projectStats:projectStats,projectStatsLoading:projectStatsLoading}=this.state;if(projectStatsLoading)return jsxRuntimeExports.jsx("div",{className:styles$8_projectStatsCenter,children:jsxRuntimeExports.jsx(Spin,{})});if(!projectStats)return jsxRuntimeExports.jsx("div",{className:styles$8_projectStatsEmpty,children:t("ui.projectStats.noData")});const{summary:summary,models:models,updatedAt:updatedAt}=projectStats;!models||Object.entries(models).sort((a,b)=>b[1]-a[1]);const modelTokens={};if(projectStats.files)for(const fStats of Object.values(projectStats.files))if(fStats.models)for(const[model,data]of Object.entries(fStats.models))modelTokens[model]||(modelTokens[model]={input:0,output:0,cacheRead:0,cacheCreation:0,count:0}),modelTokens[model].input+=data.input_tokens||0,modelTokens[model].output+=data.output_tokens||0,modelTokens[model].cacheRead+=data.cache_read_input_tokens||0,modelTokens[model].cacheCreation+=data.cache_creation_input_tokens||0,modelTokens[model].count+=data.count||0;const modelTokenEntries=Object.entries(modelTokens).sort((a,b)=>b[1].count-a[1].count);return jsxRuntimeExports.jsxs("div",{className:styles$8_projectStatsContent,children:[updatedAt&&jsxRuntimeExports.jsx("div",{className:styles$8_projectStatsUpdated,children:t("ui.projectStats.updatedAt",{time:new Date(updatedAt).toLocaleString()})}),jsxRuntimeExports.jsxs("div",{className:styles$8_projectStatsSummary,children:[jsxRuntimeExports.jsxs("div",{className:styles$8_projectStatCard,children:[jsxRuntimeExports.jsx("div",{className:styles$8_projectStatValue,children:(null==summary?void 0:summary.requestCount)??0}),jsxRuntimeExports.jsx("div",{className:styles$8_projectStatLabel,children:t("ui.projectStats.totalRequests")})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_projectStatCard,children:[jsxRuntimeExports.jsx("div",{className:styles$8_projectStatValue,children:(null==summary?void 0:summary.turnCount)??(null==summary?void 0:summary.sessionCount)??0}),jsxRuntimeExports.jsx("div",{className:styles$8_projectStatLabel,children:t("ui.projectStats.turnCount")})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_projectStatCard,children:[jsxRuntimeExports.jsx("div",{className:styles$8_projectStatValue,children:(null==summary?void 0:summary.fileCount)??0}),jsxRuntimeExports.jsx("div",{className:styles$8_projectStatLabel,children:t("ui.projectStats.totalFiles")})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_projectStatCard,children:[jsxRuntimeExports.jsx("div",{className:styles$8_projectStatValue,children:formatTokenCount(null==summary?void 0:summary.input_tokens)}),jsxRuntimeExports.jsx("div",{className:styles$8_projectStatLabel,children:"Input Tokens"})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_projectStatCard,children:[jsxRuntimeExports.jsx("div",{className:styles$8_projectStatValue,children:formatTokenCount(null==summary?void 0:summary.output_tokens)}),jsxRuntimeExports.jsx("div",{className:styles$8_projectStatLabel,children:"Output Tokens"})]})]}),modelTokenEntries.length>0&&jsxRuntimeExports.jsxs("div",{className:styles$8_projectStatsSection,children:[jsxRuntimeExports.jsx("div",{className:styles$8_projectStatsSectionTitle,children:t("ui.projectStats.modelUsage")}),modelTokenEntries.map(([model,data])=>{const totalInput=data.input+data.cacheRead+data.cacheCreation,cacheHitRate=totalInput>0?(data.cacheRead/totalInput*100).toFixed(1):"0.0";return jsxRuntimeExports.jsxs("div",{className:styles$8_projectStatsModelCard,children:[jsxRuntimeExports.jsxs("div",{className:styles$8_projectStatsModelHeader,children:[jsxRuntimeExports.jsx("span",{className:styles$8_projectStatsModelName,children:model}),jsxRuntimeExports.jsxs("span",{className:styles$8_projectStatsModelCount,children:[data.count," reqs"]})]}),jsxRuntimeExports.jsx("table",{className:sharedChrome.statsTable,children:jsxRuntimeExports.jsxs("tbody",{children:[jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Token"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"input"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"output"})]}),jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(totalInput)}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(data.output)})]}),jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Cache"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"create"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"read"})]}),jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(data.cacheCreation)}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(data.cacheRead)})]}),jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:t("ui.hitRate")}),jsxRuntimeExports.jsxs("td",{colSpan:2,className:sharedChrome.td,children:[cacheHitRate,"%"]})]})]})})]},model)})]})]})}renderContextBarPortal(){var _a,_b;const slot=this.props.contextBarSlot;if(!slot)return null;const{requests:requests=[],isLocalLog:isLocalLog,localLogFile:localLogFile,projectName:projectName,contextWindow:contextWindow,contextBarOptimistic:contextBarOptimistic,contextBarLocked:contextBarLocked,serverCachedContent:serverCachedContent,claudeProjectModel:claudeProjectModel}=this.props;let contextPercent=0,lastMainAgent=null,lastTotalTokens=0,lastInputTokens=0;if(!isLocalLog&&requests.length>0)for(let i=requests.length-1;i>=0;i--)if(isMainAgent(requests[i])&&(null==(_b=null==(_a=requests[i].response)?void 0:_a.body)?void 0:_b.usage)){lastMainAgent=requests[i];const u=lastMainAgent.response.body.usage;lastTotalTokens=sumUsageContextTokens(u),lastInputTokens=sumUsageInputTokens(u);break}let calibrationTokens=resolveCalibrationTokens(this.state.calibrationModel,lastMainAgent,claudeProjectModel);if("200k"!==this.state.calibrationModel){const usedContextTokens=lastInputTokens>0?lastInputTokens:(null==contextWindow?void 0:contextWindow.total_input_tokens)||0;calibrationTokens=adaptContextWindow(calibrationTokens,usedContextTokens)}if(!isLocalLog)if(null!=(null==contextWindow?void 0:contextWindow.used_percentage))if(lastTotalTokens>0)contextPercent=Math.min(100,Math.max(0,Math.round(lastTotalTokens/calibrationTokens*100)));else{const origMax=contextWindow.context_window_size||2e5;contextPercent=Math.min(100,Math.max(0,Math.round(contextWindow.used_percentage*origMax/calibrationTokens)))}else lastMainAgent&&lastTotalTokens>0&&(contextPercent=Math.min(100,Math.max(0,Math.round(lastTotalTokens/calibrationTokens*100))));contextBarLocked?(this._lastContextPercent=0,contextPercent=0):(contextPercent>0&&(this._lastContextPercent=contextPercent),0===contextPercent&&this._lastContextPercent>0&&(contextPercent=this._lastContextPercent),contextBarOptimistic&&(contextPercent=OPTIMISTIC_CLEAR_PERCENT));const ctxColor=contextPercent>=75?"var(--color-error-light)":contextPercent>=55?"var(--color-warning-light)":"var(--color-success)",contextTokens=contextBarLocked?0:lastTotalTokens;return reactDomExports.createPortal(jsxRuntimeExports.jsx(LiveTagPopover$1,{isLocalLog:isLocalLog,localLogFile:localLogFile,cachePopoverOpen:this.state._cachePopoverOpen,onOpenChange:this.handleCachePopoverOpenChange,requests:requests,serverCachedContent:serverCachedContent,contextPercent:contextPercent,contextTokens:contextTokens,ctxColor:ctxColor,onSkillImported:this.reloadFsSkills,fsSkills:this.state._fsSkills,memory:this.state._memory,memoryRefreshing:this.state._memoryRefreshing,claudeMd:this.state._claudeMd,calibrationModel:this.state.calibrationModel,onCalibrationModelChange:this.handleCalibrationModelChange,onOpenMemoryDetail:this.loadMemoryDetail,onOpenClaudeMd:this.loadClaudeMdDetail,onOpenSkillsModal:this.handleOpenSkillsModal,onRefreshMemory:this.handleRefreshMemory,projectName:projectName}),slot)}render(){const{requestCount:requestCount,requests:requests=[],viewMode:viewMode,cacheType:cacheType,onToggleViewMode:onToggleViewMode,onImportLocalLogs:onImportLocalLogs,onLangChange:onLangChange,isLocalLog:isLocalLog,localLogFile:localLogFile,projectName:projectName,filterIrrelevant:filterIrrelevant,onFilterIrrelevantChange:onFilterIrrelevantChange,logDir:logDir,onLogDirChange:onLogDirChange,cliMode:cliMode,terminalVisible:terminalVisible,onToggleTerminal:onToggleTerminal,onReturnToWorkspaces:onReturnToWorkspaces,contextWindow:contextWindow,contextBarOptimistic:contextBarOptimistic,serverCachedContent:serverCachedContent,resumeAutoChoice:resumeAutoChoice,onResumeAutoChoiceToggle:onResumeAutoChoiceToggle,onResumeAutoChoiceChange:onResumeAutoChoiceChange,themeColor:themeColor,onThemeColorChange:onThemeColorChange,displayScale:displayScale,onDisplayScaleChange:onDisplayScaleChange,autoApproveSeconds:autoApproveSeconds,onAutoApproveChange:onAutoApproveChange}=this.props,{countdownText:countdownText}=this.state,_prefs=this.context&&this.context.preferences||{},collapseToolResults=_prefs.collapseToolResults??!0,expandThinking=!!_prefs.expandThinking,expandDiff=!!_prefs.expandDiff,showFullToolContent=!!_prefs.showFullToolContent,onlyCurrentSession=!!_prefs.onlyCurrentSession,menuItems=this.getMenuItems(),isElectronTab=this._isElectronTab();return jsxRuntimeExports.jsxs("div",{className:styles$8_headerBar,children:[jsxRuntimeExports.jsxs(Space,{size:"middle",align:"center",children:[!isElectronTab&&jsxRuntimeExports.jsx(Dropdown,{menu:{items:menuItems,className:"logo-dropdown-menu"},trigger:["hover"],onOpenChange:open=>this.setState({logoDropdownOpen:open}),align:{offset:[-4,0]},children:jsxRuntimeExports.jsx("span",{className:`${styles$8_logoWrap}${this.state.logoDropdownOpen?` ${styles$8_logoWrapActive}`:""}`,children:jsxRuntimeExports.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:`${styles$8_logoImage}${this.state.logoDropdownOpen?` ${styles$8_logoImageActive}`:""}`,children:[jsxRuntimeExports.jsx("line",{x1:"3",y1:"6",x2:"21",y2:"6"}),jsxRuntimeExports.jsx("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),jsxRuntimeExports.jsx("line",{x1:"3",y1:"18",x2:"21",y2:"18"})]})})}),isElectronTab&&jsxRuntimeExports.jsx(Dropdown,{menu:{items:menuItems,className:"logo-dropdown-menu"},open:!!this.state.electronMenuOpen,onOpenChange:open=>this.setState({electronMenuOpen:open}),trigger:["click"],placement:"bottomLeft",getPopupContainer:()=>document.body,children:jsxRuntimeExports.jsx("span",{"aria-hidden":"true",style:{position:"fixed",top:4,left:74,width:1,height:1,pointerEvents:"none"}})}),isElectronTab&&this.state.electronMenuBar&&(()=>{const mb=this.state.electronMenuBar,menu=(mb.menus||[]).find(m=>m.id===mb.menuId);if(!menu)return null;let zoom=1;try{const n=Number(localStorage.getItem("ccv_displayScale"));Number.isFinite(n)&&n>=50&&n<=200&&(zoom=n/100)}catch{}const items=(menu.items||[]).map((it,i)=>"separator"===it.type?{type:"divider",key:`sep-${i}`}:{key:it.id,label:jsxRuntimeExports.jsxs("span",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:24},children:[jsxRuntimeExports.jsx("span",{children:it.label}),it.accel?jsxRuntimeExports.jsx("span",{style:{opacity:.55,fontSize:12},children:it.accel}):null]})});return jsxRuntimeExports.jsx(Dropdown,{menu:{items:items,className:"logo-dropdown-menu",onClick:({key:key})=>{var _a,_b;try{null==(_b=null==(_a=window.tabBridge)?void 0:_a.menuCommand)||_b.call(_a,key)}catch{}this._closeMenuBar()}},open:!0,onOpenChange:open=>{open||this._closeMenuBar()},trigger:["click"],placement:"bottomLeft",getPopupContainer:()=>document.body,children:jsxRuntimeExports.jsx("span",{"aria-hidden":"true",style:{position:"fixed",top:4,left:Math.round((mb.x||0)/zoom),width:1,height:1,pointerEvents:"none"}})})})(),!isElectronTab&&(()=>{const descByKey=new Map(this._getMenuDescriptors().map(d=>[d.key,d])),pins=this.state.pinnedKeys.map(k=>descByKey.get(k)).filter(Boolean);return 0===pins.length?null:pins.map(d=>jsxRuntimeExports.jsx(Tooltip,{title:d.label,children:jsxRuntimeExports.jsx("span",{role:"button",tabIndex:0,"aria-label":d.label,className:styles$8_pinnedShortcut,onClick:d.onClick,children:d.icon})},d.key))})(),!isLocalLog&&IM_PLATFORMS.map(p=>jsxRuntimeExports.jsx(ImStatusChip,{descriptor:p,onStatus:this._onImStatus,onClick:()=>this.setState({imRecordVisible:!0,imRecordPlatform:p.id})},p.id)),isElectronTab&&jsxRuntimeExports.jsx(Popover,{content:jsxRuntimeExports.jsxs("div",{className:styles$8_qrcodePopover,onClick:e=>e.stopPropagation(),children:[jsxRuntimeExports.jsxs("div",{className:styles$8_qrcodeTitle,children:[t("ui.scanToCoding")," ",jsxRuntimeExports.jsx(ConceptHelp,{doc:"QRCode"})]}),jsxRuntimeExports.jsx(QRCodeCanvas,{value:this.shareUrl(),size:200,bgColor:"light"===themeColor?"#ffffff":"#141414",fgColor:"light"===themeColor?"#1a1a1a":"#d9d9d9",level:"M"}),jsxRuntimeExports.jsx(Input,{readOnly:!0,value:this.shareUrl(),className:styles$8_qrcodeUrlInput,suffix:jsxRuntimeExports.jsx(RefIcon$k,{className:styles$8_qrcodeUrlCopy,onClick:()=>{navigator.clipboard.writeText(this.shareUrl()).then(()=>{staticMethods.success(t("ui.copied"))}).catch(()=>{})}})}),this.state.authState.isAdmin&&this.renderPasswordSection()]}),trigger:[],open:!!this.state.electronQrOpen,onOpenChange:o=>this.setState({electronQrOpen:o}),placement:"bottomRight",getPopupContainer:()=>document.body,overlayInnerStyle:{background:"var(--bg-elevated)",border:"1px solid var(--border-hover)",borderRadius:8,padding:"8px 8px"},children:jsxRuntimeExports.jsx("span",{"aria-hidden":"true",style:{position:"fixed",top:4,right:90,width:1,height:1,pointerEvents:"none"}})}),!isElectronTab&&this.props.activeProxyId&&"max"!==this.props.activeProxyId&&(()=>{const p=(this.props.proxyProfiles||[]).find(x=>x.id===this.props.activeProxyId);return p?jsxRuntimeExports.jsxs(Tag,{className:styles$8_proxyProfileTag,onClick:()=>this.setState({proxyModalVisible:!0}),children:[jsxRuntimeExports.jsx(RefIcon$j,{className:styles$8_proxySwapIcon}),p.name,p.activeModel?` · ${p.activeModel}`:""]}):null})(),jsxRuntimeExports.jsx(HeaderProjectLabel,{projectName:projectName,isLocalLog:isLocalLog}),this.renderContextBarPortal()]}),jsxRuntimeExports.jsxs(Space,{size:12,align:"center",className:styles$8_headerRightRow,children:[(()=>{if(isElectronTab)return null;const info=this._buildApprovalInfo();return info?jsxRuntimeExports.jsxs("button",{type:"button",className:styles$8_approvalBell,"aria-label":info.title,title:info.title,onClick:()=>this.props.onApprovalReopen&&this.props.onApprovalReopen(),children:[jsxRuntimeExports.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:[jsxRuntimeExports.jsx("path",{d:"M12 2a6 6 0 0 0-6 6v3.5L4.5 14a1 1 0 0 0 .8 1.6h13.4a1 1 0 0 0 .8-1.6L18 11.5V8a6 6 0 0 0-6-6z",stroke:"currentColor",strokeWidth:"1.6",strokeLinejoin:"round",fill:"none"}),jsxRuntimeExports.jsx("path",{d:"M10 18a2 2 0 0 0 4 0",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",fill:"none"})]}),info.count>0&&jsxRuntimeExports.jsx("span",{className:styles$8_approvalBellBadge,children:info.count})]}):null})(),countdownText&&"raw"===viewMode&&jsxRuntimeExports.jsxs(Tag,{className:styles$8_headerCountdownTag,style:{color:countdownText===t("ui.cacheExpired")?"var(--color-error-light)":"var(--text-secondary)"},children:[t("ui.cacheCountdown",{type:cacheType?`(${cacheType})`:""}),jsxRuntimeExports.jsx("strong",{className:styles$8_countdownStrong,children:countdownText})]}),!isElectronTab&&"chat"===viewMode&&cliMode&&!isLocalLog&&this.state.localUrl&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Popover,{content:jsxRuntimeExports.jsxs("div",{className:styles$8_qrcodePopover,onClick:e=>e.stopPropagation(),children:[jsxRuntimeExports.jsxs("div",{className:styles$8_qrcodeTitle,children:[t("ui.scanToCoding")," ",jsxRuntimeExports.jsx(ConceptHelp,{doc:"QRCode"})]}),jsxRuntimeExports.jsx(QRCodeCanvas,{value:this.shareUrl(),size:200,bgColor:"light"===themeColor?"#ffffff":"#141414",fgColor:"light"===themeColor?"#1a1a1a":"#d9d9d9",level:"M"}),jsxRuntimeExports.jsx(Input,{readOnly:!0,value:this.shareUrl(),className:styles$8_qrcodeUrlInput,suffix:jsxRuntimeExports.jsx(RefIcon$k,{className:styles$8_qrcodeUrlCopy,onClick:()=>{navigator.clipboard.writeText(this.shareUrl()).then(()=>{staticMethods.success(t("ui.copied"))}).catch(()=>{})}})}),this.state.authState.isAdmin&&this.renderPasswordSection()]}),trigger:["click"],open:this.state.qrPopoverOpen,onOpenChange:o=>this.setState({qrPopoverOpen:o}),placement:"bottomRight",overlayInnerStyle:{background:"var(--bg-elevated)",border:"1px solid var(--border-hover)",borderRadius:8,padding:"8px 8px"},children:jsxRuntimeExports.jsx("button",{type:"button",className:styles$8_qrcodeIcon,"aria-label":t("ui.scanToCoding"),children:jsxRuntimeExports.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:jsxRuntimeExports.jsx("path",{fillRule:"evenodd",d:"M0 0h10v10H0zM2 2v6h6V2zM3 3h4v4H3zM14 0h10v10H14zM16 2v6h6V2zM17 3h4v4H17zM0 14h10v10H0zM2 16v6h6v-6zM3 17h4v4H3zM14 14h3v3h-3zM20 14h3v3h-3zM17 17h3v3h-3zM14 20h3v3h-3zM20 20h3v3h-3z"})})})}),!isElectronTab&&jsxRuntimeExports.jsx("button",{type:"button",className:styles$8_themeToggle,title:t("light"===themeColor?"ui.themeColor.light":"ui.themeColor.dark"),"aria-label":t("light"===themeColor?"ui.themeColor.light":"ui.themeColor.dark"),onClick:()=>onThemeColorChange&&onThemeColorChange("light"===themeColor?"dark":"light"),children:"light"===themeColor?jsxRuntimeExports.jsxs("svg",{className:styles$8_themeToggleIcon,width:"16",height:"16",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[jsxRuntimeExports.jsx("circle",{cx:"8",cy:"8",r:"2.8",fill:"currentColor"}),jsxRuntimeExports.jsxs("g",{stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",children:[jsxRuntimeExports.jsx("line",{x1:"8",y1:"1",x2:"8",y2:"2.6"}),jsxRuntimeExports.jsx("line",{x1:"8",y1:"13.4",x2:"8",y2:"15"}),jsxRuntimeExports.jsx("line",{x1:"1",y1:"8",x2:"2.6",y2:"8"}),jsxRuntimeExports.jsx("line",{x1:"13.4",y1:"8",x2:"15",y2:"8"}),jsxRuntimeExports.jsx("line",{x1:"2.95",y1:"2.95",x2:"4.1",y2:"4.1"}),jsxRuntimeExports.jsx("line",{x1:"11.9",y1:"11.9",x2:"13.05",y2:"13.05"}),jsxRuntimeExports.jsx("line",{x1:"2.95",y1:"13.05",x2:"4.1",y2:"11.9"}),jsxRuntimeExports.jsx("line",{x1:"11.9",y1:"4.1",x2:"13.05",y2:"2.95"})]})]}):jsxRuntimeExports.jsx("svg",{className:styles$8_themeToggleIcon,width:"16",height:"16",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:jsxRuntimeExports.jsx("path",{d:"M8.4 2.5a5.9 5.9 0 1 0 5.1 8.55A4.8 4.8 0 0 1 8.4 2.5Z",fill:"currentColor"})})})]}),!isElectronTab&&cliMode&&"chat"===viewMode&&!isLocalLog&&jsxRuntimeExports.jsx(Button,{className:styles$8_compactBtn,type:terminalVisible?"primary":"default",ghost:terminalVisible,icon:jsxRuntimeExports.jsx(RefIcon$5,{}),onClick:onToggleTerminal,children:t("ui.terminal")}),!isElectronTab&&jsxRuntimeExports.jsx(Button,{className:styles$8_compactBtn,type:"raw"===viewMode?"primary":"default",icon:"raw"===viewMode?jsxRuntimeExports.jsx(RefIcon$2,{}):jsxRuntimeExports.jsx(RefIcon$l,{}),onClick:onToggleViewMode,children:t("raw"===viewMode?"ui.chatMode":"ui.rawMode")})]}),jsxRuntimeExports.jsx(MemoryDetailModal,{detail:this.state._memoryDetail,onClose:()=>this.setState({_memoryDetail:null}),onOpenMemoryDetail:this.loadMemoryDetail}),jsxRuntimeExports.jsx(MemoryDetailModal,{detail:this.state._claudeMdDetail,onClose:()=>this.setState({_claudeMdDetail:null}),linkMode:"passthrough"}),jsxRuntimeExports.jsxs(Modal,{title:`${t("ui.userPrompt")} (${this.state.promptData.length}${t("ui.promptCountUnit")})`,open:this.state.promptModalVisible,onCancel:()=>this.setState({promptModalVisible:!1}),footer:null,width:700,children:[jsxRuntimeExports.jsx("div",{className:styles$8_promptExportBar,children:jsxRuntimeExports.jsx(Button,{icon:jsxRuntimeExports.jsx(RefIcon$m,{}),onClick:this.handleExportPromptsTxt,children:t("ui.exportPromptsTxt")})}),jsxRuntimeExports.jsx(Tabs,{activeKey:this.state.promptViewMode,onChange:key=>this.setState({promptViewMode:key}),size:"small",items:[{key:"original",label:t("ui.promptModeOriginal")},{key:"context",label:t("ui.promptModeContext")},{key:"text",label:t("ui.promptModeText")}]}),"text"===this.state.promptViewMode?jsxRuntimeExports.jsx("textarea",{readOnly:!0,className:styles$8_promptTextarea,value:this.buildTextModeContent()}):jsxRuntimeExports.jsxs("div",{className:styles$8_promptScrollArea,children:[0===this.state.promptData.length&&jsxRuntimeExports.jsx("div",{className:styles$8_promptEmpty,children:t("ui.noPrompt")}),this.state.promptData.map((p,i)=>{const ts=p.timestamp?new Date(p.timestamp).toLocaleString():t("ui.unknownTime");return jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:styles$8_promptTimestamp,children:[ts,":"]}),"original"===this.state.promptViewMode?this.renderOriginalPrompt(p):this.renderTextPrompt(p)]},i)})]})]}),jsxRuntimeExports.jsxs(Drawer,{title:t("ui.settings"),placement:"left",rootClassName:"ccvSideDrawer",width:420,open:this.state.settingsDrawerVisible,onClose:()=>this.setState({settingsDrawerVisible:!1}),children:[jsxRuntimeExports.jsxs("div",{className:styles$8_settingsGroupBox,children:[jsxRuntimeExports.jsx("div",{className:styles$8_settingsGroupTitle,children:t("ui.chatDisplay")}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsxs("span",{className:styles$8_settingsLabel,children:[t("ui.permission.autoApprove.setting"),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.permission.autoApprove.help"),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$8_settingsHelpIcon})})]}),jsxRuntimeExports.jsx(Select,{size:"small",value:autoApproveSeconds||0,onChange:value=>onAutoApproveChange&&onAutoApproveChange(value),options:autoApproveSelectOptions(PERM_AUTO_APPROVE_OPTIONS,t),style:{width:100}})]}),this.props.approvalPrefs&&this.props.onApprovalPrefsChange&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsxs("span",{className:styles$8_settingsLabel,children:[t("ui.approval.settings.planAutoApprove"),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.approval.settings.planAutoApproveHelp"),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$8_settingsHelpIcon})})]}),jsxRuntimeExports.jsx(Select,{size:"small",value:this.props.approvalPrefs.planAutoApproveSeconds||0,onChange:value=>this.props.onApprovalPrefsChange({planAutoApproveSeconds:value}),options:autoApproveSelectOptions(PLAN_AUTO_APPROVE_OPTIONS,t),style:{width:100}})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsxs("span",{className:styles$8_settingsLabel,children:[t("ui.approval.settings.modalEnabled"),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.approval.settings.modalEnabled.help"),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$8_settingsHelpIcon})})]}),jsxRuntimeExports.jsx(Switch,{checked:!1!==this.props.approvalPrefs.modalEnabled,onChange:checked=>this.props.onApprovalPrefsChange({modalEnabled:checked})})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsxs("span",{className:styles$8_settingsLabel,children:[t("ui.approval.settings.soundEnabled"),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.approval.settings.soundEnabled.help"),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$8_settingsHelpIcon})})]}),jsxRuntimeExports.jsx(Switch,{checked:!!this.props.approvalPrefs.soundEnabled,onChange:checked=>this.props.onApprovalSoundToggle&&this.props.onApprovalSoundToggle(checked)})]}),"undefined"!=typeof window&&window.tabBridge&&jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$8_settingsLabel,children:t("ui.approval.settings.notifyOnlyWhenHidden")}),jsxRuntimeExports.jsx(Switch,{checked:!1!==this.props.approvalPrefs.notifyOnlyWhenHidden,onChange:checked=>this.props.onApprovalPrefsChange({notifyOnlyWhenHidden:checked})})]}),this.props.approvalPrefs.soundEnabled&&this.props.onVoicePackChange&&jsxRuntimeExports.jsx(VoicePackSettings,{prefs:this.props.approvalPrefs.voicePack,onChange:this.props.onVoicePackChange,embedded:!0})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsxs("span",{className:styles$8_settingsLabel,children:[t("ui.expandThinking"),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.expandThinking.help"),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$8_settingsHelpIcon})})]}),jsxRuntimeExports.jsx(Switch,{checked:!!expandThinking,onChange:checked=>this.context.updatePreferences({expandThinking:checked})})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsxs("span",{className:styles$8_settingsLabel,children:[t("ui.showFullToolContent"),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.showFullToolContent.help"),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$8_settingsHelpIcon})})]}),jsxRuntimeExports.jsx(Switch,{checked:!!showFullToolContent,onChange:checked=>this.context.updatePreferences({showFullToolContent:checked})})]}),showFullToolContent&&jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$8_settingsLabel,children:t("ui.collapseToolResults")}),jsxRuntimeExports.jsx(Switch,{checked:!!collapseToolResults,onChange:checked=>this.context.updatePreferences({collapseToolResults:checked})})]}),!this.props.isLocalLog&&jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsxs("span",{className:styles$8_settingsLabel,children:[t("ui.onlyCurrentSession"),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.onlyCurrentSession.help"),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$8_settingsHelpIcon})})]}),jsxRuntimeExports.jsx(Switch,{checked:!!onlyCurrentSession,onChange:checked=>this.context.updatePreferences({onlyCurrentSession:checked})})]})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsGroupBox,children:[jsxRuntimeExports.jsx("div",{className:styles$8_settingsGroupTitle,children:t("ui.logSettings")}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$8_settingsLabel,children:t("ui.resumeAutoChoice")}),jsxRuntimeExports.jsx(Switch,{checked:!!resumeAutoChoice,onChange:checked=>onResumeAutoChoiceToggle&&onResumeAutoChoiceToggle(checked)})]}),resumeAutoChoice&&jsxRuntimeExports.jsx("div",{className:styles$8_settingsItem,children:jsxRuntimeExports.jsxs(Radio.Group,{value:resumeAutoChoice,onChange:e=>onResumeAutoChoiceChange&&onResumeAutoChoiceChange(e.target.value),size:"small",children:[jsxRuntimeExports.jsx(Radio,{value:"continue",children:t("ui.resumeAutoChoice.continue")}),jsxRuntimeExports.jsx(Radio,{value:"new",children:t("ui.resumeAutoChoice.new")})]})})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsGroupBox,children:[jsxRuntimeExports.jsx("div",{className:styles$8_settingsGroupTitle,children:t("ui.themeStyle")}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$8_settingsLabel,children:t("ui.themeColor")}),jsxRuntimeExports.jsx(Select,{size:"small",value:themeColor||"light",onChange:value=>onThemeColorChange&&onThemeColorChange(value),options:[{label:t("ui.themeColor.dark"),value:"dark"},{label:t("ui.themeColor.light"),value:"light"}],style:{width:140}})]}),jsxRuntimeExports.jsx("div",{className:styles$8_settingsItem,children:hasNativeZoom?jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Tooltip,{title:t("ui.displayScale.hint"),children:jsxRuntimeExports.jsx("span",{className:styles$8_settingsLabel,children:t("ui.displayScale")})}),jsxRuntimeExports.jsx(Select,{size:"small",value:displayScale||100,onChange:value=>onDisplayScaleChange&&onDisplayScaleChange(value),options:DISPLAY_SCALE_PRESETS.map(p=>({label:`${p}%`,value:p})),style:{width:140}})]}):jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("span",{className:styles$8_settingsLabel,children:t("ui.displayScale")}),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.displayScale.browserHint",{mod:isMac?"⌘":"Ctrl"}),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$8_settingsHelpIcon})})]})}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$8_settingsLabel,children:t("ui.languageSettings")}),jsxRuntimeExports.jsx(Select,{size:"small",value:getLang(),onChange:value=>{setLang(value),onLangChange&&onLangChange()},options:LANG_OPTIONS.map(o=>({label:o.label,value:o.value})),style:{width:140}})]})]})]}),jsxRuntimeExports.jsxs(Drawer,{title:jsxRuntimeExports.jsxs("span",{children:[t("ui.globalSettings")," ",jsxRuntimeExports.jsx(ConceptHelp,{doc:"GlobalSettings"})]}),placement:"left",rootClassName:"ccvSideDrawer",width:400,open:this.state.globalSettingsVisible,onClose:()=>this.setState({globalSettingsVisible:!1}),children:[jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$8_settingsLabel,children:t("ui.filterIrrelevant")}),jsxRuntimeExports.jsx(Switch,{checked:!!filterIrrelevant,onChange:checked=>onFilterIrrelevantChange&&onFilterIrrelevantChange(checked)})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$8_settingsLabel,children:t("ui.expandDiff")}),jsxRuntimeExports.jsx(Switch,{checked:!!expandDiff,onChange:checked=>this.context.updatePreferences({expandDiff:checked})})]}),jsxRuntimeExports.jsx("div",{className:styles$8_settingsDivider}),jsxRuntimeExports.jsx("div",{className:styles$8_settingsLabel,children:t("ui.logDirTitle")}),jsxRuntimeExports.jsx(Input,{className:styles$8_logDirInput,value:this.state.logDirDraft??logDir,onChange:e=>this.setState({logDirDraft:e.target.value}),onBlur:()=>{const val=this.state.logDirDraft;null!=val&&val!==logDir&&(null==onLogDirChange||onLogDirChange(val)),this.setState({logDirDraft:null})},onPressEnter:()=>{const val=this.state.logDirDraft;null!=val&&val!==logDir&&(null==onLogDirChange||onLogDirChange(val)),this.setState({logDirDraft:null})},placeholder:"~/.claude/cc-viewer"})]}),jsxRuntimeExports.jsx(Drawer,{title:jsxRuntimeExports.jsxs("span",{children:[jsxRuntimeExports.jsx(RefIcon$6,{className:sharedChrome.titleIcon}),t("ui.projectStats")]}),placement:"left",rootClassName:"ccvSideDrawer",width:400,open:this.state.projectStatsVisible,onClose:()=>this.setState({projectStatsVisible:!1}),children:this.renderProjectStatsContent()}),jsxRuntimeExports.jsx(PluginModal,{open:this.state.pluginModalVisible,onClose:()=>this.setState({pluginModalVisible:!1})}),jsxRuntimeExports.jsx(ProcessModal,{open:this.state.processModalVisible,onClose:()=>this.setState({processModalVisible:!1})}),jsxRuntimeExports.jsx(ProxyModal,{open:this.state.proxyModalVisible,onClose:()=>this.setState({proxyModalVisible:!1}),proxyProfiles:this.props.proxyProfiles,activeProxyId:this.props.activeProxyId,defaultConfig:this.props.defaultConfig,onProxyProfileChange:this.props.onProxyProfileChange}),jsxRuntimeExports.jsx(MessagingModal,{open:this.state.messagingModalVisible,initialTool:this.state.messagingInitialTool,onClose:()=>this.setState({messagingModalVisible:!1})}),jsxRuntimeExports.jsx(ImConversationModal,{open:this.state.imRecordVisible,platform:this.state.imRecordPlatform,onClose:()=>this.setState({imRecordVisible:!1}),onOpenConfig:platform=>this.setState({messagingModalVisible:!0,messagingInitialTool:platform})}),this.renderSkillsManagerModal()]})}renderSkillsManagerModal(){const modal=this.state._skillsModal||{};return jsxRuntimeExports.jsx(SkillsManagerModal,{open:modal.open||!1,loading:modal.loading||!1,error:modal.error||null,skills:modal.skills||[],toggling:modal.toggling,onToggle:s=>this.handleToggleSkill(s),onClose:()=>this.setState(prev=>({_skillsModal:{...prev._skillsModal,open:!1}}))})}};__publicField(_AppHeader,"contextType",SettingsContext),__publicField(_AppHeader,"COMMAND_TAGS",new Set(["command-name","command-message","command-args","local-command-caveat","local-command-stdout"]));let AppHeader=_AppHeader;const styles$7_centerEmpty="_centerEmpty_midza_1",styles$7_scrollContainer="_scrollContainer_midza_8",styles$7_listItem="_listItem_midza_15",styles$7_listItemActive="_listItemActive_midza_29",styles$7_itemContent="_itemContent_midza_46",styles$7_itemHeader="_itemHeader_midza_51",styles$7_tagNoMargin="_tagNoMargin_midza_59",styles$7_modelName="_modelName_midza_64",styles$7_modelNameMain="_modelNameMain_midza_69",styles$7_time="_time_midza_73",styles$7_detailRow="_detailRow_midza_79",styles$7_urlText="_urlText_midza_86",styles$7_duration="_duration_midza_95",styles$7_statusOk="_statusOk_midza_100",styles$7_statusErr="_statusErr_midza_106",styles$7_statusDefault="_statusDefault_midza_111",styles$7_usageBox="_usageBox_midza_116",styles$7_cacheDot="_cacheDot_midza_126",styles$7_cacheDotLoss="_cacheDotLoss_midza_135",styles$7_cacheDotNormal="_cacheDotNormal_midza_140",styles$7_tagMainAgent="_tagMainAgent_midza_144",styles$7_tagPlan="_tagPlan_midza_150",styles$7_tagMuted="_tagMuted_midza_156",styles$7_tooltipPreLine="_tooltipPreLine_midza_162";class RequestList extends React__default.Component{constructor(props){super(props),__publicField(this,"handleKeyDown",e=>{if("ArrowUp"!==e.key&&"ArrowDown"!==e.key)return;const{requests:requests,selectedIndex:selectedIndex,onSelect:onSelect}=this.props;if(!requests.length)return;e.preventDefault();const current=selectedIndex??0,next="ArrowUp"===e.key?Math.max(0,current-1):Math.min(requests.length-1,current+1);next!==current&&onSelect(next)}),this.activeItemRef=React__default.createRef()}componentDidMount(){this.scrollToSelected(!0)}shouldComponentUpdate(nextProps){return nextProps.requests!==this.props.requests||nextProps.selectedIndex!==this.props.selectedIndex||nextProps.scrollCenter!==this.props.scrollCenter||nextProps.cacheLossMap!==this.props.cacheLossMap}componentDidUpdate(prevProps){this.props.scrollCenter&&prevProps.selectedIndex!==this.props.selectedIndex?this.scrollToSelected(!0):prevProps.selectedIndex!==this.props.selectedIndex&&(this.scrollToSelected(!1),this.activeItemRef.current&&this.activeItemRef.current.focus({preventScroll:!0}))}scrollToSelected(center2){this.activeItemRef.current&&(this.activeItemRef.current.scrollIntoView({block:center2?"center":"nearest",behavior:"instant"}),center2&&this.props.onScrollDone&&this.props.onScrollDone())}render(){const{requests:requests,selectedIndex:selectedIndex,onSelect:onSelect}=this.props;return 0===requests.length?jsxRuntimeExports.jsx("div",{className:styles$7_centerEmpty,children:jsxRuntimeExports.jsx(Empty,{description:t("ui.waitingRequests")})}):jsxRuntimeExports.jsx("div",{className:styles$7_scrollContainer,onKeyDown:this.handleKeyDown,children:jsxRuntimeExports.jsx(List,{dataSource:requests,size:"small",split:!1,renderItem:(req,index)=>{var _a,_b,_c;const time2=new Date(req.timestamp).toLocaleTimeString("zh-CN"),isActive=index===selectedIndex,statusOk2=req.response&&req.response.status<400,statusErr2=req.response&&req.response.status>=400,model=getModelShort(null==(_a=req.body)?void 0:_a.model),nextReq=index+1<requests.length?requests[index+1]:null,{type:reqType,subType:subType}=classifyRequest(req,nextReq),usage=null==(_c=null==(_b=req.response)?void 0:_b.body)?void 0:_c.usage,inputTokens=usage?(usage.input_tokens||0)+(usage.cache_read_input_tokens||0)+(usage.cache_creation_input_tokens||0):null,outputTokens=(null==usage?void 0:usage.output_tokens)||null,cacheRead=(null==usage?void 0:usage.cache_read_input_tokens)||0,cacheCreate=(null==usage?void 0:usage.cache_creation_input_tokens)||0,displayUrl=req.proxyUrl||req.url;let urlShort=displayUrl;try{const u=new URL(displayUrl);urlShort=u.host+u.pathname}catch{}return jsxRuntimeExports.jsx(List.Item,{ref:isActive?this.activeItemRef:void 0,tabIndex:0,onClick:()=>onSelect(index),className:`${styles$7_listItem} ${isActive?styles$7_listItemActive:""}`,children:jsxRuntimeExports.jsxs("div",{className:styles$7_itemContent,children:[jsxRuntimeExports.jsxs("div",{className:styles$7_itemHeader,children:["MainAgent"===reqType?jsxRuntimeExports.jsx(Tag,{className:`${styles$7_tagNoMargin} ${styles$7_tagMainAgent}`,children:"MainAgent"}):"Plan"===reqType?jsxRuntimeExports.jsx(Tag,{className:`${styles$7_tagNoMargin} ${styles$7_tagPlan}`,children:formatRequestTag(reqType,subType)}):"Count"===reqType||"Preflight"===reqType||"Synthetic"===reqType?jsxRuntimeExports.jsx(Tag,{className:`${styles$7_tagNoMargin} ${styles$7_tagMuted}`,children:formatRequestTag(reqType,subType)}):jsxRuntimeExports.jsx(Tag,{className:styles$7_tagNoMargin,children:formatRequestTag(reqType,subType)}),model&&jsxRuntimeExports.jsx("span",{className:`${styles$7_modelName} ${"MainAgent"===reqType?styles$7_modelNameMain:""}`,children:model}),jsxRuntimeExports.jsx("span",{className:styles$7_time,children:time2})]}),jsxRuntimeExports.jsxs("div",{className:styles$7_detailRow,children:[jsxRuntimeExports.jsx("span",{className:styles$7_urlText,title:displayUrl,children:urlShort}),req.duration&&jsxRuntimeExports.jsxs("span",{className:styles$7_duration,children:[req.duration,"ms"]}),req.response&&jsxRuntimeExports.jsx("span",{className:statusOk2?styles$7_statusOk:statusErr2?styles$7_statusErr:styles$7_statusDefault,children:req.response.status})]}),usage&&jsxRuntimeExports.jsxs("div",{className:styles$7_usageBox,children:[jsxRuntimeExports.jsxs("div",{children:["token: output:",formatTokenCount(outputTokens)||0,", input: ",formatTokenCount(inputTokens)||0]}),(cacheRead>0||cacheCreate>0)&&jsxRuntimeExports.jsx("div",{children:(()=>{var _a2;const loss=null==(_a2=this.props.cacheLossMap)?void 0:_a2.get(index),reasonI18nMap={ttl:"ui.cacheLoss.ttl",system_change:"ui.cacheLoss.systemChange",tools_change:"ui.cacheLoss.toolsChange",model_change:"ui.cacheLoss.modelChange",msg_truncated:"ui.cacheLoss.msgTruncated",msg_modified:"ui.cacheLoss.msgModified",key_change:"ui.cacheLoss.keyChange"};let dot;if(loss){const tooltipText=(loss.reasons||[loss.reason]).map(r=>t(reasonI18nMap[r]||reasonI18nMap.key_change)).join("\n");dot=jsxRuntimeExports.jsx(Tooltip,{title:jsxRuntimeExports.jsx("span",{className:styles$7_tooltipPreLine,children:tooltipText}),children:jsxRuntimeExports.jsx("span",{className:`${styles$7_cacheDot} ${styles$7_cacheDotLoss}`})})}else dot=jsxRuntimeExports.jsx("span",{className:`${styles$7_cacheDot} ${styles$7_cacheDotNormal}`});return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:["cache",dot,": ",cacheRead>0?`read:${formatTokenCount(cacheRead)}`:"",cacheRead>0&&cacheCreate>0?", ":"",cacheCreate>0?`create:${formatTokenCount(cacheCreate)}`:""]})})()})]})]})})}})})}}const isDate=data=>!!data&&data instanceof Date,isObject=data=>"object"==typeof data&&null!==data,isFunction=data=>!!data&&data instanceof Object&&"function"==typeof data;function quoteString(value,quoted){return void 0===quoted&&(quoted=!1),!value||quoted?`"${value}"`:value}function ExpandableObject(_ref){let{field:field2,value:value,data:data,lastElement:lastElement,openBracket:openBracket,closeBracket:closeBracket,level:level,style:style,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,outerRef:outerRef,beforeExpandChange:beforeExpandChange}=_ref;const shouldExpandNodeCalledRef=reactExports.useRef(!1),[expanded,setExpanded]=reactExports.useState(()=>shouldExpandNode(level,value,field2)),expanderButtonRef=reactExports.useRef(null);reactExports.useEffect(()=>{shouldExpandNodeCalledRef.current?setExpanded(shouldExpandNode(level,value,field2)):shouldExpandNodeCalledRef.current=!0},[shouldExpandNode]);const contentsId=reactExports.useId();if(0===data.length)return function(_ref2){let{field:field2,openBracket:openBracket,closeBracket:closeBracket,lastElement:lastElement,style:style}=_ref2;return reactExports.createElement("div",{className:style.basicChildStyle,role:"treeitem","aria-selected":void 0},(field2||""===field2)&&reactExports.createElement("span",{className:style.label},quoteString(field2,style.quotesForFieldNames),":"),reactExports.createElement("span",{className:style.punctuation},openBracket),reactExports.createElement("span",{className:style.punctuation},closeBracket),!lastElement&&reactExports.createElement("span",{className:style.punctuation},","))}({field:field2,openBracket:openBracket,closeBracket:closeBracket,lastElement:lastElement,style:style});const expanderIconStyle=expanded?style.collapseIcon:style.expandIcon,ariaLabel=expanded?style.ariaLables.collapseJson:style.ariaLables.expandJson,childLevel=level+1,lastIndex=data.length-1,setExpandWithCallback=newExpandValue=>{expanded===newExpandValue||beforeExpandChange&&!beforeExpandChange({level:level,value:value,field:field2,newExpandValue:newExpandValue})||setExpanded(newExpandValue)},onKeyDown=e=>{if("ArrowRight"===e.key||"ArrowLeft"===e.key)e.preventDefault(),setExpandWithCallback("ArrowRight"===e.key);else if("ArrowUp"===e.key||"ArrowDown"===e.key){e.preventDefault();const direction="ArrowUp"===e.key?-1:1;if(!outerRef.current)return;const buttonElements=outerRef.current.querySelectorAll("[role=button]");let currentIndex=-1;for(let i=0;i<buttonElements.length;i++)if(0===buttonElements[i].tabIndex){currentIndex=i;break}if(currentIndex<0)return;const nextIndex=(currentIndex+direction+buttonElements.length)%buttonElements.length;buttonElements[currentIndex].tabIndex=-1,buttonElements[nextIndex].tabIndex=0,buttonElements[nextIndex].focus()}},onClick=()=>{var _outerRef$current;setExpandWithCallback(!expanded);const buttonElement=expanderButtonRef.current;if(!buttonElement)return;const prevButtonElement=null===(_outerRef$current=outerRef.current)||void 0===_outerRef$current?void 0:_outerRef$current.querySelector('[role=button][tabindex="0"]');prevButtonElement&&(prevButtonElement.tabIndex=-1),buttonElement.tabIndex=0,buttonElement.focus()};return reactExports.createElement("div",{className:style.basicChildStyle,role:"treeitem","aria-expanded":expanded,"aria-selected":void 0},reactExports.createElement("span",{className:expanderIconStyle,onClick:onClick,onKeyDown:onKeyDown,role:"button","aria-label":ariaLabel,"aria-expanded":expanded,"aria-controls":expanded?contentsId:void 0,ref:expanderButtonRef,tabIndex:0===level?0:-1}),(field2||""===field2)&&(clickToExpandNode?reactExports.createElement("span",{className:style.clickableLabel,onClick:onClick,onKeyDown:onKeyDown},quoteString(field2,style.quotesForFieldNames),":"):reactExports.createElement("span",{className:style.label},quoteString(field2,style.quotesForFieldNames),":")),reactExports.createElement("span",{className:style.punctuation},openBracket),expanded?reactExports.createElement("ul",{id:contentsId,role:"group",className:style.childFieldsContainer},data.map((dataElement,index)=>reactExports.createElement(DataRender,{key:dataElement[0]||index,field:dataElement[0],value:dataElement[1],style:style,lastElement:index===lastIndex,level:childLevel,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,beforeExpandChange:beforeExpandChange,outerRef:outerRef}))):reactExports.createElement("span",{className:style.collapsedContent,onClick:onClick,onKeyDown:onKeyDown}),reactExports.createElement("span",{className:style.punctuation},closeBracket),!lastElement&&reactExports.createElement("span",{className:style.punctuation},","))}function JsonObject(_ref3){let{field:field2,value:value,style:style,lastElement:lastElement,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,level:level,outerRef:outerRef,beforeExpandChange:beforeExpandChange}=_ref3;return ExpandableObject({field:field2,value:value,lastElement:lastElement||!1,level:level,openBracket:"{",closeBracket:"}",style:style,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,data:Object.keys(value).map(key=>[key,value[key]]),outerRef:outerRef,beforeExpandChange:beforeExpandChange})}function JsonArray(_ref4){let{field:field2,value:value,style:style,lastElement:lastElement,level:level,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,outerRef:outerRef,beforeExpandChange:beforeExpandChange}=_ref4;return ExpandableObject({field:field2,value:value,lastElement:lastElement||!1,level:level,openBracket:"[",closeBracket:"]",style:style,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,data:value.map(element=>[void 0,element]),outerRef:outerRef,beforeExpandChange:beforeExpandChange})}function JsonPrimitiveValue(_ref5){let stringValue,{field:field2,value:value,style:style,lastElement:lastElement}=_ref5,valueStyle=style.otherValue;var data;return null===value?(stringValue="null",valueStyle=style.nullValue):void 0===value?(stringValue="undefined",valueStyle=style.undefinedValue):"string"==typeof(data=value)||data instanceof String?(stringValue=function(value,quoted,stringify){return stringify?JSON.stringify(value):quoted?`"${value}"`:value}(value,!style.noQuotesForStringValues,style.stringifyStringValues),valueStyle=style.stringValue):(data=>"boolean"==typeof data||data instanceof Boolean)(value)?(stringValue=value?"true":"false",valueStyle=style.booleanValue):(data=>"number"==typeof data||data instanceof Number)(value)?(stringValue=value.toString(),valueStyle=style.numberValue):(data=>"bigint"==typeof data||data instanceof BigInt)(value)?(stringValue=`${value.toString()}n`,valueStyle=style.numberValue):stringValue=isDate(value)?value.toISOString():isFunction(value)?"function() { }":value.toString(),reactExports.createElement("div",{className:style.basicChildStyle,role:"treeitem","aria-selected":void 0},(field2||""===field2)&&reactExports.createElement("span",{className:style.label},quoteString(field2,style.quotesForFieldNames),":"),reactExports.createElement("span",{className:valueStyle},stringValue),!lastElement&&reactExports.createElement("span",{className:style.punctuation},","))}function DataRender(props){const value=props.value;return data=value,Array.isArray(data)?reactExports.createElement(JsonArray,Object.assign({},props)):!isObject(value)||isDate(value)||isFunction(value)?reactExports.createElement(JsonPrimitiveValue,Object.assign({},props)):reactExports.createElement(JsonObject,Object.assign({},props));var data}var styles$6_basic_element_style="_2bkNM",styles$6_child_fields_container="_1BXBN";const defaultAriaLables={collapseJson:"collapse JSON",expandJson:"expand JSON"},defaultStyles={container:"_2IvMF _GzYRV",basicChildStyle:styles$6_basic_element_style,childFieldsContainer:styles$6_child_fields_container,label:"_1MGIk",clickableLabel:"_2YKJg _1MGIk _1MFti",nullValue:"_2T6PJ",undefinedValue:"_1Gho6",stringValue:"_vGjyY",booleanValue:"_3zQKs",numberValue:"_1bQdo",otherValue:"_1xvuR",punctuation:"_3uHL6 _3eOF8",collapseIcon:"_oLqym _f10Tu _1MFti _1LId0",expandIcon:"_2AXVT _f10Tu _1MFti _1UmXx",collapsedContent:"_2KJWg _1pNG9 _1MFti",noQuotesForStringValues:!1,quotesForFieldNames:!1,ariaLables:defaultAriaLables,stringifyStringValues:!1},darkStyles={container:"_11RoI _GzYRV",basicChildStyle:styles$6_basic_element_style,childFieldsContainer:styles$6_child_fields_container,label:"_2bSDX",clickableLabel:"_1RQEj _2bSDX _1MFti",nullValue:"_LaAZe",undefinedValue:"_GTKgm",stringValue:"_Chy1W",booleanValue:"_2vRm-",numberValue:"_2bveF",otherValue:"_1prJR",punctuation:"_gsbQL _3eOF8",collapseIcon:"_3QHg2 _f10Tu _1MFti _1LId0",expandIcon:"_17H2C _f10Tu _1MFti _1UmXx",collapsedContent:"_3fDAz _1pNG9 _1MFti",noQuotesForStringValues:!1,quotesForFieldNames:!1,ariaLables:defaultAriaLables,stringifyStringValues:!1},allExpanded=()=>!0,JsonView=_ref=>{let{data:data,style:style=defaultStyles,shouldExpandNode:shouldExpandNode=allExpanded,clickToExpandNode:clickToExpandNode=!1,beforeExpandChange:beforeExpandChange,compactTopLevel:compactTopLevel,...ariaAttrs}=_ref;const outerRef=reactExports.useRef(null);return reactExports.createElement("div",Object.assign({"aria-label":"JSON view"},ariaAttrs,{className:style.container,ref:outerRef,role:"tree"}),compactTopLevel&&isObject(data)?Object.entries(data).map(_ref2=>{let[key,value]=_ref2;return reactExports.createElement(DataRender,{key:key,field:key,value:value,style:{...defaultStyles,...style},lastElement:!0,level:1,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,beforeExpandChange:beforeExpandChange,outerRef:outerRef})}):reactExports.createElement(DataRender,{value:data,style:{...defaultStyles,...style},lastElement:!0,level:0,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,outerRef:outerRef,beforeExpandChange:beforeExpandChange}))},styles$5_container="_container_qeuid_1";class JsonViewer extends React__default.Component{shouldComponentUpdate(nextProps){return nextProps.data!==this.props.data||nextProps.defaultExpand!==this.props.defaultExpand||nextProps.expandNode!==this.props.expandNode}render(){const{data:data,defaultExpand:defaultExpand,expandNode:expandNode}=this.props,customStyles={..."undefined"!=typeof document&&"light"!==document.documentElement.getAttribute("data-theme")?darkStyles:defaultStyles,container:"rjv-container"};if(null==data)return null;const shouldExpandNode="function"==typeof expandNode?expandNode:"all"===defaultExpand?()=>!0:"root"===defaultExpand?level=>level<2:level=>level<1;return jsxRuntimeExports.jsx("div",{className:styles$5_container,children:jsxRuntimeExports.jsx(JsonView,{data:data,shouldExpandNode:shouldExpandNode,style:customStyles})})}}const styles$4={root:"_root_tc1hs_1",sidebar:"_sidebar_tc1hs_9",section:"_section_tc1hs_18",sectionHeader:"_sectionHeader_tc1hs_22",arrow:"_arrow_tc1hs_48",sectionTitle:"_sectionTitle_tc1hs_54",sectionCount:"_sectionCount_tc1hs_62",sectionBody:"_sectionBody_tc1hs_71",historyToggle:"_historyToggle_tc1hs_76",historyToggleLabel:"_historyToggleLabel_tc1hs_102",item:"_item_tc1hs_107",itemActive:"_itemActive_tc1hs_135",itemContent:"_itemContent_tc1hs_142",itemLabel:"_itemLabel_tc1hs_148",itemSublabel:"_itemSublabel_tc1hs_156",itemTime:"_itemTime_tc1hs_165",contentWrap:"_contentWrap_tc1hs_176",content:"_content_tc1hs_174",contentEmpty:"_contentEmpty_tc1hs_192",contentInner:"_contentInner_tc1hs_199",emptyWrap:"_emptyWrap_tc1hs_203",roleHeader:"_roleHeader_tc1hs_211",roleBadge:"_roleBadge_tc1hs_219",role_user:"_role_user_tc1hs_228",role_assistant:"_role_assistant_tc1hs_234",roleLabel:"_roleLabel_tc1hs_240",contentTime:"_contentTime_tc1hs_247",turnDivider:"_turnDivider_tc1hs_255",textBlock:"_textBlock_tc1hs_262",textBlockBar:"_textBlockBar_tc1hs_269",textBlockBody:"_textBlockBody_tc1hs_278",textBlockCompact:"_textBlockCompact_tc1hs_286",textBlockCompactFloat:"_textBlockCompactFloat_tc1hs_293",thinkingBlock:"_thinkingBlock_tc1hs_300",thinkingHeader:"_thinkingHeader_tc1hs_308",thinkingPreview:"_thinkingPreview_tc1hs_323",thinkingBody:"_thinkingBody_tc1hs_333",toolBlock:"_toolBlock_tc1hs_339",toolBlockResult:"_toolBlockResult_tc1hs_346",toolBlockError:"_toolBlockError_tc1hs_350",toolBlockHeader:"_toolBlockHeader_tc1hs_354",toolBlockBody:"_toolBlockBody_tc1hs_365",toolName:"_toolName_tc1hs_370",toolId:"_toolId_tc1hs_376",errorLabel:"_errorLabel_tc1hs_383",blockTag:"_blockTag_tc1hs_393",blockTagText:"_blockTagText_tc1hs_406",blockTagThinking:"_blockTagThinking_tc1hs_412",blockTagResult:"_blockTagResult_tc1hs_418",blockTagError:"_blockTagError_tc1hs_424",jsonBlock:"_jsonBlock_tc1hs_431",jsonBlockLabel:"_jsonBlockLabel_tc1hs_438",blockSeparator:"_blockSeparator_tc1hs_448",markdownBody:"_markdownBody_tc1hs_455",contentToolbar:"_contentToolbar_tc1hs_463",contentToolbarLabel:"_contentToolbarLabel_tc1hs_472",rawPre:"_rawPre_tc1hs_478"},{Text:Text$1}=Typography;function parseContentBlocks(content2){if(null==content2)return[];if("string"==typeof content2){const trimmed=content2.trim();return trimmed?[{type:"markdown",text:trimmed}]:[]}if(Array.isArray(content2)){const blocks=[];for(const block of content2)if(block)if("text"===block.type){const trimmed=(block.text||"").trim();trimmed&&blocks.push({type:"markdown",text:trimmed})}else if("tool_use"===block.type)blocks.push({type:"tool_use",name:block.name||"unknown",id:block.id||"",input:block.input??{}});else if("tool_result"===block.type){const inner=parseResultContent(block.content);blocks.push({type:"tool_result",tool_use_id:block.tool_use_id||"",is_error:block.is_error,content:inner})}else if("thinking"===block.type){const text=block.thinking||"";text.trim()&&blocks.push({type:"thinking",text:text})}else"image"===block.type?blocks.push({type:"json",label:"image",data:block}):blocks.push({type:"json",label:block.type||"block",data:block});return blocks}return[{type:"json",label:"content",data:content2}]}function parseResultContent(content2){if(null==content2)return[];if("string"==typeof content2){const trimmed=content2.trim();return trimmed?[{type:"markdown",text:trimmed}]:[]}return Array.isArray(content2)?content2.flatMap(c=>{if(!c)return[];if("text"===c.type){const trimmed=(c.text||"").trim();return trimmed?[{type:"markdown",text:trimmed}]:[]}return[{type:"json",label:c.type||"block",data:c}]}):[{type:"json",label:"content",data:content2}]}function parseToolBlocks(tool){const blocks=[],name=(null==tool?void 0:tool.name)||"unknown",desc=(null==tool?void 0:tool.description)||"";let md=`### ${name}\n\n`;desc&&(md+=`${desc}\n\n`),blocks.push({type:"markdown",text:md});const schema=(null==tool?void 0:tool.input_schema)||(null==tool?void 0:tool.parameters)||null;return schema&&blocks.push({type:"json",label:"Parameters",data:schema}),blocks}function extractPreviewText(content2){var _a;if("string"==typeof content2)return content2.slice(0,60).replace(/\n/g," ");if(Array.isArray(content2))for(const block of content2)if("text"===(null==block?void 0:block.type)&&(null==(_a=block.text)?void 0:_a.trim()))return block.text.trim().slice(0,60).replace(/\n/g," ");return""}function formatTurnTime(isoStr){try{return new Date(isoStr).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})}catch{return null}}function TranslatableMarkdown({text:text,compact:compact}){const displayHtml=renderMarkdown(text);return compact?jsxRuntimeExports.jsx("div",{className:styles$4.textBlockCompact,children:jsxRuntimeExports.jsx("div",{className:`chat-md ${styles$4.markdownBody}`,dangerouslySetInnerHTML:{__html:displayHtml}})}):jsxRuntimeExports.jsxs("div",{className:styles$4.textBlock,children:[jsxRuntimeExports.jsx("div",{className:styles$4.textBlockBar,children:jsxRuntimeExports.jsx("span",{className:`${styles$4.blockTag} ${styles$4.blockTagText}`,children:"text"})}),jsxRuntimeExports.jsx("div",{className:`chat-md ${styles$4.textBlockBody}`,dangerouslySetInnerHTML:{__html:displayHtml}})]})}function ThinkingBlock({block:block}){const[expanded,setExpanded]=reactExports.useState(!0),preview=block.text.length>60?block.text.slice(0,60).replace(/\n/g," ")+"…":block.text.replace(/\n/g," ");return jsxRuntimeExports.jsxs("div",{className:styles$4.thinkingBlock,children:[jsxRuntimeExports.jsxs("div",{className:styles$4.thinkingHeader,onClick:()=>setExpanded(v=>!v),children:[expanded?jsxRuntimeExports.jsx(RefIcon$b,{className:styles$4.arrow}):jsxRuntimeExports.jsx(RefIcon$c,{className:styles$4.arrow}),jsxRuntimeExports.jsx("span",{className:`${styles$4.blockTag} ${styles$4.blockTagThinking}`,children:"thinking"}),!expanded&&jsxRuntimeExports.jsx("span",{className:styles$4.thinkingPreview,children:preview})]}),expanded&&jsxRuntimeExports.jsx("div",{className:styles$4.thinkingBody,children:jsxRuntimeExports.jsx("div",{className:`chat-md ${styles$4.markdownBody}`,dangerouslySetInnerHTML:{__html:renderMarkdown(block.text)}})})]})}function RenderBlocks({blocks:blocks,compact:compact}){return blocks&&0!==blocks.length?jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{children:blocks.map((block,i)=>jsxRuntimeExports.jsx(RenderBlock,{block:block,compact:compact},i))}):null}function RenderBlock({block:block,compact:compact}){var _a;return"separator"===block.type?jsxRuntimeExports.jsx("hr",{className:styles$4.blockSeparator}):"markdown"===block.type?(null==(_a=block.text)?void 0:_a.trim())?jsxRuntimeExports.jsx(TranslatableMarkdown,{text:block.text,compact:compact}):null:"thinking"===block.type?jsxRuntimeExports.jsx(ThinkingBlock,{block:block}):"tool_use"===block.type?jsxRuntimeExports.jsxs("div",{className:styles$4.toolBlock,children:[jsxRuntimeExports.jsxs("div",{className:styles$4.toolBlockHeader,children:[jsxRuntimeExports.jsx("span",{className:styles$4.blockTag,children:"tool_use"}),jsxRuntimeExports.jsx("span",{className:styles$4.toolName,children:block.name}),block.id&&jsxRuntimeExports.jsx("span",{className:styles$4.toolId,children:block.id})]}),jsxRuntimeExports.jsx("div",{className:styles$4.toolBlockBody,children:jsxRuntimeExports.jsx(JsonViewer,{data:block.input,defaultExpand:"root"})})]}):"tool_result"===block.type?jsxRuntimeExports.jsxs("div",{className:`${styles$4.toolBlock} ${block.is_error?styles$4.toolBlockError:styles$4.toolBlockResult}`,children:[jsxRuntimeExports.jsxs("div",{className:styles$4.toolBlockHeader,children:[jsxRuntimeExports.jsx("span",{className:`${styles$4.blockTag} ${block.is_error?styles$4.blockTagError:styles$4.blockTagResult}`,children:"tool_result"}),block.tool_use_id&&jsxRuntimeExports.jsx("span",{className:styles$4.toolId,children:block.tool_use_id}),block.is_error&&jsxRuntimeExports.jsx("span",{className:styles$4.errorLabel,children:"error"})]}),jsxRuntimeExports.jsx("div",{className:styles$4.toolBlockBody,children:jsxRuntimeExports.jsx(RenderBlocks,{blocks:block.content,compact:!0})})]}):"json"===block.type?jsxRuntimeExports.jsxs("div",{className:styles$4.jsonBlock,children:[block.label&&jsxRuntimeExports.jsx("div",{className:styles$4.jsonBlockLabel,children:block.label}),jsxRuntimeExports.jsx(JsonViewer,{data:block.data,defaultExpand:"root"})]}):null}function TurnContent({turn:turn}){const timeStr=turn.timestamp?formatTurnTime(turn.timestamp):null,assistantTimeStr=turn.assistantTimestamp?formatTurnTime(turn.assistantTimestamp):null;return jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:styles$4.roleHeader,children:[jsxRuntimeExports.jsx("span",{className:`${styles$4.roleBadge} ${styles$4.role_user}`,children:"user"}),jsxRuntimeExports.jsx("span",{className:styles$4.roleLabel,children:`Turn ${turn.turnIndex+1}`}),timeStr&&jsxRuntimeExports.jsx("span",{className:styles$4.contentTime,children:timeStr})]}),jsxRuntimeExports.jsx(RenderBlocks,{blocks:turn.userBlocks}),turn.assistantBlocks&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("div",{className:styles$4.turnDivider}),jsxRuntimeExports.jsxs("div",{className:styles$4.roleHeader,children:[jsxRuntimeExports.jsx("span",{className:`${styles$4.roleBadge} ${styles$4.role_assistant}`,children:"assistant"}),assistantTimeStr&&jsxRuntimeExports.jsx("span",{className:styles$4.contentTime,children:assistantTimeStr})]}),jsxRuntimeExports.jsx(RenderBlocks,{blocks:turn.assistantBlocks})]})]})}function AccordionSection({sectionKey:sectionKey,title:title,items:items,historyItems:historyItems=[],onSelect:onSelect,onSelectById:onSelectById,selectedId:selectedId,sidebarRef:sidebarRef}){const[open,setOpen]=reactExports.useState("tools"!==sectionKey),[historyOpen,setHistoryOpen]=reactExports.useState(!1),totalCount=items.length+historyItems.length,historyToggleId=`${sectionKey}__history_toggle`;function handleControlKeyDown(event,controlId){var _a;const nextId=function({currentId:currentId,visibleIds:visibleIds=[],key:key}){if("ArrowUp"!==key&&"ArrowDown"!==key)return null;const currentIndex=visibleIds.findIndex(id=>id===currentId);return currentIndex>=0?visibleIds[currentIndex+("ArrowUp"===key?-1:1)]??null:null}({currentId:controlId,visibleIds:Array.from((null==(_a=sidebarRef.current)?void 0:_a.querySelectorAll("[data-context-sidebar-control]"))||[]).map(el=>el.dataset.contextSidebarControl).filter(Boolean),key:event.key});nextId&&(event.preventDefault(),"undefined"!=typeof window&&window.requestAnimationFrame(()=>{var _a2;!function(controlId){var _a;const el=null==(_a=sidebarRef.current)?void 0:_a.querySelector(`[data-context-sidebar-control="${controlId}"]`);el&&(el.focus(),el.scrollIntoView({block:"nearest"}))}(nextId);const nextEl=null==(_a2=sidebarRef.current)?void 0:_a2.querySelector(`[data-context-sidebar-control="${nextId}"]`);"item"===(null==nextEl?void 0:nextEl.dataset.controlType)&&onSelectById(nextId)}))}function renderItem(item2){const active=selectedId===item2.id;return jsxRuntimeExports.jsxs("button",{type:"button",className:`${styles$4.item} ${active?styles$4.itemActive:""}`,onClick:()=>onSelect(item2),onKeyDown:event=>handleControlKeyDown(event,item2.id),"aria-current":active?"true":void 0,"data-context-sidebar-control":item2.id,"data-control-type":"item",children:[jsxRuntimeExports.jsxs("div",{className:styles$4.itemContent,children:[jsxRuntimeExports.jsx("span",{className:styles$4.itemLabel,children:item2.label}),item2.sublabel&&!active&&jsxRuntimeExports.jsx("div",{className:styles$4.itemSublabel,children:item2.sublabel})]}),item2.time&&jsxRuntimeExports.jsx("span",{className:styles$4.itemTime,children:item2.time})]},item2.id)}return jsxRuntimeExports.jsxs("div",{className:styles$4.section,children:[jsxRuntimeExports.jsxs("button",{type:"button",className:styles$4.sectionHeader,onClick:()=>setOpen(v=>!v),"aria-expanded":open,children:[open?jsxRuntimeExports.jsx(RefIcon$b,{className:styles$4.arrow}):jsxRuntimeExports.jsx(RefIcon$c,{className:styles$4.arrow}),jsxRuntimeExports.jsx("span",{className:styles$4.sectionTitle,children:title}),jsxRuntimeExports.jsx("span",{className:styles$4.sectionCount,children:totalCount})]}),open&&jsxRuntimeExports.jsxs("div",{className:styles$4.sectionBody,children:[historyItems.length>0&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsxs("button",{type:"button",className:styles$4.historyToggle,onClick:()=>setHistoryOpen(v=>!v),onKeyDown:event=>handleControlKeyDown(event,historyToggleId),"aria-expanded":historyOpen,"data-context-sidebar-control":historyToggleId,"data-control-type":"toggle",children:[historyOpen?jsxRuntimeExports.jsx(RefIcon$b,{className:styles$4.arrow}):jsxRuntimeExports.jsx(RefIcon$c,{className:styles$4.arrow}),jsxRuntimeExports.jsxs("span",{className:styles$4.historyToggleLabel,children:[t("ui.context.history")," (",historyItems.length,")"]})]}),historyOpen&&historyItems.map(renderItem)]}),items.map(renderItem)]})]})}function ContextTab({body:body,response:response}){const[selectedItem,setSelectedItem]=reactExports.useState(null),[rawMode,setRawMode]=reactExports.useState(!1),sidebarRef=reactExports.useRef(null),contentRef=reactExports.useRef(null),turns=reactExports.useMemo(()=>{if(!Array.isArray(null==body?void 0:body.messages))return[];const allTurns=function(messages){var _a;const turns=[];let i=0;for(;i<messages.length;){const userMsg=messages[i];if("user"!==(null==userMsg?void 0:userMsg.role)){i++;continue}const assistantMsg="assistant"===(null==(_a=messages[i+1])?void 0:_a.role)?messages[i+1]:null;turns.push({id:`turn__${i}`,isTurn:!0,turnIndex:turns.length,timestamp:userMsg._timestamp||null,assistantTimestamp:(null==assistantMsg?void 0:assistantMsg._timestamp)||null,userBlocks:parseContentBlocks(null==userMsg?void 0:userMsg.content),assistantBlocks:assistantMsg?parseContentBlocks(assistantMsg.content):null,rawUser:userMsg,rawAssistant:assistantMsg,preview:extractPreviewText(null==userMsg?void 0:userMsg.content)}),i+=assistantMsg?2:1}return turns}(body.messages);if(0===allTurns.length)return allTurns;const last=allTurns[allTurns.length-1],responseBlocks=(null==response?void 0:response.content)?parseContentBlocks(response.content):null;return[...allTurns.slice(0,-1),{...last,assistantBlocks:responseBlocks??last.assistantBlocks,rawAssistant:responseBlocks?response:last.rawAssistant}]},[body,response]);reactExports.useEffect(()=>{turns.length>0?setSelectedItem(turns[turns.length-1]):setSelectedItem(null)},[body,response]);const currentSelectedItem=(null==selectedItem?void 0:selectedItem.isTurn)?turns.find(turn=>turn.id===selectedItem.id)??null:selectedItem,rawText=reactExports.useMemo(()=>function(item2){if(!item2)return"";const raw=item2.isTurn?[item2.rawUser,item2.rawAssistant].filter(Boolean):item2.raw;if(null==raw)return"";const clean="object"==typeof raw?stripPrivateKeys(raw):raw;return"string"==typeof clean?clean:JSON.stringify(clean,null,2)}(currentSelectedItem),[currentSelectedItem]);if(!body||"object"!=typeof body)return jsxRuntimeExports.jsx("div",{className:styles$4.emptyWrap,children:jsxRuntimeExports.jsx(Empty,{description:t("ui.context.noData")})});const accordionSections=[];Array.isArray(body.tools)&&body.tools.length>0&&accordionSections.push({key:"tools",title:jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[t("ui.context.tools")," ",jsxRuntimeExports.jsx(ConceptHelp,{doc:"ToolsFirst"})]}),items:body.tools.map((tool,i)=>({id:`tool__${i}`,label:(null==tool?void 0:tool.name)||`Tool ${i}`,blocks:parseToolBlocks(tool),raw:tool}))});const systemBlocks=function(system){if(!system)return null;if("string"==typeof system)return[{type:"markdown",text:system}];if(Array.isArray(system)){const blocks=[];return system.forEach((item2,i)=>{i>0&&blocks.push({type:"separator"}),item2&&("string"==typeof item2?blocks.push({type:"markdown",text:item2}):"text"===item2.type?blocks.push({type:"markdown",text:item2.text||""}):blocks.push({type:"json",label:item2.type||"item",data:item2}))}),blocks}return[{type:"json",label:"system",data:system}]}(body.system);if(null!=systemBlocks&&accordionSections.push({key:"system",title:t("ui.context.systemPrompt"),items:[{id:"system__0",label:t("ui.context.systemPrompt"),blocks:systemBlocks,raw:body.system}]}),turns.length>0){const toHistoryItem=turn=>({...turn,label:t("ui.context.historyTurnNoTime",{n:turn.turnIndex+1}),time:turn.timestamp?formatTurnTime(turn.timestamp):null,sublabel:turn.preview||void 0}),toCurrentItem=turn=>({...turn,label:t("ui.context.currentTurn"),sublabel:turn.preview||void 0}),historyTurns=turns.slice(0,-1).map(toHistoryItem),currentTurn=toCurrentItem(turns[turns.length-1]);accordionSections.push({key:"messages",title:t("ui.context.messages"),historyItems:historyTurns.length>0?historyTurns:void 0,items:[currentTurn]})}if(0===accordionSections.length)return jsxRuntimeExports.jsx("div",{className:styles$4.emptyWrap,children:jsxRuntimeExports.jsx(Empty,{description:t("ui.context.noFields")})});const itemMap=new Map;return accordionSections.forEach(section2=>{(section2.historyItems||[]).forEach(item2=>itemMap.set(item2.id,item2)),section2.items.forEach(item2=>itemMap.set(item2.id,item2))}),jsxRuntimeExports.jsxs("div",{className:styles$4.root,children:[jsxRuntimeExports.jsx("div",{ref:sidebarRef,className:styles$4.sidebar,children:accordionSections.map(sec=>jsxRuntimeExports.jsx(AccordionSection,{sectionKey:sec.key,title:sec.title,items:sec.items,historyItems:sec.historyItems,selectedId:null==currentSelectedItem?void 0:currentSelectedItem.id,onSelect:item2=>setSelectedItem(item2),onSelectById:itemId=>{const nextItem=itemMap.get(itemId);nextItem&&setSelectedItem(nextItem)},sidebarRef:sidebarRef},sec.key))}),jsxRuntimeExports.jsxs("div",{className:styles$4.contentWrap,children:[null!=currentSelectedItem&&jsxRuntimeExports.jsxs("div",{className:styles$4.contentToolbar,children:[rawMode&&jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$k,{}),onClick:()=>{navigator.clipboard&&navigator.clipboard.writeText(rawText).then(()=>staticMethods.success(t("ui.copySuccess"))).catch(()=>{})},children:t("ui.copy")}),jsxRuntimeExports.jsx("span",{className:styles$4.contentToolbarLabel,children:t("ui.context.viewRaw")}),jsxRuntimeExports.jsx(Switch,{size:"small",checked:rawMode,"aria-label":t("ui.context.viewRaw"),onChange:v=>{setRawMode(v),contentRef.current&&(contentRef.current.scrollTop=0)}})]}),jsxRuntimeExports.jsx("div",{className:styles$4.content,ref:contentRef,children:null==currentSelectedItem?jsxRuntimeExports.jsx("div",{className:styles$4.contentEmpty,children:jsxRuntimeExports.jsx(Text$1,{type:"secondary",children:t("ui.context.selectPrompt")})}):jsxRuntimeExports.jsx("div",{className:styles$4.contentInner,children:rawMode?jsxRuntimeExports.jsx("pre",{className:styles$4.rawPre,children:rawText}):currentSelectedItem.isTurn?jsxRuntimeExports.jsx(TurnContent,{turn:currentSelectedItem}):jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[currentSelectedItem.role&&jsxRuntimeExports.jsxs("div",{className:styles$4.roleHeader,children:[jsxRuntimeExports.jsx("span",{className:`${styles$4.roleBadge} ${styles$4[`role_${currentSelectedItem.role}`]||""}`,children:currentSelectedItem.role}),jsxRuntimeExports.jsx("span",{className:styles$4.roleLabel,children:currentSelectedItem.label})]}),jsxRuntimeExports.jsx(RenderBlocks,{blocks:currentSelectedItem.blocks})]})},currentSelectedItem.id)})]})]})}const styles$3_container="_container_rg6mx_1",styles$3_emptyState="_emptyState_rg6mx_10",styles$3_urlSection="_urlSection_rg6mx_17",styles$3_urlLeft="_urlLeft_rg6mx_25",styles$3_tokenStatsBox="_tokenStatsBox_rg6mx_30",styles$3_tokenGrid="_tokenGrid_rg6mx_37",styles$3_tokenRows="_tokenRows_rg6mx_47",styles$3_tokenRow="_tokenRow_rg6mx_47",styles$3_tokenRowBorder="_tokenRowBorder_rg6mx_55",styles$3_tokenLabel="_tokenLabel_rg6mx_59",styles$3_tokenTd="_tokenTd_rg6mx_66",styles$3_tokenHitRate="_tokenHitRate_rg6mx_75",styles$3_tokenHitRateLabel="_tokenHitRateLabel_rg6mx_88",styles$3_urlText="_urlText_rg6mx_98",styles$3_metaText="_metaText_rg6mx_105",styles$3_headersContainer="_headersContainer_rg6mx_109",styles$3_headerRow="_headerRow_rg6mx_113",styles$3_headerKey="_headerKey_rg6mx_119",styles$3_headerValue="_headerValue_rg6mx_124",styles$3_streamingBox="_streamingBox_rg6mx_129",styles$3_rawTextPre="_rawTextPre_rg6mx_142",styles$3_tabContent="_tabContent_rg6mx_155",styles$3_bodyLabel="_bodyLabel_rg6mx_167",styles$3_bodyHeader="_bodyHeader_rg6mx_171",styles$3_diffSection="_diffSection_rg6mx_178",styles$3_diffToggle="_diffToggle_rg6mx_182",styles$3_diffIcon="_diffIcon_rg6mx_188",styles$3_reminderSelect="_reminderSelect_rg6mx_214",styles$3_diffHeaderRow="_diffHeaderRow_rg6mx_233",styles$3_diffSpaceRight="_diffSpaceRight_rg6mx_239",styles$3_reminderFilterWrapper="_reminderFilterWrapper_rg6mx_243",styles$3_reminderLabel="_reminderLabel_rg6mx_249",styles$3_cacheTabContent="_cacheTabContent_rg6mx_255",styles$3_userPromptList="_userPromptList_rg6mx_260",styles$3_userPromptItem="_userPromptItem_rg6mx_266",styles$3_userPromptNavBtn="_userPromptNavBtn_rg6mx_277",styles$3_cacheContent="_cacheContent_rg6mx_288",styles$3_cacheTokenBar="_cacheTokenBar_rg6mx_295",styles$3_cacheTokenWrite="_cacheTokenWrite_rg6mx_305",styles$3_cacheTokenRead="_cacheTokenRead_rg6mx_309",styles$3_cacheCopyIcon="_cacheCopyIcon_rg6mx_313",styles$3_cacheScrollArea="_cacheScrollArea_rg6mx_320",styles$3_cacheSectionBlock="_cacheSectionBlock_rg6mx_326",styles$3_cacheSectionHeader="_cacheSectionHeader_rg6mx_330",styles$3_cacheCollapseArrow="_cacheCollapseArrow_rg6mx_342",styles$3_cachePre="_cachePre_rg6mx_348",styles$3_cacheHighlightSvg="_cacheHighlightSvg_rg6mx_362",styles$3_cachePreSystem="_cachePreSystem_rg6mx_371",{Text:Text,Paragraph:Paragraph}=Typography;class DetailPanel extends React__default.Component{constructor(props){super(props),this.state={bodyViewMode:{request:"json",response:"json",diff:"json"},diffExpanded:!1,requestHeadersExpanded:!1,responseHeadersExpanded:!1,reminderFilters:null,cacheHighlightIdx:null,cacheHighlightFading:!1,cacheCollapsed:{tools:!1,system:!1,messages:!1}}}_cacheUnbindScrollFade(){this._cacheOnScrollFade&&this._cacheScrollEl&&(this._cacheScrollEl.removeEventListener("scroll",this._cacheOnScrollFade),this._cacheOnScrollFade=null)}_cacheClearAllTimers(){clearTimeout(this._cacheScrollSettleTimer),clearTimeout(this._cacheFadeClearTimer),clearTimeout(this._cacheAutoFadeTimer),clearTimeout(this._cacheHighlightDelayTimer),this._cacheUnbindScrollFade(),this._cacheScrollEndHandler&&this._cacheScrollEl&&(this._cacheScrollEl.removeEventListener("scrollend",this._cacheScrollEndHandler),this._cacheScrollEndHandler=null)}componentWillUnmount(){this._cacheClearAllTimers()}_cacheBindScrollFade(){this._cacheUnbindScrollFade();const el=this._cacheScrollEl;el&&(this._cacheOnScrollFade=()=>{clearTimeout(this._cacheAutoFadeTimer),this.setState({cacheHighlightFading:!0}),this._cacheFadeClearTimer=setTimeout(()=>{this.setState({cacheHighlightIdx:null,cacheHighlightFading:!1})},3e3),this._cacheUnbindScrollFade()},el.addEventListener("scroll",this._cacheOnScrollFade,{passive:!0}))}scrollToCacheMsg(idx){if(this.state.cacheCollapsed.messages)return void this.setState(prev=>({cacheCollapsed:{...prev.cacheCollapsed,messages:!1}}),()=>this.scrollToCacheMsg(idx));const el=this._cacheScrollEl;if(!el)return;const target=el.querySelector(`[data-msg-idx="${idx}"]`);if(!target)return;clearTimeout(this._cacheScrollSettleTimer),clearTimeout(this._cacheFadeClearTimer),clearTimeout(this._cacheAutoFadeTimer),clearTimeout(this._cacheHighlightDelayTimer),this._cacheUnbindScrollFade(),this._cacheScrollEndHandler&&el.removeEventListener("scrollend",this._cacheScrollEndHandler),this.setState({cacheHighlightIdx:null,cacheHighlightFading:!1});let scrollDone=!1,minPassed=!1;const showHighlight=()=>{scrollDone&&minPassed&&(this.setState({cacheHighlightIdx:idx,cacheHighlightFading:!1}),this._cacheScrollSettleTimer=setTimeout(()=>this._cacheBindScrollFade(),200),this._cacheAutoFadeTimer=setTimeout(()=>{this.state.cacheHighlightIdx!==idx||this.state.cacheHighlightFading||(this.setState({cacheHighlightFading:!0}),this._cacheFadeClearTimer=setTimeout(()=>{this.setState({cacheHighlightIdx:null,cacheHighlightFading:!1})},3e3),this._cacheUnbindScrollFade())},3e3))};this._cacheScrollEndHandler=()=>{el.removeEventListener("scrollend",this._cacheScrollEndHandler),scrollDone=!0,showHighlight()},el.addEventListener("scrollend",this._cacheScrollEndHandler,{once:!0}),this._cacheScrollSettleTimer=setTimeout(()=>{el.removeEventListener("scrollend",this._cacheScrollEndHandler),scrollDone=!0,showHighlight()},800),this._cacheHighlightDelayTimer=setTimeout(()=>{minPassed=!0,showHighlight()},500),target.scrollIntoView({behavior:"smooth",block:"center"})}shouldComponentUpdate(nextProps,nextState){if(nextProps.request!==this.props.request){const isMA=isMainAgent(nextProps.request);this.setState({diffExpanded:isMA&&!!nextProps.expandDiff,requestHeadersExpanded:!1,responseHeadersExpanded:!1,reminderFilters:null}),this._cacheClearAllTimers()}const onCacheTab="kv-cache-text"===nextProps.currentTab;return nextProps.request!==this.props.request||nextProps.currentTab!==this.props.currentTab||nextProps.onTabChange!==this.props.onTabChange||nextProps.selectedIndex!==this.props.selectedIndex||nextProps.expandDiff!==this.props.expandDiff||nextProps.pendingCacheHighlight!==this.props.pendingCacheHighlight||nextState.bodyViewMode!==this.state.bodyViewMode||onCacheTab&&nextState.cacheHighlightIdx!==this.state.cacheHighlightIdx||onCacheTab&&nextState.cacheHighlightFading!==this.state.cacheHighlightFading||nextState.diffExpanded!==this.state.diffExpanded||nextState.requestHeadersExpanded!==this.state.requestHeadersExpanded||nextState.responseHeadersExpanded!==this.state.responseHeadersExpanded||nextState.reminderFilters!==this.state.reminderFilters||onCacheTab&&nextState.cacheCollapsed!==this.state.cacheCollapsed}componentDidUpdate(prevProps){const pch=this.props.pendingCacheHighlight;pch&&pch!==prevProps.pendingCacheHighlight&&setTimeout(()=>{var _a,_b;this.scrollToCacheMsg(pch.msgIdx),null==(_b=(_a=this.props).onCacheHighlightDone)||_b.call(_a)},150)}getCurrentRequest(){const{request:request,allRequests:allRequests,requests:requests}=this.props;return request?request._slimmed?restoreSlimmedEntry(request,allRequests||requests||[]):request:null}toggleBodyViewMode(type){this.setState(prev=>({bodyViewMode:{...prev.bodyViewMode,[type]:"json"===prev.bodyViewMode[type]?"text":"json"}}))}copyBody(type){var _a;const request=this.getCurrentRequest();if(!request)return;let data;if(data="diff"===type?this._lastDiffResult:"request"===type?request.body:null==(_a=request.response)?void 0:_a.body,null==data)return;const clean="object"==typeof data?stripPrivateKeys(data):data,text="string"==typeof clean?clean:JSON.stringify(clean,null,2);navigator.clipboard.writeText(text).then(()=>staticMethods.success(t("ui.copySuccess")))}renderHeaders(headers){return headers&&0!==Object.keys(headers).length?jsxRuntimeExports.jsx("div",{className:styles$3_headersContainer,children:Object.entries(headers).map(([key,value])=>jsxRuntimeExports.jsxs("div",{className:styles$3_headerRow,children:[jsxRuntimeExports.jsx(Text,{code:!0,className:styles$3_headerKey,children:key}),"authorization"===key&&jsxRuntimeExports.jsx(ConceptHelp,{doc:"TranslateContextPollution"}),jsxRuntimeExports.jsx(Text,{type:"secondary",className:styles$3_headerValue,children:String(value)})]},key))}):jsxRuntimeExports.jsx(Text,{type:"secondary",children:t("ui.noHeaders")})}getRequestExpandNode(data,type){if("request"!==type||!data||"object"!=typeof data)return;const{request:request,requests:requests,selectedIndex:selectedIndex}=this.props;if(!request)return;const nextReq=requests&&null!=selectedIndex?requests[selectedIndex+1]:null,{type:reqType}=classifyRequest(request,nextReq);let claudeMdExpandSet=null;if("claudeMd"===this.state.reminderFilters&&Array.isArray(data.messages)){claudeMdExpandSet=new Set,claudeMdExpandSet.add(data.messages);for(const msg of data.messages){if(!msg||"object"!=typeof msg)continue;const content2=msg.content;if("string"==typeof content2)isClaudeMdReminder(content2)&&claudeMdExpandSet.add(msg);else if(Array.isArray(content2)){let hasMatch=!1;for(const block of content2)block&&"text"===block.type&&isClaudeMdReminder(block.text)&&(claudeMdExpandSet.add(block),hasMatch=!0);hasMatch&&(claudeMdExpandSet.add(msg),claudeMdExpandSet.add(content2))}}}let skillsExpandSet=null;if("skills"===this.state.reminderFilters&&Array.isArray(data.messages)){skillsExpandSet=new Set,skillsExpandSet.add(data.messages);for(const msg of data.messages){if(!msg||"object"!=typeof msg)continue;const content2=msg.content;if("string"==typeof content2)isSkillsReminder(content2)&&skillsExpandSet.add(msg);else if(Array.isArray(content2)){let hasMatch=!1;for(const block of content2)block&&"text"===block.type&&isSkillsReminder(block.text)&&(skillsExpandSet.add(block),hasMatch=!0);hasMatch&&(skillsExpandSet.add(msg),skillsExpandSet.add(content2))}}}const filterExpandSet=claudeMdExpandSet||skillsExpandSet;if("Preflight"===reqType){const expandRefs=new Set,collectAll=obj=>{obj&&"object"==typeof obj&&(expandRefs.add(obj),Array.isArray(obj)?obj.forEach(collectAll):Object.values(obj).forEach(collectAll))};return Array.isArray(data.messages)&&collectAll(data.messages),Array.isArray(data.system)&&data.system.length>=3&&collectAll(data.system[2]),(level,value,field2)=>level<2||(!!expandRefs.has(value)||(!(!filterExpandSet||!filterExpandSet.has(value))||1===level&&"system"===field2))}if("MainAgent"===reqType&&Array.isArray(data.messages)&&1===data.messages.length){const msg=data.messages[0],contentArr=msg&&Array.isArray(msg.content)?msg.content:null,lastContent=contentArr&&contentArr.length>0?contentArr[contentArr.length-1]:null,expandRefs=new Set,collectAll=obj=>{obj&&"object"==typeof obj&&(expandRefs.add(obj),Array.isArray(obj)?obj.forEach(collectAll):Object.values(obj).forEach(collectAll))};return lastContent&&collectAll(lastContent),expandRefs.add(data.messages),msg&&"object"==typeof msg&&expandRefs.add(msg),contentArr&&expandRefs.add(contentArr),(level,value,field2)=>level<2||(!!expandRefs.has(value)||!(!filterExpandSet||!filterExpandSet.has(value)))}return filterExpandSet?(level,value,field2)=>level<2||!!filterExpandSet.has(value):void 0}renderBody(data,type){const{bodyViewMode:bodyViewMode}=this.state;if(null==data)return jsxRuntimeExports.jsx(Text,{type:"secondary",children:t("ui.noBody")});if("string"==typeof data&&data.includes("Streaming Response"))return jsxRuntimeExports.jsx("div",{className:styles$3_streamingBox,children:jsxRuntimeExports.jsx(Text,{type:"secondary",children:t("ui.streamingResponse")})});const clean="object"==typeof data?stripPrivateKeys(data):data,isJsonMode="json"===bodyViewMode[type],expandNode=this.getRequestExpandNode(clean,type);return jsxRuntimeExports.jsx("div",{children:isJsonMode?jsxRuntimeExports.jsx(JsonViewer,{data:clean,defaultExpand:"response"===type?"all":"root",expandNode:expandNode}):jsxRuntimeExports.jsx("pre",{className:styles$3_rawTextPre,children:"string"==typeof clean?clean:JSON.stringify(clean,null,2)})})}getPrevMainAgentRequest(){const{requests:requests,selectedIndex:selectedIndex}=this.props;if(!requests||null==selectedIndex)return null;for(let i=selectedIndex-1;i>=0;i--)if(isMainAgent(requests[i])){const r=requests[i];return r._slimmed?restoreSlimmedEntry(r,this.props.allRequests||requests):r}return null}computeDiff(prev,curr){if(null==prev||null==curr)return null;if("object"!=typeof prev||"object"!=typeof curr)return null;const result={},allKeys=new Set([...Object.keys(prev),...Object.keys(curr)]);for(const key of allKeys)if(!key.startsWith("_"))if(key in prev){if(!(key in curr))continue;JSON.stringify(prev[key])!==JSON.stringify(curr[key])&&("messages"===key&&Array.isArray(prev[key])&&Array.isArray(curr[key])&&curr[key].length>prev[key].length?result[key]=curr[key].slice(prev[key].length):result[key]=curr[key])}else result[key]=curr[key];return Object.keys(result).length?result:null}render(){var _a,_b,_c;let request=this.getCurrentRequest();const{currentTab:currentTab,onTabChange:onTabChange}=this.props;if(!request)return jsxRuntimeExports.jsx("div",{className:styles$3_emptyState,children:jsxRuntimeExports.jsx(Empty,{description:"选择一个请求查看详情"})});const time2=new Date(request.timestamp).toLocaleString("zh-CN"),statusOk2=request.response&&request.response.status<400;let diffBlock=null;if(isMainAgent(request)){const prevRequest=this.getPrevMainAgentRequest();if(prevRequest){if(JSON.stringify(request.body).length<JSON.stringify(prevRequest.body).length)diffBlock=jsxRuntimeExports.jsxs("div",{className:styles$3_diffSection,children:[jsxRuntimeExports.jsxs(Text,{strong:!0,className:styles$3_diffToggle,onClick:()=>this.setState(prev=>({diffExpanded:!prev.diffExpanded})),children:["Body Diff JSON ",jsxRuntimeExports.jsx(ConceptHelp,{doc:"BodyDiffJSON"})," ",this.state.diffExpanded?jsxRuntimeExports.jsx(RefIcon$b,{className:styles$3_diffIcon}):jsxRuntimeExports.jsx(RefIcon$c,{className:styles$3_diffIcon})]}),this.state.diffExpanded&&jsxRuntimeExports.jsx(Text,{type:"secondary",children:t("ui.diffSessionChanged")})]});else{const diffResult=stripPrivateKeys(this.computeDiff(prevRequest.body,request.body));diffResult&&(this._lastDiffResult=diffResult,diffBlock=jsxRuntimeExports.jsxs("div",{className:styles$3_diffSection,children:[jsxRuntimeExports.jsxs("div",{className:styles$3_diffHeaderRow,children:[jsxRuntimeExports.jsxs(Text,{strong:!0,className:styles$3_diffToggle,onClick:()=>this.setState(prev=>({diffExpanded:!prev.diffExpanded})),children:["Body Diff JSON ",jsxRuntimeExports.jsx(ConceptHelp,{doc:"BodyDiffJSON"})," ",this.state.diffExpanded?jsxRuntimeExports.jsx(RefIcon$b,{className:styles$3_diffIcon}):jsxRuntimeExports.jsx(RefIcon$c,{className:styles$3_diffIcon})]}),this.state.diffExpanded&&jsxRuntimeExports.jsxs(Space,{size:"small",className:styles$3_diffSpaceRight,children:[jsxRuntimeExports.jsx(Button,{size:"small",icon:"json"===this.state.bodyViewMode.diff?jsxRuntimeExports.jsx(RefIcon$l,{}):jsxRuntimeExports.jsx(RefIcon$5,{}),onClick:()=>this.toggleBodyViewMode("diff"),children:"json"===this.state.bodyViewMode.diff?"Text":"JSON"}),jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$k,{}),onClick:()=>this.copyBody("diff"),children:t("ui.copy")})]})]}),this.state.diffExpanded&&jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{children:"json"===this.state.bodyViewMode.diff?jsxRuntimeExports.jsx(JsonViewer,{data:diffResult,defaultExpand:"all"}):jsxRuntimeExports.jsx("pre",{className:styles$3_rawTextPre,children:JSON.stringify(diffResult,null,2)})})]}))}}}const hasClaudeMd=hasClaudeMdReminder(request.body),hasSkills=hasSkillsReminder(request.body),tabItems=[{key:"request",label:"Request",children:jsxRuntimeExports.jsxs("div",{className:styles$3_tabContent,children:[jsxRuntimeExports.jsxs("div",{className:styles$3_diffSection,children:[jsxRuntimeExports.jsxs(Text,{strong:!0,className:styles$3_diffToggle,onClick:()=>this.setState(prev=>({requestHeadersExpanded:!prev.requestHeadersExpanded})),children:["Headers ",this.state.requestHeadersExpanded?jsxRuntimeExports.jsx(RefIcon$b,{className:styles$3_diffIcon}):jsxRuntimeExports.jsx(RefIcon$c,{className:styles$3_diffIcon})]}),this.state.requestHeadersExpanded&&this.renderHeaders(request.headers)]}),diffBlock,jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:styles$3_bodyHeader,children:[jsxRuntimeExports.jsxs(Text,{strong:!0,className:styles$3_bodyLabel,children:["Body",jsxRuntimeExports.jsx(ConceptHelp,{doc:"BodyFields"})]}),jsxRuntimeExports.jsxs(Space,{size:"small",children:[(hasClaudeMd||hasSkills)&&jsxRuntimeExports.jsxs("span",{className:styles$3_reminderFilterWrapper,children:[jsxRuntimeExports.jsx("span",{className:styles$3_reminderLabel,children:"system-reminder:"}),jsxRuntimeExports.jsx(Select,{size:"small",className:styles$3_reminderSelect,placeholder:"filter",value:this.state.reminderFilters||void 0,onChange:val=>this.setState({reminderFilters:val||null}),options:[{label:"CLAUDE.md",value:"claudeMd",disabled:!hasClaudeMd},{label:"Skills",value:"skills",disabled:!hasSkills}],popupMatchSelectWidth:!1,allowClear:!0})]}),jsxRuntimeExports.jsx(Button,{size:"small",icon:"json"===this.state.bodyViewMode.request?jsxRuntimeExports.jsx(RefIcon$l,{}):jsxRuntimeExports.jsx(RefIcon$5,{}),onClick:()=>this.toggleBodyViewMode("request"),children:"json"===this.state.bodyViewMode.request?"Text":"JSON"}),jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$k,{}),onClick:()=>this.copyBody("request"),children:t("ui.copy")})]})]}),this.renderBody(request.body,"request")]})]})},{key:"response",label:"Response",children:jsxRuntimeExports.jsx("div",{className:styles$3_tabContent,children:request.response?jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsxs("div",{className:styles$3_diffSection,children:[jsxRuntimeExports.jsxs(Text,{strong:!0,className:styles$3_diffToggle,onClick:()=>this.setState(prev=>({responseHeadersExpanded:!prev.responseHeadersExpanded})),children:["Headers ",this.state.responseHeadersExpanded?jsxRuntimeExports.jsx(RefIcon$b,{className:styles$3_diffIcon}):jsxRuntimeExports.jsx(RefIcon$c,{className:styles$3_diffIcon})]}),this.state.responseHeadersExpanded&&this.renderHeaders(request.response.headers)]}),jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:styles$3_bodyHeader,children:[jsxRuntimeExports.jsxs(Text,{strong:!0,className:styles$3_bodyLabel,children:["Body",jsxRuntimeExports.jsx(ConceptHelp,{doc:"ResponseFields"})]}),jsxRuntimeExports.jsxs(Space,{size:"small",children:[jsxRuntimeExports.jsx(Button,{size:"small",icon:"json"===this.state.bodyViewMode.response?jsxRuntimeExports.jsx(RefIcon$l,{}):jsxRuntimeExports.jsx(RefIcon$5,{}),onClick:()=>this.toggleBodyViewMode("response"),children:"json"===this.state.bodyViewMode.response?"Text":"JSON"}),jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$k,{}),onClick:()=>this.copyBody("response"),children:t("ui.copy")})]})]}),this.renderBody(request.response.body,"response")]})]}):jsxRuntimeExports.jsx(Empty,{description:t("ui.responseNotCaptured")})})},{key:"kv-cache-text",label:jsxRuntimeExports.jsxs("span",{children:["KV-Cache-Text ",jsxRuntimeExports.jsx(ConceptHelp,{doc:"KVCacheContent"})]}),children:jsxRuntimeExports.jsx("div",{className:`${styles$3_tabContent} ${styles$3_cacheTabContent}`,children:(()=>{const cached=extractCachedContent([request]),reqKey=request.timestamp+"|"+request.url;if(cached&&(cached.cacheCreateTokens>0||cached.cacheReadTokens>0)&&(this._lastCachedTokensKey=reqKey,this._lastCachedTokens={cacheCreateTokens:cached.cacheCreateTokens,cacheReadTokens:cached.cacheReadTokens}),!cached||0===cached.system.length&&0===cached.messages.length&&0===cached.tools.length)return jsxRuntimeExports.jsx(Empty,{description:t("ui.noCachedContent"),image:Empty.PRESENTED_IMAGE_SIMPLE});const userPrompts=cached.messages.map((text,i)=>({text:text,msgIdx:i})).filter(({text:text})=>text.startsWith("[user]")).map(({text:text,msgIdx:msgIdx})=>{const raw=text.replace(/^\[user\]\s*/,"").trim();if(!raw||isSystemText(raw))return{cleaned:"",msgIdx:msgIdx};return{cleaned:AppHeader.parseSegments(raw).filter(s=>"text"===s.type).map(s=>s.content.trim()).filter(s=>s&&!isSystemText(s)).join(" ").trim(),msgIdx:msgIdx}}).filter(({cleaned:cleaned})=>!!cleaned&&!/Implement the following plan:/i.test(cleaned)),userPromptNavList=userPrompts.length>0?jsxRuntimeExports.jsx("div",{className:styles$3_userPromptList,children:userPrompts.map(({cleaned:cleaned,msgIdx:msgIdx})=>jsxRuntimeExports.jsx("div",{className:styles$3_userPromptItem,onMouseEnter:e=>{e.currentTarget.style.background="var(--color-primary-bg-lighter)",e.currentTarget.style.color="var(--text-white)"},onMouseLeave:e=>{e.currentTarget.style.background="",e.currentTarget.style.color="var(--text-secondary)"},onClick:()=>this.scrollToCacheMsg(msgIdx),children:cleaned},msgIdx))}):null;return jsxRuntimeExports.jsxs("div",{className:styles$3_cacheContent,children:[(()=>{const displayTokens=cached.cacheCreateTokens>0||cached.cacheReadTokens>0?cached:this._lastCachedTokensKey===reqKey?this._lastCachedTokens:null;return displayTokens||userPromptNavList?jsxRuntimeExports.jsxs("div",{className:styles$3_cacheTokenBar,children:[displayTokens&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[t("ui.tokens"),": ",jsxRuntimeExports.jsxs("span",{className:styles$3_cacheTokenWrite,children:["write ",formatTokenCount(displayTokens.cacheCreateTokens)]})," / ",jsxRuntimeExports.jsxs("span",{className:styles$3_cacheTokenRead,children:["read ",formatTokenCount(displayTokens.cacheReadTokens)]}),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.copyAllCacheText"),children:jsxRuntimeExports.jsx(RefIcon$k,{className:styles$3_cacheCopyIcon,onClick:()=>{navigator.clipboard.writeText((()=>{const parts=[];if(cached.tools.length>0){const indented=cached.tools.map(xml=>xml.split("\n").map(l=>l?" "+l:l).join("\n")).join("\n");parts.push(`<tools>\n${indented}\n</tools>`)}return cached.system.length>0&&parts.push(`<system-reminder>\n${cached.system.join("\n\n")}\n</system-reminder>`),cached.messages.length>0&&cached.messages.forEach(t2=>parts.push(t2)),parts.join("\n\n")})()).then(()=>{staticMethods.success(t("ui.copied"))}).catch(()=>{})}})})]}),userPromptNavList&&jsxRuntimeExports.jsx(Popover,{content:userPromptNavList,trigger:"hover",placement:"left",children:jsxRuntimeExports.jsx("span",{className:styles$3_userPromptNavBtn,children:t("ui.userPromptNav")})})]}):null})(),jsxRuntimeExports.jsxs("div",{className:styles$3_cacheScrollArea,ref:el=>{this._cacheScrollEl=el},children:[cached.tools.length>0&&jsxRuntimeExports.jsxs("div",{className:styles$3_cacheSectionBlock,children:[jsxRuntimeExports.jsxs("div",{className:styles$3_cacheSectionHeader,onClick:()=>this.setState(prev=>({cacheCollapsed:{...prev.cacheCollapsed,tools:!prev.cacheCollapsed.tools}})),children:[jsxRuntimeExports.jsx("span",{className:styles$3_cacheCollapseArrow,style:{transform:this.state.cacheCollapsed.tools?"rotate(-90deg)":"rotate(0deg)"},children:"▼"}),t("ui.tools")," (",cached.tools.length,")"]}),!this.state.cacheCollapsed.tools&&cached.tools.map((text,i)=>jsxRuntimeExports.jsx("pre",{className:styles$3_cachePre,children:text},i))]}),cached.system.length>0&&jsxRuntimeExports.jsxs("div",{className:styles$3_cacheSectionBlock,children:[jsxRuntimeExports.jsxs("div",{className:styles$3_cacheSectionHeader,onClick:()=>this.setState(prev=>({cacheCollapsed:{...prev.cacheCollapsed,system:!prev.cacheCollapsed.system}})),children:[jsxRuntimeExports.jsx("span",{className:styles$3_cacheCollapseArrow,style:{transform:this.state.cacheCollapsed.system?"rotate(-90deg)":"rotate(0deg)"},children:"▼"}),t("ui.systemPrompt")," (",cached.system.length,")"]}),!this.state.cacheCollapsed.system&&cached.system.map((text,i)=>jsxRuntimeExports.jsx("pre",{className:styles$3_cachePreSystem,children:text},i))]}),cached.messages.length>0&&jsxRuntimeExports.jsxs("div",{className:styles$3_cacheSectionBlock,children:[jsxRuntimeExports.jsxs("div",{className:styles$3_cacheSectionHeader,onClick:()=>this.setState(prev=>({cacheCollapsed:{...prev.cacheCollapsed,messages:!prev.cacheCollapsed.messages}})),children:[jsxRuntimeExports.jsx("span",{className:styles$3_cacheCollapseArrow,style:{transform:this.state.cacheCollapsed.messages?"rotate(-90deg)":"rotate(0deg)"},children:"▼"}),t("ui.messages")," (",cached.messages.length,")"]}),!this.state.cacheCollapsed.messages&&cached.messages.map((text,i)=>{const isHl=i===this.state.cacheHighlightIdx,hlStyle=isHl?this.state.cacheHighlightFading?{boxShadow:"0 0 10px rgba(22,104,220,0)",transition:"box-shadow 3s ease-out",position:"relative"}:{boxShadow:"0 0 10px rgba(22,104,220,0.6)",transition:"box-shadow 0.2s ease-in",position:"relative"}:{};return jsxRuntimeExports.jsxs("pre",{"data-msg-idx":i,className:styles$3_cachePre,style:hlStyle,children:[isHl&&jsxRuntimeExports.jsx("svg",{className:styles$3_cacheHighlightSvg,style:{opacity:this.state.cacheHighlightFading?0:1,transition:this.state.cacheHighlightFading?"opacity 3s ease-out":void 0},preserveAspectRatio:"none",children:jsxRuntimeExports.jsx("rect",{x:"0.5",y:"0.5",width:"calc(100% - 1px)",height:"calc(100% - 1px)",rx:"4",ry:"4",fill:"none",stroke:"#1668dc",strokeWidth:"1",strokeDasharray:"6 4",children:jsxRuntimeExports.jsx("animate",{attributeName:"stroke-dashoffset",from:"0",to:"-100",dur:"4s",repeatCount:"indefinite"})})}),text]},i)})]})]})]})})()})},{key:"context",label:"Context",children:jsxRuntimeExports.jsx("div",{className:`${styles$3_tabContent} ${styles$3_cacheTabContent}`,children:jsxRuntimeExports.jsx(ContextTab,{body:request.body,response:null==(_a=request.response)?void 0:_a.body})})}],usage=null==(_c=null==(_b=request.response)?void 0:_b.body)?void 0:_c.usage,tokenStats=usage?(()=>{const input=usage.input_tokens||0,output=usage.output_tokens||0,cacheCreate=usage.cache_creation_input_tokens||0,cacheRead=usage.cache_read_input_tokens||0,totalInput=input+cacheCreate+cacheRead;return{input:input,output:output,cacheCreate:cacheCreate,cacheRead:cacheRead,hitRate:totalInput>0?(cacheRead/totalInput*100).toFixed(1):"0.0"}})():null;return jsxRuntimeExports.jsxs("div",{className:styles$3_container,children:[jsxRuntimeExports.jsxs("div",{className:styles$3_urlSection,children:[jsxRuntimeExports.jsxs("div",{className:styles$3_urlLeft,children:[jsxRuntimeExports.jsx(Paragraph,{className:styles$3_urlText,ellipsis:{rows:2,expandable:!0},children:request.proxyUrl||request.url}),jsxRuntimeExports.jsxs(Space,{size:"small",wrap:!0,children:[jsxRuntimeExports.jsx(Tag,{color:"POST"===request.method?"blue":"green",children:request.method}),jsxRuntimeExports.jsxs(Text,{type:"secondary",className:styles$3_metaText,children:["🕐 ",time2]}),request.duration&&jsxRuntimeExports.jsxs(Text,{type:"secondary",className:styles$3_metaText,children:["⏱️ ",request.duration,"ms"]}),request.response&&jsxRuntimeExports.jsxs(Tag,{color:statusOk2?"success":"error",children:["HTTP ",request.response.status]})]})]}),tokenStats&&jsxRuntimeExports.jsx("div",{className:styles$3_tokenStatsBox,children:jsxRuntimeExports.jsxs("div",{className:styles$3_tokenGrid,children:[jsxRuntimeExports.jsxs("div",{className:styles$3_tokenRows,children:[jsxRuntimeExports.jsxs("div",{className:styles$3_tokenRow,children:[jsxRuntimeExports.jsx("span",{className:styles$3_tokenLabel,children:"Token"}),jsxRuntimeExports.jsxs("span",{className:styles$3_tokenTd,children:["input: ",formatTokenCount(tokenStats.input)]}),jsxRuntimeExports.jsxs("span",{className:styles$3_tokenTd,children:["output: ",formatTokenCount(tokenStats.output)]})]}),jsxRuntimeExports.jsxs("div",{className:`${styles$3_tokenRow} ${styles$3_tokenRowBorder}`,children:[jsxRuntimeExports.jsx("span",{className:styles$3_tokenLabel,children:"Cache"}),jsxRuntimeExports.jsxs("span",{className:styles$3_tokenTd,children:["create: ",formatTokenCount(tokenStats.cacheCreate)]}),jsxRuntimeExports.jsxs("span",{className:styles$3_tokenTd,children:["read: ",formatTokenCount(tokenStats.cacheRead)]})]})]}),jsxRuntimeExports.jsxs("div",{className:styles$3_tokenHitRate,children:[jsxRuntimeExports.jsxs("div",{children:[tokenStats.hitRate,"%"]}),jsxRuntimeExports.jsx("div",{className:styles$3_tokenHitRateLabel,children:t("ui.hitRate")})]})]})})]}),jsxRuntimeExports.jsx(Tabs,{activeKey:currentTab,onChange:onTabChange,items:tabItems,size:"small"})]})}}const styles$2_resizer="_resizer_pzn4b_1";class PanelResizer extends React__default.Component{constructor(props){super(props),this.handleMouseDown=this.handleMouseDown.bind(this),this.handleMouseMove=this.handleMouseMove.bind(this),this.handleMouseUp=this.handleMouseUp.bind(this)}handleMouseDown(e){e.preventDefault(),document.body.style.cursor="col-resize",document.body.style.userSelect="none",document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseup",this.handleMouseUp)}handleMouseMove(e){this.props.onResize&&this.props.onResize(e.clientX)}handleMouseUp(){document.body.style.cursor="",document.body.style.userSelect="",document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp)}componentWillUnmount(){document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp)}render(){return jsxRuntimeExports.jsx("div",{onMouseDown:this.handleMouseDown,className:styles$2_resizer})}}const styles$1_flag="_flag_1q4ri_3",styles$1_popover="_popover_1q4ri_27",styles$1_meta="_meta_1q4ri_33";class CountryFlag extends React__default.Component{constructor(props){super(props),this.state={flag:null,info:null,popoverOpen:!1},this._aborted=!1}componentDidMount(){fetch("https://ipinfo.io/json",{signal:AbortSignal.timeout(5e3)}).then(r=>r.json()).then(data=>{var code;this._aborted||data&&data.country&&this.setState({flag:(code=data.country,code&&2===code.length?code.toUpperCase().split("").map(c=>String.fromCodePoint(127462+c.charCodeAt(0)-65)).join(""):"🇨🇳"),info:data})}).catch(()=>{})}componentWillUnmount(){this._aborted=!0}render(){const{flag:flag2,info:info}=this.state;if(!flag2||"CN"===(null==info?void 0:info.country))return null;const content2=jsxRuntimeExports.jsxs("div",{className:styles$1_popover,onClick:e=>e.stopPropagation(),children:[jsxRuntimeExports.jsxs("div",{children:[flag2," ",info.country]}),info.region&&jsxRuntimeExports.jsx("div",{children:info.region}),info.city&&jsxRuntimeExports.jsx("div",{children:info.city}),info.org&&jsxRuntimeExports.jsx("div",{className:styles$1_meta,children:info.org}),info.ip&&jsxRuntimeExports.jsx("div",{className:styles$1_meta,children:info.ip})]});return jsxRuntimeExports.jsx(Popover,{content:content2,trigger:["click"],open:this.state.popoverOpen,onOpenChange:o=>this.setState({popoverOpen:o}),placement:"topLeft",overlayInnerStyle:{background:"var(--bg-elevated)",border:"1px solid var(--border-hover)",borderRadius:8,padding:"8px 12px"},children:jsxRuntimeExports.jsx("button",{type:"button",className:styles$1_flag,"aria-label":`${info.country}${info.region?" · "+info.region:""}`,children:flag2})})}}const PREFIX="anthropic-ratelimit-unified-";function toNum(v){if(null==v||""===v)return null;const n=Number(v);return Number.isFinite(n)?n:null}function parseWindow(map,id){const utilization=toNum(map[`${PREFIX}${id}-utilization`]),resetSec=toNum(map[`${PREFIX}${id}-reset`]),status=map[`${PREFIX}${id}-status`]||null;return null!=utilization||null!=resetSec||status?{id:id,utilization:utilization,status:status,resetAt:null!=resetSec?1e3*resetSec:null}:null}function parseRateLimitHeaders(headers){if(!headers||"object"!=typeof headers)return null;const map=function(headers){const map={};for(const k of Object.keys(headers))map[k.toLowerCase()]=headers[k];return map}(headers);if(!Object.keys(map).some(k=>k.startsWith(PREFIX)))return null;const windows=[parseWindow(map,"5h"),parseWindow(map,"7d")].filter(Boolean);return 0===windows.length?null:{source:"plan",windows:windows,overallStatus:map[`${PREFIX}status`]||null,representativeClaim:map[`${PREFIX}representative-claim`]||null,overage:{status:map[`${PREFIX}overage-status`]||null,disabledReason:map[`${PREFIX}overage-disabled-reason`]||null},fallbackPercentage:toNum(map[`${PREFIX}fallback-percentage`])}}const styles_usagePill="_usagePill_18dz6_4",styles_usageFill="_usageFill_18dz6_12",styles_usageContent="_usageContent_18dz6_38",styles_usageText="_usageText_18dz6_45",styles_muted="_muted_18dz6_50",styles_pop="_pop_18dz6_57",styles_popTitle="_popTitle_18dz6_63",styles_popTable="_popTable_18dz6_69",styles_tdName="_tdName_18dz6_74",styles_tdBar="_tdBar_18dz6_74",styles_tdReset="_tdReset_18dz6_92",styles_bar="_bar_18dz6_101",styles_barFill="_barFill_18dz6_115",styles_barText="_barText_18dz6_125",POPOVER_OVERLAY_STYLE={background:"var(--bg-elevated)",border:"1px solid var(--border-hover)",borderRadius:8,padding:"8px 8px"};function fmtPct(u){return null==u?"—":`${Math.round(100*u)}%`}const UsageWindowPill$1=reactExports.memo(function({planUsage:planUsage,authType:authType}){const headline=reactExports.useMemo(()=>function(planUsage){if(!planUsage||!Array.isArray(planUsage.windows)||0===planUsage.windows.length)return null;const claim=planUsage.representativeClaim;let id=null;if("five_hour"===claim?id="5h":claim&&/(day|week|7d|seven)/i.test(claim)&&(id="7d"),id){const hit=planUsage.windows.find(w=>w.id===id);if(hit)return hit}return planUsage.windows.reduce((a,b)=>(b.utilization||0)>(a.utilization||0)?b:a)}(planUsage),[planUsage]),triggerStyle=reactExports.useMemo(()=>{const pct=headline&&null!=headline.utilization?Math.round(100*headline.utilization):0;return{"--usage-percent":`${Math.min(100,Math.max(0,pct))}%`}},[headline]);if(!planUsage)return"OAuth"===authType?jsxRuntimeExports.jsx(Popover,{content:jsxRuntimeExports.jsx("div",{className:styles_pop,children:t("ui.usage.waiting")}),trigger:"hover",placement:"top",overlayInnerStyle:POPOVER_OVERLAY_STYLE,children:jsxRuntimeExports.jsx("span",{className:`${styles_usagePill} ${styles_muted}`,role:"button",tabIndex:0,"aria-label":t("ui.usage.ariaLabel"),children:jsxRuntimeExports.jsx("span",{className:styles_usageContent,children:jsxRuntimeExports.jsx("span",{className:styles_usageText,children:"—"})})})}):null;const pillLabel=planUsage.windows.filter(w=>null!=w.utilization).filter(w=>"7d"!==w.id||w.utilization>.6).map(w=>{return`${id=w.id,"7d"===id?t("ui.usage.weeklyShort"):"5h"} ${fmtPct(w.utilization)}`;var id}).join(" · "),popContent=jsxRuntimeExports.jsxs("div",{className:styles_pop,children:[jsxRuntimeExports.jsx("div",{className:styles_popTitle,children:t("ui.usage.title")}),jsxRuntimeExports.jsx("table",{className:styles_popTable,children:jsxRuntimeExports.jsx("tbody",{children:planUsage.windows.map(w=>{const rt=function(resetAt){if(null==resetAt)return"";const diff=resetAt-Date.now();if(diff<=0)return t("ui.usage.resetting");const totalMin=Math.floor(diff/6e4),h=Math.floor(totalMin/60),m=totalMin%60;return h>0?t("ui.usage.resetsInHM",{h:h,m:m}):t("ui.usage.resetsInM",{m:m})}(w.resetAt),pct=null!=w.utilization?Math.min(100,Math.max(0,Math.round(100*w.utilization))):0;return jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:styles_tdName,children:(id=w.id,t("7d"===id?"ui.usage.weekly":"ui.usage.fiveHour"))}),jsxRuntimeExports.jsx("td",{className:styles_tdBar,children:jsxRuntimeExports.jsxs("span",{className:styles_bar,children:[jsxRuntimeExports.jsx("span",{className:styles_barFill,style:{width:`${pct}%`}}),jsxRuntimeExports.jsx("span",{className:styles_barText,children:fmtPct(w.utilization)})]})}),jsxRuntimeExports.jsx("td",{className:styles_tdReset,children:rt})]},w.id);var id})})})]});return jsxRuntimeExports.jsx(Popover,{content:popContent,trigger:"hover",placement:"topRight",overlayInnerStyle:POPOVER_OVERLAY_STYLE,children:jsxRuntimeExports.jsxs("span",{className:styles_usagePill,style:triggerStyle,role:"button",tabIndex:0,"aria-label":t("ui.usage.ariaLabel"),children:[jsxRuntimeExports.jsx("span",{className:styles_usageFill}),jsxRuntimeExports.jsx("span",{className:styles_usageContent,children:jsxRuntimeExports.jsx("span",{className:styles_usageText,children:pillLabel})})]})})});class App extends AppBase{constructor(props){super(props),__publicField(this,"setContextBarSlot",el=>{el&&!el.isConnected||el!==this.state.contextBarSlot&&this.setState({contextBarSlot:el})}),__publicField(this,"renderUpdateInstructions",method=>{const codeStyle={display:"block",background:"var(--bg-code)",padding:"8px 12px",borderRadius:6,fontSize:13};return"electron"===method?jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("p",{style:{marginTop:12},children:jsxRuntimeExports.jsx("strong",{children:t("ui.update.electron")})}),jsxRuntimeExports.jsx("p",{style:{color:"var(--text-tertiary)",fontSize:13},children:t("ui.update.electronDesc")}),jsxRuntimeExports.jsxs("ol",{style:{color:"var(--text-tertiary)",fontSize:13,paddingLeft:20,margin:"6px 0"},children:[jsxRuntimeExports.jsx("li",{children:t("ui.update.step1")}),jsxRuntimeExports.jsx("li",{children:t("ui.update.step2")}),jsxRuntimeExports.jsx("li",{children:t("ui.update.step3")})]})]}):"brew"===method?jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("p",{style:{marginTop:12},children:jsxRuntimeExports.jsx("strong",{children:t("ui.update.brew")})}),jsxRuntimeExports.jsx("code",{style:codeStyle,children:"brew upgrade cc-viewer"})]}):jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("p",{style:{marginTop:12},children:jsxRuntimeExports.jsx("strong",{children:t("ui.update.npm")})}),jsxRuntimeExports.jsx("code",{style:codeStyle,children:"npm install -g cc-viewer --registry=https://registry.npmjs.org"})]})}),__publicField(this,"openUpdateModal",()=>{this.setState({updateModalVisible:!0}),null==this.state.installMethod&&fetch(apiUrl("/api/version-info")).then(r=>r.json()).then(d=>{d&&d.installMethod&&this.setState({installMethod:d.installMethod})}).catch(()=>{})}),__publicField(this,"handleViewRequest",index=>{this.setState({viewMode:"raw",selectedIndex:index,scrollCenter:!0})}),__publicField(this,"handleViewInChat",()=>{this.setState(prev=>{const selectedReq=(prev.showAll?prev.requests:filterRelevantRequests(prev.requests))[prev.selectedIndex];if(!selectedReq)return null;let targetTs=null;if(isMainAgent(selectedReq)&&selectedReq.timestamp)targetTs=selectedReq.timestamp;else{const cls=classifyRequest(selectedReq);if("SubAgent"!==cls.type&&"Teammate"!==cls.type||!selectedReq.timestamp){const idx=prev.requests.indexOf(selectedReq);idx>=0&&(targetTs=findPrevMainAgentTimestamp(prev.requests,idx))}else targetTs=selectedReq.timestamp;targetTs||staticMethods.info(t("ui.cannotMap"))}return{viewMode:"chat",chatScrollToTs:targetTs}})}),__publicField(this,"handleToggleViewMode",()=>{this.setState(prev=>{const newMode="raw"===prev.viewMode?"chat":"raw";if("raw"===newMode){if(null===prev.selectedIndex){const filtered2=prev.showAll?prev.requests:filterRelevantRequests(prev.requests);return{viewMode:newMode,selectedIndex:filtered2.length>0?filtered2.length-1:null,scrollCenter:!0}}return{viewMode:newMode,scrollCenter:!0}}const filtered=prev.showAll?prev.requests:filterRelevantRequests(prev.requests),selectedReq=null!=prev.selectedIndex?filtered[prev.selectedIndex]:null;if(selectedReq){let targetTs=null;if(isMainAgent(selectedReq)&&selectedReq.timestamp)targetTs=selectedReq.timestamp;else{const cls=classifyRequest(selectedReq);if("SubAgent"!==cls.type&&"Teammate"!==cls.type||!selectedReq.timestamp){const idx=prev.requests.indexOf(selectedReq);idx>=0&&(targetTs=findPrevMainAgentTimestamp(prev.requests,idx)),targetTs||staticMethods.info(t("ui.cannotMap"))}else targetTs=selectedReq.timestamp}return{viewMode:newMode,chatScrollToTs:targetTs}}return{viewMode:newMode,chatScrollToTs:null}},()=>{"chat"===this.state.viewMode&&this.state.terminalVisible&&this.state.cliMode&&!isMobile&&requestAnimationFrame(()=>{const ta=document.querySelector(".xterm-helper-textarea");ta&&ta.focus()})})}),__publicField(this,"handleTabChange",key=>{this.setState({currentTab:key})}),__publicField(this,"handleCacheHighlightDone",()=>{this.setState({pendingCacheHighlight:null})}),__publicField(this,"handleNavigateCacheMsg",msgIdx=>{const filteredRequests=this.state.showAll?this.state.requests:filterRelevantRequests(this.state.requests);let targetIdx=-1;for(let i=filteredRequests.length-1;i>=0;i--)if(isMainAgent(filteredRequests[i])){targetIdx=i;break}targetIdx<0||this.setState({selectedIndex:targetIdx,scrollCenter:!0,currentTab:"kv-cache-text",pendingCacheHighlight:{msgIdx:msgIdx,key:Date.now()}})}),__publicField(this,"handleResize",clientX=>{const container2=this.mainContainerRef.current;if(!container2)return;const newWidth=clientX-container2.getBoundingClientRect().left;newWidth>=250&&newWidth<=800&&this.setState({leftPanelWidth:newWidth})}),__publicField(this,"handleLoadLocalJsonlFile",()=>{const input=document.createElement("input");input.type="file",input.accept=".jsonl",input.multiple=!0,input.onchange=e=>{const files=Array.from(e.target.files);if(0===files.length)return;if(files.reduce((s,f)=>s+f.size,0)>524288e3)return void staticMethods.error(t("ui.fileTooLarge"));this.setState({fileLoading:!0,fileLoadingCount:0});let readCount=0;const allEntries=[],fileNames=[];files.forEach(file=>{const reader=new FileReader;reader.onload=ev=>{try{const entries=ev.target.result.split("\n---\n").filter(line=>line.trim()).map(entry=>{try{return JSON.parse(entry)}catch{return null}}).filter(Boolean);allEntries.push(...entries),fileNames.push(file.name)}catch{}readCount++,readCount===files.length&&this._finishLocalLoad(allEntries,fileNames)},reader.readAsText(file)})},input.click()}),Object.assign(this.state,{leftPanelWidth:380,terminalVisible:!0,currentTab:"context",pendingCacheHighlight:null,contextBarSlot:null,planUsage:null,installMethod:null}),this.appHeaderRef=React__default.createRef(),this._getTokenStatsContent=()=>{var _a,_b;return(null==(_b=null==(_a=this.appHeaderRef.current)?void 0:_a.renderTokenStats)?void 0:_b.call(_a))??null}}componentDidUpdate(prevProps,prevState){if(super.componentDidUpdate&&super.componentDidUpdate(prevProps,prevState),this._isLocalLog)return;const reqs=this.state.requests;if(!reqs||0===reqs.length)return;if(prevState&&prevState.requests===reqs&&this.state.planUsage)return;const pu=function(requests){if(!Array.isArray(requests))return null;for(let i=requests.length-1;i>=0;i--){const headers=requests[i]&&requests[i].response&&requests[i].response.headers;if(!headers)continue;const pu=parseRateLimitHeaders(headers);if(pu)return pu}return null}(reqs);if(!pu)return;const sig=JSON.stringify(pu);sig!==this._planUsageSig&&(this._planUsageSig=sig,this.setState({planUsage:pu}))}componentDidMount(){var _a,_b,_c,_d;super.componentDidMount();if("undefined"!=typeof window&&!!window.tabBridge)return this._onDeviceMode=on=>{const target=on?"pad":"pc";localStorage.getItem("ccv_viewMode")!==target&&setViewMode(target)},this._disposeDeviceMode=null==(_b=(_a=window.tabBridge).onDeviceModeChange)?void 0:_b.call(_a,this._onDeviceMode),void(null==(_d=(_c=window.tabBridge).requestDeviceMode)||_d.call(_c));this._mqlNarrow=window.matchMedia("(max-width: 600px)"),this._modeSwitchDialog=null,this._onNarrowChange=e=>{e.matches?this._modeSwitchDialog=Modal.confirm({title:t("ui.modeSwitchTitle"),content:t("ui.modeSwitchToSidebar"),okText:t("ui.ok"),onOk:()=>{this._modeSwitchDialog=null,setViewMode("pad")},onCancel:()=>{this._modeSwitchDialog=null}}):this._modeSwitchDialog&&(this._modeSwitchDialog.destroy(),this._modeSwitchDialog=null)},this._mqlNarrow.addEventListener("change",this._onNarrowChange)}componentWillUnmount(){this._disposeDeviceMode&&(this._disposeDeviceMode(),this._disposeDeviceMode=null),this._mqlNarrow&&this._mqlNarrow.removeEventListener("change",this._onNarrowChange),this._modeSwitchDialog&&(this._modeSwitchDialog.destroy(),this._modeSwitchDialog=null),super.componentWillUnmount()}render(){var _a,_b,_c;const{filteredRequests:filteredRequests,selectedRequest:selectedRequest,fileLoading:fileLoading,fileLoadingCount:fileLoadingCount,mainAgentSessions:mainAgentSessions,viewMode:viewMode}=this.renderPrepare(),{selectedIndex:selectedIndex,leftPanelWidth:leftPanelWidth,currentTab:currentTab}=this.state,prefs=this._prefValues();if(this.state.workspaceMode)return this.renderWorkspaceMode();const wsOpen=!this._isLocalLog&&!this.state.sdkMode;return jsxRuntimeExports.jsx(ConfigProvider,{theme:this.themeConfig,children:jsxRuntimeExports.jsx(TerminalWsProvider,{open:wsOpen,children:jsxRuntimeExports.jsxs(ApprovalModal,{enabled:this.state.approvalPrefs.modalEnabled,soundEnabled:this.state.approvalPrefs.soundEnabled,voicePackPrefs:this.state.approvalPrefs.voicePack,approvalGlobal:this.state.approvalGlobal,dismissedIds:this.state.approvalDismissedIds,onDismiss:this.handleApprovalDismiss,onJumpTab:this.handleApprovalJumpTab,otherTabs:this.state.approvalOtherTabs,children:[fileLoading&&jsxRuntimeExports.jsx("div",{className:styles$f.loadingOverlay,children:jsxRuntimeExports.jsxs("div",{className:styles$f.loadingText,children:["Loading...(",fileLoadingCount,")"]})}),this.state.isDragging&&jsxRuntimeExports.jsx("div",{className:styles$f.dragOverlay,children:jsxRuntimeExports.jsxs("div",{className:styles$f.dragOverlayContent,children:[jsxRuntimeExports.jsx(RefIcon$n,{className:styles$f.dragIcon}),jsxRuntimeExports.jsx("p",{children:t("ui.dragDropHint")})]})}),jsxRuntimeExports.jsxs(Layout,{className:styles$f.layout,ref:this._layoutRef,onDragOver:this._onDragOver,onDragLeave:this._onDragLeave,onDrop:this._onDrop,children:[jsxRuntimeExports.jsx(Layout.Header,{className:styles$f.header,inert:"undefined"!=typeof window&&window.tabBridge?"":void 0,style:"undefined"!=typeof window&&window.tabBridge?{height:0,minHeight:0,padding:0,overflow:"hidden",border:"none",lineHeight:0}:void 0,children:jsxRuntimeExports.jsx(AppHeader,{ref:this.appHeaderRef,requestCount:filteredRequests.length,requests:filteredRequests,viewMode:viewMode,cacheExpireAt:this.state.cacheExpireAt,cacheType:this.state.cacheType,onToggleViewMode:this.handleToggleViewMode,onLangChange:this.handleLangChange,onImportLocalLogs:this.handleImportLocalLogs,isLocalLog:!!this._isLocalLog,localLogFile:this._localLogFile,projectName:this.state.projectName,filterIrrelevant:!this.state.showAll,onFilterIrrelevantChange:this.handleFilterIrrelevantChange,logDir:this.state.logDir,onLogDirChange:this.handleLogDirChange,cliMode:this.state.cliMode,sdkMode:this.state.sdkMode,terminalVisible:!this.state.sdkMode&&this.state.terminalVisible,onToggleTerminal:()=>this.setState(prev=>({terminalVisible:!prev.terminalVisible})),onReturnToWorkspaces:this.state.cliMode?this.handleReturnToWorkspaces:null,contextWindow:this.state.contextWindow,contextBarOptimistic:this.state.contextBarOptimistic,contextBarLocked:this.state.contextBarLocked,onNavigateCacheMsg:this.handleNavigateCacheMsg,serverCachedContent:this.state.serverCachedContent||this._lastKvCacheContent,resumeAutoChoice:this.state.resumeAutoChoice,onResumeAutoChoiceToggle:this.handleResumeAutoChoiceToggle,onResumeAutoChoiceChange:this.handleResumeAutoChoiceChange,themeColor:this.state.themeColor,onThemeColorChange:this.handleThemeColorChange,displayScale:this.state.displayScale,onDisplayScaleChange:this.handleDisplayScaleChange,autoApproveSeconds:this.state.autoApproveSeconds,onAutoApproveChange:this.handleAutoApproveChange,approvalPrefs:this.state.approvalPrefs,onApprovalPrefsChange:this.handleApprovalPrefsChange,onVoicePackChange:this.handleVoicePackChange,onApprovalSoundToggle:this.handleApprovalSoundToggle,approvalGlobal:this.state.approvalGlobal,approvalDismissedIds:this.state.approvalDismissedIds,approvalOwnPending:this.state.approvalOwnPending,onApprovalReopen:this.handleApprovalReopen,proxyProfiles:this.state.proxyProfiles,activeProxyId:this.state.activeProxyId,defaultConfig:this.state.defaultConfig,onProxyProfileChange:this.handleProxyProfileChange,contextBarSlot:this.state.contextBarSlot,claudeProjectModel:this.state.claudeProjectModel})}),this.state.claudeMissing&&jsxRuntimeExports.jsx(Alert,{type:"warning",showIcon:!0,banner:!0,message:t("ui.claudeMissing.title"),description:jsxRuntimeExports.jsxs("span",{children:[t("ui.claudeMissing.desc"),jsxRuntimeExports.jsx("br",{}),jsxRuntimeExports.jsx("code",{style:{background:"var(--bg-code)",padding:"2px 6px",borderRadius:3},children:"npm install -g @anthropic-ai/claude-code"})," ",jsxRuntimeExports.jsx("span",{style:{color:"var(--text-muted)",margin:"0 4px"},children:t("ui.claudeMissing.or")})," ",jsxRuntimeExports.jsx("a",{href:"https://claude.ai/download",target:"_blank",rel:"noopener noreferrer",style:{color:"var(--color-primary-light)"},children:t("ui.claudeMissing.native")})]})}),jsxRuntimeExports.jsxs(Layout.Content,{className:styles$f.content,children:["raw"===viewMode&&(0===filteredRequests.length?jsxRuntimeExports.jsx("div",{className:styles$f.guideContainer,children:jsxRuntimeExports.jsxs("div",{className:styles$f.guideContent,children:[jsxRuntimeExports.jsx("h2",{className:styles$f.guideTitle,children:t("ui.guide.title")}),jsxRuntimeExports.jsxs("div",{className:styles$f.guideStep,children:[jsxRuntimeExports.jsx("div",{className:styles$f.guideStepNum,children:"1"}),jsxRuntimeExports.jsxs("div",{className:styles$f.guideStepBody,children:[jsxRuntimeExports.jsx("p",{className:styles$f.guideText,children:t("ui.guide.step1")}),jsxRuntimeExports.jsx("code",{className:styles$f.guideCode,children:t("ui.guide.exampleQuestion")})]})]}),jsxRuntimeExports.jsxs("div",{className:styles$f.guideStep,children:[jsxRuntimeExports.jsx("div",{className:styles$f.guideStepNum,children:"2"}),jsxRuntimeExports.jsxs("div",{className:styles$f.guideStepBody,children:[jsxRuntimeExports.jsx("p",{className:styles$f.guideText,children:t("ui.guide.step2")}),jsxRuntimeExports.jsx("code",{className:styles$f.guideCode,children:t("ui.guide.troubleshootCmd")})]})]}),jsxRuntimeExports.jsxs("div",{className:styles$f.guideStep,children:[jsxRuntimeExports.jsx("div",{className:styles$f.guideStepNum,children:"3"}),jsxRuntimeExports.jsxs("div",{className:styles$f.guideStepBody,children:[jsxRuntimeExports.jsx("p",{className:styles$f.guideText,children:t("ui.guide.step3")}),jsxRuntimeExports.jsx("code",{className:styles$f.guideCode,children:"npm install -g @anthropic-ai/claude-code"})]})]})]})}):jsxRuntimeExports.jsxs("div",{ref:this.mainContainerRef,className:styles$f.mainContainer,children:[jsxRuntimeExports.jsxs("div",{className:styles$f.leftPanel,style:{width:leftPanelWidth},children:[jsxRuntimeExports.jsxs("div",{className:styles$f.leftPanelHeader,children:[jsxRuntimeExports.jsx("span",{children:t("ui.requestList")}),jsxRuntimeExports.jsx("span",{className:styles$f.leftPanelCount,children:t("ui.totalRequests",{count:filteredRequests.length})})]}),jsxRuntimeExports.jsx("div",{className:styles$f.leftPanelBody,children:jsxRuntimeExports.jsx(RequestList,{requests:filteredRequests,selectedIndex:selectedIndex,scrollCenter:this.state.scrollCenter,onSelect:this.handleSelectRequest,onScrollDone:this.handleScrollDone,cacheLossMap:this._cacheLossMap})})]}),jsxRuntimeExports.jsx(PanelResizer,{onResize:this.handleResize}),jsxRuntimeExports.jsx("div",{className:styles$f.rightPanel,children:jsxRuntimeExports.jsx(DetailPanel,{request:selectedRequest,requests:filteredRequests,allRequests:this.state.requests,selectedIndex:selectedIndex,currentTab:currentTab,onTabChange:this.handleTabChange,onViewInChat:this.handleViewInChat,expandDiff:prefs.expandDiff,pendingCacheHighlight:this.state.pendingCacheHighlight,onCacheHighlightDone:this.handleCacheHighlightDone})})]})),jsxRuntimeExports.jsx("div",{className:styles$f.chatViewWrapper,style:{display:"chat"===viewMode?"flex":"none"},children:jsxRuntimeExports.jsx(ChatView,{...this._settingsProps(),getTokenStatsContent:this._getTokenStatsContent,requests:filteredRequests,mainAgentSessions:mainAgentSessions,streamingLatest:this.state.streamingLatest,userProfile:this.state.userProfile,collapseToolResults:prefs.collapseToolResults,expandThinking:prefs.expandThinking,showFullToolContent:prefs.showFullToolContent,onlyCurrentSession:!this._isLocalLog&&prefs.onlyCurrentSession,isLocalLog:!!this._isLocalLog,showThinkingSummaries:prefs.showThinkingSummaries,onViewRequest:this.handleViewRequest,scrollToTimestamp:this.state.chatScrollToTs,onScrollTsDone:this.handleScrollTsDone,cliMode:!this._isLocalLog&&this.state.cliMode,sdkMode:!this._isLocalLog&&this.state.sdkMode,terminalVisible:!this._isLocalLog&&(!this.state.sdkMode&&this.state.terminalVisible),onToggleTerminal:()=>this.setState(prev=>({terminalVisible:!prev.terminalVisible})),pendingUploadPaths:this.state.pendingUploadPaths,onUploadPathsConsumed:this.handleUploadPathsConsumed,uploadingDrop:this.state.uploadingDrop,fileLoading:this.state.fileLoading,isStreaming:this.state.isStreaming,hasMoreHistory:this.state.hasMoreHistory,loadingMore:this.state.loadingMore,onLoadMoreHistory:()=>this.loadMoreHistory(),loadingSessionId:this.state.loadingSessionId,onLoadSession:sid=>this.loadSession(sid),lang:this.state.lang,autoApproveSeconds:this.state.autoApproveSeconds,onAutoApproveChange:this.handleAutoApproveChange,planAutoApproveSeconds:null==(_a=this.state.approvalPrefs)?void 0:_a.planAutoApproveSeconds,onPlanAutoApproveChange:this.handlePlanAutoApproveChange,onClearContextOptimistic:this.handleClearContextOptimistic,onUserMessageSent:this.handleUserMessageSent,onPendingAsk:this.handleApprovalAsk,onPendingPtyPlan:this.handleApprovalPtyPlan,ownTabId:this.state.ownTabId,projectName:this.state.projectName,setContextBarSlot:this.setContextBarSlot})})]}),jsxRuntimeExports.jsxs("div",{className:styles$f.footer,children:[jsxRuntimeExports.jsx(CountryFlag,{}),!this._isLocalLog&&(this.state.planUsage||"OAuth"===(null==(_b=this.state.defaultConfig)?void 0:_b.authType))&&jsxRuntimeExports.jsx(UsageWindowPill$1,{planUsage:this.state.planUsage,authType:null==(_c=this.state.defaultConfig)?void 0:_c.authType}),jsxRuntimeExports.jsxs("div",{className:styles$f.footerRight,children:[jsxRuntimeExports.jsxs("a",{href:"https://github.com/weiesky/cc-viewer",target:"_blank",rel:"noopener noreferrer",className:styles$f.footerLink,children:[jsxRuntimeExports.jsx("svg",{className:styles$f.footerIcon,viewBox:"0 0 16 16",fill:"currentColor",children:jsxRuntimeExports.jsx("path",{d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"})}),"GitHub",null!=this.state.githubStars?` ★ ${this.state.githubStars}`:""]}),jsxRuntimeExports.jsx("span",{className:styles$f.footerSep,children:"|"}),jsxRuntimeExports.jsxs("span",{className:styles$f.footerVersion,onClick:this.openUpdateModal,style:{cursor:"pointer"},children:["v","1.6.312"]}),this.state.updateInfo&&jsxRuntimeExports.jsx(Tooltip,{title:t("ui.update.majorAvailable",{version:this.state.updateInfo.version}),placement:"top",children:jsxRuntimeExports.jsx("span",{className:styles$f.newBadgeText,onClick:this.openUpdateModal,children:t("ui.update.newBadge")})})]})]})]}),jsxRuntimeExports.jsx(Modal,{title:t("ui.update.title"),open:this.state.updateModalVisible,onCancel:()=>this.setState({updateModalVisible:!1}),footer:null,width:560,children:jsxRuntimeExports.jsxs("div",{style:{lineHeight:1.8},children:[jsxRuntimeExports.jsxs("p",{children:[jsxRuntimeExports.jsxs("strong",{children:[t("ui.update.current"),":"]})," v","1.6.312"]}),this.state.updateInfo&&jsxRuntimeExports.jsxs("p",{children:[jsxRuntimeExports.jsxs("strong",{children:[t("ui.update.latest"),":"]})," v",this.state.updateInfo.version]}),this.renderUpdateInstructions(isElectron?"electron":this.state.installMethod||"npm"),jsxRuntimeExports.jsx("div",{style:{marginTop:16,textAlign:"right"},children:jsxRuntimeExports.jsx(Button,{type:"primary",href:"https://github.com/weiesky/cc-viewer/releases",target:"_blank",rel:"noopener noreferrer",children:t("ui.update.goReleases")})})]})}),jsxRuntimeExports.jsx(Modal,{title:t("ui.resume.title"),open:this.state.resumeModalVisible,closable:!1,maskClosable:!1,keyboard:!1,footer:jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:styles$f.resumeFooterRight,children:[jsxRuntimeExports.jsx(Button,{type:"primary",onClick:()=>this.handleResumeChoice("continue"),className:styles$f.btnMarginRight,children:t("ui.resume.continue")},"continue"),jsxRuntimeExports.jsx(Button,{onClick:()=>this.handleResumeChoice("new"),children:t("ui.resume.new")},"new")]}),jsxRuntimeExports.jsx("div",{className:styles$f.resumeFooterLeft,children:jsxRuntimeExports.jsx(Checkbox,{checked:this.state.resumeRememberChoice,onChange:e=>this.setState({resumeRememberChoice:e.target.checked}),className:styles$f.resumeCheckboxOpacity,children:jsxRuntimeExports.jsx("span",{className:styles$f.resumeCheckboxOpacity,children:t("ui.resume.remember")})})})]}),children:jsxRuntimeExports.jsx("p",{children:t("ui.resume.message",{file:this.state.resumeFileName})})}),jsxRuntimeExports.jsxs(Modal,{title:jsxRuntimeExports.jsxs("span",{className:styles$f.modalTitleInline,children:[jsxRuntimeExports.jsx(OpenFolderIcon,{apiEndpoint:apiUrl("/api/open-log-dir"),title:t("ui.openLogDir"),size:16}),t("ui.importLocalLogs")]}),open:this.state.importModalVisible,onCancel:this.handleCloseImportModal,footer:null,width:1e3,styles:{body:{overflow:"hidden"}},children:[jsxRuntimeExports.jsxs("div",{className:styles$f.modalActions,children:[jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$n,{}),onClick:this.handleLoadLocalJsonlFile,children:t("ui.loadLocalJsonl")}),jsxRuntimeExports.jsx(Button,{size:"small",type:this.state.selectedLogs.size>1&&![...this.state.selectedLogs].some(f=>f.endsWith(".jsonl.zip"))?"primary":"default",disabled:this.state.selectedLogs.size<2||[...this.state.selectedLogs].some(f=>f.endsWith(".jsonl.zip")),onClick:this.handleMergeLogs,className:styles$f.btnMarginLeft,children:t("ui.mergeLogs")}),jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$9,{}),disabled:![...this.state.selectedLogs].some(f=>f.endsWith(".jsonl")),onClick:this.handleArchiveLogs,className:styles$f.btnMarginLeft,children:t("ui.archiveLogs")}),jsxRuntimeExports.jsx(Button,{size:"small",danger:!0,icon:jsxRuntimeExports.jsx(RefIcon$o,{}),disabled:0===this.state.selectedLogs.size,onClick:this.handleDeleteLogs,className:styles$f.btnMarginLeft,children:t("ui.deleteLogs")}),jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$g,{spin:this.state.refreshingStats}),loading:this.state.refreshingStats,onClick:this.handleRefreshStats,className:styles$f.btnMarginLeft,children:t("ui.refreshStats")})]}),this.state.localLogsLoading?jsxRuntimeExports.jsx("div",{className:styles$f.spinCenter,children:jsxRuntimeExports.jsx(Spin,{})}):(()=>{const currentLogs=this.state.localLogs[this.state.currentProject];return currentLogs&&0!==currentLogs.length?jsxRuntimeExports.jsx("div",{className:styles$f.logListContainer,children:this.renderLogTable(currentLogs,!1)}):jsxRuntimeExports.jsx("div",{className:styles$f.emptyCenter,children:t("ui.noLogs")})})()]})]})})})}}export{App as default};
2
+ var __defProp=Object.defineProperty,__publicField=(obj,key,value)=>((obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value)(obj,"symbol"!=typeof key?key+"":key,value);import{j as jsxRuntimeExports}from"./vendor-codemirror-Si44UqBp.js";import{a as reactExports,I as Icon,b as _extends,w as Tag,P as Popover,T as Tooltip,x as RefIcon$7,M as Modal,y as Input,i as Button,s as staticMethods,S as Spin,z as RefIcon$8,A as RefIcon$b,D as RefIcon$c,m as RefIcon$d,E as Dropdown,F as RefIcon$e,n as Switch,l as Select,k as RefIcon$g,G as Drawer,H as Empty,R as React__default,J as RefIcon$j,K as Segmented,L as RefIcon$k,N as Collapse,d as reactDomExports,O as Space,Q as RefIcon$l,p as RefIcon$m,U as Tabs,o as Radio,V as List,W as Typography,C as ConfigProvider,X as Layout,Y as Alert,Z as Checkbox,j as RefIcon$o}from"./vendor-antd-Bur5ZxWE.js";import{L as CachePopoverContent,Z as useProjectAlias,a0 as normalizeAlias,a1 as _internals,a2 as setProjectAlias,a3 as clearProjectAlias,S as SkillsManagerModal,V as RefIcon$9,a4 as RefIcon$a,a5 as RefIcon$f,a6 as IM_PLATFORMS,a7 as reconstructEntries,w as isMainAgent,a8 as mergeMainAgentSessions,a9 as cachedBuildToolResultMap,v as classifyUserContent,aa as ChatMessage,t as isSystemText,ab as RefIcon$h,ac as RefIcon$i,o as loadFsSkills,p as loadProjectMemory,q as loadClaudeMdList,r as parseImOrigin,d as computeTokenStats,e as computeToolUsageStats,g as computeSkillUsageStats,k as sharedChrome,m as formatTokenCount,C as ConceptHelp,h as computeCacheRebuildStats,ad as resolveTeammateNames,j as classifyRequest,z as sumUsageContextTokens,B as sumUsageInputTokens,ae as resolveCalibrationTokens,O as OPTIMISTIC_CLEAR_PERCENT,M as MemoryDetailModal,W as autoApproveSelectOptions,_ as PERM_AUTO_APPROVE_OPTIONS,$ as PLAN_AUTO_APPROVE_OPTIONS,X as VoicePackSettings,af as DISPLAY_SCALE_PRESETS,P as PluginModal,N as ProcessModal,Q as ProxyModal,D as adaptContextWindow,n as appConfig,ag as getModelShort,ah as formatRequestTag,ai as stripPrivateKeys,aj as renderMarkdown,ak as restoreSlimmedEntry,al as isClaudeMdReminder,am as isSkillsReminder,an as hasClaudeMdReminder,ao as hasSkillsReminder,ap as extractCachedContent,A as AppBase,aq as filterRelevantRequests,ar as findPrevMainAgentTimestamp,T as TerminalWsProvider,G as ApprovalModal,x as styles$f,R as RefIcon$n,J as ChatView,U as OpenFolderIcon}from"./seqResourceLoaders-CXTfIb_N.js";import{t,a as apiUrl,S as SettingsContext,h as hasNativeZoom,d as isMac,L as LANG_OPTIONS,c as setLang,g as getLang,s as setViewMode,e as isMobile,f as isElectron}from"./index-ByBJZi-l.js";import{Q as QRCodeCanvas}from"./vendor-qrcode-Dn3GYC4l.js";import{_ as __vitePreload}from"./vendor-mdxeditor-Cco3AQJS.js";import"./vendor-xterm-DckPrCx1.js";import"./vendor-markdown-DOJHsAxX.js";import"./vendor-highlight-IFTJ9nxW.js";import"./vendor-virtuoso-CW9EqKMt.js";var BarChartOutlined$1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-600-80h56c4.4 0 8-3.6 8-8V560c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V384c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v320c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V462c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v242c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v400c0 4.4 3.6 8 8 8z"}}]},name:"bar-chart",theme:"outlined"},BarChartOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:BarChartOutlined$1}))},RefIcon$6=reactExports.forwardRef(BarChartOutlined),CodeOutlined$1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M516 673c0 4.4 3.4 8 7.5 8h185c4.1 0 7.5-3.6 7.5-8v-48c0-4.4-3.4-8-7.5-8h-185c-4.1 0-7.5 3.6-7.5 8v48zm-194.9 6.1l192-161c3.8-3.2 3.8-9.1 0-12.3l-192-160.9A7.95 7.95 0 00308 351v62.7c0 2.4 1 4.6 2.9 6.1L420.7 512l-109.8 92.2a8.1 8.1 0 00-2.9 6.1V673c0 6.8 7.9 10.5 13.1 6.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"}}]},name:"code",theme:"outlined"},CodeOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:CodeOutlined$1}))},RefIcon$5=reactExports.forwardRef(CodeOutlined),ExportOutlined$1={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 912H144c-17.7 0-32-14.3-32-32V144c0-17.7 14.3-32 32-32h360c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H184v656h656V520c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v360c0 17.7-14.3 32-32 32zM770.87 199.13l-52.2-52.2a8.01 8.01 0 014.7-13.6l179.4-21c5.1-.6 9.5 3.7 8.9 8.9l-21 179.4c-.8 6.6-8.9 9.4-13.6 4.7l-52.4-52.4-256.2 256.2a8.03 8.03 0 01-11.3 0l-42.4-42.4a8.03 8.03 0 010-11.3l256.1-256.3z"}}]},name:"export",theme:"outlined"},ExportOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:ExportOutlined$1}))},RefIcon$4=reactExports.forwardRef(ExportOutlined),ImportOutlined$1={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 912H144c-17.7 0-32-14.3-32-32V144c0-17.7 14.3-32 32-32h360c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H184v656h656V520c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v360c0 17.7-14.3 32-32 32zM653.3 424.6l52.2 52.2a8.01 8.01 0 01-4.7 13.6l-179.4 21c-5.1.6-9.5-3.7-8.9-8.9l21-179.4c.8-6.6 8.9-9.4 13.6-4.7l52.4 52.4 256.2-256.2c3.1-3.1 8.2-3.1 11.3 0l42.4 42.4c3.1 3.1 3.1 8.2 0 11.3L653.3 424.6z"}}]},name:"import",theme:"outlined"},ImportOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:ImportOutlined$1}))},RefIcon$3=reactExports.forwardRef(ImportOutlined),MessageOutlined$1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M464 512a48 48 0 1096 0 48 48 0 10-96 0zm200 0a48 48 0 1096 0 48 48 0 10-96 0zm-400 0a48 48 0 1096 0 48 48 0 10-96 0zm661.2-173.6c-22.6-53.7-55-101.9-96.3-143.3a444.35 444.35 0 00-143.3-96.3C630.6 75.7 572.2 64 512 64h-2c-60.6.3-119.3 12.3-174.5 35.9a445.35 445.35 0 00-142 96.5c-40.9 41.3-73 89.3-95.2 142.8-23 55.4-34.6 114.3-34.3 174.9A449.4 449.4 0 00112 714v152a46 46 0 0046 46h152.1A449.4 449.4 0 00510 960h2.1c59.9 0 118-11.6 172.7-34.3a444.48 444.48 0 00142.8-95.2c41.3-40.9 73.8-88.7 96.5-142 23.6-55.2 35.6-113.9 35.9-174.5.3-60.9-11.5-120-34.8-175.6zm-151.1 438C704 845.8 611 884 512 884h-1.7c-60.3-.3-120.2-15.3-173.1-43.5l-8.4-4.5H188V695.2l-4.5-8.4C155.3 633.9 140.3 574 140 513.7c-.4-99.7 37.7-193.3 107.6-263.8 69.8-70.5 163.1-109.5 262.8-109.9h1.7c50 0 98.5 9.7 144.2 28.9 44.6 18.7 84.6 45.6 119 80 34.3 34.3 61.3 74.4 80 119 19.4 46.2 29.1 95.2 28.9 145.8-.6 99.6-39.7 192.9-110.1 262.7z"}}]},name:"message",theme:"outlined"},MessageOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:MessageOutlined$1}))},RefIcon$2=reactExports.forwardRef(MessageOutlined),PushpinFilled$1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M878.3 392.1L631.9 145.7c-6.5-6.5-15-9.7-23.5-9.7s-17 3.2-23.5 9.7L423.8 306.9c-12.2-1.4-24.5-2-36.8-2-73.2 0-146.4 24.1-206.5 72.3-15.4 12.3-16.6 35.4-2.7 49.4l181.7 181.7-215.4 215.2a15.8 15.8 0 00-4.6 9.8l-3.4 37.2c-.9 9.4 6.6 17.4 15.9 17.4.5 0 1 0 1.5-.1l37.2-3.4c3.7-.3 7.2-2 9.8-4.6l215.4-215.4 181.7 181.7c6.5 6.5 15 9.7 23.5 9.7 9.7 0 19.3-4.2 25.9-12.4 56.3-70.3 79.7-158.3 70.2-243.4l161.1-161.1c12.9-12.8 12.9-33.8 0-46.8z"}}]},name:"pushpin",theme:"filled"},PushpinFilled=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:PushpinFilled$1}))},RefIcon$1=reactExports.forwardRef(PushpinFilled),PushpinOutlined$1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M878.3 392.1L631.9 145.7c-6.5-6.5-15-9.7-23.5-9.7s-17 3.2-23.5 9.7L423.8 306.9c-12.2-1.4-24.5-2-36.8-2-73.2 0-146.4 24.1-206.5 72.3a33.23 33.23 0 00-2.7 49.4l181.7 181.7-215.4 215.2a15.8 15.8 0 00-4.6 9.8l-3.4 37.2c-.9 9.4 6.6 17.4 15.9 17.4.5 0 1 0 1.5-.1l37.2-3.4c3.7-.3 7.2-2 9.8-4.6l215.4-215.4 181.7 181.7c6.5 6.5 15 9.7 23.5 9.7 9.7 0 19.3-4.2 25.9-12.4 56.3-70.3 79.7-158.3 70.2-243.4l161.1-161.1c12.9-12.8 12.9-33.8 0-46.8zM666.2 549.3l-24.5 24.5 3.8 34.4a259.92 259.92 0 01-30.4 153.9L262 408.8c12.9-7.1 26.3-13.1 40.3-17.9 27.2-9.4 55.7-14.1 84.7-14.1 9.6 0 19.3.5 28.9 1.6l34.4 3.8 24.5-24.5L608.5 224 800 415.5 666.2 549.3z"}}]},name:"pushpin",theme:"outlined"},PushpinOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:PushpinOutlined$1}))},RefIcon=reactExports.forwardRef(PushpinOutlined);function parsePinned(raw){if("string"!=typeof raw||""===raw)return[];let arr;try{arr=JSON.parse(raw)}catch{return[]}if(!Array.isArray(arr))return[];const seen=new Set,out=[];for(const item2 of arr)"string"==typeof item2&&""!==item2&&(seen.has(item2)||(seen.add(item2),out.push(item2)));return out}function togglePinned(arr,key){const list=function(arr){if(!Array.isArray(arr))return[];const seen=new Set,out=[];for(const item2 of arr)"string"==typeof item2&&""!==item2&&(seen.has(item2)||(seen.add(item2),out.push(item2)));return out}(arr);return"string"!=typeof key||""===key?list:list.includes(key)?list.filter(k=>k!==key):[...list,key]}const styles$e_liveTag="_liveTag_8g4c3_3",styles$e_liveTagFill="_liveTagFill_8g4c3_23",styles$e_liveTagContent="_liveTagContent_8g4c3_44",styles$e_liveTagHistory="_liveTagHistory_8g4c3_52",styles$e_liveTagText="_liveTagText_8g4c3_59",styles$e_cachePopoverPlaceholder="_cachePopoverPlaceholder_8g4c3_65",POPOVER_OVERLAY_STYLE$1={background:"var(--bg-elevated)",border:"1px solid var(--border-hover)",borderRadius:8,padding:"8px 8px"};const LiveTagPopover$1=reactExports.memo(function({isLocalLog:isLocalLog,localLogFile:localLogFile,cachePopoverOpen:cachePopoverOpen,onOpenChange:onOpenChange,requests:requests,serverCachedContent:serverCachedContent,contextPercent:contextPercent,contextTokens:contextTokens,ctxColor:ctxColor,onSkillImported:onSkillImported,fsSkills:fsSkills,memory:memory,memoryRefreshing:memoryRefreshing,claudeMd:claudeMd,calibrationModel:calibrationModel,onCalibrationModelChange:onCalibrationModelChange,onOpenMemoryDetail:onOpenMemoryDetail,onOpenClaudeMd:onOpenClaudeMd,onOpenSkillsModal:onOpenSkillsModal,onRefreshMemory:onRefreshMemory,projectName:projectName}){const triggerStyle=reactExports.useMemo(()=>({"--ctx-color":ctxColor,"--ctx-percent":`${contextPercent}%`}),[ctxColor,contextPercent]);return isLocalLog?jsxRuntimeExports.jsx(Tag,{className:`${styles$e_liveTag} ${styles$e_liveTagHistory}`,children:jsxRuntimeExports.jsx("span",{className:styles$e_liveTagText,children:t("ui.historyLog",{file:localLogFile})})}):jsxRuntimeExports.jsx(Popover,{content:cachePopoverOpen?jsxRuntimeExports.jsx(CachePopoverContent,{requests:requests,serverCachedContent:serverCachedContent,contextPercent:contextPercent,contextTokens:contextTokens,fsSkills:fsSkills,memory:memory,memoryRefreshing:memoryRefreshing,claudeMd:claudeMd,calibrationModel:calibrationModel,onCalibrationModelChange:onCalibrationModelChange,onOpenMemoryDetail:onOpenMemoryDetail,onOpenClaudeMd:onOpenClaudeMd,onOpenSkillsModal:onOpenSkillsModal,onSkillImported:onSkillImported,onRefreshMemory:onRefreshMemory}):jsxRuntimeExports.jsx("div",{className:styles$e_cachePopoverPlaceholder}),trigger:"hover",placement:"topRight",overlayInnerStyle:POPOVER_OVERLAY_STYLE$1,open:cachePopoverOpen,onOpenChange:onOpenChange,children:jsxRuntimeExports.jsxs("span",{className:styles$e_liveTag,style:triggerStyle,children:[jsxRuntimeExports.jsx("span",{className:styles$e_liveTagFill}),jsxRuntimeExports.jsx("span",{className:styles$e_liveTagContent,children:jsxRuntimeExports.jsx("span",{className:styles$e_liveTagText,children:contextTokens>0?`${(contextTokens/1e3).toFixed(1)}K (${contextPercent}%)`:`${contextPercent}%`})})]})})}),styles$d_editButton="_editButton_31hdb_10",styles$d_footer="_footer_31hdb_55",styles$d_footerLeft="_footerLeft_31hdb_61",styles$d_footerRight="_footerRight_31hdb_65",styles$d_projectNameRow="_projectNameRow_31hdb_70",styles$d_projectNameLabel="_projectNameLabel_31hdb_80",styles$d_projectNameValue="_projectNameValue_31hdb_83",ALIAS_MAX_LEN=_internals.MAX_LEN;function ProjectAliasEditor({projectName:projectName,isLocalLog:isLocalLog=!1}){const alias=useProjectAlias(projectName),[open,setOpen]=reactExports.useState(!1),[draft,setDraft]=reactExports.useState(""),[dirty,setDirty]=reactExports.useState(!1);if(reactExports.useEffect(()=>{open?dirty||setDraft(alias||""):setDirty(!1)},[open,alias,dirty]),!projectName||isLocalLog)return null;const valueDiffers=normalizeAlias(draft)!==(alias||""),handleSave=()=>{setProjectAlias(projectName,draft)?setOpen(!1):staticMethods.error(t("ui.projectAlias.saveFailed"))},tooltipLabel=t("ui.projectAlias.tooltip");return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Tooltip,{title:tooltipLabel,placement:"top",children:jsxRuntimeExports.jsx("button",{type:"button",className:styles$d_editButton,"aria-label":tooltipLabel,onClick:()=>setOpen(!0),"data-alias-edit-trigger":"",children:jsxRuntimeExports.jsx(RefIcon$7,{})})}),jsxRuntimeExports.jsxs(Modal,{title:t("ui.projectAlias.modalTitle"),open:open,onCancel:()=>setOpen(!1),destroyOnClose:!0,width:420,footer:jsxRuntimeExports.jsxs("div",{className:styles$d_footer,children:[jsxRuntimeExports.jsx("div",{className:styles$d_footerLeft,children:alias?jsxRuntimeExports.jsx(Button,{danger:!0,onClick:()=>{clearProjectAlias(projectName)?setOpen(!1):staticMethods.error(t("ui.projectAlias.saveFailed"))},children:t("ui.projectAlias.clear")}):null}),jsxRuntimeExports.jsxs("div",{className:styles$d_footerRight,children:[jsxRuntimeExports.jsx(Button,{onClick:()=>setOpen(!1),children:t("ui.projectAlias.cancel")}),jsxRuntimeExports.jsx(Button,{type:"primary",disabled:!valueDiffers,onClick:handleSave,children:t("ui.projectAlias.save")})]})]}),children:[jsxRuntimeExports.jsxs("div",{className:styles$d_projectNameRow,children:[jsxRuntimeExports.jsx("span",{className:styles$d_projectNameLabel,children:t("ui.projectAlias.projectLabel")}),jsxRuntimeExports.jsx("span",{className:styles$d_projectNameValue,children:projectName})]}),jsxRuntimeExports.jsx(Input,{autoFocus:!0,value:draft,onChange:e=>{setDraft(e.target.value),setDirty(!0)},onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),valueDiffers&&handleSave())},placeholder:t("ui.projectAlias.placeholder"),maxLength:ALIAS_MAX_LEN,showCount:!0,allowClear:!0})]})]})}const imTr=(key,params,fallback)=>{try{const r=t(key,params);return r&&r!==key?r:fallback}catch{return fallback}};function ImClaudeMdModal({open:open,platform:platform,onClose:onClose}){const[content2,setContent]=reactExports.useState(""),[loading,setLoading]=reactExports.useState(!1),[saving,setSaving]=reactExports.useState(!1);reactExports.useEffect(()=>{if(!open||!platform)return;let cancelled=!1;return setLoading(!0),fetch(apiUrl(`/api/im/${encodeURIComponent(platform)}/claude-md`)).then(r=>r.ok?r.json():Promise.reject(new Error("load failed"))).then(d=>{cancelled||setContent("string"==typeof d.content?d.content:"")}).catch(()=>{cancelled||staticMethods.error(imTr("ui.imRecord.loadFailed",null,"Load failed"))}).finally(()=>{cancelled||setLoading(!1)}),()=>{cancelled=!0}},[open,platform]);return jsxRuntimeExports.jsx(Modal,{open:open,onCancel:onClose,onOk:async()=>{setSaving(!0);try{const r=await fetch(apiUrl(`/api/im/${encodeURIComponent(platform)}/claude-md`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:content2})});if(!r.ok){const j=await r.json().catch(()=>({}));throw new Error(j.error||`HTTP ${r.status}`)}staticMethods.success(imTr("ui.im.personaSaved",null,"Saved — takes effect after you restart this IM")),onClose()}catch(e){staticMethods.error(imTr("ui.im.saveFailed",null,"Save failed")+((null==e?void 0:e.message)?`: ${e.message}`:""))}finally{setSaving(!1)}},okText:imTr("ui.im.save",null,"Save"),cancelText:imTr("ui.cancel",null,"Cancel"),confirmLoading:saving,okButtonProps:{disabled:loading},width:680,destroyOnClose:!0,title:imTr("ui.im.persona",null,"Model personality"),styles:{content:{background:"var(--bg-elevated)"},header:{background:"var(--bg-elevated)"}},children:loading?jsxRuntimeExports.jsx("div",{style:{textAlign:"center",padding:"40px 0"},children:jsxRuntimeExports.jsx(Spin,{})}):jsxRuntimeExports.jsx(Input.TextArea,{value:content2,onChange:e=>setContent(e.target.value),autoSize:{minRows:16,maxRows:28},spellCheck:!1,style:{fontFamily:"var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace)",fontSize:13}})})}function ImSkillsModal({open:open,platform:platform,reloadKey:reloadKey,onClose:onClose}){const[skills,setSkills]=reactExports.useState([]),[loading,setLoading]=reactExports.useState(!1),[error,setError]=reactExports.useState(null),[toggling,setToggling]=reactExports.useState(()=>new Set);reactExports.useEffect(()=>{if(!open||!platform)return;let cancelled=!1;return setLoading(!0),setError(null),fetch(apiUrl(`/api/im/${encodeURIComponent(platform)}/skills`)).then(r=>r.ok?r.json():Promise.reject(new Error(`http:${r.status}`))).then(d=>{cancelled||setSkills(Array.isArray(d.skills)?d.skills:[])}).catch(e=>{cancelled||setError(String((null==e?void 0:e.message)||"load_failed"))}).finally(()=>{cancelled||setLoading(!1)}),()=>{cancelled=!0}},[open,platform,reloadKey]);return jsxRuntimeExports.jsx(SkillsManagerModal,{open:open,onClose:onClose,loading:loading,error:error,skills:skills,toggling:toggling,onToggle:async skill=>{const enable=!skill.enabled,key=`${skill.source}-${skill.name}`,same=s=>s.name===skill.name&&s.source===skill.source;setToggling(prev=>new Set(prev).add(key)),setSkills(prev=>prev.map(s=>same(s)?{...s,enabled:enable}:s));try{const r=await fetch(apiUrl(`/api/im/${encodeURIComponent(platform)}/skills/toggle`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:skill.name,enable:enable})});if(!r.ok){const j=await r.json().catch(()=>({}));throw Object.assign(new Error(j.error||`http:${r.status}`),{code:j.code})}staticMethods.success(imTr("ui.im.skillsRestartHint",null,"Updated — takes effect after you restart this IM"))}catch(e){setSkills(prev=>prev.map(s=>same(s)?{...s,enabled:!enable}:s)),staticMethods.error("DEST_CONFLICT"===(null==e?void 0:e.code)?imTr("ui.skillToggleConflict",{name:skill.name},"A duplicate already exists; clean up and retry"):imTr("ui.skillToggleFailed",{reason:(null==e?void 0:e.message)||""},"Toggle failed"))}finally{setToggling(prev=>{const n=new Set(prev);return n.delete(key),n})}}})}const styles$c_panel="_panel_1nxl3_1",styles$c_required="_required_1nxl3_7",styles$c_optional="_optional_1nxl3_12",styles$c_row="_row_1nxl3_19",styles$c_label="_label_1nxl3_26",styles$c_control="_control_1nxl3_31",styles$c_field="_field_1nxl3_37",styles$c_fieldLabel="_fieldLabel_1nxl3_43",styles$c_warn="_warn_1nxl3_54",styles$c_hint="_hint_1nxl3_60",styles$c_helpIcon="_helpIcon_1nxl3_67",styles$c_detailsToggle="_detailsToggle_1nxl3_74",styles$c_details="_details_1nxl3_74",styles$c_actions="_actions_1nxl3_98",styles$c_testBtn="_testBtn_1nxl3_108",SUPPORTS_DIRECTORY_UPLOAD="undefined"!=typeof document&&"webkitdirectory"in document.createElement("input");function defaultValue(field2){var _a,_b;return"tags"===field2.type?[]:"switch"!==field2.type&&("select"===field2.type?field2.default??(null==(_b=null==(_a=field2.options)?void 0:_a[0])?void 0:_b.value)??"":"")}function ImPlatformSettings({descriptor:descriptor}){var _a;const initialValues=reactExports.useMemo(()=>{const v={};for(const f of descriptor.fields)v[f.key]=defaultValue(f);return v},[descriptor]),[enabled,setEnabled]=reactExports.useState(!1),[values,setValues]=reactExports.useState(initialValues),[hasSecret,setHasSecret]=reactExports.useState(!1),[connection,setConnection]=reactExports.useState(null),[proc,setProc]=reactExports.useState(null),[starting,setStarting]=reactExports.useState(!1),[stopping,setStopping]=reactExports.useState(!1),[testing,setTesting]=reactExports.useState(!1),[showDetails,setShowDetails]=reactExports.useState(!1),[claudeMdOpen,setClaudeMdOpen]=reactExports.useState(!1),[skillsModalOpen,setSkillsModalOpen]=reactExports.useState(!1),[skillsReloadKey,setSkillsReloadKey]=reactExports.useState(0),skillFileInputRef=reactExports.useRef(null),skillFolderInputRef=reactExports.useRef(null),label2=(()=>{try{return imTr(descriptor.labelKey,null,descriptor.fallback)}catch{return descriptor.fallback}})(),postSkillImport=async file=>{try{const form=new FormData;form.append("file",file);const resp=await fetch(apiUrl(`/api/im/${encodeURIComponent(descriptor.id)}/skills/import`),{method:"POST",body:form}),data=await resp.json().catch(()=>({}));if(!resp.ok){let reason=data.error||resp.statusText;return"INVALID_TYPE"===data.code?reason=imTr("ui.skills.invalidType",null,"Only .zip or SKILL.md"):"MISSING_SKILL_MD"===data.code&&(reason=imTr("ui.skills.zipMissingSkillMd",null,"SKILL.md not found in the zip")),void staticMethods.error(imTr("ui.skills.uploadFailed",{reason:reason},`Failed to add skill: ${reason}`))}staticMethods.success(imTr("ui.im.skillsRestartHint",null,"Updated — takes effect after you restart this IM")),setSkillsReloadKey(k=>k+1)}catch(err){staticMethods.error(imTr("ui.skills.uploadFailed",{reason:(null==err?void 0:err.message)||"network"},"Failed to add skill"))}},skillAddMenu={items:[...SUPPORTS_DIRECTORY_UPLOAD?[{key:"folder",icon:jsxRuntimeExports.jsx(RefIcon$8,{}),label:imTr("ui.skills.addFolder",null,"Select folder"),onClick:()=>{var _a2;return null==(_a2=skillFolderInputRef.current)?void 0:_a2.click()}}]:[],{key:"zip",icon:jsxRuntimeExports.jsx(RefIcon$9,{}),label:imTr("ui.skills.addZip",null,"Upload .zip"),onClick:()=>{skillFileInputRef.current&&(skillFileInputRef.current.accept=".zip",skillFileInputRef.current.click())}},{key:"md",icon:jsxRuntimeExports.jsx(RefIcon$a,{}),label:imTr("ui.skills.addMd",null,"Upload SKILL.md"),onClick:()=>{skillFileInputRef.current&&(skillFileInputRef.current.accept=".md",skillFileInputRef.current.click())}}]},valuesRef=reactExports.useRef(initialValues),enabledRef=reactExports.useRef(!1),lastSavedSigRef=reactExports.useRef(null),mountedRef=reactExports.useRef(!0),busyRef=reactExports.useRef(!1),writeValues=next=>{valuesRef.current=next,setValues(next)},setField=(key,val)=>writeValues({...valuesRef.current,[key]:val}),fieldSig=reactExports.useCallback((vals,en)=>{const o={enabled:en};for(const f of descriptor.fields)"password"===f.type?vals[f.key]&&(o[f.key]=vals[f.key]):o[f.key]=vals[f.key];return JSON.stringify(o)},[descriptor]),buildBody=(vals,en,applyProcess)=>{const body={enabled:en,applyProcess:applyProcess};for(const f of descriptor.fields)"password"===f.type?vals[f.key]&&(body[f.key]=vals[f.key]):body[f.key]=vals[f.key];return body},postConfig=reactExports.useCallback(async body=>{try{const r=await fetch(apiUrl(descriptor.endpoints.config),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(body)});if(!r.ok){let detail="";try{const e=await r.json();detail=e.detail||e.error||""}catch{detail=`HTTP ${r.status}`}return{ok:!1,detail:detail}}return{ok:!0}}catch{return{ok:!1,detail:""}}},[descriptor]),fetchStatus=reactExports.useCallback(async full=>{let d=null,ok=!1;try{const r=await fetch(apiUrl(descriptor.endpoints.status));r.ok&&(d=await r.json(),ok=!0)}catch{}if(!mountedRef.current)return d;if(!ok)return setConnection({running:!1,connected:!1}),setProc(null),null;if(setConnection(d.connection||null),setProc(d.process||null),setEnabled(!!d.enabled),enabledRef.current=!!d.enabled,full){setHasSecret(!!d.hasSecret);const v={};for(const f of descriptor.fields){const incoming=d[f.key];"tags"===f.type?v[f.key]=Array.isArray(incoming)?incoming:[]:"switch"===f.type?v[f.key]=!!incoming:v[f.key]=incoming??defaultValue(f)}writeValues(v),lastSavedSigRef.current=fieldSig(v,!!d.enabled)}return d},[descriptor,fieldSig]);reactExports.useEffect(()=>{mountedRef.current=!0,fetchStatus(!0);const id=setInterval(()=>{busyRef.current||fetchStatus(!1)},5e3);return()=>{mountedRef.current=!1,clearInterval(id)}},[fetchStatus]);const commit=reactExports.useCallback(async()=>{const sig=fieldSig(valuesRef.current,enabledRef.current);if(sig===lastSavedSigRef.current)return;const{ok:ok,detail:detail}=await postConfig(buildBody(valuesRef.current,enabledRef.current,!1));ok?(lastSavedSigRef.current=sig,setHasSecret(prev=>prev||descriptor.fields.some(f=>"password"===f.type&&valuesRef.current[f.key]))):staticMethods.error(imTr("ui.im.saveFailed",null,"Save failed")+(detail?`: ${detail}`:""))},[descriptor,fieldSig,postConfig]),setFieldAndCommit=(key,val)=>{setField(key,val),commit()},allowlistField=descriptor.fields.find(f=>"tags"===f.type),procState=null==proc?void 0:proc.state,showStop=stopping||enabled&&!starting,renderField=f=>"switch"===f.type?jsxRuntimeExports.jsxs("div",{className:styles$c_row,children:[jsxRuntimeExports.jsxs("span",{className:styles$c_label,children:[imTr(f.labelKey,null,f.fallback),f.helpKey&&jsxRuntimeExports.jsx(Tooltip,{title:imTr(f.helpKey,null,f.helpFallback),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$c_helpIcon})})]}),jsxRuntimeExports.jsx("span",{className:styles$c_control,children:jsxRuntimeExports.jsx(Switch,{checked:!!values[f.key],onChange:v=>setFieldAndCommit(f.key,v)})})]},f.key):jsxRuntimeExports.jsxs("div",{className:styles$c_field,children:[jsxRuntimeExports.jsxs("label",{className:styles$c_fieldLabel,children:[imTr(f.labelKey,null,f.fallback),f.required&&jsxRuntimeExports.jsx("span",{className:styles$c_required,children:"*"}),f.helpKey?jsxRuntimeExports.jsx(Tooltip,{title:imTr(f.helpKey,null,f.helpFallback),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$c_helpIcon})}):f.optional?jsxRuntimeExports.jsx("span",{className:styles$c_optional,children:imTr("ui.im.optional",null,"Optional")}):null]}),"text"===f.type&&jsxRuntimeExports.jsx(Input,{value:values[f.key],onChange:e=>setField(f.key,e.target.value),onBlur:commit,placeholder:imTr(f.labelKey,null,f.fallback),autoComplete:"off"}),"password"===f.type&&jsxRuntimeExports.jsx(Input.Password,{value:values[f.key],onChange:e=>setField(f.key,e.target.value),onBlur:commit,placeholder:hasSecret?`•••••• ${imTr("ui.im.secretSaved",null,"Saved (leave blank to keep)")}`:imTr(f.labelKey,null,f.fallback),autoComplete:"new-password"}),"select"===f.type&&jsxRuntimeExports.jsx(Select,{value:values[f.key],onChange:v=>setFieldAndCommit(f.key,v),style:{width:"100%"},options:f.options.map(o=>({value:o.value,label:imTr(o.labelKey,null,o.fallback)}))}),"tags"===f.type&&jsxRuntimeExports.jsx(Select,{mode:"tags",value:values[f.key],onChange:v=>setFieldAndCommit(f.key,v),tokenSeparators:[","," "],placeholder:imTr(f.placeholderKey,null,f.placeholderFallback),style:{width:"100%"},open:!1})]},f.key),mainFields=descriptor.fields.filter(f=>"more"!==f.section),moreFields=descriptor.fields.filter(f=>"more"===f.section);return jsxRuntimeExports.jsxs("div",{className:styles$c_panel,children:[jsxRuntimeExports.jsxs("div",{className:styles$c_row,children:[jsxRuntimeExports.jsx("span",{className:styles$c_label,children:imTr(descriptor.enable.key,null,descriptor.enable.fallback)}),jsxRuntimeExports.jsx("span",{className:styles$c_control,children:(()=>{if(null==connection?void 0:connection.lastError)return jsxRuntimeExports.jsxs(Tag,{color:"error",children:[imTr("ui.im.statusError",null,"Error"),": ",connection.lastError]});const portSuffix=(null==proc?void 0:proc.port)?` :${proc.port}`:"";return procState?"ready"===procState?(null==connection?void 0:connection.connected)?jsxRuntimeExports.jsxs(Tag,{color:"success",children:[imTr("ui.im.statusConnected",null,"Connected"),portSuffix]}):jsxRuntimeExports.jsxs(Tag,{color:"processing",children:[imTr("ui.im.statusRunning",null,"Running, connecting…"),portSuffix]}):"booting"===procState?jsxRuntimeExports.jsx(Tag,{color:"processing",children:imTr("ui.im.statusBooting",null,"Starting…")}):"hung"===procState?jsxRuntimeExports.jsx(Tag,{color:"warning",children:imTr("ui.im.statusHung",null,"Not responding")}):jsxRuntimeExports.jsx(Tag,{children:imTr("ui.im.statusDisconnected",null,"Disconnected")}):connection?connection.connected?jsxRuntimeExports.jsx(Tag,{color:"success",children:imTr("ui.im.statusConnected",null,"Connected")}):connection.running?jsxRuntimeExports.jsx(Tag,{color:"processing",children:imTr("ui.im.statusRunning",null,"Running, connecting…")}):jsxRuntimeExports.jsx(Tag,{children:imTr("ui.im.statusDisconnected",null,"Disconnected")}):null})()})]}),mainFields.map(renderField),(moreFields.length>0||(null==(_a=descriptor.notes)?void 0:_a.length)>0)&&jsxRuntimeExports.jsxs("button",{type:"button",className:styles$c_detailsToggle,onClick:()=>setShowDetails(v=>!v),children:[showDetails?jsxRuntimeExports.jsx(RefIcon$b,{}):jsxRuntimeExports.jsx(RefIcon$c,{}),jsxRuntimeExports.jsx("span",{children:imTr("ui.im.moreSettings",null,"More settings")})]}),showDetails&&jsxRuntimeExports.jsxs("div",{className:styles$c_details,children:[moreFields.map(renderField),jsxRuntimeExports.jsxs("div",{className:styles$c_row,children:[jsxRuntimeExports.jsxs("span",{className:styles$c_label,children:[imTr("ui.im.persona",null,"Model personality"),jsxRuntimeExports.jsx(Tooltip,{title:imTr("ui.im.personaHelp",null,"Edit this IM's CLAUDE.md to define the bot's personality and behavior; takes effect after you restart this IM."),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$c_helpIcon})})]}),jsxRuntimeExports.jsx("span",{className:styles$c_control,children:jsxRuntimeExports.jsx(Button,{size:"small",onClick:()=>setClaudeMdOpen(!0),children:imTr("ui.im.edit",null,"Edit")})})]}),jsxRuntimeExports.jsxs("div",{className:styles$c_row,children:[jsxRuntimeExports.jsxs("span",{className:styles$c_label,children:[label2," ",imTr("ui.im.skillsRow",null,"SKILL management")]}),jsxRuntimeExports.jsxs("span",{className:styles$c_control,style:{display:"inline-flex",gap:8},children:[jsxRuntimeExports.jsx(Dropdown,{trigger:["click"],menu:skillAddMenu,children:jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$e,{}),children:imTr("ui.skills.add",null,"Add")})}),jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$f,{}),onClick:()=>setSkillsModalOpen(!0),children:imTr("ui.skillManage",null,"Manage")})]})]}),(descriptor.notes||[]).map((n,i)=>jsxRuntimeExports.jsx("div",{className:"warn"===n.kind?styles$c_warn:styles$c_hint,children:imTr(n.key,null,n.fallback)},i))]}),jsxRuntimeExports.jsx(ImClaudeMdModal,{open:claudeMdOpen,platform:descriptor.id,onClose:()=>setClaudeMdOpen(!1)}),jsxRuntimeExports.jsx(ImSkillsModal,{open:skillsModalOpen,platform:descriptor.id,reloadKey:skillsReloadKey,onClose:()=>setSkillsModalOpen(!1)}),jsxRuntimeExports.jsx("input",{type:"file",ref:skillFileInputRef,style:{display:"none"},accept:".zip,.md",onChange:async e=>{var _a2;const file=null==(_a2=e.target.files)?void 0:_a2[0];if(e.target.value="",!file)return;const lower=file.name.toLowerCase();lower.endsWith(".zip")||lower.endsWith(".md")?await postSkillImport(file):staticMethods.error(imTr("ui.skills.invalidType",null,"Only .zip or SKILL.md"))}}),SUPPORTS_DIRECTORY_UPLOAD&&jsxRuntimeExports.jsx("input",{type:"file",ref:skillFolderInputRef,style:{display:"none"},webkitdirectory:"",directory:"",onChange:async e=>{const fileList=e.target.files;if(e.target.value="",!fileList||0===fileList.length)return;const files=Array.from(fileList);if(files.some(f=>{const parts=(f.webkitRelativePath||"").split("/");return 2===parts.length&&"skill.md"===parts[1].toLowerCase()}))try{const zip=new(0,(await __vitePreload(async()=>{const{default:__vite_default__}=await import("./jszip.min-DDU-_oA-.js").then(n=>n.j);return{default:__vite_default__}},__vite__mapDeps([0,1]))).default);for(const f of files){const rel=f.webkitRelativePath||f.name;rel&&!rel.includes("..")&&zip.file(rel,f)}const blob=await zip.generateAsync({type:"blob"}),rootName=(files[0].webkitRelativePath||"").split("/")[0]||"skill";await postSkillImport(new File([blob],`${rootName}.zip`,{type:"application/zip"}))}catch(err){staticMethods.error(imTr("ui.skills.uploadFailed",{reason:(null==err?void 0:err.message)||"pack failed"},"Failed to add skill"))}else staticMethods.error(imTr("ui.skills.folderMissingSkillMd",null,"SKILL.md not found at the folder root"))}}),jsxRuntimeExports.jsxs("div",{className:styles$c_actions,children:[jsxRuntimeExports.jsx(Button,{className:styles$c_testBtn,onClick:async()=>{setTesting(!0);try{const r=await fetch(apiUrl(descriptor.endpoints.test),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(buildBody(valuesRef.current,enabledRef.current,!1))}),d=await r.json();d.ok?staticMethods.success(imTr("ui.im.testOk",null,"Connection OK")):staticMethods.error(imTr("ui.im.testFail",null,"Connection failed")+(d.detail?`: ${d.detail}`:""))}catch{staticMethods.error(imTr("ui.im.testFail",null,"Connection failed"))}finally{setTesting(!1)}},loading:testing,children:imTr("ui.im.test",null,"Test connection")}),jsxRuntimeExports.jsx(Button,{type:showStop?"default":"primary",danger:showStop,loading:starting||stopping,onClick:showStop?async()=>{setStopping(!0),busyRef.current=!0;try{const{ok:ok,detail:detail}=await postConfig(buildBody(valuesRef.current,!1,!0));if(!ok)return void staticMethods.error(imTr("ui.im.saveFailed",null,"Save failed")+(detail?`: ${detail}`:""));setEnabled(!1),enabledRef.current=!1,lastSavedSigRef.current=fieldSig(valuesRef.current,!1)}finally{busyRef.current=!1,mountedRef.current&&(setStopping(!1),fetchStatus(!1))}}:async()=>{var _a2;setStarting(!0),busyRef.current=!0;try{const{ok:ok,detail:detail}=await postConfig(buildBody(valuesRef.current,!0,!0));if(!ok)return void staticMethods.error(imTr("ui.im.startFailed",null,"Start failed")+(detail?`: ${detail}`:""));setEnabled(!0),enabledRef.current=!0,lastSavedSigRef.current=fieldSig(valuesRef.current,!0),(()=>{if(!allowlistField)return!1;const v=valuesRef.current[allowlistField.key];return!Array.isArray(v)||0===v.length})()&&staticMethods.warning(imTr("ui.im.savedNoAllowlistWarn",null,"No sender allowlist set: the first conversation that messages the bot is bound and anyone in it can drive the local session with no approval. Add an allowlist under More settings."),8);const deadline=Date.now()+15e3;let ready=!1;for(;Date.now()<deadline;){if(await new Promise(res=>setTimeout(res,500)),!mountedRef.current)return;const d=await fetchStatus(!1);if("ready"===(null==(_a2=null==d?void 0:d.process)?void 0:_a2.state)){ready=!0;break}}if(!mountedRef.current)return;ready?staticMethods.success(imTr("ui.im.statusConnected",null,"Connected")):staticMethods.error(imTr("ui.im.startFailed",null,"Start failed: worker did not become ready in time"),6)}finally{busyRef.current=!1,mountedRef.current&&(setStarting(!1),fetchStatus(!1))}},children:showStop?imTr("ui.im.stop",null,"Stop"):imTr("ui.im.start",null,"Start")})]})]})}const styles$b_tabRow="_tabRow_1q32a_4",styles$b_tabBtn="_tabBtn_1q32a_24",styles$b_tabBtnActive="_tabBtnActive_1q32a_52",styles$b_toolBody="_toolBody_1q32a_8",TOOLS=IM_PLATFORMS.map(p=>({id:p.id,labelKey:p.labelKey,fallback:p.fallback,Icon:p.icon,color:p.color,render:()=>jsxRuntimeExports.jsx(ImPlatformSettings,{descriptor:p})}));function MessagingModal({open:open,onClose:onClose,initialTool:initialTool}){const[selected,setSelected]=reactExports.useState(initialTool||TOOLS[0].id);reactExports.useEffect(()=>{open&&initialTool&&setSelected(initialTool)},[open,initialTool]);const active=TOOLS.find(x=>x.id===selected)||TOOLS[0];return jsxRuntimeExports.jsxs(Modal,{open:open,onCancel:onClose,footer:null,width:680,destroyOnClose:!0,styles:{content:{background:"var(--bg-elevated)"},header:{background:"var(--bg-elevated)"}},title:jsxRuntimeExports.jsxs("span",{children:[jsxRuntimeExports.jsx(RefIcon$2,{style:{marginInlineEnd:8}}),imTr("ui.messaging.title",null,"Messaging Integrations")]}),children:[jsxRuntimeExports.jsx("div",{className:styles$b_tabRow,children:TOOLS.map(tool=>{const isActive=selected===tool.id,Icon2=tool.Icon;return jsxRuntimeExports.jsxs("button",{type:"button",className:`${styles$b_tabBtn}${isActive?` ${styles$b_tabBtnActive}`:""}`,onClick:()=>setSelected(tool.id),children:[jsxRuntimeExports.jsx(Icon2,{size:16,style:{color:isActive?tool.color:"var(--text-tertiary, #999)"}}),jsxRuntimeExports.jsx("span",{style:isActive?{color:tool.color}:void 0,children:imTr(tool.labelKey,null,tool.fallback)})]},tool.id)})}),jsxRuntimeExports.jsx("div",{className:styles$b_toolBody,children:active.render()})]})}const styles$a_scrollBody="_scrollBody_riojj_1",styles$a_headerBar="_headerBar_riojj_15",styles$a_refreshBtn="_refreshBtn_riojj_21",styles$a_statusTag="_statusTag_riojj_27",styles$a_center="_center_riojj_36",styles$a_hint="_hint_riojj_46";function ImConversationModal({open:open,onClose:onClose,platform:platform,onOpenConfig:onOpenConfig}){const[sessions,setSessions]=reactExports.useState([]),[loading,setLoading]=reactExports.useState(!1),[error,setError]=reactExports.useState(null),[reloadKey,setReloadKey]=reactExports.useState(0),prevRef=reactExports.useRef({open:!1,platform:null}),sessionsRef=reactExports.useRef(sessions);sessionsRef.current=sessions;const bodyRef=reactExports.useRef(null),scrollMemRef=reactExports.useRef({}),positionedRef=reactExports.useRef(!1);reactExports.useEffect(()=>{positionedRef.current=!1},[open,platform]),reactExports.useLayoutEffect(()=>{if(!open||loading||positionedRef.current)return;const el=bodyRef.current;if(!el)return;const mem=scrollMemRef.current[platform];el.scrollTop=!mem||mem.atBottom?el.scrollHeight:Math.min(mem.top,el.scrollHeight),positionedRef.current=!0},[open,platform,loading,sessions]);const descriptor=IM_PLATFORMS.find(p=>p.id===platform)||null,label2=descriptor?(()=>{try{return t(descriptor.labelKey)}catch{return descriptor.fallback}})():"",[senderMap,setSenderMap]=reactExports.useState({});reactExports.useEffect(()=>{if(!open||!platform)return;let cancelled=!1;return fetch(apiUrl(`/api/im/${encodeURIComponent(platform)}/senders`)).then(r=>r.ok?r.json():null).then(d=>{cancelled||setSenderMap(d&&d.senders||{})}).catch(()=>{cancelled||setSenderMap({})}),()=>{cancelled=!0}},[open,platform,reloadKey]);const[imConn,setImConn]=reactExports.useState(null),[imProc,setImProc]=reactExports.useState(null);reactExports.useEffect(()=>{if(!open||!platform)return;let cancelled=!1;const poll=async()=>{try{const r=await fetch(apiUrl(`/api/im/${encodeURIComponent(platform)}/status`));if(!r.ok)return void(cancelled||(setImConn({running:!1,connected:!1}),setImProc(null)));const d=await r.json();cancelled||(setImConn(d.connection||null),setImProc(d.process||null))}catch{cancelled||(setImConn({running:!1,connected:!1}),setImProc(null))}};poll();const id=setInterval(poll,5e3);return()=>{cancelled=!0,clearInterval(id)}},[open,platform,reloadKey]);reactExports.useEffect(()=>{if(!open||!platform)return void(prevRef.current={open:open,platform:platform});const isPureRefresh=!0===prevRef.current.open&&prevRef.current.platform===platform;prevRef.current={open:open,platform:platform};let es=null,cancelled=!1;setLoading(!0),setError(null),isPureRefresh||setSessions([]);const reportError=e=>{setError(String((null==e?void 0:e.message)||e)||"load_failed"),sessionsRef.current.length>0&&staticMethods.error(t("ui.imRecord.loadFailed"))};return(async()=>{try{const r=await fetch(apiUrl(`/api/im/${encodeURIComponent(platform)}/logs`));if(!r.ok)throw new Error(`logs ${r.status}`);const{latest:latest}=await r.json();if(cancelled)return;if(!latest)return setSessions([]),void setLoading(!1);const entries=[];es=new EventSource(apiUrl(`/api/local-log?file=${encodeURIComponent(latest)}`)),es.addEventListener("load_chunk",ev=>{try{const chunk=JSON.parse(ev.data);if(Array.isArray(chunk))for(const e of chunk)entries.push(e)}catch{}}),es.addEventListener("load_end",()=>{if(es.close(),!cancelled){try{const reconstructed=reconstructEntries(entries);setSessions(function(entries){let sessions=[];for(const entry of entries)isMainAgent(entry)&&entry.body&&Array.isArray(entry.body.messages)&&!entry._slimmed&&(sessions=mergeMainAgentSessions(sessions,entry));return sessions}(reconstructed))}catch(e){reportError(e)}setLoading(!1)}}),es.onerror=()=>{try{es.close()}catch{}cancelled||(reportError("load_failed"),setLoading(!1))}}catch(e){cancelled||(reportError(e),setLoading(!1))}})(),()=>{if(cancelled=!0,es)try{es.close()}catch{}}},[open,platform,reloadKey]),reactExports.useEffect(()=>{if(!open||!platform)return;const onUpdate=e=>{var _a;(null==(_a=null==e?void 0:e.detail)?void 0:_a.platform)===platform&&setReloadKey(k=>k+1)};return window.addEventListener("ccv:im-log-update",onUpdate),()=>window.removeEventListener("ccv:im-log-update",onUpdate)},[open,platform]);const items=function(sessions,senderMap,imAgent){const out=[];return sessions.forEach((session,si)=>{const messages=Array.isArray(session.messages)?session.messages:[];if(0===messages.length)return;const maps=cachedBuildToolResultMap(messages),kp=`s${si}`;messages.forEach((msg,mi)=>{if(!msg)return;const ts=msg._timestamp||null,content2=msg.content;if("user"===msg.role){if(Array.isArray(content2)){const{commands:commands,textBlocks:textBlocks,skillBlocks:skillBlocks}=classifyUserContent(content2);commands.forEach((cmd,ci)=>out.push(jsxRuntimeExports.jsx(ChatMessage,{role:"user",text:cmd,timestamp:ts,isHistoryLog:!0,imSenderMap:senderMap},`${kp}-cmd-${mi}-${ci}`))),skillBlocks.forEach((sb,ski)=>{const m=(sb.text||"").match(/^#\s+(.+)$/m);out.push(jsxRuntimeExports.jsx(ChatMessage,{role:"skill-loaded",text:sb.text,skillName:m?m[1]:"Skill",timestamp:ts,isHistoryLog:!0},`${kp}-skill-${mi}-${ski}`))}),textBlocks.forEach((tb,ti)=>{const isPlan=/Implement the following plan:/i.test(tb.text||"");out.push(jsxRuntimeExports.jsx(ChatMessage,{role:isPlan?"plan-prompt":"user",text:tb.text,timestamp:ts,isHistoryLog:!0,imSenderMap:senderMap},`${kp}-user-${mi}-${ti}`))})}else if("string"==typeof content2&&!isSystemText(content2)){const isPlan=/Implement the following plan:/i.test(content2);out.push(jsxRuntimeExports.jsx(ChatMessage,{role:isPlan?"plan-prompt":"user",text:content2,timestamp:ts,isHistoryLog:!0,imSenderMap:senderMap},`${kp}-user-${mi}`))}}else if("assistant"===msg.role){let blocks=null;Array.isArray(content2)?blocks=content2.filter(b=>"text"!==b.type||!isSystemText(b.text)):"string"!=typeof content2||isSystemText(content2)||(blocks=[{type:"text",text:content2}]),blocks&&blocks.length>0&&out.push(jsxRuntimeExports.jsx(ChatMessage,{role:"assistant",content:blocks,toolResultMap:maps.toolResultMap,readContentMap:maps.readContentMap,editSnapshotMap:maps.editSnapshotMap,askAnswerMap:maps.askAnswerMap,planApprovalMap:maps.planApprovalMap,latestPlanContent:maps.latestPlanContent,timestamp:ts,displayTs:msg._generatedTs,collapseToolResults:!0,isHistoryLog:!0,imAgent:imAgent},`${kp}-asst-${mi}`))}})}),out}(sessions,senderMap,reactExports.useMemo(()=>descriptor?{name:label2,Icon:descriptor.icon,color:descriptor.color}:null,[platform,label2])),title=jsxRuntimeExports.jsxs("div",{className:styles$a_headerBar,children:[jsxRuntimeExports.jsx("span",{children:t("ui.imRecord.title")}),onOpenConfig?jsxRuntimeExports.jsx(Tooltip,{title:t("ui.imRecord.config"),children:jsxRuntimeExports.jsx(Button,{type:"text",size:"small",icon:jsxRuntimeExports.jsx(RefIcon$f,{}),className:styles$a_refreshBtn,onClick:()=>onOpenConfig(platform)})}):null,jsxRuntimeExports.jsx(Tooltip,{title:t("ui.imRecord.refresh"),children:jsxRuntimeExports.jsx(Button,{type:"text",size:"small",icon:jsxRuntimeExports.jsx(RefIcon$g,{spin:loading}),className:styles$a_refreshBtn,disabled:loading,onClick:()=>setReloadKey(k=>k+1)})}),jsxRuntimeExports.jsx("span",{className:styles$a_statusTag,children:(()=>{if(null==imConn?void 0:imConn.lastError)return jsxRuntimeExports.jsxs(Tag,{color:"error",children:[t("ui.im.statusError"),": ",imConn.lastError]});const portSuffix=(null==imProc?void 0:imProc.port)?` :${imProc.port}`:"",st=null==imProc?void 0:imProc.state;return st?"ready"===st?(null==imConn?void 0:imConn.connected)?jsxRuntimeExports.jsxs(Tag,{color:"success",children:[t("ui.im.statusConnected"),portSuffix]}):jsxRuntimeExports.jsxs(Tag,{color:"processing",children:[t("ui.im.statusRunning"),portSuffix]}):"booting"===st?jsxRuntimeExports.jsx(Tag,{color:"processing",children:t("ui.im.statusBooting")}):"hung"===st?jsxRuntimeExports.jsx(Tag,{color:"warning",children:t("ui.im.statusHung")}):jsxRuntimeExports.jsx(Tag,{children:t("ui.im.statusDisconnected")}):imConn?imConn.connected?jsxRuntimeExports.jsx(Tag,{color:"success",children:t("ui.im.statusConnected")}):imConn.running?jsxRuntimeExports.jsx(Tag,{color:"processing",children:t("ui.im.statusRunning")}):jsxRuntimeExports.jsx(Tag,{children:t("ui.im.statusDisconnected")}):null})()})]});return jsxRuntimeExports.jsx(Drawer,{open:open,onClose:onClose,placement:"left",width:"min(760px, 92vw)",rootClassName:"ccvSideDrawer",destroyOnHidden:!0,title:title,styles:{body:{padding:0,overflow:"hidden",background:"var(--bg-elevated)"},header:{background:"var(--bg-elevated)"}},children:jsxRuntimeExports.jsx("div",{className:styles$a_scrollBody,ref:bodyRef,onScroll:e=>{if(!open||!platform)return;const el=e.currentTarget,atBottom=el.scrollHeight-el.scrollTop-el.clientHeight<=24;scrollMemRef.current[platform]={top:el.scrollTop,atBottom:atBottom}},children:items.length>0?items:loading?jsxRuntimeExports.jsxs("div",{className:styles$a_center,children:[jsxRuntimeExports.jsx(Spin,{}),jsxRuntimeExports.jsx("span",{className:styles$a_hint,children:t("ui.imRecord.loading")})]}):error?jsxRuntimeExports.jsxs("div",{className:styles$a_center,children:[jsxRuntimeExports.jsx(Empty,{description:t("ui.imRecord.loadFailed")}),jsxRuntimeExports.jsx(Button,{size:"small",onClick:()=>setReloadKey(k=>k+1),children:t("ui.imRecord.refresh")})]}):jsxRuntimeExports.jsx(Empty,{description:t("ui.imRecord.empty")})})})}const styles$9_chip="_chip_bvaji_4",styles$9_logo="_logo_bvaji_16",styles$9_connecting="_connecting_bvaji_22",styles$9_dotError="_dotError_bvaji_27";function ImStatusChip({descriptor:descriptor,onClick:onClick,onStatus:onStatus}){const[enabled,setEnabled]=reactExports.useState(!1),[connection,setConnection]=reactExports.useState(null),Icon2=descriptor.icon,fetchStatus=reactExports.useCallback(async()=>{try{const r=await fetch(apiUrl(descriptor.endpoints.status));if(!r.ok)return void setConnection({running:!1,connected:!1});const d=await r.json();setEnabled(!!d.enabled),setConnection(d.connection||null)}catch{setConnection({running:!1,connected:!1})}},[descriptor]);if(reactExports.useEffect(()=>{fetchStatus();const id=setInterval(fetchStatus,5e3);return()=>clearInterval(id)},[fetchStatus]),reactExports.useEffect(()=>{onStatus&&onStatus(descriptor.id,{enabled:enabled,running:!!(null==connection?void 0:connection.running),connected:!(!connection||!connection.connected||connection.lastError)})},[enabled,connection,onStatus,descriptor.id]),!enabled)return null;let state="stopped";(null==connection?void 0:connection.lastError)?state="error":(null==connection?void 0:connection.running)&&(null==connection?void 0:connection.connected)?state="connected":(null==connection?void 0:connection.running)&&(state="running");const statusLabel="connected"===state?imTr("ui.im.statusConnected",null,"Connected"):"running"===state?imTr("ui.im.statusRunning",null,"Running, connecting…"):"error"===state?`${imTr("ui.im.statusError",null,"Error")}: ${connection.lastError}`:imTr("ui.im.statusStopped",null,"Stopped"),label2=imTr(descriptor.labelKey,null,descriptor.fallback),color="connected"===state||"running"===state?descriptor.color:"var(--text-tertiary, #999)",iconClass="running"===state?`${styles$9_logo} ${styles$9_connecting}`:styles$9_logo;return jsxRuntimeExports.jsx(Tooltip,{title:`${label2} · ${statusLabel}`,children:jsxRuntimeExports.jsxs("span",{className:styles$9_chip,onClick:onClick,role:"button",tabIndex:0,"aria-label":`${label2} · ${statusLabel}`,onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||null==onClick||onClick()},children:[jsxRuntimeExports.jsx(Icon2,{size:16,className:iconClass,style:{color:color}}),"error"===state?jsxRuntimeExports.jsx("span",{className:styles$9_dotError,"aria-hidden":"true"}):null]})})}const styles$8_headerBar="_headerBar_uzc7r_2",styles$8_logoWrap="_logoWrap_uzc7r_10",styles$8_logoWrapActive="_logoWrapActive_uzc7r_17",styles$8_logoImage="_logoImage_uzc7r_26",styles$8_logoImageActive="_logoImageActive_uzc7r_36",styles$8_compactBtn="_compactBtn_uzc7r_43",styles$8_headerProjectName="_headerProjectName_uzc7r_79",styles$8_countdownStrong="_countdownStrong_uzc7r_96",styles$8_qrcodePopover="_qrcodePopover_uzc7r_101",styles$8_qrcodeTitle="_qrcodeTitle_uzc7r_119",styles$8_qrcodeUrlInput="_qrcodeUrlInput_uzc7r_126",styles$8_qrcodeUrlCopy="_qrcodeUrlCopy_uzc7r_132",styles$8_authSection="_authSection_uzc7r_143",styles$8_authHeaderRow="_authHeaderRow_uzc7r_157",styles$8_authTitle="_authTitle_uzc7r_163",styles$8_authPasswordInput="_authPasswordInput_uzc7r_174",styles$8_authSaveBtn="_authSaveBtn_uzc7r_179",styles$8_authEmptyWarn="_authEmptyWarn_uzc7r_183",styles$8_settingsGroupBox="_settingsGroupBox_uzc7r_191",styles$8_settingsGroupTitle="_settingsGroupTitle_uzc7r_199",styles$8_settingsItem="_settingsItem_uzc7r_208",styles$8_settingsLabel="_settingsLabel_uzc7r_215",styles$8_settingsHelpIcon="_settingsHelpIcon_uzc7r_220",styles$8_settingsDivider="_settingsDivider_uzc7r_227",styles$8_logDirInput="_logDirInput_uzc7r_232",styles$8_tokenStatsEmpty="_tokenStatsEmpty_uzc7r_242",styles$8_tokenStatsContainer="_tokenStatsContainer_uzc7r_249",styles$8_tokenStatsColumn="_tokenStatsColumn_uzc7r_255",styles$8_toolStatsColumn="_toolStatsColumn_uzc7r_259",styles$8_modelCardSpaced="_modelCardSpaced_uzc7r_265 _modelCard_8xfmi_3",styles$8_promptExportBar="_promptExportBar_uzc7r_283",styles$8_promptScrollArea="_promptScrollArea_uzc7r_287",styles$8_promptEmpty="_promptEmpty_uzc7r_292",styles$8_promptTimestamp="_promptTimestamp_uzc7r_298",styles$8_textPromptCard="_textPromptCard_uzc7r_306",styles$8_preText="_preText_uzc7r_315",styles$8_systemCollapse="_systemCollapse_uzc7r_325",styles$8_systemLabel="_systemLabel_uzc7r_332",styles$8_preSys="_preSys_uzc7r_337",styles$8_promptTextarea="_promptTextarea_uzc7r_347",styles$8_projectStatsCenter="_projectStatsCenter_uzc7r_363",styles$8_projectStatsEmpty="_projectStatsEmpty_uzc7r_369",styles$8_projectStatsContent="_projectStatsContent_uzc7r_376",styles$8_projectStatsUpdated="_projectStatsUpdated_uzc7r_382",styles$8_projectStatsSummary="_projectStatsSummary_uzc7r_388",styles$8_projectStatCard="_projectStatCard_uzc7r_394",styles$8_projectStatValue="_projectStatValue_uzc7r_402",styles$8_projectStatLabel="_projectStatLabel_uzc7r_410",styles$8_projectStatsSection="_projectStatsSection_uzc7r_416",styles$8_projectStatsSectionTitle="_projectStatsSectionTitle_uzc7r_422",styles$8_projectStatsModelCard="_projectStatsModelCard_uzc7r_430",styles$8_projectStatsModelHeader="_projectStatsModelHeader_uzc7r_437",styles$8_projectStatsModelName="_projectStatsModelName_uzc7r_446",styles$8_projectStatsModelCount="_projectStatsModelCount_uzc7r_452",styles$8_thLeft="_thLeft_uzc7r_584",styles$8_qrcodeIcon="_qrcodeIcon_uzc7r_627",styles$8_approvalBell="_approvalBell_uzc7r_653",styles$8_approvalBellBadge="_approvalBellBadge_uzc7r_678",styles$8_proxySwapIcon="_proxySwapIcon_uzc7r_695",styles$8_proxyProfileTag="_proxyProfileTag_uzc7r_701",styles$8_pinnedShortcut="_pinnedShortcut_uzc7r_717",styles$8_themeToggle="_themeToggle_uzc7r_746",styles$8_themeToggleIcon="_themeToggleIcon_uzc7r_772",styles$8_headerRightRow="_headerRightRow_uzc7r_777",styles$8_headerCountdownTag="_headerCountdownTag_uzc7r_783",CALIBRATION_MODELS=appConfig.calibrationModels,LEGACY_CALIBRATION_MIGRATION={"opus-4.7-1m":"1m","sonnet-4.6":"200k",glm5:"200k","kimi-k2.5":"200k","minimax-2.1":"200k","Qwen 3.5":"200k"};function readCalibrationModel(){const raw=localStorage.getItem("ccv_calibrationModel")||"auto",migrated=LEGACY_CALIBRATION_MIGRATION[raw]||raw;return CALIBRATION_MODELS.some(m=>m.value===migrated)?migrated:"auto"}function makeAuthState(over={}){return{enabled:!1,isAdmin:!1,password:null,scope:"global",hasProjectOverride:!1,projectDir:null,global:{enabled:!1,password:null},...over}}function HeaderProjectLabel({projectName:projectName,isLocalLog:isLocalLog}){const alias=useProjectAlias(projectName);return jsxRuntimeExports.jsxs("span",{className:styles$8_headerProjectName,children:[t("ui.liveMonitoring"),projectName?`:${projectName}`:"",alias?` (${alias})`:"",jsxRuntimeExports.jsx(ProjectAliasEditor,{projectName:projectName,isLocalLog:isLocalLog})]})}const _AppHeader=class _AppHeader extends React__default.Component{constructor(props){super(props),__publicField(this,"togglePin",key=>{this.setState(s=>{const next=togglePinned(s.pinnedKeys,key);try{localStorage.setItem("ccv_pinnedMenuKeys",(arr=next,JSON.stringify(Array.isArray(arr)?arr:[])))}catch{}var arr;return{pinnedKeys:next}})}),__publicField(this,"_imStatus",{}),__publicField(this,"_onImStatus",(id,info)=>{const prev=this._imStatus[id];prev&&prev.enabled===info.enabled&&prev.connected===info.connected||(this._imStatus[id]=info,this._pushHeaderModel())}),__publicField(this,"_syncMenuBarState",()=>{var _a,_b;try{null==(_b=null==(_a=window.tabBridge)?void 0:_a.menuBarState)||_b.call(_a,!!this.state.electronMenuBar)}catch{}}),__publicField(this,"_closeMenuBar",()=>this.setState({electronMenuBar:null},this._syncMenuBarState)),__publicField(this,"reloadFsSkills",async()=>loadFsSkills(this,{isLocalLog:this.props.isLocalLog})),__publicField(this,"postAuthConfig",async(body,opts={})=>{if(!this.state._authSaving){this.setState({_authSaving:!0});try{const post=async b=>{const r=await fetch(apiUrl("/api/auth/config"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!r.ok)throw new Error("auth-config "+r.status);return r.json()};let data=await post(body);opts.thenClearOverride&&(data=await post({clearOverride:!0})),this._applyAuthState(data),staticMethods.success(t("ui.auth.saved"))}catch{staticMethods.error(t("ui.auth.saveFailed"))}finally{this.setState({_authSaving:!1})}}}),__publicField(this,"loadMemory",async()=>loadProjectMemory(this)),__publicField(this,"handleRefreshMemory",async()=>{if(this.state._memoryRefreshing)return;this.setState({_memoryRefreshing:!0});const seq=++this._memorySeq;let ok=!1,stale=!1;try{const r=await fetch(apiUrl("/api/project-memory")),data=await r.json();seq!==this._memorySeq?stale=!0:r.ok?(this.setState({_memory:data}),ok=!0):this.setState({_memory:!1})}catch{seq!==this._memorySeq?stale=!0:this.setState({_memory:!1})}finally{stale||this.setState({_memoryRefreshing:!1})}stale||(ok?staticMethods.success(t("ui.memoryRefreshSuccess")):staticMethods.error(t("ui.memoryRefreshFailed"),5))}),__publicField(this,"_isCacheDetailModalOpen",()=>!!(this.state._memoryDetail||this.state._claudeMdDetail||this.state._skillsModal&&this.state._skillsModal.open)),__publicField(this,"handleCachePopoverOpenChange",open=>{!open&&this._isCacheDetailModalOpen()||(this.setState({_cachePopoverOpen:open}),open||(this._cacheScrollInited=!1),open&&null===this.state._fsSkills&&!this.props.isLocalLog&&this.reloadFsSkills(),open&&null===this.state._memory&&this.loadMemory(),open&&null===this.state._claudeMd&&this.loadClaudeMdList())}),__publicField(this,"loadClaudeMdList",async()=>loadClaudeMdList(this)),__publicField(this,"loadClaudeMdDetail",async(id,tail,scope)=>{const seq=++this._claudeMdDetailSeq,title=`${t("global"===scope?"ui.claudeMdScopeGlobal":"ui.claudeMdScopeProject")} · ${tail}`;this.setState({_claudeMdDetail:{name:title,loading:!0}});try{const r=await fetch(apiUrl(`/api/claude-md?id=${encodeURIComponent(id)}`)),data=await r.json();if(seq!==this._claudeMdDetailSeq)return;if(!r.ok)return void this.setState({_claudeMdDetail:{name:title,error:data.error||`http:${r.status}`}});this.setState({_claudeMdDetail:{name:title,content:data.content||""}})}catch(e){seq===this._claudeMdDetailSeq&&this.setState({_claudeMdDetail:{name:title,error:e.message||"network"}})}}),__publicField(this,"loadMemoryDetail",async name=>{const seq=++this._memoryDetailSeq;this.setState({_memoryDetail:{name:name,loading:!0}});try{const r=await fetch(apiUrl(`/api/project-memory?file=${encodeURIComponent(name)}`)),data=await r.json();if(seq!==this._memoryDetailSeq)return;if(!r.ok)return void this.setState({_memoryDetail:{name:name,error:data.error||`http:${r.status}`}});this.setState({_memoryDetail:{name:name,content:data.content||""}})}catch(e){seq===this._memoryDetailSeq&&this.setState({_memoryDetail:{name:name,error:e.message||"network"}})}}),__publicField(this,"handleShowPrompts",()=>{this.setState({promptModalVisible:!0,promptData:this.extractUserPrompts()})}),__publicField(this,"handleExportPromptsTxt",()=>{const prompts=this.state.promptData;if(!prompts||0===prompts.length)return;const blocks=[];for(const p of prompts){const lines=[],ts=p.timestamp?new Date(p.timestamp).toLocaleString():"";ts&&lines.push(`${ts}:\n`);const textParts=(p.segments||[]).filter(seg=>"text"===seg.type).map(seg=>seg.content);textParts.length>0&&lines.push(textParts.join("\n")),blocks.push(lines.join("\n"))}if(0===blocks.length)return;const blob=new Blob([blocks.join("\n\n\n\n")],{type:"text/plain;charset=utf-8"}),url=URL.createObjectURL(blob),a=document.createElement("a");a.href=url,a.download=`user-prompts-${(new Date).toISOString().slice(0,10)}.txt`,a.click(),URL.revokeObjectURL(url)}),__publicField(this,"handleCalibrationModelChange",value=>{this.setState({calibrationModel:value}),localStorage.setItem("ccv_calibrationModel",value)}),__publicField(this,"handleShowProjectStats",()=>{this.setState({projectStatsVisible:!0,projectStatsLoading:!0}),fetch(apiUrl("/api/project-stats")).then(res=>{if(!res.ok)throw new Error("not found");return res.json()}).then(data=>this.setState({projectStats:data,projectStatsLoading:!1})).catch(()=>this.setState({projectStats:null,projectStatsLoading:!1}))}),__publicField(this,"handleShowPlugins",()=>this.setState({pluginModalVisible:!0})),__publicField(this,"handleShowProcesses",()=>this.setState({processModalVisible:!0})),__publicField(this,"handleOpenSkillsModal",async()=>{const cached=this.state._fsSkills,needFetch=!Array.isArray(cached);if(this.setState(prev=>{var _a;return{_skillsModal:{open:!0,loading:needFetch,skills:Array.isArray(cached)?cached:[],error:null,toggling:(null==(_a=prev._skillsModal)?void 0:_a.toggling)||new Set}}}),needFetch){const result=await this.reloadFsSkills();this.setState(prev=>({_skillsModal:{...prev._skillsModal,loading:!1,skills:result.ok?result.skills:[],error:result.ok?null:result.reason}}))}}),__publicField(this,"handleToggleSkill",async skill=>{var _a,_b;const key=`${skill.source}-${skill.name}`;if(null==(_b=null==(_a=this.state._skillsModal)?void 0:_a.toggling)?void 0:_b.has(key))return;const enable=!skill.enabled,flipEnabled=target=>s=>s.source===skill.source&&s.name===skill.name?{...s,enabled:target}:s;this.setState(prev=>{const next=new Set(prev._skillsModal.toggling);return next.add(key),{_skillsModal:{...prev._skillsModal,toggling:next,skills:prev._skillsModal.skills.map(flipEnabled(enable))}}});try{const r=await fetch(apiUrl("/api/skills/toggle"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({source:skill.source,name:skill.name,enable:enable})}),data=await r.json();if(!r.ok)return this.setState(prev=>({_skillsModal:{...prev._skillsModal,skills:prev._skillsModal.skills.map(flipEnabled(!enable))}})),void("DEST_CONFLICT"===data.code?staticMethods.error(t("ui.skillToggleConflict",{name:skill.name})):staticMethods.error(t("ui.skillToggleFailed",{reason:data.error||"unknown"})));this.setState(prev=>({_fsSkills:Array.isArray(prev._fsSkills)?prev._fsSkills.map(s=>s.source===skill.source&&s.name===skill.name?{...s,enabled:enable}:s):prev._fsSkills}));const result=await this.reloadFsSkills();result.ok&&this.setState(prev=>{const orderMap=new Map(prev._skillsModal.skills.map((s,i)=>[`${s.source}-${s.name}`,i])),merged=[...result.skills].sort((a,b)=>{const ai=orderMap.get(`${a.source}-${a.name}`),bi=orderMap.get(`${b.source}-${b.name}`);return void 0===ai&&void 0===bi?0:void 0===ai?1:void 0===bi?-1:ai-bi});return{_skillsModal:{...prev._skillsModal,skills:merged}}})}catch(e){this.setState(prev=>({_skillsModal:{...prev._skillsModal,skills:prev._skillsModal.skills.map(flipEnabled(!enable))}})),staticMethods.error(t("ui.skillToggleFailed",{reason:e.message}))}finally{this.setState(prev=>{const next=new Set(prev._skillsModal.toggling);return next.delete(key),{_skillsModal:{...prev._skillsModal,toggling:next}}})}}),this.state={countdownText:"",promptModalVisible:!1,promptData:[],promptViewMode:"original",settingsDrawerVisible:!1,globalSettingsVisible:!1,projectStatsVisible:!1,projectStats:null,projectStatsLoading:!1,localUrl:"",pluginModalVisible:!1,processModalVisible:!1,logoDropdownOpen:!1,electronMenuOpen:!1,electronMenuBar:null,cacheHighlightIdx:null,cacheHighlightFading:!1,calibrationModel:readCalibrationModel(),proxyModalVisible:!1,messagingModalVisible:!1,messagingInitialTool:null,imRecordVisible:!1,imRecordPlatform:null,logDirDraft:null,qrPopoverOpen:!1,electronQrOpen:!1,_skillsModal:{open:!1,loading:!1,skills:[],error:null,toggling:new Set},_fsSkills:null,_memory:null,_memoryRefreshing:!1,_memoryDetail:null,_claudeMd:null,_claudeMdDetail:null,authState:makeAuthState(),_authPasswordDraft:null,_authSaving:!1,_authScope:null,pinnedKeys:parsePinned("undefined"!=typeof localStorage?localStorage.getItem("ccv_pinnedMenuKeys"):null)},this._countdownTimer=null,this._expiredTimer=null,this._fsSkillsSeq=0,this._memorySeq=0,this._memoryDetailSeq=0,this._claudeMdSeq=0,this._claudeMdDetailSeq=0,this.updateCountdown=this.updateCountdown.bind(this)}_isElectronTab(){return"undefined"!=typeof window&&!(!window.tabBridge||!window.tabBridge.setHeaderModel)}_getMenuDescriptors(){const{viewMode:viewMode,onImportLocalLogs:onImportLocalLogs,isLocalLog:isLocalLog}=this.props;return[{key:"import-local",icon:jsxRuntimeExports.jsx(RefIcon$3,{}),label:t("ui.importLocalLogs"),onClick:onImportLocalLogs},{key:"export-prompts",icon:jsxRuntimeExports.jsx(RefIcon$4,{}),label:t("ui.exportPrompts"),onClick:this.handleShowPrompts},{key:"plugin-management",icon:jsxRuntimeExports.jsx(RefIcon$h,{}),label:t("ui.pluginManagement"),onClick:this.handleShowPlugins},{key:"process-management",icon:jsxRuntimeExports.jsx(RefIcon$i,{}),label:t("ui.processManagement"),onClick:this.handleShowProcesses},...isLocalLog?[]:[{key:"messaging",icon:jsxRuntimeExports.jsx(RefIcon$2,{}),label:t("ui.messaging.menu"),onClick:()=>this.setState({messagingModalVisible:!0,messagingInitialTool:null})}],{key:"proxy-switch",icon:jsxRuntimeExports.jsx(RefIcon$j,{}),label:t("ui.proxySwitch"),onClick:()=>this.setState({proxyModalVisible:!0}),dividerAfter:!0},{key:"project-stats",icon:jsxRuntimeExports.jsx(RefIcon$6,{}),label:t("ui.projectStats"),onClick:this.handleShowProjectStats},..."raw"===viewMode?[{key:"global-settings",icon:jsxRuntimeExports.jsx(RefIcon$f,{}),label:t("ui.globalSettings"),onClick:()=>this.setState({globalSettingsVisible:!0})}]:[],..."chat"===viewMode?[{key:"display-settings",icon:jsxRuntimeExports.jsx(RefIcon$f,{}),label:t("ui.settings"),onClick:()=>this.setState({settingsDrawerVisible:!0})}]:[]]}getMenuItems(){const pinned=new Set(this.state.pinnedKeys),items=[];for(const d of this._getMenuDescriptors()){const isPinned=pinned.has(d.key),pinTitle=t(isPinned?"ui.menuUnpin":"ui.menuPin");items.push({key:d.key,icon:d.icon,onClick:d.onClick,label:jsxRuntimeExports.jsxs("span",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},children:[jsxRuntimeExports.jsx("span",{children:d.label}),jsxRuntimeExports.jsx("span",{"data-pin-trigger":!0,"data-pinned":isPinned?"true":"false",role:"button",tabIndex:0,"aria-label":pinTitle,title:pinTitle,style:{display:"inline-flex",alignItems:"center"},onClick:e=>{e.stopPropagation(),this.togglePin(d.key)},children:isPinned?jsxRuntimeExports.jsx(RefIcon$1,{}):jsxRuntimeExports.jsx(RefIcon,{})})]})}),d.dividerAfter&&items.push({type:"divider"})}return items}_buildApprovalInfo(){var _a,_b,_c,_d,_e,_f;const ag=this.props.approvalGlobal,adi=this.props.approvalDismissedIds,own=this.props.approvalOwnPending||{ask:0,ptyPlan:0};if(!ag||!this.props.onApprovalReopen)return null;let dismissedActive=0;null!=(null==(_b=null==(_a=ag.ask)?void 0:_a.ask)?void 0:_b.id)&&adi instanceof Set&&adi.has(`ask:${ag.ask.ask.id}`)&&dismissedActive++,null!=(null==(_d=null==(_c=ag.ptyPlan)?void 0:_c.ptyPlan)?void 0:_d.id)&&adi instanceof Set&&adi.has(`ptyPlan:${ag.ptyPlan.ptyPlan.id}`)&&dismissedActive++;const total=dismissedActive+(!(null==(_e=ag.ask)?void 0:_e.ask)&&!(null==(_f=ag.ptyPlan)?void 0:_f.ptyPlan)?(own.ask||0)+(own.ptyPlan||0):0);if(0===total)return null;return{count:total,title:((k,p,f)=>{try{const r=t(k,p);return r&&r!==k?r:f}catch{return f}})(dismissedActive>0?"ui.approval.bell.reopen":"ui.approval.bell.orphan",null,dismissedActive>0?"Reopen approval modal":"Server has pending approvals")}}_buildHeaderModel(){const{viewMode:viewMode,themeColor:themeColor,terminalVisible:terminalVisible,cliMode:cliMode,isLocalLog:isLocalLog,activeProxyId:activeProxyId,proxyProfiles:proxyProfiles}=this.props;let proxy=null;if(activeProxyId&&"max"!==activeProxyId){const p=(proxyProfiles||[]).find(x=>x.id===activeProxyId);p&&(proxy={label:`${p.name}${p.activeModel?` · ${p.activeModel}`:""}`})}const showThemeBlock="chat"===viewMode&&cliMode&&!isLocalLog&&!!this.state.localUrl,im=IM_PLATFORMS.filter(p=>this._imStatus[p.id]&&this._imStatus[p.id].enabled).map(p=>{const nm=t(p.labelKey);return{id:p.id,connected:!!this._imStatus[p.id].connected,name:nm&&nm!==p.labelKey?nm:p.fallback||p.id}}),descByKey=new Map(this._getMenuDescriptors().map(d=>[d.key,d])),pins=this.state.pinnedKeys.map(k=>descByKey.get(k)).filter(Boolean).map(d=>({key:d.key,name:d.label})),cd=this.state.countdownText,countdown="raw"===viewMode&&cd?{text:`${t("ui.cacheCountdown",{type:this.props.cacheType?`(${this.props.cacheType})`:""})} ${cd}`}:null;return{menu:{title:t("ui.menu")},deviceMode:{toIpad:t("ui.deviceMode.toIpad"),toPc:t("ui.deviceMode.toPc")},proxy:proxy,approval:this._buildApprovalInfo(),theme:showThemeBlock?{mode:"light"===themeColor?"light":"dark",title:t("light"===themeColor?"ui.themeColor.light":"ui.themeColor.dark")}:null,terminal:cliMode&&"chat"===viewMode&&!isLocalLog?{active:!!terminalVisible,label:t("ui.terminal")}:null,viewMode:{mode:viewMode,label:t("raw"===viewMode?"ui.chatMode":"ui.rawMode")},im:im,pins:pins,countdown:countdown,qr:showThemeBlock?{title:t("ui.scanToCoding")}:null}}_pushHeaderModel(){if(this._isElectronTab())try{const model=this._buildHeaderModel(),json=JSON.stringify(model);if(json===this._lastHeaderModelJson)return;this._lastHeaderModelJson=json,window.tabBridge.setHeaderModel(model)}catch{}}_setupHeaderBridge(){if(this._isElectronTab()){if(this._headerActionDispose){try{this._headerActionDispose()}catch{}this._headerActionDispose=null}try{this._headerActionDispose=window.tabBridge.onHeaderAction(payload=>this._handleHeaderAction(payload))}catch{}this._pushHeaderModel()}}_handleHeaderAction(payload){if(!payload||!payload.type)return;const{themeColor:themeColor,onThemeColorChange:onThemeColorChange,onToggleTerminal:onToggleTerminal,onToggleViewMode:onToggleViewMode,onApprovalReopen:onApprovalReopen}=this.props;switch(payload.type){case"menuOpen":this.setState(s=>({electronMenuOpen:!s.electronMenuOpen}));break;case"menuBarOpen":this.setState(s=>{const cur=s.electronMenuBar;return{electronMenuBar:cur&&cur.menuId===payload.menuId?null:{menuId:payload.menuId,x:payload.x||0,menus:payload.menus||cur&&cur.menus||[]}}},this._syncMenuBarState);break;case"theme":onThemeColorChange&&onThemeColorChange("light"===themeColor?"dark":"light");break;case"terminal":onToggleTerminal&&onToggleTerminal();break;case"viewMode":onToggleViewMode&&onToggleViewMode();break;case"approval":onApprovalReopen&&onApprovalReopen();break;case"proxy":this.setState({proxyModalVisible:!0});break;case"im":this.setState({imRecordVisible:!0,imRecordPlatform:payload.id});break;case"menuShortcut":{const d=this._getMenuDescriptors().find(x=>x.key===payload.key);d&&d.onClick&&d.onClick();break}case"qrOpen":this.setState(s=>({electronQrOpen:!s.electronQrOpen}))}}componentDidMount(){this.startCountdown(),fetch(apiUrl("/api/local-url")).then(r=>r.json()).then(data=>{data.url&&this.setState({localUrl:data.url})}).catch(()=>{}),fetch(apiUrl("/api/auth/state")).then(r=>{if(!r.ok)throw new Error("auth-state "+r.status);return r.json()}).then(data=>{this._applyAuthState(data)}).catch(()=>{this.setState({authState:makeAuthState({enabled:!0,global:{enabled:!0,password:null}})})}),this.context._claudeSettingsReady.then(data=>{data&&data.model&&this.setState({settingsModel:data.model})}),this.props.isLocalLog||this.reloadFsSkills(),this._setupHeaderBridge()}componentDidUpdate(prevProps){this._pushHeaderModel(),prevProps.cacheExpireAt!==this.props.cacheExpireAt&&this.startCountdown(),prevProps.projectName!==this.props.projectName&&(this._fsSkillsSeq++,this.setState({_fsSkills:null}),!this.props.isLocalLog&&this.props.projectName&&this.reloadFsSkills(),this._memorySeq++,this.setState({_memory:null,_memoryDetail:null,_memoryRefreshing:!1}),this._claudeMdSeq++,this._claudeMdDetailSeq++,this.setState({_claudeMd:null,_claudeMdDetail:null}))}_applyAuthState(data){this.setState({authState:makeAuthState({enabled:!!data.enabled,isAdmin:!!data.isAdmin,password:data.password??null,scope:"project"===data.scope?"project":"global",hasProjectOverride:!!data.hasProjectOverride,projectDir:data.projectDir||null,global:data.global&&"object"==typeof data.global?data.global:{enabled:!1,password:null}}),_authPasswordDraft:null})}shareUrl(){const{localUrl:localUrl,authState:authState}=this.state;if(!localUrl||!authState.enabled)return localUrl;const i=localUrl.indexOf("?");return-1===i?localUrl:localUrl.slice(0,i)}renderPasswordSection(){const{authState:authState,_authScope:_authScope,_authSaving:_authSaving}=this.state;if(!!!authState.projectDir)return authState.enabled?jsxRuntimeExports.jsxs("div",{className:styles$8_authSection,children:[jsxRuntimeExports.jsxs("div",{className:styles$8_authHeaderRow,children:[jsxRuntimeExports.jsx("span",{className:styles$8_authTitle,children:t("ui.auth.title")}),jsxRuntimeExports.jsx(Switch,{size:"small",checked:!0,loading:_authSaving,title:t("ui.auth.disable"),onChange:()=>this.postAuthConfig({scope:"global",enabled:!1})})]}),this.renderPasswordInput("global",{enabled:authState.enabled,password:authState.password})]}):jsxRuntimeExports.jsx("div",{className:styles$8_authSection,children:jsxRuntimeExports.jsx(Button,{size:"small",type:"primary",loading:_authSaving,onClick:()=>this.postAuthConfig({scope:"global",enabled:!0}),children:t("ui.auth.enableBtn")})});const protectedNow=authState.enabled,sourceTab=_authScope||authState.scope||"project",cfg="global"===sourceTab?authState.global||{enabled:!1,password:null}:{enabled:authState.enabled,password:authState.password};return jsxRuntimeExports.jsxs("div",{className:styles$8_authSection,children:[jsxRuntimeExports.jsxs("div",{className:styles$8_authHeaderRow,children:[jsxRuntimeExports.jsx("span",{className:styles$8_authTitle,children:t("ui.auth.title")}),jsxRuntimeExports.jsx(Switch,{size:"small",checked:protectedNow,loading:_authSaving,title:t(protectedNow?"ui.auth.disable":"ui.auth.enableBtn"),onChange:on=>{on?(this.setState({_authScope:"project"}),this.postAuthConfig({scope:"project",enabled:!0})):this.postAuthConfig({scope:"project",enabled:!1})}})]}),protectedNow&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Segmented,{size:"small",block:!0,value:sourceTab,onChange:v=>{this.setState({_authScope:v,_authPasswordDraft:null}),"global"===v?authState.global&&authState.global.enabled?this.postAuthConfig({clearOverride:!0}):this.postAuthConfig({scope:"global",enabled:!0},{thenClearOverride:!0}):this.postAuthConfig({scope:"project",enabled:!0})},options:[{label:t("ui.auth.scopeProject"),value:"project"},{label:t("ui.auth.scopeGlobal"),value:"global"}]}),this.renderPasswordInput(sourceTab,cfg)]})]})}renderPasswordInput(scope,cfg){const{_authPasswordDraft:_authPasswordDraft,_authSaving:_authSaving}=this.state,pw=(cfg.password??"").toUpperCase(),draft=null==_authPasswordDraft?pw:_authPasswordDraft,dirty=null!=_authPasswordDraft&&_authPasswordDraft!==pw;return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Input,{value:draft,className:styles$8_authPasswordInput,onChange:e=>this.setState({_authPasswordDraft:e.target.value.toUpperCase()}),onPressEnter:()=>dirty&&this.postAuthConfig({scope:scope,password:draft}),suffix:jsxRuntimeExports.jsx(RefIcon$k,{className:styles$8_qrcodeUrlCopy,title:t("ui.auth.copy"),onClick:()=>{navigator.clipboard.writeText(pw).then(()=>staticMethods.success(t("ui.auth.copied"))).catch(()=>{})}})}),dirty&&jsxRuntimeExports.jsx(Button,{size:"small",type:"primary",loading:_authSaving,className:styles$8_authSaveBtn,onClick:()=>this.postAuthConfig({scope:scope,password:draft}),children:t("ui.auth.save")}),""===draft&&jsxRuntimeExports.jsx("div",{className:styles$8_authEmptyWarn,children:t("ui.auth.emptyWarning")})]})}shouldComponentUpdate(nextProps,nextState){return nextProps.requests!==this.props.requests||nextProps.requestCount!==this.props.requestCount||nextProps.viewMode!==this.props.viewMode||nextProps.cacheExpireAt!==this.props.cacheExpireAt||nextProps.cacheType!==this.props.cacheType||nextProps.isLocalLog!==this.props.isLocalLog||nextProps.localLogFile!==this.props.localLogFile||nextProps.projectName!==this.props.projectName||nextProps.filterIrrelevant!==this.props.filterIrrelevant||nextProps.logDir!==this.props.logDir||nextProps.cliMode!==this.props.cliMode||nextProps.sdkMode!==this.props.sdkMode||nextProps.terminalVisible!==this.props.terminalVisible||nextProps.contextWindow!==this.props.contextWindow||nextProps.contextBarOptimistic!==this.props.contextBarOptimistic||nextProps.contextBarLocked!==this.props.contextBarLocked||nextProps.contextBarSlot!==this.props.contextBarSlot||nextProps.serverCachedContent!==this.props.serverCachedContent||nextProps.resumeAutoChoice!==this.props.resumeAutoChoice||nextProps.themeColor!==this.props.themeColor||nextProps.displayScale!==this.props.displayScale||nextProps.autoApproveSeconds!==this.props.autoApproveSeconds||nextProps.proxyProfiles!==this.props.proxyProfiles||nextProps.activeProxyId!==this.props.activeProxyId||nextProps.defaultConfig!==this.props.defaultConfig||nextProps.approvalPrefs!==this.props.approvalPrefs||nextProps.approvalGlobal!==this.props.approvalGlobal||nextProps.approvalDismissedIds!==this.props.approvalDismissedIds||nextProps.approvalOwnPending!==this.props.approvalOwnPending||nextState!==this.state}componentWillUnmount(){if(this._headerActionDispose){try{this._headerActionDispose()}catch{}this._headerActionDispose=null}this._countdownTimer&&clearTimeout(this._countdownTimer),this._expiredTimer&&clearTimeout(this._expiredTimer),this._cacheFadeClearTimer&&clearTimeout(this._cacheFadeClearTimer),this._cacheScrollSettleTimer&&clearTimeout(this._cacheScrollSettleTimer),this._cacheAutoFadeTimer&&clearTimeout(this._cacheAutoFadeTimer),this._cacheHighlightDelayTimer&&clearTimeout(this._cacheHighlightDelayTimer),this._cacheUnbindScrollFade(),this._fsSkillsSeq++,this._memorySeq++,this._memoryDetailSeq++,this._claudeMdSeq++,this._claudeMdDetailSeq++}startCountdown(){this._countdownTimer&&clearTimeout(this._countdownTimer),this._expiredTimer&&clearTimeout(this._expiredTimer),this.props.cacheExpireAt?this.updateCountdown():""!==this.state.countdownText&&this.setState({countdownText:""})}updateCountdown(){const{cacheExpireAt:cacheExpireAt}=this.props;if(!cacheExpireAt)return void(""!==this.state.countdownText&&this.setState({countdownText:""}));const now=Date.now(),remaining=Math.max(0,cacheExpireAt-now);if(remaining<=0){const expired=t("ui.cacheExpired");return this.state.countdownText!==expired&&this.setState({countdownText:expired}),void(this._expiredTimer=setTimeout(()=>{""!==this.state.countdownText&&this.setState({countdownText:""})},5e3))}const totalSec=Math.ceil(remaining/1e3);let text;if(totalSec>=60){const m=Math.floor(totalSec/60);text=t("ui.minuteSecond",{m:m,s:String(totalSec%60).padStart(2,"0")})}else text=t("ui.second",{s:totalSec});text!==this.state.countdownText&&this.setState({countdownText:text});const delay=1e3-now%1e3;this._countdownTimer=setTimeout(this.updateCountdown,delay)}static parseSegments(text){const segments=[],regex=/<([a-zA-Z_][\w-]*)(?:\s[^>]*)?>[\s\S]*?<\/\1>/g;let match,lastIndex=0;for(;null!==(match=regex.exec(text));){const before=text.slice(lastIndex,match.index).trim();before&&segments.push({type:"text",content:before});const tagName=match[1];if(lastIndex=match.index+match[0].length,_AppHeader.COMMAND_TAGS.has(tagName))continue;const innerRegex=new RegExp(`^<${tagName}(?:\\s[^>]*)?>([\\s\\S]*)<\\/${tagName}>$`),innerMatch=match[0].match(innerRegex),content2=innerMatch?innerMatch[1].trim():match[0].trim();segments.push({type:"system",content:content2,label:tagName})}const after=text.slice(lastIndex).trim();return after&&segments.push({type:"text",content:after}),segments}static extractUserTexts(messages){const userMsgs=[],fullTexts=[];let slashCmd=null;for(const msg of messages)if("user"===msg.role)if("string"==typeof msg.content){const text=parseImOrigin(msg.content).text.trim();if(!text)continue;if(!isSystemText(text)){if(/Implement the following plan:/i.test(text))continue;userMsgs.push(text),fullTexts.push(text)}}else if(Array.isArray(msg.content)){const{commands:commands,textBlocks:textBlocks}=classifyUserContent(msg.content);commands.length>0&&(slashCmd=commands[commands.length-1]);const userParts=[];for(const b of textBlocks)/Implement the following plan:/i.test((b.text||"").trim())||userParts.push(b.text.trim());const allParts=msg.content.filter(b=>{var _a;return"text"===b.type&&(null==(_a=b.text)?void 0:_a.trim())}).map(b=>b.text.trim());userParts.length>0&&(userMsgs.push(userParts.join("\n")),fullTexts.push(allParts.join("\n")))}return{userMsgs:userMsgs,fullTexts:fullTexts,slashCmd:slashCmd}}extractUserPrompts(){var _a;const{requests:requests=[]}=this.props,prompts=[],seen=new Set;let prevSlashCmd=null;const mainAgentRequests=requests.filter(r=>isMainAgent(r));for(let ri=0;ri<mainAgentRequests.length;ri++){const req=mainAgentRequests[ri],messages=(null==(_a=req.body)?void 0:_a.messages)||[],timestamp=req.timestamp||"",{userMsgs:userMsgs,fullTexts:fullTexts,slashCmd:slashCmd}=_AppHeader.extractUserTexts(messages);slashCmd&&"/compact"!==slashCmd&&slashCmd!==prevSlashCmd&&prompts.push({type:"prompt",segments:[{type:"text",content:slashCmd}],timestamp:timestamp}),prevSlashCmd=slashCmd;for(let i=0;i<userMsgs.length;i++){const key=userMsgs[i];if(seen.has(key))continue;seen.add(key);const raw=fullTexts[i]||key;prompts.push({type:"prompt",segments:_AppHeader.parseSegments(raw),timestamp:timestamp})}}return prompts}renderTokenStats(){const{requests:requests=[]}=this.props,{cacheHighlightIdx:cacheHighlightIdx,cacheHighlightFading:cacheHighlightFading}=this.state;if(this._tokenStatsCache&&this._tokenStatsCacheReq===requests&&this._tokenStatsCacheHl===cacheHighlightIdx&&this._tokenStatsCacheFade===cacheHighlightFading)return this._tokenStatsCache;const byModel=computeTokenStats(requests),models=Object.keys(byModel),toolStats=computeToolUsageStats(requests),skillStats=computeSkillUsageStats(requests);if(0===models.length&&0===toolStats.length)return jsxRuntimeExports.jsx("div",{className:styles$8_tokenStatsEmpty,children:"暂无 token 数据"});const tokenColumn=jsxRuntimeExports.jsx("div",{className:styles$8_tokenStatsColumn,children:models.map(model=>{const s=byModel[model],totalInput=s.input+s.cacheCreation+s.cacheRead,cacheHitRate=totalInput>0?(s.cacheRead/totalInput*100).toFixed(1):"0.0";return jsxRuntimeExports.jsxs("div",{className:models.length>1?styles$8_modelCardSpaced:sharedChrome.modelCard,children:[jsxRuntimeExports.jsx("div",{className:sharedChrome.modelName,children:model}),jsxRuntimeExports.jsx("table",{className:sharedChrome.statsTable,children:jsxRuntimeExports.jsxs("tbody",{children:[jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Token"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"input"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"output"})]}),jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(totalInput)}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(s.output)})]}),jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Cache"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"create"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"read"})]}),jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(s.cacheCreation)}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(s.cacheRead)})]}),jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:t("ui.hitRate")}),jsxRuntimeExports.jsxs("td",{colSpan:2,className:sharedChrome.td,children:[cacheHitRate,"%"]})]})]})})]},model)})}),cacheRebuildColumn=this.renderCacheRebuildStats(),toolColumn=toolStats.length>0?jsxRuntimeExports.jsx("div",{className:styles$8_toolStatsColumn,children:jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelCard,children:[jsxRuntimeExports.jsx("div",{className:sharedChrome.modelName,children:t("ui.toolUsageStats")}),jsxRuntimeExports.jsxs("table",{className:sharedChrome.statsTable,children:[jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:`${sharedChrome.th} ${styles$8_thLeft}`,children:"Tool"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.count")})]})}),jsxRuntimeExports.jsxs("tbody",{children:[toolStats.map(([name,count])=>jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsxs("td",{className:sharedChrome.label,children:[name," ",jsxRuntimeExports.jsx(ConceptHelp,{doc:`Tool-${name}`})]}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:count})]},name)),toolStats.length>1&&jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rebuildTotalRow,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Total"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:toolStats.reduce((s,e)=>s+e[1],0)})]})]})]})]})}):null,skillColumn=skillStats.length>0?jsxRuntimeExports.jsx("div",{className:styles$8_toolStatsColumn,children:jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelCard,children:[jsxRuntimeExports.jsx("div",{className:sharedChrome.modelName,children:t("ui.skillUsageStats")}),jsxRuntimeExports.jsxs("table",{className:sharedChrome.statsTable,children:[jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:`${sharedChrome.th} ${styles$8_thLeft}`,children:"Skill"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.count")})]})}),jsxRuntimeExports.jsxs("tbody",{children:[skillStats.map(([name,count])=>jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:name}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:count})]},name)),skillStats.length>1&&jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rebuildTotalRow,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Total"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:skillStats.reduce((s,e)=>s+e[1],0)})]})]})]})]})}):null,result=jsxRuntimeExports.jsxs("div",{className:styles$8_tokenStatsContainer,children:[tokenColumn,cacheRebuildColumn,toolColumn,skillColumn]});return this._tokenStatsCache=result,this._tokenStatsCacheReq=requests,this._tokenStatsCacheHl=cacheHighlightIdx,this._tokenStatsCacheFade=cacheHighlightFading,result}_cacheUnbindScrollFade(){this._cacheOnScrollFade&&this._cacheScrollEl&&(this._cacheScrollEl.removeEventListener("scroll",this._cacheOnScrollFade),this._cacheOnScrollFade=null)}_cacheBindScrollFade(){this._cacheUnbindScrollFade();const el=this._cacheScrollEl;el&&(this._cacheOnScrollFade=()=>{clearTimeout(this._cacheAutoFadeTimer),this.setState({cacheHighlightFading:!0}),this._cacheFadeClearTimer=setTimeout(()=>{this.setState({cacheHighlightIdx:null,cacheHighlightFading:!1})},3e3),this._cacheUnbindScrollFade()},el.addEventListener("scroll",this._cacheOnScrollFade,{passive:!0}))}scrollToCacheMsg(idx){if("raw"===this.props.viewMode&&this.props.onNavigateCacheMsg&&this.props.onNavigateCacheMsg(idx),(this.state._cacheSectionCollapsed||{}).messages)return void this.setState(prev=>({_cacheSectionCollapsed:{...prev._cacheSectionCollapsed||{},messages:!1}}),()=>this.scrollToCacheMsg(idx));const el=this._cacheScrollEl;if(!el)return;const target=el.querySelector(`[data-msg-idx="${idx}"]`);if(!target)return;clearTimeout(this._cacheScrollSettleTimer),clearTimeout(this._cacheFadeClearTimer),clearTimeout(this._cacheAutoFadeTimer),clearTimeout(this._cacheHighlightDelayTimer),this._cacheUnbindScrollFade(),this._cacheScrollEndHandler&&el.removeEventListener("scrollend",this._cacheScrollEndHandler),this.setState({cacheHighlightIdx:null,cacheHighlightFading:!1});let scrollDone=!1,minPassed=!1;const showHighlight=()=>{scrollDone&&minPassed&&(this.setState({cacheHighlightIdx:idx,cacheHighlightFading:!1}),this._cacheScrollSettleTimer=setTimeout(()=>this._cacheBindScrollFade(),200),this._cacheAutoFadeTimer=setTimeout(()=>{this.state.cacheHighlightIdx!==idx||this.state.cacheHighlightFading||(this.setState({cacheHighlightFading:!0}),this._cacheFadeClearTimer=setTimeout(()=>{this.setState({cacheHighlightIdx:null,cacheHighlightFading:!1})},3e3),this._cacheUnbindScrollFade())},3e3))};this._cacheScrollEndHandler=()=>{el.removeEventListener("scrollend",this._cacheScrollEndHandler),scrollDone=!0,showHighlight()},el.addEventListener("scrollend",this._cacheScrollEndHandler,{once:!0}),this._cacheScrollSettleTimer=setTimeout(()=>{el.removeEventListener("scrollend",this._cacheScrollEndHandler),scrollDone=!0,showHighlight()},800),this._cacheHighlightDelayTimer=setTimeout(()=>{minPassed=!0,showHighlight()},500),target.scrollIntoView({behavior:"smooth",block:"center"})}renderCacheRebuildStats(){const{requests:requests=[]}=this.props,stats=computeCacheRebuildStats(requests),i18nMap={ttl:"cacheLoss.ttl",system_change:"cacheLoss.systemChange",tools_change:"cacheLoss.toolsChange",model_change:"cacheLoss.modelChange",msg_truncated:"cacheLoss.msgTruncated",msg_modified:"cacheLoss.msgModified",key_change:"cacheLoss.keyChange"},activeReasons=["ttl","system_change","tools_change","model_change","msg_truncated","msg_modified","key_change"].filter(k=>stats[k].count>0),totalCount=activeReasons.reduce((sum,k)=>sum+stats[k].count,0),totalCache=activeReasons.reduce((sum,k)=>sum+stats[k].cacheCreate,0);resolveTeammateNames(requests);const subAgentCounts={},teammateCounts={};for(let i=0;i<requests.length;i++){const cls=classifyRequest(requests[i],requests[i+1]);if("SubAgent"===cls.type){const label2=cls.subType||"Other";subAgentCounts[label2]=(subAgentCounts[label2]||0)+1}else if("Teammate"===cls.type){const label2=cls.subType||"Teammate";teammateCounts[label2]=(teammateCounts[label2]||0)+1}}const subAgentEntries=Object.entries(subAgentCounts).sort((a,b)=>b[1]-a[1]),teammateEntries=Object.entries(teammateCounts).sort((a,b)=>b[1]-a[1]),hasCacheStats=activeReasons.length>0,hasSubAgentStats=subAgentEntries.length>0,hasTeammateStats=teammateEntries.length>0;return hasCacheStats||hasSubAgentStats||hasTeammateStats?jsxRuntimeExports.jsxs("div",{className:styles$8_toolStatsColumn,children:[hasCacheStats&&jsxRuntimeExports.jsxs("div",{className:hasSubAgentStats||hasTeammateStats?styles$8_modelCardSpaced:sharedChrome.modelCard,children:[jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelName,children:["MainAgent",jsxRuntimeExports.jsx(ConceptHelp,{doc:"MainAgent"})," ",t("ui.cacheRebuildStats"),jsxRuntimeExports.jsx(ConceptHelp,{doc:"CacheRebuild"})]}),jsxRuntimeExports.jsxs("table",{className:sharedChrome.statsTable,children:[jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:`${sharedChrome.th} ${styles$8_thLeft}`,children:t("ui.cacheRebuild.reason")}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.count")}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.cacheCreate")})]})}),jsxRuntimeExports.jsxs("tbody",{children:[activeReasons.map(k=>jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:t(`ui.${i18nMap[k]}`)}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:stats[k].count}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(stats[k].cacheCreate)})]},k)),activeReasons.length>1&&jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rebuildTotalRow,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Total"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:totalCount}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(totalCache)})]})]})]})]}),hasSubAgentStats&&jsxRuntimeExports.jsxs("div",{className:hasTeammateStats?styles$8_modelCardSpaced:sharedChrome.modelCard,children:[jsxRuntimeExports.jsx("div",{className:sharedChrome.modelName,children:t("ui.subAgentStats")}),jsxRuntimeExports.jsxs("table",{className:sharedChrome.statsTable,children:[jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:`${sharedChrome.th} ${styles$8_thLeft}`,children:"SubAgent"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.count")})]})}),jsxRuntimeExports.jsxs("tbody",{children:[subAgentEntries.map(([name,count])=>jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsxs("td",{className:sharedChrome.label,children:[name," ",jsxRuntimeExports.jsx(ConceptHelp,{doc:`SubAgent-${name}`})]}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:count})]},name)),subAgentEntries.length>1&&jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rebuildTotalRow,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Total"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:subAgentEntries.reduce((s,e)=>s+e[1],0)})]})]})]})]}),hasTeammateStats&&jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelCard,children:[jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelName,children:["Teammate",jsxRuntimeExports.jsx(ConceptHelp,{doc:"Teammate"})]}),jsxRuntimeExports.jsxs("table",{className:sharedChrome.statsTable,children:[jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:`${sharedChrome.th} ${styles$8_thLeft}`,children:"Name"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.count")})]})}),jsxRuntimeExports.jsxs("tbody",{children:[teammateEntries.map(([name,count])=>jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:name}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:count})]},name)),teammateEntries.length>1&&jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rebuildTotalRow,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Total"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:teammateEntries.reduce((s,e)=>s+e[1],0)})]})]})]})]})]}):null}renderTextPrompt(p){return jsxRuntimeExports.jsx("div",{className:styles$8_textPromptCard,children:p.segments.map((seg,j)=>"text"===seg.type?jsxRuntimeExports.jsx("pre",{className:styles$8_preText,children:seg.content},j):jsxRuntimeExports.jsx(Collapse,{size:"small",className:styles$8_systemCollapse,items:[{key:`sys-${j}`,label:jsxRuntimeExports.jsx("span",{className:styles$8_systemLabel,children:seg.label}),children:jsxRuntimeExports.jsx("pre",{className:styles$8_preSys,children:seg.content})}]},j))})}renderOriginalPrompt(p){const textSegments=p.segments.filter(seg=>"text"===seg.type);return 0===textSegments.length?null:jsxRuntimeExports.jsx("div",{className:styles$8_textPromptCard,children:textSegments.map((seg,j)=>jsxRuntimeExports.jsx("pre",{className:styles$8_preText,children:seg.content},j))})}buildTextModeContent(){const{promptData:promptData}=this.state,blocks=[];for(const p of promptData){const textParts=(p.segments||[]).filter(seg=>"text"===seg.type).map(seg=>seg.content);textParts.length>0&&blocks.push(textParts.join("\n"))}return blocks.join("\n\n\n")}renderProjectStatsContent(){const{projectStats:projectStats,projectStatsLoading:projectStatsLoading}=this.state;if(projectStatsLoading)return jsxRuntimeExports.jsx("div",{className:styles$8_projectStatsCenter,children:jsxRuntimeExports.jsx(Spin,{})});if(!projectStats)return jsxRuntimeExports.jsx("div",{className:styles$8_projectStatsEmpty,children:t("ui.projectStats.noData")});const{summary:summary,models:models,updatedAt:updatedAt}=projectStats;!models||Object.entries(models).sort((a,b)=>b[1]-a[1]);const modelTokens={};if(projectStats.files)for(const fStats of Object.values(projectStats.files))if(fStats.models)for(const[model,data]of Object.entries(fStats.models))modelTokens[model]||(modelTokens[model]={input:0,output:0,cacheRead:0,cacheCreation:0,count:0}),modelTokens[model].input+=data.input_tokens||0,modelTokens[model].output+=data.output_tokens||0,modelTokens[model].cacheRead+=data.cache_read_input_tokens||0,modelTokens[model].cacheCreation+=data.cache_creation_input_tokens||0,modelTokens[model].count+=data.count||0;const modelTokenEntries=Object.entries(modelTokens).sort((a,b)=>b[1].count-a[1].count);return jsxRuntimeExports.jsxs("div",{className:styles$8_projectStatsContent,children:[updatedAt&&jsxRuntimeExports.jsx("div",{className:styles$8_projectStatsUpdated,children:t("ui.projectStats.updatedAt",{time:new Date(updatedAt).toLocaleString()})}),jsxRuntimeExports.jsxs("div",{className:styles$8_projectStatsSummary,children:[jsxRuntimeExports.jsxs("div",{className:styles$8_projectStatCard,children:[jsxRuntimeExports.jsx("div",{className:styles$8_projectStatValue,children:(null==summary?void 0:summary.requestCount)??0}),jsxRuntimeExports.jsx("div",{className:styles$8_projectStatLabel,children:t("ui.projectStats.totalRequests")})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_projectStatCard,children:[jsxRuntimeExports.jsx("div",{className:styles$8_projectStatValue,children:(null==summary?void 0:summary.turnCount)??(null==summary?void 0:summary.sessionCount)??0}),jsxRuntimeExports.jsx("div",{className:styles$8_projectStatLabel,children:t("ui.projectStats.turnCount")})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_projectStatCard,children:[jsxRuntimeExports.jsx("div",{className:styles$8_projectStatValue,children:(null==summary?void 0:summary.fileCount)??0}),jsxRuntimeExports.jsx("div",{className:styles$8_projectStatLabel,children:t("ui.projectStats.totalFiles")})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_projectStatCard,children:[jsxRuntimeExports.jsx("div",{className:styles$8_projectStatValue,children:formatTokenCount(null==summary?void 0:summary.input_tokens)}),jsxRuntimeExports.jsx("div",{className:styles$8_projectStatLabel,children:"Input Tokens"})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_projectStatCard,children:[jsxRuntimeExports.jsx("div",{className:styles$8_projectStatValue,children:formatTokenCount(null==summary?void 0:summary.output_tokens)}),jsxRuntimeExports.jsx("div",{className:styles$8_projectStatLabel,children:"Output Tokens"})]})]}),modelTokenEntries.length>0&&jsxRuntimeExports.jsxs("div",{className:styles$8_projectStatsSection,children:[jsxRuntimeExports.jsx("div",{className:styles$8_projectStatsSectionTitle,children:t("ui.projectStats.modelUsage")}),modelTokenEntries.map(([model,data])=>{const totalInput=data.input+data.cacheRead+data.cacheCreation,cacheHitRate=totalInput>0?(data.cacheRead/totalInput*100).toFixed(1):"0.0";return jsxRuntimeExports.jsxs("div",{className:styles$8_projectStatsModelCard,children:[jsxRuntimeExports.jsxs("div",{className:styles$8_projectStatsModelHeader,children:[jsxRuntimeExports.jsx("span",{className:styles$8_projectStatsModelName,children:model}),jsxRuntimeExports.jsxs("span",{className:styles$8_projectStatsModelCount,children:[data.count," reqs"]})]}),jsxRuntimeExports.jsx("table",{className:sharedChrome.statsTable,children:jsxRuntimeExports.jsxs("tbody",{children:[jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Token"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"input"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"output"})]}),jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(totalInput)}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(data.output)})]}),jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Cache"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"create"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"read"})]}),jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(data.cacheCreation)}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(data.cacheRead)})]}),jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:t("ui.hitRate")}),jsxRuntimeExports.jsxs("td",{colSpan:2,className:sharedChrome.td,children:[cacheHitRate,"%"]})]})]})})]},model)})]})]})}renderContextBarPortal(){var _a,_b;const slot=this.props.contextBarSlot;if(!slot)return null;const{requests:requests=[],isLocalLog:isLocalLog,localLogFile:localLogFile,projectName:projectName,contextWindow:contextWindow,contextBarOptimistic:contextBarOptimistic,contextBarLocked:contextBarLocked,serverCachedContent:serverCachedContent,claudeProjectModel:claudeProjectModel}=this.props;let contextPercent=0,lastMainAgent=null,lastTotalTokens=0,lastInputTokens=0;if(!isLocalLog&&requests.length>0)for(let i=requests.length-1;i>=0;i--)if(isMainAgent(requests[i])&&(null==(_b=null==(_a=requests[i].response)?void 0:_a.body)?void 0:_b.usage)){lastMainAgent=requests[i];const u=lastMainAgent.response.body.usage;lastTotalTokens=sumUsageContextTokens(u),lastInputTokens=sumUsageInputTokens(u);break}let calibrationTokens=resolveCalibrationTokens(this.state.calibrationModel,lastMainAgent,claudeProjectModel);if("200k"!==this.state.calibrationModel){const usedContextTokens=lastInputTokens>0?lastInputTokens:(null==contextWindow?void 0:contextWindow.total_input_tokens)||0;calibrationTokens=adaptContextWindow(calibrationTokens,usedContextTokens)}if(!isLocalLog)if(null!=(null==contextWindow?void 0:contextWindow.used_percentage))if(lastTotalTokens>0)contextPercent=Math.min(100,Math.max(0,Math.round(lastTotalTokens/calibrationTokens*100)));else{const origMax=contextWindow.context_window_size||2e5;contextPercent=Math.min(100,Math.max(0,Math.round(contextWindow.used_percentage*origMax/calibrationTokens)))}else lastMainAgent&&lastTotalTokens>0&&(contextPercent=Math.min(100,Math.max(0,Math.round(lastTotalTokens/calibrationTokens*100))));contextBarLocked?(this._lastContextPercent=0,contextPercent=0):(contextPercent>0&&(this._lastContextPercent=contextPercent),0===contextPercent&&this._lastContextPercent>0&&(contextPercent=this._lastContextPercent),contextBarOptimistic&&(contextPercent=OPTIMISTIC_CLEAR_PERCENT));const ctxColor=contextPercent>=75?"var(--color-error-light)":contextPercent>=55?"var(--color-warning-light)":"var(--color-success)",contextTokens=contextBarLocked?0:lastTotalTokens;return reactDomExports.createPortal(jsxRuntimeExports.jsx(LiveTagPopover$1,{isLocalLog:isLocalLog,localLogFile:localLogFile,cachePopoverOpen:this.state._cachePopoverOpen,onOpenChange:this.handleCachePopoverOpenChange,requests:requests,serverCachedContent:serverCachedContent,contextPercent:contextPercent,contextTokens:contextTokens,ctxColor:ctxColor,onSkillImported:this.reloadFsSkills,fsSkills:this.state._fsSkills,memory:this.state._memory,memoryRefreshing:this.state._memoryRefreshing,claudeMd:this.state._claudeMd,calibrationModel:this.state.calibrationModel,onCalibrationModelChange:this.handleCalibrationModelChange,onOpenMemoryDetail:this.loadMemoryDetail,onOpenClaudeMd:this.loadClaudeMdDetail,onOpenSkillsModal:this.handleOpenSkillsModal,onRefreshMemory:this.handleRefreshMemory,projectName:projectName}),slot)}render(){const{requestCount:requestCount,requests:requests=[],viewMode:viewMode,cacheType:cacheType,onToggleViewMode:onToggleViewMode,onImportLocalLogs:onImportLocalLogs,onLangChange:onLangChange,isLocalLog:isLocalLog,localLogFile:localLogFile,projectName:projectName,filterIrrelevant:filterIrrelevant,onFilterIrrelevantChange:onFilterIrrelevantChange,logDir:logDir,onLogDirChange:onLogDirChange,cliMode:cliMode,terminalVisible:terminalVisible,onToggleTerminal:onToggleTerminal,onReturnToWorkspaces:onReturnToWorkspaces,contextWindow:contextWindow,contextBarOptimistic:contextBarOptimistic,serverCachedContent:serverCachedContent,resumeAutoChoice:resumeAutoChoice,onResumeAutoChoiceToggle:onResumeAutoChoiceToggle,onResumeAutoChoiceChange:onResumeAutoChoiceChange,themeColor:themeColor,onThemeColorChange:onThemeColorChange,displayScale:displayScale,onDisplayScaleChange:onDisplayScaleChange,autoApproveSeconds:autoApproveSeconds,onAutoApproveChange:onAutoApproveChange}=this.props,{countdownText:countdownText}=this.state,_prefs=this.context&&this.context.preferences||{},collapseToolResults=_prefs.collapseToolResults??!0,expandThinking=!!_prefs.expandThinking,expandDiff=!!_prefs.expandDiff,showFullToolContent=!!_prefs.showFullToolContent,onlyCurrentSession=!!_prefs.onlyCurrentSession,menuItems=this.getMenuItems(),isElectronTab=this._isElectronTab();return jsxRuntimeExports.jsxs("div",{className:styles$8_headerBar,children:[jsxRuntimeExports.jsxs(Space,{size:"middle",align:"center",children:[!isElectronTab&&jsxRuntimeExports.jsx(Dropdown,{menu:{items:menuItems,className:"logo-dropdown-menu"},trigger:["hover"],onOpenChange:open=>this.setState({logoDropdownOpen:open}),align:{offset:[-4,0]},children:jsxRuntimeExports.jsx("span",{className:`${styles$8_logoWrap}${this.state.logoDropdownOpen?` ${styles$8_logoWrapActive}`:""}`,children:jsxRuntimeExports.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:`${styles$8_logoImage}${this.state.logoDropdownOpen?` ${styles$8_logoImageActive}`:""}`,children:[jsxRuntimeExports.jsx("line",{x1:"3",y1:"6",x2:"21",y2:"6"}),jsxRuntimeExports.jsx("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),jsxRuntimeExports.jsx("line",{x1:"3",y1:"18",x2:"21",y2:"18"})]})})}),isElectronTab&&jsxRuntimeExports.jsx(Dropdown,{menu:{items:menuItems,className:"logo-dropdown-menu"},open:!!this.state.electronMenuOpen,onOpenChange:open=>this.setState({electronMenuOpen:open}),trigger:["click"],placement:"bottomLeft",getPopupContainer:()=>document.body,children:jsxRuntimeExports.jsx("span",{"aria-hidden":"true",style:{position:"fixed",top:4,left:74,width:1,height:1,pointerEvents:"none"}})}),isElectronTab&&this.state.electronMenuBar&&(()=>{const mb=this.state.electronMenuBar,menu=(mb.menus||[]).find(m=>m.id===mb.menuId);if(!menu)return null;let zoom=1;try{const n=Number(localStorage.getItem("ccv_displayScale"));Number.isFinite(n)&&n>=50&&n<=200&&(zoom=n/100)}catch{}const items=(menu.items||[]).map((it,i)=>"separator"===it.type?{type:"divider",key:`sep-${i}`}:{key:it.id,label:jsxRuntimeExports.jsxs("span",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:24},children:[jsxRuntimeExports.jsx("span",{children:it.label}),it.accel?jsxRuntimeExports.jsx("span",{style:{opacity:.55,fontSize:12},children:it.accel}):null]})});return jsxRuntimeExports.jsx(Dropdown,{menu:{items:items,className:"logo-dropdown-menu",onClick:({key:key})=>{var _a,_b;try{null==(_b=null==(_a=window.tabBridge)?void 0:_a.menuCommand)||_b.call(_a,key)}catch{}this._closeMenuBar()}},open:!0,onOpenChange:open=>{open||this._closeMenuBar()},trigger:["click"],placement:"bottomLeft",getPopupContainer:()=>document.body,children:jsxRuntimeExports.jsx("span",{"aria-hidden":"true",style:{position:"fixed",top:4,left:Math.round((mb.x||0)/zoom),width:1,height:1,pointerEvents:"none"}})})})(),!isElectronTab&&(()=>{const descByKey=new Map(this._getMenuDescriptors().map(d=>[d.key,d])),pins=this.state.pinnedKeys.map(k=>descByKey.get(k)).filter(Boolean);return 0===pins.length?null:pins.map(d=>jsxRuntimeExports.jsx(Tooltip,{title:d.label,children:jsxRuntimeExports.jsx("span",{role:"button",tabIndex:0,"aria-label":d.label,className:styles$8_pinnedShortcut,onClick:d.onClick,children:d.icon})},d.key))})(),!isLocalLog&&IM_PLATFORMS.map(p=>jsxRuntimeExports.jsx(ImStatusChip,{descriptor:p,onStatus:this._onImStatus,onClick:()=>this.setState({imRecordVisible:!0,imRecordPlatform:p.id})},p.id)),isElectronTab&&jsxRuntimeExports.jsx(Popover,{content:jsxRuntimeExports.jsxs("div",{className:styles$8_qrcodePopover,onClick:e=>e.stopPropagation(),children:[jsxRuntimeExports.jsxs("div",{className:styles$8_qrcodeTitle,children:[t("ui.scanToCoding")," ",jsxRuntimeExports.jsx(ConceptHelp,{doc:"QRCode"})]}),jsxRuntimeExports.jsx(QRCodeCanvas,{value:this.shareUrl(),size:200,bgColor:"light"===themeColor?"#ffffff":"#141414",fgColor:"light"===themeColor?"#1a1a1a":"#d9d9d9",level:"M"}),jsxRuntimeExports.jsx(Input,{readOnly:!0,value:this.shareUrl(),className:styles$8_qrcodeUrlInput,suffix:jsxRuntimeExports.jsx(RefIcon$k,{className:styles$8_qrcodeUrlCopy,onClick:()=>{navigator.clipboard.writeText(this.shareUrl()).then(()=>{staticMethods.success(t("ui.copied"))}).catch(()=>{})}})}),this.state.authState.isAdmin&&this.renderPasswordSection()]}),trigger:[],open:!!this.state.electronQrOpen,onOpenChange:o=>this.setState({electronQrOpen:o}),placement:"bottomRight",getPopupContainer:()=>document.body,overlayInnerStyle:{background:"var(--bg-elevated)",border:"1px solid var(--border-hover)",borderRadius:8,padding:"8px 8px"},children:jsxRuntimeExports.jsx("span",{"aria-hidden":"true",style:{position:"fixed",top:4,right:90,width:1,height:1,pointerEvents:"none"}})}),!isElectronTab&&this.props.activeProxyId&&"max"!==this.props.activeProxyId&&(()=>{const p=(this.props.proxyProfiles||[]).find(x=>x.id===this.props.activeProxyId);return p?jsxRuntimeExports.jsxs(Tag,{className:styles$8_proxyProfileTag,onClick:()=>this.setState({proxyModalVisible:!0}),children:[jsxRuntimeExports.jsx(RefIcon$j,{className:styles$8_proxySwapIcon}),p.name,p.activeModel?` · ${p.activeModel}`:""]}):null})(),jsxRuntimeExports.jsx(HeaderProjectLabel,{projectName:projectName,isLocalLog:isLocalLog}),this.renderContextBarPortal()]}),jsxRuntimeExports.jsxs(Space,{size:12,align:"center",className:styles$8_headerRightRow,children:[(()=>{if(isElectronTab)return null;const info=this._buildApprovalInfo();return info?jsxRuntimeExports.jsxs("button",{type:"button",className:styles$8_approvalBell,"aria-label":info.title,title:info.title,onClick:()=>this.props.onApprovalReopen&&this.props.onApprovalReopen(),children:[jsxRuntimeExports.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:[jsxRuntimeExports.jsx("path",{d:"M12 2a6 6 0 0 0-6 6v3.5L4.5 14a1 1 0 0 0 .8 1.6h13.4a1 1 0 0 0 .8-1.6L18 11.5V8a6 6 0 0 0-6-6z",stroke:"currentColor",strokeWidth:"1.6",strokeLinejoin:"round",fill:"none"}),jsxRuntimeExports.jsx("path",{d:"M10 18a2 2 0 0 0 4 0",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",fill:"none"})]}),info.count>0&&jsxRuntimeExports.jsx("span",{className:styles$8_approvalBellBadge,children:info.count})]}):null})(),countdownText&&"raw"===viewMode&&jsxRuntimeExports.jsxs(Tag,{className:styles$8_headerCountdownTag,style:{color:countdownText===t("ui.cacheExpired")?"var(--color-error-light)":"var(--text-secondary)"},children:[t("ui.cacheCountdown",{type:cacheType?`(${cacheType})`:""}),jsxRuntimeExports.jsx("strong",{className:styles$8_countdownStrong,children:countdownText})]}),!isElectronTab&&"chat"===viewMode&&cliMode&&!isLocalLog&&this.state.localUrl&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Popover,{content:jsxRuntimeExports.jsxs("div",{className:styles$8_qrcodePopover,onClick:e=>e.stopPropagation(),children:[jsxRuntimeExports.jsxs("div",{className:styles$8_qrcodeTitle,children:[t("ui.scanToCoding")," ",jsxRuntimeExports.jsx(ConceptHelp,{doc:"QRCode"})]}),jsxRuntimeExports.jsx(QRCodeCanvas,{value:this.shareUrl(),size:200,bgColor:"light"===themeColor?"#ffffff":"#141414",fgColor:"light"===themeColor?"#1a1a1a":"#d9d9d9",level:"M"}),jsxRuntimeExports.jsx(Input,{readOnly:!0,value:this.shareUrl(),className:styles$8_qrcodeUrlInput,suffix:jsxRuntimeExports.jsx(RefIcon$k,{className:styles$8_qrcodeUrlCopy,onClick:()=>{navigator.clipboard.writeText(this.shareUrl()).then(()=>{staticMethods.success(t("ui.copied"))}).catch(()=>{})}})}),this.state.authState.isAdmin&&this.renderPasswordSection()]}),trigger:["click"],open:this.state.qrPopoverOpen,onOpenChange:o=>this.setState({qrPopoverOpen:o}),placement:"bottomRight",overlayInnerStyle:{background:"var(--bg-elevated)",border:"1px solid var(--border-hover)",borderRadius:8,padding:"8px 8px"},children:jsxRuntimeExports.jsx("button",{type:"button",className:styles$8_qrcodeIcon,"aria-label":t("ui.scanToCoding"),children:jsxRuntimeExports.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:jsxRuntimeExports.jsx("path",{fillRule:"evenodd",d:"M0 0h10v10H0zM2 2v6h6V2zM3 3h4v4H3zM14 0h10v10H14zM16 2v6h6V2zM17 3h4v4H17zM0 14h10v10H0zM2 16v6h6v-6zM3 17h4v4H3zM14 14h3v3h-3zM20 14h3v3h-3zM17 17h3v3h-3zM14 20h3v3h-3zM20 20h3v3h-3z"})})})}),!isElectronTab&&jsxRuntimeExports.jsx("button",{type:"button",className:styles$8_themeToggle,title:t("light"===themeColor?"ui.themeColor.light":"ui.themeColor.dark"),"aria-label":t("light"===themeColor?"ui.themeColor.light":"ui.themeColor.dark"),onClick:()=>onThemeColorChange&&onThemeColorChange("light"===themeColor?"dark":"light"),children:"light"===themeColor?jsxRuntimeExports.jsxs("svg",{className:styles$8_themeToggleIcon,width:"16",height:"16",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[jsxRuntimeExports.jsx("circle",{cx:"8",cy:"8",r:"2.8",fill:"currentColor"}),jsxRuntimeExports.jsxs("g",{stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",children:[jsxRuntimeExports.jsx("line",{x1:"8",y1:"1",x2:"8",y2:"2.6"}),jsxRuntimeExports.jsx("line",{x1:"8",y1:"13.4",x2:"8",y2:"15"}),jsxRuntimeExports.jsx("line",{x1:"1",y1:"8",x2:"2.6",y2:"8"}),jsxRuntimeExports.jsx("line",{x1:"13.4",y1:"8",x2:"15",y2:"8"}),jsxRuntimeExports.jsx("line",{x1:"2.95",y1:"2.95",x2:"4.1",y2:"4.1"}),jsxRuntimeExports.jsx("line",{x1:"11.9",y1:"11.9",x2:"13.05",y2:"13.05"}),jsxRuntimeExports.jsx("line",{x1:"2.95",y1:"13.05",x2:"4.1",y2:"11.9"}),jsxRuntimeExports.jsx("line",{x1:"11.9",y1:"4.1",x2:"13.05",y2:"2.95"})]})]}):jsxRuntimeExports.jsx("svg",{className:styles$8_themeToggleIcon,width:"16",height:"16",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:jsxRuntimeExports.jsx("path",{d:"M8.4 2.5a5.9 5.9 0 1 0 5.1 8.55A4.8 4.8 0 0 1 8.4 2.5Z",fill:"currentColor"})})})]}),!isElectronTab&&cliMode&&"chat"===viewMode&&!isLocalLog&&jsxRuntimeExports.jsx(Button,{className:styles$8_compactBtn,type:terminalVisible?"primary":"default",ghost:terminalVisible,icon:jsxRuntimeExports.jsx(RefIcon$5,{}),onClick:onToggleTerminal,children:t("ui.terminal")}),!isElectronTab&&jsxRuntimeExports.jsx(Button,{className:styles$8_compactBtn,type:"raw"===viewMode?"primary":"default",icon:"raw"===viewMode?jsxRuntimeExports.jsx(RefIcon$2,{}):jsxRuntimeExports.jsx(RefIcon$l,{}),onClick:onToggleViewMode,children:t("raw"===viewMode?"ui.chatMode":"ui.rawMode")})]}),jsxRuntimeExports.jsx(MemoryDetailModal,{detail:this.state._memoryDetail,onClose:()=>this.setState({_memoryDetail:null}),onOpenMemoryDetail:this.loadMemoryDetail}),jsxRuntimeExports.jsx(MemoryDetailModal,{detail:this.state._claudeMdDetail,onClose:()=>this.setState({_claudeMdDetail:null}),linkMode:"passthrough"}),jsxRuntimeExports.jsxs(Modal,{title:`${t("ui.userPrompt")} (${this.state.promptData.length}${t("ui.promptCountUnit")})`,open:this.state.promptModalVisible,onCancel:()=>this.setState({promptModalVisible:!1}),footer:null,width:700,children:[jsxRuntimeExports.jsx("div",{className:styles$8_promptExportBar,children:jsxRuntimeExports.jsx(Button,{icon:jsxRuntimeExports.jsx(RefIcon$m,{}),onClick:this.handleExportPromptsTxt,children:t("ui.exportPromptsTxt")})}),jsxRuntimeExports.jsx(Tabs,{activeKey:this.state.promptViewMode,onChange:key=>this.setState({promptViewMode:key}),size:"small",items:[{key:"original",label:t("ui.promptModeOriginal")},{key:"context",label:t("ui.promptModeContext")},{key:"text",label:t("ui.promptModeText")}]}),"text"===this.state.promptViewMode?jsxRuntimeExports.jsx("textarea",{readOnly:!0,className:styles$8_promptTextarea,value:this.buildTextModeContent()}):jsxRuntimeExports.jsxs("div",{className:styles$8_promptScrollArea,children:[0===this.state.promptData.length&&jsxRuntimeExports.jsx("div",{className:styles$8_promptEmpty,children:t("ui.noPrompt")}),this.state.promptData.map((p,i)=>{const ts=p.timestamp?new Date(p.timestamp).toLocaleString():t("ui.unknownTime");return jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:styles$8_promptTimestamp,children:[ts,":"]}),"original"===this.state.promptViewMode?this.renderOriginalPrompt(p):this.renderTextPrompt(p)]},i)})]})]}),jsxRuntimeExports.jsxs(Drawer,{title:t("ui.settings"),placement:"left",rootClassName:"ccvSideDrawer",width:420,open:this.state.settingsDrawerVisible,onClose:()=>this.setState({settingsDrawerVisible:!1}),children:[jsxRuntimeExports.jsxs("div",{className:styles$8_settingsGroupBox,children:[jsxRuntimeExports.jsx("div",{className:styles$8_settingsGroupTitle,children:t("ui.chatDisplay")}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsxs("span",{className:styles$8_settingsLabel,children:[t("ui.permission.autoApprove.setting"),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.permission.autoApprove.help"),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$8_settingsHelpIcon})})]}),jsxRuntimeExports.jsx(Select,{size:"small",value:autoApproveSeconds||0,onChange:value=>onAutoApproveChange&&onAutoApproveChange(value),options:autoApproveSelectOptions(PERM_AUTO_APPROVE_OPTIONS,t),style:{width:100}})]}),this.props.approvalPrefs&&this.props.onApprovalPrefsChange&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsxs("span",{className:styles$8_settingsLabel,children:[t("ui.approval.settings.planAutoApprove"),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.approval.settings.planAutoApproveHelp"),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$8_settingsHelpIcon})})]}),jsxRuntimeExports.jsx(Select,{size:"small",value:this.props.approvalPrefs.planAutoApproveSeconds||0,onChange:value=>this.props.onApprovalPrefsChange({planAutoApproveSeconds:value}),options:autoApproveSelectOptions(PLAN_AUTO_APPROVE_OPTIONS,t),style:{width:100}})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsxs("span",{className:styles$8_settingsLabel,children:[t("ui.approval.settings.modalEnabled"),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.approval.settings.modalEnabled.help"),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$8_settingsHelpIcon})})]}),jsxRuntimeExports.jsx(Switch,{checked:!1!==this.props.approvalPrefs.modalEnabled,onChange:checked=>this.props.onApprovalPrefsChange({modalEnabled:checked})})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsxs("span",{className:styles$8_settingsLabel,children:[t("ui.approval.settings.soundEnabled"),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.approval.settings.soundEnabled.help"),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$8_settingsHelpIcon})})]}),jsxRuntimeExports.jsx(Switch,{checked:!!this.props.approvalPrefs.soundEnabled,onChange:checked=>this.props.onApprovalSoundToggle&&this.props.onApprovalSoundToggle(checked)})]}),"undefined"!=typeof window&&window.tabBridge&&jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$8_settingsLabel,children:t("ui.approval.settings.notifyOnlyWhenHidden")}),jsxRuntimeExports.jsx(Switch,{checked:!1!==this.props.approvalPrefs.notifyOnlyWhenHidden,onChange:checked=>this.props.onApprovalPrefsChange({notifyOnlyWhenHidden:checked})})]}),this.props.approvalPrefs.soundEnabled&&this.props.onVoicePackChange&&jsxRuntimeExports.jsx(VoicePackSettings,{prefs:this.props.approvalPrefs.voicePack,onChange:this.props.onVoicePackChange,embedded:!0})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsxs("span",{className:styles$8_settingsLabel,children:[t("ui.expandThinking"),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.expandThinking.help"),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$8_settingsHelpIcon})})]}),jsxRuntimeExports.jsx(Switch,{checked:!!expandThinking,onChange:checked=>this.context.updatePreferences({expandThinking:checked})})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsxs("span",{className:styles$8_settingsLabel,children:[t("ui.showFullToolContent"),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.showFullToolContent.help"),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$8_settingsHelpIcon})})]}),jsxRuntimeExports.jsx(Switch,{checked:!!showFullToolContent,onChange:checked=>this.context.updatePreferences({showFullToolContent:checked})})]}),showFullToolContent&&jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$8_settingsLabel,children:t("ui.collapseToolResults")}),jsxRuntimeExports.jsx(Switch,{checked:!!collapseToolResults,onChange:checked=>this.context.updatePreferences({collapseToolResults:checked})})]}),!this.props.isLocalLog&&jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsxs("span",{className:styles$8_settingsLabel,children:[t("ui.onlyCurrentSession"),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.onlyCurrentSession.help"),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$8_settingsHelpIcon})})]}),jsxRuntimeExports.jsx(Switch,{checked:!!onlyCurrentSession,onChange:checked=>this.context.updatePreferences({onlyCurrentSession:checked})})]})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsGroupBox,children:[jsxRuntimeExports.jsx("div",{className:styles$8_settingsGroupTitle,children:t("ui.logSettings")}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$8_settingsLabel,children:t("ui.resumeAutoChoice")}),jsxRuntimeExports.jsx(Switch,{checked:!!resumeAutoChoice,onChange:checked=>onResumeAutoChoiceToggle&&onResumeAutoChoiceToggle(checked)})]}),resumeAutoChoice&&jsxRuntimeExports.jsx("div",{className:styles$8_settingsItem,children:jsxRuntimeExports.jsxs(Radio.Group,{value:resumeAutoChoice,onChange:e=>onResumeAutoChoiceChange&&onResumeAutoChoiceChange(e.target.value),size:"small",children:[jsxRuntimeExports.jsx(Radio,{value:"continue",children:t("ui.resumeAutoChoice.continue")}),jsxRuntimeExports.jsx(Radio,{value:"new",children:t("ui.resumeAutoChoice.new")})]})})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsGroupBox,children:[jsxRuntimeExports.jsx("div",{className:styles$8_settingsGroupTitle,children:t("ui.themeStyle")}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$8_settingsLabel,children:t("ui.themeColor")}),jsxRuntimeExports.jsx(Select,{size:"small",value:themeColor||"light",onChange:value=>onThemeColorChange&&onThemeColorChange(value),options:[{label:t("ui.themeColor.dark"),value:"dark"},{label:t("ui.themeColor.light"),value:"light"}],style:{width:140}})]}),jsxRuntimeExports.jsx("div",{className:styles$8_settingsItem,children:hasNativeZoom?jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Tooltip,{title:t("ui.displayScale.hint"),children:jsxRuntimeExports.jsx("span",{className:styles$8_settingsLabel,children:t("ui.displayScale")})}),jsxRuntimeExports.jsx(Select,{size:"small",value:displayScale||100,onChange:value=>onDisplayScaleChange&&onDisplayScaleChange(value),options:DISPLAY_SCALE_PRESETS.map(p=>({label:`${p}%`,value:p})),style:{width:140}})]}):jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("span",{className:styles$8_settingsLabel,children:t("ui.displayScale")}),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.displayScale.browserHint",{mod:isMac?"⌘":"Ctrl"}),children:jsxRuntimeExports.jsx(RefIcon$d,{className:styles$8_settingsHelpIcon})})]})}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$8_settingsLabel,children:t("ui.languageSettings")}),jsxRuntimeExports.jsx(Select,{size:"small",value:getLang(),onChange:value=>{setLang(value),onLangChange&&onLangChange()},options:LANG_OPTIONS.map(o=>({label:o.label,value:o.value})),style:{width:140}})]})]})]}),jsxRuntimeExports.jsxs(Drawer,{title:jsxRuntimeExports.jsxs("span",{children:[t("ui.globalSettings")," ",jsxRuntimeExports.jsx(ConceptHelp,{doc:"GlobalSettings"})]}),placement:"left",rootClassName:"ccvSideDrawer",width:400,open:this.state.globalSettingsVisible,onClose:()=>this.setState({globalSettingsVisible:!1}),children:[jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$8_settingsLabel,children:t("ui.filterIrrelevant")}),jsxRuntimeExports.jsx(Switch,{checked:!!filterIrrelevant,onChange:checked=>onFilterIrrelevantChange&&onFilterIrrelevantChange(checked)})]}),jsxRuntimeExports.jsxs("div",{className:styles$8_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$8_settingsLabel,children:t("ui.expandDiff")}),jsxRuntimeExports.jsx(Switch,{checked:!!expandDiff,onChange:checked=>this.context.updatePreferences({expandDiff:checked})})]}),jsxRuntimeExports.jsx("div",{className:styles$8_settingsDivider}),jsxRuntimeExports.jsx("div",{className:styles$8_settingsLabel,children:t("ui.logDirTitle")}),jsxRuntimeExports.jsx(Input,{className:styles$8_logDirInput,value:this.state.logDirDraft??logDir,onChange:e=>this.setState({logDirDraft:e.target.value}),onBlur:()=>{const val=this.state.logDirDraft;null!=val&&val!==logDir&&(null==onLogDirChange||onLogDirChange(val)),this.setState({logDirDraft:null})},onPressEnter:()=>{const val=this.state.logDirDraft;null!=val&&val!==logDir&&(null==onLogDirChange||onLogDirChange(val)),this.setState({logDirDraft:null})},placeholder:"~/.claude/cc-viewer"})]}),jsxRuntimeExports.jsx(Drawer,{title:jsxRuntimeExports.jsxs("span",{children:[jsxRuntimeExports.jsx(RefIcon$6,{className:sharedChrome.titleIcon}),t("ui.projectStats")]}),placement:"left",rootClassName:"ccvSideDrawer",width:400,open:this.state.projectStatsVisible,onClose:()=>this.setState({projectStatsVisible:!1}),children:this.renderProjectStatsContent()}),jsxRuntimeExports.jsx(PluginModal,{open:this.state.pluginModalVisible,onClose:()=>this.setState({pluginModalVisible:!1})}),jsxRuntimeExports.jsx(ProcessModal,{open:this.state.processModalVisible,onClose:()=>this.setState({processModalVisible:!1})}),jsxRuntimeExports.jsx(ProxyModal,{open:this.state.proxyModalVisible,onClose:()=>this.setState({proxyModalVisible:!1}),proxyProfiles:this.props.proxyProfiles,activeProxyId:this.props.activeProxyId,defaultConfig:this.props.defaultConfig,onProxyProfileChange:this.props.onProxyProfileChange}),jsxRuntimeExports.jsx(MessagingModal,{open:this.state.messagingModalVisible,initialTool:this.state.messagingInitialTool,onClose:()=>this.setState({messagingModalVisible:!1})}),jsxRuntimeExports.jsx(ImConversationModal,{open:this.state.imRecordVisible,platform:this.state.imRecordPlatform,onClose:()=>this.setState({imRecordVisible:!1}),onOpenConfig:platform=>this.setState({messagingModalVisible:!0,messagingInitialTool:platform})}),this.renderSkillsManagerModal()]})}renderSkillsManagerModal(){const modal=this.state._skillsModal||{};return jsxRuntimeExports.jsx(SkillsManagerModal,{open:modal.open||!1,loading:modal.loading||!1,error:modal.error||null,skills:modal.skills||[],toggling:modal.toggling,onToggle:s=>this.handleToggleSkill(s),onClose:()=>this.setState(prev=>({_skillsModal:{...prev._skillsModal,open:!1}}))})}};__publicField(_AppHeader,"contextType",SettingsContext),__publicField(_AppHeader,"COMMAND_TAGS",new Set(["command-name","command-message","command-args","local-command-caveat","local-command-stdout"]));let AppHeader=_AppHeader;const styles$7_centerEmpty="_centerEmpty_midza_1",styles$7_scrollContainer="_scrollContainer_midza_8",styles$7_listItem="_listItem_midza_15",styles$7_listItemActive="_listItemActive_midza_29",styles$7_itemContent="_itemContent_midza_46",styles$7_itemHeader="_itemHeader_midza_51",styles$7_tagNoMargin="_tagNoMargin_midza_59",styles$7_modelName="_modelName_midza_64",styles$7_modelNameMain="_modelNameMain_midza_69",styles$7_time="_time_midza_73",styles$7_detailRow="_detailRow_midza_79",styles$7_urlText="_urlText_midza_86",styles$7_duration="_duration_midza_95",styles$7_statusOk="_statusOk_midza_100",styles$7_statusErr="_statusErr_midza_106",styles$7_statusDefault="_statusDefault_midza_111",styles$7_usageBox="_usageBox_midza_116",styles$7_cacheDot="_cacheDot_midza_126",styles$7_cacheDotLoss="_cacheDotLoss_midza_135",styles$7_cacheDotNormal="_cacheDotNormal_midza_140",styles$7_tagMainAgent="_tagMainAgent_midza_144",styles$7_tagPlan="_tagPlan_midza_150",styles$7_tagMuted="_tagMuted_midza_156",styles$7_tooltipPreLine="_tooltipPreLine_midza_162";class RequestList extends React__default.Component{constructor(props){super(props),__publicField(this,"handleKeyDown",e=>{if("ArrowUp"!==e.key&&"ArrowDown"!==e.key)return;const{requests:requests,selectedIndex:selectedIndex,onSelect:onSelect}=this.props;if(!requests.length)return;e.preventDefault();const current=selectedIndex??0,next="ArrowUp"===e.key?Math.max(0,current-1):Math.min(requests.length-1,current+1);next!==current&&onSelect(next)}),this.activeItemRef=React__default.createRef()}componentDidMount(){this.scrollToSelected(!0)}shouldComponentUpdate(nextProps){return nextProps.requests!==this.props.requests||nextProps.selectedIndex!==this.props.selectedIndex||nextProps.scrollCenter!==this.props.scrollCenter||nextProps.cacheLossMap!==this.props.cacheLossMap}componentDidUpdate(prevProps){this.props.scrollCenter&&prevProps.selectedIndex!==this.props.selectedIndex?this.scrollToSelected(!0):prevProps.selectedIndex!==this.props.selectedIndex&&(this.scrollToSelected(!1),this.activeItemRef.current&&this.activeItemRef.current.focus({preventScroll:!0}))}scrollToSelected(center2){this.activeItemRef.current&&(this.activeItemRef.current.scrollIntoView({block:center2?"center":"nearest",behavior:"instant"}),center2&&this.props.onScrollDone&&this.props.onScrollDone())}render(){const{requests:requests,selectedIndex:selectedIndex,onSelect:onSelect}=this.props;return 0===requests.length?jsxRuntimeExports.jsx("div",{className:styles$7_centerEmpty,children:jsxRuntimeExports.jsx(Empty,{description:t("ui.waitingRequests")})}):jsxRuntimeExports.jsx("div",{className:styles$7_scrollContainer,onKeyDown:this.handleKeyDown,children:jsxRuntimeExports.jsx(List,{dataSource:requests,size:"small",split:!1,renderItem:(req,index)=>{var _a,_b,_c;const time2=new Date(req.timestamp).toLocaleTimeString("zh-CN"),isActive=index===selectedIndex,statusOk2=req.response&&req.response.status<400,statusErr2=req.response&&req.response.status>=400,model=getModelShort(null==(_a=req.body)?void 0:_a.model),nextReq=index+1<requests.length?requests[index+1]:null,{type:reqType,subType:subType}=classifyRequest(req,nextReq),usage=null==(_c=null==(_b=req.response)?void 0:_b.body)?void 0:_c.usage,inputTokens=usage?(usage.input_tokens||0)+(usage.cache_read_input_tokens||0)+(usage.cache_creation_input_tokens||0):null,outputTokens=(null==usage?void 0:usage.output_tokens)||null,cacheRead=(null==usage?void 0:usage.cache_read_input_tokens)||0,cacheCreate=(null==usage?void 0:usage.cache_creation_input_tokens)||0,displayUrl=req.proxyUrl||req.url;let urlShort=displayUrl;try{const u=new URL(displayUrl);urlShort=u.host+u.pathname}catch{}return jsxRuntimeExports.jsx(List.Item,{ref:isActive?this.activeItemRef:void 0,tabIndex:0,onClick:()=>onSelect(index),className:`${styles$7_listItem} ${isActive?styles$7_listItemActive:""}`,children:jsxRuntimeExports.jsxs("div",{className:styles$7_itemContent,children:[jsxRuntimeExports.jsxs("div",{className:styles$7_itemHeader,children:["MainAgent"===reqType?jsxRuntimeExports.jsx(Tag,{className:`${styles$7_tagNoMargin} ${styles$7_tagMainAgent}`,children:"MainAgent"}):"Plan"===reqType?jsxRuntimeExports.jsx(Tag,{className:`${styles$7_tagNoMargin} ${styles$7_tagPlan}`,children:formatRequestTag(reqType,subType)}):"Count"===reqType||"Preflight"===reqType||"Synthetic"===reqType?jsxRuntimeExports.jsx(Tag,{className:`${styles$7_tagNoMargin} ${styles$7_tagMuted}`,children:formatRequestTag(reqType,subType)}):jsxRuntimeExports.jsx(Tag,{className:styles$7_tagNoMargin,children:formatRequestTag(reqType,subType)}),model&&jsxRuntimeExports.jsx("span",{className:`${styles$7_modelName} ${"MainAgent"===reqType?styles$7_modelNameMain:""}`,children:model}),jsxRuntimeExports.jsx("span",{className:styles$7_time,children:time2})]}),jsxRuntimeExports.jsxs("div",{className:styles$7_detailRow,children:[jsxRuntimeExports.jsx("span",{className:styles$7_urlText,title:displayUrl,children:urlShort}),req.duration&&jsxRuntimeExports.jsxs("span",{className:styles$7_duration,children:[req.duration,"ms"]}),req.response&&jsxRuntimeExports.jsx("span",{className:statusOk2?styles$7_statusOk:statusErr2?styles$7_statusErr:styles$7_statusDefault,children:req.response.status})]}),usage&&jsxRuntimeExports.jsxs("div",{className:styles$7_usageBox,children:[jsxRuntimeExports.jsxs("div",{children:["token: output:",formatTokenCount(outputTokens)||0,", input: ",formatTokenCount(inputTokens)||0]}),(cacheRead>0||cacheCreate>0)&&jsxRuntimeExports.jsx("div",{children:(()=>{var _a2;const loss=null==(_a2=this.props.cacheLossMap)?void 0:_a2.get(index),reasonI18nMap={ttl:"ui.cacheLoss.ttl",system_change:"ui.cacheLoss.systemChange",tools_change:"ui.cacheLoss.toolsChange",model_change:"ui.cacheLoss.modelChange",msg_truncated:"ui.cacheLoss.msgTruncated",msg_modified:"ui.cacheLoss.msgModified",key_change:"ui.cacheLoss.keyChange"};let dot;if(loss){const tooltipText=(loss.reasons||[loss.reason]).map(r=>t(reasonI18nMap[r]||reasonI18nMap.key_change)).join("\n");dot=jsxRuntimeExports.jsx(Tooltip,{title:jsxRuntimeExports.jsx("span",{className:styles$7_tooltipPreLine,children:tooltipText}),children:jsxRuntimeExports.jsx("span",{className:`${styles$7_cacheDot} ${styles$7_cacheDotLoss}`})})}else dot=jsxRuntimeExports.jsx("span",{className:`${styles$7_cacheDot} ${styles$7_cacheDotNormal}`});return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:["cache",dot,": ",cacheRead>0?`read:${formatTokenCount(cacheRead)}`:"",cacheRead>0&&cacheCreate>0?", ":"",cacheCreate>0?`create:${formatTokenCount(cacheCreate)}`:""]})})()})]})]})})}})})}}const isDate=data=>!!data&&data instanceof Date,isObject=data=>"object"==typeof data&&null!==data,isFunction=data=>!!data&&data instanceof Object&&"function"==typeof data;function quoteString(value,quoted){return void 0===quoted&&(quoted=!1),!value||quoted?`"${value}"`:value}function ExpandableObject(_ref){let{field:field2,value:value,data:data,lastElement:lastElement,openBracket:openBracket,closeBracket:closeBracket,level:level,style:style,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,outerRef:outerRef,beforeExpandChange:beforeExpandChange}=_ref;const shouldExpandNodeCalledRef=reactExports.useRef(!1),[expanded,setExpanded]=reactExports.useState(()=>shouldExpandNode(level,value,field2)),expanderButtonRef=reactExports.useRef(null);reactExports.useEffect(()=>{shouldExpandNodeCalledRef.current?setExpanded(shouldExpandNode(level,value,field2)):shouldExpandNodeCalledRef.current=!0},[shouldExpandNode]);const contentsId=reactExports.useId();if(0===data.length)return function(_ref2){let{field:field2,openBracket:openBracket,closeBracket:closeBracket,lastElement:lastElement,style:style}=_ref2;return reactExports.createElement("div",{className:style.basicChildStyle,role:"treeitem","aria-selected":void 0},(field2||""===field2)&&reactExports.createElement("span",{className:style.label},quoteString(field2,style.quotesForFieldNames),":"),reactExports.createElement("span",{className:style.punctuation},openBracket),reactExports.createElement("span",{className:style.punctuation},closeBracket),!lastElement&&reactExports.createElement("span",{className:style.punctuation},","))}({field:field2,openBracket:openBracket,closeBracket:closeBracket,lastElement:lastElement,style:style});const expanderIconStyle=expanded?style.collapseIcon:style.expandIcon,ariaLabel=expanded?style.ariaLables.collapseJson:style.ariaLables.expandJson,childLevel=level+1,lastIndex=data.length-1,setExpandWithCallback=newExpandValue=>{expanded===newExpandValue||beforeExpandChange&&!beforeExpandChange({level:level,value:value,field:field2,newExpandValue:newExpandValue})||setExpanded(newExpandValue)},onKeyDown=e=>{if("ArrowRight"===e.key||"ArrowLeft"===e.key)e.preventDefault(),setExpandWithCallback("ArrowRight"===e.key);else if("ArrowUp"===e.key||"ArrowDown"===e.key){e.preventDefault();const direction="ArrowUp"===e.key?-1:1;if(!outerRef.current)return;const buttonElements=outerRef.current.querySelectorAll("[role=button]");let currentIndex=-1;for(let i=0;i<buttonElements.length;i++)if(0===buttonElements[i].tabIndex){currentIndex=i;break}if(currentIndex<0)return;const nextIndex=(currentIndex+direction+buttonElements.length)%buttonElements.length;buttonElements[currentIndex].tabIndex=-1,buttonElements[nextIndex].tabIndex=0,buttonElements[nextIndex].focus()}},onClick=()=>{var _outerRef$current;setExpandWithCallback(!expanded);const buttonElement=expanderButtonRef.current;if(!buttonElement)return;const prevButtonElement=null===(_outerRef$current=outerRef.current)||void 0===_outerRef$current?void 0:_outerRef$current.querySelector('[role=button][tabindex="0"]');prevButtonElement&&(prevButtonElement.tabIndex=-1),buttonElement.tabIndex=0,buttonElement.focus()};return reactExports.createElement("div",{className:style.basicChildStyle,role:"treeitem","aria-expanded":expanded,"aria-selected":void 0},reactExports.createElement("span",{className:expanderIconStyle,onClick:onClick,onKeyDown:onKeyDown,role:"button","aria-label":ariaLabel,"aria-expanded":expanded,"aria-controls":expanded?contentsId:void 0,ref:expanderButtonRef,tabIndex:0===level?0:-1}),(field2||""===field2)&&(clickToExpandNode?reactExports.createElement("span",{className:style.clickableLabel,onClick:onClick,onKeyDown:onKeyDown},quoteString(field2,style.quotesForFieldNames),":"):reactExports.createElement("span",{className:style.label},quoteString(field2,style.quotesForFieldNames),":")),reactExports.createElement("span",{className:style.punctuation},openBracket),expanded?reactExports.createElement("ul",{id:contentsId,role:"group",className:style.childFieldsContainer},data.map((dataElement,index)=>reactExports.createElement(DataRender,{key:dataElement[0]||index,field:dataElement[0],value:dataElement[1],style:style,lastElement:index===lastIndex,level:childLevel,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,beforeExpandChange:beforeExpandChange,outerRef:outerRef}))):reactExports.createElement("span",{className:style.collapsedContent,onClick:onClick,onKeyDown:onKeyDown}),reactExports.createElement("span",{className:style.punctuation},closeBracket),!lastElement&&reactExports.createElement("span",{className:style.punctuation},","))}function JsonObject(_ref3){let{field:field2,value:value,style:style,lastElement:lastElement,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,level:level,outerRef:outerRef,beforeExpandChange:beforeExpandChange}=_ref3;return ExpandableObject({field:field2,value:value,lastElement:lastElement||!1,level:level,openBracket:"{",closeBracket:"}",style:style,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,data:Object.keys(value).map(key=>[key,value[key]]),outerRef:outerRef,beforeExpandChange:beforeExpandChange})}function JsonArray(_ref4){let{field:field2,value:value,style:style,lastElement:lastElement,level:level,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,outerRef:outerRef,beforeExpandChange:beforeExpandChange}=_ref4;return ExpandableObject({field:field2,value:value,lastElement:lastElement||!1,level:level,openBracket:"[",closeBracket:"]",style:style,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,data:value.map(element=>[void 0,element]),outerRef:outerRef,beforeExpandChange:beforeExpandChange})}function JsonPrimitiveValue(_ref5){let stringValue,{field:field2,value:value,style:style,lastElement:lastElement}=_ref5,valueStyle=style.otherValue;var data;return null===value?(stringValue="null",valueStyle=style.nullValue):void 0===value?(stringValue="undefined",valueStyle=style.undefinedValue):"string"==typeof(data=value)||data instanceof String?(stringValue=function(value,quoted,stringify){return stringify?JSON.stringify(value):quoted?`"${value}"`:value}(value,!style.noQuotesForStringValues,style.stringifyStringValues),valueStyle=style.stringValue):(data=>"boolean"==typeof data||data instanceof Boolean)(value)?(stringValue=value?"true":"false",valueStyle=style.booleanValue):(data=>"number"==typeof data||data instanceof Number)(value)?(stringValue=value.toString(),valueStyle=style.numberValue):(data=>"bigint"==typeof data||data instanceof BigInt)(value)?(stringValue=`${value.toString()}n`,valueStyle=style.numberValue):stringValue=isDate(value)?value.toISOString():isFunction(value)?"function() { }":value.toString(),reactExports.createElement("div",{className:style.basicChildStyle,role:"treeitem","aria-selected":void 0},(field2||""===field2)&&reactExports.createElement("span",{className:style.label},quoteString(field2,style.quotesForFieldNames),":"),reactExports.createElement("span",{className:valueStyle},stringValue),!lastElement&&reactExports.createElement("span",{className:style.punctuation},","))}function DataRender(props){const value=props.value;return data=value,Array.isArray(data)?reactExports.createElement(JsonArray,Object.assign({},props)):!isObject(value)||isDate(value)||isFunction(value)?reactExports.createElement(JsonPrimitiveValue,Object.assign({},props)):reactExports.createElement(JsonObject,Object.assign({},props));var data}var styles$6_basic_element_style="_2bkNM",styles$6_child_fields_container="_1BXBN";const defaultAriaLables={collapseJson:"collapse JSON",expandJson:"expand JSON"},defaultStyles={container:"_2IvMF _GzYRV",basicChildStyle:styles$6_basic_element_style,childFieldsContainer:styles$6_child_fields_container,label:"_1MGIk",clickableLabel:"_2YKJg _1MGIk _1MFti",nullValue:"_2T6PJ",undefinedValue:"_1Gho6",stringValue:"_vGjyY",booleanValue:"_3zQKs",numberValue:"_1bQdo",otherValue:"_1xvuR",punctuation:"_3uHL6 _3eOF8",collapseIcon:"_oLqym _f10Tu _1MFti _1LId0",expandIcon:"_2AXVT _f10Tu _1MFti _1UmXx",collapsedContent:"_2KJWg _1pNG9 _1MFti",noQuotesForStringValues:!1,quotesForFieldNames:!1,ariaLables:defaultAriaLables,stringifyStringValues:!1},darkStyles={container:"_11RoI _GzYRV",basicChildStyle:styles$6_basic_element_style,childFieldsContainer:styles$6_child_fields_container,label:"_2bSDX",clickableLabel:"_1RQEj _2bSDX _1MFti",nullValue:"_LaAZe",undefinedValue:"_GTKgm",stringValue:"_Chy1W",booleanValue:"_2vRm-",numberValue:"_2bveF",otherValue:"_1prJR",punctuation:"_gsbQL _3eOF8",collapseIcon:"_3QHg2 _f10Tu _1MFti _1LId0",expandIcon:"_17H2C _f10Tu _1MFti _1UmXx",collapsedContent:"_3fDAz _1pNG9 _1MFti",noQuotesForStringValues:!1,quotesForFieldNames:!1,ariaLables:defaultAriaLables,stringifyStringValues:!1},allExpanded=()=>!0,JsonView=_ref=>{let{data:data,style:style=defaultStyles,shouldExpandNode:shouldExpandNode=allExpanded,clickToExpandNode:clickToExpandNode=!1,beforeExpandChange:beforeExpandChange,compactTopLevel:compactTopLevel,...ariaAttrs}=_ref;const outerRef=reactExports.useRef(null);return reactExports.createElement("div",Object.assign({"aria-label":"JSON view"},ariaAttrs,{className:style.container,ref:outerRef,role:"tree"}),compactTopLevel&&isObject(data)?Object.entries(data).map(_ref2=>{let[key,value]=_ref2;return reactExports.createElement(DataRender,{key:key,field:key,value:value,style:{...defaultStyles,...style},lastElement:!0,level:1,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,beforeExpandChange:beforeExpandChange,outerRef:outerRef})}):reactExports.createElement(DataRender,{value:data,style:{...defaultStyles,...style},lastElement:!0,level:0,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,outerRef:outerRef,beforeExpandChange:beforeExpandChange}))},styles$5_container="_container_qeuid_1";class JsonViewer extends React__default.Component{shouldComponentUpdate(nextProps){return nextProps.data!==this.props.data||nextProps.defaultExpand!==this.props.defaultExpand||nextProps.expandNode!==this.props.expandNode}render(){const{data:data,defaultExpand:defaultExpand,expandNode:expandNode}=this.props,customStyles={..."undefined"!=typeof document&&"light"!==document.documentElement.getAttribute("data-theme")?darkStyles:defaultStyles,container:"rjv-container"};if(null==data)return null;const shouldExpandNode="function"==typeof expandNode?expandNode:"all"===defaultExpand?()=>!0:"root"===defaultExpand?level=>level<2:level=>level<1;return jsxRuntimeExports.jsx("div",{className:styles$5_container,children:jsxRuntimeExports.jsx(JsonView,{data:data,shouldExpandNode:shouldExpandNode,style:customStyles})})}}const styles$4={root:"_root_tc1hs_1",sidebar:"_sidebar_tc1hs_9",section:"_section_tc1hs_18",sectionHeader:"_sectionHeader_tc1hs_22",arrow:"_arrow_tc1hs_48",sectionTitle:"_sectionTitle_tc1hs_54",sectionCount:"_sectionCount_tc1hs_62",sectionBody:"_sectionBody_tc1hs_71",historyToggle:"_historyToggle_tc1hs_76",historyToggleLabel:"_historyToggleLabel_tc1hs_102",item:"_item_tc1hs_107",itemActive:"_itemActive_tc1hs_135",itemContent:"_itemContent_tc1hs_142",itemLabel:"_itemLabel_tc1hs_148",itemSublabel:"_itemSublabel_tc1hs_156",itemTime:"_itemTime_tc1hs_165",contentWrap:"_contentWrap_tc1hs_176",content:"_content_tc1hs_174",contentEmpty:"_contentEmpty_tc1hs_192",contentInner:"_contentInner_tc1hs_199",emptyWrap:"_emptyWrap_tc1hs_203",roleHeader:"_roleHeader_tc1hs_211",roleBadge:"_roleBadge_tc1hs_219",role_user:"_role_user_tc1hs_228",role_assistant:"_role_assistant_tc1hs_234",roleLabel:"_roleLabel_tc1hs_240",contentTime:"_contentTime_tc1hs_247",turnDivider:"_turnDivider_tc1hs_255",textBlock:"_textBlock_tc1hs_262",textBlockBar:"_textBlockBar_tc1hs_269",textBlockBody:"_textBlockBody_tc1hs_278",textBlockCompact:"_textBlockCompact_tc1hs_286",textBlockCompactFloat:"_textBlockCompactFloat_tc1hs_293",thinkingBlock:"_thinkingBlock_tc1hs_300",thinkingHeader:"_thinkingHeader_tc1hs_308",thinkingPreview:"_thinkingPreview_tc1hs_323",thinkingBody:"_thinkingBody_tc1hs_333",toolBlock:"_toolBlock_tc1hs_339",toolBlockResult:"_toolBlockResult_tc1hs_346",toolBlockError:"_toolBlockError_tc1hs_350",toolBlockHeader:"_toolBlockHeader_tc1hs_354",toolBlockBody:"_toolBlockBody_tc1hs_365",toolName:"_toolName_tc1hs_370",toolId:"_toolId_tc1hs_376",errorLabel:"_errorLabel_tc1hs_383",blockTag:"_blockTag_tc1hs_393",blockTagText:"_blockTagText_tc1hs_406",blockTagThinking:"_blockTagThinking_tc1hs_412",blockTagResult:"_blockTagResult_tc1hs_418",blockTagError:"_blockTagError_tc1hs_424",jsonBlock:"_jsonBlock_tc1hs_431",jsonBlockLabel:"_jsonBlockLabel_tc1hs_438",blockSeparator:"_blockSeparator_tc1hs_448",markdownBody:"_markdownBody_tc1hs_455",contentToolbar:"_contentToolbar_tc1hs_463",contentToolbarLabel:"_contentToolbarLabel_tc1hs_472",rawPre:"_rawPre_tc1hs_478"},{Text:Text$1}=Typography;function parseContentBlocks(content2){if(null==content2)return[];if("string"==typeof content2){const trimmed=content2.trim();return trimmed?[{type:"markdown",text:trimmed}]:[]}if(Array.isArray(content2)){const blocks=[];for(const block of content2)if(block)if("text"===block.type){const trimmed=(block.text||"").trim();trimmed&&blocks.push({type:"markdown",text:trimmed})}else if("tool_use"===block.type)blocks.push({type:"tool_use",name:block.name||"unknown",id:block.id||"",input:block.input??{}});else if("tool_result"===block.type){const inner=parseResultContent(block.content);blocks.push({type:"tool_result",tool_use_id:block.tool_use_id||"",is_error:block.is_error,content:inner})}else if("thinking"===block.type){const text=block.thinking||"";text.trim()&&blocks.push({type:"thinking",text:text})}else"image"===block.type?blocks.push({type:"json",label:"image",data:block}):blocks.push({type:"json",label:block.type||"block",data:block});return blocks}return[{type:"json",label:"content",data:content2}]}function parseResultContent(content2){if(null==content2)return[];if("string"==typeof content2){const trimmed=content2.trim();return trimmed?[{type:"markdown",text:trimmed}]:[]}return Array.isArray(content2)?content2.flatMap(c=>{if(!c)return[];if("text"===c.type){const trimmed=(c.text||"").trim();return trimmed?[{type:"markdown",text:trimmed}]:[]}return[{type:"json",label:c.type||"block",data:c}]}):[{type:"json",label:"content",data:content2}]}function parseToolBlocks(tool){const blocks=[],name=(null==tool?void 0:tool.name)||"unknown",desc=(null==tool?void 0:tool.description)||"";let md=`### ${name}\n\n`;desc&&(md+=`${desc}\n\n`),blocks.push({type:"markdown",text:md});const schema=(null==tool?void 0:tool.input_schema)||(null==tool?void 0:tool.parameters)||null;return schema&&blocks.push({type:"json",label:"Parameters",data:schema}),blocks}function extractPreviewText(content2){var _a;if("string"==typeof content2)return content2.slice(0,60).replace(/\n/g," ");if(Array.isArray(content2))for(const block of content2)if("text"===(null==block?void 0:block.type)&&(null==(_a=block.text)?void 0:_a.trim()))return block.text.trim().slice(0,60).replace(/\n/g," ");return""}function formatTurnTime(isoStr){try{return new Date(isoStr).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})}catch{return null}}function TranslatableMarkdown({text:text,compact:compact}){const displayHtml=renderMarkdown(text);return compact?jsxRuntimeExports.jsx("div",{className:styles$4.textBlockCompact,children:jsxRuntimeExports.jsx("div",{className:`chat-md ${styles$4.markdownBody}`,dangerouslySetInnerHTML:{__html:displayHtml}})}):jsxRuntimeExports.jsxs("div",{className:styles$4.textBlock,children:[jsxRuntimeExports.jsx("div",{className:styles$4.textBlockBar,children:jsxRuntimeExports.jsx("span",{className:`${styles$4.blockTag} ${styles$4.blockTagText}`,children:"text"})}),jsxRuntimeExports.jsx("div",{className:`chat-md ${styles$4.textBlockBody}`,dangerouslySetInnerHTML:{__html:displayHtml}})]})}function ThinkingBlock({block:block}){const[expanded,setExpanded]=reactExports.useState(!0),preview=block.text.length>60?block.text.slice(0,60).replace(/\n/g," ")+"…":block.text.replace(/\n/g," ");return jsxRuntimeExports.jsxs("div",{className:styles$4.thinkingBlock,children:[jsxRuntimeExports.jsxs("div",{className:styles$4.thinkingHeader,onClick:()=>setExpanded(v=>!v),children:[expanded?jsxRuntimeExports.jsx(RefIcon$b,{className:styles$4.arrow}):jsxRuntimeExports.jsx(RefIcon$c,{className:styles$4.arrow}),jsxRuntimeExports.jsx("span",{className:`${styles$4.blockTag} ${styles$4.blockTagThinking}`,children:"thinking"}),!expanded&&jsxRuntimeExports.jsx("span",{className:styles$4.thinkingPreview,children:preview})]}),expanded&&jsxRuntimeExports.jsx("div",{className:styles$4.thinkingBody,children:jsxRuntimeExports.jsx("div",{className:`chat-md ${styles$4.markdownBody}`,dangerouslySetInnerHTML:{__html:renderMarkdown(block.text)}})})]})}function RenderBlocks({blocks:blocks,compact:compact}){return blocks&&0!==blocks.length?jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{children:blocks.map((block,i)=>jsxRuntimeExports.jsx(RenderBlock,{block:block,compact:compact},i))}):null}function RenderBlock({block:block,compact:compact}){var _a;return"separator"===block.type?jsxRuntimeExports.jsx("hr",{className:styles$4.blockSeparator}):"markdown"===block.type?(null==(_a=block.text)?void 0:_a.trim())?jsxRuntimeExports.jsx(TranslatableMarkdown,{text:block.text,compact:compact}):null:"thinking"===block.type?jsxRuntimeExports.jsx(ThinkingBlock,{block:block}):"tool_use"===block.type?jsxRuntimeExports.jsxs("div",{className:styles$4.toolBlock,children:[jsxRuntimeExports.jsxs("div",{className:styles$4.toolBlockHeader,children:[jsxRuntimeExports.jsx("span",{className:styles$4.blockTag,children:"tool_use"}),jsxRuntimeExports.jsx("span",{className:styles$4.toolName,children:block.name}),block.id&&jsxRuntimeExports.jsx("span",{className:styles$4.toolId,children:block.id})]}),jsxRuntimeExports.jsx("div",{className:styles$4.toolBlockBody,children:jsxRuntimeExports.jsx(JsonViewer,{data:block.input,defaultExpand:"root"})})]}):"tool_result"===block.type?jsxRuntimeExports.jsxs("div",{className:`${styles$4.toolBlock} ${block.is_error?styles$4.toolBlockError:styles$4.toolBlockResult}`,children:[jsxRuntimeExports.jsxs("div",{className:styles$4.toolBlockHeader,children:[jsxRuntimeExports.jsx("span",{className:`${styles$4.blockTag} ${block.is_error?styles$4.blockTagError:styles$4.blockTagResult}`,children:"tool_result"}),block.tool_use_id&&jsxRuntimeExports.jsx("span",{className:styles$4.toolId,children:block.tool_use_id}),block.is_error&&jsxRuntimeExports.jsx("span",{className:styles$4.errorLabel,children:"error"})]}),jsxRuntimeExports.jsx("div",{className:styles$4.toolBlockBody,children:jsxRuntimeExports.jsx(RenderBlocks,{blocks:block.content,compact:!0})})]}):"json"===block.type?jsxRuntimeExports.jsxs("div",{className:styles$4.jsonBlock,children:[block.label&&jsxRuntimeExports.jsx("div",{className:styles$4.jsonBlockLabel,children:block.label}),jsxRuntimeExports.jsx(JsonViewer,{data:block.data,defaultExpand:"root"})]}):null}function TurnContent({turn:turn}){const timeStr=turn.timestamp?formatTurnTime(turn.timestamp):null,assistantTimeStr=turn.assistantTimestamp?formatTurnTime(turn.assistantTimestamp):null;return jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:styles$4.roleHeader,children:[jsxRuntimeExports.jsx("span",{className:`${styles$4.roleBadge} ${styles$4.role_user}`,children:"user"}),jsxRuntimeExports.jsx("span",{className:styles$4.roleLabel,children:`Turn ${turn.turnIndex+1}`}),timeStr&&jsxRuntimeExports.jsx("span",{className:styles$4.contentTime,children:timeStr})]}),jsxRuntimeExports.jsx(RenderBlocks,{blocks:turn.userBlocks}),turn.assistantBlocks&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("div",{className:styles$4.turnDivider}),jsxRuntimeExports.jsxs("div",{className:styles$4.roleHeader,children:[jsxRuntimeExports.jsx("span",{className:`${styles$4.roleBadge} ${styles$4.role_assistant}`,children:"assistant"}),assistantTimeStr&&jsxRuntimeExports.jsx("span",{className:styles$4.contentTime,children:assistantTimeStr})]}),jsxRuntimeExports.jsx(RenderBlocks,{blocks:turn.assistantBlocks})]})]})}function AccordionSection({sectionKey:sectionKey,title:title,items:items,historyItems:historyItems=[],onSelect:onSelect,onSelectById:onSelectById,selectedId:selectedId,sidebarRef:sidebarRef}){const[open,setOpen]=reactExports.useState("tools"!==sectionKey),[historyOpen,setHistoryOpen]=reactExports.useState(!1),totalCount=items.length+historyItems.length,historyToggleId=`${sectionKey}__history_toggle`;function handleControlKeyDown(event,controlId){var _a;const nextId=function({currentId:currentId,visibleIds:visibleIds=[],key:key}){if("ArrowUp"!==key&&"ArrowDown"!==key)return null;const currentIndex=visibleIds.findIndex(id=>id===currentId);return currentIndex>=0?visibleIds[currentIndex+("ArrowUp"===key?-1:1)]??null:null}({currentId:controlId,visibleIds:Array.from((null==(_a=sidebarRef.current)?void 0:_a.querySelectorAll("[data-context-sidebar-control]"))||[]).map(el=>el.dataset.contextSidebarControl).filter(Boolean),key:event.key});nextId&&(event.preventDefault(),"undefined"!=typeof window&&window.requestAnimationFrame(()=>{var _a2;!function(controlId){var _a;const el=null==(_a=sidebarRef.current)?void 0:_a.querySelector(`[data-context-sidebar-control="${controlId}"]`);el&&(el.focus(),el.scrollIntoView({block:"nearest"}))}(nextId);const nextEl=null==(_a2=sidebarRef.current)?void 0:_a2.querySelector(`[data-context-sidebar-control="${nextId}"]`);"item"===(null==nextEl?void 0:nextEl.dataset.controlType)&&onSelectById(nextId)}))}function renderItem(item2){const active=selectedId===item2.id;return jsxRuntimeExports.jsxs("button",{type:"button",className:`${styles$4.item} ${active?styles$4.itemActive:""}`,onClick:()=>onSelect(item2),onKeyDown:event=>handleControlKeyDown(event,item2.id),"aria-current":active?"true":void 0,"data-context-sidebar-control":item2.id,"data-control-type":"item",children:[jsxRuntimeExports.jsxs("div",{className:styles$4.itemContent,children:[jsxRuntimeExports.jsx("span",{className:styles$4.itemLabel,children:item2.label}),item2.sublabel&&!active&&jsxRuntimeExports.jsx("div",{className:styles$4.itemSublabel,children:item2.sublabel})]}),item2.time&&jsxRuntimeExports.jsx("span",{className:styles$4.itemTime,children:item2.time})]},item2.id)}return jsxRuntimeExports.jsxs("div",{className:styles$4.section,children:[jsxRuntimeExports.jsxs("button",{type:"button",className:styles$4.sectionHeader,onClick:()=>setOpen(v=>!v),"aria-expanded":open,children:[open?jsxRuntimeExports.jsx(RefIcon$b,{className:styles$4.arrow}):jsxRuntimeExports.jsx(RefIcon$c,{className:styles$4.arrow}),jsxRuntimeExports.jsx("span",{className:styles$4.sectionTitle,children:title}),jsxRuntimeExports.jsx("span",{className:styles$4.sectionCount,children:totalCount})]}),open&&jsxRuntimeExports.jsxs("div",{className:styles$4.sectionBody,children:[historyItems.length>0&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsxs("button",{type:"button",className:styles$4.historyToggle,onClick:()=>setHistoryOpen(v=>!v),onKeyDown:event=>handleControlKeyDown(event,historyToggleId),"aria-expanded":historyOpen,"data-context-sidebar-control":historyToggleId,"data-control-type":"toggle",children:[historyOpen?jsxRuntimeExports.jsx(RefIcon$b,{className:styles$4.arrow}):jsxRuntimeExports.jsx(RefIcon$c,{className:styles$4.arrow}),jsxRuntimeExports.jsxs("span",{className:styles$4.historyToggleLabel,children:[t("ui.context.history")," (",historyItems.length,")"]})]}),historyOpen&&historyItems.map(renderItem)]}),items.map(renderItem)]})]})}function ContextTab({body:body,response:response}){const[selectedItem,setSelectedItem]=reactExports.useState(null),[rawMode,setRawMode]=reactExports.useState(!1),sidebarRef=reactExports.useRef(null),contentRef=reactExports.useRef(null),turns=reactExports.useMemo(()=>{if(!Array.isArray(null==body?void 0:body.messages))return[];const allTurns=function(messages){var _a;const turns=[];let i=0;for(;i<messages.length;){const userMsg=messages[i];if("user"!==(null==userMsg?void 0:userMsg.role)){i++;continue}const assistantMsg="assistant"===(null==(_a=messages[i+1])?void 0:_a.role)?messages[i+1]:null;turns.push({id:`turn__${i}`,isTurn:!0,turnIndex:turns.length,timestamp:userMsg._timestamp||null,assistantTimestamp:(null==assistantMsg?void 0:assistantMsg._timestamp)||null,userBlocks:parseContentBlocks(null==userMsg?void 0:userMsg.content),assistantBlocks:assistantMsg?parseContentBlocks(assistantMsg.content):null,rawUser:userMsg,rawAssistant:assistantMsg,preview:extractPreviewText(null==userMsg?void 0:userMsg.content)}),i+=assistantMsg?2:1}return turns}(body.messages);if(0===allTurns.length)return allTurns;const last=allTurns[allTurns.length-1],responseBlocks=(null==response?void 0:response.content)?parseContentBlocks(response.content):null;return[...allTurns.slice(0,-1),{...last,assistantBlocks:responseBlocks??last.assistantBlocks,rawAssistant:responseBlocks?response:last.rawAssistant}]},[body,response]);reactExports.useEffect(()=>{turns.length>0?setSelectedItem(turns[turns.length-1]):setSelectedItem(null)},[body,response]);const currentSelectedItem=(null==selectedItem?void 0:selectedItem.isTurn)?turns.find(turn=>turn.id===selectedItem.id)??null:selectedItem,rawText=reactExports.useMemo(()=>function(item2){if(!item2)return"";const raw=item2.isTurn?[item2.rawUser,item2.rawAssistant].filter(Boolean):item2.raw;if(null==raw)return"";const clean="object"==typeof raw?stripPrivateKeys(raw):raw;return"string"==typeof clean?clean:JSON.stringify(clean,null,2)}(currentSelectedItem),[currentSelectedItem]);if(!body||"object"!=typeof body)return jsxRuntimeExports.jsx("div",{className:styles$4.emptyWrap,children:jsxRuntimeExports.jsx(Empty,{description:t("ui.context.noData")})});const accordionSections=[];Array.isArray(body.tools)&&body.tools.length>0&&accordionSections.push({key:"tools",title:jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[t("ui.context.tools")," ",jsxRuntimeExports.jsx(ConceptHelp,{doc:"ToolsFirst"})]}),items:body.tools.map((tool,i)=>({id:`tool__${i}`,label:(null==tool?void 0:tool.name)||`Tool ${i}`,blocks:parseToolBlocks(tool),raw:tool}))});const systemBlocks=function(system){if(!system)return null;if("string"==typeof system)return[{type:"markdown",text:system}];if(Array.isArray(system)){const blocks=[];return system.forEach((item2,i)=>{i>0&&blocks.push({type:"separator"}),item2&&("string"==typeof item2?blocks.push({type:"markdown",text:item2}):"text"===item2.type?blocks.push({type:"markdown",text:item2.text||""}):blocks.push({type:"json",label:item2.type||"item",data:item2}))}),blocks}return[{type:"json",label:"system",data:system}]}(body.system);if(null!=systemBlocks&&accordionSections.push({key:"system",title:t("ui.context.systemPrompt"),items:[{id:"system__0",label:t("ui.context.systemPrompt"),blocks:systemBlocks,raw:body.system}]}),turns.length>0){const toHistoryItem=turn=>({...turn,label:t("ui.context.historyTurnNoTime",{n:turn.turnIndex+1}),time:turn.timestamp?formatTurnTime(turn.timestamp):null,sublabel:turn.preview||void 0}),toCurrentItem=turn=>({...turn,label:t("ui.context.currentTurn"),sublabel:turn.preview||void 0}),historyTurns=turns.slice(0,-1).map(toHistoryItem),currentTurn=toCurrentItem(turns[turns.length-1]);accordionSections.push({key:"messages",title:t("ui.context.messages"),historyItems:historyTurns.length>0?historyTurns:void 0,items:[currentTurn]})}if(0===accordionSections.length)return jsxRuntimeExports.jsx("div",{className:styles$4.emptyWrap,children:jsxRuntimeExports.jsx(Empty,{description:t("ui.context.noFields")})});const itemMap=new Map;return accordionSections.forEach(section2=>{(section2.historyItems||[]).forEach(item2=>itemMap.set(item2.id,item2)),section2.items.forEach(item2=>itemMap.set(item2.id,item2))}),jsxRuntimeExports.jsxs("div",{className:styles$4.root,children:[jsxRuntimeExports.jsx("div",{ref:sidebarRef,className:styles$4.sidebar,children:accordionSections.map(sec=>jsxRuntimeExports.jsx(AccordionSection,{sectionKey:sec.key,title:sec.title,items:sec.items,historyItems:sec.historyItems,selectedId:null==currentSelectedItem?void 0:currentSelectedItem.id,onSelect:item2=>setSelectedItem(item2),onSelectById:itemId=>{const nextItem=itemMap.get(itemId);nextItem&&setSelectedItem(nextItem)},sidebarRef:sidebarRef},sec.key))}),jsxRuntimeExports.jsxs("div",{className:styles$4.contentWrap,children:[null!=currentSelectedItem&&jsxRuntimeExports.jsxs("div",{className:styles$4.contentToolbar,children:[rawMode&&jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$k,{}),onClick:()=>{navigator.clipboard&&navigator.clipboard.writeText(rawText).then(()=>staticMethods.success(t("ui.copySuccess"))).catch(()=>{})},children:t("ui.copy")}),jsxRuntimeExports.jsx("span",{className:styles$4.contentToolbarLabel,children:t("ui.context.viewRaw")}),jsxRuntimeExports.jsx(Switch,{size:"small",checked:rawMode,"aria-label":t("ui.context.viewRaw"),onChange:v=>{setRawMode(v),contentRef.current&&(contentRef.current.scrollTop=0)}})]}),jsxRuntimeExports.jsx("div",{className:styles$4.content,ref:contentRef,children:null==currentSelectedItem?jsxRuntimeExports.jsx("div",{className:styles$4.contentEmpty,children:jsxRuntimeExports.jsx(Text$1,{type:"secondary",children:t("ui.context.selectPrompt")})}):jsxRuntimeExports.jsx("div",{className:styles$4.contentInner,children:rawMode?jsxRuntimeExports.jsx("pre",{className:styles$4.rawPre,children:rawText}):currentSelectedItem.isTurn?jsxRuntimeExports.jsx(TurnContent,{turn:currentSelectedItem}):jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[currentSelectedItem.role&&jsxRuntimeExports.jsxs("div",{className:styles$4.roleHeader,children:[jsxRuntimeExports.jsx("span",{className:`${styles$4.roleBadge} ${styles$4[`role_${currentSelectedItem.role}`]||""}`,children:currentSelectedItem.role}),jsxRuntimeExports.jsx("span",{className:styles$4.roleLabel,children:currentSelectedItem.label})]}),jsxRuntimeExports.jsx(RenderBlocks,{blocks:currentSelectedItem.blocks})]})},currentSelectedItem.id)})]})]})}const styles$3_container="_container_rg6mx_1",styles$3_emptyState="_emptyState_rg6mx_10",styles$3_urlSection="_urlSection_rg6mx_17",styles$3_urlLeft="_urlLeft_rg6mx_25",styles$3_tokenStatsBox="_tokenStatsBox_rg6mx_30",styles$3_tokenGrid="_tokenGrid_rg6mx_37",styles$3_tokenRows="_tokenRows_rg6mx_47",styles$3_tokenRow="_tokenRow_rg6mx_47",styles$3_tokenRowBorder="_tokenRowBorder_rg6mx_55",styles$3_tokenLabel="_tokenLabel_rg6mx_59",styles$3_tokenTd="_tokenTd_rg6mx_66",styles$3_tokenHitRate="_tokenHitRate_rg6mx_75",styles$3_tokenHitRateLabel="_tokenHitRateLabel_rg6mx_88",styles$3_urlText="_urlText_rg6mx_98",styles$3_metaText="_metaText_rg6mx_105",styles$3_headersContainer="_headersContainer_rg6mx_109",styles$3_headerRow="_headerRow_rg6mx_113",styles$3_headerKey="_headerKey_rg6mx_119",styles$3_headerValue="_headerValue_rg6mx_124",styles$3_streamingBox="_streamingBox_rg6mx_129",styles$3_rawTextPre="_rawTextPre_rg6mx_142",styles$3_tabContent="_tabContent_rg6mx_155",styles$3_bodyLabel="_bodyLabel_rg6mx_167",styles$3_bodyHeader="_bodyHeader_rg6mx_171",styles$3_diffSection="_diffSection_rg6mx_178",styles$3_diffToggle="_diffToggle_rg6mx_182",styles$3_diffIcon="_diffIcon_rg6mx_188",styles$3_reminderSelect="_reminderSelect_rg6mx_214",styles$3_diffHeaderRow="_diffHeaderRow_rg6mx_233",styles$3_diffSpaceRight="_diffSpaceRight_rg6mx_239",styles$3_reminderFilterWrapper="_reminderFilterWrapper_rg6mx_243",styles$3_reminderLabel="_reminderLabel_rg6mx_249",styles$3_cacheTabContent="_cacheTabContent_rg6mx_255",styles$3_userPromptList="_userPromptList_rg6mx_260",styles$3_userPromptItem="_userPromptItem_rg6mx_266",styles$3_userPromptNavBtn="_userPromptNavBtn_rg6mx_277",styles$3_cacheContent="_cacheContent_rg6mx_288",styles$3_cacheTokenBar="_cacheTokenBar_rg6mx_295",styles$3_cacheTokenWrite="_cacheTokenWrite_rg6mx_305",styles$3_cacheTokenRead="_cacheTokenRead_rg6mx_309",styles$3_cacheCopyIcon="_cacheCopyIcon_rg6mx_313",styles$3_cacheScrollArea="_cacheScrollArea_rg6mx_320",styles$3_cacheSectionBlock="_cacheSectionBlock_rg6mx_326",styles$3_cacheSectionHeader="_cacheSectionHeader_rg6mx_330",styles$3_cacheCollapseArrow="_cacheCollapseArrow_rg6mx_342",styles$3_cachePre="_cachePre_rg6mx_348",styles$3_cacheHighlightSvg="_cacheHighlightSvg_rg6mx_362",styles$3_cachePreSystem="_cachePreSystem_rg6mx_371",{Text:Text,Paragraph:Paragraph}=Typography;class DetailPanel extends React__default.Component{constructor(props){super(props),this.state={bodyViewMode:{request:"json",response:"json",diff:"json"},diffExpanded:!1,requestHeadersExpanded:!1,responseHeadersExpanded:!1,reminderFilters:null,cacheHighlightIdx:null,cacheHighlightFading:!1,cacheCollapsed:{tools:!1,system:!1,messages:!1}}}_cacheUnbindScrollFade(){this._cacheOnScrollFade&&this._cacheScrollEl&&(this._cacheScrollEl.removeEventListener("scroll",this._cacheOnScrollFade),this._cacheOnScrollFade=null)}_cacheClearAllTimers(){clearTimeout(this._cacheScrollSettleTimer),clearTimeout(this._cacheFadeClearTimer),clearTimeout(this._cacheAutoFadeTimer),clearTimeout(this._cacheHighlightDelayTimer),this._cacheUnbindScrollFade(),this._cacheScrollEndHandler&&this._cacheScrollEl&&(this._cacheScrollEl.removeEventListener("scrollend",this._cacheScrollEndHandler),this._cacheScrollEndHandler=null)}componentWillUnmount(){this._cacheClearAllTimers()}_cacheBindScrollFade(){this._cacheUnbindScrollFade();const el=this._cacheScrollEl;el&&(this._cacheOnScrollFade=()=>{clearTimeout(this._cacheAutoFadeTimer),this.setState({cacheHighlightFading:!0}),this._cacheFadeClearTimer=setTimeout(()=>{this.setState({cacheHighlightIdx:null,cacheHighlightFading:!1})},3e3),this._cacheUnbindScrollFade()},el.addEventListener("scroll",this._cacheOnScrollFade,{passive:!0}))}scrollToCacheMsg(idx){if(this.state.cacheCollapsed.messages)return void this.setState(prev=>({cacheCollapsed:{...prev.cacheCollapsed,messages:!1}}),()=>this.scrollToCacheMsg(idx));const el=this._cacheScrollEl;if(!el)return;const target=el.querySelector(`[data-msg-idx="${idx}"]`);if(!target)return;clearTimeout(this._cacheScrollSettleTimer),clearTimeout(this._cacheFadeClearTimer),clearTimeout(this._cacheAutoFadeTimer),clearTimeout(this._cacheHighlightDelayTimer),this._cacheUnbindScrollFade(),this._cacheScrollEndHandler&&el.removeEventListener("scrollend",this._cacheScrollEndHandler),this.setState({cacheHighlightIdx:null,cacheHighlightFading:!1});let scrollDone=!1,minPassed=!1;const showHighlight=()=>{scrollDone&&minPassed&&(this.setState({cacheHighlightIdx:idx,cacheHighlightFading:!1}),this._cacheScrollSettleTimer=setTimeout(()=>this._cacheBindScrollFade(),200),this._cacheAutoFadeTimer=setTimeout(()=>{this.state.cacheHighlightIdx!==idx||this.state.cacheHighlightFading||(this.setState({cacheHighlightFading:!0}),this._cacheFadeClearTimer=setTimeout(()=>{this.setState({cacheHighlightIdx:null,cacheHighlightFading:!1})},3e3),this._cacheUnbindScrollFade())},3e3))};this._cacheScrollEndHandler=()=>{el.removeEventListener("scrollend",this._cacheScrollEndHandler),scrollDone=!0,showHighlight()},el.addEventListener("scrollend",this._cacheScrollEndHandler,{once:!0}),this._cacheScrollSettleTimer=setTimeout(()=>{el.removeEventListener("scrollend",this._cacheScrollEndHandler),scrollDone=!0,showHighlight()},800),this._cacheHighlightDelayTimer=setTimeout(()=>{minPassed=!0,showHighlight()},500),target.scrollIntoView({behavior:"smooth",block:"center"})}shouldComponentUpdate(nextProps,nextState){if(nextProps.request!==this.props.request){const isMA=isMainAgent(nextProps.request);this.setState({diffExpanded:isMA&&!!nextProps.expandDiff,requestHeadersExpanded:!1,responseHeadersExpanded:!1,reminderFilters:null}),this._cacheClearAllTimers()}const onCacheTab="kv-cache-text"===nextProps.currentTab;return nextProps.request!==this.props.request||nextProps.currentTab!==this.props.currentTab||nextProps.onTabChange!==this.props.onTabChange||nextProps.selectedIndex!==this.props.selectedIndex||nextProps.expandDiff!==this.props.expandDiff||nextProps.pendingCacheHighlight!==this.props.pendingCacheHighlight||nextState.bodyViewMode!==this.state.bodyViewMode||onCacheTab&&nextState.cacheHighlightIdx!==this.state.cacheHighlightIdx||onCacheTab&&nextState.cacheHighlightFading!==this.state.cacheHighlightFading||nextState.diffExpanded!==this.state.diffExpanded||nextState.requestHeadersExpanded!==this.state.requestHeadersExpanded||nextState.responseHeadersExpanded!==this.state.responseHeadersExpanded||nextState.reminderFilters!==this.state.reminderFilters||onCacheTab&&nextState.cacheCollapsed!==this.state.cacheCollapsed}componentDidUpdate(prevProps){const pch=this.props.pendingCacheHighlight;pch&&pch!==prevProps.pendingCacheHighlight&&setTimeout(()=>{var _a,_b;this.scrollToCacheMsg(pch.msgIdx),null==(_b=(_a=this.props).onCacheHighlightDone)||_b.call(_a)},150)}getCurrentRequest(){const{request:request,allRequests:allRequests,requests:requests}=this.props;return request?request._slimmed?restoreSlimmedEntry(request,allRequests||requests||[]):request:null}toggleBodyViewMode(type){this.setState(prev=>({bodyViewMode:{...prev.bodyViewMode,[type]:"json"===prev.bodyViewMode[type]?"text":"json"}}))}copyBody(type){var _a;const request=this.getCurrentRequest();if(!request)return;let data;if(data="diff"===type?this._lastDiffResult:"request"===type?request.body:null==(_a=request.response)?void 0:_a.body,null==data)return;const clean="object"==typeof data?stripPrivateKeys(data):data,text="string"==typeof clean?clean:JSON.stringify(clean,null,2);navigator.clipboard.writeText(text).then(()=>staticMethods.success(t("ui.copySuccess")))}renderHeaders(headers){return headers&&0!==Object.keys(headers).length?jsxRuntimeExports.jsx("div",{className:styles$3_headersContainer,children:Object.entries(headers).map(([key,value])=>jsxRuntimeExports.jsxs("div",{className:styles$3_headerRow,children:[jsxRuntimeExports.jsx(Text,{code:!0,className:styles$3_headerKey,children:key}),"authorization"===key&&jsxRuntimeExports.jsx(ConceptHelp,{doc:"TranslateContextPollution"}),jsxRuntimeExports.jsx(Text,{type:"secondary",className:styles$3_headerValue,children:String(value)})]},key))}):jsxRuntimeExports.jsx(Text,{type:"secondary",children:t("ui.noHeaders")})}getRequestExpandNode(data,type){if("request"!==type||!data||"object"!=typeof data)return;const{request:request,requests:requests,selectedIndex:selectedIndex}=this.props;if(!request)return;const nextReq=requests&&null!=selectedIndex?requests[selectedIndex+1]:null,{type:reqType}=classifyRequest(request,nextReq);let claudeMdExpandSet=null;if("claudeMd"===this.state.reminderFilters&&Array.isArray(data.messages)){claudeMdExpandSet=new Set,claudeMdExpandSet.add(data.messages);for(const msg of data.messages){if(!msg||"object"!=typeof msg)continue;const content2=msg.content;if("string"==typeof content2)isClaudeMdReminder(content2)&&claudeMdExpandSet.add(msg);else if(Array.isArray(content2)){let hasMatch=!1;for(const block of content2)block&&"text"===block.type&&isClaudeMdReminder(block.text)&&(claudeMdExpandSet.add(block),hasMatch=!0);hasMatch&&(claudeMdExpandSet.add(msg),claudeMdExpandSet.add(content2))}}}let skillsExpandSet=null;if("skills"===this.state.reminderFilters&&Array.isArray(data.messages)){skillsExpandSet=new Set,skillsExpandSet.add(data.messages);for(const msg of data.messages){if(!msg||"object"!=typeof msg)continue;const content2=msg.content;if("string"==typeof content2)isSkillsReminder(content2)&&skillsExpandSet.add(msg);else if(Array.isArray(content2)){let hasMatch=!1;for(const block of content2)block&&"text"===block.type&&isSkillsReminder(block.text)&&(skillsExpandSet.add(block),hasMatch=!0);hasMatch&&(skillsExpandSet.add(msg),skillsExpandSet.add(content2))}}}const filterExpandSet=claudeMdExpandSet||skillsExpandSet;if("Preflight"===reqType){const expandRefs=new Set,collectAll=obj=>{obj&&"object"==typeof obj&&(expandRefs.add(obj),Array.isArray(obj)?obj.forEach(collectAll):Object.values(obj).forEach(collectAll))};return Array.isArray(data.messages)&&collectAll(data.messages),Array.isArray(data.system)&&data.system.length>=3&&collectAll(data.system[2]),(level,value,field2)=>level<2||(!!expandRefs.has(value)||(!(!filterExpandSet||!filterExpandSet.has(value))||1===level&&"system"===field2))}if("MainAgent"===reqType&&Array.isArray(data.messages)&&1===data.messages.length){const msg=data.messages[0],contentArr=msg&&Array.isArray(msg.content)?msg.content:null,lastContent=contentArr&&contentArr.length>0?contentArr[contentArr.length-1]:null,expandRefs=new Set,collectAll=obj=>{obj&&"object"==typeof obj&&(expandRefs.add(obj),Array.isArray(obj)?obj.forEach(collectAll):Object.values(obj).forEach(collectAll))};return lastContent&&collectAll(lastContent),expandRefs.add(data.messages),msg&&"object"==typeof msg&&expandRefs.add(msg),contentArr&&expandRefs.add(contentArr),(level,value,field2)=>level<2||(!!expandRefs.has(value)||!(!filterExpandSet||!filterExpandSet.has(value)))}return filterExpandSet?(level,value,field2)=>level<2||!!filterExpandSet.has(value):void 0}renderBody(data,type){const{bodyViewMode:bodyViewMode}=this.state;if(null==data)return jsxRuntimeExports.jsx(Text,{type:"secondary",children:t("ui.noBody")});if("string"==typeof data&&data.includes("Streaming Response"))return jsxRuntimeExports.jsx("div",{className:styles$3_streamingBox,children:jsxRuntimeExports.jsx(Text,{type:"secondary",children:t("ui.streamingResponse")})});const clean="object"==typeof data?stripPrivateKeys(data):data,isJsonMode="json"===bodyViewMode[type],expandNode=this.getRequestExpandNode(clean,type);return jsxRuntimeExports.jsx("div",{children:isJsonMode?jsxRuntimeExports.jsx(JsonViewer,{data:clean,defaultExpand:"response"===type?"all":"root",expandNode:expandNode}):jsxRuntimeExports.jsx("pre",{className:styles$3_rawTextPre,children:"string"==typeof clean?clean:JSON.stringify(clean,null,2)})})}getPrevMainAgentRequest(){const{requests:requests,selectedIndex:selectedIndex}=this.props;if(!requests||null==selectedIndex)return null;for(let i=selectedIndex-1;i>=0;i--)if(isMainAgent(requests[i])){const r=requests[i];return r._slimmed?restoreSlimmedEntry(r,this.props.allRequests||requests):r}return null}computeDiff(prev,curr){if(null==prev||null==curr)return null;if("object"!=typeof prev||"object"!=typeof curr)return null;const result={},allKeys=new Set([...Object.keys(prev),...Object.keys(curr)]);for(const key of allKeys)if(!key.startsWith("_"))if(key in prev){if(!(key in curr))continue;JSON.stringify(prev[key])!==JSON.stringify(curr[key])&&("messages"===key&&Array.isArray(prev[key])&&Array.isArray(curr[key])&&curr[key].length>prev[key].length?result[key]=curr[key].slice(prev[key].length):result[key]=curr[key])}else result[key]=curr[key];return Object.keys(result).length?result:null}render(){var _a,_b,_c;let request=this.getCurrentRequest();const{currentTab:currentTab,onTabChange:onTabChange}=this.props;if(!request)return jsxRuntimeExports.jsx("div",{className:styles$3_emptyState,children:jsxRuntimeExports.jsx(Empty,{description:"选择一个请求查看详情"})});const time2=new Date(request.timestamp).toLocaleString("zh-CN"),statusOk2=request.response&&request.response.status<400;let diffBlock=null;if(isMainAgent(request)){const prevRequest=this.getPrevMainAgentRequest();if(prevRequest){if(JSON.stringify(request.body).length<JSON.stringify(prevRequest.body).length)diffBlock=jsxRuntimeExports.jsxs("div",{className:styles$3_diffSection,children:[jsxRuntimeExports.jsxs(Text,{strong:!0,className:styles$3_diffToggle,onClick:()=>this.setState(prev=>({diffExpanded:!prev.diffExpanded})),children:["Body Diff JSON ",jsxRuntimeExports.jsx(ConceptHelp,{doc:"BodyDiffJSON"})," ",this.state.diffExpanded?jsxRuntimeExports.jsx(RefIcon$b,{className:styles$3_diffIcon}):jsxRuntimeExports.jsx(RefIcon$c,{className:styles$3_diffIcon})]}),this.state.diffExpanded&&jsxRuntimeExports.jsx(Text,{type:"secondary",children:t("ui.diffSessionChanged")})]});else{const diffResult=stripPrivateKeys(this.computeDiff(prevRequest.body,request.body));diffResult&&(this._lastDiffResult=diffResult,diffBlock=jsxRuntimeExports.jsxs("div",{className:styles$3_diffSection,children:[jsxRuntimeExports.jsxs("div",{className:styles$3_diffHeaderRow,children:[jsxRuntimeExports.jsxs(Text,{strong:!0,className:styles$3_diffToggle,onClick:()=>this.setState(prev=>({diffExpanded:!prev.diffExpanded})),children:["Body Diff JSON ",jsxRuntimeExports.jsx(ConceptHelp,{doc:"BodyDiffJSON"})," ",this.state.diffExpanded?jsxRuntimeExports.jsx(RefIcon$b,{className:styles$3_diffIcon}):jsxRuntimeExports.jsx(RefIcon$c,{className:styles$3_diffIcon})]}),this.state.diffExpanded&&jsxRuntimeExports.jsxs(Space,{size:"small",className:styles$3_diffSpaceRight,children:[jsxRuntimeExports.jsx(Button,{size:"small",icon:"json"===this.state.bodyViewMode.diff?jsxRuntimeExports.jsx(RefIcon$l,{}):jsxRuntimeExports.jsx(RefIcon$5,{}),onClick:()=>this.toggleBodyViewMode("diff"),children:"json"===this.state.bodyViewMode.diff?"Text":"JSON"}),jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$k,{}),onClick:()=>this.copyBody("diff"),children:t("ui.copy")})]})]}),this.state.diffExpanded&&jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{children:"json"===this.state.bodyViewMode.diff?jsxRuntimeExports.jsx(JsonViewer,{data:diffResult,defaultExpand:"all"}):jsxRuntimeExports.jsx("pre",{className:styles$3_rawTextPre,children:JSON.stringify(diffResult,null,2)})})]}))}}}const hasClaudeMd=hasClaudeMdReminder(request.body),hasSkills=hasSkillsReminder(request.body),tabItems=[{key:"request",label:"Request",children:jsxRuntimeExports.jsxs("div",{className:styles$3_tabContent,children:[jsxRuntimeExports.jsxs("div",{className:styles$3_diffSection,children:[jsxRuntimeExports.jsxs(Text,{strong:!0,className:styles$3_diffToggle,onClick:()=>this.setState(prev=>({requestHeadersExpanded:!prev.requestHeadersExpanded})),children:["Headers ",this.state.requestHeadersExpanded?jsxRuntimeExports.jsx(RefIcon$b,{className:styles$3_diffIcon}):jsxRuntimeExports.jsx(RefIcon$c,{className:styles$3_diffIcon})]}),this.state.requestHeadersExpanded&&this.renderHeaders(request.headers)]}),diffBlock,jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:styles$3_bodyHeader,children:[jsxRuntimeExports.jsxs(Text,{strong:!0,className:styles$3_bodyLabel,children:["Body",jsxRuntimeExports.jsx(ConceptHelp,{doc:"BodyFields"})]}),jsxRuntimeExports.jsxs(Space,{size:"small",children:[(hasClaudeMd||hasSkills)&&jsxRuntimeExports.jsxs("span",{className:styles$3_reminderFilterWrapper,children:[jsxRuntimeExports.jsx("span",{className:styles$3_reminderLabel,children:"system-reminder:"}),jsxRuntimeExports.jsx(Select,{size:"small",className:styles$3_reminderSelect,placeholder:"filter",value:this.state.reminderFilters||void 0,onChange:val=>this.setState({reminderFilters:val||null}),options:[{label:"CLAUDE.md",value:"claudeMd",disabled:!hasClaudeMd},{label:"Skills",value:"skills",disabled:!hasSkills}],popupMatchSelectWidth:!1,allowClear:!0})]}),jsxRuntimeExports.jsx(Button,{size:"small",icon:"json"===this.state.bodyViewMode.request?jsxRuntimeExports.jsx(RefIcon$l,{}):jsxRuntimeExports.jsx(RefIcon$5,{}),onClick:()=>this.toggleBodyViewMode("request"),children:"json"===this.state.bodyViewMode.request?"Text":"JSON"}),jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$k,{}),onClick:()=>this.copyBody("request"),children:t("ui.copy")})]})]}),this.renderBody(request.body,"request")]})]})},{key:"response",label:"Response",children:jsxRuntimeExports.jsx("div",{className:styles$3_tabContent,children:request.response?jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsxs("div",{className:styles$3_diffSection,children:[jsxRuntimeExports.jsxs(Text,{strong:!0,className:styles$3_diffToggle,onClick:()=>this.setState(prev=>({responseHeadersExpanded:!prev.responseHeadersExpanded})),children:["Headers ",this.state.responseHeadersExpanded?jsxRuntimeExports.jsx(RefIcon$b,{className:styles$3_diffIcon}):jsxRuntimeExports.jsx(RefIcon$c,{className:styles$3_diffIcon})]}),this.state.responseHeadersExpanded&&this.renderHeaders(request.response.headers)]}),jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:styles$3_bodyHeader,children:[jsxRuntimeExports.jsxs(Text,{strong:!0,className:styles$3_bodyLabel,children:["Body",jsxRuntimeExports.jsx(ConceptHelp,{doc:"ResponseFields"})]}),jsxRuntimeExports.jsxs(Space,{size:"small",children:[jsxRuntimeExports.jsx(Button,{size:"small",icon:"json"===this.state.bodyViewMode.response?jsxRuntimeExports.jsx(RefIcon$l,{}):jsxRuntimeExports.jsx(RefIcon$5,{}),onClick:()=>this.toggleBodyViewMode("response"),children:"json"===this.state.bodyViewMode.response?"Text":"JSON"}),jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$k,{}),onClick:()=>this.copyBody("response"),children:t("ui.copy")})]})]}),this.renderBody(request.response.body,"response")]})]}):jsxRuntimeExports.jsx(Empty,{description:t("ui.responseNotCaptured")})})},{key:"kv-cache-text",label:jsxRuntimeExports.jsxs("span",{children:["KV-Cache-Text ",jsxRuntimeExports.jsx(ConceptHelp,{doc:"KVCacheContent"})]}),children:jsxRuntimeExports.jsx("div",{className:`${styles$3_tabContent} ${styles$3_cacheTabContent}`,children:(()=>{const cached=extractCachedContent([request]),reqKey=request.timestamp+"|"+request.url;if(cached&&(cached.cacheCreateTokens>0||cached.cacheReadTokens>0)&&(this._lastCachedTokensKey=reqKey,this._lastCachedTokens={cacheCreateTokens:cached.cacheCreateTokens,cacheReadTokens:cached.cacheReadTokens}),!cached||0===cached.system.length&&0===cached.messages.length&&0===cached.tools.length)return jsxRuntimeExports.jsx(Empty,{description:t("ui.noCachedContent"),image:Empty.PRESENTED_IMAGE_SIMPLE});const userPrompts=cached.messages.map((text,i)=>({text:text,msgIdx:i})).filter(({text:text})=>text.startsWith("[user]")).map(({text:text,msgIdx:msgIdx})=>{const raw=text.replace(/^\[user\]\s*/,"").trim();if(!raw||isSystemText(raw))return{cleaned:"",msgIdx:msgIdx};return{cleaned:AppHeader.parseSegments(raw).filter(s=>"text"===s.type).map(s=>s.content.trim()).filter(s=>s&&!isSystemText(s)).join(" ").trim(),msgIdx:msgIdx}}).filter(({cleaned:cleaned})=>!!cleaned&&!/Implement the following plan:/i.test(cleaned)),userPromptNavList=userPrompts.length>0?jsxRuntimeExports.jsx("div",{className:styles$3_userPromptList,children:userPrompts.map(({cleaned:cleaned,msgIdx:msgIdx})=>jsxRuntimeExports.jsx("div",{className:styles$3_userPromptItem,onMouseEnter:e=>{e.currentTarget.style.background="var(--color-primary-bg-lighter)",e.currentTarget.style.color="var(--text-white)"},onMouseLeave:e=>{e.currentTarget.style.background="",e.currentTarget.style.color="var(--text-secondary)"},onClick:()=>this.scrollToCacheMsg(msgIdx),children:cleaned},msgIdx))}):null;return jsxRuntimeExports.jsxs("div",{className:styles$3_cacheContent,children:[(()=>{const displayTokens=cached.cacheCreateTokens>0||cached.cacheReadTokens>0?cached:this._lastCachedTokensKey===reqKey?this._lastCachedTokens:null;return displayTokens||userPromptNavList?jsxRuntimeExports.jsxs("div",{className:styles$3_cacheTokenBar,children:[displayTokens&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[t("ui.tokens"),": ",jsxRuntimeExports.jsxs("span",{className:styles$3_cacheTokenWrite,children:["write ",formatTokenCount(displayTokens.cacheCreateTokens)]})," / ",jsxRuntimeExports.jsxs("span",{className:styles$3_cacheTokenRead,children:["read ",formatTokenCount(displayTokens.cacheReadTokens)]}),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.copyAllCacheText"),children:jsxRuntimeExports.jsx(RefIcon$k,{className:styles$3_cacheCopyIcon,onClick:()=>{navigator.clipboard.writeText((()=>{const parts=[];if(cached.tools.length>0){const indented=cached.tools.map(xml=>xml.split("\n").map(l=>l?" "+l:l).join("\n")).join("\n");parts.push(`<tools>\n${indented}\n</tools>`)}return cached.system.length>0&&parts.push(`<system-reminder>\n${cached.system.join("\n\n")}\n</system-reminder>`),cached.messages.length>0&&cached.messages.forEach(t2=>parts.push(t2)),parts.join("\n\n")})()).then(()=>{staticMethods.success(t("ui.copied"))}).catch(()=>{})}})})]}),userPromptNavList&&jsxRuntimeExports.jsx(Popover,{content:userPromptNavList,trigger:"hover",placement:"left",children:jsxRuntimeExports.jsx("span",{className:styles$3_userPromptNavBtn,children:t("ui.userPromptNav")})})]}):null})(),jsxRuntimeExports.jsxs("div",{className:styles$3_cacheScrollArea,ref:el=>{this._cacheScrollEl=el},children:[cached.tools.length>0&&jsxRuntimeExports.jsxs("div",{className:styles$3_cacheSectionBlock,children:[jsxRuntimeExports.jsxs("div",{className:styles$3_cacheSectionHeader,onClick:()=>this.setState(prev=>({cacheCollapsed:{...prev.cacheCollapsed,tools:!prev.cacheCollapsed.tools}})),children:[jsxRuntimeExports.jsx("span",{className:styles$3_cacheCollapseArrow,style:{transform:this.state.cacheCollapsed.tools?"rotate(-90deg)":"rotate(0deg)"},children:"▼"}),t("ui.tools")," (",cached.tools.length,")"]}),!this.state.cacheCollapsed.tools&&cached.tools.map((text,i)=>jsxRuntimeExports.jsx("pre",{className:styles$3_cachePre,children:text},i))]}),cached.system.length>0&&jsxRuntimeExports.jsxs("div",{className:styles$3_cacheSectionBlock,children:[jsxRuntimeExports.jsxs("div",{className:styles$3_cacheSectionHeader,onClick:()=>this.setState(prev=>({cacheCollapsed:{...prev.cacheCollapsed,system:!prev.cacheCollapsed.system}})),children:[jsxRuntimeExports.jsx("span",{className:styles$3_cacheCollapseArrow,style:{transform:this.state.cacheCollapsed.system?"rotate(-90deg)":"rotate(0deg)"},children:"▼"}),t("ui.systemPrompt")," (",cached.system.length,")"]}),!this.state.cacheCollapsed.system&&cached.system.map((text,i)=>jsxRuntimeExports.jsx("pre",{className:styles$3_cachePreSystem,children:text},i))]}),cached.messages.length>0&&jsxRuntimeExports.jsxs("div",{className:styles$3_cacheSectionBlock,children:[jsxRuntimeExports.jsxs("div",{className:styles$3_cacheSectionHeader,onClick:()=>this.setState(prev=>({cacheCollapsed:{...prev.cacheCollapsed,messages:!prev.cacheCollapsed.messages}})),children:[jsxRuntimeExports.jsx("span",{className:styles$3_cacheCollapseArrow,style:{transform:this.state.cacheCollapsed.messages?"rotate(-90deg)":"rotate(0deg)"},children:"▼"}),t("ui.messages")," (",cached.messages.length,")"]}),!this.state.cacheCollapsed.messages&&cached.messages.map((text,i)=>{const isHl=i===this.state.cacheHighlightIdx,hlStyle=isHl?this.state.cacheHighlightFading?{boxShadow:"0 0 10px rgba(22,104,220,0)",transition:"box-shadow 3s ease-out",position:"relative"}:{boxShadow:"0 0 10px rgba(22,104,220,0.6)",transition:"box-shadow 0.2s ease-in",position:"relative"}:{};return jsxRuntimeExports.jsxs("pre",{"data-msg-idx":i,className:styles$3_cachePre,style:hlStyle,children:[isHl&&jsxRuntimeExports.jsx("svg",{className:styles$3_cacheHighlightSvg,style:{opacity:this.state.cacheHighlightFading?0:1,transition:this.state.cacheHighlightFading?"opacity 3s ease-out":void 0},preserveAspectRatio:"none",children:jsxRuntimeExports.jsx("rect",{x:"0.5",y:"0.5",width:"calc(100% - 1px)",height:"calc(100% - 1px)",rx:"4",ry:"4",fill:"none",stroke:"#1668dc",strokeWidth:"1",strokeDasharray:"6 4",children:jsxRuntimeExports.jsx("animate",{attributeName:"stroke-dashoffset",from:"0",to:"-100",dur:"4s",repeatCount:"indefinite"})})}),text]},i)})]})]})]})})()})},{key:"context",label:"Context",children:jsxRuntimeExports.jsx("div",{className:`${styles$3_tabContent} ${styles$3_cacheTabContent}`,children:jsxRuntimeExports.jsx(ContextTab,{body:request.body,response:null==(_a=request.response)?void 0:_a.body})})}],usage=null==(_c=null==(_b=request.response)?void 0:_b.body)?void 0:_c.usage,tokenStats=usage?(()=>{const input=usage.input_tokens||0,output=usage.output_tokens||0,cacheCreate=usage.cache_creation_input_tokens||0,cacheRead=usage.cache_read_input_tokens||0,totalInput=input+cacheCreate+cacheRead;return{input:input,output:output,cacheCreate:cacheCreate,cacheRead:cacheRead,hitRate:totalInput>0?(cacheRead/totalInput*100).toFixed(1):"0.0"}})():null;return jsxRuntimeExports.jsxs("div",{className:styles$3_container,children:[jsxRuntimeExports.jsxs("div",{className:styles$3_urlSection,children:[jsxRuntimeExports.jsxs("div",{className:styles$3_urlLeft,children:[jsxRuntimeExports.jsx(Paragraph,{className:styles$3_urlText,ellipsis:{rows:2,expandable:!0},children:request.proxyUrl||request.url}),jsxRuntimeExports.jsxs(Space,{size:"small",wrap:!0,children:[jsxRuntimeExports.jsx(Tag,{color:"POST"===request.method?"blue":"green",children:request.method}),jsxRuntimeExports.jsxs(Text,{type:"secondary",className:styles$3_metaText,children:["🕐 ",time2]}),request.duration&&jsxRuntimeExports.jsxs(Text,{type:"secondary",className:styles$3_metaText,children:["⏱️ ",request.duration,"ms"]}),request.response&&jsxRuntimeExports.jsxs(Tag,{color:statusOk2?"success":"error",children:["HTTP ",request.response.status]})]})]}),tokenStats&&jsxRuntimeExports.jsx("div",{className:styles$3_tokenStatsBox,children:jsxRuntimeExports.jsxs("div",{className:styles$3_tokenGrid,children:[jsxRuntimeExports.jsxs("div",{className:styles$3_tokenRows,children:[jsxRuntimeExports.jsxs("div",{className:styles$3_tokenRow,children:[jsxRuntimeExports.jsx("span",{className:styles$3_tokenLabel,children:"Token"}),jsxRuntimeExports.jsxs("span",{className:styles$3_tokenTd,children:["input: ",formatTokenCount(tokenStats.input)]}),jsxRuntimeExports.jsxs("span",{className:styles$3_tokenTd,children:["output: ",formatTokenCount(tokenStats.output)]})]}),jsxRuntimeExports.jsxs("div",{className:`${styles$3_tokenRow} ${styles$3_tokenRowBorder}`,children:[jsxRuntimeExports.jsx("span",{className:styles$3_tokenLabel,children:"Cache"}),jsxRuntimeExports.jsxs("span",{className:styles$3_tokenTd,children:["create: ",formatTokenCount(tokenStats.cacheCreate)]}),jsxRuntimeExports.jsxs("span",{className:styles$3_tokenTd,children:["read: ",formatTokenCount(tokenStats.cacheRead)]})]})]}),jsxRuntimeExports.jsxs("div",{className:styles$3_tokenHitRate,children:[jsxRuntimeExports.jsxs("div",{children:[tokenStats.hitRate,"%"]}),jsxRuntimeExports.jsx("div",{className:styles$3_tokenHitRateLabel,children:t("ui.hitRate")})]})]})})]}),jsxRuntimeExports.jsx(Tabs,{activeKey:currentTab,onChange:onTabChange,items:tabItems,size:"small"})]})}}const styles$2_resizer="_resizer_pzn4b_1";class PanelResizer extends React__default.Component{constructor(props){super(props),this.handleMouseDown=this.handleMouseDown.bind(this),this.handleMouseMove=this.handleMouseMove.bind(this),this.handleMouseUp=this.handleMouseUp.bind(this)}handleMouseDown(e){e.preventDefault(),document.body.style.cursor="col-resize",document.body.style.userSelect="none",document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseup",this.handleMouseUp)}handleMouseMove(e){this.props.onResize&&this.props.onResize(e.clientX)}handleMouseUp(){document.body.style.cursor="",document.body.style.userSelect="",document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp)}componentWillUnmount(){document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp)}render(){return jsxRuntimeExports.jsx("div",{onMouseDown:this.handleMouseDown,className:styles$2_resizer})}}const styles$1_flag="_flag_1q4ri_3",styles$1_popover="_popover_1q4ri_27",styles$1_meta="_meta_1q4ri_33";class CountryFlag extends React__default.Component{constructor(props){super(props),this.state={flag:null,info:null,popoverOpen:!1},this._aborted=!1}componentDidMount(){fetch("https://ipinfo.io/json",{signal:AbortSignal.timeout(5e3)}).then(r=>r.json()).then(data=>{var code;this._aborted||data&&data.country&&this.setState({flag:(code=data.country,code&&2===code.length?code.toUpperCase().split("").map(c=>String.fromCodePoint(127462+c.charCodeAt(0)-65)).join(""):"🇨🇳"),info:data})}).catch(()=>{})}componentWillUnmount(){this._aborted=!0}render(){const{flag:flag2,info:info}=this.state;if(!flag2||"CN"===(null==info?void 0:info.country))return null;const content2=jsxRuntimeExports.jsxs("div",{className:styles$1_popover,onClick:e=>e.stopPropagation(),children:[jsxRuntimeExports.jsxs("div",{children:[flag2," ",info.country]}),info.region&&jsxRuntimeExports.jsx("div",{children:info.region}),info.city&&jsxRuntimeExports.jsx("div",{children:info.city}),info.org&&jsxRuntimeExports.jsx("div",{className:styles$1_meta,children:info.org}),info.ip&&jsxRuntimeExports.jsx("div",{className:styles$1_meta,children:info.ip})]});return jsxRuntimeExports.jsx(Popover,{content:content2,trigger:["click"],open:this.state.popoverOpen,onOpenChange:o=>this.setState({popoverOpen:o}),placement:"topLeft",overlayInnerStyle:{background:"var(--bg-elevated)",border:"1px solid var(--border-hover)",borderRadius:8,padding:"8px 12px"},children:jsxRuntimeExports.jsx("button",{type:"button",className:styles$1_flag,"aria-label":`${info.country}${info.region?" · "+info.region:""}`,children:flag2})})}}const PREFIX="anthropic-ratelimit-unified-";function toNum(v){if(null==v||""===v)return null;const n=Number(v);return Number.isFinite(n)?n:null}function parseWindow(map,id){const utilization=toNum(map[`${PREFIX}${id}-utilization`]),resetSec=toNum(map[`${PREFIX}${id}-reset`]),status=map[`${PREFIX}${id}-status`]||null;return null!=utilization||null!=resetSec||status?{id:id,utilization:utilization,status:status,resetAt:null!=resetSec?1e3*resetSec:null}:null}function parseRateLimitHeaders(headers){if(!headers||"object"!=typeof headers)return null;const map=function(headers){const map={};for(const k of Object.keys(headers))map[k.toLowerCase()]=headers[k];return map}(headers);if(!Object.keys(map).some(k=>k.startsWith(PREFIX)))return null;const windows=[parseWindow(map,"5h"),parseWindow(map,"7d")].filter(Boolean);return 0===windows.length?null:{source:"plan",windows:windows,overallStatus:map[`${PREFIX}status`]||null,representativeClaim:map[`${PREFIX}representative-claim`]||null,overage:{status:map[`${PREFIX}overage-status`]||null,disabledReason:map[`${PREFIX}overage-disabled-reason`]||null},fallbackPercentage:toNum(map[`${PREFIX}fallback-percentage`])}}const styles_usagePill="_usagePill_18dz6_4",styles_usageFill="_usageFill_18dz6_12",styles_usageContent="_usageContent_18dz6_38",styles_usageText="_usageText_18dz6_45",styles_muted="_muted_18dz6_50",styles_pop="_pop_18dz6_57",styles_popTitle="_popTitle_18dz6_63",styles_popTable="_popTable_18dz6_69",styles_tdName="_tdName_18dz6_74",styles_tdBar="_tdBar_18dz6_74",styles_tdReset="_tdReset_18dz6_92",styles_bar="_bar_18dz6_101",styles_barFill="_barFill_18dz6_115",styles_barText="_barText_18dz6_125",POPOVER_OVERLAY_STYLE={background:"var(--bg-elevated)",border:"1px solid var(--border-hover)",borderRadius:8,padding:"8px 8px"};function fmtPct(u){return null==u?"—":`${Math.round(100*u)}%`}const UsageWindowPill$1=reactExports.memo(function({planUsage:planUsage,authType:authType}){const headline=reactExports.useMemo(()=>function(planUsage){if(!planUsage||!Array.isArray(planUsage.windows)||0===planUsage.windows.length)return null;const claim=planUsage.representativeClaim;let id=null;if("five_hour"===claim?id="5h":claim&&/(day|week|7d|seven)/i.test(claim)&&(id="7d"),id){const hit=planUsage.windows.find(w=>w.id===id);if(hit)return hit}return planUsage.windows.reduce((a,b)=>(b.utilization||0)>(a.utilization||0)?b:a)}(planUsage),[planUsage]),triggerStyle=reactExports.useMemo(()=>{const pct=headline&&null!=headline.utilization?Math.round(100*headline.utilization):0;return{"--usage-percent":`${Math.min(100,Math.max(0,pct))}%`}},[headline]);if(!planUsage)return"OAuth"===authType?jsxRuntimeExports.jsx(Popover,{content:jsxRuntimeExports.jsx("div",{className:styles_pop,children:t("ui.usage.waiting")}),trigger:"hover",placement:"top",overlayInnerStyle:POPOVER_OVERLAY_STYLE,children:jsxRuntimeExports.jsx("span",{className:`${styles_usagePill} ${styles_muted}`,role:"button",tabIndex:0,"aria-label":t("ui.usage.ariaLabel"),children:jsxRuntimeExports.jsx("span",{className:styles_usageContent,children:jsxRuntimeExports.jsx("span",{className:styles_usageText,children:"—"})})})}):null;const pillLabel=planUsage.windows.filter(w=>null!=w.utilization).filter(w=>"7d"!==w.id||w.utilization>.6).map(w=>{return`${id=w.id,"7d"===id?t("ui.usage.weeklyShort"):"5h"} ${fmtPct(w.utilization)}`;var id}).join(" · "),popContent=jsxRuntimeExports.jsxs("div",{className:styles_pop,children:[jsxRuntimeExports.jsx("div",{className:styles_popTitle,children:t("ui.usage.title")}),jsxRuntimeExports.jsx("table",{className:styles_popTable,children:jsxRuntimeExports.jsx("tbody",{children:planUsage.windows.map(w=>{const rt=function(resetAt){if(null==resetAt)return"";const diff=resetAt-Date.now();if(diff<=0)return t("ui.usage.resetting");const totalMin=Math.floor(diff/6e4),h=Math.floor(totalMin/60),m=totalMin%60;return h>0?t("ui.usage.resetsInHM",{h:h,m:m}):t("ui.usage.resetsInM",{m:m})}(w.resetAt),pct=null!=w.utilization?Math.min(100,Math.max(0,Math.round(100*w.utilization))):0;return jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:styles_tdName,children:(id=w.id,t("7d"===id?"ui.usage.weekly":"ui.usage.fiveHour"))}),jsxRuntimeExports.jsx("td",{className:styles_tdBar,children:jsxRuntimeExports.jsxs("span",{className:styles_bar,children:[jsxRuntimeExports.jsx("span",{className:styles_barFill,style:{width:`${pct}%`}}),jsxRuntimeExports.jsx("span",{className:styles_barText,children:fmtPct(w.utilization)})]})}),jsxRuntimeExports.jsx("td",{className:styles_tdReset,children:rt})]},w.id);var id})})})]});return jsxRuntimeExports.jsx(Popover,{content:popContent,trigger:"hover",placement:"topRight",overlayInnerStyle:POPOVER_OVERLAY_STYLE,children:jsxRuntimeExports.jsxs("span",{className:styles_usagePill,style:triggerStyle,role:"button",tabIndex:0,"aria-label":t("ui.usage.ariaLabel"),children:[jsxRuntimeExports.jsx("span",{className:styles_usageFill}),jsxRuntimeExports.jsx("span",{className:styles_usageContent,children:jsxRuntimeExports.jsx("span",{className:styles_usageText,children:pillLabel})})]})})});class App extends AppBase{constructor(props){super(props),__publicField(this,"setContextBarSlot",el=>{el&&!el.isConnected||el!==this.state.contextBarSlot&&this.setState({contextBarSlot:el})}),__publicField(this,"renderUpdateInstructions",method=>{const codeStyle={display:"block",background:"var(--bg-code)",padding:"8px 12px",borderRadius:6,fontSize:13};return"electron"===method?jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("p",{style:{marginTop:12},children:jsxRuntimeExports.jsx("strong",{children:t("ui.update.electron")})}),jsxRuntimeExports.jsx("p",{style:{color:"var(--text-tertiary)",fontSize:13},children:t("ui.update.electronDesc")}),jsxRuntimeExports.jsxs("ol",{style:{color:"var(--text-tertiary)",fontSize:13,paddingLeft:20,margin:"6px 0"},children:[jsxRuntimeExports.jsx("li",{children:t("ui.update.step1")}),jsxRuntimeExports.jsx("li",{children:t("ui.update.step2")}),jsxRuntimeExports.jsx("li",{children:t("ui.update.step3")})]})]}):"brew"===method?jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("p",{style:{marginTop:12},children:jsxRuntimeExports.jsx("strong",{children:t("ui.update.brew")})}),jsxRuntimeExports.jsx("code",{style:codeStyle,children:"brew upgrade cc-viewer"})]}):jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("p",{style:{marginTop:12},children:jsxRuntimeExports.jsx("strong",{children:t("ui.update.npm")})}),jsxRuntimeExports.jsx("code",{style:codeStyle,children:"npm install -g cc-viewer --registry=https://registry.npmjs.org"})]})}),__publicField(this,"openUpdateModal",()=>{this.setState({updateModalVisible:!0}),null==this.state.installMethod&&fetch(apiUrl("/api/version-info")).then(r=>r.json()).then(d=>{d&&d.installMethod&&this.setState({installMethod:d.installMethod})}).catch(()=>{})}),__publicField(this,"handleViewRequest",index=>{this.setState({viewMode:"raw",selectedIndex:index,scrollCenter:!0})}),__publicField(this,"handleViewInChat",()=>{this.setState(prev=>{const selectedReq=(prev.showAll?prev.requests:filterRelevantRequests(prev.requests))[prev.selectedIndex];if(!selectedReq)return null;let targetTs=null;if(isMainAgent(selectedReq)&&selectedReq.timestamp)targetTs=selectedReq.timestamp;else{const cls=classifyRequest(selectedReq);if("SubAgent"!==cls.type&&"Teammate"!==cls.type||!selectedReq.timestamp){const idx=prev.requests.indexOf(selectedReq);idx>=0&&(targetTs=findPrevMainAgentTimestamp(prev.requests,idx))}else targetTs=selectedReq.timestamp;targetTs||staticMethods.info(t("ui.cannotMap"))}return{viewMode:"chat",chatScrollToTs:targetTs}})}),__publicField(this,"handleToggleViewMode",()=>{this.setState(prev=>{const newMode="raw"===prev.viewMode?"chat":"raw";if("raw"===newMode){if(null===prev.selectedIndex){const filtered2=prev.showAll?prev.requests:filterRelevantRequests(prev.requests);return{viewMode:newMode,selectedIndex:filtered2.length>0?filtered2.length-1:null,scrollCenter:!0}}return{viewMode:newMode,scrollCenter:!0}}const filtered=prev.showAll?prev.requests:filterRelevantRequests(prev.requests),selectedReq=null!=prev.selectedIndex?filtered[prev.selectedIndex]:null;if(selectedReq){let targetTs=null;if(isMainAgent(selectedReq)&&selectedReq.timestamp)targetTs=selectedReq.timestamp;else{const cls=classifyRequest(selectedReq);if("SubAgent"!==cls.type&&"Teammate"!==cls.type||!selectedReq.timestamp){const idx=prev.requests.indexOf(selectedReq);idx>=0&&(targetTs=findPrevMainAgentTimestamp(prev.requests,idx)),targetTs||staticMethods.info(t("ui.cannotMap"))}else targetTs=selectedReq.timestamp}return{viewMode:newMode,chatScrollToTs:targetTs}}return{viewMode:newMode,chatScrollToTs:null}},()=>{"chat"===this.state.viewMode&&this.state.terminalVisible&&this.state.cliMode&&!isMobile&&requestAnimationFrame(()=>{const ta=document.querySelector(".xterm-helper-textarea");ta&&ta.focus()})})}),__publicField(this,"handleTabChange",key=>{this.setState({currentTab:key})}),__publicField(this,"handleCacheHighlightDone",()=>{this.setState({pendingCacheHighlight:null})}),__publicField(this,"handleNavigateCacheMsg",msgIdx=>{const filteredRequests=this.state.showAll?this.state.requests:filterRelevantRequests(this.state.requests);let targetIdx=-1;for(let i=filteredRequests.length-1;i>=0;i--)if(isMainAgent(filteredRequests[i])){targetIdx=i;break}targetIdx<0||this.setState({selectedIndex:targetIdx,scrollCenter:!0,currentTab:"kv-cache-text",pendingCacheHighlight:{msgIdx:msgIdx,key:Date.now()}})}),__publicField(this,"handleResize",clientX=>{const container2=this.mainContainerRef.current;if(!container2)return;const newWidth=clientX-container2.getBoundingClientRect().left;newWidth>=250&&newWidth<=800&&this.setState({leftPanelWidth:newWidth})}),__publicField(this,"handleLoadLocalJsonlFile",()=>{const input=document.createElement("input");input.type="file",input.accept=".jsonl",input.multiple=!0,input.onchange=e=>{const files=Array.from(e.target.files);if(0===files.length)return;if(files.reduce((s,f)=>s+f.size,0)>524288e3)return void staticMethods.error(t("ui.fileTooLarge"));this.setState({fileLoading:!0,fileLoadingCount:0});let readCount=0;const allEntries=[],fileNames=[];files.forEach(file=>{const reader=new FileReader;reader.onload=ev=>{try{const entries=ev.target.result.split("\n---\n").filter(line=>line.trim()).map(entry=>{try{return JSON.parse(entry)}catch{return null}}).filter(Boolean);allEntries.push(...entries),fileNames.push(file.name)}catch{}readCount++,readCount===files.length&&this._finishLocalLoad(allEntries,fileNames)},reader.readAsText(file)})},input.click()}),Object.assign(this.state,{leftPanelWidth:380,terminalVisible:!0,currentTab:"context",pendingCacheHighlight:null,contextBarSlot:null,planUsage:null,installMethod:null}),this.appHeaderRef=React__default.createRef(),this._getTokenStatsContent=()=>{var _a,_b;return(null==(_b=null==(_a=this.appHeaderRef.current)?void 0:_a.renderTokenStats)?void 0:_b.call(_a))??null}}componentDidUpdate(prevProps,prevState){if(super.componentDidUpdate&&super.componentDidUpdate(prevProps,prevState),this._isLocalLog)return;const reqs=this.state.requests;if(!reqs||0===reqs.length)return;if(prevState&&prevState.requests===reqs&&this.state.planUsage)return;const pu=function(requests){if(!Array.isArray(requests))return null;for(let i=requests.length-1;i>=0;i--){const headers=requests[i]&&requests[i].response&&requests[i].response.headers;if(!headers)continue;const pu=parseRateLimitHeaders(headers);if(pu)return pu}return null}(reqs);if(!pu)return;const sig=JSON.stringify(pu);sig!==this._planUsageSig&&(this._planUsageSig=sig,this.setState({planUsage:pu}))}componentDidMount(){var _a,_b,_c,_d;super.componentDidMount();if("undefined"!=typeof window&&!!window.tabBridge)return this._onDeviceMode=on=>{const target=on?"pad":"pc";localStorage.getItem("ccv_viewMode")!==target&&setViewMode(target)},this._disposeDeviceMode=null==(_b=(_a=window.tabBridge).onDeviceModeChange)?void 0:_b.call(_a,this._onDeviceMode),void(null==(_d=(_c=window.tabBridge).requestDeviceMode)||_d.call(_c));this._mqlNarrow=window.matchMedia("(max-width: 600px)"),this._modeSwitchDialog=null,this._onNarrowChange=e=>{e.matches?this._modeSwitchDialog=Modal.confirm({title:t("ui.modeSwitchTitle"),content:t("ui.modeSwitchToSidebar"),okText:t("ui.ok"),onOk:()=>{this._modeSwitchDialog=null,setViewMode("pad")},onCancel:()=>{this._modeSwitchDialog=null}}):this._modeSwitchDialog&&(this._modeSwitchDialog.destroy(),this._modeSwitchDialog=null)},this._mqlNarrow.addEventListener("change",this._onNarrowChange)}componentWillUnmount(){this._disposeDeviceMode&&(this._disposeDeviceMode(),this._disposeDeviceMode=null),this._mqlNarrow&&this._mqlNarrow.removeEventListener("change",this._onNarrowChange),this._modeSwitchDialog&&(this._modeSwitchDialog.destroy(),this._modeSwitchDialog=null),super.componentWillUnmount()}render(){var _a,_b,_c;const{filteredRequests:filteredRequests,selectedRequest:selectedRequest,fileLoading:fileLoading,fileLoadingCount:fileLoadingCount,mainAgentSessions:mainAgentSessions,viewMode:viewMode}=this.renderPrepare(),{selectedIndex:selectedIndex,leftPanelWidth:leftPanelWidth,currentTab:currentTab}=this.state,prefs=this._prefValues();if(this.state.workspaceMode)return this.renderWorkspaceMode();const wsOpen=!this._isLocalLog&&!this.state.sdkMode;return jsxRuntimeExports.jsx(ConfigProvider,{theme:this.themeConfig,children:jsxRuntimeExports.jsx(TerminalWsProvider,{open:wsOpen,children:jsxRuntimeExports.jsxs(ApprovalModal,{enabled:this.state.approvalPrefs.modalEnabled,soundEnabled:this.state.approvalPrefs.soundEnabled,voicePackPrefs:this.state.approvalPrefs.voicePack,approvalGlobal:this.state.approvalGlobal,dismissedIds:this.state.approvalDismissedIds,onDismiss:this.handleApprovalDismiss,onJumpTab:this.handleApprovalJumpTab,otherTabs:this.state.approvalOtherTabs,children:[fileLoading&&jsxRuntimeExports.jsx("div",{className:styles$f.loadingOverlay,children:jsxRuntimeExports.jsxs("div",{className:styles$f.loadingText,children:["Loading...(",fileLoadingCount,")"]})}),this.state.isDragging&&jsxRuntimeExports.jsx("div",{className:styles$f.dragOverlay,children:jsxRuntimeExports.jsxs("div",{className:styles$f.dragOverlayContent,children:[jsxRuntimeExports.jsx(RefIcon$n,{className:styles$f.dragIcon}),jsxRuntimeExports.jsx("p",{children:t("ui.dragDropHint")})]})}),jsxRuntimeExports.jsxs(Layout,{className:styles$f.layout,ref:this._layoutRef,onDragOver:this._onDragOver,onDragLeave:this._onDragLeave,onDrop:this._onDrop,children:[jsxRuntimeExports.jsx(Layout.Header,{className:styles$f.header,inert:"undefined"!=typeof window&&window.tabBridge?"":void 0,style:"undefined"!=typeof window&&window.tabBridge?{height:0,minHeight:0,padding:0,overflow:"hidden",border:"none",lineHeight:0}:void 0,children:jsxRuntimeExports.jsx(AppHeader,{ref:this.appHeaderRef,requestCount:filteredRequests.length,requests:filteredRequests,viewMode:viewMode,cacheExpireAt:this.state.cacheExpireAt,cacheType:this.state.cacheType,onToggleViewMode:this.handleToggleViewMode,onLangChange:this.handleLangChange,onImportLocalLogs:this.handleImportLocalLogs,isLocalLog:!!this._isLocalLog,localLogFile:this._localLogFile,projectName:this.state.projectName,filterIrrelevant:!this.state.showAll,onFilterIrrelevantChange:this.handleFilterIrrelevantChange,logDir:this.state.logDir,onLogDirChange:this.handleLogDirChange,cliMode:this.state.cliMode,sdkMode:this.state.sdkMode,terminalVisible:!this.state.sdkMode&&this.state.terminalVisible,onToggleTerminal:()=>this.setState(prev=>({terminalVisible:!prev.terminalVisible})),onReturnToWorkspaces:this.state.cliMode?this.handleReturnToWorkspaces:null,contextWindow:this.state.contextWindow,contextBarOptimistic:this.state.contextBarOptimistic,contextBarLocked:this.state.contextBarLocked,onNavigateCacheMsg:this.handleNavigateCacheMsg,serverCachedContent:this.state.serverCachedContent||this._lastKvCacheContent,resumeAutoChoice:this.state.resumeAutoChoice,onResumeAutoChoiceToggle:this.handleResumeAutoChoiceToggle,onResumeAutoChoiceChange:this.handleResumeAutoChoiceChange,themeColor:this.state.themeColor,onThemeColorChange:this.handleThemeColorChange,displayScale:this.state.displayScale,onDisplayScaleChange:this.handleDisplayScaleChange,autoApproveSeconds:this.state.autoApproveSeconds,onAutoApproveChange:this.handleAutoApproveChange,approvalPrefs:this.state.approvalPrefs,onApprovalPrefsChange:this.handleApprovalPrefsChange,onVoicePackChange:this.handleVoicePackChange,onApprovalSoundToggle:this.handleApprovalSoundToggle,approvalGlobal:this.state.approvalGlobal,approvalDismissedIds:this.state.approvalDismissedIds,approvalOwnPending:this.state.approvalOwnPending,onApprovalReopen:this.handleApprovalReopen,proxyProfiles:this.state.proxyProfiles,activeProxyId:this.state.activeProxyId,defaultConfig:this.state.defaultConfig,onProxyProfileChange:this.handleProxyProfileChange,contextBarSlot:this.state.contextBarSlot,claudeProjectModel:this.state.claudeProjectModel})}),this.state.claudeMissing&&jsxRuntimeExports.jsx(Alert,{type:"warning",showIcon:!0,banner:!0,message:t("ui.claudeMissing.title"),description:jsxRuntimeExports.jsxs("span",{children:[t("ui.claudeMissing.desc"),jsxRuntimeExports.jsx("br",{}),jsxRuntimeExports.jsx("code",{style:{background:"var(--bg-code)",padding:"2px 6px",borderRadius:3},children:"npm install -g @anthropic-ai/claude-code"})," ",jsxRuntimeExports.jsx("span",{style:{color:"var(--text-muted)",margin:"0 4px"},children:t("ui.claudeMissing.or")})," ",jsxRuntimeExports.jsx("a",{href:"https://claude.ai/download",target:"_blank",rel:"noopener noreferrer",style:{color:"var(--color-primary-light)"},children:t("ui.claudeMissing.native")})]})}),jsxRuntimeExports.jsxs(Layout.Content,{className:styles$f.content,children:["raw"===viewMode&&(0===filteredRequests.length?jsxRuntimeExports.jsx("div",{className:styles$f.guideContainer,children:jsxRuntimeExports.jsxs("div",{className:styles$f.guideContent,children:[jsxRuntimeExports.jsx("h2",{className:styles$f.guideTitle,children:t("ui.guide.title")}),jsxRuntimeExports.jsxs("div",{className:styles$f.guideStep,children:[jsxRuntimeExports.jsx("div",{className:styles$f.guideStepNum,children:"1"}),jsxRuntimeExports.jsxs("div",{className:styles$f.guideStepBody,children:[jsxRuntimeExports.jsx("p",{className:styles$f.guideText,children:t("ui.guide.step1")}),jsxRuntimeExports.jsx("code",{className:styles$f.guideCode,children:t("ui.guide.exampleQuestion")})]})]}),jsxRuntimeExports.jsxs("div",{className:styles$f.guideStep,children:[jsxRuntimeExports.jsx("div",{className:styles$f.guideStepNum,children:"2"}),jsxRuntimeExports.jsxs("div",{className:styles$f.guideStepBody,children:[jsxRuntimeExports.jsx("p",{className:styles$f.guideText,children:t("ui.guide.step2")}),jsxRuntimeExports.jsx("code",{className:styles$f.guideCode,children:t("ui.guide.troubleshootCmd")})]})]}),jsxRuntimeExports.jsxs("div",{className:styles$f.guideStep,children:[jsxRuntimeExports.jsx("div",{className:styles$f.guideStepNum,children:"3"}),jsxRuntimeExports.jsxs("div",{className:styles$f.guideStepBody,children:[jsxRuntimeExports.jsx("p",{className:styles$f.guideText,children:t("ui.guide.step3")}),jsxRuntimeExports.jsx("code",{className:styles$f.guideCode,children:"npm install -g @anthropic-ai/claude-code"})]})]})]})}):jsxRuntimeExports.jsxs("div",{ref:this.mainContainerRef,className:styles$f.mainContainer,children:[jsxRuntimeExports.jsxs("div",{className:styles$f.leftPanel,style:{width:leftPanelWidth},children:[jsxRuntimeExports.jsxs("div",{className:styles$f.leftPanelHeader,children:[jsxRuntimeExports.jsx("span",{children:t("ui.requestList")}),jsxRuntimeExports.jsx("span",{className:styles$f.leftPanelCount,children:t("ui.totalRequests",{count:filteredRequests.length})})]}),jsxRuntimeExports.jsx("div",{className:styles$f.leftPanelBody,children:jsxRuntimeExports.jsx(RequestList,{requests:filteredRequests,selectedIndex:selectedIndex,scrollCenter:this.state.scrollCenter,onSelect:this.handleSelectRequest,onScrollDone:this.handleScrollDone,cacheLossMap:this._cacheLossMap})})]}),jsxRuntimeExports.jsx(PanelResizer,{onResize:this.handleResize}),jsxRuntimeExports.jsx("div",{className:styles$f.rightPanel,children:jsxRuntimeExports.jsx(DetailPanel,{request:selectedRequest,requests:filteredRequests,allRequests:this.state.requests,selectedIndex:selectedIndex,currentTab:currentTab,onTabChange:this.handleTabChange,onViewInChat:this.handleViewInChat,expandDiff:prefs.expandDiff,pendingCacheHighlight:this.state.pendingCacheHighlight,onCacheHighlightDone:this.handleCacheHighlightDone})})]})),jsxRuntimeExports.jsx("div",{className:styles$f.chatViewWrapper,style:{display:"chat"===viewMode?"flex":"none"},children:jsxRuntimeExports.jsx(ChatView,{...this._settingsProps(),getTokenStatsContent:this._getTokenStatsContent,requests:filteredRequests,mainAgentSessions:mainAgentSessions,streamingLatest:this.state.streamingLatest,userProfile:this.state.userProfile,collapseToolResults:prefs.collapseToolResults,expandThinking:prefs.expandThinking,showFullToolContent:prefs.showFullToolContent,onlyCurrentSession:!this._isLocalLog&&prefs.onlyCurrentSession,isLocalLog:!!this._isLocalLog,showThinkingSummaries:prefs.showThinkingSummaries,onViewRequest:this.handleViewRequest,scrollToTimestamp:this.state.chatScrollToTs,onScrollTsDone:this.handleScrollTsDone,cliMode:!this._isLocalLog&&this.state.cliMode,sdkMode:!this._isLocalLog&&this.state.sdkMode,terminalVisible:!this._isLocalLog&&(!this.state.sdkMode&&this.state.terminalVisible),onToggleTerminal:()=>this.setState(prev=>({terminalVisible:!prev.terminalVisible})),pendingUploadPaths:this.state.pendingUploadPaths,onUploadPathsConsumed:this.handleUploadPathsConsumed,uploadingDrop:this.state.uploadingDrop,fileLoading:this.state.fileLoading,isStreaming:this.state.isStreaming,hasMoreHistory:this.state.hasMoreHistory,loadingMore:this.state.loadingMore,onLoadMoreHistory:()=>this.loadMoreHistory(),loadingSessionId:this.state.loadingSessionId,onLoadSession:sid=>this.loadSession(sid),lang:this.state.lang,autoApproveSeconds:this.state.autoApproveSeconds,onAutoApproveChange:this.handleAutoApproveChange,planAutoApproveSeconds:null==(_a=this.state.approvalPrefs)?void 0:_a.planAutoApproveSeconds,onPlanAutoApproveChange:this.handlePlanAutoApproveChange,onClearContextOptimistic:this.handleClearContextOptimistic,onUserMessageSent:this.handleUserMessageSent,onPendingAsk:this.handleApprovalAsk,onPendingPtyPlan:this.handleApprovalPtyPlan,ownTabId:this.state.ownTabId,projectName:this.state.projectName,setContextBarSlot:this.setContextBarSlot})})]}),jsxRuntimeExports.jsxs("div",{className:styles$f.footer,children:[jsxRuntimeExports.jsx(CountryFlag,{}),!this._isLocalLog&&(this.state.planUsage||"OAuth"===(null==(_b=this.state.defaultConfig)?void 0:_b.authType))&&jsxRuntimeExports.jsx(UsageWindowPill$1,{planUsage:this.state.planUsage,authType:null==(_c=this.state.defaultConfig)?void 0:_c.authType}),jsxRuntimeExports.jsxs("div",{className:styles$f.footerRight,children:[jsxRuntimeExports.jsxs("a",{href:"https://github.com/weiesky/cc-viewer",target:"_blank",rel:"noopener noreferrer",className:styles$f.footerLink,children:[jsxRuntimeExports.jsx("svg",{className:styles$f.footerIcon,viewBox:"0 0 16 16",fill:"currentColor",children:jsxRuntimeExports.jsx("path",{d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"})}),"GitHub",null!=this.state.githubStars?` ★ ${this.state.githubStars}`:""]}),jsxRuntimeExports.jsx("span",{className:styles$f.footerSep,children:"|"}),jsxRuntimeExports.jsxs("span",{className:styles$f.footerVersion,onClick:this.openUpdateModal,style:{cursor:"pointer"},children:["v","1.6.313"]}),this.state.updateInfo&&jsxRuntimeExports.jsx(Tooltip,{title:t("ui.update.majorAvailable",{version:this.state.updateInfo.version}),placement:"top",children:jsxRuntimeExports.jsx("span",{className:styles$f.newBadgeText,onClick:this.openUpdateModal,children:t("ui.update.newBadge")})})]})]})]}),jsxRuntimeExports.jsx(Modal,{title:t("ui.update.title"),open:this.state.updateModalVisible,onCancel:()=>this.setState({updateModalVisible:!1}),footer:null,width:560,children:jsxRuntimeExports.jsxs("div",{style:{lineHeight:1.8},children:[jsxRuntimeExports.jsxs("p",{children:[jsxRuntimeExports.jsxs("strong",{children:[t("ui.update.current"),":"]})," v","1.6.313"]}),this.state.updateInfo&&jsxRuntimeExports.jsxs("p",{children:[jsxRuntimeExports.jsxs("strong",{children:[t("ui.update.latest"),":"]})," v",this.state.updateInfo.version]}),this.renderUpdateInstructions(isElectron?"electron":this.state.installMethod||"npm"),jsxRuntimeExports.jsx("div",{style:{marginTop:16,textAlign:"right"},children:jsxRuntimeExports.jsx(Button,{type:"primary",href:"https://github.com/weiesky/cc-viewer/releases",target:"_blank",rel:"noopener noreferrer",children:t("ui.update.goReleases")})})]})}),jsxRuntimeExports.jsx(Modal,{title:t("ui.resume.title"),open:this.state.resumeModalVisible,closable:!1,maskClosable:!1,keyboard:!1,footer:jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:styles$f.resumeFooterRight,children:[jsxRuntimeExports.jsx(Button,{type:"primary",onClick:()=>this.handleResumeChoice("continue"),className:styles$f.btnMarginRight,children:t("ui.resume.continue")},"continue"),jsxRuntimeExports.jsx(Button,{onClick:()=>this.handleResumeChoice("new"),children:t("ui.resume.new")},"new")]}),jsxRuntimeExports.jsx("div",{className:styles$f.resumeFooterLeft,children:jsxRuntimeExports.jsx(Checkbox,{checked:this.state.resumeRememberChoice,onChange:e=>this.setState({resumeRememberChoice:e.target.checked}),className:styles$f.resumeCheckboxOpacity,children:jsxRuntimeExports.jsx("span",{className:styles$f.resumeCheckboxOpacity,children:t("ui.resume.remember")})})})]}),children:jsxRuntimeExports.jsx("p",{children:t("ui.resume.message",{file:this.state.resumeFileName})})}),jsxRuntimeExports.jsxs(Modal,{title:jsxRuntimeExports.jsxs("span",{className:styles$f.modalTitleInline,children:[jsxRuntimeExports.jsx(OpenFolderIcon,{apiEndpoint:apiUrl("/api/open-log-dir"),title:t("ui.openLogDir"),size:16}),t("ui.importLocalLogs")]}),open:this.state.importModalVisible,onCancel:this.handleCloseImportModal,footer:null,width:1e3,styles:{body:{overflow:"hidden"}},children:[jsxRuntimeExports.jsxs("div",{className:styles$f.modalActions,children:[jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$n,{}),onClick:this.handleLoadLocalJsonlFile,children:t("ui.loadLocalJsonl")}),jsxRuntimeExports.jsx(Button,{size:"small",type:this.state.selectedLogs.size>1&&![...this.state.selectedLogs].some(f=>f.endsWith(".jsonl.zip"))?"primary":"default",disabled:this.state.selectedLogs.size<2||[...this.state.selectedLogs].some(f=>f.endsWith(".jsonl.zip")),onClick:this.handleMergeLogs,className:styles$f.btnMarginLeft,children:t("ui.mergeLogs")}),jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$9,{}),disabled:![...this.state.selectedLogs].some(f=>f.endsWith(".jsonl")),onClick:this.handleArchiveLogs,className:styles$f.btnMarginLeft,children:t("ui.archiveLogs")}),jsxRuntimeExports.jsx(Button,{size:"small",danger:!0,icon:jsxRuntimeExports.jsx(RefIcon$o,{}),disabled:0===this.state.selectedLogs.size,onClick:this.handleDeleteLogs,className:styles$f.btnMarginLeft,children:t("ui.deleteLogs")}),jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$g,{spin:this.state.refreshingStats}),loading:this.state.refreshingStats,onClick:this.handleRefreshStats,className:styles$f.btnMarginLeft,children:t("ui.refreshStats")})]}),this.state.localLogsLoading?jsxRuntimeExports.jsx("div",{className:styles$f.spinCenter,children:jsxRuntimeExports.jsx(Spin,{})}):(()=>{const currentLogs=this.state.localLogs[this.state.currentProject];return currentLogs&&0!==currentLogs.length?jsxRuntimeExports.jsx("div",{className:styles$f.logListContainer,children:this.renderLogTable(currentLogs,!1)}):jsxRuntimeExports.jsx("div",{className:styles$f.emptyCenter,children:t("ui.noLogs")})})()]})]})})})}}export{App as default};