@co0ontty/wand 2.10.1 → 2.11.0

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,30 +1,30 @@
1
- "use strict";(()=>{var Nu="wand-legacy-pwa-cleanup-v1",pd=["wand-static-","wand-runtime-"];function $r(e){if(!e)return!1;try{const t=new URL(e.scriptURL,location.href);return t.origin===location.origin&&t.pathname==="/sw.js"}catch{return!1}}function vd(e){return $r(e.installing)||$r(e.waiting)||$r(e.active)}function md(){try{return localStorage.getItem(Nu)==="done"}catch{return!1}}function gd(){try{localStorage.setItem(Nu,"done")}catch{}}async function hd(){if(!("serviceWorker"in navigator))return!0;try{const t=(await navigator.serviceWorker.getRegistrations()).filter(vd);return await Promise.all(t.map(n=>n.unregister())),!0}catch{return!1}}async function yd(){if(!("caches"in window))return!0;try{const t=(await caches.keys()).filter(n=>pd.some(i=>n.startsWith(i)));return await Promise.all(t.map(n=>caches.delete(n))),!0}catch{return!1}}async function bd(){if(md())return;const e="serviceWorker"in navigator&&$r(navigator.serviceWorker.controller),[t,n]=await Promise.all([hd(),yd()]);!t||!n||(gd(),e&&location.reload())}bd();var Ng="${escapeHtml(configPath)}",na="wand-chat-expand-state-v1",Xr=[function(){}];(function(){try{var t=localStorage.getItem("wand-ls-schema"),n=t==null?0:parseInt(t,10);n>=0||(n=0);for(var i=n;i<Xr.length;i++)try{Xr[i]()}catch{}n<Xr.length&&localStorage.setItem("wand-ls-schema",String(Xr.length))}catch{}})();function ra(e,t){try{var n=localStorage.getItem(e);return n==="true"?!0:n==="false"?!1:t}catch{return t}}function Se(e,t){try{localStorage.setItem(e,String(!!t))}catch{}}var r={selectedId:(function(){try{var e=new URL(window.location.href),t=e.searchParams.get("session");if(t)return localStorage.setItem("wand-selected-session",t),e.searchParams.delete("session"),history.replaceState(history.state,"",e.toString()),t}catch{}try{return localStorage.getItem("wand-selected-session")||null}catch{return null}})(),pollTimer:null,config:null,sessions:[],suggestionTimer:null,terminal:null,terminalFitInProgress:!1,terminalSessionId:null,terminalOutput:"",terminalOutputMarker:0,terminalLiveStreamSessions:{},syncOutputBuffer:null,syncOutputDeadline:0,syncFramingResidue:!1,lastChunkAt:0,terminalHealthTimer:null,lastTerminalResyncAt:0,terminalAutoFollow:!0,terminalProgrammaticScrollUntil:0,terminalScrollIdleTimer:null,terminalScrollThreshold:12,showTerminalJumpToBottom:!1,terminalViewportEl:null,terminalViewportScrollHandler:null,terminalViewportTouchHandler:null,terminalViewportTouchStartHandler:null,terminalTouchStartY:0,terminalComposing:!1,resizeObserver:null,resizeHandler:null,resizeTimer:null,inputQueue:Promise.resolve(),pendingMessages:[],messageQueue:[],crossSessionQueue:(function(){try{var e=localStorage.getItem("wand-cross-session-queue"),t=e?JSON.parse(e):[];return Array.isArray(t)?t:[]}catch{return[]}})(),structuredInputQueue:[],queueBarExpanded:!1,queueBarHoverIndex:null,queueBarDrag:null,queueBarPromoting:!1,drafts:{},isSyncingInputBox:!1,loginPending:!1,loginChecked:!1,bootstrapping:!0,sessionsDrawerOpen:ra("wand-sidebar-open",!1),sidebarPinned:ra("wand-sidebar-pinned",!0),sidebarCollapsed:ra("wand-sidebar-collapsed",!1),modalOpen:!1,presetValue:"",cwdValue:"",modeValue:"managed",chatMode:"managed",chatModels:(function(){try{var e=localStorage.getItem("wand-chat-model")||"";return{claude:localStorage.getItem("wand-chat-model-claude")||e,codex:localStorage.getItem("wand-chat-model-codex")||""}}catch{return{claude:"",codex:""}}})(),chatModel:(function(){try{return localStorage.getItem("wand-chat-model")||""}catch{return""}})(),chatThinking:(function(){try{var e=localStorage.getItem("wand-thinking-effort")||"off";return e==="off"||e==="standard"||e==="deep"||e==="max"||/^codex:[a-z0-9][a-z0-9_-]{0,31}$/.test(e)?e:"off"}catch{return"off"}})(),availableModels:[],availableCodexModels:[],modelsRefreshing:!1,sessionCreateKind:"structured",sessionCreateWorktree:!1,sessionTool:"claude",activeWorktreeMergeSessionId:null,worktreeMergeCheckResult:null,worktreeMergeLoading:!1,worktreeMergeSubmitting:!1,worktreeMergeError:"",preferredCommand:"claude",structuredRunner:"claude-cli-print",lastResize:{cols:0,rows:0},isOnline:navigator.onLine,ws:null,wsConnected:!1,lastWsMessageAt:0,wsHeartbeatCheckTimer:null,_updateBubbleShown:!1,notificationHistory:{},delayedNotificationTimer:null,notifSound:(function(){try{var e=localStorage.getItem("wand-notif-sound");return e===null?!0:e==="true"}catch{return!0}})(),notifVolume:(function(){try{var e=localStorage.getItem("wand-notif-volume");return e===null?80:Math.max(0,Math.min(100,parseInt(e,10)||80))}catch{return 80}})(),notifBubble:(function(){try{var e=localStorage.getItem("wand-notif-bubble");return e===null?!0:e==="true"}catch{return!0}})(),toolContentCache:{},lastSeqBySession:{},currentView:"terminal",terminalScale:(function(){try{var e=localStorage.getItem("wand-terminal-scale");return e?parseFloat(e):1}catch{return 1}})(),terminalBaseFontSize:13,keyboardPopupOpen:!1,filePanelOpen:(function(){try{return localStorage.getItem("wand-file-panel-open")==="true"}catch{return!1}})(),topbarMoreOpen:!1,gitStatus:null,gitStatusSessionId:null,gitStatusLoading:!1,gitStatusInflight:null,gitStatusLastFetchAt:0,quickCommitOpen:!1,quickCommitSubmitting:!1,quickCommitGenerating:!1,quickCommitError:"",quickCommitForm:{customMessage:"",tag:"",tagEdited:!1},quickCommitPushing:!1,quickCommitPushError:"",quickCommitResult:null,quickCommitDragAction:"commit",quickCommitSubmoduleIntent:!1,chatStickToBottom:!0,chatAutoFoldEnabled:!1,chatAutoFoldSnapshot:null,chatUnreadCount:0,chatUnreadStartIndex:-1,chatScrollThreshold:160,chatIsProgrammaticScroll:!1,chatProgrammaticScrollUntil:0,chatScrollElement:null,chatScrollHandler:null,chatScrollWheelHandler:null,chatScrollTouchStartHandler:null,chatScrollTouchMoveHandler:null,chatTouchStartY:0,chatInitialRenderDone:!1,lastForegroundSyncAt:0,foregroundSyncTimer:null,wsReconnectAttempts:0,wsReconnectTimer:null,currentMessages:[],lastRenderedHash:0,lastRenderedMsgCount:0,lastRenderedEmpty:null,renderPending:!1,chatPageSize:20,chatRenderedCount:20,currentTask:null,terminalInteractive:!1,miniKeyboardVisible:!1,modifiers:{ctrl:!1,alt:!1,shift:!1},joystickPos:(function(){try{var e=localStorage.getItem("wand-ball-pos");if(!e)return null;var t=JSON.parse(e);return t&&typeof t=="object"?t:null}catch{return null}})(),joystickPinnedOpen:!1,joystickRootEl:null,joystickPanelEl:null,joystickBackdropEl:null,joystickBallEl:null,joystickPointerId:null,joystickGesture:null,joystickPressStart:null,joystickLongPressTimer:null,joystickMoveHandler:null,joystickUpHandler:null,joystickResizeHandler:null,fileSearchQuery:"",fileExplorerLoading:!1,allFiles:[],fileExplorerCwd:"",fileExplorerTruncated:!1,fileExplorerTotal:0,claudeHistory:[],claudeHistoryLoaded:!1,claudeHistoryExpanded:!1,claudeHistoryExpandedDirs:{},archivedExpanded:!1,sessionsManageMode:!1,selectedSessionIds:{},selectedClaudeHistoryIds:{},codexHistory:[],codexHistoryLoaded:!1,codexHistoryExpandedDirs:{},selectedCodexHistoryIds:{},askUserSelections:{},queueEpoch:0,pendingAttachments:[],workingDir:(function(){try{var e=localStorage.getItem("wand-working-dir");return e||""}catch{return""}})()},ia="\u4E2D\u6587",Zr={\u4E2D\u6587:{"subagent.tag":"\u5B50\u4EE3\u7406","subagent.handoff":"{parent} \u8BA9 {sub} \u5E2E\u5FD9","subagent.handoff.with_desc":"{parent} \u8BA9 {sub} \u5E2E\u5FD9\uFF1A","subagent.continued":"\u7EE7\u7EED\u8F93\u51FA","subagent.task.done":"\u4EFB\u52A1\u5B8C\u6210","subagent.task.failed":"\u4EFB\u52A1\u5931\u8D25","subagent.running":"\u8FD0\u884C\u4E2D","subagent.no_output":"\uFF08\u65E0\u8F93\u51FA\uFF09","subagent.helper_fallback_prefix":"\u534F\u4F5C\u732B\xB7","subagent.title_aria":"\u70B9\u51FB\u5C55\u5F00 / \u6536\u8D77\u5B50\u4EE3\u7406\u8F93\u51FA","subagent.tag_title":"\u5B50\u4EE3\u7406 / subagent","ui.expand":"\u5C55\u5F00","ui.collapse":"\u6536\u8D77","ui.expand_panel_aria":"\u5C55\u5F00\u5B50\u4EE3\u7406\u8F93\u51FA","ui.collapse_panel_aria":"\u6536\u8D77\u5B50\u4EE3\u7406\u8F93\u51FA","history.expand":"\u5C55\u5F00\u5386\u53F2\u5BF9\u8BDD","history.collapse":"\u6536\u8D77\u5386\u53F2\u5BF9\u8BDD","history.rounds":"{n} \u8F6E\u5BF9\u8BDD","history.tools":"{n} \u6B21\u5DE5\u5177\u8C03\u7528","history.agents":"{n} \u4E2A\u5B50\u4EE3\u7406","history.errors":"{n} \u4E2A\u5931\u8D25","stop.confirm.title":"\u505C\u6B62\u4EFB\u52A1","stop.confirm.message":"\u786E\u5B9A\u8981\u505C\u6B62\u5F53\u524D\u6B63\u5728\u8FD0\u884C\u7684\u4EFB\u52A1\u5417\uFF1F","stop.confirm.ok":"\u505C\u6B62","stop.confirm.cancel":"\u53D6\u6D88"},English:{"subagent.tag":"Subagent","subagent.handoff":"{parent} asked {sub} for help","subagent.handoff.with_desc":"{parent} asked {sub} for help with: ","subagent.continued":"continued","subagent.task.done":"Task complete","subagent.task.failed":"Task failed","subagent.running":"Running","subagent.no_output":"(no output)","subagent.helper_fallback_prefix":"Helper\xB7","subagent.title_aria":"Click to expand / collapse subagent output","subagent.tag_title":"Subagent","ui.expand":"Expand","ui.collapse":"Collapse","ui.expand_panel_aria":"Expand subagent output","ui.collapse_panel_aria":"Collapse subagent output","history.expand":"Show earlier conversation","history.collapse":"Hide earlier conversation","history.rounds":"{n} rounds","history.tools":"{n} tool calls","history.agents":"{n} subagents","history.errors":"{n} failed","stop.confirm.title":"Stop task","stop.confirm.message":"Stop the task that's currently running?","stop.confirm.ok":"Stop","stop.confirm.cancel":"Cancel"}};function ju(){var e=r.config&&typeof r.config.language=="string"?r.config.language.trim():"";if(!e)return ia;if(Zr[e])return e;var t=e.toLowerCase();return t==="english"||t==="en"||t.indexOf("english")===0||t.indexOf("\u82F1")===0?"English":t==="\u4E2D\u6587"||t==="zh"||t.indexOf("zh")===0||t.indexOf("\u4E2D")===0||t.indexOf("chinese")===0?"\u4E2D\u6587":"English"}function Ee(e,t){var n=ju(),i=Zr[n]||Zr[ia],a=i&&e in i?i[e]:null;if(a==null){var u=Zr[ia];a=u&&e in u?u[e]:e}if(t&&typeof a=="string")for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(a=a.split("{"+o+"}").join(t[o]));return a}var Ed={shield:'<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>',shieldCheck:'<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/><polyline points="9 12 11 14 15 10"/>',lock:'<rect x="5" y="10" width="14" height="11" rx="2"/><path d="M8 10V7a4 4 0 0 1 8 0v3"/><path d="M12 14v3"/>',certificate:'<path d="M6 3h12v14H6z"/><path d="M9 7h6"/><path d="M9 11h4"/><path d="m10 17-1 4 3-1 3 1-1-4"/>',cpu:'<rect x="7" y="7" width="10" height="10" rx="2"/><path d="M9 1v3"/><path d="M15 1v3"/><path d="M9 20v3"/><path d="M15 20v3"/><path d="M20 9h3"/><path d="M20 15h3"/><path d="M1 9h3"/><path d="M1 15h3"/><rect x="10" y="10" width="4" height="4" rx="1"/>',brain:'<path d="M9.5 4.5a3 3 0 0 0-4.7 3.1 3.3 3.3 0 0 0 .3 6.1A3 3 0 0 0 8 19h1.5V4.5z"/><path d="M14.5 4.5a3 3 0 0 1 4.7 3.1 3.3 3.3 0 0 1-.3 6.1A3 3 0 0 1 16 19h-1.5V4.5z"/><path d="M9.5 8H7.8"/><path d="M14.5 8h1.7"/><path d="M9.5 13H7.6"/><path d="M14.5 13h1.9"/>',keyboard:'<rect x="2" y="6" width="20" height="12" rx="2"/><line x1="6" y1="10" x2="6" y2="10"/><line x1="10" y1="10" x2="10" y2="10"/><line x1="14" y1="10" x2="14" y2="10"/><line x1="18" y1="10" x2="18" y2="10"/><line x1="6" y1="14" x2="6" y2="14"/><line x1="18" y1="14" x2="18" y2="14"/><line x1="9" y1="14" x2="15" y2="14"/>',terminal:'<polyline points="4 7 9 12 4 17"/><line x1="12" y1="17" x2="20" y2="17"/>',chat:'<path d="M21 12a8 8 0 0 1-12.9 6.3L3 20l1.7-5.1A8 8 0 1 1 21 12z"/>',folder:'<path d="M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>',trash:'<polyline points="3 6 5 6 21 6"/><path d="M19 6l-1 13a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"/><path d="M10 11v6"/><path d="M14 11v6"/><path d="M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"/>',chevronDown:'<polyline points="6 9 12 15 18 9"/>',bell:'<path d="M18 16v-5a6 6 0 1 0-12 0v5l-2 2h16z"/><path d="M10 21a2 2 0 0 0 4 0"/>',music:'<path d="M9 18V5l12-2v13"/><circle cx="6" cy="18" r="3"/><circle cx="18" cy="16" r="3"/>',vibrate:'<rect x="9" y="4" width="6" height="16" rx="1"/><path d="M5 8v8"/><path d="M3 10v4"/><path d="M19 8v8"/><path d="M21 10v4"/>',globe:'<circle cx="12" cy="12" r="9"/><line x1="3" y1="12" x2="21" y2="12"/><path d="M12 3a14 14 0 0 1 0 18"/><path d="M12 3a14 14 0 0 0 0 18"/>',smartphone:'<rect x="6" y="2" width="12" height="20" rx="2.5"/><line x1="11" y1="18" x2="13" y2="18"/>',desktop:'<rect x="3" y="4" width="18" height="12" rx="2"/><line x1="8" y1="20" x2="16" y2="20"/><line x1="12" y1="16" x2="12" y2="20"/>',link:'<path d="M10 14a4.5 4.5 0 0 0 6.36 0l3-3a4.5 4.5 0 1 0-6.36-6.36l-1.42 1.41"/><path d="M14 10a4.5 4.5 0 0 0-6.36 0l-3 3a4.5 4.5 0 1 0 6.36 6.36l1.42-1.41"/>',palette:'<circle cx="13.5" cy="6.5" r="1"/><circle cx="17.5" cy="10.5" r="1"/><circle cx="8.5" cy="7.5" r="1"/><circle cx="6.5" cy="12.5" r="1"/><path d="M12 3a9 9 0 1 0 0 18 1.5 1.5 0 0 0 1.1-2.5 1.5 1.5 0 0 1 1.1-2.5h2.3A4.5 4.5 0 0 0 21 11.5C21 6.8 16.97 3 12 3z"/>',play:'<polygon points="6 4 20 12 6 20 6 4"/>',wrench:'<path d="M14.7 6.3a4 4 0 1 1 4 4l-9 9-3.5 1 1-3.5 7.5-7.5z"/>',paw:'<circle cx="7.5" cy="9" r="2" fill="currentColor" stroke="none"/><circle cx="12" cy="6.8" r="2" fill="currentColor" stroke="none"/><circle cx="16.5" cy="9" r="2" fill="currentColor" stroke="none"/><circle cx="18" cy="13.3" r="1.8" fill="currentColor" stroke="none"/><path d="M7.2 16.3c.5-2.9 2.3-4.8 4.8-4.8s4.3 1.9 4.8 4.8c.3 1.8-.9 3.2-2.6 2.6-.8-.3-1.4-.6-2.2-.6s-1.4.3-2.2.6c-1.7.6-2.9-.8-2.6-2.6z" fill="currentColor" stroke="none"/>',edit:'<path d="M12 20h9"/><path d="M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4z"/>',signal:'<path d="M2 12a15 15 0 0 1 20 0"/><path d="M5 16a10 10 0 0 1 14 0"/><path d="M9 20a4 4 0 0 1 6 0"/><circle cx="12" cy="20" r="0.5" fill="currentColor"/>',file:'<path d="M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/><polyline points="14 3 14 9 20 9"/>',sigma:'<polyline points="18 4 6 4 13 12 6 20 18 20"/>',x:'<path d="M18 6 6 18"/><path d="M6 6l12 12"/>',plus:'<line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/>',mic:'<rect x="9" y="3" width="6" height="11" rx="3"/><path d="M5 11a7 7 0 0 0 14 0"/><line x1="12" y1="18" x2="12" y2="21"/><line x1="9" y1="21" x2="15" y2="21"/>',paperclip:'<path d="M21.44 11.05 12.25 20.24a6 6 0 0 1-8.49-8.49l8.84-8.84a4 4 0 1 1 5.66 5.66L9.41 17.41a2 2 0 1 1-2.83-2.83l8.84-8.83"/>'};function V(e,t){var n=Ed[e];if(!n)return"";t=t||{};var i=t.size||14,a=t.strokeWidth||1.8,u=t.cls?' class="'+t.cls+'"':"",o=t.fill||"none";return"<svg"+u+' width="'+i+'" height="'+i+'" viewBox="0 0 24 24" fill="'+o+'" stroke="currentColor" stroke-width="'+a+'" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">'+n+"</svg>"}function rn(){var e=document.getElementById("chat-output");if(!e)return r.chatScrollElement=null,null;var t=e.querySelector(".chat-messages");return t?(r.chatScrollElement=t,t):(r.chatScrollElement=null,null)}function aa(e){var t=e||rn();return t?Math.abs(t.scrollTop)<r.chatScrollThreshold:!0}function jg(e){r.chatStickToBottom=!!e,r.chatStickToBottom&&Cn({removeDivider:!0}),Ge()}function Cn(e){e=e||{};var t=r.chatUnreadCount>0||r.chatUnreadStartIndex>=0;if(r.chatUnreadCount=0,r.chatUnreadStartIndex=-1,e.removeDivider!==!1){var n=rn();if(n){var i=n.querySelector(".chat-unread-divider");i&&i.parentNode&&i.parentNode.removeChild(i)}}t&&Ge()}function ua(e){if(e||(e=rn()),!!e){var t=e.querySelector(".chat-unread-divider");if(r.chatUnreadStartIndex<0||r.chatUnreadCount<=0){t&&t.parentNode&&t.parentNode.removeChild(t);return}for(var n=r.chatUnreadStartIndex,i=e.querySelectorAll(".chat-message"),a=null,u=0;u<i.length;u++){var o=i[u].getAttribute("data-msg-index");if(o!==null){var s=parseInt(o,10);if(!isNaN(s)&&s<n){a=i[u];break}}}var l=r.chatUnreadCount+" \u6761\u65B0\u6D88\u606F";t||(t=document.createElement("div"),t.className="chat-unread-divider",t.setAttribute("role","separator"),t.innerHTML='<span class="chat-unread-divider-line"></span><span class="chat-unread-divider-label"></span><span class="chat-unread-divider-line"></span>'),t.querySelector(".chat-unread-divider-label").textContent=l,a?(t.nextSibling!==a||t.parentNode!==e)&&e.insertBefore(t,a):(t.parentNode!==e||t.nextSibling!==null)&&e.appendChild(t)}}function Ge(){var e=document.getElementById("chat-unread-bubble");if(e){var t=r.sessions.find(function(s){return s.id===r.selectedId}),n=!aa(),i=!!t&&r.currentView==="chat"&&n;e.classList.toggle("visible",i),e.classList.toggle("has-unread",r.chatUnreadCount>0);var a=e.querySelector(".chat-unread-bubble-count");a&&(r.chatUnreadCount>0?(a.textContent=r.chatUnreadCount>99?"99+":String(r.chatUnreadCount),a.classList.add("visible")):(a.textContent="",a.classList.remove("visible")));var u=r.chatUnreadCount>0?r.chatUnreadCount+" \u6761\u65B0\u6D88\u606F\uFF0C\u70B9\u51FB\u67E5\u770B":"\u56DE\u5230\u6700\u65B0\u6D88\u606F";e.setAttribute("aria-label",u),e.setAttribute("title",u);var o=document.getElementById("chat-output");o&&o.classList.toggle("has-jump-btn",i)}}function ei(){oa()}function oa(e){var t=e||rn();if(t){var n=t.querySelector(".chat-pin-spacer");n&&n.parentNode&&n.parentNode.removeChild(n)}}function Ru(e){var t=rn();if(!(!t||!t.isConnected)){ei(),oa(t),r.chatIsProgrammaticScroll=!0;var n=function(){r.chatIsProgrammaticScroll=!1,r.chatStickToBottom=!0,Cn({removeDivider:!0}),Ge()};if(e&&typeof t.scrollTo=="function"){t.scrollTo({top:0,behavior:"smooth"}),setTimeout(n,260);return}t.scrollTop=0,requestAnimationFrame(n)}}function Wu(){var e=rn();ei(),e&&oa(e),r.chatStickToBottom=!0,Cn({removeDivider:!0}),e&&e.isConnected&&(r.chatIsProgrammaticScroll=!0,r.chatProgrammaticScrollUntil=Date.now()+180,e.scrollTop=0,requestAnimationFrame(function(){r.chatIsProgrammaticScroll=!1})),Ge()}function sr(){var e=rn();if(!e||!e.isConnected)return;if(r.chatScrollElement===e&&r.chatScrollHandler){Ge();return}r.chatScrollElement&&(r.chatScrollHandler&&r.chatScrollElement.removeEventListener("scroll",r.chatScrollHandler),r.chatScrollWheelHandler&&r.chatScrollElement.removeEventListener("wheel",r.chatScrollWheelHandler),r.chatScrollTouchStartHandler&&r.chatScrollElement.removeEventListener("touchstart",r.chatScrollTouchStartHandler),r.chatScrollTouchMoveHandler&&r.chatScrollElement.removeEventListener("touchmove",r.chatScrollTouchMoveHandler)),r.chatScrollElement=e;function t(){ei(),r.chatStickToBottom=!1,e.querySelector(".chat-history-summary")&&Ve(!0),Ge()}r.chatScrollHandler=function(){if(e.isConnected){if(r.chatIsProgrammaticScroll||Date.now()<r.chatProgrammaticScrollUntil){Ge();return}var n=aa(e);if(n)ei(),r.chatStickToBottom=!0,Cn({removeDivider:!0});else{t();return}Ge()}},r.chatScrollWheelHandler=function(n){r.chatIsProgrammaticScroll||n.deltaY<0&&t()},r.chatScrollTouchStartHandler=function(n){!n.touches||n.touches.length===0||(r.chatTouchStartY=n.touches[0].clientY)},r.chatScrollTouchMoveHandler=function(n){if(!r.chatIsProgrammaticScroll&&!(!n.touches||n.touches.length===0)){var i=n.touches[0].clientY-r.chatTouchStartY;i>4&&t()}},e.addEventListener("scroll",r.chatScrollHandler,{passive:!0}),e.addEventListener("wheel",r.chatScrollWheelHandler,{passive:!0}),e.addEventListener("touchstart",r.chatScrollTouchStartHandler,{passive:!0}),e.addEventListener("touchmove",r.chatScrollTouchMoveHandler,{passive:!0}),Ge()}function zu(){if(r.chatRenderedCount<r.currentMessages.length){r.chatRenderedCount+=r.chatPageSize,Ve(!0);return}var e=r.sessions.find(function(t){return t.id===r.selectedId});e&&typeof e.messageOffset=="number"&&e.messageOffset>0&&qm()}var lr=null;function Fd(){lr&&(lr.disconnect(),lr=null);var e=document.getElementById("chat-load-more-sentinel");if(e){var t=e.querySelector(".chat-load-more-btn");t&&(t.onclick=function(){zu()});var n=!!(window.matchMedia&&window.matchMedia("(pointer: coarse)").matches),i=window.innerWidth<=768;n||i||window.__wandImeNative||window.__wandIosNative||typeof IntersectionObserver>"u"||(lr=new IntersectionObserver(function(a){for(var u=0;u<a.length;u++)if(a[u].isIntersecting){zu();break}},{root:rn(),rootMargin:"200px"}),lr.observe(e))}}function he(){try{r.selectedId?localStorage.setItem("wand-selected-session",r.selectedId):localStorage.removeItem("wand-selected-session")}catch{}}function sa(e){return e&&Array.isArray(e.queuedMessages)?e.queuedMessages:r.structuredInputQueue}function wd(){var e=r.sessions.find(function(t){return t.id===r.selectedId});return sa(e)}function ti(e){var t=sa(e);r.structuredInputQueue=Array.isArray(t)?t.slice():[]}function Vu(e,t){return!!(e&&Array.isArray(e.content)&&e.content.some(function(n){return n&&typeof n=="object"&&n[t]}))}function Cd(e){return!!(e&&e.role==="user"&&Vu(e,"__queued"))}function Bd(e){return!!(e&&e.role==="assistant"&&Vu(e,"__processing"))}function dr(e){if(!Array.isArray(e))return[];for(var t=!1,n=[],i=0;i<e.length;i++){var a=e[i];if(Cd(a)||Bd(a)){t=!0;continue}n.push(a)}return t?n:e}function Dd(e,t){if(!e||!Array.isArray(e.messages))return e;var n=e.sessionKind||t&&t.sessionKind;if(n!=="structured")return e;var i=dr(e.messages);return i===e.messages?e:Object.assign({},e,{messages:i})}function Uu(){try{var e=wd();if(!r.selectedId||e.length===0)return;localStorage.setItem("wand-structured-queue",JSON.stringify({sessionId:r.selectedId,items:e}))}catch{}}function Ku(e){try{var t=localStorage.getItem("wand-structured-queue");if(!t)return;var n=JSON.parse(t);(!e||!n||n.sessionId===e)&&localStorage.removeItem("wand-structured-queue")}catch{localStorage.removeItem("wand-structured-queue")}}function Ju(){var e=r.sessions.find(function(i){return i.id===r.selectedId});if(e&&Array.isArray(e.queuedMessages)){ti(e),Uu();return}try{var t=localStorage.getItem("wand-structured-queue");if(!t)return;var n=JSON.parse(t);if(!n||n.sessionId!==r.selectedId||!Array.isArray(n.items))return;r.structuredInputQueue=n.items.slice(0,10)}catch{r.structuredInputQueue=[]}}function Jt(){try{if(r.crossSessionQueue.length===0){localStorage.removeItem("wand-cross-session-queue");return}localStorage.setItem("wand-cross-session-queue",JSON.stringify(r.crossSessionQueue))}catch{}}function an(){return r.config&&r.config.defaultCwd||"/tmp"}function Yu(){try{var e=localStorage.getItem(na);if(!e)return{};var t=JSON.parse(e);return t&&typeof t=="object"?t:{}}catch{return{}}}function kd(e){try{if(!e||Object.keys(e).length===0){localStorage.removeItem(na);return}localStorage.setItem(na,JSON.stringify(e))}catch{}}function Ad(){var e=r.selectedId;if(!e)return{};var t=Yu(),n=t[e];return n&&typeof n=="object"?n:{}}function yt(e){if(!e||!r.selectedId)return null;var t=Ad();return typeof t[e]=="boolean"?t[e]:null}function Gu(e,t){if(!(!e||!r.selectedId)){var n=Yu(),i=r.selectedId,a=n[i];(!a||typeof a!="object")&&(a={}),a[e]=!!t,n[i]=a,kd(n)}}function Qu(e,t){return e?e.uuid?"msg:"+e.uuid:e.id?"msg:"+e.id:e.messageId?"msg:"+e.messageId:e.turnId?"msg:"+e.turnId:"msg:"+(typeof t=="number"?t:0):"msg:unknown-"+(typeof t=="number"?t:0)}function Tt(e,t){for(var n=[],i=0;i<t.length;i++){var a=t[i];a==null||a===""||n.push(String(a))}return e+":"+n.join(":")}function la(e){return!e||!e.dataset?"":e.dataset.expandKey||""}function xd(e,t){if(!e)return!1;switch(t){case"tool-card":case"diff":return!e.classList.contains("collapsed");case"thinking":return e.classList.contains("expanded")&&!e.classList.contains("collapsed");case"inline-tool":return e.classList.contains("inline-tool-open");case"terminal":{var n=e.querySelector(".term-body");return n?n.style.display!=="none":e.dataset.expanded==="true"}case"tool-group":return e.getAttribute("data-expanded")==="true";case"subagent-reply":return e.getAttribute("data-expanded")==="true";case"subagent-panel":return e.getAttribute("data-expanded")==="true";default:return!1}}function $u(e,t,n){if(e)switch(t){case"tool-card":case"diff":{e.classList.toggle("collapsed",!n);break}case"thinking":{e.classList.toggle("collapsed",!n),e.classList.toggle("expanded",!!n);var i=e.querySelector(".thinking-inline-preview");if(i){var a=e.dataset.thinking||"",u=a.slice(0,57)+(a.length>60?"\u2026":"");i.textContent=n?a:u}var o=e.querySelector(".thinking-inline-action");o&&(o.textContent=n?"\u6536\u8D77":"\u5C55\u5F00");break}case"inline-tool":{e.classList.toggle("inline-tool-open",!!n);var s=e.querySelector(".inline-tool-expanded");s&&(s.style.display=n?"block":"none");break}case"terminal":{var l=e.querySelector(".term-body");l&&(l.style.display=n?"block":"none"),e.dataset.expanded=n?"true":"false";var d=e.querySelector(".term-toggle-icon");d&&(d.textContent=n?"\u25BC":"\u25B6");break}case"tool-group":{e.setAttribute("data-expanded",n?"true":"false");var f=e.querySelector(".tool-group-body");f&&(f.style.display=n?"block":"none");var c=e.querySelector(".tool-group-chevron");c&&(c.style.transform=n?"rotate(180deg)":"");break}case"subagent-reply":{e.setAttribute("data-expanded",n?"true":"false");var v=e.querySelector(".subagent-reply-toggle-label");v&&(v.textContent=n?"\u6536\u8D77":"\u5C55\u5F00");var h=e.querySelector(".subagent-reply-toggle");h&&(h.setAttribute("aria-expanded",n?"true":"false"),h.setAttribute("aria-label",n?"\u6536\u8D77\u5B50\u4EE3\u7406\u56DE\u590D":"\u5C55\u5F00\u5B50\u4EE3\u7406\u56DE\u590D\u5168\u6587"));break}case"subagent-panel":{e.setAttribute("data-expanded",n?"true":"false");for(var g=e.querySelectorAll(".subagent-panel-toggle"),m=0;m<g.length;m++){var y=g[m];y.setAttribute("aria-expanded",n?"true":"false"),y.setAttribute("aria-label",n?"\u6536\u8D77\u5B50\u4EE3\u7406\u8F93\u51FA":"\u5C55\u5F00\u5B50\u4EE3\u7406\u8F93\u51FA");var C=y.querySelector(".subagent-panel-toggle-label");C&&(C.textContent=n?"\u6536\u8D77":"\u5C55\u5F00")}var E=e.querySelector(".subagent-panel-body");E&&(n?E.scrollTop=0:E.scrollTop=E.scrollHeight);break}}}function Nn(e,t){var n=la(e);n&&Gu(n,xd(e,t))}function da(e){!e||!r.selectedId||e.querySelectorAll("[data-expand-key]").forEach(function(t){var n=la(t),i=t.dataset.expandKind||"",a=yt(n);a===null||!i||$u(t,i,a)})}function Re(){return window.innerWidth<=768}function Xu(){return!!r.sessionsDrawerOpen&&(Re()||!r.sidebarPinned)}function ca(e){r.filePanelOpen=e;try{localStorage.setItem("wand-file-panel-open",String(r.filePanelOpen))}catch{}r.filePanelOpen&&Re()&&(r.sessionsDrawerOpen=!1,Se("wand-sidebar-open",!1)),un(),r.filePanelOpen&&Lt()}function ni(){ca(!r.filePanelOpen)}function Sd(){var e=document.getElementById("file-side-panel"),t=document.querySelector(".main-content"),n=document.getElementById("file-panel-toggle-btn"),i=document.getElementById("file-panel-backdrop");e&&e.classList.toggle("open",r.filePanelOpen),t&&t.classList.toggle("file-panel-open",r.filePanelOpen),i&&i.classList.toggle("open",r.filePanelOpen),n&&n.classList.toggle("active",r.filePanelOpen)}function un(){Rr(),Sd()}function Id(e){var t=document.getElementById("file-explorer-cwd");if(t){var n=e&&e.cwd?e.cwd:an();t.tagName==="INPUT"?document.activeElement!==t&&(t.value=n,Og(t)):t.textContent=n,t.title=n;var i=t.closest(".file-explorer-header");i&&ir(i)}}function Zu(){r.filePanelOpen&&ca(!1)}function eo(e){var t=r.terminalScale+e;if(t=Math.max(.5,Math.min(2,t)),t=Math.round(t*4)/4,t!==r.terminalScale){r.terminalScale=t;try{localStorage.setItem("wand-terminal-scale",String(t))}catch{}to(),Td()}}function to(){if(!(!r.terminal||!r.terminal.element)){var e=r.terminalBaseFontSize*r.terminalScale,t=Math.max(1,Math.round(e)),n=Math.max(1,Math.round(e*1.5));r.terminal.element.style.setProperty("--term-font-size",t+"px"),r.terminal.element.style.setProperty("--term-row-height",n+"px"),typeof r.terminal.remeasure=="function"&&requestAnimationFrame(function(){r.terminal&&r.terminal.remeasure()})}}function Td(){var e=document.getElementById("terminal-scale-label-top");e&&(e.textContent=Math.round(r.terminalScale*100)+"%")}var Ld={"chevron-left":'<path d="M15 18l-6-6 6-6"/>',"arrow-up":'<path d="M12 19V5"/><path d="M5 12l7-7 7 7"/>',refresh:'<path d="M21 12a9 9 0 1 1-3-6.7"/><path d="M21 4v5h-5"/>',eye:'<path d="M1 12s4-7 11-7 11 7 11 7-4 7-11 7S1 12 1 12z"/><circle cx="12" cy="12" r="3"/>',"eye-off":'<path d="M17.94 17.94A10.94 10.94 0 0 1 12 19c-7 0-11-7-11-7a19.86 19.86 0 0 1 4.22-5.18"/><path d="M1 1l22 22"/><path d="M9.9 4.24A10.94 10.94 0 0 1 12 4c7 0 11 7 11 7a19.83 19.83 0 0 1-3.36 4.27"/><path d="M14.12 14.12a3 3 0 1 1-4.24-4.24"/>',x:'<path d="M18 6L6 18"/><path d="M6 6l12 12"/>',search:'<circle cx="11" cy="11" r="7"/><path d="M21 21l-4.3-4.3"/>',copy:'<rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/>',clipboard:'<rect x="8" y="3" width="8" height="4" rx="1"/><path d="M16 5h2a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2"/>',download:'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><path d="M7 10l5 5 5-5"/><path d="M12 15V3"/>',edit:'<path d="M12 20h9"/><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4z"/>',save:'<path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"/><path d="M17 21v-8H7v8"/><path d="M7 3v5h8"/>',"rotate-ccw":'<path d="M3 12a9 9 0 1 0 3-6.7"/><path d="M3 4v5h5"/>',"wrap-text":'<path d="M3 6h18"/><path d="M3 12h15a3 3 0 1 1 0 6h-4"/><path d="M16 16l-2 2 2 2"/><path d="M3 18h6"/>',type:'<path d="M4 7V4h16v3"/><path d="M9 20h6"/><path d="M12 4v16"/>',minus:'<path d="M5 12h14"/>',plus:'<path d="M12 5v14"/><path d="M5 12h14"/>',"send-to-input":'<path d="M22 2L11 13"/><path d="M22 2l-7 20-4-9-9-4z"/>',terminal:'<polyline points="4 17 10 11 4 5"/><line x1="12" y1="19" x2="20" y2="19"/>',"folder-open":'<path d="M6 14l1.45-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.55 6a2 2 0 0 1-1.94 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.93a2 2 0 0 1 1.66.9l.82 1.2a2 2 0 0 0 1.66.9H18a2 2 0 0 1 2 2v2"/>',info:'<circle cx="12" cy="12" r="10"/><line x1="12" y1="16" x2="12" y2="12"/><line x1="12" y1="8" x2="12.01" y2="8"/>'};function Me(e,t){t=t||{};var n=Ld[e]||"",i=t.size||16,a=t.className?" "+t.className:"";return'<svg class="wand-icon wand-icon-'+e+a+'" width="'+i+'" height="'+i+'" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">'+n+"</svg>"}function Md(e){var t=e||an();return t?'<div class="file-tree" id="file-tree" data-cwd="'+p(t)+'"><div class="tree-loading">\u52A0\u8F7D\u4E2D\u2026</div></div>':'<div class="file-explorer empty">\u672A\u914D\u7F6E\u5DE5\u4F5C\u76EE\u5F55\u3002</div>'}var qd={png:"\u{1F5BC}\uFE0F",jpg:"\u{1F5BC}\uFE0F",jpeg:"\u{1F5BC}\uFE0F",gif:"\u{1F5BC}\uFE0F",webp:"\u{1F5BC}\uFE0F",svg:"\u{1F5BC}\uFE0F",avif:"\u{1F5BC}\uFE0F",bmp:"\u{1F5BC}\uFE0F",ico:"\u{1F5BC}\uFE0F",heic:"\u{1F5BC}\uFE0F",heif:"\u{1F5BC}\uFE0F",pdf:"\u{1F4D5}",doc:"\u{1F4D8}",docx:"\u{1F4D8}",odt:"\u{1F4D8}",xls:"\u{1F4CA}",xlsx:"\u{1F4CA}",csv:"\u{1F4CA}",tsv:"\u{1F4CA}",ppt:"\u{1F4D9}",pptx:"\u{1F4D9}",mp4:"\u{1F3AC}",webm:"\u{1F3AC}",mov:"\u{1F3AC}",mkv:"\u{1F3AC}",m4v:"\u{1F3AC}",ogv:"\u{1F3AC}",mp3:"\u{1F3B5}",wav:"\u{1F3B5}",ogg:"\u{1F3B5}",m4a:"\u{1F3B5}",flac:"\u{1F3B5}",aac:"\u{1F3B5}",opus:"\u{1F3B5}",zip:"\u{1F4E6}",tar:"\u{1F4E6}",gz:"\u{1F4E6}",tgz:"\u{1F4E6}",bz2:"\u{1F4E6}","7z":"\u{1F4E6}",rar:"\u{1F4E6}",xz:"\u{1F4E6}",md:"\u{1F4DD}",markdown:"\u{1F4DD}",mdx:"\u{1F4DD}",rst:"\u{1F4DD}",txt:"\u{1F4DD}",log:"\u{1F4DD}",html:"\u{1F310}",htm:"\u{1F310}",xml:"\u{1F310}",css:"\u{1F3A8}",scss:"\u{1F3A8}",less:"\u{1F3A8}",json:"\u2699\uFE0F",jsonc:"\u2699\uFE0F",yaml:"\u2699\uFE0F",yml:"\u2699\uFE0F",toml:"\u2699\uFE0F",ini:"\u2699\uFE0F",cfg:"\u2699\uFE0F",conf:"\u2699\uFE0F",env:"\u2699\uFE0F",editorconfig:"\u2699\uFE0F",ts:"\u{1F4DC}",tsx:"\u{1F4DC}",js:"\u{1F4DC}",jsx:"\u{1F4DC}",mjs:"\u{1F4DC}",cjs:"\u{1F4DC}",py:"\u{1F4DC}",rb:"\u{1F4DC}",go:"\u{1F4DC}",rs:"\u{1F4DC}",java:"\u{1F4DC}",c:"\u{1F4DC}",cpp:"\u{1F4DC}",h:"\u{1F4DC}",hpp:"\u{1F4DC}",cs:"\u{1F4DC}",swift:"\u{1F4DC}",kt:"\u{1F4DC}",scala:"\u{1F4DC}",php:"\u{1F4DC}",sh:"\u{1F4DC}",bash:"\u{1F4DC}",zsh:"\u{1F4DC}",fish:"\u{1F4DC}",lua:"\u{1F4DC}",sql:"\u{1F4DC}",graphql:"\u{1F4DC}",proto:"\u{1F4DC}",vue:"\u{1F4DC}",svelte:"\u{1F4DC}",diff:"\u{1F4DC}",patch:"\u{1F4DC}",ttf:"\u{1F524}",otf:"\u{1F524}",woff:"\u{1F524}",woff2:"\u{1F524}",eot:"\u{1F524}"};function no(e){if(!e)return"\u{1F4C4}";if(e.type==="dir")return"\u{1F4C1}";var t=(e.name||"").toLowerCase();if(t==="dockerfile")return"\u{1F433}";if(t==="makefile")return"\u{1F6E0}\uFE0F";if(t==="license")return"\u{1F4DC}";if(t==="readme")return"\u{1F4DD}";var n=t.lastIndexOf(".");if(n<0||n===t.length-1)return"\u{1F4C4}";var i=t.slice(n+1);return qd[i]||"\u{1F4C4}"}function jn(e){if(typeof e!="number"||!isFinite(e)||e<0)return"";if(e<1024)return e+" B";var t=e/1024;if(t<1024)return(t>=10?Math.round(t):t.toFixed(1))+" KB";var n=t/1024;if(n<1024)return(n>=10?Math.round(n):n.toFixed(1))+" MB";var i=n/1024;return(i>=10?Math.round(i):i.toFixed(1))+" GB"}function Od(e){if(!e)return"";var t=Date.parse(e);return isNaN(t)?"":new Date(t).toLocaleString()}function ro(){if(r.fileExplorerCwd)return r.fileExplorerCwd;if(r.selectedId){var e=r.sessions.find(function(t){return t.id===r.selectedId});if(e&&e.cwd)return e.cwd}return an()}function Lt(e){e=e||{};var t=document.getElementById("file-explorer"),n=document.getElementById("file-explorer-cwd");if(t){var i=e.cwd||ro();if(!i){t.innerHTML='<div class="file-explorer empty">\u6CA1\u6709\u53EF\u663E\u793A\u7684\u5DE5\u4F5C\u76EE\u5F55\u3002</div>';return}r.fileExplorerCwd=i,r.fileExplorerLoading=!0,r.allFiles=[],r.fileExplorerTruncated=!1,r.fileExplorerTotal=0,t.innerHTML='<div class="file-explorer"><div class="tree-loading" style="padding:12px;color:var(--text-muted);font-size:0.8125rem;">\u52A0\u8F7D\u4E2D\u2026</div></div>',n&&(n.tagName==="INPUT"?document.activeElement!==n&&(n.value=i):n.textContent=i,n.title=i);var a="/api/directory?q="+encodeURIComponent(i)+"&gitStatus=true";fetch(a,{credentials:"same-origin"}).then(function(u){if(!u.ok)throw new Error("Failed to load directory.");return u.json()}).then(function(u){r.fileExplorerLoading=!1;var o,s,l;if(Array.isArray(u)?(o=u,s=!1,l=u.length):(o=u&&u.items||[],s=!!(u&&u.truncated),l=u&&u.total||o.length),!o||o.length===0){t.innerHTML='<div class="file-explorer empty">\u7A7A\u76EE\u5F55\u6216\u65E0\u6CD5\u8BBF\u95EE\u3002</div>';return}r.allFiles=o,r.fileExplorerTruncated=s,r.fileExplorerTotal=l,io()}).catch(function(){r.fileExplorerLoading=!1,t.innerHTML='<div class="file-explorer empty">\u52A0\u8F7D\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u8DEF\u5F84\u6216\u6743\u9650\u3002</div>'})}}function io(){var e=document.getElementById("file-explorer");if(e){var t=r.fileExplorerCwd||"";if(t){var n=r.fileSearchQuery,i=r.allFiles||[],a=i;if(n){var u=n.toLowerCase();a=i.filter(function(l){return l.name.toLowerCase().indexOf(u)!==-1})}if(a.length===0){e.innerHTML='<div class="file-explorer empty">'+(n?"\u6CA1\u6709\u627E\u5230\u5339\u914D\u7684\u6587\u4EF6":"\u7A7A\u76EE\u5F55")+"</div>";return}var o="";if(!n&&r.fileExplorerTruncated){var s=i.length;o='<div class="tree-truncated" title="\u540E\u7AEF\u6309\u5B57\u6BCD\u5E8F\u6700\u591A\u8FD4\u56DE '+s+' \u9879">\u663E\u793A\u524D '+s+" \u9879 / \u5171 "+r.fileExplorerTotal+" \u9879</div>"}e.innerHTML='<div class="file-tree" id="file-tree" data-cwd="'+p(t)+'">'+a.map(function(l){return ao(l)}).join("")+"</div>"+o,uo()}}}function ao(e,t){t=t||0;var n=p(e.name),i=e.type==="dir",a=no(e),u=i?"\u25B8":"",o=i?"":" empty",s=e.gitStatus,l=Pd(s),d="";return!i&&typeof e.size=="number"&&(d='<span class="tree-meta" title="\u5927\u5C0F\uFF1A'+p(jn(e.size))+(e.mtime?`
2
- \u4FEE\u6539\u65F6\u95F4\uFF1A`+p(Od(e.mtime)):"")+'">'+p(jn(e.size))+"</span>"),'<div class="tree-item" data-path="'+p(e.path)+'" data-type="'+p(e.type)+'" data-name="'+p(e.name)+'" tabindex="0"><span class="tree-toggle'+o+'">'+u+'</span><span class="tree-icon">'+a+'</span><span class="tree-name">'+n+"</span>"+d+(l?'<span class="git-status-badge '+l.class+'" title="'+l.title+'">'+l.text+"</span>":"")+"</div>"}function Pd(e){return e?e.staged==="added"?{text:"A",class:"git-added",title:"\u5DF2\u6682\u5B58\uFF08\u65B0\u589E\uFF09"}:e.staged==="modified"?{text:"M",class:"git-modified",title:"\u5DF2\u6682\u5B58\uFF08\u4FEE\u6539\uFF09"}:e.staged==="deleted"?{text:"D",class:"git-deleted",title:"\u5DF2\u6682\u5B58\uFF08\u5220\u9664\uFF09"}:e.staged==="renamed"?{text:"R",class:"git-renamed",title:"\u5DF2\u6682\u5B58\uFF08\u91CD\u547D\u540D\uFF09"}:e.unstaged==="modified"?{text:"M",class:"git-unstaged",title:"\u672A\u6682\u5B58\uFF08\u4FEE\u6539\uFF09"}:e.unstaged==="deleted"?{text:"D",class:"git-unstaged-deleted",title:"\u672A\u6682\u5B58\uFF08\u5220\u9664\uFF09"}:e.untracked?{text:"?",class:"git-untracked",title:"\u672A\u8DDF\u8E2A"}:null:null}function uo(){var e=document.getElementById("file-tree");if(e){e.querySelectorAll(".tree-item[data-type='dir']").forEach(function(i){i.addEventListener("click",function(a){Hd(i)})}),e.querySelectorAll(".tree-item[data-type='file']").forEach(function(i){var a=function(){ii(i.dataset.path)};i.addEventListener("click",a),i.addEventListener("dblclick",a)});var t=null,n=!1;e.querySelectorAll(".tree-item").forEach(function(i){i.addEventListener("contextmenu",function(a){a.preventDefault(),oo(a.clientX,a.clientY,i)}),i.addEventListener("touchstart",function(a){n=!1,t=setTimeout(function(){n=!0;var u=a.touches&&a.touches[0];oo(u?u.clientX:0,u?u.clientY:0,i)},500)},{passive:!0}),i.addEventListener("touchend",function(){t&&(clearTimeout(t),t=null)}),i.addEventListener("touchmove",function(){t&&(clearTimeout(t),t=null)})})}}function Hd(e){var t=e.dataset.path,n=e.querySelector(".tree-toggle"),i=e.nextElementSibling;if(i&&i.classList.contains("tree-children")){var a=i.classList.contains("open");i.classList.toggle("open"),n&&n.classList.toggle("open",!a);var u=e.querySelector(".tree-icon");u&&(u.textContent=a?"\u{1F4C1}":"\u{1F4C2}");return}n&&n.classList.add("open");var o=e.querySelector(".tree-icon");o&&(o.textContent="\u{1F4C2}");var s="/api/directory?q="+encodeURIComponent(t)+"&gitStatus=true";fetch(s,{credentials:"same-origin"}).then(function(l){return l.json()}).then(function(l){var d;Array.isArray(l)?d=l:d=l&&l.items||[];var f=document.createElement("div");f.className="tree-children open",!d||d.length===0?f.innerHTML='<div class="tree-item" style="color:var(--text-muted);cursor:default;"><span class="tree-toggle empty">\u25B8</span><span class="tree-name">\uFF08\u7A7A\u76EE\u5F55\uFF09</span></div>':f.innerHTML=d.map(function(c){return ao(c)}).join(""),e.parentNode.insertBefore(f,e.nextSibling),uo()}).catch(function(){})}function _d(){var e=ro();if(e){var t=e.replace(/\/+$/,"").replace(/\/[^\/]+$/,"");t||(t="/"),t!==e&&Lt({cwd:t})}}function fa(e){var t=document.getElementById("input-box");if(!t)return!1;var n=t.value||"",i=n&&!n.endsWith(" ")&&!n.endsWith(`
3
- `)?" ":"";t.value=n+i+e,t.dispatchEvent(new Event("input",{bubbles:!0}));try{t.focus(),t.setSelectionRange(t.value.length,t.value.length)}catch{}return!0}function ri(e){if(navigator.clipboard&&navigator.clipboard.writeText)return navigator.clipboard.writeText(e).then(function(){return!0}).catch(function(){return t()});return Promise.resolve(t());function t(){try{var n=document.createElement("textarea");n.value=e,n.style.position="fixed",n.style.left="-9999px",document.body.appendChild(n),n.select();var i=document.execCommand("copy");return document.body.removeChild(n),i}catch{return!1}}}function bt(e){if(typeof window.showToast=="function"){window.showToast(e);return}var t=document.createElement("div");t.className="wand-mini-toast",t.textContent=e,document.body.appendChild(t),setTimeout(function(){t.classList.add("show")},10),setTimeout(function(){t.classList.remove("show"),setTimeout(function(){t.remove()},220)},1600)}function Rn(){var e=document.getElementById("file-context-menu");e&&e.remove(),document.removeEventListener("click",Rn,!0),document.removeEventListener("scroll",Rn,!0)}function oo(e,t,n){Rn();var i=n.dataset.path||"",a=n.dataset.type||"file",u=r.fileExplorerCwd||"",o=i;u&&i.indexOf(u)===0&&(o=i.slice(u.length).replace(/^\/+/,"")||".");var s=document.createElement("div");s.id="file-context-menu",s.className="file-context-menu";var l=[];a==="file"?l.push({label:"\u6253\u5F00\u9884\u89C8",icon:"\u{1F441}",run:function(){ii(i)}}):l.push({label:"\u8FDB\u5165\u6B64\u76EE\u5F55",icon:"\u{1F4C2}",run:function(){Lt({cwd:i})}}),l.push({label:"\u590D\u5236\u5B8C\u6574\u8DEF\u5F84",icon:"\u{1F4CB}",run:function(){ri(i).then(function(){bt("\u5DF2\u590D\u5236\u8DEF\u5F84")})}}),o&&o!==i&&l.push({label:"\u590D\u5236\u76F8\u5BF9\u8DEF\u5F84",icon:"\u{1F4CB}",run:function(){ri(o).then(function(){bt("\u5DF2\u590D\u5236\u76F8\u5BF9\u8DEF\u5F84")})}}),l.push({label:"\u7C98\u8D34\u8DEF\u5F84\u5230\u8F93\u5165\u6846",icon:"\u270F\uFE0F",run:function(){fa(i)&&bt("\u5DF2\u7C98\u8D34\u5230\u8F93\u5165\u6846")}}),a==="file"&&l.push({label:"\u4E0B\u8F7D\u6587\u4EF6",icon:"\u2B07",run:function(){var g=document.createElement("a");g.href="/api/file-raw?download=1&path="+encodeURIComponent(i),g.rel="noopener",document.body.appendChild(g),g.click(),g.remove()}}),s.innerHTML=l.map(function(g,m){return'<button type="button" class="file-context-menu-item" data-idx="'+m+'"><span class="ctx-icon">'+g.icon+'</span><span class="ctx-label">'+p(g.label)+"</span></button>"}).join(""),document.body.appendChild(s);var d=window.innerWidth,f=window.innerHeight,c=s.getBoundingClientRect(),v=Math.min(e,d-c.width-8),h=Math.min(t,f-c.height-8);s.style.left=Math.max(8,v)+"px",s.style.top=Math.max(8,h)+"px",s.querySelectorAll(".file-context-menu-item").forEach(function(g){g.addEventListener("click",function(m){m.stopPropagation();var y=parseInt(g.dataset.idx,10);Rn(),l[y]&&l[y].run()})}),setTimeout(function(){document.addEventListener("click",Rn,!0),document.addEventListener("scroll",Rn,!0)},0)}var _=null;function ii(e){var t=_&&_.overlay;if(t){_.path=e,_.editing=!1,_.dirty=!1;var o=t.querySelector(".file-preview-title");o&&(o.innerHTML='<span class="file-preview-icon">\u{1F4C4}</span><div class="file-preview-name-block"><div class="file-preview-name-row"><span class="file-preview-filename">\u52A0\u8F7D\u4E2D\u2026</span></div>'+mt("","file-preview-path")+"</div>");var s=t.querySelector(".file-preview-toolbar");s&&(s.innerHTML="");var l=t.querySelector(".file-preview-path");Ou(l,"");var d=t.querySelector(".file-preview-body");d&&(d.innerHTML='<div class="file-preview-loading">\u52A0\u8F7D\u9884\u89C8\u2026</div>')}else{t=document.createElement("div"),t.className="file-preview-overlay",t.innerHTML='<div class="file-preview-modal" tabindex="-1"><div class="file-preview-header"><div class="file-preview-title"><span class="file-preview-icon">\u{1F4C4}</span><div class="file-preview-name-block"><div class="file-preview-name-row"><span class="file-preview-filename">\u52A0\u8F7D\u4E2D\u2026</span></div>'+mt("","file-preview-path")+'</div></div><div class="file-preview-toolbar"></div><button class="file-preview-close" title="\u5173\u95ED (Esc)" aria-label="\u5173\u95ED">'+Me("x",{size:18})+'</button></div><div class="file-preview-body"><div class="file-preview-loading">\u52A0\u8F7D\u9884\u89C8\u2026</div></div></div>',document.body.appendChild(t);var n=t.querySelector(".file-preview-close"),i=function(){if(_&&_.dirty&&typeof on=="function"){on({type:"warning",title:"\u653E\u5F03\u672A\u4FDD\u5B58\u7684\u4FEE\u6539\uFF1F",message:"\u5F53\u524D\u6587\u4EF6\u6709\u672A\u4FDD\u5B58\u7684\u6539\u52A8\uFF0C\u5173\u95ED\u540E\u4F1A\u4E22\u5931\u3002",buttons:[{label:"\u7EE7\u7EED\u7F16\u8F91",value:!1,kind:"ghost"},{label:"\u653E\u5F03\u4FEE\u6539",value:!0,kind:"danger",autofocus:!0}],cancelValue:!1}).then(function(c){c&&a()});return}a()},a=function(){t.remove(),document.removeEventListener("keydown",u),_=null};n.addEventListener("click",i),t.addEventListener("click",function(c){c.target===t&&i()});var u=function(c){if((c.key==="s"||c.key==="S")&&(c.ctrlKey||c.metaKey)&&_&&_.editing){c.preventDefault(),vo();return}if(c.key==="Escape"){if(_&&_.editing){c.preventDefault(),po();return}i();return}_&&(c.target&&(c.target.tagName==="INPUT"||c.target.tagName==="TEXTAREA")||_.editing||(c.key==="ArrowLeft"?(c.preventDefault(),so(-1)):c.key==="ArrowRight"&&(c.preventDefault(),so(1))))};document.addEventListener("keydown",u),_={overlay:t,close:i,path:e,data:null,editing:!1,dirty:!1}}var f=t.querySelector(".file-preview-path");Ou(f,e),fetch("/api/file-preview?path="+encodeURIComponent(e),{credentials:"same-origin"}).then(function(c){return c.json().then(function(v){return{ok:c.ok,status:c.status,data:v}})}).then(function(c){var v=t.querySelector(".file-preview-body");if(!c.ok||c.data&&c.data.error){var h=c.data&&c.data.error||"\u52A0\u8F7D\u5931\u8D25";c.status===413&&c.data&&c.data.size&&(h+="\uFF08\u6587\u4EF6\u5927\u5C0F\uFF1A"+jn(c.data.size)+"\uFF09"),v.innerHTML='<div class="file-preview-error"><span class="preview-error-icon">\u26A0</span><span>'+p(h)+"</span></div>",c.status===413&&pa(t,{kind:"binary",path:e,name:e.split("/").pop()||e,ext:"",size:c.data&&c.data.size||0});return}_.data=c.data,lo(t,c.data)}).catch(function(){var c=t.querySelector(".file-preview-body");c.innerHTML='<div class="file-preview-error"><span class="preview-error-icon">\u26A0</span><span>\u52A0\u8F7D\u9884\u89C8\u5931\u8D25</span></div>'})}function so(e){if(_){var t=(r.allFiles||[]).filter(function(s){return s.type==="file"});if(t.length){for(var n=_.path,i=-1,a=0;a<t.length;a++)if(t[a].path===n){i=a;break}if(!(i<0)){var u=(i+e+t.length)%t.length,o=t[u].path;o&&o!==n&&ii(o)}}}}function lo(e,t){var n=e.querySelector(".file-preview-filename");n&&(n.textContent=t.name);var i=e.querySelector(".file-preview-icon");i&&(i.textContent=no({name:t.name,type:"file"}));var a=e.querySelector(".file-preview-title"),u=e.querySelector(".file-preview-lang");u&&u.remove();var o=document.createElement("span");o.className="file-preview-lang";var s={image:"\u56FE\u7247",pdf:"PDF",video:"\u89C6\u9891",audio:"\u97F3\u9891",binary:"\u4E8C\u8FDB\u5236"};t.kind==="text"?o.textContent=t.lang||(t.ext||"").replace(".","")||"text":o.textContent=s[t.kind]||(t.ext||"").replace(".","")||t.kind,a&&a.appendChild(o),pa(e,t);var l=e.querySelector(".file-preview-body");l.innerHTML="",l.classList.remove("kind-text","kind-image","kind-pdf","kind-video","kind-audio","kind-binary"),l.classList.add("kind-"+(t.kind||"text")),t.kind==="image"?jd(l,t):t.kind==="pdf"?Rd(l,t):t.kind==="video"?Wd(l,t):t.kind==="audio"?zd(l,t):t.kind==="binary"?Vd(l,t):t.lang==="markdown"||/\.(md|markdown|mdx)$/i.test(t.name||"")?l.innerHTML='<div class="markdown-preview">'+Yd(t.content||"")+"</div>":Nd(l,t)}function Nd(e,t){var n=go(t.content||"",t.lang),i=n.split(`
1
+ "use strict";(()=>{var Ru="wand-legacy-pwa-cleanup-v1",md=["wand-static-","wand-runtime-"];function $r(e){if(!e)return!1;try{const t=new URL(e.scriptURL,location.href);return t.origin===location.origin&&t.pathname==="/sw.js"}catch{return!1}}function gd(e){return $r(e.installing)||$r(e.waiting)||$r(e.active)}function hd(){try{return localStorage.getItem(Ru)==="done"}catch{return!1}}function yd(){try{localStorage.setItem(Ru,"done")}catch{}}async function bd(){if(!("serviceWorker"in navigator))return!0;try{const t=(await navigator.serviceWorker.getRegistrations()).filter(gd);return await Promise.all(t.map(n=>n.unregister())),!0}catch{return!1}}async function Ed(){if(!("caches"in window))return!0;try{const t=(await caches.keys()).filter(n=>md.some(i=>n.startsWith(i)));return await Promise.all(t.map(n=>caches.delete(n))),!0}catch{return!1}}async function Fd(){if(hd())return;const e="serviceWorker"in navigator&&$r(navigator.serviceWorker.controller),[t,n]=await Promise.all([bd(),Ed()]);!t||!n||(yd(),e&&location.reload())}Fd();var Wg="${escapeHtml(configPath)}",ia="wand-chat-expand-state-v1",Xr=[function(){}];(function(){try{var t=localStorage.getItem("wand-ls-schema"),n=t==null?0:parseInt(t,10);n>=0||(n=0);for(var i=n;i<Xr.length;i++)try{Xr[i]()}catch{}n<Xr.length&&localStorage.setItem("wand-ls-schema",String(Xr.length))}catch{}})();function aa(e,t){try{var n=localStorage.getItem(e);return n==="true"?!0:n==="false"?!1:t}catch{return t}}function Se(e,t){try{localStorage.setItem(e,String(!!t))}catch{}}var r={selectedId:(function(){try{var e=new URL(window.location.href),t=e.searchParams.get("session");if(t)return localStorage.setItem("wand-selected-session",t),e.searchParams.delete("session"),history.replaceState(history.state,"",e.toString()),t}catch{}try{return localStorage.getItem("wand-selected-session")||null}catch{return null}})(),pollTimer:null,config:null,sessions:[],suggestionTimer:null,terminal:null,terminalFitInProgress:!1,terminalSessionId:null,terminalOutput:"",terminalOutputMarker:0,terminalLiveStreamSessions:{},syncOutputBuffer:null,syncOutputDeadline:0,syncFramingResidue:!1,lastChunkAt:0,terminalHealthTimer:null,lastTerminalResyncAt:0,terminalAutoFollow:!0,terminalProgrammaticScrollUntil:0,terminalScrollIdleTimer:null,terminalScrollThreshold:12,showTerminalJumpToBottom:!1,terminalViewportEl:null,terminalViewportScrollHandler:null,terminalViewportTouchHandler:null,terminalViewportTouchStartHandler:null,terminalTouchStartY:0,terminalComposing:!1,resizeObserver:null,resizeHandler:null,resizeTimer:null,inputQueue:Promise.resolve(),pendingMessages:[],messageQueue:[],crossSessionQueue:(function(){try{var e=localStorage.getItem("wand-cross-session-queue"),t=e?JSON.parse(e):[];return Array.isArray(t)?t:[]}catch{return[]}})(),structuredInputQueue:[],queueBarExpanded:!1,queueBarHoverIndex:null,queueBarDrag:null,queueBarPromoting:!1,drafts:{},isSyncingInputBox:!1,loginPending:!1,loginChecked:!1,bootstrapping:!0,sessionsDrawerOpen:aa("wand-sidebar-open",!1),sidebarPinned:aa("wand-sidebar-pinned",!0),sidebarCollapsed:aa("wand-sidebar-collapsed",!1),modalOpen:!1,presetValue:"",cwdValue:"",modeValue:"managed",chatMode:"managed",chatModels:(function(){try{var e=localStorage.getItem("wand-chat-model")||"";return{claude:localStorage.getItem("wand-chat-model-claude")||e,codex:localStorage.getItem("wand-chat-model-codex")||""}}catch{return{claude:"",codex:""}}})(),chatModel:(function(){try{return localStorage.getItem("wand-chat-model")||""}catch{return""}})(),chatThinking:(function(){try{var e=localStorage.getItem("wand-thinking-effort")||"off";return e==="off"||e==="standard"||e==="deep"||e==="max"||/^codex:[a-z0-9][a-z0-9_-]{0,31}$/.test(e)?e:"off"}catch{return"off"}})(),availableModels:[],availableCodexModels:[],modelsRefreshing:!1,sessionCreateKind:"structured",sessionCreateWorktree:!1,sessionTool:"claude",activeWorktreeMergeSessionId:null,worktreeMergeCheckResult:null,worktreeMergeLoading:!1,worktreeMergeSubmitting:!1,worktreeMergeError:"",preferredCommand:"claude",structuredRunner:"claude-cli-print",lastResize:{cols:0,rows:0},isOnline:navigator.onLine,ws:null,wsConnected:!1,lastWsMessageAt:0,wsHeartbeatCheckTimer:null,_updateBubbleShown:!1,notificationHistory:{},delayedNotificationTimer:null,notifSound:(function(){try{var e=localStorage.getItem("wand-notif-sound");return e===null?!0:e==="true"}catch{return!0}})(),notifVolume:(function(){try{var e=localStorage.getItem("wand-notif-volume");return e===null?80:Math.max(0,Math.min(100,parseInt(e,10)||80))}catch{return 80}})(),notifBubble:(function(){try{var e=localStorage.getItem("wand-notif-bubble");return e===null?!0:e==="true"}catch{return!0}})(),toolContentCache:{},lastSeqBySession:{},currentView:"terminal",terminalScale:(function(){try{var e=localStorage.getItem("wand-terminal-scale");return e?parseFloat(e):1}catch{return 1}})(),terminalBaseFontSize:13,keyboardPopupOpen:!1,filePanelOpen:(function(){try{return localStorage.getItem("wand-file-panel-open")==="true"}catch{return!1}})(),topbarMoreOpen:!1,gitStatus:null,gitStatusSessionId:null,gitStatusLoading:!1,gitStatusInflight:null,gitStatusLastFetchAt:0,quickCommitOpen:!1,quickCommitSubmitting:!1,quickCommitGenerating:!1,quickCommitError:"",quickCommitForm:{customMessage:"",tag:"",tagEdited:!1},quickCommitPushing:!1,quickCommitPushError:"",quickCommitResult:null,quickCommitDragAction:"commit",quickCommitSubmoduleIntent:!1,chatStickToBottom:!0,chatAutoFoldEnabled:!1,chatAutoFoldSnapshot:null,chatUnreadCount:0,chatUnreadStartIndex:-1,chatScrollThreshold:160,chatIsProgrammaticScroll:!1,chatProgrammaticScrollUntil:0,chatScrollElement:null,chatScrollHandler:null,chatScrollWheelHandler:null,chatScrollTouchStartHandler:null,chatScrollTouchMoveHandler:null,chatTouchStartY:0,chatInitialRenderDone:!1,lastForegroundSyncAt:0,foregroundSyncTimer:null,wsReconnectAttempts:0,wsReconnectTimer:null,currentMessages:[],lastRenderedHash:0,lastRenderedMsgCount:0,lastRenderedEmpty:null,renderPending:!1,chatPageSize:20,chatRenderedCount:20,currentTask:null,terminalInteractive:!1,miniKeyboardVisible:!1,modifiers:{ctrl:!1,alt:!1,shift:!1},joystickPos:(function(){try{var e=localStorage.getItem("wand-ball-pos");if(!e)return null;var t=JSON.parse(e);return t&&typeof t=="object"?t:null}catch{return null}})(),joystickPinnedOpen:!1,joystickRootEl:null,joystickPanelEl:null,joystickBackdropEl:null,joystickBallEl:null,joystickPointerId:null,joystickGesture:null,joystickPressStart:null,joystickLongPressTimer:null,joystickMoveHandler:null,joystickUpHandler:null,joystickResizeHandler:null,fileSearchQuery:"",fileExplorerLoading:!1,allFiles:[],fileExplorerCwd:"",fileExplorerTruncated:!1,fileExplorerTotal:0,claudeHistory:[],claudeHistoryLoaded:!1,claudeHistoryExpanded:!1,claudeHistoryExpandedDirs:{},archivedExpanded:!1,sessionsManageMode:!1,selectedSessionIds:{},selectedClaudeHistoryIds:{},codexHistory:[],codexHistoryLoaded:!1,codexHistoryExpandedDirs:{},selectedCodexHistoryIds:{},askUserSelections:{},queueEpoch:0,pendingAttachments:[],workingDir:(function(){try{var e=localStorage.getItem("wand-working-dir");return e||""}catch{return""}})()},ua="\u4E2D\u6587",Zr={\u4E2D\u6587:{"subagent.tag":"\u5B50\u4EE3\u7406","subagent.handoff":"{parent} \u8BA9 {sub} \u5E2E\u5FD9","subagent.handoff.with_desc":"{parent} \u8BA9 {sub} \u5E2E\u5FD9\uFF1A","subagent.continued":"\u7EE7\u7EED\u8F93\u51FA","subagent.task.done":"\u4EFB\u52A1\u5B8C\u6210","subagent.task.failed":"\u4EFB\u52A1\u5931\u8D25","subagent.running":"\u8FD0\u884C\u4E2D","subagent.no_output":"\uFF08\u65E0\u8F93\u51FA\uFF09","subagent.helper_fallback_prefix":"\u534F\u4F5C\u732B\xB7","subagent.title_aria":"\u70B9\u51FB\u5C55\u5F00 / \u6536\u8D77\u5B50\u4EE3\u7406\u8F93\u51FA","subagent.tag_title":"\u5B50\u4EE3\u7406 / subagent","ui.expand":"\u5C55\u5F00","ui.collapse":"\u6536\u8D77","ui.expand_panel_aria":"\u5C55\u5F00\u5B50\u4EE3\u7406\u8F93\u51FA","ui.collapse_panel_aria":"\u6536\u8D77\u5B50\u4EE3\u7406\u8F93\u51FA","history.expand":"\u5C55\u5F00\u5386\u53F2\u5BF9\u8BDD","history.collapse":"\u6536\u8D77\u5386\u53F2\u5BF9\u8BDD","history.rounds":"{n} \u8F6E\u5BF9\u8BDD","history.tools":"{n} \u6B21\u5DE5\u5177\u8C03\u7528","history.agents":"{n} \u4E2A\u5B50\u4EE3\u7406","history.errors":"{n} \u4E2A\u5931\u8D25","stop.confirm.title":"\u505C\u6B62\u4EFB\u52A1","stop.confirm.message":"\u786E\u5B9A\u8981\u505C\u6B62\u5F53\u524D\u6B63\u5728\u8FD0\u884C\u7684\u4EFB\u52A1\u5417\uFF1F","stop.confirm.ok":"\u505C\u6B62","stop.confirm.cancel":"\u53D6\u6D88"},English:{"subagent.tag":"Subagent","subagent.handoff":"{parent} asked {sub} for help","subagent.handoff.with_desc":"{parent} asked {sub} for help with: ","subagent.continued":"continued","subagent.task.done":"Task complete","subagent.task.failed":"Task failed","subagent.running":"Running","subagent.no_output":"(no output)","subagent.helper_fallback_prefix":"Helper\xB7","subagent.title_aria":"Click to expand / collapse subagent output","subagent.tag_title":"Subagent","ui.expand":"Expand","ui.collapse":"Collapse","ui.expand_panel_aria":"Expand subagent output","ui.collapse_panel_aria":"Collapse subagent output","history.expand":"Show earlier conversation","history.collapse":"Hide earlier conversation","history.rounds":"{n} rounds","history.tools":"{n} tool calls","history.agents":"{n} subagents","history.errors":"{n} failed","stop.confirm.title":"Stop task","stop.confirm.message":"Stop the task that's currently running?","stop.confirm.ok":"Stop","stop.confirm.cancel":"Cancel"}};function Wu(){var e=r.config&&typeof r.config.language=="string"?r.config.language.trim():"";if(!e)return ua;if(Zr[e])return e;var t=e.toLowerCase();return t==="english"||t==="en"||t.indexOf("english")===0||t.indexOf("\u82F1")===0?"English":t==="\u4E2D\u6587"||t==="zh"||t.indexOf("zh")===0||t.indexOf("\u4E2D")===0||t.indexOf("chinese")===0?"\u4E2D\u6587":"English"}function Ee(e,t){var n=Wu(),i=Zr[n]||Zr[ua],a=i&&e in i?i[e]:null;if(a==null){var u=Zr[ua];a=u&&e in u?u[e]:e}if(t&&typeof a=="string")for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(a=a.split("{"+o+"}").join(t[o]));return a}var wd={shield:'<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>',shieldCheck:'<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/><polyline points="9 12 11 14 15 10"/>',lock:'<rect x="5" y="10" width="14" height="11" rx="2"/><path d="M8 10V7a4 4 0 0 1 8 0v3"/><path d="M12 14v3"/>',certificate:'<path d="M6 3h12v14H6z"/><path d="M9 7h6"/><path d="M9 11h4"/><path d="m10 17-1 4 3-1 3 1-1-4"/>',cpu:'<rect x="7" y="7" width="10" height="10" rx="2"/><path d="M9 1v3"/><path d="M15 1v3"/><path d="M9 20v3"/><path d="M15 20v3"/><path d="M20 9h3"/><path d="M20 15h3"/><path d="M1 9h3"/><path d="M1 15h3"/><rect x="10" y="10" width="4" height="4" rx="1"/>',brain:'<path d="M9.5 4.5a3 3 0 0 0-4.7 3.1 3.3 3.3 0 0 0 .3 6.1A3 3 0 0 0 8 19h1.5V4.5z"/><path d="M14.5 4.5a3 3 0 0 1 4.7 3.1 3.3 3.3 0 0 1-.3 6.1A3 3 0 0 1 16 19h-1.5V4.5z"/><path d="M9.5 8H7.8"/><path d="M14.5 8h1.7"/><path d="M9.5 13H7.6"/><path d="M14.5 13h1.9"/>',keyboard:'<rect x="2" y="6" width="20" height="12" rx="2"/><line x1="6" y1="10" x2="6" y2="10"/><line x1="10" y1="10" x2="10" y2="10"/><line x1="14" y1="10" x2="14" y2="10"/><line x1="18" y1="10" x2="18" y2="10"/><line x1="6" y1="14" x2="6" y2="14"/><line x1="18" y1="14" x2="18" y2="14"/><line x1="9" y1="14" x2="15" y2="14"/>',terminal:'<polyline points="4 7 9 12 4 17"/><line x1="12" y1="17" x2="20" y2="17"/>',chat:'<path d="M21 12a8 8 0 0 1-12.9 6.3L3 20l1.7-5.1A8 8 0 1 1 21 12z"/>',folder:'<path d="M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>',trash:'<polyline points="3 6 5 6 21 6"/><path d="M19 6l-1 13a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"/><path d="M10 11v6"/><path d="M14 11v6"/><path d="M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"/>',chevronDown:'<polyline points="6 9 12 15 18 9"/>',bell:'<path d="M18 16v-5a6 6 0 1 0-12 0v5l-2 2h16z"/><path d="M10 21a2 2 0 0 0 4 0"/>',music:'<path d="M9 18V5l12-2v13"/><circle cx="6" cy="18" r="3"/><circle cx="18" cy="16" r="3"/>',vibrate:'<rect x="9" y="4" width="6" height="16" rx="1"/><path d="M5 8v8"/><path d="M3 10v4"/><path d="M19 8v8"/><path d="M21 10v4"/>',globe:'<circle cx="12" cy="12" r="9"/><line x1="3" y1="12" x2="21" y2="12"/><path d="M12 3a14 14 0 0 1 0 18"/><path d="M12 3a14 14 0 0 0 0 18"/>',smartphone:'<rect x="6" y="2" width="12" height="20" rx="2.5"/><line x1="11" y1="18" x2="13" y2="18"/>',desktop:'<rect x="3" y="4" width="18" height="12" rx="2"/><line x1="8" y1="20" x2="16" y2="20"/><line x1="12" y1="16" x2="12" y2="20"/>',link:'<path d="M10 14a4.5 4.5 0 0 0 6.36 0l3-3a4.5 4.5 0 1 0-6.36-6.36l-1.42 1.41"/><path d="M14 10a4.5 4.5 0 0 0-6.36 0l-3 3a4.5 4.5 0 1 0 6.36 6.36l1.42-1.41"/>',palette:'<circle cx="13.5" cy="6.5" r="1"/><circle cx="17.5" cy="10.5" r="1"/><circle cx="8.5" cy="7.5" r="1"/><circle cx="6.5" cy="12.5" r="1"/><path d="M12 3a9 9 0 1 0 0 18 1.5 1.5 0 0 0 1.1-2.5 1.5 1.5 0 0 1 1.1-2.5h2.3A4.5 4.5 0 0 0 21 11.5C21 6.8 16.97 3 12 3z"/>',play:'<polygon points="6 4 20 12 6 20 6 4"/>',wrench:'<path d="M14.7 6.3a4 4 0 1 1 4 4l-9 9-3.5 1 1-3.5 7.5-7.5z"/>',paw:'<circle cx="7.5" cy="9" r="2" fill="currentColor" stroke="none"/><circle cx="12" cy="6.8" r="2" fill="currentColor" stroke="none"/><circle cx="16.5" cy="9" r="2" fill="currentColor" stroke="none"/><circle cx="18" cy="13.3" r="1.8" fill="currentColor" stroke="none"/><path d="M7.2 16.3c.5-2.9 2.3-4.8 4.8-4.8s4.3 1.9 4.8 4.8c.3 1.8-.9 3.2-2.6 2.6-.8-.3-1.4-.6-2.2-.6s-1.4.3-2.2.6c-1.7.6-2.9-.8-2.6-2.6z" fill="currentColor" stroke="none"/>',edit:'<path d="M12 20h9"/><path d="M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4z"/>',signal:'<path d="M2 12a15 15 0 0 1 20 0"/><path d="M5 16a10 10 0 0 1 14 0"/><path d="M9 20a4 4 0 0 1 6 0"/><circle cx="12" cy="20" r="0.5" fill="currentColor"/>',file:'<path d="M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/><polyline points="14 3 14 9 20 9"/>',sigma:'<polyline points="18 4 6 4 13 12 6 20 18 20"/>',x:'<path d="M18 6 6 18"/><path d="M6 6l12 12"/>',plus:'<line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/>',mic:'<rect x="9" y="3" width="6" height="11" rx="3"/><path d="M5 11a7 7 0 0 0 14 0"/><line x1="12" y1="18" x2="12" y2="21"/><line x1="9" y1="21" x2="15" y2="21"/>',paperclip:'<path d="M21.44 11.05 12.25 20.24a6 6 0 0 1-8.49-8.49l8.84-8.84a4 4 0 1 1 5.66 5.66L9.41 17.41a2 2 0 1 1-2.83-2.83l8.84-8.83"/>'};function V(e,t){var n=wd[e];if(!n)return"";t=t||{};var i=t.size||14,a=t.strokeWidth||1.8,u=t.cls?' class="'+t.cls+'"':"",o=t.fill||"none";return"<svg"+u+' width="'+i+'" height="'+i+'" viewBox="0 0 24 24" fill="'+o+'" stroke="currentColor" stroke-width="'+a+'" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">'+n+"</svg>"}function rn(){var e=document.getElementById("chat-output");if(!e)return r.chatScrollElement=null,null;var t=e.querySelector(".chat-messages");return t?(r.chatScrollElement=t,t):(r.chatScrollElement=null,null)}function oa(e){var t=e||rn();return t?Math.abs(t.scrollTop)<r.chatScrollThreshold:!0}function zg(e){r.chatStickToBottom=!!e,r.chatStickToBottom&&Cn({removeDivider:!0}),Ge()}function Cn(e){e=e||{};var t=r.chatUnreadCount>0||r.chatUnreadStartIndex>=0;if(r.chatUnreadCount=0,r.chatUnreadStartIndex=-1,e.removeDivider!==!1){var n=rn();if(n){var i=n.querySelector(".chat-unread-divider");i&&i.parentNode&&i.parentNode.removeChild(i)}}t&&Ge()}function sa(e){if(e||(e=rn()),!!e){var t=e.querySelector(".chat-unread-divider");if(r.chatUnreadStartIndex<0||r.chatUnreadCount<=0){t&&t.parentNode&&t.parentNode.removeChild(t);return}for(var n=r.chatUnreadStartIndex,i=e.querySelectorAll(".chat-message"),a=null,u=0;u<i.length;u++){var o=i[u].getAttribute("data-msg-index");if(o!==null){var s=parseInt(o,10);if(!isNaN(s)&&s<n){a=i[u];break}}}var l=r.chatUnreadCount+" \u6761\u65B0\u6D88\u606F";t||(t=document.createElement("div"),t.className="chat-unread-divider",t.setAttribute("role","separator"),t.innerHTML='<span class="chat-unread-divider-line"></span><span class="chat-unread-divider-label"></span><span class="chat-unread-divider-line"></span>'),t.querySelector(".chat-unread-divider-label").textContent=l,a?(t.nextSibling!==a||t.parentNode!==e)&&e.insertBefore(t,a):(t.parentNode!==e||t.nextSibling!==null)&&e.appendChild(t)}}function Ge(){var e=document.getElementById("chat-unread-bubble");if(e){var t=r.sessions.find(function(s){return s.id===r.selectedId}),n=!oa(),i=!!t&&r.currentView==="chat"&&n;e.classList.toggle("visible",i),e.classList.toggle("has-unread",r.chatUnreadCount>0);var a=e.querySelector(".chat-unread-bubble-count");a&&(r.chatUnreadCount>0?(a.textContent=r.chatUnreadCount>99?"99+":String(r.chatUnreadCount),a.classList.add("visible")):(a.textContent="",a.classList.remove("visible")));var u=r.chatUnreadCount>0?r.chatUnreadCount+" \u6761\u65B0\u6D88\u606F\uFF0C\u70B9\u51FB\u67E5\u770B":"\u56DE\u5230\u6700\u65B0\u6D88\u606F";e.setAttribute("aria-label",u),e.setAttribute("title",u);var o=document.getElementById("chat-output");o&&o.classList.toggle("has-jump-btn",i)}}function ei(){la()}function la(e){var t=e||rn();if(t){var n=t.querySelector(".chat-pin-spacer");n&&n.parentNode&&n.parentNode.removeChild(n)}}function zu(e){var t=rn();if(!(!t||!t.isConnected)){ei(),la(t),r.chatIsProgrammaticScroll=!0;var n=function(){r.chatIsProgrammaticScroll=!1,r.chatStickToBottom=!0,Cn({removeDivider:!0}),Ge()};if(e&&typeof t.scrollTo=="function"){t.scrollTo({top:0,behavior:"smooth"}),setTimeout(n,260);return}t.scrollTop=0,requestAnimationFrame(n)}}function Vu(){var e=rn();ei(),e&&la(e),r.chatStickToBottom=!0,Cn({removeDivider:!0}),e&&e.isConnected&&(r.chatIsProgrammaticScroll=!0,r.chatProgrammaticScrollUntil=Date.now()+180,e.scrollTop=0,requestAnimationFrame(function(){r.chatIsProgrammaticScroll=!1})),Ge()}function lr(){var e=rn();if(!e||!e.isConnected)return;if(r.chatScrollElement===e&&r.chatScrollHandler){Ge();return}r.chatScrollElement&&(r.chatScrollHandler&&r.chatScrollElement.removeEventListener("scroll",r.chatScrollHandler),r.chatScrollWheelHandler&&r.chatScrollElement.removeEventListener("wheel",r.chatScrollWheelHandler),r.chatScrollTouchStartHandler&&r.chatScrollElement.removeEventListener("touchstart",r.chatScrollTouchStartHandler),r.chatScrollTouchMoveHandler&&r.chatScrollElement.removeEventListener("touchmove",r.chatScrollTouchMoveHandler)),r.chatScrollElement=e;function t(){ei(),r.chatStickToBottom=!1,e.querySelector(".chat-history-summary")&&Ve(!0),Ge()}r.chatScrollHandler=function(){if(e.isConnected){if(r.chatIsProgrammaticScroll||Date.now()<r.chatProgrammaticScrollUntil){Ge();return}var n=oa(e);if(n)ei(),r.chatStickToBottom=!0,Cn({removeDivider:!0});else{t();return}Ge()}},r.chatScrollWheelHandler=function(n){r.chatIsProgrammaticScroll||n.deltaY<0&&t()},r.chatScrollTouchStartHandler=function(n){!n.touches||n.touches.length===0||(r.chatTouchStartY=n.touches[0].clientY)},r.chatScrollTouchMoveHandler=function(n){if(!r.chatIsProgrammaticScroll&&!(!n.touches||n.touches.length===0)){var i=n.touches[0].clientY-r.chatTouchStartY;i>4&&t()}},e.addEventListener("scroll",r.chatScrollHandler,{passive:!0}),e.addEventListener("wheel",r.chatScrollWheelHandler,{passive:!0}),e.addEventListener("touchstart",r.chatScrollTouchStartHandler,{passive:!0}),e.addEventListener("touchmove",r.chatScrollTouchMoveHandler,{passive:!0}),Ge()}function Uu(){if(r.chatRenderedCount<r.currentMessages.length){r.chatRenderedCount+=r.chatPageSize,Ve(!0);return}var e=r.sessions.find(function(t){return t.id===r.selectedId});e&&typeof e.messageOffset=="number"&&e.messageOffset>0&&Om()}var dr=null;function Cd(){dr&&(dr.disconnect(),dr=null);var e=document.getElementById("chat-load-more-sentinel");if(e){var t=e.querySelector(".chat-load-more-btn");t&&(t.onclick=function(){Uu()});var n=!!(window.matchMedia&&window.matchMedia("(pointer: coarse)").matches),i=window.innerWidth<=768;n||i||window.__wandImeNative||window.__wandIosNative||typeof IntersectionObserver>"u"||(dr=new IntersectionObserver(function(a){for(var u=0;u<a.length;u++)if(a[u].isIntersecting){Uu();break}},{root:rn(),rootMargin:"200px"}),dr.observe(e))}}function he(){try{r.selectedId?localStorage.setItem("wand-selected-session",r.selectedId):localStorage.removeItem("wand-selected-session")}catch{}}function da(e){return e&&Array.isArray(e.queuedMessages)?e.queuedMessages:r.structuredInputQueue}function Bd(){var e=r.sessions.find(function(t){return t.id===r.selectedId});return da(e)}function ti(e){var t=da(e);r.structuredInputQueue=Array.isArray(t)?t.slice():[]}function Ku(e,t){return!!(e&&Array.isArray(e.content)&&e.content.some(function(n){return n&&typeof n=="object"&&n[t]}))}function Dd(e){return!!(e&&e.role==="user"&&Ku(e,"__queued"))}function kd(e){return!!(e&&e.role==="assistant"&&Ku(e,"__processing"))}function cr(e){if(!Array.isArray(e))return[];for(var t=!1,n=[],i=0;i<e.length;i++){var a=e[i];if(Dd(a)||kd(a)){t=!0;continue}n.push(a)}return t?n:e}function Ad(e,t){if(!e||!Array.isArray(e.messages))return e;var n=e.sessionKind||t&&t.sessionKind;if(n!=="structured")return e;var i=cr(e.messages);return i===e.messages?e:Object.assign({},e,{messages:i})}function Ju(){try{var e=Bd();if(!r.selectedId||e.length===0)return;localStorage.setItem("wand-structured-queue",JSON.stringify({sessionId:r.selectedId,items:e}))}catch{}}function Yu(e){try{var t=localStorage.getItem("wand-structured-queue");if(!t)return;var n=JSON.parse(t);(!e||!n||n.sessionId===e)&&localStorage.removeItem("wand-structured-queue")}catch{localStorage.removeItem("wand-structured-queue")}}function Gu(){var e=r.sessions.find(function(i){return i.id===r.selectedId});if(e&&Array.isArray(e.queuedMessages)){ti(e),Ju();return}try{var t=localStorage.getItem("wand-structured-queue");if(!t)return;var n=JSON.parse(t);if(!n||n.sessionId!==r.selectedId||!Array.isArray(n.items))return;r.structuredInputQueue=n.items.slice(0,10)}catch{r.structuredInputQueue=[]}}function Jt(){try{if(r.crossSessionQueue.length===0){localStorage.removeItem("wand-cross-session-queue");return}localStorage.setItem("wand-cross-session-queue",JSON.stringify(r.crossSessionQueue))}catch{}}function an(){return r.config&&r.config.defaultCwd||"/tmp"}function Qu(){try{var e=localStorage.getItem(ia);if(!e)return{};var t=JSON.parse(e);return t&&typeof t=="object"?t:{}}catch{return{}}}function xd(e){try{if(!e||Object.keys(e).length===0){localStorage.removeItem(ia);return}localStorage.setItem(ia,JSON.stringify(e))}catch{}}function Sd(){var e=r.selectedId;if(!e)return{};var t=Qu(),n=t[e];return n&&typeof n=="object"?n:{}}function bt(e){if(!e||!r.selectedId)return null;var t=Sd();return typeof t[e]=="boolean"?t[e]:null}function $u(e,t){if(!(!e||!r.selectedId)){var n=Qu(),i=r.selectedId,a=n[i];(!a||typeof a!="object")&&(a={}),a[e]=!!t,n[i]=a,xd(n)}}function Xu(e,t){return e?e.uuid?"msg:"+e.uuid:e.id?"msg:"+e.id:e.messageId?"msg:"+e.messageId:e.turnId?"msg:"+e.turnId:"msg:"+(typeof t=="number"?t:0):"msg:unknown-"+(typeof t=="number"?t:0)}function Tt(e,t){for(var n=[],i=0;i<t.length;i++){var a=t[i];a==null||a===""||n.push(String(a))}return e+":"+n.join(":")}function ca(e){return!e||!e.dataset?"":e.dataset.expandKey||""}function Id(e,t){if(!e)return!1;switch(t){case"tool-card":case"diff":return!e.classList.contains("collapsed");case"thinking":return e.classList.contains("expanded")&&!e.classList.contains("collapsed");case"inline-tool":return e.classList.contains("inline-tool-open");case"terminal":{var n=e.querySelector(".term-body");return n?n.style.display!=="none":e.dataset.expanded==="true"}case"tool-group":return e.getAttribute("data-expanded")==="true";case"subagent-reply":return e.getAttribute("data-expanded")==="true";case"subagent-panel":return e.getAttribute("data-expanded")==="true";default:return!1}}function Zu(e,t,n){if(e)switch(t){case"tool-card":case"diff":{e.classList.toggle("collapsed",!n);break}case"thinking":{e.classList.toggle("collapsed",!n),e.classList.toggle("expanded",!!n);var i=e.querySelector(".thinking-inline-preview");if(i){var a=e.dataset.thinking||"",u=a.slice(0,57)+(a.length>60?"\u2026":"");i.textContent=n?a:u}var o=e.querySelector(".thinking-inline-action");o&&(o.textContent=n?"\u6536\u8D77":"\u5C55\u5F00");break}case"inline-tool":{e.classList.toggle("inline-tool-open",!!n);var s=e.querySelector(".inline-tool-expanded");s&&(s.style.display=n?"block":"none");break}case"terminal":{var l=e.querySelector(".term-body");l&&(l.style.display=n?"block":"none"),e.dataset.expanded=n?"true":"false";var d=e.querySelector(".term-toggle-icon");d&&(d.textContent=n?"\u25BC":"\u25B6");break}case"tool-group":{e.setAttribute("data-expanded",n?"true":"false");var f=e.querySelector(".tool-group-body");f&&(f.style.display=n?"block":"none");var c=e.querySelector(".tool-group-chevron");c&&(c.style.transform=n?"rotate(180deg)":"");break}case"subagent-reply":{e.setAttribute("data-expanded",n?"true":"false");var v=e.querySelector(".subagent-reply-toggle-label");v&&(v.textContent=n?"\u6536\u8D77":"\u5C55\u5F00");var h=e.querySelector(".subagent-reply-toggle");h&&(h.setAttribute("aria-expanded",n?"true":"false"),h.setAttribute("aria-label",n?"\u6536\u8D77\u5B50\u4EE3\u7406\u56DE\u590D":"\u5C55\u5F00\u5B50\u4EE3\u7406\u56DE\u590D\u5168\u6587"));break}case"subagent-panel":{e.setAttribute("data-expanded",n?"true":"false");for(var g=e.querySelectorAll(".subagent-panel-toggle"),m=0;m<g.length;m++){var y=g[m];y.setAttribute("aria-expanded",n?"true":"false"),y.setAttribute("aria-label",n?"\u6536\u8D77\u5B50\u4EE3\u7406\u8F93\u51FA":"\u5C55\u5F00\u5B50\u4EE3\u7406\u8F93\u51FA");var C=y.querySelector(".subagent-panel-toggle-label");C&&(C.textContent=n?"\u6536\u8D77":"\u5C55\u5F00")}var E=e.querySelector(".subagent-panel-body");E&&(n?E.scrollTop=0:E.scrollTop=E.scrollHeight);break}}}function Nn(e,t){var n=ca(e);n&&$u(n,Id(e,t))}function fa(e){!e||!r.selectedId||e.querySelectorAll("[data-expand-key]").forEach(function(t){var n=ca(t),i=t.dataset.expandKind||"",a=bt(n);a===null||!i||Zu(t,i,a)})}function Re(){return window.innerWidth<=768}function eo(){return!!r.sessionsDrawerOpen&&(Re()||!r.sidebarPinned)}function pa(e){r.filePanelOpen=e;try{localStorage.setItem("wand-file-panel-open",String(r.filePanelOpen))}catch{}r.filePanelOpen&&Re()&&(r.sessionsDrawerOpen=!1,Se("wand-sidebar-open",!1)),un(),r.filePanelOpen&&Lt()}function ni(){pa(!r.filePanelOpen)}function Td(){var e=document.getElementById("file-side-panel"),t=document.querySelector(".main-content"),n=document.getElementById("file-panel-toggle-btn"),i=document.getElementById("file-panel-backdrop");e&&e.classList.toggle("open",r.filePanelOpen),t&&t.classList.toggle("file-panel-open",r.filePanelOpen),i&&i.classList.toggle("open",r.filePanelOpen),n&&n.classList.toggle("active",r.filePanelOpen)}function un(){Rr(),Td()}function Ld(e){var t=document.getElementById("file-explorer-cwd");if(t){var n=e&&e.cwd?e.cwd:an();t.tagName==="INPUT"?document.activeElement!==t&&(t.value=n,_g(t)):t.textContent=n,t.title=n;var i=t.closest(".file-explorer-header");i&&ar(i)}}function to(){r.filePanelOpen&&pa(!1)}function no(e){var t=r.terminalScale+e;if(t=Math.max(.5,Math.min(2,t)),t=Math.round(t*4)/4,t!==r.terminalScale){r.terminalScale=t;try{localStorage.setItem("wand-terminal-scale",String(t))}catch{}ro(),Md()}}function ro(){if(!(!r.terminal||!r.terminal.element)){var e=r.terminalBaseFontSize*r.terminalScale,t=Math.max(1,Math.round(e)),n=Math.max(1,Math.round(e*1.5));r.terminal.element.style.setProperty("--term-font-size",t+"px"),r.terminal.element.style.setProperty("--term-row-height",n+"px"),typeof r.terminal.remeasure=="function"&&requestAnimationFrame(function(){r.terminal&&r.terminal.remeasure()})}}function Md(){var e=document.getElementById("terminal-scale-label-top");e&&(e.textContent=Math.round(r.terminalScale*100)+"%")}var qd={"chevron-left":'<path d="M15 18l-6-6 6-6"/>',"arrow-up":'<path d="M12 19V5"/><path d="M5 12l7-7 7 7"/>',refresh:'<path d="M21 12a9 9 0 1 1-3-6.7"/><path d="M21 4v5h-5"/>',eye:'<path d="M1 12s4-7 11-7 11 7 11 7-4 7-11 7S1 12 1 12z"/><circle cx="12" cy="12" r="3"/>',"eye-off":'<path d="M17.94 17.94A10.94 10.94 0 0 1 12 19c-7 0-11-7-11-7a19.86 19.86 0 0 1 4.22-5.18"/><path d="M1 1l22 22"/><path d="M9.9 4.24A10.94 10.94 0 0 1 12 4c7 0 11 7 11 7a19.83 19.83 0 0 1-3.36 4.27"/><path d="M14.12 14.12a3 3 0 1 1-4.24-4.24"/>',x:'<path d="M18 6L6 18"/><path d="M6 6l12 12"/>',search:'<circle cx="11" cy="11" r="7"/><path d="M21 21l-4.3-4.3"/>',copy:'<rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/>',clipboard:'<rect x="8" y="3" width="8" height="4" rx="1"/><path d="M16 5h2a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2"/>',download:'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><path d="M7 10l5 5 5-5"/><path d="M12 15V3"/>',edit:'<path d="M12 20h9"/><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4z"/>',save:'<path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"/><path d="M17 21v-8H7v8"/><path d="M7 3v5h8"/>',"rotate-ccw":'<path d="M3 12a9 9 0 1 0 3-6.7"/><path d="M3 4v5h5"/>',"wrap-text":'<path d="M3 6h18"/><path d="M3 12h15a3 3 0 1 1 0 6h-4"/><path d="M16 16l-2 2 2 2"/><path d="M3 18h6"/>',type:'<path d="M4 7V4h16v3"/><path d="M9 20h6"/><path d="M12 4v16"/>',minus:'<path d="M5 12h14"/>',plus:'<path d="M12 5v14"/><path d="M5 12h14"/>',"send-to-input":'<path d="M22 2L11 13"/><path d="M22 2l-7 20-4-9-9-4z"/>',terminal:'<polyline points="4 17 10 11 4 5"/><line x1="12" y1="19" x2="20" y2="19"/>',"folder-open":'<path d="M6 14l1.45-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.55 6a2 2 0 0 1-1.94 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.93a2 2 0 0 1 1.66.9l.82 1.2a2 2 0 0 0 1.66.9H18a2 2 0 0 1 2 2v2"/>',info:'<circle cx="12" cy="12" r="10"/><line x1="12" y1="16" x2="12" y2="12"/><line x1="12" y1="8" x2="12.01" y2="8"/>'};function Me(e,t){t=t||{};var n=qd[e]||"",i=t.size||16,a=t.className?" "+t.className:"";return'<svg class="wand-icon wand-icon-'+e+a+'" width="'+i+'" height="'+i+'" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">'+n+"</svg>"}function Pd(e){var t=e||an();return t?'<div class="file-tree" id="file-tree" data-cwd="'+p(t)+'"><div class="tree-loading">\u52A0\u8F7D\u4E2D\u2026</div></div>':'<div class="file-explorer empty">\u672A\u914D\u7F6E\u5DE5\u4F5C\u76EE\u5F55\u3002</div>'}var Od={png:"\u{1F5BC}\uFE0F",jpg:"\u{1F5BC}\uFE0F",jpeg:"\u{1F5BC}\uFE0F",gif:"\u{1F5BC}\uFE0F",webp:"\u{1F5BC}\uFE0F",svg:"\u{1F5BC}\uFE0F",avif:"\u{1F5BC}\uFE0F",bmp:"\u{1F5BC}\uFE0F",ico:"\u{1F5BC}\uFE0F",heic:"\u{1F5BC}\uFE0F",heif:"\u{1F5BC}\uFE0F",pdf:"\u{1F4D5}",doc:"\u{1F4D8}",docx:"\u{1F4D8}",odt:"\u{1F4D8}",xls:"\u{1F4CA}",xlsx:"\u{1F4CA}",csv:"\u{1F4CA}",tsv:"\u{1F4CA}",ppt:"\u{1F4D9}",pptx:"\u{1F4D9}",mp4:"\u{1F3AC}",webm:"\u{1F3AC}",mov:"\u{1F3AC}",mkv:"\u{1F3AC}",m4v:"\u{1F3AC}",ogv:"\u{1F3AC}",mp3:"\u{1F3B5}",wav:"\u{1F3B5}",ogg:"\u{1F3B5}",m4a:"\u{1F3B5}",flac:"\u{1F3B5}",aac:"\u{1F3B5}",opus:"\u{1F3B5}",zip:"\u{1F4E6}",tar:"\u{1F4E6}",gz:"\u{1F4E6}",tgz:"\u{1F4E6}",bz2:"\u{1F4E6}","7z":"\u{1F4E6}",rar:"\u{1F4E6}",xz:"\u{1F4E6}",md:"\u{1F4DD}",markdown:"\u{1F4DD}",mdx:"\u{1F4DD}",rst:"\u{1F4DD}",txt:"\u{1F4DD}",log:"\u{1F4DD}",html:"\u{1F310}",htm:"\u{1F310}",xml:"\u{1F310}",css:"\u{1F3A8}",scss:"\u{1F3A8}",less:"\u{1F3A8}",json:"\u2699\uFE0F",jsonc:"\u2699\uFE0F",yaml:"\u2699\uFE0F",yml:"\u2699\uFE0F",toml:"\u2699\uFE0F",ini:"\u2699\uFE0F",cfg:"\u2699\uFE0F",conf:"\u2699\uFE0F",env:"\u2699\uFE0F",editorconfig:"\u2699\uFE0F",ts:"\u{1F4DC}",tsx:"\u{1F4DC}",js:"\u{1F4DC}",jsx:"\u{1F4DC}",mjs:"\u{1F4DC}",cjs:"\u{1F4DC}",py:"\u{1F4DC}",rb:"\u{1F4DC}",go:"\u{1F4DC}",rs:"\u{1F4DC}",java:"\u{1F4DC}",c:"\u{1F4DC}",cpp:"\u{1F4DC}",h:"\u{1F4DC}",hpp:"\u{1F4DC}",cs:"\u{1F4DC}",swift:"\u{1F4DC}",kt:"\u{1F4DC}",scala:"\u{1F4DC}",php:"\u{1F4DC}",sh:"\u{1F4DC}",bash:"\u{1F4DC}",zsh:"\u{1F4DC}",fish:"\u{1F4DC}",lua:"\u{1F4DC}",sql:"\u{1F4DC}",graphql:"\u{1F4DC}",proto:"\u{1F4DC}",vue:"\u{1F4DC}",svelte:"\u{1F4DC}",diff:"\u{1F4DC}",patch:"\u{1F4DC}",ttf:"\u{1F524}",otf:"\u{1F524}",woff:"\u{1F524}",woff2:"\u{1F524}",eot:"\u{1F524}"};function io(e){if(!e)return"\u{1F4C4}";if(e.type==="dir")return"\u{1F4C1}";var t=(e.name||"").toLowerCase();if(t==="dockerfile")return"\u{1F433}";if(t==="makefile")return"\u{1F6E0}\uFE0F";if(t==="license")return"\u{1F4DC}";if(t==="readme")return"\u{1F4DD}";var n=t.lastIndexOf(".");if(n<0||n===t.length-1)return"\u{1F4C4}";var i=t.slice(n+1);return Od[i]||"\u{1F4C4}"}function jn(e){if(typeof e!="number"||!isFinite(e)||e<0)return"";if(e<1024)return e+" B";var t=e/1024;if(t<1024)return(t>=10?Math.round(t):t.toFixed(1))+" KB";var n=t/1024;if(n<1024)return(n>=10?Math.round(n):n.toFixed(1))+" MB";var i=n/1024;return(i>=10?Math.round(i):i.toFixed(1))+" GB"}function Hd(e){if(!e)return"";var t=Date.parse(e);return isNaN(t)?"":new Date(t).toLocaleString()}function ao(){if(r.fileExplorerCwd)return r.fileExplorerCwd;if(r.selectedId){var e=r.sessions.find(function(t){return t.id===r.selectedId});if(e&&e.cwd)return e.cwd}return an()}function Lt(e){e=e||{};var t=document.getElementById("file-explorer"),n=document.getElementById("file-explorer-cwd");if(t){var i=e.cwd||ao();if(!i){t.innerHTML='<div class="file-explorer empty">\u6CA1\u6709\u53EF\u663E\u793A\u7684\u5DE5\u4F5C\u76EE\u5F55\u3002</div>';return}r.fileExplorerCwd=i,r.fileExplorerLoading=!0,r.allFiles=[],r.fileExplorerTruncated=!1,r.fileExplorerTotal=0,t.innerHTML='<div class="file-explorer"><div class="tree-loading" style="padding:12px;color:var(--text-muted);font-size:0.8125rem;">\u52A0\u8F7D\u4E2D\u2026</div></div>',n&&(n.tagName==="INPUT"?document.activeElement!==n&&(n.value=i):n.textContent=i,n.title=i);var a="/api/directory?q="+encodeURIComponent(i)+"&gitStatus=true";fetch(a,{credentials:"same-origin"}).then(function(u){if(!u.ok)throw new Error("Failed to load directory.");return u.json()}).then(function(u){r.fileExplorerLoading=!1;var o,s,l;if(Array.isArray(u)?(o=u,s=!1,l=u.length):(o=u&&u.items||[],s=!!(u&&u.truncated),l=u&&u.total||o.length),!o||o.length===0){t.innerHTML='<div class="file-explorer empty">\u7A7A\u76EE\u5F55\u6216\u65E0\u6CD5\u8BBF\u95EE\u3002</div>';return}r.allFiles=o,r.fileExplorerTruncated=s,r.fileExplorerTotal=l,uo()}).catch(function(){r.fileExplorerLoading=!1,t.innerHTML='<div class="file-explorer empty">\u52A0\u8F7D\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u8DEF\u5F84\u6216\u6743\u9650\u3002</div>'})}}function uo(){var e=document.getElementById("file-explorer");if(e){var t=r.fileExplorerCwd||"";if(t){var n=r.fileSearchQuery,i=r.allFiles||[],a=i;if(n){var u=n.toLowerCase();a=i.filter(function(l){return l.name.toLowerCase().indexOf(u)!==-1})}if(a.length===0){e.innerHTML='<div class="file-explorer empty">'+(n?"\u6CA1\u6709\u627E\u5230\u5339\u914D\u7684\u6587\u4EF6":"\u7A7A\u76EE\u5F55")+"</div>";return}var o="";if(!n&&r.fileExplorerTruncated){var s=i.length;o='<div class="tree-truncated" title="\u540E\u7AEF\u6309\u5B57\u6BCD\u5E8F\u6700\u591A\u8FD4\u56DE '+s+' \u9879">\u663E\u793A\u524D '+s+" \u9879 / \u5171 "+r.fileExplorerTotal+" \u9879</div>"}e.innerHTML='<div class="file-tree" id="file-tree" data-cwd="'+p(t)+'">'+a.map(function(l){return oo(l)}).join("")+"</div>"+o,so()}}}function oo(e,t){t=t||0;var n=p(e.name),i=e.type==="dir",a=io(e),u=i?"\u25B8":"",o=i?"":" empty",s=e.gitStatus,l=_d(s),d="";return!i&&typeof e.size=="number"&&(d='<span class="tree-meta" title="\u5927\u5C0F\uFF1A'+p(jn(e.size))+(e.mtime?`
2
+ \u4FEE\u6539\u65F6\u95F4\uFF1A`+p(Hd(e.mtime)):"")+'">'+p(jn(e.size))+"</span>"),'<div class="tree-item" data-path="'+p(e.path)+'" data-type="'+p(e.type)+'" data-name="'+p(e.name)+'" tabindex="0"><span class="tree-toggle'+o+'">'+u+'</span><span class="tree-icon">'+a+'</span><span class="tree-name">'+n+"</span>"+d+(l?'<span class="git-status-badge '+l.class+'" title="'+l.title+'">'+l.text+"</span>":"")+"</div>"}function _d(e){return e?e.staged==="added"?{text:"A",class:"git-added",title:"\u5DF2\u6682\u5B58\uFF08\u65B0\u589E\uFF09"}:e.staged==="modified"?{text:"M",class:"git-modified",title:"\u5DF2\u6682\u5B58\uFF08\u4FEE\u6539\uFF09"}:e.staged==="deleted"?{text:"D",class:"git-deleted",title:"\u5DF2\u6682\u5B58\uFF08\u5220\u9664\uFF09"}:e.staged==="renamed"?{text:"R",class:"git-renamed",title:"\u5DF2\u6682\u5B58\uFF08\u91CD\u547D\u540D\uFF09"}:e.unstaged==="modified"?{text:"M",class:"git-unstaged",title:"\u672A\u6682\u5B58\uFF08\u4FEE\u6539\uFF09"}:e.unstaged==="deleted"?{text:"D",class:"git-unstaged-deleted",title:"\u672A\u6682\u5B58\uFF08\u5220\u9664\uFF09"}:e.untracked?{text:"?",class:"git-untracked",title:"\u672A\u8DDF\u8E2A"}:null:null}function so(){var e=document.getElementById("file-tree");if(e){e.querySelectorAll(".tree-item[data-type='dir']").forEach(function(i){i.addEventListener("click",function(a){Nd(i)})}),e.querySelectorAll(".tree-item[data-type='file']").forEach(function(i){var a=function(){ii(i.dataset.path)};i.addEventListener("click",a),i.addEventListener("dblclick",a)});var t=null,n=!1;e.querySelectorAll(".tree-item").forEach(function(i){i.addEventListener("contextmenu",function(a){a.preventDefault(),lo(a.clientX,a.clientY,i)}),i.addEventListener("touchstart",function(a){n=!1,t=setTimeout(function(){n=!0;var u=a.touches&&a.touches[0];lo(u?u.clientX:0,u?u.clientY:0,i)},500)},{passive:!0}),i.addEventListener("touchend",function(){t&&(clearTimeout(t),t=null)}),i.addEventListener("touchmove",function(){t&&(clearTimeout(t),t=null)})})}}function Nd(e){var t=e.dataset.path,n=e.querySelector(".tree-toggle"),i=e.nextElementSibling;if(i&&i.classList.contains("tree-children")){var a=i.classList.contains("open");i.classList.toggle("open"),n&&n.classList.toggle("open",!a);var u=e.querySelector(".tree-icon");u&&(u.textContent=a?"\u{1F4C1}":"\u{1F4C2}");return}n&&n.classList.add("open");var o=e.querySelector(".tree-icon");o&&(o.textContent="\u{1F4C2}");var s="/api/directory?q="+encodeURIComponent(t)+"&gitStatus=true";fetch(s,{credentials:"same-origin"}).then(function(l){return l.json()}).then(function(l){var d;Array.isArray(l)?d=l:d=l&&l.items||[];var f=document.createElement("div");f.className="tree-children open",!d||d.length===0?f.innerHTML='<div class="tree-item" style="color:var(--text-muted);cursor:default;"><span class="tree-toggle empty">\u25B8</span><span class="tree-name">\uFF08\u7A7A\u76EE\u5F55\uFF09</span></div>':f.innerHTML=d.map(function(c){return oo(c)}).join(""),e.parentNode.insertBefore(f,e.nextSibling),so()}).catch(function(){})}function jd(){var e=ao();if(e){var t=e.replace(/\/+$/,"").replace(/\/[^\/]+$/,"");t||(t="/"),t!==e&&Lt({cwd:t})}}function va(e){var t=document.getElementById("input-box");if(!t)return!1;var n=t.value||"",i=n&&!n.endsWith(" ")&&!n.endsWith(`
3
+ `)?" ":"";t.value=n+i+e,t.dispatchEvent(new Event("input",{bubbles:!0}));try{t.focus(),t.setSelectionRange(t.value.length,t.value.length)}catch{}return!0}function ri(e){if(navigator.clipboard&&navigator.clipboard.writeText)return navigator.clipboard.writeText(e).then(function(){return!0}).catch(function(){return t()});return Promise.resolve(t());function t(){try{var n=document.createElement("textarea");n.value=e,n.style.position="fixed",n.style.left="-9999px",document.body.appendChild(n),n.select();var i=document.execCommand("copy");return document.body.removeChild(n),i}catch{return!1}}}function Et(e){if(typeof window.showToast=="function"){window.showToast(e);return}var t=document.createElement("div");t.className="wand-mini-toast",t.textContent=e,document.body.appendChild(t),setTimeout(function(){t.classList.add("show")},10),setTimeout(function(){t.classList.remove("show"),setTimeout(function(){t.remove()},220)},1600)}function Rn(){var e=document.getElementById("file-context-menu");e&&e.remove(),document.removeEventListener("click",Rn,!0),document.removeEventListener("scroll",Rn,!0)}function lo(e,t,n){Rn();var i=n.dataset.path||"",a=n.dataset.type||"file",u=r.fileExplorerCwd||"",o=i;u&&i.indexOf(u)===0&&(o=i.slice(u.length).replace(/^\/+/,"")||".");var s=document.createElement("div");s.id="file-context-menu",s.className="file-context-menu";var l=[];a==="file"?l.push({label:"\u6253\u5F00\u9884\u89C8",icon:"\u{1F441}",run:function(){ii(i)}}):l.push({label:"\u8FDB\u5165\u6B64\u76EE\u5F55",icon:"\u{1F4C2}",run:function(){Lt({cwd:i})}}),l.push({label:"\u590D\u5236\u5B8C\u6574\u8DEF\u5F84",icon:"\u{1F4CB}",run:function(){ri(i).then(function(){Et("\u5DF2\u590D\u5236\u8DEF\u5F84")})}}),o&&o!==i&&l.push({label:"\u590D\u5236\u76F8\u5BF9\u8DEF\u5F84",icon:"\u{1F4CB}",run:function(){ri(o).then(function(){Et("\u5DF2\u590D\u5236\u76F8\u5BF9\u8DEF\u5F84")})}}),l.push({label:"\u7C98\u8D34\u8DEF\u5F84\u5230\u8F93\u5165\u6846",icon:"\u270F\uFE0F",run:function(){va(i)&&Et("\u5DF2\u7C98\u8D34\u5230\u8F93\u5165\u6846")}}),a==="file"&&l.push({label:"\u4E0B\u8F7D\u6587\u4EF6",icon:"\u2B07",run:function(){var g=document.createElement("a");g.href="/api/file-raw?download=1&path="+encodeURIComponent(i),g.rel="noopener",document.body.appendChild(g),g.click(),g.remove()}}),s.innerHTML=l.map(function(g,m){return'<button type="button" class="file-context-menu-item" data-idx="'+m+'"><span class="ctx-icon">'+g.icon+'</span><span class="ctx-label">'+p(g.label)+"</span></button>"}).join(""),document.body.appendChild(s);var d=window.innerWidth,f=window.innerHeight,c=s.getBoundingClientRect(),v=Math.min(e,d-c.width-8),h=Math.min(t,f-c.height-8);s.style.left=Math.max(8,v)+"px",s.style.top=Math.max(8,h)+"px",s.querySelectorAll(".file-context-menu-item").forEach(function(g){g.addEventListener("click",function(m){m.stopPropagation();var y=parseInt(g.dataset.idx,10);Rn(),l[y]&&l[y].run()})}),setTimeout(function(){document.addEventListener("click",Rn,!0),document.addEventListener("scroll",Rn,!0)},0)}var _=null;function ii(e){var t=_&&_.overlay;if(t){_.path=e,_.editing=!1,_.dirty=!1;var o=t.querySelector(".file-preview-title");o&&(o.innerHTML='<span class="file-preview-icon">\u{1F4C4}</span><div class="file-preview-name-block"><div class="file-preview-name-row"><span class="file-preview-filename">\u52A0\u8F7D\u4E2D\u2026</span></div>'+gt("","file-preview-path")+"</div>");var s=t.querySelector(".file-preview-toolbar");s&&(s.innerHTML="");var l=t.querySelector(".file-preview-path");Hu(l,"");var d=t.querySelector(".file-preview-body");d&&(d.innerHTML='<div class="file-preview-loading">\u52A0\u8F7D\u9884\u89C8\u2026</div>')}else{t=document.createElement("div"),t.className="file-preview-overlay",t.innerHTML='<div class="file-preview-modal" tabindex="-1"><div class="file-preview-header"><div class="file-preview-title"><span class="file-preview-icon">\u{1F4C4}</span><div class="file-preview-name-block"><div class="file-preview-name-row"><span class="file-preview-filename">\u52A0\u8F7D\u4E2D\u2026</span></div>'+gt("","file-preview-path")+'</div></div><div class="file-preview-toolbar"></div><button class="file-preview-close" title="\u5173\u95ED (Esc)" aria-label="\u5173\u95ED">'+Me("x",{size:18})+'</button></div><div class="file-preview-body"><div class="file-preview-loading">\u52A0\u8F7D\u9884\u89C8\u2026</div></div></div>',document.body.appendChild(t);var n=t.querySelector(".file-preview-close"),i=function(){if(_&&_.dirty&&typeof on=="function"){on({type:"warning",title:"\u653E\u5F03\u672A\u4FDD\u5B58\u7684\u4FEE\u6539\uFF1F",message:"\u5F53\u524D\u6587\u4EF6\u6709\u672A\u4FDD\u5B58\u7684\u6539\u52A8\uFF0C\u5173\u95ED\u540E\u4F1A\u4E22\u5931\u3002",buttons:[{label:"\u7EE7\u7EED\u7F16\u8F91",value:!1,kind:"ghost"},{label:"\u653E\u5F03\u4FEE\u6539",value:!0,kind:"danger",autofocus:!0}],cancelValue:!1}).then(function(c){c&&a()});return}a()},a=function(){t.remove(),document.removeEventListener("keydown",u),_=null};n.addEventListener("click",i),t.addEventListener("click",function(c){c.target===t&&i()});var u=function(c){if((c.key==="s"||c.key==="S")&&(c.ctrlKey||c.metaKey)&&_&&_.editing){c.preventDefault(),go();return}if(c.key==="Escape"){if(_&&_.editing){c.preventDefault(),mo();return}i();return}_&&(c.target&&(c.target.tagName==="INPUT"||c.target.tagName==="TEXTAREA")||_.editing||(c.key==="ArrowLeft"?(c.preventDefault(),co(-1)):c.key==="ArrowRight"&&(c.preventDefault(),co(1))))};document.addEventListener("keydown",u),_={overlay:t,close:i,path:e,data:null,editing:!1,dirty:!1}}var f=t.querySelector(".file-preview-path");Hu(f,e),fetch("/api/file-preview?path="+encodeURIComponent(e),{credentials:"same-origin"}).then(function(c){return c.json().then(function(v){return{ok:c.ok,status:c.status,data:v}})}).then(function(c){var v=t.querySelector(".file-preview-body");if(!c.ok||c.data&&c.data.error){var h=c.data&&c.data.error||"\u52A0\u8F7D\u5931\u8D25";c.status===413&&c.data&&c.data.size&&(h+="\uFF08\u6587\u4EF6\u5927\u5C0F\uFF1A"+jn(c.data.size)+"\uFF09"),v.innerHTML='<div class="file-preview-error"><span class="preview-error-icon">\u26A0</span><span>'+p(h)+"</span></div>",c.status===413&&ma(t,{kind:"binary",path:e,name:e.split("/").pop()||e,ext:"",size:c.data&&c.data.size||0});return}_.data=c.data,fo(t,c.data)}).catch(function(){var c=t.querySelector(".file-preview-body");c.innerHTML='<div class="file-preview-error"><span class="preview-error-icon">\u26A0</span><span>\u52A0\u8F7D\u9884\u89C8\u5931\u8D25</span></div>'})}function co(e){if(_){var t=(r.allFiles||[]).filter(function(s){return s.type==="file"});if(t.length){for(var n=_.path,i=-1,a=0;a<t.length;a++)if(t[a].path===n){i=a;break}if(!(i<0)){var u=(i+e+t.length)%t.length,o=t[u].path;o&&o!==n&&ii(o)}}}}function fo(e,t){var n=e.querySelector(".file-preview-filename");n&&(n.textContent=t.name);var i=e.querySelector(".file-preview-icon");i&&(i.textContent=io({name:t.name,type:"file"}));var a=e.querySelector(".file-preview-title"),u=e.querySelector(".file-preview-lang");u&&u.remove();var o=document.createElement("span");o.className="file-preview-lang";var s={image:"\u56FE\u7247",pdf:"PDF",video:"\u89C6\u9891",audio:"\u97F3\u9891",binary:"\u4E8C\u8FDB\u5236"};t.kind==="text"?o.textContent=t.lang||(t.ext||"").replace(".","")||"text":o.textContent=s[t.kind]||(t.ext||"").replace(".","")||t.kind,a&&a.appendChild(o),ma(e,t);var l=e.querySelector(".file-preview-body");l.innerHTML="",l.classList.remove("kind-text","kind-image","kind-pdf","kind-video","kind-audio","kind-binary"),l.classList.add("kind-"+(t.kind||"text")),t.kind==="image"?Wd(l,t):t.kind==="pdf"?zd(l,t):t.kind==="video"?Vd(l,t):t.kind==="audio"?Ud(l,t):t.kind==="binary"?Kd(l,t):t.lang==="markdown"||/\.(md|markdown|mdx)$/i.test(t.name||"")?l.innerHTML='<div class="markdown-preview">'+Qd(t.content||"")+"</div>":Rd(l,t)}function Rd(e,t){var n=yo(t.content||"",t.lang),i=n.split(`
4
4
  `),a=i.map(function(u,o){return o+1});e.innerHTML='<div class="code-preview-wrapper"><div class="code-preview-lines">'+a.join(`
5
5
  `)+'</div><div class="code-preview-content"><pre>'+i.join(`
6
- `)+"</pre></div></div>"}function jd(e,t){var n="/api/file-raw?path="+encodeURIComponent(t.path);e.innerHTML='<div class="image-preview-wrapper"><img class="image-preview-img" src="'+n+'" alt="'+p(t.name)+'" /></div>';var i=e.querySelector(".image-preview-img");if(i){var a=!1;i.addEventListener("click",function(){a=!a,i.classList.toggle("zoomed",a)})}}function Rd(e,t){var n="/api/file-raw?path="+encodeURIComponent(t.path);e.innerHTML='<iframe class="pdf-preview-frame" src="'+n+'" title="'+p(t.name)+'"></iframe>'}function Wd(e,t){var n="/api/file-raw?path="+encodeURIComponent(t.path);e.innerHTML='<div class="media-preview-wrapper"><video class="media-preview-video" controls preload="metadata" src="'+n+'">\u60A8\u7684\u6D4F\u89C8\u5668\u4E0D\u652F\u6301 video \u6807\u7B7E\u3002</video><div class="media-preview-meta">'+p(jn(t.size))+"</div></div>"}function zd(e,t){var n="/api/file-raw?path="+encodeURIComponent(t.path);e.innerHTML='<div class="media-preview-wrapper audio"><div class="media-preview-icon">\u{1F3B5}</div><div class="media-preview-name">'+p(t.name)+'</div><audio class="media-preview-audio" controls preload="metadata" src="'+n+'">\u60A8\u7684\u6D4F\u89C8\u5668\u4E0D\u652F\u6301 audio \u6807\u7B7E\u3002</audio><div class="media-preview-meta">'+p(jn(t.size))+"</div></div>"}function Vd(e,t){var n="/api/file-raw?download=1&path="+encodeURIComponent(t.path);e.innerHTML='<div class="binary-preview-card"><div class="binary-preview-icon">\u{1F4E6}</div><div class="binary-preview-name">'+p(t.name)+'</div><div class="binary-preview-meta"><span>'+p((t.ext||"").replace(/^\./,"")||"\u672A\u77E5\u683C\u5F0F")+"</span><span>\xB7</span><span>"+p(jn(t.size))+"</span></div>"+mt(t.path,"binary-preview-path")+'<div class="binary-preview-actions"><a class="binary-preview-btn" href="'+n+'" download="'+p(t.name)+'">\u4E0B\u8F7D\u6587\u4EF6</a><button class="binary-preview-btn" type="button" data-action="view-cat">\u5728\u7EC8\u7AEF\u4E2D\u67E5\u770B</button></div></div>',jt(e);var i=e.querySelector('[data-action="view-cat"]');i&&i.addEventListener("click",function(){fa('cat -- "'+t.path+'"')&&bt("\u547D\u4EE4\u5DF2\u7C98\u8D34\u5230\u8F93\u5165\u6846")})}function pa(e,t){var n=e.querySelector(".file-preview-toolbar");if(n){if(n.innerHTML="",n.classList.remove("editing"),_&&_.editing){n.classList.add("editing"),cr(e,t);return}var i=[];t.kind==="text"&&i.push({label:"\u7F16\u8F91\u6587\u4EF6 (E)",icon:Me("edit"),primary:!0,action:function(){Ud()}}),i.push({label:"\u590D\u5236\u8DEF\u5F84",icon:Me("clipboard"),action:function(){ri(t.path).then(function(){bt("\u5DF2\u590D\u5236\u8DEF\u5F84")})}}),i.push({label:"\u7C98\u8D34\u5230\u8F93\u5165\u6846",icon:Me("send-to-input"),action:function(){fa(t.path)&&bt("\u5DF2\u7C98\u8D34\u5230\u8F93\u5165\u6846")}}),i.push({label:"\u4E0B\u8F7D",icon:Me("download"),action:function(){var a=document.createElement("a");a.href="/api/file-raw?download=1&path="+encodeURIComponent(t.path),a.download=t.name||"",document.body.appendChild(a),a.click(),a.remove()}}),t.kind==="text"&&(i.push({label:"\u590D\u5236\u5168\u90E8\u5185\u5BB9",icon:Me("copy"),action:function(){ri(t.content||"").then(function(){bt("\u5DF2\u590D\u5236\u5185\u5BB9")})}}),i.push({label:"\u5207\u6362\u81EA\u52A8\u6362\u884C",icon:Me("wrap-text"),toggleClass:"toolbar-active",getInitial:function(){var a=e.querySelector(".code-preview-content pre");return a&&a.classList.contains("wrap")},action:function(a){var u=e.querySelector(".code-preview-content pre");u&&(u.classList.toggle("wrap"),a.classList.toggle("toolbar-active",u.classList.contains("wrap")))}}),i.push({kind:"group",className:"toolbar-group-fontsize",children:[{label:"\u7F29\u5C0F\u5B57\u53F7",icon:Me("minus"),action:function(){mo(e,-1)}},{kind:"label",icon:Me("type"),label:"\u5B57\u53F7"},{label:"\u653E\u5927\u5B57\u53F7",icon:Me("plus"),action:function(){mo(e,1)}}]})),co(n,i,e)}}function co(e,t,n){t.forEach(function(i){if(i.kind==="group"){var a=document.createElement("div");a.className="file-preview-toolbar-group"+(i.className?" "+i.className:""),i.children.forEach(function(u){if(u.kind==="label"){var o=document.createElement("span");o.className="file-preview-toolbar-grouplabel",o.title=u.label||"",o.innerHTML=u.icon||"",a.appendChild(o);return}a.appendChild(fo(u))}),e.appendChild(a);return}e.appendChild(fo(i))})}function fo(e){var t=document.createElement("button");return t.type="button",t.className="file-preview-toolbar-btn",e.primary&&t.classList.add("primary"),e.danger&&t.classList.add("danger"),t.title=e.label,t.setAttribute("aria-label",e.label),t.innerHTML='<span class="toolbar-icon">'+(e.icon||"")+"</span>"+(e.text?'<span class="toolbar-text">'+p(e.text)+"</span>":""),e.getInitial&&e.getInitial()&&t.classList.add("toolbar-active"),t.addEventListener("click",function(n){n.stopPropagation(),typeof e.action=="function"&&e.action(t)}),t}function cr(e,t){var n=e.querySelector(".file-preview-toolbar");if(n){n.innerHTML="";var i=_&&_.saving,a=[{label:"\u4FDD\u5B58 (Ctrl+S)",icon:Me("save"),text:"\u4FDD\u5B58",primary:!0,action:function(){vo()}},{label:"\u64A4\u9500\u6539\u52A8",icon:Me("rotate-ccw"),action:function(){Kd()}},{label:"\u9000\u51FA\u7F16\u8F91 (Esc)",icon:Me("x"),action:function(){po()}}];co(n,a,e),i&&n.querySelectorAll(".file-preview-toolbar-btn").forEach(function(u){u.disabled=!0})}}function Ud(){if(!(!_||!_.data)){var e=_.data;if(e.kind==="text"){_.editing=!0,_.dirty=!1,_.originalContent=e.content||"";var t=_.overlay,n=t.querySelector(".file-preview-body");if(n){n.classList.add("editing"),n.innerHTML='<div class="code-editor-wrapper"><textarea class="code-editor-textarea" spellcheck="false" autocomplete="off" autocorrect="off" autocapitalize="off" wrap="off"></textarea></div>';var i=n.querySelector(".code-editor-textarea");i&&(i.value=e.content||"",i.addEventListener("input",function(){var a=i.value!==(_.originalContent||"");a!==_.dirty&&(_.dirty=a,fr())}),i.addEventListener("keydown",function(a){if(a.key==="Tab"){a.preventDefault();var u=i.selectionStart,o=i.selectionEnd,s=" ";i.value=i.value.slice(0,u)+s+i.value.slice(o),i.selectionStart=i.selectionEnd=u+s.length,i.dispatchEvent(new Event("input"))}}),setTimeout(function(){i.focus(),i.setSelectionRange(0,0),i.scrollTop=0},30)),pa(t,e),fr()}}}}function po(){if(!(!_||!_.editing)){var e=function(){_.editing=!1,_.dirty=!1;var t=_.overlay,n=t.querySelector(".file-preview-body");n&&n.classList.remove("editing"),lo(t,_.data),fr()};if(_.dirty&&typeof on=="function"){on({type:"warning",title:"\u653E\u5F03\u672A\u4FDD\u5B58\u7684\u4FEE\u6539\uFF1F",message:"\u5F53\u524D\u6587\u4EF6\u6709\u672A\u4FDD\u5B58\u7684\u6539\u52A8\uFF0C\u9000\u51FA\u7F16\u8F91\u540E\u4F1A\u4E22\u5931\u3002",buttons:[{label:"\u7EE7\u7EED\u7F16\u8F91",value:!1,kind:"ghost"},{label:"\u653E\u5F03\u4FEE\u6539",value:!0,kind:"danger",autofocus:!0}],cancelValue:!1}).then(function(t){t&&e()});return}e()}}function Kd(){if(!(!_||!_.editing)){var e=_.overlay,t=e.querySelector(".code-editor-textarea");t&&(t.value=_.originalContent||"",_.dirty=!1,fr(),t.focus())}}function vo(){if(!(!_||!_.editing)&&!_.saving){var e=_.overlay,t=e.querySelector(".code-editor-textarea");if(t){var n=t.value;if(n===(_.originalContent||"")){bt("\u6CA1\u6709\u6539\u52A8");return}_.saving=!0,cr(e,_.data),fetch("/api/file-write",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:_.path,content:n})}).then(function(i){return i.json().then(function(a){return{ok:i.ok,status:i.status,data:a}})}).then(function(i){if(_.saving=!1,!i.ok||i.data&&i.data.error){var a=i.data&&i.data.error||"\u4FDD\u5B58\u5931\u8D25 ("+i.status+")";bt(a),cr(e,_.data);return}if(_.data.content=n,_.data.size=i.data&&i.data.size||n.length,_.originalContent=n,_.dirty=!1,bt("\u5DF2\u4FDD\u5B58"),fr(),cr(e,_.data),typeof Lt=="function")try{Lt()}catch{}}).catch(function(i){_.saving=!1,bt("\u4FDD\u5B58\u5931\u8D25\uFF1A"+(i&&i.message?i.message:"\u7F51\u7EDC\u9519\u8BEF")),cr(e,_.data)})}}}function fr(){if(_){var e=_.overlay;if(e){var t=e.querySelector(".file-preview-name-row");if(t){var n=t.querySelector(".file-preview-dirty");if(_.dirty){if(!n){var i=document.createElement("span");i.className="file-preview-dirty",i.title="\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539",i.textContent="\u25CF \u672A\u4FDD\u5B58",t.appendChild(i)}}else n&&n.remove()}}}}function mo(e,t){var n=e.querySelector(".code-preview-content pre"),i=e.querySelector(".code-preview-lines");if(n){var a=parseFloat(getComputedStyle(n).fontSize)||13,u=Math.max(10,Math.min(22,a+t));n.style.fontSize=u+"px",i&&(i.style.fontSize=u+"px")}}function go(e,t){var n=e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),i=Jd();if(!i)return n;var a=[];for(var u in i){var o=i[u];o&&o.pattern&&a.push({pattern:o.pattern,cls:o.cls,priority:o.priority||5})}a.sort(function(d,f){return f.priority-d.priority});var s=a.map(function(d){return"("+d.pattern.source+")"}),l=new RegExp(s.join("|"),"gm");return n.replace(l,function(d){for(var f=0;f<a.length;f++){var c=a[f],v=new RegExp("^"+c.pattern.source+"$","gm");if(v.test(d))return'<span class="'+c.cls+'">'+d+"</span>"}return d})}function Jd(){return{comment:{pattern:/\/\/.*|#[^\n]*/y,cls:"syntax-comment",priority:1},string:{pattern:/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`(?:[^`\\]|\\.)*`/y,cls:"syntax-string",priority:2},keyword:{pattern:/\b(?:async|await|break|case|catch|class|const|continue|debugger|declare|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|namespace|new|null|of|override|private|protected|public|readonly|return|set|static|super|switch|this|throw|try|type|typeof|undefined|var|void|while|yield|abstract|as|base|bool|byte|char|decimal|double|event|explicit|extern|false|fixed|float|foreach|goto|implicit|in|int|internal|is|lock|long|object|operator|out|params|partial|readonly|ref|sbyte|sealed|short|sizeof|stackalloc|string|struct|switch|throw|true|try|uint|ulong|unchecked|unsafe|ushort|using|virtual|volatile|where|while|with|yield|def|elif|else|except|exec|finally|for|from|global|if|import|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield|True|False|None|and|in|is|lambda|not|or|fn|pub|use|mod|impl|trait|struct|enum|match|loop|while|for|if|else|return|self|super|crate|where|async|await|move|ref|mut|static|const|unsafe|extern|use|as|impl|struct|enum|type|fn|let|loop|if|else|match|return|self|Self|mod|pub|crate|macro|derive|where|async|await|dyn|self|package|func|go|return|defer|go|if|else|switch|case|default|for|range|select|break|continue|fallthrough|const|struct|enum|type|interface|map|chan|var|nil|true|false|iota|len|cap|append|make|new|panic|recover|select|else|if|elif|end|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while|end|and|begin|do|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/y,cls:"syntax-keyword",priority:3},number:{pattern:/\b(?:0x[\da-fA-F]+|0b[01]+|0o[0-7]+|\d+\.?\d*(?:e[+-]?\d+)?)\b/y,cls:"syntax-number",priority:2},function:{pattern:/\b[A-Z][a-zA-Z0-9]*[a-z]\w*(?=\s*\()/y,cls:"syntax-function",priority:4},type:{pattern:/\b(?:string|number|boolean|void|any|unknown|never|object|symbol|bigint|Array|Object|String|Number|Boolean|Map|Set|WeakMap|WeakSet|Promise|Error|Type|Interface|Enum|Class|Struct|Impl|Trait|fn|fnc|func|function|def|proc|fun|pub|static|const|let|var|int|float|double|bool|char|byte|string|u8|u16|u32|u64|i8|i16|i32|i64|f32|f64|usize|isize|str|Vec|HashMap|Option|Result|Box|Rc|Arc|Cell|RefCell)\b/y,cls:"syntax-type",priority:4},operator:{pattern:/[+\-*/%=<>!&|^~?:]+|\.\.\.?/y,cls:"syntax-operator",priority:5},punctuation:{pattern:/[{}[\]();,\.]/y,cls:"syntax-punctuation",priority:6}}}function Yd(e){if(!e)return"";var t=p(e);t=t.replace(/```(\w*)\n([\s\S]*?)```/g,function(i,a,u){var o=go(u.trim(),a),s=o.replace(/_/g,"&#95;").replace(/\*/g,"&#42;");return'<pre><code class="language-'+a+'">'+s+"</code></pre>"}),t=t.replace(/`([^`]+)`/g,function(i,a){return"<code>"+a.replace(/_/g,"&#95;").replace(/\*/g,"&#42;")+"</code>"}),t=t.replace(/^######\s+(.*)$/gm,"<h6>$1</h6>"),t=t.replace(/^#####\s+(.*)$/gm,"<h5>$1</h5>"),t=t.replace(/^####\s+(.*)$/gm,"<h4>$1</h4>"),t=t.replace(/^###\s+(.*)$/gm,"<h3>$1</h3>"),t=t.replace(/^##\s+(.*)$/gm,"<h2>$1</h2>"),t=t.replace(/^#\s+(.*)$/gm,"<h1>$1</h1>"),t=t.replace(/\*\*\*(.+?)\*\*\*/g,"<strong><em>$1</em></strong>"),t=t.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>"),t=t.replace(/\*(.+?)\*/g,"<em>$1</em>"),t=t.replace(/(^|[^\w])___(\S(?:[^\n]*?\S)?)___(?!\w)/g,"$1<strong><em>$2</em></strong>"),t=t.replace(/(^|[^\w])__(\S(?:[^\n]*?\S)?)__(?!\w)/g,"$1<strong>$2</strong>"),t=t.replace(/(^|[^\w])_(\S(?:[^\n_]*?\S)?)_(?!\w)/g,"$1<em>$2</em>"),t=t.replace(/~~(.+?)~~/g,"<del>$1</del>"),t=t.replace(/\[([^\]]+)\]\(([^)]+)\)/g,'<a href="$2" target="_blank" rel="noopener">$1</a>'),t=t.replace(/!\[([^\]]*)\]\(([^)]+)\)/g,'<img src="$2" alt="$1">'),t=t.replace(/^&gt;\s+(.*)$/gm,"<blockquote>$1</blockquote>"),t=t.replace(/^---+$/gm,"<hr>"),t=t.replace(/^\*\*\*+$/gm,"<hr>"),t=t.replace(/^[\-\*]\s+(.*)$/gm,"<li>$1</li>"),t=t.replace(/(<li>.*<\/li>\n?)+/g,"<ul>$&</ul>"),t=t.replace(/^\d+\.\s+(.*)$/gm,"<li>$1</li>"),t=hl(t);var n=t.split(/\n{2,}/);return t=n.map(function(i){return i=i.trim(),i?/^<(h[1-6]|ul|ol|li|blockquote|pre|table|hr|div)/.test(i)?i:"<p>"+i.replace(/\n/g,"<br>")+"</p>":""}).join(`
7
- `),t}function ho(){if(!r.selectedId||!r.gitStatus||!r.gitStatus.isGit||r.gitStatusSessionId!==r.selectedId)return"";var e=r.gitStatus.branch||"?",t=r.gitStatus.modifiedCount||0,n=e+(t?" \xB7 "+t+" \u4E2A\u6587\u4EF6\u5F85\u63D0\u4EA4":" \xB7 \u5DE5\u4F5C\u533A\u5E72\u51C0");return'<button id="topbar-git-badge" class="topbar-git-badge" type="button" title="'+p(n)+'" aria-label="\u5FEB\u6377\u63D0\u4EA4"><svg class="topbar-git-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="6" cy="6" r="2"/><circle cx="6" cy="18" r="2"/><circle cx="18" cy="9" r="2"/><path d="M6 8v8"/><path d="M18 11v1a3 3 0 0 1-3 3H9"/></svg><span class="topbar-git-branch">'+p(e)+"</span>"+(t>0?'<span class="topbar-git-count">\xB7'+t+"</span>":'<span class="topbar-git-clean" aria-hidden="true">\u2713</span>')+"</button>"}function va(){var e=document.getElementById("topbar-git-slot");if(e){e.innerHTML=ho();var t=document.getElementById("topbar-git-badge");t&&t.addEventListener("click",function(n){n.preventDefault(),yo()})}}function Gd(e){if(!e)return"";var t=r.topbarMoreOpen,n=!!e.claudeSessionId,i=!!e.cwd,a=e.worktreeEnabled&&e.worktree&&e.worktree.branch&&e.worktree.path,u=e.worktreeMergeStatus==="merged"&&e.worktreeMergeInfo&&e.worktreeMergeInfo.cleanupDone===!1,o=e.status==="running"||e.worktreeMergeStatus==="merging",s=a&&e.worktreeMergeStatus!=="merged",l=u,d=n||i||!0,f=s||l||!0,c='<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>',v='<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17.5 19a4.5 4.5 0 1 0-1.5-8.74A6 6 0 1 0 6 14h11.5z"/></svg>',h='<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/></svg>',g='<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="4" y1="9" x2="20" y2="9"/><line x1="4" y1="15" x2="20" y2="15"/><line x1="10" y1="3" x2="8" y2="21"/><line x1="16" y1="3" x2="14" y2="21"/></svg>',m='<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M7 7h10"/><path d="M7 12h10"/><path d="M7 17h10"/><path d="M5 7l-2 2 2 2"/><path d="M19 15l2 2-2 2"/></svg>',y='<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"/><path d="M8 6V4a2 2 0 012-2h4a2 2 0 012 2v2"/><path d="M19 6l-1 14a2 2 0 01-2 2H8a2 2 0 01-2-2L5 6"/></svg>',C="";if(n){var E=e.provider==="codex"?"\u590D\u5236 Codex thread ID":"\u590D\u5236 Claude \u4F1A\u8BDD ID";C+='<button class="topbar-more-item" data-action="copy-claude-session-id" type="button" role="menuitem">'+v+"<span>"+E+"</span></button>"}i&&(C+='<button class="topbar-more-item" data-action="copy-cwd" type="button" role="menuitem">'+h+"<span>\u590D\u5236\u5DE5\u4F5C\u76EE\u5F55</span></button>"),C+='<button class="topbar-more-item" data-action="copy-session-id" type="button" role="menuitem">'+g+"<span>\u590D\u5236\u4F1A\u8BDD ID</span></button>";var B="";s?B+='<button class="topbar-more-item" data-action="worktree-merge" type="button" role="menuitem"'+(o?" disabled":"")+">"+m+"<span>\u5408\u5E76\u5230\u4E3B\u5206\u652F\u2026</span></button>":l&&(B+='<button class="topbar-more-item" data-action="worktree-cleanup" type="button" role="menuitem">'+m+"<span>\u91CD\u8BD5 worktree \u6E05\u7406</span></button>"),B+='<button class="topbar-more-item topbar-more-item-danger" data-action="delete-session" type="button" role="menuitem">'+y+"<span>\u5220\u9664\u5F53\u524D\u4F1A\u8BDD</span></button>";var D=d&&f?'<div class="topbar-more-divider" role="separator"></div>':"";return'<div class="topbar-more-wrap"><button id="topbar-more-button" class="topbar-btn square'+(t?" active":"")+'" type="button" aria-label="\u5F53\u524D\u4F1A\u8BDD\u64CD\u4F5C" aria-haspopup="menu" aria-expanded="'+(t?"true":"false")+'" title="\u5F53\u524D\u4F1A\u8BDD\u64CD\u4F5C"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="1"/><circle cx="12" cy="5" r="1"/><circle cx="12" cy="19" r="1"/></svg></button><div id="topbar-more-menu" class="topbar-more-menu'+(t?"":" hidden")+'" role="menu" aria-label="\u5F53\u524D\u4F1A\u8BDD">'+C+D+B+"</div></div>"}function Bn(e,t){if(!e)return Promise.resolve(null);var n=t&&t.force,i=Date.now();if(!n&&r.gitStatusSessionId===e&&r.gitStatus&&i-r.gitStatusLastFetchAt<1e3)return Promise.resolve(r.gitStatus);if(r.gitStatusInflight&&r.gitStatusInflight.sessionId===e)return r.gitStatusInflight.promise;r.gitStatusLoading=!0;var a=fetch("/api/sessions/"+encodeURIComponent(e)+"/git-status",{credentials:"same-origin"}).then(function(u){return u.ok?u.json():{isGit:!1}}).then(function(u){return r.gitStatus=u||{isGit:!1},r.gitStatusSessionId=e,r.gitStatusLastFetchAt=Date.now(),va(),u}).catch(function(){return r.gitStatus={isGit:!1},r.gitStatusSessionId=e,r.gitStatusLastFetchAt=Date.now(),va(),null}).finally(function(){r.gitStatusLoading=!1,r.gitStatusInflight&&r.gitStatusInflight.sessionId===e&&(r.gitStatusInflight=null)});return r.gitStatusInflight={sessionId:e,promise:a},a}var Dn=null,kn=null,Rg=null;function Qd(e){return e==="commit-tag"||e==="commit-tag-push"||e==="commit-push"?e:"commit"}function $d(e){return e=Qd(e),e==="commit-tag-push"?{action:e,label:"Commit + Tag + Push",verb:"\u63D0\u4EA4\u3001\u6253 Tag \u5E76\u63A8\u9001",withTag:!0,push:!0,tone:"all"}:e==="commit-tag"?{action:e,label:"Commit + Tag",verb:"\u63D0\u4EA4\u5E76\u6253 Tag",withTag:!0,push:!1,tone:"tag"}:e==="commit-push"?{action:e,label:"Commit + Push",verb:"\u63D0\u4EA4\u5E76\u63A8\u9001",withTag:!1,push:!0,tone:"push"}:{action:"commit",label:"Commit",verb:"\u4EC5\u63D0\u4EA4",withTag:!1,push:!1,tone:"commit"}}function yo(){if(r.selectedId){r.quickCommitOpen=!0,r.quickCommitSubmitting=!1,r.quickCommitAutoGenerating=!1,r.quickCommitError="",r.quickCommitForm={customMessage:"",tag:"",tagEdited:!1},r.quickCommitPushing=!1,r.quickCommitPushError="",r.quickCommitResult=null,r.quickCommitDragAction="commit",er(),hn(),tr(),Mt();var e=document.getElementById("quick-commit-modal");e&&(e.classList.remove("hidden"),r.lastFocusedElement=document.activeElement,Yi(e)),Dn&&document.removeEventListener("keydown",Dn),Dn=function(t){t.key==="Escape"&&r.quickCommitOpen&&!r.quickCommitSubmitting&&!r.quickCommitPushing&&Wn()},document.addEventListener("keydown",Dn),Bn(r.selectedId,{force:!0}).then(function(){r.quickCommitOpen&&Mt()})}}function Wn(){r.quickCommitOpen=!1,r.quickCommitSubmitting=!1,r.quickCommitError="",r.quickCommitResult=null,r.quickCommitDragAction="commit";var e=document.getElementById("quick-commit-modal");e&&e.classList.add("hidden"),r.focusTrapHandler&&(document.removeEventListener("keydown",r.focusTrapHandler),r.focusTrapHandler=null),Dn&&(document.removeEventListener("keydown",Dn),Dn=null),kn&&(kn(),kn=null),r.lastFocusedElement&&typeof r.lastFocusedElement.focus=="function"&&r.lastFocusedElement.focus()}function Mt(){var e=document.getElementById("quick-commit-modal");if(e){kn&&(kn(),kn=null);var t=Fo(),n=document.createElement("div");n.innerHTML=t;var i=n.querySelector("#quick-commit-modal");i&&(e.innerHTML=i.innerHTML,bo())}}function bo(){var e=document.getElementById("quick-commit-close-btn");e&&e.addEventListener("click",Wn);var t=document.getElementById("quick-commit-cancel-btn");t&&t.addEventListener("click",Wn);var n=document.getElementById("quick-commit-ai-btn");n&&n.addEventListener("click",tc);var i=document.getElementById("quick-commit-message");i&&(i.addEventListener("input",function(){r.quickCommitForm.customMessage=i.value}),i.addEventListener("keydown",function(o){(o.metaKey||o.ctrlKey)&&o.key==="Enter"&&(o.preventDefault(),zn("commit"))}));var a=document.getElementById("quick-commit-tag");a&&(a.addEventListener("input",function(){r.quickCommitForm.tag=a.value,r.quickCommitForm.tagEdited=!0}),a.addEventListener("keydown",function(o){o.key==="Enter"&&(o.preventDefault(),zn("commit-tag"))}));var u=document.getElementById("quick-commit-push-after-btn");u&&u.addEventListener("click",function(){var o=r.quickCommitResult||{};nc({pushCommits:!0,pushTags:!!o.tagName,closeOnSuccess:!0})}),ec()}function Xd(e){var t=!!(e&&e.tag),n=!!(e&&e.push);return t&&n?"commit-tag-push":t?"commit-tag":n?"commit-push":"commit"}var Zd=58,ai=10;function Eo(e){return e==="tag"?{action:"commit-tag",sub:!1}:e==="push"?{action:"commit-push",sub:!1}:e==="sub"?{action:"commit",sub:!0}:{action:"commit",sub:!1}}function ec(){var e=document.getElementById("qc-dock-field"),t=document.getElementById("qc-dock-stage"),n=document.getElementById("qc-dock-launch"),i=document.getElementById("qc-dock-cluster");if(!e||!t||!n||!i)return;var a=["commit","tag","push"],u={};if(a.forEach(function(k){u[k]=e.querySelector('[data-chip="'+k+'"]')}),!u.commit||!u.tag||!u.push)return;u.sub=e.querySelector('[data-chip="sub"]');var o=!!u.sub,s=o?a.concat(["sub"]):a;function l(k){return u[k]?u[k].offsetWidth:90}function d(){return u.commit?u.commit.offsetHeight:38}function f(){return window.matchMedia&&window.matchMedia("(max-width: 720px)").matches}function c(){var k=e.clientWidth,T=e.clientHeight,M=d(),Y=l("commit"),z=l("tag"),Q=l("push");if(f()&&o){var le=Math.max(8,T*.2-M/2),ee=Math.min(T-M-8,T*.7-M/2),Z=function(ie){return Math.max(8,k*.27-ie/2)},q=function(ie){return Math.min(k-ie-8,k*.73-ie/2)};return{commit:{x:Z(Y),y:le},tag:{x:q(z),y:le},push:{x:Z(Q),y:ee},sub:{x:q(l("sub")),y:ee}}}var P=f(),N=P?Math.max(8,T*.18-M/2):Math.max(8,T*.12),G=P?Math.min(T-M-8,T*.72-M/2):Math.min(T-M-8,T*.88-M),J=P?.24:.28,ne=P?.76:.72,de={commit:{x:Math.max(8,(k-Y)/2),y:N},tag:{x:Math.max(8,k*J-z/2),y:G},push:{x:Math.min(k-Q-8,k*ne-Q/2),y:G}};if(o){var re=l("sub");de.sub={x:Math.min(k-re-8,k*.94-re/2),y:Math.max(8,Math.min(T-M-8,(T-M)/2))}}return de}var v={};function h(k,T,M){u[k]&&(u[k].style.transform="translate("+T.toFixed(1)+"px,"+M.toFixed(1)+"px)")}function g(k){v=c(),s.forEach(function(T){u[T].classList.toggle("qc-chip--anim",!!k),h(T,v[T].x,v[T].y)})}g(!1);var m=null;function y(k,T,M){var Y=d(),z=24,Q=s.filter(function(N){return k.indexOf(N)>=0}),le=Q.reduce(function(N,G){return Math.max(N,l(G))},0),ee=le+Math.max(0,Q.length-1)*z,Z=e.clientHeight,q=T-ee/2,P=Math.max(2,Math.min(Z-Y-2,M-Y/2));return Q.forEach(function(N){h(N,q,P),q+=z}),{x:T-ee/2-7,y:P-7,w:ee+14,h:Y+14}}function C(k){i.classList.add("is-active"),i.style.transform="translate("+k.x.toFixed(1)+"px,"+k.y.toFixed(1)+"px)",i.style.width=k.w.toFixed(1)+"px",i.style.height=k.h.toFixed(1)+"px"}function E(){i.classList.remove("is-active")}function B(k){return Xd({commit:!0,tag:k.indexOf("tag")>=0,push:k.indexOf("push")>=0})}function D(k){return k.indexOf("sub")>=0}function F(k){var T=document.getElementById("qc-dock-launch-label");T&&(T.textContent=k)}function I(k,T){var M=n.getBoundingClientRect();return k>=M.left&&k<=M.right&&T>=M.top&&T<=M.bottom}function L(k){return function(T){if(!(u[k].disabled||ui())){m={anchor:k,pointerId:T.pointerId,startX:T.clientX,startY:T.clientY,moved:!1,members:[k]},s.forEach(function(M){u[M].classList.remove("qc-chip--anim")}),u[k].classList.add("is-grabbing");try{u[k].setPointerCapture(T.pointerId)}catch{}t.classList.add("is-dragging"),T.preventDefault()}}}function H(k){if(!(!m||m.pointerId!==k.pointerId)){(Math.abs(k.clientX-m.startX)>3||Math.abs(k.clientY-m.startY)>3)&&(m.moved=!0);var T=e.getBoundingClientRect(),M=k.clientX-T.left,Y=k.clientY-T.top;if(a.forEach(function(P){if(!(m.members.indexOf(P)>=0)){var N=v[P].x+l(P)/2,G=v[P].y+d()/2,J=M-N,ne=Y-G;Math.sqrt(J*J+ne*ne)<Zd&&(m.members.push(P),u[P].classList.remove("qc-chip--anim"),u[P].classList.add("is-attached"))}}),o&&m.members.indexOf("sub")<0){var z=v.sub.x-ai,Q=v.sub.y-ai,le=v.sub.x+l("sub")+ai,ee=v.sub.y+d()+ai;M>=z&&M<=le&&Y>=Q&&Y<=ee&&(m.members.push("sub"),u.sub.classList.remove("qc-chip--anim"),u.sub.classList.add("is-attached"))}var Z=y(m.members,M,Y),q=I(k.clientX,k.clientY);t.setAttribute("data-hot",q?"1":"0"),t.setAttribute("data-action",B(m.members)),m.members.length>1?C(Z):E(),F(q?"\u677E\u624B\u6267\u884C":"\u63D0\u4EA4")}}function U(k,T){if(!(!m||m.pointerId!==k.pointerId)){var M=m;m=null,t.classList.remove("is-dragging"),t.setAttribute("data-hot","0"),F("\u63D0\u4EA4"),E(),s.forEach(function(z){u[z].classList.remove("is-grabbing","is-attached")});try{u[M.anchor].releasePointerCapture(M.pointerId)}catch{}if(!T&&!M.moved){var Y=Eo(M.anchor);zn(Y.action,Y.sub);return}if(!T&&I(k.clientX,k.clientY)){zn(B(M.members),D(M.members));return}t.setAttribute("data-action","commit"),g(!0)}}var x=function(){r.quickCommitOpen&&!m&&g(!1)};window.addEventListener("resize",x),s.forEach(function(k){var T=u[k];T.addEventListener("pointerdown",L(k)),T.addEventListener("pointermove",H),T.addEventListener("pointerup",function(M){U(M,!1)}),T.addEventListener("pointercancel",function(M){U(M,!0)}),T.addEventListener("keydown",function(M){if(!(T.disabled||ui())&&(M.key==="Enter"||M.key===" "||M.key==="Spacebar")){M.preventDefault();var Y=Eo(k);zn(Y.action,Y.sub)}})}),n.addEventListener("click",function(){n.disabled||ui()||m||zn("commit")}),kn=function(){window.removeEventListener("resize",x),m=null}}function tc(){if(!(!r.selectedId||r.quickCommitGenerating)){var e=document.getElementById("quick-commit-message");e&&(r.quickCommitForm.customMessage=e.value);var t=document.getElementById("quick-commit-tag");t&&(r.quickCommitForm.tag=t.value),r.quickCommitGenerating=!0,r.quickCommitError="",Mt(),fetch("/api/sessions/"+encodeURIComponent(r.selectedId)+"/generate-commit-message",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({})}).then(function(n){return n.json().then(function(i){return{ok:n.ok,data:i}})}).then(function(n){if(!n.ok)throw new Error(n.data&&n.data.error||"AI \u751F\u6210\u5931\u8D25\u3002");var i=n.data||{},a=typeof i.message=="string"?i.message:"",u=typeof i.suggestedTag=="string"?i.suggestedTag.trim():"",o=(r.quickCommitForm.customMessage||"").trim();!o&&a&&(r.quickCommitForm.customMessage=a),u&&(r.quickCommitForm.tagEdited||(r.quickCommitForm.tag=u),r.quickCommitDragAction="commit-tag")}).catch(function(n){r.quickCommitError=n&&n.message||"AI \u751F\u6210\u5931\u8D25\u3002"}).finally(function(){r.quickCommitGenerating=!1,r.quickCommitOpen&&Mt()})}}function zn(e,t){if(!(!r.selectedId||r.quickCommitSubmitting)){var n=document.getElementById("quick-commit-message");n&&(r.quickCommitForm.customMessage=n.value);var i=document.getElementById("quick-commit-tag");i&&(r.quickCommitForm.tag=i.value);var a=r.quickCommitForm||{},u=$d(e||r.quickCommitDragAction||"commit"),o=u.withTag,s=o?(a.tag||"").trim():"",l=(a.customMessage||"").trim(),d=!l,f={branch:(r.gitStatus||{}).branch||"",commitHash:(r.gitStatus||{}).lastCommit&&(r.gitStatus||{}).lastCommit.shortHash?(r.gitStatus||{}).lastCommit.shortHash:(r.gitStatus||{}).head?(r.gitStatus||{}).head.substring(0,7):"",commitSubject:(r.gitStatus||{}).lastCommit&&(r.gitStatus||{}).lastCommit.subject?(r.gitStatus||{}).lastCommit.subject:"",tag:(r.gitStatus||{}).latestTag||""},c={autoMessage:d,customMessage:d?"":l,tag:s,autoTag:!!(o&&!s),push:!!u.push,submodule:!!t};r.quickCommitSubmitting=!0,r.quickCommitSubmoduleIntent=!!t,r.quickCommitAutoGenerating=d||c.autoTag,r.quickCommitError="",r.quickCommitPushError="",r.quickCommitResult=null,r.quickCommitDragAction=u.action,Mt(),fetch("/api/sessions/"+encodeURIComponent(r.selectedId)+"/quick-commit",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)}).then(function(v){return v.json().then(function(h){return{ok:v.ok,data:h}})}).then(function(v){if(!v.ok)throw new Error(v.data&&v.data.error||"\u5FEB\u6377\u63D0\u4EA4\u5931\u8D25\u3002");var h=v.data||{},g=h.commit&&h.commit.hash?h.commit.hash.substring(0,7):"",m=h.tag&&h.tag.name?h.tag.name:"",y=Array.isArray(h.submoduleCommits)?h.submoduleCommits:[],C=y.length>0?"\u5DF2\u5148\u63D0\u4EA4 "+y.length+" \u4E2A submodule\uFF08"+y.map(function(B){return B.path}).join("\u3001")+"\uFF09\uFF0C":"",E=C+"\u5DF2\u63D0\u4EA4"+(g?" "+g:"")+(m?"\uFF0C\u5DF2\u6253 Tag "+m:"");r.quickCommitResult={action:u.action,includeSubmodule:!!t,pushed:!!h.pushed,pushError:h.pushError||"",commitHash:g,commitMessage:h.commit&&h.commit.message?h.commit.message:l,tagName:m,oldTag:f.tag,oldCommitHash:f.commitHash,oldCommitSubject:f.commitSubject,submoduleCount:y.length},u.push&&!h.pushError?(typeof A=="function"&&A(E+"\uFF0C\u5DF2\u63A8\u9001\u3002","success"),Wn()):(typeof A=="function"&&A(E+(h.pushError?"\uFF1Bpush \u5931\u8D25\uFF1A"+h.pushError:"\u3002"),h.pushError?"error":"success"),r.selectedId&&Bn(r.selectedId,{force:!0}).then(function(){r.quickCommitOpen&&Mt()}))}).catch(function(v){r.quickCommitError=v&&v.message||"\u5FEB\u6377\u63D0\u4EA4\u5931\u8D25\u3002"}).finally(function(){r.quickCommitSubmitting=!1,r.quickCommitAutoGenerating=!1,r.quickCommitOpen&&Mt()})}}function nc(e){if(!(!r.selectedId||r.quickCommitPushing)){var t=!!(e&&e.pushCommits),n=!!(e&&e.pushTags),i=!!(e&&e.closeOnSuccess);if(!(!t&&!n)){var a=r.quickCommitResult||{},u=!!a.includeSubmodule;r.quickCommitPushing=!0,r.quickCommitPushError="",Mt(),fetch("/api/sessions/"+encodeURIComponent(r.selectedId)+"/git/push",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({pushCommits:t,pushTags:n,submodule:u,tag:a.tagName||""})}).then(function(o){return o.json().then(function(s){return{ok:o.ok,data:s}})}).then(function(o){var s=o.data||{};if(!o.ok)throw new Error(s&&s.error||"\u63A8\u9001\u5931\u8D25\u3002");if(s.error){r.quickCommitPushError=s.error,typeof A=="function"&&A("\u63A8\u9001\u5931\u8D25\uFF1A"+s.error,"error");return}var l=[];s.pushedCommits&&l.push("commits"),s.pushedTags&&l.push("tags");var d=l.length?l.join(" \u548C "):"\uFF08\u65E0\u5185\u5BB9\uFF09";typeof A=="function"&&A("\u5DF2\u63A8\u9001 "+d,"success"),r.quickCommitResult&&(r.quickCommitResult.pushed=!0),i?(Wn(),r.selectedId&&Bn(r.selectedId,{force:!0})):r.selectedId&&Bn(r.selectedId,{force:!0}).then(function(){r.quickCommitOpen&&Mt()})}).catch(function(o){r.quickCommitPushError=o&&o.message||"\u63A8\u9001\u5931\u8D25\u3002",typeof A=="function"&&A(r.quickCommitPushError,"error")}).finally(function(){r.quickCommitPushing=!1,r.quickCommitOpen&&Mt()})}}}function rc(e){var t=(e||"").trim();if(t==="??")return{letter:"U",cls:"untracked",title:"\u672A\u8DDF\u8E2A"};if(t==="!!")return{letter:"I",cls:"ignored",title:"\u5DF2\u5FFD\u7565"};for(var n="",i=0;i<e.length;i++)if(e[i]&&e[i]!=="."&&e[i]!==" "){n=e[i];break}n=(n||t[0]||"?").toUpperCase();var a={A:{cls:"add",title:"\u65B0\u589E"},M:{cls:"mod",title:"\u4FEE\u6539"},D:{cls:"del",title:"\u5220\u9664"},R:{cls:"ren",title:"\u91CD\u547D\u540D"},C:{cls:"ren",title:"\u590D\u5236"},T:{cls:"mod",title:"\u7C7B\u578B\u53D8\u66F4"},U:{cls:"del",title:"\u51B2\u7A81"}},u=a[n]||{cls:"other",title:"\u5DF2\u66F4\u6539"};return{letter:n,cls:u.cls,title:u.title}}function Wg(e){var t=e.map(function(n){var i=rc(n.status||""),a=n.path||"",u=a.lastIndexOf("/"),o=u>=0?a.slice(0,u+1):"",s=u>=0?a.slice(u+1):a,l="";if(n.isSubmodule){var d=n.submoduleState||{},f=[];d.commitChanged&&f.push("\u65B0\u6307\u9488"),d.hasTrackedChanges&&f.push("dirty"),d.hasUntracked&&f.push("\u672A\u8DDF\u8E2A");var c=f.length?"submodule \xB7 "+f.join(" / "):"submodule";l='<span class="qc-submodule-badge">'+p(c)+"</span>"}return'<div class="qc-file-row" title="'+p(a)+'"><span class="qc-file-badge qc-badge-'+i.cls+'" title="'+p(i.title)+'">'+p(i.letter)+'</span><span class="qc-file-path">'+(o?'<span class="qc-file-dir">'+p(o)+"</span>":"")+'<span class="qc-file-name">'+p(s)+"</span></span>"+l+"</div>"}).join("");return t||'<div class="qc-empty">\u6CA1\u6709\u53EF\u63D0\u4EA4\u7684\u6539\u52A8\u3002</div>'}function ui(){return r.quickCommitSubmitting||r.quickCommitPushing}function oi(e,t,n,i){return'<div class="qc-pair'+(i?" "+i:"")+'"><div class="qc-pair-label">'+p(e)+'</div><div class="qc-pair-flow"><div class="qc-pair-value qc-pair-value--from">'+t+'</div><div class="qc-pair-arrow" aria-hidden="true">\u2192</div><div class="qc-pair-value qc-pair-value--to">'+n+"</div></div></div>"}function ic(){var e=r.gitStatus||{};if(e.hasSubmodule===!0)return!0;for(var t=e.files||[],n=0;n<t.length;n++)if(t[n]&&t[n].isSubmodule===!0)return!0;return!1}function ac(e){var t=!e||ui(),n=ic();if(r.quickCommitSubmitting){var i=r.quickCommitSubmoduleIntent?"\uFF08\u542B submodule\uFF09":"",a=(r.quickCommitAutoGenerating?"AI \u751F\u6210 + \u63D0\u4EA4\u4E2D\u2026":"\u6267\u884C\u4E2D\u2026")+i;return'<div class="qc-dock-wrap"><div class="qc-dock-busy" role="status"><span class="qc-dock-busy-dot"></span>'+p(a)+"</div></div>"}function u(s,l,d){return'<button type="button" class="qc-chip qc-chip--'+s+'" data-chip="'+s+'"'+(d?' title="'+p(d)+'"':"")+(t?" disabled":"")+'><span class="qc-chip-dot" aria-hidden="true"></span><span class="qc-chip-label">'+l+"</span></button>"}var o=t?e?"":"\u5DE5\u4F5C\u533A\u5E72\u51C0\uFF0C\u65E0\u53EF\u63D0\u4EA4":"\u62D6\u52A8\u78C1\u5438\u7EC4\u5408 \xB7 \u4E22\u8FDB\u63D0\u4EA4\u533A\u6267\u884C \xB7 \u5355\u51FB\u76F4\u63A5\u6267\u884C\u8BE5\u9879"+(n?" \xB7 Sub \u7403\u53EF\u9009\uFF0C\u7EB3\u5165\u540E\u9012\u5F52\u5904\u7406 submodule":"");return'<div class="qc-dock-wrap qc-dock-wrap--magnetic"'+(t?' data-disabled="1"':"")+'><div id="qc-dock-stage" class="qc-dock-stage" data-action="commit" data-hot="0"><div id="qc-dock-field" class="qc-dock-field"><div id="qc-dock-cluster" class="qc-dock-cluster" aria-hidden="true"></div>'+u("commit","Commit")+u("tag","Tag")+u("push","Push")+(n?u("sub","Sub","\u63D0\u4EA4\u7236\u4ED3\u5E93\u5E76\u9012\u5F52\u8FDB\u5165 submodule\uFF08commit / tag / \u5206\u522B\u63A8\u9001\uFF09"):"")+'</div><button type="button" id="qc-dock-launch" class="qc-dock-launch"'+(t?" disabled":"")+' aria-label="\u6267\u884C\u63D0\u4EA4"><span class="qc-dock-launch-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="currentColor" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h12M13 6l6 6-6 6"/></svg></span><span id="qc-dock-launch-label" class="qc-dock-launch-label">\u63D0\u4EA4</span></button></div><div class="qc-dock-hint">'+p(o)+"</div></div>"}function uc(){var e=r.quickCommitResult;if(!e)return"";var t=e.oldCommitHash?"<code>"+p(e.oldCommitHash)+"</code>"+(e.oldCommitSubject?"<span>"+p(e.oldCommitSubject)+"</span>":""):'<span class="qc-muted">\u65E0</span>',n=e.commitHash?"<code>"+p(e.commitHash)+"</code><span>"+p(e.commitMessage||"")+"</span>":'<span class="qc-muted">\u65E0</span>',i=e.oldTag?"<code>"+p(e.oldTag)+"</code>":'<span class="qc-muted">\u65E0 tag</span>',a=e.tagName?"<code>"+p(e.tagName)+"</code>":'<span class="qc-muted">\u672A\u6253 tag</span>',u=e.pushed?'<span class="qc-result-pushed">\u5DF2\u63A8\u9001</span>':'<button id="quick-commit-push-after-btn" class="btn btn-primary btn-sm" type="button"'+(r.quickCommitPushing?" disabled":"")+">"+(r.quickCommitPushing?"\u63A8\u9001\u4E2D...":"Push & Close")+"</button>";return'<section class="qc-result-panel">'+oi("Commit",t,n,"")+oi("Tag",i,a,"qc-pair--tag")+(e.pushError||r.quickCommitPushError?'<p class="error-message">'+p(e.pushError||r.quickCommitPushError)+"</p>":"")+'<div class="qc-result-actions"><button id="quick-commit-cancel-btn" class="btn btn-ghost btn-sm" type="button">\u5173\u95ED</button>'+u+"</div></section>"}function Fo(){var e=r.gitStatus||{},t=r.quickCommitForm||{customMessage:"",tag:"",tagEdited:!1},n=(e.modifiedCount||0)>0,i=r.quickCommitGenerating,a=e.lastCommit||{},u=a.shortHash?"<code>"+p(a.shortHash)+"</code><span>"+p(a.subject||"")+"</span>":e.head?"<code>"+p(e.head.substring(0,7))+"</code>":'<span class="qc-muted">\u65E0 commit</span>',o=e.latestTag?"<code>"+p(e.latestTag)+"</code>":'<span class="qc-muted">\u65E0 tag</span>',s='<input type="text" id="quick-commit-tag" class="field-input qc-tag-field-input" placeholder="\u7559\u7A7A\u5219 AI \u751F\u6210" value="'+p(t.tag||"")+'"'+(r.quickCommitSubmitting?" disabled":"")+">",l='<textarea id="quick-commit-message" class="field-input qc-message-input" rows="3" placeholder="New commit message" '+(r.quickCommitSubmitting?"disabled":"")+">"+p(t.customMessage||"")+"</textarea>",d=[];d.push(e.branch||"(no branch)"),d.push(n?(e.modifiedCount||0)+" \u4E2A\u6539\u52A8":"\u5DE5\u4F5C\u533A\u5E72\u51C0"),typeof e.ahead=="number"&&e.ahead>0&&d.push("\u2191"+e.ahead),typeof e.behind=="number"&&e.behind>0&&d.push("\u2193"+e.behind);var f=r.quickCommitResult?"":'<section class="qc-release-panel"><div class="qc-message-header"><span class="qc-section-title">New</span><button type="button" id="quick-commit-ai-btn" class="btn btn-ghost btn-sm qc-ai-btn"'+(i?" disabled":"")+' title="AI \u751F\u6210 commit message \u4E0E tag"><svg viewBox="0 0 16 16" width="13" height="13" aria-hidden="true"><path d="M8 1.5l1.4 3.6L13 6.5 9.4 7.9 8 11.5 6.6 7.9 3 6.5l3.6-1.4L8 1.5zM12.5 10.5l.7 1.8 1.8.7-1.8.7-.7 1.8-.7-1.8-1.8-.7 1.8-.7.7-1.8z" fill="currentColor"/></svg><span>'+(i?"\u751F\u6210\u4E2D...":"AI")+"</span></button></div>"+oi("Commit",u,l,"qc-pair--commit")+oi("Tag",o,s,"qc-pair--tag")+(r.quickCommitError?'<p class="error-message">'+p(r.quickCommitError)+"</p>":"")+ac(n)+'<div class="qc-modal-actions"><button id="quick-commit-cancel-btn" class="btn btn-ghost btn-sm" type="button">\u53D6\u6D88</button></div></section>',c=uc();return'<section id="quick-commit-modal" class="modal-backdrop'+(r.quickCommitOpen?"":" hidden")+'"><div class="modal quick-commit-modal" role="dialog" aria-labelledby="quick-commit-title"><div class="modal-header"><div><h2 id="quick-commit-title" class="modal-title">\u5FEB\u6377\u63D0\u4EA4</h2><p class="modal-subtitle">'+p(d.join(" \xB7 "))+'</p></div><button id="quick-commit-close-btn" class="btn btn-ghost btn-icon modal-close-btn" type="button" aria-label="\u5173\u95ED"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" aria-hidden="true"><line x1="6" y1="6" x2="18" y2="18"/><line x1="18" y1="6" x2="6" y2="18"/></svg></button></div><div class="modal-body">'+f+c+"</div></div></section>"}function oc(){return'<section id="worktree-merge-modal" class="modal-backdrop hidden"><div class="modal worktree-merge-modal"><div class="modal-header"><div><h2 class="modal-title">\u5408\u5E76 Worktree</h2><p class="modal-subtitle">\u68C0\u67E5\u5F53\u524D\u4EFB\u52A1\u5206\u652F\u5E76\u5FEB\u6377\u5408\u5E76\u5230\u4E3B\u5206\u652F\u3002</p></div><button id="close-worktree-merge-button" class="btn btn-ghost btn-icon modal-close-btn" type="button" aria-label="\u5173\u95ED"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" aria-hidden="true"><line x1="6" y1="6" x2="18" y2="18"/><line x1="18" y1="6" x2="6" y2="18"/></svg></button></div><div class="modal-body"><div id="worktree-merge-content" class="worktree-merge-content"></div><p id="worktree-merge-error" class="error-message hidden"></p><div class="worktree-merge-actions"><button id="worktree-merge-cancel-button" class="btn btn-secondary">\u53D6\u6D88</button><button id="worktree-merge-confirm-button" class="btn btn-primary">\u786E\u8BA4\u5408\u5E76\u5E76\u6E05\u7406</button></div></div></div></section>'}function sc(){return'<section id="settings-modal" class="modal-backdrop hidden"><div class="modal settings-modal"><div class="modal-header settings-modal-header"><div class="settings-modal-title-group"><h2 class="modal-title">\u8BBE\u7F6E</h2><p class="settings-modal-subtitle">\u8C03\u6574\u5E94\u7528\u914D\u7F6E\u3001\u901A\u77E5\u3001\u5B89\u5168\u548C\u663E\u793A\u504F\u597D</p></div><button id="close-settings-button" class="btn btn-ghost btn-icon modal-close-btn" type="button" aria-label="\u5173\u95ED"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" aria-hidden="true"><line x1="6" y1="6" x2="18" y2="18"/><line x1="18" y1="6" x2="6" y2="18"/></svg></button></div><div class="modal-body settings-modal-body"><div class="settings-layout"><aside class="settings-sidebar"><div class="settings-sidebar-header"><div class="settings-sidebar-title">\u504F\u597D\u8BBE\u7F6E</div><div class="settings-sidebar-hint">\u5DE6\u4FA7\u5207\u6362\u5206\u533A\uFF0C\u53F3\u4FA7\u67E5\u770B\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u9009\u9879\u3002</div></div><div class="settings-tabs" role="tablist" aria-label="\u8BBE\u7F6E\u5206\u7EC4" aria-orientation="vertical"><button class="settings-tab active" data-tab="about" role="tab" aria-selected="true" aria-controls="settings-tab-about"><span class="settings-tab-main">\u5173\u4E8E</span><span class="settings-tab-meta">\u7248\u672C\u3001\u66F4\u65B0\u4E0E\u8FDE\u63A5\u65B9\u5F0F</span></button><button class="settings-tab" data-tab="general" role="tab" aria-selected="false" aria-controls="settings-tab-general"><span class="settings-tab-main">\u57FA\u672C\u914D\u7F6E</span><span class="settings-tab-meta">\u6A21\u578B\u3001\u6A21\u5F0F\u4E0E\u8FD0\u884C\u73AF\u5883</span></button><button class="settings-tab" data-tab="notifications" role="tab" aria-selected="false" aria-controls="settings-tab-notifications"><span class="settings-tab-main">\u901A\u77E5</span><span class="settings-tab-meta">\u63D0\u793A\u97F3\u4E0E\u6D4F\u89C8\u5668\u901A\u77E5</span></button><button class="settings-tab" data-tab="security" role="tab" aria-selected="false" aria-controls="settings-tab-security"><span class="settings-tab-main">\u5B89\u5168</span><span class="settings-tab-meta">\u5BC6\u7801\u4E0E\u8BC1\u4E66</span></button><button class="settings-tab" data-tab="presets" role="tab" aria-selected="false" aria-controls="settings-tab-presets"><span class="settings-tab-main">\u547D\u4EE4\u9884\u8BBE</span><span class="settings-tab-meta">\u67E5\u770B\u5DF2\u6709\u9884\u8BBE</span></button><button class="settings-tab" data-tab="display" role="tab" aria-selected="false" aria-controls="settings-tab-display"><span class="settings-tab-main">\u663E\u793A</span><span class="settings-tab-meta">\u5361\u7247\u9ED8\u8BA4\u5C55\u5F00\u884C\u4E3A</span></button></div></aside><div class="settings-content"><div class="settings-panel active" id="settings-tab-about" role="tabpanel"><div class="settings-panel-header"><h3 class="settings-panel-title">\u5173\u4E8E Wand</h3><p class="settings-panel-desc">\u67E5\u770B\u7248\u672C\u4FE1\u606F\u3001\u66F4\u65B0\u72B6\u6001\u548C Android App \u8FDE\u63A5\u65B9\u5F0F\u3002</p></div><div class="settings-about-info"><div class="settings-about-row"><span class="settings-label">\u5305\u540D</span><span class="settings-value" id="settings-pkg-name">-</span></div><div class="settings-about-row"><span class="settings-label">\u5F53\u524D\u7248\u672C</span><span class="settings-value" id="settings-version">-</span></div><div class="settings-about-row"><span class="settings-label">Node.js \u8981\u6C42</span><span class="settings-value" id="settings-node-req">-</span></div><div class="settings-about-row"><span class="settings-label">\u4ED3\u5E93\u5730\u5740</span><span class="settings-value" id="settings-repo-url"><a href="#" target="_blank" rel="noopener">-</a></span></div></div><div class="settings-update-section" id="web-update-section"><div class="settings-section-head"><span class="settings-section-icon">'+V("globe",{size:18,strokeWidth:1.7})+'</span><div class="settings-section-head-text"><h4 class="settings-section-heading">Web \u7AEF</h4><p class="settings-section-sub">\u6D4F\u89C8\u5668\u8BBF\u95EE\u7684\u670D\u52A1\u7248\u672C</p></div></div><div class="settings-about-row"><span class="settings-label">\u6700\u65B0\u7248\u672C</span><span class="settings-value" id="settings-latest-version">-</span></div><div class="settings-update-actions"><button type="button" id="check-update-button" class="btn btn-secondary btn-sm">\u68C0\u67E5\u66F4\u65B0</button><button type="button" id="do-update-button" class="btn btn-primary btn-sm hidden">\u66F4\u65B0\u5230\u6700\u65B0\u7248</button><button type="button" id="do-restart-button" class="btn btn-success btn-sm hidden">\u91CD\u542F\u751F\u6548</button></div><p id="update-message" class="hint hidden"></p><div class="settings-toggle-row"><div class="settings-toggle-text"><span class="settings-toggle-title">Beta \u901A\u9053</span><span class="settings-toggle-desc">\u66F4\u65B0\u5230 npm beta \u7248\u672C\uFF08tag + commit \u5C3E\u6807\uFF09\uFF0C\u5C1D\u9C9C\u65B0\u529F\u80FD\uFF0C\u53EF\u80FD\u4E0D\u7A33\u5B9A\u3002</span></div><label class="settings-switch"><input type="checkbox" id="beta-channel-toggle" class="switch-toggle"><span class="switch-slider"></span></label></div><div class="settings-toggle-row"><div class="settings-toggle-text"><span class="settings-toggle-title">\u81EA\u52A8\u66F4\u65B0</span><span class="settings-toggle-desc">\u68C0\u6D4B\u5230\u65B0\u7248\u672C\u5C06\u81EA\u52A8\u4E0B\u8F7D\u5B89\u88C5\u5E76\u91CD\u542F\u670D\u52A1\u3002</span></div><label class="settings-switch"><input type="checkbox" id="auto-update-web-toggle" class="switch-toggle"><span class="switch-slider"></span></label></div></div><div class="settings-update-section hidden" id="android-apk-section"><div class="settings-section-head"><span class="settings-section-icon">'+V("smartphone",{size:18,strokeWidth:1.7})+'</span><div class="settings-section-head-text"><h4 class="settings-section-heading">Android App</h4><p class="settings-section-sub">\u539F\u751F\u5BA2\u6237\u7AEF\u7248\u672C\u4E0E APK \u4E0B\u8F7D</p></div></div><div id="android-apk-current-row" class="settings-about-row hidden"><span class="settings-label">\u5F53\u524D\u7248\u672C</span><span class="settings-value" id="settings-android-apk-current">-</span></div><div id="android-apk-github-row" class="settings-about-row settings-about-row-action hidden"><span class="settings-label">\u7EBF\u4E0A\u7248\u672C</span><span class="settings-value settings-value-flex" id="settings-android-apk-github">-</span><button id="download-github-apk-btn" class="btn btn-secondary btn-sm hidden" type="button">\u4E0B\u8F7D</button></div><div id="android-apk-local-row" class="settings-about-row settings-about-row-action hidden"><span class="settings-label">\u672C\u5730\u7248\u672C</span><span class="settings-value settings-value-flex" id="settings-android-apk-local">-</span><button id="download-local-apk-btn" class="btn btn-secondary btn-sm hidden" type="button">\u4E0B\u8F7D</button></div><div id="android-auto-update-row" class="settings-toggle-row hidden"><div class="settings-toggle-text"><span class="settings-toggle-title">\u81EA\u52A8\u66F4\u65B0</span><span class="settings-toggle-desc" id="android-auto-update-hint">\u68C0\u6D4B\u5230\u65B0\u7248 APK \u65F6\u81EA\u52A8\u62C9\u8D77\u4E0B\u8F7D\uFF0C\u5B89\u88C5\u4ECD\u9700\u5728\u7CFB\u7EDF\u4E2D\u786E\u8BA4\u3002</span></div><label class="settings-switch"><input type="checkbox" id="auto-update-apk-toggle" class="switch-toggle"><span class="switch-slider"></span></label></div><p id="android-apk-message" class="hint hidden"></p></div><div class="settings-update-section hidden" id="macos-dmg-section"><div class="settings-section-head"><span class="settings-section-icon">'+V("desktop",{size:18,strokeWidth:1.7})+'</span><div class="settings-section-head-text"><h4 class="settings-section-heading">macOS App</h4><p class="settings-section-sub">\u539F\u751F\u5BA2\u6237\u7AEF\u7248\u672C\u4E0E DMG \u4E0B\u8F7D</p></div></div><div id="macos-dmg-current-row" class="settings-about-row hidden"><span class="settings-label">\u5F53\u524D\u7248\u672C</span><span class="settings-value" id="settings-macos-dmg-current">-</span></div><div id="macos-dmg-github-row" class="settings-about-row settings-about-row-action hidden"><span class="settings-label">\u7EBF\u4E0A\u7248\u672C</span><span class="settings-value settings-value-flex" id="settings-macos-dmg-github">-</span><button id="download-github-dmg-btn" class="btn btn-secondary btn-sm hidden" type="button">\u4E0B\u8F7D</button></div><div id="macos-dmg-local-row" class="settings-about-row settings-about-row-action hidden"><span class="settings-label">\u672C\u5730\u7248\u672C</span><span class="settings-value settings-value-flex" id="settings-macos-dmg-local">-</span><button id="download-local-dmg-btn" class="btn btn-secondary btn-sm hidden" type="button">\u4E0B\u8F7D</button></div><div id="macos-auto-update-row" class="settings-toggle-row hidden"><div class="settings-toggle-text"><span class="settings-toggle-title">\u81EA\u52A8\u66F4\u65B0</span><span class="settings-toggle-desc" id="macos-auto-update-hint">\u68C0\u6D4B\u5230\u65B0\u7248 DMG \u5C06\u81EA\u52A8\u4E0B\u8F7D\u5E76\u6302\u8F7D\u3002</span></div><label class="settings-switch"><input type="checkbox" id="auto-update-dmg-toggle" class="switch-toggle"><span class="switch-slider"></span></label></div><p id="macos-dmg-message" class="hint hidden"></p></div><div class="settings-update-section" id="android-connect-section"><div class="settings-section-head"><span class="settings-section-icon">'+V("link",{size:18,strokeWidth:1.7})+'</span><div class="settings-section-head-text"><h4 class="settings-section-heading">App \u8FDE\u63A5\u7801</h4><p class="settings-section-sub">\u7C98\u8D34\u5230 Android App \u5373\u53EF\u81EA\u52A8\u8FDE\u63A5\uFF0C\u65E0\u9700\u5BC6\u7801\uFF1B\u6539\u5BC6\u7801\u540E\u5931\u6548\u3002</p></div></div><div class="settings-connect-url-box"><code id="android-connect-code" class="settings-connect-url-text">-</code><button id="copy-connect-code-button" class="btn btn-secondary btn-sm" type="button" title="\u590D\u5236\u8FDE\u63A5\u7801">\u590D\u5236</button></div><div class="settings-connect-qr-box"><div class="settings-connect-qr-wrap" id="android-connect-qr-wrap" title="\u70B9\u51FB\u653E\u5927"><canvas id="android-connect-qr" width="180" height="180"></canvas><div class="settings-connect-qr-empty" id="android-connect-qr-empty">\u751F\u6210\u4E2D\u2026</div></div><p class="settings-connect-qr-hint">\u7528 Wand App \u626B\u4E00\u626B\uFF0C\u5373\u53EF\u4E00\u952E\u586B\u5165\u670D\u52A1\u5668\u5730\u5740\u4E0E\u8FDE\u63A5\u7801\u3002</p></div></div></div><div class="settings-panel" id="settings-tab-notifications" role="tabpanel"><div class="settings-panel-header"><h3 class="settings-panel-title">\u901A\u77E5</h3><p class="settings-panel-desc">\u8BBE\u7F6E\u63D0\u793A\u97F3\u3001\u7CFB\u7EDF\u901A\u77E5\u548C\u6D4F\u89C8\u5668\u901A\u77E5\u7684\u884C\u4E3A\u3002</p></div><div class="settings-notification-section"><div class="settings-section-head"><span class="settings-section-icon">'+V("bell",{size:18,strokeWidth:1.7})+'</span><div class="settings-section-head-text"><h4 class="settings-section-heading">\u901A\u77E5\u504F\u597D</h4><p class="settings-section-sub">\u63D0\u793A\u97F3\u4E0E\u5E94\u7528\u5185\u901A\u77E5\u6C14\u6CE1</p></div></div><div class="settings-toggle-row"><div class="settings-toggle-text"><label class="settings-toggle-title" for="cfg-notif-sound">\u64AD\u653E\u63D0\u793A\u97F3</label><span class="settings-toggle-desc">\u91CD\u8981\u901A\u77E5\uFF08\u7248\u672C\u66F4\u65B0\u3001\u6743\u9650\u7B49\u5F85\u7B49\uFF09\u65F6\u64AD\u653E\u67D4\u548C\u63D0\u793A\u97F3\u3002</span></div><label class="settings-switch"><input id="cfg-notif-sound" type="checkbox" class="switch-toggle" /><span class="switch-slider"></span></label></div><div class="settings-range-row" id="notif-volume-field"><label class="settings-range-label" for="cfg-notif-volume">\u97F3\u91CF</label><input id="cfg-notif-volume" type="range" min="0" max="100" step="5" class="settings-range" /><span id="cfg-notif-volume-val" class="settings-range-value">80%</span></div><div class="settings-toggle-row"><div class="settings-toggle-text"><label class="settings-toggle-title" for="cfg-notif-bubble">\u5E94\u7528\u5185\u901A\u77E5\u6C14\u6CE1</label><span class="settings-toggle-desc">\u5728\u9875\u9762\u9876\u90E8\u5F39\u51FA\u6D6E\u52A8\u901A\u77E5\u6C14\u6CE1\u3002</span></div><label class="settings-switch"><input id="cfg-notif-bubble" type="checkbox" class="switch-toggle" /><span class="switch-slider"></span></label></div></div><div id="native-sound-section" class="settings-notification-section hidden"><div class="settings-section-head"><span class="settings-section-icon">'+V("music",{size:18,strokeWidth:1.7})+'</span><div class="settings-section-head-text"><h4 class="settings-section-heading">\u7CFB\u7EDF\u901A\u77E5\u94C3\u58F0</h4><p class="settings-section-sub">\u9009\u62E9 Android \u7CFB\u7EDF\u901A\u77E5\u4F7F\u7528\u7684\u94C3\u58F0</p></div></div><div class="settings-row-with-action"><select id="native-sound-select" class="field-input field-select"></select><button id="native-sound-preview" class="btn btn-secondary btn-sm btn-with-icon" type="button">'+V("play",{size:11,strokeWidth:1.8,fill:"currentColor"})+'<span>\u8BD5\u542C</span></button></div></div><div id="native-haptic-section" class="settings-notification-section hidden"><div class="settings-section-head"><span class="settings-section-icon">'+V("vibrate",{size:18,strokeWidth:1.7})+'</span><div class="settings-section-head-text"><h4 class="settings-section-heading">\u89E6\u611F\u53CD\u9988</h4><p class="settings-section-sub">\u6309\u94AE\u64CD\u4F5C\u548C\u4EFB\u52A1\u5B8C\u6210\u65F6\u63D0\u4F9B\u632F\u52A8\u53CD\u9988</p></div></div><div class="settings-toggle-row"><div class="settings-toggle-text"><label class="settings-toggle-title" for="cfg-haptic-enabled">\u542F\u7528\u89E6\u611F\u53CD\u9988</label></div><label class="settings-switch"><input id="cfg-haptic-enabled" type="checkbox" class="switch-toggle" /><span class="switch-slider"></span></label></div></div><div class="settings-notification-section"><div class="settings-section-head"><span class="settings-section-icon">'+V("globe",{size:18,strokeWidth:1.7})+'</span><div class="settings-section-head-text"><h4 class="settings-section-heading">\u6D4F\u89C8\u5668\u901A\u77E5</h4><p class="settings-section-sub">\u6765\u81EA\u7CFB\u7EDF\u901A\u77E5\u4E2D\u5FC3\u7684\u5F39\u7A97</p></div></div><div class="settings-about-row"><span class="settings-label">\u6388\u6743\u72B6\u6001</span><span class="settings-value" id="notification-permission-status">-</span></div><div class="settings-update-actions"><button id="notification-request-btn" class="btn btn-primary btn-sm hidden" type="button">\u6388\u6743\u901A\u77E5</button><button id="notification-reset-btn" class="btn btn-ghost btn-sm hidden" type="button">\u91CD\u65B0\u6388\u6743</button><button id="notification-test-btn" class="btn btn-secondary btn-sm" type="button">\u53D1\u9001\u6D4B\u8BD5\u901A\u77E5</button><button id="notification-test-delay-btn" class="btn btn-ghost btn-sm" type="button">10 \u79D2\u540E\u53D1\u9001</button></div><p id="notification-test-message" class="hint hidden"></p></div></div><div class="settings-panel" id="settings-tab-general" role="tabpanel"><div class="settings-panel-header"><h3 class="settings-panel-title">\u57FA\u672C\u914D\u7F6E</h3><p class="settings-panel-desc">\u914D\u7F6E\u670D\u52A1\u8FDE\u63A5\u3001\u9ED8\u8BA4\u6A21\u578B\u3001\u6267\u884C\u65B9\u5F0F\u548C\u5DE5\u4F5C\u76EE\u5F55\u3002</p></div><div class="field-row"><div class="field"><label class="field-label" for="cfg-host">\u76D1\u542C\u5730\u5740 (host)</label><input id="cfg-host" type="text" class="field-input" placeholder="127.0.0.1" /></div><div class="field"><label class="field-label" for="cfg-port">\u7AEF\u53E3 (port)</label><input id="cfg-port" type="number" class="field-input" placeholder="8443" min="1" max="65535" /></div></div><div class="settings-toggle-row"><div class="settings-toggle-text"><label class="settings-toggle-title" for="cfg-https">\u542F\u7528 HTTPS</label><span class="settings-toggle-desc">\u4F7F\u7528\u81EA\u7B7E\u540D\u8BC1\u4E66\u52A0\u5BC6\u6D4F\u89C8\u5668\u5230\u670D\u52A1\u7684\u8FDE\u63A5\uFF0Chost \u4E3A\u975E 127.0.0.1 \u65F6\u5EFA\u8BAE\u5F00\u542F\u3002</span></div><label class="settings-switch"><input id="cfg-https" type="checkbox" class="switch-toggle" /><span class="switch-slider"></span></label></div><div class="field-row"><div class="field"><label class="field-label" for="cfg-mode">\u9ED8\u8BA4\u6267\u884C\u6A21\u5F0F</label><select id="cfg-mode" class="field-input"><option value="default">default</option><option value="assist">assist</option><option value="agent">agent</option><option value="agent-max">agent-max</option><option value="auto-edit">auto-edit</option><option value="full-access">full-access</option><option value="native">native</option><option value="managed">managed</option></select></div><div class="field"><label class="field-label" for="cfg-language">\u56DE\u590D\u8BED\u8A00</label><select id="cfg-language" class="field-input"><option value="">\u81EA\u52A8\uFF08\u4E0D\u6307\u5B9A\uFF09</option><option value="\u4E2D\u6587">\u4E2D\u6587</option><option value="English">English</option><option value="\u65E5\u672C\u8A9E">\u65E5\u672C\u8A9E</option><option value="\uD55C\uAD6D\uC5B4">\uD55C\uAD6D\uC5B4</option><option value="Espa\xF1ol">Espa\xF1ol</option><option value="Fran\xE7ais">Fran\xE7ais</option><option value="Deutsch">Deutsch</option><option value="\u0420\u0443\u0441\u0441\u043A\u0438\u0439">\u0420\u0443\u0441\u0441\u043A\u0438\u0439</option></select></div></div><p class="field-hint" style="margin-top:-4px;">\u8BBE\u7F6E\u56DE\u590D\u8BED\u8A00\u540E\uFF0CClaude \u5C06\u5C3D\u91CF\u4F7F\u7528\u6307\u5B9A\u8BED\u8A00\u56DE\u590D\u3002</p><div class="field"><label class="field-label" for="cfg-structured-runner">\u7ED3\u6784\u5316\u4F1A\u8BDD Runner</label><select id="cfg-structured-runner" class="field-input"><option value="sdk">SDK\uFF08@anthropic-ai/claude-agent-sdk\uFF0C\u9ED8\u8BA4\uFF09</option><option value="cli">CLI\uFF08spawn claude -p\uFF09</option></select><p class="field-hint" style="margin-top:4px;">SDK \u6A21\u5F0F\u4F7F\u7528\u5B98\u65B9 Agent SDK \u66FF\u4EE3 CLI subprocess\uFF0C\u63A5\u53E3\u66F4\u6574\u6D01\uFF0C\u529F\u80FD\u7B49\u4EF7\u3002\u4FDD\u5B58\u540E\u5BF9\u65B0\u5EFA\u4F1A\u8BDD\u7ACB\u5373\u751F\u6548\u3002</p></div><div class="settings-toggle-row"><div class="settings-toggle-text"><label class="settings-toggle-title" for="cfg-inherit-env">\u7EE7\u627F\u73AF\u5883\u53D8\u91CF</label><span class="settings-toggle-desc">\u542F\u52A8 PTY / \u7ED3\u6784\u5316\u5B50\u8FDB\u7A0B\u65F6\uFF0C\u628A\u5F53\u524D\u670D\u52A1\u8FDB\u7A0B\u7684\u73AF\u5883\u53D8\u91CF\u4F20\u7ED9 claude / codex\u3002\u5173\u95ED\u540E\u5B50\u8FDB\u7A0B\u4EC5\u83B7\u5F97\u6700\u5C0F\u53EF\u7528\u73AF\u5883\uFF08PATH/HOME/SHELL/LANG/TERM \u7B49\uFF09\uFF0C\u53EF\u7528\u4E8E\u9694\u79BB API key \u7B49\u654F\u611F\u51ED\u636E\u3002</span></div><div class="settings-toggle-aside"><button type="button" id="cfg-view-env-btn" class="btn btn-secondary btn-sm" title="\u67E5\u770B\u5B9E\u9645\u4F1A\u6CE8\u5165\u5230\u5B50\u8FDB\u7A0B\u7684\u73AF\u5883\u53D8\u91CF">\u67E5\u770B</button><label class="settings-switch"><input id="cfg-inherit-env" type="checkbox" class="switch-toggle" /><span class="switch-slider"></span></label></div></div><section class="settings-model-card" aria-labelledby="settings-model-card-title"><div class="settings-model-card-header"><div class="settings-model-card-heading"><span class="settings-model-card-icon" aria-hidden="true">'+V("cpu",{size:18,strokeWidth:1.8})+'</span><div><h4 class="settings-model-card-title" id="settings-model-card-title">\u9ED8\u8BA4\u6A21\u578B</h4><p class="settings-model-card-desc">\u4ECE\u5DF2\u68C0\u6D4B\u5217\u8868\u4E2D\u9009\u62E9\uFF0C\u6216\u76F4\u63A5\u8F93\u5165\u81EA\u5B9A\u4E49\u6A21\u578B\u540D\u79F0 / ID\u3002</p></div></div><button type="button" id="cfg-default-model-refresh" class="btn btn-secondary btn-sm settings-model-refresh" title="\u91CD\u65B0\u68C0\u6D4B Claude \u4E0E Codex \u6A21\u578B"><svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 11a8.1 8.1 0 0 0-15.5-2M4 4v5h5"/><path d="M4 13a8.1 8.1 0 0 0 15.5 2M20 20v-5h-5"/></svg><span>\u5237\u65B0\u5217\u8868</span></button></div><div class="settings-model-grid"><div class="field settings-model-field"><div class="settings-model-label-row"><label class="field-label" for="cfg-default-model">Claude</label><span class="settings-model-provider">Claude Code</span></div><div class="model-combobox" data-provider="claude"><div class="model-combobox-control"><input id="cfg-default-model" class="field-input model-combobox-input" type="text" role="combobox" aria-autocomplete="list" aria-expanded="false" aria-controls="cfg-default-model-listbox" autocomplete="off" autocapitalize="none" autocorrect="off" spellcheck="false" placeholder="\u8DDF\u968F Claude Code \u9ED8\u8BA4" /><button type="button" class="model-combobox-toggle" aria-label="\u5C55\u5F00 Claude \u6A21\u578B\u5217\u8868"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div><div id="cfg-default-model-listbox" class="model-combobox-menu hidden" role="listbox" aria-label="Claude \u6A21\u578B"></div></div><div class="settings-model-meta"><span class="settings-model-status" data-model-status="claude">\u8DDF\u968F CLI \u9ED8\u8BA4</span><span class="settings-model-help">\u4F1A\u539F\u6837\u4F20\u7ED9 <code>--model</code></span></div></div><div class="field settings-model-field"><div class="settings-model-label-row"><label class="field-label" for="cfg-default-codex-model">Codex</label><span class="settings-model-provider">Codex CLI</span></div><div class="model-combobox" data-provider="codex"><div class="model-combobox-control"><input id="cfg-default-codex-model" class="field-input model-combobox-input" type="text" role="combobox" aria-autocomplete="list" aria-expanded="false" aria-controls="cfg-default-codex-model-listbox" autocomplete="off" autocapitalize="none" autocorrect="off" spellcheck="false" placeholder="\u8DDF\u968F Codex \u9ED8\u8BA4" /><button type="button" class="model-combobox-toggle" aria-label="\u5C55\u5F00 Codex \u6A21\u578B\u5217\u8868"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div><div id="cfg-default-codex-model-listbox" class="model-combobox-menu hidden" role="listbox" aria-label="Codex \u6A21\u578B"></div></div><div class="settings-model-meta"><span class="settings-model-status" data-model-status="codex">\u8DDF\u968F CLI \u9ED8\u8BA4</span><span class="settings-model-help">\u7559\u7A7A\u5219\u4E0D\u4F20\u6A21\u578B\u53C2\u6570</span></div></div></div><p class="field-hint settings-model-version" id="cfg-default-model-version">\u6A21\u578B\u540D\u79F0\u4EC5\u5728\u65B0\u5EFA\u4F1A\u8BDD\u65F6\u4F5C\u4E3A\u9ED8\u8BA4\u503C\uFF1B\u8FD0\u884C\u4E2D\u7684\u7ED3\u6784\u5316\u4F1A\u8BDD\u4ECD\u53EF\u5355\u72EC\u5207\u6362\u3002</p></section><section class="settings-model-card" aria-labelledby="settings-commit-model-card-title"><div class="settings-model-card-header"><div class="settings-model-card-heading"><span class="settings-model-card-icon" aria-hidden="true">'+V("edit",{size:18,strokeWidth:1.8})+'</span><div><h4 class="settings-model-card-title" id="settings-commit-model-card-title">Commit \u751F\u6210</h4><p class="settings-model-card-desc">\u6307\u5B9A\u5FEB\u6377\u63D0\u4EA4\u751F\u6210 message \u4E0E tag \u65F6\u4F7F\u7528\u7684 CLI \u548C\u6A21\u578B\u3002</p></div></div><button type="button" id="cfg-commit-model-refresh" class="btn btn-secondary btn-sm settings-model-refresh" title="\u91CD\u65B0\u68C0\u6D4B\u6240\u9009 CLI \u7684\u6A21\u578B"><svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 11a8.1 8.1 0 0 0-15.5-2M4 4v5h5"/><path d="M4 13a8.1 8.1 0 0 0 15.5 2M20 20v-5h-5"/></svg><span>\u5237\u65B0\u5217\u8868</span></button></div><div class="settings-model-grid"><div class="field settings-model-field"><div class="settings-model-label-row"><label class="field-label" for="cfg-commit-cli">CLI</label><span class="settings-model-provider">\u5FEB\u6377\u63D0\u4EA4</span></div><select id="cfg-commit-cli" class="field-input"><option value="claude">Claude</option><option value="codex">Codex</option></select><div class="settings-model-meta"><span class="settings-model-status">\u751F\u6210 commit message \u4E0E tag</span></div></div><div class="field settings-model-field"><div class="settings-model-label-row"><label class="field-label" for="cfg-commit-model">\u6A21\u578B</label><span class="settings-model-provider" id="cfg-commit-model-provider">Claude Code</span></div><div id="cfg-commit-model-combobox" class="model-combobox" data-provider="claude"><div class="model-combobox-control"><input id="cfg-commit-model" class="field-input model-combobox-input" type="text" role="combobox" aria-autocomplete="list" aria-expanded="false" aria-controls="cfg-commit-model-listbox" autocomplete="off" autocapitalize="none" autocorrect="off" spellcheck="false" placeholder="\u8DDF\u968F Claude Code \u9ED8\u8BA4" /><button type="button" class="model-combobox-toggle" aria-label="\u5C55\u5F00 commit \u6A21\u578B\u5217\u8868"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div><div id="cfg-commit-model-listbox" class="model-combobox-menu hidden" role="listbox" aria-label="Commit \u6A21\u578B"></div></div><div class="settings-model-meta"><span class="settings-model-status" data-model-status>\u8DDF\u968F CLI \u9ED8\u8BA4</span><span class="settings-model-help">\u5217\u8868\u6765\u81EA\u81EA\u52A8\u68C0\u6D4B</span></div></div></div></section><div class="field"><label class="field-label" for="cfg-cwd">\u9ED8\u8BA4\u5DE5\u4F5C\u76EE\u5F55</label><input id="cfg-cwd" type="text" class="field-input" placeholder="/home/user" /></div><div class="field"><label class="field-label" for="cfg-shell">Shell</label><input id="cfg-shell" type="text" class="field-input" placeholder="/bin/bash" /></div>'+(typeof WandNative<"u"&&typeof WandNative.getAppIcon=="function"?'<div class="settings-app-icon-block"><div class="settings-section-head"><span class="settings-section-icon">'+V("palette",{size:18,strokeWidth:1.7})+'</span><div class="settings-section-head-text"><h4 class="settings-section-heading">\u5E94\u7528\u56FE\u6807</h4><p class="settings-section-sub">\u9009\u62E9 App \u542F\u52A8\u5668\u56FE\u6807\uFF0C\u8FD4\u56DE\u684C\u9762\u540E\u751F\u6548</p></div></div><div id="app-icon-picker" class="settings-app-icon-picker"><button type="button" class="settings-app-icon-option" data-icon="shorthair"><span class="settings-app-icon-preview">'+Oi.user+'</span><span class="settings-app-icon-label">\u8D5B\u535A\u864E\u599E</span></button><button type="button" class="settings-app-icon-option" data-icon="garfield"><span class="settings-app-icon-preview">'+Oi.assistant+'</span><span class="settings-app-icon-label">\u52E4\u52B3\u521D\u4E8C</span></button></div><p id="app-icon-message" class="hint hidden"></p></div>':"")+'<div class="settings-actions settings-actions-sticky"><button id="save-config-button" class="btn btn-primary btn-block">\u4FDD\u5B58\u914D\u7F6E</button></div><p id="config-message" class="hint hidden settings-status-message"></p></div><div class="settings-panel" id="settings-tab-security" role="tabpanel"><div class="settings-panel-header"><h3 class="settings-panel-title">\u5B89\u5168</h3><p class="settings-panel-desc">\u7BA1\u7406\u767B\u5F55\u5BC6\u7801\u4E0E SSL \u8BC1\u4E66\uFF0C\u654F\u611F\u53D8\u66F4\u8BF7\u786E\u8BA4\u540E\u518D\u4FDD\u5B58\u3002</p></div><div class="settings-card"><div class="settings-card-head"><span class="settings-card-icon" aria-hidden="true">'+V("lock",{size:18,strokeWidth:1.8})+'</span><div class="settings-card-head-text"><h3 class="settings-card-title">\u4FEE\u6539\u5BC6\u7801</h3><p class="settings-card-desc">\u81F3\u5C11 6 \u4E2A\u5B57\u7B26\uFF1B\u4FDD\u5B58\u540E\u4E0B\u6B21\u767B\u5F55\u751F\u6548\u3002</p></div></div><form id="change-password-form" autocomplete="on" onsubmit="return false;"><input type="text" name="username" autocomplete="username" value="wand" tabindex="-1" aria-hidden="true" style="position:absolute;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none" readonly /><div class="field"><label class="field-label" for="new-password">\u65B0\u5BC6\u7801</label><input id="new-password" type="password" class="field-input" placeholder="\u8F93\u5165\u65B0\u5BC6\u7801\uFF08\u81F3\u5C11 6 \u4E2A\u5B57\u7B26\uFF09" autocomplete="new-password" /></div><div class="field"><label class="field-label" for="confirm-password">\u786E\u8BA4\u5BC6\u7801</label><input id="confirm-password" type="password" class="field-input" placeholder="\u518D\u6B21\u8F93\u5165\u65B0\u5BC6\u7801" autocomplete="new-password" /></div><div class="settings-card-actions"><button id="save-password-button" class="btn btn-primary" type="submit">\u4FDD\u5B58\u5BC6\u7801</button></div><p id="settings-error" class="error-message hidden"></p><p id="settings-success" class="hint settings-success-message hidden"></p></form></div><div class="settings-card"><div class="settings-card-head"><span class="settings-card-icon" aria-hidden="true">'+V("certificate",{size:18,strokeWidth:1.8})+'</span><div class="settings-card-head-text"><h3 class="settings-card-title">SSL \u8BC1\u4E66</h3><p class="settings-card-desc" id="cert-status">\u52A0\u8F7D\u4E2D...</p></div></div><div class="field"><label class="field-label" for="cert-key-file">\u79C1\u94A5\u6587\u4EF6 (.key)</label><div class="file-picker"><input id="cert-key-file" type="file" class="file-picker-input" accept=".key,.pem" /><label for="cert-key-file" class="file-picker-trigger"><svg class="file-picker-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"></path></svg><span class="file-picker-label">\u9009\u62E9\u79C1\u94A5</span></label><span class="file-picker-name" data-default="\u672A\u9009\u62E9\u6587\u4EF6">\u672A\u9009\u62E9\u6587\u4EF6</span></div></div><div class="field"><label class="field-label" for="cert-cert-file">\u8BC1\u4E66\u6587\u4EF6 (.crt/.pem)</label><div class="file-picker"><input id="cert-cert-file" type="file" class="file-picker-input" accept=".crt,.pem,.cert" /><label for="cert-cert-file" class="file-picker-trigger"><svg class="file-picker-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline></svg><span class="file-picker-label">\u9009\u62E9\u8BC1\u4E66</span></label><span class="file-picker-name" data-default="\u672A\u9009\u62E9\u6587\u4EF6">\u672A\u9009\u62E9\u6587\u4EF6</span></div></div><div class="settings-card-actions"><button id="upload-cert-button" class="btn btn-primary">\u4E0A\u4F20\u8BC1\u4E66</button></div><p id="cert-message" class="hint hidden"></p></div></div><div class="settings-panel" id="settings-tab-presets" role="tabpanel"><div class="settings-panel-header"><h3 class="settings-panel-title">\u547D\u4EE4\u9884\u8BBE</h3><p class="settings-panel-desc">\u5F53\u524D\u547D\u4EE4\u9884\u8BBE\u4ECE config.json \u8BFB\u53D6\uFF0C\u53EF\u5728\u8FD9\u91CC\u5FEB\u901F\u67E5\u770B\u5DF2\u6709\u914D\u7F6E\u3002</p></div><div id="presets-list" class="presets-list"></div></div><div class="settings-panel" id="settings-tab-display" role="tabpanel"><div class="settings-panel-header"><h3 class="settings-panel-title">\u663E\u793A</h3><p class="settings-panel-desc">\u63A7\u5236\u804A\u5929\u89C6\u56FE\u91CC\u4E0D\u540C\u5361\u7247\u7C7B\u578B\u7684\u9ED8\u8BA4\u5C55\u5F00\u72B6\u6001\u3002</p></div><div class="settings-section-title">\u5361\u7247\u9ED8\u8BA4\u5C55\u5F00\u72B6\u6001</div><p class="hint settings-inline-hint">\u8BBE\u7F6E\u7ED3\u6784\u5316\u804A\u5929\u89C6\u56FE\u4E2D\u5404\u7C7B\u5361\u7247\u7684\u9ED8\u8BA4\u5C55\u5F00/\u6298\u53E0\u72B6\u6001\u3002\u624B\u52A8\u64CD\u4F5C\u7684\u5C55\u5F00\u72B6\u6001\u4F18\u5148\u4E8E\u6B64\u9ED8\u8BA4\u8BBE\u7F6E\u3002</p><div class="switch-card-list"><label class="switch-card" for="cfg-card-edit"><div class="switch-card-header"><span class="switch-card-title">\u7F16\u8F91\u5361\u7247 (Edit/Write)</span><input id="cfg-card-edit" type="checkbox" class="switch-toggle" /><span class="switch-slider"></span></div><div class="switch-card-desc">\u6587\u4EF6\u7F16\u8F91\u548C\u5199\u5165\u64CD\u4F5C\u7684 diff \u89C6\u56FE</div></label><label class="switch-card" for="cfg-card-inline"><div class="switch-card-header"><span class="switch-card-title">\u5185\u8054\u5DE5\u5177 (Read/Glob/Grep)</span><input id="cfg-card-inline" type="checkbox" class="switch-toggle" /><span class="switch-slider"></span></div><div class="switch-card-desc">\u6587\u4EF6\u8BFB\u53D6\u3001\u641C\u7D22\u7B49\u5DE5\u5177\u7684\u7ED3\u679C</div></label><label class="switch-card" for="cfg-card-terminal"><div class="switch-card-header"><span class="switch-card-title">\u7EC8\u7AEF\u8F93\u51FA (Bash)</span><input id="cfg-card-terminal" type="checkbox" class="switch-toggle" /><span class="switch-slider"></span></div><div class="switch-card-desc">\u547D\u4EE4\u884C\u6267\u884C\u7ED3\u679C</div></label><label class="switch-card" for="cfg-card-thinking"><div class="switch-card-header"><span class="switch-card-title">\u601D\u8003\u8FC7\u7A0B (Thinking)</span><input id="cfg-card-thinking" type="checkbox" class="switch-toggle" /><span class="switch-slider"></span></div><div class="switch-card-desc">Claude \u7684\u601D\u8003\u8FC7\u7A0B\u5757</div></label><label class="switch-card" for="cfg-card-toolgroup"><div class="switch-card-header"><span class="switch-card-title">\u5DE5\u5177\u7EC4</span><input id="cfg-card-toolgroup" type="checkbox" class="switch-toggle" /><span class="switch-slider"></span></div><div class="switch-card-desc">\u8FDE\u7EED\u540C\u7C7B\u5DE5\u5177\u8C03\u7528\u7684\u6298\u53E0\u7EC4</div></label></div><div class="settings-actions settings-actions-sticky"><button id="save-display-button" class="btn btn-primary btn-block">\u4FDD\u5B58\u663E\u793A\u8BBE\u7F6E</button></div><p id="display-message" class="hint hidden settings-status-message"></p></div></div></div></section>'}function zg(e){var t=$e();return e.selectedId?"":'<div class="folder-picker-compact" id="folder-picker-container"><div class="folder-picker-compact-row"><span class="folder-picker-compact-icon">'+V("folder",{size:13,strokeWidth:1.7})+'</span><input type="text" id="folder-picker-input" class="folder-picker-compact-input" value="'+p(t)+'" placeholder="\u5DE5\u4F5C\u76EE\u5F55" autocomplete="off" /><button type="button" id="folder-picker-toggle" class="folder-picker-toggle" title="\u9009\u62E9\u76EE\u5F55" aria-label="\u9009\u62E9\u76EE\u5F55">'+V("chevronDown",{size:11,strokeWidth:2})+'</button></div><div id="folder-picker-dropdown" class="folder-picker-dropdown hidden"><div class="folder-picker-quick-row"><button class="folder-picker-quick-btn" data-path="/tmp">\u4E34\u65F6</button><button class="folder-picker-quick-btn" data-path="/">\u6839\u76EE\u5F55</button></div></div><div id="folder-picker-validation" class="folder-picker-validation"></div></div>'}function Vg(e){var t=$e(),n=t;if(e.selectedId){var i=e.sessions.find(function(a){return a.id===e.selectedId});n=i&&i.cwd?i.cwd:t}return'<div class="working-dir-indicator" id="working-dir-indicator" title="'+p(n)+'" data-path="'+p(n)+'"><span class="working-dir-indicator-icon">'+V("folder",{size:12,strokeWidth:1.7})+"</span>"+mt(n,"working-dir-indicator-path",' id="working-dir-indicator-path"')+"</div>"}function wo(e){if(!e)return"";var t=Date.now(),n=new Date(e).getTime(),i=Math.max(0,t-n),a=Math.floor(i/1e3);if(a<60)return"\u521A\u521A";var u=Math.floor(a/60);if(u<60)return u+"\u5206\u949F\u524D";var o=Math.floor(u/60);if(o<24)return o+"\u5C0F\u65F6\u524D";var s=Math.floor(o/24);return s<30?s+"\u5929\u524D":Math.floor(s/30)+"\u4E2A\u6708\u524D"}function Co(e){if(!e)return"";var t=Date.now(),n=new Date(e).getTime(),i=Math.max(0,t-n),a=Math.floor(i/1e3),u=Math.floor(a/60),o=Math.floor(u/60);return o>0?o+"h"+(u%60>0?u%60+"m":""):u>0?u+"m":a+"s"}function pr(e){if(!e)return"";if(e.permissionBlocked)return"\u7B49\u5F85\u6388\u6743";if(ue(e)&&e.structuredState&&e.structuredState.inFlight)return"\u601D\u8003\u4E2D";var t={idle:"\u7A7A\u95F2",stopped:"\u5DF2\u505C\u6B62",running:"\u8FD0\u884C\u4E2D",exited:"\u5DF2\u9000\u51FA",failed:"\u5DF2\u5931\u8D25"};return t[e.status]||e.status}function Bo(e){return e?e.permissionBlocked?"permission-blocked":ue(e)&&e.structuredState&&e.structuredState.inFlight?"running":e.status||"":""}function lc(e){return e?e.permissionBlocked?"\u7B49\u5F85\u4F60\u7684\u6388\u6743":e.status!=="running"?"":e.id===r.selectedId&&r.currentTask&&r.currentTask.title?r.currentTask.title:e.currentTaskTitle?e.currentTaskTitle:"":""}function dc(e){var t=e&&e.messages;if(!t||t.length===0)return"";for(var n=t.length-1;n>=0;n--){var i=t[n];if(!(!i||i.role!=="user")){var a=i.content;if(typeof a=="string"){var u=a.trim();if(u)return u;continue}if(Array.isArray(a))for(var o=0;o<a.length;o++){var s=a[o];if(!(!s||s.type!=="text"||!s.text)&&!s.__queued){var l=String(s.text).trim();if(l)return l}}}}return""}function cc(e){var t=e&&e.messages;if(!t||t.length===0)return"";for(var n=t.length-1;n>=0;n--){var i=t[n];if(i.role==="assistant"){for(var a=i.content||[],u=0;u<a.length;u++)if(a[u].type==="text"&&a[u].text&&a[u].text.trim()){var o=a[u].text.trim();o=o.replace(/^#+\s+/gm,"").replace(/\*\*/g,"").replace(/`/g,"");var s=o.split(`
8
- `)[0].trim();return s.slice(0,100)}}}return""}function fc(e,t){var n=e.id===r.selectedId?" active":"",i=r.sessionsManageMode&&r.selectedSessionIds[e.id]?" selected":"",a=pr(e),u=Bo(e),o="",s=qo("sessions",e.id,"\u9009\u62E9\u4F1A\u8BDD "+e.command);if((e.provider==="claude"||e.provider==="codex")&&e.claudeSessionId&&e.status!=="running"&&!r.sessionsManageMode&&!ue(e)){var l=e.provider==="codex"?"\u6062\u590D Codex \u4F1A\u8BDD":"\u6062\u590D Claude \u4F1A\u8BDD";o='<button class="session-action-btn" data-action="resume" data-session-id="'+e.id+'" type="button" aria-label="'+l+'" title="'+l+'"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 4v6h6"/><path d="M3.51 15a9 9 0 105.64-11.36L3 10"/></svg></button>'}var d=!r.sessionsManageMode&&e.worktreeEnabled&&e.worktree&&e.worktree.branch&&e.worktree.path,f=e.worktreeMergeStatus==="merged"&&e.worktreeMergeInfo&&e.worktreeMergeInfo.cleanupDone===!1,c=e.status==="running"||e.worktreeMergeStatus==="merging",v=f?"\u91CD\u8BD5\u6E05\u7406 worktree":"\u5408\u5E76\u5230\u4E3B\u5206\u652F",h=d&&e.worktreeMergeStatus!=="merged"?'<button class="session-action-btn merge-btn" data-action="worktree-merge" data-session-id="'+e.id+'" type="button" aria-label="'+p(v)+'" title="'+p(v)+'"'+(c?" disabled":"")+'><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M7 7h10"/><path d="M7 12h10"/><path d="M7 17h10"/><path d="M5 7l-2 2 2 2"/><path d="M19 15l2 2-2 2"/></svg></button>':f?'<button class="session-action-btn merge-btn" data-action="worktree-cleanup" data-session-id="'+e.id+'" type="button" aria-label="\u91CD\u8BD5\u6E05\u7406 worktree" title="\u91CD\u8BD5\u6E05\u7406 worktree"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"/><path d="M8 6V4a2 2 0 012-2h4a2 2 0 012 2v2"/><path d="M19 6l-1 14a2 2 0 01-2 2H8a2 2 0 01-2-2L5 6"/></svg></button>':"",g=r.sessionsManageMode?"":'<button class="session-action-btn delete-btn" data-action="delete-session" data-session-id="'+e.id+'" type="button" aria-label="\u5220\u9664\u4F1A\u8BDD" title="\u5220\u9664\u6B64\u4F1A\u8BDD"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"/><path d="M8 6V4a2 2 0 012-2h4a2 2 0 012 2v2"/><path d="M19 6l-1 14a2 2 0 01-2 2H8a2 2 0 01-2-2L5 6"/></svg></button>',m='<span class="session-actions">'+o+h+g+"</span>",y=e.title||e.summary?'<div class="session-title">'+p(e.title||e.summary)+"</div>":'<div class="session-command">'+p(e.resumedFromSessionId?e.command.replace(/\s+--resume\s+\S+/,"").replace(/\s+resume\s+[0-9a-f-]+/,""):e.command)+"</div>",C=lc(e),E="";e.status==="running"&&C&&(E='<div class="session-activity">'+p(C)+"</div>");var B=e.description?'<div class="session-description">'+p(e.description)+"</div>":"",D="";e.status==="running"?D='<span class="session-time" title="\u5DF2\u8FD0\u884C '+p(Co(e.startedAt))+'">'+p(Co(e.startedAt))+"</span>":e.endedAt?D='<span class="session-time" title="'+p(new Date(e.endedAt).toLocaleString())+'">'+p(wo(e.endedAt))+"</span>":e.startedAt&&(D='<span class="session-time" title="'+p(new Date(e.startedAt).toLocaleString())+'">'+p(wo(e.startedAt))+"</span>");var F=Do(e),I=e.autoRecovered?'<span class="session-recovery-hint">\u81EA\u52A8\u6062\u590D</span>':"",L=r.sessionsManageMode?"":'<div class="session-swipe-bg" aria-hidden="true"><button class="session-swipe-delete" data-action="swipe-delete-session" data-session-id="'+e.id+'" type="button" tabindex="-1" aria-label="\u5220\u9664\u4F1A\u8BDD"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"/><path d="M8 6V4a2 2 0 012-2h4a2 2 0 012 2v2"/><path d="M19 6l-1 14a2 2 0 01-2 2H8a2 2 0 01-2-2L5 6"/></svg><span>\u5220\u9664</span></button></div>';return'<div class="session-item'+n+i+'" data-session-id="'+e.id+'" role="button" tabindex="0">'+L+'<div class="session-item-content"><div class="session-item-row">'+s+'<div class="session-main"><div class="session-title-row">'+y+D+"</div>"+B+E+'<div class="session-meta"><span class="session-status '+u+'">'+p(a)+"</span>"+F+I+"</div></div>"+m+"</div></div></div>"}function pc(e){if(!e||!e.worktreeMergeStatus)return"";var t={ready:"\u53EF\u5408\u5E76",checking:"\u68C0\u67E5\u4E2D",merging:"\u5408\u5E76\u4E2D",merged:e.worktreeMergeInfo&&e.worktreeMergeInfo.cleanupDone===!1?"\u5DF2\u5408\u5E76\u5F85\u6E05\u7406":"\u5DF2\u5408\u5E76",failed:"\u5408\u5E76\u5931\u8D25"};return t[e.worktreeMergeStatus]||""}function vc(e){var t=pc(e);return t?'<span class="session-kind-badge worktree-merge '+p(e.worktreeMergeStatus||"")+'">'+p(t)+"</span>":""}function Do(e){if(!e||!e.worktreeEnabled)return"";var t=[];e.worktree&&e.worktree.branch&&t.push("Worktree: "+e.worktree.branch),e.worktree&&e.worktree.path&&t.push("Path: "+e.worktree.path);var n=t.length>0?' title="'+p(t.join(`
9
- `))+'"':"";return'<span class="session-kind-badge worktree"'+n+">Worktree</span>"+vc(e)}function Ug(e){if(!e)return"";var t=ue(e)?'<span class="session-kind-badge structured">Structured</span>':'<span class="session-kind-badge pty">PTY</span>';return t+Do(e)}function mc(e){var t=[{id:"managed",label:"\u6258\u7BA1",desc:"\u5168\u81EA\u52A8\u5B8C\u6210\u4EFB\u52A1"},{id:"full-access",label:"\u5168\u6743\u9650",desc:"\u81EA\u52A8\u786E\u8BA4\u6743\u9650"},{id:"auto-edit",label:"\u81EA\u52A8\u7F16\u8F91",desc:"\u81EA\u52A8\u786E\u8BA4\u4FEE\u6539"},{id:"default",label:"\u6807\u51C6",desc:"\u9010\u6B65\u786E\u8BA4\u64CD\u4F5C"},{id:"native",label:"\u539F\u751F",desc:"\u539F\u751F\u7ED3\u6784\u5316\u8F93\u51FA"}];return t.map(function(n){var i=n.id===e?" active":"";return'<button type="button" class="mode-card'+i+'" data-mode="'+n.id+'"><span class="mode-card-label">'+n.label+'</span><span class="mode-card-desc">'+n.desc+"</span></button>"}).join("")}function gc(e){var t=[{id:"claude",label:"Claude",desc:"\u5B8C\u6574 Claude \u4F1A\u8BDD\u80FD\u529B"},{id:"codex",label:"Codex",desc:"\u7ED3\u6784\u5316 JSONL \u6216 PTY \u4F1A\u8BDD"}];return t.map(function(n){var i=n.id===e?" active":"";return'<button type="button" class="mode-card provider-card'+i+'" data-provider="'+n.id+'"><span class="mode-card-label">'+n.label+'</span><span class="mode-card-desc">'+n.desc+"</span></button>"}).join("")}function hc(e){var t=[{id:"structured",label:"\u7ED3\u6784\u5316",desc:"\u667A\u80FD\u5BF9\u8BDD\u6A21\u5F0F"},{id:"pty",label:"PTY",desc:"\u4EA4\u4E92\u5F0F\u7EC8\u7AEF\u4F1A\u8BDD"}];return t.map(function(n){var i=n.id===e?" active":"",a="";return'<button type="button" class="mode-card session-kind-card'+i+a+'" data-session-kind="'+n.id+'"><span class="mode-card-label">'+n.label+'</span><span class="mode-card-desc">'+n.desc+"</span></button>"}).join("")}function Kg(e){return'<label class="session-inline-toggle" for="session-worktree-toggle" title="\u4E3A\u8BE5\u4F1A\u8BDD\u521B\u5EFA\u72EC\u7ACB\u7684 git worktree \u5206\u652F"><svg class="session-inline-toggle-icon" viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="6" cy="6" r="2.2"/><circle cx="18" cy="6" r="2.2"/><circle cx="12" cy="18" r="2.2"/><path d="M6 8.2v3.4a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8.2"/><path d="M12 13.6v2.2"/></svg><span class="session-inline-toggle-label">Worktree \u6A21\u5F0F</span><input id="session-worktree-toggle" type="checkbox" class="switch-toggle"'+(e?" checked":"")+' /><span class="switch-slider" aria-hidden="true"></span></label>'}function ko(e){var t=r.sessionTool||"claude";return e==="structured"?t==="codex"?"Codex JSONL \u7ED3\u6784\u5316\u804A\u5929\u754C\u9762\uFF0C\u652F\u6301\u591A\u8F6E\u5BF9\u8BDD\u548C\u5DE5\u5177\u8C03\u7528\u5C55\u793A\u3002":"\u7ED3\u6784\u5316\u804A\u5929\u754C\u9762\uFF0C\u652F\u6301\u591A\u8F6E\u5BF9\u8BDD\u3001\u6D41\u5F0F\u8F93\u51FA\u548C\u5DE5\u5177\u8C03\u7528\u5C55\u793A\u3002":t==="codex"?"Codex PTY \u7EC8\u7AEF\u4F1A\u8BDD\uFF1Bterminal \u662F\u539F\u59CB\u8F93\u51FA\uFF0Cchat \u662F\u89E3\u6790\u540E\u7684\u9605\u8BFB\u89C6\u56FE\u3002":"\u539F\u59CB PTY \u7EC8\u7AEF\u4F1A\u8BDD\uFF0C\u652F\u6301\u6301\u7EED\u4EA4\u4E92\u3001\u7EC8\u7AEF\u89C6\u56FE\u548C\u6743\u9650\u6D41\u3002"}function yc(){var e=Xe(),t=Dt(e,r.modeValue||r.chatMode||"default"),n=r.sessionCreateKind||"structured",i=r.sessionCreateWorktree===!0;return'<section id="session-modal" class="modal-backdrop hidden"><div class="modal session-modal"><div class="modal-header"><div><h2 class="modal-title">\u65B0\u5BF9\u8BDD</h2><p class="modal-subtitle">\u542F\u52A8 Claude \u6216 Codex \u4F1A\u8BDD\uFF0C\u9009\u62E9 provider\u3001\u4F1A\u8BDD\u7C7B\u578B\u3001\u6A21\u5F0F\u548C\u5DE5\u4F5C\u76EE\u5F55\u3002</p></div><button id="close-modal-button" class="btn btn-ghost btn-icon modal-close-btn" type="button" aria-label="\u5173\u95ED"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" aria-hidden="true"><line x1="6" y1="6" x2="18" y2="18"/><line x1="18" y1="6" x2="6" y2="18"/></svg></button></div><div class="modal-body"><div class="field"><label class="field-label">Provider</label><div id="provider-cards" class="mode-cards">'+gc(e)+'</div></div><div class="field"><label class="field-label">\u4F1A\u8BDD\u7C7B\u578B</label><div id="session-kind-cards" class="mode-cards">'+hc(n)+'</div><div class="field-hint session-kind-hint-row"><span id="session-kind-description">'+p(ko(n))+'</span></div></div><div class="field"><label class="field-label" for="cwd">\u5DE5\u4F5C\u76EE\u5F55</label><div class="suggestions-wrap"><input id="cwd" type="text" class="field-input" autocomplete="off" placeholder="'+p($e())+'" /><div id="cwd-suggestions" class="suggestions hidden"></div></div><p class="field-hint">\u521B\u5EFA\u524D\u5148\u786E\u8BA4\u76EE\u5F55\uFF1B\u7559\u7A7A\u5219\u4F7F\u7528\u4E0A\u65B9\u76EE\u5F55\uFF0C\u652F\u6301\u8DEF\u5F84\u81EA\u52A8\u8865\u5168\u3002</p><div id="recent-paths-bubbles" class="recent-paths-bubbles"></div></div><div class="field"><label class="field-label">\u6A21\u5F0F</label><div id="mode-cards" class="mode-cards">'+mc(t)+'</div><p id="mode-description" class="field-hint">'+p(Fl(e,t))+'</p></div></div><div class="modal-footer"><button id="run-button" class="btn btn-primary btn-block">\u542F\u52A8\u4F1A\u8BDD</button><p id="modal-error" class="error-message hidden"></p></div></div></section>'}function Ao(){var e=[];return r.sessions.forEach(function(t){var n=t.startedAt?new Date(t.startedAt).getTime():0;e.push({kind:"session",ref:t,t:isFinite(n)?n:0})}),r.claudeHistoryLoaded&&vr().forEach(function(t){var n=t.timestamp?new Date(t.timestamp).getTime():Number(t.mtimeMs)||0;isFinite(n)||(n=Number(t.mtimeMs)||0),e.push({kind:"history",ref:t,t:n})}),r.codexHistoryLoaded&&ga().forEach(function(t){var n=t.timestamp?new Date(t.timestamp).getTime():Number(t.mtimeMs)||0;e.push({kind:"codex",ref:t,t:isFinite(n)?n:0})}),e.sort(function(t,n){return n.t-t.t}),e}function bc(){var e=[];e.push(xo());var t=Ao();return t.length===0?xo()+'<div class="empty-state"><strong>\u8FD8\u6CA1\u6709\u4F1A\u8BDD\u8BB0\u5F55</strong><br>\u70B9\u51FB\u4E0A\u65B9\u300C\u65B0\u5BF9\u8BDD\u300D\u5F00\u59CB\u4F60\u7684\u7B2C\u4E00\u6B21\u5BF9\u8BDD\u3002</div>':(e.push(wc(t)),e.join(""))}function Ec(){return!!r.sidebarPinned&&!!r.sidebarCollapsed}function Fc(){var e=Ao(),t=e.map(function(i,a){var u=a+1;if(i.kind==="session"){var o=i.ref,s=o.id===r.selectedId?" active":"",l=o.title||o.description||o.summary||o.command||"\u4F1A\u8BDD "+u;return'<button class="sidebar-collapsed-tile'+s+'" type="button" data-collapsed-session-id="'+p(o.id)+'" title="'+p(l)+'">'+u+"</button>"}var d=i.ref,f=d.firstUserMessage||"(\u7A7A\u4F1A\u8BDD)",c=f+" \xB7 "+Oo(d.timestamp);return'<button class="sidebar-collapsed-tile" type="button" data-collapsed-history-id="'+p(d.claudeSessionId)+'" data-provider="'+p(i.kind==="codex"?"codex":"claude")+'" data-cwd="'+p(d.cwd||"")+'" title="'+p(c)+'">'+u+"</button>"}).join(""),n='<button class="sidebar-collapsed-tile add" type="button" data-collapsed-new-session="1" title="\u65B0\u5EFA\u4F1A\u8BDD" aria-label="\u65B0\u5EFA\u4F1A\u8BDD"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg></button>';return'<div class="sidebar-collapsed-tiles">'+t+n+"</div>"}function ma(){return Ec()?Fc():bc()}function xo(){if(!r.sessionsManageMode)return'<div class="session-manage-bar"><span class="sidebar-intro">\u5168\u90E8\u4F1A\u8BDD</span><button class="btn btn-ghost btn-xs session-manage-toggle" data-action="toggle-manage-mode" type="button"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M9 11l3 3L22 4"/><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"/></svg><span>\u7BA1\u7406</span></button></div>';var e=So().length,t=Io().length,n=To().length,i=e+t+n,a=i>0,u=Bc(),o=u>0&&i>=u,s=o?"\u53D6\u6D88\u5168\u9009":"\u5168\u9009",l=o?"clear-selection":"select-all-visible",d=u===0?" disabled":"",f='<button class="session-manage-exit" data-action="toggle-manage-mode" type="button" aria-label="\u9000\u51FA\u7BA1\u7406\u6A21\u5F0F" title="\u9000\u51FA\u7BA1\u7406\u6A21\u5F0F"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" aria-hidden="true"><line x1="6" y1="6" x2="18" y2="18"/><line x1="18" y1="6" x2="6" y2="18"/></svg></button>',c=a?'<span class="session-manage-count">'+i+'</span><span class="session-manage-summary-label">\u5DF2\u9009\u62E9</span>':'<span class="session-manage-summary-label muted">\u9009\u62E9\u8981\u7BA1\u7406\u7684\u9879\u76EE</span>';return'<div class="session-manage-bar active">'+f+'<div class="session-manage-summary">'+c+'</div><div class="session-manage-actions"><button class="btn btn-ghost btn-xs" data-action="'+l+'" type="button"'+d+">"+s+'</button><button class="btn btn-danger btn-xs" data-action="delete-selected" type="button"'+(a?"":" disabled")+">\u5220\u9664"+(a?" "+i:"")+"</button></div></div>"}function wc(e){var t='<section class="session-group">';return t+=e.map(function(n){return n.kind==="session"?fc(n.ref,"sessions"):xc(n.ref,n.kind)}).join(""),t+="</section>",t}function vr(){var e=new Set;return r.sessions.forEach(function(t){t.claudeSessionId&&e.add(t.claudeSessionId)}),r.claudeHistory.filter(function(t){return t.hasConversation&&!t.managedByWand&&!e.has(t.claudeSessionId)})}function So(){return Object.keys(r.selectedSessionIds).filter(function(e){return!!r.selectedSessionIds[e]})}function Io(){return Object.keys(r.selectedClaudeHistoryIds).filter(function(e){return!!r.selectedClaudeHistoryIds[e]})}function To(){return Object.keys(r.selectedCodexHistoryIds).filter(function(e){return!!r.selectedCodexHistoryIds[e]})}function si(){r.selectedSessionIds={},r.selectedClaudeHistoryIds={},r.selectedCodexHistoryIds={}}function Cc(e){r.sessionsManageMode=typeof e=="boolean"?e:!r.sessionsManageMode,r.sessionsManageMode&&(!r.claudeHistoryLoaded||!r.codexHistoryLoaded)&&li().then(pe),r.sessionsManageMode||(si(),Lr()),pe()}function Lo(){return r.sessions.slice()}function Bc(){return Lo().length+vr().length+ga().length}function Mo(){if(!r.claudeHistoryLoaded||!r.codexHistoryLoaded){li().then(Mo);return}var e={};Lo().forEach(function(i){e[i.id]=!0});var t={};vr().forEach(function(i){t[i.claudeSessionId]=!0});var n={};ga().forEach(function(i){n[i.claudeSessionId]=!0}),r.selectedSessionIds=e,r.selectedClaudeHistoryIds=t,r.selectedCodexHistoryIds=n,pe()}function Dc(){si(),pe()}function mr(e,t){if(!(!r.sessionsManageMode||!t)){var n=e==="history"?r.selectedClaudeHistoryIds:e==="codex"?r.selectedCodexHistoryIds:r.selectedSessionIds;n[t]?delete n[t]:n[t]=!0,pe()}}function qo(e,t,n){if(!r.sessionsManageMode)return"";var i=e==="history"?!!r.selectedClaudeHistoryIds[t]:e==="codex"?!!r.selectedCodexHistoryIds[t]:!!r.selectedSessionIds[t];return'<label class="session-manage-check"><input type="checkbox" data-action="toggle-selection" data-kind="'+p(e)+'" data-id="'+p(t)+'"'+(i?" checked":"")+' aria-label="'+p(n)+'"><span></span></label>'}function An(e,t){return Ta(e,Object.assign({type:"danger",danger:!0,okLabel:"\u5220\u9664"},t||{}))}function kc(){var e=So(),t=Io(),n=To(),i=e.length+t.length+n.length;i&&An("\u786E\u8BA4\u5220\u9664\u6240\u9009 "+i+" \u9879\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002",{title:"\u5220\u9664\u6240\u9009 "+i+" \u9879"}).then(function(a){if(a){var u=[];e.length>0&&u.push(fetch("/api/sessions/batch-delete",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({sessionIds:e})}).then(function(o){return o.json()})),t.length>0&&u.push(fetch("/api/claude-history/batch-delete",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({claudeSessionIds:t})}).then(function(o){return o.json()})),n.length>0&&u.push(fetch("/api/codex-history/batch-delete",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({claudeSessionIds:n})}).then(function(o){return o.json()})),Promise.all(u).then(function(){return e.indexOf(r.selectedId)!==-1&&(r.selectedId=null,he()),r.claudeHistory=r.claudeHistory.filter(function(o){return t.indexOf(o.claudeSessionId)===-1}),r.codexHistory=r.codexHistory.filter(function(o){return n.indexOf(o.claudeSessionId)===-1}),si(),Pt()}).catch(function(){var o=document.getElementById("action-error");He(o,"\u65E0\u6CD5\u6279\u91CF\u5220\u9664\u6240\u9009\u9879\u76EE\u3002")})}})}function Ac(){var e=Date.now()-864e5,t=vr().filter(function(n){return!n.timestamp||new Date(n.timestamp).getTime()<=e});if(t.length)return An("\u786E\u8BA4\u6E05\u7A7A\u5F53\u524D\u663E\u793A\u7684 "+t.length+" \u6761 Claude \u5386\u53F2\u5417\uFF1F",{title:"\u6E05\u7A7A Claude \u5386\u53F2",okLabel:"\u6E05\u7A7A"}).then(function(n){if(n){var i=t.map(function(a){return a.claudeSessionId});return fetch("/api/claude-history/batch-delete",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({claudeSessionIds:i})}).then(function(a){return a.json()}).then(function(a){if(a&&a.error)throw new Error(a.error);r.claudeHistory=r.claudeHistory.filter(function(u){return i.indexOf(u.claudeSessionId)===-1}),si(),pe()}).catch(function(){var a=document.getElementById("action-error");He(a,"\u65E0\u6CD5\u6E05\u7A7A\u5386\u53F2\u4F1A\u8BDD\u3002")})}})}function xc(e,t){var n=t==="codex",i=n?"resume-codex-history":"resume-history",a=n?"delete-codex-history":"delete-history",u=n?r.selectedCodexHistoryIds:r.selectedClaudeHistoryIds,o=e.claudeSessionId.slice(0,8),s=e.firstUserMessage||"(\u7A7A\u4F1A\u8BDD)",l=Oo(e.timestamp),d=qo(t,e.claudeSessionId,"\u9009\u62E9\u4F1A\u8BDD "+s),f=r.sessionsManageMode?"":'<button class="session-action-btn delete-btn" data-action="'+a+'" data-claude-session-id="'+e.claudeSessionId+'" type="button" aria-label="\u5220\u9664\u4F1A\u8BDD" title="\u5220\u9664\u4F1A\u8BDD"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"/><path d="M8 6V4a2 2 0 012-2h4a2 2 0 012 2v2"/><path d="M19 6l-1 14a2 2 0 01-2 2H8a2 2 0 01-2-2L5 6"/></svg></button>',c=r.sessionsManageMode?"":'<button class="session-action-btn" data-action="'+i+'" data-claude-session-id="'+e.claudeSessionId+'" data-cwd="'+p(e.cwd)+'" type="button" aria-label="\u6062\u590D\u4F1A\u8BDD" title="'+(n?"\u6062\u590D\u6B64 Codex \u4F1A\u8BDD":"\u6062\u590D\u6B64 Claude \u4F1A\u8BDD")+'"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 4v6h6"/><path d="M3.51 15a9 9 0 105.64-11.36L3 10"/></svg></button>';return'<div class="session-item'+(r.sessionsManageMode&&u[e.claudeSessionId]?" selected":"")+'" data-claude-history-id="'+e.claudeSessionId+'" data-provider="'+(n?"codex":"claude")+'" data-cwd="'+p(e.cwd)+'" role="button" tabindex="0"><div class="session-item-content"><div class="session-item-row">'+d+'<div class="session-main"><div class="session-command claude-history-preview">'+p(s)+'</div><div class="session-meta"><span class="session-id" title="'+p(e.claudeSessionId)+'">'+p(o)+"</span><span>"+p(l)+'</span></div></div><span class="session-actions">'+c+f+"</span></div></div></div>"}function Oo(e){if(!e)return"";try{var t=new Date(e),n=new Date,i=n-t,a=Math.floor(i/6e4);if(a<1)return"\u521A\u521A";if(a<60)return a+" \u5206\u949F\u524D";var u=Math.floor(a/60);if(u<24)return u+" \u5C0F\u65F6\u524D";var o=Math.floor(u/24);return o<30?o+" \u5929\u524D":t.toLocaleDateString()}catch{return""}}function Po(){return fetch("/api/claude-history",{credentials:"same-origin"}).then(function(e){return e.ok?e.json():[]}).then(function(e){r.claudeHistory=e||[],r.claudeHistoryLoaded=!0,pe()}).catch(function(){r.claudeHistoryLoaded=!0,r.claudeHistory=[],pe()})}var gr=null;function li(){var e=Sc();!r.claudeHistoryLoaded&&!gr&&(gr=Po().then(function(){gr=null},function(){gr=null}));var t=gr||Promise.resolve();return Promise.all([t,e]).then(function(){})}function Ho(){return fetch("/api/codex-history",{credentials:"same-origin"}).then(function(e){return e.ok?e.json():[]}).then(function(e){r.codexHistory=e||[],r.codexHistoryLoaded=!0,pe()}).catch(function(){r.codexHistoryLoaded=!0,r.codexHistory=[],pe()})}var Vn=null;function Sc(){return r.codexHistoryLoaded?Promise.resolve():Vn||(Vn=Ho().then(function(){Vn=null},function(){Vn=null}),Vn)}function ga(){var e=new Set;return r.sessions.forEach(function(t){t.claudeSessionId&&e.add(t.claudeSessionId)}),r.codexHistory.filter(function(t){return t.hasConversation&&!t.managedByWand&&!e.has(t.claudeSessionId)})}function _o(){Vo(),!di()&&(r.pollTimer=setInterval(Pt,1600))}setInterval(function(){var e=document.querySelectorAll(".session-time");e.length>0&&wu()},3e4);function ha(){r.wsReconnectTimer&&(clearTimeout(r.wsReconnectTimer),r.wsReconnectTimer=null)}var Ic=1e4,Tc=4e4;function Lc(){No(),r.wsHeartbeatCheckTimer=setInterval(jo,Ic)}function No(){r.wsHeartbeatCheckTimer&&(clearInterval(r.wsHeartbeatCheckTimer),r.wsHeartbeatCheckTimer=null)}function jo(){if(!(!r.ws||r.ws.readyState!==WebSocket.OPEN)&&r.lastWsMessageAt){var e=Date.now()-r.lastWsMessageAt;e>Tc&&ya("heartbeat-stale-"+Math.round(e/1e3)+"s")}}function ya(e){if(ha(),r.ws){var t=r.ws;try{t.onclose=null}catch{}try{t.onerror=null}catch{}try{t.onmessage=null}catch{}try{t.close()}catch{}r.ws=null}r.wsConnected=!1,r.wsReconnectAttempts=0,di(e)}function Ro(){if(!r.wsReconnectTimer&&!document.hidden){var e=r.wsReconnectAttempts||0,t=[500,1e3,2e3,4e3,8e3],n=t[e<t.length?e:t.length-1];r.wsReconnectAttempts=e+1,r.wsReconnectTimer=setTimeout(function(){r.wsReconnectTimer=null,r.config&&!r.ws&&!document.hidden&&di("backoff")},n)}}function di(e){if(!window.WebSocket)return!1;if(r.ws){try{r.ws.close()}catch{}r.ws=null}var t=window.location.protocol==="https:"?"wss:":"ws:",n=t+"//"+window.location.host+"/ws";try{var i=new WebSocket(n);return i.onopen=function(){r.ws=i,r.wsConnected=!0,r.lastWsMessageAt=Date.now(),r.wsReconnectAttempts=0,ha(),r.lastSeqBySession={},Lc(),On(r.selectedId),rv(),wr("ws-reconnect")},i.onmessage=function(a){r.lastWsMessageAt=Date.now();try{var u=JSON.parse(a.data);if(u&&u.type==="ping"){if(r.ws&&r.ws.readyState===WebSocket.OPEN)try{r.ws.send(JSON.stringify({type:"pong",t:u.t}))}catch{}return}if(u&&u.type==="resync_required"&&u.sessionId){if(r.ws&&r.ws.readyState===WebSocket.OPEN)try{r.ws.send(JSON.stringify({type:"resync",sessionId:u.sessionId}))}catch{}r.lastSeqBySession||(r.lastSeqBySession={}),r.lastSeqBySession[u.sessionId]=0;return}if(u&&(u.type==="init"||u.type==="output")&&u.sessionId&&typeof u.seq=="number"){r.lastSeqBySession||(r.lastSeqBySession={});var o=r.lastSeqBySession[u.sessionId]||0;if(u.type==="init")r.lastSeqBySession[u.sessionId]=u.seq;else if(u.seq===o+1)r.lastSeqBySession[u.sessionId]=u.seq;else if(u.seq>o+1&&o>0){if(r.ws&&r.ws.readyState===WebSocket.OPEN)try{r.ws.send(JSON.stringify({type:"resync",sessionId:u.sessionId}))}catch{}r.lastSeqBySession[u.sessionId]=0;return}else{if(u.seq<o)return;r.lastSeqBySession[u.sessionId]=u.seq}}Mc(u)}catch{}},i.onclose=function(){r.ws=null,r.wsConnected=!1,No(),Ro()},i.onerror=function(){i.close()},!0}catch{return Ro(),!1}}function Mc(e){switch(e.type){case"output":if(e.data&&e.sessionId&&Object.prototype.hasOwnProperty.call(e.data,"isResponding")&&(r._lastIsResponding||(r._lastIsResponding={}),r._lastIsResponding[e.sessionId]=!!e.data.isResponding),e.data&&e.sessionId){var t=!!e.data.incremental,n={id:e.sessionId},i=!1;if(!t&&e.data.output!==void 0&&(n.output=e.data.output),Object.prototype.hasOwnProperty.call(e.data,"permissionBlocked")&&(n.permissionBlocked=!!e.data.permissionBlocked),Object.prototype.hasOwnProperty.call(e.data,"queuedMessages")&&(n.queuedMessages=e.data.queuedMessages||[],r.queueEpoch++),e.data.structuredState&&(n.structuredState=e.data.structuredState),e.data.sessionKind&&(n.sessionKind=e.data.sessionKind),Object.prototype.hasOwnProperty.call(e.data,"title")&&(n.title=e.data.title,i=!0),Object.prototype.hasOwnProperty.call(e.data,"description")&&(n.description=e.data.description,i=!0),Object.prototype.hasOwnProperty.call(e.data,"summary")&&(n.summary=e.data.summary),e.data.messages)n.messages=e.data.messages,typeof e.data.messageOffset=="number"&&(n.messageOffset=e.data.messageOffset),typeof e.data.messageTotal=="number"&&(n.messageTotal=e.data.messageTotal);else if(t&&e.data.lastMessage){var a=r.sessions.find(function(P){return P.id===e.sessionId});if(a){var u=Array.isArray(a.messages)?a.messages.slice():[],o=e.data.messageCount||0,s=typeof a.messageOffset=="number"?a.messageOffset:0,l=u.length>0?u[u.length-1]:null,d=e.data.lastMessage;l&&d.role&&l.role===d.role?u[u.length-1]=Ap(l,d):s+u.length<o&&u.push(d),n.messages=u,o>0&&(n.messageTotal=o)}}var f=t&&e.data.chunk&&!e.data.lastMessage&&!n.messages&&n.output===void 0&&!e.data.structuredState&&!e.data.sessionKind;if(f){if(e.data.permissionBlocked!==void 0){var c=r.sessions.find(function(P){return P.id===e.sessionId});c&&!!c.permissionBlocked!=!!e.data.permissionBlocked&&(X(n),e.sessionId===r.selectedId&&Yt())}}else if((n.output!==void 0||n.messages||t||e.data.permissionBlocked!==void 0||n.title||n.description)&&(X(n),i&&wu(),e.sessionId===r.selectedId)){var v=r.sessions.find(function(P){return P.id===e.sessionId})||n;r.currentMessages=ze(v,Ze(v,v.output,!1)),Yt(),v.sessionKind==="structured"||e.data.sessionKind==="structured"?hr():ba()}}e.sessionId===r.selectedId&&r.terminal&&e.data&&(e.data.chunk&&Hp(e.sessionId)?(r.lastChunkAt=Date.now(),r.terminalLiveStreamSessions[e.sessionId]=!0,Jn(r.terminal,e.data.chunk),r.terminalSessionId=e.sessionId,e.data.output?(r.terminalOutput=os(du(e.data.output)),r.terminalOutputMarker=0):r.terminalOutput=os((r.terminalOutput||"")+du(e.data.chunk)),pt("output"),ot()):!e.data.incremental&&Object.prototype.hasOwnProperty.call(e.data,"output")&&gi(e.sessionId,e.data.output||"",{mode:"append"}));break;case"started":mn();break;case"ended":{var h=e.data&&e.data.status?e.data.status:"exited",g=e.data&&Object.prototype.hasOwnProperty.call(e.data,"permissionBlocked")?!!e.data.permissionBlocked:!1,m={id:e.sessionId,status:h,permissionBlocked:g};e.data&&e.data.messages&&(m.messages=e.data.messages,typeof e.data.messageOffset=="number"&&(m.messageOffset=e.data.messageOffset),typeof e.data.messageTotal=="number"&&(m.messageTotal=e.data.messageTotal)),e.data&&e.data.structuredState&&(m.structuredState=e.data.structuredState),e.data&&e.data.queuedMessages&&(m.queuedMessages=e.data.queuedMessages),X(m),e.sessionId===r.selectedId&&(Ln("Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C"),ba(!0));var y=r.sessions.find(function(P){return P.id===e.sessionId}),C=e.data&&e.data.exitCode,E=C!=null&&C!==0,B=y&&y.summary||"",D=y?cc(y):"",F=E?"\u4EFB\u52A1\u5F02\u5E38\u7ED3\u675F":"\u4EFB\u52A1\u5DF2\u5B8C\u6210",I="";B?(I=B,D&&!E&&(I+=`
10
- `+D)):I=y&&y.command||e.sessionId,Gn(E?"error":"success"),Yf(e.sessionId,F,I),vs(e.sessionId),qa(),(e.sessionId!==r.selectedId||document.hidden)&&La({title:F,body:I,type:E?"warning":"success",icon:E?"!":"\u2713",duration:6e3,actionLabel:"\u67E5\u770B",action:function(){Ht(e.sessionId)}}),r.messageQueue=[],r.pendingMessages=[];var L=r.sessions.find(function(P){return P.id===e.sessionId}),H=e.sessionId===r.selectedId?r.sessions.find(function(P){return P.id===r.selectedId}):null,U=!!(L&&L.sessionKind==="structured"||H&&H.sessionKind==="structured");U&&e.sessionId===r.selectedId?(Ss(),Ku(e.sessionId)):U||(r.structuredInputQueue=[],Ku(r.selectedId),dn()),e.sessionId===r.selectedId&&(U||Mn(!1),r.currentTask=null,Yt()),e.sessionId===r.selectedId&&jr(),mn().then(function(){wi()}),e.sessionId===r.selectedId&&(U||gn(e.sessionId));break}case"init":if(e.sessionId===r.selectedId&&e.data){r.chatRenderTimer&&(clearTimeout(r.chatRenderTimer),r.chatRenderTimer=null),X(e.data);var x=r.sessions.find(function(P){return P.id===e.sessionId});r.currentMessages=ze(x||e.data,Ze(x||e.data,e.data.output,!1)),hr(!0),Yt(),Wo();var k=e.data.output||"",T=r.terminalSessionId===e.sessionId,M=r.terminalOutput||"",Y=T&&M.length>0&&k.length>=M.length&&k.startsWith(M);Hc(k,e.sessionId,Y?"append":"replace"),wr("init")}break;case"usage":break;case"task":e.sessionId===r.selectedId&&(r.currentTask=e.data||null,Yt()),Kf(e.sessionId,e.data||null),Oa(e.sessionId),wu();break;case"status":if(e.sessionId&&e.data){var z={id:e.sessionId};if(Object.prototype.hasOwnProperty.call(e.data,"status")&&(z.status=e.data.status),Object.prototype.hasOwnProperty.call(e.data,"exitCode")&&(z.exitCode=e.data.exitCode),e.data.structuredState)z.structuredState=e.data.structuredState;else if(Object.prototype.hasOwnProperty.call(e.data,"status")){var a=r.sessions.find(function(N){return N.id===e.sessionId});a&&a.sessionKind==="structured"&&(z.structuredState=Object.assign({},a.structuredState||{},{inFlight:e.data.status==="running"}))}if(Object.prototype.hasOwnProperty.call(e.data,"queuedMessages")&&(z.queuedMessages=e.data.queuedMessages||[],r.queueEpoch++),Object.prototype.hasOwnProperty.call(e.data,"permissionBlocked")&&(z.permissionBlocked=!!e.data.permissionBlocked),e.data.permissionRequest){z.pendingEscalation={scope:e.data.permissionRequest.scope,target:e.data.permissionRequest.target,reason:e.data.permissionRequest.prompt};var Q=r.sessions.find(function(P){return P.id===e.sessionId}),le=Q&&(Q.summary||Q.command)||e.sessionId,ee=e.data.permissionRequest.prompt||"\u9700\u8981\u6743\u9650\u5BA1\u6279",Z=e.data.permissionRequest.target,q=le;Z?q+=`
6
+ `)+"</pre></div></div>"}function Wd(e,t){var n="/api/file-raw?path="+encodeURIComponent(t.path);e.innerHTML='<div class="image-preview-wrapper"><img class="image-preview-img" src="'+n+'" alt="'+p(t.name)+'" /></div>';var i=e.querySelector(".image-preview-img");if(i){var a=!1;i.addEventListener("click",function(){a=!a,i.classList.toggle("zoomed",a)})}}function zd(e,t){var n="/api/file-raw?path="+encodeURIComponent(t.path);e.innerHTML='<iframe class="pdf-preview-frame" src="'+n+'" title="'+p(t.name)+'"></iframe>'}function Vd(e,t){var n="/api/file-raw?path="+encodeURIComponent(t.path);e.innerHTML='<div class="media-preview-wrapper"><video class="media-preview-video" controls preload="metadata" src="'+n+'">\u60A8\u7684\u6D4F\u89C8\u5668\u4E0D\u652F\u6301 video \u6807\u7B7E\u3002</video><div class="media-preview-meta">'+p(jn(t.size))+"</div></div>"}function Ud(e,t){var n="/api/file-raw?path="+encodeURIComponent(t.path);e.innerHTML='<div class="media-preview-wrapper audio"><div class="media-preview-icon">\u{1F3B5}</div><div class="media-preview-name">'+p(t.name)+'</div><audio class="media-preview-audio" controls preload="metadata" src="'+n+'">\u60A8\u7684\u6D4F\u89C8\u5668\u4E0D\u652F\u6301 audio \u6807\u7B7E\u3002</audio><div class="media-preview-meta">'+p(jn(t.size))+"</div></div>"}function Kd(e,t){var n="/api/file-raw?download=1&path="+encodeURIComponent(t.path);e.innerHTML='<div class="binary-preview-card"><div class="binary-preview-icon">\u{1F4E6}</div><div class="binary-preview-name">'+p(t.name)+'</div><div class="binary-preview-meta"><span>'+p((t.ext||"").replace(/^\./,"")||"\u672A\u77E5\u683C\u5F0F")+"</span><span>\xB7</span><span>"+p(jn(t.size))+"</span></div>"+gt(t.path,"binary-preview-path")+'<div class="binary-preview-actions"><a class="binary-preview-btn" href="'+n+'" download="'+p(t.name)+'">\u4E0B\u8F7D\u6587\u4EF6</a><button class="binary-preview-btn" type="button" data-action="view-cat">\u5728\u7EC8\u7AEF\u4E2D\u67E5\u770B</button></div></div>',jt(e);var i=e.querySelector('[data-action="view-cat"]');i&&i.addEventListener("click",function(){va('cat -- "'+t.path+'"')&&Et("\u547D\u4EE4\u5DF2\u7C98\u8D34\u5230\u8F93\u5165\u6846")})}function ma(e,t){var n=e.querySelector(".file-preview-toolbar");if(n){if(n.innerHTML="",n.classList.remove("editing"),_&&_.editing){n.classList.add("editing"),fr(e,t);return}var i=[];t.kind==="text"&&i.push({label:"\u7F16\u8F91\u6587\u4EF6 (E)",icon:Me("edit"),primary:!0,action:function(){Jd()}}),i.push({label:"\u590D\u5236\u8DEF\u5F84",icon:Me("clipboard"),action:function(){ri(t.path).then(function(){Et("\u5DF2\u590D\u5236\u8DEF\u5F84")})}}),i.push({label:"\u7C98\u8D34\u5230\u8F93\u5165\u6846",icon:Me("send-to-input"),action:function(){va(t.path)&&Et("\u5DF2\u7C98\u8D34\u5230\u8F93\u5165\u6846")}}),i.push({label:"\u4E0B\u8F7D",icon:Me("download"),action:function(){var a=document.createElement("a");a.href="/api/file-raw?download=1&path="+encodeURIComponent(t.path),a.download=t.name||"",document.body.appendChild(a),a.click(),a.remove()}}),t.kind==="text"&&(i.push({label:"\u590D\u5236\u5168\u90E8\u5185\u5BB9",icon:Me("copy"),action:function(){ri(t.content||"").then(function(){Et("\u5DF2\u590D\u5236\u5185\u5BB9")})}}),i.push({label:"\u5207\u6362\u81EA\u52A8\u6362\u884C",icon:Me("wrap-text"),toggleClass:"toolbar-active",getInitial:function(){var a=e.querySelector(".code-preview-content pre");return a&&a.classList.contains("wrap")},action:function(a){var u=e.querySelector(".code-preview-content pre");u&&(u.classList.toggle("wrap"),a.classList.toggle("toolbar-active",u.classList.contains("wrap")))}}),i.push({kind:"group",className:"toolbar-group-fontsize",children:[{label:"\u7F29\u5C0F\u5B57\u53F7",icon:Me("minus"),action:function(){ho(e,-1)}},{kind:"label",icon:Me("type"),label:"\u5B57\u53F7"},{label:"\u653E\u5927\u5B57\u53F7",icon:Me("plus"),action:function(){ho(e,1)}}]})),po(n,i,e)}}function po(e,t,n){t.forEach(function(i){if(i.kind==="group"){var a=document.createElement("div");a.className="file-preview-toolbar-group"+(i.className?" "+i.className:""),i.children.forEach(function(u){if(u.kind==="label"){var o=document.createElement("span");o.className="file-preview-toolbar-grouplabel",o.title=u.label||"",o.innerHTML=u.icon||"",a.appendChild(o);return}a.appendChild(vo(u))}),e.appendChild(a);return}e.appendChild(vo(i))})}function vo(e){var t=document.createElement("button");return t.type="button",t.className="file-preview-toolbar-btn",e.primary&&t.classList.add("primary"),e.danger&&t.classList.add("danger"),t.title=e.label,t.setAttribute("aria-label",e.label),t.innerHTML='<span class="toolbar-icon">'+(e.icon||"")+"</span>"+(e.text?'<span class="toolbar-text">'+p(e.text)+"</span>":""),e.getInitial&&e.getInitial()&&t.classList.add("toolbar-active"),t.addEventListener("click",function(n){n.stopPropagation(),typeof e.action=="function"&&e.action(t)}),t}function fr(e,t){var n=e.querySelector(".file-preview-toolbar");if(n){n.innerHTML="";var i=_&&_.saving,a=[{label:"\u4FDD\u5B58 (Ctrl+S)",icon:Me("save"),text:"\u4FDD\u5B58",primary:!0,action:function(){go()}},{label:"\u64A4\u9500\u6539\u52A8",icon:Me("rotate-ccw"),action:function(){Yd()}},{label:"\u9000\u51FA\u7F16\u8F91 (Esc)",icon:Me("x"),action:function(){mo()}}];po(n,a,e),i&&n.querySelectorAll(".file-preview-toolbar-btn").forEach(function(u){u.disabled=!0})}}function Jd(){if(!(!_||!_.data)){var e=_.data;if(e.kind==="text"){_.editing=!0,_.dirty=!1,_.originalContent=e.content||"";var t=_.overlay,n=t.querySelector(".file-preview-body");if(n){n.classList.add("editing"),n.innerHTML='<div class="code-editor-wrapper"><textarea class="code-editor-textarea" spellcheck="false" autocomplete="off" autocorrect="off" autocapitalize="off" wrap="off"></textarea></div>';var i=n.querySelector(".code-editor-textarea");i&&(i.value=e.content||"",i.addEventListener("input",function(){var a=i.value!==(_.originalContent||"");a!==_.dirty&&(_.dirty=a,pr())}),i.addEventListener("keydown",function(a){if(a.key==="Tab"){a.preventDefault();var u=i.selectionStart,o=i.selectionEnd,s=" ";i.value=i.value.slice(0,u)+s+i.value.slice(o),i.selectionStart=i.selectionEnd=u+s.length,i.dispatchEvent(new Event("input"))}}),setTimeout(function(){i.focus(),i.setSelectionRange(0,0),i.scrollTop=0},30)),ma(t,e),pr()}}}}function mo(){if(!(!_||!_.editing)){var e=function(){_.editing=!1,_.dirty=!1;var t=_.overlay,n=t.querySelector(".file-preview-body");n&&n.classList.remove("editing"),fo(t,_.data),pr()};if(_.dirty&&typeof on=="function"){on({type:"warning",title:"\u653E\u5F03\u672A\u4FDD\u5B58\u7684\u4FEE\u6539\uFF1F",message:"\u5F53\u524D\u6587\u4EF6\u6709\u672A\u4FDD\u5B58\u7684\u6539\u52A8\uFF0C\u9000\u51FA\u7F16\u8F91\u540E\u4F1A\u4E22\u5931\u3002",buttons:[{label:"\u7EE7\u7EED\u7F16\u8F91",value:!1,kind:"ghost"},{label:"\u653E\u5F03\u4FEE\u6539",value:!0,kind:"danger",autofocus:!0}],cancelValue:!1}).then(function(t){t&&e()});return}e()}}function Yd(){if(!(!_||!_.editing)){var e=_.overlay,t=e.querySelector(".code-editor-textarea");t&&(t.value=_.originalContent||"",_.dirty=!1,pr(),t.focus())}}function go(){if(!(!_||!_.editing)&&!_.saving){var e=_.overlay,t=e.querySelector(".code-editor-textarea");if(t){var n=t.value;if(n===(_.originalContent||"")){Et("\u6CA1\u6709\u6539\u52A8");return}_.saving=!0,fr(e,_.data),fetch("/api/file-write",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:_.path,content:n})}).then(function(i){return i.json().then(function(a){return{ok:i.ok,status:i.status,data:a}})}).then(function(i){if(_.saving=!1,!i.ok||i.data&&i.data.error){var a=i.data&&i.data.error||"\u4FDD\u5B58\u5931\u8D25 ("+i.status+")";Et(a),fr(e,_.data);return}if(_.data.content=n,_.data.size=i.data&&i.data.size||n.length,_.originalContent=n,_.dirty=!1,Et("\u5DF2\u4FDD\u5B58"),pr(),fr(e,_.data),typeof Lt=="function")try{Lt()}catch{}}).catch(function(i){_.saving=!1,Et("\u4FDD\u5B58\u5931\u8D25\uFF1A"+(i&&i.message?i.message:"\u7F51\u7EDC\u9519\u8BEF")),fr(e,_.data)})}}}function pr(){if(_){var e=_.overlay;if(e){var t=e.querySelector(".file-preview-name-row");if(t){var n=t.querySelector(".file-preview-dirty");if(_.dirty){if(!n){var i=document.createElement("span");i.className="file-preview-dirty",i.title="\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539",i.textContent="\u25CF \u672A\u4FDD\u5B58",t.appendChild(i)}}else n&&n.remove()}}}}function ho(e,t){var n=e.querySelector(".code-preview-content pre"),i=e.querySelector(".code-preview-lines");if(n){var a=parseFloat(getComputedStyle(n).fontSize)||13,u=Math.max(10,Math.min(22,a+t));n.style.fontSize=u+"px",i&&(i.style.fontSize=u+"px")}}function yo(e,t){var n=e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),i=Gd();if(!i)return n;var a=[];for(var u in i){var o=i[u];o&&o.pattern&&a.push({pattern:o.pattern,cls:o.cls,priority:o.priority||5})}a.sort(function(d,f){return f.priority-d.priority});var s=a.map(function(d){return"("+d.pattern.source+")"}),l=new RegExp(s.join("|"),"gm");return n.replace(l,function(d){for(var f=0;f<a.length;f++){var c=a[f],v=new RegExp("^"+c.pattern.source+"$","gm");if(v.test(d))return'<span class="'+c.cls+'">'+d+"</span>"}return d})}function Gd(){return{comment:{pattern:/\/\/.*|#[^\n]*/y,cls:"syntax-comment",priority:1},string:{pattern:/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`(?:[^`\\]|\\.)*`/y,cls:"syntax-string",priority:2},keyword:{pattern:/\b(?:async|await|break|case|catch|class|const|continue|debugger|declare|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|namespace|new|null|of|override|private|protected|public|readonly|return|set|static|super|switch|this|throw|try|type|typeof|undefined|var|void|while|yield|abstract|as|base|bool|byte|char|decimal|double|event|explicit|extern|false|fixed|float|foreach|goto|implicit|in|int|internal|is|lock|long|object|operator|out|params|partial|readonly|ref|sbyte|sealed|short|sizeof|stackalloc|string|struct|switch|throw|true|try|uint|ulong|unchecked|unsafe|ushort|using|virtual|volatile|where|while|with|yield|def|elif|else|except|exec|finally|for|from|global|if|import|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield|True|False|None|and|in|is|lambda|not|or|fn|pub|use|mod|impl|trait|struct|enum|match|loop|while|for|if|else|return|self|super|crate|where|async|await|move|ref|mut|static|const|unsafe|extern|use|as|impl|struct|enum|type|fn|let|loop|if|else|match|return|self|Self|mod|pub|crate|macro|derive|where|async|await|dyn|self|package|func|go|return|defer|go|if|else|switch|case|default|for|range|select|break|continue|fallthrough|const|struct|enum|type|interface|map|chan|var|nil|true|false|iota|len|cap|append|make|new|panic|recover|select|else|if|elif|end|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while|end|and|begin|do|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/y,cls:"syntax-keyword",priority:3},number:{pattern:/\b(?:0x[\da-fA-F]+|0b[01]+|0o[0-7]+|\d+\.?\d*(?:e[+-]?\d+)?)\b/y,cls:"syntax-number",priority:2},function:{pattern:/\b[A-Z][a-zA-Z0-9]*[a-z]\w*(?=\s*\()/y,cls:"syntax-function",priority:4},type:{pattern:/\b(?:string|number|boolean|void|any|unknown|never|object|symbol|bigint|Array|Object|String|Number|Boolean|Map|Set|WeakMap|WeakSet|Promise|Error|Type|Interface|Enum|Class|Struct|Impl|Trait|fn|fnc|func|function|def|proc|fun|pub|static|const|let|var|int|float|double|bool|char|byte|string|u8|u16|u32|u64|i8|i16|i32|i64|f32|f64|usize|isize|str|Vec|HashMap|Option|Result|Box|Rc|Arc|Cell|RefCell)\b/y,cls:"syntax-type",priority:4},operator:{pattern:/[+\-*/%=<>!&|^~?:]+|\.\.\.?/y,cls:"syntax-operator",priority:5},punctuation:{pattern:/[{}[\]();,\.]/y,cls:"syntax-punctuation",priority:6}}}function Qd(e){if(!e)return"";var t=p(e);t=t.replace(/```(\w*)\n([\s\S]*?)```/g,function(i,a,u){var o=yo(u.trim(),a),s=o.replace(/_/g,"&#95;").replace(/\*/g,"&#42;");return'<pre><code class="language-'+a+'">'+s+"</code></pre>"}),t=t.replace(/`([^`]+)`/g,function(i,a){return"<code>"+a.replace(/_/g,"&#95;").replace(/\*/g,"&#42;")+"</code>"}),t=t.replace(/^######\s+(.*)$/gm,"<h6>$1</h6>"),t=t.replace(/^#####\s+(.*)$/gm,"<h5>$1</h5>"),t=t.replace(/^####\s+(.*)$/gm,"<h4>$1</h4>"),t=t.replace(/^###\s+(.*)$/gm,"<h3>$1</h3>"),t=t.replace(/^##\s+(.*)$/gm,"<h2>$1</h2>"),t=t.replace(/^#\s+(.*)$/gm,"<h1>$1</h1>"),t=t.replace(/\*\*\*(.+?)\*\*\*/g,"<strong><em>$1</em></strong>"),t=t.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>"),t=t.replace(/\*(.+?)\*/g,"<em>$1</em>"),t=t.replace(/(^|[^\w])___(\S(?:[^\n]*?\S)?)___(?!\w)/g,"$1<strong><em>$2</em></strong>"),t=t.replace(/(^|[^\w])__(\S(?:[^\n]*?\S)?)__(?!\w)/g,"$1<strong>$2</strong>"),t=t.replace(/(^|[^\w])_(\S(?:[^\n_]*?\S)?)_(?!\w)/g,"$1<em>$2</em>"),t=t.replace(/~~(.+?)~~/g,"<del>$1</del>"),t=t.replace(/\[([^\]]+)\]\(([^)]+)\)/g,'<a href="$2" target="_blank" rel="noopener">$1</a>'),t=t.replace(/!\[([^\]]*)\]\(([^)]+)\)/g,'<img src="$2" alt="$1">'),t=t.replace(/^&gt;\s+(.*)$/gm,"<blockquote>$1</blockquote>"),t=t.replace(/^---+$/gm,"<hr>"),t=t.replace(/^\*\*\*+$/gm,"<hr>"),t=t.replace(/^[\-\*]\s+(.*)$/gm,"<li>$1</li>"),t=t.replace(/(<li>.*<\/li>\n?)+/g,"<ul>$&</ul>"),t=t.replace(/^\d+\.\s+(.*)$/gm,"<li>$1</li>"),t=bl(t);var n=t.split(/\n{2,}/);return t=n.map(function(i){return i=i.trim(),i?/^<(h[1-6]|ul|ol|li|blockquote|pre|table|hr|div)/.test(i)?i:"<p>"+i.replace(/\n/g,"<br>")+"</p>":""}).join(`
7
+ `),t}function bo(){if(!r.selectedId||!r.gitStatus||!r.gitStatus.isGit||r.gitStatusSessionId!==r.selectedId)return"";var e=r.gitStatus.branch||"?",t=r.gitStatus.modifiedCount||0,n=e+(t?" \xB7 "+t+" \u4E2A\u6587\u4EF6\u5F85\u63D0\u4EA4":" \xB7 \u5DE5\u4F5C\u533A\u5E72\u51C0");return'<button id="topbar-git-badge" class="topbar-git-badge" type="button" title="'+p(n)+'" aria-label="\u5FEB\u6377\u63D0\u4EA4"><svg class="topbar-git-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="6" cy="6" r="2"/><circle cx="6" cy="18" r="2"/><circle cx="18" cy="9" r="2"/><path d="M6 8v8"/><path d="M18 11v1a3 3 0 0 1-3 3H9"/></svg><span class="topbar-git-branch">'+p(e)+"</span>"+(t>0?'<span class="topbar-git-count">\xB7'+t+"</span>":'<span class="topbar-git-clean" aria-hidden="true">\u2713</span>')+"</button>"}function ga(){var e=document.getElementById("topbar-git-slot");if(e){e.innerHTML=bo();var t=document.getElementById("topbar-git-badge");t&&t.addEventListener("click",function(n){n.preventDefault(),Eo()})}}function $d(e){if(!e)return"";var t=r.topbarMoreOpen,n=!!e.claudeSessionId,i=!!e.cwd,a=e.worktreeEnabled&&e.worktree&&e.worktree.branch&&e.worktree.path,u=e.worktreeMergeStatus==="merged"&&e.worktreeMergeInfo&&e.worktreeMergeInfo.cleanupDone===!1,o=e.status==="running"||e.worktreeMergeStatus==="merging",s=a&&e.worktreeMergeStatus!=="merged",l=u,d=n||i||!0,f=s||l||!0,c='<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>',v='<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17.5 19a4.5 4.5 0 1 0-1.5-8.74A6 6 0 1 0 6 14h11.5z"/></svg>',h='<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/></svg>',g='<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="4" y1="9" x2="20" y2="9"/><line x1="4" y1="15" x2="20" y2="15"/><line x1="10" y1="3" x2="8" y2="21"/><line x1="16" y1="3" x2="14" y2="21"/></svg>',m='<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M7 7h10"/><path d="M7 12h10"/><path d="M7 17h10"/><path d="M5 7l-2 2 2 2"/><path d="M19 15l2 2-2 2"/></svg>',y='<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"/><path d="M8 6V4a2 2 0 012-2h4a2 2 0 012 2v2"/><path d="M19 6l-1 14a2 2 0 01-2 2H8a2 2 0 01-2-2L5 6"/></svg>',C="";if(n){var E=e.provider==="codex"?"\u590D\u5236 Codex thread ID":"\u590D\u5236 Claude \u4F1A\u8BDD ID";C+='<button class="topbar-more-item" data-action="copy-claude-session-id" type="button" role="menuitem">'+v+"<span>"+E+"</span></button>"}i&&(C+='<button class="topbar-more-item" data-action="copy-cwd" type="button" role="menuitem">'+h+"<span>\u590D\u5236\u5DE5\u4F5C\u76EE\u5F55</span></button>"),C+='<button class="topbar-more-item" data-action="copy-session-id" type="button" role="menuitem">'+g+"<span>\u590D\u5236\u4F1A\u8BDD ID</span></button>";var B="";s?B+='<button class="topbar-more-item" data-action="worktree-merge" type="button" role="menuitem"'+(o?" disabled":"")+">"+m+"<span>\u5408\u5E76\u5230\u4E3B\u5206\u652F\u2026</span></button>":l&&(B+='<button class="topbar-more-item" data-action="worktree-cleanup" type="button" role="menuitem">'+m+"<span>\u91CD\u8BD5 worktree \u6E05\u7406</span></button>"),B+='<button class="topbar-more-item topbar-more-item-danger" data-action="delete-session" type="button" role="menuitem">'+y+"<span>\u5220\u9664\u5F53\u524D\u4F1A\u8BDD</span></button>";var D=d&&f?'<div class="topbar-more-divider" role="separator"></div>':"";return'<div class="topbar-more-wrap"><button id="topbar-more-button" class="topbar-btn square'+(t?" active":"")+'" type="button" aria-label="\u5F53\u524D\u4F1A\u8BDD\u64CD\u4F5C" aria-haspopup="menu" aria-expanded="'+(t?"true":"false")+'" title="\u5F53\u524D\u4F1A\u8BDD\u64CD\u4F5C"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="1"/><circle cx="12" cy="5" r="1"/><circle cx="12" cy="19" r="1"/></svg></button><div id="topbar-more-menu" class="topbar-more-menu'+(t?"":" hidden")+'" role="menu" aria-label="\u5F53\u524D\u4F1A\u8BDD">'+C+D+B+"</div></div>"}function Bn(e,t){if(!e)return Promise.resolve(null);var n=t&&t.force,i=Date.now();if(!n&&r.gitStatusSessionId===e&&r.gitStatus&&i-r.gitStatusLastFetchAt<1e3)return Promise.resolve(r.gitStatus);if(r.gitStatusInflight&&r.gitStatusInflight.sessionId===e)return r.gitStatusInflight.promise;r.gitStatusLoading=!0;var a=fetch("/api/sessions/"+encodeURIComponent(e)+"/git-status",{credentials:"same-origin"}).then(function(u){return u.ok?u.json():{isGit:!1}}).then(function(u){return r.gitStatus=u||{isGit:!1},r.gitStatusSessionId=e,r.gitStatusLastFetchAt=Date.now(),ga(),u}).catch(function(){return r.gitStatus={isGit:!1},r.gitStatusSessionId=e,r.gitStatusLastFetchAt=Date.now(),ga(),null}).finally(function(){r.gitStatusLoading=!1,r.gitStatusInflight&&r.gitStatusInflight.sessionId===e&&(r.gitStatusInflight=null)});return r.gitStatusInflight={sessionId:e,promise:a},a}var Dn=null,kn=null,Vg=null;function Xd(e){return e==="commit-tag"||e==="commit-tag-push"||e==="commit-push"?e:"commit"}function Zd(e){return e=Xd(e),e==="commit-tag-push"?{action:e,label:"Commit + Tag + Push",verb:"\u63D0\u4EA4\u3001\u6253 Tag \u5E76\u63A8\u9001",withTag:!0,push:!0,tone:"all"}:e==="commit-tag"?{action:e,label:"Commit + Tag",verb:"\u63D0\u4EA4\u5E76\u6253 Tag",withTag:!0,push:!1,tone:"tag"}:e==="commit-push"?{action:e,label:"Commit + Push",verb:"\u63D0\u4EA4\u5E76\u63A8\u9001",withTag:!1,push:!0,tone:"push"}:{action:"commit",label:"Commit",verb:"\u4EC5\u63D0\u4EA4",withTag:!1,push:!1,tone:"commit"}}function Eo(){if(r.selectedId){r.quickCommitOpen=!0,r.quickCommitSubmitting=!1,r.quickCommitAutoGenerating=!1,r.quickCommitError="",r.quickCommitForm={customMessage:"",tag:"",tagEdited:!1},r.quickCommitPushing=!1,r.quickCommitPushError="",r.quickCommitResult=null,r.quickCommitDragAction="commit",tr(),hn(),nr(),Mt();var e=document.getElementById("quick-commit-modal");e&&(e.classList.remove("hidden"),r.lastFocusedElement=document.activeElement,Qi(e)),Dn&&document.removeEventListener("keydown",Dn),Dn=function(t){t.key==="Escape"&&r.quickCommitOpen&&!r.quickCommitSubmitting&&!r.quickCommitPushing&&Wn()},document.addEventListener("keydown",Dn),Bn(r.selectedId,{force:!0}).then(function(){r.quickCommitOpen&&Mt()})}}function Wn(){r.quickCommitOpen=!1,r.quickCommitSubmitting=!1,r.quickCommitError="",r.quickCommitResult=null,r.quickCommitDragAction="commit";var e=document.getElementById("quick-commit-modal");e&&e.classList.add("hidden"),r.focusTrapHandler&&(document.removeEventListener("keydown",r.focusTrapHandler),r.focusTrapHandler=null),Dn&&(document.removeEventListener("keydown",Dn),Dn=null),kn&&(kn(),kn=null),r.lastFocusedElement&&typeof r.lastFocusedElement.focus=="function"&&r.lastFocusedElement.focus()}function Mt(){var e=document.getElementById("quick-commit-modal");if(e){kn&&(kn(),kn=null);var t=Co(),n=document.createElement("div");n.innerHTML=t;var i=n.querySelector("#quick-commit-modal");i&&(e.innerHTML=i.innerHTML,Fo())}}function Fo(){var e=document.getElementById("quick-commit-close-btn");e&&e.addEventListener("click",Wn);var t=document.getElementById("quick-commit-cancel-btn");t&&t.addEventListener("click",Wn);var n=document.getElementById("quick-commit-ai-btn");n&&n.addEventListener("click",rc);var i=document.getElementById("quick-commit-message");i&&(i.addEventListener("input",function(){r.quickCommitForm.customMessage=i.value}),i.addEventListener("keydown",function(o){(o.metaKey||o.ctrlKey)&&o.key==="Enter"&&(o.preventDefault(),zn("commit"))}));var a=document.getElementById("quick-commit-tag");a&&(a.addEventListener("input",function(){r.quickCommitForm.tag=a.value,r.quickCommitForm.tagEdited=!0}),a.addEventListener("keydown",function(o){o.key==="Enter"&&(o.preventDefault(),zn("commit-tag"))}));var u=document.getElementById("quick-commit-push-after-btn");u&&u.addEventListener("click",function(){var o=r.quickCommitResult||{};ic({pushCommits:!0,pushTags:!!o.tagName,closeOnSuccess:!0})}),nc()}function ec(e){var t=!!(e&&e.tag),n=!!(e&&e.push);return t&&n?"commit-tag-push":t?"commit-tag":n?"commit-push":"commit"}var tc=58,ai=10;function wo(e){return e==="tag"?{action:"commit-tag",sub:!1}:e==="push"?{action:"commit-push",sub:!1}:e==="sub"?{action:"commit",sub:!0}:{action:"commit",sub:!1}}function nc(){var e=document.getElementById("qc-dock-field"),t=document.getElementById("qc-dock-stage"),n=document.getElementById("qc-dock-launch"),i=document.getElementById("qc-dock-cluster");if(!e||!t||!n||!i)return;var a=["commit","tag","push"],u={};if(a.forEach(function(k){u[k]=e.querySelector('[data-chip="'+k+'"]')}),!u.commit||!u.tag||!u.push)return;u.sub=e.querySelector('[data-chip="sub"]');var o=!!u.sub,s=o?a.concat(["sub"]):a;function l(k){return u[k]?u[k].offsetWidth:90}function d(){return u.commit?u.commit.offsetHeight:38}function f(){return window.matchMedia&&window.matchMedia("(max-width: 720px)").matches}function c(){var k=e.clientWidth,T=e.clientHeight,M=d(),Y=l("commit"),z=l("tag"),Q=l("push");if(f()&&o){var le=Math.max(8,T*.2-M/2),ee=Math.min(T-M-8,T*.7-M/2),Z=function(ie){return Math.max(8,k*.27-ie/2)},q=function(ie){return Math.min(k-ie-8,k*.73-ie/2)};return{commit:{x:Z(Y),y:le},tag:{x:q(z),y:le},push:{x:Z(Q),y:ee},sub:{x:q(l("sub")),y:ee}}}var O=f(),N=O?Math.max(8,T*.18-M/2):Math.max(8,T*.12),G=O?Math.min(T-M-8,T*.72-M/2):Math.min(T-M-8,T*.88-M),J=O?.24:.28,ne=O?.76:.72,de={commit:{x:Math.max(8,(k-Y)/2),y:N},tag:{x:Math.max(8,k*J-z/2),y:G},push:{x:Math.min(k-Q-8,k*ne-Q/2),y:G}};if(o){var re=l("sub");de.sub={x:Math.min(k-re-8,k*.94-re/2),y:Math.max(8,Math.min(T-M-8,(T-M)/2))}}return de}var v={};function h(k,T,M){u[k]&&(u[k].style.transform="translate("+T.toFixed(1)+"px,"+M.toFixed(1)+"px)")}function g(k){v=c(),s.forEach(function(T){u[T].classList.toggle("qc-chip--anim",!!k),h(T,v[T].x,v[T].y)})}g(!1);var m=null;function y(k,T,M){var Y=d(),z=24,Q=s.filter(function(N){return k.indexOf(N)>=0}),le=Q.reduce(function(N,G){return Math.max(N,l(G))},0),ee=le+Math.max(0,Q.length-1)*z,Z=e.clientHeight,q=T-ee/2,O=Math.max(2,Math.min(Z-Y-2,M-Y/2));return Q.forEach(function(N){h(N,q,O),q+=z}),{x:T-ee/2-7,y:O-7,w:ee+14,h:Y+14}}function C(k){i.classList.add("is-active"),i.style.transform="translate("+k.x.toFixed(1)+"px,"+k.y.toFixed(1)+"px)",i.style.width=k.w.toFixed(1)+"px",i.style.height=k.h.toFixed(1)+"px"}function E(){i.classList.remove("is-active")}function B(k){return ec({commit:!0,tag:k.indexOf("tag")>=0,push:k.indexOf("push")>=0})}function D(k){return k.indexOf("sub")>=0}function F(k){var T=document.getElementById("qc-dock-launch-label");T&&(T.textContent=k)}function I(k,T){var M=n.getBoundingClientRect();return k>=M.left&&k<=M.right&&T>=M.top&&T<=M.bottom}function L(k){return function(T){if(!(u[k].disabled||ui())){m={anchor:k,pointerId:T.pointerId,startX:T.clientX,startY:T.clientY,moved:!1,members:[k]},s.forEach(function(M){u[M].classList.remove("qc-chip--anim")}),u[k].classList.add("is-grabbing");try{u[k].setPointerCapture(T.pointerId)}catch{}t.classList.add("is-dragging"),T.preventDefault()}}}function H(k){if(!(!m||m.pointerId!==k.pointerId)){(Math.abs(k.clientX-m.startX)>3||Math.abs(k.clientY-m.startY)>3)&&(m.moved=!0);var T=e.getBoundingClientRect(),M=k.clientX-T.left,Y=k.clientY-T.top;if(a.forEach(function(O){if(!(m.members.indexOf(O)>=0)){var N=v[O].x+l(O)/2,G=v[O].y+d()/2,J=M-N,ne=Y-G;Math.sqrt(J*J+ne*ne)<tc&&(m.members.push(O),u[O].classList.remove("qc-chip--anim"),u[O].classList.add("is-attached"))}}),o&&m.members.indexOf("sub")<0){var z=v.sub.x-ai,Q=v.sub.y-ai,le=v.sub.x+l("sub")+ai,ee=v.sub.y+d()+ai;M>=z&&M<=le&&Y>=Q&&Y<=ee&&(m.members.push("sub"),u.sub.classList.remove("qc-chip--anim"),u.sub.classList.add("is-attached"))}var Z=y(m.members,M,Y),q=I(k.clientX,k.clientY);t.setAttribute("data-hot",q?"1":"0"),t.setAttribute("data-action",B(m.members)),m.members.length>1?C(Z):E(),F(q?"\u677E\u624B\u6267\u884C":"\u63D0\u4EA4")}}function U(k,T){if(!(!m||m.pointerId!==k.pointerId)){var M=m;m=null,t.classList.remove("is-dragging"),t.setAttribute("data-hot","0"),F("\u63D0\u4EA4"),E(),s.forEach(function(z){u[z].classList.remove("is-grabbing","is-attached")});try{u[M.anchor].releasePointerCapture(M.pointerId)}catch{}if(!T&&!M.moved){var Y=wo(M.anchor);zn(Y.action,Y.sub);return}if(!T&&I(k.clientX,k.clientY)){zn(B(M.members),D(M.members));return}t.setAttribute("data-action","commit"),g(!0)}}var x=function(){r.quickCommitOpen&&!m&&g(!1)};window.addEventListener("resize",x),s.forEach(function(k){var T=u[k];T.addEventListener("pointerdown",L(k)),T.addEventListener("pointermove",H),T.addEventListener("pointerup",function(M){U(M,!1)}),T.addEventListener("pointercancel",function(M){U(M,!0)}),T.addEventListener("keydown",function(M){if(!(T.disabled||ui())&&(M.key==="Enter"||M.key===" "||M.key==="Spacebar")){M.preventDefault();var Y=wo(k);zn(Y.action,Y.sub)}})}),n.addEventListener("click",function(){n.disabled||ui()||m||zn("commit")}),kn=function(){window.removeEventListener("resize",x),m=null}}function rc(){if(!(!r.selectedId||r.quickCommitGenerating)){var e=document.getElementById("quick-commit-message");e&&(r.quickCommitForm.customMessage=e.value);var t=document.getElementById("quick-commit-tag");t&&(r.quickCommitForm.tag=t.value),r.quickCommitGenerating=!0,r.quickCommitError="",Mt(),fetch("/api/sessions/"+encodeURIComponent(r.selectedId)+"/generate-commit-message",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({})}).then(function(n){return n.json().then(function(i){return{ok:n.ok,data:i}})}).then(function(n){if(!n.ok)throw new Error(n.data&&n.data.error||"AI \u751F\u6210\u5931\u8D25\u3002");var i=n.data||{},a=typeof i.message=="string"?i.message:"",u=typeof i.suggestedTag=="string"?i.suggestedTag.trim():"",o=(r.quickCommitForm.customMessage||"").trim();!o&&a&&(r.quickCommitForm.customMessage=a),u&&(r.quickCommitForm.tagEdited||(r.quickCommitForm.tag=u),r.quickCommitDragAction="commit-tag")}).catch(function(n){r.quickCommitError=n&&n.message||"AI \u751F\u6210\u5931\u8D25\u3002"}).finally(function(){r.quickCommitGenerating=!1,r.quickCommitOpen&&Mt()})}}function zn(e,t){if(!(!r.selectedId||r.quickCommitSubmitting)){var n=document.getElementById("quick-commit-message");n&&(r.quickCommitForm.customMessage=n.value);var i=document.getElementById("quick-commit-tag");i&&(r.quickCommitForm.tag=i.value);var a=r.quickCommitForm||{},u=Zd(e||r.quickCommitDragAction||"commit"),o=u.withTag,s=o?(a.tag||"").trim():"",l=(a.customMessage||"").trim(),d=!l,f={branch:(r.gitStatus||{}).branch||"",commitHash:(r.gitStatus||{}).lastCommit&&(r.gitStatus||{}).lastCommit.shortHash?(r.gitStatus||{}).lastCommit.shortHash:(r.gitStatus||{}).head?(r.gitStatus||{}).head.substring(0,7):"",commitSubject:(r.gitStatus||{}).lastCommit&&(r.gitStatus||{}).lastCommit.subject?(r.gitStatus||{}).lastCommit.subject:"",tag:(r.gitStatus||{}).latestTag||""},c={autoMessage:d,customMessage:d?"":l,tag:s,autoTag:!!(o&&!s),push:!!u.push,submodule:!!t};r.quickCommitSubmitting=!0,r.quickCommitSubmoduleIntent=!!t,r.quickCommitAutoGenerating=d||c.autoTag,r.quickCommitError="",r.quickCommitPushError="",r.quickCommitResult=null,r.quickCommitDragAction=u.action,Mt(),fetch("/api/sessions/"+encodeURIComponent(r.selectedId)+"/quick-commit",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)}).then(function(v){return v.json().then(function(h){return{ok:v.ok,data:h}})}).then(function(v){if(!v.ok)throw new Error(v.data&&v.data.error||"\u5FEB\u6377\u63D0\u4EA4\u5931\u8D25\u3002");var h=v.data||{},g=h.commit&&h.commit.hash?h.commit.hash.substring(0,7):"",m=h.tag&&h.tag.name?h.tag.name:"",y=Array.isArray(h.submoduleCommits)?h.submoduleCommits:[],C=y.length>0?"\u5DF2\u5148\u63D0\u4EA4 "+y.length+" \u4E2A submodule\uFF08"+y.map(function(B){return B.path}).join("\u3001")+"\uFF09\uFF0C":"",E=C+"\u5DF2\u63D0\u4EA4"+(g?" "+g:"")+(m?"\uFF0C\u5DF2\u6253 Tag "+m:"");r.quickCommitResult={action:u.action,includeSubmodule:!!t,pushed:!!h.pushed,pushError:h.pushError||"",commitHash:g,commitMessage:h.commit&&h.commit.message?h.commit.message:l,tagName:m,oldTag:f.tag,oldCommitHash:f.commitHash,oldCommitSubject:f.commitSubject,submoduleCount:y.length},u.push&&!h.pushError?(typeof A=="function"&&A(E+"\uFF0C\u5DF2\u63A8\u9001\u3002","success"),Wn()):(typeof A=="function"&&A(E+(h.pushError?"\uFF1Bpush \u5931\u8D25\uFF1A"+h.pushError:"\u3002"),h.pushError?"error":"success"),r.selectedId&&Bn(r.selectedId,{force:!0}).then(function(){r.quickCommitOpen&&Mt()}))}).catch(function(v){r.quickCommitError=v&&v.message||"\u5FEB\u6377\u63D0\u4EA4\u5931\u8D25\u3002"}).finally(function(){r.quickCommitSubmitting=!1,r.quickCommitAutoGenerating=!1,r.quickCommitOpen&&Mt()})}}function ic(e){if(!(!r.selectedId||r.quickCommitPushing)){var t=!!(e&&e.pushCommits),n=!!(e&&e.pushTags),i=!!(e&&e.closeOnSuccess);if(!(!t&&!n)){var a=r.quickCommitResult||{},u=!!a.includeSubmodule;r.quickCommitPushing=!0,r.quickCommitPushError="",Mt(),fetch("/api/sessions/"+encodeURIComponent(r.selectedId)+"/git/push",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({pushCommits:t,pushTags:n,submodule:u,tag:a.tagName||""})}).then(function(o){return o.json().then(function(s){return{ok:o.ok,data:s}})}).then(function(o){var s=o.data||{};if(!o.ok)throw new Error(s&&s.error||"\u63A8\u9001\u5931\u8D25\u3002");if(s.error){r.quickCommitPushError=s.error,typeof A=="function"&&A("\u63A8\u9001\u5931\u8D25\uFF1A"+s.error,"error");return}var l=[];s.pushedCommits&&l.push("commits"),s.pushedTags&&l.push("tags");var d=l.length?l.join(" \u548C "):"\uFF08\u65E0\u5185\u5BB9\uFF09";typeof A=="function"&&A("\u5DF2\u63A8\u9001 "+d,"success"),r.quickCommitResult&&(r.quickCommitResult.pushed=!0),i?(Wn(),r.selectedId&&Bn(r.selectedId,{force:!0})):r.selectedId&&Bn(r.selectedId,{force:!0}).then(function(){r.quickCommitOpen&&Mt()})}).catch(function(o){r.quickCommitPushError=o&&o.message||"\u63A8\u9001\u5931\u8D25\u3002",typeof A=="function"&&A(r.quickCommitPushError,"error")}).finally(function(){r.quickCommitPushing=!1,r.quickCommitOpen&&Mt()})}}}function ac(e){var t=(e||"").trim();if(t==="??")return{letter:"U",cls:"untracked",title:"\u672A\u8DDF\u8E2A"};if(t==="!!")return{letter:"I",cls:"ignored",title:"\u5DF2\u5FFD\u7565"};for(var n="",i=0;i<e.length;i++)if(e[i]&&e[i]!=="."&&e[i]!==" "){n=e[i];break}n=(n||t[0]||"?").toUpperCase();var a={A:{cls:"add",title:"\u65B0\u589E"},M:{cls:"mod",title:"\u4FEE\u6539"},D:{cls:"del",title:"\u5220\u9664"},R:{cls:"ren",title:"\u91CD\u547D\u540D"},C:{cls:"ren",title:"\u590D\u5236"},T:{cls:"mod",title:"\u7C7B\u578B\u53D8\u66F4"},U:{cls:"del",title:"\u51B2\u7A81"}},u=a[n]||{cls:"other",title:"\u5DF2\u66F4\u6539"};return{letter:n,cls:u.cls,title:u.title}}function Ug(e){var t=e.map(function(n){var i=ac(n.status||""),a=n.path||"",u=a.lastIndexOf("/"),o=u>=0?a.slice(0,u+1):"",s=u>=0?a.slice(u+1):a,l="";if(n.isSubmodule){var d=n.submoduleState||{},f=[];d.commitChanged&&f.push("\u65B0\u6307\u9488"),d.hasTrackedChanges&&f.push("dirty"),d.hasUntracked&&f.push("\u672A\u8DDF\u8E2A");var c=f.length?"submodule \xB7 "+f.join(" / "):"submodule";l='<span class="qc-submodule-badge">'+p(c)+"</span>"}return'<div class="qc-file-row" title="'+p(a)+'"><span class="qc-file-badge qc-badge-'+i.cls+'" title="'+p(i.title)+'">'+p(i.letter)+'</span><span class="qc-file-path">'+(o?'<span class="qc-file-dir">'+p(o)+"</span>":"")+'<span class="qc-file-name">'+p(s)+"</span></span>"+l+"</div>"}).join("");return t||'<div class="qc-empty">\u6CA1\u6709\u53EF\u63D0\u4EA4\u7684\u6539\u52A8\u3002</div>'}function ui(){return r.quickCommitSubmitting||r.quickCommitPushing}function oi(e,t,n,i){return'<div class="qc-pair'+(i?" "+i:"")+'"><div class="qc-pair-label">'+p(e)+'</div><div class="qc-pair-flow"><div class="qc-pair-value qc-pair-value--from">'+t+'</div><div class="qc-pair-arrow" aria-hidden="true">\u2192</div><div class="qc-pair-value qc-pair-value--to">'+n+"</div></div></div>"}function uc(){var e=r.gitStatus||{};if(e.hasSubmodule===!0)return!0;for(var t=e.files||[],n=0;n<t.length;n++)if(t[n]&&t[n].isSubmodule===!0)return!0;return!1}function oc(e){var t=!e||ui(),n=uc();if(r.quickCommitSubmitting){var i=r.quickCommitSubmoduleIntent?"\uFF08\u542B submodule\uFF09":"",a=(r.quickCommitAutoGenerating?"AI \u751F\u6210 + \u63D0\u4EA4\u4E2D\u2026":"\u6267\u884C\u4E2D\u2026")+i;return'<div class="qc-dock-wrap"><div class="qc-dock-busy" role="status"><span class="qc-dock-busy-dot"></span>'+p(a)+"</div></div>"}function u(s,l,d){return'<button type="button" class="qc-chip qc-chip--'+s+'" data-chip="'+s+'"'+(d?' title="'+p(d)+'"':"")+(t?" disabled":"")+'><span class="qc-chip-dot" aria-hidden="true"></span><span class="qc-chip-label">'+l+"</span></button>"}var o=t?e?"":"\u5DE5\u4F5C\u533A\u5E72\u51C0\uFF0C\u65E0\u53EF\u63D0\u4EA4":"\u62D6\u52A8\u78C1\u5438\u7EC4\u5408 \xB7 \u4E22\u8FDB\u63D0\u4EA4\u533A\u6267\u884C \xB7 \u5355\u51FB\u76F4\u63A5\u6267\u884C\u8BE5\u9879"+(n?" \xB7 Sub \u7403\u53EF\u9009\uFF0C\u7EB3\u5165\u540E\u9012\u5F52\u5904\u7406 submodule":"");return'<div class="qc-dock-wrap qc-dock-wrap--magnetic"'+(t?' data-disabled="1"':"")+'><div id="qc-dock-stage" class="qc-dock-stage" data-action="commit" data-hot="0"><div id="qc-dock-field" class="qc-dock-field"><div id="qc-dock-cluster" class="qc-dock-cluster" aria-hidden="true"></div>'+u("commit","Commit")+u("tag","Tag")+u("push","Push")+(n?u("sub","Sub","\u63D0\u4EA4\u7236\u4ED3\u5E93\u5E76\u9012\u5F52\u8FDB\u5165 submodule\uFF08commit / tag / \u5206\u522B\u63A8\u9001\uFF09"):"")+'</div><button type="button" id="qc-dock-launch" class="qc-dock-launch"'+(t?" disabled":"")+' aria-label="\u6267\u884C\u63D0\u4EA4"><span class="qc-dock-launch-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="currentColor" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h12M13 6l6 6-6 6"/></svg></span><span id="qc-dock-launch-label" class="qc-dock-launch-label">\u63D0\u4EA4</span></button></div><div class="qc-dock-hint">'+p(o)+"</div></div>"}function sc(){var e=r.quickCommitResult;if(!e)return"";var t=e.oldCommitHash?"<code>"+p(e.oldCommitHash)+"</code>"+(e.oldCommitSubject?"<span>"+p(e.oldCommitSubject)+"</span>":""):'<span class="qc-muted">\u65E0</span>',n=e.commitHash?"<code>"+p(e.commitHash)+"</code><span>"+p(e.commitMessage||"")+"</span>":'<span class="qc-muted">\u65E0</span>',i=e.oldTag?"<code>"+p(e.oldTag)+"</code>":'<span class="qc-muted">\u65E0 tag</span>',a=e.tagName?"<code>"+p(e.tagName)+"</code>":'<span class="qc-muted">\u672A\u6253 tag</span>',u=e.pushed?'<span class="qc-result-pushed">\u5DF2\u63A8\u9001</span>':'<button id="quick-commit-push-after-btn" class="btn btn-primary btn-sm" type="button"'+(r.quickCommitPushing?" disabled":"")+">"+(r.quickCommitPushing?"\u63A8\u9001\u4E2D...":"Push & Close")+"</button>";return'<section class="qc-result-panel">'+oi("Commit",t,n,"")+oi("Tag",i,a,"qc-pair--tag")+(e.pushError||r.quickCommitPushError?'<p class="error-message">'+p(e.pushError||r.quickCommitPushError)+"</p>":"")+'<div class="qc-result-actions"><button id="quick-commit-cancel-btn" class="btn btn-ghost btn-sm" type="button">\u5173\u95ED</button>'+u+"</div></section>"}function Co(){var e=r.gitStatus||{},t=r.quickCommitForm||{customMessage:"",tag:"",tagEdited:!1},n=(e.modifiedCount||0)>0,i=r.quickCommitGenerating,a=e.lastCommit||{},u=a.shortHash?"<code>"+p(a.shortHash)+"</code><span>"+p(a.subject||"")+"</span>":e.head?"<code>"+p(e.head.substring(0,7))+"</code>":'<span class="qc-muted">\u65E0 commit</span>',o=e.latestTag?"<code>"+p(e.latestTag)+"</code>":'<span class="qc-muted">\u65E0 tag</span>',s='<input type="text" id="quick-commit-tag" class="field-input qc-tag-field-input" placeholder="\u7559\u7A7A\u5219 AI \u751F\u6210" value="'+p(t.tag||"")+'"'+(r.quickCommitSubmitting?" disabled":"")+">",l='<textarea id="quick-commit-message" class="field-input qc-message-input" rows="3" placeholder="New commit message" '+(r.quickCommitSubmitting?"disabled":"")+">"+p(t.customMessage||"")+"</textarea>",d=[];d.push(e.branch||"(no branch)"),d.push(n?(e.modifiedCount||0)+" \u4E2A\u6539\u52A8":"\u5DE5\u4F5C\u533A\u5E72\u51C0"),typeof e.ahead=="number"&&e.ahead>0&&d.push("\u2191"+e.ahead),typeof e.behind=="number"&&e.behind>0&&d.push("\u2193"+e.behind);var f=r.quickCommitResult?"":'<section class="qc-release-panel"><div class="qc-message-header"><span class="qc-section-title">New</span><button type="button" id="quick-commit-ai-btn" class="btn btn-ghost btn-sm qc-ai-btn"'+(i?" disabled":"")+' title="AI \u751F\u6210 commit message \u4E0E tag"><svg viewBox="0 0 16 16" width="13" height="13" aria-hidden="true"><path d="M8 1.5l1.4 3.6L13 6.5 9.4 7.9 8 11.5 6.6 7.9 3 6.5l3.6-1.4L8 1.5zM12.5 10.5l.7 1.8 1.8.7-1.8.7-.7 1.8-.7-1.8-1.8-.7 1.8-.7.7-1.8z" fill="currentColor"/></svg><span>'+(i?"\u751F\u6210\u4E2D...":"AI")+"</span></button></div>"+oi("Commit",u,l,"qc-pair--commit")+oi("Tag",o,s,"qc-pair--tag")+(r.quickCommitError?'<p class="error-message">'+p(r.quickCommitError)+"</p>":"")+oc(n)+'<div class="qc-modal-actions"><button id="quick-commit-cancel-btn" class="btn btn-ghost btn-sm" type="button">\u53D6\u6D88</button></div></section>',c=sc();return'<section id="quick-commit-modal" class="modal-backdrop'+(r.quickCommitOpen?"":" hidden")+'"><div class="modal quick-commit-modal" role="dialog" aria-labelledby="quick-commit-title"><div class="modal-header"><div><h2 id="quick-commit-title" class="modal-title">\u5FEB\u6377\u63D0\u4EA4</h2><p class="modal-subtitle">'+p(d.join(" \xB7 "))+'</p></div><button id="quick-commit-close-btn" class="btn btn-ghost btn-icon modal-close-btn" type="button" aria-label="\u5173\u95ED"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" aria-hidden="true"><line x1="6" y1="6" x2="18" y2="18"/><line x1="18" y1="6" x2="6" y2="18"/></svg></button></div><div class="modal-body">'+f+c+"</div></div></section>"}function lc(){return'<section id="worktree-merge-modal" class="modal-backdrop hidden"><div class="modal worktree-merge-modal"><div class="modal-header"><div><h2 class="modal-title">\u5408\u5E76 Worktree</h2><p class="modal-subtitle">\u68C0\u67E5\u5F53\u524D\u4EFB\u52A1\u5206\u652F\u5E76\u5FEB\u6377\u5408\u5E76\u5230\u4E3B\u5206\u652F\u3002</p></div><button id="close-worktree-merge-button" class="btn btn-ghost btn-icon modal-close-btn" type="button" aria-label="\u5173\u95ED"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" aria-hidden="true"><line x1="6" y1="6" x2="18" y2="18"/><line x1="18" y1="6" x2="6" y2="18"/></svg></button></div><div class="modal-body"><div id="worktree-merge-content" class="worktree-merge-content"></div><p id="worktree-merge-error" class="error-message hidden"></p><div class="worktree-merge-actions"><button id="worktree-merge-cancel-button" class="btn btn-secondary">\u53D6\u6D88</button><button id="worktree-merge-confirm-button" class="btn btn-primary">\u786E\u8BA4\u5408\u5E76\u5E76\u6E05\u7406</button></div></div></div></section>'}function dc(){return'<section id="settings-modal" class="modal-backdrop hidden"><div class="modal settings-modal"><div class="modal-header settings-modal-header"><div class="settings-modal-title-group"><h2 class="modal-title">\u8BBE\u7F6E</h2><p class="settings-modal-subtitle">\u8C03\u6574\u5E94\u7528\u914D\u7F6E\u3001\u901A\u77E5\u3001\u5B89\u5168\u548C\u663E\u793A\u504F\u597D</p></div><button id="close-settings-button" class="btn btn-ghost btn-icon modal-close-btn" type="button" aria-label="\u5173\u95ED"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" aria-hidden="true"><line x1="6" y1="6" x2="18" y2="18"/><line x1="18" y1="6" x2="6" y2="18"/></svg></button></div><div class="modal-body settings-modal-body"><div class="settings-layout"><aside class="settings-sidebar"><div class="settings-sidebar-header"><div class="settings-sidebar-title">\u504F\u597D\u8BBE\u7F6E</div><div class="settings-sidebar-hint">\u5DE6\u4FA7\u5207\u6362\u5206\u533A\uFF0C\u53F3\u4FA7\u67E5\u770B\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u9009\u9879\u3002</div></div><div class="settings-tabs" role="tablist" aria-label="\u8BBE\u7F6E\u5206\u7EC4" aria-orientation="vertical"><button class="settings-tab active" data-tab="about" role="tab" aria-selected="true" aria-controls="settings-tab-about"><span class="settings-tab-main">\u5173\u4E8E</span><span class="settings-tab-meta">\u7248\u672C\u3001\u66F4\u65B0\u4E0E\u8FDE\u63A5\u65B9\u5F0F</span></button><button class="settings-tab" data-tab="general" role="tab" aria-selected="false" aria-controls="settings-tab-general"><span class="settings-tab-main">\u57FA\u672C\u914D\u7F6E</span><span class="settings-tab-meta">\u6A21\u578B\u3001\u6A21\u5F0F\u4E0E\u8FD0\u884C\u73AF\u5883</span></button><button class="settings-tab" data-tab="notifications" role="tab" aria-selected="false" aria-controls="settings-tab-notifications"><span class="settings-tab-main">\u901A\u77E5</span><span class="settings-tab-meta">\u63D0\u793A\u97F3\u4E0E\u6D4F\u89C8\u5668\u901A\u77E5</span></button><button class="settings-tab" data-tab="security" role="tab" aria-selected="false" aria-controls="settings-tab-security"><span class="settings-tab-main">\u5B89\u5168</span><span class="settings-tab-meta">\u5BC6\u7801\u4E0E\u8BC1\u4E66</span></button><button class="settings-tab" data-tab="presets" role="tab" aria-selected="false" aria-controls="settings-tab-presets"><span class="settings-tab-main">\u547D\u4EE4\u9884\u8BBE</span><span class="settings-tab-meta">\u67E5\u770B\u5DF2\u6709\u9884\u8BBE</span></button><button class="settings-tab" data-tab="display" role="tab" aria-selected="false" aria-controls="settings-tab-display"><span class="settings-tab-main">\u663E\u793A</span><span class="settings-tab-meta">\u5361\u7247\u9ED8\u8BA4\u5C55\u5F00\u884C\u4E3A</span></button></div></aside><div class="settings-content"><div class="settings-panel active" id="settings-tab-about" role="tabpanel"><div class="settings-panel-header"><h3 class="settings-panel-title">\u5173\u4E8E Wand</h3><p class="settings-panel-desc">\u67E5\u770B\u7248\u672C\u4FE1\u606F\u3001\u66F4\u65B0\u72B6\u6001\u548C Android App \u8FDE\u63A5\u65B9\u5F0F\u3002</p></div><div class="settings-about-info"><div class="settings-about-row"><span class="settings-label">\u5305\u540D</span><span class="settings-value" id="settings-pkg-name">-</span></div><div class="settings-about-row"><span class="settings-label">\u5F53\u524D\u7248\u672C</span><span class="settings-value" id="settings-version">-</span></div><div class="settings-about-row"><span class="settings-label">Node.js \u8981\u6C42</span><span class="settings-value" id="settings-node-req">-</span></div><div class="settings-about-row"><span class="settings-label">\u4ED3\u5E93\u5730\u5740</span><span class="settings-value" id="settings-repo-url"><a href="#" target="_blank" rel="noopener">-</a></span></div></div><div class="settings-update-section" id="web-update-section"><div class="settings-section-head"><span class="settings-section-icon">'+V("globe",{size:18,strokeWidth:1.7})+'</span><div class="settings-section-head-text"><h4 class="settings-section-heading">Web \u7AEF</h4><p class="settings-section-sub">\u6D4F\u89C8\u5668\u8BBF\u95EE\u7684\u670D\u52A1\u7248\u672C</p></div></div><div class="settings-about-row"><span class="settings-label">\u6700\u65B0\u7248\u672C</span><span class="settings-value" id="settings-latest-version">-</span></div><div class="settings-update-actions"><button type="button" id="check-update-button" class="btn btn-secondary btn-sm">\u68C0\u67E5\u66F4\u65B0</button><button type="button" id="do-update-button" class="btn btn-primary btn-sm hidden">\u66F4\u65B0\u5230\u6700\u65B0\u7248</button><button type="button" id="do-restart-button" class="btn btn-success btn-sm hidden">\u91CD\u542F\u751F\u6548</button></div><p id="update-message" class="hint hidden"></p><div class="settings-toggle-row"><div class="settings-toggle-text"><span class="settings-toggle-title">Beta \u901A\u9053</span><span class="settings-toggle-desc">\u66F4\u65B0\u5230 npm beta \u7248\u672C\uFF08tag + commit \u5C3E\u6807\uFF09\uFF0C\u5C1D\u9C9C\u65B0\u529F\u80FD\uFF0C\u53EF\u80FD\u4E0D\u7A33\u5B9A\u3002</span></div><label class="settings-switch"><input type="checkbox" id="beta-channel-toggle" class="switch-toggle"><span class="switch-slider"></span></label></div><div class="settings-toggle-row"><div class="settings-toggle-text"><span class="settings-toggle-title">\u81EA\u52A8\u66F4\u65B0</span><span class="settings-toggle-desc">\u68C0\u6D4B\u5230\u65B0\u7248\u672C\u5C06\u81EA\u52A8\u4E0B\u8F7D\u5B89\u88C5\u5E76\u91CD\u542F\u670D\u52A1\u3002</span></div><label class="settings-switch"><input type="checkbox" id="auto-update-web-toggle" class="switch-toggle"><span class="switch-slider"></span></label></div></div><div class="settings-update-section hidden" id="android-apk-section"><div class="settings-section-head"><span class="settings-section-icon">'+V("smartphone",{size:18,strokeWidth:1.7})+'</span><div class="settings-section-head-text"><h4 class="settings-section-heading">Android App</h4><p class="settings-section-sub">\u539F\u751F\u5BA2\u6237\u7AEF\u7248\u672C\u4E0E APK \u4E0B\u8F7D</p></div></div><div id="android-apk-current-row" class="settings-about-row hidden"><span class="settings-label">\u5F53\u524D\u7248\u672C</span><span class="settings-value" id="settings-android-apk-current">-</span></div><div id="android-apk-github-row" class="settings-about-row settings-about-row-action hidden"><span class="settings-label">\u7EBF\u4E0A\u7248\u672C</span><span class="settings-value settings-value-flex" id="settings-android-apk-github">-</span><button id="download-github-apk-btn" class="btn btn-secondary btn-sm hidden" type="button">\u4E0B\u8F7D</button></div><div id="android-apk-local-row" class="settings-about-row settings-about-row-action hidden"><span class="settings-label">\u672C\u5730\u7248\u672C</span><span class="settings-value settings-value-flex" id="settings-android-apk-local">-</span><button id="download-local-apk-btn" class="btn btn-secondary btn-sm hidden" type="button">\u4E0B\u8F7D</button></div><div id="android-auto-update-row" class="settings-toggle-row hidden"><div class="settings-toggle-text"><span class="settings-toggle-title">\u81EA\u52A8\u66F4\u65B0</span><span class="settings-toggle-desc" id="android-auto-update-hint">\u68C0\u6D4B\u5230\u65B0\u7248 APK \u65F6\u81EA\u52A8\u62C9\u8D77\u4E0B\u8F7D\uFF0C\u5B89\u88C5\u4ECD\u9700\u5728\u7CFB\u7EDF\u4E2D\u786E\u8BA4\u3002</span></div><label class="settings-switch"><input type="checkbox" id="auto-update-apk-toggle" class="switch-toggle"><span class="switch-slider"></span></label></div><p id="android-apk-message" class="hint hidden"></p></div><div class="settings-update-section hidden" id="macos-dmg-section"><div class="settings-section-head"><span class="settings-section-icon">'+V("desktop",{size:18,strokeWidth:1.7})+'</span><div class="settings-section-head-text"><h4 class="settings-section-heading">macOS App</h4><p class="settings-section-sub">\u539F\u751F\u5BA2\u6237\u7AEF\u7248\u672C\u4E0E DMG \u4E0B\u8F7D</p></div></div><div id="macos-dmg-current-row" class="settings-about-row hidden"><span class="settings-label">\u5F53\u524D\u7248\u672C</span><span class="settings-value" id="settings-macos-dmg-current">-</span></div><div id="macos-dmg-github-row" class="settings-about-row settings-about-row-action hidden"><span class="settings-label">\u7EBF\u4E0A\u7248\u672C</span><span class="settings-value settings-value-flex" id="settings-macos-dmg-github">-</span><button id="download-github-dmg-btn" class="btn btn-secondary btn-sm hidden" type="button">\u4E0B\u8F7D</button></div><div id="macos-dmg-local-row" class="settings-about-row settings-about-row-action hidden"><span class="settings-label">\u672C\u5730\u7248\u672C</span><span class="settings-value settings-value-flex" id="settings-macos-dmg-local">-</span><button id="download-local-dmg-btn" class="btn btn-secondary btn-sm hidden" type="button">\u4E0B\u8F7D</button></div><div id="macos-auto-update-row" class="settings-toggle-row hidden"><div class="settings-toggle-text"><span class="settings-toggle-title">\u81EA\u52A8\u66F4\u65B0</span><span class="settings-toggle-desc" id="macos-auto-update-hint">\u68C0\u6D4B\u5230\u65B0\u7248 DMG \u5C06\u81EA\u52A8\u4E0B\u8F7D\u5E76\u6302\u8F7D\u3002</span></div><label class="settings-switch"><input type="checkbox" id="auto-update-dmg-toggle" class="switch-toggle"><span class="switch-slider"></span></label></div><p id="macos-dmg-message" class="hint hidden"></p></div><div class="settings-update-section" id="android-connect-section"><div class="settings-section-head"><span class="settings-section-icon">'+V("link",{size:18,strokeWidth:1.7})+'</span><div class="settings-section-head-text"><h4 class="settings-section-heading">App \u8FDE\u63A5\u7801</h4><p class="settings-section-sub">\u7C98\u8D34\u5230 Android App \u5373\u53EF\u81EA\u52A8\u8FDE\u63A5\uFF0C\u65E0\u9700\u5BC6\u7801\uFF1B\u6539\u5BC6\u7801\u540E\u5931\u6548\u3002</p></div></div><div class="settings-connect-url-box"><code id="android-connect-code" class="settings-connect-url-text">-</code><button id="copy-connect-code-button" class="btn btn-secondary btn-sm" type="button" title="\u590D\u5236\u8FDE\u63A5\u7801">\u590D\u5236</button></div><div class="settings-connect-qr-box"><div class="settings-connect-qr-wrap" id="android-connect-qr-wrap" title="\u70B9\u51FB\u653E\u5927"><canvas id="android-connect-qr" width="180" height="180"></canvas><div class="settings-connect-qr-empty" id="android-connect-qr-empty">\u751F\u6210\u4E2D\u2026</div></div><p class="settings-connect-qr-hint">\u7528 Wand App \u626B\u4E00\u626B\uFF0C\u5373\u53EF\u4E00\u952E\u586B\u5165\u670D\u52A1\u5668\u5730\u5740\u4E0E\u8FDE\u63A5\u7801\u3002</p></div></div></div><div class="settings-panel" id="settings-tab-notifications" role="tabpanel"><div class="settings-panel-header"><h3 class="settings-panel-title">\u901A\u77E5</h3><p class="settings-panel-desc">\u8BBE\u7F6E\u63D0\u793A\u97F3\u3001\u7CFB\u7EDF\u901A\u77E5\u548C\u6D4F\u89C8\u5668\u901A\u77E5\u7684\u884C\u4E3A\u3002</p></div><div class="settings-notification-section"><div class="settings-section-head"><span class="settings-section-icon">'+V("bell",{size:18,strokeWidth:1.7})+'</span><div class="settings-section-head-text"><h4 class="settings-section-heading">\u901A\u77E5\u504F\u597D</h4><p class="settings-section-sub">\u63D0\u793A\u97F3\u4E0E\u5E94\u7528\u5185\u901A\u77E5\u6C14\u6CE1</p></div></div><div class="settings-toggle-row"><div class="settings-toggle-text"><label class="settings-toggle-title" for="cfg-notif-sound">\u64AD\u653E\u63D0\u793A\u97F3</label><span class="settings-toggle-desc">\u91CD\u8981\u901A\u77E5\uFF08\u7248\u672C\u66F4\u65B0\u3001\u6743\u9650\u7B49\u5F85\u7B49\uFF09\u65F6\u64AD\u653E\u67D4\u548C\u63D0\u793A\u97F3\u3002</span></div><label class="settings-switch"><input id="cfg-notif-sound" type="checkbox" class="switch-toggle" /><span class="switch-slider"></span></label></div><div class="settings-range-row" id="notif-volume-field"><label class="settings-range-label" for="cfg-notif-volume">\u97F3\u91CF</label><input id="cfg-notif-volume" type="range" min="0" max="100" step="5" class="settings-range" /><span id="cfg-notif-volume-val" class="settings-range-value">80%</span></div><div class="settings-toggle-row"><div class="settings-toggle-text"><label class="settings-toggle-title" for="cfg-notif-bubble">\u5E94\u7528\u5185\u901A\u77E5\u6C14\u6CE1</label><span class="settings-toggle-desc">\u5728\u9875\u9762\u9876\u90E8\u5F39\u51FA\u6D6E\u52A8\u901A\u77E5\u6C14\u6CE1\u3002</span></div><label class="settings-switch"><input id="cfg-notif-bubble" type="checkbox" class="switch-toggle" /><span class="switch-slider"></span></label></div></div><div id="native-sound-section" class="settings-notification-section hidden"><div class="settings-section-head"><span class="settings-section-icon">'+V("music",{size:18,strokeWidth:1.7})+'</span><div class="settings-section-head-text"><h4 class="settings-section-heading">\u7CFB\u7EDF\u901A\u77E5\u94C3\u58F0</h4><p class="settings-section-sub">\u9009\u62E9 Android \u7CFB\u7EDF\u901A\u77E5\u4F7F\u7528\u7684\u94C3\u58F0</p></div></div><div class="settings-row-with-action"><select id="native-sound-select" class="field-input field-select"></select><button id="native-sound-preview" class="btn btn-secondary btn-sm btn-with-icon" type="button">'+V("play",{size:11,strokeWidth:1.8,fill:"currentColor"})+'<span>\u8BD5\u542C</span></button></div></div><div id="native-haptic-section" class="settings-notification-section hidden"><div class="settings-section-head"><span class="settings-section-icon">'+V("vibrate",{size:18,strokeWidth:1.7})+'</span><div class="settings-section-head-text"><h4 class="settings-section-heading">\u89E6\u611F\u53CD\u9988</h4><p class="settings-section-sub">\u6309\u94AE\u64CD\u4F5C\u548C\u4EFB\u52A1\u5B8C\u6210\u65F6\u63D0\u4F9B\u632F\u52A8\u53CD\u9988</p></div></div><div class="settings-toggle-row"><div class="settings-toggle-text"><label class="settings-toggle-title" for="cfg-haptic-enabled">\u542F\u7528\u89E6\u611F\u53CD\u9988</label></div><label class="settings-switch"><input id="cfg-haptic-enabled" type="checkbox" class="switch-toggle" /><span class="switch-slider"></span></label></div></div><div class="settings-notification-section"><div class="settings-section-head"><span class="settings-section-icon">'+V("globe",{size:18,strokeWidth:1.7})+'</span><div class="settings-section-head-text"><h4 class="settings-section-heading">\u6D4F\u89C8\u5668\u901A\u77E5</h4><p class="settings-section-sub">\u6765\u81EA\u7CFB\u7EDF\u901A\u77E5\u4E2D\u5FC3\u7684\u5F39\u7A97</p></div></div><div class="settings-about-row"><span class="settings-label">\u6388\u6743\u72B6\u6001</span><span class="settings-value" id="notification-permission-status">-</span></div><div class="settings-update-actions"><button id="notification-request-btn" class="btn btn-primary btn-sm hidden" type="button">\u6388\u6743\u901A\u77E5</button><button id="notification-reset-btn" class="btn btn-ghost btn-sm hidden" type="button">\u91CD\u65B0\u6388\u6743</button><button id="notification-test-btn" class="btn btn-secondary btn-sm" type="button">\u53D1\u9001\u6D4B\u8BD5\u901A\u77E5</button><button id="notification-test-delay-btn" class="btn btn-ghost btn-sm" type="button">10 \u79D2\u540E\u53D1\u9001</button></div><p id="notification-test-message" class="hint hidden"></p></div></div><div class="settings-panel" id="settings-tab-general" role="tabpanel"><div class="settings-panel-header"><h3 class="settings-panel-title">\u57FA\u672C\u914D\u7F6E</h3><p class="settings-panel-desc">\u914D\u7F6E\u670D\u52A1\u8FDE\u63A5\u3001\u9ED8\u8BA4\u6A21\u578B\u3001\u6267\u884C\u65B9\u5F0F\u548C\u5DE5\u4F5C\u76EE\u5F55\u3002</p></div><div class="field-row"><div class="field"><label class="field-label" for="cfg-host">\u76D1\u542C\u5730\u5740 (host)</label><input id="cfg-host" type="text" class="field-input" placeholder="127.0.0.1" /></div><div class="field"><label class="field-label" for="cfg-port">\u7AEF\u53E3 (port)</label><input id="cfg-port" type="number" class="field-input" placeholder="8443" min="1" max="65535" /></div></div><div class="settings-toggle-row"><div class="settings-toggle-text"><label class="settings-toggle-title" for="cfg-https">\u542F\u7528 HTTPS</label><span class="settings-toggle-desc">\u4F7F\u7528\u81EA\u7B7E\u540D\u8BC1\u4E66\u52A0\u5BC6\u6D4F\u89C8\u5668\u5230\u670D\u52A1\u7684\u8FDE\u63A5\uFF0Chost \u4E3A\u975E 127.0.0.1 \u65F6\u5EFA\u8BAE\u5F00\u542F\u3002</span></div><label class="settings-switch"><input id="cfg-https" type="checkbox" class="switch-toggle" /><span class="switch-slider"></span></label></div><div class="field-row"><div class="field"><label class="field-label" for="cfg-mode">\u9ED8\u8BA4\u6267\u884C\u6A21\u5F0F</label><select id="cfg-mode" class="field-input"><option value="default">default</option><option value="assist">assist</option><option value="agent">agent</option><option value="agent-max">agent-max</option><option value="auto-edit">auto-edit</option><option value="full-access">full-access</option><option value="native">native</option><option value="managed">managed</option></select></div><div class="field"><label class="field-label" for="cfg-language">\u56DE\u590D\u8BED\u8A00</label><select id="cfg-language" class="field-input"><option value="">\u81EA\u52A8\uFF08\u4E0D\u6307\u5B9A\uFF09</option><option value="\u4E2D\u6587">\u4E2D\u6587</option><option value="English">English</option><option value="\u65E5\u672C\u8A9E">\u65E5\u672C\u8A9E</option><option value="\uD55C\uAD6D\uC5B4">\uD55C\uAD6D\uC5B4</option><option value="Espa\xF1ol">Espa\xF1ol</option><option value="Fran\xE7ais">Fran\xE7ais</option><option value="Deutsch">Deutsch</option><option value="\u0420\u0443\u0441\u0441\u043A\u0438\u0439">\u0420\u0443\u0441\u0441\u043A\u0438\u0439</option></select></div></div><p class="field-hint" style="margin-top:-4px;">\u8BBE\u7F6E\u56DE\u590D\u8BED\u8A00\u540E\uFF0CClaude \u5C06\u5C3D\u91CF\u4F7F\u7528\u6307\u5B9A\u8BED\u8A00\u56DE\u590D\u3002</p><div class="field"><label class="field-label" for="cfg-structured-runner">\u7ED3\u6784\u5316\u4F1A\u8BDD Runner</label><select id="cfg-structured-runner" class="field-input"><option value="sdk">SDK\uFF08@anthropic-ai/claude-agent-sdk\uFF0C\u9ED8\u8BA4\uFF09</option><option value="cli">CLI\uFF08spawn claude -p\uFF09</option></select><p class="field-hint" style="margin-top:4px;">SDK \u6A21\u5F0F\u4F7F\u7528\u5B98\u65B9 Agent SDK \u66FF\u4EE3 CLI subprocess\uFF0C\u63A5\u53E3\u66F4\u6574\u6D01\uFF0C\u529F\u80FD\u7B49\u4EF7\u3002\u4FDD\u5B58\u540E\u5BF9\u65B0\u5EFA\u4F1A\u8BDD\u7ACB\u5373\u751F\u6548\u3002</p></div><div class="settings-toggle-row"><div class="settings-toggle-text"><label class="settings-toggle-title" for="cfg-inherit-env">\u7EE7\u627F\u73AF\u5883\u53D8\u91CF</label><span class="settings-toggle-desc">\u542F\u52A8 PTY / \u7ED3\u6784\u5316\u5B50\u8FDB\u7A0B\u65F6\uFF0C\u628A\u5F53\u524D\u670D\u52A1\u8FDB\u7A0B\u7684\u73AF\u5883\u53D8\u91CF\u4F20\u7ED9 claude / codex\u3002\u5173\u95ED\u540E\u5B50\u8FDB\u7A0B\u4EC5\u83B7\u5F97\u6700\u5C0F\u53EF\u7528\u73AF\u5883\uFF08PATH/HOME/SHELL/LANG/TERM \u7B49\uFF09\uFF0C\u53EF\u7528\u4E8E\u9694\u79BB API key \u7B49\u654F\u611F\u51ED\u636E\u3002</span></div><div class="settings-toggle-aside"><button type="button" id="cfg-view-env-btn" class="btn btn-secondary btn-sm" title="\u67E5\u770B\u5B9E\u9645\u4F1A\u6CE8\u5165\u5230\u5B50\u8FDB\u7A0B\u7684\u73AF\u5883\u53D8\u91CF">\u67E5\u770B</button><label class="settings-switch"><input id="cfg-inherit-env" type="checkbox" class="switch-toggle" /><span class="switch-slider"></span></label></div></div><section class="settings-model-card" aria-labelledby="settings-model-card-title"><div class="settings-model-card-header"><div class="settings-model-card-heading"><span class="settings-model-card-icon" aria-hidden="true">'+V("cpu",{size:18,strokeWidth:1.8})+'</span><div><h4 class="settings-model-card-title" id="settings-model-card-title">\u9ED8\u8BA4\u6A21\u578B</h4><p class="settings-model-card-desc">\u4ECE\u5DF2\u68C0\u6D4B\u5217\u8868\u4E2D\u9009\u62E9\uFF0C\u6216\u76F4\u63A5\u8F93\u5165\u81EA\u5B9A\u4E49\u6A21\u578B\u540D\u79F0 / ID\u3002</p></div></div><button type="button" id="cfg-default-model-refresh" class="btn btn-secondary btn-sm settings-model-refresh" title="\u91CD\u65B0\u68C0\u6D4B Claude \u4E0E Codex \u6A21\u578B"><svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 11a8.1 8.1 0 0 0-15.5-2M4 4v5h5"/><path d="M4 13a8.1 8.1 0 0 0 15.5 2M20 20v-5h-5"/></svg><span>\u5237\u65B0\u5217\u8868</span></button></div><div class="settings-model-grid"><div class="field settings-model-field"><div class="settings-model-label-row"><label class="field-label" for="cfg-default-model">Claude</label><span class="settings-model-provider">Claude Code</span></div><div class="model-combobox" data-provider="claude"><div class="model-combobox-control"><input id="cfg-default-model" class="field-input model-combobox-input" type="text" role="combobox" aria-autocomplete="list" aria-expanded="false" aria-controls="cfg-default-model-listbox" autocomplete="off" autocapitalize="none" autocorrect="off" spellcheck="false" placeholder="\u8DDF\u968F Claude Code \u9ED8\u8BA4" /><button type="button" class="model-combobox-toggle" aria-label="\u5C55\u5F00 Claude \u6A21\u578B\u5217\u8868"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div><div id="cfg-default-model-listbox" class="model-combobox-menu hidden" role="listbox" aria-label="Claude \u6A21\u578B"></div></div><div class="settings-model-meta"><span class="settings-model-status" data-model-status="claude">\u8DDF\u968F CLI \u9ED8\u8BA4</span><span class="settings-model-help">\u4F1A\u539F\u6837\u4F20\u7ED9 <code>--model</code></span></div></div><div class="field settings-model-field"><div class="settings-model-label-row"><label class="field-label" for="cfg-default-codex-model">Codex</label><span class="settings-model-provider">Codex CLI</span></div><div class="model-combobox" data-provider="codex"><div class="model-combobox-control"><input id="cfg-default-codex-model" class="field-input model-combobox-input" type="text" role="combobox" aria-autocomplete="list" aria-expanded="false" aria-controls="cfg-default-codex-model-listbox" autocomplete="off" autocapitalize="none" autocorrect="off" spellcheck="false" placeholder="\u8DDF\u968F Codex \u9ED8\u8BA4" /><button type="button" class="model-combobox-toggle" aria-label="\u5C55\u5F00 Codex \u6A21\u578B\u5217\u8868"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div><div id="cfg-default-codex-model-listbox" class="model-combobox-menu hidden" role="listbox" aria-label="Codex \u6A21\u578B"></div></div><div class="settings-model-meta"><span class="settings-model-status" data-model-status="codex">\u8DDF\u968F CLI \u9ED8\u8BA4</span><span class="settings-model-help">\u7559\u7A7A\u5219\u4E0D\u4F20\u6A21\u578B\u53C2\u6570</span></div></div></div><p class="field-hint settings-model-version" id="cfg-default-model-version">\u6A21\u578B\u540D\u79F0\u4EC5\u5728\u65B0\u5EFA\u4F1A\u8BDD\u65F6\u4F5C\u4E3A\u9ED8\u8BA4\u503C\uFF1B\u8FD0\u884C\u4E2D\u7684\u7ED3\u6784\u5316\u4F1A\u8BDD\u4ECD\u53EF\u5355\u72EC\u5207\u6362\u3002</p></section><section class="settings-model-card" aria-labelledby="settings-commit-model-card-title"><div class="settings-model-card-header"><div class="settings-model-card-heading"><span class="settings-model-card-icon" aria-hidden="true">'+V("edit",{size:18,strokeWidth:1.8})+'</span><div><h4 class="settings-model-card-title" id="settings-commit-model-card-title">Commit \u751F\u6210</h4><p class="settings-model-card-desc">\u6307\u5B9A\u5FEB\u6377\u63D0\u4EA4\u751F\u6210 message \u4E0E tag \u65F6\u4F7F\u7528\u7684 CLI \u548C\u6A21\u578B\u3002</p></div></div><button type="button" id="cfg-commit-model-refresh" class="btn btn-secondary btn-sm settings-model-refresh" title="\u91CD\u65B0\u68C0\u6D4B\u6240\u9009 CLI \u7684\u6A21\u578B"><svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 11a8.1 8.1 0 0 0-15.5-2M4 4v5h5"/><path d="M4 13a8.1 8.1 0 0 0 15.5 2M20 20v-5h-5"/></svg><span>\u5237\u65B0\u5217\u8868</span></button></div><div class="settings-model-grid"><div class="field settings-model-field"><div class="settings-model-label-row"><label class="field-label" for="cfg-commit-cli">CLI</label><span class="settings-model-provider">\u5FEB\u6377\u63D0\u4EA4</span></div><select id="cfg-commit-cli" class="field-input"><option value="claude">Claude</option><option value="codex">Codex</option></select><div class="settings-model-meta"><span class="settings-model-status">\u751F\u6210 commit message \u4E0E tag</span></div></div><div class="field settings-model-field"><div class="settings-model-label-row"><label class="field-label" for="cfg-commit-model">\u6A21\u578B</label><span class="settings-model-provider" id="cfg-commit-model-provider">Claude Code</span></div><div id="cfg-commit-model-combobox" class="model-combobox" data-provider="claude"><div class="model-combobox-control"><input id="cfg-commit-model" class="field-input model-combobox-input" type="text" role="combobox" aria-autocomplete="list" aria-expanded="false" aria-controls="cfg-commit-model-listbox" autocomplete="off" autocapitalize="none" autocorrect="off" spellcheck="false" placeholder="\u8DDF\u968F Claude Code \u9ED8\u8BA4" /><button type="button" class="model-combobox-toggle" aria-label="\u5C55\u5F00 commit \u6A21\u578B\u5217\u8868"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div><div id="cfg-commit-model-listbox" class="model-combobox-menu hidden" role="listbox" aria-label="Commit \u6A21\u578B"></div></div><div class="settings-model-meta"><span class="settings-model-status" data-model-status>\u8DDF\u968F CLI \u9ED8\u8BA4</span><span class="settings-model-help">\u5217\u8868\u6765\u81EA\u81EA\u52A8\u68C0\u6D4B</span></div></div></div></section><div class="field"><label class="field-label" for="cfg-cwd">\u9ED8\u8BA4\u5DE5\u4F5C\u76EE\u5F55</label><input id="cfg-cwd" type="text" class="field-input" placeholder="/home/user" /></div><div class="field"><label class="field-label" for="cfg-shell">Shell</label><input id="cfg-shell" type="text" class="field-input" placeholder="/bin/bash" /></div>'+(typeof WandNative<"u"&&typeof WandNative.getAppIcon=="function"?'<div class="settings-app-icon-block"><div class="settings-section-head"><span class="settings-section-icon">'+V("palette",{size:18,strokeWidth:1.7})+'</span><div class="settings-section-head-text"><h4 class="settings-section-heading">\u5E94\u7528\u56FE\u6807</h4><p class="settings-section-sub">\u9009\u62E9 App \u542F\u52A8\u5668\u56FE\u6807\uFF0C\u8FD4\u56DE\u684C\u9762\u540E\u751F\u6548</p></div></div><div id="app-icon-picker" class="settings-app-icon-picker"><button type="button" class="settings-app-icon-option" data-icon="shorthair"><span class="settings-app-icon-preview">'+Pi.user+'</span><span class="settings-app-icon-label">\u8D5B\u535A\u864E\u599E</span></button><button type="button" class="settings-app-icon-option" data-icon="garfield"><span class="settings-app-icon-preview">'+Pi.assistant+'</span><span class="settings-app-icon-label">\u52E4\u52B3\u521D\u4E8C</span></button></div><p id="app-icon-message" class="hint hidden"></p></div>':"")+'<div class="settings-actions settings-actions-sticky"><button id="save-config-button" class="btn btn-primary btn-block">\u4FDD\u5B58\u914D\u7F6E</button></div><p id="config-message" class="hint hidden settings-status-message"></p></div><div class="settings-panel" id="settings-tab-security" role="tabpanel"><div class="settings-panel-header"><h3 class="settings-panel-title">\u5B89\u5168</h3><p class="settings-panel-desc">\u7BA1\u7406\u767B\u5F55\u5BC6\u7801\u4E0E SSL \u8BC1\u4E66\uFF0C\u654F\u611F\u53D8\u66F4\u8BF7\u786E\u8BA4\u540E\u518D\u4FDD\u5B58\u3002</p></div><div class="settings-card"><div class="settings-card-head"><span class="settings-card-icon" aria-hidden="true">'+V("lock",{size:18,strokeWidth:1.8})+'</span><div class="settings-card-head-text"><h3 class="settings-card-title">\u4FEE\u6539\u5BC6\u7801</h3><p class="settings-card-desc">\u81F3\u5C11 6 \u4E2A\u5B57\u7B26\uFF1B\u4FDD\u5B58\u540E\u4E0B\u6B21\u767B\u5F55\u751F\u6548\u3002</p></div></div><form id="change-password-form" autocomplete="on" onsubmit="return false;"><input type="text" name="username" autocomplete="username" value="wand" tabindex="-1" aria-hidden="true" style="position:absolute;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none" readonly /><div class="field"><label class="field-label" for="new-password">\u65B0\u5BC6\u7801</label><input id="new-password" type="password" class="field-input" placeholder="\u8F93\u5165\u65B0\u5BC6\u7801\uFF08\u81F3\u5C11 6 \u4E2A\u5B57\u7B26\uFF09" autocomplete="new-password" /></div><div class="field"><label class="field-label" for="confirm-password">\u786E\u8BA4\u5BC6\u7801</label><input id="confirm-password" type="password" class="field-input" placeholder="\u518D\u6B21\u8F93\u5165\u65B0\u5BC6\u7801" autocomplete="new-password" /></div><div class="settings-card-actions"><button id="save-password-button" class="btn btn-primary" type="submit">\u4FDD\u5B58\u5BC6\u7801</button></div><p id="settings-error" class="error-message hidden"></p><p id="settings-success" class="hint settings-success-message hidden"></p></form></div><div class="settings-card"><div class="settings-card-head"><span class="settings-card-icon" aria-hidden="true">'+V("certificate",{size:18,strokeWidth:1.8})+'</span><div class="settings-card-head-text"><h3 class="settings-card-title">SSL \u8BC1\u4E66</h3><p class="settings-card-desc" id="cert-status">\u52A0\u8F7D\u4E2D...</p></div></div><div class="field"><label class="field-label" for="cert-key-file">\u79C1\u94A5\u6587\u4EF6 (.key)</label><div class="file-picker"><input id="cert-key-file" type="file" class="file-picker-input" accept=".key,.pem" /><label for="cert-key-file" class="file-picker-trigger"><svg class="file-picker-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"></path></svg><span class="file-picker-label">\u9009\u62E9\u79C1\u94A5</span></label><span class="file-picker-name" data-default="\u672A\u9009\u62E9\u6587\u4EF6">\u672A\u9009\u62E9\u6587\u4EF6</span></div></div><div class="field"><label class="field-label" for="cert-cert-file">\u8BC1\u4E66\u6587\u4EF6 (.crt/.pem)</label><div class="file-picker"><input id="cert-cert-file" type="file" class="file-picker-input" accept=".crt,.pem,.cert" /><label for="cert-cert-file" class="file-picker-trigger"><svg class="file-picker-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline></svg><span class="file-picker-label">\u9009\u62E9\u8BC1\u4E66</span></label><span class="file-picker-name" data-default="\u672A\u9009\u62E9\u6587\u4EF6">\u672A\u9009\u62E9\u6587\u4EF6</span></div></div><div class="settings-card-actions"><button id="upload-cert-button" class="btn btn-primary">\u4E0A\u4F20\u8BC1\u4E66</button></div><p id="cert-message" class="hint hidden"></p></div></div><div class="settings-panel" id="settings-tab-presets" role="tabpanel"><div class="settings-panel-header"><h3 class="settings-panel-title">\u547D\u4EE4\u9884\u8BBE</h3><p class="settings-panel-desc">\u5F53\u524D\u547D\u4EE4\u9884\u8BBE\u4ECE config.json \u8BFB\u53D6\uFF0C\u53EF\u5728\u8FD9\u91CC\u5FEB\u901F\u67E5\u770B\u5DF2\u6709\u914D\u7F6E\u3002</p></div><div id="presets-list" class="presets-list"></div></div><div class="settings-panel" id="settings-tab-display" role="tabpanel"><div class="settings-panel-header"><h3 class="settings-panel-title">\u663E\u793A</h3><p class="settings-panel-desc">\u63A7\u5236\u804A\u5929\u89C6\u56FE\u91CC\u4E0D\u540C\u5361\u7247\u7C7B\u578B\u7684\u9ED8\u8BA4\u5C55\u5F00\u72B6\u6001\u3002</p></div><div class="settings-section-title">\u5361\u7247\u9ED8\u8BA4\u5C55\u5F00\u72B6\u6001</div><p class="hint settings-inline-hint">\u8BBE\u7F6E\u7ED3\u6784\u5316\u804A\u5929\u89C6\u56FE\u4E2D\u5404\u7C7B\u5361\u7247\u7684\u9ED8\u8BA4\u5C55\u5F00/\u6298\u53E0\u72B6\u6001\u3002\u624B\u52A8\u64CD\u4F5C\u7684\u5C55\u5F00\u72B6\u6001\u4F18\u5148\u4E8E\u6B64\u9ED8\u8BA4\u8BBE\u7F6E\u3002</p><div class="switch-card-list"><label class="switch-card" for="cfg-card-edit"><div class="switch-card-header"><span class="switch-card-title">\u7F16\u8F91\u5361\u7247 (Edit/Write)</span><input id="cfg-card-edit" type="checkbox" class="switch-toggle" /><span class="switch-slider"></span></div><div class="switch-card-desc">\u6587\u4EF6\u7F16\u8F91\u548C\u5199\u5165\u64CD\u4F5C\u7684 diff \u89C6\u56FE</div></label><label class="switch-card" for="cfg-card-inline"><div class="switch-card-header"><span class="switch-card-title">\u5185\u8054\u5DE5\u5177 (Read/Glob/Grep)</span><input id="cfg-card-inline" type="checkbox" class="switch-toggle" /><span class="switch-slider"></span></div><div class="switch-card-desc">\u6587\u4EF6\u8BFB\u53D6\u3001\u641C\u7D22\u7B49\u5DE5\u5177\u7684\u7ED3\u679C</div></label><label class="switch-card" for="cfg-card-terminal"><div class="switch-card-header"><span class="switch-card-title">\u7EC8\u7AEF\u8F93\u51FA (Bash)</span><input id="cfg-card-terminal" type="checkbox" class="switch-toggle" /><span class="switch-slider"></span></div><div class="switch-card-desc">\u547D\u4EE4\u884C\u6267\u884C\u7ED3\u679C</div></label><label class="switch-card" for="cfg-card-thinking"><div class="switch-card-header"><span class="switch-card-title">\u601D\u8003\u8FC7\u7A0B (Thinking)</span><input id="cfg-card-thinking" type="checkbox" class="switch-toggle" /><span class="switch-slider"></span></div><div class="switch-card-desc">Claude \u7684\u601D\u8003\u8FC7\u7A0B\u5757</div></label><label class="switch-card" for="cfg-card-toolgroup"><div class="switch-card-header"><span class="switch-card-title">\u5DE5\u5177\u7EC4</span><input id="cfg-card-toolgroup" type="checkbox" class="switch-toggle" /><span class="switch-slider"></span></div><div class="switch-card-desc">\u8FDE\u7EED\u540C\u7C7B\u5DE5\u5177\u8C03\u7528\u7684\u6298\u53E0\u7EC4</div></label></div><div class="settings-actions settings-actions-sticky"><button id="save-display-button" class="btn btn-primary btn-block">\u4FDD\u5B58\u663E\u793A\u8BBE\u7F6E</button></div><p id="display-message" class="hint hidden settings-status-message"></p></div></div></div></section>'}function Kg(e){var t=$e();return e.selectedId?"":'<div class="folder-picker-compact" id="folder-picker-container"><div class="folder-picker-compact-row"><span class="folder-picker-compact-icon">'+V("folder",{size:13,strokeWidth:1.7})+'</span><input type="text" id="folder-picker-input" class="folder-picker-compact-input" value="'+p(t)+'" placeholder="\u5DE5\u4F5C\u76EE\u5F55" autocomplete="off" /><button type="button" id="folder-picker-toggle" class="folder-picker-toggle" title="\u9009\u62E9\u76EE\u5F55" aria-label="\u9009\u62E9\u76EE\u5F55">'+V("chevronDown",{size:11,strokeWidth:2})+'</button></div><div id="folder-picker-dropdown" class="folder-picker-dropdown hidden"><div class="folder-picker-quick-row"><button class="folder-picker-quick-btn" data-path="/tmp">\u4E34\u65F6</button><button class="folder-picker-quick-btn" data-path="/">\u6839\u76EE\u5F55</button></div></div><div id="folder-picker-validation" class="folder-picker-validation"></div></div>'}function Jg(e){var t=$e(),n=t;if(e.selectedId){var i=e.sessions.find(function(a){return a.id===e.selectedId});n=i&&i.cwd?i.cwd:t}return'<div class="working-dir-indicator" id="working-dir-indicator" title="'+p(n)+'" data-path="'+p(n)+'"><span class="working-dir-indicator-icon">'+V("folder",{size:12,strokeWidth:1.7})+"</span>"+gt(n,"working-dir-indicator-path",' id="working-dir-indicator-path"')+"</div>"}function Bo(e){if(!e)return"";var t=Date.now(),n=new Date(e).getTime(),i=Math.max(0,t-n),a=Math.floor(i/1e3);if(a<60)return"\u521A\u521A";var u=Math.floor(a/60);if(u<60)return u+"\u5206\u949F\u524D";var o=Math.floor(u/60);if(o<24)return o+"\u5C0F\u65F6\u524D";var s=Math.floor(o/24);return s<30?s+"\u5929\u524D":Math.floor(s/30)+"\u4E2A\u6708\u524D"}function Do(e){if(!e)return"";var t=Date.now(),n=new Date(e).getTime(),i=Math.max(0,t-n),a=Math.floor(i/1e3),u=Math.floor(a/60),o=Math.floor(u/60);return o>0?o+"h"+(u%60>0?u%60+"m":""):u>0?u+"m":a+"s"}function vr(e){if(!e)return"";if(e.permissionBlocked)return"\u7B49\u5F85\u6388\u6743";if(ue(e)&&e.structuredState&&e.structuredState.inFlight)return"\u601D\u8003\u4E2D";var t={idle:"\u7A7A\u95F2",stopped:"\u5DF2\u505C\u6B62",running:"\u8FD0\u884C\u4E2D",exited:"\u5DF2\u9000\u51FA",failed:"\u5DF2\u5931\u8D25"};return t[e.status]||e.status}function ko(e){return e?e.permissionBlocked?"permission-blocked":ue(e)&&e.structuredState&&e.structuredState.inFlight?"running":e.status||"":""}function cc(e){return e?e.permissionBlocked?"\u7B49\u5F85\u4F60\u7684\u6388\u6743":e.status!=="running"?"":e.id===r.selectedId&&r.currentTask&&r.currentTask.title?r.currentTask.title:e.currentTaskTitle?e.currentTaskTitle:"":""}function fc(e){var t=e&&e.messages;if(!t||t.length===0)return"";for(var n=t.length-1;n>=0;n--){var i=t[n];if(!(!i||i.role!=="user")){var a=i.content;if(typeof a=="string"){var u=a.trim();if(u)return u;continue}if(Array.isArray(a))for(var o=0;o<a.length;o++){var s=a[o];if(!(!s||s.type!=="text"||!s.text)&&!s.__queued){var l=String(s.text).trim();if(l)return l}}}}return""}function pc(e){var t=e&&e.messages;if(!t||t.length===0)return"";for(var n=t.length-1;n>=0;n--){var i=t[n];if(i.role==="assistant"){for(var a=i.content||[],u=0;u<a.length;u++)if(a[u].type==="text"&&a[u].text&&a[u].text.trim()){var o=a[u].text.trim();o=o.replace(/^#+\s+/gm,"").replace(/\*\*/g,"").replace(/`/g,"");var s=o.split(`
8
+ `)[0].trim();return s.slice(0,100)}}}return""}function vc(e,t){var n=e.id===r.selectedId?" active":"",i=r.sessionsManageMode&&r.selectedSessionIds[e.id]?" selected":"",a=vr(e),u=ko(e),o="",s=Oo("sessions",e.id,"\u9009\u62E9\u4F1A\u8BDD "+e.command);if((e.provider==="claude"||e.provider==="codex")&&e.claudeSessionId&&e.status!=="running"&&!r.sessionsManageMode&&!ue(e)){var l=e.provider==="codex"?"\u6062\u590D Codex \u4F1A\u8BDD":"\u6062\u590D Claude \u4F1A\u8BDD";o='<button class="session-action-btn" data-action="resume" data-session-id="'+e.id+'" type="button" aria-label="'+l+'" title="'+l+'"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 4v6h6"/><path d="M3.51 15a9 9 0 105.64-11.36L3 10"/></svg></button>'}var d=!r.sessionsManageMode&&e.worktreeEnabled&&e.worktree&&e.worktree.branch&&e.worktree.path,f=e.worktreeMergeStatus==="merged"&&e.worktreeMergeInfo&&e.worktreeMergeInfo.cleanupDone===!1,c=e.status==="running"||e.worktreeMergeStatus==="merging",v=f?"\u91CD\u8BD5\u6E05\u7406 worktree":"\u5408\u5E76\u5230\u4E3B\u5206\u652F",h=d&&e.worktreeMergeStatus!=="merged"?'<button class="session-action-btn merge-btn" data-action="worktree-merge" data-session-id="'+e.id+'" type="button" aria-label="'+p(v)+'" title="'+p(v)+'"'+(c?" disabled":"")+'><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M7 7h10"/><path d="M7 12h10"/><path d="M7 17h10"/><path d="M5 7l-2 2 2 2"/><path d="M19 15l2 2-2 2"/></svg></button>':f?'<button class="session-action-btn merge-btn" data-action="worktree-cleanup" data-session-id="'+e.id+'" type="button" aria-label="\u91CD\u8BD5\u6E05\u7406 worktree" title="\u91CD\u8BD5\u6E05\u7406 worktree"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"/><path d="M8 6V4a2 2 0 012-2h4a2 2 0 012 2v2"/><path d="M19 6l-1 14a2 2 0 01-2 2H8a2 2 0 01-2-2L5 6"/></svg></button>':"",g=r.sessionsManageMode?"":'<button class="session-action-btn delete-btn" data-action="delete-session" data-session-id="'+e.id+'" type="button" aria-label="\u5220\u9664\u4F1A\u8BDD" title="\u5220\u9664\u6B64\u4F1A\u8BDD"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"/><path d="M8 6V4a2 2 0 012-2h4a2 2 0 012 2v2"/><path d="M19 6l-1 14a2 2 0 01-2 2H8a2 2 0 01-2-2L5 6"/></svg></button>',m='<span class="session-actions">'+o+h+g+"</span>",y=e.title||e.summary?'<div class="session-title">'+p(e.title||e.summary)+"</div>":'<div class="session-command">'+p(e.resumedFromSessionId?e.command.replace(/\s+--resume\s+\S+/,"").replace(/\s+resume\s+[0-9a-f-]+/,""):e.command)+"</div>",C=cc(e),E="";e.status==="running"&&C&&(E='<div class="session-activity">'+p(C)+"</div>");var B=e.description?'<div class="session-description">'+p(e.description)+"</div>":"",D="";e.status==="running"?D='<span class="session-time" title="\u5DF2\u8FD0\u884C '+p(Do(e.startedAt))+'">'+p(Do(e.startedAt))+"</span>":e.endedAt?D='<span class="session-time" title="'+p(new Date(e.endedAt).toLocaleString())+'">'+p(Bo(e.endedAt))+"</span>":e.startedAt&&(D='<span class="session-time" title="'+p(new Date(e.startedAt).toLocaleString())+'">'+p(Bo(e.startedAt))+"</span>");var F=Ao(e),I=e.autoRecovered?'<span class="session-recovery-hint">\u81EA\u52A8\u6062\u590D</span>':"",L=r.sessionsManageMode?"":'<div class="session-swipe-bg" aria-hidden="true"><button class="session-swipe-delete" data-action="swipe-delete-session" data-session-id="'+e.id+'" type="button" tabindex="-1" aria-label="\u5220\u9664\u4F1A\u8BDD"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"/><path d="M8 6V4a2 2 0 012-2h4a2 2 0 012 2v2"/><path d="M19 6l-1 14a2 2 0 01-2 2H8a2 2 0 01-2-2L5 6"/></svg><span>\u5220\u9664</span></button></div>';return'<div class="session-item'+n+i+'" data-session-id="'+e.id+'" role="button" tabindex="0">'+L+'<div class="session-item-content"><div class="session-item-row">'+s+'<div class="session-main"><div class="session-title-row">'+y+D+"</div>"+B+E+'<div class="session-meta"><span class="session-status '+u+'">'+p(a)+"</span>"+F+I+"</div></div>"+m+"</div></div></div>"}function mc(e){if(!e||!e.worktreeMergeStatus)return"";var t={ready:"\u53EF\u5408\u5E76",checking:"\u68C0\u67E5\u4E2D",merging:"\u5408\u5E76\u4E2D",merged:e.worktreeMergeInfo&&e.worktreeMergeInfo.cleanupDone===!1?"\u5DF2\u5408\u5E76\u5F85\u6E05\u7406":"\u5DF2\u5408\u5E76",failed:"\u5408\u5E76\u5931\u8D25"};return t[e.worktreeMergeStatus]||""}function gc(e){var t=mc(e);return t?'<span class="session-kind-badge worktree-merge '+p(e.worktreeMergeStatus||"")+'">'+p(t)+"</span>":""}function Ao(e){if(!e||!e.worktreeEnabled)return"";var t=[];e.worktree&&e.worktree.branch&&t.push("Worktree: "+e.worktree.branch),e.worktree&&e.worktree.path&&t.push("Path: "+e.worktree.path);var n=t.length>0?' title="'+p(t.join(`
9
+ `))+'"':"";return'<span class="session-kind-badge worktree"'+n+">Worktree</span>"+gc(e)}function Yg(e){if(!e)return"";var t=ue(e)?'<span class="session-kind-badge structured">Structured</span>':'<span class="session-kind-badge pty">PTY</span>';return t+Ao(e)}function hc(e){var t=[{id:"managed",label:"\u6258\u7BA1",desc:"\u5168\u81EA\u52A8\u5B8C\u6210\u4EFB\u52A1"},{id:"full-access",label:"\u5168\u6743\u9650",desc:"\u81EA\u52A8\u786E\u8BA4\u6743\u9650"},{id:"auto-edit",label:"\u81EA\u52A8\u7F16\u8F91",desc:"\u81EA\u52A8\u786E\u8BA4\u4FEE\u6539"},{id:"default",label:"\u6807\u51C6",desc:"\u9010\u6B65\u786E\u8BA4\u64CD\u4F5C"},{id:"native",label:"\u539F\u751F",desc:"\u539F\u751F\u7ED3\u6784\u5316\u8F93\u51FA"}];return t.map(function(n){var i=n.id===e?" active":"";return'<button type="button" class="mode-card'+i+'" data-mode="'+n.id+'"><span class="mode-card-label">'+n.label+'</span><span class="mode-card-desc">'+n.desc+"</span></button>"}).join("")}function yc(e){var t=[{id:"claude",label:"Claude",desc:"\u5B8C\u6574 Claude \u4F1A\u8BDD\u80FD\u529B"},{id:"codex",label:"Codex",desc:"\u7ED3\u6784\u5316 JSONL \u6216 PTY \u4F1A\u8BDD"}];return t.map(function(n){var i=n.id===e?" active":"";return'<button type="button" class="mode-card provider-card'+i+'" data-provider="'+n.id+'"><span class="mode-card-label">'+n.label+'</span><span class="mode-card-desc">'+n.desc+"</span></button>"}).join("")}function bc(e){var t=[{id:"structured",label:"\u7ED3\u6784\u5316",desc:"\u667A\u80FD\u5BF9\u8BDD\u6A21\u5F0F"},{id:"pty",label:"PTY",desc:"\u4EA4\u4E92\u5F0F\u7EC8\u7AEF\u4F1A\u8BDD"}];return t.map(function(n){var i=n.id===e?" active":"",a="";return'<button type="button" class="mode-card session-kind-card'+i+a+'" data-session-kind="'+n.id+'"><span class="mode-card-label">'+n.label+'</span><span class="mode-card-desc">'+n.desc+"</span></button>"}).join("")}function Gg(e){return'<label class="session-inline-toggle" for="session-worktree-toggle" title="\u4E3A\u8BE5\u4F1A\u8BDD\u521B\u5EFA\u72EC\u7ACB\u7684 git worktree \u5206\u652F"><svg class="session-inline-toggle-icon" viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="6" cy="6" r="2.2"/><circle cx="18" cy="6" r="2.2"/><circle cx="12" cy="18" r="2.2"/><path d="M6 8.2v3.4a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8.2"/><path d="M12 13.6v2.2"/></svg><span class="session-inline-toggle-label">Worktree \u6A21\u5F0F</span><input id="session-worktree-toggle" type="checkbox" class="switch-toggle"'+(e?" checked":"")+' /><span class="switch-slider" aria-hidden="true"></span></label>'}function xo(e){var t=r.sessionTool||"claude";return e==="structured"?t==="codex"?"Codex JSONL \u7ED3\u6784\u5316\u804A\u5929\u754C\u9762\uFF0C\u652F\u6301\u591A\u8F6E\u5BF9\u8BDD\u548C\u5DE5\u5177\u8C03\u7528\u5C55\u793A\u3002":"\u7ED3\u6784\u5316\u804A\u5929\u754C\u9762\uFF0C\u652F\u6301\u591A\u8F6E\u5BF9\u8BDD\u3001\u6D41\u5F0F\u8F93\u51FA\u548C\u5DE5\u5177\u8C03\u7528\u5C55\u793A\u3002":t==="codex"?"Codex PTY \u7EC8\u7AEF\u4F1A\u8BDD\uFF1Bterminal \u662F\u539F\u59CB\u8F93\u51FA\uFF0Cchat \u662F\u89E3\u6790\u540E\u7684\u9605\u8BFB\u89C6\u56FE\u3002":"\u539F\u59CB PTY \u7EC8\u7AEF\u4F1A\u8BDD\uFF0C\u652F\u6301\u6301\u7EED\u4EA4\u4E92\u3001\u7EC8\u7AEF\u89C6\u56FE\u548C\u6743\u9650\u6D41\u3002"}function Ec(){var e=rt(),t=mt(e,r.modeValue||r.chatMode||"default"),n=r.sessionCreateKind||"structured",i=r.sessionCreateWorktree===!0;return'<section id="session-modal" class="modal-backdrop hidden"><div class="modal session-modal"><div class="modal-header"><div><h2 class="modal-title">\u65B0\u5BF9\u8BDD</h2><p class="modal-subtitle">\u542F\u52A8 Claude \u6216 Codex \u4F1A\u8BDD\uFF0C\u9009\u62E9 provider\u3001\u4F1A\u8BDD\u7C7B\u578B\u3001\u6A21\u5F0F\u548C\u5DE5\u4F5C\u76EE\u5F55\u3002</p></div><button id="close-modal-button" class="btn btn-ghost btn-icon modal-close-btn" type="button" aria-label="\u5173\u95ED"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" aria-hidden="true"><line x1="6" y1="6" x2="18" y2="18"/><line x1="18" y1="6" x2="6" y2="18"/></svg></button></div><div class="modal-body"><div class="field"><label class="field-label">Provider</label><div id="provider-cards" class="mode-cards">'+yc(e)+'</div></div><div class="field"><label class="field-label">\u4F1A\u8BDD\u7C7B\u578B</label><div id="session-kind-cards" class="mode-cards">'+bc(n)+'</div><div class="field-hint session-kind-hint-row"><span id="session-kind-description">'+p(xo(n))+'</span></div></div><div class="field"><label class="field-label" for="cwd">\u5DE5\u4F5C\u76EE\u5F55</label><div class="suggestions-wrap"><input id="cwd" type="text" class="field-input" autocomplete="off" placeholder="'+p($e())+'" /><div id="cwd-suggestions" class="suggestions hidden"></div></div><p class="field-hint">\u521B\u5EFA\u524D\u5148\u786E\u8BA4\u76EE\u5F55\uFF1B\u7559\u7A7A\u5219\u4F7F\u7528\u4E0A\u65B9\u76EE\u5F55\uFF0C\u652F\u6301\u8DEF\u5F84\u81EA\u52A8\u8865\u5168\u3002</p><div id="recent-paths-bubbles" class="recent-paths-bubbles"></div></div><div class="field"><label class="field-label">\u6A21\u5F0F</label><div id="mode-cards" class="mode-cards">'+hc(t)+'</div><p id="mode-description" class="field-hint">'+p(Cl(e,t))+'</p></div></div><div class="modal-footer"><button id="run-button" class="btn btn-primary btn-block">\u542F\u52A8\u4F1A\u8BDD</button><p id="modal-error" class="error-message hidden"></p></div></div></section>'}function So(){var e=[];return r.sessions.forEach(function(t){var n=t.startedAt?new Date(t.startedAt).getTime():0;e.push({kind:"session",ref:t,t:isFinite(n)?n:0})}),r.claudeHistoryLoaded&&mr().forEach(function(t){var n=t.timestamp?new Date(t.timestamp).getTime():Number(t.mtimeMs)||0;isFinite(n)||(n=Number(t.mtimeMs)||0),e.push({kind:"history",ref:t,t:n})}),r.codexHistoryLoaded&&ya().forEach(function(t){var n=t.timestamp?new Date(t.timestamp).getTime():Number(t.mtimeMs)||0;e.push({kind:"codex",ref:t,t:isFinite(n)?n:0})}),e.sort(function(t,n){return n.t-t.t}),e}function Fc(){var e=[];e.push(Io());var t=So();return t.length===0?Io()+'<div class="empty-state"><strong>\u8FD8\u6CA1\u6709\u4F1A\u8BDD\u8BB0\u5F55</strong><br>\u70B9\u51FB\u4E0A\u65B9\u300C\u65B0\u5BF9\u8BDD\u300D\u5F00\u59CB\u4F60\u7684\u7B2C\u4E00\u6B21\u5BF9\u8BDD\u3002</div>':(e.push(Bc(t)),e.join(""))}function wc(){return!!r.sidebarPinned&&!!r.sidebarCollapsed}function Cc(){var e=So(),t=e.map(function(i,a){var u=a+1;if(i.kind==="session"){var o=i.ref,s=o.id===r.selectedId?" active":"",l=o.title||o.description||o.summary||o.command||"\u4F1A\u8BDD "+u;return'<button class="sidebar-collapsed-tile'+s+'" type="button" data-collapsed-session-id="'+p(o.id)+'" title="'+p(l)+'">'+u+"</button>"}var d=i.ref,f=d.firstUserMessage||"(\u7A7A\u4F1A\u8BDD)",c=f+" \xB7 "+Ho(d.timestamp);return'<button class="sidebar-collapsed-tile" type="button" data-collapsed-history-id="'+p(d.claudeSessionId)+'" data-provider="'+p(i.kind==="codex"?"codex":"claude")+'" data-cwd="'+p(d.cwd||"")+'" title="'+p(c)+'">'+u+"</button>"}).join(""),n='<button class="sidebar-collapsed-tile add" type="button" data-collapsed-new-session="1" title="\u65B0\u5EFA\u4F1A\u8BDD" aria-label="\u65B0\u5EFA\u4F1A\u8BDD"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg></button>';return'<div class="sidebar-collapsed-tiles">'+t+n+"</div>"}function ha(){return wc()?Cc():Fc()}function Io(){if(!r.sessionsManageMode)return'<div class="session-manage-bar"><span class="sidebar-intro">\u5168\u90E8\u4F1A\u8BDD</span><button class="btn btn-ghost btn-xs session-manage-toggle" data-action="toggle-manage-mode" type="button"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M9 11l3 3L22 4"/><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"/></svg><span>\u7BA1\u7406</span></button></div>';var e=To().length,t=Lo().length,n=Mo().length,i=e+t+n,a=i>0,u=kc(),o=u>0&&i>=u,s=o?"\u53D6\u6D88\u5168\u9009":"\u5168\u9009",l=o?"clear-selection":"select-all-visible",d=u===0?" disabled":"",f='<button class="session-manage-exit" data-action="toggle-manage-mode" type="button" aria-label="\u9000\u51FA\u7BA1\u7406\u6A21\u5F0F" title="\u9000\u51FA\u7BA1\u7406\u6A21\u5F0F"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" aria-hidden="true"><line x1="6" y1="6" x2="18" y2="18"/><line x1="18" y1="6" x2="6" y2="18"/></svg></button>',c=a?'<span class="session-manage-count">'+i+'</span><span class="session-manage-summary-label">\u5DF2\u9009\u62E9</span>':'<span class="session-manage-summary-label muted">\u9009\u62E9\u8981\u7BA1\u7406\u7684\u9879\u76EE</span>';return'<div class="session-manage-bar active">'+f+'<div class="session-manage-summary">'+c+'</div><div class="session-manage-actions"><button class="btn btn-ghost btn-xs" data-action="'+l+'" type="button"'+d+">"+s+'</button><button class="btn btn-danger btn-xs" data-action="delete-selected" type="button"'+(a?"":" disabled")+">\u5220\u9664"+(a?" "+i:"")+"</button></div></div>"}function Bc(e){var t='<section class="session-group">';return t+=e.map(function(n){return n.kind==="session"?vc(n.ref,"sessions"):Ic(n.ref,n.kind)}).join(""),t+="</section>",t}function mr(){var e=new Set;return r.sessions.forEach(function(t){t.claudeSessionId&&e.add(t.claudeSessionId)}),r.claudeHistory.filter(function(t){return t.hasConversation&&!t.managedByWand&&!e.has(t.claudeSessionId)})}function To(){return Object.keys(r.selectedSessionIds).filter(function(e){return!!r.selectedSessionIds[e]})}function Lo(){return Object.keys(r.selectedClaudeHistoryIds).filter(function(e){return!!r.selectedClaudeHistoryIds[e]})}function Mo(){return Object.keys(r.selectedCodexHistoryIds).filter(function(e){return!!r.selectedCodexHistoryIds[e]})}function si(){r.selectedSessionIds={},r.selectedClaudeHistoryIds={},r.selectedCodexHistoryIds={}}function Dc(e){r.sessionsManageMode=typeof e=="boolean"?e:!r.sessionsManageMode,r.sessionsManageMode&&(!r.claudeHistoryLoaded||!r.codexHistoryLoaded)&&li().then(pe),r.sessionsManageMode||(si(),Mr()),pe()}function qo(){return r.sessions.slice()}function kc(){return qo().length+mr().length+ya().length}function Po(){if(!r.claudeHistoryLoaded||!r.codexHistoryLoaded){li().then(Po);return}var e={};qo().forEach(function(i){e[i.id]=!0});var t={};mr().forEach(function(i){t[i.claudeSessionId]=!0});var n={};ya().forEach(function(i){n[i.claudeSessionId]=!0}),r.selectedSessionIds=e,r.selectedClaudeHistoryIds=t,r.selectedCodexHistoryIds=n,pe()}function Ac(){si(),pe()}function gr(e,t){if(!(!r.sessionsManageMode||!t)){var n=e==="history"?r.selectedClaudeHistoryIds:e==="codex"?r.selectedCodexHistoryIds:r.selectedSessionIds;n[t]?delete n[t]:n[t]=!0,pe()}}function Oo(e,t,n){if(!r.sessionsManageMode)return"";var i=e==="history"?!!r.selectedClaudeHistoryIds[t]:e==="codex"?!!r.selectedCodexHistoryIds[t]:!!r.selectedSessionIds[t];return'<label class="session-manage-check"><input type="checkbox" data-action="toggle-selection" data-kind="'+p(e)+'" data-id="'+p(t)+'"'+(i?" checked":"")+' aria-label="'+p(n)+'"><span></span></label>'}function An(e,t){return Ma(e,Object.assign({type:"danger",danger:!0,okLabel:"\u5220\u9664"},t||{}))}function xc(){var e=To(),t=Lo(),n=Mo(),i=e.length+t.length+n.length;i&&An("\u786E\u8BA4\u5220\u9664\u6240\u9009 "+i+" \u9879\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002",{title:"\u5220\u9664\u6240\u9009 "+i+" \u9879"}).then(function(a){if(a){var u=[];e.length>0&&u.push(fetch("/api/sessions/batch-delete",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({sessionIds:e})}).then(function(o){return o.json()})),t.length>0&&u.push(fetch("/api/claude-history/batch-delete",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({claudeSessionIds:t})}).then(function(o){return o.json()})),n.length>0&&u.push(fetch("/api/codex-history/batch-delete",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({claudeSessionIds:n})}).then(function(o){return o.json()})),Promise.all(u).then(function(){return e.indexOf(r.selectedId)!==-1&&(r.selectedId=null,he()),r.claudeHistory=r.claudeHistory.filter(function(o){return t.indexOf(o.claudeSessionId)===-1}),r.codexHistory=r.codexHistory.filter(function(o){return n.indexOf(o.claudeSessionId)===-1}),si(),Ot()}).catch(function(){var o=document.getElementById("action-error");He(o,"\u65E0\u6CD5\u6279\u91CF\u5220\u9664\u6240\u9009\u9879\u76EE\u3002")})}})}function Sc(){var e=Date.now()-864e5,t=mr().filter(function(n){return!n.timestamp||new Date(n.timestamp).getTime()<=e});if(t.length)return An("\u786E\u8BA4\u6E05\u7A7A\u5F53\u524D\u663E\u793A\u7684 "+t.length+" \u6761 Claude \u5386\u53F2\u5417\uFF1F",{title:"\u6E05\u7A7A Claude \u5386\u53F2",okLabel:"\u6E05\u7A7A"}).then(function(n){if(n){var i=t.map(function(a){return a.claudeSessionId});return fetch("/api/claude-history/batch-delete",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({claudeSessionIds:i})}).then(function(a){return a.json()}).then(function(a){if(a&&a.error)throw new Error(a.error);r.claudeHistory=r.claudeHistory.filter(function(u){return i.indexOf(u.claudeSessionId)===-1}),si(),pe()}).catch(function(){var a=document.getElementById("action-error");He(a,"\u65E0\u6CD5\u6E05\u7A7A\u5386\u53F2\u4F1A\u8BDD\u3002")})}})}function Ic(e,t){var n=t==="codex",i=n?"resume-codex-history":"resume-history",a=n?"delete-codex-history":"delete-history",u=n?r.selectedCodexHistoryIds:r.selectedClaudeHistoryIds,o=e.claudeSessionId.slice(0,8),s=e.firstUserMessage||"(\u7A7A\u4F1A\u8BDD)",l=Ho(e.timestamp),d=Oo(t,e.claudeSessionId,"\u9009\u62E9\u4F1A\u8BDD "+s),f=r.sessionsManageMode?"":'<button class="session-action-btn delete-btn" data-action="'+a+'" data-claude-session-id="'+e.claudeSessionId+'" type="button" aria-label="\u5220\u9664\u4F1A\u8BDD" title="\u5220\u9664\u4F1A\u8BDD"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"/><path d="M8 6V4a2 2 0 012-2h4a2 2 0 012 2v2"/><path d="M19 6l-1 14a2 2 0 01-2 2H8a2 2 0 01-2-2L5 6"/></svg></button>',c=r.sessionsManageMode?"":'<button class="session-action-btn" data-action="'+i+'" data-claude-session-id="'+e.claudeSessionId+'" data-cwd="'+p(e.cwd)+'" type="button" aria-label="\u6062\u590D\u4F1A\u8BDD" title="'+(n?"\u6062\u590D\u6B64 Codex \u4F1A\u8BDD":"\u6062\u590D\u6B64 Claude \u4F1A\u8BDD")+'"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 4v6h6"/><path d="M3.51 15a9 9 0 105.64-11.36L3 10"/></svg></button>';return'<div class="session-item'+(r.sessionsManageMode&&u[e.claudeSessionId]?" selected":"")+'" data-claude-history-id="'+e.claudeSessionId+'" data-provider="'+(n?"codex":"claude")+'" data-cwd="'+p(e.cwd)+'" role="button" tabindex="0"><div class="session-item-content"><div class="session-item-row">'+d+'<div class="session-main"><div class="session-command claude-history-preview">'+p(s)+'</div><div class="session-meta"><span class="session-id" title="'+p(e.claudeSessionId)+'">'+p(o)+"</span><span>"+p(l)+'</span></div></div><span class="session-actions">'+c+f+"</span></div></div></div>"}function Ho(e){if(!e)return"";try{var t=new Date(e),n=new Date,i=n-t,a=Math.floor(i/6e4);if(a<1)return"\u521A\u521A";if(a<60)return a+" \u5206\u949F\u524D";var u=Math.floor(a/60);if(u<24)return u+" \u5C0F\u65F6\u524D";var o=Math.floor(u/24);return o<30?o+" \u5929\u524D":t.toLocaleDateString()}catch{return""}}function _o(){return fetch("/api/claude-history",{credentials:"same-origin"}).then(function(e){return e.ok?e.json():[]}).then(function(e){r.claudeHistory=e||[],r.claudeHistoryLoaded=!0,pe()}).catch(function(){r.claudeHistoryLoaded=!0,r.claudeHistory=[],pe()})}var hr=null;function li(){var e=Tc();!r.claudeHistoryLoaded&&!hr&&(hr=_o().then(function(){hr=null},function(){hr=null}));var t=hr||Promise.resolve();return Promise.all([t,e]).then(function(){})}function No(){return fetch("/api/codex-history",{credentials:"same-origin"}).then(function(e){return e.ok?e.json():[]}).then(function(e){r.codexHistory=e||[],r.codexHistoryLoaded=!0,pe()}).catch(function(){r.codexHistoryLoaded=!0,r.codexHistory=[],pe()})}var Vn=null;function Tc(){return r.codexHistoryLoaded?Promise.resolve():Vn||(Vn=No().then(function(){Vn=null},function(){Vn=null}),Vn)}function ya(){var e=new Set;return r.sessions.forEach(function(t){t.claudeSessionId&&e.add(t.claudeSessionId)}),r.codexHistory.filter(function(t){return t.hasConversation&&!t.managedByWand&&!e.has(t.claudeSessionId)})}function jo(){Ko(),!di()&&(r.pollTimer=setInterval(Ot,1600))}setInterval(function(){var e=document.querySelectorAll(".session-time");e.length>0&&Bu()},3e4);function ba(){r.wsReconnectTimer&&(clearTimeout(r.wsReconnectTimer),r.wsReconnectTimer=null)}var Lc=1e4,Mc=4e4;function qc(){Ro(),r.wsHeartbeatCheckTimer=setInterval(Wo,Lc)}function Ro(){r.wsHeartbeatCheckTimer&&(clearInterval(r.wsHeartbeatCheckTimer),r.wsHeartbeatCheckTimer=null)}function Wo(){if(!(!r.ws||r.ws.readyState!==WebSocket.OPEN)&&r.lastWsMessageAt){var e=Date.now()-r.lastWsMessageAt;e>Mc&&Ea("heartbeat-stale-"+Math.round(e/1e3)+"s")}}function Ea(e){if(ba(),r.ws){var t=r.ws;try{t.onclose=null}catch{}try{t.onerror=null}catch{}try{t.onmessage=null}catch{}try{t.close()}catch{}r.ws=null}r.wsConnected=!1,r.wsReconnectAttempts=0,di(e)}function zo(){if(!r.wsReconnectTimer&&!document.hidden){var e=r.wsReconnectAttempts||0,t=[500,1e3,2e3,4e3,8e3],n=t[e<t.length?e:t.length-1];r.wsReconnectAttempts=e+1,r.wsReconnectTimer=setTimeout(function(){r.wsReconnectTimer=null,r.config&&!r.ws&&!document.hidden&&di("backoff")},n)}}function di(e){if(!window.WebSocket)return!1;if(r.ws){try{r.ws.close()}catch{}r.ws=null}var t=window.location.protocol==="https:"?"wss:":"ws:",n=t+"//"+window.location.host+"/ws";try{var i=new WebSocket(n);return i.onopen=function(){r.ws=i,r.wsConnected=!0,r.lastWsMessageAt=Date.now(),r.wsReconnectAttempts=0,ba(),r.lastSeqBySession={},qc(),Pn(r.selectedId),av(),Cr("ws-reconnect")},i.onmessage=function(a){r.lastWsMessageAt=Date.now();try{var u=JSON.parse(a.data);if(u&&u.type==="ping"){if(r.ws&&r.ws.readyState===WebSocket.OPEN)try{r.ws.send(JSON.stringify({type:"pong",t:u.t}))}catch{}return}if(u&&u.type==="resync_required"&&u.sessionId){if(r.ws&&r.ws.readyState===WebSocket.OPEN)try{r.ws.send(JSON.stringify({type:"resync",sessionId:u.sessionId}))}catch{}r.lastSeqBySession||(r.lastSeqBySession={}),r.lastSeqBySession[u.sessionId]=0;return}if(u&&(u.type==="init"||u.type==="output")&&u.sessionId&&typeof u.seq=="number"){r.lastSeqBySession||(r.lastSeqBySession={});var o=r.lastSeqBySession[u.sessionId]||0;if(u.type==="init")r.lastSeqBySession[u.sessionId]=u.seq;else if(u.seq===o+1)r.lastSeqBySession[u.sessionId]=u.seq;else if(u.seq>o+1&&o>0){if(r.ws&&r.ws.readyState===WebSocket.OPEN)try{r.ws.send(JSON.stringify({type:"resync",sessionId:u.sessionId}))}catch{}r.lastSeqBySession[u.sessionId]=0;return}else{if(u.seq<o)return;r.lastSeqBySession[u.sessionId]=u.seq}}Pc(u)}catch{}},i.onclose=function(){r.ws=null,r.wsConnected=!1,Ro(),zo()},i.onerror=function(){i.close()},!0}catch{return zo(),!1}}function Pc(e){switch(e.type){case"output":if(e.data&&e.sessionId&&Object.prototype.hasOwnProperty.call(e.data,"isResponding")&&(r._lastIsResponding||(r._lastIsResponding={}),r._lastIsResponding[e.sessionId]=!!e.data.isResponding),e.data&&e.sessionId){var t=!!e.data.incremental,n={id:e.sessionId},i=!1;if(!t&&e.data.output!==void 0&&(n.output=e.data.output),Object.prototype.hasOwnProperty.call(e.data,"permissionBlocked")&&(n.permissionBlocked=!!e.data.permissionBlocked),Object.prototype.hasOwnProperty.call(e.data,"queuedMessages")&&(n.queuedMessages=e.data.queuedMessages||[],r.queueEpoch++),e.data.structuredState&&(n.structuredState=e.data.structuredState),e.data.sessionKind&&(n.sessionKind=e.data.sessionKind),Object.prototype.hasOwnProperty.call(e.data,"title")&&(n.title=e.data.title,i=!0),Object.prototype.hasOwnProperty.call(e.data,"description")&&(n.description=e.data.description,i=!0),Object.prototype.hasOwnProperty.call(e.data,"summary")&&(n.summary=e.data.summary),e.data.messages)n.messages=e.data.messages,typeof e.data.messageOffset=="number"&&(n.messageOffset=e.data.messageOffset),typeof e.data.messageTotal=="number"&&(n.messageTotal=e.data.messageTotal);else if(t&&e.data.lastMessage){var a=r.sessions.find(function(O){return O.id===e.sessionId});if(a){var u=Array.isArray(a.messages)?a.messages.slice():[],o=e.data.messageCount||0,s=typeof a.messageOffset=="number"?a.messageOffset:0,l=u.length>0?u[u.length-1]:null,d=e.data.lastMessage;l&&d.role&&l.role===d.role?u[u.length-1]=Sp(l,d):s+u.length<o&&u.push(d),n.messages=u,o>0&&(n.messageTotal=o)}}var f=t&&e.data.chunk&&!e.data.lastMessage&&!n.messages&&n.output===void 0&&!e.data.structuredState&&!e.data.sessionKind;if(f){if(e.data.permissionBlocked!==void 0){var c=r.sessions.find(function(O){return O.id===e.sessionId});c&&!!c.permissionBlocked!=!!e.data.permissionBlocked&&(X(n),e.sessionId===r.selectedId&&Yt())}}else if((n.output!==void 0||n.messages||t||e.data.permissionBlocked!==void 0||n.title||n.description)&&(X(n),i&&Bu(),e.sessionId===r.selectedId)){var v=r.sessions.find(function(O){return O.id===e.sessionId})||n;r.currentMessages=ze(v,Xe(v,v.output,!1)),Yt(),v.sessionKind==="structured"||e.data.sessionKind==="structured"?yr():Fa()}}e.sessionId===r.selectedId&&r.terminal&&e.data&&(e.data.chunk&&Np(e.sessionId)?(r.lastChunkAt=Date.now(),r.terminalLiveStreamSessions[e.sessionId]=!0,Jn(r.terminal,e.data.chunk),r.terminalSessionId=e.sessionId,e.data.output?(r.terminalOutput=ls(fu(e.data.output)),r.terminalOutputMarker=0):r.terminalOutput=ls((r.terminalOutput||"")+fu(e.data.chunk)),pt("output"),ot()):!e.data.incremental&&Object.prototype.hasOwnProperty.call(e.data,"output")&&gi(e.sessionId,e.data.output||"",{mode:"append"}));break;case"started":mn();break;case"ended":{var h=e.data&&e.data.status?e.data.status:"exited",g=e.data&&Object.prototype.hasOwnProperty.call(e.data,"permissionBlocked")?!!e.data.permissionBlocked:!1,m={id:e.sessionId,status:h,permissionBlocked:g};e.data&&e.data.messages&&(m.messages=e.data.messages,typeof e.data.messageOffset=="number"&&(m.messageOffset=e.data.messageOffset),typeof e.data.messageTotal=="number"&&(m.messageTotal=e.data.messageTotal)),e.data&&e.data.structuredState&&(m.structuredState=e.data.structuredState),e.data&&e.data.queuedMessages&&(m.queuedMessages=e.data.queuedMessages),X(m),e.sessionId===r.selectedId&&(Ln("Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C"),Fa(!0));var y=r.sessions.find(function(O){return O.id===e.sessionId}),C=e.data&&e.data.exitCode,E=C!=null&&C!==0,B=y&&y.summary||"",D=y?pc(y):"",F=E?"\u4EFB\u52A1\u5F02\u5E38\u7ED3\u675F":"\u4EFB\u52A1\u5DF2\u5B8C\u6210",I="";B?(I=B,D&&!E&&(I+=`
10
+ `+D)):I=y&&y.command||e.sessionId,Gn(E?"error":"success"),Qf(e.sessionId,F,I),gs(e.sessionId),Oa(),(e.sessionId!==r.selectedId||document.hidden)&&qa({title:F,body:I,type:E?"warning":"success",icon:E?"!":"\u2713",duration:6e3,actionLabel:"\u67E5\u770B",action:function(){Ht(e.sessionId)}}),r.messageQueue=[],r.pendingMessages=[];var L=r.sessions.find(function(O){return O.id===e.sessionId}),H=e.sessionId===r.selectedId?r.sessions.find(function(O){return O.id===r.selectedId}):null,U=!!(L&&L.sessionKind==="structured"||H&&H.sessionKind==="structured");U&&e.sessionId===r.selectedId?(Ts(),Yu(e.sessionId)):U||(r.structuredInputQueue=[],Yu(r.selectedId),dn()),e.sessionId===r.selectedId&&(U||Mn(!1),r.currentTask=null,Yt()),e.sessionId===r.selectedId&&jr(),mn().then(function(){wi()}),e.sessionId===r.selectedId&&(U||gn(e.sessionId));break}case"init":if(e.sessionId===r.selectedId&&e.data){r.chatRenderTimer&&(clearTimeout(r.chatRenderTimer),r.chatRenderTimer=null),X(e.data);var x=r.sessions.find(function(O){return O.id===e.sessionId});r.currentMessages=ze(x||e.data,Xe(x||e.data,e.data.output,!1)),yr(!0),Yt(),Vo();var k=e.data.output||"",T=r.terminalSessionId===e.sessionId,M=r.terminalOutput||"",Y=T&&M.length>0&&k.length>=M.length&&k.startsWith(M);Nc(k,e.sessionId,Y?"append":"replace"),Cr("init")}break;case"usage":break;case"task":e.sessionId===r.selectedId&&(r.currentTask=e.data||null,Yt()),Yf(e.sessionId,e.data||null),Ha(e.sessionId),Bu();break;case"status":if(e.sessionId&&e.data){var z={id:e.sessionId};if(Object.prototype.hasOwnProperty.call(e.data,"status")&&(z.status=e.data.status),Object.prototype.hasOwnProperty.call(e.data,"exitCode")&&(z.exitCode=e.data.exitCode),e.data.structuredState)z.structuredState=e.data.structuredState;else if(Object.prototype.hasOwnProperty.call(e.data,"status")){var a=r.sessions.find(function(N){return N.id===e.sessionId});a&&a.sessionKind==="structured"&&(z.structuredState=Object.assign({},a.structuredState||{},{inFlight:e.data.status==="running"}))}if(Object.prototype.hasOwnProperty.call(e.data,"queuedMessages")&&(z.queuedMessages=e.data.queuedMessages||[],r.queueEpoch++),Object.prototype.hasOwnProperty.call(e.data,"permissionBlocked")&&(z.permissionBlocked=!!e.data.permissionBlocked),e.data.permissionRequest){z.pendingEscalation={scope:e.data.permissionRequest.scope,target:e.data.permissionRequest.target,reason:e.data.permissionRequest.prompt};var Q=r.sessions.find(function(O){return O.id===e.sessionId}),le=Q&&(Q.summary||Q.command)||e.sessionId,ee=e.data.permissionRequest.prompt||"\u9700\u8981\u6743\u9650\u5BA1\u6279",Z=e.data.permissionRequest.target,q=le;Z?q+=`
11
11
  `+ee+" \xB7 "+Z:q+=`
12
- `+ee,Gn("medium"),Jf(e.sessionId,q),e.sessionId!==r.selectedId&&La({title:"\u9700\u8981\u4F60\u7684\u6388\u6743",body:q,type:"warning",icon:"!",duration:0,actionLabel:"\u53BB\u5904\u7406",action:function(){Ht(e.sessionId)}})}e.data.permissionBlocked===!1&&(z.pendingEscalation=null),e.data.approvalStats&&(z.approvalStats=e.data.approvalStats),X(z),Oa(e.sessionId),qa(),e.sessionId===r.selectedId&&(Yt(),e.data.approvalStats&&Wo(),z.structuredState&&(z.structuredState.inFlight||(Ln("Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C"),Ss()),ba()))}break;case"notification":e.data&&(e.data.kind==="update"?fs(e.data.current||"-",e.data.latest||"-"):e.data.kind==="auto-update-start"?ep(e.data.current||"-",e.data.latest||"-"):(e.data.kind==="auto-update-restart"||e.data.kind==="restart")&&ln());break}}function Yt(){var e=document.getElementById("current-task"),t=document.getElementById("permission-actions"),n=document.getElementById("permission-actions-label");if(e){var i=r.sessions.find(function(v){return v.id===r.selectedId});i&&i.provider==="codex"&&(t&&t.classList.add("hidden"),e.classList.remove("permission-blocked"));var a=i&&i.pendingEscalation?i.pendingEscalation:null,u=i&&i.provider!=="codex"?a||i.permissionBlocked:!1;if(u){var o=i&&i.autoApprovePermissions;if(n)if(o)n.textContent="\u81EA\u52A8\u6279\u51C6\u4E2D...";else if(a){var s=a.reason||"\u7B49\u5F85\u6388\u6743",l=a.target?" \xB7 "+a.target:"";n.textContent=s+l}else n.textContent="\u7B49\u5F85\u6388\u6743";if(t){t.classList.remove("hidden");var d=document.getElementById("approve-permission-btn"),f=document.getElementById("deny-permission-btn");d&&d.classList.toggle("hidden",!!o),f&&f.classList.toggle("hidden",!!o)}e.textContent="",e.classList.add("hidden"),e.classList.remove("permission-blocked");return}e.classList.remove("permission-blocked"),t&&t.classList.add("hidden");var c=r.currentTask;c&&c.title?(e.textContent=c.title,e.classList.remove("hidden")):(e.textContent="",e.classList.add("hidden"))}}function Wo(){var e=document.getElementById("approval-stats");if(e){var t=r.sessions.find(function(a){return a.id===r.selectedId}),n=t&&t.approvalStats;if(!n||n.total===0){e.className="approval-stats hidden",e.innerHTML="";return}e.className="approval-stats",e.innerHTML='<span class="approval-stats-divider"></span><span class="approval-stats-badge" id="approval-stats-badge" title="\u672C\u6B21\u4F1A\u8BDD\u81EA\u52A8\u6279\u51C6\u7EDF\u8BA1"><svg class="approval-stats-icon" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg><span class="approval-stats-total">'+n.total+'</span></span><span class="approval-stats-popup" id="approval-stats-popup"><span class="approval-stats-popup-title">\u81EA\u52A8\u6279\u51C6\u7EDF\u8BA1</span>'+(n.command>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+V("terminal",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u547D\u4EE4\u6267\u884C</span><span class="approval-stats-row-count">'+n.command+"</span></span>":"")+(n.file>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+V("edit",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u6587\u4EF6\u5199\u5165</span><span class="approval-stats-row-count">'+n.file+"</span></span>":"")+(n.tool>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+V("wrench",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u5176\u4ED6\u5DE5\u5177</span><span class="approval-stats-row-count">'+n.tool+"</span></span>":"")+'<span class="approval-stats-row approval-stats-row-total"><span class="approval-stats-row-icon">'+V("sigma",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u5408\u8BA1</span><span class="approval-stats-row-count">'+n.total+"</span></span></span>";var i=e.querySelector(".approval-stats-badge");i&&(i.classList.remove("approval-stats-pulse"),i.offsetWidth,i.classList.add("approval-stats-pulse"))}}function qc(){if(Gn("light"),!!r.selectedId){var e=document.getElementById("approve-permission-btn"),t=document.getElementById("deny-permission-btn");e&&(e.disabled=!0),t&&(t.disabled=!0),fetch("/api/sessions/"+encodeURIComponent(r.selectedId)+"/approve-permission",{method:"POST",credentials:"same-origin"}).then(function(n){return n.json()}).then(function(n){if(n&&n.error){A(n.error,"error");return}X(n),Yt()}).catch(function(n){A(n&&n.message||"\u65E0\u6CD5\u6279\u51C6\u6388\u6743\u3002","error")}).finally(function(){e&&(e.disabled=!1),t&&(t.disabled=!1)})}}function Oc(){if(Gn("light"),!!r.selectedId){var e=document.getElementById("approve-permission-btn"),t=document.getElementById("deny-permission-btn");e&&(e.disabled=!0),t&&(t.disabled=!0),fetch("/api/sessions/"+encodeURIComponent(r.selectedId)+"/deny-permission",{method:"POST",credentials:"same-origin"}).then(function(n){return n.json()}).then(function(n){if(n&&n.error){A(n.error,"error");return}X(n),Yt()}).catch(function(n){A(n&&n.message||"\u65E0\u6CD5\u62D2\u7EDD\u6388\u6743\u3002","error")}).finally(function(){e&&(e.disabled=!1),t&&(t.disabled=!1)})}}function Pc(){if(r.selectedId){var e=r.sessions.find(function(n){return n.id===r.selectedId});if(e&&e.provider==="codex"){A("Codex \u4F1A\u8BDD\u56FA\u5B9A\u4EE5 full-access PTY \u542F\u52A8\uFF0C\u4E0D\u652F\u6301\u5207\u6362\u81EA\u52A8\u6279\u51C6\u3002","info");return}var t=document.getElementById("auto-approve-toggle");t&&(t.style.opacity="0.5"),fetch("/api/sessions/"+encodeURIComponent(r.selectedId)+"/toggle-auto-approve",{method:"POST",credentials:"same-origin"}).then(function(n){return n.json()}).then(function(n){if(n&&n.error){A(n.error,"error");return}X(n),zo();var i=n.autoApprovePermissions;A(i?"\u81EA\u52A8\u6279\u51C6\u5DF2\u5F00\u542F":"\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED","info")}).catch(function(n){A(n&&n.message||"\u65E0\u6CD5\u5207\u6362\u81EA\u52A8\u6279\u51C6\u3002","error")}).finally(function(){t&&(t.style.opacity="")})}}function zo(){var e=document.getElementById("auto-approve-toggle"),t=r.sessions.find(function(a){return a.id===r.selectedId});if(Ml(t)){e&&e.parentNode&&e.parentNode.removeChild(e);return}if(e){var n="composer-pill composer-pill-chip auto-approve-indicator",i=t&&t.autoApprovePermissions;i?(e.className=n+" active",e.title="\u81EA\u52A8\u6279\u51C6\u5DF2\u542F\u7528 \u2014 \u70B9\u51FB\u5173\u95ED",e.setAttribute("aria-pressed","true"),e.setAttribute("aria-label","\u81EA\u52A8\u6279\u51C6\u5DF2\u542F\u7528\uFF0C\u70B9\u51FB\u5173\u95ED"),e.innerHTML=V("shieldCheck",{size:12,strokeWidth:1.7,cls:"composer-pill-icon"})+'<span class="composer-pill-label">\u81EA\u52A8</span>'):(e.className=n,e.title="\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED \u2014 \u70B9\u51FB\u5F00\u542F",e.setAttribute("aria-pressed","false"),e.setAttribute("aria-label","\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED\uFF0C\u70B9\u51FB\u5F00\u542F"),e.innerHTML=V("shield",{size:12,strokeWidth:1.7,cls:"composer-pill-icon"})+'<span class="composer-pill-label">\u624B\u52A8</span>')}}function Hc(e,t,n){return r.terminal?gi(t||r.selectedId,e,{mode:n||"append"}):!1}function Vo(){r.pollTimer&&(clearInterval(r.pollTimer),r.pollTimer=null)}function Jg(e){r.currentView=e||"terminal",r.currentView!=="terminal"&&(Mn(!1),Hs()),Ki(),Ua();var t=Bt();t&&(r.currentMessages=ze(t,Ze(t,t.output,!0))),ot(),r.currentView==="terminal"&&(qt(!0),r.terminal&&r.terminal.remeasure&&requestAnimationFrame(function(){r.terminal&&r.terminal.remeasure()}))}function hr(e){r.renderPending&&!e||(r.renderPending=!0,e?(Ti(!0),r.renderPending=!1):requestAnimationFrame(function(){Ti(!1),r.renderPending=!1}))}r.chatRenderTimer=null;function ba(e){if(!(r.chatRenderTimer&&!e)){if(r.chatRenderTimer&&clearTimeout(r.chatRenderTimer),e){r.chatRenderTimer=null,hr();return}var t=r.sessions.find(function(a){return a.id===r.selectedId}),n=t&&t.status==="running"&&t.sessionKind!=="structured",i=n?as:us;r.chatRenderTimer=setTimeout(function(){r.chatRenderTimer=null;var a=r.sessions.find(function(u){return u.id===r.selectedId});a&&(r.currentMessages=ze(a,Ze(a,a.output,!0))),hr()},i)}}var Ea=0,ci=0,Uo=0,yr=0;function Fa(){return window.__wandIosNative===!0}function Ko(e){Uo=Math.max(Uo,Date.now()+(e||1800))}function Jo(e,t){setTimeout(function(){var n=document.activeElement;fi(n)&&n!==t||Ko(e)},30)}function _c(e){return Math.max(window.innerHeight||0,e&&e.height||0,document.documentElement&&document.documentElement.clientHeight||0,document.body&&document.body.clientHeight||0)}function Nc(e){var t=document.documentElement,n=Math.max(window.innerWidth||0,e&&e.width||0,t&&t.clientWidth||0),i=_c(e);return!Ea||Math.abs(n-Ea)>8?(Ea=n,ci=i):i>ci&&(ci=i),Math.max(1,Math.round(ci||i||1))}function jc(e,t,n,i){return e||!Fa()?!1:t>0||i>n+1}function Un(e){var t=window.visualViewport;if(t){var n=document.documentElement;if(n.classList.toggle("is-keyboard-open",!!e),window.__wandImeNative){n.style.setProperty("--app-viewport-top","0px"),n.style.setProperty("--app-viewport-height",Math.round(t.height)+"px");return}var i=Nc(t),a=Math.max(0,Math.round(t.offsetTop||0)),u=Math.max(1,Math.round(t.height));(!e&&Fa()||jc(e,a,u,i))&&(a=0,u=Math.max(u,i)),n.style.setProperty("--app-viewport-top",a+"px"),n.style.setProperty("--app-viewport-height",u+"px"),(e||(window.scrollY||0)>0)&&$a()}}function fi(e){if(!e)return!1;var t=e.tagName;if(t==="TEXTAREA"||t==="SELECT")return!0;if(t==="INPUT"){var n=(e.getAttribute("type")||"text").toLowerCase();return!/^(button|checkbox|color|file|hidden|image|radio|range|reset|submit)$/i.test(n)}return!!e.isContentEditable}function Rc(){if(!("visualViewport"in window)||window.__wandViewportHandlersBound)return;window.__wandViewportHandlersBound=!0;var e=window.visualViewport,t=e.height,n=!1,i=Math.max(window.innerWidth||0,e.width||0),a=Math.max(window.innerHeight||0,e.height||0),u=[];function o(){return Math.max(window.innerHeight||0,e.height||0)}function s(){var g=Math.max(window.innerWidth||0,e.width||0),m=o();if(Math.abs(g-i)>8){i=g,a=m;return}m>a&&(a=m)}function l(g,m){var y=document.activeElement,C=y===g||fi(y),E=a-e.height,B=a-(window.innerHeight||e.height||0),D=Date.now()<yr;return D?!!(C&&(E>120||B>120)):!!(m>80||C&&(E>120||B>120)||n&&(E>80||m>32))}function d(){u.forEach(function(g){clearTimeout(g)}),u=[60,180,360,620,900].map(function(g){return setTimeout(function(){Un(n)},g)})}function f(){[0,50,120,220,360,560].forEach(function(g){setTimeout(function(){c();var m=document.getElementById("input-box");m&&document.activeElement===m&&Ii(m)},g)})}function c(){if(e){var g=document.getElementById("input-box"),m=window.innerHeight-e.height-e.offsetTop;s();var y=l(g,m),C=Math.abs(e.height-t)>8;if(Un(y),y&&(!n||C)&&Fv(e,g)&&Ii(g),!n&&y){var E=r.terminalAutoFollow||ka();Qe("keyboard-open",{forceReplay:!0}),window.__wandImeNative||setTimeout(function(){Un(!0)},220),d(),E&&setTimeout(function(){r.terminal&&pt("force")},220)}if(n&&!y){var B=!!window.__wandImeNative;B||(Ko(2200),yr=Date.now()+1200,Un(!1),$a()),d(),setTimeout(function(){B||(Un(!1),$a()),Qe("keyboard-close",{forceReplay:!0}),pt("keyboard")},200)}C&&n===y&&Qe("viewport"),n=y,t=e.height}}var v=null;function h(){v!==null&&cancelAnimationFrame(v),v=requestAnimationFrame(function(){v=null,c()})}e.addEventListener("resize",h),e.addEventListener("scroll",h),document.addEventListener("visibilitychange",function(){document.visibilityState==="visible"&&(h(),setTimeout(h,240),setTimeout(h,720))}),window.addEventListener("pageshow",function(g){g&&g.persisted&&(h(),setTimeout(h,240))}),document.addEventListener("focusout",function(g){!g||!g.target||fi(g.target)&&(Jo(1600,g.target),Fa()&&(yr=Math.max(yr,Date.now()+1200)),setTimeout(h,80),setTimeout(h,420))}),document.addEventListener("focusin",function(g){!g||!g.target||!fi(g.target)||f()}),window.addEventListener("wand-ios-ime-state",function(g){var m=g&&g.detail&&g.detail.state;m==="hidden"&&(yr=Date.now()+900),f(),d()}),c()}function Wc(){var e=document.getElementById("output");if(e){var t=document.createElement("div");t.className="terminal-resize-handle",t.innerHTML="&#8942;",e.appendChild(t);var n=!1,i=0,a=0;t.addEventListener("mousedown",function(u){n=!0,i=u.clientY,a=e.getBoundingClientRect().height,document.body.style.cursor="ns-resize",document.body.style.userSelect="none",u.preventDefault()}),r.resizeMouseMove=function(u){if(n){var o=u.clientY-i,s=Math.max(200,Math.min(a+o,window.innerHeight-200));e.style.height=s+"px",e.style.flex="none",qt()}},document.addEventListener("mousemove",r.resizeMouseMove),r.resizeMouseUp=function(){n&&(n=!1,document.body.style.cursor="",document.body.style.userSelect="",qt())},document.addEventListener("mouseup",r.resizeMouseUp),t.addEventListener("touchstart",function(u){n=!0,i=u.touches[0].clientY,a=e.getBoundingClientRect().height,u.preventDefault()},{passive:!1}),r.resizeTouchMove=function(u){if(n){var o=u.touches[0].clientY-i,s=Math.max(200,Math.min(a+o,window.innerHeight-200));e.style.height=s+"px",e.style.flex="none",qt(),u.preventDefault()}},document.addEventListener("touchmove",r.resizeTouchMove,{passive:!1}),r.resizeTouchEnd=function(){n&&(n=!1,qt())},document.addEventListener("touchend",r.resizeTouchEnd)}}function Yo(){return!!Bt()}function wa(e){var t=Math.max(cn,window.innerWidth-Bi-cn),n=Math.max(cn,window.innerHeight-Bi-cn);return{right:Math.min(Math.max(cn,e.right),t),bottom:Math.min(Math.max(cn,e.bottom),n)}}function Go(){if(r.joystickBallEl){var e=wa(r.joystickPos||{right:18,bottom:96});r.joystickBallEl.style.right=e.right+"px",r.joystickBallEl.style.bottom=e.bottom+"px"}}function zc(e,t){var n=wa({right:e,bottom:t});r.joystickPos=n;try{localStorage.setItem("wand-ball-pos",JSON.stringify(n))}catch{}}function Vc(){function e(u,o,s){return'<button type="button" class="wjp-key'+(s?" "+s:"")+'" data-key="'+u+'">'+o+"</button>"}var t='<div class="wjp-dpad"><div class="wjp-dpad-row">'+e("up","\u2191","wjp-dir")+'</div><div class="wjp-dpad-row">'+e("left","\u2190","wjp-dir")+e("down","\u2193","wjp-dir")+e("right","\u2192","wjp-dir")+"</div></div>",n="",i;for(i=0;i<za.length;i++)n+=e(za[i].key,za[i].label,"");var a='<div class="wjp-header"><span class="wjp-title">'+V("paw",{size:13,strokeWidth:1.6,cls:"wjp-title-icon"})+'<span>\u9065\u63A7\u9762\u677F</span></span><button type="button" class="wjp-close" aria-label="\u5173\u95ED\u9065\u63A7\u9762\u677F">'+V("x",{size:13,strokeWidth:2})+"</button></div>"+t+'<div class="wjp-grid wjp-fnkeys">'+n+"</div>";return a}function Uc(){if(!r.joystickRootEl){var e=document.createElement("div");e.className="wand-joystick-root",["pointerdown","pointerup","touchstart","touchend","click"].forEach(function(a){e.addEventListener(a,Qo,!0)});var t=document.createElement("div");t.className="wand-joystick-backdrop",e.appendChild(t);var n=document.createElement("div");n.className="wand-joystick-panel",n.innerHTML=Vc(),n.addEventListener("click",Zc),e.appendChild(n);var i=document.createElement("div");i.className="wand-joystick-ball",i.setAttribute("role","button"),i.setAttribute("aria-label","Wand \u9065\u63A7\u9762\u677F"),i.setAttribute("title","\u70B9\u51FB\u6253\u5F00\u9065\u63A7\u9762\u677F\uFF0C\u62D6\u52A8\u53EF\u79FB\u52A8\u4F4D\u7F6E"),i.innerHTML=V("paw",{size:25,strokeWidth:1.6,cls:"wand-joystick-logo"}),e.appendChild(i),document.body.appendChild(e),r.joystickRootEl=e,r.joystickBackdropEl=t,r.joystickPanelEl=n,r.joystickBallEl=i,Go(),i.addEventListener("pointerdown",Kc),i.addEventListener("click",function(a){a.preventDefault(),a.stopPropagation()}),t.addEventListener("pointerdown",function(a){r.joystickPinnedOpen&&r.joystickGesture==null&&(a.preventDefault(),br())}),t.addEventListener("click",function(a){a.preventDefault(),a.stopPropagation()}),r.joystickResizeHandler=function(){Go()},window.addEventListener("resize",r.joystickResizeHandler),window.addEventListener("orientationchange",r.joystickResizeHandler),es()}}function Qo(){if(document.documentElement.classList.contains("is-wand-native-input")){var e=document.activeElement;if(e&&typeof e.blur=="function")try{e.blur()}catch{}setTimeout(function(){var t=document.activeElement;if(t&&typeof t.blur=="function")try{t.blur()}catch{}},0)}}function Kc(e){if(Yo()&&!((e.pointerType==="mouse"||e.pointerType==="pen")&&e.button!==0)&&r.joystickPointerId===null){Qo(),e.preventDefault(),e.stopPropagation();var t=e.pointerType==="mouse"||e.pointerType==="pen";r.joystickPointerId=e.pointerId,r.joystickPressStart={x:e.clientX,y:e.clientY,t:Date.now()},r.joystickGesture="pending";try{r.joystickBallEl.setPointerCapture(e.pointerId)}catch{}t||(r.joystickLongPressTimer=setTimeout(function(){r.joystickGesture==="pending"&&$o()},jp)),r.joystickMoveHandler=Jc,r.joystickUpHandler=Yc,document.addEventListener("pointermove",r.joystickMoveHandler),document.addEventListener("pointerup",r.joystickUpHandler),document.addEventListener("pointercancel",r.joystickUpHandler)}}function $o(){r.joystickGesture="move",r.joystickPinnedOpen&&br(),r.joystickBallEl&&r.joystickBallEl.classList.add("dragging"),r.joystickBackdropEl&&r.joystickBackdropEl.classList.add("active")}function Xo(e,t){if(r.joystickBallEl){var n=wa({right:window.innerWidth-e-Bi/2,bottom:window.innerHeight-t-Bi/2});r.joystickBallEl.style.right=n.right+"px",r.joystickBallEl.style.bottom=n.bottom+"px"}}function Jc(e){if(!(e.pointerId!==r.joystickPointerId||!r.joystickBallEl)){if(e.preventDefault(),r.joystickGesture==="move"){Xo(e.clientX,e.clientY);return}if(r.joystickGesture==="pending"){var t=e.clientX-r.joystickPressStart.x,n=e.clientY-r.joystickPressStart.y;Math.sqrt(t*t+n*n)<=Rp||(e.pointerType==="mouse"||e.pointerType==="pen"?($o(),Xo(e.clientX,e.clientY)):(r.joystickLongPressTimer&&(clearTimeout(r.joystickLongPressTimer),r.joystickLongPressTimer=null),r.joystickGesture="cancelled"))}}}function Yc(e){if(e.pointerId===r.joystickPointerId){r.joystickLongPressTimer&&(clearTimeout(r.joystickLongPressTimer),r.joystickLongPressTimer=null);var t=r.joystickGesture;if(t==="pending"){var n=e.clientX-r.joystickPressStart.x,i=e.clientY-r.joystickPressStart.y;Math.sqrt(n*n+i*i)<=Wp&&$c()}else if(t==="move"){var a=r.joystickBallEl?r.joystickBallEl.getBoundingClientRect():null;a&&zc(window.innerWidth-a.right,window.innerHeight-a.bottom)}Zo()}}function Zo(){if(r.joystickLongPressTimer&&(clearTimeout(r.joystickLongPressTimer),r.joystickLongPressTimer=null),r.joystickBallEl&&r.joystickPointerId!==null)try{r.joystickBallEl.releasePointerCapture(r.joystickPointerId)}catch{}r.joystickMoveHandler&&(document.removeEventListener("pointermove",r.joystickMoveHandler),r.joystickMoveHandler=null),r.joystickUpHandler&&(document.removeEventListener("pointerup",r.joystickUpHandler),document.removeEventListener("pointercancel",r.joystickUpHandler),r.joystickUpHandler=null),r.joystickBallEl&&r.joystickBallEl.classList.remove("dragging"),r.joystickBackdropEl&&!r.joystickPinnedOpen&&r.joystickBackdropEl.classList.remove("active"),r.joystickPointerId=null,r.joystickGesture=null,r.joystickPressStart=null}function Gc(e){if(e==="ctrl"||e==="alt"||e==="shift"){r.modifiers[e]=!r.modifiers[e],Er();return}var t=Bt();if(t&&ue(t)){(e==="ctrl_c"||e==="escape")&&Qc(t,e),ki(),Er();return}var n=_s(e,{ctrl:r.modifiers.ctrl,alt:r.modifiers.alt,shift:r.modifiers.shift});n&&Ps(n,e),ki(),Er(),Xp()}function Qc(e,t){!e||!e.id||fetch("/api/structured-sessions/"+e.id+"/messages",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({input:"",interrupt:!0,preserveQueue:!0})}).then(function(n){return n.ok?n.json():n.json().catch(function(){return{}}).then(function(i){throw new Error(i&&i.error||"\u4E2D\u65AD\u5931\u8D25 (key="+t+")")})}).then(function(n){if(n&&n.id&&(X(n),n.id===r.selectedId)){var i=r.sessions.find(function(a){return a.id===n.id})||n;r.currentMessages=ze(i,Ze(i,n.output,!1)),hr(!0),typeof rt=="function"&&rt()}}).catch(function(n){n&&n.message&&console.debug("[wand] joystick interrupt no-op:",n.message)})}function $c(){r.joystickPinnedOpen?br():Xc()}function Xc(){if(!(!r.joystickPanelEl||!r.joystickBallEl)){r.joystickPinnedOpen=!0;var e=r.joystickBallEl.getBoundingClientRect();r.joystickPanelEl.style.right=Math.max(cn,window.innerWidth-e.right)+"px",r.joystickPanelEl.style.bottom=Math.max(cn,window.innerHeight-e.top+10)+"px",r.joystickPanelEl.classList.add("active"),r.joystickBallEl.classList.add("panel-open"),r.joystickBackdropEl&&r.joystickBackdropEl.classList.add("active"),Er()}}function br(){r.joystickPinnedOpen=!1,r.joystickPanelEl&&r.joystickPanelEl.classList.remove("active"),r.joystickBallEl&&r.joystickBallEl.classList.remove("panel-open"),r.joystickBackdropEl&&r.joystickGesture==null&&r.joystickBackdropEl.classList.remove("active")}function Er(){r.joystickPanelEl&&["ctrl","alt"].forEach(function(e){var t=r.joystickPanelEl.querySelector('.wjp-mod[data-key="'+e+'"]');t&&t.classList.toggle("active",!!r.modifiers[e])})}function Zc(e){var t=e.target&&e.target.closest?e.target.closest(".wjp-close"):null;if(t){e.preventDefault(),e.stopPropagation(),br();return}var n=e.target&&e.target.closest?e.target.closest(".wjp-key"):null;if(n){e.preventDefault(),e.stopPropagation();var i=n.getAttribute("data-key");i&&Gc(i)}}function es(){var e=r.joystickRootEl;if(e){var t=Yo();e.classList.toggle("visible",t),t||((r.joystickPointerId!==null||r.joystickGesture)&&Zo(),r.joystickPinnedOpen&&br(),r.joystickBackdropEl&&r.joystickBackdropEl.classList.remove("active"))}}function ef(){r.joystickLongPressTimer&&(clearTimeout(r.joystickLongPressTimer),r.joystickLongPressTimer=null),r.joystickMoveHandler&&(document.removeEventListener("pointermove",r.joystickMoveHandler),r.joystickMoveHandler=null),r.joystickUpHandler&&(document.removeEventListener("pointerup",r.joystickUpHandler),document.removeEventListener("pointercancel",r.joystickUpHandler),r.joystickUpHandler=null),r.joystickResizeHandler&&(window.removeEventListener("resize",r.joystickResizeHandler),window.removeEventListener("orientationchange",r.joystickResizeHandler),r.joystickResizeHandler=null),r.joystickRootEl&&r.joystickRootEl.parentNode&&r.joystickRootEl.parentNode.removeChild(r.joystickRootEl),r.joystickRootEl=null,r.joystickPanelEl=null,r.joystickBackdropEl=null,r.joystickBallEl=null,r.joystickPointerId=null,r.joystickGesture=null,r.joystickPressStart=null,r.joystickPinnedOpen=!1}function tf(){var e=document.getElementById("output");if(e){var t=!Re();r.resizeHandler=function(){qt(!0);var n=!Re();t!==n&&(t=n,!n&&r.sidebarPinned&&r.sessionsDrawerOpen?(r.sessionsDrawerOpen=!1,Se("wand-sidebar-open",!1),Rr()):n&&r.sidebarPinned&&!r.sessionsDrawerOpen&&(r.sessionsDrawerOpen=!0,Se("wand-sidebar-open",!0),Rr()))},window.addEventListener("resize",r.resizeHandler),window.visualViewport&&(r.visualViewportHandler=function(){qt(!0)},window.visualViewport.addEventListener("resize",r.visualViewportHandler)),r.visibilityHandler=function(){document.hidden||Qe("visibility",{forceReplay:!0})},document.addEventListener("visibilitychange",r.visibilityHandler),r.orientationHandler=function(){Qe("orientation",{forceReplay:!0})},window.addEventListener("orientationchange",r.orientationHandler),requestAnimationFrame(function(){qt(!0)})}}function nf(){r.terminalHealthTimer||(r.terminalHealthTimer=setInterval(function(){if(!(!r.terminal||r.currentView!=="terminal"||document.hidden)){var e=r.sessions.find(function(u){return u.id===r.selectedId});if(!(!e||e.sessionKind==="structured")){Qe("health");var t=Date.now(),n=r.lastChunkAt>0&&t-r.lastChunkAt>300,i=t-r.lastTerminalResyncAt>3e4,a=r.lastChunkAt>r.lastTerminalResyncAt;i&&a&&(n||e.status!=="running")&&r.terminalOutput&&xn()}}},5e3))}function rf(){r.terminalHealthTimer&&(clearInterval(r.terminalHealthTimer),r.terminalHealthTimer=null)}function Fr(){rf(),r.resizeTimer&&(clearTimeout(r.resizeTimer),r.resizeTimer=null),r.resizeObserver&&(r.resizeObserver.disconnect(),r.resizeObserver=null),r.resizeHandler&&(window.removeEventListener("resize",r.resizeHandler),r.resizeHandler=null),r.visualViewportHandler&&window.visualViewport&&(window.visualViewport.removeEventListener("resize",r.visualViewportHandler),r.visualViewportHandler=null),r.visibilityHandler&&(document.removeEventListener("visibilitychange",r.visibilityHandler),r.visibilityHandler=null),r.orientationHandler&&(window.removeEventListener("orientationchange",r.orientationHandler),r.orientationHandler=null),[["mousemove","resizeMouseMove"],["mouseup","resizeMouseUp"],["touchmove","resizeTouchMove"],["touchend","resizeTouchEnd"]].forEach(function(a){r[a[1]]&&(document.removeEventListener(a[0],r[a[1]]),r[a[1]]=null)}),Kn();var e=document.getElementById("output");if(r.terminalViewportEl&&(r.terminalViewportScrollHandler&&r.terminalViewportEl.removeEventListener("scroll",r.terminalViewportScrollHandler),r.terminalViewportTouchHandler&&r.terminalViewportEl.removeEventListener("touchmove",r.terminalViewportTouchHandler),r.terminalViewportTouchStartHandler&&r.terminalViewportEl.removeEventListener("touchstart",r.terminalViewportTouchStartHandler)),e&&(r.terminalWheelHandler&&e.removeEventListener("wheel",r.terminalWheelHandler),r.terminalClickHandler&&e.removeEventListener("click",r.terminalClickHandler)),r.terminalViewportEl=null,r.terminalViewportScrollHandler=null,r.terminalViewportTouchHandler=null,r.terminalViewportTouchStartHandler=null,r.terminalWheelHandler=null,r.terminalClickHandler=null,r.terminalScrollbarHideTimer&&(clearTimeout(r.terminalScrollbarHideTimer),r.terminalScrollbarHideTimer=null),r.terminalScrollbarEl&&r.terminalScrollbarEl.parentNode&&r.terminalScrollbarEl.parentNode.removeChild(r.terminalScrollbarEl),r.terminalScrollbarEl=null,r.terminalScrollbarThumbEl=null,r.terminalScrollbarDragging=!1,r.terminalScrollbarRafPending=!1,r.terminal&&(r.terminal.destroy(),r.terminal=null),e)for(var t=e.querySelectorAll(".terminal-scroll-wrap"),n=0;n<t.length;n++){var i=t[n];i.parentNode===e&&e.removeChild(i)}Sa(),r.syncOutputBuffer=null,r.syncOutputDeadline=0,r.syncFramingResidue=!1,r.terminalSessionId=null,r.terminalOutput="",r.terminalOutputMarker=0,r.terminalAutoFollow=!0,r.showTerminalJumpToBottom=!1,ot(),r.softResyncTimer&&(clearTimeout(r.softResyncTimer),r.softResyncTimer=null),r._resyncChunkTailTimer&&(clearTimeout(r._resyncChunkTailTimer),r._resyncChunkTailTimer=null),r._resyncChunkLastAt=0,r._resyncStatsWindowStart=0,r._resyncStatsCount=0,r._resyncLastWarnAt=0,r._resyncInProgress=!1,r.lastResize={cols:0,rows:0},ef()}function pi(e,t){if(r.selectedId){var n=r.sessions.find(function(a){return a.id===r.selectedId});if(!(!n||n.status!=="running")&&!ue(n)){e>256&&(e=256),t>160&&(t=160);var i={cols:e,rows:t};(r.lastResize.cols!==i.cols||r.lastResize.rows!==i.rows)&&(r.lastResize=i,fetch("/api/sessions/"+r.selectedId+"/resize",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(i)}).catch(function(){}))}}}function Qe(e,t){if(!r.terminal)return!1;var n=t||{},i=n.forceReplay===!0,a=document.getElementById("output");if(!a||a.offsetWidth===0||a.offsetHeight===0)return wr(e||"fit-retry",{forceReplay:i}),!1;var u=r.terminalAutoFollow||ka(),o=r.terminal.cols,s=r.terminal.rows;return requestAnimationFrame(function(){requestAnimationFrame(function(){if(r.terminal){typeof r.terminal.remeasure=="function"&&r.terminal.remeasure(),pi(r.terminal.cols,r.terminal.rows);var l=r.terminal.cols!==o||r.terminal.rows!==s;!l&&i&&r.terminalOutput&&xn({skipFit:!0}),u&&pt("force")}})}),!0}function wr(e,t){if(!r.terminal)return;var n=t||{},i=n.forceReplay!==!1,a=0,u=8;function o(){if(r.terminal){var s=document.getElementById("output");if(s&&s.offsetHeight,s&&s.offsetWidth>0&&s.offsetHeight>0){Qe(e,{forceReplay:i});return}++a>=u||(a<=4?requestAnimationFrame(o):setTimeout(o,32))}}o()}function qt(e){r.resizeTimer&&(clearTimeout(r.resizeTimer),r.resizeTimer=null);var t=e?0:100;r.resizeTimer=setTimeout(function(){r.resizeTimer=null,requestAnimationFrame(af)},t)}function af(){if(r.terminal){var e=r.terminalAutoFollow||ka();e&&pt("force"),pi(r.terminal.cols,r.terminal.rows)}}function Gt(e){r.workingDir=e;try{localStorage.setItem("wand-working-dir",e)}catch{}uf(e)}function Ca(e){fetch("/api/recent-paths",{credentials:"same-origin"}).then(function(t){return t.json()}).then(function(t){e(t||[])}).catch(function(){e([])})}function uf(e){return fetch("/api/recent-paths",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({path:e})}).catch(function(){})}function Ba(e){var t=r.sessions.find(function(n){return n.id===e});t&&t.status!=="running"&&!ue(t)?zs(e):Ht(e),_t()}function of(e){var t=e.target;if(!(!t||!(t instanceof Element))){var n=t.closest(".sidebar-collapsed-tile");if(n&&n instanceof HTMLElement){if(n.dataset.collapsedNewSession){e.preventDefault(),e.stopPropagation(),Bu();return}if(n.dataset.collapsedSessionId){e.preventDefault(),e.stopPropagation(),Ba(n.dataset.collapsedSessionId);return}if(n.dataset.collapsedHistoryId){e.preventDefault(),e.stopPropagation();var i=n.dataset.collapsedHistoryId,a=n.dataset.cwd||"",u=n.dataset.provider==="codex"?Ai:xi;u(i,a).then(function(g){g&&g.id&&(r.selectedId=g.id,he(),r.drafts[g.id]="",mn().then(function(){Ht(g.id)}))});return}}var o=t.closest("#claude-history-toggle");if(o){e.preventDefault(),e.stopPropagation(),r.claudeHistoryExpanded=!r.claudeHistoryExpanded,r.claudeHistoryExpanded&&!r.claudeHistoryLoaded&&li(),pe();return}var s=t.closest("[data-action]");if(s&&s instanceof HTMLElement){if(e.preventDefault(),e.stopPropagation(),s.dataset.action==="toggle-manage-mode")Cc();else if(s.dataset.action==="select-all-visible")Mo();else if(s.dataset.action==="clear-selection")Dc();else if(s.dataset.action==="delete-selected")kc();else if(s.dataset.action==="toggle-selection")mr(s.dataset.kind,s.dataset.id);else if(s.dataset.action==="swipe-delete-session"&&s.dataset.sessionId)Ya(s.dataset.sessionId);else if(s.dataset.action==="delete-session"&&s.dataset.sessionId)(function(g){An("\u786E\u8BA4\u5220\u9664\u8FD9\u4E2A\u4F1A\u8BDD\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002",{title:"\u5220\u9664\u4F1A\u8BDD"}).then(function(m){m&&Ya(g)})})(s.dataset.sessionId);else if(s.dataset.action==="delete-history"&&s.dataset.claudeSessionId)(function(g,m){An("\u786E\u8BA4\u5220\u9664\u8FD9\u6761 Claude \u4F1A\u8BDD\u5417\uFF1F",{title:"\u5220\u9664\u4F1A\u8BDD"}).then(function(y){y&&Ns(g,m)})})(s.dataset.claudeSessionId,s.closest(".session-item"));else if(s.dataset.action==="toggle-history-directory"&&s.dataset.cwd){var l=s.dataset.cwd;r.claudeHistoryExpandedDirs[l]=!r.claudeHistoryExpandedDirs[l],pe()}else if(s.dataset.action==="delete-history-directory"&&s.dataset.cwd)(function(g,m){var y=uv(g),C=vr().filter(function(E){return E.cwd===g}).length;An("\u786E\u8BA4\u6E05\u7A7A\u6B64\u76EE\u5F55\u4E0B\u7684 "+C+" \u6761 Claude \u5386\u53F2\u5417\uFF1F",{title:"\u6E05\u7A7A\u76EE\u5F55\u5386\u53F2",okLabel:"\u6E05\u7A7A"}).then(function(E){E&&(js(y,!0),av(g,m,y))})})(s.dataset.cwd,s);else if(s.dataset.action==="clear-all-history")Ac();else if(s.dataset.action==="toggle-archived-group")r.archivedExpanded=!r.archivedExpanded,pe();else if(s.dataset.action==="resume"&&s.dataset.sessionId)lv(s);else if(s.dataset.action==="resume-history"&&s.dataset.claudeSessionId)fv(s);else if(s.dataset.action==="resume-codex-history"&&s.dataset.claudeSessionId)dv(s);else if(s.dataset.action==="delete-codex-history"&&s.dataset.claudeSessionId)cv(s);else if(s.dataset.action==="toggle-codex-history-directory"&&s.dataset.cwd){var d=s.dataset.cwd;r.codexHistoryExpandedDirs[d]=!r.codexHistoryExpandedDirs[d],pe()}else s.dataset.action==="worktree-merge"&&s.dataset.sessionId?Vl(s.dataset.sessionId):s.dataset.action==="worktree-cleanup"&&s.dataset.sessionId&&Ul(s.dataset.sessionId);return}var f=t.closest(".session-item");if(f){if(r.sessionsManageMode){f.dataset.sessionId?mr("sessions",f.dataset.sessionId):f.dataset.claudeHistoryId&&mr(f.dataset.provider==="codex"?"codex":"history",f.dataset.claudeHistoryId);return}if(f.classList.contains("swiped")){Lr();return}if(Rs)return;if(f.dataset.sessionId)Ba(f.dataset.sessionId);else if(f.dataset.claudeHistoryId){var c=f.dataset.claudeHistoryId,v=f.dataset.cwd,h=f.dataset.provider==="codex"?Ai:xi;h(c,v).then(function(g){g&&g.id&&(r.selectedId=g.id,he(),r.drafts[g.id]="",mn().then(function(){Ht(g.id),_t()}))})}}}}function sf(e){if(!(e.key!=="Enter"&&e.key!==" ")){var t=e.target.closest(".session-item");if(t){if(e.preventDefault(),r.sessionsManageMode){t.dataset.sessionId?mr("sessions",t.dataset.sessionId):t.dataset.claudeHistoryId&&mr(t.dataset.provider==="codex"?"codex":"history",t.dataset.claudeHistoryId);return}if(t.dataset.sessionId)Ba(t.dataset.sessionId);else if(t.dataset.claudeHistoryId){var n=t.dataset.claudeHistoryId,i=t.dataset.cwd,a=t.dataset.provider==="codex"?Ai:xi;a(n,i).then(function(u){u&&u.id&&(r.selectedId=u.id,he(),r.drafts[u.id]="",mn().then(function(){Ht(u.id),_t()}))})}}}}function Da(e,t){var n=r.sessions.find(function(a){return a.id===r.selectedId});if(n){var i=n[e];if(!i){A("\u5F53\u524D\u4F1A\u8BDD\u6CA1\u6709\u53EF\u590D\u5236\u7684\u5185\u5BB9\u3002","error");return}Ur(String(i),null,function(){A(t||"\u5DF2\u590D\u5236","info")})}}function Et(){return!r.terminal||!r.terminal.element?null:(r.terminalViewportEl=r.terminal.element,r.terminalViewportEl)}function Kn(){r.terminalScrollIdleTimer&&(clearTimeout(r.terminalScrollIdleTimer),r.terminalScrollIdleTimer=null)}function ot(){var e=document.getElementById("terminal-jump-bottom"),t=!!r.selectedId&&r.currentView==="terminal"&&!r.terminalAutoFollow&&!ts();r.showTerminalJumpToBottom=t,e&&e.classList.toggle("visible",t);var n=document.getElementById("output");n&&n.classList.toggle("has-jump-btn",t)}function ka(){var e=Et();if(!e)return!0;var t=e.scrollHeight-e.clientHeight-e.scrollTop;return t<=r.terminalScrollThreshold}function ts(){var e=Et();if(!e)return!0;var t=e.scrollHeight-e.clientHeight-e.scrollTop;return t<=2}function ns(e){if(r.terminal){var t=Et();if(t){var n=e?500:120;r.terminalProgrammaticScrollUntil=Math.max(r.terminalProgrammaticScrollUntil,Date.now()+n),e?t.scrollTo({top:t.scrollHeight,behavior:"smooth"}):t.scrollTop=t.scrollHeight}}}function Aa(){r.terminalAutoFollow=!1,Kn(),r.terminalProgrammaticScrollUntil=0,r.terminal&&"_shouldScrollToBottom"in r.terminal&&(r.terminal._shouldScrollToBottom=!1),ot()}function pt(e){if(r.terminal){var t=e==="force";if(t){r.terminalAutoFollow=!0,Kn(),ns(!1),ot();return}if(!r.terminalAutoFollow){ot();return}ns(!1),ot()}}function lf(e){var t=document.createElement("div");t.className="terminal-scrollbar";var n=document.createElement("div");n.className="terminal-scrollbar-track";var i=document.createElement("div");i.className="terminal-scrollbar-thumb",n.appendChild(i),t.appendChild(n),e.appendChild(t),r.terminalScrollbarEl=t,r.terminalScrollbarThumbEl=i,r.terminalScrollbarHideTimer=null,r.terminalScrollbarDragging=!1,r.terminalScrollbarRafPending=!1;function a(){r.terminalScrollbarHideTimer&&(clearTimeout(r.terminalScrollbarHideTimer),r.terminalScrollbarHideTimer=null),t.classList.add("visible")}function u(){r.terminalScrollbarDragging||(r.terminalScrollbarHideTimer&&clearTimeout(r.terminalScrollbarHideTimer),r.terminalScrollbarHideTimer=setTimeout(function(){r.terminalScrollbarHideTimer=null,r.terminalScrollbarDragging||t.classList.remove("visible")},1500))}function o(){r.terminalScrollbarRafPending=!1;var m=Et();if(m){var y=m.scrollHeight,C=m.clientHeight;if(y<=C){t.classList.remove("visible");return}var E=n.clientHeight,B=Math.max(28,C/y*E),D=y-C,F=m.scrollTop/D,I=F*(E-B);i.style.height=B+"px",i.style.top=I+"px"}}function s(){r.terminalScrollbarRafPending||(r.terminalScrollbarRafPending=!0,requestAnimationFrame(o))}var l=Et();l&&l.addEventListener("scroll",function(){a(),s(),u()},{passive:!0}),n.addEventListener("mousedown",function(m){if(m.target!==i){m.preventDefault();var y=Et();if(y){var C=n.getBoundingClientRect(),E=(m.clientY-C.top)/C.height,B=y.scrollHeight-y.clientHeight;y.scrollTop=E*B}}});var d=0,f=0;i.addEventListener("mousedown",function(m){m.preventDefault(),m.stopPropagation(),r.terminalScrollbarDragging=!0,i.classList.add("dragging"),d=m.clientY;var y=Et();f=y?y.scrollTop:0,document.addEventListener("mousemove",c),document.addEventListener("mouseup",v)});function c(m){m.preventDefault();var y=Et();if(y){var C=n.clientHeight,E=y.scrollHeight,B=y.clientHeight,D=E-B;if(!(D<=0)){var F=Math.max(28,B/E*C),I=C-F;if(!(I<=0)){var L=m.clientY-d,H=L/I*D;y.scrollTop=f+H}}}}function v(){r.terminalScrollbarDragging=!1,i.classList.remove("dragging"),document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",v),u()}i.addEventListener("touchstart",function(m){if(m.touches.length===1){m.stopPropagation(),r.terminalScrollbarDragging=!0,i.classList.add("dragging"),d=m.touches[0].clientY;var y=Et();f=y?y.scrollTop:0,document.addEventListener("touchmove",h,{passive:!1}),document.addEventListener("touchend",g),document.addEventListener("touchcancel",g)}},{passive:!1});function h(m){if(m.touches.length===1){m.preventDefault();var y=Et();if(y){var C=n.clientHeight,E=y.scrollHeight,B=y.clientHeight,D=E-B;if(!(D<=0)){var F=Math.max(28,B/E*C),I=C-F;if(!(I<=0)){var L=m.touches[0].clientY-d,H=L/I*D;y.scrollTop=f+H}}}}}function g(){r.terminalScrollbarDragging=!1,i.classList.remove("dragging"),document.removeEventListener("touchmove",h),document.removeEventListener("touchend",g),document.removeEventListener("touchcancel",g),u()}t.addEventListener("mouseenter",function(){a()}),t.addEventListener("mouseleave",function(){r.terminalScrollbarDragging||u()}),s()}function df(e){return e<4352?!1:e>=4352&&e<=4447||e>=9001&&e<=9002||e>=11904&&e<=12350||e>=12353&&e<=13311||e>=13312&&e<=19903||e>=19968&&e<=40959||e>=40960&&e<=42191||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65072&&e<=65103||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=126976&&e<=129535||e>=131072&&e<=196605||e>=196608&&e<=262141}var rs="\u2060";function is(){return{mode:"normal"}}function cf(e){return!/[^\x00-\x7f]/.test(e)&&e.indexOf("\x1B")===-1}function ff(e,t){if(!e)return"";var n=String(e);if(t.mode==="normal"&&cf(n))return n;for(var i="",a=0;a<n.length;a++){var u=n.charCodeAt(a),o=u,s=1;if(u>=55296&&u<=56319&&a+1<n.length){var l=n.charCodeAt(a+1);l>=56320&&l<=57343&&(o=(u-55296)*1024+(l-56320)+65536,s=2)}var d=s===2?n.substr(a,2):n.charAt(a);switch(t.mode){case"normal":o===27?(t.mode="esc",i+=d):o===155?(t.mode="csi",i+=d):o===157||o===144||o===158||o===159?(t.mode="string",i+=d):(i+=d,df(o)&&(i+=rs));break;case"esc":i+=d,o===91?t.mode="csi":o===93||o===80||o===88||o===94||o===95?t.mode="string":t.mode="normal";break;case"csi":i+=d,o>=64&&o<=126&&(t.mode="normal");break;case"string":i+=d,o===7||o===156?t.mode="normal":o===27&&(t.mode="string-esc");break;case"string-esc":i+=d,o===92?t.mode="normal":t.mode="string";break}a+=s-1}return i}var vi="\x1B[?2026h",xa="\x1B[?2026l",pf=200,vf=256*1024;function mf(e){if(!e||r.syncOutputBuffer===null&&e.indexOf(vi)===-1)return e;for(var t="",n=0;n<e.length;)if(r.syncOutputBuffer!==null){var i=e.indexOf(xa,n);if(i===-1)return r.syncOutputBuffer+=e.slice(n),(r.syncOutputBuffer.length>vf||Date.now()>r.syncOutputDeadline)&&(t+=r.syncOutputBuffer,r.syncOutputBuffer=null,r.syncFramingResidue=!0),t;r.syncOutputBuffer+=e.slice(n,i+xa.length),t+=r.syncOutputBuffer,r.syncOutputBuffer=null,n=i+xa.length}else{var a=e.indexOf(vi,n);if(a===-1)return t+=e.slice(n),t;t+=e.slice(n,a),r.syncOutputBuffer=vi,r.syncOutputDeadline=Date.now()+pf,n=a+vi.length}return t}function Yg(){if(r.syncOutputBuffer!==null){var e=r.syncOutputBuffer;return r.syncOutputBuffer=null,e}return""}function Jn(e,t){if(!(!e||t==null)){r.wideParserState||(r.wideParserState=is());var n=ff(t,r.wideParserState),i=mf(n),a=r.terminalAutoFollow!==!1;"_shouldScrollToBottom"in e&&(e._shouldScrollToBottom=a),i&&e.write(i),"_shouldScrollToBottom"in e&&(e._shouldScrollToBottom=a),a&&(r.terminalProgrammaticScrollUntil=Math.max(r.terminalProgrammaticScrollUntil,Date.now()+120)),Df(t)}}function Sa(){r.wideParserState=is()}function gf(){typeof document>"u"||document.addEventListener("copy",function(e){var t=window.getSelection&&window.getSelection();if(!(!t||t.isCollapsed)){var n=t.anchorNode,i=n&&n.nodeType===3?n.parentNode:n,a=document.getElementById("output");if(!(!a||!i||!a.contains(i))){var u=t.toString(),o=u.split(`
13
- `).map(function(s){return s.split(rs).join("").replace(/[ \t]+$/,"")}).join(`
14
- `);o!==u&&e.clipboardData&&(e.clipboardData.setData("text/plain",o),e.preventDefault())}}})}gf();var as=150,us=30,hf=160*1024,yf=192*1024;function os(e){if(!e||e.length<=yf)return e;var t=e.length,n=function(F){if(!(typeof r>"u"||!r)){var I=r.terminalOutputMarker|0;if(!(I<=0)){var L=t-F;r.terminalOutputMarker=I>L?I-L:0}}},i=e.length-hf;if(i>0&&i<e.length){var a=e.charCodeAt(i);a>=56320&&a<=57343&&i++}for(var u=4096,o=Math.min(i+u,e.length),s=i;s<o;s++)if(e.charCodeAt(s)===10){var l=e.slice(s+1);return n(l.length),l}for(var d=Math.max(0,i-256),f=-1,c=i-1;c>=d;c--){var v=e.charCodeAt(c);if(v===27){f=c;break}if(v===7||v>=64&&v<=126)break}if(f!==-1){for(var h=!1,g=f+1;g<i;g++){var m=e.charCodeAt(g);if(m===7){h=!0;break}if(m>=64&&m<=126){h=!0;break}}if(!h)for(var y=Math.min(i+256,e.length),C=i;C<y;C++){var E=e.charCodeAt(C);if(E===7||E>=64&&E<=126){var B=e.slice(C+1);return n(B.length),B}}}var D=e.slice(i);return n(D.length),D}function mi(){if(r.terminal){if(typeof r.terminal.reset=="function"){r.terminal.reset(),Sa(),r.syncOutputBuffer=null,r.syncOutputDeadline=0;return}typeof r.terminal.write=="function"&&r.terminal.write("\x1Bc"),Sa(),r.syncOutputBuffer=null,r.syncOutputDeadline=0}}r._resyncStatsWindowStart=0,r._resyncStatsCount=0,r._resyncLastWarnAt=0;var bf=5e3,Ef=12,Ff=3e4;r._resyncInProgress=!1;function xn(e){if(!r.terminal||!r.terminalOutput)return!1;var t=e||{},n=r.terminalOutputMarker|0;n<0&&(n=0),n>r.terminalOutput.length&&(n=r.terminalOutput.length);var i=n>0?r.terminalOutput.slice(n):r.terminalOutput,a=i.length,u=typeof performance<"u"&&performance.now?performance.now():Date.now();r._resyncInProgress=!0;try{mi(),Jn(r.terminal,i)}finally{r._resyncInProgress=!1}r.lastTerminalResyncAt=Date.now(),pt("output"),t.skipFit||Qe("refresh");var o=Date.now();if(o-r._resyncStatsWindowStart>bf)r._resyncStatsWindowStart=o,r._resyncStatsCount=1;else if(r._resyncStatsCount++,r._resyncStatsCount>Ef&&o-r._resyncLastWarnAt>Ff){r._resyncLastWarnAt=o;var s=typeof performance<"u"&&performance.now?performance.now():Date.now();console.warn("[wand] softResyncTerminal high frequency","count="+r._resyncStatsCount+"/"+Math.round((o-r._resyncStatsWindowStart)/100)/10+"s","bufLen="+a,"lastReplayMs="+Math.round(s-u))}return!0}function wf(e){r.softResyncTimer&&clearTimeout(r.softResyncTimer),r.softResyncTimer=setTimeout(function(){r.softResyncTimer=null,xn()},typeof e=="number"?e:150)}var Cf=/\x1b\[\d*(?:;\d*)?[ABCDfHJK]/,ss=1500,Bf=800;r._resyncChunkLastAt=0,r._resyncChunkTailTimer=null;function Df(e){if(!r._resyncInProgress&&r.syncFramingResidue&&(r.syncFramingResidue=!1,!(!e||typeof e!="string")&&e.indexOf("\x1B[")!==-1&&Cf.test(e))){var t=Date.now(),n=t-r._resyncChunkLastAt;if(n>=ss){r._resyncChunkTailTimer&&(clearTimeout(r._resyncChunkTailTimer),r._resyncChunkTailTimer=null),r._resyncChunkLastAt=t,xn();return}if(!r._resyncChunkTailTimer){var i=Math.max(Bf,ss-n);r._resyncChunkTailTimer=setTimeout(function(){r._resyncChunkTailTimer=null,r._resyncChunkLastAt=Date.now(),xn()},i)}}}function gi(e,t,n){if(!r.terminal)return!1;var i=du(t||""),a=e||null,u=n||{},o=u.mode||"append",s=u.scroll!==!1,l=r.terminalSessionId!==a,d=r.terminalOutput||"",f=!!(a&&r.terminalLiveStreamSessions[a]),c=!1;if(i===d&&!l)return s&&pt("output"),ot(),!1;if(l&&(mi(),d="",r.terminalOutput="",r.terminalOutputMarker=0,r.terminalAutoFollow=!0,Kn(),ot()),o==="replace")i!==d&&(mi(),i&&Jn(r.terminal,i),c=!0);else{if(i.length<d.length&&!l)return!1;if(f&&!l&&o!=="replace"&&d&&!i.startsWith(d))return!1;if(i.startsWith(d)){var v=i.slice(d.length);v&&(Jn(r.terminal,v),c=!0)}else{if(d&&d.startsWith(i))return!1;mi(),i&&Jn(r.terminal,i),c=!0}}return r.terminalSessionId=a,r.terminalOutput=i,r.terminalOutputMarker=0,s&&(c||l||o==="replace")?pt(l||o==="replace"?"force":"output"):ot(),l&&pi(r.terminal.cols,r.terminal.rows),c||l}function Yn(){var e=document.getElementById("output");if(!(!e||r.terminal||r.terminalInitializing)){if(typeof WTermLib>"u"||!WTermLib.WTerm){r.terminalInitRetries||(r.terminalInitRetries=0),r.terminalInitRetries<10&&(r.terminalInitRetries++,setTimeout(Yn,200));return}r.terminalInitRetries=0,r.terminalInitializing=!0,r.selectedId&&(e.classList.remove("hidden"),e.classList.add("active"));for(var t=e.querySelectorAll(".terminal-scroll-wrap"),n=0;n<t.length;n++){var i=t[n];i.parentNode===e&&e.removeChild(i)}var a=document.createElement("div");a.className="terminal-scroll-wrap",e.appendChild(a);var u=new WTermLib.WTerm(a,{cols:120,rows:36,autoResize:!0,cursorBlink:!1,onData:function(){},onResize:function(s,l){pi(s,l),r.terminal&&r.terminalOutput&&xn({skipFit:!0})}}),o=document.fonts&&typeof document.fonts.ready=="object"?Promise.race([document.fonts.ready,new Promise(function(s){setTimeout(s,800)})]):Promise.resolve();o.then(function(){return u.init()}).then(function(){if(r.terminal=u,r.terminalInitializing=!1,to(),a.isConnected&&(a.offsetHeight,typeof u.remeasure=="function"))try{u.remeasure()}catch{}r.terminalAutoFollow=!0,Kn();var s=Et();if(s&&(r.terminalViewportScrollHandler=function(){if(Date.now()<r.terminalProgrammaticScrollUntil){ot();return}if(ts()){r.terminalAutoFollow=!0,Kn(),ot();return}Aa()},r.terminalViewportTouchStartHandler=function(d){d.touches&&d.touches.length===1&&(r.terminalTouchStartY=d.touches[0].clientY)},r.terminalViewportTouchHandler=function(d){!d.touches||d.touches.length!==1||typeof r.terminalTouchStartY=="number"&&d.touches[0].clientY-r.terminalTouchStartY>4&&Aa()},s.addEventListener("scroll",r.terminalViewportScrollHandler,{passive:!0}),s.addEventListener("touchstart",r.terminalViewportTouchStartHandler,{passive:!0}),s.addEventListener("touchmove",r.terminalViewportTouchHandler,{passive:!0})),r.terminalWheelHandler=function(d){d.deltaY<0&&Aa(),d.stopPropagation()},e.addEventListener("wheel",r.terminalWheelHandler,{passive:!0}),lf(e),r.selectedId){var l=r.sessions.find(function(d){return d.id===r.selectedId});l&&gi(l.id,l.output||"",{mode:"append",scroll:!1})}else Jn(u,`\u70B9\u51FB\u4E0A\u65B9\u300C\u65B0\u5BF9\u8BDD\u300D\u5F00\u59CB\u4F60\u7684\u7B2C\u4E00\u6B21\u5BF9\u8BDD\u3002\r
15
- `);r.terminalClickHandler=function(d){Di()||Ot(d)},e.addEventListener("click",r.terminalClickHandler),ot(),Wc(),Uc(),tf(),nf(),Qe("mount",{forceReplay:!0}),document.documentElement.classList.contains("is-wand-embed-terminal")&&[120,350,700].forEach(function(d){setTimeout(function(){r.terminal&&Qe("embed-settle")},d)})}).catch(function(s){r.terminalInitializing=!1,console.error("[wand] wterm init failed:",s)})}}function kf(e,t){if(!(!r.selectedId||!e)){var n=r.selectedId+":"+e;if(r.toolContentCache[n]){t(null,r.toolContentCache[n]);return}fetch("/api/sessions/"+encodeURIComponent(r.selectedId)+"/tool-content/"+encodeURIComponent(e),{credentials:"same-origin"}).then(function(i){return i.json()}).then(function(i){i.error?t(i.error,null):(r.toolContentCache[n]=i,t(null,i))}).catch(function(){t("\u52A0\u8F7D\u5931\u8D25",null)})}}function Sn(e){return!!(r.config&&r.config.cardDefaults&&r.config.cardDefaults[e])}function Ia(e,t,n,i){if(!(!e||e.dataset.truncated!=="true"||e.dataset.loaded==="true")){var a=e.dataset.toolUseId;a&&(t&&(t.innerHTML='<div class="tool-content-loading">\u52A0\u8F7D\u4E2D\u2026</div>'),e.dataset.loaded="loading",kf(a,function(u,o){if(u){t&&(t.innerHTML=i||'<div class="tool-content-error">\u52A0\u8F7D\u5931\u8D25\uFF0C\u70B9\u51FB\u91CD\u8BD5</div>'),e.dataset.loaded="";return}e.dataset.truncated="false",e.dataset.loaded="true";var s=typeof o.content=="string"?o.content:JSON.stringify(o.content);n(s,o)}))}}window.__tcToggle=function(e,t){var n=t.closest(".tool-use-card")||t.closest(".inline-diff");if(n){var i=n.classList.contains("collapsed");n.classList.toggle("collapsed");var a=i;t.setAttribute("aria-expanded",a?"true":"false");var u=n.querySelector(".tool-use-body, .diff-body");u&&u.setAttribute("aria-hidden",a?"false":"true");var o=n.dataset.expandKind||"tool-card";if(Nn(n,o),i){var s=n.querySelector(".tool-use-result");Ia(n,s,function(l){s&&(s.innerHTML='<pre class="tool-use-result-content">'+p(l)+"</pre>")},`<div class="tool-content-error" onclick="__tcToggle(null, this.closest('.tool-use-card,.inline-diff').querySelector('.tool-use-header,.diff-header'))">\u52A0\u8F7D\u5931\u8D25\uFF0C\u70B9\u51FB\u91CD\u8BD5</div>`)}}e&&(e.preventDefault(),e.stopPropagation())},window.__thinkingToggle=function(e){var t=e.classList.contains("collapsed");if(t){e.classList.remove("collapsed"),e.classList.add("expanded"),e.querySelector(".thinking-inline-preview").textContent=e.dataset.thinking||"";var n=e.querySelector(".thinking-inline-action");n&&(n.textContent="\u6536\u8D77")}else{e.classList.remove("expanded"),e.classList.add("collapsed");var i=(e.dataset.thinking||"").slice(0,57)+((e.dataset.thinking||"").length>60?"\u2026":"");e.querySelector(".thinking-inline-preview").textContent=i;var n=e.querySelector(".thinking-inline-action");n&&(n.textContent="\u5C55\u5F00")}Nn(e,"thinking")},window.__subagentReplyToggle=function(e,t){e&&(e.preventDefault(),e.stopPropagation());var n=t&&t.closest?t.closest(".subagent-reply"):null;if(n){var i=n.getAttribute("data-expanded")==="true";$u(n,"subagent-reply",!i),Nn(n,"subagent-reply")}},window.__subagentPanelToggle=function(e,t){e&&(e.preventDefault(),e.stopPropagation());var n=t&&t.closest?t.closest(".subagent-panel"):null;n&&n.setAttribute("data-expanded","true")};function Af(e){if(e)for(var t=e.querySelectorAll('.subagent-panel[data-follow-tail="true"]'),n=0;n<t.length;n++){var i=t[n].querySelector(".subagent-panel-body");i&&(i.scrollTop=i.scrollHeight)}}window.__openFilePreview=function(e){e&&ii(e)},window.__inlineToolToggle=function(e){var t=e.classList.toggle("inline-tool-open"),n=e.querySelector(".inline-tool-expanded");n&&(n.style.display=t?"block":"none");var i=e.querySelector(".inline-tool-status");i&&(e.dataset.status==="error"?i.textContent="\u2717":e.dataset.status==="done"&&(i.textContent="\u2713")),t&&Ia(e,n,function(a){e.dataset.result=a,n&&(n.innerHTML='<div class="inline-tool-result">'+ml(a,"")+"</div>")}),Nn(e,"inline-tool")},window.__terminalExpand=function(e){var t=e.closest(".inline-terminal");if(t){var n=t.querySelector(".term-body");if(n){var i=n.style.display==="none";n.style.display=i?"block":"none",t.dataset.expanded=i?"true":"false",e.setAttribute("aria-expanded",i?"true":"false"),n.setAttribute("aria-hidden",i?"false":"true");var a=e.querySelector(".term-toggle-icon");if(a&&(a.textContent=i?"\u25BC":"\u25B6"),Nn(t,"terminal"),i){var u=n.querySelector(".term-output");Ia(t,u,function(o){if(u){for(var s=o.split(`
16
- `),l="",d=0;d<s.length;d++)!s[d]&&d===s.length-1||(l+='<div class="term-line">'+p(s[d])+"</div>");u.innerHTML=l}})}}}};function Gg(e){var t=document.querySelector(".thinking-streaming");if(t){var n=t.querySelector(".thinking-streaming-text");if(n){var i=e.split(`
12
+ `+ee,Gn("medium"),Gf(e.sessionId,q),e.sessionId!==r.selectedId&&qa({title:"\u9700\u8981\u4F60\u7684\u6388\u6743",body:q,type:"warning",icon:"!",duration:0,actionLabel:"\u53BB\u5904\u7406",action:function(){Ht(e.sessionId)}})}e.data.permissionBlocked===!1&&(z.pendingEscalation=null),e.data.approvalStats&&(z.approvalStats=e.data.approvalStats),X(z),Ha(e.sessionId),Oa(),e.sessionId===r.selectedId&&(Yt(),e.data.approvalStats&&Vo(),z.structuredState&&(z.structuredState.inFlight||(Ln("Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C"),Ts()),Fa()))}break;case"notification":e.data&&(e.data.kind==="update"?vs(e.data.current||"-",e.data.latest||"-"):e.data.kind==="auto-update-start"?np(e.data.current||"-",e.data.latest||"-"):(e.data.kind==="auto-update-restart"||e.data.kind==="restart")&&ln());break}}function Yt(){var e=document.getElementById("current-task"),t=document.getElementById("permission-actions"),n=document.getElementById("permission-actions-label");if(e){var i=r.sessions.find(function(v){return v.id===r.selectedId});i&&i.provider==="codex"&&(t&&t.classList.add("hidden"),e.classList.remove("permission-blocked"));var a=i&&i.pendingEscalation?i.pendingEscalation:null,u=i&&i.provider!=="codex"?a||i.permissionBlocked:!1;if(u){var o=i&&i.autoApprovePermissions;if(n)if(o)n.textContent="\u81EA\u52A8\u6279\u51C6\u4E2D...";else if(a){var s=a.reason||"\u7B49\u5F85\u6388\u6743",l=a.target?" \xB7 "+a.target:"";n.textContent=s+l}else n.textContent="\u7B49\u5F85\u6388\u6743";if(t){t.classList.remove("hidden");var d=document.getElementById("approve-permission-btn"),f=document.getElementById("deny-permission-btn");d&&d.classList.toggle("hidden",!!o),f&&f.classList.toggle("hidden",!!o)}e.textContent="",e.classList.add("hidden"),e.classList.remove("permission-blocked");return}e.classList.remove("permission-blocked"),t&&t.classList.add("hidden");var c=r.currentTask;c&&c.title?(e.textContent=c.title,e.classList.remove("hidden")):(e.textContent="",e.classList.add("hidden"))}}function Vo(){var e=document.getElementById("approval-stats");if(e){var t=r.sessions.find(function(a){return a.id===r.selectedId}),n=t&&t.approvalStats;if(!n||n.total===0){e.className="approval-stats hidden",e.innerHTML="";return}e.className="approval-stats",e.innerHTML='<span class="approval-stats-divider"></span><span class="approval-stats-badge" id="approval-stats-badge" title="\u672C\u6B21\u4F1A\u8BDD\u81EA\u52A8\u6279\u51C6\u7EDF\u8BA1"><svg class="approval-stats-icon" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg><span class="approval-stats-total">'+n.total+'</span></span><span class="approval-stats-popup" id="approval-stats-popup"><span class="approval-stats-popup-title">\u81EA\u52A8\u6279\u51C6\u7EDF\u8BA1</span>'+(n.command>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+V("terminal",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u547D\u4EE4\u6267\u884C</span><span class="approval-stats-row-count">'+n.command+"</span></span>":"")+(n.file>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+V("edit",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u6587\u4EF6\u5199\u5165</span><span class="approval-stats-row-count">'+n.file+"</span></span>":"")+(n.tool>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+V("wrench",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u5176\u4ED6\u5DE5\u5177</span><span class="approval-stats-row-count">'+n.tool+"</span></span>":"")+'<span class="approval-stats-row approval-stats-row-total"><span class="approval-stats-row-icon">'+V("sigma",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u5408\u8BA1</span><span class="approval-stats-row-count">'+n.total+"</span></span></span>";var i=e.querySelector(".approval-stats-badge");i&&(i.classList.remove("approval-stats-pulse"),i.offsetWidth,i.classList.add("approval-stats-pulse"))}}function Oc(){if(Gn("light"),!!r.selectedId){var e=document.getElementById("approve-permission-btn"),t=document.getElementById("deny-permission-btn");e&&(e.disabled=!0),t&&(t.disabled=!0),fetch("/api/sessions/"+encodeURIComponent(r.selectedId)+"/approve-permission",{method:"POST",credentials:"same-origin"}).then(function(n){return n.json()}).then(function(n){if(n&&n.error){A(n.error,"error");return}X(n),Yt()}).catch(function(n){A(n&&n.message||"\u65E0\u6CD5\u6279\u51C6\u6388\u6743\u3002","error")}).finally(function(){e&&(e.disabled=!1),t&&(t.disabled=!1)})}}function Hc(){if(Gn("light"),!!r.selectedId){var e=document.getElementById("approve-permission-btn"),t=document.getElementById("deny-permission-btn");e&&(e.disabled=!0),t&&(t.disabled=!0),fetch("/api/sessions/"+encodeURIComponent(r.selectedId)+"/deny-permission",{method:"POST",credentials:"same-origin"}).then(function(n){return n.json()}).then(function(n){if(n&&n.error){A(n.error,"error");return}X(n),Yt()}).catch(function(n){A(n&&n.message||"\u65E0\u6CD5\u62D2\u7EDD\u6388\u6743\u3002","error")}).finally(function(){e&&(e.disabled=!1),t&&(t.disabled=!1)})}}function _c(){if(r.selectedId){var e=r.sessions.find(function(n){return n.id===r.selectedId});if(e&&e.provider==="codex"){A("Codex \u4F1A\u8BDD\u56FA\u5B9A\u4EE5 full-access PTY \u542F\u52A8\uFF0C\u4E0D\u652F\u6301\u5207\u6362\u81EA\u52A8\u6279\u51C6\u3002","info");return}var t=document.getElementById("auto-approve-toggle");t&&(t.style.opacity="0.5"),fetch("/api/sessions/"+encodeURIComponent(r.selectedId)+"/toggle-auto-approve",{method:"POST",credentials:"same-origin"}).then(function(n){return n.json()}).then(function(n){if(n&&n.error){A(n.error,"error");return}X(n),Uo();var i=n.autoApprovePermissions;A(i?"\u81EA\u52A8\u6279\u51C6\u5DF2\u5F00\u542F":"\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED","info")}).catch(function(n){A(n&&n.message||"\u65E0\u6CD5\u5207\u6362\u81EA\u52A8\u6279\u51C6\u3002","error")}).finally(function(){t&&(t.style.opacity="")})}}function Uo(){var e=document.getElementById("auto-approve-toggle"),t=r.sessions.find(function(a){return a.id===r.selectedId});if(Pl(t)){e&&e.parentNode&&e.parentNode.removeChild(e);return}if(e){var n="composer-pill composer-pill-chip auto-approve-indicator",i=t&&t.autoApprovePermissions;i?(e.className=n+" active",e.title="\u81EA\u52A8\u6279\u51C6\u5DF2\u542F\u7528 \u2014 \u70B9\u51FB\u5173\u95ED",e.setAttribute("aria-pressed","true"),e.setAttribute("aria-label","\u81EA\u52A8\u6279\u51C6\u5DF2\u542F\u7528\uFF0C\u70B9\u51FB\u5173\u95ED"),e.innerHTML=V("shieldCheck",{size:12,strokeWidth:1.7,cls:"composer-pill-icon"})+'<span class="composer-pill-label">\u81EA\u52A8</span>'):(e.className=n,e.title="\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED \u2014 \u70B9\u51FB\u5F00\u542F",e.setAttribute("aria-pressed","false"),e.setAttribute("aria-label","\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED\uFF0C\u70B9\u51FB\u5F00\u542F"),e.innerHTML=V("shield",{size:12,strokeWidth:1.7,cls:"composer-pill-icon"})+'<span class="composer-pill-label">\u624B\u52A8</span>')}}function Nc(e,t,n){return r.terminal?gi(t||r.selectedId,e,{mode:n||"append"}):!1}function Ko(){r.pollTimer&&(clearInterval(r.pollTimer),r.pollTimer=null)}function Qg(e){r.currentView=e||"terminal",r.currentView!=="terminal"&&(Mn(!1),Ns()),Ki(),Ja();var t=Dt();t&&(r.currentMessages=ze(t,Xe(t,t.output,!0))),ot(),r.currentView==="terminal"&&(qt(!0),r.terminal&&r.terminal.remeasure&&requestAnimationFrame(function(){r.terminal&&r.terminal.remeasure()}))}function yr(e){r.renderPending&&!e||(r.renderPending=!0,e?(Ti(!0),r.renderPending=!1):requestAnimationFrame(function(){Ti(!1),r.renderPending=!1}))}r.chatRenderTimer=null;function Fa(e){if(!(r.chatRenderTimer&&!e)){if(r.chatRenderTimer&&clearTimeout(r.chatRenderTimer),e){r.chatRenderTimer=null,yr();return}var t=r.sessions.find(function(a){return a.id===r.selectedId}),n=t&&t.status==="running"&&t.sessionKind!=="structured",i=n?os:ss;r.chatRenderTimer=setTimeout(function(){r.chatRenderTimer=null;var a=r.sessions.find(function(u){return u.id===r.selectedId});a&&(r.currentMessages=ze(a,Xe(a,a.output,!0))),yr()},i)}}var wa=0,ci=0,Jo=0,br=0;function Ca(){return window.__wandIosNative===!0}function Yo(e){Jo=Math.max(Jo,Date.now()+(e||1800))}function Go(e,t){setTimeout(function(){var n=document.activeElement;fi(n)&&n!==t||Yo(e)},30)}function jc(e){return Math.max(window.innerHeight||0,e&&e.height||0,document.documentElement&&document.documentElement.clientHeight||0,document.body&&document.body.clientHeight||0)}function Rc(e){var t=document.documentElement,n=Math.max(window.innerWidth||0,e&&e.width||0,t&&t.clientWidth||0),i=jc(e);return!wa||Math.abs(n-wa)>8?(wa=n,ci=i):i>ci&&(ci=i),Math.max(1,Math.round(ci||i||1))}function Wc(e,t,n,i){return e||!Ca()?!1:t>0||i>n+1}function Un(e){var t=window.visualViewport;if(t){var n=document.documentElement;if(n.classList.toggle("is-keyboard-open",!!e),window.__wandImeNative){n.style.setProperty("--app-viewport-top","0px"),n.style.setProperty("--app-viewport-height",Math.round(t.height)+"px");return}var i=Rc(t),a=Math.max(0,Math.round(t.offsetTop||0)),u=Math.max(1,Math.round(t.height));(!e&&Ca()||Wc(e,a,u,i))&&(a=0,u=Math.max(u,i)),n.style.setProperty("--app-viewport-top",a+"px"),n.style.setProperty("--app-viewport-height",u+"px"),(e||(window.scrollY||0)>0)&&Za()}}function fi(e){if(!e)return!1;var t=e.tagName;if(t==="TEXTAREA"||t==="SELECT")return!0;if(t==="INPUT"){var n=(e.getAttribute("type")||"text").toLowerCase();return!/^(button|checkbox|color|file|hidden|image|radio|range|reset|submit)$/i.test(n)}return!!e.isContentEditable}function zc(){if(!("visualViewport"in window)||window.__wandViewportHandlersBound)return;window.__wandViewportHandlersBound=!0;var e=window.visualViewport,t=e.height,n=!1,i=Math.max(window.innerWidth||0,e.width||0),a=Math.max(window.innerHeight||0,e.height||0),u=[];function o(){return Math.max(window.innerHeight||0,e.height||0)}function s(){var g=Math.max(window.innerWidth||0,e.width||0),m=o();if(Math.abs(g-i)>8){i=g,a=m;return}m>a&&(a=m)}function l(g,m){var y=document.activeElement,C=y===g||fi(y),E=a-e.height,B=a-(window.innerHeight||e.height||0),D=Date.now()<br;return D?!!(C&&(E>120||B>120)):!!(m>80||C&&(E>120||B>120)||n&&(E>80||m>32))}function d(){u.forEach(function(g){clearTimeout(g)}),u=[60,180,360,620,900].map(function(g){return setTimeout(function(){Un(n)},g)})}function f(){[0,50,120,220,360,560].forEach(function(g){setTimeout(function(){c();var m=document.getElementById("input-box");m&&document.activeElement===m&&Ii(m)},g)})}function c(){if(e){var g=document.getElementById("input-box"),m=window.innerHeight-e.height-e.offsetTop;s();var y=l(g,m),C=Math.abs(e.height-t)>8;if(Un(y),y&&(!n||C)&&Cv(e,g)&&Ii(g),!n&&y){var E=r.terminalAutoFollow||xa();Qe("keyboard-open",{forceReplay:!0}),window.__wandImeNative||setTimeout(function(){Un(!0)},220),d(),E&&setTimeout(function(){r.terminal&&pt("force")},220)}if(n&&!y){var B=!!window.__wandImeNative;B||(Yo(2200),br=Date.now()+1200,Un(!1),Za()),d(),setTimeout(function(){B||(Un(!1),Za()),Qe("keyboard-close",{forceReplay:!0}),pt("keyboard")},200)}C&&n===y&&Qe("viewport"),n=y,t=e.height}}var v=null;function h(){v!==null&&cancelAnimationFrame(v),v=requestAnimationFrame(function(){v=null,c()})}e.addEventListener("resize",h),e.addEventListener("scroll",h),document.addEventListener("visibilitychange",function(){document.visibilityState==="visible"&&(h(),setTimeout(h,240),setTimeout(h,720))}),window.addEventListener("pageshow",function(g){g&&g.persisted&&(h(),setTimeout(h,240))}),document.addEventListener("focusout",function(g){!g||!g.target||fi(g.target)&&(Go(1600,g.target),Ca()&&(br=Math.max(br,Date.now()+1200)),setTimeout(h,80),setTimeout(h,420))}),document.addEventListener("focusin",function(g){!g||!g.target||!fi(g.target)||f()}),window.addEventListener("wand-ios-ime-state",function(g){var m=g&&g.detail&&g.detail.state;m==="hidden"&&(br=Date.now()+900),f(),d()}),c()}function Vc(){var e=document.getElementById("output");if(e){var t=document.createElement("div");t.className="terminal-resize-handle",t.innerHTML="&#8942;",e.appendChild(t);var n=!1,i=0,a=0;t.addEventListener("mousedown",function(u){n=!0,i=u.clientY,a=e.getBoundingClientRect().height,document.body.style.cursor="ns-resize",document.body.style.userSelect="none",u.preventDefault()}),r.resizeMouseMove=function(u){if(n){var o=u.clientY-i,s=Math.max(200,Math.min(a+o,window.innerHeight-200));e.style.height=s+"px",e.style.flex="none",qt()}},document.addEventListener("mousemove",r.resizeMouseMove),r.resizeMouseUp=function(){n&&(n=!1,document.body.style.cursor="",document.body.style.userSelect="",qt())},document.addEventListener("mouseup",r.resizeMouseUp),t.addEventListener("touchstart",function(u){n=!0,i=u.touches[0].clientY,a=e.getBoundingClientRect().height,u.preventDefault()},{passive:!1}),r.resizeTouchMove=function(u){if(n){var o=u.touches[0].clientY-i,s=Math.max(200,Math.min(a+o,window.innerHeight-200));e.style.height=s+"px",e.style.flex="none",qt(),u.preventDefault()}},document.addEventListener("touchmove",r.resizeTouchMove,{passive:!1}),r.resizeTouchEnd=function(){n&&(n=!1,qt())},document.addEventListener("touchend",r.resizeTouchEnd)}}function Qo(){return!!Dt()}function Ba(e){var t=Math.max(cn,window.innerWidth-Bi-cn),n=Math.max(cn,window.innerHeight-Bi-cn);return{right:Math.min(Math.max(cn,e.right),t),bottom:Math.min(Math.max(cn,e.bottom),n)}}function $o(){if(r.joystickBallEl){var e=Ba(r.joystickPos||{right:18,bottom:96});r.joystickBallEl.style.right=e.right+"px",r.joystickBallEl.style.bottom=e.bottom+"px"}}function Uc(e,t){var n=Ba({right:e,bottom:t});r.joystickPos=n;try{localStorage.setItem("wand-ball-pos",JSON.stringify(n))}catch{}}function Kc(){function e(u,o,s){return'<button type="button" class="wjp-key'+(s?" "+s:"")+'" data-key="'+u+'">'+o+"</button>"}var t='<div class="wjp-dpad"><div class="wjp-dpad-row">'+e("up","\u2191","wjp-dir")+'</div><div class="wjp-dpad-row">'+e("left","\u2190","wjp-dir")+e("down","\u2193","wjp-dir")+e("right","\u2192","wjp-dir")+"</div></div>",n="",i;for(i=0;i<Ua.length;i++)n+=e(Ua[i].key,Ua[i].label,"");var a='<div class="wjp-header"><span class="wjp-title">'+V("paw",{size:13,strokeWidth:1.6,cls:"wjp-title-icon"})+'<span>\u9065\u63A7\u9762\u677F</span></span><button type="button" class="wjp-close" aria-label="\u5173\u95ED\u9065\u63A7\u9762\u677F">'+V("x",{size:13,strokeWidth:2})+"</button></div>"+t+'<div class="wjp-grid wjp-fnkeys">'+n+"</div>";return a}function Jc(){if(!r.joystickRootEl){var e=document.createElement("div");e.className="wand-joystick-root",["pointerdown","pointerup","touchstart","touchend","click"].forEach(function(a){e.addEventListener(a,Xo,!0)});var t=document.createElement("div");t.className="wand-joystick-backdrop",e.appendChild(t);var n=document.createElement("div");n.className="wand-joystick-panel",n.innerHTML=Kc(),n.addEventListener("click",tf),e.appendChild(n);var i=document.createElement("div");i.className="wand-joystick-ball",i.setAttribute("role","button"),i.setAttribute("aria-label","Wand \u9065\u63A7\u9762\u677F"),i.setAttribute("title","\u70B9\u51FB\u6253\u5F00\u9065\u63A7\u9762\u677F\uFF0C\u62D6\u52A8\u53EF\u79FB\u52A8\u4F4D\u7F6E"),i.innerHTML=V("paw",{size:25,strokeWidth:1.6,cls:"wand-joystick-logo"}),e.appendChild(i),document.body.appendChild(e),r.joystickRootEl=e,r.joystickBackdropEl=t,r.joystickPanelEl=n,r.joystickBallEl=i,$o(),i.addEventListener("pointerdown",Yc),i.addEventListener("click",function(a){a.preventDefault(),a.stopPropagation()}),t.addEventListener("pointerdown",function(a){r.joystickPinnedOpen&&r.joystickGesture==null&&(a.preventDefault(),Er())}),t.addEventListener("click",function(a){a.preventDefault(),a.stopPropagation()}),r.joystickResizeHandler=function(){$o()},window.addEventListener("resize",r.joystickResizeHandler),window.addEventListener("orientationchange",r.joystickResizeHandler),ns()}}function Xo(){if(document.documentElement.classList.contains("is-wand-native-input")){var e=document.activeElement;if(e&&typeof e.blur=="function")try{e.blur()}catch{}setTimeout(function(){var t=document.activeElement;if(t&&typeof t.blur=="function")try{t.blur()}catch{}},0)}}function Yc(e){if(Qo()&&!((e.pointerType==="mouse"||e.pointerType==="pen")&&e.button!==0)&&r.joystickPointerId===null){Xo(),e.preventDefault(),e.stopPropagation();var t=e.pointerType==="mouse"||e.pointerType==="pen";r.joystickPointerId=e.pointerId,r.joystickPressStart={x:e.clientX,y:e.clientY,t:Date.now()},r.joystickGesture="pending";try{r.joystickBallEl.setPointerCapture(e.pointerId)}catch{}t||(r.joystickLongPressTimer=setTimeout(function(){r.joystickGesture==="pending"&&Zo()},Wp)),r.joystickMoveHandler=Gc,r.joystickUpHandler=Qc,document.addEventListener("pointermove",r.joystickMoveHandler),document.addEventListener("pointerup",r.joystickUpHandler),document.addEventListener("pointercancel",r.joystickUpHandler)}}function Zo(){r.joystickGesture="move",r.joystickPinnedOpen&&Er(),r.joystickBallEl&&r.joystickBallEl.classList.add("dragging"),r.joystickBackdropEl&&r.joystickBackdropEl.classList.add("active")}function es(e,t){if(r.joystickBallEl){var n=Ba({right:window.innerWidth-e-Bi/2,bottom:window.innerHeight-t-Bi/2});r.joystickBallEl.style.right=n.right+"px",r.joystickBallEl.style.bottom=n.bottom+"px"}}function Gc(e){if(!(e.pointerId!==r.joystickPointerId||!r.joystickBallEl)){if(e.preventDefault(),r.joystickGesture==="move"){es(e.clientX,e.clientY);return}if(r.joystickGesture==="pending"){var t=e.clientX-r.joystickPressStart.x,n=e.clientY-r.joystickPressStart.y;Math.sqrt(t*t+n*n)<=zp||(e.pointerType==="mouse"||e.pointerType==="pen"?(Zo(),es(e.clientX,e.clientY)):(r.joystickLongPressTimer&&(clearTimeout(r.joystickLongPressTimer),r.joystickLongPressTimer=null),r.joystickGesture="cancelled"))}}}function Qc(e){if(e.pointerId===r.joystickPointerId){r.joystickLongPressTimer&&(clearTimeout(r.joystickLongPressTimer),r.joystickLongPressTimer=null);var t=r.joystickGesture;if(t==="pending"){var n=e.clientX-r.joystickPressStart.x,i=e.clientY-r.joystickPressStart.y;Math.sqrt(n*n+i*i)<=Vp&&Zc()}else if(t==="move"){var a=r.joystickBallEl?r.joystickBallEl.getBoundingClientRect():null;a&&Uc(window.innerWidth-a.right,window.innerHeight-a.bottom)}ts()}}function ts(){if(r.joystickLongPressTimer&&(clearTimeout(r.joystickLongPressTimer),r.joystickLongPressTimer=null),r.joystickBallEl&&r.joystickPointerId!==null)try{r.joystickBallEl.releasePointerCapture(r.joystickPointerId)}catch{}r.joystickMoveHandler&&(document.removeEventListener("pointermove",r.joystickMoveHandler),r.joystickMoveHandler=null),r.joystickUpHandler&&(document.removeEventListener("pointerup",r.joystickUpHandler),document.removeEventListener("pointercancel",r.joystickUpHandler),r.joystickUpHandler=null),r.joystickBallEl&&r.joystickBallEl.classList.remove("dragging"),r.joystickBackdropEl&&!r.joystickPinnedOpen&&r.joystickBackdropEl.classList.remove("active"),r.joystickPointerId=null,r.joystickGesture=null,r.joystickPressStart=null}function $c(e){if(e==="ctrl"||e==="alt"||e==="shift"){r.modifiers[e]=!r.modifiers[e],Fr();return}var t=Dt();if(t&&ue(t)){(e==="ctrl_c"||e==="escape")&&Xc(t,e),ki(),Fr();return}var n=js(e,{ctrl:r.modifiers.ctrl,alt:r.modifiers.alt,shift:r.modifiers.shift});n&&_s(n,e),ki(),Fr(),ev()}function Xc(e,t){!e||!e.id||fetch("/api/structured-sessions/"+e.id+"/messages",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({input:"",interrupt:!0,preserveQueue:!0})}).then(function(n){return n.ok?n.json():n.json().catch(function(){return{}}).then(function(i){throw new Error(i&&i.error||"\u4E2D\u65AD\u5931\u8D25 (key="+t+")")})}).then(function(n){if(n&&n.id&&(X(n),n.id===r.selectedId)){var i=r.sessions.find(function(a){return a.id===n.id})||n;r.currentMessages=ze(i,Xe(i,n.output,!1)),yr(!0),typeof nt=="function"&&nt()}}).catch(function(n){n&&n.message&&console.debug("[wand] joystick interrupt no-op:",n.message)})}function Zc(){r.joystickPinnedOpen?Er():ef()}function ef(){if(!(!r.joystickPanelEl||!r.joystickBallEl)){r.joystickPinnedOpen=!0;var e=r.joystickBallEl.getBoundingClientRect();r.joystickPanelEl.style.right=Math.max(cn,window.innerWidth-e.right)+"px",r.joystickPanelEl.style.bottom=Math.max(cn,window.innerHeight-e.top+10)+"px",r.joystickPanelEl.classList.add("active"),r.joystickBallEl.classList.add("panel-open"),r.joystickBackdropEl&&r.joystickBackdropEl.classList.add("active"),Fr()}}function Er(){r.joystickPinnedOpen=!1,r.joystickPanelEl&&r.joystickPanelEl.classList.remove("active"),r.joystickBallEl&&r.joystickBallEl.classList.remove("panel-open"),r.joystickBackdropEl&&r.joystickGesture==null&&r.joystickBackdropEl.classList.remove("active")}function Fr(){r.joystickPanelEl&&["ctrl","alt"].forEach(function(e){var t=r.joystickPanelEl.querySelector('.wjp-mod[data-key="'+e+'"]');t&&t.classList.toggle("active",!!r.modifiers[e])})}function tf(e){var t=e.target&&e.target.closest?e.target.closest(".wjp-close"):null;if(t){e.preventDefault(),e.stopPropagation(),Er();return}var n=e.target&&e.target.closest?e.target.closest(".wjp-key"):null;if(n){e.preventDefault(),e.stopPropagation();var i=n.getAttribute("data-key");i&&$c(i)}}function ns(){var e=r.joystickRootEl;if(e){var t=Qo();e.classList.toggle("visible",t),t||((r.joystickPointerId!==null||r.joystickGesture)&&ts(),r.joystickPinnedOpen&&Er(),r.joystickBackdropEl&&r.joystickBackdropEl.classList.remove("active"))}}function nf(){r.joystickLongPressTimer&&(clearTimeout(r.joystickLongPressTimer),r.joystickLongPressTimer=null),r.joystickMoveHandler&&(document.removeEventListener("pointermove",r.joystickMoveHandler),r.joystickMoveHandler=null),r.joystickUpHandler&&(document.removeEventListener("pointerup",r.joystickUpHandler),document.removeEventListener("pointercancel",r.joystickUpHandler),r.joystickUpHandler=null),r.joystickResizeHandler&&(window.removeEventListener("resize",r.joystickResizeHandler),window.removeEventListener("orientationchange",r.joystickResizeHandler),r.joystickResizeHandler=null),r.joystickRootEl&&r.joystickRootEl.parentNode&&r.joystickRootEl.parentNode.removeChild(r.joystickRootEl),r.joystickRootEl=null,r.joystickPanelEl=null,r.joystickBackdropEl=null,r.joystickBallEl=null,r.joystickPointerId=null,r.joystickGesture=null,r.joystickPressStart=null,r.joystickPinnedOpen=!1}function rf(){var e=document.getElementById("output");if(e){var t=!Re();r.resizeHandler=function(){qt(!0);var n=!Re();t!==n&&(t=n,!n&&r.sidebarPinned&&r.sessionsDrawerOpen?(r.sessionsDrawerOpen=!1,Se("wand-sidebar-open",!1),Rr()):n&&r.sidebarPinned&&!r.sessionsDrawerOpen&&(r.sessionsDrawerOpen=!0,Se("wand-sidebar-open",!0),Rr()))},window.addEventListener("resize",r.resizeHandler),window.visualViewport&&(r.visualViewportHandler=function(){qt(!0)},window.visualViewport.addEventListener("resize",r.visualViewportHandler)),r.visibilityHandler=function(){document.hidden||Qe("visibility",{forceReplay:!0})},document.addEventListener("visibilitychange",r.visibilityHandler),r.orientationHandler=function(){Qe("orientation",{forceReplay:!0})},window.addEventListener("orientationchange",r.orientationHandler),requestAnimationFrame(function(){qt(!0)})}}function af(){r.terminalHealthTimer||(r.terminalHealthTimer=setInterval(function(){if(!(!r.terminal||r.currentView!=="terminal"||document.hidden)){var e=r.sessions.find(function(u){return u.id===r.selectedId});if(!(!e||e.sessionKind==="structured")){Qe("health");var t=Date.now(),n=r.lastChunkAt>0&&t-r.lastChunkAt>300,i=t-r.lastTerminalResyncAt>3e4,a=r.lastChunkAt>r.lastTerminalResyncAt;i&&a&&(n||e.status!=="running")&&r.terminalOutput&&xn()}}},5e3))}function uf(){r.terminalHealthTimer&&(clearInterval(r.terminalHealthTimer),r.terminalHealthTimer=null)}function wr(){uf(),r.resizeTimer&&(clearTimeout(r.resizeTimer),r.resizeTimer=null),r.resizeObserver&&(r.resizeObserver.disconnect(),r.resizeObserver=null),r.resizeHandler&&(window.removeEventListener("resize",r.resizeHandler),r.resizeHandler=null),r.visualViewportHandler&&window.visualViewport&&(window.visualViewport.removeEventListener("resize",r.visualViewportHandler),r.visualViewportHandler=null),r.visibilityHandler&&(document.removeEventListener("visibilitychange",r.visibilityHandler),r.visibilityHandler=null),r.orientationHandler&&(window.removeEventListener("orientationchange",r.orientationHandler),r.orientationHandler=null),[["mousemove","resizeMouseMove"],["mouseup","resizeMouseUp"],["touchmove","resizeTouchMove"],["touchend","resizeTouchEnd"]].forEach(function(a){r[a[1]]&&(document.removeEventListener(a[0],r[a[1]]),r[a[1]]=null)}),Kn();var e=document.getElementById("output");if(r.terminalViewportEl&&(r.terminalViewportScrollHandler&&r.terminalViewportEl.removeEventListener("scroll",r.terminalViewportScrollHandler),r.terminalViewportTouchHandler&&r.terminalViewportEl.removeEventListener("touchmove",r.terminalViewportTouchHandler),r.terminalViewportTouchStartHandler&&r.terminalViewportEl.removeEventListener("touchstart",r.terminalViewportTouchStartHandler)),e&&(r.terminalWheelHandler&&e.removeEventListener("wheel",r.terminalWheelHandler),r.terminalClickHandler&&e.removeEventListener("click",r.terminalClickHandler)),r.terminalViewportEl=null,r.terminalViewportScrollHandler=null,r.terminalViewportTouchHandler=null,r.terminalViewportTouchStartHandler=null,r.terminalWheelHandler=null,r.terminalClickHandler=null,r.terminalScrollbarHideTimer&&(clearTimeout(r.terminalScrollbarHideTimer),r.terminalScrollbarHideTimer=null),r.terminalScrollbarEl&&r.terminalScrollbarEl.parentNode&&r.terminalScrollbarEl.parentNode.removeChild(r.terminalScrollbarEl),r.terminalScrollbarEl=null,r.terminalScrollbarThumbEl=null,r.terminalScrollbarDragging=!1,r.terminalScrollbarRafPending=!1,r.terminal&&(r.terminal.destroy(),r.terminal=null),e)for(var t=e.querySelectorAll(".terminal-scroll-wrap"),n=0;n<t.length;n++){var i=t[n];i.parentNode===e&&e.removeChild(i)}Ta(),r.syncOutputBuffer=null,r.syncOutputDeadline=0,r.syncFramingResidue=!1,r.terminalSessionId=null,r.terminalOutput="",r.terminalOutputMarker=0,r.terminalAutoFollow=!0,r.showTerminalJumpToBottom=!1,ot(),r.softResyncTimer&&(clearTimeout(r.softResyncTimer),r.softResyncTimer=null),r._resyncChunkTailTimer&&(clearTimeout(r._resyncChunkTailTimer),r._resyncChunkTailTimer=null),r._resyncChunkLastAt=0,r._resyncStatsWindowStart=0,r._resyncStatsCount=0,r._resyncLastWarnAt=0,r._resyncInProgress=!1,r.lastResize={cols:0,rows:0},nf()}function pi(e,t){if(r.selectedId){var n=r.sessions.find(function(a){return a.id===r.selectedId});if(!(!n||n.status!=="running")&&!ue(n)){e>256&&(e=256),t>160&&(t=160);var i={cols:e,rows:t};(r.lastResize.cols!==i.cols||r.lastResize.rows!==i.rows)&&(r.lastResize=i,fetch("/api/sessions/"+r.selectedId+"/resize",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(i)}).catch(function(){}))}}}function Qe(e,t){if(!r.terminal)return!1;var n=t||{},i=n.forceReplay===!0,a=document.getElementById("output");if(!a||a.offsetWidth===0||a.offsetHeight===0)return Cr(e||"fit-retry",{forceReplay:i}),!1;var u=r.terminalAutoFollow||xa(),o=r.terminal.cols,s=r.terminal.rows;return requestAnimationFrame(function(){requestAnimationFrame(function(){if(r.terminal){typeof r.terminal.remeasure=="function"&&r.terminal.remeasure(),pi(r.terminal.cols,r.terminal.rows);var l=r.terminal.cols!==o||r.terminal.rows!==s;!l&&i&&r.terminalOutput&&xn({skipFit:!0}),u&&pt("force")}})}),!0}function Cr(e,t){if(!r.terminal)return;var n=t||{},i=n.forceReplay!==!1,a=0,u=8;function o(){if(r.terminal){var s=document.getElementById("output");if(s&&s.offsetHeight,s&&s.offsetWidth>0&&s.offsetHeight>0){Qe(e,{forceReplay:i});return}++a>=u||(a<=4?requestAnimationFrame(o):setTimeout(o,32))}}o()}function qt(e){r.resizeTimer&&(clearTimeout(r.resizeTimer),r.resizeTimer=null);var t=e?0:100;r.resizeTimer=setTimeout(function(){r.resizeTimer=null,requestAnimationFrame(of)},t)}function of(){if(r.terminal){var e=r.terminalAutoFollow||xa();e&&pt("force"),pi(r.terminal.cols,r.terminal.rows)}}function Gt(e){r.workingDir=e;try{localStorage.setItem("wand-working-dir",e)}catch{}sf(e)}function Da(e){fetch("/api/recent-paths",{credentials:"same-origin"}).then(function(t){return t.json()}).then(function(t){e(t||[])}).catch(function(){e([])})}function sf(e){return fetch("/api/recent-paths",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({path:e})}).catch(function(){})}function ka(e){var t=r.sessions.find(function(n){return n.id===e});t&&t.status!=="running"&&!ue(t)?Us(e):Ht(e),_t()}function lf(e){var t=e.target;if(!(!t||!(t instanceof Element))){var n=t.closest(".sidebar-collapsed-tile");if(n&&n instanceof HTMLElement){if(n.dataset.collapsedNewSession){e.preventDefault(),e.stopPropagation(),ku();return}if(n.dataset.collapsedSessionId){e.preventDefault(),e.stopPropagation(),ka(n.dataset.collapsedSessionId);return}if(n.dataset.collapsedHistoryId){e.preventDefault(),e.stopPropagation();var i=n.dataset.collapsedHistoryId,a=n.dataset.cwd||"",u=n.dataset.provider==="codex"?Ai:xi;u(i,a).then(function(g){g&&g.id&&(r.selectedId=g.id,he(),r.drafts[g.id]="",mn().then(function(){Ht(g.id)}))});return}}var o=t.closest("#claude-history-toggle");if(o){e.preventDefault(),e.stopPropagation(),r.claudeHistoryExpanded=!r.claudeHistoryExpanded,r.claudeHistoryExpanded&&!r.claudeHistoryLoaded&&li(),pe();return}var s=t.closest("[data-action]");if(s&&s instanceof HTMLElement){if(e.preventDefault(),e.stopPropagation(),s.dataset.action==="toggle-manage-mode")Dc();else if(s.dataset.action==="select-all-visible")Po();else if(s.dataset.action==="clear-selection")Ac();else if(s.dataset.action==="delete-selected")xc();else if(s.dataset.action==="toggle-selection")gr(s.dataset.kind,s.dataset.id);else if(s.dataset.action==="swipe-delete-session"&&s.dataset.sessionId)Qa(s.dataset.sessionId);else if(s.dataset.action==="delete-session"&&s.dataset.sessionId)(function(g){An("\u786E\u8BA4\u5220\u9664\u8FD9\u4E2A\u4F1A\u8BDD\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002",{title:"\u5220\u9664\u4F1A\u8BDD"}).then(function(m){m&&Qa(g)})})(s.dataset.sessionId);else if(s.dataset.action==="delete-history"&&s.dataset.claudeSessionId)(function(g,m){An("\u786E\u8BA4\u5220\u9664\u8FD9\u6761 Claude \u4F1A\u8BDD\u5417\uFF1F",{title:"\u5220\u9664\u4F1A\u8BDD"}).then(function(y){y&&Rs(g,m)})})(s.dataset.claudeSessionId,s.closest(".session-item"));else if(s.dataset.action==="toggle-history-directory"&&s.dataset.cwd){var l=s.dataset.cwd;r.claudeHistoryExpandedDirs[l]=!r.claudeHistoryExpandedDirs[l],pe()}else if(s.dataset.action==="delete-history-directory"&&s.dataset.cwd)(function(g,m){var y=sv(g),C=mr().filter(function(E){return E.cwd===g}).length;An("\u786E\u8BA4\u6E05\u7A7A\u6B64\u76EE\u5F55\u4E0B\u7684 "+C+" \u6761 Claude \u5386\u53F2\u5417\uFF1F",{title:"\u6E05\u7A7A\u76EE\u5F55\u5386\u53F2",okLabel:"\u6E05\u7A7A"}).then(function(E){E&&(Ws(y,!0),ov(g,m,y))})})(s.dataset.cwd,s);else if(s.dataset.action==="clear-all-history")Sc();else if(s.dataset.action==="toggle-archived-group")r.archivedExpanded=!r.archivedExpanded,pe();else if(s.dataset.action==="resume"&&s.dataset.sessionId)cv(s);else if(s.dataset.action==="resume-history"&&s.dataset.claudeSessionId)vv(s);else if(s.dataset.action==="resume-codex-history"&&s.dataset.claudeSessionId)fv(s);else if(s.dataset.action==="delete-codex-history"&&s.dataset.claudeSessionId)pv(s);else if(s.dataset.action==="toggle-codex-history-directory"&&s.dataset.cwd){var d=s.dataset.cwd;r.codexHistoryExpandedDirs[d]=!r.codexHistoryExpandedDirs[d],pe()}else s.dataset.action==="worktree-merge"&&s.dataset.sessionId?Kl(s.dataset.sessionId):s.dataset.action==="worktree-cleanup"&&s.dataset.sessionId&&Jl(s.dataset.sessionId);return}var f=t.closest(".session-item");if(f){if(r.sessionsManageMode){f.dataset.sessionId?gr("sessions",f.dataset.sessionId):f.dataset.claudeHistoryId&&gr(f.dataset.provider==="codex"?"codex":"history",f.dataset.claudeHistoryId);return}if(f.classList.contains("swiped")){Mr();return}if(zs)return;if(f.dataset.sessionId)ka(f.dataset.sessionId);else if(f.dataset.claudeHistoryId){var c=f.dataset.claudeHistoryId,v=f.dataset.cwd,h=f.dataset.provider==="codex"?Ai:xi;h(c,v).then(function(g){g&&g.id&&(r.selectedId=g.id,he(),r.drafts[g.id]="",mn().then(function(){Ht(g.id),_t()}))})}}}}function df(e){if(!(e.key!=="Enter"&&e.key!==" ")){var t=e.target.closest(".session-item");if(t){if(e.preventDefault(),r.sessionsManageMode){t.dataset.sessionId?gr("sessions",t.dataset.sessionId):t.dataset.claudeHistoryId&&gr(t.dataset.provider==="codex"?"codex":"history",t.dataset.claudeHistoryId);return}if(t.dataset.sessionId)ka(t.dataset.sessionId);else if(t.dataset.claudeHistoryId){var n=t.dataset.claudeHistoryId,i=t.dataset.cwd,a=t.dataset.provider==="codex"?Ai:xi;a(n,i).then(function(u){u&&u.id&&(r.selectedId=u.id,he(),r.drafts[u.id]="",mn().then(function(){Ht(u.id),_t()}))})}}}}function Aa(e,t){var n=r.sessions.find(function(a){return a.id===r.selectedId});if(n){var i=n[e];if(!i){A("\u5F53\u524D\u4F1A\u8BDD\u6CA1\u6709\u53EF\u590D\u5236\u7684\u5185\u5BB9\u3002","error");return}Ur(String(i),null,function(){A(t||"\u5DF2\u590D\u5236","info")})}}function Ft(){return!r.terminal||!r.terminal.element?null:(r.terminalViewportEl=r.terminal.element,r.terminalViewportEl)}function Kn(){r.terminalScrollIdleTimer&&(clearTimeout(r.terminalScrollIdleTimer),r.terminalScrollIdleTimer=null)}function ot(){var e=document.getElementById("terminal-jump-bottom"),t=!!r.selectedId&&r.currentView==="terminal"&&!r.terminalAutoFollow&&!rs();r.showTerminalJumpToBottom=t,e&&e.classList.toggle("visible",t);var n=document.getElementById("output");n&&n.classList.toggle("has-jump-btn",t)}function xa(){var e=Ft();if(!e)return!0;var t=e.scrollHeight-e.clientHeight-e.scrollTop;return t<=r.terminalScrollThreshold}function rs(){var e=Ft();if(!e)return!0;var t=e.scrollHeight-e.clientHeight-e.scrollTop;return t<=2}function is(e){if(r.terminal){var t=Ft();if(t){var n=e?500:120;r.terminalProgrammaticScrollUntil=Math.max(r.terminalProgrammaticScrollUntil,Date.now()+n),e?t.scrollTo({top:t.scrollHeight,behavior:"smooth"}):t.scrollTop=t.scrollHeight}}}function Sa(){r.terminalAutoFollow=!1,Kn(),r.terminalProgrammaticScrollUntil=0,r.terminal&&"_shouldScrollToBottom"in r.terminal&&(r.terminal._shouldScrollToBottom=!1),ot()}function pt(e){if(r.terminal){var t=e==="force";if(t){r.terminalAutoFollow=!0,Kn(),is(!1),ot();return}if(!r.terminalAutoFollow){ot();return}is(!1),ot()}}function cf(e){var t=document.createElement("div");t.className="terminal-scrollbar";var n=document.createElement("div");n.className="terminal-scrollbar-track";var i=document.createElement("div");i.className="terminal-scrollbar-thumb",n.appendChild(i),t.appendChild(n),e.appendChild(t),r.terminalScrollbarEl=t,r.terminalScrollbarThumbEl=i,r.terminalScrollbarHideTimer=null,r.terminalScrollbarDragging=!1,r.terminalScrollbarRafPending=!1;function a(){r.terminalScrollbarHideTimer&&(clearTimeout(r.terminalScrollbarHideTimer),r.terminalScrollbarHideTimer=null),t.classList.add("visible")}function u(){r.terminalScrollbarDragging||(r.terminalScrollbarHideTimer&&clearTimeout(r.terminalScrollbarHideTimer),r.terminalScrollbarHideTimer=setTimeout(function(){r.terminalScrollbarHideTimer=null,r.terminalScrollbarDragging||t.classList.remove("visible")},1500))}function o(){r.terminalScrollbarRafPending=!1;var m=Ft();if(m){var y=m.scrollHeight,C=m.clientHeight;if(y<=C){t.classList.remove("visible");return}var E=n.clientHeight,B=Math.max(28,C/y*E),D=y-C,F=m.scrollTop/D,I=F*(E-B);i.style.height=B+"px",i.style.top=I+"px"}}function s(){r.terminalScrollbarRafPending||(r.terminalScrollbarRafPending=!0,requestAnimationFrame(o))}var l=Ft();l&&l.addEventListener("scroll",function(){a(),s(),u()},{passive:!0}),n.addEventListener("mousedown",function(m){if(m.target!==i){m.preventDefault();var y=Ft();if(y){var C=n.getBoundingClientRect(),E=(m.clientY-C.top)/C.height,B=y.scrollHeight-y.clientHeight;y.scrollTop=E*B}}});var d=0,f=0;i.addEventListener("mousedown",function(m){m.preventDefault(),m.stopPropagation(),r.terminalScrollbarDragging=!0,i.classList.add("dragging"),d=m.clientY;var y=Ft();f=y?y.scrollTop:0,document.addEventListener("mousemove",c),document.addEventListener("mouseup",v)});function c(m){m.preventDefault();var y=Ft();if(y){var C=n.clientHeight,E=y.scrollHeight,B=y.clientHeight,D=E-B;if(!(D<=0)){var F=Math.max(28,B/E*C),I=C-F;if(!(I<=0)){var L=m.clientY-d,H=L/I*D;y.scrollTop=f+H}}}}function v(){r.terminalScrollbarDragging=!1,i.classList.remove("dragging"),document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",v),u()}i.addEventListener("touchstart",function(m){if(m.touches.length===1){m.stopPropagation(),r.terminalScrollbarDragging=!0,i.classList.add("dragging"),d=m.touches[0].clientY;var y=Ft();f=y?y.scrollTop:0,document.addEventListener("touchmove",h,{passive:!1}),document.addEventListener("touchend",g),document.addEventListener("touchcancel",g)}},{passive:!1});function h(m){if(m.touches.length===1){m.preventDefault();var y=Ft();if(y){var C=n.clientHeight,E=y.scrollHeight,B=y.clientHeight,D=E-B;if(!(D<=0)){var F=Math.max(28,B/E*C),I=C-F;if(!(I<=0)){var L=m.touches[0].clientY-d,H=L/I*D;y.scrollTop=f+H}}}}}function g(){r.terminalScrollbarDragging=!1,i.classList.remove("dragging"),document.removeEventListener("touchmove",h),document.removeEventListener("touchend",g),document.removeEventListener("touchcancel",g),u()}t.addEventListener("mouseenter",function(){a()}),t.addEventListener("mouseleave",function(){r.terminalScrollbarDragging||u()}),s()}function ff(e){return e<4352?!1:e>=4352&&e<=4447||e>=9001&&e<=9002||e>=11904&&e<=12350||e>=12353&&e<=13311||e>=13312&&e<=19903||e>=19968&&e<=40959||e>=40960&&e<=42191||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65072&&e<=65103||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=126976&&e<=129535||e>=131072&&e<=196605||e>=196608&&e<=262141}var as="\u2060";function us(){return{mode:"normal"}}function pf(e){return!/[^\x00-\x7f]/.test(e)&&e.indexOf("\x1B")===-1}function vf(e,t){if(!e)return"";var n=String(e);if(t.mode==="normal"&&pf(n))return n;for(var i="",a=0;a<n.length;a++){var u=n.charCodeAt(a),o=u,s=1;if(u>=55296&&u<=56319&&a+1<n.length){var l=n.charCodeAt(a+1);l>=56320&&l<=57343&&(o=(u-55296)*1024+(l-56320)+65536,s=2)}var d=s===2?n.substr(a,2):n.charAt(a);switch(t.mode){case"normal":o===27?(t.mode="esc",i+=d):o===155?(t.mode="csi",i+=d):o===157||o===144||o===158||o===159?(t.mode="string",i+=d):(i+=d,ff(o)&&(i+=as));break;case"esc":i+=d,o===91?t.mode="csi":o===93||o===80||o===88||o===94||o===95?t.mode="string":t.mode="normal";break;case"csi":i+=d,o>=64&&o<=126&&(t.mode="normal");break;case"string":i+=d,o===7||o===156?t.mode="normal":o===27&&(t.mode="string-esc");break;case"string-esc":i+=d,o===92?t.mode="normal":t.mode="string";break}a+=s-1}return i}var vi="\x1B[?2026h",Ia="\x1B[?2026l",mf=200,gf=256*1024;function hf(e){if(!e||r.syncOutputBuffer===null&&e.indexOf(vi)===-1)return e;for(var t="",n=0;n<e.length;)if(r.syncOutputBuffer!==null){var i=e.indexOf(Ia,n);if(i===-1)return r.syncOutputBuffer+=e.slice(n),(r.syncOutputBuffer.length>gf||Date.now()>r.syncOutputDeadline)&&(t+=r.syncOutputBuffer,r.syncOutputBuffer=null,r.syncFramingResidue=!0),t;r.syncOutputBuffer+=e.slice(n,i+Ia.length),t+=r.syncOutputBuffer,r.syncOutputBuffer=null,n=i+Ia.length}else{var a=e.indexOf(vi,n);if(a===-1)return t+=e.slice(n),t;t+=e.slice(n,a),r.syncOutputBuffer=vi,r.syncOutputDeadline=Date.now()+mf,n=a+vi.length}return t}function $g(){if(r.syncOutputBuffer!==null){var e=r.syncOutputBuffer;return r.syncOutputBuffer=null,e}return""}function Jn(e,t){if(!(!e||t==null)){r.wideParserState||(r.wideParserState=us());var n=vf(t,r.wideParserState),i=hf(n),a=r.terminalAutoFollow!==!1;"_shouldScrollToBottom"in e&&(e._shouldScrollToBottom=a),i&&e.write(i),"_shouldScrollToBottom"in e&&(e._shouldScrollToBottom=a),a&&(r.terminalProgrammaticScrollUntil=Math.max(r.terminalProgrammaticScrollUntil,Date.now()+120)),Af(t)}}function Ta(){r.wideParserState=us()}function yf(){typeof document>"u"||document.addEventListener("copy",function(e){var t=window.getSelection&&window.getSelection();if(!(!t||t.isCollapsed)){var n=t.anchorNode,i=n&&n.nodeType===3?n.parentNode:n,a=document.getElementById("output");if(!(!a||!i||!a.contains(i))){var u=t.toString(),o=u.split(`
13
+ `).map(function(s){return s.split(as).join("").replace(/[ \t]+$/,"")}).join(`
14
+ `);o!==u&&e.clipboardData&&(e.clipboardData.setData("text/plain",o),e.preventDefault())}}})}yf();var os=150,ss=30,bf=160*1024,Ef=192*1024;function ls(e){if(!e||e.length<=Ef)return e;var t=e.length,n=function(F){if(!(typeof r>"u"||!r)){var I=r.terminalOutputMarker|0;if(!(I<=0)){var L=t-F;r.terminalOutputMarker=I>L?I-L:0}}},i=e.length-bf;if(i>0&&i<e.length){var a=e.charCodeAt(i);a>=56320&&a<=57343&&i++}for(var u=4096,o=Math.min(i+u,e.length),s=i;s<o;s++)if(e.charCodeAt(s)===10){var l=e.slice(s+1);return n(l.length),l}for(var d=Math.max(0,i-256),f=-1,c=i-1;c>=d;c--){var v=e.charCodeAt(c);if(v===27){f=c;break}if(v===7||v>=64&&v<=126)break}if(f!==-1){for(var h=!1,g=f+1;g<i;g++){var m=e.charCodeAt(g);if(m===7){h=!0;break}if(m>=64&&m<=126){h=!0;break}}if(!h)for(var y=Math.min(i+256,e.length),C=i;C<y;C++){var E=e.charCodeAt(C);if(E===7||E>=64&&E<=126){var B=e.slice(C+1);return n(B.length),B}}}var D=e.slice(i);return n(D.length),D}function mi(){if(r.terminal){if(typeof r.terminal.reset=="function"){r.terminal.reset(),Ta(),r.syncOutputBuffer=null,r.syncOutputDeadline=0;return}typeof r.terminal.write=="function"&&r.terminal.write("\x1Bc"),Ta(),r.syncOutputBuffer=null,r.syncOutputDeadline=0}}r._resyncStatsWindowStart=0,r._resyncStatsCount=0,r._resyncLastWarnAt=0;var Ff=5e3,wf=12,Cf=3e4;r._resyncInProgress=!1;function xn(e){if(!r.terminal||!r.terminalOutput)return!1;var t=e||{},n=r.terminalOutputMarker|0;n<0&&(n=0),n>r.terminalOutput.length&&(n=r.terminalOutput.length);var i=n>0?r.terminalOutput.slice(n):r.terminalOutput,a=i.length,u=typeof performance<"u"&&performance.now?performance.now():Date.now();r._resyncInProgress=!0;try{mi(),Jn(r.terminal,i)}finally{r._resyncInProgress=!1}r.lastTerminalResyncAt=Date.now(),pt("output"),t.skipFit||Qe("refresh");var o=Date.now();if(o-r._resyncStatsWindowStart>Ff)r._resyncStatsWindowStart=o,r._resyncStatsCount=1;else if(r._resyncStatsCount++,r._resyncStatsCount>wf&&o-r._resyncLastWarnAt>Cf){r._resyncLastWarnAt=o;var s=typeof performance<"u"&&performance.now?performance.now():Date.now();console.warn("[wand] softResyncTerminal high frequency","count="+r._resyncStatsCount+"/"+Math.round((o-r._resyncStatsWindowStart)/100)/10+"s","bufLen="+a,"lastReplayMs="+Math.round(s-u))}return!0}function Bf(e){r.softResyncTimer&&clearTimeout(r.softResyncTimer),r.softResyncTimer=setTimeout(function(){r.softResyncTimer=null,xn()},typeof e=="number"?e:150)}var Df=/\x1b\[\d*(?:;\d*)?[ABCDfHJK]/,ds=1500,kf=800;r._resyncChunkLastAt=0,r._resyncChunkTailTimer=null;function Af(e){if(!r._resyncInProgress&&r.syncFramingResidue&&(r.syncFramingResidue=!1,!(!e||typeof e!="string")&&e.indexOf("\x1B[")!==-1&&Df.test(e))){var t=Date.now(),n=t-r._resyncChunkLastAt;if(n>=ds){r._resyncChunkTailTimer&&(clearTimeout(r._resyncChunkTailTimer),r._resyncChunkTailTimer=null),r._resyncChunkLastAt=t,xn();return}if(!r._resyncChunkTailTimer){var i=Math.max(kf,ds-n);r._resyncChunkTailTimer=setTimeout(function(){r._resyncChunkTailTimer=null,r._resyncChunkLastAt=Date.now(),xn()},i)}}}function gi(e,t,n){if(!r.terminal)return!1;var i=fu(t||""),a=e||null,u=n||{},o=u.mode||"append",s=u.scroll!==!1,l=r.terminalSessionId!==a,d=r.terminalOutput||"",f=!!(a&&r.terminalLiveStreamSessions[a]),c=!1;if(i===d&&!l)return s&&pt("output"),ot(),!1;if(l&&(mi(),d="",r.terminalOutput="",r.terminalOutputMarker=0,r.terminalAutoFollow=!0,Kn(),ot()),o==="replace")i!==d&&(mi(),i&&Jn(r.terminal,i),c=!0);else{if(i.length<d.length&&!l)return!1;if(f&&!l&&o!=="replace"&&d&&!i.startsWith(d))return!1;if(i.startsWith(d)){var v=i.slice(d.length);v&&(Jn(r.terminal,v),c=!0)}else{if(d&&d.startsWith(i))return!1;mi(),i&&Jn(r.terminal,i),c=!0}}return r.terminalSessionId=a,r.terminalOutput=i,r.terminalOutputMarker=0,s&&(c||l||o==="replace")?pt(l||o==="replace"?"force":"output"):ot(),l&&pi(r.terminal.cols,r.terminal.rows),c||l}function Yn(){var e=document.getElementById("output");if(!(!e||r.terminal||r.terminalInitializing)){if(typeof WTermLib>"u"||!WTermLib.WTerm){r.terminalInitRetries||(r.terminalInitRetries=0),r.terminalInitRetries<10&&(r.terminalInitRetries++,setTimeout(Yn,200));return}r.terminalInitRetries=0,r.terminalInitializing=!0,r.selectedId&&(e.classList.remove("hidden"),e.classList.add("active"));for(var t=e.querySelectorAll(".terminal-scroll-wrap"),n=0;n<t.length;n++){var i=t[n];i.parentNode===e&&e.removeChild(i)}var a=document.createElement("div");a.className="terminal-scroll-wrap",e.appendChild(a);var u=new WTermLib.WTerm(a,{cols:120,rows:36,autoResize:!0,cursorBlink:!1,onData:function(){},onResize:function(s,l){pi(s,l),r.terminal&&r.terminalOutput&&xn({skipFit:!0})}}),o=document.fonts&&typeof document.fonts.ready=="object"?Promise.race([document.fonts.ready,new Promise(function(s){setTimeout(s,800)})]):Promise.resolve();o.then(function(){return u.init()}).then(function(){if(r.terminal=u,r.terminalInitializing=!1,ro(),a.isConnected&&(a.offsetHeight,typeof u.remeasure=="function"))try{u.remeasure()}catch{}r.terminalAutoFollow=!0,Kn();var s=Ft();if(s&&(r.terminalViewportScrollHandler=function(){if(Date.now()<r.terminalProgrammaticScrollUntil){ot();return}if(rs()){r.terminalAutoFollow=!0,Kn(),ot();return}Sa()},r.terminalViewportTouchStartHandler=function(d){d.touches&&d.touches.length===1&&(r.terminalTouchStartY=d.touches[0].clientY)},r.terminalViewportTouchHandler=function(d){!d.touches||d.touches.length!==1||typeof r.terminalTouchStartY=="number"&&d.touches[0].clientY-r.terminalTouchStartY>4&&Sa()},s.addEventListener("scroll",r.terminalViewportScrollHandler,{passive:!0}),s.addEventListener("touchstart",r.terminalViewportTouchStartHandler,{passive:!0}),s.addEventListener("touchmove",r.terminalViewportTouchHandler,{passive:!0})),r.terminalWheelHandler=function(d){d.deltaY<0&&Sa(),d.stopPropagation()},e.addEventListener("wheel",r.terminalWheelHandler,{passive:!0}),cf(e),r.selectedId){var l=r.sessions.find(function(d){return d.id===r.selectedId});l&&gi(l.id,l.output||"",{mode:"append",scroll:!1})}else Jn(u,`\u70B9\u51FB\u4E0A\u65B9\u300C\u65B0\u5BF9\u8BDD\u300D\u5F00\u59CB\u4F60\u7684\u7B2C\u4E00\u6B21\u5BF9\u8BDD\u3002\r
15
+ `);r.terminalClickHandler=function(d){Di()||Pt(d)},e.addEventListener("click",r.terminalClickHandler),ot(),Vc(),Jc(),rf(),af(),Qe("mount",{forceReplay:!0}),document.documentElement.classList.contains("is-wand-embed-terminal")&&[120,350,700].forEach(function(d){setTimeout(function(){r.terminal&&Qe("embed-settle")},d)})}).catch(function(s){r.terminalInitializing=!1,console.error("[wand] wterm init failed:",s)})}}function xf(e,t){if(!(!r.selectedId||!e)){var n=r.selectedId+":"+e;if(r.toolContentCache[n]){t(null,r.toolContentCache[n]);return}fetch("/api/sessions/"+encodeURIComponent(r.selectedId)+"/tool-content/"+encodeURIComponent(e),{credentials:"same-origin"}).then(function(i){return i.json()}).then(function(i){i.error?t(i.error,null):(r.toolContentCache[n]=i,t(null,i))}).catch(function(){t("\u52A0\u8F7D\u5931\u8D25",null)})}}function Sn(e){return!!(r.config&&r.config.cardDefaults&&r.config.cardDefaults[e])}function La(e,t,n,i){if(!(!e||e.dataset.truncated!=="true"||e.dataset.loaded==="true")){var a=e.dataset.toolUseId;a&&(t&&(t.innerHTML='<div class="tool-content-loading">\u52A0\u8F7D\u4E2D\u2026</div>'),e.dataset.loaded="loading",xf(a,function(u,o){if(u){t&&(t.innerHTML=i||'<div class="tool-content-error">\u52A0\u8F7D\u5931\u8D25\uFF0C\u70B9\u51FB\u91CD\u8BD5</div>'),e.dataset.loaded="";return}e.dataset.truncated="false",e.dataset.loaded="true";var s=typeof o.content=="string"?o.content:JSON.stringify(o.content);n(s,o)}))}}window.__tcToggle=function(e,t){var n=t.closest(".tool-use-card")||t.closest(".inline-diff");if(n){var i=n.classList.contains("collapsed");n.classList.toggle("collapsed");var a=i;t.setAttribute("aria-expanded",a?"true":"false");var u=n.querySelector(".tool-use-body, .diff-body");u&&u.setAttribute("aria-hidden",a?"false":"true");var o=n.dataset.expandKind||"tool-card";if(Nn(n,o),i){var s=n.querySelector(".tool-use-result");La(n,s,function(l){s&&(s.innerHTML='<pre class="tool-use-result-content">'+p(l)+"</pre>")},`<div class="tool-content-error" onclick="__tcToggle(null, this.closest('.tool-use-card,.inline-diff').querySelector('.tool-use-header,.diff-header'))">\u52A0\u8F7D\u5931\u8D25\uFF0C\u70B9\u51FB\u91CD\u8BD5</div>`)}}e&&(e.preventDefault(),e.stopPropagation())},window.__thinkingToggle=function(e){var t=e.classList.contains("collapsed");if(t){e.classList.remove("collapsed"),e.classList.add("expanded"),e.querySelector(".thinking-inline-preview").textContent=e.dataset.thinking||"";var n=e.querySelector(".thinking-inline-action");n&&(n.textContent="\u6536\u8D77")}else{e.classList.remove("expanded"),e.classList.add("collapsed");var i=(e.dataset.thinking||"").slice(0,57)+((e.dataset.thinking||"").length>60?"\u2026":"");e.querySelector(".thinking-inline-preview").textContent=i;var n=e.querySelector(".thinking-inline-action");n&&(n.textContent="\u5C55\u5F00")}Nn(e,"thinking")},window.__subagentReplyToggle=function(e,t){e&&(e.preventDefault(),e.stopPropagation());var n=t&&t.closest?t.closest(".subagent-reply"):null;if(n){var i=n.getAttribute("data-expanded")==="true";Zu(n,"subagent-reply",!i),Nn(n,"subagent-reply")}},window.__subagentPanelToggle=function(e,t){e&&(e.preventDefault(),e.stopPropagation());var n=t&&t.closest?t.closest(".subagent-panel"):null;n&&n.setAttribute("data-expanded","true")};function Sf(e){if(e)for(var t=e.querySelectorAll('.subagent-panel[data-follow-tail="true"]'),n=0;n<t.length;n++){var i=t[n].querySelector(".subagent-panel-body");i&&(i.scrollTop=i.scrollHeight)}}window.__openFilePreview=function(e){e&&ii(e)},window.__inlineToolToggle=function(e){var t=e.classList.toggle("inline-tool-open"),n=e.querySelector(".inline-tool-expanded");n&&(n.style.display=t?"block":"none");var i=e.querySelector(".inline-tool-status");i&&(e.dataset.status==="error"?i.textContent="\u2717":e.dataset.status==="done"&&(i.textContent="\u2713")),t&&La(e,n,function(a){e.dataset.result=a,n&&(n.innerHTML='<div class="inline-tool-result">'+hl(a,"")+"</div>")}),Nn(e,"inline-tool")},window.__terminalExpand=function(e){var t=e.closest(".inline-terminal");if(t){var n=t.querySelector(".term-body");if(n){var i=n.style.display==="none";n.style.display=i?"block":"none",t.dataset.expanded=i?"true":"false",e.setAttribute("aria-expanded",i?"true":"false"),n.setAttribute("aria-hidden",i?"false":"true");var a=e.querySelector(".term-toggle-icon");if(a&&(a.textContent=i?"\u25BC":"\u25B6"),Nn(t,"terminal"),i){var u=n.querySelector(".term-output");La(t,u,function(o){if(u){for(var s=o.split(`
16
+ `),l="",d=0;d<s.length;d++)!s[d]&&d===s.length-1||(l+='<div class="term-line">'+p(s[d])+"</div>");u.innerHTML=l}})}}}};function Xg(e){var t=document.querySelector(".thinking-streaming");if(t){var n=t.querySelector(".thinking-streaming-text");if(n){var i=e.split(`
17
17
  `),a=i.slice(-3);n.textContent=a.join(`
18
18
  `),n.scrollTop=n.scrollHeight}}}window.__askSelect=function(e,t,n,i){var a=r.askUserSelections[e];if(a||(a={submitted:!1},r.askUserSelections[e]=a),!a.submitted){var u=a[t]||[];if(i){var o=u.indexOf(n);o===-1?u.push(n):u.splice(o,1)}else u=u[0]===n?[]:[n];a[t]=u,window.__askRender(e)}},window.__askRender=function(e){var t=document.querySelector('[data-tool-use-id="'+e+'"]');if(t){var n=r.askUserSelections[e]||{};t.querySelectorAll(".ask-user-option").forEach(function(o){var s=parseInt(o.dataset.questionIndex,10),l=parseInt(o.dataset.optionIndex,10),d=(n[s]||[]).indexOf(l)!==-1;o.classList.toggle("selected",d)});var i=t.querySelector(".ask-user-submit");if(i){var a=t.querySelectorAll(".ask-user-question-group"),u=!0;a.forEach(function(o,s){(!n[s]||n[s].length===0)&&(u=!1)}),i.disabled=!u||!!n.submitted,n.submitted&&(i.textContent="\u5DF2\u63D0\u4EA4...",i.classList.add("ask-user-submitted"))}}},window.__askSubmit=function(e){var t=r.askUserSelections[e];if(!(!t||t.submitted||!r.selectedId)){var n=document.querySelector('[data-tool-use-id="'+e+'"]');if(n){var i=n.querySelectorAll(".ask-user-question-group"),a=[],u=!0;if(i.forEach(function(s,l){var d=t[l]||[];if(d.length===0){u=!1;return}var f=[];d.forEach(function(c){var v=s.querySelector('[data-option-index="'+c+'"]');v&&f.push(v.dataset.optionLabel)}),a.push(f.join(", "))}),!!u){t.submitted=!0,window.__askRender(e);var o=a.join(`
19
19
  `);fetch("/api/sessions/"+r.selectedId+"/input",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({input:o+`
20
- `,view:r.currentView})}).catch(function(s){console.error("[wand] Error sending answer:",s),t.submitted=!1,window.__askRender(e)})}}}};function xf(){if(!r.__globalListenersBound){r.__globalListenersBound=!0,document.addEventListener("click",function(){var t=document.getElementById("sidebar-overflow-menu");t&&t.classList.remove("open")}),document.addEventListener("click",function(t){var n=t.target;if(!(!n||typeof n.closest!="function")){var i=n.closest("#check-update-button, #do-update-button, #do-restart-button");!i||i.disabled||(t.preventDefault(),i.id==="check-update-button"?Yl():i.id==="do-update-button"?ug():og())}}),window.addEventListener("resize",function(){var t=document.getElementById("sidebar-overflow-menu");t&&t.classList.remove("open")});var e=function(){r.topbarMoreOpen=!1;var t=document.getElementById("topbar-more-menu"),n=document.getElementById("topbar-more-button");t&&t.classList.add("hidden"),n&&(n.classList.remove("active"),n.setAttribute("aria-expanded","false"))};document.addEventListener("click",function(t){if(r.topbarMoreOpen){var n=document.getElementById("topbar-more-menu"),i=n&&n.parentElement;i&&!i.contains(t.target)&&e()}}),document.addEventListener("keydown",function(t){t.key==="Escape"&&r.topbarMoreOpen&&e()}),document.addEventListener("click",function(t){if(r.plusPopoverOpen){var n=document.getElementById("composer-plus-popover"),i=document.getElementById("attach-btn");n&&n.contains(t.target)||i&&i.contains(t.target)||Ji()}}),document.addEventListener("keydown",function(t){t.key==="Escape"&&r.plusPopoverOpen&&Ji()}),document.addEventListener("click",function(t){var n=t.target;if(!(!n||typeof n.closest!="function")){var i=n.closest("#auto-approve-toggle");i&&(t.preventDefault(),Pc())}}),document.addEventListener("click",function(t){if(!t.target.closest(".folder-picker-container")){var n=document.getElementById("folder-picker-dropdown");n&&n.classList.add("hidden")}}),document.addEventListener("input",function(t){var n=t.target;if(!(!n||!n.matches('input[type="range"][data-mode-control="thinking"]'))){var i=[];try{i=JSON.parse(n.dataset.thinkingLabels||"[]")}catch{}var a=Math.max(0,Math.min(i.length-1,Math.round(Number(n.value)||0))),u=i[a]||"auto",o=n.closest('[data-mode-control-pill="thinking"]'),s=o&&o.querySelector(".thinking-slider-value");s&&(s.textContent=u),n.setAttribute("aria-valuetext",u);var l=n.closest(".thinking-slider-rail"),d=Number(n.max)||0;l&&l.style.setProperty("--thinking-progress",(d?a/d*100:0)+"%")}}),document.addEventListener("change",function(t){var n=t.target;if(!(!n||n.nodeType!==1)&&!(typeof n.matches!="function"||!n.matches("[data-mode-control]"))){var i=n.getAttribute("data-mode-control"),a=n.value,u=i==="thinking"&&n.matches('input[type="range"]');if(u)try{var o=JSON.parse(n.dataset.thinkingValues||"[]");a=o[Math.round(Number(n.value)||0)]||"off"}catch{a="off"}i==="mode"?Im(a):i==="model"?Sm(a):i==="thinking"&&Dm(a),!u&&n.closest&&n.closest("#composer-plus-popover")&&Ji()}})}}function Sf(){xf();var e=document.getElementById("login-button");if(e){e.addEventListener("click",cu);var t=document.getElementById("login-form");t&&t.addEventListener("submit",function(b){b.preventDefault(),cu()});var n=document.getElementById("login-switch-server-button");n&&n.addEventListener("click",yl);var i=document.getElementById("password"),a=document.getElementById("toggle-password-button");a&&i&&a.addEventListener("click",function(){var b=i.type==="text";i.type=b?"password":"text",a.textContent=b?"\u663E\u793A":"\u9690\u85CF",a.setAttribute("aria-label",b?"\u663E\u793A\u5BC6\u7801":"\u9690\u85CF\u5BC6\u7801"),a.setAttribute("aria-pressed",b?"false":"true"),i.focus()}),i&&(i.addEventListener("keydown",function(b){b.key==="Enter"&&cu()}),i.addEventListener("input",function(){i.dataset.error="false",i.setAttribute("aria-invalid","false");var b=document.getElementById("login-error");b&&yi(b)}),i.focus());return}var u=document.getElementById("welcome-input");u&&(u.addEventListener("keydown",function(b){b.key==="Enter"&&!b.shiftKey&&(b.preventDefault(),Cs())}),u.focus());var o=document.getElementById("welcome-send-btn");o&&o.addEventListener("click",function(){Cs()});var s=document.getElementById("welcome-tool-claude");s&&s.addEventListener("click",function(){Zl()});var l=document.getElementById("welcome-tool-codex");l&&l.addEventListener("click",function(){r.sessionTool="codex",r.preferredCommand="codex",r.modeValue="full-access",Zl()});var d=document.getElementById("welcome-tool-structured");d&&d.addEventListener("click",function(){Wl().then(function(){Ot(!0)}).catch(function(b){A(b&&b.message||"\u65E0\u6CD5\u542F\u52A8\u7ED3\u6784\u5316\u4F1A\u8BDD\u3002","error")})}),gg();var f=document.getElementById("sessions-list");f&&(f.addEventListener("click",of),f.addEventListener("keydown",sf),f.addEventListener("mouseover",Wm),f.addEventListener("mouseout",zm),ov(f)),window.addEventListener("scroll",Xt,!0),window.addEventListener("resize",Xt);var c=document.getElementById("provider-cards");c&&c.addEventListener("click",function(b){var S=b.target.closest(".provider-card");if(!(!S||S.classList.contains("disabled"))){var W=S.getAttribute("data-provider");W&&(r.sessionTool=W,r.preferredCommand=W,Nr())}});var v=document.getElementById("session-kind-cards");v&&v.addEventListener("click",function(b){var S=b.target.closest(".session-kind-card");if(!(!S||S.classList.contains("disabled"))){var W=S.getAttribute("data-session-kind");W&&(r.sessionCreateKind=W,Nr())}});var h=document.getElementById("mode-cards");h&&h.addEventListener("click",function(b){var S=b.target.closest(".mode-card");if(S){var W=S.getAttribute("data-mode");W&&(r.modeValue=W,Nr())}});var g=document.getElementById("session-worktree-toggle");g&&g.addEventListener("change",function(){r.sessionCreateWorktree=g.checked});var m=document.getElementById("cwd");m&&(m.addEventListener("input",function(){r.cwdValue=m.value}),m.addEventListener("change",function(){r.cwdValue=m.value}),m.addEventListener("input",td),m.addEventListener("focus",td),m.addEventListener("blur",function(){setTimeout(rr,120)}));var y=document.getElementById("sessions-toggle-button");y&&y.addEventListener("click",Pm);var C=document.getElementById("sessions-drawer-backdrop");C&&C.addEventListener("click",Wr);var E=document.getElementById("close-drawer-button");E&&E.addEventListener("click",Wr);var B=document.getElementById("sidebar-collapse-btn");B&&B.addEventListener("click",Vm);var D=document.getElementById("sidebar-pin-btn");D&&D.addEventListener("click",Um);var F=document.getElementById("sidebar-more-btn"),I=document.getElementById("sidebar-overflow-menu");F&&I&&F.addEventListener("click",function(b){b.stopPropagation();var S=!I.classList.contains("open");I.classList.toggle("open",S),S&&Jm(I)});var L=document.getElementById("sidebar-home-btn");L&&L.addEventListener("click",function(){r.selectedId=null,he(),Ft(),_t(),Qt()});var H=document.getElementById("sidebar-refresh-btn");H&&H.addEventListener("click",function(){window.location.reload()});var U=document.getElementById("logout-button");U&&U.addEventListener("click",bl);var x=document.getElementById("switch-server-button");x&&x.addEventListener("click",yl);var k=document.getElementById("back-to-native-button");k&&k.addEventListener("click",ym);var T=document.getElementById("settings-button");T&&T.addEventListener("click",Qm);var M=document.getElementById("close-settings-button");M&&M.addEventListener("click",tr);var Y=document.getElementById("settings-modal");Y&&Y.addEventListener("click",function(b){b.target.id==="settings-modal"&&tr()});var z=document.getElementById("save-password-button");z&&z.addEventListener("click",$m);for(var Q=document.querySelectorAll(".settings-tab"),le=0;le<Q.length;le++)Q[le].addEventListener("click",function(b){var S=b.currentTarget||this,W=S&&S.getAttribute?S.getAttribute("data-tab"):null;W&&ku(W)});var ee=document.getElementById("save-config-button");ee&&ee.addEventListener("click",rg),xm();var Z=document.getElementById("cfg-default-model-refresh");Z&&Z.addEventListener("click",Ol);var q=document.getElementById("cfg-commit-model-refresh");q&&q.addEventListener("click",Ol);var P=document.getElementById("cfg-commit-cli");P&&P.addEventListener("change",function(){Vi(!0)});var N=document.getElementById("cfg-view-env-btn");N&&N.addEventListener("click",Am);var G=document.getElementById("save-display-button");G&&G.addEventListener("click",ig);var J=document.getElementById("app-icon-picker");if(J)for(var ne=J.querySelectorAll(".settings-app-icon-option"),de=0;de<ne.length;de++)ne[de].addEventListener("click",function(){var b=this.getAttribute("data-icon");if(!(!b||typeof WandNative>"u"||typeof WandNative.setAppIcon!="function"))try{WandNative.setAppIcon(b),Gl(b);var S=document.getElementById("app-icon-message");S&&(S.textContent="\u56FE\u6807\u5DF2\u5207\u6362\uFF0C\u8FD4\u56DE\u684C\u9762\u540E\u751F\u6548",S.style.color="var(--success)",S.classList.remove("hidden"),setTimeout(function(){S.classList.add("hidden")},3e3))}catch{}});var re=document.getElementById("upload-cert-button");re&&re.addEventListener("click",ag);for(var ie=document.querySelectorAll(".file-picker-input"),qe=0;qe<ie.length;qe++)(function(b){b.addEventListener("change",function(){var S=b.closest(".file-picker");if(S){var W=S.querySelector(".file-picker-name");W&&(b.files&&b.files[0]?(W.textContent=b.files[0].name,S.classList.add("file-picker-has-file")):(W.textContent=W.getAttribute("data-default")||"\u672A\u9009\u62E9\u6587\u4EF6",S.classList.remove("file-picker-has-file")))}})})(ie[qe]);var ge=document.getElementById("auto-update-web-toggle");ge&&ge.addEventListener("change",function(){Au("web",ge.checked)});var ce=document.getElementById("auto-update-apk-toggle");ce&&ce.addEventListener("change",function(){Au("apk",ce.checked)});var R=document.getElementById("auto-update-dmg-toggle");R&&R.addEventListener("change",function(){Au("dmg",R.checked)});var gt=document.getElementById("beta-channel-toggle");gt&&gt.addEventListener("change",function(){dg(gt.checked?"beta":"stable")});var _e=document.getElementById("copy-connect-code-button");_e&&_e.addEventListener("click",function(){var b=document.getElementById("android-connect-code");b&&Ur(b.textContent,_e)});var $=document.getElementById("cfg-notif-sound");$&&($.checked=r.notifSound,$.addEventListener("change",function(){r.notifSound=$.checked;try{localStorage.setItem("wand-notif-sound",String(r.notifSound))}catch{}r.notifSound&&Fi();var b=document.getElementById("notif-volume-field");b&&(b.style.display=r.notifSound?"":"none")}));var fe=document.getElementById("cfg-notif-volume"),Ce=document.getElementById("cfg-notif-volume-val"),Be=function(b){if(b){var S=Number(b.min||0),W=Number(b.max||100),be=Number(b.value||0),ht=W>S?Math.max(0,Math.min(100,(be-S)/(W-S)*100)):0;b.style.setProperty("--range-fill",ht+"%")}};if(fe){fe.value=String(r.notifVolume),Ce&&(Ce.textContent=r.notifVolume+"%"),Be(fe);var ve=document.getElementById("notif-volume-field");ve&&(ve.style.display=r.notifSound?"":"none");var Fe=null;fe.addEventListener("input",function(){r.notifVolume=parseInt(fe.value,10),Ce&&(Ce.textContent=r.notifVolume+"%"),Be(fe);try{localStorage.setItem("wand-notif-volume",String(r.notifVolume))}catch{}if(We&&typeof WandNative.setNotificationVolume=="function")try{WandNative.setNotificationVolume(r.notifVolume)}catch{}}),fe.addEventListener("change",function(){Fi()})}var tt=document.getElementById("cfg-notif-bubble");tt&&(tt.checked=r.notifBubble,tt.addEventListener("change",function(){r.notifBubble=tt.checked;try{localStorage.setItem("wand-notif-bubble",String(r.notifBubble))}catch{}}));var dt=document.getElementById("notification-request-btn");dt&&dt.addEventListener("click",function(){if(We){window._onNativePermissionResult=function(){bn(),delete window._onNativePermissionResult};try{WandNative.requestPermission()}catch{}}else typeof Notification<"u"&&Notification.requestPermission().then(function(){bn()})});var it=document.getElementById("notification-reset-btn");it&&it.addEventListener("click",cg);var Ne=document.getElementById("notification-test-btn");Ne&&Ne.addEventListener("click",$l);var Rt=document.getElementById("notification-test-delay-btn");if(Rt&&Rt.addEventListener("click",fg),bn(),We&&typeof WandNative.getAvailableSounds=="function"){var Ye=document.getElementById("native-sound-section"),De=document.getElementById("native-sound-select"),Oe=document.getElementById("native-sound-preview");if(Ye&&De){Ye.classList.remove("hidden");try{var te=JSON.parse(WandNative.getAvailableSounds()),we=WandNative.getNotificationSound();De.innerHTML="";for(var w=0;w<te.length;w++){var at=document.createElement("option");at.value=te[w].id,at.textContent=te[w].name,te[w].id===we&&(at.selected=!0),De.appendChild(at)}De.addEventListener("change",function(){try{WandNative.setNotificationSound(De.value)}catch{}}),Oe&&Oe.addEventListener("click",function(){try{WandNative.previewSound(De.value)}catch{}})}catch{}}}if(We&&typeof WandNative.isHapticEnabled=="function"){var kt=document.getElementById("native-haptic-section"),ut=document.getElementById("cfg-haptic-enabled");if(kt&&ut){kt.classList.remove("hidden");try{ut.checked=WandNative.isHapticEnabled()}catch{}ut.addEventListener("change",function(){try{WandNative.setHapticEnabled(ut.checked)}catch{}ut.checked&&Gn("medium")})}}var Zt=document.getElementById("topbar-new-session-button");Zt&&Zt.addEventListener("click",Bu);var At=document.getElementById("drawer-new-session-button");At&&At.addEventListener("click",Bu);var Wt=document.getElementById("close-modal-button");Wt&&Wt.addEventListener("click",hn);var zt=document.getElementById("close-worktree-merge-button");zt&&zt.addEventListener("click",er);var Te=document.getElementById("worktree-merge-cancel-button");Te&&Te.addEventListener("click",er);var Ue=document.getElementById("worktree-merge-confirm-button");Ue&&Ue.addEventListener("click",Gm);var Ke=document.getElementById("run-button");Ke&&Ke.addEventListener("click",pg);var xt=document.getElementById("approve-permission-btn");xt&&xt.addEventListener("click",qc);var Vt=document.getElementById("deny-permission-btn");Vt&&Vt.addEventListener("click",Oc);var Ut=document.getElementById("send-input-button");Ut&&Ut.addEventListener("click",function(){_t(),fp()});var En=document.getElementById("stop-button");En&&En.addEventListener("click",Ja);var ct=document.getElementById("session-modal");ct&&ct.addEventListener("click",function(b){b.target.id==="session-modal"&&hn(),b.target.id==="worktree-merge-modal"&&er()});var ke=document.getElementById("input-box");ke&&(Ks(ke),ke.addEventListener("keydown",Fg),ke.addEventListener("paste",Sg),ke.addEventListener("input",function(){r.terminalComposing||nd(ke)||(Ev(ke),et(ke.value,!0),Gi(ke))}),ke.addEventListener("compositionstart",function(){r.terminalInteractive&&(r.terminalComposing=!0)}),ke.addEventListener("compositionend",function(){r.terminalComposing&&(r.terminalComposing=!1,r.terminalInteractive&&nd(ke))}),ke.addEventListener("focus",function(){_t(),pv({target:ke})}),ke.addEventListener("blur",vv));var Je=document.getElementById("attach-btn"),Ae=document.getElementById("file-upload-input"),Pn=document.getElementById("composer-plus-popover"),ft=document.getElementById("plus-attach-item");Je&&Pn&&Je.addEventListener("click",function(b){b.stopPropagation(),_m()}),ft&&Ae&&ft.addEventListener("click",function(){Ji(),Ae.click()}),Ae&&Ae.addEventListener("change",function(){var b=Ae.files;if(b)for(var S=0;S<b.length;S++)xu(b[S]);Ae.value=""});var en=document.getElementById("voice-btn");en&&en.addEventListener("click",function(){_a()});var tn=document.getElementById("voice-cancel-btn");tn&&tn.addEventListener("click",function(){_a(!1)});var St=document.getElementById("voice-record-btn");St&&(St.addEventListener("pointerdown",rp),St.addEventListener("pointermove",ip),St.addEventListener("pointerup",ys),St.addEventListener("pointercancel",ys));var oe=document.getElementById("prompt-optimize-btn");oe&&oe.addEventListener("click",function(){Tg()});var Le=document.querySelector(".input-composer");Le&&(Le.addEventListener("dragover",function(b){b.preventDefault(),b.stopPropagation(),Le.classList.add("drag-over")}),Le.addEventListener("dragleave",function(b){b.preventDefault(),b.stopPropagation(),Le.classList.remove("drag-over")}),Le.addEventListener("drop",function(b){b.preventDefault(),b.stopPropagation(),Le.classList.remove("drag-over");var S=b.dataTransfer&&b.dataTransfer.files;if(S)for(var W=0;W<S.length;W++)xu(S[W])}));var je=["terminal-interactive-toggle-top"];je.forEach(function(b){var S=document.getElementById(b);S&&S.addEventListener("click",$p)});var nt=document.getElementById("file-panel-toggle-btn");nt&&nt.addEventListener("click",ni);var j=document.getElementById("file-side-panel-close");j&&j.addEventListener("click",Zu);var O=document.getElementById("file-panel-backdrop");O&&O.addEventListener("click",Zu);var K=document.getElementById("topbar-file-button");K&&K.addEventListener("click",ni);var ae=document.getElementById("topbar-cwd");ae&&(ae.addEventListener("click",function(){r.filePanelOpen||ni()}),ae.addEventListener("keydown",function(b){(b.key==="Enter"||b.key===" ")&&(b.preventDefault(),r.filePanelOpen||ni())}));var se=document.getElementById("topbar-more-button"),ye=document.getElementById("topbar-more-menu");se&&ye&&(se.addEventListener("click",function(b){b.stopPropagation(),r.topbarMoreOpen=!r.topbarMoreOpen,ye.classList.toggle("hidden",!r.topbarMoreOpen),se.classList.toggle("active",r.topbarMoreOpen),se.setAttribute("aria-expanded",r.topbarMoreOpen?"true":"false")}),ye.addEventListener("click",function(b){var S=b.target&&b.target.closest?b.target.closest(".topbar-more-item"):null;if(S){var W=S.getAttribute("data-action");switch(r.topbarMoreOpen=!1,ye.classList.add("hidden"),se.classList.remove("active"),se.setAttribute("aria-expanded","false"),W){case"copy-claude-session-id":Da("claudeSessionId",Bt()&&Bt().provider==="codex"?"Codex thread ID \u5DF2\u590D\u5236":"Claude \u4F1A\u8BDD ID \u5DF2\u590D\u5236");break;case"copy-cwd":Da("cwd","\u5DE5\u4F5C\u76EE\u5F55\u5DF2\u590D\u5236");break;case"copy-session-id":Da("id","\u4F1A\u8BDD ID \u5DF2\u590D\u5236");break;case"worktree-merge":r.selectedId&&Vl(r.selectedId);break;case"worktree-cleanup":r.selectedId&&Ul(r.selectedId);break;case"delete-session":r.selectedId&&(function(be){An("\u786E\u5B9A\u8981\u5220\u9664\u5F53\u524D\u4F1A\u8BDD\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002",{title:"\u5220\u9664\u5F53\u524D\u4F1A\u8BDD"}).then(function(ht){ht&&Ya(be)})})(r.selectedId);break}}}));var ar=document.getElementById("terminal-scale-down-top"),ur=document.getElementById("terminal-scale-up-top");ar&&ar.addEventListener("click",function(){eo(-.25)}),ur&&ur.addEventListener("click",function(){eo(.25)});var $i=document.getElementById("page-refresh-btn");$i&&$i.addEventListener("click",function(b){if(b&&b.shiftKey){location.reload();return}xn(),Ft({preserveStickState:!0}),Xa(!0)});var Hn=document.getElementById("terminal-jump-bottom");Hn&&Hn.addEventListener("click",function(){pt("force")});var _n=document.getElementById("chat-unread-bubble");_n&&_n.addEventListener("click",function(){Ru(!0)});var Xi=document.getElementById("file-explorer-refresh");Xi&&Xi.addEventListener("click",function(){Lt()});var Yr=document.getElementById("file-explorer-up");Yr&&Yr.addEventListener("click",_d);var Pe=document.getElementById("file-explorer-cwd");if(Pe&&Pe.tagName==="INPUT"){var or=Pe.value,rd=function(b){var S=(b||"").trim();return S?(S=S.replace(/\/{2,}/g,"/"),S.length>1&&(S=S.replace(/\/+$/,"")),S):""};Pe.addEventListener("focus",function(){or=Pe.value,setTimeout(function(){try{Pe.select()}catch{}},0)}),Pe.addEventListener("keydown",function(b){if(b.key==="Enter"){b.preventDefault();var S=rd(Pe.value);if(!S)return;or=S,Pe.value=S,Lt({cwd:S}),Pe.blur()}else b.key==="Escape"&&(b.preventDefault(),Pe.value=or,Pe.blur())}),Pe.addEventListener("blur",function(){var b=rd(Pe.value);if(!b){Pe.value=or;return}if(b===or){Pe.value=b;return}or=b,Pe.value=b,Lt({cwd:b})})}var Zi=document.getElementById("file-search-input"),Gr=document.getElementById("file-search-clear");Zi&&Zi.addEventListener("input",function(b){r.fileSearchQuery=b.target.value.trim(),Gr&&Gr.classList.toggle("visible",r.fileSearchQuery.length>0),io()}),Gr&&Gr.addEventListener("click",function(){r.fileSearchQuery="",Zi&&(Zi.value=""),Gr.classList.remove("visible")});var me=document.getElementById("folder-picker-input"),xe=document.getElementById("folder-picker-dropdown"),Pu=null,Kt=-1,Fn=[];function id(b){me&&me.classList.add("invalid");var S=document.getElementById("folder-picker-validation");S&&(S.textContent=b,S.classList.add("visible"))}function ad(){me&&me.classList.remove("invalid");var b=document.getElementById("folder-picker-validation");b&&(b.textContent="",b.classList.remove("visible"))}function Pg(b){if(!b.length)return"";var S='<div class="folder-recent-section"><div class="folder-recent-title">\u6700\u8FD1\u4F7F\u7528</div>';return b.forEach(function(W){var be=W.path||W;S+='<div class="folder-recent-item" data-path="'+p(be)+'">'+mt(be,"folder-recent-item-path")+"</div>"}),S+="</div>",S}function Hg(){xe&&Ca(function(b){var S=Pg(b);S?(xe.innerHTML=S,xe.classList.remove("hidden"),jt(xe),xe.querySelectorAll(".folder-recent-item").forEach(function(W){W.addEventListener("click",function(){var be=this.dataset.path;me&&(me.value=be,Gt(be),nn(be))})})):Qr()})}var ud=document.getElementById("working-dir-indicator");ud&&ud.addEventListener("click",function(){r.selectedId=null,he(),r.drafts={},Qt(),setTimeout(function(){var b=document.getElementById("folder-picker-input");b&&b.focus()},50)});var Hu=document.getElementById("folder-picker-toggle"),xe=document.getElementById("folder-picker-dropdown");Hu&&xe&&Hu.addEventListener("click",function(){xe.classList.toggle("hidden"),Hu.classList.toggle("open")});var ea=document.querySelector(".folder-picker-compact");if(ea&&(ea.addEventListener("dragover",function(b){b.preventDefault(),b.stopPropagation(),this.classList.add("drag-over")}),ea.addEventListener("dragleave",function(b){b.preventDefault(),b.stopPropagation(),this.classList.remove("drag-over")}),ea.addEventListener("drop",function(b){b.preventDefault(),b.stopPropagation(),this.classList.remove("drag-over");var S=b.dataTransfer&&b.dataTransfer.items;if(S)for(var W=0;W<S.length;W++){var be=S[W];if(be.kind==="file"&&be.webkitGetAsEntry){var ht=be.webkitGetAsEntry();if(ht&&ht.isDirectory&&me){var It=ht.fullPath;me.value=It,Gt(It),nn(It);break}}}})),xe&&xe.addEventListener("click",function(b){var S=b.target.closest(".folder-picker-quick-btn");if(S&&me){var W=S.dataset.path;me.value=W,Gt(W),nn(W),xe.classList.add("hidden");var be=document.getElementById("folder-picker-toggle");be&&be.classList.remove("open")}}),me){var _g=$e();nn(_g),me.addEventListener("focus",function(){var b=this.value.trim();b?nn(b):Hg()}),me.addEventListener("input",function(b){var S=b.target.value.trim();Kt=-1,Pu&&clearTimeout(Pu),Pu=setTimeout(function(){S?nn(S):Qr()},150)}),me.addEventListener("keydown",function(b){if(b.key==="Escape")Qr(),this.blur();else if(b.key==="ArrowDown")b.preventDefault(),Fn.length>0&&(Kt=Math.min(Kt+1,Fn.length-1),od());else if(b.key==="ArrowUp")b.preventDefault(),Kt>0&&(Kt--,od());else if(b.key==="Enter"&&Kt>=0){b.preventDefault();var S=Fn[Kt];if(S){var W=S.dataset.path;if(W===".."){var be=me.value.trim(),ht=be.substring(0,be.lastIndexOf("/"));ht&&(me.value=ht||"/",Gt(me.value),nn(ht||"/"))}else me.value=W,Gt(W),Qr()}}})}function od(){Fn.forEach(function(b,S){b.classList.toggle("active",S===Kt)})}function Eh(b){}function nn(b){xe&&(xe.innerHTML='<div class="folder-picker-loading">\u52A0\u8F7D\u4E2D...</div>',xe.classList.remove("hidden"),Kt=-1,Fn=[],fetch("/api/folders?q="+encodeURIComponent(b),{credentials:"same-origin"}).then(function(S){return S.json().then(function(W){return{ok:S.ok,status:S.status,data:W}})}).then(function(S){var W=S.data;if(!S.ok||W.error){id(W.error||"\u8DEF\u5F84\u65E0\u6548"),xe.innerHTML='<div class="folder-picker-error">'+p(W.error||"\u8DEF\u5F84\u65E0\u6548")+"</div>";return}ad(),W.currentPath;var be=W.items||[],ht=W.currentPath||b;if(be.length===0){xe.innerHTML='<div class="folder-picker-loading">\u7A7A\u76EE\u5F55</div>';return}xe.innerHTML=be.map(function(It){var ta=It.type==="parent"?"\u21A9\uFE0F":"\u{1F4C1}",_u=It.type==="parent"?".. (\u8FD4\u56DE\u4E0A\u7EA7)":It.name;return'<div class="folder-picker-item" data-path="'+p(It.path)+'" data-type="'+It.type+'"><span class="folder-picker-item-icon">'+ta+"</span><span>"+p(_u)+"</span></div>"}).join(""),Fn=Array.from(xe.querySelectorAll(".folder-picker-item")),Fn.forEach(function(It){It.addEventListener("click",function(){var ta=this.dataset.path,_u=this.dataset.type;if(me)if(_u==="parent"){var cd=me.value.trim(),fd=cd.substring(0,cd.lastIndexOf("/"));me.value=fd||"/",Gt(me.value),nn(fd||"/")}else me.value=ta,Gt(ta),ad(),Qr()})})}).catch(function(S){id("\u52A0\u8F7D\u5931\u8D25"),xe.innerHTML='<div class="folder-picker-error">\u52A0\u8F7D\u5931\u8D25</div>'}))}function Qr(){xe&&xe.classList.add("hidden"),Kt=-1,Fn=[]}var wn=document.getElementById("folder-picker-modal"),sd=document.getElementById("close-folder-picker");function Fh(){if(wn){wn.classList.remove("hidden"),me&&(me.value=$e());var b=$e();nn(b)}}sd&&wn&&sd.addEventListener("click",function(){wn.classList.add("hidden")}),wn&&wn.addEventListener("click",function(b){b.target===wn&&wn.classList.add("hidden")});var ld=document.getElementById("topbar-git-badge");ld&&ld.addEventListener("click",function(b){b.preventDefault(),yo()});var dd=document.getElementById("quick-commit-modal");dd&&dd.addEventListener("click",function(b){b.target.id==="quick-commit-modal"&&!r.quickCommitSubmitting&&Wn()}),bo(),Yn(),wv(),Rc(),kp(),rt()}function Ft(e){var t=e||{};r.lastRenderedHash=0,r.lastRenderedMsgCount=0,r.lastRenderedEmpty=null,r.renderPending=!1,r.chatRenderedCount=r.chatPageSize,r.askUserSelections={},r.chatScrollElement&&(r.chatScrollHandler&&r.chatScrollElement.removeEventListener("scroll",r.chatScrollHandler),r.chatScrollWheelHandler&&r.chatScrollElement.removeEventListener("wheel",r.chatScrollWheelHandler),r.chatScrollTouchStartHandler&&r.chatScrollElement.removeEventListener("touchstart",r.chatScrollTouchStartHandler),r.chatScrollTouchMoveHandler&&r.chatScrollElement.removeEventListener("touchmove",r.chatScrollTouchMoveHandler)),r.chatScrollElement=null,r.chatScrollHandler=null,r.chatScrollWheelHandler=null,r.chatScrollTouchStartHandler=null,r.chatScrollTouchMoveHandler=null,r.chatIsProgrammaticScroll=!1,t.preserveStickState||(r.chatStickToBottom=!0,r.chatUnreadCount=0,r.chatUnreadStartIndex=-1,r.chatInitialRenderDone=!1)}function $e(){return r.workingDir||an()}window.addEventListener("online",function(){r.isOnline=!0,hi()}),window.addEventListener("offline",function(){r.isOnline=!1,hi()});function hi(){var e=document.getElementById("offline-banner");if(!r.isOnline&&!e){var t=document.createElement("div");t.id="offline-banner",t.className="offline-banner",t.textContent="You are offline - some features may be limited",document.body.appendChild(t)}else r.isOnline&&e&&e.remove()}function If(){var e=document.getElementById("app");e&&(e.innerHTML='<div class="boot-loading"><div class="boot-loading-card"><div class="boot-loading-spinner"></div><div class="boot-loading-text">\u6B63\u5728\u8FDE\u63A5 Wand\u2026</div></div></div>')}function Cr(e,t){if(r.config&&!document.hidden){var n=t&&t.immediate===!0,i=Date.now();!n&&i-r.lastForegroundSyncAt<1500||(r.lastForegroundSyncAt=i,r.foregroundSyncTimer&&(clearTimeout(r.foregroundSyncTimer),r.foregroundSyncTimer=null),Tf(e,n))}}function Tf(e,t){return!r.config||document.hidden?Promise.resolve():(jo(),t?ya("resume-force"):(!r.ws||r.ws.readyState!==WebSocket.OPEN&&r.ws.readyState!==WebSocket.CONNECTING)&&di(),r.claudeHistoryLoaded&&Po(),r.codexHistoryLoaded&&Ho(),mn({skipSelectedOutputReload:!0}).catch(function(n){console.error("[wand] foreground sync failed:",e,n)}))}function Lf(){window.__wandForegroundSyncBound||(window.__wandForegroundSyncBound=!0,document.addEventListener("visibilitychange",function(){document.hidden?ha():(Cr("visibility"),wr("visibility"))}),window.addEventListener("focus",function(){Cr("focus")}),window.addEventListener("pageshow",function(){Cr("pageshow")}),window.addEventListener("resume",function(){Cr("resume")}),window.addEventListener("wand-android-resume",function(){Cr("android-resume",{immediate:!0}),wr("android-resume")}),window.addEventListener("wand-ime-state",function(e){var t=e&&e.detail&&e.detail.state;if(t==="shown"||t==="hidden")try{Qe("native-ime-"+t,{forceReplay:!0}),pt("native-ime")}catch{}}),window.addEventListener("wand-android-network",function(e){var t=e&&e.detail&&e.detail.state;if(t==="lost"){r.isOnline=!1;try{hi()}catch{}return}if(t==="available"||t==="changed"||t==="validated"){r.isOnline=!0;try{hi()}catch{}ya("android-network-"+t)}}))}function Mf(){fetch("/api/session-check",{credentials:"same-origin"}).then(function(e){return e.ok?e.json():{authed:!1}}).then(function(e){return!e||!e.authed?(r.loginChecked=!0,Qt(),null):fetch("/api/config",{credentials:"same-origin"}).then(function(t){return t.ok?t.json():(r.loginChecked=!0,Qt(),null)})}).then(function(e){e&&(r.config=e,r.loginChecked=!0,requestAnimationFrame(function(){try{Qt({skipShellChrome:!0})}catch{}Lf(),_o(),Pt(),ql(),zf(),e.updateAvailable&&e.latestVersion&&fs(e.currentVersion||"-",e.latestVersion),In&&sg(),sn&&lg(),r.claudeHistoryLoaded||setTimeout(function(){r.claudeHistoryLoaded||li()},600)}))}).catch(function(){if(r.loginChecked=!0,!navigator.onLine){var e=document.getElementById("app");e&&(e.innerHTML='<div class="boot-loading"><div class="boot-loading-card"><div class="boot-loading-text" style="font-size:1.3em;margin-bottom:12px;display:flex;align-items:center;justify-content:center;gap:8px">'+V("signal",{size:20,strokeWidth:1.8})+'<span>\u65E0\u6CD5\u8FDE\u63A5\u5230\u670D\u52A1\u5668</span></div><div class="boot-loading-text" style="opacity:0.7;font-size:0.95em">\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u6216\u786E\u8BA4 Wand \u670D\u52A1\u6B63\u5728\u8FD0\u884C\u3002</div><button onclick="location.reload()" style="margin-top:18px;padding:8px 24px;border-radius:8px;border:1px solid rgba(150,118,85,0.3);background:rgba(255,255,255,0.8);cursor:pointer;font-size:0.95em">\u91CD\u8BD5</button></div></div>'),window.addEventListener("online",function(){location.reload()},{once:!0});return}Qt()})}document.addEventListener("click",function(e){if(!Re()&&!r.sidebarPinned&&!r.sidebarCollapsed&&r.sessionsDrawerOpen){var t=e.target;!t||!(t instanceof Element)||t.closest("#sessions-drawer")||t.closest("#sessions-toggle-button")||t.closest(".floating-sidebar-toggle")||t.closest(".sidebar-tile-bubble")||t.closest(".modal-backdrop, .modal-overlay, .modal-container, [role='dialog'], [role='menu'], .topbar-more-menu, .sidebar-header-overflow, .folder-picker-dropdown, .path-suggestions, .permission-prompt-overlay, .restart-overlay")||Hm()}},!0),If(),Mf();function Qt(e){var t=e&&e.skipShellChrome,n=document.getElementById("app"),i=r.config!==null,a=r.modalOpen,u=!i||!!document.getElementById("output");if(u&&Fr(),document.documentElement.classList.add("no-transition"),r.sidebarPinned&&!r.sidebarCollapsed&&!Re()&&(r.sessionsDrawerOpen=!0,Se("wand-sidebar-open",!0)),n.innerHTML=i?Pf():Of(),Ft(),Sf(),Rr(),Hi(),Xn(Bt()),Ki(),t||jr(),i&&r.filePanelOpen&&Lt(),document.body.offsetHeight,requestAnimationFrame(function(){document.documentElement.classList.remove("no-transition")}),a&&r.modalOpen){var o=document.getElementById("session-modal");if(o){o.classList.remove("hidden");var s=document.getElementById("cwd");s&&(s.value=r.cwdValue),Nr()}}if(i&&r.selectedId&&r.gitStatusSessionId!==r.selectedId&&Bn(r.selectedId),i){var l=r.sessions.find(function(d){return d.id===r.selectedId});Lu(l)}ir(document.getElementById("topbar-cwd")),ir(document.getElementById("blank-chat-cwd-path")),ir(document.getElementById("working-dir-indicator-path")),jt()}function qf(){var e=r.sessions.find(function(n){return n.id===r.selectedId}),t=e&&e.approvalStats;return!t||t.total===0?'<span class="approval-stats hidden" id="approval-stats"></span>':'<span class="approval-stats" id="approval-stats"><span class="approval-stats-divider"></span><span class="approval-stats-badge" id="approval-stats-badge" title="\u672C\u6B21\u4F1A\u8BDD\u81EA\u52A8\u6279\u51C6\u7EDF\u8BA1"><svg class="approval-stats-icon" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg><span class="approval-stats-total">'+t.total+'</span></span><span class="approval-stats-popup" id="approval-stats-popup"><span class="approval-stats-popup-title">\u81EA\u52A8\u6279\u51C6\u7EDF\u8BA1</span>'+(t.command>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+V("terminal",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u547D\u4EE4\u6267\u884C</span><span class="approval-stats-row-count">'+t.command+"</span></span>":"")+(t.file>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+V("edit",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u6587\u4EF6\u5199\u5165</span><span class="approval-stats-row-count">'+t.file+"</span></span>":"")+(t.tool>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+V("wrench",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u5176\u4ED6\u5DE5\u5177</span><span class="approval-stats-row-count">'+t.tool+"</span></span>":"")+'<span class="approval-stats-row approval-stats-row-total"><span class="approval-stats-row-icon">'+V("sigma",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u5408\u8BA1</span><span class="approval-stats-row-count">'+t.total+"</span></span></span></span>"}function Of(){return r.loginChecked?'<div class="login-container"><div class="login-card"><div class="login-header"><div class="login-logo"><div class="login-logo-icon">W</div><span class="login-logo-text">Wand</span></div><div class="login-subtitle">\u5728\u6D4F\u89C8\u5668\u4E2D\u8FD0\u884C\u672C\u673A\u7EC8\u7AEF</div></div><form id="login-form" class="login-body" autocomplete="on"><input type="text" name="username" autocomplete="username" value="wand" tabindex="-1" aria-hidden="true" style="position:absolute;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none" readonly /><p class="login-hint">\u8F93\u5165 Wand \u8BBF\u95EE\u5BC6\u7801\u4EE5\u8FDB\u5165\u63A7\u5236\u53F0\u3002</p><div class="field"><label class="field-label" for="password">\u5BC6\u7801</label><div class="password-field"><input id="password" type="password" class="field-input password-input" placeholder="\u8F93\u5165\u8BBF\u95EE\u5BC6\u7801" autocomplete="current-password" data-error="false" aria-describedby="password-hint login-error" aria-invalid="false" /><button id="toggle-password-button" type="button" class="password-toggle" aria-label="\u663E\u793A\u5BC6\u7801" aria-pressed="false">\u663E\u793A</button></div><p id="password-hint" class="hint">\u4F7F\u7528\u4F60\u5728 Wand \u4E2D\u8BBE\u7F6E\u7684\u8BBF\u95EE\u5BC6\u7801\u3002</p><p id="login-error" class="error-message hidden" role="alert"></p></div><div id="login-cert-hint" class="login-cert-hint hidden" role="alert"><div class="login-cert-hint-title">\u8BC1\u4E66\u4E0D\u53D7\u4FE1\u4EFB\uFF0C\u767B\u5F55\u6001\u65E0\u6CD5\u4FDD\u5B58</div><p class="login-cert-hint-body">\u5BC6\u7801\u662F\u5BF9\u7684\uFF0C\u4F46\u5F53\u524D HTTPS \u8BC1\u4E66\u4E0D\u53D7\u6D4F\u89C8\u5668\u4FE1\u4EFB\uFF0C\u6D4F\u89C8\u5668\u56E0\u6B64\u62D2\u7EDD\u4FDD\u5B58\u767B\u5F55 Cookie\uFF0C\u6240\u4EE5\u8FDB\u4E0D\u4E86\u63A7\u5236\u53F0\u3002<br/>\u89E3\u51B3\u529E\u6CD5\uFF08\u4EFB\u9009\u5176\u4E00\uFF09\uFF1A\u6539\u7528 HTTP \u8BBF\u95EE\u672C\u670D\u52A1\uFF1B\u6216\u628A\u672C\u670D\u52A1\u8BC1\u4E66\u8BBE\u4E3A\u300C\u53D7\u4FE1\u4EFB\u300D\uFF08\u63A8\u8350 mkcert\uFF09\uFF1B\u6216\u5728\u672C\u673A\u5C06\u8BE5\u81EA\u7B7E\u8BC1\u4E66\u8BBE\u4E3A\u5B8C\u5168\u4FE1\u4EFB\u540E\u91CD\u8BD5\u3002</p><a id="login-cert-http-link" class="btn btn-ghost btn-block" href="#" rel="noopener">\u6539\u7528 HTTP \u8BBF\u95EE</a></div><button id="login-button" type="submit" class="btn btn-primary btn-block">\u8FDB\u5165\u63A7\u5236\u53F0</button>'+(fu()?'<button id="login-switch-server-button" class="btn btn-ghost btn-block login-switch-server" type="button"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="8" rx="2"/><rect x="2" y="13" width="20" height="8" rx="2"/><line x1="6" y1="7" x2="6.01" y2="7"/><line x1="6" y1="17" x2="6.01" y2="17"/></svg><span>\u5207\u6362\u670D\u52A1\u5668</span></button>':"")+"</form></div></div>":'<div class="login-container"><div class="login-card login-card-loading"><div class="login-header"><div class="login-logo"><div class="login-logo-icon">W</div><span class="login-logo-text">Wand</span></div><div class="login-subtitle">\u6B63\u5728\u6062\u590D\u767B\u5F55\u72B6\u6001</div></div><div class="login-body"><div class="login-status"><span class="login-spinner" aria-hidden="true"></span><div><p class="login-hint">\u6B63\u5728\u68C0\u67E5\u672C\u5730\u767B\u5F55\u4F1A\u8BDD\uFF0C\u8BF7\u7A0D\u5019\u3002</p><p class="login-muted">\u5982\u679C\u4F60\u521A\u5237\u65B0\u9875\u9762\uFF0C\u8FD9\u662F\u6B63\u5E38\u73B0\u8C61\u3002</p></div></div></div></div></div>'}function Pf(){var e="<\/script>",t=r.sessions.find(function(g){return g.id===r.selectedId}),n=t?$n(t.command):"\u672A\u9009\u62E9\u4F1A\u8BDD",i=t?t.mode+" | "+t.status:"\u70B9\u51FB\u4E0A\u65B9\u300C\u65B0\u5BF9\u8BDD\u300D\u5F00\u59CB",a=r.selectedId&&r.drafts[r.selectedId]||"",u=r.sessionsDrawerOpen?" open":"",o=Xu()?" open":"",s=bm(),l=Dt(s,r.chatMode),d=Re(),f=!!r.sidebarPinned&&!!r.sidebarCollapsed,c=f||!d&&(!!r.sidebarPinned||!!r.sessionsDrawerOpen),v=f?" sidebar-collapsed":"",h=f?" collapsed":"";return'<div class="app-container"><div id="sessions-drawer-backdrop" class="drawer-backdrop'+o+'"></div><div class="main-layout'+(r.sessionsDrawerOpen?" sidebar-open":"")+(c?" sidebar-pinned":"")+v+'"><aside id="sessions-drawer" class="sidebar'+u+(c?" pinned":"")+h+'"><div class="sidebar-header"><div class="sidebar-header-main"><div class="topbar-logo-icon">W</div><span class="sidebar-title">\u4F1A\u8BDD</span><span class="session-count" id="session-count">'+String(r.sessions.length)+'</span></div><div class="sidebar-header-actions"><div class="sidebar-header-more"><button id="sidebar-more-btn" class="btn btn-ghost btn-sm" type="button" title="\u66F4\u591A\u64CD\u4F5C"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="5" r="1.5"/><circle cx="12" cy="12" r="1.5"/><circle cx="12" cy="19" r="1.5"/></svg></button><div class="sidebar-header-overflow" id="sidebar-overflow-menu"><button class="overflow-item" id="sidebar-home-btn" type="button"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg><span>\u56DE\u5230\u9996\u9875</span></button><button class="overflow-item" id="sidebar-refresh-btn" type="button"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 4 23 10 17 10"/><path d="M20.49 15a9 9 0 1 1-2.12-9.36L23 10"/></svg><span>\u5237\u65B0\u9875\u9762</span></button></div></div><button id="sidebar-pin-btn" class="btn btn-ghost btn-sm sidebar-pin-toggle'+(r.sidebarPinned?" pinned":"")+'" type="button" title="'+(r.sidebarPinned?"\u5DF2\u56FA\u5B9A\u5E38\u9A7B\uFF08\u70B9\u51FB\u89E3\u9664\u9501\u5B9A\uFF09":"\u56FA\u5B9A\u4FA7\u680F\u5E38\u9A7B")+'" aria-label="'+(r.sidebarPinned?"\u89E3\u9664\u56FA\u5B9A\u5E38\u9A7B":"\u56FA\u5B9A\u4FA7\u680F\u5E38\u9A7B")+'" aria-pressed="'+(r.sidebarPinned?"true":"false")+'"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="12" y1="17" x2="12" y2="22"/><path d="M5 17h14v-1.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V6h1a2 2 0 0 0 0-4H8a2 2 0 0 0 0 4h1v4.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24z"/></svg></button><button id="sidebar-collapse-btn" class="btn btn-ghost btn-sm sidebar-collapse-toggle'+(f?" collapsed":"")+'" type="button" title="'+(f?"\u5C55\u5F00\u4E3A\u5168\u5C3A\u5BF8":"\u6536\u8D77\u4E3A\u7A84\u6761")+'" aria-label="'+(f?"\u5C55\u5F00\u4E3A\u5168\u5C3A\u5BF8":"\u6536\u8D77\u4E3A\u7A84\u6761")+'">'+(f?'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="10 6 16 12 10 18"/><line x1="20" y1="5" x2="20" y2="19"/></svg>':'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="14 6 8 12 14 18"/><line x1="4" y1="5" x2="4" y2="19"/></svg>')+'</button><button id="close-drawer-button" class="btn btn-ghost btn-icon sidebar-close drawer-close-btn" type="button" aria-label="\u5173\u95ED\u83DC\u5355"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" aria-hidden="true"><line x1="6" y1="6" x2="18" y2="18"/><line x1="18" y1="6" x2="6" y2="18"/></svg></button></div></div><div class="sidebar-body"><div id="sessions-panel"><div class="sessions-list" id="sessions-list">'+ma()+'</div></div></div><div class="sidebar-footer"><button id="drawer-new-session-button" class="btn btn-primary btn-block"><span>+</span> \u65B0\u4F1A\u8BDD</button><div class="sidebar-footer-actions"><button id="file-panel-toggle-btn" class="btn btn-ghost btn-sm'+(r.filePanelOpen?" active":"")+'" type="button" title="\u67E5\u770B\u6587\u4EF6"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/></svg><span>\u6587\u4EF6</span></button><button id="settings-button" class="btn btn-ghost btn-sm" type="button" title="\u8BBE\u7F6E"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/></svg><span>\u8BBE\u7F6E</span></button>'+(hm()?'<button id="back-to-native-button" class="btn btn-ghost btn-sm sidebar-back-to-native" type="button" title="\u8FD4\u56DE App \u539F\u751F\u754C\u9762"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="10" y="3" width="11" height="18" rx="2"/><line x1="14" y1="17" x2="17" y2="17"/><polyline points="7 8 3 12 7 16"/></svg><span>\u8FD4\u56DEApp</span></button>':"")+(fu()?'<button id="switch-server-button" class="btn btn-ghost btn-sm sidebar-switch-server" type="button" title="\u5207\u6362\u670D\u52A1\u5668"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="8" rx="2"/><rect x="2" y="13" width="20" height="8" rx="2"/><line x1="6" y1="7" x2="6.01" y2="7"/><line x1="6" y1="17" x2="6.01" y2="17"/></svg><span>\u5207\u6362</span></button>':"")+'<button id="logout-button" class="btn btn-ghost btn-sm sidebar-logout" type="button" title="\u9000\u51FA\u767B\u5F55"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"/><polyline points="16 17 21 12 16 7"/><line x1="21" y1="12" x2="9" y2="12"/></svg><span>\u9000\u51FA</span></button></div></div></aside><main class="main-content"><div class="main-header-row"><div class="topbar-left"><button id="sessions-toggle-button" class="floating-sidebar-toggle'+(r.sessionsDrawerOpen?" active":"")+'" aria-label="\u5207\u6362\u4F1A\u8BDD\u4FA7\u680F" type="button"><span class="hamburger-icon"><span></span><span></span><span></span></span></button><span class="topbar-brand" aria-hidden="true">W</span></div><div class="topbar-center">'+(t?'<span class="topbar-session-title" title="'+p(t.description||t.command||"")+'">'+p(t.title||$n(t.command))+'</span><span class="session-status-pill '+Bo(t)+'" title="'+p(pr(t))+'"><span class="session-status-dot"></span><span class="session-status-text">'+p(pr(t))+'</span></span><span class="current-task hidden" id="current-task"></span>'+(t.cwd?mt(t.cwd,"topbar-cwd",' id="topbar-cwd" role="button" tabindex="0"'):""):'<span class="topbar-tagline">Wand \u63A7\u5236\u53F0</span><span class="current-task hidden" id="current-task"></span>')+'</div><div class="topbar-right"><button id="topbar-file-button" class="topbar-btn square'+(r.filePanelOpen?" active":"")+'" type="button" aria-label="\u6587\u4EF6" title="\u67E5\u770B\u6587\u4EF6\uFF08\u53EF\u4FEE\u6539\u8DEF\u5F84\uFF09"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/></svg></button><span id="topbar-git-slot" class="topbar-git-slot">'+ho()+"</span>"+(t?Gd(t):"")+'</div></div><div id="file-panel-backdrop" class="file-panel-backdrop'+(r.filePanelOpen?" open":"")+'"></div><div id="file-side-panel" class="file-side-panel'+(r.filePanelOpen?" open":"")+'"><div class="file-side-panel-header"><div class="file-side-panel-title-group"><span class="file-side-panel-icon">'+Me("folder-open",{size:16})+'</span><span class="file-side-panel-title">\u6587\u4EF6</span></div><div class="file-side-panel-header-actions"><button class="file-side-panel-iconbtn" id="file-explorer-refresh" type="button" title="\u5237\u65B0" aria-label="\u5237\u65B0\u6587\u4EF6\u5217\u8868">'+Me("refresh",{size:15})+'</button><button id="file-side-panel-close" class="file-side-panel-iconbtn close" type="button" aria-label="\u5173\u95ED\u6587\u4EF6\u9762\u677F" title="\u5173\u95ED">'+Me("x",{size:16})+'</button></div></div><div class="file-side-panel-body"><div class="file-explorer-header"><button class="file-explorer-up" id="file-explorer-up" type="button" title="\u8FD4\u56DE\u4E0A\u7EA7\u76EE\u5F55" aria-label="\u8FD4\u56DE\u4E0A\u7EA7\u76EE\u5F55">'+Me("arrow-up",{size:15})+'</button><input type="text" class="file-explorer-path" id="file-explorer-cwd" value="'+p(t&&t.cwd?t.cwd:an())+'" title="'+p(t&&t.cwd?t.cwd:an())+'" placeholder="\u8F93\u5165\u8DEF\u5F84\u5E76\u56DE\u8F66..." spellcheck="false" autocomplete="off" autocapitalize="off" autocorrect="off" aria-label="\u5F53\u524D\u8DEF\u5F84\uFF0C\u53EF\u76F4\u63A5\u4FEE\u6539\u540E\u56DE\u8F66" /></div><div class="file-search-box"><span class="file-search-icon">'+Me("search",{size:14})+'</span><input type="text" id="file-search-input" class="file-search-input" placeholder="\u641C\u7D22\u5F53\u524D\u76EE\u5F55\u2026" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" /><button class="file-search-clear" id="file-search-clear" type="button" aria-label="\u6E05\u9664\u641C\u7D22" title="\u6E05\u9664">'+Me("x",{size:13})+'</button></div><div class="file-explorer" id="file-explorer">'+Md(t&&t.cwd?t.cwd:an())+'</div></div></div><div id="output" class="terminal-container'+(r.selectedId?"":" hidden")+' active"><div class="terminal-scale-overlay" aria-label="\u7EC8\u7AEF\u7F29\u653E\u63A7\u4EF6"><button id="terminal-scale-down-top" class="terminal-scale-overlay-btn terminal-scale-btn" type="button" title="\u7F29\u5C0F">\u2212</button><span class="terminal-scale-overlay-label terminal-scale-label" id="terminal-scale-label-top">'+Math.round(r.terminalScale*100)+'%</span><button id="terminal-scale-up-top" class="terminal-scale-overlay-btn terminal-scale-btn" type="button" title="\u653E\u5927">+</button><span class="terminal-scale-overlay-divider"></span><button id="page-refresh-btn" class="terminal-scale-overlay-btn" type="button" title="\u5237\u65B0\u9875\u9762">\u21BB</button></div><button id="terminal-jump-bottom" class="terminal-jump-bottom'+(r.showTerminalJumpToBottom?" visible":"")+'" type="button" title="\u56DE\u5230\u5E95\u90E8" aria-label="\u56DE\u5230\u5E95\u90E8"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 3.5v9M3.5 8l4.5 4.5L12.5 8"/></svg></button></div><div id="chat-output" class="chat-container hidden"><div id="chat-fold-bar" class="chat-fold-bar hidden" aria-live="polite"></div><button id="chat-unread-bubble" class="chat-unread-bubble" type="button" title="\u56DE\u5230\u6700\u65B0\u6D88\u606F" aria-label="\u56DE\u5230\u6700\u65B0\u6D88\u606F"><span class="chat-unread-bubble-icon"><svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 3.5v9M3.5 8l4.5 4.5L12.5 8"/></svg></span><span class="chat-unread-bubble-count" aria-hidden="true"></span></button></div><div id="blank-chat" class="blank-chat'+(r.selectedId?" hidden":"")+'"><div class="blank-chat-inner"><div class="blank-chat-logo">W</div><h2 class="blank-chat-title">Wand</h2><p class="blank-chat-subtitle">\u652F\u6301\u7EC8\u7AEF PTY \u4F1A\u8BDD\u4E0E\u7ED3\u6784\u5316 chat \u4F1A\u8BDD\uFF0C\u4E24\u79CD\u6A21\u5F0F\u53EF\u5E76\u5B58\u3002</p><div class="blank-chat-tools"><button class="blank-chat-tool-btn" id="welcome-tool-claude" type="button"><span class="tool-icon">'+V("terminal",{size:16,strokeWidth:1.8})+'</span>\u65B0\u5EFA\u7EC8\u7AEF\u4F1A\u8BDD</button><button class="blank-chat-tool-btn" id="welcome-tool-codex" type="button"><span class="tool-icon tool-icon-text">\u2318</span>\u65B0\u5EFA Codex \u4F1A\u8BDD</button><button class="blank-chat-tool-btn" id="welcome-tool-structured" type="button"><span class="tool-icon">'+V("chat",{size:16,strokeWidth:1.8})+'</span>\u65B0\u5EFA\u7ED3\u6784\u5316\u4F1A\u8BDD</button></div><div class="blank-chat-cwd-wrap"><div class="blank-chat-cwd" id="blank-chat-cwd" role="button" tabindex="0" title="\u70B9\u51FB\u5207\u6362\u5DE5\u4F5C\u76EE\u5F55"><span class="blank-chat-cwd-icon">'+V("folder",{size:13,strokeWidth:1.8})+"</span>"+mt($e(),"blank-chat-cwd-path",' id="blank-chat-cwd-path"')+'<span class="blank-chat-cwd-arrow" id="blank-chat-cwd-arrow">'+V("chevronDown",{size:11,strokeWidth:2})+'</span></div><div class="blank-chat-cwd-dropdown hidden" id="blank-chat-cwd-dropdown"></div></div></div></div><div class="input-panel'+(r.selectedId?"":" hidden")+'"><div class="composer-top-row"><div id="todo-progress" class="todo-progress hidden"><div class="todo-progress-header" id="todo-progress-toggle"><div class="todo-progress-fill" id="todo-progress-fill" aria-hidden="true" style="--progress:0"></div><div class="todo-progress-left"><span class="todo-progress-ring" id="todo-progress-ring" aria-hidden="true" style="--progress:0"><svg width="16" height="16" viewBox="0 0 36 36"><circle class="todo-ring-track" cx="18" cy="18" r="15.5" fill="none" stroke-width="4"/><circle class="todo-ring-fill" cx="18" cy="18" r="15.5" fill="none" stroke-width="4" stroke-linecap="round"/></svg></span><span class="todo-progress-counter" id="todo-progress-counter"></span></div><div class="todo-progress-task-wrap"><span class="todo-progress-task" id="todo-progress-task"></span></div><svg class="todo-progress-chevron" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="6 15 12 9 18 15"/></svg></div></div><div class="todo-progress-body hidden" id="todo-progress-body"><ul class="todo-progress-list" id="todo-progress-list"></ul></div></div><div id="queue-bar-host" class="queue-bar-host" hidden></div><div class="input-composer'+(a?" has-text":"")+'"><div class="composer-status-row" id="composer-status-row">'+km(t)+'<span class="permission-actions hidden" id="permission-actions"><span class="permission-actions-label" id="permission-actions-label">\u7B49\u5F85\u6388\u6743</span><button id="approve-permission-btn" class="btn btn-permission btn-permission-approve" type="button">\u6279\u51C6</button><button id="deny-permission-btn" class="btn btn-permission btn-permission-deny" type="button">\u62D2\u7EDD</button></span>'+qf()+'</div><div class="composer-main-row"><div class="composer-actions-left"><button id="attach-btn" class="btn-circle btn-circle-action" type="button" title="\u66F4\u591A" aria-label="\u66F4\u591A" aria-haspopup="menu" aria-expanded="false">'+V("plus",{size:18,strokeWidth:2.2})+'</button><input type="file" id="file-upload-input" multiple tabindex="-1" style="position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;clip:rect(0,0,0,0);pointer-events:none"></div><div class="composer-inline-config">'+Il(t)+'</div><div class="composer-input-wrap"><textarea id="input-box" class="input-textarea" placeholder="'+El(t,r.terminalInteractive)+'" rows="1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" enterkeyhint="send">'+p(a)+'</textarea><button id="prompt-optimize-btn" class="prompt-optimize-btn" type="button" title="\u63D0\u793A\u8BCD\u4F18\u5316\uFF08AI\uFF09" aria-label="\u63D0\u793A\u8BCD\u4F18\u5316"><svg class="prompt-optimize-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 3l1.6 4.4L18 9l-4.4 1.6L12 15l-1.6-4.4L6 9l4.4-1.6z" fill="currentColor" opacity="0.25"/><path d="M12 3l1.6 4.4L18 9l-4.4 1.6L12 15l-1.6-4.4L6 9l4.4-1.6z"/><path d="M19 14l.7 1.9L21.6 17l-1.9.7L19 19.6l-.7-1.9L16.4 17l1.9-.7z" fill="currentColor" opacity="0.35"/><path d="M5 4l.5 1.4L7 6l-1.5.6L5 8l-.5-1.4L3 6l1.5-.6z" fill="currentColor" opacity="0.35"/></svg><span class="prompt-optimize-spinner" aria-hidden="true"></span></button><div class="voice-input-mode hidden" id="voice-input-mode"><button id="voice-record-btn" class="voice-record-btn" type="button"><span class="voice-record-pulse" aria-hidden="true"></span><span class="voice-record-label">\u6309\u4F4F \u8BF4\u8BDD</span></button><button id="voice-cancel-btn" class="voice-cancel-btn" type="button" title="\u9000\u51FA\u8BED\u97F3\u6A21\u5F0F" aria-label="\u9000\u51FA\u8BED\u97F3\u6A21\u5F0F">'+V("x",{size:14,strokeWidth:2})+'</button></div></div><div class="composer-actions-right"><button id="stop-button" class="btn-circle btn-circle-stop hidden" title="\u505C\u6B62"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><rect x="3" y="3" width="10" height="10" rx="2"/></svg></button><button id="send-input-button" class="btn-circle btn-circle-send" title="\u53D1\u9001"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="22" y1="2" x2="11" y2="13"/><polygon points="22 2 15 22 11 13 2 9 22 2"/></svg></button></div></div><div id="attachment-preview" class="attachment-preview hidden"></div></div><div class="composer-plus-popover hidden" id="composer-plus-popover" role="menu" aria-label="\u66F4\u591A\u64CD\u4F5C"><button class="plus-popover-item" id="plus-attach-item" type="button" role="menuitem">'+V("paperclip",{size:14,strokeWidth:1.8,cls:"plus-popover-icon"})+'<span class="plus-popover-label">\u4E0A\u4F20\u9644\u4EF6</span></button><button class="plus-popover-item'+(r.terminalInteractive?" is-on":"")+'" id="terminal-interactive-toggle-top" type="button" role="menuitemcheckbox" aria-checked="'+(r.terminalInteractive?"true":"false")+'">'+V("keyboard",{size:14,strokeWidth:1.8,cls:"plus-popover-icon"})+'<span class="plus-popover-label">\u7EC8\u7AEF\u4EA4\u4E92</span><span class="plus-popover-toggle-state">'+(r.terminalInteractive?"\u5F00":"\u5173")+'</span></button><div class="plus-popover-sep" aria-hidden="true"></div><div class="plus-popover-trio-wrap">'+Il(t)+'</div></div><div class="voice-transcript-bubble hidden" id="voice-transcript-bubble" aria-live="polite"><div class="voice-transcript-text" id="voice-transcript-text"></div><div class="voice-transcript-hint" id="voice-transcript-hint"><span class="voice-wave" aria-hidden="true"><i></i><i></i><i></i><i></i></span><span class="voice-transcript-status" id="voice-transcript-status">\u6B63\u5728\u8046\u542C\u2026\u4E0A\u6ED1\u53D6\u6D88</span></div><span class="voice-bubble-arrow" aria-hidden="true"></span></div><p id="action-error" class="error-message hidden"></p></div><section id="folder-picker-modal" class="modal-backdrop hidden"><div class="modal folder-picker-modal"><div class="modal-header"><h2 class="modal-title">\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55</h2><button id="close-folder-picker" class="btn btn-ghost btn-icon modal-close-btn" type="button" aria-label="\u5173\u95ED"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" aria-hidden="true"><line x1="6" y1="6" x2="18" y2="18"/><line x1="18" y1="6" x2="6" y2="18"/></svg></button></div><div class="modal-body"><div class="folder-picker-quick-row"><button class="folder-picker-quick-btn btn-with-icon" data-path="/tmp">'+V("trash",{size:13,strokeWidth:1.7})+'<span>\u4E34\u65F6\u76EE\u5F55</span></button><button class="folder-picker-quick-btn btn-with-icon" data-path="/">'+V("folder",{size:13,strokeWidth:1.7})+'<span>\u6839\u76EE\u5F55</span></button></div><div id="folder-breadcrumb" class="folder-breadcrumb"></div><div class="folder-picker"><span class="folder-picker-icon">'+V("folder",{size:15,strokeWidth:1.7})+'</span><input type="text" id="folder-picker-input" class="folder-picker-input" value="" placeholder="\u8F93\u5165\u6216\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55..." autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" /></div><div id="folder-picker-dropdown" class="folder-picker-dropdown hidden"></div><div id="folder-picker-validation" class="folder-picker-validation"></div></div></div></section></main></div></div>'+yc()+oc()+sc()+Fo()}function He(e,t){if(e){e.textContent=t,e.classList.remove("hidden");for(var n=e.previousElementSibling;n;){if(n.tagName==="INPUT"){n.setAttribute("data-error","true");break}n=n.previousElementSibling}}}function yi(e){if(e){e.textContent="",e.classList.add("hidden");for(var t=e.previousElementSibling;t;){if(t.tagName==="INPUT"){t.setAttribute("data-error","false");break}t=t.previousElementSibling}}}function A(e,t){var n=document.createElement("div");n.className="toast-message"+(t==="error"?" toast-error":""),t!=="error"&&(n.style.background="var(--accent)",n.style.color="white"),n.textContent=e,document.body.appendChild(n),setTimeout(function(){n.remove()},t==="error"?4e3:2200)}var Br=[],Hf=0;function _f(e){switch(e){case"warning":return'<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.3 2.9 1.8 17a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 2.9a2 2 0 0 0-3.4 0Z"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg>';case"danger":return'<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"/><path d="M8 6V4h8v2"/><path d="m19 6-1 14H6L5 6"/><path d="M10 11v5"/><path d="M14 11v5"/></svg>';case"success":return'<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg>';case"question":return'<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M9.7 9a2.5 2.5 0 1 1 4.5 1.5c-.9.8-2.2 1.2-2.2 2.5"/><path d="M12 17h.01"/></svg>';default:return'<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M12 11v5"/><path d="M12 8h.01"/></svg>'}}function on(e){e=e||{};var t=e.dismissable!==!1,n=e.type||"info",i=_f(n),a=!!e.input;return new Promise(function(u){var o="wand-dialog-"+ ++Hf,s=document.activeElement,l=document.createElement("div");l.className="wand-dialog-backdrop",l.setAttribute("role","presentation");var d=document.createElement("div");d.className="wand-dialog",d.setAttribute("role",a?"dialog":"alertdialog"),d.setAttribute("aria-modal","true");var f=document.createElement("div");f.className="wand-dialog-header";var c=document.createElement("div");c.className="wand-dialog-icon "+n,c.setAttribute("aria-hidden","true"),e.icon?c.textContent=String(e.icon):c.innerHTML=i,f.appendChild(c);var v=document.createElement("div");if(v.className="wand-dialog-textwrap",e.title){var h=document.createElement("div");h.className="wand-dialog-title",h.id=o+"-title",h.textContent=e.title,v.appendChild(h),d.setAttribute("aria-labelledby",h.id)}if(e.message){var g=document.createElement("div");g.className="wand-dialog-message",g.id=o+"-message",g.textContent=e.message,v.appendChild(g),d.setAttribute("aria-describedby",g.id)}e.title||d.setAttribute("aria-label",n==="danger"?"\u786E\u8BA4\u64CD\u4F5C":"\u63D0\u793A"),f.appendChild(v),d.appendChild(f);var m=null;if(a){var y=document.createElement("div");y.className="wand-dialog-body",m=document.createElement("input"),m.type="text",m.className="wand-dialog-input",m.setAttribute("aria-label",e.inputLabel||e.title||"\u8F93\u5165\u5185\u5BB9"),m.autocomplete="off",m.spellcheck=!1,e.inputPlaceholder&&(m.placeholder=e.inputPlaceholder),e.inputValue!=null&&(m.value=String(e.inputValue)),y.appendChild(m),d.appendChild(y)}var C=e.buttons&&e.buttons.length?e.buttons:[{label:"\u597D",value:!0,kind:"primary",autofocus:!0}],E=document.createElement("div");E.className="wand-dialog-footer";var B=null,D=null;function F(L){if(!l.classList.contains("closing")){l.classList.add("closing"),document.removeEventListener("keydown",I,!0);var H=Br.indexOf(F);H>=0&&Br.splice(H,1);var U=!1;try{U=!!(window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches)}catch{}setTimeout(function(){if(l.parentNode&&l.parentNode.removeChild(l),s&&document.contains(s)&&typeof s.focus=="function")try{s.focus()}catch{}u(L)},U||document.hidden?0:140)}}C.forEach(function(L){var H=document.createElement("button"),U=L.kind||"secondary";H.className="btn btn-"+U,H.type="button",H.textContent=L.label,H.addEventListener("click",function(){a&&L.kind==="primary"?F(m?m.value:""):F(L.value)}),B||(B=H),L.autofocus&&(D=H),E.appendChild(H)}),d.appendChild(E),l.appendChild(d),l.addEventListener("click",function(L){L.target===l&&t&&F(e.cancelValue!==void 0?e.cancelValue:a?null:!1)});function I(L){if(Br[Br.length-1]===F){if(L.key==="Escape"&&t){L.preventDefault(),L.stopPropagation(),F(e.cancelValue!==void 0?e.cancelValue:a?null:!1);return}if(L.key==="Enter"){for(var H=null,U=0;U<C.length;U++)if(C[U].kind==="primary"){H=C[U];break}H||(H=C[C.length-1]),H&&(L.preventDefault(),L.stopPropagation(),a&&H.kind==="primary"?F(m?m.value:""):F(H.value));return}if(L.key==="Tab"){var x=d.querySelectorAll('button:not([disabled]), input:not([disabled]), [tabindex]:not([tabindex="-1"])');if(!x.length)return;var k=x[0],T=x[x.length-1];L.shiftKey&&document.activeElement===k?(L.preventDefault(),T.focus()):!L.shiftKey&&document.activeElement===T&&(L.preventDefault(),k.focus())}}}document.addEventListener("keydown",I,!0),Br.push(F),document.body.appendChild(l),requestAnimationFrame(function(){if(a&&m){m.focus();try{m.select()}catch{}}else D?D.focus():B&&B.focus()})})}function ls(e,t){return t=t||{},on({title:t.title||"\u63D0\u793A",message:typeof e=="string"?e:String(e??""),type:t.type||"info",buttons:[{label:t.okLabel||"\u597D",value:void 0,kind:"primary",autofocus:!0}]})}function Ta(e,t){t=t||{};var n=!!t.danger||t.type==="danger";return on({title:t.title||(n?"\u786E\u8BA4\u64CD\u4F5C":"\u8BF7\u786E\u8BA4"),message:typeof e=="string"?e:String(e??""),type:t.type||(n?"danger":"question"),cancelValue:!1,buttons:[{label:t.cancelLabel||"\u53D6\u6D88",value:!1,kind:"secondary"},{label:t.okLabel||(n?"\u5220\u9664":"\u786E\u5B9A"),value:!0,kind:n?"danger":"primary",autofocus:!n}]}).then(function(i){return i===!0})}function Nf(e,t,n){return n=n||{},on({title:n.title||"\u8BF7\u8F93\u5165",message:typeof e=="string"?e:String(e??""),type:n.type||"question",input:!0,inputValue:t==null?"":String(t),inputPlaceholder:n.placeholder||"",cancelValue:null,buttons:[{label:n.cancelLabel||"\u53D6\u6D88",value:null,kind:"secondary"},{label:n.okLabel||"\u786E\u5B9A",value:void 0,kind:"primary"}]})}window.wandAlert=ls,window.wandConfirm=Ta,window.wandPrompt=Nf,window.openWandDialog=on;var $t=[],ds=0,jf=6,Rf=16;function La(e){if((e.actionLabel||e.playSound)&&ms(),!r.notifBubble)return{dismiss:function(){}};var t=++ds,n=e.type||"info",i=e.icon||(n==="warning"?"!":n==="success"?"\u2713":"i"),a=e.duration!==void 0?e.duration:8e3,u=document.createElement("div");u.className="notification-bubble",u.setAttribute("data-nid",String(t));var o='<div class="notification-bubble-header"><span class="notification-bubble-icon '+n+'">'+i+'</span><span class="notification-bubble-title">'+p(e.title)+'</span><button class="notification-bubble-close" title="\u5173\u95ED">\xD7</button></div>',s=e.body?'<div class="notification-bubble-body">'+p(e.body).replace(/\n/g,"<br>")+"</div>":"",l=e.actionLabel?'<div class="notification-bubble-actions"><button class="primary">'+p(e.actionLabel)+"</button></div>":"";u.innerHTML=o+s+l,document.body.appendChild(u);var d={id:t,el:u};$t.push(d),Ma();var f=u.querySelector(".notification-bubble-close");if(f&&(f.onclick=function(){Dr(t)}),e.actionLabel&&e.action){var c=u.querySelector(".notification-bubble-actions button");c&&(c.onclick=function(){e.action(),Dr(t)})}var v=null;return a>0&&(v=setTimeout(function(){Dr(t)},a)),{dismiss:function(){Dr(t)}}}function Dr(e){for(var t=-1,n=0;n<$t.length;n++)if($t[n].id===e){t=n;break}if(t!==-1){var i=$t[t];i.el.classList.add("slide-out"),$t.splice(t,1),Ma(),setTimeout(function(){i.el.parentNode&&i.el.parentNode.removeChild(i.el)},300)}}function Ma(){for(var e=Rf,t=0;t<$t.length;t++)$t[t].el.style.top=e+"px",e+=$t[t].el.offsetHeight+jf}try{hs=navigator.userAgent.match(/WandPlatform\/macOS/),Pa=window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.wandNative||null,hs&&Pa&&typeof window.WandNative>"u"&&(window.WandNative={downloadUpdate:function(e,t,n){try{Pa.postMessage({type:"downloadUpdate",url:String(e||""),fileName:String(t||"wand-update.dmg"),source:String(n||"local")})}catch{}}})}catch{}var We=typeof WandNative<"u"&&typeof WandNative.sendNotification=="function",kr=navigator.userAgent.match(/WandApp\/([^\s]+)/),cs=/WandPlatform\/macOS/.test(navigator.userAgent),Wf=!!kr&&!cs,In=kr&&Wf?kr[1]:null,sn=kr&&cs?kr[1]:null;function Gn(e){if(!(!We||typeof WandNative.vibrate!="function"))try{WandNative.vibrate(e||"light")}catch{}}function qa(){if(We){var e=r.sessions.some(function(t){return!t.archived&&(t.status==="running"||t.status==="thinking"||t.status==="initializing")});if(typeof WandNative.setKeepScreenOn=="function")try{WandNative.setKeepScreenOn(e)}catch{}if(e){if(typeof WandNative.startKeepAlive=="function")try{WandNative.startKeepAlive()}catch{}}else if(typeof WandNative.stopKeepAlive=="function")try{WandNative.stopKeepAlive()}catch{}}}function bi(){if(We&&typeof WandNative.getPermission=="function")try{return WandNative.getPermission()}catch{}return null}function zf(){if(We){var e=bi();if(e==="default"||e==="denied")try{WandNative.requestPermission()}catch{}return}typeof Notification<"u"&&Notification.permission==="default"&&Notification.requestPermission()}function Vf(e){var t=e||{};return!(t.onlyWhenHidden&&!document.hidden||t.skipWhenSelectedSessionId&&t.skipWhenSelectedSessionId===r.selectedId&&!document.hidden)}function Uf(e,t){if(!e||!t||t<=0)return!1;var n=r.notificationHistory[e]||0,i=Date.now();return i-n<t?!0:(r.notificationHistory[e]=i,!1)}function Ei(e,t,n){var i=n||{},a=i.tag||"";if(Vf(i)&&!Uf(a,i.minIntervalMs||0)){if(We){var u=bi();if(u!=="granted")return;try{var o=a;i.kind&&(o=i.kind+(a?":"+a:"")),WandNative.sendNotification(e||"Wand",t||"",o||"")}catch{}return}if(!(typeof Notification>"u"||Notification.permission!=="granted")&&document.hidden)try{var s=new Notification(e,{body:t||"",icon:i.icon||"/favicon.ico",tag:a||void 0});s.onclick=function(){window.focus(),s.close(),i.onClick&&i.onClick()},setTimeout(function(){s.close()},1e4)}catch{}}}function Kf(e,t){if(!(!t||!t.title)){var n=r.sessions.find(function(a){return a.id===e});if(n){var i=n.summary||n.command||e;Ei("\u4EFB\u52A1\u8FDB\u884C\u4E2D",i+`
21
- `+t.title,{kind:"task",tag:"wand-task-"+e+"-"+t.title,minIntervalMs:9e4,onlyWhenHidden:!0,skipWhenSelectedSessionId:e,onClick:function(){e!==r.selectedId&&Ht(e)}})}}}function fs(e,t){Xf(e||"-",t||"-"),Ei("Wand \u53D1\u73B0\u65B0\u7248\u672C","\u5F53\u524D "+(e||"-")+" \u2192 \u6700\u65B0 "+(t||"-"),{kind:"update",tag:"wand-update",minIntervalMs:3e5})}function Jf(e,t){Ei("\u9700\u8981\u4F60\u7684\u6388\u6743",t,{kind:"permission",tag:"wand-perm-"+e,minIntervalMs:6e4,onlyWhenHidden:!0,skipWhenSelectedSessionId:e,onClick:function(){e!==r.selectedId&&Ht(e)}})}function Yf(e,t,n){Ei(t,n,{kind:"task-ended",tag:"wand-ended-"+e,minIntervalMs:1e4,onClick:function(){e!==r.selectedId&&Ht(e)}})}var Tn={},Gf=30;function ps(e){if(!e)return"";var t=String(e).replace(/^#+\s+/gm,"").replace(/\*\*/g,"").replace(/`/g,"").trim(),n=t.split(`
22
- `)[0].trim();return n.length>100&&(n=n.slice(0,100)+"\u2026"),n}function Oa(e){!We||typeof WandNative.updateSessionProgress!="function"||e&&(Tn[e]&&clearTimeout(Tn[e]),Tn[e]=setTimeout(function(){delete Tn[e],Qf(e)},Gf))}function Qf(e){var t=r.sessions.find(function(F){return F.id===e});if(t){var n=t.summary||t.command||e,i=t.status||"running";if(i==="idle"||i==="archived"||i==="exited"){vs(e);return}for(var a=null,u="",o="",s=[],l=t.messages||[],d=l.length-1;d>=0;d--){var f=l[d];if(!(!f.content||!Array.isArray(f.content))){if(!o&&f.role==="assistant")for(var c=f.content.length-1;c>=0;c--){var v=f.content[c];if(v&&v.type==="text"&&v.text&&v.text.trim()){o=ps(v.text);break}}if(f.role==="user"){var h=f.content.some(function(F){return F&&F.__queued});if(!h)for(var g=0;g<f.content.length;g++){var m=f.content[g];if(m&&m.type==="text"&&m.text&&m.text.trim()){var y=ps(m.text);u||(u=y),s.length<4&&s.push(y);break}}}if(!a)for(var C=f.content.length-1;C>=0;C--){var E=f.content[C];if(E&&E.type==="tool_use"&&E.name==="TodoWrite"&&E.input&&E.input.todos){a=E.input.todos;break}}if(a&&s.length>=4&&o)break}}s.reverse();var B="";e===r.selectedId&&r.currentTask&&r.currentTask.title&&(B=r.currentTask.title);var D={sessionLabel:n,status:i,currentTask:B,latestUserText:u,latestAssistantText:o,todos:a||[],recentUserTexts:s};try{WandNative.updateSessionProgress(e,JSON.stringify(D))}catch{}}}function vs(e){if(!(!We||typeof WandNative.clearSessionProgress!="function")){Tn[e]&&(clearTimeout(Tn[e]),delete Tn[e]);try{WandNative.clearSessionProgress(e)}catch{}}}window.handleNativeBack=function(){var e=document.getElementById("settings-modal");if(e&&!e.classList.contains("hidden"))return tr(),!0;var t=document.getElementById("session-modal");if(t&&!t.classList.contains("hidden"))return hn(),!0;var n=document.getElementById("worktree-merge-modal");return n&&!n.classList.contains("hidden")?(er(),!0):r.filePanelOpen&&Re()?(ca(!1),!0):r.sessionsDrawerOpen&&Re()?(Wr(),!0):Re()&&r.selectedId?(r.selectedId=null,he(),r.sessionsDrawerOpen=!0,Se("wand-sidebar-open",!0),Qt(),!0):!1};function ms(){r.notifSound&&Fi()}function $f(){return Fi()}function Fi(){try{let a=function(u,o,s){var l=n.createOscillator(),d=n.createGain();l.type="sine",l.frequency.value=u,d.gain.setValueAtTime(0,n.currentTime+o),d.gain.linearRampToValueAtTime(.5*i,n.currentTime+o+.04),d.gain.exponentialRampToValueAtTime(.001,n.currentTime+o+s),l.connect(d),d.connect(n.destination),l.start(n.currentTime+o),l.stop(n.currentTime+o+s)};var e=a,t=window.AudioContext||window.webkitAudioContext;if(!t)return!1;var n=new t;n.state==="suspended"&&n.resume();var i=(r.notifVolume||0)/100;return a(523,0,.25),a(659,.12,.3),setTimeout(function(){n.close()},600),!0}catch{return!1}}function Xf(e,t){if(r._updateBubbleShown)return;r._updateBubbleShown=!0,ms();var n=++ds,i=document.createElement("div");i.className="notification-bubble update-card",i.setAttribute("data-nid",String(n)),i.innerHTML='<div class="update-card-shine" aria-hidden="true"></div><div class="update-card-header"><div class="update-card-icon" aria-hidden="true"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 19V5"/><path d="M5 12l7-7 7 7"/></svg></div><div class="update-card-heading"><div class="update-card-title">\u53D1\u73B0\u65B0\u7248\u672C</div><div class="update-card-subtitle" id="update-card-subtitle">\u70B9\u51FB\u4E0B\u65B9\u6309\u94AE\u4E00\u952E\u66F4\u65B0</div></div><button class="update-card-close" title="\u7A0D\u540E\u63D0\u9192" aria-label="\u5173\u95ED"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6L6 18"/><path d="M6 6l12 12"/></svg></button></div><div class="update-card-version"><span class="update-card-version-chip update-card-version-current">v'+p(String(e).replace(/^v/,""))+'</span><svg class="update-card-version-arrow" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="M13 5l7 7-7 7"/></svg><span class="update-card-version-chip update-card-version-latest">v'+p(String(t).replace(/^v/,""))+'</span></div><div class="update-card-progress" id="update-card-progress" aria-hidden="true"><div class="update-card-progress-track"><div class="update-card-progress-fill"></div></div></div><div class="update-card-status hidden" id="update-card-status"></div><div class="update-card-actions"><button class="update-card-action update-card-action-primary" id="update-bubble-action" type="button"><span class="update-card-action-label">\u7ACB\u5373\u66F4\u65B0</span></button></div>',document.body.appendChild(i);var a={id:n,el:i};$t.push(a),Ma();var u=i.querySelector(".update-card-close");u&&(u.onclick=function(){Dr(n),r._updateBubbleShown=!1});var o=i.querySelector("#update-bubble-action"),s=i.querySelector(".update-card-action-label"),l=i.querySelector("#update-card-subtitle"),d=i.querySelector("#update-card-status"),f=i.querySelector("#update-card-progress");function c(g,m){if(d){if(d.textContent=g||"",d.classList.remove("hidden","error","success"),!g){d.classList.add("hidden");return}m&&d.classList.add(m)}}function v(g){l&&(l.textContent=g||"")}function h(g){f&&f.classList.toggle("active",!!g)}o&&(o.onclick=function(){o.disabled=!0,i.classList.add("is-busy"),s&&(s.textContent="\u66F4\u65B0\u4E2D\u2026"),v("\u6B63\u5728\u4E0B\u8F7D\u5E76\u5B89\u88C5\u65B0\u7248\u672C\u2026"),h(!0),c(""),fetch("/api/update",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin"}).then(function(g){return g.json()}).then(function(g){if(g.error){h(!1),i.classList.remove("is-busy"),v("\u66F4\u65B0\u672A\u5B8C\u6210"),c(g.error,"error"),o.disabled=!1,s&&(s.textContent="\u91CD\u8BD5");return}if(i.classList.add("is-success"),v((g.message||"\u66F4\u65B0\u5B8C\u6210")+"\uFF0C\u6B63\u5728\u91CD\u542F\u670D\u52A1\u2026"),c(""),s&&(s.textContent="\u6B63\u5728\u91CD\u542F\u2026"),g.detachedUpdate){ln();return}if(g.restartRequired===!1){h(!1),i.classList.remove("is-busy"),o.disabled=!1,s&&(s.textContent="\u5DF2\u5B8C\u6210");return}Zf(o,s,l,d,f)}).catch(function(){h(!1),i.classList.remove("is-busy"),v("\u66F4\u65B0\u672A\u5B8C\u6210"),c("\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u540E\u91CD\u8BD5","error"),o.disabled=!1,s&&(s.textContent="\u91CD\u8BD5")})})}function Zf(e,t,n,i,a){fetch("/api/restart",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin"}).then(function(u){return u.json()}).then(function(){ln()}).catch(function(){ln()})}function gs(e,t){e&&(e.disabled=!0,e.textContent="\u6B63\u5728\u91CD\u542F\u2026"),t&&(t.textContent="\u670D\u52A1\u6B63\u5728\u91CD\u542F\u2026",t.style.color="var(--text-secondary)"),fetch("/api/restart",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin"}).then(function(n){return n.json()}).then(function(){ln()}).catch(function(){ln()})}function ln(){if(!document.getElementById("restart-overlay")){var e=document.createElement("div");e.id="restart-overlay",e.className="restart-overlay",e.innerHTML='<div class="restart-overlay-content"><div class="restart-spinner"></div><div class="restart-title">\u670D\u52A1\u6B63\u5728\u91CD\u542F</div><div class="restart-subtitle">\u7A0D\u540E\u5C06\u81EA\u52A8\u5237\u65B0\u9875\u9762\u2026</div></div>',document.body.appendChild(e);var t=0,n=180,i=setInterval(function(){if(t++,fetch("/api/config",{credentials:"same-origin"}).then(function(u){u.ok&&(clearInterval(i),location.reload())}).catch(function(){}),t>=n){clearInterval(i);var a=e.querySelector(".restart-subtitle");a&&(a.innerHTML='\u91CD\u542F\u8D85\u65F6\uFF0C\u8BF7 <a href="javascript:location.reload()" style="color:var(--accent);text-decoration:underline">\u624B\u52A8\u5237\u65B0</a> \u9875\u9762\u3002')}},2e3)}}function ep(e,t){if(!document.getElementById("restart-overlay")){var n=document.createElement("div");n.id="restart-overlay",n.className="restart-overlay",n.innerHTML='<div class="restart-overlay-content"><div class="restart-spinner"></div><div class="restart-title">\u81EA\u52A8\u66F4\u65B0\u4E2D</div><div class="restart-subtitle">'+p(e)+" \u2192 "+p(t)+"<br>\u6B63\u5728\u4E0B\u8F7D\u5E76\u5B89\u88C5\u65B0\u7248\u672C\uFF0C\u7A0D\u540E\u5C06\u81EA\u52A8\u91CD\u542F\u2026</div></div>",document.body.appendChild(n)}}var hs,Pa,Ie={recording:!1,canceling:!1,transcript:"",startY:0},tp=60;function np(e){Ie.transcript=e||"";var t=document.getElementById("voice-transcript-text");t&&(t.textContent=Ie.transcript);var n=document.getElementById("voice-transcript-bubble");n&&n.classList.toggle("has-text",!!Ie.transcript)}function rp(e){if(e){e.preventDefault(),Ie.startY=typeof e.clientY=="number"?e.clientY:0;try{e.pointerId!==void 0&&e.target&&e.target.setPointerCapture&&e.target.setPointerCapture(e.pointerId)}catch{}}Ie.recording=!0,Ie.canceling=!1,Ie.transcript="";var t=document.getElementById("voice-record-btn");if(t){t.classList.add("is-recording");var n=t.querySelector(".voice-record-label");n&&(n.textContent="\u677E\u5F00 \u53D1\u9001")}var i=document.getElementById("voice-transcript-bubble");i&&i.classList.remove("hidden","is-canceling","has-text"),np("");var a=document.getElementById("voice-transcript-status");a&&(a.textContent="\u7F51\u9875\u7AEF\u6682\u4E0D\u652F\u6301\u8BED\u97F3\u8F93\u5165\uFF0C\u8BF7\u4F7F\u7528 App")}function ip(e){if(!(!Ie.recording||!e)){var t=Ie.startY-(typeof e.clientY=="number"?e.clientY:Ie.startY),n=t>tp;if(n!==Ie.canceling){Ie.canceling=n;var i=document.getElementById("voice-transcript-bubble");i&&i.classList.toggle("is-canceling",n);var a=document.getElementById("voice-record-btn"),u=a&&a.querySelector(".voice-record-label");u&&(u.textContent=n?"\u677E\u5F00 \u53D6\u6D88":"\u677E\u5F00 \u53D1\u9001");var o=document.getElementById("voice-transcript-status");o&&(o.textContent=n?"\u677E\u5F00\u624B\u6307 \u53D6\u6D88":"\u6B63\u5728\u8046\u542C\u2026\u4E0A\u6ED1\u53D6\u6D88")}}}function ys(e){if(Ie.recording){e&&e.preventDefault(),Ie.recording=!1;var t=!Ie.canceling&&!!Ie.transcript.trim(),n=Ie.transcript;Ha(),t&&(ap(n),_a(!1))}}function Ha(){Ie.canceling=!1;var e=document.getElementById("voice-record-btn");if(e){e.classList.remove("is-recording");var t=e.querySelector(".voice-record-label");t&&(t.textContent="\u6309\u4F4F \u8BF4\u8BDD")}var n=document.getElementById("voice-transcript-bubble");n&&n.classList.add("hidden")}function ap(e){var t=(e||"").trim();if(t){var n=document.getElementById("input-box");if(n){var i=n.value||"",a=i?i.replace(/\s+$/,"")+" "+t:t;n.value=a,et(a,!0),wt(n);try{n.setSelectionRange(a.length,a.length)}catch{}}}}function _a(e){var t=document.querySelector(".input-composer");if(t){var n=typeof e=="boolean"?e:!t.classList.contains("voice-mode");if(t.classList.toggle("voice-mode",n),!n){Ie.recording=!1,Ha();var i=document.getElementById("input-box");if(i&&!r.terminalInteractive)try{i.focus({preventScroll:!0})}catch{}}}}function wt(e){if(e){var t=36,n=120,i=Mr();if(!e.value||e.value.trim()===""){e.style.height=t+"px",e.style.minHeight=t+"px",e.style.overflowY=i?"auto":"hidden",e.scrollTop=0,Gi(e);return}var a=e.style.overflowY;e.style.overflowY="hidden",e.style.height=t+"px";var u=e.scrollHeight,o=Math.max(t,Math.min(u,n)),s=u>n;e.style.height=o+"px",e.style.minHeight=t+"px",e.style.overflowY=s||i?"auto":"hidden",s?Ii(e):e.scrollTop=0,Gi(e)}}function up(){if(!r.selectedId)return!1;var e=r.sessions.find(function(t){return t.id===r.selectedId});return ue(e)?!!(e.structuredState&&e.structuredState.inFlight):!!e&&e.status==="running"}var Ar=!1;function bs(e){return!e||e.archived?!1:ue(e)?!!(e.structuredState&&e.structuredState.inFlight):e.status==="running"}function Na(){return r.sessions.some(bs)}function op(){var e=r.sessions.filter(bs);if(e.length===0)return null;if(r.selectedId){var t=e.find(function(n){return n.id===r.selectedId});if(t)return t}return e.sort(function(n,i){return(Date.parse(i.startedAt)||0)-(Date.parse(n.startedAt)||0)}),e[0]}function Es(e){if(!e)return"";for(var t=Array.isArray(e.queuedMessages)?e.queuedMessages:[],n=t.length-1;n>=0;n--){var i=typeof t[n]=="string"?t[n].trim():"";if(i)return i}for(var a=Array.isArray(e.messages)?e.messages:[],u=a.length-1;u>=0;u--){var o=a[u];if(!(!o||o.role!=="user"||!Array.isArray(o.content))){var s=o.content.filter(function(f){return f&&f.type==="text"&&typeof f.text=="string"}).map(function(f){return f.text});if(s.length)return s.join(`
23
- `).trim();for(var l=0;l<o.content.length;l++){var d=o.content[l];if(d&&d.type==="tool_result"&&typeof d.content=="string")return d.content.trim()}return""}}return""}function sp(e,t){var n=typeof t=="string"?t.trim():"";if(n&&Es(e)===n)return A("\u4E0E\u4E0A\u4E00\u6761\u6D88\u606F\u76F8\u540C\uFF0C\u5DF2\u5FFD\u7565\uFF0C\u4E0D\u4F1A\u52A0\u5165\u6392\u961F\u3002","warning"),Promise.resolve();var i=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Date.now().toString(36)+"-"+Math.random().toString(36).slice(2,10),a=Array.isArray(e.queuedMessages)?e.queuedMessages.slice():[],u=a.slice();u.push(t),X({id:e.id,queuedMessages:u}),e.id===r.selectedId&&rt();var o=e.title||$n(e.command)||"\u5F53\u524D\u4F1A\u8BDD";return A("\u5DF2\u52A0\u5165\u300C"+o+"\u300D\u7684\u6392\u961F\uFF0C\u56DE\u590D\u7ED3\u675F\u540E\u81EA\u52A8\u53D1\u9001\uFF08\u542B\u4E0A\u4E0B\u6587\uFF09\u3002","info"),fetch("/api/structured-sessions/"+e.id+"/messages",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({input:t,idempotencyKey:i})}).then(function(s){return s.ok?s.json():s.json().catch(function(){return{error:"\u8BF7\u6C42\u5931\u8D25"}}).then(function(l){throw new Error(l&&l.error||"\u65E0\u6CD5\u6392\u961F\u6D88\u606F\u3002")})}).then(function(s){s&&s.id&&(X(s),s.id===r.selectedId&&rt())}).catch(function(s){X({id:e.id,queuedMessages:a}),e.id===r.selectedId&&rt(),A(s&&s.message||"\u6392\u961F\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002","error")})}function Fs(e){var t=op();if(t&&ue(t)){sp(t,e);return}if(r.crossSessionQueue.length>=10){A("\u6392\u961F\u6D88\u606F\u5DF2\u6EE1\uFF08\u6700\u591A 10 \u6761\uFF09\uFF0C\u8BF7\u7B49\u5F85\u5F53\u524D\u4F1A\u8BDD\u5B8C\u6210\u3002","warning");return}var n="csq-"+Date.now()+"-"+Math.random().toString(36).slice(2,8);r.crossSessionQueue.push({id:n,text:e,cwd:$e(),mode:r.chatMode||"managed",tool:Xe(),queuedAt:Date.now()}),Jt(),Ct(),A("\u5DF2\u6392\u961F\uFF0C\u5C06\u5728\u7A7A\u95F2\u540E\u81EA\u52A8\u5F00\u59CB\u65B0\u4F1A\u8BDD\u3002","info")}function lp(e){Ar||(Ar=!0,fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({command:e.tool,cwd:e.cwd,mode:e.mode,initialInput:e.text}))}).then(function(t){return t.json()}).then(function(t){return Ar=!1,t.error?(A(t.error,"error"),r.crossSessionQueue.unshift(e),Jt(),Ct(),null):fn(t)}).catch(function(t){Ar=!1,A(t&&t.message||"\u65E0\u6CD5\u542F\u52A8\u6392\u961F\u4F1A\u8BDD\u3002","error"),r.crossSessionQueue.unshift(e),Jt(),Ct()}))}function dp(e){var t=r.crossSessionQueue.findIndex(function(i){return i.id===e});if(!(t<0)){var n=r.crossSessionQueue.splice(t,1)[0];Jt(),Ct(),fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({command:n.tool,cwd:n.cwd,mode:n.mode,initialInput:n.text}))}).then(function(i){return i.json()}).then(function(i){return i.error?(A(i.error,"error"),r.crossSessionQueue.splice(t,0,n),Jt(),Ct(),null):fn(i)}).catch(function(i){A(i&&i.message||"\u65E0\u6CD5\u542F\u52A8\u6392\u961F\u4F1A\u8BDD\u3002","error"),r.crossSessionQueue.splice(t,0,n),Jt(),Ct()})}}function cp(e){var t=r.crossSessionQueue.findIndex(function(n){return n.id===e});t<0||(r.crossSessionQueue.splice(t,1),Jt(),Ct(),r.crossSessionQueue.length===0&&A("\u6392\u961F\u5DF2\u6E05\u7A7A\u3002","info"))}function wi(){if(r.crossSessionQueue.length!==0&&!Na()&&!Ar){var e=r.crossSessionQueue.shift();Ct(),lp(e)}}function ws(e){var t=Math.floor((Date.now()-e)/1e3);if(t<60)return t+"s";var n=Math.floor(t/60);return n<60?n+"m":Math.floor(n/60)+"h"}function Ct(){var e=document.querySelector(".cross-session-queue"),t=document.querySelector(".input-panel"),n=document.querySelector(".structured-status-bar"),i=document.querySelector(".input-composer"),a=document.getElementById("blank-chat");if(r.crossSessionQueue.length===0){e&&e.remove(),Jt();return}var u=t&&!t.classList.contains("hidden"),o=u?t:a,s=u?n||i:null;if(o){e&&e.parentNode!==o&&(e.remove(),e=null),e?u&&s&&e.nextSibling!==s&&o.insertBefore(e,s):(e=document.createElement("div"),e.className="cross-session-queue",s?o.insertBefore(e,s):o.appendChild(e));var l=r.crossSessionQueue.length,d=r.crossSessionQueue.map(function(c,v){var h=c.text.length>60?c.text.slice(0,60)+"\u2026":c.text,g=ws(c.queuedAt);return'<div class="queue-item" data-queue-id="'+p(c.id)+'"><span class="queue-item-dot"></span><span class="queue-item-text" title="'+p(c.text)+'">'+p(h)+'</span><span class="queue-item-age">'+g+'</span><button class="queue-item-send-now" data-queue-id="'+p(c.id)+'" title="\u7ACB\u5373\u53D1\u9001" type="button">\u53D1\u9001</button><button class="queue-item-cancel" data-queue-id="'+p(c.id)+'" title="\u53D6\u6D88" type="button">\xD7</button></div>'}).join(""),f=l>1?'<div class="queue-header"><span class="queue-header-label">\u6392\u961F '+l+' \u6761</span><button class="queue-header-clear" id="queue-clear-all" type="button" title="\u6E05\u7A7A\u6392\u961F">\u6E05\u7A7A</button></div>':"";e.innerHTML=f+d}}setInterval(function(){if(r.crossSessionQueue.length>0){var e=document.querySelectorAll(".queue-item-age");r.crossSessionQueue.forEach(function(t,n){e[n]&&(e[n].textContent=ws(t.queuedAt))}),wi()}},5e3),document.addEventListener("click",function(e){var t=e.target;if(t.closest("#queue-clear-all")){e.preventDefault(),r.crossSessionQueue=[],Jt(),Ct(),A("\u6392\u961F\u5DF2\u6E05\u7A7A\u3002","info");return}var n=t.closest(".queue-item-send-now");if(n){e.preventDefault(),dp(n.dataset.queueId);return}var i=t.closest(".queue-item-cancel");if(i){e.preventDefault(),cp(i.dataset.queueId);return}});function Cs(){var e=document.getElementById("welcome-input"),t=e?e.value.trim():"";if(t){if(Na()){e.value="",Fs(t);return}var n=document.getElementById("todo-progress");n&&n.classList.add("hidden"),e.value="",e.placeholder="\u6B63\u5728\u542F\u52A8\u2026",e.disabled=!0;var i=r.chatMode||"managed",a=$e(),u=Xe();fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({command:u,provider:u,cwd:a,mode:i,initialInput:t}))}).then(function(o){return o.json()}).then(function(o){if(o.error){A(o.error,"error"),e.placeholder="\u8F93\u5165\u6D88\u606F",e.disabled=!1;return}r.selectedId=o.id,he(),r.drafts[o.id]="",Ft(),X(o),pe(),xr(o.id),On(o.id),gn(o.id).then(function(){e.placeholder="\u8F93\u5165\u6D88\u606F",e.disabled=!1,Ot(!0)})}).catch(function(o){A(o&&o.message||(u==="codex"?"\u65E0\u6CD5\u542F\u52A8 Codex \u4F1A\u8BDD\u3002":"\u65E0\u6CD5\u542F\u52A8 Claude \u4F1A\u8BDD\u3002"),"error"),e.placeholder="\u8F93\u5165\u6D88\u606F",e.disabled=!1})}}function fp(e){e=e||{};var t=document.getElementById("welcome-input"),n=document.getElementById("input-box"),i=t&&t.value.trim()?t.value.trim():n?n.value.trim():"";if(r.selectedId){i&&Bs(e);return}if(i&&Na()){n&&(n.value=""),t&&(t.value=""),Gi(n),Fs(i);return}var a=r.chatMode||"managed",u=$e(),o=Xe();fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({command:o,provider:o,cwd:u,mode:a,initialInput:i||void 0}))}).then(function(s){return s.json()}).then(function(s){return s.error?(A(s.error,"error"),null):(r.selectedId=s.id,he(),r.drafts[s.id]="",Ft(),n&&(n.value=""),t&&(t.value=""),X(s),pe(),xr(s.id),On(s.id),gn(s.id))}).catch(function(s){A(s&&s.message||(o==="codex"?"\u65E0\u6CD5\u542F\u52A8 Codex \u4F1A\u8BDD\u3002":"\u65E0\u6CD5\u542F\u52A8 Claude \u4F1A\u8BDD\u3002"),"error")})}function xr(e){var t=r.sessions.find(function(v){return v.id===e}),n=document.getElementById("blank-chat"),i=document.getElementById("output"),a=document.getElementById("chat-output"),u=document.getElementById("stop-button"),o=document.getElementById("terminal-title"),s=document.getElementById("terminal-info"),l=document.querySelector(".session-summary-value"),d=ue(t);n&&n.classList.add("hidden"),i&&i.classList.toggle("hidden",d),a&&a.classList.remove("hidden"),d?r.currentView="chat":r.currentView="terminal";var f=t?$n(t.command):"Wand",c=t?pr(t):"\u5F00\u59CB\u5BF9\u8BDD";o&&(o.textContent=f),s&&(s.textContent=c),l&&(l.textContent=f),d||r.terminal||Yn(),Ki(),Ot(!0),d||Qe("view-switch",{forceReplay:!0})}function Bs(e){e=e||{};var t=!!e.interrupt,n=document.documentElement.classList.contains("is-wand-embed-terminal");if(r.terminalInteractive&&!n)return A("\u7EC8\u7AEF\u4EA4\u4E92\u6A21\u5F0F\u5F00\u542F\u65F6\uFF0C\u8BF7\u76F4\u63A5\u5728\u7EC8\u7AEF\u4E2D\u8F93\u5165\u3002","info"),Promise.resolve();var i=document.getElementById("input-box"),a=i?i.value:"",u=Bt(),o=r.pendingAttachments.length>0;if(a||o){var s=o&&r.selectedId?Ag(r.selectedId).catch(function(l){A("\u9644\u4EF6\u4E0A\u4F20\u5931\u8D25: "+(l&&l.message||l),"error");var d=l instanceof Error?l:new Error(String(l));throw d.__wandToasted=!0,d}):Promise.resolve([]);return s.then(function(l){var d=xg(l),f=d+(a||(l.length?"\u8BF7\u67E5\u770B\u9644\u4EF6\u3002":""));l.length&&kg();var c=document.getElementById("todo-progress");if(c&&c.classList.add("hidden"),ue(u))return pp(f,i,u,{interrupt:t});var v=Ip(u,f),h=!r.wsConnected;return h?(qp(v),i&&(i.value="",wt(i)),et(""),Promise.resolve()):Sp(u).then(function(g){if(!g)return null;var m=r.currentView;if(g&&g.provider==="codex"&&r.selectedId!==g.id)throw new Error("Codex session changed before input send.");return Wu(),Tp(v,"enter_text",30,m).then(function(){i&&i.value===a&&(i.value="",wt(i)),et("")})}).catch(function(g){throw A(Is(g),"error"),g&&(g.__wandToasted=!0),g})}).catch(function(l){throw l&&l.__wandToasted||A(Is(l),"error"),l})}return Promise.resolve()}var Ds={},ks=350;function pp(e,t,n,i){i=i||{};var a=!!i.interrupt;if(!r.selectedId||!e)return Promise.resolve();if(!n)return A("\u4F1A\u8BDD\u4E0D\u5B58\u5728\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u6216\u65B0\u5EFA\u4F1A\u8BDD\u3002","error"),Promise.resolve();var u=!!(n.structuredState&&n.structuredState.inFlight&&n.status==="running");if(u&&!a&&Es(n)===e.trim())return t&&(t.value="",wt(t)),et(""),A("\u4E0E\u4E0A\u4E00\u6761\u6D88\u606F\u76F8\u540C\uFF0C\u5DF2\u5FFD\u7565\uFF0C\u4E0D\u4F1A\u52A0\u5165\u6392\u961F\u3002","warning"),Ln("Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C"),Promise.resolve();var o=Date.now(),s=Ds[n.id]||0;if(o-s<ks)return console.log("[wand] postStructuredInput: duplicate submit (within "+ks+"ms) ignored for session",n.id),Promise.resolve();Ds[n.id]=o;var l=u&&a,d=u&&!a,f=dr(Array.isArray(n.messages)?n.messages.slice():[]),c;if(d){var v=Array.isArray(n.queuedMessages)?n.queuedMessages.slice():[];v.push(e),c={id:n.id,queuedMessages:v},X(c);var h=r.sessions.find(function(E){return E.id===n.id})||n;r.currentMessages=ze(h,Ze(h,h.output,!1)),Ln("\u5DF2\u52A0\u5165\u6392\u961F\u2026"),Ve(!0),dn(),A(v.length>1?"\u5DF2\u52A0\u5165\u6392\u961F\uFF08\u5171 "+v.length+" \u6761\u7B49\u5F85\uFF09":"\u5DF2\u52A0\u5165\u6392\u961F\uFF0C\u7B49\u5F53\u524D\u56DE\u590D\u5B8C\u6210\u4F1A\u81EA\u52A8\u53D1\u9001\u3002","info")}else{var g={role:"user",content:[{type:"text",text:e}]};f.push(g);var m=Object.assign({},n.structuredState||{},{inFlight:!0});X({id:n.id,status:"running",messages:f,structuredState:m}),r.currentMessages=ze(Object.assign({},n,{status:"running",messages:f,structuredState:m}),f),Ln(l?"\u5DF2\u4E2D\u65AD\uFF0C\u6B63\u5728\u5904\u7406\u65B0\u6D88\u606F\u2026":"\u601D\u8003\u4E2D\u2026"),Wu(),Ve(!0),l&&A("\u5DF2\u4E2D\u65AD\u4E0A\u4E00\u6761\u56DE\u590D\uFF0C\u6B63\u5728\u5904\u7406\u65B0\u6D88\u606F\u2026","info")}t&&(t.value="",wt(t)),et("");var y=r.queueEpoch,C=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Date.now().toString(36)+"-"+Math.random().toString(36).slice(2,10);return fetch("/api/structured-sessions/"+n.id+"/messages",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({input:e,interrupt:l||void 0,idempotencyKey:C})}).then(function(E){return E.ok?E.json():E.json().catch(function(){return{error:"\u8BF7\u6C42\u5931\u8D25"}}).then(function(B){var D=new Error(B&&B.error||"\u65E0\u6CD5\u53D1\u9001\u7ED3\u6784\u5316\u6D88\u606F\u3002");throw D.errorCode=B&&B.errorCode,D.httpStatus=E.status,D})}).then(function(E){if(E&&E.error)throw new Error(E.error);if(E&&E.id&&(r.queueEpoch>y&&E.queuedMessages&&delete E.queuedMessages,X(E),E.id===r.selectedId)){var B=r.sessions.find(function(D){return D.id===E.id})||E;r.currentMessages=ze(B,Ze(B,E.output,!1)),Ve(!0),dn()}}).catch(function(E){if(E&&E.errorCode==="duplicate_idempotency_key"){A(E.message||"\u68C0\u6D4B\u5230\u91CD\u590D\u53D1\u9001\uFF0C\u5DF2\u62E6\u622A\u3002","warning"),Ln("Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C");return}if(d){var B=Array.isArray(n.queuedMessages)?n.queuedMessages.slice():[];if(X({id:n.id,queuedMessages:B}),n.id===r.selectedId){var D=r.sessions.find(function(H){return H.id===n.id})||n;r.currentMessages=ze(D,Ze(D,D.output,!1)),Ve(!0),dn()}}else{var F=f.slice(0,-1);X({id:n.id,status:n.status,messages:F,structuredState:Object.assign({},n.structuredState||{},{inFlight:!1})}),n.id===r.selectedId&&(r.currentMessages=ze(Object.assign({},n,{messages:F,structuredState:Object.assign({},n.structuredState||{},{inFlight:!1})}),F),Ve(!0))}var I=E&&E.message||"",L=I==="Failed to fetch"||I==="NetworkError when attempting to fetch resource."||I==="Load failed"||/aborted|aborterror|networkerror|failed to fetch/i.test(I);L||A(E&&E.message||"\u65E0\u6CD5\u53D1\u9001\u7ED3\u6784\u5316\u6D88\u606F\u3002","error"),Ln("Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C")})}function Ln(e){var t=document.querySelector(".input-hint");t&&(t.textContent=e)}function dn(){rt()}var vp=10,As=26;function mp(e){if(typeof e!="string")return"";var t=e.replace(/\s+/g," ").trim();return t.length<=As?t:t.slice(0,As)+"\u2026"}function gp(){return!!r.queueBarExpanded}function hp(e){if(!!r.queueBarExpanded!=!!e){r.queueBarExpanded=!!e;var t=document.querySelector(".queue-bar");t&&t.classList.toggle("expanded",!!e)}}function yp(e,t,n){var i=e.length,a="queue-bar";n&&(a+=" queue-bar-capacity"),t&&(a+=" queue-bar-inflight");for(var u=t?"\u4E2D\u65AD\u5F53\u524D\u56DE\u590D\uFF0C\u7ACB\u5373\u53D1\u9001\u8FD9\u6761":"\u7ACB\u5373\u53D1\u9001\u8FD9\u6761",o="",s=0;s<i;s++){var l=e[s]==null?"":String(e[s]),d=mp(l),f=l+"\uFF08\u6309\u4F4F\u53EF\u62D6\u52A8\u8C03\u5E8F\uFF09";o+='<li class="queue-bar-item" data-index="'+s+'" data-action="drag" title="'+p(f)+'"><span class="queue-bar-item-index" aria-hidden="true">'+(s+1)+'</span><span class="queue-bar-item-text">'+p(d)+'</span><button type="button" class="queue-bar-item-promote" data-action="promote-item" title="'+p(u)+'" aria-label="\u7ACB\u5373\u53D1\u9001\u7B2C '+(s+1)+' \u6761"><svg width="11" height="11" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M13 2 L4 14 L11 14 L10 22 L20 9 L13 9 Z"/></svg></button><button type="button" class="queue-bar-item-delete" data-action="delete" aria-label="\u5220\u9664\u7B2C '+(s+1)+' \u6761\u6392\u961F\u6D88\u606F" title="\u5220\u9664"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="6" y1="6" x2="18" y2="18"/><line x1="6" y1="18" x2="18" y2="6"/></svg></button></li>'}var c="";return i>=2&&(c='<div class="queue-bar-head"><span class="queue-bar-head-count">'+i+' \u6761\u6392\u961F</span><button type="button" class="queue-bar-clear-all" data-action="clear-all" title="\u6E05\u7A7A\u5168\u90E8\u6392\u961F" aria-label="\u6E05\u7A7A\u5168\u90E8 '+i+' \u6761\u6392\u961F\u6D88\u606F">\u6E05\u7A7A</button></div>'),'<div class="'+a+'" data-queue-bar="1" title="\u6392\u961F '+i+' \u6761\uFF08\u6309\u4F4F\u6C14\u6CE1\u53EF\u8C03\u5E8F\uFF09">'+c+'<ol class="queue-bar-list" data-queue-list="1">'+o+"</ol></div>"}function rt(){var e=document.getElementById("queue-bar-host");if(e){var t=r.sessions.find(function(o){return o.id===r.selectedId}),n=t&&t.sessionKind==="structured",i=n?sa(t):[];if(i=Array.isArray(i)?i:[],!n||i.length===0){e.hidden=!0,e.innerHTML="",r.queueBarExpanded=!1;return}if(!r.queueBarDrag){e.hidden=!1;var a=!!(t.structuredState&&t.structuredState.inFlight&&t.status==="running"),u=i.length>=vp;e.innerHTML=yp(i,a,u)}}}function Ci(e,t){X({id:e.id,queuedMessages:t});var n=r.sessions.find(function(i){return i.id===e.id})||e;r.currentMessages=ze(n,Ze(n,n.output,!1)),Ve(!0),rt()}function bp(e){var t=r.sessions.find(function(o){return o.id===r.selectedId});if(t){var n=Array.isArray(t.queuedMessages)?t.queuedMessages.slice():[];if(!(e<0||e>=n.length)){var i=n.slice(),a=n.slice(0,e).concat(n.slice(e+1));X({id:t.id,queuedMessages:a});var u=r.sessions.find(function(o){return o.id===t.id})||t;r.currentMessages=ze(u,Ze(u,u.output,!1)),Ve(!0),rt(),fetch("/api/structured-sessions/"+t.id+"/queued/"+e,{method:"DELETE",credentials:"same-origin"}).then(function(o){if(!o.ok)return o.json().catch(function(){return{}}).then(function(s){throw new Error(s&&s.error||"\u5220\u9664\u5931\u8D25")})}).catch(function(o){Ci(t,i),A(o&&o.message||"\u5220\u9664\u6392\u961F\u6D88\u606F\u5931\u8D25\u3002","error")})}}}function Ep(){var e=r.sessions.find(function(i){return i.id===r.selectedId});if(e){var t=Array.isArray(e.queuedMessages)?e.queuedMessages.slice():[];if(t.length!==0){r.queueBarExpanded=!1,X({id:e.id,queuedMessages:[]});var n=r.sessions.find(function(i){return i.id===e.id})||e;r.currentMessages=ze(n,Ze(n,n.output,!1)),Ve(!0),rt(),fetch("/api/structured-sessions/"+e.id+"/queued",{method:"DELETE",credentials:"same-origin"}).then(function(i){if(!i.ok)return i.json().catch(function(){return{}}).then(function(a){throw new Error(a&&a.error||"\u6E05\u7A7A\u5931\u8D25")});A("\u5DF2\u6E05\u7A7A "+t.length+" \u6761\u6392\u961F\u6D88\u606F\u3002","info")}).catch(function(i){Ci(e,t),A(i&&i.message||"\u6E05\u7A7A\u6392\u961F\u6D88\u606F\u5931\u8D25\u3002","error")})}}}function Fp(e){if(!r.queueBarPromoting){var t=r.sessions.find(function(l){return l.id===r.selectedId});if(t){var n=Array.isArray(t.queuedMessages)?t.queuedMessages.slice():[];if(!(e<0||e>=n.length)){var i=n[e],a=n.slice(0,e).concat(n.slice(e+1)),u=n.slice(),o=!!(t.structuredState&&t.structuredState.inFlight&&t.status==="running");r.queueBarPromoting=!0,a.length===0&&(r.queueBarExpanded=!1),X({id:t.id,queuedMessages:a});var s=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Date.now().toString(36)+"-"+Math.random().toString(36).slice(2,10);A(o?"\u5DF2\u8BF7\u6C42\u4E2D\u65AD\u5F53\u524D\u56DE\u590D\uFF0C\u7ACB\u5373\u53D1\u9001\u8FD9\u6761\u3002":"\u5DF2\u7ACB\u5373\u53D1\u9001\u8FD9\u6761\u6D88\u606F\u3002","info"),fetch("/api/structured-sessions/"+t.id+"/queued/"+e+"/promote",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({expectedText:i,idempotencyKey:s})}).then(function(l){return l.ok?l.json():l.json().catch(function(){return{}}).then(function(d){throw new Error(d&&d.error||"\u7ACB\u5373\u53D1\u9001\u5931\u8D25")})}).then(function(l){if(l&&l.id&&(X(l),l.id===r.selectedId)){var d=r.sessions.find(function(f){return f.id===l.id})||l;r.currentMessages=ze(d,Ze(d,l.output,!1)),Ve(!0),rt()}r.queueBarPromoting=!1}).catch(function(l){r.queueBarPromoting=!1,Ci(t,u),A(l&&l.message||"\u7ACB\u5373\u53D1\u9001\u5931\u8D25\u3002","error")})}}}}function wp(e,t){var n=r.sessions.find(function(c){return c.id===r.selectedId});if(n){var i=Array.isArray(n.queuedMessages)?n.queuedMessages.slice():[];if(!(i.length<=1)&&t){var a=t.parentElement;if(a){var u=Number(t.getAttribute("data-index")),o=Array.prototype.slice.call(a.children),s=o.map(function(c){return c.getBoundingClientRect()}),l=3;s.length>=2&&(l=Math.max(0,s[1].top-s[0].top-s[0].height)),e.preventDefault();try{t.setPointerCapture(e.pointerId)}catch{}if(navigator&&navigator.vibrate)try{navigator.vibrate(8)}catch{}r.queueBarDrag={pointerId:e.pointerId,handleEl:t,itemEl:t,listEl:a,siblings:o,rects:s,origIndex:u,targetIndex:u,startY:e.clientY,gap:l,queueSnapshot:i},t.classList.add("dragging"),o.forEach(function(c){c!==t&&c.classList.add("queue-bar-item-sliding")});var d=function(c){Bp(c)},f=function(c){Dp(c)};r.queueBarDrag.moveHandler=d,r.queueBarDrag.upHandler=f,t.addEventListener("pointermove",d),t.addEventListener("pointerup",f),t.addEventListener("pointercancel",f)}}}}function Cp(e,t,n,i){for(var a=n.length,u=[],o=0;o<a;o++)u.push(o);u.splice(e,1),u.splice(t,0,e);for(var s=n[0].top,l=n[0].top,d=1;d<a;d++)n[d].top<l&&(l=n[d].top);for(var f={},c=l,v=0;v<a;v++){var h=u[v];f[h]=c,c+=n[h].height+i}return f}function Bp(e){var t=r.queueBarDrag;if(!(!t||e.pointerId!==t.pointerId)){e.preventDefault();var n=e.clientY-t.startY;t.itemEl.style.transform="translateY("+n+"px)";for(var i=t.rects[t.origIndex].top+t.rects[t.origIndex].height/2+n,a=t.origIndex,u=0;u<t.rects.length;u++)if(u!==t.origIndex){var o=t.rects[u].top+t.rects[u].height/2;u<t.origIndex&&i<o?a=Math.min(a,u):u>t.origIndex&&i>o&&(a=Math.max(a,u))}if(a!==t.targetIndex){t.targetIndex=a;var s=Cp(t.origIndex,a,t.rects,t.gap);t.siblings.forEach(function(l,d){if(d!==t.origIndex){var f=s[d]-t.rects[d].top;l.style.transform=f?"translateY("+f+"px)":""}})}}}function Dp(e){var t=r.queueBarDrag;if(!(!t||e&&e.pointerId!==t.pointerId)){try{t.handleEl.releasePointerCapture(t.pointerId)}catch{}t.handleEl.removeEventListener("pointermove",t.moveHandler),t.handleEl.removeEventListener("pointerup",t.upHandler),t.handleEl.removeEventListener("pointercancel",t.upHandler);var n=t.origIndex,i=t.targetIndex,a=t.queueSnapshot;if(t.siblings.forEach(function(d){d.style.transform="",d.classList.remove("queue-bar-item-sliding")}),t.itemEl.classList.remove("dragging"),r.queueBarDrag=null,n===i){rt();return}for(var u=[],o=0;o<a.length;o++)u.push(o);u.splice(n,1),u.splice(i,0,n);var s=u.map(function(d){return a[d]}),l=r.sessions.find(function(d){return d.id===r.selectedId});if(!l){rt();return}X({id:l.id,queuedMessages:s}),rt(),fetch("/api/structured-sessions/"+l.id+"/queued",{method:"PATCH",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({order:u})}).then(function(d){if(!d.ok)return d.json().catch(function(){return{}}).then(function(f){throw new Error(f&&f.error||"\u6392\u5E8F\u5931\u8D25")})}).catch(function(d){Ci(l,a),A(d&&d.message||"\u8C03\u6574\u6392\u961F\u987A\u5E8F\u5931\u8D25\u3002","error")})}}function kp(){var e=document.getElementById("queue-bar-host");!e||e.__queueDelegated||(e.__queueDelegated=!0,e.addEventListener("click",function(t){var n=t.target,i=n&&n.closest?n.closest("[data-action]"):null;if(i&&e.contains(i)){var a=i.getAttribute("data-action");if(a==="drag")return;if(t.preventDefault(),t.stopPropagation(),a==="promote-item"){var u=i.closest(".queue-bar-item");u&&Fp(Number(u.getAttribute("data-index")))}else if(a==="delete"){var o=i.closest(".queue-bar-item");o&&bp(Number(o.getAttribute("data-index")))}else a==="clear-all"&&Ep();return}}),e.addEventListener("pointerdown",function(t){if(!(t.button!==void 0&&t.button!==0)){var n=t.target;if(!(n&&n.closest&&n.closest('[data-action="delete"], [data-action="promote-item"], [data-action="clear-all"], [data-action="expand"]'))){var i=n&&n.closest?n.closest(".queue-bar-item"):null;i&&wp(t,i)}}}),e.addEventListener("keydown",function(t){t.key==="Escape"&&gp()&&(t.stopPropagation(),hp(!1))}))}function xs(e){if(!e||!Array.isArray(e.content))return 0;for(var t=0,n=0;n<e.content.length;n++){var i=e.content[n];if(i){if(typeof i.text=="string"&&(t+=i.text.length),typeof i.thinking=="string"&&(t+=i.thinking.length),typeof i.content=="string")t+=i.content.length;else if(Array.isArray(i.content))for(var a=0;a<i.content.length;a++){var u=i.content[a];u&&typeof u.text=="string"&&(t+=u.text.length)}if(i.input)try{t+=JSON.stringify(i.input).length}catch{}}}return t}function Ap(e,t){if(!e)return t;if(!t)return e;var n=xs(e),i=xs(t);return i>=n?t:Object.assign({},e,{usage:t.usage||e.usage})}function ze(e,t){var n=Array.isArray(t)?dr(t):[],i=Array.isArray(n)?n.slice():[];if(!e||e.sessionKind!=="structured")return i;if(e.structuredState&&e.structuredState.inFlight){var a=i[i.length-1];(!a||a.role!=="assistant")&&i.push({role:"assistant",content:[{type:"text",text:"",__processing:!0}]})}return i}function Ss(){var e=r.sessions.find(function(t){return t.id===r.selectedId});ti(e),dn()}function Is(e){var t=Bt(),n=t&&t.provider==="codex";return e&&(e.errorCode==="SESSION_NOT_RUNNING"||e.errorCode==="SESSION_NO_PTY")?n?"Codex \u4F1A\u8BDD\u5DF2\u7ED3\u675F\uFF1B\u82E5\u5B58\u5728 Codex \u5386\u53F2\u4F1A\u8BDD\uFF0C\u5C06\u5728\u4F60\u4E0B\u6B21\u53D1\u9001\u6D88\u606F\u65F6\u81EA\u52A8\u6062\u590D\u3002":"\u4F1A\u8BDD\u5DF2\u7ED3\u675F\uFF1B\u82E5\u5B58\u5728 Claude \u5386\u53F2\u4F1A\u8BDD\uFF0C\u5C06\u5728\u4F60\u4E0B\u6B21\u53D1\u9001\u6D88\u606F\u65F6\u81EA\u52A8\u6062\u590D\u3002":e&&e.errorCode==="SESSION_NOT_FOUND"?"\u4F1A\u8BDD\u4E0D\u5B58\u5728\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u6216\u65B0\u5EFA\u4F1A\u8BDD\u3002":e&&e.message||(n?"Codex \u4F1A\u8BDD\u6682\u4E0D\u53EF\u7528\uFF1B\u82E5\u5B58\u5728 Codex \u5386\u53F2\u4F1A\u8BDD\uFF0C\u5C06\u81EA\u52A8\u5C1D\u8BD5\u6062\u590D\u3002":"\u4F1A\u8BDD\u6682\u4E0D\u53EF\u7528\uFF1B\u82E5\u5B58\u5728 Claude \u5386\u53F2\u4F1A\u8BDD\uFF0C\u5C06\u81EA\u52A8\u5C1D\u8BD5\u6062\u590D\u3002")}function Ts(e){var t=new Error(e&&e.error||"\u4F1A\u8BDD\u5DF2\u7ED3\u675F\u3002");return e&&typeof e=="object"&&(t.errorCode=e.errorCode||null,t.sessionId=e.sessionId||r.selectedId||null,t.sessionStatus=Object.prototype.hasOwnProperty.call(e,"sessionStatus")?e.sessionStatus:null),t}function Ls(e){return e&&(e.errorCode==="SESSION_NOT_RUNNING"||e.errorCode==="SESSION_NO_PTY"||e.errorCode==="SESSION_NOT_FOUND")}function xp(e,t){e&&X({id:e,status:t||"exited"})}function Qg(e){if(!e||!Array.isArray(e.messages)||e.messages.length<2)return!1;var t=e.messages.some(function(i){return i&&i.role==="user"&&Array.isArray(i.content)&&i.content.some(function(a){return a&&a.type==="text"&&typeof a.text=="string"&&a.text.trim().length>0})}),n=e.messages.some(function(i){return i&&i.role==="assistant"&&Array.isArray(i.content)&&i.content.some(function(a){return a&&a.type==="text"&&typeof a.text=="string"&&a.text.trim().length>0})});return t&&n}function ja(e){return!!(e&&!ue(e)&&(e.provider==="claude"||e.provider==="codex")&&e.status!=="running"&&e.claudeSessionId)}function Sp(e,t){if(!e)return A("\u4F1A\u8BDD\u4E0D\u5B58\u5728\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u6216\u65B0\u5EFA\u4F1A\u8BDD\u3002","error"),Promise.resolve(null);if(e.status==="running")return Promise.resolve(e);if(!ja(e)){var n=e&&e.provider==="codex"?"Codex":"Claude";return A("\u8BE5\u4F1A\u8BDD\u6CA1\u6709\u53EF\u6062\u590D\u7684 "+n+" \u5386\u53F2\u4E0A\u4E0B\u6587\uFF0C\u8BF7\u65B0\u5EFA\u4F1A\u8BDD\u3002","error"),Promise.resolve(null)}return Ws(e.id,t).then(function(i){return i?(X(i),pe(),On(i.id),gn(i.id).then(function(){return Ot(!0),i})):null})}function Ip(e,t){return[t,"\r"]}function Tp(e,t,n,i){var a=Array.isArray(e)?e.filter(function(o){return!!o}):[];if(a.length===0)return Promise.resolve();var u=typeof n=="number"?n:0;return a.reduce(function(o,s,l){return o.then(function(){return l>0&&u>0?new Promise(function(d){setTimeout(d,u)}).then(function(){return vt(s,l===a.length-1?t:void 0,i)}):vt(s,l===a.length-1?t:void 0,i)})},Promise.resolve())}var Lp=5e3,Mp=100;function Ra(e){e&&(r.pendingMessages.length>=Mp&&r.pendingMessages.shift(),r.pendingMessages.push({input:e,at:Date.now()}))}function qp(e){var t=Array.isArray(e)?e.filter(function(n){return!!n}):[];t.forEach(function(n){Ra(n)})}function Op(e){if(!(typeof e!="string"||!e)){var t=e.replace(/\x1b\[200~/g,"").replace(/\x1b\[201~/g,"");/(?:^|\n)\s*\/clear\s*(?:\r|\n|$)/.test(t)&&typeof r<"u"&&r&&(r.terminalOutputMarker=(r.terminalOutput&&r.terminalOutput.length)|0)}}function vt(e,t,n){return!e||!r.selectedId?Promise.resolve():(Op(e),r.messageQueue.push(e),r.inputQueue=r.inputQueue.then(function(){return Pp(e,t,n).finally(function(){var i=r.messageQueue.indexOf(e);i>-1&&r.messageQueue.splice(i,1)})}),r.inputQueue)}function Pp(e,t,n){if(!r.selectedId)return Promise.resolve();var i=r.selectedId,a=n||r.currentView;return up()?r.wsConnected?fetch("/api/sessions/"+i+"/input",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({input:e,view:a,shortcutKey:t||void 0})}).then(function(u){return u.ok?u.json():u.json().catch(function(){return{error:"\u8BF7\u6C42\u5931\u8D25"}}).then(function(o){var s=Ts(o);throw s.httpStatus=u.status,console.error("[wand] postInput: request failed",{status:u.status,errorCode:s.errorCode,message:s.message,sessionId:i}),Ls(s)&&xp(i,s.sessionStatus||"exited"),s})}).then(function(u){return u&&u.id&&(X(u),u.id===r.selectedId&&(u.messages&&u.messages.length>0&&(r.currentMessages=u.messages),Ve(!0))),u}):(Ra(e),console.log("[wand] postInput: WebSocket disconnected, queued message",{sessionId:r.selectedId,inputLength:e.length}),Promise.resolve()):r.wsConnected?(console.warn("[wand] postInput: session not running, skipping send",{sessionId:r.selectedId}),A("\u4F1A\u8BDD\u672A\u8FD0\u884C\uFF0C\u6B63\u5728\u7B49\u5F85\u81EA\u52A8\u6062\u590D\u540E\u91CD\u8BD5\u3002","info"),Promise.resolve()):(Ra(e),console.log("[wand] postInput: session not running, queued for reconnect",{sessionId:r.selectedId,inputLength:e.length}),Promise.resolve())}function $g(e){return vt(e)}function Bt(){return r.sessions.find(function(e){return e.id===r.selectedId})||null}function Xg(e){return e&&e.provider==="codex"?`
24
- `:"\r"}function Wa(){return!!r.selectedId&&r.currentView==="terminal"}function Hp(e){return!(!r.terminal||!e||e!==r.selectedId||r.terminalSessionId&&r.terminalSessionId!==e)}function Ms(e){if(!r.terminalInteractive||!Wa()||e.defaultPrevented||e.isComposing)return!1;var t=e.target;return t?!(document.documentElement.classList.contains("is-wand-embed-terminal")&&t.closest&&t.closest("#input-box")||t.closest&&t.closest("#mini-keyboard")||Vp(t)):!0}var _p={Esc:"escape",ArrowUp:"up",ArrowDown:"down",ArrowLeft:"left",ArrowRight:"right",Enter:"enter",Tab:"tab",Backspace:"backspace",Home:"home",End:"end",PageUp:"pageup",PageDown:"pagedown",Delete:"delete",Insert:"insert"," ":"space"},Np={space:" ",tab:" ",shift_tab:"\x1B[Z",backspace:"\x7F",home:"\x1B[H",end:"\x1B[F",pageup:"\x1B[5~",pagedown:"\x1B[6~",delete:"\x1B[3~",insert:"\x1B[2~"},qs={" ":0,"[":27,"\\":28,"]":29,"^":30,_:31},jp=400,Rp=10,Wp=8,Bi=54,cn=8,za=[{key:"enter",label:"Enter"},{key:"ctrl_c",label:"Ctrl+C"},{key:"escape",label:"Esc"},{key:"shift_tab",label:"Shift+Tab"}],zp=new Set(["mini-keyboard-fab","mini-keyboard-toggle","terminal-interactive-toggle"]);function Vp(e){return!!(e&&zp.has(e.id))}var Up=new Set(["ctrl","alt","shift"]);function Os(e){return Up.has(e)}function Kp(e){return Np[e]||""}function Jp(e){var t=e.toLowerCase();return t>="a"&&t<="z"?String.fromCharCode(t.charCodeAt(0)-96):Object.prototype.hasOwnProperty.call(qs,t)?String.fromCharCode(qs[t]):""}function Yp(e){return _p[e.key]||e.key}function Gp(e,t){return{ctrl:e.ctrlKey,alt:e.altKey,shift:e.shiftKey&&(t.length===1||t==="tab"),meta:e.metaKey}}function Ps(e,t){e&&vt(e,t).catch(function(){})}function Qp(){Gs()}function Va(e){r.keyboardPopupOpen=!1,e!==!1&&ki(),Zp()}function $p(){Wa()&&Mn(!r.terminalInteractive)}function Mn(e){var t=!!e&&Wa();r.terminalInteractive!==t&&(r.terminalInteractive=t,t?(ev(),Va(!1),Qp(),A("\u7EC8\u7AEF\u4EA4\u4E92\u6A21\u5F0F\u5DF2\u5F00\u542F","info")):(tv(),ki()),Sr())}function Ua(){var e=r.sessions.find(function(n){return n.id===r.selectedId}),t=!e||e.status!=="running"||r.currentView!=="terminal";if(t&&r.terminalInteractive){Mn(!1);return}(!e||r.currentView!=="terminal")&&r.keyboardPopupOpen&&(r.keyboardPopupOpen=!1),Sr()}function Sr(){var e=r.sessions.find(function(y){return y.id===r.selectedId}),t=ue(e),n=e&&e.provider==="codex",i=t?!!(e&&e.structuredState&&e.structuredState.inFlight):!!e&&e.status==="running",a=document.getElementById("input-box"),u=["terminal-interactive-toggle-top"];u.forEach(function(y){var C=document.getElementById(y);if(C){C.classList.toggle("active",r.terminalInteractive),C.classList.toggle("is-on",r.terminalInteractive),C.classList.toggle("hidden",t||r.currentView!=="terminal"||!e),C.setAttribute("aria-checked",r.terminalInteractive?"true":"false");var E=C.querySelector(".plus-popover-toggle-state");E&&(E.textContent=r.terminalInteractive?"\u5F00":"\u5173")}});var o=document.querySelector(".input-hint");o&&(o.classList.toggle("hidden",t?!0:r.currentView==="terminal"),!t&&e&&(o.textContent=n?"Enter \u53D1\u9001 \xB7 chat \u4E3A\u89E3\u6790\u89C6\u56FE\uFF0Cterminal \u4E3A\u539F\u59CB\u8F93\u51FA":"Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C"));var s=!t&&!i&&ja(e);a&&(a.placeholder=El(e,r.terminalInteractive),a.disabled=!t&&!!e&&!i&&!s,a.setAttribute("aria-disabled",a.disabled?"true":"false"),a.readOnly=!1,a.classList.toggle("is-terminal-passthrough",!!r.terminalInteractive&&!document.documentElement.classList.contains("is-wand-embed-terminal")));var l=document.querySelector(".input-composer");l&&r.terminalInteractive&&l.classList.contains("voice-mode")&&(l.classList.remove("voice-mode"),Ie.recording=!1,Ha());var d=document.getElementById("send-input-button"),f=t&&i;d&&(d.disabled=!t&&!!e&&!i&&!s,d.setAttribute("title",t?f?"\u6392\u961F\u53D1\u9001\uFF08\u5F53\u524D\u56DE\u590D\u7ED3\u675F\u540E\u5904\u7406\uFF09":"\u53D1\u9001":n?i?"\u53D1\u9001\u7ED9 Codex":"Codex \u4F1A\u8BDD\u5DF2\u7ED3\u675F":!e||i||s?"\u53D1\u9001":"\u4F1A\u8BDD\u5DF2\u7ED3\u675F"),d.classList.toggle("queue-mode",f));var c=document.getElementById("stop-button");if(c){var v=Tu(e);c.classList.toggle("hidden",!v.active)}var h=document.getElementById("stop-button");if(h){var g=Tu(e);h.classList.toggle("hidden",!g.active)}var m=document.getElementById("output");m&&m.classList.toggle("interactive",!t&&r.terminalInteractive),es()}function Di(){var e=window.getSelection&&window.getSelection();if(!e||e.isCollapsed)return!1;var t=document.getElementById("output");if(!t)return!1;var n=e.anchorNode;return n&&n.nodeType===3&&(n=n.parentNode),!!(n&&t.contains(n))}function Ka(e){if(Ms(e)&&!e.metaKey){var t=Yp(e);if(t){var n=Gp(e,t);if(!Os(t)&&!(n.ctrl&&t.length===1&&t.toLowerCase()==="c"&&Di())){var i=_s(t,n);i&&(e.preventDefault(),Ps(i,t))}}}}function Xp(){r.terminal&&wf(500)}function Zp(){Er()}function Zg(e){e.preventDefault(),e.stopPropagation(),!(r.currentView!=="terminal"||!r.selectedId)&&(r.keyboardPopupOpen=!r.keyboardPopupOpen,Sr())}function Hs(){r.keyboardPopupOpen=!1,Sr()}function ev(){document.addEventListener("keydown",Ka,!0)}function tv(){document.removeEventListener("keydown",Ka,!0)}function _s(e,t){var n=t||{ctrl:!1,alt:!1,shift:!1};if(Os(e))return"";if(e==="tab"&&n.shift)return"\x1B[Z";var i=Kp(e);if(i)return i;if(e.indexOf("ctrl_")===0)return String.fromCharCode(e.charCodeAt(e.length-1)-96);var a=Ir(e);if(a)return a;if(!e)return"";var u=e.length===1?e:"";return u?(n.shift&&(u=u.toUpperCase()),n.ctrl?Jp(u):n.alt?"\x1B"+u:u):""}function ki(){r.modifiers.ctrl=!1,r.modifiers.alt=!1,r.modifiers.shift=!1,nv()}function nv(){var e=document.getElementById("mini-keyboard");e&&["ctrl","alt","shift"].forEach(function(t){var n=e.querySelector('[data-key="'+t+'"]');n&&n.classList.toggle("active",!!r.modifiers[t])})}function Ir(e){switch(e){case"yes":return"y\r";case"no":return"n\r";case"up":return"\x1B[A";case"down":return"\x1B[B";case"left":return"\x1B[D";case"right":return"\x1B[C";case"enter":return"\r";case"ctrl_c":return"";case"ctrl_d":return"";case"ctrl_l":return"\f";case"ctrl_u":return"";case"ctrl_k":return"\v";case"ctrl_w":return"";case"ctrl_z":return"";case"escape":return"\x1B";default:return""}}function rv(){if(r.pendingMessages.length!==0){var e=Bt();if(ue(e)){r.pendingMessages=[];return}var t=Date.now(),n=[],i=0;r.pendingMessages.forEach(function(u){if(typeof u=="string"){n.push(u);return}if(!(!u||typeof u.input!="string")){if(t-(u.at||0)>Lp){i++;return}n.push(u.input)}}),r.pendingMessages=[],i>0&&console.log("[wand] flushPendingMessages: dropped "+i+" stale input(s)");var a=Promise.resolve();n.forEach(function(u){a=a.then(function(){return iv(u).catch(function(){})})})}}function iv(e){if(!e||!r.selectedId)return Promise.resolve();var t=r.selectedId;return fetch("/api/sessions/"+t+"/input",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({input:e,view:r.currentView})}).then(function(n){return n.ok?n.json():n.json().catch(function(){return{error:"\u8BF7\u6C42\u5931\u8D25"}}).then(function(i){var a=Ts(i);if(a.httpStatus=n.status,Ls(a))return console.log("[wand] sendInputDirect: session unavailable, dropping",{sessionId:t,errorCode:a.errorCode}),null;throw a})}).then(function(n){return n&&n.id&&(X(n),n.id===r.selectedId&&(n.messages&&n.messages.length>0&&(r.currentMessages=n.messages),Ve(!0))),n})}function Ja(){if(r.selectedId){var e=r.selectedId;Ta(Ee("stop.confirm.message"),{title:Ee("stop.confirm.title"),danger:!0,okLabel:Ee("stop.confirm.ok"),cancelLabel:Ee("stop.confirm.cancel")}).then(function(t){t&&r.selectedId===e&&fetch("/api/sessions/"+e+"/stop",{method:"POST",credentials:"same-origin"}).then(Pt)})}}function Ya(e){var t=document.querySelector('.session-item[data-session-id="'+e+'"]');t&&t.classList.add("deleting"),setTimeout(function(){fetch("/api/sessions/"+e,{method:"DELETE",credentials:"same-origin"}).then(function(n){return n.json()}).then(function(n){if(n&&n.error)throw new Error(n.error);return r.selectedId===e&&(r.selectedId=null,he()),Pt()}).catch(function(){t&&t.classList.remove("deleting");var n=document.getElementById("action-error");He(n,"\u65E0\u6CD5\u5220\u9664\u4F1A\u8BDD\u3002")})},250)}function Ns(e,t){t&&t.classList.add("deleting"),setTimeout(function(){fetch("/api/claude-history/"+encodeURIComponent(e),{method:"DELETE",credentials:"same-origin"}).then(function(n){return n.json()}).then(function(n){if(n&&n.error)throw new Error(n.error);r.claudeHistory=r.claudeHistory.filter(function(i){return i.claudeSessionId!==e}),delete r.selectedClaudeHistoryIds[e],pe()}).catch(function(){t&&t.classList.remove("deleting");var n=document.getElementById("action-error");He(n,"\u65E0\u6CD5\u5220\u9664\u4F1A\u8BDD\u3002")})},250)}function eh(e,t){Ns(e,t)}function av(e,t,n){e&&fetch("/api/claude-history?cwd="+encodeURIComponent(e),{method:"DELETE",credentials:"same-origin"}).then(function(i){return i.json()}).then(function(i){if(i&&i.error)throw new Error(i.error);r.claudeHistory=r.claudeHistory.filter(function(a){return a.cwd!==e}),pe()}).catch(function(){js(n,!1);var i=document.getElementById("action-error");He(i,"\u65E0\u6CD5\u6E05\u7406\u8BE5\u76EE\u5F55\u7684\u5386\u53F2\u4F1A\u8BDD\u3002")})}function js(e,t){e.forEach(function(n){n.classList.toggle("deleting",t)})}function uv(e){return Array.prototype.slice.call(document.querySelectorAll('.claude-history-item[data-cwd="'+window.CSS.escape(String(e))+'"]'))}var Rs=null,Tr=null;function Lr(){if(Tr){Tr.classList.remove("swiped");var e=Tr.querySelector(".session-item-content");e&&(e.style.transform=""),Tr=null}}function ov(e){Rs=null,Tr=null}function sv(e,t,n){e==="claude"&&(r.preferredCommand=e,r.chatMode=Dt(e,r.chatMode));var i=e==="claude"||e==="codex"?Or(e):"";return fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({command:e,cwd:t||"",mode:r.chatMode||r.config.defaultMode||"default",model:i||void 0,thinkingEffort:r.chatThinking||void 0}))}).then(function(a){return a.json()}).then(function(a){return a.error?(n&&He(n,a.error),null):(r.selectedId=a.id,he(),r.drafts[a.id]="",a)})}var Ga=!1;function Ws(e,t){return!e||Ga?Promise.resolve(null):(Ga=!0,fetch("/api/sessions/"+encodeURIComponent(e)+"/resume",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({mode:r.chatMode||r.config.defaultMode||"default"}))}).then(function(n){return n.json()}).then(function(n){return n.error?(t?He(t,n.error):A(n.error,"error"),null):(r.selectedId=n.id,he(),r.drafts[n.id]="",n)}).catch(function(n){var i=n&&n.message||"\u65E0\u6CD5\u6062\u590D\u4F1A\u8BDD\u3002";return t?He(t,i):A(i,"error"),null}).finally(function(){Ga=!1}))}function th(e,t){return e?fetch("/api/claude-sessions/"+encodeURIComponent(e)+"/resume",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({mode:r.chatMode||r.config.defaultMode||"default"}))}).then(function(n){return n.json()}).then(function(n){return n.error?(t?He(t,n.error):A(n.error,"error"),null):(r.claudeHistory=r.claudeHistory.filter(function(i){return i.claudeSessionId!==e}),r.selectedId=n.id,he(),r.drafts[n.id]="",n)}).catch(function(n){var i=n&&n.message||"\u65E0\u6CD5\u6309 Claude \u4F1A\u8BDD ID \u6062\u590D\u4F1A\u8BDD\u3002";return t?He(t,i):A(i,"error"),null}):Promise.resolve(null)}function fn(e){return!e||!e.id?Promise.resolve():(r.selectedId=e.id,he(),r.currentMessages=[],Fr(),Ft(),xr(e.id),X(e),pe(),On(e.id),gn(e.id).then(function(){Ot(!0)}))}function zs(e){return Ws(e).then(function(t){return t?(t.claudeSessionId&&(t.provider==="codex"?r.codexHistory=r.codexHistory.filter(function(n){return n.claudeSessionId!==t.claudeSessionId}):r.claudeHistory=r.claudeHistory.filter(function(n){return n.claudeSessionId!==t.claudeSessionId})),fn(t).then(function(){return t})):null})}function nh(e,t,n){return sv(e,t,n).then(function(i){return i?fn(i).then(function(){return i}):null})}function rh(e){var t=document.getElementById("welcome-input");if(t){t.placeholder="\u6B63\u5728\u601D\u8003\u2026",t.disabled=!0;var n=r.chatMode||"managed",i=$e(),a=Xe(),u=Or(a);fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({command:a,cwd:i,mode:n,initialInput:e,model:u||void 0,thinkingEffort:r.chatThinking||void 0}))}).then(function(o){return o.json()}).then(function(o){return o.error?(A(o.error,"error"),t.placeholder="\u8F93\u5165\u6D88\u606F",t.disabled=!1,null):fn(o)}).catch(function(o){A(o&&o.message||"\u65E0\u6CD5\u542F\u52A8\u4F1A\u8BDD\u3002","error"),t.placeholder="\u8F93\u5165\u6D88\u606F",t.disabled=!1}).finally(function(){t.placeholder="\u8F93\u5165\u6D88\u606F",t.disabled=!1})}}function ih(e,t,n){var i=r.chatMode||"managed",a=$e(),u=Xe(),o=Or(u);fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({command:u,cwd:a,mode:i,initialInput:e||void 0,model:o||void 0,thinkingEffort:r.chatThinking||void 0}))}).then(function(s){return s.json()}).then(function(s){return s.error?(A(s.error,"error"),null):(t&&(t.value=""),n&&(n.value=""),fn(s))}).catch(function(s){A(s&&s.message||"\u65E0\u6CD5\u542F\u52A8\u4F1A\u8BDD\u3002","error")})}function lv(e){e.disabled=!0,zs(e.dataset.sessionId).finally(function(){e.disabled=!1})}function dv(e){var t=e.dataset.claudeSessionId,n=e.dataset.cwd;t&&(e.disabled=!0,Ai(t,n).then(function(i){i&&i.id&&(r.codexHistory=r.codexHistory.filter(function(a){return a.claudeSessionId!==t}),r.selectedId=i.id,he(),r.drafts[i.id]="",fn(i).then(function(){_t()}))}).finally(function(){e.disabled=!1}))}function Ai(e,t){return fetch("/api/codex-sessions/"+encodeURIComponent(e)+"/resume",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({mode:r.chatMode||r.config&&r.config.defaultMode||"default",cwd:t}))}).then(function(n){return n.json()}).then(function(n){return n.error?(A(n.error,"error"),null):n}).catch(function(n){return A(n&&n.message||"\u65E0\u6CD5\u6062\u590D\u4F1A\u8BDD\u3002","error"),null})}function cv(e){var t=e.dataset.claudeSessionId;t&&An("\u786E\u8BA4\u5220\u9664\u8FD9\u6761 Codex \u4F1A\u8BDD\u5417\uFF1F",{title:"\u5220\u9664\u4F1A\u8BDD"}).then(function(n){if(n){var i=e.closest(".session-item");i&&(i.style.opacity="0.5"),fetch("/api/codex-history/"+encodeURIComponent(t),{method:"DELETE",credentials:"same-origin"}).then(function(a){return a.json()}).then(function(a){a&&a.ok?(r.codexHistory=r.codexHistory.filter(function(u){return u.claudeSessionId!==t}),pe()):i&&(i.style.opacity="1")}).catch(function(){i&&(i.style.opacity="1")})}})}function fv(e){var t=e.dataset.claudeSessionId,n=e.dataset.cwd;t&&(e.disabled=!0,xi(t,n).then(function(i){i&&i.id&&(r.claudeHistory=r.claudeHistory.filter(function(a){return a.claudeSessionId!==t}),r.selectedId=i.id,he(),r.drafts[i.id]="",fn(i).then(function(){_t()}))}).finally(function(){e.disabled=!1}))}function xi(e,t){return fetch("/api/claude-sessions/"+encodeURIComponent(e)+"/resume",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({mode:r.chatMode||r.config&&r.config.defaultMode||"default",cwd:t}))}).then(function(n){return n.json()}).then(function(n){return n.error?(A(n.error,"error"),null):n}).catch(function(n){return A(n&&n.message||"\u65E0\u6CD5\u6062\u590D\u4F1A\u8BDD\u3002","error"),null})}function Mr(){return"ontouchstart"in window||navigator.maxTouchPoints>0}function Ot(e){if(!r.terminalInteractive){var t=document.getElementById("input-box");!t||!r.selectedId||document.activeElement!==t&&(e&&Mr()||Qa(t))}}function ah(){var e=document.querySelector(".chat-messages");e&&(e.scrollTop=0)}function Vs(){var e=document.querySelector(".input-panel");e&&e.style.removeProperty("--keyboard-offset")}function Us(){var e=document.querySelector(".input-panel");e&&e.style.removeProperty("--keyboard-offset")}function Si(e){if(e){var t=e.selectionStart,n=e.selectionEnd;Ii(e),typeof t=="number"&&typeof n=="number"&&e.setSelectionRange(t,n)}}function Ks(e){!e||e.dataset.touchScrollBound==="true"||(e.dataset.touchScrollBound="true",e.addEventListener("touchstart",function(){e.scrollHeight<=e.clientHeight+1||(e.scrollTop<=0?e.scrollTop=1:e.scrollTop+e.clientHeight>=e.scrollHeight&&(e.scrollTop=Math.max(1,e.scrollHeight-e.clientHeight-1)))},{passive:!0}))}function Js(e){e&&(wt(e),Si(e))}function pv(e){var t=e&&e.target?e.target:document.getElementById("input-box");t&&(Vs(),Js(t))}function vv(e){var t=e&&e.target?e.target:document.getElementById("input-box");Us(),Jo(2200,t);var n=[80,200,380,620,900];n.forEach(function(i,a){setTimeout(function(){Un(!1),a===1&&Mr()&&(Qe("keyboard-blur",{forceReplay:!0}),pt("keyboard"))},i)})}function mv(e){e&&(e.setSelectionRange(e.value.length,e.value.length),Si(e))}function Qa(e){e&&(e.focus({preventScroll:!0}),mv(e))}function gv(e){Ks(e),Js(e)}function hv(e){Qa(e)}function uh(e){Vs(),Si(e)}function yv(){Us()}function bv(e){Si(e)}function oh(e){hv(e)}function Ev(e){gv(e)}function sh(){yv()}function lh(e){bv(e)}function Fv(e,t){if(!e||!t||document.activeElement!==t)return!1;var n=window.innerHeight-e.height-e.offsetTop;if(n<=50)return!1;var i=t.getBoundingClientRect();return i.bottom>e.height-12}function Ii(e){if(e){var t=e.scrollHeight>e.clientHeight+1;if(!t){e.scrollTop=0;return}e.scrollTop=e.scrollHeight}}function Ys(){if(r.terminalInteractive){Gs();return}if(!Mr()){var e=document.getElementById("input-box");!e||!r.selectedId||document.activeElement===e||Qa(e)}}function Gs(){var e=document.getElementById("output");e&&(e.setAttribute("tabindex","0"),e.focus(),r.terminal&&r.terminal.focus&&r.terminal.focus())}function wv(){var e=document.querySelector(".input-panel"),t=document.querySelector(".chat-messages");if("virtualKeyboard"in navigator){var n=navigator.virtualKeyboard;n.addEventListener("geometrychange",function(){e&&e.style.removeProperty("padding-bottom")})}var i=document.getElementById("output");i&&i.addEventListener("click",function(){Ys()}),t&&t.addEventListener("click",function(a){var u=a.target;u.tagName!=="A"&&u.tagName!=="BUTTON"&&!u.closest("button")&&!u.closest("[data-tool-toggle]")&&Ys()}),document.addEventListener("click",function(a){if(Mr()){var u=document.getElementById("input-box");if(!(!u||document.activeElement!==u)){var o=a.target;!o||typeof o.closest!="function"||o.closest(".input-panel")||o.closest("#mini-keyboard")||o.closest("#mini-keyboard-fab")||o.closest("#mini-keyboard-toggle")||o.closest("#terminal-interactive-toggle")||o.closest(".wand-joystick-root")||u.blur()}}},!0)}function $a(){try{window.scrollTo(0,0)}catch{}document.scrollingElement&&(document.scrollingElement.scrollTop=0),document.documentElement&&(document.documentElement.scrollTop=0),document.body&&(document.body.scrollTop=0)}function Ve(e){r.renderPending&&!e||(r.renderPending=!0,e?(Ti(!0),r.renderPending=!1):requestAnimationFrame(function(){Ti(!1),r.renderPending=!1}))}r.chatRenderTimer=null;function Xa(e){if(!(r.chatRenderTimer&&!e)){if(r.chatRenderTimer&&clearTimeout(r.chatRenderTimer),e){r.chatRenderTimer=null,Ve();return}try{window.__scheduleChatRender=function(){Xa(!0)}}catch{}var t=r.sessions.find(function(a){return a.id===r.selectedId}),n=t&&t.status==="running"&&t.sessionKind!=="structured",i=n?as:us;r.chatRenderTimer=setTimeout(function(){r.chatRenderTimer=null;var a=r.sessions.find(function(u){return u.id===r.selectedId});a&&(r.currentMessages=ze(a,Ze(a,a.output,!0))),Ve()},i)}}function Cv(e,t){if(!e||!t||t.length===0)return[];function n(C){return C.replace(/\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])/g,"")}for(var i=n(e),a=[],u=[],o=0;o<t.length;o++)if(t[o].role==="user"){var s="",l=t[o].content;if(typeof l=="string")s=l;else if(Array.isArray(l)){for(var d=0;d<l.length;d++)if(l[d].type==="text"){s=l[d].text;break}}s&&u.push({text:s,index:o})}for(var f=0,o=0;o<u.length;o++){var c=u[o],v=i.indexOf("\u276F "+c.text,f);if(v===-1&&(v=i.indexOf(`
20
+ `,view:r.currentView})}).catch(function(s){console.error("[wand] Error sending answer:",s),t.submitted=!1,window.__askRender(e)})}}}};function If(){if(!r.__globalListenersBound){r.__globalListenersBound=!0,document.addEventListener("click",function(){var t=document.getElementById("sidebar-overflow-menu");t&&t.classList.remove("open")}),document.addEventListener("click",function(t){var n=t.target;if(!(!n||typeof n.closest!="function")){var i=n.closest("#check-update-button, #do-update-button, #do-restart-button");!i||i.disabled||(t.preventDefault(),i.id==="check-update-button"?Ql():i.id==="do-update-button"?lg():dg())}}),window.addEventListener("resize",function(){var t=document.getElementById("sidebar-overflow-menu");t&&t.classList.remove("open")});var e=function(){r.topbarMoreOpen=!1;var t=document.getElementById("topbar-more-menu"),n=document.getElementById("topbar-more-button");t&&t.classList.add("hidden"),n&&(n.classList.remove("active"),n.setAttribute("aria-expanded","false"))};document.addEventListener("click",function(t){if(r.topbarMoreOpen){var n=document.getElementById("topbar-more-menu"),i=n&&n.parentElement;i&&!i.contains(t.target)&&e()}}),document.addEventListener("keydown",function(t){t.key==="Escape"&&r.topbarMoreOpen&&e()}),document.addEventListener("click",function(t){if(r.plusPopoverOpen){var n=document.getElementById("composer-plus-popover"),i=document.getElementById("attach-btn");n&&n.contains(t.target)||i&&i.contains(t.target)||Ji()}}),document.addEventListener("keydown",function(t){t.key==="Escape"&&r.plusPopoverOpen&&Ji()}),document.addEventListener("click",function(t){var n=t.target;if(!(!n||typeof n.closest!="function")){var i=n.closest("#auto-approve-toggle");i&&(t.preventDefault(),_c())}}),document.addEventListener("click",function(t){if(!t.target.closest(".folder-picker-container")){var n=document.getElementById("folder-picker-dropdown");n&&n.classList.add("hidden")}}),document.addEventListener("input",function(t){var n=t.target;if(!(!n||!n.matches('input[type="range"][data-mode-control="thinking"]'))){var i=[];try{i=JSON.parse(n.dataset.thinkingLabels||"[]")}catch{}var a=Math.max(0,Math.min(i.length-1,Math.round(Number(n.value)||0))),u=i[a]||"auto",o=n.closest('[data-mode-control-pill="thinking"]'),s=o&&o.querySelector(".thinking-slider-value");s&&(s.textContent=u),n.setAttribute("aria-valuetext",u);var l=n.closest(".thinking-slider-rail"),d=Number(n.max)||0;l&&l.style.setProperty("--thinking-progress",(d?a/d*100:0)+"%")}}),document.addEventListener("change",function(t){var n=t.target;if(!(!n||n.nodeType!==1)&&!(typeof n.matches!="function"||!n.matches("[data-mode-control]"))){var i=n.getAttribute("data-mode-control"),a=n.value,u=i==="thinking"&&n.matches('input[type="range"]');if(u)try{var o=JSON.parse(n.dataset.thinkingValues||"[]");a=o[Math.round(Number(n.value)||0)]||"off"}catch{a="off"}i==="mode"?Lm(a):i==="model"?Tm(a):i==="thinking"&&Am(a),!u&&n.closest&&n.closest("#composer-plus-popover")&&Ji()}})}}function Tf(){If();var e=document.getElementById("login-button");if(e){e.addEventListener("click",pu);var t=document.getElementById("login-form");t&&t.addEventListener("submit",function(b){b.preventDefault(),pu()});var n=document.getElementById("login-switch-server-button");n&&n.addEventListener("click",El);var i=document.getElementById("password"),a=document.getElementById("toggle-password-button");a&&i&&a.addEventListener("click",function(){var b=i.type==="text";i.type=b?"password":"text",a.textContent=b?"\u663E\u793A":"\u9690\u85CF",a.setAttribute("aria-label",b?"\u663E\u793A\u5BC6\u7801":"\u9690\u85CF\u5BC6\u7801"),a.setAttribute("aria-pressed",b?"false":"true"),i.focus()}),i&&(i.addEventListener("keydown",function(b){b.key==="Enter"&&pu()}),i.addEventListener("input",function(){i.dataset.error="false",i.setAttribute("aria-invalid","false");var b=document.getElementById("login-error");b&&yi(b)}),i.focus());return}var u=document.getElementById("welcome-input");u&&(u.addEventListener("keydown",function(b){b.key==="Enter"&&!b.shiftKey&&(b.preventDefault(),Ds())}),u.focus());var o=document.getElementById("welcome-send-btn");o&&o.addEventListener("click",function(){Ds()});var s=document.getElementById("welcome-tool-claude");s&&s.addEventListener("click",function(){td()});var l=document.getElementById("welcome-tool-codex");l&&l.addEventListener("click",function(){r.sessionTool="codex",r.preferredCommand="codex",r.modeValue="full-access",td()});var d=document.getElementById("welcome-tool-structured");d&&d.addEventListener("click",function(){Vl().then(function(){Pt(!0)}).catch(function(b){A(b&&b.message||"\u65E0\u6CD5\u542F\u52A8\u7ED3\u6784\u5316\u4F1A\u8BDD\u3002","error")})}),bg();var f=document.getElementById("sessions-list");f&&(f.addEventListener("click",lf),f.addEventListener("keydown",df),f.addEventListener("mouseover",Vm),f.addEventListener("mouseout",Um),lv(f)),window.addEventListener("scroll",Xt,!0),window.addEventListener("resize",Xt);var c=document.getElementById("provider-cards");c&&c.addEventListener("click",function(b){var S=b.target.closest(".provider-card");if(!(!S||S.classList.contains("disabled"))){var W=S.getAttribute("data-provider");W&&(r.sessionTool=W,r.preferredCommand=W,er(),Gi({defaultProvider:W,defaultMode:r.modeValue}))}});var v=document.getElementById("session-kind-cards");v&&v.addEventListener("click",function(b){var S=b.target.closest(".session-kind-card");if(!(!S||S.classList.contains("disabled"))){var W=S.getAttribute("data-session-kind");W&&(r.sessionCreateKind=W,er(),Gi({defaultSessionKind:W}))}});var h=document.getElementById("mode-cards");h&&h.addEventListener("click",function(b){var S=b.target.closest(".mode-card");if(S){var W=S.getAttribute("data-mode");W&&(r.modeValue=W,er(),Gi({defaultMode:r.modeValue}))}});var g=document.getElementById("session-worktree-toggle");g&&g.addEventListener("change",function(){r.sessionCreateWorktree=g.checked});var m=document.getElementById("cwd");m&&(m.addEventListener("input",function(){r.cwdValue=m.value}),m.addEventListener("change",function(){r.cwdValue=m.value}),m.addEventListener("input",rd),m.addEventListener("focus",rd),m.addEventListener("blur",function(){setTimeout(ir,120)}));var y=document.getElementById("sessions-toggle-button");y&&y.addEventListener("click",_m);var C=document.getElementById("sessions-drawer-backdrop");C&&C.addEventListener("click",Wr);var E=document.getElementById("close-drawer-button");E&&E.addEventListener("click",Wr);var B=document.getElementById("sidebar-collapse-btn");B&&B.addEventListener("click",Km);var D=document.getElementById("sidebar-pin-btn");D&&D.addEventListener("click",Jm);var F=document.getElementById("sidebar-more-btn"),I=document.getElementById("sidebar-overflow-menu");F&&I&&F.addEventListener("click",function(b){b.stopPropagation();var S=!I.classList.contains("open");I.classList.toggle("open",S),S&&Gm(I)});var L=document.getElementById("sidebar-home-btn");L&&L.addEventListener("click",function(){r.selectedId=null,he(),wt(),_t(),Qt()});var H=document.getElementById("sidebar-refresh-btn");H&&H.addEventListener("click",function(){window.location.reload()});var U=document.getElementById("logout-button");U&&U.addEventListener("click",Fl);var x=document.getElementById("switch-server-button");x&&x.addEventListener("click",El);var k=document.getElementById("back-to-native-button");k&&k.addEventListener("click",Em);var T=document.getElementById("settings-button");T&&T.addEventListener("click",Zm);var M=document.getElementById("close-settings-button");M&&M.addEventListener("click",nr);var Y=document.getElementById("settings-modal");Y&&Y.addEventListener("click",function(b){b.target.id==="settings-modal"&&nr()});var z=document.getElementById("save-password-button");z&&z.addEventListener("click",eg);for(var Q=document.querySelectorAll(".settings-tab"),le=0;le<Q.length;le++)Q[le].addEventListener("click",function(b){var S=b.currentTarget||this,W=S&&S.getAttribute?S.getAttribute("data-tab"):null;W&&xu(W)});var ee=document.getElementById("save-config-button");ee&&ee.addEventListener("click",ug),Im();var Z=document.getElementById("cfg-default-model-refresh");Z&&Z.addEventListener("click",Hl);var q=document.getElementById("cfg-commit-model-refresh");q&&q.addEventListener("click",Hl);var O=document.getElementById("cfg-commit-cli");O&&O.addEventListener("change",function(){Vi(!0)});var N=document.getElementById("cfg-view-env-btn");N&&N.addEventListener("click",Sm);var G=document.getElementById("save-display-button");G&&G.addEventListener("click",og);var J=document.getElementById("app-icon-picker");if(J)for(var ne=J.querySelectorAll(".settings-app-icon-option"),de=0;de<ne.length;de++)ne[de].addEventListener("click",function(){var b=this.getAttribute("data-icon");if(!(!b||typeof WandNative>"u"||typeof WandNative.setAppIcon!="function"))try{WandNative.setAppIcon(b),$l(b);var S=document.getElementById("app-icon-message");S&&(S.textContent="\u56FE\u6807\u5DF2\u5207\u6362\uFF0C\u8FD4\u56DE\u684C\u9762\u540E\u751F\u6548",S.style.color="var(--success)",S.classList.remove("hidden"),setTimeout(function(){S.classList.add("hidden")},3e3))}catch{}});var re=document.getElementById("upload-cert-button");re&&re.addEventListener("click",sg);for(var ie=document.querySelectorAll(".file-picker-input"),qe=0;qe<ie.length;qe++)(function(b){b.addEventListener("change",function(){var S=b.closest(".file-picker");if(S){var W=S.querySelector(".file-picker-name");W&&(b.files&&b.files[0]?(W.textContent=b.files[0].name,S.classList.add("file-picker-has-file")):(W.textContent=W.getAttribute("data-default")||"\u672A\u9009\u62E9\u6587\u4EF6",S.classList.remove("file-picker-has-file")))}})})(ie[qe]);var ge=document.getElementById("auto-update-web-toggle");ge&&ge.addEventListener("change",function(){Su("web",ge.checked)});var ce=document.getElementById("auto-update-apk-toggle");ce&&ce.addEventListener("change",function(){Su("apk",ce.checked)});var R=document.getElementById("auto-update-dmg-toggle");R&&R.addEventListener("change",function(){Su("dmg",R.checked)});var ht=document.getElementById("beta-channel-toggle");ht&&ht.addEventListener("change",function(){pg(ht.checked?"beta":"stable")});var _e=document.getElementById("copy-connect-code-button");_e&&_e.addEventListener("click",function(){var b=document.getElementById("android-connect-code");b&&Ur(b.textContent,_e)});var $=document.getElementById("cfg-notif-sound");$&&($.checked=r.notifSound,$.addEventListener("change",function(){r.notifSound=$.checked;try{localStorage.setItem("wand-notif-sound",String(r.notifSound))}catch{}r.notifSound&&Fi();var b=document.getElementById("notif-volume-field");b&&(b.style.display=r.notifSound?"":"none")}));var fe=document.getElementById("cfg-notif-volume"),Ce=document.getElementById("cfg-notif-volume-val"),Be=function(b){if(b){var S=Number(b.min||0),W=Number(b.max||100),be=Number(b.value||0),yt=W>S?Math.max(0,Math.min(100,(be-S)/(W-S)*100)):0;b.style.setProperty("--range-fill",yt+"%")}};if(fe){fe.value=String(r.notifVolume),Ce&&(Ce.textContent=r.notifVolume+"%"),Be(fe);var ve=document.getElementById("notif-volume-field");ve&&(ve.style.display=r.notifSound?"":"none");var Fe=null;fe.addEventListener("input",function(){r.notifVolume=parseInt(fe.value,10),Ce&&(Ce.textContent=r.notifVolume+"%"),Be(fe);try{localStorage.setItem("wand-notif-volume",String(r.notifVolume))}catch{}if(We&&typeof WandNative.setNotificationVolume=="function")try{WandNative.setNotificationVolume(r.notifVolume)}catch{}}),fe.addEventListener("change",function(){Fi()})}var et=document.getElementById("cfg-notif-bubble");et&&(et.checked=r.notifBubble,et.addEventListener("change",function(){r.notifBubble=et.checked;try{localStorage.setItem("wand-notif-bubble",String(r.notifBubble))}catch{}}));var dt=document.getElementById("notification-request-btn");dt&&dt.addEventListener("click",function(){if(We){window._onNativePermissionResult=function(){bn(),delete window._onNativePermissionResult};try{WandNative.requestPermission()}catch{}}else typeof Notification<"u"&&Notification.requestPermission().then(function(){bn()})});var it=document.getElementById("notification-reset-btn");it&&it.addEventListener("click",vg);var Ne=document.getElementById("notification-test-btn");Ne&&Ne.addEventListener("click",Zl);var Rt=document.getElementById("notification-test-delay-btn");if(Rt&&Rt.addEventListener("click",mg),bn(),We&&typeof WandNative.getAvailableSounds=="function"){var Ye=document.getElementById("native-sound-section"),De=document.getElementById("native-sound-select"),Pe=document.getElementById("native-sound-preview");if(Ye&&De){Ye.classList.remove("hidden");try{var te=JSON.parse(WandNative.getAvailableSounds()),we=WandNative.getNotificationSound();De.innerHTML="";for(var w=0;w<te.length;w++){var at=document.createElement("option");at.value=te[w].id,at.textContent=te[w].name,te[w].id===we&&(at.selected=!0),De.appendChild(at)}De.addEventListener("change",function(){try{WandNative.setNotificationSound(De.value)}catch{}}),Pe&&Pe.addEventListener("click",function(){try{WandNative.previewSound(De.value)}catch{}})}catch{}}}if(We&&typeof WandNative.isHapticEnabled=="function"){var kt=document.getElementById("native-haptic-section"),ut=document.getElementById("cfg-haptic-enabled");if(kt&&ut){kt.classList.remove("hidden");try{ut.checked=WandNative.isHapticEnabled()}catch{}ut.addEventListener("change",function(){try{WandNative.setHapticEnabled(ut.checked)}catch{}ut.checked&&Gn("medium")})}}var Zt=document.getElementById("topbar-new-session-button");Zt&&Zt.addEventListener("click",ku);var At=document.getElementById("drawer-new-session-button");At&&At.addEventListener("click",ku);var Wt=document.getElementById("close-modal-button");Wt&&Wt.addEventListener("click",hn);var zt=document.getElementById("close-worktree-merge-button");zt&&zt.addEventListener("click",tr);var Te=document.getElementById("worktree-merge-cancel-button");Te&&Te.addEventListener("click",tr);var Ue=document.getElementById("worktree-merge-confirm-button");Ue&&Ue.addEventListener("click",Xm);var Ke=document.getElementById("run-button");Ke&&Ke.addEventListener("click",gg);var xt=document.getElementById("approve-permission-btn");xt&&xt.addEventListener("click",Oc);var Vt=document.getElementById("deny-permission-btn");Vt&&Vt.addEventListener("click",Hc);var Ut=document.getElementById("send-input-button");Ut&&Ut.addEventListener("click",function(){_t(),vp()});var En=document.getElementById("stop-button");En&&En.addEventListener("click",Ga);var ct=document.getElementById("session-modal");ct&&ct.addEventListener("click",function(b){b.target.id==="session-modal"&&hn(),b.target.id==="worktree-merge-modal"&&tr()});var ke=document.getElementById("input-box");ke&&(Ys(ke),ke.addEventListener("keydown",Bg),ke.addEventListener("paste",Lg),ke.addEventListener("input",function(){r.terminalComposing||id(ke)||(wv(ke),Ze(ke.value,!0),$i(ke))}),ke.addEventListener("compositionstart",function(){r.terminalInteractive&&(r.terminalComposing=!0)}),ke.addEventListener("compositionend",function(){r.terminalComposing&&(r.terminalComposing=!1,r.terminalInteractive&&id(ke))}),ke.addEventListener("focus",function(){_t(),mv({target:ke})}),ke.addEventListener("blur",gv));var Je=document.getElementById("attach-btn"),Ae=document.getElementById("file-upload-input"),On=document.getElementById("composer-plus-popover"),ft=document.getElementById("plus-attach-item");Je&&On&&Je.addEventListener("click",function(b){b.stopPropagation(),jm()}),ft&&Ae&&ft.addEventListener("click",function(){Ji(),Ae.click()}),Ae&&Ae.addEventListener("change",function(){var b=Ae.files;if(b)for(var S=0;S<b.length;S++)Iu(b[S]);Ae.value=""});var en=document.getElementById("voice-btn");en&&en.addEventListener("click",function(){ja()});var tn=document.getElementById("voice-cancel-btn");tn&&tn.addEventListener("click",function(){ja(!1)});var St=document.getElementById("voice-record-btn");St&&(St.addEventListener("pointerdown",ap),St.addEventListener("pointermove",up),St.addEventListener("pointerup",Es),St.addEventListener("pointercancel",Es));var oe=document.getElementById("prompt-optimize-btn");oe&&oe.addEventListener("click",function(){qg()});var Le=document.querySelector(".input-composer");Le&&(Le.addEventListener("dragover",function(b){b.preventDefault(),b.stopPropagation(),Le.classList.add("drag-over")}),Le.addEventListener("dragleave",function(b){b.preventDefault(),b.stopPropagation(),Le.classList.remove("drag-over")}),Le.addEventListener("drop",function(b){b.preventDefault(),b.stopPropagation(),Le.classList.remove("drag-over");var S=b.dataTransfer&&b.dataTransfer.files;if(S)for(var W=0;W<S.length;W++)Iu(S[W])}));var je=["terminal-interactive-toggle-top"];je.forEach(function(b){var S=document.getElementById(b);S&&S.addEventListener("click",Zp)});var tt=document.getElementById("file-panel-toggle-btn");tt&&tt.addEventListener("click",ni);var j=document.getElementById("file-side-panel-close");j&&j.addEventListener("click",to);var P=document.getElementById("file-panel-backdrop");P&&P.addEventListener("click",to);var K=document.getElementById("topbar-file-button");K&&K.addEventListener("click",ni);var ae=document.getElementById("topbar-cwd");ae&&(ae.addEventListener("click",function(){r.filePanelOpen||ni()}),ae.addEventListener("keydown",function(b){(b.key==="Enter"||b.key===" ")&&(b.preventDefault(),r.filePanelOpen||ni())}));var se=document.getElementById("topbar-more-button"),ye=document.getElementById("topbar-more-menu");se&&ye&&(se.addEventListener("click",function(b){b.stopPropagation(),r.topbarMoreOpen=!r.topbarMoreOpen,ye.classList.toggle("hidden",!r.topbarMoreOpen),se.classList.toggle("active",r.topbarMoreOpen),se.setAttribute("aria-expanded",r.topbarMoreOpen?"true":"false")}),ye.addEventListener("click",function(b){var S=b.target&&b.target.closest?b.target.closest(".topbar-more-item"):null;if(S){var W=S.getAttribute("data-action");switch(r.topbarMoreOpen=!1,ye.classList.add("hidden"),se.classList.remove("active"),se.setAttribute("aria-expanded","false"),W){case"copy-claude-session-id":Aa("claudeSessionId",Dt()&&Dt().provider==="codex"?"Codex thread ID \u5DF2\u590D\u5236":"Claude \u4F1A\u8BDD ID \u5DF2\u590D\u5236");break;case"copy-cwd":Aa("cwd","\u5DE5\u4F5C\u76EE\u5F55\u5DF2\u590D\u5236");break;case"copy-session-id":Aa("id","\u4F1A\u8BDD ID \u5DF2\u590D\u5236");break;case"worktree-merge":r.selectedId&&Kl(r.selectedId);break;case"worktree-cleanup":r.selectedId&&Jl(r.selectedId);break;case"delete-session":r.selectedId&&(function(be){An("\u786E\u5B9A\u8981\u5220\u9664\u5F53\u524D\u4F1A\u8BDD\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002",{title:"\u5220\u9664\u5F53\u524D\u4F1A\u8BDD"}).then(function(yt){yt&&Qa(be)})})(r.selectedId);break}}}));var ur=document.getElementById("terminal-scale-down-top"),or=document.getElementById("terminal-scale-up-top");ur&&ur.addEventListener("click",function(){no(-.25)}),or&&or.addEventListener("click",function(){no(.25)});var Zi=document.getElementById("page-refresh-btn");Zi&&Zi.addEventListener("click",function(b){if(b&&b.shiftKey){location.reload();return}xn(),wt({preserveStickState:!0}),eu(!0)});var Hn=document.getElementById("terminal-jump-bottom");Hn&&Hn.addEventListener("click",function(){pt("force")});var _n=document.getElementById("chat-unread-bubble");_n&&_n.addEventListener("click",function(){zu(!0)});var ea=document.getElementById("file-explorer-refresh");ea&&ea.addEventListener("click",function(){Lt()});var Yr=document.getElementById("file-explorer-up");Yr&&Yr.addEventListener("click",jd);var Oe=document.getElementById("file-explorer-cwd");if(Oe&&Oe.tagName==="INPUT"){var sr=Oe.value,ad=function(b){var S=(b||"").trim();return S?(S=S.replace(/\/{2,}/g,"/"),S.length>1&&(S=S.replace(/\/+$/,"")),S):""};Oe.addEventListener("focus",function(){sr=Oe.value,setTimeout(function(){try{Oe.select()}catch{}},0)}),Oe.addEventListener("keydown",function(b){if(b.key==="Enter"){b.preventDefault();var S=ad(Oe.value);if(!S)return;sr=S,Oe.value=S,Lt({cwd:S}),Oe.blur()}else b.key==="Escape"&&(b.preventDefault(),Oe.value=sr,Oe.blur())}),Oe.addEventListener("blur",function(){var b=ad(Oe.value);if(!b){Oe.value=sr;return}if(b===sr){Oe.value=b;return}sr=b,Oe.value=b,Lt({cwd:b})})}var ta=document.getElementById("file-search-input"),Gr=document.getElementById("file-search-clear");ta&&ta.addEventListener("input",function(b){r.fileSearchQuery=b.target.value.trim(),Gr&&Gr.classList.toggle("visible",r.fileSearchQuery.length>0),uo()}),Gr&&Gr.addEventListener("click",function(){r.fileSearchQuery="",ta&&(ta.value=""),Gr.classList.remove("visible")});var me=document.getElementById("folder-picker-input"),xe=document.getElementById("folder-picker-dropdown"),_u=null,Kt=-1,Fn=[];function ud(b){me&&me.classList.add("invalid");var S=document.getElementById("folder-picker-validation");S&&(S.textContent=b,S.classList.add("visible"))}function od(){me&&me.classList.remove("invalid");var b=document.getElementById("folder-picker-validation");b&&(b.textContent="",b.classList.remove("visible"))}function Ng(b){if(!b.length)return"";var S='<div class="folder-recent-section"><div class="folder-recent-title">\u6700\u8FD1\u4F7F\u7528</div>';return b.forEach(function(W){var be=W.path||W;S+='<div class="folder-recent-item" data-path="'+p(be)+'">'+gt(be,"folder-recent-item-path")+"</div>"}),S+="</div>",S}function jg(){xe&&Da(function(b){var S=Ng(b);S?(xe.innerHTML=S,xe.classList.remove("hidden"),jt(xe),xe.querySelectorAll(".folder-recent-item").forEach(function(W){W.addEventListener("click",function(){var be=this.dataset.path;me&&(me.value=be,Gt(be),nn(be))})})):Qr()})}var sd=document.getElementById("working-dir-indicator");sd&&sd.addEventListener("click",function(){r.selectedId=null,he(),r.drafts={},Qt(),setTimeout(function(){var b=document.getElementById("folder-picker-input");b&&b.focus()},50)});var Nu=document.getElementById("folder-picker-toggle"),xe=document.getElementById("folder-picker-dropdown");Nu&&xe&&Nu.addEventListener("click",function(){xe.classList.toggle("hidden"),Nu.classList.toggle("open")});var na=document.querySelector(".folder-picker-compact");if(na&&(na.addEventListener("dragover",function(b){b.preventDefault(),b.stopPropagation(),this.classList.add("drag-over")}),na.addEventListener("dragleave",function(b){b.preventDefault(),b.stopPropagation(),this.classList.remove("drag-over")}),na.addEventListener("drop",function(b){b.preventDefault(),b.stopPropagation(),this.classList.remove("drag-over");var S=b.dataTransfer&&b.dataTransfer.items;if(S)for(var W=0;W<S.length;W++){var be=S[W];if(be.kind==="file"&&be.webkitGetAsEntry){var yt=be.webkitGetAsEntry();if(yt&&yt.isDirectory&&me){var It=yt.fullPath;me.value=It,Gt(It),nn(It);break}}}})),xe&&xe.addEventListener("click",function(b){var S=b.target.closest(".folder-picker-quick-btn");if(S&&me){var W=S.dataset.path;me.value=W,Gt(W),nn(W),xe.classList.add("hidden");var be=document.getElementById("folder-picker-toggle");be&&be.classList.remove("open")}}),me){var Rg=$e();nn(Rg),me.addEventListener("focus",function(){var b=this.value.trim();b?nn(b):jg()}),me.addEventListener("input",function(b){var S=b.target.value.trim();Kt=-1,_u&&clearTimeout(_u),_u=setTimeout(function(){S?nn(S):Qr()},150)}),me.addEventListener("keydown",function(b){if(b.key==="Escape")Qr(),this.blur();else if(b.key==="ArrowDown")b.preventDefault(),Fn.length>0&&(Kt=Math.min(Kt+1,Fn.length-1),ld());else if(b.key==="ArrowUp")b.preventDefault(),Kt>0&&(Kt--,ld());else if(b.key==="Enter"&&Kt>=0){b.preventDefault();var S=Fn[Kt];if(S){var W=S.dataset.path;if(W===".."){var be=me.value.trim(),yt=be.substring(0,be.lastIndexOf("/"));yt&&(me.value=yt||"/",Gt(me.value),nn(yt||"/"))}else me.value=W,Gt(W),Qr()}}})}function ld(){Fn.forEach(function(b,S){b.classList.toggle("active",S===Kt)})}function Ch(b){}function nn(b){xe&&(xe.innerHTML='<div class="folder-picker-loading">\u52A0\u8F7D\u4E2D...</div>',xe.classList.remove("hidden"),Kt=-1,Fn=[],fetch("/api/folders?q="+encodeURIComponent(b),{credentials:"same-origin"}).then(function(S){return S.json().then(function(W){return{ok:S.ok,status:S.status,data:W}})}).then(function(S){var W=S.data;if(!S.ok||W.error){ud(W.error||"\u8DEF\u5F84\u65E0\u6548"),xe.innerHTML='<div class="folder-picker-error">'+p(W.error||"\u8DEF\u5F84\u65E0\u6548")+"</div>";return}od(),W.currentPath;var be=W.items||[],yt=W.currentPath||b;if(be.length===0){xe.innerHTML='<div class="folder-picker-loading">\u7A7A\u76EE\u5F55</div>';return}xe.innerHTML=be.map(function(It){var ra=It.type==="parent"?"\u21A9\uFE0F":"\u{1F4C1}",ju=It.type==="parent"?".. (\u8FD4\u56DE\u4E0A\u7EA7)":It.name;return'<div class="folder-picker-item" data-path="'+p(It.path)+'" data-type="'+It.type+'"><span class="folder-picker-item-icon">'+ra+"</span><span>"+p(ju)+"</span></div>"}).join(""),Fn=Array.from(xe.querySelectorAll(".folder-picker-item")),Fn.forEach(function(It){It.addEventListener("click",function(){var ra=this.dataset.path,ju=this.dataset.type;if(me)if(ju==="parent"){var pd=me.value.trim(),vd=pd.substring(0,pd.lastIndexOf("/"));me.value=vd||"/",Gt(me.value),nn(vd||"/")}else me.value=ra,Gt(ra),od(),Qr()})})}).catch(function(S){ud("\u52A0\u8F7D\u5931\u8D25"),xe.innerHTML='<div class="folder-picker-error">\u52A0\u8F7D\u5931\u8D25</div>'}))}function Qr(){xe&&xe.classList.add("hidden"),Kt=-1,Fn=[]}var wn=document.getElementById("folder-picker-modal"),dd=document.getElementById("close-folder-picker");function Bh(){if(wn){wn.classList.remove("hidden"),me&&(me.value=$e());var b=$e();nn(b)}}dd&&wn&&dd.addEventListener("click",function(){wn.classList.add("hidden")}),wn&&wn.addEventListener("click",function(b){b.target===wn&&wn.classList.add("hidden")});var cd=document.getElementById("topbar-git-badge");cd&&cd.addEventListener("click",function(b){b.preventDefault(),Eo()});var fd=document.getElementById("quick-commit-modal");fd&&fd.addEventListener("click",function(b){b.target.id==="quick-commit-modal"&&!r.quickCommitSubmitting&&Wn()}),Fo(),Yn(),Bv(),zc(),xp(),nt()}function wt(e){var t=e||{};r.lastRenderedHash=0,r.lastRenderedMsgCount=0,r.lastRenderedEmpty=null,r.renderPending=!1,r.chatRenderedCount=r.chatPageSize,r.askUserSelections={},r.chatScrollElement&&(r.chatScrollHandler&&r.chatScrollElement.removeEventListener("scroll",r.chatScrollHandler),r.chatScrollWheelHandler&&r.chatScrollElement.removeEventListener("wheel",r.chatScrollWheelHandler),r.chatScrollTouchStartHandler&&r.chatScrollElement.removeEventListener("touchstart",r.chatScrollTouchStartHandler),r.chatScrollTouchMoveHandler&&r.chatScrollElement.removeEventListener("touchmove",r.chatScrollTouchMoveHandler)),r.chatScrollElement=null,r.chatScrollHandler=null,r.chatScrollWheelHandler=null,r.chatScrollTouchStartHandler=null,r.chatScrollTouchMoveHandler=null,r.chatIsProgrammaticScroll=!1,t.preserveStickState||(r.chatStickToBottom=!0,r.chatUnreadCount=0,r.chatUnreadStartIndex=-1,r.chatInitialRenderDone=!1)}function $e(){return r.workingDir||an()}window.addEventListener("online",function(){r.isOnline=!0,hi()}),window.addEventListener("offline",function(){r.isOnline=!1,hi()});function hi(){var e=document.getElementById("offline-banner");if(!r.isOnline&&!e){var t=document.createElement("div");t.id="offline-banner",t.className="offline-banner",t.textContent="You are offline - some features may be limited",document.body.appendChild(t)}else r.isOnline&&e&&e.remove()}function Lf(){var e=document.getElementById("app");e&&(e.innerHTML='<div class="boot-loading"><div class="boot-loading-card"><div class="boot-loading-spinner"></div><div class="boot-loading-text">\u6B63\u5728\u8FDE\u63A5 Wand\u2026</div></div></div>')}function Br(e,t){if(r.config&&!document.hidden){var n=t&&t.immediate===!0,i=Date.now();!n&&i-r.lastForegroundSyncAt<1500||(r.lastForegroundSyncAt=i,r.foregroundSyncTimer&&(clearTimeout(r.foregroundSyncTimer),r.foregroundSyncTimer=null),Mf(e,n))}}function Mf(e,t){return!r.config||document.hidden?Promise.resolve():(Wo(),t?Ea("resume-force"):(!r.ws||r.ws.readyState!==WebSocket.OPEN&&r.ws.readyState!==WebSocket.CONNECTING)&&di(),r.claudeHistoryLoaded&&_o(),r.codexHistoryLoaded&&No(),mn({skipSelectedOutputReload:!0}).catch(function(n){console.error("[wand] foreground sync failed:",e,n)}))}function qf(){window.__wandForegroundSyncBound||(window.__wandForegroundSyncBound=!0,document.addEventListener("visibilitychange",function(){document.hidden?ba():(Br("visibility"),Cr("visibility"))}),window.addEventListener("focus",function(){Br("focus")}),window.addEventListener("pageshow",function(){Br("pageshow")}),window.addEventListener("resume",function(){Br("resume")}),window.addEventListener("wand-android-resume",function(){Br("android-resume",{immediate:!0}),Cr("android-resume")}),window.addEventListener("wand-ime-state",function(e){var t=e&&e.detail&&e.detail.state;if(t==="shown"||t==="hidden")try{Qe("native-ime-"+t,{forceReplay:!0}),pt("native-ime")}catch{}}),window.addEventListener("wand-android-network",function(e){var t=e&&e.detail&&e.detail.state;if(t==="lost"){r.isOnline=!1;try{hi()}catch{}return}if(t==="available"||t==="changed"||t==="validated"){r.isOnline=!0;try{hi()}catch{}Ea("android-network-"+t)}}))}function Pf(){fetch("/api/session-check",{credentials:"same-origin"}).then(function(e){return e.ok?e.json():{authed:!1}}).then(function(e){return!e||!e.authed?(r.loginChecked=!0,Qt(),null):fetch("/api/config",{credentials:"same-origin"}).then(function(t){return t.ok?t.json():(r.loginChecked=!0,Qt(),null)})}).then(function(e){e&&(r.config=e,r.loginChecked=!0,requestAnimationFrame(function(){try{Qt({skipShellChrome:!0})}catch{}qf(),jo(),Ot(),Ol(),Uf(),e.updateAvailable&&e.latestVersion&&vs(e.currentVersion||"-",e.latestVersion),In&&cg(),sn&&fg(),r.claudeHistoryLoaded||setTimeout(function(){r.claudeHistoryLoaded||li()},600)}))}).catch(function(){if(r.loginChecked=!0,!navigator.onLine){var e=document.getElementById("app");e&&(e.innerHTML='<div class="boot-loading"><div class="boot-loading-card"><div class="boot-loading-text" style="font-size:1.3em;margin-bottom:12px;display:flex;align-items:center;justify-content:center;gap:8px">'+V("signal",{size:20,strokeWidth:1.8})+'<span>\u65E0\u6CD5\u8FDE\u63A5\u5230\u670D\u52A1\u5668</span></div><div class="boot-loading-text" style="opacity:0.7;font-size:0.95em">\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u6216\u786E\u8BA4 Wand \u670D\u52A1\u6B63\u5728\u8FD0\u884C\u3002</div><button onclick="location.reload()" style="margin-top:18px;padding:8px 24px;border-radius:8px;border:1px solid rgba(150,118,85,0.3);background:rgba(255,255,255,0.8);cursor:pointer;font-size:0.95em">\u91CD\u8BD5</button></div></div>'),window.addEventListener("online",function(){location.reload()},{once:!0});return}Qt()})}document.addEventListener("click",function(e){if(!Re()&&!r.sidebarPinned&&!r.sidebarCollapsed&&r.sessionsDrawerOpen){var t=e.target;!t||!(t instanceof Element)||t.closest("#sessions-drawer")||t.closest("#sessions-toggle-button")||t.closest(".floating-sidebar-toggle")||t.closest(".sidebar-tile-bubble")||t.closest(".modal-backdrop, .modal-overlay, .modal-container, [role='dialog'], [role='menu'], .topbar-more-menu, .sidebar-header-overflow, .folder-picker-dropdown, .path-suggestions, .permission-prompt-overlay, .restart-overlay")||Nm()}},!0),Lf(),Pf();function Qt(e){var t=e&&e.skipShellChrome,n=document.getElementById("app"),i=r.config!==null,a=r.modalOpen,u=!i||!!document.getElementById("output");if(u&&wr(),document.documentElement.classList.add("no-transition"),r.sidebarPinned&&!r.sidebarCollapsed&&!Re()&&(r.sessionsDrawerOpen=!0,Se("wand-sidebar-open",!0)),n.innerHTML=i?_f():Hf(),wt(),Tf(),Rr(),Hi(),Xn(Dt()),Ki(),t||jr(),i&&r.filePanelOpen&&Lt(),document.body.offsetHeight,requestAnimationFrame(function(){document.documentElement.classList.remove("no-transition")}),a&&r.modalOpen){var o=document.getElementById("session-modal");if(o){o.classList.remove("hidden");var s=document.getElementById("cwd");s&&(s.value=r.cwdValue),er()}}if(i&&r.selectedId&&r.gitStatusSessionId!==r.selectedId&&Bn(r.selectedId),i){var l=r.sessions.find(function(d){return d.id===r.selectedId});qu(l)}ar(document.getElementById("topbar-cwd")),ar(document.getElementById("blank-chat-cwd-path")),ar(document.getElementById("working-dir-indicator-path")),jt()}function Of(){var e=r.sessions.find(function(n){return n.id===r.selectedId}),t=e&&e.approvalStats;return!t||t.total===0?'<span class="approval-stats hidden" id="approval-stats"></span>':'<span class="approval-stats" id="approval-stats"><span class="approval-stats-divider"></span><span class="approval-stats-badge" id="approval-stats-badge" title="\u672C\u6B21\u4F1A\u8BDD\u81EA\u52A8\u6279\u51C6\u7EDF\u8BA1"><svg class="approval-stats-icon" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg><span class="approval-stats-total">'+t.total+'</span></span><span class="approval-stats-popup" id="approval-stats-popup"><span class="approval-stats-popup-title">\u81EA\u52A8\u6279\u51C6\u7EDF\u8BA1</span>'+(t.command>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+V("terminal",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u547D\u4EE4\u6267\u884C</span><span class="approval-stats-row-count">'+t.command+"</span></span>":"")+(t.file>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+V("edit",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u6587\u4EF6\u5199\u5165</span><span class="approval-stats-row-count">'+t.file+"</span></span>":"")+(t.tool>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+V("wrench",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u5176\u4ED6\u5DE5\u5177</span><span class="approval-stats-row-count">'+t.tool+"</span></span>":"")+'<span class="approval-stats-row approval-stats-row-total"><span class="approval-stats-row-icon">'+V("sigma",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u5408\u8BA1</span><span class="approval-stats-row-count">'+t.total+"</span></span></span></span>"}function Hf(){return r.loginChecked?'<div class="login-container"><div class="login-card"><div class="login-header"><div class="login-logo"><div class="login-logo-icon">W</div><span class="login-logo-text">Wand</span></div><div class="login-subtitle">\u5728\u6D4F\u89C8\u5668\u4E2D\u8FD0\u884C\u672C\u673A\u7EC8\u7AEF</div></div><form id="login-form" class="login-body" autocomplete="on"><input type="text" name="username" autocomplete="username" value="wand" tabindex="-1" aria-hidden="true" style="position:absolute;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none" readonly /><p class="login-hint">\u8F93\u5165 Wand \u8BBF\u95EE\u5BC6\u7801\u4EE5\u8FDB\u5165\u63A7\u5236\u53F0\u3002</p><div class="field"><label class="field-label" for="password">\u5BC6\u7801</label><div class="password-field"><input id="password" type="password" class="field-input password-input" placeholder="\u8F93\u5165\u8BBF\u95EE\u5BC6\u7801" autocomplete="current-password" data-error="false" aria-describedby="password-hint login-error" aria-invalid="false" /><button id="toggle-password-button" type="button" class="password-toggle" aria-label="\u663E\u793A\u5BC6\u7801" aria-pressed="false">\u663E\u793A</button></div><p id="password-hint" class="hint">\u4F7F\u7528\u4F60\u5728 Wand \u4E2D\u8BBE\u7F6E\u7684\u8BBF\u95EE\u5BC6\u7801\u3002</p><p id="login-error" class="error-message hidden" role="alert"></p></div><div id="login-cert-hint" class="login-cert-hint hidden" role="alert"><div class="login-cert-hint-title">\u8BC1\u4E66\u4E0D\u53D7\u4FE1\u4EFB\uFF0C\u767B\u5F55\u6001\u65E0\u6CD5\u4FDD\u5B58</div><p class="login-cert-hint-body">\u5BC6\u7801\u662F\u5BF9\u7684\uFF0C\u4F46\u5F53\u524D HTTPS \u8BC1\u4E66\u4E0D\u53D7\u6D4F\u89C8\u5668\u4FE1\u4EFB\uFF0C\u6D4F\u89C8\u5668\u56E0\u6B64\u62D2\u7EDD\u4FDD\u5B58\u767B\u5F55 Cookie\uFF0C\u6240\u4EE5\u8FDB\u4E0D\u4E86\u63A7\u5236\u53F0\u3002<br/>\u89E3\u51B3\u529E\u6CD5\uFF08\u4EFB\u9009\u5176\u4E00\uFF09\uFF1A\u6539\u7528 HTTP \u8BBF\u95EE\u672C\u670D\u52A1\uFF1B\u6216\u628A\u672C\u670D\u52A1\u8BC1\u4E66\u8BBE\u4E3A\u300C\u53D7\u4FE1\u4EFB\u300D\uFF08\u63A8\u8350 mkcert\uFF09\uFF1B\u6216\u5728\u672C\u673A\u5C06\u8BE5\u81EA\u7B7E\u8BC1\u4E66\u8BBE\u4E3A\u5B8C\u5168\u4FE1\u4EFB\u540E\u91CD\u8BD5\u3002</p><a id="login-cert-http-link" class="btn btn-ghost btn-block" href="#" rel="noopener">\u6539\u7528 HTTP \u8BBF\u95EE</a></div><button id="login-button" type="submit" class="btn btn-primary btn-block">\u8FDB\u5165\u63A7\u5236\u53F0</button>'+(vu()?'<button id="login-switch-server-button" class="btn btn-ghost btn-block login-switch-server" type="button"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="8" rx="2"/><rect x="2" y="13" width="20" height="8" rx="2"/><line x1="6" y1="7" x2="6.01" y2="7"/><line x1="6" y1="17" x2="6.01" y2="17"/></svg><span>\u5207\u6362\u670D\u52A1\u5668</span></button>':"")+"</form></div></div>":'<div class="login-container"><div class="login-card login-card-loading"><div class="login-header"><div class="login-logo"><div class="login-logo-icon">W</div><span class="login-logo-text">Wand</span></div><div class="login-subtitle">\u6B63\u5728\u6062\u590D\u767B\u5F55\u72B6\u6001</div></div><div class="login-body"><div class="login-status"><span class="login-spinner" aria-hidden="true"></span><div><p class="login-hint">\u6B63\u5728\u68C0\u67E5\u672C\u5730\u767B\u5F55\u4F1A\u8BDD\uFF0C\u8BF7\u7A0D\u5019\u3002</p><p class="login-muted">\u5982\u679C\u4F60\u521A\u5237\u65B0\u9875\u9762\uFF0C\u8FD9\u662F\u6B63\u5E38\u73B0\u8C61\u3002</p></div></div></div></div></div>'}function _f(){var e="<\/script>",t=r.sessions.find(function(g){return g.id===r.selectedId}),n=t?$n(t.command):"\u672A\u9009\u62E9\u4F1A\u8BDD",i=t?t.mode+" | "+t.status:"\u70B9\u51FB\u4E0A\u65B9\u300C\u65B0\u5BF9\u8BDD\u300D\u5F00\u59CB",a=r.selectedId&&r.drafts[r.selectedId]||"",u=r.sessionsDrawerOpen?" open":"",o=eo()?" open":"",s=Fm(),l=mt(s,r.chatMode),d=Re(),f=!!r.sidebarPinned&&!!r.sidebarCollapsed,c=f||!d&&(!!r.sidebarPinned||!!r.sessionsDrawerOpen),v=f?" sidebar-collapsed":"",h=f?" collapsed":"";return'<div class="app-container"><div id="sessions-drawer-backdrop" class="drawer-backdrop'+o+'"></div><div class="main-layout'+(r.sessionsDrawerOpen?" sidebar-open":"")+(c?" sidebar-pinned":"")+v+'"><aside id="sessions-drawer" class="sidebar'+u+(c?" pinned":"")+h+'"><div class="sidebar-header"><div class="sidebar-header-main"><div class="topbar-logo-icon">W</div><span class="sidebar-title">\u4F1A\u8BDD</span><span class="session-count" id="session-count">'+String(r.sessions.length)+'</span></div><div class="sidebar-header-actions"><div class="sidebar-header-more"><button id="sidebar-more-btn" class="btn btn-ghost btn-sm" type="button" title="\u66F4\u591A\u64CD\u4F5C"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="5" r="1.5"/><circle cx="12" cy="12" r="1.5"/><circle cx="12" cy="19" r="1.5"/></svg></button><div class="sidebar-header-overflow" id="sidebar-overflow-menu"><button class="overflow-item" id="sidebar-home-btn" type="button"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg><span>\u56DE\u5230\u9996\u9875</span></button><button class="overflow-item" id="sidebar-refresh-btn" type="button"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 4 23 10 17 10"/><path d="M20.49 15a9 9 0 1 1-2.12-9.36L23 10"/></svg><span>\u5237\u65B0\u9875\u9762</span></button></div></div><button id="sidebar-pin-btn" class="btn btn-ghost btn-sm sidebar-pin-toggle'+(r.sidebarPinned?" pinned":"")+'" type="button" title="'+(r.sidebarPinned?"\u5DF2\u56FA\u5B9A\u5E38\u9A7B\uFF08\u70B9\u51FB\u89E3\u9664\u9501\u5B9A\uFF09":"\u56FA\u5B9A\u4FA7\u680F\u5E38\u9A7B")+'" aria-label="'+(r.sidebarPinned?"\u89E3\u9664\u56FA\u5B9A\u5E38\u9A7B":"\u56FA\u5B9A\u4FA7\u680F\u5E38\u9A7B")+'" aria-pressed="'+(r.sidebarPinned?"true":"false")+'"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="12" y1="17" x2="12" y2="22"/><path d="M5 17h14v-1.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V6h1a2 2 0 0 0 0-4H8a2 2 0 0 0 0 4h1v4.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24z"/></svg></button><button id="sidebar-collapse-btn" class="btn btn-ghost btn-sm sidebar-collapse-toggle'+(f?" collapsed":"")+'" type="button" title="'+(f?"\u5C55\u5F00\u4E3A\u5168\u5C3A\u5BF8":"\u6536\u8D77\u4E3A\u7A84\u6761")+'" aria-label="'+(f?"\u5C55\u5F00\u4E3A\u5168\u5C3A\u5BF8":"\u6536\u8D77\u4E3A\u7A84\u6761")+'">'+(f?'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="10 6 16 12 10 18"/><line x1="20" y1="5" x2="20" y2="19"/></svg>':'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="14 6 8 12 14 18"/><line x1="4" y1="5" x2="4" y2="19"/></svg>')+'</button><button id="close-drawer-button" class="btn btn-ghost btn-icon sidebar-close drawer-close-btn" type="button" aria-label="\u5173\u95ED\u83DC\u5355"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" aria-hidden="true"><line x1="6" y1="6" x2="18" y2="18"/><line x1="18" y1="6" x2="6" y2="18"/></svg></button></div></div><div class="sidebar-body"><div id="sessions-panel"><div class="sessions-list" id="sessions-list">'+ha()+'</div></div></div><div class="sidebar-footer"><button id="drawer-new-session-button" class="btn btn-primary btn-block"><span>+</span> \u65B0\u4F1A\u8BDD</button><div class="sidebar-footer-actions"><button id="file-panel-toggle-btn" class="btn btn-ghost btn-sm'+(r.filePanelOpen?" active":"")+'" type="button" title="\u67E5\u770B\u6587\u4EF6"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/></svg><span>\u6587\u4EF6</span></button><button id="settings-button" class="btn btn-ghost btn-sm" type="button" title="\u8BBE\u7F6E"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/></svg><span>\u8BBE\u7F6E</span></button>'+(bm()?'<button id="back-to-native-button" class="btn btn-ghost btn-sm sidebar-back-to-native" type="button" title="\u8FD4\u56DE App \u539F\u751F\u754C\u9762"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="10" y="3" width="11" height="18" rx="2"/><line x1="14" y1="17" x2="17" y2="17"/><polyline points="7 8 3 12 7 16"/></svg><span>\u8FD4\u56DEApp</span></button>':"")+(vu()?'<button id="switch-server-button" class="btn btn-ghost btn-sm sidebar-switch-server" type="button" title="\u5207\u6362\u670D\u52A1\u5668"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="8" rx="2"/><rect x="2" y="13" width="20" height="8" rx="2"/><line x1="6" y1="7" x2="6.01" y2="7"/><line x1="6" y1="17" x2="6.01" y2="17"/></svg><span>\u5207\u6362</span></button>':"")+'<button id="logout-button" class="btn btn-ghost btn-sm sidebar-logout" type="button" title="\u9000\u51FA\u767B\u5F55"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"/><polyline points="16 17 21 12 16 7"/><line x1="21" y1="12" x2="9" y2="12"/></svg><span>\u9000\u51FA</span></button></div></div></aside><main class="main-content"><div class="main-header-row"><div class="topbar-left"><button id="sessions-toggle-button" class="floating-sidebar-toggle'+(r.sessionsDrawerOpen?" active":"")+'" aria-label="\u5207\u6362\u4F1A\u8BDD\u4FA7\u680F" type="button"><span class="hamburger-icon"><span></span><span></span><span></span></span></button><span class="topbar-brand" aria-hidden="true">W</span></div><div class="topbar-center">'+(t?'<span class="topbar-session-title" title="'+p(t.description||t.command||"")+'">'+p(t.title||$n(t.command))+'</span><span class="session-status-pill '+ko(t)+'" title="'+p(vr(t))+'"><span class="session-status-dot"></span><span class="session-status-text">'+p(vr(t))+'</span></span><span class="current-task hidden" id="current-task"></span>'+(t.cwd?gt(t.cwd,"topbar-cwd",' id="topbar-cwd" role="button" tabindex="0"'):""):'<span class="topbar-tagline">Wand \u63A7\u5236\u53F0</span><span class="current-task hidden" id="current-task"></span>')+'</div><div class="topbar-right"><button id="topbar-file-button" class="topbar-btn square'+(r.filePanelOpen?" active":"")+'" type="button" aria-label="\u6587\u4EF6" title="\u67E5\u770B\u6587\u4EF6\uFF08\u53EF\u4FEE\u6539\u8DEF\u5F84\uFF09"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/></svg></button><span id="topbar-git-slot" class="topbar-git-slot">'+bo()+"</span>"+(t?$d(t):"")+'</div></div><div id="file-panel-backdrop" class="file-panel-backdrop'+(r.filePanelOpen?" open":"")+'"></div><div id="file-side-panel" class="file-side-panel'+(r.filePanelOpen?" open":"")+'"><div class="file-side-panel-header"><div class="file-side-panel-title-group"><span class="file-side-panel-icon">'+Me("folder-open",{size:16})+'</span><span class="file-side-panel-title">\u6587\u4EF6</span></div><div class="file-side-panel-header-actions"><button class="file-side-panel-iconbtn" id="file-explorer-refresh" type="button" title="\u5237\u65B0" aria-label="\u5237\u65B0\u6587\u4EF6\u5217\u8868">'+Me("refresh",{size:15})+'</button><button id="file-side-panel-close" class="file-side-panel-iconbtn close" type="button" aria-label="\u5173\u95ED\u6587\u4EF6\u9762\u677F" title="\u5173\u95ED">'+Me("x",{size:16})+'</button></div></div><div class="file-side-panel-body"><div class="file-explorer-header"><button class="file-explorer-up" id="file-explorer-up" type="button" title="\u8FD4\u56DE\u4E0A\u7EA7\u76EE\u5F55" aria-label="\u8FD4\u56DE\u4E0A\u7EA7\u76EE\u5F55">'+Me("arrow-up",{size:15})+'</button><input type="text" class="file-explorer-path" id="file-explorer-cwd" value="'+p(t&&t.cwd?t.cwd:an())+'" title="'+p(t&&t.cwd?t.cwd:an())+'" placeholder="\u8F93\u5165\u8DEF\u5F84\u5E76\u56DE\u8F66..." spellcheck="false" autocomplete="off" autocapitalize="off" autocorrect="off" aria-label="\u5F53\u524D\u8DEF\u5F84\uFF0C\u53EF\u76F4\u63A5\u4FEE\u6539\u540E\u56DE\u8F66" /></div><div class="file-search-box"><span class="file-search-icon">'+Me("search",{size:14})+'</span><input type="text" id="file-search-input" class="file-search-input" placeholder="\u641C\u7D22\u5F53\u524D\u76EE\u5F55\u2026" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" /><button class="file-search-clear" id="file-search-clear" type="button" aria-label="\u6E05\u9664\u641C\u7D22" title="\u6E05\u9664">'+Me("x",{size:13})+'</button></div><div class="file-explorer" id="file-explorer">'+Pd(t&&t.cwd?t.cwd:an())+'</div></div></div><div id="output" class="terminal-container'+(r.selectedId?"":" hidden")+' active"><div class="terminal-scale-overlay" aria-label="\u7EC8\u7AEF\u7F29\u653E\u63A7\u4EF6"><button id="terminal-scale-down-top" class="terminal-scale-overlay-btn terminal-scale-btn" type="button" title="\u7F29\u5C0F">\u2212</button><span class="terminal-scale-overlay-label terminal-scale-label" id="terminal-scale-label-top">'+Math.round(r.terminalScale*100)+'%</span><button id="terminal-scale-up-top" class="terminal-scale-overlay-btn terminal-scale-btn" type="button" title="\u653E\u5927">+</button><span class="terminal-scale-overlay-divider"></span><button id="page-refresh-btn" class="terminal-scale-overlay-btn" type="button" title="\u5237\u65B0\u9875\u9762">\u21BB</button></div><button id="terminal-jump-bottom" class="terminal-jump-bottom'+(r.showTerminalJumpToBottom?" visible":"")+'" type="button" title="\u56DE\u5230\u5E95\u90E8" aria-label="\u56DE\u5230\u5E95\u90E8"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 3.5v9M3.5 8l4.5 4.5L12.5 8"/></svg></button></div><div id="chat-output" class="chat-container hidden"><div id="chat-fold-bar" class="chat-fold-bar hidden" aria-live="polite"></div><button id="chat-unread-bubble" class="chat-unread-bubble" type="button" title="\u56DE\u5230\u6700\u65B0\u6D88\u606F" aria-label="\u56DE\u5230\u6700\u65B0\u6D88\u606F"><span class="chat-unread-bubble-icon"><svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 3.5v9M3.5 8l4.5 4.5L12.5 8"/></svg></span><span class="chat-unread-bubble-count" aria-hidden="true"></span></button></div><div id="blank-chat" class="blank-chat'+(r.selectedId?" hidden":"")+'"><div class="blank-chat-inner"><div class="blank-chat-logo">W</div><h2 class="blank-chat-title">Wand</h2><p class="blank-chat-subtitle">\u652F\u6301\u7EC8\u7AEF PTY \u4F1A\u8BDD\u4E0E\u7ED3\u6784\u5316 chat \u4F1A\u8BDD\uFF0C\u4E24\u79CD\u6A21\u5F0F\u53EF\u5E76\u5B58\u3002</p><div class="blank-chat-tools"><button class="blank-chat-tool-btn" id="welcome-tool-claude" type="button"><span class="tool-icon">'+V("terminal",{size:16,strokeWidth:1.8})+'</span>\u65B0\u5EFA\u7EC8\u7AEF\u4F1A\u8BDD</button><button class="blank-chat-tool-btn" id="welcome-tool-codex" type="button"><span class="tool-icon tool-icon-text">\u2318</span>\u65B0\u5EFA Codex \u4F1A\u8BDD</button><button class="blank-chat-tool-btn" id="welcome-tool-structured" type="button"><span class="tool-icon">'+V("chat",{size:16,strokeWidth:1.8})+'</span>\u65B0\u5EFA\u7ED3\u6784\u5316\u4F1A\u8BDD</button></div><div class="blank-chat-cwd-wrap"><div class="blank-chat-cwd" id="blank-chat-cwd" role="button" tabindex="0" title="\u70B9\u51FB\u5207\u6362\u5DE5\u4F5C\u76EE\u5F55"><span class="blank-chat-cwd-icon">'+V("folder",{size:13,strokeWidth:1.8})+"</span>"+gt($e(),"blank-chat-cwd-path",' id="blank-chat-cwd-path"')+'<span class="blank-chat-cwd-arrow" id="blank-chat-cwd-arrow">'+V("chevronDown",{size:11,strokeWidth:2})+'</span></div><div class="blank-chat-cwd-dropdown hidden" id="blank-chat-cwd-dropdown"></div></div></div></div><div class="input-panel'+(r.selectedId?"":" hidden")+'"><div class="composer-top-row"><div id="todo-progress" class="todo-progress hidden"><div class="todo-progress-header" id="todo-progress-toggle"><div class="todo-progress-fill" id="todo-progress-fill" aria-hidden="true" style="--progress:0"></div><div class="todo-progress-left"><span class="todo-progress-ring" id="todo-progress-ring" aria-hidden="true" style="--progress:0"><svg width="16" height="16" viewBox="0 0 36 36"><circle class="todo-ring-track" cx="18" cy="18" r="15.5" fill="none" stroke-width="4"/><circle class="todo-ring-fill" cx="18" cy="18" r="15.5" fill="none" stroke-width="4" stroke-linecap="round"/></svg></span><span class="todo-progress-counter" id="todo-progress-counter"></span></div><div class="todo-progress-task-wrap"><span class="todo-progress-task" id="todo-progress-task"></span></div><svg class="todo-progress-chevron" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="6 15 12 9 18 15"/></svg></div></div><div class="todo-progress-body hidden" id="todo-progress-body"><ul class="todo-progress-list" id="todo-progress-list"></ul></div></div><div id="queue-bar-host" class="queue-bar-host" hidden></div><div class="input-composer'+(a?" has-text":"")+'"><div class="composer-status-row" id="composer-status-row">'+xm(t)+'<span class="permission-actions hidden" id="permission-actions"><span class="permission-actions-label" id="permission-actions-label">\u7B49\u5F85\u6388\u6743</span><button id="approve-permission-btn" class="btn btn-permission btn-permission-approve" type="button">\u6279\u51C6</button><button id="deny-permission-btn" class="btn btn-permission btn-permission-deny" type="button">\u62D2\u7EDD</button></span>'+Of()+'</div><div class="composer-main-row"><div class="composer-actions-left"><button id="attach-btn" class="btn-circle btn-circle-action" type="button" title="\u66F4\u591A" aria-label="\u66F4\u591A" aria-haspopup="menu" aria-expanded="false">'+V("plus",{size:18,strokeWidth:2.2})+'</button><input type="file" id="file-upload-input" multiple tabindex="-1" style="position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;clip:rect(0,0,0,0);pointer-events:none"></div><div class="composer-inline-config">'+Ll(t)+'</div><div class="composer-input-wrap"><textarea id="input-box" class="input-textarea" placeholder="'+wl(t,r.terminalInteractive)+'" rows="1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" enterkeyhint="send">'+p(a)+'</textarea><button id="prompt-optimize-btn" class="prompt-optimize-btn" type="button" title="\u63D0\u793A\u8BCD\u4F18\u5316\uFF08AI\uFF09" aria-label="\u63D0\u793A\u8BCD\u4F18\u5316"><svg class="prompt-optimize-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 3l1.6 4.4L18 9l-4.4 1.6L12 15l-1.6-4.4L6 9l4.4-1.6z" fill="currentColor" opacity="0.25"/><path d="M12 3l1.6 4.4L18 9l-4.4 1.6L12 15l-1.6-4.4L6 9l4.4-1.6z"/><path d="M19 14l.7 1.9L21.6 17l-1.9.7L19 19.6l-.7-1.9L16.4 17l1.9-.7z" fill="currentColor" opacity="0.35"/><path d="M5 4l.5 1.4L7 6l-1.5.6L5 8l-.5-1.4L3 6l1.5-.6z" fill="currentColor" opacity="0.35"/></svg><span class="prompt-optimize-spinner" aria-hidden="true"></span></button><div class="voice-input-mode hidden" id="voice-input-mode"><button id="voice-record-btn" class="voice-record-btn" type="button"><span class="voice-record-pulse" aria-hidden="true"></span><span class="voice-record-label">\u6309\u4F4F \u8BF4\u8BDD</span></button><button id="voice-cancel-btn" class="voice-cancel-btn" type="button" title="\u9000\u51FA\u8BED\u97F3\u6A21\u5F0F" aria-label="\u9000\u51FA\u8BED\u97F3\u6A21\u5F0F">'+V("x",{size:14,strokeWidth:2})+'</button></div></div><div class="composer-actions-right"><button id="stop-button" class="btn-circle btn-circle-stop hidden" title="\u505C\u6B62"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><rect x="3" y="3" width="10" height="10" rx="2"/></svg></button><button id="send-input-button" class="btn-circle btn-circle-send" title="\u53D1\u9001"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="22" y1="2" x2="11" y2="13"/><polygon points="22 2 15 22 11 13 2 9 22 2"/></svg></button></div></div><div id="attachment-preview" class="attachment-preview hidden"></div></div><div class="composer-plus-popover hidden" id="composer-plus-popover" role="menu" aria-label="\u66F4\u591A\u64CD\u4F5C"><button class="plus-popover-item" id="plus-attach-item" type="button" role="menuitem">'+V("paperclip",{size:14,strokeWidth:1.8,cls:"plus-popover-icon"})+'<span class="plus-popover-label">\u4E0A\u4F20\u9644\u4EF6</span></button><button class="plus-popover-item'+(r.terminalInteractive?" is-on":"")+'" id="terminal-interactive-toggle-top" type="button" role="menuitemcheckbox" aria-checked="'+(r.terminalInteractive?"true":"false")+'">'+V("keyboard",{size:14,strokeWidth:1.8,cls:"plus-popover-icon"})+'<span class="plus-popover-label">\u7EC8\u7AEF\u4EA4\u4E92</span><span class="plus-popover-toggle-state">'+(r.terminalInteractive?"\u5F00":"\u5173")+'</span></button><div class="plus-popover-sep" aria-hidden="true"></div><div class="plus-popover-trio-wrap">'+Ll(t)+'</div></div><div class="voice-transcript-bubble hidden" id="voice-transcript-bubble" aria-live="polite"><div class="voice-transcript-text" id="voice-transcript-text"></div><div class="voice-transcript-hint" id="voice-transcript-hint"><span class="voice-wave" aria-hidden="true"><i></i><i></i><i></i><i></i></span><span class="voice-transcript-status" id="voice-transcript-status">\u6B63\u5728\u8046\u542C\u2026\u4E0A\u6ED1\u53D6\u6D88</span></div><span class="voice-bubble-arrow" aria-hidden="true"></span></div><p id="action-error" class="error-message hidden"></p></div><section id="folder-picker-modal" class="modal-backdrop hidden"><div class="modal folder-picker-modal"><div class="modal-header"><h2 class="modal-title">\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55</h2><button id="close-folder-picker" class="btn btn-ghost btn-icon modal-close-btn" type="button" aria-label="\u5173\u95ED"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" aria-hidden="true"><line x1="6" y1="6" x2="18" y2="18"/><line x1="18" y1="6" x2="6" y2="18"/></svg></button></div><div class="modal-body"><div class="folder-picker-quick-row"><button class="folder-picker-quick-btn btn-with-icon" data-path="/tmp">'+V("trash",{size:13,strokeWidth:1.7})+'<span>\u4E34\u65F6\u76EE\u5F55</span></button><button class="folder-picker-quick-btn btn-with-icon" data-path="/">'+V("folder",{size:13,strokeWidth:1.7})+'<span>\u6839\u76EE\u5F55</span></button></div><div id="folder-breadcrumb" class="folder-breadcrumb"></div><div class="folder-picker"><span class="folder-picker-icon">'+V("folder",{size:15,strokeWidth:1.7})+'</span><input type="text" id="folder-picker-input" class="folder-picker-input" value="" placeholder="\u8F93\u5165\u6216\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55..." autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" /></div><div id="folder-picker-dropdown" class="folder-picker-dropdown hidden"></div><div id="folder-picker-validation" class="folder-picker-validation"></div></div></div></section></main></div></div>'+Ec()+lc()+dc()+Co()}function He(e,t){if(e){e.textContent=t,e.classList.remove("hidden");for(var n=e.previousElementSibling;n;){if(n.tagName==="INPUT"){n.setAttribute("data-error","true");break}n=n.previousElementSibling}}}function yi(e){if(e){e.textContent="",e.classList.add("hidden");for(var t=e.previousElementSibling;t;){if(t.tagName==="INPUT"){t.setAttribute("data-error","false");break}t=t.previousElementSibling}}}function A(e,t){var n=document.createElement("div");n.className="toast-message"+(t==="error"?" toast-error":""),t!=="error"&&(n.style.background="var(--accent)",n.style.color="white"),n.textContent=e,document.body.appendChild(n),setTimeout(function(){n.remove()},t==="error"?4e3:2200)}var Dr=[],Nf=0;function jf(e){switch(e){case"warning":return'<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.3 2.9 1.8 17a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 2.9a2 2 0 0 0-3.4 0Z"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg>';case"danger":return'<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"/><path d="M8 6V4h8v2"/><path d="m19 6-1 14H6L5 6"/><path d="M10 11v5"/><path d="M14 11v5"/></svg>';case"success":return'<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg>';case"question":return'<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M9.7 9a2.5 2.5 0 1 1 4.5 1.5c-.9.8-2.2 1.2-2.2 2.5"/><path d="M12 17h.01"/></svg>';default:return'<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M12 11v5"/><path d="M12 8h.01"/></svg>'}}function on(e){e=e||{};var t=e.dismissable!==!1,n=e.type||"info",i=jf(n),a=!!e.input;return new Promise(function(u){var o="wand-dialog-"+ ++Nf,s=document.activeElement,l=document.createElement("div");l.className="wand-dialog-backdrop",l.setAttribute("role","presentation");var d=document.createElement("div");d.className="wand-dialog",d.setAttribute("role",a?"dialog":"alertdialog"),d.setAttribute("aria-modal","true");var f=document.createElement("div");f.className="wand-dialog-header";var c=document.createElement("div");c.className="wand-dialog-icon "+n,c.setAttribute("aria-hidden","true"),e.icon?c.textContent=String(e.icon):c.innerHTML=i,f.appendChild(c);var v=document.createElement("div");if(v.className="wand-dialog-textwrap",e.title){var h=document.createElement("div");h.className="wand-dialog-title",h.id=o+"-title",h.textContent=e.title,v.appendChild(h),d.setAttribute("aria-labelledby",h.id)}if(e.message){var g=document.createElement("div");g.className="wand-dialog-message",g.id=o+"-message",g.textContent=e.message,v.appendChild(g),d.setAttribute("aria-describedby",g.id)}e.title||d.setAttribute("aria-label",n==="danger"?"\u786E\u8BA4\u64CD\u4F5C":"\u63D0\u793A"),f.appendChild(v),d.appendChild(f);var m=null;if(a){var y=document.createElement("div");y.className="wand-dialog-body",m=document.createElement("input"),m.type="text",m.className="wand-dialog-input",m.setAttribute("aria-label",e.inputLabel||e.title||"\u8F93\u5165\u5185\u5BB9"),m.autocomplete="off",m.spellcheck=!1,e.inputPlaceholder&&(m.placeholder=e.inputPlaceholder),e.inputValue!=null&&(m.value=String(e.inputValue)),y.appendChild(m),d.appendChild(y)}var C=e.buttons&&e.buttons.length?e.buttons:[{label:"\u597D",value:!0,kind:"primary",autofocus:!0}],E=document.createElement("div");E.className="wand-dialog-footer";var B=null,D=null;function F(L){if(!l.classList.contains("closing")){l.classList.add("closing"),document.removeEventListener("keydown",I,!0);var H=Dr.indexOf(F);H>=0&&Dr.splice(H,1);var U=!1;try{U=!!(window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches)}catch{}setTimeout(function(){if(l.parentNode&&l.parentNode.removeChild(l),s&&document.contains(s)&&typeof s.focus=="function")try{s.focus()}catch{}u(L)},U||document.hidden?0:140)}}C.forEach(function(L){var H=document.createElement("button"),U=L.kind||"secondary";H.className="btn btn-"+U,H.type="button",H.textContent=L.label,H.addEventListener("click",function(){a&&L.kind==="primary"?F(m?m.value:""):F(L.value)}),B||(B=H),L.autofocus&&(D=H),E.appendChild(H)}),d.appendChild(E),l.appendChild(d),l.addEventListener("click",function(L){L.target===l&&t&&F(e.cancelValue!==void 0?e.cancelValue:a?null:!1)});function I(L){if(Dr[Dr.length-1]===F){if(L.key==="Escape"&&t){L.preventDefault(),L.stopPropagation(),F(e.cancelValue!==void 0?e.cancelValue:a?null:!1);return}if(L.key==="Enter"){for(var H=null,U=0;U<C.length;U++)if(C[U].kind==="primary"){H=C[U];break}H||(H=C[C.length-1]),H&&(L.preventDefault(),L.stopPropagation(),a&&H.kind==="primary"?F(m?m.value:""):F(H.value));return}if(L.key==="Tab"){var x=d.querySelectorAll('button:not([disabled]), input:not([disabled]), [tabindex]:not([tabindex="-1"])');if(!x.length)return;var k=x[0],T=x[x.length-1];L.shiftKey&&document.activeElement===k?(L.preventDefault(),T.focus()):!L.shiftKey&&document.activeElement===T&&(L.preventDefault(),k.focus())}}}document.addEventListener("keydown",I,!0),Dr.push(F),document.body.appendChild(l),requestAnimationFrame(function(){if(a&&m){m.focus();try{m.select()}catch{}}else D?D.focus():B&&B.focus()})})}function cs(e,t){return t=t||{},on({title:t.title||"\u63D0\u793A",message:typeof e=="string"?e:String(e??""),type:t.type||"info",buttons:[{label:t.okLabel||"\u597D",value:void 0,kind:"primary",autofocus:!0}]})}function Ma(e,t){t=t||{};var n=!!t.danger||t.type==="danger";return on({title:t.title||(n?"\u786E\u8BA4\u64CD\u4F5C":"\u8BF7\u786E\u8BA4"),message:typeof e=="string"?e:String(e??""),type:t.type||(n?"danger":"question"),cancelValue:!1,buttons:[{label:t.cancelLabel||"\u53D6\u6D88",value:!1,kind:"secondary"},{label:t.okLabel||(n?"\u5220\u9664":"\u786E\u5B9A"),value:!0,kind:n?"danger":"primary",autofocus:!n}]}).then(function(i){return i===!0})}function Rf(e,t,n){return n=n||{},on({title:n.title||"\u8BF7\u8F93\u5165",message:typeof e=="string"?e:String(e??""),type:n.type||"question",input:!0,inputValue:t==null?"":String(t),inputPlaceholder:n.placeholder||"",cancelValue:null,buttons:[{label:n.cancelLabel||"\u53D6\u6D88",value:null,kind:"secondary"},{label:n.okLabel||"\u786E\u5B9A",value:void 0,kind:"primary"}]})}window.wandAlert=cs,window.wandConfirm=Ma,window.wandPrompt=Rf,window.openWandDialog=on;var $t=[],fs=0,Wf=6,zf=16;function qa(e){if((e.actionLabel||e.playSound)&&hs(),!r.notifBubble)return{dismiss:function(){}};var t=++fs,n=e.type||"info",i=e.icon||(n==="warning"?"!":n==="success"?"\u2713":"i"),a=e.duration!==void 0?e.duration:8e3,u=document.createElement("div");u.className="notification-bubble",u.setAttribute("data-nid",String(t));var o='<div class="notification-bubble-header"><span class="notification-bubble-icon '+n+'">'+i+'</span><span class="notification-bubble-title">'+p(e.title)+'</span><button class="notification-bubble-close" title="\u5173\u95ED">\xD7</button></div>',s=e.body?'<div class="notification-bubble-body">'+p(e.body).replace(/\n/g,"<br>")+"</div>":"",l=e.actionLabel?'<div class="notification-bubble-actions"><button class="primary">'+p(e.actionLabel)+"</button></div>":"";u.innerHTML=o+s+l,document.body.appendChild(u);var d={id:t,el:u};$t.push(d),Pa();var f=u.querySelector(".notification-bubble-close");if(f&&(f.onclick=function(){kr(t)}),e.actionLabel&&e.action){var c=u.querySelector(".notification-bubble-actions button");c&&(c.onclick=function(){e.action(),kr(t)})}var v=null;return a>0&&(v=setTimeout(function(){kr(t)},a)),{dismiss:function(){kr(t)}}}function kr(e){for(var t=-1,n=0;n<$t.length;n++)if($t[n].id===e){t=n;break}if(t!==-1){var i=$t[t];i.el.classList.add("slide-out"),$t.splice(t,1),Pa(),setTimeout(function(){i.el.parentNode&&i.el.parentNode.removeChild(i.el)},300)}}function Pa(){for(var e=zf,t=0;t<$t.length;t++)$t[t].el.style.top=e+"px",e+=$t[t].el.offsetHeight+Wf}try{bs=navigator.userAgent.match(/WandPlatform\/macOS/),_a=window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.wandNative||null,bs&&_a&&typeof window.WandNative>"u"&&(window.WandNative={downloadUpdate:function(e,t,n){try{_a.postMessage({type:"downloadUpdate",url:String(e||""),fileName:String(t||"wand-update.dmg"),source:String(n||"local")})}catch{}}})}catch{}var We=typeof WandNative<"u"&&typeof WandNative.sendNotification=="function",Ar=navigator.userAgent.match(/WandApp\/([^\s]+)/),ps=/WandPlatform\/macOS/.test(navigator.userAgent),Vf=!!Ar&&!ps,In=Ar&&Vf?Ar[1]:null,sn=Ar&&ps?Ar[1]:null;function Gn(e){if(!(!We||typeof WandNative.vibrate!="function"))try{WandNative.vibrate(e||"light")}catch{}}function Oa(){if(We){var e=r.sessions.some(function(t){return!t.archived&&(t.status==="running"||t.status==="thinking"||t.status==="initializing")});if(typeof WandNative.setKeepScreenOn=="function")try{WandNative.setKeepScreenOn(e)}catch{}if(e){if(typeof WandNative.startKeepAlive=="function")try{WandNative.startKeepAlive()}catch{}}else if(typeof WandNative.stopKeepAlive=="function")try{WandNative.stopKeepAlive()}catch{}}}function bi(){if(We&&typeof WandNative.getPermission=="function")try{return WandNative.getPermission()}catch{}return null}function Uf(){if(We){var e=bi();if(e==="default"||e==="denied")try{WandNative.requestPermission()}catch{}return}typeof Notification<"u"&&Notification.permission==="default"&&Notification.requestPermission()}function Kf(e){var t=e||{};return!(t.onlyWhenHidden&&!document.hidden||t.skipWhenSelectedSessionId&&t.skipWhenSelectedSessionId===r.selectedId&&!document.hidden)}function Jf(e,t){if(!e||!t||t<=0)return!1;var n=r.notificationHistory[e]||0,i=Date.now();return i-n<t?!0:(r.notificationHistory[e]=i,!1)}function Ei(e,t,n){var i=n||{},a=i.tag||"";if(Kf(i)&&!Jf(a,i.minIntervalMs||0)){if(We){var u=bi();if(u!=="granted")return;try{var o=a;i.kind&&(o=i.kind+(a?":"+a:"")),WandNative.sendNotification(e||"Wand",t||"",o||"")}catch{}return}if(!(typeof Notification>"u"||Notification.permission!=="granted")&&document.hidden)try{var s=new Notification(e,{body:t||"",icon:i.icon||"/favicon.ico",tag:a||void 0});s.onclick=function(){window.focus(),s.close(),i.onClick&&i.onClick()},setTimeout(function(){s.close()},1e4)}catch{}}}function Yf(e,t){if(!(!t||!t.title)){var n=r.sessions.find(function(a){return a.id===e});if(n){var i=n.summary||n.command||e;Ei("\u4EFB\u52A1\u8FDB\u884C\u4E2D",i+`
21
+ `+t.title,{kind:"task",tag:"wand-task-"+e+"-"+t.title,minIntervalMs:9e4,onlyWhenHidden:!0,skipWhenSelectedSessionId:e,onClick:function(){e!==r.selectedId&&Ht(e)}})}}}function vs(e,t){ep(e||"-",t||"-"),Ei("Wand \u53D1\u73B0\u65B0\u7248\u672C","\u5F53\u524D "+(e||"-")+" \u2192 \u6700\u65B0 "+(t||"-"),{kind:"update",tag:"wand-update",minIntervalMs:3e5})}function Gf(e,t){Ei("\u9700\u8981\u4F60\u7684\u6388\u6743",t,{kind:"permission",tag:"wand-perm-"+e,minIntervalMs:6e4,onlyWhenHidden:!0,skipWhenSelectedSessionId:e,onClick:function(){e!==r.selectedId&&Ht(e)}})}function Qf(e,t,n){Ei(t,n,{kind:"task-ended",tag:"wand-ended-"+e,minIntervalMs:1e4,onClick:function(){e!==r.selectedId&&Ht(e)}})}var Tn={},$f=30;function ms(e){if(!e)return"";var t=String(e).replace(/^#+\s+/gm,"").replace(/\*\*/g,"").replace(/`/g,"").trim(),n=t.split(`
22
+ `)[0].trim();return n.length>100&&(n=n.slice(0,100)+"\u2026"),n}function Ha(e){!We||typeof WandNative.updateSessionProgress!="function"||e&&(Tn[e]&&clearTimeout(Tn[e]),Tn[e]=setTimeout(function(){delete Tn[e],Xf(e)},$f))}function Xf(e){var t=r.sessions.find(function(F){return F.id===e});if(t){var n=t.summary||t.command||e,i=t.status||"running";if(i==="idle"||i==="archived"||i==="exited"){gs(e);return}for(var a=null,u="",o="",s=[],l=t.messages||[],d=l.length-1;d>=0;d--){var f=l[d];if(!(!f.content||!Array.isArray(f.content))){if(!o&&f.role==="assistant")for(var c=f.content.length-1;c>=0;c--){var v=f.content[c];if(v&&v.type==="text"&&v.text&&v.text.trim()){o=ms(v.text);break}}if(f.role==="user"){var h=f.content.some(function(F){return F&&F.__queued});if(!h)for(var g=0;g<f.content.length;g++){var m=f.content[g];if(m&&m.type==="text"&&m.text&&m.text.trim()){var y=ms(m.text);u||(u=y),s.length<4&&s.push(y);break}}}if(!a)for(var C=f.content.length-1;C>=0;C--){var E=f.content[C];if(E&&E.type==="tool_use"&&E.name==="TodoWrite"&&E.input&&E.input.todos){a=E.input.todos;break}}if(a&&s.length>=4&&o)break}}s.reverse();var B="";e===r.selectedId&&r.currentTask&&r.currentTask.title&&(B=r.currentTask.title);var D={sessionLabel:n,status:i,currentTask:B,latestUserText:u,latestAssistantText:o,todos:a||[],recentUserTexts:s};try{WandNative.updateSessionProgress(e,JSON.stringify(D))}catch{}}}function gs(e){if(!(!We||typeof WandNative.clearSessionProgress!="function")){Tn[e]&&(clearTimeout(Tn[e]),delete Tn[e]);try{WandNative.clearSessionProgress(e)}catch{}}}window.handleNativeBack=function(){var e=document.getElementById("settings-modal");if(e&&!e.classList.contains("hidden"))return nr(),!0;var t=document.getElementById("session-modal");if(t&&!t.classList.contains("hidden"))return hn(),!0;var n=document.getElementById("worktree-merge-modal");return n&&!n.classList.contains("hidden")?(tr(),!0):r.filePanelOpen&&Re()?(pa(!1),!0):r.sessionsDrawerOpen&&Re()?(Wr(),!0):Re()&&r.selectedId?(r.selectedId=null,he(),r.sessionsDrawerOpen=!0,Se("wand-sidebar-open",!0),Qt(),!0):!1};function hs(){r.notifSound&&Fi()}function Zf(){return Fi()}function Fi(){try{let a=function(u,o,s){var l=n.createOscillator(),d=n.createGain();l.type="sine",l.frequency.value=u,d.gain.setValueAtTime(0,n.currentTime+o),d.gain.linearRampToValueAtTime(.5*i,n.currentTime+o+.04),d.gain.exponentialRampToValueAtTime(.001,n.currentTime+o+s),l.connect(d),d.connect(n.destination),l.start(n.currentTime+o),l.stop(n.currentTime+o+s)};var e=a,t=window.AudioContext||window.webkitAudioContext;if(!t)return!1;var n=new t;n.state==="suspended"&&n.resume();var i=(r.notifVolume||0)/100;return a(523,0,.25),a(659,.12,.3),setTimeout(function(){n.close()},600),!0}catch{return!1}}function ep(e,t){if(r._updateBubbleShown)return;r._updateBubbleShown=!0,hs();var n=++fs,i=document.createElement("div");i.className="notification-bubble update-card",i.setAttribute("data-nid",String(n)),i.innerHTML='<div class="update-card-shine" aria-hidden="true"></div><div class="update-card-header"><div class="update-card-icon" aria-hidden="true"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 19V5"/><path d="M5 12l7-7 7 7"/></svg></div><div class="update-card-heading"><div class="update-card-title">\u53D1\u73B0\u65B0\u7248\u672C</div><div class="update-card-subtitle" id="update-card-subtitle">\u70B9\u51FB\u4E0B\u65B9\u6309\u94AE\u4E00\u952E\u66F4\u65B0</div></div><button class="update-card-close" title="\u7A0D\u540E\u63D0\u9192" aria-label="\u5173\u95ED"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6L6 18"/><path d="M6 6l12 12"/></svg></button></div><div class="update-card-version"><span class="update-card-version-chip update-card-version-current">v'+p(String(e).replace(/^v/,""))+'</span><svg class="update-card-version-arrow" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="M13 5l7 7-7 7"/></svg><span class="update-card-version-chip update-card-version-latest">v'+p(String(t).replace(/^v/,""))+'</span></div><div class="update-card-progress" id="update-card-progress" aria-hidden="true"><div class="update-card-progress-track"><div class="update-card-progress-fill"></div></div></div><div class="update-card-status hidden" id="update-card-status"></div><div class="update-card-actions"><button class="update-card-action update-card-action-primary" id="update-bubble-action" type="button"><span class="update-card-action-label">\u7ACB\u5373\u66F4\u65B0</span></button></div>',document.body.appendChild(i);var a={id:n,el:i};$t.push(a),Pa();var u=i.querySelector(".update-card-close");u&&(u.onclick=function(){kr(n),r._updateBubbleShown=!1});var o=i.querySelector("#update-bubble-action"),s=i.querySelector(".update-card-action-label"),l=i.querySelector("#update-card-subtitle"),d=i.querySelector("#update-card-status"),f=i.querySelector("#update-card-progress");function c(g,m){if(d){if(d.textContent=g||"",d.classList.remove("hidden","error","success"),!g){d.classList.add("hidden");return}m&&d.classList.add(m)}}function v(g){l&&(l.textContent=g||"")}function h(g){f&&f.classList.toggle("active",!!g)}o&&(o.onclick=function(){o.disabled=!0,i.classList.add("is-busy"),s&&(s.textContent="\u66F4\u65B0\u4E2D\u2026"),v("\u6B63\u5728\u4E0B\u8F7D\u5E76\u5B89\u88C5\u65B0\u7248\u672C\u2026"),h(!0),c(""),fetch("/api/update",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin"}).then(function(g){return g.json()}).then(function(g){if(g.error){h(!1),i.classList.remove("is-busy"),v("\u66F4\u65B0\u672A\u5B8C\u6210"),c(g.error,"error"),o.disabled=!1,s&&(s.textContent="\u91CD\u8BD5");return}if(i.classList.add("is-success"),v((g.message||"\u66F4\u65B0\u5B8C\u6210")+"\uFF0C\u6B63\u5728\u91CD\u542F\u670D\u52A1\u2026"),c(""),s&&(s.textContent="\u6B63\u5728\u91CD\u542F\u2026"),g.detachedUpdate){ln();return}if(g.restartRequired===!1){h(!1),i.classList.remove("is-busy"),o.disabled=!1,s&&(s.textContent="\u5DF2\u5B8C\u6210");return}tp(o,s,l,d,f)}).catch(function(){h(!1),i.classList.remove("is-busy"),v("\u66F4\u65B0\u672A\u5B8C\u6210"),c("\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u540E\u91CD\u8BD5","error"),o.disabled=!1,s&&(s.textContent="\u91CD\u8BD5")})})}function tp(e,t,n,i,a){fetch("/api/restart",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin"}).then(function(u){return u.json()}).then(function(){ln()}).catch(function(){ln()})}function ys(e,t){e&&(e.disabled=!0,e.textContent="\u6B63\u5728\u91CD\u542F\u2026"),t&&(t.textContent="\u670D\u52A1\u6B63\u5728\u91CD\u542F\u2026",t.style.color="var(--text-secondary)"),fetch("/api/restart",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin"}).then(function(n){return n.json()}).then(function(){ln()}).catch(function(){ln()})}function ln(){if(!document.getElementById("restart-overlay")){var e=document.createElement("div");e.id="restart-overlay",e.className="restart-overlay",e.innerHTML='<div class="restart-overlay-content"><div class="restart-spinner"></div><div class="restart-title">\u670D\u52A1\u6B63\u5728\u91CD\u542F</div><div class="restart-subtitle">\u7A0D\u540E\u5C06\u81EA\u52A8\u5237\u65B0\u9875\u9762\u2026</div></div>',document.body.appendChild(e);var t=0,n=180,i=setInterval(function(){if(t++,fetch("/api/config",{credentials:"same-origin"}).then(function(u){u.ok&&(clearInterval(i),location.reload())}).catch(function(){}),t>=n){clearInterval(i);var a=e.querySelector(".restart-subtitle");a&&(a.innerHTML='\u91CD\u542F\u8D85\u65F6\uFF0C\u8BF7 <a href="javascript:location.reload()" style="color:var(--accent);text-decoration:underline">\u624B\u52A8\u5237\u65B0</a> \u9875\u9762\u3002')}},2e3)}}function np(e,t){if(!document.getElementById("restart-overlay")){var n=document.createElement("div");n.id="restart-overlay",n.className="restart-overlay",n.innerHTML='<div class="restart-overlay-content"><div class="restart-spinner"></div><div class="restart-title">\u81EA\u52A8\u66F4\u65B0\u4E2D</div><div class="restart-subtitle">'+p(e)+" \u2192 "+p(t)+"<br>\u6B63\u5728\u4E0B\u8F7D\u5E76\u5B89\u88C5\u65B0\u7248\u672C\uFF0C\u7A0D\u540E\u5C06\u81EA\u52A8\u91CD\u542F\u2026</div></div>",document.body.appendChild(n)}}var bs,_a,Ie={recording:!1,canceling:!1,transcript:"",startY:0},rp=60;function ip(e){Ie.transcript=e||"";var t=document.getElementById("voice-transcript-text");t&&(t.textContent=Ie.transcript);var n=document.getElementById("voice-transcript-bubble");n&&n.classList.toggle("has-text",!!Ie.transcript)}function ap(e){if(e){e.preventDefault(),Ie.startY=typeof e.clientY=="number"?e.clientY:0;try{e.pointerId!==void 0&&e.target&&e.target.setPointerCapture&&e.target.setPointerCapture(e.pointerId)}catch{}}Ie.recording=!0,Ie.canceling=!1,Ie.transcript="";var t=document.getElementById("voice-record-btn");if(t){t.classList.add("is-recording");var n=t.querySelector(".voice-record-label");n&&(n.textContent="\u677E\u5F00 \u53D1\u9001")}var i=document.getElementById("voice-transcript-bubble");i&&i.classList.remove("hidden","is-canceling","has-text"),ip("");var a=document.getElementById("voice-transcript-status");a&&(a.textContent="\u7F51\u9875\u7AEF\u6682\u4E0D\u652F\u6301\u8BED\u97F3\u8F93\u5165\uFF0C\u8BF7\u4F7F\u7528 App")}function up(e){if(!(!Ie.recording||!e)){var t=Ie.startY-(typeof e.clientY=="number"?e.clientY:Ie.startY),n=t>rp;if(n!==Ie.canceling){Ie.canceling=n;var i=document.getElementById("voice-transcript-bubble");i&&i.classList.toggle("is-canceling",n);var a=document.getElementById("voice-record-btn"),u=a&&a.querySelector(".voice-record-label");u&&(u.textContent=n?"\u677E\u5F00 \u53D6\u6D88":"\u677E\u5F00 \u53D1\u9001");var o=document.getElementById("voice-transcript-status");o&&(o.textContent=n?"\u677E\u5F00\u624B\u6307 \u53D6\u6D88":"\u6B63\u5728\u8046\u542C\u2026\u4E0A\u6ED1\u53D6\u6D88")}}}function Es(e){if(Ie.recording){e&&e.preventDefault(),Ie.recording=!1;var t=!Ie.canceling&&!!Ie.transcript.trim(),n=Ie.transcript;Na(),t&&(op(n),ja(!1))}}function Na(){Ie.canceling=!1;var e=document.getElementById("voice-record-btn");if(e){e.classList.remove("is-recording");var t=e.querySelector(".voice-record-label");t&&(t.textContent="\u6309\u4F4F \u8BF4\u8BDD")}var n=document.getElementById("voice-transcript-bubble");n&&n.classList.add("hidden")}function op(e){var t=(e||"").trim();if(t){var n=document.getElementById("input-box");if(n){var i=n.value||"",a=i?i.replace(/\s+$/,"")+" "+t:t;n.value=a,Ze(a,!0),Ct(n);try{n.setSelectionRange(a.length,a.length)}catch{}}}}function ja(e){var t=document.querySelector(".input-composer");if(t){var n=typeof e=="boolean"?e:!t.classList.contains("voice-mode");if(t.classList.toggle("voice-mode",n),!n){Ie.recording=!1,Na();var i=document.getElementById("input-box");if(i&&!r.terminalInteractive)try{i.focus({preventScroll:!0})}catch{}}}}function Ct(e){if(e){var t=36,n=120,i=qr();if(!e.value||e.value.trim()===""){e.style.height=t+"px",e.style.minHeight=t+"px",e.style.overflowY=i?"auto":"hidden",e.scrollTop=0,$i(e);return}var a=e.style.overflowY;e.style.overflowY="hidden",e.style.height=t+"px";var u=e.scrollHeight,o=Math.max(t,Math.min(u,n)),s=u>n;e.style.height=o+"px",e.style.minHeight=t+"px",e.style.overflowY=s||i?"auto":"hidden",s?Ii(e):e.scrollTop=0,$i(e)}}function sp(){if(!r.selectedId)return!1;var e=r.sessions.find(function(t){return t.id===r.selectedId});return ue(e)?!!(e.structuredState&&e.structuredState.inFlight):!!e&&e.status==="running"}var xr=!1;function Fs(e){return!e||e.archived?!1:ue(e)?!!(e.structuredState&&e.structuredState.inFlight):e.status==="running"}function Ra(){return r.sessions.some(Fs)}function lp(){var e=r.sessions.filter(Fs);if(e.length===0)return null;if(r.selectedId){var t=e.find(function(n){return n.id===r.selectedId});if(t)return t}return e.sort(function(n,i){return(Date.parse(i.startedAt)||0)-(Date.parse(n.startedAt)||0)}),e[0]}function ws(e){if(!e)return"";for(var t=Array.isArray(e.queuedMessages)?e.queuedMessages:[],n=t.length-1;n>=0;n--){var i=typeof t[n]=="string"?t[n].trim():"";if(i)return i}for(var a=Array.isArray(e.messages)?e.messages:[],u=a.length-1;u>=0;u--){var o=a[u];if(!(!o||o.role!=="user"||!Array.isArray(o.content))){var s=o.content.filter(function(f){return f&&f.type==="text"&&typeof f.text=="string"}).map(function(f){return f.text});if(s.length)return s.join(`
23
+ `).trim();for(var l=0;l<o.content.length;l++){var d=o.content[l];if(d&&d.type==="tool_result"&&typeof d.content=="string")return d.content.trim()}return""}}return""}function dp(e,t){var n=typeof t=="string"?t.trim():"";if(n&&ws(e)===n)return A("\u4E0E\u4E0A\u4E00\u6761\u6D88\u606F\u76F8\u540C\uFF0C\u5DF2\u5FFD\u7565\uFF0C\u4E0D\u4F1A\u52A0\u5165\u6392\u961F\u3002","warning"),Promise.resolve();var i=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Date.now().toString(36)+"-"+Math.random().toString(36).slice(2,10),a=Array.isArray(e.queuedMessages)?e.queuedMessages.slice():[],u=a.slice();u.push(t),X({id:e.id,queuedMessages:u}),e.id===r.selectedId&&nt();var o=e.title||$n(e.command)||"\u5F53\u524D\u4F1A\u8BDD";return A("\u5DF2\u52A0\u5165\u300C"+o+"\u300D\u7684\u6392\u961F\uFF0C\u56DE\u590D\u7ED3\u675F\u540E\u81EA\u52A8\u53D1\u9001\uFF08\u542B\u4E0A\u4E0B\u6587\uFF09\u3002","info"),fetch("/api/structured-sessions/"+e.id+"/messages",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({input:t,idempotencyKey:i})}).then(function(s){return s.ok?s.json():s.json().catch(function(){return{error:"\u8BF7\u6C42\u5931\u8D25"}}).then(function(l){throw new Error(l&&l.error||"\u65E0\u6CD5\u6392\u961F\u6D88\u606F\u3002")})}).then(function(s){s&&s.id&&(X(s),s.id===r.selectedId&&nt())}).catch(function(s){X({id:e.id,queuedMessages:a}),e.id===r.selectedId&&nt(),A(s&&s.message||"\u6392\u961F\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002","error")})}function Cs(e){var t=lp();if(t&&ue(t)){dp(t,e);return}if(r.crossSessionQueue.length>=10){A("\u6392\u961F\u6D88\u606F\u5DF2\u6EE1\uFF08\u6700\u591A 10 \u6761\uFF09\uFF0C\u8BF7\u7B49\u5F85\u5F53\u524D\u4F1A\u8BDD\u5B8C\u6210\u3002","warning");return}var n="csq-"+Date.now()+"-"+Math.random().toString(36).slice(2,8);r.crossSessionQueue.push({id:n,text:e,cwd:$e(),mode:r.chatMode||"managed",tool:rt(),queuedAt:Date.now()}),Jt(),Bt(),A("\u5DF2\u6392\u961F\uFF0C\u5C06\u5728\u7A7A\u95F2\u540E\u81EA\u52A8\u5F00\u59CB\u65B0\u4F1A\u8BDD\u3002","info")}function cp(e){xr||(xr=!0,fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({command:e.tool,cwd:e.cwd,mode:e.mode,initialInput:e.text}))}).then(function(t){return t.json()}).then(function(t){return xr=!1,t.error?(A(t.error,"error"),r.crossSessionQueue.unshift(e),Jt(),Bt(),null):fn(t)}).catch(function(t){xr=!1,A(t&&t.message||"\u65E0\u6CD5\u542F\u52A8\u6392\u961F\u4F1A\u8BDD\u3002","error"),r.crossSessionQueue.unshift(e),Jt(),Bt()}))}function fp(e){var t=r.crossSessionQueue.findIndex(function(i){return i.id===e});if(!(t<0)){var n=r.crossSessionQueue.splice(t,1)[0];Jt(),Bt(),fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({command:n.tool,cwd:n.cwd,mode:n.mode,initialInput:n.text}))}).then(function(i){return i.json()}).then(function(i){return i.error?(A(i.error,"error"),r.crossSessionQueue.splice(t,0,n),Jt(),Bt(),null):fn(i)}).catch(function(i){A(i&&i.message||"\u65E0\u6CD5\u542F\u52A8\u6392\u961F\u4F1A\u8BDD\u3002","error"),r.crossSessionQueue.splice(t,0,n),Jt(),Bt()})}}function pp(e){var t=r.crossSessionQueue.findIndex(function(n){return n.id===e});t<0||(r.crossSessionQueue.splice(t,1),Jt(),Bt(),r.crossSessionQueue.length===0&&A("\u6392\u961F\u5DF2\u6E05\u7A7A\u3002","info"))}function wi(){if(r.crossSessionQueue.length!==0&&!Ra()&&!xr){var e=r.crossSessionQueue.shift();Bt(),cp(e)}}function Bs(e){var t=Math.floor((Date.now()-e)/1e3);if(t<60)return t+"s";var n=Math.floor(t/60);return n<60?n+"m":Math.floor(n/60)+"h"}function Bt(){var e=document.querySelector(".cross-session-queue"),t=document.querySelector(".input-panel"),n=document.querySelector(".structured-status-bar"),i=document.querySelector(".input-composer"),a=document.getElementById("blank-chat");if(r.crossSessionQueue.length===0){e&&e.remove(),Jt();return}var u=t&&!t.classList.contains("hidden"),o=u?t:a,s=u?n||i:null;if(o){e&&e.parentNode!==o&&(e.remove(),e=null),e?u&&s&&e.nextSibling!==s&&o.insertBefore(e,s):(e=document.createElement("div"),e.className="cross-session-queue",s?o.insertBefore(e,s):o.appendChild(e));var l=r.crossSessionQueue.length,d=r.crossSessionQueue.map(function(c,v){var h=c.text.length>60?c.text.slice(0,60)+"\u2026":c.text,g=Bs(c.queuedAt);return'<div class="queue-item" data-queue-id="'+p(c.id)+'"><span class="queue-item-dot"></span><span class="queue-item-text" title="'+p(c.text)+'">'+p(h)+'</span><span class="queue-item-age">'+g+'</span><button class="queue-item-send-now" data-queue-id="'+p(c.id)+'" title="\u7ACB\u5373\u53D1\u9001" type="button">\u53D1\u9001</button><button class="queue-item-cancel" data-queue-id="'+p(c.id)+'" title="\u53D6\u6D88" type="button">\xD7</button></div>'}).join(""),f=l>1?'<div class="queue-header"><span class="queue-header-label">\u6392\u961F '+l+' \u6761</span><button class="queue-header-clear" id="queue-clear-all" type="button" title="\u6E05\u7A7A\u6392\u961F">\u6E05\u7A7A</button></div>':"";e.innerHTML=f+d}}setInterval(function(){if(r.crossSessionQueue.length>0){var e=document.querySelectorAll(".queue-item-age");r.crossSessionQueue.forEach(function(t,n){e[n]&&(e[n].textContent=Bs(t.queuedAt))}),wi()}},5e3),document.addEventListener("click",function(e){var t=e.target;if(t.closest("#queue-clear-all")){e.preventDefault(),r.crossSessionQueue=[],Jt(),Bt(),A("\u6392\u961F\u5DF2\u6E05\u7A7A\u3002","info");return}var n=t.closest(".queue-item-send-now");if(n){e.preventDefault(),fp(n.dataset.queueId);return}var i=t.closest(".queue-item-cancel");if(i){e.preventDefault(),pp(i.dataset.queueId);return}});function Ds(){var e=document.getElementById("welcome-input"),t=e?e.value.trim():"";if(t){if(Ra()){e.value="",Cs(t);return}var n=document.getElementById("todo-progress");n&&n.classList.add("hidden"),e.value="",e.placeholder="\u6B63\u5728\u542F\u52A8\u2026",e.disabled=!0;var i=r.chatMode||"managed",a=$e(),u=rt();fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({command:u,provider:u,cwd:a,mode:i,initialInput:t}))}).then(function(o){return o.json()}).then(function(o){if(o.error){A(o.error,"error"),e.placeholder="\u8F93\u5165\u6D88\u606F",e.disabled=!1;return}r.selectedId=o.id,he(),r.drafts[o.id]="",wt(),X(o),pe(),Sr(o.id),Pn(o.id),gn(o.id).then(function(){e.placeholder="\u8F93\u5165\u6D88\u606F",e.disabled=!1,Pt(!0)})}).catch(function(o){A(o&&o.message||(u==="codex"?"\u65E0\u6CD5\u542F\u52A8 Codex \u4F1A\u8BDD\u3002":"\u65E0\u6CD5\u542F\u52A8 Claude \u4F1A\u8BDD\u3002"),"error"),e.placeholder="\u8F93\u5165\u6D88\u606F",e.disabled=!1})}}function vp(e){e=e||{};var t=document.getElementById("welcome-input"),n=document.getElementById("input-box"),i=t&&t.value.trim()?t.value.trim():n?n.value.trim():"";if(r.selectedId){i&&ks(e);return}if(i&&Ra()){n&&(n.value=""),t&&(t.value=""),$i(n),Cs(i);return}var a=r.chatMode||"managed",u=$e(),o=rt();fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({command:o,provider:o,cwd:u,mode:a,initialInput:i||void 0}))}).then(function(s){return s.json()}).then(function(s){return s.error?(A(s.error,"error"),null):(r.selectedId=s.id,he(),r.drafts[s.id]="",wt(),n&&(n.value=""),t&&(t.value=""),X(s),pe(),Sr(s.id),Pn(s.id),gn(s.id))}).catch(function(s){A(s&&s.message||(o==="codex"?"\u65E0\u6CD5\u542F\u52A8 Codex \u4F1A\u8BDD\u3002":"\u65E0\u6CD5\u542F\u52A8 Claude \u4F1A\u8BDD\u3002"),"error")})}function Sr(e){var t=r.sessions.find(function(v){return v.id===e}),n=document.getElementById("blank-chat"),i=document.getElementById("output"),a=document.getElementById("chat-output"),u=document.getElementById("stop-button"),o=document.getElementById("terminal-title"),s=document.getElementById("terminal-info"),l=document.querySelector(".session-summary-value"),d=ue(t);n&&n.classList.add("hidden"),i&&i.classList.toggle("hidden",d),a&&a.classList.remove("hidden"),d?r.currentView="chat":r.currentView="terminal";var f=t?$n(t.command):"Wand",c=t?vr(t):"\u5F00\u59CB\u5BF9\u8BDD";o&&(o.textContent=f),s&&(s.textContent=c),l&&(l.textContent=f),d||r.terminal||Yn(),Ki(),Pt(!0),d||Qe("view-switch",{forceReplay:!0})}function ks(e){e=e||{};var t=!!e.interrupt,n=document.documentElement.classList.contains("is-wand-embed-terminal");if(r.terminalInteractive&&!n)return A("\u7EC8\u7AEF\u4EA4\u4E92\u6A21\u5F0F\u5F00\u542F\u65F6\uFF0C\u8BF7\u76F4\u63A5\u5728\u7EC8\u7AEF\u4E2D\u8F93\u5165\u3002","info"),Promise.resolve();var i=document.getElementById("input-box"),a=i?i.value:"",u=Dt(),o=r.pendingAttachments.length>0;if(a||o){var s=o&&r.selectedId?Ig(r.selectedId).catch(function(l){A("\u9644\u4EF6\u4E0A\u4F20\u5931\u8D25: "+(l&&l.message||l),"error");var d=l instanceof Error?l:new Error(String(l));throw d.__wandToasted=!0,d}):Promise.resolve([]);return s.then(function(l){var d=Tg(l),f=d+(a||(l.length?"\u8BF7\u67E5\u770B\u9644\u4EF6\u3002":""));l.length&&Sg();var c=document.getElementById("todo-progress");if(c&&c.classList.add("hidden"),ue(u))return mp(f,i,u,{interrupt:t});var v=Lp(u,f),h=!r.wsConnected;return h?(Op(v),i&&(i.value="",Ct(i)),Ze(""),Promise.resolve()):Tp(u).then(function(g){if(!g)return null;var m=r.currentView;if(g&&g.provider==="codex"&&r.selectedId!==g.id)throw new Error("Codex session changed before input send.");return Vu(),Mp(v,"enter_text",30,m).then(function(){i&&i.value===a&&(i.value="",Ct(i)),Ze("")})}).catch(function(g){throw A(Ls(g),"error"),g&&(g.__wandToasted=!0),g})}).catch(function(l){throw l&&l.__wandToasted||A(Ls(l),"error"),l})}return Promise.resolve()}var As={},xs=350;function mp(e,t,n,i){i=i||{};var a=!!i.interrupt;if(!r.selectedId||!e)return Promise.resolve();if(!n)return A("\u4F1A\u8BDD\u4E0D\u5B58\u5728\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u6216\u65B0\u5EFA\u4F1A\u8BDD\u3002","error"),Promise.resolve();var u=!!(n.structuredState&&n.structuredState.inFlight&&n.status==="running");if(u&&!a&&ws(n)===e.trim())return t&&(t.value="",Ct(t)),Ze(""),A("\u4E0E\u4E0A\u4E00\u6761\u6D88\u606F\u76F8\u540C\uFF0C\u5DF2\u5FFD\u7565\uFF0C\u4E0D\u4F1A\u52A0\u5165\u6392\u961F\u3002","warning"),Ln("Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C"),Promise.resolve();var o=Date.now(),s=As[n.id]||0;if(o-s<xs)return console.log("[wand] postStructuredInput: duplicate submit (within "+xs+"ms) ignored for session",n.id),Promise.resolve();As[n.id]=o;var l=u&&a,d=u&&!a,f=cr(Array.isArray(n.messages)?n.messages.slice():[]),c;if(d){var v=Array.isArray(n.queuedMessages)?n.queuedMessages.slice():[];v.push(e),c={id:n.id,queuedMessages:v},X(c);var h=r.sessions.find(function(E){return E.id===n.id})||n;r.currentMessages=ze(h,Xe(h,h.output,!1)),Ln("\u5DF2\u52A0\u5165\u6392\u961F\u2026"),Ve(!0),dn(),A(v.length>1?"\u5DF2\u52A0\u5165\u6392\u961F\uFF08\u5171 "+v.length+" \u6761\u7B49\u5F85\uFF09":"\u5DF2\u52A0\u5165\u6392\u961F\uFF0C\u7B49\u5F53\u524D\u56DE\u590D\u5B8C\u6210\u4F1A\u81EA\u52A8\u53D1\u9001\u3002","info")}else{var g={role:"user",content:[{type:"text",text:e}]};f.push(g);var m=Object.assign({},n.structuredState||{},{inFlight:!0});X({id:n.id,status:"running",messages:f,structuredState:m}),r.currentMessages=ze(Object.assign({},n,{status:"running",messages:f,structuredState:m}),f),Ln(l?"\u5DF2\u4E2D\u65AD\uFF0C\u6B63\u5728\u5904\u7406\u65B0\u6D88\u606F\u2026":"\u601D\u8003\u4E2D\u2026"),Vu(),Ve(!0),l&&A("\u5DF2\u4E2D\u65AD\u4E0A\u4E00\u6761\u56DE\u590D\uFF0C\u6B63\u5728\u5904\u7406\u65B0\u6D88\u606F\u2026","info")}t&&(t.value="",Ct(t)),Ze("");var y=r.queueEpoch,C=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Date.now().toString(36)+"-"+Math.random().toString(36).slice(2,10);return fetch("/api/structured-sessions/"+n.id+"/messages",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({input:e,interrupt:l||void 0,idempotencyKey:C})}).then(function(E){return E.ok?E.json():E.json().catch(function(){return{error:"\u8BF7\u6C42\u5931\u8D25"}}).then(function(B){var D=new Error(B&&B.error||"\u65E0\u6CD5\u53D1\u9001\u7ED3\u6784\u5316\u6D88\u606F\u3002");throw D.errorCode=B&&B.errorCode,D.httpStatus=E.status,D})}).then(function(E){if(E&&E.error)throw new Error(E.error);if(E&&E.id&&(r.queueEpoch>y&&E.queuedMessages&&delete E.queuedMessages,X(E),E.id===r.selectedId)){var B=r.sessions.find(function(D){return D.id===E.id})||E;r.currentMessages=ze(B,Xe(B,E.output,!1)),Ve(!0),dn()}}).catch(function(E){if(E&&E.errorCode==="duplicate_idempotency_key"){A(E.message||"\u68C0\u6D4B\u5230\u91CD\u590D\u53D1\u9001\uFF0C\u5DF2\u62E6\u622A\u3002","warning"),Ln("Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C");return}if(d){var B=Array.isArray(n.queuedMessages)?n.queuedMessages.slice():[];if(X({id:n.id,queuedMessages:B}),n.id===r.selectedId){var D=r.sessions.find(function(H){return H.id===n.id})||n;r.currentMessages=ze(D,Xe(D,D.output,!1)),Ve(!0),dn()}}else{var F=f.slice(0,-1);X({id:n.id,status:n.status,messages:F,structuredState:Object.assign({},n.structuredState||{},{inFlight:!1})}),n.id===r.selectedId&&(r.currentMessages=ze(Object.assign({},n,{messages:F,structuredState:Object.assign({},n.structuredState||{},{inFlight:!1})}),F),Ve(!0))}var I=E&&E.message||"",L=I==="Failed to fetch"||I==="NetworkError when attempting to fetch resource."||I==="Load failed"||/aborted|aborterror|networkerror|failed to fetch/i.test(I);L||A(E&&E.message||"\u65E0\u6CD5\u53D1\u9001\u7ED3\u6784\u5316\u6D88\u606F\u3002","error"),Ln("Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C")})}function Ln(e){var t=document.querySelector(".input-hint");t&&(t.textContent=e)}function dn(){nt()}var gp=10,Ss=26;function hp(e){if(typeof e!="string")return"";var t=e.replace(/\s+/g," ").trim();return t.length<=Ss?t:t.slice(0,Ss)+"\u2026"}function yp(){return!!r.queueBarExpanded}function bp(e){if(!!r.queueBarExpanded!=!!e){r.queueBarExpanded=!!e;var t=document.querySelector(".queue-bar");t&&t.classList.toggle("expanded",!!e)}}function Ep(e,t,n){var i=e.length,a="queue-bar";n&&(a+=" queue-bar-capacity"),t&&(a+=" queue-bar-inflight");for(var u=t?"\u4E2D\u65AD\u5F53\u524D\u56DE\u590D\uFF0C\u7ACB\u5373\u53D1\u9001\u8FD9\u6761":"\u7ACB\u5373\u53D1\u9001\u8FD9\u6761",o="",s=0;s<i;s++){var l=e[s]==null?"":String(e[s]),d=hp(l),f=l+"\uFF08\u6309\u4F4F\u53EF\u62D6\u52A8\u8C03\u5E8F\uFF09";o+='<li class="queue-bar-item" data-index="'+s+'" data-action="drag" title="'+p(f)+'"><span class="queue-bar-item-index" aria-hidden="true">'+(s+1)+'</span><span class="queue-bar-item-text">'+p(d)+'</span><button type="button" class="queue-bar-item-promote" data-action="promote-item" title="'+p(u)+'" aria-label="\u7ACB\u5373\u53D1\u9001\u7B2C '+(s+1)+' \u6761"><svg width="11" height="11" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M13 2 L4 14 L11 14 L10 22 L20 9 L13 9 Z"/></svg></button><button type="button" class="queue-bar-item-delete" data-action="delete" aria-label="\u5220\u9664\u7B2C '+(s+1)+' \u6761\u6392\u961F\u6D88\u606F" title="\u5220\u9664"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="6" y1="6" x2="18" y2="18"/><line x1="6" y1="18" x2="18" y2="6"/></svg></button></li>'}var c="";return i>=2&&(c='<div class="queue-bar-head"><span class="queue-bar-head-count">'+i+' \u6761\u6392\u961F</span><button type="button" class="queue-bar-clear-all" data-action="clear-all" title="\u6E05\u7A7A\u5168\u90E8\u6392\u961F" aria-label="\u6E05\u7A7A\u5168\u90E8 '+i+' \u6761\u6392\u961F\u6D88\u606F">\u6E05\u7A7A</button></div>'),'<div class="'+a+'" data-queue-bar="1" title="\u6392\u961F '+i+' \u6761\uFF08\u6309\u4F4F\u6C14\u6CE1\u53EF\u8C03\u5E8F\uFF09">'+c+'<ol class="queue-bar-list" data-queue-list="1">'+o+"</ol></div>"}function nt(){var e=document.getElementById("queue-bar-host");if(e){var t=r.sessions.find(function(o){return o.id===r.selectedId}),n=t&&t.sessionKind==="structured",i=n?da(t):[];if(i=Array.isArray(i)?i:[],!n||i.length===0){e.hidden=!0,e.innerHTML="",r.queueBarExpanded=!1;return}if(!r.queueBarDrag){e.hidden=!1;var a=!!(t.structuredState&&t.structuredState.inFlight&&t.status==="running"),u=i.length>=gp;e.innerHTML=Ep(i,a,u)}}}function Ci(e,t){X({id:e.id,queuedMessages:t});var n=r.sessions.find(function(i){return i.id===e.id})||e;r.currentMessages=ze(n,Xe(n,n.output,!1)),Ve(!0),nt()}function Fp(e){var t=r.sessions.find(function(o){return o.id===r.selectedId});if(t){var n=Array.isArray(t.queuedMessages)?t.queuedMessages.slice():[];if(!(e<0||e>=n.length)){var i=n.slice(),a=n.slice(0,e).concat(n.slice(e+1));X({id:t.id,queuedMessages:a});var u=r.sessions.find(function(o){return o.id===t.id})||t;r.currentMessages=ze(u,Xe(u,u.output,!1)),Ve(!0),nt(),fetch("/api/structured-sessions/"+t.id+"/queued/"+e,{method:"DELETE",credentials:"same-origin"}).then(function(o){if(!o.ok)return o.json().catch(function(){return{}}).then(function(s){throw new Error(s&&s.error||"\u5220\u9664\u5931\u8D25")})}).catch(function(o){Ci(t,i),A(o&&o.message||"\u5220\u9664\u6392\u961F\u6D88\u606F\u5931\u8D25\u3002","error")})}}}function wp(){var e=r.sessions.find(function(i){return i.id===r.selectedId});if(e){var t=Array.isArray(e.queuedMessages)?e.queuedMessages.slice():[];if(t.length!==0){r.queueBarExpanded=!1,X({id:e.id,queuedMessages:[]});var n=r.sessions.find(function(i){return i.id===e.id})||e;r.currentMessages=ze(n,Xe(n,n.output,!1)),Ve(!0),nt(),fetch("/api/structured-sessions/"+e.id+"/queued",{method:"DELETE",credentials:"same-origin"}).then(function(i){if(!i.ok)return i.json().catch(function(){return{}}).then(function(a){throw new Error(a&&a.error||"\u6E05\u7A7A\u5931\u8D25")});A("\u5DF2\u6E05\u7A7A "+t.length+" \u6761\u6392\u961F\u6D88\u606F\u3002","info")}).catch(function(i){Ci(e,t),A(i&&i.message||"\u6E05\u7A7A\u6392\u961F\u6D88\u606F\u5931\u8D25\u3002","error")})}}}function Cp(e){if(!r.queueBarPromoting){var t=r.sessions.find(function(l){return l.id===r.selectedId});if(t){var n=Array.isArray(t.queuedMessages)?t.queuedMessages.slice():[];if(!(e<0||e>=n.length)){var i=n[e],a=n.slice(0,e).concat(n.slice(e+1)),u=n.slice(),o=!!(t.structuredState&&t.structuredState.inFlight&&t.status==="running");r.queueBarPromoting=!0,a.length===0&&(r.queueBarExpanded=!1),X({id:t.id,queuedMessages:a});var s=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Date.now().toString(36)+"-"+Math.random().toString(36).slice(2,10);A(o?"\u5DF2\u8BF7\u6C42\u4E2D\u65AD\u5F53\u524D\u56DE\u590D\uFF0C\u7ACB\u5373\u53D1\u9001\u8FD9\u6761\u3002":"\u5DF2\u7ACB\u5373\u53D1\u9001\u8FD9\u6761\u6D88\u606F\u3002","info"),fetch("/api/structured-sessions/"+t.id+"/queued/"+e+"/promote",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({expectedText:i,idempotencyKey:s})}).then(function(l){return l.ok?l.json():l.json().catch(function(){return{}}).then(function(d){throw new Error(d&&d.error||"\u7ACB\u5373\u53D1\u9001\u5931\u8D25")})}).then(function(l){if(l&&l.id&&(X(l),l.id===r.selectedId)){var d=r.sessions.find(function(f){return f.id===l.id})||l;r.currentMessages=ze(d,Xe(d,l.output,!1)),Ve(!0),nt()}r.queueBarPromoting=!1}).catch(function(l){r.queueBarPromoting=!1,Ci(t,u),A(l&&l.message||"\u7ACB\u5373\u53D1\u9001\u5931\u8D25\u3002","error")})}}}}function Bp(e,t){var n=r.sessions.find(function(c){return c.id===r.selectedId});if(n){var i=Array.isArray(n.queuedMessages)?n.queuedMessages.slice():[];if(!(i.length<=1)&&t){var a=t.parentElement;if(a){var u=Number(t.getAttribute("data-index")),o=Array.prototype.slice.call(a.children),s=o.map(function(c){return c.getBoundingClientRect()}),l=3;s.length>=2&&(l=Math.max(0,s[1].top-s[0].top-s[0].height)),e.preventDefault();try{t.setPointerCapture(e.pointerId)}catch{}if(navigator&&navigator.vibrate)try{navigator.vibrate(8)}catch{}r.queueBarDrag={pointerId:e.pointerId,handleEl:t,itemEl:t,listEl:a,siblings:o,rects:s,origIndex:u,targetIndex:u,startY:e.clientY,gap:l,queueSnapshot:i},t.classList.add("dragging"),o.forEach(function(c){c!==t&&c.classList.add("queue-bar-item-sliding")});var d=function(c){kp(c)},f=function(c){Ap(c)};r.queueBarDrag.moveHandler=d,r.queueBarDrag.upHandler=f,t.addEventListener("pointermove",d),t.addEventListener("pointerup",f),t.addEventListener("pointercancel",f)}}}}function Dp(e,t,n,i){for(var a=n.length,u=[],o=0;o<a;o++)u.push(o);u.splice(e,1),u.splice(t,0,e);for(var s=n[0].top,l=n[0].top,d=1;d<a;d++)n[d].top<l&&(l=n[d].top);for(var f={},c=l,v=0;v<a;v++){var h=u[v];f[h]=c,c+=n[h].height+i}return f}function kp(e){var t=r.queueBarDrag;if(!(!t||e.pointerId!==t.pointerId)){e.preventDefault();var n=e.clientY-t.startY;t.itemEl.style.transform="translateY("+n+"px)";for(var i=t.rects[t.origIndex].top+t.rects[t.origIndex].height/2+n,a=t.origIndex,u=0;u<t.rects.length;u++)if(u!==t.origIndex){var o=t.rects[u].top+t.rects[u].height/2;u<t.origIndex&&i<o?a=Math.min(a,u):u>t.origIndex&&i>o&&(a=Math.max(a,u))}if(a!==t.targetIndex){t.targetIndex=a;var s=Dp(t.origIndex,a,t.rects,t.gap);t.siblings.forEach(function(l,d){if(d!==t.origIndex){var f=s[d]-t.rects[d].top;l.style.transform=f?"translateY("+f+"px)":""}})}}}function Ap(e){var t=r.queueBarDrag;if(!(!t||e&&e.pointerId!==t.pointerId)){try{t.handleEl.releasePointerCapture(t.pointerId)}catch{}t.handleEl.removeEventListener("pointermove",t.moveHandler),t.handleEl.removeEventListener("pointerup",t.upHandler),t.handleEl.removeEventListener("pointercancel",t.upHandler);var n=t.origIndex,i=t.targetIndex,a=t.queueSnapshot;if(t.siblings.forEach(function(d){d.style.transform="",d.classList.remove("queue-bar-item-sliding")}),t.itemEl.classList.remove("dragging"),r.queueBarDrag=null,n===i){nt();return}for(var u=[],o=0;o<a.length;o++)u.push(o);u.splice(n,1),u.splice(i,0,n);var s=u.map(function(d){return a[d]}),l=r.sessions.find(function(d){return d.id===r.selectedId});if(!l){nt();return}X({id:l.id,queuedMessages:s}),nt(),fetch("/api/structured-sessions/"+l.id+"/queued",{method:"PATCH",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({order:u})}).then(function(d){if(!d.ok)return d.json().catch(function(){return{}}).then(function(f){throw new Error(f&&f.error||"\u6392\u5E8F\u5931\u8D25")})}).catch(function(d){Ci(l,a),A(d&&d.message||"\u8C03\u6574\u6392\u961F\u987A\u5E8F\u5931\u8D25\u3002","error")})}}function xp(){var e=document.getElementById("queue-bar-host");!e||e.__queueDelegated||(e.__queueDelegated=!0,e.addEventListener("click",function(t){var n=t.target,i=n&&n.closest?n.closest("[data-action]"):null;if(i&&e.contains(i)){var a=i.getAttribute("data-action");if(a==="drag")return;if(t.preventDefault(),t.stopPropagation(),a==="promote-item"){var u=i.closest(".queue-bar-item");u&&Cp(Number(u.getAttribute("data-index")))}else if(a==="delete"){var o=i.closest(".queue-bar-item");o&&Fp(Number(o.getAttribute("data-index")))}else a==="clear-all"&&wp();return}}),e.addEventListener("pointerdown",function(t){if(!(t.button!==void 0&&t.button!==0)){var n=t.target;if(!(n&&n.closest&&n.closest('[data-action="delete"], [data-action="promote-item"], [data-action="clear-all"], [data-action="expand"]'))){var i=n&&n.closest?n.closest(".queue-bar-item"):null;i&&Bp(t,i)}}}),e.addEventListener("keydown",function(t){t.key==="Escape"&&yp()&&(t.stopPropagation(),bp(!1))}))}function Is(e){if(!e||!Array.isArray(e.content))return 0;for(var t=0,n=0;n<e.content.length;n++){var i=e.content[n];if(i){if(typeof i.text=="string"&&(t+=i.text.length),typeof i.thinking=="string"&&(t+=i.thinking.length),typeof i.content=="string")t+=i.content.length;else if(Array.isArray(i.content))for(var a=0;a<i.content.length;a++){var u=i.content[a];u&&typeof u.text=="string"&&(t+=u.text.length)}if(i.input)try{t+=JSON.stringify(i.input).length}catch{}}}return t}function Sp(e,t){if(!e)return t;if(!t)return e;var n=Is(e),i=Is(t);return i>=n?t:Object.assign({},e,{usage:t.usage||e.usage})}function ze(e,t){var n=Array.isArray(t)?cr(t):[],i=Array.isArray(n)?n.slice():[];if(!e||e.sessionKind!=="structured")return i;if(e.structuredState&&e.structuredState.inFlight){var a=i[i.length-1];(!a||a.role!=="assistant")&&i.push({role:"assistant",content:[{type:"text",text:"",__processing:!0}]})}return i}function Ts(){var e=r.sessions.find(function(t){return t.id===r.selectedId});ti(e),dn()}function Ls(e){var t=Dt(),n=t&&t.provider==="codex";return e&&(e.errorCode==="SESSION_NOT_RUNNING"||e.errorCode==="SESSION_NO_PTY")?n?"Codex \u4F1A\u8BDD\u5DF2\u7ED3\u675F\uFF1B\u82E5\u5B58\u5728 Codex \u5386\u53F2\u4F1A\u8BDD\uFF0C\u5C06\u5728\u4F60\u4E0B\u6B21\u53D1\u9001\u6D88\u606F\u65F6\u81EA\u52A8\u6062\u590D\u3002":"\u4F1A\u8BDD\u5DF2\u7ED3\u675F\uFF1B\u82E5\u5B58\u5728 Claude \u5386\u53F2\u4F1A\u8BDD\uFF0C\u5C06\u5728\u4F60\u4E0B\u6B21\u53D1\u9001\u6D88\u606F\u65F6\u81EA\u52A8\u6062\u590D\u3002":e&&e.errorCode==="SESSION_NOT_FOUND"?"\u4F1A\u8BDD\u4E0D\u5B58\u5728\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u6216\u65B0\u5EFA\u4F1A\u8BDD\u3002":e&&e.message||(n?"Codex \u4F1A\u8BDD\u6682\u4E0D\u53EF\u7528\uFF1B\u82E5\u5B58\u5728 Codex \u5386\u53F2\u4F1A\u8BDD\uFF0C\u5C06\u81EA\u52A8\u5C1D\u8BD5\u6062\u590D\u3002":"\u4F1A\u8BDD\u6682\u4E0D\u53EF\u7528\uFF1B\u82E5\u5B58\u5728 Claude \u5386\u53F2\u4F1A\u8BDD\uFF0C\u5C06\u81EA\u52A8\u5C1D\u8BD5\u6062\u590D\u3002")}function Ms(e){var t=new Error(e&&e.error||"\u4F1A\u8BDD\u5DF2\u7ED3\u675F\u3002");return e&&typeof e=="object"&&(t.errorCode=e.errorCode||null,t.sessionId=e.sessionId||r.selectedId||null,t.sessionStatus=Object.prototype.hasOwnProperty.call(e,"sessionStatus")?e.sessionStatus:null),t}function qs(e){return e&&(e.errorCode==="SESSION_NOT_RUNNING"||e.errorCode==="SESSION_NO_PTY"||e.errorCode==="SESSION_NOT_FOUND")}function Ip(e,t){e&&X({id:e,status:t||"exited"})}function Zg(e){if(!e||!Array.isArray(e.messages)||e.messages.length<2)return!1;var t=e.messages.some(function(i){return i&&i.role==="user"&&Array.isArray(i.content)&&i.content.some(function(a){return a&&a.type==="text"&&typeof a.text=="string"&&a.text.trim().length>0})}),n=e.messages.some(function(i){return i&&i.role==="assistant"&&Array.isArray(i.content)&&i.content.some(function(a){return a&&a.type==="text"&&typeof a.text=="string"&&a.text.trim().length>0})});return t&&n}function Wa(e){return!!(e&&!ue(e)&&(e.provider==="claude"||e.provider==="codex")&&e.status!=="running"&&e.claudeSessionId)}function Tp(e,t){if(!e)return A("\u4F1A\u8BDD\u4E0D\u5B58\u5728\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u6216\u65B0\u5EFA\u4F1A\u8BDD\u3002","error"),Promise.resolve(null);if(e.status==="running")return Promise.resolve(e);if(!Wa(e)){var n=e&&e.provider==="codex"?"Codex":"Claude";return A("\u8BE5\u4F1A\u8BDD\u6CA1\u6709\u53EF\u6062\u590D\u7684 "+n+" \u5386\u53F2\u4E0A\u4E0B\u6587\uFF0C\u8BF7\u65B0\u5EFA\u4F1A\u8BDD\u3002","error"),Promise.resolve(null)}return Vs(e.id,t).then(function(i){return i?(X(i),pe(),Pn(i.id),gn(i.id).then(function(){return Pt(!0),i})):null})}function Lp(e,t){return[t,"\r"]}function Mp(e,t,n,i){var a=Array.isArray(e)?e.filter(function(o){return!!o}):[];if(a.length===0)return Promise.resolve();var u=typeof n=="number"?n:0;return a.reduce(function(o,s,l){return o.then(function(){return l>0&&u>0?new Promise(function(d){setTimeout(d,u)}).then(function(){return vt(s,l===a.length-1?t:void 0,i)}):vt(s,l===a.length-1?t:void 0,i)})},Promise.resolve())}var qp=5e3,Pp=100;function za(e){e&&(r.pendingMessages.length>=Pp&&r.pendingMessages.shift(),r.pendingMessages.push({input:e,at:Date.now()}))}function Op(e){var t=Array.isArray(e)?e.filter(function(n){return!!n}):[];t.forEach(function(n){za(n)})}function Hp(e){if(!(typeof e!="string"||!e)){var t=e.replace(/\x1b\[200~/g,"").replace(/\x1b\[201~/g,"");/(?:^|\n)\s*\/clear\s*(?:\r|\n|$)/.test(t)&&typeof r<"u"&&r&&(r.terminalOutputMarker=(r.terminalOutput&&r.terminalOutput.length)|0)}}function vt(e,t,n){return!e||!r.selectedId?Promise.resolve():(Hp(e),r.messageQueue.push(e),r.inputQueue=r.inputQueue.then(function(){return _p(e,t,n).finally(function(){var i=r.messageQueue.indexOf(e);i>-1&&r.messageQueue.splice(i,1)})}),r.inputQueue)}function _p(e,t,n){if(!r.selectedId)return Promise.resolve();var i=r.selectedId,a=n||r.currentView;return sp()?r.wsConnected?fetch("/api/sessions/"+i+"/input",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({input:e,view:a,shortcutKey:t||void 0})}).then(function(u){return u.ok?u.json():u.json().catch(function(){return{error:"\u8BF7\u6C42\u5931\u8D25"}}).then(function(o){var s=Ms(o);throw s.httpStatus=u.status,console.error("[wand] postInput: request failed",{status:u.status,errorCode:s.errorCode,message:s.message,sessionId:i}),qs(s)&&Ip(i,s.sessionStatus||"exited"),s})}).then(function(u){return u&&u.id&&(X(u),u.id===r.selectedId&&(u.messages&&u.messages.length>0&&(r.currentMessages=u.messages),Ve(!0))),u}):(za(e),console.log("[wand] postInput: WebSocket disconnected, queued message",{sessionId:r.selectedId,inputLength:e.length}),Promise.resolve()):r.wsConnected?(console.warn("[wand] postInput: session not running, skipping send",{sessionId:r.selectedId}),A("\u4F1A\u8BDD\u672A\u8FD0\u884C\uFF0C\u6B63\u5728\u7B49\u5F85\u81EA\u52A8\u6062\u590D\u540E\u91CD\u8BD5\u3002","info"),Promise.resolve()):(za(e),console.log("[wand] postInput: session not running, queued for reconnect",{sessionId:r.selectedId,inputLength:e.length}),Promise.resolve())}function eh(e){return vt(e)}function Dt(){return r.sessions.find(function(e){return e.id===r.selectedId})||null}function th(e){return e&&e.provider==="codex"?`
24
+ `:"\r"}function Va(){return!!r.selectedId&&r.currentView==="terminal"}function Np(e){return!(!r.terminal||!e||e!==r.selectedId||r.terminalSessionId&&r.terminalSessionId!==e)}function Ps(e){if(!r.terminalInteractive||!Va()||e.defaultPrevented||e.isComposing)return!1;var t=e.target;return t?!(document.documentElement.classList.contains("is-wand-embed-terminal")&&t.closest&&t.closest("#input-box")||t.closest&&t.closest("#mini-keyboard")||Kp(t)):!0}var jp={Esc:"escape",ArrowUp:"up",ArrowDown:"down",ArrowLeft:"left",ArrowRight:"right",Enter:"enter",Tab:"tab",Backspace:"backspace",Home:"home",End:"end",PageUp:"pageup",PageDown:"pagedown",Delete:"delete",Insert:"insert"," ":"space"},Rp={space:" ",tab:" ",shift_tab:"\x1B[Z",backspace:"\x7F",home:"\x1B[H",end:"\x1B[F",pageup:"\x1B[5~",pagedown:"\x1B[6~",delete:"\x1B[3~",insert:"\x1B[2~"},Os={" ":0,"[":27,"\\":28,"]":29,"^":30,_:31},Wp=400,zp=10,Vp=8,Bi=54,cn=8,Ua=[{key:"enter",label:"Enter"},{key:"ctrl_c",label:"Ctrl+C"},{key:"escape",label:"Esc"},{key:"shift_tab",label:"Shift+Tab"}],Up=new Set(["mini-keyboard-fab","mini-keyboard-toggle","terminal-interactive-toggle"]);function Kp(e){return!!(e&&Up.has(e.id))}var Jp=new Set(["ctrl","alt","shift"]);function Hs(e){return Jp.has(e)}function Yp(e){return Rp[e]||""}function Gp(e){var t=e.toLowerCase();return t>="a"&&t<="z"?String.fromCharCode(t.charCodeAt(0)-96):Object.prototype.hasOwnProperty.call(Os,t)?String.fromCharCode(Os[t]):""}function Qp(e){return jp[e.key]||e.key}function $p(e,t){return{ctrl:e.ctrlKey,alt:e.altKey,shift:e.shiftKey&&(t.length===1||t==="tab"),meta:e.metaKey}}function _s(e,t){e&&vt(e,t).catch(function(){})}function Xp(){$s()}function Ka(e){r.keyboardPopupOpen=!1,e!==!1&&ki(),tv()}function Zp(){Va()&&Mn(!r.terminalInteractive)}function Mn(e){var t=!!e&&Va();r.terminalInteractive!==t&&(r.terminalInteractive=t,t?(nv(),Ka(!1),Xp(),A("\u7EC8\u7AEF\u4EA4\u4E92\u6A21\u5F0F\u5DF2\u5F00\u542F","info")):(rv(),ki()),Ir())}function Ja(){var e=r.sessions.find(function(n){return n.id===r.selectedId}),t=!e||e.status!=="running"||r.currentView!=="terminal";if(t&&r.terminalInteractive){Mn(!1);return}(!e||r.currentView!=="terminal")&&r.keyboardPopupOpen&&(r.keyboardPopupOpen=!1),Ir()}function Ir(){var e=r.sessions.find(function(y){return y.id===r.selectedId}),t=ue(e),n=e&&e.provider==="codex",i=t?!!(e&&e.structuredState&&e.structuredState.inFlight):!!e&&e.status==="running",a=document.getElementById("input-box"),u=["terminal-interactive-toggle-top"];u.forEach(function(y){var C=document.getElementById(y);if(C){C.classList.toggle("active",r.terminalInteractive),C.classList.toggle("is-on",r.terminalInteractive),C.classList.toggle("hidden",t||r.currentView!=="terminal"||!e),C.setAttribute("aria-checked",r.terminalInteractive?"true":"false");var E=C.querySelector(".plus-popover-toggle-state");E&&(E.textContent=r.terminalInteractive?"\u5F00":"\u5173")}});var o=document.querySelector(".input-hint");o&&(o.classList.toggle("hidden",t?!0:r.currentView==="terminal"),!t&&e&&(o.textContent=n?"Enter \u53D1\u9001 \xB7 chat \u4E3A\u89E3\u6790\u89C6\u56FE\uFF0Cterminal \u4E3A\u539F\u59CB\u8F93\u51FA":"Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C"));var s=!t&&!i&&Wa(e);a&&(a.placeholder=wl(e,r.terminalInteractive),a.disabled=!t&&!!e&&!i&&!s,a.setAttribute("aria-disabled",a.disabled?"true":"false"),a.readOnly=!1,a.classList.toggle("is-terminal-passthrough",!!r.terminalInteractive&&!document.documentElement.classList.contains("is-wand-embed-terminal")));var l=document.querySelector(".input-composer");l&&r.terminalInteractive&&l.classList.contains("voice-mode")&&(l.classList.remove("voice-mode"),Ie.recording=!1,Na());var d=document.getElementById("send-input-button"),f=t&&i;d&&(d.disabled=!t&&!!e&&!i&&!s,d.setAttribute("title",t?f?"\u6392\u961F\u53D1\u9001\uFF08\u5F53\u524D\u56DE\u590D\u7ED3\u675F\u540E\u5904\u7406\uFF09":"\u53D1\u9001":n?i?"\u53D1\u9001\u7ED9 Codex":"Codex \u4F1A\u8BDD\u5DF2\u7ED3\u675F":!e||i||s?"\u53D1\u9001":"\u4F1A\u8BDD\u5DF2\u7ED3\u675F"),d.classList.toggle("queue-mode",f));var c=document.getElementById("stop-button");if(c){var v=Mu(e);c.classList.toggle("hidden",!v.active)}var h=document.getElementById("stop-button");if(h){var g=Mu(e);h.classList.toggle("hidden",!g.active)}var m=document.getElementById("output");m&&m.classList.toggle("interactive",!t&&r.terminalInteractive),ns()}function Di(){var e=window.getSelection&&window.getSelection();if(!e||e.isCollapsed)return!1;var t=document.getElementById("output");if(!t)return!1;var n=e.anchorNode;return n&&n.nodeType===3&&(n=n.parentNode),!!(n&&t.contains(n))}function Ya(e){if(Ps(e)&&!e.metaKey){var t=Qp(e);if(t){var n=$p(e,t);if(!Hs(t)&&!(n.ctrl&&t.length===1&&t.toLowerCase()==="c"&&Di())){var i=js(t,n);i&&(e.preventDefault(),_s(i,t))}}}}function ev(){r.terminal&&Bf(500)}function tv(){Fr()}function nh(e){e.preventDefault(),e.stopPropagation(),!(r.currentView!=="terminal"||!r.selectedId)&&(r.keyboardPopupOpen=!r.keyboardPopupOpen,Ir())}function Ns(){r.keyboardPopupOpen=!1,Ir()}function nv(){document.addEventListener("keydown",Ya,!0)}function rv(){document.removeEventListener("keydown",Ya,!0)}function js(e,t){var n=t||{ctrl:!1,alt:!1,shift:!1};if(Hs(e))return"";if(e==="tab"&&n.shift)return"\x1B[Z";var i=Yp(e);if(i)return i;if(e.indexOf("ctrl_")===0)return String.fromCharCode(e.charCodeAt(e.length-1)-96);var a=Tr(e);if(a)return a;if(!e)return"";var u=e.length===1?e:"";return u?(n.shift&&(u=u.toUpperCase()),n.ctrl?Gp(u):n.alt?"\x1B"+u:u):""}function ki(){r.modifiers.ctrl=!1,r.modifiers.alt=!1,r.modifiers.shift=!1,iv()}function iv(){var e=document.getElementById("mini-keyboard");e&&["ctrl","alt","shift"].forEach(function(t){var n=e.querySelector('[data-key="'+t+'"]');n&&n.classList.toggle("active",!!r.modifiers[t])})}function Tr(e){switch(e){case"yes":return"y\r";case"no":return"n\r";case"up":return"\x1B[A";case"down":return"\x1B[B";case"left":return"\x1B[D";case"right":return"\x1B[C";case"enter":return"\r";case"ctrl_c":return"";case"ctrl_d":return"";case"ctrl_l":return"\f";case"ctrl_u":return"";case"ctrl_k":return"\v";case"ctrl_w":return"";case"ctrl_z":return"";case"escape":return"\x1B";default:return""}}function av(){if(r.pendingMessages.length!==0){var e=Dt();if(ue(e)){r.pendingMessages=[];return}var t=Date.now(),n=[],i=0;r.pendingMessages.forEach(function(u){if(typeof u=="string"){n.push(u);return}if(!(!u||typeof u.input!="string")){if(t-(u.at||0)>qp){i++;return}n.push(u.input)}}),r.pendingMessages=[],i>0&&console.log("[wand] flushPendingMessages: dropped "+i+" stale input(s)");var a=Promise.resolve();n.forEach(function(u){a=a.then(function(){return uv(u).catch(function(){})})})}}function uv(e){if(!e||!r.selectedId)return Promise.resolve();var t=r.selectedId;return fetch("/api/sessions/"+t+"/input",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({input:e,view:r.currentView})}).then(function(n){return n.ok?n.json():n.json().catch(function(){return{error:"\u8BF7\u6C42\u5931\u8D25"}}).then(function(i){var a=Ms(i);if(a.httpStatus=n.status,qs(a))return console.log("[wand] sendInputDirect: session unavailable, dropping",{sessionId:t,errorCode:a.errorCode}),null;throw a})}).then(function(n){return n&&n.id&&(X(n),n.id===r.selectedId&&(n.messages&&n.messages.length>0&&(r.currentMessages=n.messages),Ve(!0))),n})}function Ga(){if(r.selectedId){var e=r.selectedId;Ma(Ee("stop.confirm.message"),{title:Ee("stop.confirm.title"),danger:!0,okLabel:Ee("stop.confirm.ok"),cancelLabel:Ee("stop.confirm.cancel")}).then(function(t){t&&r.selectedId===e&&fetch("/api/sessions/"+e+"/stop",{method:"POST",credentials:"same-origin"}).then(Ot)})}}function Qa(e){var t=document.querySelector('.session-item[data-session-id="'+e+'"]');t&&t.classList.add("deleting"),setTimeout(function(){fetch("/api/sessions/"+e,{method:"DELETE",credentials:"same-origin"}).then(function(n){return n.json()}).then(function(n){if(n&&n.error)throw new Error(n.error);return r.selectedId===e&&(r.selectedId=null,he()),Ot()}).catch(function(){t&&t.classList.remove("deleting");var n=document.getElementById("action-error");He(n,"\u65E0\u6CD5\u5220\u9664\u4F1A\u8BDD\u3002")})},250)}function Rs(e,t){t&&t.classList.add("deleting"),setTimeout(function(){fetch("/api/claude-history/"+encodeURIComponent(e),{method:"DELETE",credentials:"same-origin"}).then(function(n){return n.json()}).then(function(n){if(n&&n.error)throw new Error(n.error);r.claudeHistory=r.claudeHistory.filter(function(i){return i.claudeSessionId!==e}),delete r.selectedClaudeHistoryIds[e],pe()}).catch(function(){t&&t.classList.remove("deleting");var n=document.getElementById("action-error");He(n,"\u65E0\u6CD5\u5220\u9664\u4F1A\u8BDD\u3002")})},250)}function rh(e,t){Rs(e,t)}function ov(e,t,n){e&&fetch("/api/claude-history?cwd="+encodeURIComponent(e),{method:"DELETE",credentials:"same-origin"}).then(function(i){return i.json()}).then(function(i){if(i&&i.error)throw new Error(i.error);r.claudeHistory=r.claudeHistory.filter(function(a){return a.cwd!==e}),pe()}).catch(function(){Ws(n,!1);var i=document.getElementById("action-error");He(i,"\u65E0\u6CD5\u6E05\u7406\u8BE5\u76EE\u5F55\u7684\u5386\u53F2\u4F1A\u8BDD\u3002")})}function Ws(e,t){e.forEach(function(n){n.classList.toggle("deleting",t)})}function sv(e){return Array.prototype.slice.call(document.querySelectorAll('.claude-history-item[data-cwd="'+window.CSS.escape(String(e))+'"]'))}var zs=null,Lr=null;function Mr(){if(Lr){Lr.classList.remove("swiped");var e=Lr.querySelector(".session-item-content");e&&(e.style.transform=""),Lr=null}}function lv(e){zs=null,Lr=null}function dv(e,t,n){e==="claude"&&(r.preferredCommand=e,r.chatMode=mt(e,r.chatMode));var i=e==="claude"||e==="codex"?Or(e):"";return fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({command:e,cwd:t||"",mode:r.chatMode||r.config.defaultMode||"default",model:i||void 0,thinkingEffort:r.chatThinking||void 0}))}).then(function(a){return a.json()}).then(function(a){return a.error?(n&&He(n,a.error),null):(r.selectedId=a.id,he(),r.drafts[a.id]="",a)})}var $a=!1;function Vs(e,t){return!e||$a?Promise.resolve(null):($a=!0,fetch("/api/sessions/"+encodeURIComponent(e)+"/resume",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({mode:r.chatMode||r.config.defaultMode||"default"}))}).then(function(n){return n.json()}).then(function(n){return n.error?(t?He(t,n.error):A(n.error,"error"),null):(r.selectedId=n.id,he(),r.drafts[n.id]="",n)}).catch(function(n){var i=n&&n.message||"\u65E0\u6CD5\u6062\u590D\u4F1A\u8BDD\u3002";return t?He(t,i):A(i,"error"),null}).finally(function(){$a=!1}))}function ih(e,t){return e?fetch("/api/claude-sessions/"+encodeURIComponent(e)+"/resume",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({mode:r.chatMode||r.config.defaultMode||"default"}))}).then(function(n){return n.json()}).then(function(n){return n.error?(t?He(t,n.error):A(n.error,"error"),null):(r.claudeHistory=r.claudeHistory.filter(function(i){return i.claudeSessionId!==e}),r.selectedId=n.id,he(),r.drafts[n.id]="",n)}).catch(function(n){var i=n&&n.message||"\u65E0\u6CD5\u6309 Claude \u4F1A\u8BDD ID \u6062\u590D\u4F1A\u8BDD\u3002";return t?He(t,i):A(i,"error"),null}):Promise.resolve(null)}function fn(e){return!e||!e.id?Promise.resolve():(r.selectedId=e.id,he(),r.currentMessages=[],wr(),wt(),Sr(e.id),X(e),pe(),Pn(e.id),gn(e.id).then(function(){Pt(!0)}))}function Us(e){return Vs(e).then(function(t){return t?(t.claudeSessionId&&(t.provider==="codex"?r.codexHistory=r.codexHistory.filter(function(n){return n.claudeSessionId!==t.claudeSessionId}):r.claudeHistory=r.claudeHistory.filter(function(n){return n.claudeSessionId!==t.claudeSessionId})),fn(t).then(function(){return t})):null})}function ah(e,t,n){return dv(e,t,n).then(function(i){return i?fn(i).then(function(){return i}):null})}function uh(e){var t=document.getElementById("welcome-input");if(t){t.placeholder="\u6B63\u5728\u601D\u8003\u2026",t.disabled=!0;var n=r.chatMode||"managed",i=$e(),a=rt(),u=Or(a);fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({command:a,cwd:i,mode:n,initialInput:e,model:u||void 0,thinkingEffort:r.chatThinking||void 0}))}).then(function(o){return o.json()}).then(function(o){return o.error?(A(o.error,"error"),t.placeholder="\u8F93\u5165\u6D88\u606F",t.disabled=!1,null):fn(o)}).catch(function(o){A(o&&o.message||"\u65E0\u6CD5\u542F\u52A8\u4F1A\u8BDD\u3002","error"),t.placeholder="\u8F93\u5165\u6D88\u606F",t.disabled=!1}).finally(function(){t.placeholder="\u8F93\u5165\u6D88\u606F",t.disabled=!1})}}function oh(e,t,n){var i=r.chatMode||"managed",a=$e(),u=rt(),o=Or(u);fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({command:u,cwd:a,mode:i,initialInput:e||void 0,model:o||void 0,thinkingEffort:r.chatThinking||void 0}))}).then(function(s){return s.json()}).then(function(s){return s.error?(A(s.error,"error"),null):(t&&(t.value=""),n&&(n.value=""),fn(s))}).catch(function(s){A(s&&s.message||"\u65E0\u6CD5\u542F\u52A8\u4F1A\u8BDD\u3002","error")})}function cv(e){e.disabled=!0,Us(e.dataset.sessionId).finally(function(){e.disabled=!1})}function fv(e){var t=e.dataset.claudeSessionId,n=e.dataset.cwd;t&&(e.disabled=!0,Ai(t,n).then(function(i){i&&i.id&&(r.codexHistory=r.codexHistory.filter(function(a){return a.claudeSessionId!==t}),r.selectedId=i.id,he(),r.drafts[i.id]="",fn(i).then(function(){_t()}))}).finally(function(){e.disabled=!1}))}function Ai(e,t){return fetch("/api/codex-sessions/"+encodeURIComponent(e)+"/resume",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({mode:r.chatMode||r.config&&r.config.defaultMode||"default",cwd:t}))}).then(function(n){return n.json()}).then(function(n){return n.error?(A(n.error,"error"),null):n}).catch(function(n){return A(n&&n.message||"\u65E0\u6CD5\u6062\u590D\u4F1A\u8BDD\u3002","error"),null})}function pv(e){var t=e.dataset.claudeSessionId;t&&An("\u786E\u8BA4\u5220\u9664\u8FD9\u6761 Codex \u4F1A\u8BDD\u5417\uFF1F",{title:"\u5220\u9664\u4F1A\u8BDD"}).then(function(n){if(n){var i=e.closest(".session-item");i&&(i.style.opacity="0.5"),fetch("/api/codex-history/"+encodeURIComponent(t),{method:"DELETE",credentials:"same-origin"}).then(function(a){return a.json()}).then(function(a){a&&a.ok?(r.codexHistory=r.codexHistory.filter(function(u){return u.claudeSessionId!==t}),pe()):i&&(i.style.opacity="1")}).catch(function(){i&&(i.style.opacity="1")})}})}function vv(e){var t=e.dataset.claudeSessionId,n=e.dataset.cwd;t&&(e.disabled=!0,xi(t,n).then(function(i){i&&i.id&&(r.claudeHistory=r.claudeHistory.filter(function(a){return a.claudeSessionId!==t}),r.selectedId=i.id,he(),r.drafts[i.id]="",fn(i).then(function(){_t()}))}).finally(function(){e.disabled=!1}))}function xi(e,t){return fetch("/api/claude-sessions/"+encodeURIComponent(e)+"/resume",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({mode:r.chatMode||r.config&&r.config.defaultMode||"default",cwd:t}))}).then(function(n){return n.json()}).then(function(n){return n.error?(A(n.error,"error"),null):n}).catch(function(n){return A(n&&n.message||"\u65E0\u6CD5\u6062\u590D\u4F1A\u8BDD\u3002","error"),null})}function qr(){return"ontouchstart"in window||navigator.maxTouchPoints>0}function Pt(e){if(!r.terminalInteractive){var t=document.getElementById("input-box");!t||!r.selectedId||document.activeElement!==t&&(e&&qr()||Xa(t))}}function sh(){var e=document.querySelector(".chat-messages");e&&(e.scrollTop=0)}function Ks(){var e=document.querySelector(".input-panel");e&&e.style.removeProperty("--keyboard-offset")}function Js(){var e=document.querySelector(".input-panel");e&&e.style.removeProperty("--keyboard-offset")}function Si(e){if(e){var t=e.selectionStart,n=e.selectionEnd;Ii(e),typeof t=="number"&&typeof n=="number"&&e.setSelectionRange(t,n)}}function Ys(e){!e||e.dataset.touchScrollBound==="true"||(e.dataset.touchScrollBound="true",e.addEventListener("touchstart",function(){e.scrollHeight<=e.clientHeight+1||(e.scrollTop<=0?e.scrollTop=1:e.scrollTop+e.clientHeight>=e.scrollHeight&&(e.scrollTop=Math.max(1,e.scrollHeight-e.clientHeight-1)))},{passive:!0}))}function Gs(e){e&&(Ct(e),Si(e))}function mv(e){var t=e&&e.target?e.target:document.getElementById("input-box");t&&(Ks(),Gs(t))}function gv(e){var t=e&&e.target?e.target:document.getElementById("input-box");Js(),Go(2200,t);var n=[80,200,380,620,900];n.forEach(function(i,a){setTimeout(function(){Un(!1),a===1&&qr()&&(Qe("keyboard-blur",{forceReplay:!0}),pt("keyboard"))},i)})}function hv(e){e&&(e.setSelectionRange(e.value.length,e.value.length),Si(e))}function Xa(e){e&&(e.focus({preventScroll:!0}),hv(e))}function yv(e){Ys(e),Gs(e)}function bv(e){Xa(e)}function lh(e){Ks(),Si(e)}function Ev(){Js()}function Fv(e){Si(e)}function dh(e){bv(e)}function wv(e){yv(e)}function ch(){Ev()}function fh(e){Fv(e)}function Cv(e,t){if(!e||!t||document.activeElement!==t)return!1;var n=window.innerHeight-e.height-e.offsetTop;if(n<=50)return!1;var i=t.getBoundingClientRect();return i.bottom>e.height-12}function Ii(e){if(e){var t=e.scrollHeight>e.clientHeight+1;if(!t){e.scrollTop=0;return}e.scrollTop=e.scrollHeight}}function Qs(){if(r.terminalInteractive){$s();return}if(!qr()){var e=document.getElementById("input-box");!e||!r.selectedId||document.activeElement===e||Xa(e)}}function $s(){var e=document.getElementById("output");e&&(e.setAttribute("tabindex","0"),e.focus(),r.terminal&&r.terminal.focus&&r.terminal.focus())}function Bv(){var e=document.querySelector(".input-panel"),t=document.querySelector(".chat-messages");if("virtualKeyboard"in navigator){var n=navigator.virtualKeyboard;n.addEventListener("geometrychange",function(){e&&e.style.removeProperty("padding-bottom")})}var i=document.getElementById("output");i&&i.addEventListener("click",function(){Qs()}),t&&t.addEventListener("click",function(a){var u=a.target;u.tagName!=="A"&&u.tagName!=="BUTTON"&&!u.closest("button")&&!u.closest("[data-tool-toggle]")&&Qs()}),document.addEventListener("click",function(a){if(qr()){var u=document.getElementById("input-box");if(!(!u||document.activeElement!==u)){var o=a.target;!o||typeof o.closest!="function"||o.closest(".input-panel")||o.closest("#mini-keyboard")||o.closest("#mini-keyboard-fab")||o.closest("#mini-keyboard-toggle")||o.closest("#terminal-interactive-toggle")||o.closest(".wand-joystick-root")||u.blur()}}},!0)}function Za(){try{window.scrollTo(0,0)}catch{}document.scrollingElement&&(document.scrollingElement.scrollTop=0),document.documentElement&&(document.documentElement.scrollTop=0),document.body&&(document.body.scrollTop=0)}function Ve(e){r.renderPending&&!e||(r.renderPending=!0,e?(Ti(!0),r.renderPending=!1):requestAnimationFrame(function(){Ti(!1),r.renderPending=!1}))}r.chatRenderTimer=null;function eu(e){if(!(r.chatRenderTimer&&!e)){if(r.chatRenderTimer&&clearTimeout(r.chatRenderTimer),e){r.chatRenderTimer=null,Ve();return}try{window.__scheduleChatRender=function(){eu(!0)}}catch{}var t=r.sessions.find(function(a){return a.id===r.selectedId}),n=t&&t.status==="running"&&t.sessionKind!=="structured",i=n?os:ss;r.chatRenderTimer=setTimeout(function(){r.chatRenderTimer=null;var a=r.sessions.find(function(u){return u.id===r.selectedId});a&&(r.currentMessages=ze(a,Xe(a,a.output,!0))),Ve()},i)}}function Dv(e,t){if(!e||!t||t.length===0)return[];function n(C){return C.replace(/\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])/g,"")}for(var i=n(e),a=[],u=[],o=0;o<t.length;o++)if(t[o].role==="user"){var s="",l=t[o].content;if(typeof l=="string")s=l;else if(Array.isArray(l)){for(var d=0;d<l.length;d++)if(l[d].type==="text"){s=l[d].text;break}}s&&u.push({text:s,index:o})}for(var f=0,o=0;o<u.length;o++){var c=u[o],v=i.indexOf("\u276F "+c.text,f);if(v===-1&&(v=i.indexOf(`
25
25
  \u276F `+c.text,f),v!==-1&&(v+=1)),v>f){for(var h=i.substring(f,v),g=h.split(`
26
26
  `),m=[],d=0;d<g.length;d++){var y=g[d].trim();!y||y.startsWith("\u2500\u2500\u2500\u2500")||y==="\u276F"||y==="?"||y===""||y.includes("Claude Code v")||y.includes("Opus")&&y.includes("with")||y.includes("Sonnet")&&y.includes("with")||y.includes("API Usage")||y.includes("Billing")||y.includes("for shortcuts")||y.includes("/effort")||y.match(/^[▸▐▝▘▗▖█▌▍▎▏▔▁▂▃▄▅▆▇██]/)||y.match(/^[▸▐▝▘▗▖█▌▍▎▏▔▁▂▃▄▅▆▇██]{3,}/)||y.length>3&&m.push(y)}m.length>0&&a.push({beforeMessage:c.index,content:m.join(`
27
- `)})}f=v+c.text.length+2}return a}function Za(e){if(!e)return null;var t=e.querySelector(".chat-messages");return t||(t=document.createElement("div"),t.className="chat-messages",e.appendChild(t),t)}function Qs(e,t){var n=Za(e);return n?(n.innerHTML=t,jt(n),sr(),Ge(),n):null}function Ti(e){var t=document.getElementById("chat-output");if(!t)return;var n=r.sessions.find(function($){return $.id===r.selectedId});if(!n){r.lastRenderedEmpty!=="none"&&(Qs(t,'<div class="empty-state"><strong>\u672A\u9009\u62E9\u4F1A\u8BDD</strong><br>\u70B9\u51FB\u4E0A\u65B9\u300C\u65B0\u5BF9\u8BDD\u300D\u5F00\u59CB\u4F60\u7684\u7B2C\u4E00\u6B21\u5BF9\u8BDD\u3002</div>'),r.lastRenderedEmpty="none",r.lastRenderedMsgCount=0);return}var i=r.currentMessages,a=Xv(i);if(nu=Zv(i),i.length===0){if(r.lastRenderedEmpty!=="empty"){var u="";ue(n)&&(u='<div class="empty-state-trio-wrap"><div class="empty-state-trio-hint">\u9ED8\u8BA4\u4F1A\u6309\u4EE5\u4E0B\u8BBE\u7F6E\u53D1\u9001\uFF0C\u53EF\u70B9\u51FB\u8C03\u6574\uFF1A</div>'+Dl(n,{kind:"dropdown"})+"</div>"),Qs(t,'<div class="empty-state"><strong>\u5BF9\u8BDD\u5DF2\u5F00\u59CB</strong><br>\u5728\u4E0B\u65B9\u8F93\u5165\u6846\u53D1\u9001\u6D88\u606F\uFF0CClaude \u4F1A\u81EA\u52A8\u56DE\u590D\u3002</div>'+u),r.lastRenderedEmpty="empty",r.lastRenderedMsgCount=0}Mu(null,n),tu([]);return}var o=i.length;o>r.chatRenderedCount&&(r.chatRenderedCount=o);var s=Math.max(0,o-r.chatRenderedCount),l=s>0?i.slice(s):i,d=typeof n.messageOffset=="number"&&n.messageOffset>0,f=s>0||d,c=l.length,v=n.output?n.output.length:0;if(n.messages&&n.messages.length>0){for(var h=0,g=0,m=0;m<n.messages.length;m++){var y=n.messages[m].content;if(y)if(Array.isArray(y)){h+=y.length;for(var C=0;C<y.length;C++){var E=y[C];E.text&&(g+=E.text.length),E.thinking&&(g+=E.thinking.length),E.content&&(g+=E.content.length),E.id&&(g+=E.id.length),E.tool_use_id&&(g+=E.tool_use_id.length),E.description&&(g+=E.description.length),E.input&&(g+=JSON.stringify(E.input).length)}if(n.messages[m].usage){var B=n.messages[m].usage;g+=(B.inputTokens||0)+(B.outputTokens||0)+(B.cacheReadInputTokens||0)+(B.cacheCreationInputTokens||0)+(B.reasoningOutputTokens||0)+Math.round((B.totalCostUsd||0)*1e6)+(B.estimated===!0?1:0)}}else h+=1,g=String(y).length}v=c*1e5+h*1e3+g}var D=e||c!==r.lastRenderedMsgCount;if(!D&&c===r.lastRenderedMsgCount&&v===r.lastRenderedHash){var F=t.querySelector(".chat-messages");F&&Mu(F,n),tu(i);return}var I=r.lastRenderedHash,L=r.lastRenderedMsgCount;if(r.lastRenderedMsgCount=c,r.lastRenderedHash=v,F=Za(t),!F)return;var H=aa(F),U=!r.chatInitialRenderDone,x=F.querySelectorAll(".chat-message:not(.system-info)").length,k=D||x===0||c!==x;function T(){for(var $=Cv(n.output,l),fe="",Ce=l.slice().reverse(),Be=l.length,ve=0;ve<Ce.length;ve++){for(var Fe=Ce[ve],tt=Be-1-ve,dt=tt+s,it=null,Ne=0;Ne<$.length;Ne++)if($[Ne].beforeMessage===tt){it=$[Ne];break}it&&(fe+='<div class="chat-message system-info"><div class="system-info-card"><div class="system-info-header">\u2139\uFE0F \u7CFB\u7EDF\u4FE1\u606F</div><div class="system-info-content">'+p(it.content)+"</div></div></div>"),fe+=iu(Fe,M[dt]||null,dt,a)}if(f){var Rt=s>0?"\u52A0\u8F7D\u66F4\u65E9\u7684 "+Math.min(r.chatPageSize,s)+" \u6761\u6D88\u606F":"\u52A0\u8F7D\u66F4\u65E9\u7684\u6D88\u606F";fe+='<div class="chat-load-more" id="chat-load-more-sentinel"><button class="chat-load-more-btn" type="button">'+Rt+"</button></div>"}var Ye=-1,De=0;if(x>0&&!H)for(var Oe=F.getBoundingClientRect().top,te=F.querySelectorAll(".chat-message:not(.system-info)"),we=0;we<te.length;we++){var w=te[we].getBoundingClientRect();if(w.bottom>=Oe){var at=te[we].getAttribute("data-msg-index");at!=null&&(Ye=parseInt(at,10),De=w.top-Oe);break}}if(F.innerHTML=fe,(function(){for(var Wt=F.querySelectorAll(".chat-message:not(.system-info)"),zt=Wt.length,Te=0;Te<zt;Te++)Wt[Te].setAttribute("data-msg-index",String(s+zt-1-Te))})(),jt(F),L===0&&!r.chatInitialRenderDone)F.scrollTop=0,r.chatStickToBottom=!0,Cn({removeDivider:!0}),r.chatInitialRenderDone=!0;else if(L===0&&r.chatStickToBottom)F.scrollTop=0;else if(H)F.scrollTop=0;else if(Ye>=0){var kt=F.querySelector('.chat-message[data-msg-index="'+Ye+'"]');if(kt){var ut=F.getBoundingClientRect().top,Zt=kt.getBoundingClientRect(),At=Zt.top-ut-De;Math.abs(At)>.5&&(r.chatIsProgrammaticScroll=!0,F.scrollTop+=At,requestAnimationFrame(function(){r.chatIsProgrammaticScroll=!1}))}}$s(F),sr(),da(F),requestAnimationFrame(function(){ua(F),Ge(),Fd()})}var M={};if((function(){for(var $={inputTokens:0,outputTokens:0,cacheReadInputTokens:0,cacheCreationInputTokens:0,reasoningOutputTokens:0,totalCostUsd:0,estimated:!1},fe=!1,Ce=-1,Be=0;Be<i.length;Be++){var ve=i[Be];if(ve.role==="user")Ce>=0&&fe&&(M[Ce]=$),$={inputTokens:0,outputTokens:0,cacheReadInputTokens:0,cacheCreationInputTokens:0,reasoningOutputTokens:0,totalCostUsd:0,estimated:!1},fe=!1,Ce=-1;else if(ve.role==="assistant"&&ve.usage){var Fe=ve.usage;fe=!0,$.inputTokens+=Fe.inputTokens||0,$.outputTokens+=Fe.outputTokens||0,$.cacheReadInputTokens+=Fe.cacheReadInputTokens||0,$.cacheCreationInputTokens+=Fe.cacheCreationInputTokens||0,$.reasoningOutputTokens+=Fe.reasoningOutputTokens||0,$.totalCostUsd+=Fe.totalCostUsd||0,$.estimated=$.estimated||Fe.estimated===!0,Ce=Be}else ve.role==="assistant"&&(Ce=Be)}Ce>=0&&fe&&(M[Ce]=$)})(),k)T();else if(c>x){var Y=l.slice(x);Y.reverse();for(var z=document.createDocumentFragment(),Q=[],le=[],ee=s+x,Z=0;Z<Y.length;Z++){var q=document.createElement("div"),P=s+x+(Y.length-1-Z);q.innerHTML=iu(Y[Z],M[P]||null,P,a);var N=q.firstElementChild;N&&(N.classList.add("animate-in"),N.setAttribute("data-msg-index",String(P)),Q.push(N),le.push(P),z.appendChild(N))}F.insertBefore(z,F.firstChild),sr(),$s(F),da(F),H?requestAnimationFrame(function(){F.isConnected&&Math.abs(F.scrollTop)>1&&(r.chatIsProgrammaticScroll=!0,F.scrollTop=0,requestAnimationFrame(function(){r.chatIsProgrammaticScroll=!1})),Cn({removeDivider:!0}),Ge()}):(r.chatUnreadStartIndex<0&&(r.chatUnreadStartIndex=ee),r.chatUnreadCount+=Q.length,ua(F),Ge())}else if(c===x&&v!==I){for(var G=Array.from(F.querySelectorAll(".chat-message:not(.system-info)")),J=l.slice().reverse(),ne=!1,de=Math.min(4,J.length,G.length),re=0;re<de;re++){var ie=G[re],qe=document.createElement("div"),ge=s+J.length-1-re;qe.innerHTML=iu(J[re],M[ge]||null,ge,a);var ce=qe.firstElementChild;if(ce){if(ie.innerHTML!==ce.innerHTML||ie.className!==ce.className)F.replaceChild(ce,ie),kv(ce),ne=!0;else if(re>0)break}}if(!ne&&J.length>de&&T(),ne){sr(),da(F),requestAnimationFrame(function(){H&&F.isConnected&&Math.abs(F.scrollTop)>1&&(r.chatIsProgrammaticScroll=!0,F.scrollTop=0,requestAnimationFrame(function(){r.chatIsProgrammaticScroll=!1})),ua(F),Ge()});var R=F.querySelector(".chat-message"),gt=F.querySelectorAll(".tool-use-card, .inline-diff[data-expand-key]"),_e=null;gt.forEach(function($){var fe=la($);yt(fe)===null&&($.classList.contains("ask-user")&&!$.classList.contains("ask-user-answered")||(R&&R.contains($)?_e?$.classList.add("collapsed"):_e=$:$.classList.add("collapsed")))})}}else c<x&&T();Af(F),$v(F,n),Uv(t,F,i,U),Mu(F,n),tu(i)}var eu=!1;document.addEventListener("click",function(e){var t=e.target;if(!(!t||!(t instanceof Element))){var n=t.closest("#todo-progress-toggle");if(n){e.preventDefault(),e.stopPropagation(),eu=!eu;var i=document.getElementById("todo-progress"),a=document.getElementById("todo-progress-body");i&&a&&(eu?(i.classList.add("expanded"),a.classList.add("expanded")):(i.classList.remove("expanded"),a.classList.remove("expanded"))),Li()}}});function Li(){var e=document.querySelector("#chat-output .chat-messages"),t=document.getElementById("todo-progress-body");if(!(!e||!t)){var n=e,i=!t.classList.contains("hidden"),a=t.classList.contains("expanded"),u=t.offsetHeight;i&&a&&u>0?n.style.paddingBottom=u+8+"px":n.style.paddingBottom=""}}function Bv(e){if(typeof e=="string")return e;if(Array.isArray(e)){for(var t=[],n=0;n<e.length;n++){var i=e[n];typeof i=="string"?t.push(i):i&&typeof i.text=="string"&&t.push(i.text)}return t.join("")}return""}function Dv(e,t){for(var n={},i=t;i<e.length;i++){var a=e[i];if(!(!a||!Array.isArray(a.content)))for(var u=0;u<a.content.length;u++){var o=a.content[u];o&&o.type==="tool_result"&&o.tool_use_id&&(n[o.tool_use_id]=Bv(o.content))}}for(var s={},l=0,d=0,f=!1,c=t;c<e.length;c++){var v=e[c];if(!(!v||!Array.isArray(v.content)))for(var h=0;h<v.content.length;h++){var g=v.content[h];if(!(!g||g.type!=="tool_use")){var m=g.input||{};if(g.name==="TaskCreate"){f=!0,d++;var y=n[g.id]||"",C=y.match(/#(\d+)/),E=C?C[1]:String(d);s[E]={id:E,content:m.subject||"",activeForm:m.activeForm||"",status:"pending",order:l++}}else if(g.name==="TaskUpdate"){f=!0;var B=String(m.taskId),D=s[B];D||(D={id:B,content:"",activeForm:"",status:"pending",order:l++},s[B]=D),m.status&&(D.status=m.status),m.subject&&(D.content=m.subject),m.activeForm&&(D.activeForm=m.activeForm)}}}}if(!f)return null;var F=[];for(var I in s)Object.prototype.hasOwnProperty.call(s,I)&&s[I].status!=="deleted"&&F.push(s[I]);return F.sort(function(L,H){return L.order-H.order}),F.length?F:null}function tu(e){for(var t=0,n=e.length-1;n>=0;n--)if(e[n]&&e[n].role==="user"){t=n+1;break}for(var i=null,a=e.length-1;a>=t;a--){var u=e[a];if(!(!u.content||!Array.isArray(u.content))){for(var o=u.content.length-1;o>=0;o--){var s=u.content[o];if(s.type==="tool_use"&&s.name==="TodoWrite"&&s.input&&s.input.todos){i=s.input.todos;break}}if(i)break}}i||(i=Dv(e,t));var l=document.getElementById("todo-progress"),d=document.getElementById("todo-progress-body");if(l){if(!i||i.length===0){l.classList.add("hidden"),d&&d.classList.add("hidden"),Li();return}for(var f=0,c=0,v="",h=0;h<i.length;h++)i[h].status==="completed"&&f++,i[h].status==="in_progress"&&(c++,v||(v=i[h].activeForm||i[h].content||""));var g=f===i.length,m=r.sessions.find(function(z){return z.id===r.selectedId}),y=!!m&&m.status==="running";if(!y||g){l.classList.add("hidden"),d&&d.classList.add("hidden"),Li();return}l.classList.remove("hidden"),l.classList.remove("all-done"),d&&d.classList.remove("hidden");var C=document.getElementById("todo-progress-counter");C&&(C.textContent=f+"/"+i.length);var E=document.getElementById("todo-progress-task");if(E){if(!v){for(var B=0;B<i.length;B++)if(i[B].status==="pending"&&(i[B].activeForm||i[B].content)){v=i[B].activeForm||i[B].content;break}}E.textContent=v||"\u51C6\u5907\u4E2D\u2026"}var D=i.length>0?f/i.length:0,F=document.getElementById("todo-progress-ring");F&&F.style.setProperty("--progress",D.toFixed(3));var I=document.getElementById("todo-progress-fill");I&&I.style.setProperty("--progress",D.toFixed(3));var L=document.getElementById("todo-progress-list");if(L){for(var H="",U=0;U<i.length;U++){var x=i[U],k=x.status||"pending",T=k==="in_progress"?"active":k==="completed"?"done":"",M=k==="in_progress"?"active":k==="completed"?"done":"pending",Y=k==="completed"?"\u2713":k==="in_progress"?"\u203A":"\u25CB";H+='<li class="todo-progress-item '+T+'"><span class="todo-item-icon '+M+'">'+Y+"</span><span>"+p(x.content||"")+"</span></li>"}L.innerHTML=H}r.selectedId&&Oa(r.selectedId),Li()}}function kv(e){e.querySelectorAll(".code-copy").forEach(function(t){t.addEventListener("click",function(){var n=t.closest(".code-block"),i=n?n.querySelector("code"):null;i&&Ur(i.textContent||"",null,function(){t.textContent="Copied!",t.classList.add("copied"),setTimeout(function(){t.textContent="Copy",t.classList.remove("copied")},2e3)})})})}function $s(e){e.querySelectorAll(".code-copy").forEach(function(t){var n=t.cloneNode(!0);t.parentNode.replaceChild(n,t),n.addEventListener("click",function(){var i=n.closest(".code-block"),a=i?i.querySelector("code"):null;a&&Ur(a.textContent||"",null,function(){n.textContent="Copied!",n.classList.add("copied"),setTimeout(function(){n.textContent="Copy",n.classList.remove("copied")},2e3)})})}),Av(e)}var dh={timer:null,activeBtn:null};function Av(e){var t=window.matchMedia("(pointer: coarse)").matches;t&&e.querySelectorAll(".chat-message").forEach(function(n){if(!n.querySelector(".msg-copy-btn")){var i=n.querySelector(".chat-message-bubble");if(i){var a=document.createElement("button");a.className="msg-copy-btn",a.textContent="\u590D\u5236",a.addEventListener("click",function(u){u.stopPropagation();var o=i.innerText||i.textContent||"";Ur(o.trim(),null,function(){a.textContent="\u5DF2\u590D\u5236",a.classList.add("copied"),setTimeout(function(){a.textContent="\u590D\u5236",a.classList.remove("copied"),a.classList.remove("visible")},1500)})}),n.appendChild(a)}}})}(function(){var t=window.matchMedia("(pointer: coarse)").matches;if(t){var n=null,i=0;document.addEventListener("touchstart",function(a){var u=a.target.closest(".chat-message");if(u){var o=u.querySelector(".chat-message-bubble");o&&(i=a.touches[0].clientY,n=setTimeout(function(){var s=u.querySelector(".msg-copy-btn");s&&(document.querySelectorAll(".msg-copy-btn.visible").forEach(function(l){l.classList.remove("visible")}),s.classList.add("visible"))},500))}},{passive:!0}),document.addEventListener("touchmove",function(a){n&&Math.abs(a.touches[0].clientY-i)>10&&(clearTimeout(n),n=null)},{passive:!0}),document.addEventListener("touchend",function(){n&&(clearTimeout(n),n=null)},{passive:!0}),document.addEventListener("click",function(a){a.target.closest(".msg-copy-btn")||document.querySelectorAll(".msg-copy-btn.visible").forEach(function(u){u.classList.remove("visible")})})}})();function xv(e){if(!e)return!1;var t=String(e).trim();return t?!!(t.indexOf("\u2500\u2500\u2500\u2500")===0||t==="\u276F"||t==="\u203A"||/^[╭╰│┌└┐┘├┤┬┴┼─═]{2,}$/.test(t)||/^[▁▂▃▄▅▆▇█▔▕▏▐]+$/.test(t)||t.indexOf("esc to interrupt")!==-1||t.indexOf("Claude Code v")!==-1||/^Sonnet\b/.test(t)||t.indexOf("Failed to install Anthropic")!==-1||t.indexOf("Claude Code has switched")!==-1||t.indexOf("? for shortcuts")!==-1||t.indexOf("Claude is waiting")!==-1||t.indexOf("[wand]")!==-1||t.indexOf("0;")===0||t.indexOf("9;")===0||t.indexOf("ctrl+g")!==-1||t.indexOf("/effort")!==-1||/^Using .* for .* session/.test(t)||t.indexOf("Press ")===0&&t.indexOf(" for")!==-1||t.indexOf("type ")===0&&t.indexOf(" to ")!==-1||t.indexOf("auto mode is unavailable")!==-1||/MCP server.*failed/i.test(t)||t.indexOf("Germinating")!==-1||t.indexOf("Doodling")!==-1||t.indexOf("Brewing")!==-1||t.indexOf("Permissions")!==-1&&t.indexOf("mode")!==-1||t.indexOf("\u25CF")===0&&t.indexOf("\xB7")!==-1||t.indexOf("[>")===0||t.indexOf("[<")===0||t.indexOf("Captured Claude session ID")!==-1||/^>_\s*OpenAI Codex\b/.test(t)||/^OpenAI Codex\b/i.test(t)||/^(model|directory):\s+/i.test(t)||/^(tip|context):\s+/i.test(t)||/^work(tree|space):\s+/i.test(t)||/^(approvals?|sandbox|provider|session id):\s+/i.test(t)||/^(thinking|working)(\.\.\.|…)?$/i.test(t)||/^[•◦·]\s+Working\b/i.test(t)||/^[•◦·]\s+(Running|Planning|Applying|Reading|Searching)\b/i.test(t)||/^[•◦·]\s+(Inspecting|Reviewing|Summarizing|Editing|Updating|Writing)\b/i.test(t)||/^[•◦·]\s+Completed\b/i.test(t)||/^(ctrl|enter|tab|shift|esc|alt)\+/i.test(t)||/\b(open|close|toggle) (chat|terminal)\b/i.test(t)||/\b(approve|deny)\b.*\b(permission|approval)\b/i.test(t)||/^(use|press) .* (to|for) .*/i.test(t)||/^(?:token|context window|remaining context|conversation):\s+/i.test(t)||/^(?:cwd|path):\s+\//i.test(t)||/^[<>│┆╎].*[<>│┆╎]$/.test(t)&&t.length<8):!1}function Sv(e){return String(e||"").replace(/\x1b\][^\x07]*(\x07|\x1b\\)/g,"").replace(/\x1b\[(\d+)C/g,function(t,n){return" ".repeat(Number(n)||1)}).replace(/\x1b\[[0-9;?]*[AB]/g,`
27
+ `)})}f=v+c.text.length+2}return a}function tu(e){if(!e)return null;var t=e.querySelector(".chat-messages");return t||(t=document.createElement("div"),t.className="chat-messages",e.appendChild(t),t)}function Xs(e,t){var n=tu(e);return n?(n.innerHTML=t,jt(n),lr(),Ge(),n):null}function Ti(e){var t=document.getElementById("chat-output");if(!t)return;var n=r.sessions.find(function($){return $.id===r.selectedId});if(!n){r.lastRenderedEmpty!=="none"&&(Xs(t,'<div class="empty-state"><strong>\u672A\u9009\u62E9\u4F1A\u8BDD</strong><br>\u70B9\u51FB\u4E0A\u65B9\u300C\u65B0\u5BF9\u8BDD\u300D\u5F00\u59CB\u4F60\u7684\u7B2C\u4E00\u6B21\u5BF9\u8BDD\u3002</div>'),r.lastRenderedEmpty="none",r.lastRenderedMsgCount=0);return}var i=r.currentMessages,a=em(i);if(iu=tm(i),i.length===0){if(r.lastRenderedEmpty!=="empty"){var u="";ue(n)&&(u='<div class="empty-state-trio-wrap"><div class="empty-state-trio-hint">\u9ED8\u8BA4\u4F1A\u6309\u4EE5\u4E0B\u8BBE\u7F6E\u53D1\u9001\uFF0C\u53EF\u70B9\u51FB\u8C03\u6574\uFF1A</div>'+Al(n,{kind:"dropdown"})+"</div>"),Xs(t,'<div class="empty-state"><strong>\u5BF9\u8BDD\u5DF2\u5F00\u59CB</strong><br>\u5728\u4E0B\u65B9\u8F93\u5165\u6846\u53D1\u9001\u6D88\u606F\uFF0CClaude \u4F1A\u81EA\u52A8\u56DE\u590D\u3002</div>'+u),r.lastRenderedEmpty="empty",r.lastRenderedMsgCount=0}Pu(null,n),ru([]);return}var o=i.length;o>r.chatRenderedCount&&(r.chatRenderedCount=o);var s=Math.max(0,o-r.chatRenderedCount),l=s>0?i.slice(s):i,d=typeof n.messageOffset=="number"&&n.messageOffset>0,f=s>0||d,c=l.length,v=n.output?n.output.length:0;if(n.messages&&n.messages.length>0){for(var h=0,g=0,m=0;m<n.messages.length;m++){var y=n.messages[m].content;if(y)if(Array.isArray(y)){h+=y.length;for(var C=0;C<y.length;C++){var E=y[C];E.text&&(g+=E.text.length),E.thinking&&(g+=E.thinking.length),E.content&&(g+=E.content.length),E.id&&(g+=E.id.length),E.tool_use_id&&(g+=E.tool_use_id.length),E.description&&(g+=E.description.length),E.input&&(g+=JSON.stringify(E.input).length)}if(n.messages[m].usage){var B=n.messages[m].usage;g+=(B.inputTokens||0)+(B.outputTokens||0)+(B.cacheReadInputTokens||0)+(B.cacheCreationInputTokens||0)+(B.reasoningOutputTokens||0)+Math.round((B.totalCostUsd||0)*1e6)+(B.estimated===!0?1:0)}}else h+=1,g=String(y).length}v=c*1e5+h*1e3+g}var D=e||c!==r.lastRenderedMsgCount;if(!D&&c===r.lastRenderedMsgCount&&v===r.lastRenderedHash){var F=t.querySelector(".chat-messages");F&&Pu(F,n),ru(i);return}var I=r.lastRenderedHash,L=r.lastRenderedMsgCount;if(r.lastRenderedMsgCount=c,r.lastRenderedHash=v,F=tu(t),!F)return;var H=oa(F),U=!r.chatInitialRenderDone,x=F.querySelectorAll(".chat-message:not(.system-info)").length,k=D||x===0||c!==x;function T(){for(var $=Dv(n.output,l),fe="",Ce=l.slice().reverse(),Be=l.length,ve=0;ve<Ce.length;ve++){for(var Fe=Ce[ve],et=Be-1-ve,dt=et+s,it=null,Ne=0;Ne<$.length;Ne++)if($[Ne].beforeMessage===et){it=$[Ne];break}it&&(fe+='<div class="chat-message system-info"><div class="system-info-card"><div class="system-info-header">\u2139\uFE0F \u7CFB\u7EDF\u4FE1\u606F</div><div class="system-info-content">'+p(it.content)+"</div></div></div>"),fe+=uu(Fe,M[dt]||null,dt,a)}if(f){var Rt=s>0?"\u52A0\u8F7D\u66F4\u65E9\u7684 "+Math.min(r.chatPageSize,s)+" \u6761\u6D88\u606F":"\u52A0\u8F7D\u66F4\u65E9\u7684\u6D88\u606F";fe+='<div class="chat-load-more" id="chat-load-more-sentinel"><button class="chat-load-more-btn" type="button">'+Rt+"</button></div>"}var Ye=-1,De=0;if(x>0&&!H)for(var Pe=F.getBoundingClientRect().top,te=F.querySelectorAll(".chat-message:not(.system-info)"),we=0;we<te.length;we++){var w=te[we].getBoundingClientRect();if(w.bottom>=Pe){var at=te[we].getAttribute("data-msg-index");at!=null&&(Ye=parseInt(at,10),De=w.top-Pe);break}}if(F.innerHTML=fe,(function(){for(var Wt=F.querySelectorAll(".chat-message:not(.system-info)"),zt=Wt.length,Te=0;Te<zt;Te++)Wt[Te].setAttribute("data-msg-index",String(s+zt-1-Te))})(),jt(F),L===0&&!r.chatInitialRenderDone)F.scrollTop=0,r.chatStickToBottom=!0,Cn({removeDivider:!0}),r.chatInitialRenderDone=!0;else if(L===0&&r.chatStickToBottom)F.scrollTop=0;else if(H)F.scrollTop=0;else if(Ye>=0){var kt=F.querySelector('.chat-message[data-msg-index="'+Ye+'"]');if(kt){var ut=F.getBoundingClientRect().top,Zt=kt.getBoundingClientRect(),At=Zt.top-ut-De;Math.abs(At)>.5&&(r.chatIsProgrammaticScroll=!0,F.scrollTop+=At,requestAnimationFrame(function(){r.chatIsProgrammaticScroll=!1}))}}Zs(F),lr(),fa(F),requestAnimationFrame(function(){sa(F),Ge(),Cd()})}var M={};if((function(){for(var $={inputTokens:0,outputTokens:0,cacheReadInputTokens:0,cacheCreationInputTokens:0,reasoningOutputTokens:0,totalCostUsd:0,estimated:!1},fe=!1,Ce=-1,Be=0;Be<i.length;Be++){var ve=i[Be];if(ve.role==="user")Ce>=0&&fe&&(M[Ce]=$),$={inputTokens:0,outputTokens:0,cacheReadInputTokens:0,cacheCreationInputTokens:0,reasoningOutputTokens:0,totalCostUsd:0,estimated:!1},fe=!1,Ce=-1;else if(ve.role==="assistant"&&ve.usage){var Fe=ve.usage;fe=!0,$.inputTokens+=Fe.inputTokens||0,$.outputTokens+=Fe.outputTokens||0,$.cacheReadInputTokens+=Fe.cacheReadInputTokens||0,$.cacheCreationInputTokens+=Fe.cacheCreationInputTokens||0,$.reasoningOutputTokens+=Fe.reasoningOutputTokens||0,$.totalCostUsd+=Fe.totalCostUsd||0,$.estimated=$.estimated||Fe.estimated===!0,Ce=Be}else ve.role==="assistant"&&(Ce=Be)}Ce>=0&&fe&&(M[Ce]=$)})(),k)T();else if(c>x){var Y=l.slice(x);Y.reverse();for(var z=document.createDocumentFragment(),Q=[],le=[],ee=s+x,Z=0;Z<Y.length;Z++){var q=document.createElement("div"),O=s+x+(Y.length-1-Z);q.innerHTML=uu(Y[Z],M[O]||null,O,a);var N=q.firstElementChild;N&&(N.classList.add("animate-in"),N.setAttribute("data-msg-index",String(O)),Q.push(N),le.push(O),z.appendChild(N))}F.insertBefore(z,F.firstChild),lr(),Zs(F),fa(F),H?requestAnimationFrame(function(){F.isConnected&&Math.abs(F.scrollTop)>1&&(r.chatIsProgrammaticScroll=!0,F.scrollTop=0,requestAnimationFrame(function(){r.chatIsProgrammaticScroll=!1})),Cn({removeDivider:!0}),Ge()}):(r.chatUnreadStartIndex<0&&(r.chatUnreadStartIndex=ee),r.chatUnreadCount+=Q.length,sa(F),Ge())}else if(c===x&&v!==I){for(var G=Array.from(F.querySelectorAll(".chat-message:not(.system-info)")),J=l.slice().reverse(),ne=!1,de=Math.min(4,J.length,G.length),re=0;re<de;re++){var ie=G[re],qe=document.createElement("div"),ge=s+J.length-1-re;qe.innerHTML=uu(J[re],M[ge]||null,ge,a);var ce=qe.firstElementChild;if(ce){if(ie.innerHTML!==ce.innerHTML||ie.className!==ce.className)F.replaceChild(ce,ie),xv(ce),ne=!0;else if(re>0)break}}if(!ne&&J.length>de&&T(),ne){lr(),fa(F),requestAnimationFrame(function(){H&&F.isConnected&&Math.abs(F.scrollTop)>1&&(r.chatIsProgrammaticScroll=!0,F.scrollTop=0,requestAnimationFrame(function(){r.chatIsProgrammaticScroll=!1})),sa(F),Ge()});var R=F.querySelector(".chat-message"),ht=F.querySelectorAll(".tool-use-card, .inline-diff[data-expand-key]"),_e=null;ht.forEach(function($){var fe=ca($);bt(fe)===null&&($.classList.contains("ask-user")&&!$.classList.contains("ask-user-answered")||(R&&R.contains($)?_e?$.classList.add("collapsed"):_e=$:$.classList.add("collapsed")))})}}else c<x&&T();Sf(F),Zv(F,n),Jv(t,F,i,U),Pu(F,n),ru(i)}var nu=!1;document.addEventListener("click",function(e){var t=e.target;if(!(!t||!(t instanceof Element))){var n=t.closest("#todo-progress-toggle");if(n){e.preventDefault(),e.stopPropagation(),nu=!nu;var i=document.getElementById("todo-progress"),a=document.getElementById("todo-progress-body");i&&a&&(nu?(i.classList.add("expanded"),a.classList.add("expanded")):(i.classList.remove("expanded"),a.classList.remove("expanded"))),Li()}}});function Li(){var e=document.querySelector("#chat-output .chat-messages"),t=document.getElementById("todo-progress-body");if(!(!e||!t)){var n=e,i=!t.classList.contains("hidden"),a=t.classList.contains("expanded"),u=t.offsetHeight;i&&a&&u>0?n.style.paddingBottom=u+8+"px":n.style.paddingBottom=""}}function kv(e){if(typeof e=="string")return e;if(Array.isArray(e)){for(var t=[],n=0;n<e.length;n++){var i=e[n];typeof i=="string"?t.push(i):i&&typeof i.text=="string"&&t.push(i.text)}return t.join("")}return""}function Av(e,t){for(var n={},i=t;i<e.length;i++){var a=e[i];if(!(!a||!Array.isArray(a.content)))for(var u=0;u<a.content.length;u++){var o=a.content[u];o&&o.type==="tool_result"&&o.tool_use_id&&(n[o.tool_use_id]=kv(o.content))}}for(var s={},l=0,d=0,f=!1,c=t;c<e.length;c++){var v=e[c];if(!(!v||!Array.isArray(v.content)))for(var h=0;h<v.content.length;h++){var g=v.content[h];if(!(!g||g.type!=="tool_use")){var m=g.input||{};if(g.name==="TaskCreate"){f=!0,d++;var y=n[g.id]||"",C=y.match(/#(\d+)/),E=C?C[1]:String(d);s[E]={id:E,content:m.subject||"",activeForm:m.activeForm||"",status:"pending",order:l++}}else if(g.name==="TaskUpdate"){f=!0;var B=String(m.taskId),D=s[B];D||(D={id:B,content:"",activeForm:"",status:"pending",order:l++},s[B]=D),m.status&&(D.status=m.status),m.subject&&(D.content=m.subject),m.activeForm&&(D.activeForm=m.activeForm)}}}}if(!f)return null;var F=[];for(var I in s)Object.prototype.hasOwnProperty.call(s,I)&&s[I].status!=="deleted"&&F.push(s[I]);return F.sort(function(L,H){return L.order-H.order}),F.length?F:null}function ru(e){for(var t=0,n=e.length-1;n>=0;n--)if(e[n]&&e[n].role==="user"){t=n+1;break}for(var i=null,a=e.length-1;a>=t;a--){var u=e[a];if(!(!u.content||!Array.isArray(u.content))){for(var o=u.content.length-1;o>=0;o--){var s=u.content[o];if(s.type==="tool_use"&&s.name==="TodoWrite"&&s.input&&s.input.todos){i=s.input.todos;break}}if(i)break}}i||(i=Av(e,t));var l=document.getElementById("todo-progress"),d=document.getElementById("todo-progress-body");if(l){if(!i||i.length===0){l.classList.add("hidden"),d&&d.classList.add("hidden"),Li();return}for(var f=0,c=0,v="",h=0;h<i.length;h++)i[h].status==="completed"&&f++,i[h].status==="in_progress"&&(c++,v||(v=i[h].activeForm||i[h].content||""));var g=f===i.length,m=r.sessions.find(function(z){return z.id===r.selectedId}),y=!!m&&m.status==="running";if(!y||g){l.classList.add("hidden"),d&&d.classList.add("hidden"),Li();return}l.classList.remove("hidden"),l.classList.remove("all-done"),d&&d.classList.remove("hidden");var C=document.getElementById("todo-progress-counter");C&&(C.textContent=f+"/"+i.length);var E=document.getElementById("todo-progress-task");if(E){if(!v){for(var B=0;B<i.length;B++)if(i[B].status==="pending"&&(i[B].activeForm||i[B].content)){v=i[B].activeForm||i[B].content;break}}E.textContent=v||"\u51C6\u5907\u4E2D\u2026"}var D=i.length>0?f/i.length:0,F=document.getElementById("todo-progress-ring");F&&F.style.setProperty("--progress",D.toFixed(3));var I=document.getElementById("todo-progress-fill");I&&I.style.setProperty("--progress",D.toFixed(3));var L=document.getElementById("todo-progress-list");if(L){for(var H="",U=0;U<i.length;U++){var x=i[U],k=x.status||"pending",T=k==="in_progress"?"active":k==="completed"?"done":"",M=k==="in_progress"?"active":k==="completed"?"done":"pending",Y=k==="completed"?"\u2713":k==="in_progress"?"\u203A":"\u25CB";H+='<li class="todo-progress-item '+T+'"><span class="todo-item-icon '+M+'">'+Y+"</span><span>"+p(x.content||"")+"</span></li>"}L.innerHTML=H}r.selectedId&&Ha(r.selectedId),Li()}}function xv(e){e.querySelectorAll(".code-copy").forEach(function(t){t.addEventListener("click",function(){var n=t.closest(".code-block"),i=n?n.querySelector("code"):null;i&&Ur(i.textContent||"",null,function(){t.textContent="Copied!",t.classList.add("copied"),setTimeout(function(){t.textContent="Copy",t.classList.remove("copied")},2e3)})})})}function Zs(e){e.querySelectorAll(".code-copy").forEach(function(t){var n=t.cloneNode(!0);t.parentNode.replaceChild(n,t),n.addEventListener("click",function(){var i=n.closest(".code-block"),a=i?i.querySelector("code"):null;a&&Ur(a.textContent||"",null,function(){n.textContent="Copied!",n.classList.add("copied"),setTimeout(function(){n.textContent="Copy",n.classList.remove("copied")},2e3)})})}),Sv(e)}var ph={timer:null,activeBtn:null};function Sv(e){var t=window.matchMedia("(pointer: coarse)").matches;t&&e.querySelectorAll(".chat-message").forEach(function(n){if(!n.querySelector(".msg-copy-btn")){var i=n.querySelector(".chat-message-bubble");if(i){var a=document.createElement("button");a.className="msg-copy-btn",a.textContent="\u590D\u5236",a.addEventListener("click",function(u){u.stopPropagation();var o=i.innerText||i.textContent||"";Ur(o.trim(),null,function(){a.textContent="\u5DF2\u590D\u5236",a.classList.add("copied"),setTimeout(function(){a.textContent="\u590D\u5236",a.classList.remove("copied"),a.classList.remove("visible")},1500)})}),n.appendChild(a)}}})}(function(){var t=window.matchMedia("(pointer: coarse)").matches;if(t){var n=null,i=0;document.addEventListener("touchstart",function(a){var u=a.target.closest(".chat-message");if(u){var o=u.querySelector(".chat-message-bubble");o&&(i=a.touches[0].clientY,n=setTimeout(function(){var s=u.querySelector(".msg-copy-btn");s&&(document.querySelectorAll(".msg-copy-btn.visible").forEach(function(l){l.classList.remove("visible")}),s.classList.add("visible"))},500))}},{passive:!0}),document.addEventListener("touchmove",function(a){n&&Math.abs(a.touches[0].clientY-i)>10&&(clearTimeout(n),n=null)},{passive:!0}),document.addEventListener("touchend",function(){n&&(clearTimeout(n),n=null)},{passive:!0}),document.addEventListener("click",function(a){a.target.closest(".msg-copy-btn")||document.querySelectorAll(".msg-copy-btn.visible").forEach(function(u){u.classList.remove("visible")})})}})();function Iv(e){if(!e)return!1;var t=String(e).trim();return t?!!(t.indexOf("\u2500\u2500\u2500\u2500")===0||t==="\u276F"||t==="\u203A"||/^[╭╰│┌└┐┘├┤┬┴┼─═]{2,}$/.test(t)||/^[▁▂▃▄▅▆▇█▔▕▏▐]+$/.test(t)||t.indexOf("esc to interrupt")!==-1||t.indexOf("Claude Code v")!==-1||/^Sonnet\b/.test(t)||t.indexOf("Failed to install Anthropic")!==-1||t.indexOf("Claude Code has switched")!==-1||t.indexOf("? for shortcuts")!==-1||t.indexOf("Claude is waiting")!==-1||t.indexOf("[wand]")!==-1||t.indexOf("0;")===0||t.indexOf("9;")===0||t.indexOf("ctrl+g")!==-1||t.indexOf("/effort")!==-1||/^Using .* for .* session/.test(t)||t.indexOf("Press ")===0&&t.indexOf(" for")!==-1||t.indexOf("type ")===0&&t.indexOf(" to ")!==-1||t.indexOf("auto mode is unavailable")!==-1||/MCP server.*failed/i.test(t)||t.indexOf("Germinating")!==-1||t.indexOf("Doodling")!==-1||t.indexOf("Brewing")!==-1||t.indexOf("Permissions")!==-1&&t.indexOf("mode")!==-1||t.indexOf("\u25CF")===0&&t.indexOf("\xB7")!==-1||t.indexOf("[>")===0||t.indexOf("[<")===0||t.indexOf("Captured Claude session ID")!==-1||/^>_\s*OpenAI Codex\b/.test(t)||/^OpenAI Codex\b/i.test(t)||/^(model|directory):\s+/i.test(t)||/^(tip|context):\s+/i.test(t)||/^work(tree|space):\s+/i.test(t)||/^(approvals?|sandbox|provider|session id):\s+/i.test(t)||/^(thinking|working)(\.\.\.|…)?$/i.test(t)||/^[•◦·]\s+Working\b/i.test(t)||/^[•◦·]\s+(Running|Planning|Applying|Reading|Searching)\b/i.test(t)||/^[•◦·]\s+(Inspecting|Reviewing|Summarizing|Editing|Updating|Writing)\b/i.test(t)||/^[•◦·]\s+Completed\b/i.test(t)||/^(ctrl|enter|tab|shift|esc|alt)\+/i.test(t)||/\b(open|close|toggle) (chat|terminal)\b/i.test(t)||/\b(approve|deny)\b.*\b(permission|approval)\b/i.test(t)||/^(use|press) .* (to|for) .*/i.test(t)||/^(?:token|context window|remaining context|conversation):\s+/i.test(t)||/^(?:cwd|path):\s+\//i.test(t)||/^[<>│┆╎].*[<>│┆╎]$/.test(t)&&t.length<8):!1}function Tv(e){return String(e||"").replace(/\x1b\][^\x07]*(\x07|\x1b\\)/g,"").replace(/\x1b\[(\d+)C/g,function(t,n){return" ".repeat(Number(n)||1)}).replace(/\x1b\[[0-9;?]*[AB]/g,`
28
28
  `).replace(/\x1b\[[0-9;?]*[su]/g,"").replace(/\x1b\[[0-9;?]*[HfJKr]/g,`
29
29
  `).replace(/\x1bM/g,`
30
30
  `).replace(/\x1b\[[0-9;?]*[ST]/g,`
@@ -32,22 +32,22 @@
32
32
  `).replace(/[ \t]+\n/g,`
33
33
  `).replace(/\n{3,}/g,`
34
34
 
35
- `)}function Iv(e,t){var n=[];if(!e)return n;var i=String(e||""),a=`
36
- `,u="\r",o="\x1B";if(/^codex\b/.test(String(t||"").trim())){let Je=function(j){return String(j||"").replace(/\x1b\][^\x07]*(\x07|\x1b\\)/g,"").replace(/\x1b\[(\d+)C/g,function(O,K){return" ".repeat(Number(K)||1)}).replace(/\x1b\[[0-9;?]*[AB]/g,a).replace(/\x1b\[[0-9;?]*[su]/g,"").replace(/\x1b\[[0-9;?]*[HfJKr]/g,a).replace(/\x1bM/g,a).replace(/\x1b\[[0-9;?]*[ST]/g,a).replace(/\x1b\[[0-9;?]*[a-zA-Z]/g,"").replace(/\x1b[><=ePX^_]/g,"").replace(/[\u00a0\u200b-\u200d\ufeff]/g," ").replace(/[\x00-\x08\x0b\x0c\x0e-\x1f]/g,"").replace(/[ \t]+\n/g,a)},Ae=function(j){return String(j||"").replace(/\s+/g," ").replace(/[M]+$/g,"").trim()},Pn=function(j){return String(j||"").replace(/^›\s*/,"").replace(/^>\s*/,"").trim()},ft=function(j){var O=String(j||"").trim();return!!(!O||xv(O)||E.test(O)||/^[╭╰│┌└┐┘├┤┬┴┼─═]/.test(O)||/^\[>[0-9;?]*u$/i.test(O)||/^M+$/i.test(O)||/^(?:OpenAI Codex|Codex)\b/i.test(O)||/^(?:tokens?|context window|remaining context|approvals?|sandbox|provider|session id):\s*/i.test(O)||/^(?:thinking|working)\s*(?:\.\.\.|…)?$/i.test(O)||/^[•◦·]\s+(?:thinking|working|running|planning|applying|reading|searching|inspecting|reviewing|summarizing|editing|updating|writing|completed)\b/i.test(O)||/^(?:model|directory|tip|context|cwd|path):\s+/i.test(O))},en=function(j){var O=String(j||"").trim();if(!/^›(?:\s|$)/.test(O)||E.test(O))return null;var K=Ae(Pn(O));return!K||ft(K)?null:K},tn=function(j){var O=String(j||"").trim();if(!/^[•◦·⏺]/.test(O))return null;var K=O.replace(/^[•◦·]\s*/,"").replace(/^⏺\s+/,"").replace(/^│\s*/,"").trim();return!K||/^[•◦·⏺]$/.test(K)||(K=K.replace(/\s*\(\d+[smh]?\s*•\s*esc to interrupt\)[\s\S]*$/i,"").replace(/(?:[a-z]{1,6})?›[\s\S]*$/,"").replace(/\s{2,}gpt-\d[\s\S]*$/i,"").replace(/\b(?:OpenAI Codex|model:|directory:|Tip:)\b[\s\S]*$/i,""),K=Ae(K),!K||K.length<2||B.test(K)||ft(K))?null:K},St=function(j){var O=Ae(j);return!O||ft(O)||/^[•◦·⏺›]/.test(O)||/^[\[\]<>0-9;?]+u?$/i.test(O)||/^[╭╰│┌└┐┘├┤┬┴┼─═]/.test(O)||O.length>500?null:O},oe=function(j,O){if(j.indexOf(O)!==0)return!1;var K=j.slice(O.length);return/^[a-z]{1,4}$/i.test(K)},Le=function(j){for(var O=[],K=0;K<j.length;K++){var ae=Ae(j[K]);if(!(!ae||ae.length<2||ft(ae))){var se=O[O.length-1];if(!se){O.push(ae);continue}if(ae!==se){if(ae.indexOf(se)===0){O[O.length-1]=ae;continue}if(se.indexOf(ae)===0){oe(se,ae)&&(O[O.length-1]=ae);continue}O.push(ae)}}}return O.join(a).trim()},je=function(j){for(var O=0;O<j.length;O++){var K=String(j[O]||"").trim();if(K){var ae=en(K);if(ae)return ae;if(K==="\u203A")for(var se=O+1;se<j.length;se++){var ye=Ae(j[se]);if(!(!ye||E.test(ye)||ft(ye)))return ye}}}return null},nt=function(j){for(var O=[],K=!1,ae=0;ae<j.length;ae++){var se=String(j[ae]||"").trim();if(!se){if(K)break;continue}var ye=tn(se);if(ye){O.push(ye),K=!0;continue}if(K){if(se==="\u203A"||/^›(?:\s|$)/.test(se)||E.test(se)||ft(se))break;O.push(Ae(se))}}return O};for(var s=Je,l=Ae,d=Pn,f=ft,c=en,v=tn,h=St,g=oe,m=Le,y=je,C=nt,E=/\bgpt-\d+(?:\.\d+)?(?:\s+[a-z0-9.-]+)?\s+·\s+\d+%\s+left\s+·\s+(?:\/|~\/).+/i,B=/^(?:thinking|working|running|planning|applying|reading|searching|inspecting|reviewing|summarizing|editing|updating|writing|completed)\b/i,D=[],F=0,I=i.replace(/\r\n?/g,a).split(a),L=0;L<I.length;L++)for(var H=Je(I[L]),U=H.split(a),x=0;x<U.length;x++){var k=String(U[x]||"").trim();if(k){var T=en(k);if(T){D.push({kind:"user",order:F++,text:T});continue}var M=tn(k);if(M){D.push({kind:"assistant",order:F++,text:M});continue}var Y=St(k);Y&&D.push({kind:"echo",order:F++,text:Y})}}for(var z=D.filter(function(j,O,K){var ae=K[O-1];return!ae||ae.kind!==j.kind||ae.text!==j.text}),Q=z.filter(function(j){return j.kind==="user"}),le=z.filter(function(j){return j.kind==="assistant"}),ee=z.filter(function(j){return j.kind==="echo"}),Z=Sv(i),q=Z.split(a).map(function(j){return String(j||"").trimEnd()}),P=je(q),N=Q.length?Q[Q.length-1]:null,G=ee.map(function(j){return j.text}).filter(function(j){return j.length>=3}),J=null,ne=G.length-1;ne>=0;ne--)if(G[ne]!==P){J=G[ne];break}!J&&G.length&&(J=G[G.length-1]);for(var de=N?N.text:J,re=le.filter(function(j){return!N||j.order>N.order}).map(function(j){return j.text}),ie=[],qe=Z.match(/^[ \t]*[•◦·⏺][ \t]*(.+)$/gm)||[],ge=0;ge<qe.length;ge++){var ce=Ae(qe[ge].replace(/^[ \t]*[•◦·⏺][ \t]*/,""));ce&&(B.test(ce)||E.test(ce)||/\b(?:OpenAI Codex|model:|directory:|Tip:|esc to interrupt)\b/i.test(ce)||ie.push(ce))}var R=Le(re)||Le(nt(q))||(ie.length?ie[ie.length-1]:null);return de&&n.push({role:"user",content:de}),R&&n.push({role:"assistant",content:R}),!n.length&&N?n.push({role:"user",content:N.text}):!n.length&&J&&n.push({role:"user",content:J}),n}for(var gt="\0",_e="\b",$="\v",fe="\f",Ce="",Be="",ve="\xA0",Fe="\x07",tt=new RegExp(o+"\\[[0-9;?]*[a-zA-Z]|"+o+"\\][^"+Fe+"]*("+Fe+"|"+o+"\\\\\\\\)|"+o+"[><=eP_X^]|["+gt+"-"+_e+$+fe+Ce+"-"+Be+"]|"+ve+"|"+u,"g"),dt=i.replace(tt,function(Je){return Je===ve?" ":Je===u?a:""}).split(u).join(a),it=dt.split(a).map(function(Je){return Je.trim()}).filter(Boolean),Ne=[/thinking with high effort/i,/thinking with medium effort/i,/thinking with low effort/i,new RegExp("thought for [0-9]+s","i"),new RegExp("Sauteed for [0-9]+m","i"),/Germinating/i,/Doodling/i,/Brewing/i],Rt=null,Ye=-1,De=[],Oe=[],te=[],we=0;we<it.length;we++){var w=it[we],at=w.replace(/^❯\s*/,"");if(at.indexOf('Try"')===0||at.indexOf('Try "')===0){De.push(at);continue}for(var kt=!1,ut=0;ut<Ne.length;ut++)if(Ne[ut].test(w)){kt=!0,te.push(w);break}if(!kt&&w&&w.indexOf("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")!==0&&w!=="\u276F"&&w.indexOf("esc to interrupt")===-1&&w.indexOf("Claude Code v")===-1&&w.indexOf("Sonnet")===-1&&w.indexOf("~/")!==0&&w.indexOf("\u25CF high")===-1&&w.indexOf("Failed to install Anthropic marketplace")===-1&&w.indexOf("Claude Code has switched from npm to native installer")===-1&&w.indexOf("Fluttering")===-1&&w.indexOf("? for shortcuts")===-1&&w.indexOf("0;")!==0&&w.indexOf("9;")!==0&&w.indexOf("Claude is waiting")===-1&&!(w.indexOf("\u2722")!==-1||w.indexOf("\u2733")!==-1||w.indexOf("\u2736")!==-1||w.indexOf("\u273B")!==-1||w.indexOf("\u273D")!==-1)&&!(w.indexOf("\u2590")===0||w.indexOf("\u259D")===0||w.indexOf("\u2598")===0)&&!((w==="lu"||w==="ue"||w==="tr"||w==="ti"||w==="g"||w==="n"||w==="i\u2026"||w==="\u2026"||w==="uts"||w==="lt"||w==="rg"||w==="\xB7")&&w.length<4)&&!(w.indexOf("\u273DF")===0||w.indexOf("\u273BF")===0)&&w.indexOf("npm WARN")===-1&&w.indexOf("npm notice")===-1&&!(w.indexOf("added ")!==-1&&w.indexOf(" packages")!==-1)&&w.indexOf("audited ")===-1&&!(w.indexOf("found ")!==-1&&w.indexOf(" vulnerabilities")!==-1)&&!(w.indexOf("Using ")!==-1&&w.indexOf(" for ")!==-1&&w.indexOf("session")!==-1)&&w.indexOf("You can use")===-1&&!(w.indexOf("Press ")!==-1&&w.indexOf(" for")!==-1)&&!(w.indexOf("type ")===0&&w.indexOf(" to ")!==-1)&&w.indexOf("[wand]")!==0&&w.indexOf("Captured Claude session ID")===-1&&w.indexOf("\u23F5")===-1&&w.indexOf("acceptedit")===-1&&w.indexOf("shift+tab")===-1&&w.indexOf("tabtocycle")===-1&&w.indexOf("ctrl+g")===-1&&w.indexOf("/effort")===-1&&!(w.indexOf("Opus")!==-1&&w.indexOf("model")!==-1)&&w.indexOf("Haiku")===-1&&w.indexOf("to cycle")===-1&&!(w.indexOf("high \xB7")!==-1||w.indexOf("high\xB7")!==-1)&&!(w.indexOf("medium \xB7")!==-1||w.indexOf("medium\xB7")!==-1)&&!(w.indexOf("low \xB7")!==-1||w.indexOf("low\xB7")!==-1)){if(w.indexOf("\u25CF")===0){if(w=w.slice(1).trim(),!w)continue;Oe.push(w);continue}w.length<3&&!/^[a-zA-Z]{3}$/.test(w)||Oe.push(w)}}if(te.length>0){var Zt=te[te.length-1],At=Zt.match(new RegExp("for ([0-9]+[ms]+| [0-9]+m [0-9]+s)","i")),Wt=At?"\u6DF1\u5EA6\u601D\u8003 "+At[0].replace(/for /i,""):"\u6DF1\u5EA6\u601D\u8003\u4E2D...";n.push({role:"thinking",content:Wt,type:"deep-thought"})}if(De.length>0){var zt=De[De.length-1].replace(/^Try\s*/,"").trim();n.push({role:"prompt",content:zt,type:"suggestion"})}if(!Oe.length)return n;for(var Te=[],Ue=null,Ke=[],we=0;we<Oe.length;we++)if(w=Oe[we],w.indexOf("\u276F")===0){var xt=w.replace(/^❯\s*/,"").trim();if(xt.indexOf('Try"')===0||xt.indexOf('Try "')===0)continue;Ue!==null&&Ke.length>0&&(Te.push({user:Ue,assistantLines:Ke}),Ke=[]),xt?Ue=xt:(Ue!==null&&Ke.length>0&&(Te.push({user:Ue,assistantLines:Ke}),Ke=[]),Ue=null)}else Ue!==null&&(w.indexOf("\u23FA")!==-1&&(w.indexOf("Hi!")!==-1||w.indexOf("Hello")!==-1||w.indexOf("What")!==-1||w.indexOf("working")!==-1)?Ke.push(w):w.indexOf("\u23FA")===0?Ke.push(w.slice(1).trim()||w):w.length>=8&&w.indexOf("\u2722")===-1&&w.indexOf("\u2733")===-1&&w.indexOf("\u2736")===-1&&w.indexOf("\u273B")===-1&&w.indexOf("\u273D")===-1&&w.indexOf("\u2590")!==0&&w.indexOf("\u259D")!==0&&w.indexOf("\u2598")!==0&&w.indexOf("esctointerrupt")===-1&&w.indexOf("?for")!==0&&w.indexOf("? for")!==0&&Ke.push(w));if(Ue!==null&&Ke.length>0&&Te.push({user:Ue,assistantLines:Ke}),Te.length===0){for(var Vt="",Ut=-1,we=0;we<Oe.length;we++)if(w=Oe[we],!(w.indexOf('Try"')===0||w.indexOf('Try "')===0)&&w.indexOf("Failed to install")===-1&&w.indexOf("ctrl+g")===-1&&w.indexOf("\u25CF ")!==0&&!(w.length<2||w.length>100)&&/^[a-zA-Z]/.test(w)){Vt=w.trim(),Ut=we;break}if(Vt&&Ut>=0){var En=Oe.slice(Ut+1).filter(function(Je){return Je.length>=8});En.length>0&&Te.push({user:Vt,assistantLines:En})}}for(var ct=0;ct<Te.length;ct++)if(n.push({role:"user",content:Te[ct].user}),Te[ct].assistantLines.length>0){var ke=pm(Te[ct].assistantLines.join(a));n.push({role:"assistant",content:ke})}return n}var Xs="transparent";function Mi(e,t){for(var n=t||3,i=e[0].length*n,a=e.length*n,u="",o=0;o<e.length;o++)for(var s=0;s<e[o].length;s++)e[o][s]!==Xs&&(u+='<rect x="'+s*n+'" y="'+o*n+'" width="'+n+'" height="'+n+'" fill="'+e[o][s]+'"/>');return'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 '+i+" "+a+'" class="pixel-avatar-svg">'+u+"</svg>"}function qi(e){var t=Xs,n=e.base,i=e.dark,a=e.light||e.base,u=e.accent||"#FFFFFF",o=e.eye||"#2D2D2D",s=e.mouth||"#F28B9A",l=e.nose||e.dark;return[[t,i,t,t,t,t,t,t,i,t],[i,n,i,t,t,t,t,i,n,i],[i,n,n,n,n,n,n,n,n,i],[n,n,u,o,n,n,u,o,n,n],[n,n,u,u,n,n,u,u,n,n],[n,n,n,n,s,s,n,n,n,n],[n,l,n,a,n,n,a,n,l,n],[t,n,n,n,n,n,n,n,n,t],[t,t,n,i,n,n,i,n,t,t],[t,t,t,n,t,t,n,t,t,t]]}var Tv={base:"#F0923A",dark:"#C46A1A",light:"#F0923A",accent:"#FFFFFF",eye:"#2D2D2D",mouth:"#F28B9A",nose:"#E87D5A"},Lv={base:"#9EAAB8",dark:"#6B7B8D",light:"#C5CED8",accent:"#FFFFFF",eye:"#7EC88B",mouth:"#F28B9A"},Zs=[{base:"#5A8FE0",dark:"#2E5BB3",light:"#9CC0F2",accent:"#FFFFFF",eye:"#FFD66E",mouth:"#F28B9A",primary:"#5A8FE0"},{base:"#A06FE0",dark:"#6B45A8",light:"#C8A4F2",accent:"#FFFFFF",eye:"#FFE36E",mouth:"#F28B9A",primary:"#A06FE0"},{base:"#7BB76B",dark:"#4F8A40",light:"#A9D49C",accent:"#FFFFFF",eye:"#2D2D2D",mouth:"#F28B9A",primary:"#7BB76B"},{base:"#D86A88",dark:"#9C3A57",light:"#E8A4B5",accent:"#FFFFFF",eye:"#2D2D2D",mouth:"#FFFFFF",primary:"#D86A88"},{base:"#5BB7B0",dark:"#2E7873",light:"#9CD6D2",accent:"#FFFFFF",eye:"#FFD66E",mouth:"#F28B9A",primary:"#5BB7B0"},{base:"#4A4A60",dark:"#1F1F2E",light:"#6E6E84",accent:"#F5F5F5",eye:"#FFD66E",mouth:"#F28B9A",primary:"#4A4A60"},{base:"#D8A85A",dark:"#9C7028",light:"#EBC78A",accent:"#FFFFFF",eye:"#2D2D2D",mouth:"#F28B9A",primary:"#D8A85A"}];function Mv(e,t){for(var n=String(e||""),i=0,a=0;a<n.length;a++)i=(i<<5)-i+n.charCodeAt(a)|0;return Math.abs(i)%t}var el={"general-purpose":"\u4E07\u80FD\u732B",Explore:"\u4FA6\u63A2\u732B","code-explorer":"\u4FA6\u63A2\u732B","code-reviewer":"\u5BA1\u67E5\u732B","code-architect":"\u67B6\u6784\u732B","code-simplifier":"\u7B80\u5316\u732B","code-guide":"\u5411\u5BFC\u732B",Plan:"\u7B56\u5212\u732B","feature-dev":"\u5F00\u53D1\u732B","pr-test-analyzer":"\u6D4B\u8BD5\u732B","silent-failure-hunter":"\u62A4\u536B\u732B","type-design-analyzer":"\u7C7B\u578B\u732B","comment-analyzer":"\u6CE8\u91CA\u732B"},nu=null;function tl(e){if(!e)return"";var t=e.agentType||"";return t&&el[t]?el[t]:t||(ju()==="English"?"Subtask":"\u5B50\u4EFB\u52A1")}function qv(e){var t=String(e||"").trim();return t?t.indexOf("\u732B\u732B")===0?t:"\u732B\u732B "+t:"\u732B\u732B\u5B50 Agent"}function nl(e){var t=tl(e);if(!t)return t;var n=nu&&e&&e.taskId?nu.get(e.taskId):null;return qv(n?t+n:t)}function rl(e){var t=e&&(e.agentType||e.taskId)||"subagent";return Zs[Mv(t,Zs.length)]}function ch(e){var t=rl(e),n=nl(e),i=Mi(qi(t));return'<div class="chat-message-avatar assistant subagent" style="--agent-color:'+t.primary+'"><div class="pixel-avatar">'+i+'</div><span class="avatar-name">'+p(n)+"</span></div>"}function Ov(e,t){if(!e||e.type!=="tool_result")return"";var n=pn(e.content),i=e.is_error===!0,a=typeof n=="string"?n:n==null?"":String(n);if(!i&&!a.trim())return'<div class="subagent-reply pending"><span class="subagent-reply-marker pending">'+p(Ee("subagent.running"))+'</span><span class="typing-indicator"><span></span><span></span><span></span></span></div>';var u=a.trim()?a:Ee("subagent.no_output"),o=a.trim()?lu(u):p(u),s=Ee(i?"subagent.task.failed":"subagent.task.done"),l=i?"\u2717":"\u2713";return'<div class="subagent-reply final'+(i?" error":"")+'"><div class="subagent-reply-marker '+(i?"error":"done")+'"><span class="subagent-reply-marker-icon" aria-hidden="true">'+l+'</span><span class="subagent-reply-marker-label">'+p(s)+'</span></div><div class="subagent-reply-content">'+o+"</div></div>"}var Oi={assistant:Mi(qi(Tv)),user:Mi(qi(Lv))},il={user:{name:"\u8D5B\u535A\u864E\u599E",avatarSvg:Oi.user},assistant:{name:"\u52E4\u52B3\u521D\u4E8C",avatarSvg:Oi.assistant}};function ru(e){var t=r.config&&r.config.structuredChatPersona,n=t&&t[e]?t[e]:null,i=il[e]||il.assistant;return{name:n&&typeof n.name=="string"&&n.name.trim()?n.name.trim():i.name,avatar:n&&typeof n.avatar=="string"&&n.avatar.trim()?n.avatar.trim():null,avatarSvg:i.avatarSvg}}function al(e){return'<div class="pixel-avatar">'+e+"</div>"}function fh(e,t){if(!(!e||!e.parentNode)){var n=ru(t==="user"?"user":"assistant");e.outerHTML=al(n.avatarSvg)}}function Qn(e,t){t=t||{};var n=e==="user"?"user":"assistant",i=ru(n),a=i.avatar?'<img class="pixel-avatar-image" src="'+p(i.avatar)+'" alt="'+p(i.name)+'" onerror="handleChatAvatarImageError(this, '+JSON.stringify(n)+')" />':al(i.avatarSvg),u=t.leftSlot?t.leftSlot:"";return'<div class="chat-message-avatar '+e+'">'+a+'<span class="avatar-name">'+p(i.name)+"</span>"+u+"</div>"}function Pv(){var e=Bt();return!e||!ue(e)?"":Dl(e,{kind:"compact"})}function iu(e,t,n,i){if(e.role==="thinking"){var a=typeof e.content=="string"?e.content:"";if(!a.trim())return"";var u=Tt("thinking",[Qu(e,n),"pty"]),o=yt(u),s=o===null?Sn("thinking"):o;return'<div class="chat-message thinking"><div class="thinking-inline thinking-pty '+(s?"expanded":"collapsed")+'" data-expand-kind="thinking" data-expand-key="'+p(u)+'" data-thinking="'+p(a)+'" onclick="__thinkingToggle(this)"><span class="thinking-inline-icon">\u29BF</span><span class="thinking-inline-preview">'+p(a)+'</span><span class="thinking-inline-action">'+(s?"\u6536\u8D77":"\u5C55\u5F00")+"</span></div></div>"}if(e.role==="prompt")return'<div class="chat-message prompt"><div class="prompt-card"><div class="prompt-icon">\u2192</div><div class="prompt-content">\u8BD5\u8BD5\uFF1A<span class="prompt-text">'+p(e.content)+"</span></div></div></div>";if(Array.isArray(e.content))return nm(e,t,n,i);var l=Qn(e.role),d=e.role==="assistant"?lu(e.content):e.role==="user"?fl(e.content):p(e.content);return'<div class="chat-message '+e.role+'">'+l+'<div class="chat-message-bubble">'+d+"</div></div>"}function Hv(e){var t={};if(!Array.isArray(e))return t;for(var n=0;n<e.length;n++){var i=e[n];if(i&&i.type==="tool_result"){var a=i.tool_use_id;if(!a)continue;t[a]||(t[a]=[]),t[a].push(i)}}return t}function ul(e,t){var n=e&&t?e[t]:null;if(!n||!n.length)return null;for(var i=0;i<n.length-1;i++)if(Bl(n[i],n[i+1]))return n[i+1];return n[n.length-1]}function _v(e,t){var n=e&&t?e[t]:null;if(!n||n.length<2)return!1;for(var i=0;i<n.length-1;i++)if(Bl(n[i],n[i+1]))return!0;return!1}function Nv(e){return'<div class="structured-tool-hint">\u5DF2\u81EA\u52A8\u6062\u590D\u4E00\u6B21 '+p(su(e))+" \u53C2\u6570\u95EE\u9898</div>"}var jv={Read:1,Glob:1,Grep:1,WebFetch:1,WebSearch:1,TodoRead:1};function ol(e){if(!e||e.type!=="tool_use"||!jv[e.name])return!1;if(e.name==="Read"){var t=e.input||{};if(qu(t.file_path||t.path||""))return!1}return!0}function Rv(e){for(var t=[],n=0;n<e.length;){var i=e[n];if(i.type==="tool_result"){n++;continue}if(ol(i)){for(var a=[{block:i,index:n}],u=n+1;u<e.length;){if(e[u].type==="tool_result"){u++;continue}if(ol(e[u]))a.push({block:e[u],index:u}),u++;else break}a.length>=2?t.push({type:"group",items:a,endIndex:u}):t.push({type:"single",block:i,index:n}),n=u}else t.push({type:"single",block:i,index:n}),n++}return t}var Wv={Read:"\u8BFB\u53D6",Glob:"\u641C\u7D22",Grep:"\u641C\u7D22",WebFetch:"\u6293\u53D6",WebSearch:"\u641C\u7D22",TodoRead:"\u5F85\u529E"};function zv(e,t,n,i,a){for(var u=a||{},o={},s=0;s<e.length;s++){var l=e[s].block.name;o[l]=(o[l]||0)+1}for(var d=!0,f=!1,s=0;s<e.length;s++){var c=e[s].block,v=ul(n,c.id);v?v.is_error&&(f=!0):d=!1}var h=d?f?"\u2717":"\u2713":"\u2026",g=d?f?"error":"done":"pending",m=[];for(var y in o)m.push(o[y]+" "+(Wv[y]||y));for(var C=m.join(" \xB7 "),E=Tt("tool-group",[i,e[0]&&e[0].index,e.length]),B=yt(E),D=u.forceExpandedToolBodies?!0:B===null?Sn("toolGroup"):B,F="",s=0;s<e.length;s++)try{F+=pl(e[s].block,t,n,e[s].index,i,u)}catch{F+='<div class="render-error">\u5DE5\u5177\u6E32\u67D3\u5931\u8D25</div>'}return'<div class="tool-group" data-expand-kind="tool-group" data-expand-key="'+p(E)+'" data-expanded="'+(D?"true":"false")+'" data-status="'+g+'"><div class="tool-group-summary" onclick="__toolGroupToggle(this.parentNode)"><span class="tool-group-status">'+h+'</span><span class="tool-group-text">'+p(C)+'</span><span class="tool-group-count">'+e.length+' \u4E2A\u8C03\u7528</span><svg class="tool-group-chevron" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="transform:'+(D?"rotate(180deg)":"")+'"><polyline points="6 9 12 15 18 9"/></svg></div><div class="tool-group-body" style="display:'+(D?"block":"none")+';">'+F+"</div></div>"}window.__toolGroupToggle=function(e){if(e){var t=e.getAttribute("data-expanded")==="true";e.setAttribute("data-expanded",t?"false":"true");var n=e.querySelector(".tool-group-body");n&&(n.style.display=t?"none":"block");var i=e.querySelector(".tool-group-chevron");i&&(i.style.transform=t?"":"rotate(180deg)"),Nn(e,"tool-group")}};function Vv(e,t){for(var n=0,i=0,a=0,u={},o=0;o<t.length;o++){var s=e[t[o]];if(s){s.role==="user"&&n++;var l=s.content;if(Array.isArray(l))for(var d=0;d<l.length;d++){var f=l[d];if(f)if(f.__subagent&&f.__subagent.taskId&&(u[f.__subagent.taskId]=1),f.type==="tool_use"){i++;var c=Pi(f);c&&c.taskId&&(u[c.taskId]=1)}else f.type==="tool_result"&&f.is_error&&a++}}}var v=0;for(var h in u)Object.prototype.hasOwnProperty.call(u,h)&&v++;return{rounds:n,tools:i,agents:v,errors:a}}function sl(e){var t=[];return t.push(Ee("history.rounds",{n:String(e.rounds)})),e.tools>0&&t.push(Ee("history.tools",{n:String(e.tools)})),e.agents>0&&t.push(Ee("history.agents",{n:String(e.agents)})),e.errors>0&&t.push(Ee("history.errors",{n:String(e.errors)})),t.join(" \xB7 ")}function au(e,t){for(var n=e.nextElementSibling;n;)n.classList.contains("chat-load-more")||(t?n.classList.remove("chat-history-hidden"):n.classList.add("chat-history-hidden")),n=n.nextElementSibling}function Uv(e,t,n,i){!e||!t||(Kv(e,t,!1),uu(t),Gv(e))}function ph(e){var t=e.querySelector("#chat-fold-bar");return t||(t=document.createElement("div"),t.id="chat-fold-bar",t.className="chat-fold-bar hidden",e.insertBefore(t,e.firstChild),t)}function Kv(e,t,n){e&&e.classList.toggle("auto-fold",!!n)}function vh(e,t){for(var n=[],i=0;i<t;i++)e[i]&&n.push(i);return n}function uu(e){if(e)for(var t=e.querySelectorAll(".chat-auto-fold-hidden"),n=0;n<t.length;n++)t[n].classList.remove("chat-auto-fold-hidden")}function mh(e,t,n){if(uu(e),!(!n||t<1)){for(var i=e.querySelectorAll(".chat-message:not(.system-info)"),a=0;a<i.length;a++){var u=i[a].getAttribute("data-msg-index");if(u!=null){var o=parseInt(u,10);!isNaN(o)&&o<t&&i[a].classList.add("chat-auto-fold-hidden")}}Jv(e)}}function Jv(e){var t=e?e.querySelector(".chat-history-summary"):null;if(t){t.setAttribute("data-expanded","false");var n=t.querySelector(".chat-history-summary-btn");n&&n.setAttribute("aria-expanded","false");var i=t.querySelector(".chat-history-summary-title");i&&(i.textContent=Ee("history.expand")),au(t,!1),t.classList.add("chat-auto-fold-hidden");var a=e.getAttribute("data-history-sig");if(a){var u=a.split(":");u.length>=3&&(u[2]="0",e.setAttribute("data-history-sig",u.join(":")))}}}function Yv(e){!e||!e.isConnected||(Cn({removeDivider:!0}),Ru(!0))}function Gv(e){if(e){var t=e.querySelector("#chat-fold-bar");t&&(t.innerHTML="",t.classList.add("hidden"),r.chatAutoFoldSnapshot=null)}}function gh(e,t,n){var i=ll(e)||"\u65B0\u6D88\u606F",a=t?ll(t):"\u7B49\u5F85\u56DE\u590D...",u="";return n&&(u='<button type="button" class="chat-fold-row history" onclick="window.__chatFoldToggleHistory && window.__chatFoldToggleHistory()" title="\u5C55\u5F00\u6216\u6536\u8D77\u66F4\u65E9\u5BF9\u8BDD"><span class="chat-fold-role">\u5386\u53F2</span><span class="chat-fold-text">\u5DF2\u6536\u8D77 '+p(sl(n))+"</span></button>"),u+'<button type="button" class="chat-fold-row user" onclick="window.__chatFoldJumpToLatest && window.__chatFoldJumpToLatest()" title="\u5B9A\u4F4D\u5230\u6700\u65B0\u6D88\u606F"><span class="chat-fold-role">\u6211</span><span class="chat-fold-text">'+p(i)+'</span></button><button type="button" class="chat-fold-row assistant" onclick="window.__chatFoldJumpToLatest && window.__chatFoldJumpToLatest()" title="\u5B9A\u4F4D\u5230\u6700\u65B0\u56DE\u590D"><span class="chat-fold-role">Claude</span><span class="chat-fold-text">'+p(a)+"</span></button>"}function ll(e){if(!e)return"";var t=[];function n(o){if(typeof o=="string"){var s=o.replace(/\s+/g," ").trim();s&&t.push(s)}}if(typeof e.content=="string")n(e.content);else if(Array.isArray(e.content))for(var i=0;i<e.content.length&&t.join(" ").length<180;i++){var a=e.content[i];a&&(a.type==="text"?n(a.text):a.type==="thinking"?n(a.thinking):a.type==="tool_use"?n(a.name?"\u8C03\u7528 "+a.name:"\u5DE5\u5177\u8C03\u7528"):a.type==="tool_result"?n(a.is_error?"\u5DE5\u5177\u8FD4\u56DE\u9519\u8BEF":"\u5DE5\u5177\u8FD4\u56DE\u7ED3\u679C"):a.text&&n(a.text))}var u=t.join(" \xB7 ");return u.length>180?u.slice(0,177)+"...":u}window.__chatFoldJumpToLatest=function(){var e=document.querySelector("#chat-output .chat-messages");e&&Yv(e)},window.__chatFoldToggleHistory=function(){var e=document.querySelector("#chat-output .chat-history-summary"),t=e?e.querySelector(".chat-history-summary-btn"):null;e&&e.classList.remove("chat-auto-fold-hidden"),t&&window.__historySummaryToggle&&window.__historySummaryToggle(t)};function Qv(e,t,n,i){var a={shouldCollapseForViewport:!1,historyIndices:[],firstHistoryEl:null};if(!e||n<0)return a;for(var u=i&&(e.clientHeight||e.getBoundingClientRect().height)||0,o=null,s=null,l=0;l<t.length;l++){var d=t[l].getAttribute("data-msg-index");if(d!=null){var f=parseInt(d,10);isNaN(f)||(f<n?(a.historyIndices.push(f),a.firstHistoryEl||(a.firstHistoryEl=t[l])):i&&(o||(o=t[l]),s=t[l]))}}if(i&&u>0&&o&&s){var c=o.getBoundingClientRect(),v=s.getBoundingClientRect(),h=Math.max(c.bottom,v.bottom)-Math.min(c.top,v.top),g=Math.max(220,u-24);a.shouldCollapseForViewport=h>=g}return a}function $v(e,t){if(!e)return;var n=r.currentMessages||[];t||(t=Bt());for(var i=-1,a=n.length-1;a>=0;a--)if(n[a]&&n[a].role==="user"){i=a;break}function u(){var F=e.querySelector(".chat-history-summary");F&&F.remove();for(var I=e.querySelectorAll(".chat-history-hidden"),L=0;L<I.length;L++)I[L].classList.remove("chat-history-hidden");e.removeAttribute("data-history-sig")}if(i<1){u();return}var o=e.querySelectorAll(".chat-message:not(.system-info)"),s=Cl(t),l=Qv(e,o,i,s&&r.chatStickToBottom);if(s&&(!r.chatStickToBottom||!l.shouldCollapseForViewport)){u();return}var d=l.historyIndices,f=l.firstHistoryEl;if(d.length<2||!f){u();return}var c=Vv(n,d),v=Tt("history-summary",[i]),h=yt(v)===!0,g=i+":"+d.length+":"+(h?1:0)+":"+c.rounds+":"+c.tools+":"+c.agents+":"+c.errors;if(!(e.getAttribute("data-history-sig")===g&&e.querySelector(".chat-history-summary"))){var m=e.querySelector(".chat-history-summary");m&&m.remove();for(var y=e.querySelectorAll(".chat-history-hidden"),C=0;C<y.length;C++)y[C].classList.remove("chat-history-hidden");var E=sl(c),B=Ee(h?"history.collapse":"history.expand"),D=document.createElement("div");D.className="chat-history-summary",D.setAttribute("data-expand-key",v),D.setAttribute("data-expanded",h?"true":"false"),D.innerHTML='<button class="chat-history-summary-btn" type="button" onclick="window.__historySummaryToggle(this)" aria-expanded="'+(h?"true":"false")+'"><span class="chat-history-summary-icon">'+V("folder",{size:15})+'</span><span class="chat-history-summary-body"><span class="chat-history-summary-title">'+p(B)+'</span><span class="chat-history-summary-meta">'+p(E)+'</span></span><span class="chat-history-summary-chevron">'+V("chevronDown",{size:16})+"</span></button>",e.insertBefore(D,f),au(D,h),e.setAttribute("data-history-sig",g)}}window.__historySummaryToggle=function(e){var t=e&&e.closest?e.closest(".chat-history-summary"):null;if(t){var n=t.getAttribute("data-expand-key"),i=t.getAttribute("data-expanded")!=="true";t.setAttribute("data-expanded",i?"true":"false"),e.setAttribute("aria-expanded",i?"true":"false");var a=t.querySelector(".chat-history-summary-title");a&&(a.textContent=Ee(i?"history.collapse":"history.expand")),n&&Gu(n,i),au(t,i);var u=t.parentElement;if(i&&uu(u),u){var o=u.getAttribute("data-history-sig");if(o){var s=o.split(":");s.length>=3&&(s[2]=i?"1":"0",u.setAttribute("data-history-sig",s.join(":")))}}}};function Pi(e){if(!e||e.type!=="tool_use")return null;var t=e.input||{},n=typeof t.subagent_type=="string"?t.subagent_type:null;return!n&&e.name!=="Task"&&e.name!=="Agent"?null:{taskId:e.id,agentType:n||void 0,taskDescription:typeof t.description=="string"?t.description:void 0}}function Xv(e){var t=new Map;if(!Array.isArray(e))return t;for(var n=0;n<e.length;n++){var i=e[n];if(!(!i||i.role!=="assistant"||!Array.isArray(i.content)))for(var a=0;a<i.content.length;a++){var u=i.content[a];if(!(!u||u.type!=="tool_use")){var o=u.__subagent||Pi(u);o&&t.set(u.id,o)}}}return t}function Zv(e){var t=new Map;if(!Array.isArray(e))return t;var n=new Map,i=new Set;function a(f){if(!(!f||!f.taskId)&&!i.has(f.taskId)){i.add(f.taskId);var c=tl(f);c&&(n.has(c)||n.set(c,[]),n.get(c).push(f.taskId))}}for(var u=0;u<e.length;u++){var o=e[u];if(!(!o||!Array.isArray(o.content)))for(var s=0;s<o.content.length;s++){var l=o.content[s];if(l){var d=l.__subagent||(l.type==="tool_use"?Pi(l):null);d&&a(d)}}}return n.forEach(function(f){if(!(f.length<2))for(var c=0;c<f.length;c++)t.set(f[c]," #"+(c+1))}),t}function dl(e,t){var n=[];if(!Array.isArray(e)||!e.length)return n;for(var i=null,a=0;a<e.length;a++){var u=e[a],o=u&&u.type==="text"&&u.__processing===!0;if(o&&i){i.blocks.push(u);continue}var s=u&&u.__subagent?u.__subagent:null;s||(s=Pi(u)),!s&&u&&u.type==="tool_result"&&t&&t.has(u.tool_use_id)&&(s=t.get(u.tool_use_id));var l=s?s.taskId:null;(!i||i.key!==l)&&(i={key:l,subagent:s,blocks:[],firstIndex:a},n.push(i)),i.blocks.push(u)}return n}function ou(e,t,n,i,a,u){var o="",s=u||{};try{for(var l=Rv(e),d=0;d<l.length;d++){var f=l[d];try{if(f.type==="group"){for(var c=[],v=0;v<f.items.length;v++)c.push({block:f.items[v].block,index:f.items[v].index+t});o+=zv(c,n,i,a,s)}else o+=pl(f.block,n,i,f.index+t,a,s)}catch{o+='<div class="render-error">\u6D88\u606F\u5757\u6E32\u67D3\u5931\u8D25</div>'}}}catch{o+='<div class="render-error">\u6D88\u606F\u6E32\u67D3\u5931\u8D25</div>'}return o}function cl(e,t,n,i,a,u){for(var o=u||{},s=o.showHandoff!==!1,l="",d=null,f=0;f<e.length;f++){var c=e[f],v=c.subagent?{inSubagentPanel:!0}:{},h=ou(c.blocks,c.firstIndex,t,i,a,v);if(!(!h||!h.trim()))if(c.subagent){var g=s&&d!==c.subagent.taskId;l+=em(c,n,h,a,g),d=c.subagent.taskId}else l+='<div class="chat-message-segment parent">'+Qn(t)+'<div class="chat-message-content">'+h+"</div></div>",d=null}return l}function em(e,t,n,i,a){var u=e.subagent,o=rl(u),s=nl(u),l=u.taskId||"",d=Mi(qi(o)),f=tm(e.blocks),c;if(a){var v=!!(u.taskDescription&&String(u.taskDescription).trim()),h=v?'<span class="subagent-panel-task-desc">'+p(u.taskDescription)+"</span>":'<span class="subagent-panel-task-desc">'+p(Ee("subagent.continued"))+"</span>";c='<span class="subagent-panel-attribution"><strong class="subagent-panel-name">'+p(s)+'</strong><span class="subagent-panel-tag" title="'+p(Ee("subagent.tag_title"))+'">'+p(Ee("subagent.tag"))+"</span>"+h+"</span>"}else c='<span class="subagent-panel-attribution"><strong class="subagent-panel-name">'+p(s)+'</strong><span class="subagent-panel-task-desc"> '+p(Ee("subagent.continued"))+"</span></span>";var g=Tt("subagent-panel",[i,l]);return'<div class="subagent-panel" data-expand-kind="subagent-panel" data-expand-key="'+p(g)+'" data-agent-id="'+p(l)+'" data-expanded="true" style="--agent-color:'+o.primary+'"><div class="subagent-panel-header" aria-label="'+p(Ee("subagent.title_aria"))+'"><span class="subagent-panel-avatar" aria-hidden="true">'+d+"</span>"+c+'<span class="subagent-panel-count">'+p(f+" \u6761\u5185\u5BB9")+'</span></div><div class="subagent-panel-body">'+n+"</div></div>"}function tm(e){if(!Array.isArray(e))return 0;for(var t=0,n=0;n<e.length;n++){var i=e[n];!i||!i.type||i.type!=="tool_result"&&(i.type==="text"&&!String(i.text||"").trim()&&!i.__processing||i.type==="thinking"&&!String(i.thinking||"").trim()||t++)}return Math.max(1,t)}function nm(e,t,n,i){var a=e.role,u=Qu(e,n),o=a==="assistant"?rm(t):"",s=a==="user"&&e.content&&e.content.some(function(F){return F.__queued});if(!e.content||e.content.length===0)return a==="assistant"?'<div class="chat-message '+a+'">'+Qn(a)+'<div class="chat-message-content"><div class="typing-indicator"><span></span><span></span><span></span></div>'+o+"</div></div>":'<div class="chat-message '+a+' empty-message" data-message-key="'+p(u)+'">'+Qn(a)+'<div class="chat-message-content"><span class="empty-message-hint">\uFF08\u7A7A\u6D88\u606F\uFF09</span></div></div>';var l=Hv(e.content),d=ru("assistant");if(a!=="assistant"){var f=dl(e.content,i),c=f.some(function(F){return F.subagent}),v=s?" queued":"",h=s?'<span class="queued-badge">\u6392\u961F\u4E2D</span>':"",g=Pv();if(c){var m=cl(f,a,d.name,l,u,{showHandoff:!1});return'<div class="chat-message '+a+v+' multi-agent" data-message-key="'+p(u)+'">'+m+h+"</div>"}var y=ou(e.content,0,a,l,u);return'<div class="chat-message '+a+v+'" data-message-key="'+p(u)+'">'+Qn(a,{leftSlot:g})+'<div class="chat-message-content">'+y+h+"</div></div>"}var C=dl(e.content,i),E=C.some(function(F){return F.subagent});if(!E){var B=ou(e.content,0,a,l,u);return'<div class="chat-message '+a+'" data-message-key="'+p(u)+'">'+Qn(a)+'<div class="chat-message-content">'+B+o+"</div></div>"}var D='<div class="chat-message '+a+' multi-agent" data-message-key="'+p(u)+'">';return D+=cl(C,a,d.name,l,u,{showHandoff:!0}),D+=o,D+="</div>",D}function qr(e){return e>=1e6?(e/1e6).toFixed(1).replace(/\.0$/,"")+"M":e>=1e3?(e/1e3).toFixed(1).replace(/\.0$/,"")+"k":String(Math.max(0,Math.round(e||0)))}function rm(e){if(!e)return"";var t=e.estimated===!0,n=[];return(e.inputTokens||0)>0&&n.push("\u8F93\u5165 "+qr(e.inputTokens)),(e.cacheReadInputTokens||0)>0&&n.push("\u7F13\u5B58\u547D\u4E2D "+qr(e.cacheReadInputTokens)),(e.cacheCreationInputTokens||0)>0&&n.push("\u7F13\u5B58\u5199\u5165 "+qr(e.cacheCreationInputTokens)),(e.outputTokens||0)>0&&n.push("\u8F93\u51FA "+(t?"\u2248":"")+qr(e.outputTokens)),(e.reasoningOutputTokens||0)>0&&n.push("\u63A8\u7406 "+(t?"\u2248":"")+qr(e.reasoningOutputTokens)),(e.totalCostUsd||0)>0&&n.push("$"+Number(e.totalCostUsd).toFixed(4).replace(/0+$/,"").replace(/\.$/,"")),n.length===0&&t&&n.push("\u6B63\u5728\u7EDF\u8BA1\u7528\u91CF\u2026"),n.length===0?"":'<div class="turn-usage-summary'+(t?" is-estimated":"")+'" role="status" aria-live="polite" aria-label="\u672C\u8F6E\u7528\u91CF '+p(n.join("\uFF0C"))+'"><svg class="turn-usage-icon" viewBox="0 0 16 16" aria-hidden="true"><path d="M2.5 13.5h11M4 11V7.5M8 11V3M12 11V5.5"/></svg><span>'+p(n.join(" \xB7 "))+"</span></div>"}var im=/^\s*\[附件已上传,请查看以下文件:\n([\s\S]*?)\]\n+/;function am(e){var t=(e||"").trim();if(!t)return"";var n=t.split("/").pop()||t;if(qu(t)){var i="/api/file-raw?path="+encodeURIComponent(t);return'<div class="user-attachment-image"><img class="user-attachment-thumb" loading="lazy" src="'+i+'" alt="'+p(n)+'" data-path="'+p(t)+`" onclick="event.stopPropagation(); if(window.__openFilePreview)window.__openFilePreview(this.getAttribute('data-path'));" onerror="var w=this.closest('.user-attachment-image'); if(w)w.style.display='none';" /></div>`}return'<div class="user-attachment-file" data-path="'+p(t)+`" onclick="event.stopPropagation(); if(window.__openFilePreview)window.__openFilePreview(this.getAttribute('data-path'));"><span class="user-attachment-file-icon"><svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M9 1.5H4a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V5.5L9 1.5z"/><path d="M9 1.5V5.5h4"/></svg></span><span class="user-attachment-file-name">`+p(n)+"</span></div>"}function fl(e){var t=e||"",n=t.match(im);if(!n)return p(t);for(var i="",a=n[1].split(`
37
- `),u=0;u<a.length;u++)i+=am(a[u]);var o=t.slice(n[0].length),s=i?'<div class="user-attachments">'+i+"</div>":"",l=o.trim()?'<div class="user-attachment-text">'+p(o)+"</div>":"";return s+l}function pl(e,t,n,i,a,u){var o=u||{};if(!e||!e.type||!o.inSubagentPanel&&e.type==="tool_use"&&e.__subagent&&e.__subagent.taskId===e.id)return"";if(e.type==="tool_result"&&e.__subagent&&e.__subagent.taskId===e.tool_use_id)return Ov(e,t);switch(e.type){case"text":return t==="assistant"&&e.__processing?'<div class="typing-indicator"><span></span><span></span><span></span></div>':t==="assistant"?lu(e.text||""):fl(e.text||"");case"thinking":var s=e.thinking||"",l=e.thinking===void 0&&e.type==="thinking";if(l)return'<div class="thinking-inline thinking-streaming" data-thinking=""><div class="thinking-streaming-inner"><span class="thinking-streaming-icon spinning">\u29BF</span><div class="thinking-streaming-text"></div></div></div>';if(!s.trim())return"";var d=s.length>60?s.slice(0,57)+"\u2026":s,f=Tt("thinking",[a,i]),c=yt(f),v=c===null?Sn("thinking"):c;return'<div class="thinking-inline '+(v?"expanded":"collapsed")+'" data-expand-kind="thinking" data-expand-key="'+p(f)+'" data-thinking="'+p(s)+'" onclick="__thinkingToggle(this)"><span class="thinking-inline-icon">\u29BF</span><span class="thinking-inline-preview">'+p(v?s:d)+'</span><span class="thinking-inline-action">'+(v?"\u6536\u8D77":"\u5C55\u5F00")+"</span></div>";case"tool_use":var h=ul(n,e.id),g=dm(e,h,i,a,o);return _v(n,e.id)&&(g=Nv(e.name||"\u5DE5\u5177")+g),g;case"tool_result":return"";default:var m=e&&e.type?String(e.type):"\u672A\u77E5",y="";try{y=JSON.stringify(e,null,2)}catch{y="{}"}return`<div class="unknown-block collapsed" onclick="this.classList.toggle('collapsed')"><div class="unknown-block-header"><span class="unknown-block-icon">?</span><span class="unknown-block-label">\u672A\u8BC6\u522B\u7684\u5185\u5BB9\u5757\uFF1A`+p(m)+'</span><span class="unknown-block-toggle">\u25BC</span></div><pre class="unknown-block-body">'+p(y)+"</pre></div>"}}function um(e,t,n,i,a,u,o,s){var l=s||{},d=e.id||"tool-"+n,f=Tt("inline-tool",[u,d||o,o]),c=yt(f),v=e.input||{},h=pn(t&&t.content),g=t&&t.is_error,m=h.length>0,y=g?"\u2717":m?"\u2713":"\u2026",C="",E="",B="",D="";if(n==="Read"){C='<svg class="inline-tool-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M1 3.5A1.5 1.5 0 0 1 2.5 2h2.764c.958 0 1.76.56 2.311 1.184C8.405 3.77 9.146 4 10 4h3.5A1.5 1.5 0 0 1 15 5.5v7a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 1 12.5v-9z"/><path d="M2 5.5h12M2 8h8M2 10.5h5"/></svg>';var F=v.file_path||v.path||i||"",I="";v.limit&&(I=" "+v.offset+"-"+(v.offset+v.limit)),E=F,B=I}else if(n==="Glob"){C='<svg class="inline-tool-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="7" cy="7" r="5"/><path d="M10.5 10.5L14 14"/></svg>';var L=v.pattern||"",H=v.path||i||"";E=L,B=H}else if(n==="Grep"){C='<svg class="inline-tool-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="6.5" cy="6.5" r="4.5"/><path d="M11.5 11.5L15 15"/></svg>';var L=v.pattern||"",H=v.path||i||"";E=L,B=H,v.context&&(B+=" -C"+v.context)}else if(n==="WebFetch"){C='<svg class="inline-tool-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="8" cy="8" r="6.5"/><path d="M8 1.5v13M1.5 8h13"/></svg>';var U=v.url||"";E=U,B=a||""}else if(n==="WebSearch"){C='<svg class="inline-tool-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="7" cy="7" r="5"/><path d="M10.5 10.5L14 14"/><path d="M5 7h4M7 5v4"/></svg>';var x=v.query||"";E=x,B=a||""}else n==="TodoRead"?(C='<svg class="inline-tool-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="2" y="2" width="12" height="12" rx="2"/><path d="M5 8l2 2 4-4"/></svg>',E="\u8BFB\u53D6\u5F85\u529E\u5217\u8868",B=a||""):(C='<svg class="inline-tool-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="8" cy="8" r="6.5"/><path d="M8 5v3.5M8 11h.01"/></svg>',E=su(n),B=a||"");if(m){var k=h.split(`
35
+ `)}function Lv(e,t){var n=[];if(!e)return n;var i=String(e||""),a=`
36
+ `,u="\r",o="\x1B";if(/^codex\b/.test(String(t||"").trim())){let Je=function(j){return String(j||"").replace(/\x1b\][^\x07]*(\x07|\x1b\\)/g,"").replace(/\x1b\[(\d+)C/g,function(P,K){return" ".repeat(Number(K)||1)}).replace(/\x1b\[[0-9;?]*[AB]/g,a).replace(/\x1b\[[0-9;?]*[su]/g,"").replace(/\x1b\[[0-9;?]*[HfJKr]/g,a).replace(/\x1bM/g,a).replace(/\x1b\[[0-9;?]*[ST]/g,a).replace(/\x1b\[[0-9;?]*[a-zA-Z]/g,"").replace(/\x1b[><=ePX^_]/g,"").replace(/[\u00a0\u200b-\u200d\ufeff]/g," ").replace(/[\x00-\x08\x0b\x0c\x0e-\x1f]/g,"").replace(/[ \t]+\n/g,a)},Ae=function(j){return String(j||"").replace(/\s+/g," ").replace(/[M]+$/g,"").trim()},On=function(j){return String(j||"").replace(/^›\s*/,"").replace(/^>\s*/,"").trim()},ft=function(j){var P=String(j||"").trim();return!!(!P||Iv(P)||E.test(P)||/^[╭╰│┌└┐┘├┤┬┴┼─═]/.test(P)||/^\[>[0-9;?]*u$/i.test(P)||/^M+$/i.test(P)||/^(?:OpenAI Codex|Codex)\b/i.test(P)||/^(?:tokens?|context window|remaining context|approvals?|sandbox|provider|session id):\s*/i.test(P)||/^(?:thinking|working)\s*(?:\.\.\.|…)?$/i.test(P)||/^[•◦·]\s+(?:thinking|working|running|planning|applying|reading|searching|inspecting|reviewing|summarizing|editing|updating|writing|completed)\b/i.test(P)||/^(?:model|directory|tip|context|cwd|path):\s+/i.test(P))},en=function(j){var P=String(j||"").trim();if(!/^›(?:\s|$)/.test(P)||E.test(P))return null;var K=Ae(On(P));return!K||ft(K)?null:K},tn=function(j){var P=String(j||"").trim();if(!/^[•◦·⏺]/.test(P))return null;var K=P.replace(/^[•◦·]\s*/,"").replace(/^⏺\s+/,"").replace(/^│\s*/,"").trim();return!K||/^[•◦·⏺]$/.test(K)||(K=K.replace(/\s*\(\d+[smh]?\s*•\s*esc to interrupt\)[\s\S]*$/i,"").replace(/(?:[a-z]{1,6})?›[\s\S]*$/,"").replace(/\s{2,}gpt-\d[\s\S]*$/i,"").replace(/\b(?:OpenAI Codex|model:|directory:|Tip:)\b[\s\S]*$/i,""),K=Ae(K),!K||K.length<2||B.test(K)||ft(K))?null:K},St=function(j){var P=Ae(j);return!P||ft(P)||/^[•◦·⏺›]/.test(P)||/^[\[\]<>0-9;?]+u?$/i.test(P)||/^[╭╰│┌└┐┘├┤┬┴┼─═]/.test(P)||P.length>500?null:P},oe=function(j,P){if(j.indexOf(P)!==0)return!1;var K=j.slice(P.length);return/^[a-z]{1,4}$/i.test(K)},Le=function(j){for(var P=[],K=0;K<j.length;K++){var ae=Ae(j[K]);if(!(!ae||ae.length<2||ft(ae))){var se=P[P.length-1];if(!se){P.push(ae);continue}if(ae!==se){if(ae.indexOf(se)===0){P[P.length-1]=ae;continue}if(se.indexOf(ae)===0){oe(se,ae)&&(P[P.length-1]=ae);continue}P.push(ae)}}}return P.join(a).trim()},je=function(j){for(var P=0;P<j.length;P++){var K=String(j[P]||"").trim();if(K){var ae=en(K);if(ae)return ae;if(K==="\u203A")for(var se=P+1;se<j.length;se++){var ye=Ae(j[se]);if(!(!ye||E.test(ye)||ft(ye)))return ye}}}return null},tt=function(j){for(var P=[],K=!1,ae=0;ae<j.length;ae++){var se=String(j[ae]||"").trim();if(!se){if(K)break;continue}var ye=tn(se);if(ye){P.push(ye),K=!0;continue}if(K){if(se==="\u203A"||/^›(?:\s|$)/.test(se)||E.test(se)||ft(se))break;P.push(Ae(se))}}return P};for(var s=Je,l=Ae,d=On,f=ft,c=en,v=tn,h=St,g=oe,m=Le,y=je,C=tt,E=/\bgpt-\d+(?:\.\d+)?(?:\s+[a-z0-9.-]+)?\s+·\s+\d+%\s+left\s+·\s+(?:\/|~\/).+/i,B=/^(?:thinking|working|running|planning|applying|reading|searching|inspecting|reviewing|summarizing|editing|updating|writing|completed)\b/i,D=[],F=0,I=i.replace(/\r\n?/g,a).split(a),L=0;L<I.length;L++)for(var H=Je(I[L]),U=H.split(a),x=0;x<U.length;x++){var k=String(U[x]||"").trim();if(k){var T=en(k);if(T){D.push({kind:"user",order:F++,text:T});continue}var M=tn(k);if(M){D.push({kind:"assistant",order:F++,text:M});continue}var Y=St(k);Y&&D.push({kind:"echo",order:F++,text:Y})}}for(var z=D.filter(function(j,P,K){var ae=K[P-1];return!ae||ae.kind!==j.kind||ae.text!==j.text}),Q=z.filter(function(j){return j.kind==="user"}),le=z.filter(function(j){return j.kind==="assistant"}),ee=z.filter(function(j){return j.kind==="echo"}),Z=Tv(i),q=Z.split(a).map(function(j){return String(j||"").trimEnd()}),O=je(q),N=Q.length?Q[Q.length-1]:null,G=ee.map(function(j){return j.text}).filter(function(j){return j.length>=3}),J=null,ne=G.length-1;ne>=0;ne--)if(G[ne]!==O){J=G[ne];break}!J&&G.length&&(J=G[G.length-1]);for(var de=N?N.text:J,re=le.filter(function(j){return!N||j.order>N.order}).map(function(j){return j.text}),ie=[],qe=Z.match(/^[ \t]*[•◦·⏺][ \t]*(.+)$/gm)||[],ge=0;ge<qe.length;ge++){var ce=Ae(qe[ge].replace(/^[ \t]*[•◦·⏺][ \t]*/,""));ce&&(B.test(ce)||E.test(ce)||/\b(?:OpenAI Codex|model:|directory:|Tip:|esc to interrupt)\b/i.test(ce)||ie.push(ce))}var R=Le(re)||Le(tt(q))||(ie.length?ie[ie.length-1]:null);return de&&n.push({role:"user",content:de}),R&&n.push({role:"assistant",content:R}),!n.length&&N?n.push({role:"user",content:N.text}):!n.length&&J&&n.push({role:"user",content:J}),n}for(var ht="\0",_e="\b",$="\v",fe="\f",Ce="",Be="",ve="\xA0",Fe="\x07",et=new RegExp(o+"\\[[0-9;?]*[a-zA-Z]|"+o+"\\][^"+Fe+"]*("+Fe+"|"+o+"\\\\\\\\)|"+o+"[><=eP_X^]|["+ht+"-"+_e+$+fe+Ce+"-"+Be+"]|"+ve+"|"+u,"g"),dt=i.replace(et,function(Je){return Je===ve?" ":Je===u?a:""}).split(u).join(a),it=dt.split(a).map(function(Je){return Je.trim()}).filter(Boolean),Ne=[/thinking with high effort/i,/thinking with medium effort/i,/thinking with low effort/i,new RegExp("thought for [0-9]+s","i"),new RegExp("Sauteed for [0-9]+m","i"),/Germinating/i,/Doodling/i,/Brewing/i],Rt=null,Ye=-1,De=[],Pe=[],te=[],we=0;we<it.length;we++){var w=it[we],at=w.replace(/^❯\s*/,"");if(at.indexOf('Try"')===0||at.indexOf('Try "')===0){De.push(at);continue}for(var kt=!1,ut=0;ut<Ne.length;ut++)if(Ne[ut].test(w)){kt=!0,te.push(w);break}if(!kt&&w&&w.indexOf("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")!==0&&w!=="\u276F"&&w.indexOf("esc to interrupt")===-1&&w.indexOf("Claude Code v")===-1&&w.indexOf("Sonnet")===-1&&w.indexOf("~/")!==0&&w.indexOf("\u25CF high")===-1&&w.indexOf("Failed to install Anthropic marketplace")===-1&&w.indexOf("Claude Code has switched from npm to native installer")===-1&&w.indexOf("Fluttering")===-1&&w.indexOf("? for shortcuts")===-1&&w.indexOf("0;")!==0&&w.indexOf("9;")!==0&&w.indexOf("Claude is waiting")===-1&&!(w.indexOf("\u2722")!==-1||w.indexOf("\u2733")!==-1||w.indexOf("\u2736")!==-1||w.indexOf("\u273B")!==-1||w.indexOf("\u273D")!==-1)&&!(w.indexOf("\u2590")===0||w.indexOf("\u259D")===0||w.indexOf("\u2598")===0)&&!((w==="lu"||w==="ue"||w==="tr"||w==="ti"||w==="g"||w==="n"||w==="i\u2026"||w==="\u2026"||w==="uts"||w==="lt"||w==="rg"||w==="\xB7")&&w.length<4)&&!(w.indexOf("\u273DF")===0||w.indexOf("\u273BF")===0)&&w.indexOf("npm WARN")===-1&&w.indexOf("npm notice")===-1&&!(w.indexOf("added ")!==-1&&w.indexOf(" packages")!==-1)&&w.indexOf("audited ")===-1&&!(w.indexOf("found ")!==-1&&w.indexOf(" vulnerabilities")!==-1)&&!(w.indexOf("Using ")!==-1&&w.indexOf(" for ")!==-1&&w.indexOf("session")!==-1)&&w.indexOf("You can use")===-1&&!(w.indexOf("Press ")!==-1&&w.indexOf(" for")!==-1)&&!(w.indexOf("type ")===0&&w.indexOf(" to ")!==-1)&&w.indexOf("[wand]")!==0&&w.indexOf("Captured Claude session ID")===-1&&w.indexOf("\u23F5")===-1&&w.indexOf("acceptedit")===-1&&w.indexOf("shift+tab")===-1&&w.indexOf("tabtocycle")===-1&&w.indexOf("ctrl+g")===-1&&w.indexOf("/effort")===-1&&!(w.indexOf("Opus")!==-1&&w.indexOf("model")!==-1)&&w.indexOf("Haiku")===-1&&w.indexOf("to cycle")===-1&&!(w.indexOf("high \xB7")!==-1||w.indexOf("high\xB7")!==-1)&&!(w.indexOf("medium \xB7")!==-1||w.indexOf("medium\xB7")!==-1)&&!(w.indexOf("low \xB7")!==-1||w.indexOf("low\xB7")!==-1)){if(w.indexOf("\u25CF")===0){if(w=w.slice(1).trim(),!w)continue;Pe.push(w);continue}w.length<3&&!/^[a-zA-Z]{3}$/.test(w)||Pe.push(w)}}if(te.length>0){var Zt=te[te.length-1],At=Zt.match(new RegExp("for ([0-9]+[ms]+| [0-9]+m [0-9]+s)","i")),Wt=At?"\u6DF1\u5EA6\u601D\u8003 "+At[0].replace(/for /i,""):"\u6DF1\u5EA6\u601D\u8003\u4E2D...";n.push({role:"thinking",content:Wt,type:"deep-thought"})}if(De.length>0){var zt=De[De.length-1].replace(/^Try\s*/,"").trim();n.push({role:"prompt",content:zt,type:"suggestion"})}if(!Pe.length)return n;for(var Te=[],Ue=null,Ke=[],we=0;we<Pe.length;we++)if(w=Pe[we],w.indexOf("\u276F")===0){var xt=w.replace(/^❯\s*/,"").trim();if(xt.indexOf('Try"')===0||xt.indexOf('Try "')===0)continue;Ue!==null&&Ke.length>0&&(Te.push({user:Ue,assistantLines:Ke}),Ke=[]),xt?Ue=xt:(Ue!==null&&Ke.length>0&&(Te.push({user:Ue,assistantLines:Ke}),Ke=[]),Ue=null)}else Ue!==null&&(w.indexOf("\u23FA")!==-1&&(w.indexOf("Hi!")!==-1||w.indexOf("Hello")!==-1||w.indexOf("What")!==-1||w.indexOf("working")!==-1)?Ke.push(w):w.indexOf("\u23FA")===0?Ke.push(w.slice(1).trim()||w):w.length>=8&&w.indexOf("\u2722")===-1&&w.indexOf("\u2733")===-1&&w.indexOf("\u2736")===-1&&w.indexOf("\u273B")===-1&&w.indexOf("\u273D")===-1&&w.indexOf("\u2590")!==0&&w.indexOf("\u259D")!==0&&w.indexOf("\u2598")!==0&&w.indexOf("esctointerrupt")===-1&&w.indexOf("?for")!==0&&w.indexOf("? for")!==0&&Ke.push(w));if(Ue!==null&&Ke.length>0&&Te.push({user:Ue,assistantLines:Ke}),Te.length===0){for(var Vt="",Ut=-1,we=0;we<Pe.length;we++)if(w=Pe[we],!(w.indexOf('Try"')===0||w.indexOf('Try "')===0)&&w.indexOf("Failed to install")===-1&&w.indexOf("ctrl+g")===-1&&w.indexOf("\u25CF ")!==0&&!(w.length<2||w.length>100)&&/^[a-zA-Z]/.test(w)){Vt=w.trim(),Ut=we;break}if(Vt&&Ut>=0){var En=Pe.slice(Ut+1).filter(function(Je){return Je.length>=8});En.length>0&&Te.push({user:Vt,assistantLines:En})}}for(var ct=0;ct<Te.length;ct++)if(n.push({role:"user",content:Te[ct].user}),Te[ct].assistantLines.length>0){var ke=mm(Te[ct].assistantLines.join(a));n.push({role:"assistant",content:ke})}return n}var el="transparent";function Mi(e,t){for(var n=t||3,i=e[0].length*n,a=e.length*n,u="",o=0;o<e.length;o++)for(var s=0;s<e[o].length;s++)e[o][s]!==el&&(u+='<rect x="'+s*n+'" y="'+o*n+'" width="'+n+'" height="'+n+'" fill="'+e[o][s]+'"/>');return'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 '+i+" "+a+'" class="pixel-avatar-svg">'+u+"</svg>"}function qi(e){var t=el,n=e.base,i=e.dark,a=e.light||e.base,u=e.accent||"#FFFFFF",o=e.eye||"#2D2D2D",s=e.mouth||"#F28B9A",l=e.nose||e.dark;return[[t,i,t,t,t,t,t,t,i,t],[i,n,i,t,t,t,t,i,n,i],[i,n,n,n,n,n,n,n,n,i],[n,n,u,o,n,n,u,o,n,n],[n,n,u,u,n,n,u,u,n,n],[n,n,n,n,s,s,n,n,n,n],[n,l,n,a,n,n,a,n,l,n],[t,n,n,n,n,n,n,n,n,t],[t,t,n,i,n,n,i,n,t,t],[t,t,t,n,t,t,n,t,t,t]]}var Mv={base:"#F0923A",dark:"#C46A1A",light:"#F0923A",accent:"#FFFFFF",eye:"#2D2D2D",mouth:"#F28B9A",nose:"#E87D5A"},qv={base:"#9EAAB8",dark:"#6B7B8D",light:"#C5CED8",accent:"#FFFFFF",eye:"#7EC88B",mouth:"#F28B9A"},tl=[{base:"#5A8FE0",dark:"#2E5BB3",light:"#9CC0F2",accent:"#FFFFFF",eye:"#FFD66E",mouth:"#F28B9A",primary:"#5A8FE0"},{base:"#A06FE0",dark:"#6B45A8",light:"#C8A4F2",accent:"#FFFFFF",eye:"#FFE36E",mouth:"#F28B9A",primary:"#A06FE0"},{base:"#7BB76B",dark:"#4F8A40",light:"#A9D49C",accent:"#FFFFFF",eye:"#2D2D2D",mouth:"#F28B9A",primary:"#7BB76B"},{base:"#D86A88",dark:"#9C3A57",light:"#E8A4B5",accent:"#FFFFFF",eye:"#2D2D2D",mouth:"#FFFFFF",primary:"#D86A88"},{base:"#5BB7B0",dark:"#2E7873",light:"#9CD6D2",accent:"#FFFFFF",eye:"#FFD66E",mouth:"#F28B9A",primary:"#5BB7B0"},{base:"#4A4A60",dark:"#1F1F2E",light:"#6E6E84",accent:"#F5F5F5",eye:"#FFD66E",mouth:"#F28B9A",primary:"#4A4A60"},{base:"#D8A85A",dark:"#9C7028",light:"#EBC78A",accent:"#FFFFFF",eye:"#2D2D2D",mouth:"#F28B9A",primary:"#D8A85A"}];function Pv(e,t){for(var n=String(e||""),i=0,a=0;a<n.length;a++)i=(i<<5)-i+n.charCodeAt(a)|0;return Math.abs(i)%t}var nl={"general-purpose":"\u4E07\u80FD\u732B",Explore:"\u4FA6\u63A2\u732B","code-explorer":"\u4FA6\u63A2\u732B","code-reviewer":"\u5BA1\u67E5\u732B","code-architect":"\u67B6\u6784\u732B","code-simplifier":"\u7B80\u5316\u732B","code-guide":"\u5411\u5BFC\u732B",Plan:"\u7B56\u5212\u732B","feature-dev":"\u5F00\u53D1\u732B","pr-test-analyzer":"\u6D4B\u8BD5\u732B","silent-failure-hunter":"\u62A4\u536B\u732B","type-design-analyzer":"\u7C7B\u578B\u732B","comment-analyzer":"\u6CE8\u91CA\u732B"},iu=null;function rl(e){if(!e)return"";var t=e.agentType||"";return t&&nl[t]?nl[t]:t||(Wu()==="English"?"Subtask":"\u5B50\u4EFB\u52A1")}function Ov(e){var t=String(e||"").trim();return t?t.indexOf("\u732B\u732B")===0?t:"\u732B\u732B "+t:"\u732B\u732B\u5B50 Agent"}function il(e){var t=rl(e);if(!t)return t;var n=iu&&e&&e.taskId?iu.get(e.taskId):null;return Ov(n?t+n:t)}function al(e){var t=e&&(e.agentType||e.taskId)||"subagent";return tl[Pv(t,tl.length)]}function vh(e){var t=al(e),n=il(e),i=Mi(qi(t));return'<div class="chat-message-avatar assistant subagent" style="--agent-color:'+t.primary+'"><div class="pixel-avatar">'+i+'</div><span class="avatar-name">'+p(n)+"</span></div>"}function Hv(e,t){if(!e||e.type!=="tool_result")return"";var n=pn(e.content),i=e.is_error===!0,a=typeof n=="string"?n:n==null?"":String(n);if(!i&&!a.trim())return'<div class="subagent-reply pending"><span class="subagent-reply-marker pending">'+p(Ee("subagent.running"))+'</span><span class="typing-indicator"><span></span><span></span><span></span></span></div>';var u=a.trim()?a:Ee("subagent.no_output"),o=a.trim()?cu(u):p(u),s=Ee(i?"subagent.task.failed":"subagent.task.done"),l=i?"\u2717":"\u2713";return'<div class="subagent-reply final'+(i?" error":"")+'"><div class="subagent-reply-marker '+(i?"error":"done")+'"><span class="subagent-reply-marker-icon" aria-hidden="true">'+l+'</span><span class="subagent-reply-marker-label">'+p(s)+'</span></div><div class="subagent-reply-content">'+o+"</div></div>"}var Pi={assistant:Mi(qi(Mv)),user:Mi(qi(qv))},ul={user:{name:"\u8D5B\u535A\u864E\u599E",avatarSvg:Pi.user},assistant:{name:"\u52E4\u52B3\u521D\u4E8C",avatarSvg:Pi.assistant}};function au(e){var t=r.config&&r.config.structuredChatPersona,n=t&&t[e]?t[e]:null,i=ul[e]||ul.assistant;return{name:n&&typeof n.name=="string"&&n.name.trim()?n.name.trim():i.name,avatar:n&&typeof n.avatar=="string"&&n.avatar.trim()?n.avatar.trim():null,avatarSvg:i.avatarSvg}}function ol(e){return'<div class="pixel-avatar">'+e+"</div>"}function mh(e,t){if(!(!e||!e.parentNode)){var n=au(t==="user"?"user":"assistant");e.outerHTML=ol(n.avatarSvg)}}function Qn(e,t){t=t||{};var n=e==="user"?"user":"assistant",i=au(n),a=i.avatar?'<img class="pixel-avatar-image" src="'+p(i.avatar)+'" alt="'+p(i.name)+'" onerror="handleChatAvatarImageError(this, '+JSON.stringify(n)+')" />':ol(i.avatarSvg),u=t.leftSlot?t.leftSlot:"";return'<div class="chat-message-avatar '+e+'">'+a+'<span class="avatar-name">'+p(i.name)+"</span>"+u+"</div>"}function _v(){var e=Dt();return!e||!ue(e)?"":Al(e,{kind:"compact"})}function uu(e,t,n,i){if(e.role==="thinking"){var a=typeof e.content=="string"?e.content:"";if(!a.trim())return"";var u=Tt("thinking",[Xu(e,n),"pty"]),o=bt(u),s=o===null?Sn("thinking"):o;return'<div class="chat-message thinking"><div class="thinking-inline thinking-pty '+(s?"expanded":"collapsed")+'" data-expand-kind="thinking" data-expand-key="'+p(u)+'" data-thinking="'+p(a)+'" onclick="__thinkingToggle(this)"><span class="thinking-inline-icon">\u29BF</span><span class="thinking-inline-preview">'+p(a)+'</span><span class="thinking-inline-action">'+(s?"\u6536\u8D77":"\u5C55\u5F00")+"</span></div></div>"}if(e.role==="prompt")return'<div class="chat-message prompt"><div class="prompt-card"><div class="prompt-icon">\u2192</div><div class="prompt-content">\u8BD5\u8BD5\uFF1A<span class="prompt-text">'+p(e.content)+"</span></div></div></div>";if(Array.isArray(e.content))return im(e,t,n,i);var l=Qn(e.role),d=e.role==="assistant"?cu(e.content):e.role==="user"?vl(e.content):p(e.content);return'<div class="chat-message '+e.role+'">'+l+'<div class="chat-message-bubble">'+d+"</div></div>"}function Nv(e){var t={};if(!Array.isArray(e))return t;for(var n=0;n<e.length;n++){var i=e[n];if(i&&i.type==="tool_result"){var a=i.tool_use_id;if(!a)continue;t[a]||(t[a]=[]),t[a].push(i)}}return t}function sl(e,t){var n=e&&t?e[t]:null;if(!n||!n.length)return null;for(var i=0;i<n.length-1;i++)if(kl(n[i],n[i+1]))return n[i+1];return n[n.length-1]}function jv(e,t){var n=e&&t?e[t]:null;if(!n||n.length<2)return!1;for(var i=0;i<n.length-1;i++)if(kl(n[i],n[i+1]))return!0;return!1}function Rv(e){return'<div class="structured-tool-hint">\u5DF2\u81EA\u52A8\u6062\u590D\u4E00\u6B21 '+p(du(e))+" \u53C2\u6570\u95EE\u9898</div>"}var Wv={Read:1,Glob:1,Grep:1,WebFetch:1,WebSearch:1,TodoRead:1};function ll(e){if(!e||e.type!=="tool_use"||!Wv[e.name])return!1;if(e.name==="Read"){var t=e.input||{};if(Ou(t.file_path||t.path||""))return!1}return!0}function zv(e){for(var t=[],n=0;n<e.length;){var i=e[n];if(i.type==="tool_result"){n++;continue}if(ll(i)){for(var a=[{block:i,index:n}],u=n+1;u<e.length;){if(e[u].type==="tool_result"){u++;continue}if(ll(e[u]))a.push({block:e[u],index:u}),u++;else break}a.length>=2?t.push({type:"group",items:a,endIndex:u}):t.push({type:"single",block:i,index:n}),n=u}else t.push({type:"single",block:i,index:n}),n++}return t}var Vv={Read:"\u8BFB\u53D6",Glob:"\u641C\u7D22",Grep:"\u641C\u7D22",WebFetch:"\u6293\u53D6",WebSearch:"\u641C\u7D22",TodoRead:"\u5F85\u529E"};function Uv(e,t,n,i,a){for(var u=a||{},o={},s=0;s<e.length;s++){var l=e[s].block.name;o[l]=(o[l]||0)+1}for(var d=!0,f=!1,s=0;s<e.length;s++){var c=e[s].block,v=sl(n,c.id);v?v.is_error&&(f=!0):d=!1}var h=d?f?"\u2717":"\u2713":"\u2026",g=d?f?"error":"done":"pending",m=[];for(var y in o)m.push(o[y]+" "+(Vv[y]||y));for(var C=m.join(" \xB7 "),E=Tt("tool-group",[i,e[0]&&e[0].index,e.length]),B=bt(E),D=u.forceExpandedToolBodies?!0:B===null?Sn("toolGroup"):B,F="",s=0;s<e.length;s++)try{F+=ml(e[s].block,t,n,e[s].index,i,u)}catch{F+='<div class="render-error">\u5DE5\u5177\u6E32\u67D3\u5931\u8D25</div>'}return'<div class="tool-group" data-expand-kind="tool-group" data-expand-key="'+p(E)+'" data-expanded="'+(D?"true":"false")+'" data-status="'+g+'"><div class="tool-group-summary" onclick="__toolGroupToggle(this.parentNode)"><span class="tool-group-status">'+h+'</span><span class="tool-group-text">'+p(C)+'</span><span class="tool-group-count">'+e.length+' \u4E2A\u8C03\u7528</span><svg class="tool-group-chevron" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="transform:'+(D?"rotate(180deg)":"")+'"><polyline points="6 9 12 15 18 9"/></svg></div><div class="tool-group-body" style="display:'+(D?"block":"none")+';">'+F+"</div></div>"}window.__toolGroupToggle=function(e){if(e){var t=e.getAttribute("data-expanded")==="true";e.setAttribute("data-expanded",t?"false":"true");var n=e.querySelector(".tool-group-body");n&&(n.style.display=t?"none":"block");var i=e.querySelector(".tool-group-chevron");i&&(i.style.transform=t?"":"rotate(180deg)"),Nn(e,"tool-group")}};function Kv(e,t){for(var n=0,i=0,a=0,u={},o=0;o<t.length;o++){var s=e[t[o]];if(s){s.role==="user"&&n++;var l=s.content;if(Array.isArray(l))for(var d=0;d<l.length;d++){var f=l[d];if(f)if(f.__subagent&&f.__subagent.taskId&&(u[f.__subagent.taskId]=1),f.type==="tool_use"){i++;var c=Oi(f);c&&c.taskId&&(u[c.taskId]=1)}else f.type==="tool_result"&&f.is_error&&a++}}}var v=0;for(var h in u)Object.prototype.hasOwnProperty.call(u,h)&&v++;return{rounds:n,tools:i,agents:v,errors:a}}function dl(e){var t=[];return t.push(Ee("history.rounds",{n:String(e.rounds)})),e.tools>0&&t.push(Ee("history.tools",{n:String(e.tools)})),e.agents>0&&t.push(Ee("history.agents",{n:String(e.agents)})),e.errors>0&&t.push(Ee("history.errors",{n:String(e.errors)})),t.join(" \xB7 ")}function ou(e,t){for(var n=e.nextElementSibling;n;)n.classList.contains("chat-load-more")||(t?n.classList.remove("chat-history-hidden"):n.classList.add("chat-history-hidden")),n=n.nextElementSibling}function Jv(e,t,n,i){!e||!t||(Yv(e,t,!1),su(t),$v(e))}function gh(e){var t=e.querySelector("#chat-fold-bar");return t||(t=document.createElement("div"),t.id="chat-fold-bar",t.className="chat-fold-bar hidden",e.insertBefore(t,e.firstChild),t)}function Yv(e,t,n){e&&e.classList.toggle("auto-fold",!!n)}function hh(e,t){for(var n=[],i=0;i<t;i++)e[i]&&n.push(i);return n}function su(e){if(e)for(var t=e.querySelectorAll(".chat-auto-fold-hidden"),n=0;n<t.length;n++)t[n].classList.remove("chat-auto-fold-hidden")}function yh(e,t,n){if(su(e),!(!n||t<1)){for(var i=e.querySelectorAll(".chat-message:not(.system-info)"),a=0;a<i.length;a++){var u=i[a].getAttribute("data-msg-index");if(u!=null){var o=parseInt(u,10);!isNaN(o)&&o<t&&i[a].classList.add("chat-auto-fold-hidden")}}Gv(e)}}function Gv(e){var t=e?e.querySelector(".chat-history-summary"):null;if(t){t.setAttribute("data-expanded","false");var n=t.querySelector(".chat-history-summary-btn");n&&n.setAttribute("aria-expanded","false");var i=t.querySelector(".chat-history-summary-title");i&&(i.textContent=Ee("history.expand")),ou(t,!1),t.classList.add("chat-auto-fold-hidden");var a=e.getAttribute("data-history-sig");if(a){var u=a.split(":");u.length>=3&&(u[2]="0",e.setAttribute("data-history-sig",u.join(":")))}}}function Qv(e){!e||!e.isConnected||(Cn({removeDivider:!0}),zu(!0))}function $v(e){if(e){var t=e.querySelector("#chat-fold-bar");t&&(t.innerHTML="",t.classList.add("hidden"),r.chatAutoFoldSnapshot=null)}}function bh(e,t,n){var i=cl(e)||"\u65B0\u6D88\u606F",a=t?cl(t):"\u7B49\u5F85\u56DE\u590D...",u="";return n&&(u='<button type="button" class="chat-fold-row history" onclick="window.__chatFoldToggleHistory && window.__chatFoldToggleHistory()" title="\u5C55\u5F00\u6216\u6536\u8D77\u66F4\u65E9\u5BF9\u8BDD"><span class="chat-fold-role">\u5386\u53F2</span><span class="chat-fold-text">\u5DF2\u6536\u8D77 '+p(dl(n))+"</span></button>"),u+'<button type="button" class="chat-fold-row user" onclick="window.__chatFoldJumpToLatest && window.__chatFoldJumpToLatest()" title="\u5B9A\u4F4D\u5230\u6700\u65B0\u6D88\u606F"><span class="chat-fold-role">\u6211</span><span class="chat-fold-text">'+p(i)+'</span></button><button type="button" class="chat-fold-row assistant" onclick="window.__chatFoldJumpToLatest && window.__chatFoldJumpToLatest()" title="\u5B9A\u4F4D\u5230\u6700\u65B0\u56DE\u590D"><span class="chat-fold-role">Claude</span><span class="chat-fold-text">'+p(a)+"</span></button>"}function cl(e){if(!e)return"";var t=[];function n(o){if(typeof o=="string"){var s=o.replace(/\s+/g," ").trim();s&&t.push(s)}}if(typeof e.content=="string")n(e.content);else if(Array.isArray(e.content))for(var i=0;i<e.content.length&&t.join(" ").length<180;i++){var a=e.content[i];a&&(a.type==="text"?n(a.text):a.type==="thinking"?n(a.thinking):a.type==="tool_use"?n(a.name?"\u8C03\u7528 "+a.name:"\u5DE5\u5177\u8C03\u7528"):a.type==="tool_result"?n(a.is_error?"\u5DE5\u5177\u8FD4\u56DE\u9519\u8BEF":"\u5DE5\u5177\u8FD4\u56DE\u7ED3\u679C"):a.text&&n(a.text))}var u=t.join(" \xB7 ");return u.length>180?u.slice(0,177)+"...":u}window.__chatFoldJumpToLatest=function(){var e=document.querySelector("#chat-output .chat-messages");e&&Qv(e)},window.__chatFoldToggleHistory=function(){var e=document.querySelector("#chat-output .chat-history-summary"),t=e?e.querySelector(".chat-history-summary-btn"):null;e&&e.classList.remove("chat-auto-fold-hidden"),t&&window.__historySummaryToggle&&window.__historySummaryToggle(t)};function Xv(e,t,n,i){var a={shouldCollapseForViewport:!1,historyIndices:[],firstHistoryEl:null};if(!e||n<0)return a;for(var u=i&&(e.clientHeight||e.getBoundingClientRect().height)||0,o=null,s=null,l=0;l<t.length;l++){var d=t[l].getAttribute("data-msg-index");if(d!=null){var f=parseInt(d,10);isNaN(f)||(f<n?(a.historyIndices.push(f),a.firstHistoryEl||(a.firstHistoryEl=t[l])):i&&(o||(o=t[l]),s=t[l]))}}if(i&&u>0&&o&&s){var c=o.getBoundingClientRect(),v=s.getBoundingClientRect(),h=Math.max(c.bottom,v.bottom)-Math.min(c.top,v.top),g=Math.max(220,u-24);a.shouldCollapseForViewport=h>=g}return a}function Zv(e,t){if(!e)return;var n=r.currentMessages||[];t||(t=Dt());for(var i=-1,a=n.length-1;a>=0;a--)if(n[a]&&n[a].role==="user"){i=a;break}function u(){var F=e.querySelector(".chat-history-summary");F&&F.remove();for(var I=e.querySelectorAll(".chat-history-hidden"),L=0;L<I.length;L++)I[L].classList.remove("chat-history-hidden");e.removeAttribute("data-history-sig")}if(i<1){u();return}var o=e.querySelectorAll(".chat-message:not(.system-info)"),s=Dl(t),l=Xv(e,o,i,s&&r.chatStickToBottom);if(s&&(!r.chatStickToBottom||!l.shouldCollapseForViewport)){u();return}var d=l.historyIndices,f=l.firstHistoryEl;if(d.length<2||!f){u();return}var c=Kv(n,d),v=Tt("history-summary",[i]),h=bt(v)===!0,g=i+":"+d.length+":"+(h?1:0)+":"+c.rounds+":"+c.tools+":"+c.agents+":"+c.errors;if(!(e.getAttribute("data-history-sig")===g&&e.querySelector(".chat-history-summary"))){var m=e.querySelector(".chat-history-summary");m&&m.remove();for(var y=e.querySelectorAll(".chat-history-hidden"),C=0;C<y.length;C++)y[C].classList.remove("chat-history-hidden");var E=dl(c),B=Ee(h?"history.collapse":"history.expand"),D=document.createElement("div");D.className="chat-history-summary",D.setAttribute("data-expand-key",v),D.setAttribute("data-expanded",h?"true":"false"),D.innerHTML='<button class="chat-history-summary-btn" type="button" onclick="window.__historySummaryToggle(this)" aria-expanded="'+(h?"true":"false")+'"><span class="chat-history-summary-icon">'+V("folder",{size:15})+'</span><span class="chat-history-summary-body"><span class="chat-history-summary-title">'+p(B)+'</span><span class="chat-history-summary-meta">'+p(E)+'</span></span><span class="chat-history-summary-chevron">'+V("chevronDown",{size:16})+"</span></button>",e.insertBefore(D,f),ou(D,h),e.setAttribute("data-history-sig",g)}}window.__historySummaryToggle=function(e){var t=e&&e.closest?e.closest(".chat-history-summary"):null;if(t){var n=t.getAttribute("data-expand-key"),i=t.getAttribute("data-expanded")!=="true";t.setAttribute("data-expanded",i?"true":"false"),e.setAttribute("aria-expanded",i?"true":"false");var a=t.querySelector(".chat-history-summary-title");a&&(a.textContent=Ee(i?"history.collapse":"history.expand")),n&&$u(n,i),ou(t,i);var u=t.parentElement;if(i&&su(u),u){var o=u.getAttribute("data-history-sig");if(o){var s=o.split(":");s.length>=3&&(s[2]=i?"1":"0",u.setAttribute("data-history-sig",s.join(":")))}}}};function Oi(e){if(!e||e.type!=="tool_use")return null;var t=e.input||{},n=typeof t.subagent_type=="string"?t.subagent_type:null;return!n&&e.name!=="Task"&&e.name!=="Agent"?null:{taskId:e.id,agentType:n||void 0,taskDescription:typeof t.description=="string"?t.description:void 0}}function em(e){var t=new Map;if(!Array.isArray(e))return t;for(var n=0;n<e.length;n++){var i=e[n];if(!(!i||i.role!=="assistant"||!Array.isArray(i.content)))for(var a=0;a<i.content.length;a++){var u=i.content[a];if(!(!u||u.type!=="tool_use")){var o=u.__subagent||Oi(u);o&&t.set(u.id,o)}}}return t}function tm(e){var t=new Map;if(!Array.isArray(e))return t;var n=new Map,i=new Set;function a(f){if(!(!f||!f.taskId)&&!i.has(f.taskId)){i.add(f.taskId);var c=rl(f);c&&(n.has(c)||n.set(c,[]),n.get(c).push(f.taskId))}}for(var u=0;u<e.length;u++){var o=e[u];if(!(!o||!Array.isArray(o.content)))for(var s=0;s<o.content.length;s++){var l=o.content[s];if(l){var d=l.__subagent||(l.type==="tool_use"?Oi(l):null);d&&a(d)}}}return n.forEach(function(f){if(!(f.length<2))for(var c=0;c<f.length;c++)t.set(f[c]," #"+(c+1))}),t}function fl(e,t){var n=[];if(!Array.isArray(e)||!e.length)return n;for(var i=null,a=0;a<e.length;a++){var u=e[a],o=u&&u.type==="text"&&u.__processing===!0;if(o&&i){i.blocks.push(u);continue}var s=u&&u.__subagent?u.__subagent:null;s||(s=Oi(u)),!s&&u&&u.type==="tool_result"&&t&&t.has(u.tool_use_id)&&(s=t.get(u.tool_use_id));var l=s?s.taskId:null;(!i||i.key!==l)&&(i={key:l,subagent:s,blocks:[],firstIndex:a},n.push(i)),i.blocks.push(u)}return n}function lu(e,t,n,i,a,u){var o="",s=u||{};try{for(var l=zv(e),d=0;d<l.length;d++){var f=l[d];try{if(f.type==="group"){for(var c=[],v=0;v<f.items.length;v++)c.push({block:f.items[v].block,index:f.items[v].index+t});o+=Uv(c,n,i,a,s)}else o+=ml(f.block,n,i,f.index+t,a,s)}catch{o+='<div class="render-error">\u6D88\u606F\u5757\u6E32\u67D3\u5931\u8D25</div>'}}}catch{o+='<div class="render-error">\u6D88\u606F\u6E32\u67D3\u5931\u8D25</div>'}return o}function pl(e,t,n,i,a,u){for(var o=u||{},s=o.showHandoff!==!1,l="",d=null,f=0;f<e.length;f++){var c=e[f],v=c.subagent?{inSubagentPanel:!0}:{},h=lu(c.blocks,c.firstIndex,t,i,a,v);if(!(!h||!h.trim()))if(c.subagent){var g=s&&d!==c.subagent.taskId;l+=nm(c,n,h,a,g),d=c.subagent.taskId}else l+='<div class="chat-message-segment parent">'+Qn(t)+'<div class="chat-message-content">'+h+"</div></div>",d=null}return l}function nm(e,t,n,i,a){var u=e.subagent,o=al(u),s=il(u),l=u.taskId||"",d=Mi(qi(o)),f=rm(e.blocks),c;if(a){var v=!!(u.taskDescription&&String(u.taskDescription).trim()),h=v?'<span class="subagent-panel-task-desc">'+p(u.taskDescription)+"</span>":'<span class="subagent-panel-task-desc">'+p(Ee("subagent.continued"))+"</span>";c='<span class="subagent-panel-attribution"><strong class="subagent-panel-name">'+p(s)+'</strong><span class="subagent-panel-tag" title="'+p(Ee("subagent.tag_title"))+'">'+p(Ee("subagent.tag"))+"</span>"+h+"</span>"}else c='<span class="subagent-panel-attribution"><strong class="subagent-panel-name">'+p(s)+'</strong><span class="subagent-panel-task-desc"> '+p(Ee("subagent.continued"))+"</span></span>";var g=Tt("subagent-panel",[i,l]);return'<div class="subagent-panel" data-expand-kind="subagent-panel" data-expand-key="'+p(g)+'" data-agent-id="'+p(l)+'" data-expanded="true" style="--agent-color:'+o.primary+'"><div class="subagent-panel-header" aria-label="'+p(Ee("subagent.title_aria"))+'"><span class="subagent-panel-avatar" aria-hidden="true">'+d+"</span>"+c+'<span class="subagent-panel-count">'+p(f+" \u6761\u5185\u5BB9")+'</span></div><div class="subagent-panel-body">'+n+"</div></div>"}function rm(e){if(!Array.isArray(e))return 0;for(var t=0,n=0;n<e.length;n++){var i=e[n];!i||!i.type||i.type!=="tool_result"&&(i.type==="text"&&!String(i.text||"").trim()&&!i.__processing||i.type==="thinking"&&!String(i.thinking||"").trim()||t++)}return Math.max(1,t)}function im(e,t,n,i){var a=e.role,u=Xu(e,n),o=a==="assistant"?am(t):"",s=a==="user"&&e.content&&e.content.some(function(F){return F.__queued});if(!e.content||e.content.length===0)return a==="assistant"?'<div class="chat-message '+a+'">'+Qn(a)+'<div class="chat-message-content"><div class="typing-indicator"><span></span><span></span><span></span></div>'+o+"</div></div>":'<div class="chat-message '+a+' empty-message" data-message-key="'+p(u)+'">'+Qn(a)+'<div class="chat-message-content"><span class="empty-message-hint">\uFF08\u7A7A\u6D88\u606F\uFF09</span></div></div>';var l=Nv(e.content),d=au("assistant");if(a!=="assistant"){var f=fl(e.content,i),c=f.some(function(F){return F.subagent}),v=s?" queued":"",h=s?'<span class="queued-badge">\u6392\u961F\u4E2D</span>':"",g=_v();if(c){var m=pl(f,a,d.name,l,u,{showHandoff:!1});return'<div class="chat-message '+a+v+' multi-agent" data-message-key="'+p(u)+'">'+m+h+"</div>"}var y=lu(e.content,0,a,l,u);return'<div class="chat-message '+a+v+'" data-message-key="'+p(u)+'">'+Qn(a,{leftSlot:g})+'<div class="chat-message-content">'+y+h+"</div></div>"}var C=fl(e.content,i),E=C.some(function(F){return F.subagent});if(!E){var B=lu(e.content,0,a,l,u);return'<div class="chat-message '+a+'" data-message-key="'+p(u)+'">'+Qn(a)+'<div class="chat-message-content">'+B+o+"</div></div>"}var D='<div class="chat-message '+a+' multi-agent" data-message-key="'+p(u)+'">';return D+=pl(C,a,d.name,l,u,{showHandoff:!0}),D+=o,D+="</div>",D}function Pr(e){return e>=1e6?(e/1e6).toFixed(1).replace(/\.0$/,"")+"M":e>=1e3?(e/1e3).toFixed(1).replace(/\.0$/,"")+"k":String(Math.max(0,Math.round(e||0)))}function am(e){if(!e)return"";var t=e.estimated===!0,n=[];return(e.inputTokens||0)>0&&n.push("\u8F93\u5165 "+Pr(e.inputTokens)),(e.cacheReadInputTokens||0)>0&&n.push("\u7F13\u5B58\u547D\u4E2D "+Pr(e.cacheReadInputTokens)),(e.cacheCreationInputTokens||0)>0&&n.push("\u7F13\u5B58\u5199\u5165 "+Pr(e.cacheCreationInputTokens)),(e.outputTokens||0)>0&&n.push("\u8F93\u51FA "+(t?"\u2248":"")+Pr(e.outputTokens)),(e.reasoningOutputTokens||0)>0&&n.push("\u63A8\u7406 "+(t?"\u2248":"")+Pr(e.reasoningOutputTokens)),(e.totalCostUsd||0)>0&&n.push("$"+Number(e.totalCostUsd).toFixed(4).replace(/0+$/,"").replace(/\.$/,"")),n.length===0&&t&&n.push("\u6B63\u5728\u7EDF\u8BA1\u7528\u91CF\u2026"),n.length===0?"":'<div class="turn-usage-summary'+(t?" is-estimated":"")+'" role="status" aria-live="polite" aria-label="\u672C\u8F6E\u7528\u91CF '+p(n.join("\uFF0C"))+'"><svg class="turn-usage-icon" viewBox="0 0 16 16" aria-hidden="true"><path d="M2.5 13.5h11M4 11V7.5M8 11V3M12 11V5.5"/></svg><span>'+p(n.join(" \xB7 "))+"</span></div>"}var um=/^\s*\[附件已上传,请查看以下文件:\n([\s\S]*?)\]\n+/;function om(e){var t=(e||"").trim();if(!t)return"";var n=t.split("/").pop()||t;if(Ou(t)){var i="/api/file-raw?path="+encodeURIComponent(t);return'<div class="user-attachment-image"><img class="user-attachment-thumb" loading="lazy" src="'+i+'" alt="'+p(n)+'" data-path="'+p(t)+`" onclick="event.stopPropagation(); if(window.__openFilePreview)window.__openFilePreview(this.getAttribute('data-path'));" onerror="var w=this.closest('.user-attachment-image'); if(w)w.style.display='none';" /></div>`}return'<div class="user-attachment-file" data-path="'+p(t)+`" onclick="event.stopPropagation(); if(window.__openFilePreview)window.__openFilePreview(this.getAttribute('data-path'));"><span class="user-attachment-file-icon"><svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M9 1.5H4a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V5.5L9 1.5z"/><path d="M9 1.5V5.5h4"/></svg></span><span class="user-attachment-file-name">`+p(n)+"</span></div>"}function vl(e){var t=e||"",n=t.match(um);if(!n)return p(t);for(var i="",a=n[1].split(`
37
+ `),u=0;u<a.length;u++)i+=om(a[u]);var o=t.slice(n[0].length),s=i?'<div class="user-attachments">'+i+"</div>":"",l=o.trim()?'<div class="user-attachment-text">'+p(o)+"</div>":"";return s+l}function ml(e,t,n,i,a,u){var o=u||{};if(!e||!e.type||!o.inSubagentPanel&&e.type==="tool_use"&&e.__subagent&&e.__subagent.taskId===e.id)return"";if(e.type==="tool_result"&&e.__subagent&&e.__subagent.taskId===e.tool_use_id)return Hv(e,t);switch(e.type){case"text":return t==="assistant"&&e.__processing?'<div class="typing-indicator"><span></span><span></span><span></span></div>':t==="assistant"?cu(e.text||""):vl(e.text||"");case"thinking":var s=e.thinking||"",l=e.thinking===void 0&&e.type==="thinking";if(l)return'<div class="thinking-inline thinking-streaming" data-thinking=""><div class="thinking-streaming-inner"><span class="thinking-streaming-icon spinning">\u29BF</span><div class="thinking-streaming-text"></div></div></div>';if(!s.trim())return"";var d=s.length>60?s.slice(0,57)+"\u2026":s,f=Tt("thinking",[a,i]),c=bt(f),v=c===null?Sn("thinking"):c;return'<div class="thinking-inline '+(v?"expanded":"collapsed")+'" data-expand-kind="thinking" data-expand-key="'+p(f)+'" data-thinking="'+p(s)+'" onclick="__thinkingToggle(this)"><span class="thinking-inline-icon">\u29BF</span><span class="thinking-inline-preview">'+p(v?s:d)+'</span><span class="thinking-inline-action">'+(v?"\u6536\u8D77":"\u5C55\u5F00")+"</span></div>";case"tool_use":var h=sl(n,e.id),g=fm(e,h,i,a,o);return jv(n,e.id)&&(g=Rv(e.name||"\u5DE5\u5177")+g),g;case"tool_result":return"";default:var m=e&&e.type?String(e.type):"\u672A\u77E5",y="";try{y=JSON.stringify(e,null,2)}catch{y="{}"}return`<div class="unknown-block collapsed" onclick="this.classList.toggle('collapsed')"><div class="unknown-block-header"><span class="unknown-block-icon">?</span><span class="unknown-block-label">\u672A\u8BC6\u522B\u7684\u5185\u5BB9\u5757\uFF1A`+p(m)+'</span><span class="unknown-block-toggle">\u25BC</span></div><pre class="unknown-block-body">'+p(y)+"</pre></div>"}}function sm(e,t,n,i,a,u,o,s){var l=s||{},d=e.id||"tool-"+n,f=Tt("inline-tool",[u,d||o,o]),c=bt(f),v=e.input||{},h=pn(t&&t.content),g=t&&t.is_error,m=h.length>0,y=g?"\u2717":m?"\u2713":"\u2026",C="",E="",B="",D="";if(n==="Read"){C='<svg class="inline-tool-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M1 3.5A1.5 1.5 0 0 1 2.5 2h2.764c.958 0 1.76.56 2.311 1.184C8.405 3.77 9.146 4 10 4h3.5A1.5 1.5 0 0 1 15 5.5v7a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 1 12.5v-9z"/><path d="M2 5.5h12M2 8h8M2 10.5h5"/></svg>';var F=v.file_path||v.path||i||"",I="";v.limit&&(I=" "+v.offset+"-"+(v.offset+v.limit)),E=F,B=I}else if(n==="Glob"){C='<svg class="inline-tool-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="7" cy="7" r="5"/><path d="M10.5 10.5L14 14"/></svg>';var L=v.pattern||"",H=v.path||i||"";E=L,B=H}else if(n==="Grep"){C='<svg class="inline-tool-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="6.5" cy="6.5" r="4.5"/><path d="M11.5 11.5L15 15"/></svg>';var L=v.pattern||"",H=v.path||i||"";E=L,B=H,v.context&&(B+=" -C"+v.context)}else if(n==="WebFetch"){C='<svg class="inline-tool-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="8" cy="8" r="6.5"/><path d="M8 1.5v13M1.5 8h13"/></svg>';var U=v.url||"";E=U,B=a||""}else if(n==="WebSearch"){C='<svg class="inline-tool-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="7" cy="7" r="5"/><path d="M10.5 10.5L14 14"/><path d="M5 7h4M7 5v4"/></svg>';var x=v.query||"";E=x,B=a||""}else n==="TodoRead"?(C='<svg class="inline-tool-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="2" y="2" width="12" height="12" rx="2"/><path d="M5 8l2 2 4-4"/></svg>',E="\u8BFB\u53D6\u5F85\u529E\u5217\u8868",B=a||""):(C='<svg class="inline-tool-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="8" cy="8" r="6.5"/><path d="M8 5v3.5M8 11h.01"/></svg>',E=du(n),B=a||"");if(m){var k=h.split(`
38
38
  `);k.length>10?D=k.slice(0,10).join(`
39
39
  `)+`
40
- \u2026`:D=h}var T=p(h),M=p(D),Y=h,z="",Q=l.forceExpandedToolBodies?!0:c===null?Sn("inlineTools"):c;m?z='<div class="inline-tool-expanded" style="display: '+(Q?"block":"none")+';"><div class="inline-tool-result">'+ml(h,n)+"</div></div>":g?z='<div class="inline-tool-expanded" style="display: '+(Q?"block":"none")+';"><div class="inline-tool-result inline-tool-error">'+p(h||"\u64CD\u4F5C\u5931\u8D25")+"</div></div>":t||(z='<div class="inline-tool-expanded" style="display: '+(Q?"block":"none")+';"><div class="inline-tool-loading">\u7B49\u5F85\u54CD\u5E94\u2026</div></div>');var le=t&&t._truncated===!0,ee="";if(n==="Read"){var Z=v.file_path||v.path||i||"";if(Z&&qu(Z)){var q="/api/file-raw?path="+encodeURIComponent(Z);ee='<div class="inline-tool-image" onclick="event.stopPropagation();"><img class="inline-tool-image-thumb" loading="lazy" src="'+q+'" alt="'+p(F)+'" data-path="'+p(Z)+`" onclick="event.stopPropagation(); if(window.__openFilePreview)window.__openFilePreview(this.getAttribute('data-path'));" onerror="var w=this.closest('.inline-tool-image'); if(w)w.style.display='none';" /></div>`}}var P=B?'<span class="inline-tool-meta">'+p(B)+"</span>":"",N=g?"inline-tool-error-inline":"";Q&&(N+=" inline-tool-open");var G=le?'data-truncated="true" data-tool-use-id="'+p(e.id||"")+'" ':"";return'<div class="inline-tool '+N+'" data-expand-kind="inline-tool" data-expand-key="'+p(f)+'" data-result="'+p(Y)+'" data-preview="'+M+'" data-status="'+(g?"error":m?"done":"pending")+'" '+G+'onclick="__inlineToolToggle(this)"><div class="inline-tool-row"><span class="inline-tool-status">'+y+"</span>"+C+'<span class="inline-tool-title">'+p(E)+"</span>"+P+"</div>"+ee+z+"</div>"}function om(e,t,n,i,a,u){var o=u||{},s=e.input||{},l=s.command||s.cmd||"",d=pn(t&&t.content),f=e.id||"tool-"+n,c=Tt("terminal",[i,f||a,a]),v=yt(c),h=t&&t.is_error,g=s.exitCode,m=d.length>0,y="";t?h?y='<span class="term-status-dot term-error"></span>':g===0||g===void 0?y='<span class="term-status-dot term-success"></span>':y='<span class="term-status-dot term-warn"></span>':y='<span class="term-status-dot term-running"></span>';for(var C='<span class="term-prompt">$</span>',E=p(l),B=d.split(`
40
+ \u2026`:D=h}var T=p(h),M=p(D),Y=h,z="",Q=l.forceExpandedToolBodies?!0:c===null?Sn("inlineTools"):c;m?z='<div class="inline-tool-expanded" style="display: '+(Q?"block":"none")+';"><div class="inline-tool-result">'+hl(h,n)+"</div></div>":g?z='<div class="inline-tool-expanded" style="display: '+(Q?"block":"none")+';"><div class="inline-tool-result inline-tool-error">'+p(h||"\u64CD\u4F5C\u5931\u8D25")+"</div></div>":t||(z='<div class="inline-tool-expanded" style="display: '+(Q?"block":"none")+';"><div class="inline-tool-loading">\u7B49\u5F85\u54CD\u5E94\u2026</div></div>');var le=t&&t._truncated===!0,ee="";if(n==="Read"){var Z=v.file_path||v.path||i||"";if(Z&&Ou(Z)){var q="/api/file-raw?path="+encodeURIComponent(Z);ee='<div class="inline-tool-image" onclick="event.stopPropagation();"><img class="inline-tool-image-thumb" loading="lazy" src="'+q+'" alt="'+p(F)+'" data-path="'+p(Z)+`" onclick="event.stopPropagation(); if(window.__openFilePreview)window.__openFilePreview(this.getAttribute('data-path'));" onerror="var w=this.closest('.inline-tool-image'); if(w)w.style.display='none';" /></div>`}}var O=B?'<span class="inline-tool-meta">'+p(B)+"</span>":"",N=g?"inline-tool-error-inline":"";Q&&(N+=" inline-tool-open");var G=le?'data-truncated="true" data-tool-use-id="'+p(e.id||"")+'" ':"";return'<div class="inline-tool '+N+'" data-expand-kind="inline-tool" data-expand-key="'+p(f)+'" data-result="'+p(Y)+'" data-preview="'+M+'" data-status="'+(g?"error":m?"done":"pending")+'" '+G+'onclick="__inlineToolToggle(this)"><div class="inline-tool-row"><span class="inline-tool-status">'+y+"</span>"+C+'<span class="inline-tool-title">'+p(E)+"</span>"+O+"</div>"+ee+z+"</div>"}function lm(e,t,n,i,a,u){var o=u||{},s=e.input||{},l=s.command||s.cmd||"",d=pn(t&&t.content),f=e.id||"tool-"+n,c=Tt("terminal",[i,f||a,a]),v=bt(c),h=t&&t.is_error,g=s.exitCode,m=d.length>0,y="";t?h?y='<span class="term-status-dot term-error"></span>':g===0||g===void 0?y='<span class="term-status-dot term-success"></span>':y='<span class="term-status-dot term-warn"></span>':y='<span class="term-status-dot term-running"></span>';for(var C='<span class="term-prompt">$</span>',E=p(l),B=d.split(`
41
41
  `),D="",F=0;F<B.length;F++){var I=B[F];!I&&F===B.length-1||(D+='<div class="term-line">'+p(I)+"</div>")}var L="";if(t&&g!==void 0){var H=g===0?"term-exit-success":"term-exit-error";L='<div class="term-exit '+H+'">exit '+g+"</div>"}var U=l.length>80?l.slice(0,77)+"\u2026":l,x=o.forceExpandedToolBodies?!0:v===null?Sn("terminal"):v,k=t&&t._truncated===!0,T=k?' data-truncated="true" data-tool-use-id="'+p(e.id||"")+'"':"";return'<div class="inline-terminal" data-expand-kind="terminal" data-expand-key="'+p(c)+'" data-expanded="'+(x?"true":"false")+'"'+T+'><div class="term-header" role="button" tabindex="0" aria-expanded="'+(x?"true":"false")+`" onclick="__terminalExpand(this)" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();__terminalExpand(this);}">`+y+'<span class="term-cmd-preview"><span class="term-prompt">$</span> '+p(U)+'</span><span class="term-toggle-icon">'+(x?"\u25BC":"\u25B6")+'</span></div><div class="term-body" aria-hidden="'+(x?"false":"true")+'" style="display:'+(x?"block":"none")+';"><div class="term-command"><span class="term-prompt">$</span> '+E+"</div>"+(D?'<div class="term-output">'+D+"</div>":"")+L+"</div></div>"}function pn(e){return e?typeof e=="string"?e:Array.isArray(e)?e.map(function(t){if(!t||typeof t!="object")return"";if(t.type==="text"&&typeof t.text=="string")return t.text;try{return JSON.stringify(t)}catch{return""}}).filter(Boolean).join(`
42
- `):"":""}function sm(e,t,n,i,a,u){var o=u||{},s=e.input||{},l=s.file_path||s.path||"",d=l.split("/").pop()||l,f=e.id||"tool-"+n+"-"+(typeof a=="number"?a:0),c=s.old_string||"",v=s.new_string||s.content||"",h=s.old_content||"",g=s.new_content||"",m=s.unified_diff||s.diff||"",y=s.kind||"",C=n==="Write"||n==="MultiEdit",E=t&&t.is_error,B=pn(t&&t.content),D=!!(B&&B.trim().length>0),F="",I="",L="";m?L='<div class="diff-col diff-col-full"><div class="diff-col-label">Diff</div>'+lm(m)+"</div>":C?I='<div class="diff-line diff-add">+ '+p(g)+"</div>":(c&&(F='<div class="diff-line diff-remove">- '+p(c)+"</div>"),v&&(I='<div class="diff-line diff-add">+ '+p(v)+"</div>"));var H="",U="";t?E?(H="diff-error",U=B.indexOf("haven't granted")!==-1||B.indexOf("permission")!==-1?"\u7B49\u5F85\u6388\u6743":"\u5931\u8D25"):(H="diff-success",U=y==="add"?"\u5DF2\u65B0\u589E":y==="delete"?"\u5DF2\u5220\u9664":y==="move"?"\u5DF2\u79FB\u52A8":"\u5DF2\u4FEE\u6539"):(H="diff-pending",U="\u6267\u884C\u4E2D");var x=Tt("diff",[i,f||a,a]),k=yt(x),T=Sn("editCards"),M=o.forceExpandedToolBodies?!0:k===null?T:k,Y=M?"":" collapsed",z=!L&&F&&I,Q=z?"diff-col-half":"diff-col-full",le=L||(z?'<div class="diff-col '+Q+'"><div class="diff-col-label">\u65E7</div>'+F+"</div>":"")+'<div class="diff-col '+Q+'"><div class="diff-col-label">'+(z?"\u65B0":"")+"</div>"+(I||F||vl(l))+"</div>",ee=l?'<button class="diff-open-file" type="button" data-path="'+p(l)+`" title="\u6253\u5F00\u6587\u4EF6" onclick="event.stopPropagation(); if(window.__openFilePreview)window.__openFilePreview(this.getAttribute('data-path'));">\u6253\u5F00</button>`:"";return'<div class="inline-diff'+Y+'" data-tool-name="'+p(n)+'" data-expand-kind="diff" data-expand-key="'+p(x)+'" data-tool-use-id="'+p(f)+'" data-path="'+p(l)+'"><div class="diff-header" role="button" tabindex="0" aria-expanded="'+(M?"true":"false")+`" onclick="__tcToggle(event,this)" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();__tcToggle(event,this);}"><span class="diff-file-icon"></span><span class="diff-file-name">`+p(d)+"</span>"+mt(l,"diff-path")+'<span class="diff-status '+H+'">'+U+"</span>"+ee+'<span class="diff-toggle">\u25BC</span></div><div class="diff-body" aria-hidden="'+(M?"false":"true")+'"><div class="diff-columns">'+le+"</div></div></div>"}function lm(e){for(var t=String(e||"").split(`
43
- `),n=600,i="",a=0;a<t.length&&a<n;a++){var u=t[a],o="diff-context";/^@@/.test(u)?o="diff-hunk":/^\+/.test(u)&&!/^\+\+\+/.test(u)?o="diff-add":/^-/.test(u)&&!/^---/.test(u)&&(o="diff-remove"),i+='<div class="diff-line '+o+'">'+p(u||" ")+"</div>"}return t.length>n&&(i+='<div class="diff-line diff-context">\u2026\uFF08\u5DF2\u622A\u65AD '+(t.length-n)+" \u884C\uFF09</div>"),i||vl("")}function vl(e){var t=e?"\uFF0C\u53EF\u6253\u5F00\u6587\u4EF6\u67E5\u770B\u5F53\u524D\u5185\u5BB9":"";return'<div class="diff-empty">Codex \u672A\u63D0\u4F9B\u5185\u8054 diff'+t+"\u3002</div>"}function ml(e,t){return e?'<pre class="inline-tool-result-text" style="max-height: 300px; overflow-y: auto;">'+p(e)+"</pre>":'<span class="inline-tool-empty">\u65E0\u8F93\u51FA</span>'}function dm(e,t,n,i,a){var u=a||{},o=e.name||"unknown",s=e.id||"tool-"+o+"-"+(typeof n=="number"?n:0),l=fm(o,e.input);if(o==="Read"||o==="Glob"||o==="Grep"||o==="WebFetch"||o==="WebSearch"||o==="TodoRead")return um(e,t,o,l,"",i,n,u);if(o==="Bash")return om(e,t,o,i,n,u);if(o==="Edit"||o==="Write"||o==="MultiEdit")return sm(e,t,o,i,n,u);if(o==="AskUserQuestion"&&e.input&&e.input.questions){var d=e.input.questions;if(d&&d.length>0){for(var f=!!t,c=r.askUserSelections[s]||{},v=!!c.submitted,h=f?pn(t.content):"",g=h?h.trim().split(`
44
- `):[],m="",y=0;y<d.length;y++)if(d[y].header){m=d[y].header;break}var C=m?'<span class="tool-use-summary">'+p(m)+"</span>":"",E="";d.forEach(function(_e,$){var fe=!!_e.multiSelect,Ce=_e.question?'<div class="ask-user-title">'+p(_e.question)+"</div>":"",Be="";_e.options&&_e.options.length>0&&(Be='<div class="ask-user-options" data-multi-select="'+fe+'">',_e.options.forEach(function(ve,Fe){var tt=ve.label?p(ve.label):"\u9009\u9879 "+(Fe+1),dt=ve.description?'<div class="ask-user-option-desc">'+p(ve.description)+"</div>":"";if(f){var it=g[$]||g[0]||"",Ne=it.split(",").map(function(Oe){return Oe.trim()}),Rt=Ne.indexOf(ve.label||"")!==-1;Be+='<div class="ask-user-option ask-user-option-readonly'+(Rt?" ask-user-option-chosen":"")+'"><span class="ask-user-indicator"></span><div class="ask-user-option-content"><div class="ask-user-option-label">'+tt+"</div>"+dt+"</div></div>"}else{var Ye=(c[$]||[]).indexOf(Fe)!==-1,De=v?" disabled":"";Be+='<button class="ask-user-option'+(Ye?" selected":"")+'" data-option-index="'+Fe+'" data-question-index="'+$+'" data-option-label="'+p(ve.label||"\u9009\u9879 "+(Fe+1))+`" onclick="__askSelect('`+p(s)+"',"+$+","+Fe+","+fe+')"'+De+'><span class="ask-user-indicator"></span><div class="ask-user-option-content"><div class="ask-user-option-label">'+tt+"</div>"+dt+"</div></button>"}}),Be+="</div>"),E+='<div class="ask-user-question-group" data-question-index="'+$+'">'+Ce+Be+"</div>"});var B="";if(!f){for(var D=!0,F=0;F<d.length;F++)if(!c[F]||c[F].length===0){D=!1;break}var I=!D||v?" disabled":"",L=v?" ask-user-submitted":"",H=v?"\u5DF2\u63D0\u4EA4...":"\u786E\u8BA4\u63D0\u4EA4";B='<div class="ask-user-actions"><button class="ask-user-submit'+L+'" data-tool-use-id="'+p(s)+`" onclick="__askSubmit('`+p(s)+`')"`+I+">"+H+"</button></div>"}var U="";if(f&&h){var x=h.trim().replace(/\n/g,", ");x.length>40&&(x=x.slice(0,37)+"..."),U='<span class="tool-use-file">'+p(x)+"</span>"}var k=Tt("tool-card",[i,s]),T=yt(k),M=u.forceExpandedToolBodies?!0:T===null?!f:T,Y=M?"":" collapsed",z=f?" ask-user-answered":"";return'<div class="tool-use-card ask-user'+z+Y+'" data-tool-use-id="'+p(s)+'" data-expand-kind="tool-card" data-expand-key="'+p(k)+'"><div class="tool-use-header" data-tool-toggle onclick="__tcToggle(event,this)"><span class="tool-use-icon">'+(f?"\u2713":"?")+'</span><span class="tool-use-name">\u63D0\u95EE</span>'+C+U+'<span class="tool-use-toggle">\u25BC</span></div><div class="tool-use-body ask-user-body">'+E+B+"</div></div>"}}var Q=e.description||e.input&&e.input.description||"",le=cm(e.name,e.input),ee="",Z="";Q?(ee=Q.length>80?Q.slice(0,77)+"...":Q,l&&(Z='<span class="tool-use-file">'+p(l)+"</span>")):(ee=su(o),l&&(Z='<span class="tool-use-file">'+p(l)+"</span>"),le&&(Z+='<span class="tool-use-summary">'+p(le)+"</span>"));var q=e.input?JSON.stringify(e.input,null,2):"{}",P="loading",N='<span class="tool-use-spinner"></span>',G="";if(t){var J=t.is_error,ne=pn(t.content);P=J?"error":"success",N=gl(o);var de=ne&&ne.trim().length>0;de?G='<pre class="tool-use-result-content">'+p(ne)+"</pre>":G='<span class="tool-use-result-empty">\u65E0\u8F93\u51FA</span>'}else N=gl(o);var re=Tt("tool-card",[i,s]),ie=yt(re),qe=Sn("editCards"),ge=u.forceExpandedToolBodies?!0:ie===null?qe:ie,ce=t&&t._truncated===!0,R=ge?"":" collapsed",gt='<span class="tool-use-toggle">\u25BC</span>';return'<div class="tool-use-card '+P+R+'" data-expand-kind="tool-card" data-expand-key="'+p(re)+'" data-tool-use-id="'+p(s)+'"'+(ce?' data-truncated="true"':"")+'><div class="tool-use-header" role="button" tabindex="0" aria-expanded="'+(ge?"true":"false")+`" data-tool-toggle onclick="__tcToggle(event,this)" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();__tcToggle(event,this);}"><span class="tool-use-icon">`+N+'</span><span class="tool-use-name">'+p(ee)+"</span>"+Z+gt+'</div><div class="tool-use-body" aria-hidden="'+(ge?"false":"true")+'">'+(Q?'<div class="tool-use-meta"><span class="tool-use-meta-label">\u5DE5\u5177\uFF1A</span>'+p(o)+"</div>":"")+'<pre class="tool-use-content">'+p(q)+"</pre>"+(G?'<div class="tool-use-result">'+G+"</div>":"")+"</div></div>"}function su(e){var t={Read:"\u8BFB\u53D6\u6587\u4EF6",Write:"\u5199\u5165\u6587\u4EF6",Edit:"\u7F16\u8F91\u6587\u4EF6",MultiEdit:"\u591A\u5904\u7F16\u8F91",Bash:"\u6267\u884C\u547D\u4EE4",Grep:"\u641C\u7D22\u5185\u5BB9",Glob:"\u67E5\u627E\u6587\u4EF6",WebFetch:"\u83B7\u53D6\u7F51\u9875",WebSearch:"\u641C\u7D22\u7F51\u9875",Task:"\u4EFB\u52A1",TodoWrite:"\u66F4\u65B0\u5F85\u529E",TodoRead:"\u8BFB\u53D6\u5F85\u529E",NotebookEdit:"\u7F16\u8F91\u7B14\u8BB0\u672C",Agent:"\u5B50\u4EE3\u7406",AskUserQuestion:"\u63D0\u95EE",Exit:"\u9000\u51FA"};return t[e]||e}function gl(e){var t={Read:"R",Write:"W",Edit:"E",MultiEdit:"E",Bash:"$",Grep:"G",Glob:"F",WebFetch:"\u21E3",WebSearch:"\u21E2",Task:"T",TodoWrite:"\u2610",TodoRead:"\u2611",NotebookEdit:"N",Agent:"A",Exit:"\xD7"};return t[e]||"\xB7"}function cm(e,t){if(!t||typeof t!="object")return"";var n=Object.keys(t);if(n.length===0)return"{}";if(e==="Read")return"\u8BFB\u53D6\u6587\u4EF6";if(e==="Write")return"\u5199\u5165\u6587\u4EF6";if(e==="Edit"){var i=t.edits?t.edits.length:0;return"\u7F16\u8F91 ("+i+" \u5904\u4FEE\u6539)"}if(e==="Bash"){var a=t.command||"";if(a){var u=a.length>60?a.slice(0,60)+"...":a;return"\u547D\u4EE4\uFF1A"+u}}if(e==="Grep"){var o=t.pattern||"",s=t.path||"";if(o)return"\u641C\u7D22\uFF1A"+o+(s?" (\u5728 "+s+")":"")}if(e==="Glob"){var o=t.pattern||"";if(o)return"\u67E5\u627E\uFF1A"+o}if(e==="Agent"){var l=t.prompt||t.task||"";if(l){var d=l.length>40?l.slice(0,40)+"...":l;return"\u4EFB\u52A1\uFF1A"+d}}if(e==="Task"){var l=t.task||t.description||"";if(l){var d=l.length>40?l.slice(0,40)+"...":l;return"\u4EFB\u52A1\uFF1A"+d}}if(e==="TodoWrite"){var f=t.todos||[];return"\u66F4\u65B0\u5F85\u529E ("+f.length+" \u9879)"}if(e==="WebSearch"){var c=t.query||"";if(c)return"\u641C\u7D22\uFF1A"+c}var v=n[0],h=t[v];if(typeof h=="string"){var g=h.length>50?h.slice(0,50)+"...":h;return v+": "+g}return n.length+" \u4E2A\u53C2\u6570"}function fm(e,t){if(!t)return null;var n=t.file_path||t.path||t.cwd;return n?n.length>50?"..."+n.slice(-47):n:null}function pm(e){if(!e)return"";for(var t=`
45
- `,n=e.split(t),i=[],a=!1,u=0;u<n.length;u++){var o=n[u],s=o.trim();if(!(!a&&!s)){if(a=!0,s.indexOf("\u23FA")===0&&s.length>2){i.push(s.slice(1).trim());continue}if(s.indexOf("\u25CF")===0){if(s=s.slice(1).trim(),!s)continue;o=s}i.push(o)}}for(;i.length>0&&!i[i.length-1].trim();)i.pop();for(var l=[],d={},f=0;f<i.length;f++){var c=i[f].replace(/\s+/g,"");c.length>5&&d[c]||(c.length>5&&(d[c]=!0),l.push(i[f]))}return l.join(t)}function hl(e){var t=`
46
- `,n=e.split(t),i=[],a=0;function u(m){var y=m.trim();return y.charAt(0)==="|"&&(y=y.slice(1)),y.charAt(y.length-1)==="|"&&(y=y.slice(0,-1)),y.split("|")}function o(m){return m?' style="text-align:'+m+'"':""}function s(m,y,C){var E="<thead><tr>"+m.map(function(D,F){return"<th"+o(y[F])+">"+D.trim()+"</th>"}).join("")+"</tr></thead>",B=C.length?"<tbody>"+C.map(function(D){return"<tr>"+D.map(function(F,I){return"<td"+o(y[I])+">"+F.trim()+"</td>"}).join("")+"</tr>"}).join("")+"</tbody>":"";return'<div class="md-table-wrap"><table class="md-table">'+E+B+"</table></div>"}for(;a<n.length;){var l=n[a];if(l.indexOf("|")!==-1&&a+1<n.length){var d=n[a+1].trim();if(/^\|?\s*:?-+:?(\s*\|\s*:?-+:?)+\s*\|?$/.test(d)){for(var f=u(l),c=u(d).map(function(m){var y=m.trim(),C=y.charAt(0)===":",E=y.charAt(y.length-1)===":";return C&&E?"center":E?"right":C?"left":""}),v=[],h=a+2;h<n.length;){var g=n[h].trim();if(!g||g.indexOf("|")===-1)break;v.push(u(n[h])),h+=1}i.push("",s(f,c,v),""),a=h;continue}}i.push(l),a+=1}return i.join(t)}function lu(e){if(!e)return"";var t=p(e),n="`",i=`
47
- `;function a(q,P,N,G){for(var J=0;;){var ne=q.indexOf(P,J);if(ne===-1)break;var de=q.indexOf(P,ne+P.length);if(de===-1)break;var re=q.slice(ne+P.length,de);if(!re){J=de+P.length;continue}var ie=N+re+G;q=q.slice(0,ne)+ie+q.slice(de+P.length),J=ne+ie.length}return q}function u(q){return q>=48&&q<=57||q>=65&&q<=90||q>=97&&q<=122||q===95}function o(q,P,N){for(var G=0;G<q.length;){var J=q.indexOf("_",G);if(J===-1)break;var ne=J>0?q.charCodeAt(J-1):0;if(u(ne)){G=J+1;continue}for(var de=J+1,re=-1;de<q.length;){var ie=q.indexOf("_",de);if(ie===-1)break;var qe=ie+1,ge=qe<q.length?q.charCodeAt(qe):0;if(!u(ge)){re=ie;break}de=ie+1}if(re===-1)break;var ce=q.slice(J+1,re);if(!ce){G=re+1;continue}var R=P+ce+N;q=q.slice(0,J)+R+q.slice(re+1),G=J+R.length}return q}function s(q,P,N,G){return q.split(i).map(function(J){return J.indexOf(P)!==0?J:N+J.slice(P.length)+G}).join(i)}function l(q){return q.split(i).map(function(P){var N=P.indexOf(". ");if(N<=0)return P;for(var G=0;G<N;G+=1){var J=P.charCodeAt(G);if(J<48||J>57)return P}return"<li>"+P.slice(N+2)+"</li>"}).join(i)}function d(q){return q.split(i+i).map(function(P){var N=P.trim();return N?N.indexOf("<div")===0||N.indexOf("<h1")===0||N.indexOf("<h2")===0||N.indexOf("<h3")===0||N.indexOf("<h4")===0||N.indexOf("<h5")===0||N.indexOf("<h6")===0||N.indexOf("<ul")===0||N.indexOf("<ol")===0||N.indexOf("<li")===0||N.indexOf("<blockquote")===0||N.indexOf("<pre")===0?N:"<p>"+N.split(i).join("<br>")+"</p>":""}).join("")}for(var f=0;;){var c=t.indexOf(n+n+n,f);if(c===-1)break;var v=t.indexOf(n+n+n,c+3);if(v===-1)break;var h=t.slice(c+3,v),g=h.indexOf(i),m="",y=h;if(g!==-1&&g<30){for(var C=h.slice(0,g).trim(),E=C.length>0,B=0;B<C.length;B+=1){var D=C.charCodeAt(B),F=D>=48&&D<=57,I=D>=65&&D<=90,L=D>=97&&D<=122;if(!F&&!I&&!L){E=!1;break}}E&&(m=C,y=h.slice(g+1))}var H=vm(y.trim(),m),U=H.replace(/_/g,"&#95;").replace(/\*/g,"&#42;"),x='<div class="code-block"><div class="code-block-header"><span class="code-lang">'+(m||"code")+'</span><button class="code-copy">Copy</button></div><pre><code>'+U+"</code></pre></div>";t=t.slice(0,c)+x+t.slice(v+3),f=c+x.length}for(f=0;;){var k=t.indexOf(n,f);if(k===-1)break;var T=t.indexOf(n,k+1);if(T===-1)break;if(T===k+1){f=T+1;continue}var M=t.slice(k+1,T),Y=M.replace(/_/g,"&#95;").replace(/\*/g,"&#42;"),z='<code class="code-inline">'+Y+"</code>";t=t.slice(0,k)+z+t.slice(T+1),f=k+z.length}t=a(t,"**","<strong>","</strong>"),t=a(t,"*","<em>","</em>"),t=o(t,"<em>","</em>"),t=s(t,"### ","<h3>","</h3>"),t=s(t,"## ","<h2>","</h2>"),t=s(t,"# ","<h1>","</h1>"),t=s(t,"&gt; ","<blockquote>","</blockquote>"),t=s(t,"- ","<li>","</li>"),t=s(t,"* ","<li>","</li>"),t=l(t),t=hl(t);var Q=t.split(i),le=[],ee=[];function Z(){ee.length&&(le.push("<ul>"+ee.join("")+"</ul>"),ee=[])}return Q.forEach(function(q){if(q.indexOf("<li>")===0&&q.lastIndexOf("</li>")===q.length-5){ee.push(q);return}Z(),le.push(q)}),Z(),t=d(le.join(i)),'<div class="markdown-content">'+t+"</div>"}function vm(e,t){return e=e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e}function $n(e){var t=String(e||"").trim();return t.length<=24?t||"\u672A\u9009\u62E9\u4F1A\u8BDD":t.slice(0,21)+"..."}function du(e){return String(e||"").replace(/\r\r\n/g,`\r
48
- `).replace(/\u0000/g,"")}function mm(){var e=document.getElementById("login-cert-hint");e&&e.classList.remove("hidden");var t=document.getElementById("login-cert-http-link");t&&(t.href="http://"+location.host+location.pathname,t.style.display=location.protocol==="https:"?"":"none")}function gm(){var e=document.getElementById("login-cert-hint");e&&e.classList.add("hidden")}function cu(){if(!r.loginPending){var e=document.getElementById("password"),t=document.getElementById("login-button"),n=document.getElementById("login-error");!e||!t||!n||(yi(n),gm(),e.dataset.error="false",e.setAttribute("aria-invalid","false"),r.loginPending=!0,t.disabled=!0,t.textContent="\u767B\u5F55\u4E2D...",fetch("/api/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:e.value}),credentials:"same-origin"}).then(function(i){return i.status===429?(He(n,"\u767B\u5F55\u5C1D\u8BD5\u6B21\u6570\u8FC7\u591A\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5\u3002"),Promise.reject("handled")):i.ok?fetch("/api/config",{credentials:"same-origin"}):(e.dataset.error="true",e.setAttribute("aria-invalid","true"),He(n,"\u5BC6\u7801\u9519\u8BEF\uFF0C\u8BF7\u91CD\u8BD5\u3002"),Promise.reject("handled"))}).then(function(i){return i.ok?i.json():(location.protocol==="https:"?mm():He(n,"\u767B\u5F55\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002"),Promise.reject("handled"))}).then(function(i){r.config=i;var a=document.getElementById("status-dot"),u=document.getElementById("status-text");return a&&a.classList.add("active"),u&&(u.textContent="\u5DF2\u767B\u5F55"),Pt()}).then(function(){_o(),Qt()}).catch(function(i){i!=="handled"&&(console.error("[wand] Login error:",i),He(n,"\u767B\u5F55\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002"))}).finally(function(){r.loginPending=!1,t.disabled=!1,t.textContent="\u8FDB\u5165\u63A7\u5236\u53F0"}))}}function fu(){return typeof WandNative<"u"&&typeof WandNative.switchServer=="function"}function yl(){if(fu())try{WandNative.switchServer()}catch{}}function hm(){return typeof WandNative<"u"&&typeof WandNative.backToNative=="function"?!0:typeof window.__wandBackToNative=="function"}function ym(){try{if(typeof WandNative<"u"&&typeof WandNative.backToNative=="function"){WandNative.backToNative();return}typeof window.__wandBackToNative=="function"&&window.__wandBackToNative()}catch{}}function bl(){fetch("/api/logout",{method:"POST",credentials:"same-origin"}).catch(function(){}),Vo(),Mn(!1),Va(),Fr(),r.config=null,r.selectedId=null,he(),r.sessions=[],r.claudeHistory=[],r.claudeHistoryLoaded=!1,r.claudeHistoryExpanded=!1,r.claudeHistoryExpandedDirs={},r.sessionsDrawerOpen=!1,Se("wand-sidebar-open",!1),Qt()}function Pt(){return mn()}function pu(e){return e==="full-access"?"\u5168\u6743\u9650":e==="default"?"\u9ED8\u8BA4":e==="native"?"\u539F\u751F":e==="auto-edit"?"\u81EA\u52A8\u7F16\u8F91":e==="managed"?"\u6258\u7BA1":e}function Xe(){return r.sessionTool||r.preferredCommand||"claude"}function bm(){var e=r.sessions.find(function(t){return t.id===r.selectedId});return e&&e.provider||r.preferredCommand||"claude"}function El(e,t){return t?"\u952E\u76D8\u8F93\u5165\u5C06\u53D1\u9001\u5230\u7EC8\u7AEF":e&&(e.status==="exited"||e.status==="failed"||e.status==="stopped")?ja(e)?"\u8F93\u5165\u6D88\u606F\u4EE5\u7EE7\u7EED\u4F1A\u8BDD":"\u4F1A\u8BDD\u5DF2\u7ED3\u675F":ue(e)&&e.structuredState&&e.structuredState.inFlight?"\u56DE\u590D\u4E2D\uFF0C\u53EF\u7EE7\u7EED\u8F93\u5165":"\u8F93\u5165\u6D88\u606F"}function Fl(e,t){return e==="codex"?"Codex \u652F\u6301 PTY \u7EC8\u7AEF\u4E0E\u7ED3\u6784\u5316\uFF08JSONL\uFF09\u4E24\u79CD\u4F1A\u8BDD\uFF0C\u7ED3\u6784\u5316\u6A21\u5F0F\u6309 full-access \u542F\u52A8\u3002":t==="full-access"?"\u81EA\u52A8\u786E\u8BA4\u6743\u9650\u8BF7\u6C42\u4E0E\u9AD8\u6743\u9650\u64CD\u4F5C\uFF0C\u9002\u5408\u4F60\u786E\u8BA4\u73AF\u5883\u5B89\u5168\u540E\u7684\u8FDE\u7EED\u4FEE\u6539\u3002":t==="auto-edit"?"\u4FDD\u7559\u4EA4\u4E92\u5F0F\u4F1A\u8BDD\uFF0C\u540C\u65F6\u66F4\u504F\u5411\u76F4\u63A5\u7F16\u8F91\u4EE3\u7801\u3002":t==="native"?"\u8C03\u7528 Claude \u539F\u751F API \u8F93\u51FA\uFF0C\u9002\u5408\u5FEB\u901F\u95EE\u7B54\u6216\u4E00\u6B21\u6027\u751F\u6210\u3002":t==="managed"?"AI \u81EA\u52A8\u5B8C\u6210\u6240\u6709\u5DE5\u4F5C\uFF0C\u65E0\u9700\u4E2D\u9014\u786E\u8BA4\uFF0C\u9002\u5408\u6709\u660E\u786E\u76EE\u6807\u7684\u4EFB\u52A1\u3002":"\u4FDD\u7559\u6807\u51C6\u4EA4\u4E92\u6D41\u7A0B\uFF0C\u9002\u5408\u624B\u52A8\u786E\u8BA4\u6BCF\u4E00\u6B65\u3002"}function vu(e){return e==="codex"?["full-access"]:["default","full-access","auto-edit","native","managed"]}function Dt(e,t){var n=vu(e);if(n.indexOf(t)!==-1)return t;var i=r.config&&r.config.defaultMode?r.config.defaultMode:"default";return n.indexOf(i)!==-1?i:n[0]}function hh(e,t){return vu(e).map(function(n){var i=wl(n);return'<option value="'+p(n)+'"'+(n===t?" selected":"")+' title="'+i+'">'+p(pu(n))+"</option>"}).join("")}function wl(e){var t={default:"\u6807\u51C6\u6A21\u5F0F - \u9700\u8981\u786E\u8BA4\u6587\u4EF6\u4FEE\u6539","full-access":"\u5B8C\u5168\u8BBF\u95EE - \u81EA\u52A8\u786E\u8BA4\u6743\u9650\u4E0E\u64CD\u4F5C","auto-edit":"\u81EA\u52A8\u7F16\u8F91 - \u81EA\u52A8\u786E\u8BA4\u6587\u4EF6\u4FEE\u6539",native:"\u539F\u751F\u6A21\u5F0F - \u8FD4\u56DE\u7ED3\u6784\u5316\u8F93\u51FA",managed:"\u6258\u7BA1\u6A21\u5F0F - AI \u81EA\u52A8\u5B8C\u6210\u6240\u6709\u5DE5\u4F5C"};return t[e]||""}function Em(e){var t=e&&e.provider?e.provider:"claude";return(ue(e)?"\u7ED3\u6784\u5316":"\u7EC8\u7AEF")+" \xB7 "+t}function Fm(e){return ue(e)?"\u7ED3\u6784\u5316 \xB7 \u5757\u7EA7\u8BB0\u5F55":e&&e.provider==="codex"?"\u7EC8\u7AEF \xB7 Codex PTY\uFF08chat \u4E3A\u89E3\u6790\u89C6\u56FE\uFF09":"\u7EC8\u7AEF \xB7 PTY \u4F1A\u8BDD"}function Cl(e){return e?ue(e)||e.provider==="codex":!1}function Bl(e,t){if(!e||!e.is_error||!t||t.is_error)return!1;var n=pn(e.content).toLowerCase(),i=pn(t.content).toLowerCase();return n?n.indexOf("invalid pages parameter")!==-1&&i.length>0:!1}function ue(e){return!!e&&(e.sessionKind==="structured"||e.runner==="claude-cli-print")}function Hi(){r.chatMode=Dt("claude",r.chatMode);var e=document.getElementById("mode-hint");e&&(e.textContent=wl(r.chatMode)),qn()}function Dl(e,t){t=t||{};var n=t.kind==="compact"||t.kind==="popover"?t.kind:"dropdown",i=Xe(),a=r.chatMode||"default",u=Pr(e)||"",o=Ni(u,e),s=bu(e);function l(f,c,v,h){var g=n==="compact"?"":'<span class="chat-mode-trio-tag">'+p(c)+"</span>";return'<span class="composer-text-pill chat-mode-trio-pill" data-mode-control-pill="'+f+'" title="'+p(c)+'">'+g+'<span class="composer-text-label">'+p(v)+'</span><select class="composer-text-hidden-select" data-mode-control="'+f+'" tabindex="-1" aria-label="'+p(c)+'">'+h+"</select></span>"}function d(){return'<span class="composer-text-pill chat-mode-trio-pill thinking-slider-shell" data-mode-control-pill="thinking" title="\u601D\u8003\u6DF1\u5EA6">'+(n==="compact"?"":'<span class="chat-mode-trio-tag">\u601D\u8003</span>')+'<span class="composer-text-label thinking-slider-value">'+p(Zn(s,e))+"</span>"+xl(s,e)+"</span>"}return'<div class="chat-mode-trio chat-mode-trio-'+n+'" role="group" aria-label="\u4F1A\u8BDD\u8BBE\u7F6E">'+l("mode","\u6A21\u5F0F",a,ji(i,a))+'<span class="composer-text-sep" aria-hidden="true">\xB7</span>'+l("model","\u6A21\u578B",o,Ll(u,e))+'<span class="composer-text-sep" aria-hidden="true">\xB7</span>'+d()+"</div>"}function kl(e,t){var n=Zn(e,t);return n==="low"?"\u4F4E":n==="medium"?"\u4E2D":n==="high"?"\u9AD8":n==="xhigh"?"\u8D85\u9AD8":n==="max"?"\u6781\u9AD8":n==="ultra"?"\u6781\u9650":"\u5173"}function _i(e,t){var n=e||"",i=yu(t);if(!n||n==="default"){for(var a=0;a<i.length;a++)if(i[a].id==="default")return i[a].label||i[a].id;return"\u9ED8\u8BA4"}for(var u=0;u<i.length;u++)if(i[u].id===n)return i[u].label||i[u].id;return n}function Ni(e,t){var n=_i(e,t);if(!n||n==="\u8DDF\u968F\u670D\u52A1\u7AEF\u9ED8\u8BA4")return"\u9ED8\u8BA4";var i=n.search(/[((]/);i>0&&(n=n.slice(0,i).trim());var a=n.lastIndexOf("/");a>=0&&a<n.length-1&&(n=n.slice(a+1).trim());var u=n.toLowerCase();return u.indexOf("opus")!==-1?"Opus":u.indexOf("sonnet")!==-1?"Sonnet":u.indexOf("haiku")!==-1?"Haiku":u.indexOf("gpt-5.5")!==-1?"GPT-5.5":u.indexOf("gpt-5")!==-1?"GPT-5":u.indexOf("gpt-4")!==-1?"GPT-4":n.length>12?n.slice(0,10)+"\u2026":n}function Al(e){return e.length<=1?'<span class="thinking-slider-node" style="left:50%"></span>':e.map(function(t,n){return'<span class="thinking-slider-node" style="left:'+n/(e.length-1)*100+'%"></span>'}).join("")}function xl(e,t){var n=Wi(t),i=Math.max(0,n.findIndex(function(l){return l.id===e})),a=Math.max(0,n.length-1),u=a?i/a*100:0,o=p(JSON.stringify(n.map(function(l){return l.id}))),s=p(JSON.stringify(n.map(function(l){return l.label})));return'<span class="thinking-slider-rail" style="--thinking-progress:'+u+'%"><span class="thinking-slider-nodes" aria-hidden="true">'+Al(n)+'</span><input class="thinking-discrete-range" type="range" min="0" max="'+a+'" step="1" value="'+i+'" data-mode-control="thinking" data-thinking-values="'+o+'" data-thinking-labels="'+s+'" aria-label="\u601D\u8003\u6DF1\u5EA6" aria-valuetext="'+p(n[i]?.label||"auto")+'"></span>'}function Sl(e,t,n){var i=Wi(n),a=Math.max(0,i.findIndex(function(d){return d.id===t})),u=Math.max(0,i.length-1),o=e.querySelector(".thinking-discrete-range"),s=e.querySelector(".thinking-slider-rail"),l=e.querySelector(".thinking-slider-nodes");!o||!s||(o.max=String(u),o.value=String(a),o.dataset.thinkingValues=JSON.stringify(i.map(function(d){return d.id})),o.dataset.thinkingLabels=JSON.stringify(i.map(function(d){return d.label})),o.setAttribute("aria-valuetext",i[a]?.label||"auto"),s.style.setProperty("--thinking-progress",(u?a/u*100:0)+"%"),l&&(l.innerHTML=Al(i)))}function Il(e){var t=Xe(),n=r.chatMode||"default",i=Pr(e)||"",a=bu(e),u=pu(n),o=Ni(i,e),s=kl(a,e),l="\u6A21\u5F0F "+u+" \xB7 \u6A21\u578B "+o+" \xB7 \u601D\u8003 "+s;return'<div class="composer-config-controls" role="group" aria-label="\u4F1A\u8BDD\u8BBE\u7F6E" title="'+p(l)+'"><span class="composer-config-chip composer-config-chip-mode" data-mode-control-pill="mode" title="\u6A21\u5F0F\uFF1A'+p(u)+'">'+V("shield",{size:13,strokeWidth:1.8,cls:"composer-config-icon"})+'<span class="composer-config-label">'+p(u)+'</span><select class="composer-text-hidden-select" data-mode-control="mode" tabindex="-1" aria-label="\u6A21\u5F0F">'+ji(t,n)+'</select></span><span class="composer-config-model-thinking" data-thinking="'+p(a)+'" title="\u6A21\u578B\u4E0E\u601D\u8003\u6DF1\u5EA6"><span class="composer-config-part composer-config-model" data-mode-control-pill="model">'+V("cpu",{size:13,strokeWidth:1.8,cls:"composer-config-icon"})+'<span class="composer-config-label">'+p(o)+'</span><select class="composer-text-hidden-select" data-mode-control="model" tabindex="-1" aria-label="\u6A21\u578B">'+Tl(i,e)+'</select></span><span class="composer-config-part composer-config-thinking" data-mode-control-pill="thinking" data-thinking="'+p(a)+'">'+V("brain",{size:13,strokeWidth:1.8,cls:"composer-config-icon"})+'<span class="composer-config-label thinking-slider-value">'+p(Zn(a,e))+"</span>"+xl(a,e)+"</span></span></div>"}function qn(){var e=st(),t=Xe(),n=r.chatMode||"default",i=Pr(e)||"",a=Ni(i,e),u=bu(e),o=document.querySelectorAll(".chat-mode-trio");o.forEach(function(s){function l(d,f,c,v){var h=s.querySelector('[data-mode-control-pill="'+d+'"]');if(h){var g=h.querySelector(".composer-text-label");if(g&&(g.textContent=v||f),d==="thinking"){Sl(h,f,e);return}var m=h.querySelector('[data-mode-control="'+d+'"]');m&&(c&&(m.innerHTML=c),m.value!==f&&(m.value=f))}}l("mode",n,ji(t,n)),l("model",i,Ll(i,e),a),l("thinking",u,"",Zn(u,e))}),wm(e,n,Pr(e)||"",u)}function wm(e,t,n,i){var a=Xe(),u=pu(t),o=Ni(n,e),s=kl(i,e),l=document.querySelectorAll(".composer-config-controls");l.forEach(function(d){var f="\u6A21\u5F0F "+u+" \xB7 \u6A21\u578B "+o+" \xB7 \u601D\u8003 "+s;d.setAttribute("title",f);function c(B,D,F){var I=B.querySelector("[data-mode-control]");I&&(I.innerHTML=F,I.value=D)}var v=d.querySelector('[data-mode-control-pill="mode"]');if(v){var h=v.querySelector(".composer-config-label");h&&(h.textContent=u),v.setAttribute("title","\u6A21\u5F0F\uFF1A"+u),c(v,t,ji(a,t))}var g=d.querySelector('[data-mode-control-pill="model"]');if(g){var m=g.querySelector(".composer-config-label");m&&(m.textContent=o),c(g,n,Tl(n,e))}var y=d.querySelector('[data-mode-control-pill="thinking"]');if(y){var C=y.querySelector(".composer-config-label");C&&(C.textContent=Zn(i,e)),y.setAttribute("data-thinking",i),Sl(y,i,e)}var E=d.querySelector(".composer-config-model-thinking");E&&E.setAttribute("data-thinking",i)})}function ji(e,t){return vu(e).map(function(n){return'<option value="'+p(n)+'"'+(n===t?" selected":"")+">"+p(n)+"</option>"}).join("")}function Ri(e){return e==="codex"?"codex":"claude"}function mu(e){return Ri(e&&e.provider||r.sessionTool||"claude")}function gu(){var e=r.config&&r.config.defaultModels&&typeof r.config.defaultModels=="object"?r.config.defaultModels:{};return{claude:typeof e.claude=="string"?e.claude:r.config&&r.config.defaultModel||"",codex:typeof e.codex=="string"?e.codex:r.config&&r.config.defaultCodexModel||""}}function Cm(e){var t=gu();return Ri(e)==="codex"?t.codex||"":t.claude||""}function Or(e){var t=Ri(e),n=r.chatModels&&typeof r.chatModels[t]=="string"?r.chatModels[t]:"";return!n&&t==="claude"&&(n=r.chatModel||""),n||""}function hu(e,t){var n=Ri(e),i=(t||"").trim();r.chatModels||(r.chatModels={claude:"",codex:""}),r.chatModels[n]=i,r.chatModel=i;try{localStorage.setItem("wand-chat-model-"+n,i),localStorage.removeItem("wand-chat-model")}catch{}}function Pr(e){if(e&&e.selectedModel)return e.selectedModel;var t=mu(e),n=Or(t);return n||Cm(t)||""}function yu(e){var t=e&&e.provider||r.sessionTool||"claude";return t==="codex"?r.availableCodexModels||[]:r.availableModels||[]}function Tl(e,t){for(var n=yu(t),i=e==="default"?"":e||"",a='<option value=""'+(i?"":" selected")+">\u9ED8\u8BA4 \xB7 "+p(_i("",t))+"</option>",u=0;u<n.length;u++){var o=n[u];if(o.id!=="default"){var s=o.label||o.id;a+='<option value="'+p(o.id)+'"'+(o.id===i?" selected":"")+">"+p(s)+"</option>"}}return i&&!n.some(function(l){return l.id===i})&&(a+='<option value="'+p(i)+'" selected>'+p(i)+"\uFF08\u81EA\u5B9A\u4E49\uFF09</option>"),a}function Ll(e,t){for(var n=yu(t),i=e==="default"?"":e||"",a='<option value=""'+(i?"":" selected")+">"+p(_i("",t))+"</option>",u=0;u<n.length;u++){var o=n[u];o.id!=="default"&&(a+='<option value="'+p(o.id)+'"'+(o.id===i?" selected":"")+">"+p(o.id)+"</option>")}return i&&!n.some(function(s){return s.id===i})&&(a+='<option value="'+p(i)+'" selected>'+p(i)+"</option>"),a}function Xn(e){qn()}var Hr=[{id:"off",label:"auto",hint:"Claude CLI: auto/default \xB7 SDK \u5173\u95ED thinking \xB7 Codex \u4F7F\u7528\u6A21\u578B\u9ED8\u8BA4\u503C"},{id:"standard",label:"low",hint:"Claude CLI: low \xB7 SDK budget 4096 \xB7 Codex low"},{id:"deep",label:"medium",hint:"Claude CLI: medium \xB7 SDK budget 16000 \xB7 Codex medium"},{id:"max",label:"max",hint:"Claude CLI: max \xB7 SDK budget 31999 \xB7 Codex xhigh"}];function Bm(e){return e==="low"?"standard":e==="medium"?"deep":e==="xhigh"?"max":"codex:"+e}function Wi(e){if(mu(e)!=="codex")return Hr;var t=Pr(e)||"default",n=r.availableCodexModels||[],i=n.find(function(o){return o.id===t})||n.find(function(o){return o.id==="default"}),a=i&&Array.isArray(i.reasoningEfforts)?i.reasoningEfforts:[];if(!a.length)return Hr;var u=i.defaultReasoningEffort||"";return[{id:"off",label:"auto",hint:u?"\u4F7F\u7528\u6A21\u578B\u9ED8\u8BA4\u6863\u4F4D\uFF08"+u+"\uFF09":"\u4F7F\u7528\u6A21\u578B\u9ED8\u8BA4\u6863\u4F4D"}].concat(a.map(function(o){var s=String(o.effort||"").toLowerCase();return{id:Bm(s),label:s,hint:o.description||s}}).filter(function(o){return o.label}))}function Zn(e,t){for(var n=Wi(t),i=0;i<n.length;i++)if(n[i].id===e)return n[i].label;if(typeof e=="string"&&e.indexOf("codex:")===0)return e.slice(6);for(var a=0;a<Hr.length;a++)if(Hr[a].id===e)return Hr[a].label;return"auto"}function bu(e){return e&&e.thinkingEffort?e.thinkingEffort:r.chatThinking?r.chatThinking:"off"}function yh(e){qn()}function Dm(e){var t=(e||"off").trim(),n=st(),i=Wi(n).some(function(a){return a.id===t});i||(t="off"),r.chatThinking=t;try{localStorage.setItem("wand-thinking-effort",t)}catch{}qn(),n&&fetch("/api/sessions/"+encodeURIComponent(n.id)+"/thinking-effort",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({thinkingEffort:t})}).then(function(a){return a.json()}).then(function(a){if(a&&a.error){A(a.error,"error");return}a&&a.id&&(X(a),typeof A=="function"&&A("\u5DF2\u5207\u6362\u601D\u8003\u6DF1\u5EA6 \u2192 "+Zn(t,n),"success"))}).catch(function(){A("\u5207\u6362\u601D\u8003\u6DF1\u5EA6\u5931\u8D25","error")})}function Ml(e){if(!e)return!1;var t=e.mode;return t==="managed"||t==="full-access"}function km(e){if(!e||Ml(e))return"";var t=!!e.autoApprovePermissions;return t?'<button id="auto-approve-toggle" class="composer-pill composer-pill-chip auto-approve-indicator active" type="button" aria-pressed="true" aria-label="\u81EA\u52A8\u6279\u51C6\u5DF2\u542F\u7528\uFF0C\u70B9\u51FB\u5173\u95ED" title="\u81EA\u52A8\u6279\u51C6\u5DF2\u542F\u7528 \u2014 \u70B9\u51FB\u5173\u95ED">'+V("shieldCheck",{size:12,strokeWidth:1.7,cls:"composer-pill-icon"})+'<span class="composer-pill-label">\u81EA\u52A8</span></button>':'<button id="auto-approve-toggle" class="composer-pill composer-pill-chip auto-approve-indicator" type="button" aria-pressed="false" aria-label="\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED\uFF0C\u70B9\u51FB\u5F00\u542F" title="\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED \u2014 \u70B9\u51FB\u5F00\u542F">'+V("shield",{size:12,strokeWidth:1.7,cls:"composer-pill-icon"})+'<span class="composer-pill-label">\u624B\u52A8</span></button>'}function ql(){return fetch("/api/models",{credentials:"same-origin"}).then(function(e){return e.json()}).then(function(e){return e&&Array.isArray(e.models)&&(r.availableModels=e.models,r.availableCodexModels=Array.isArray(e.codexModels)?e.codexModels:[],Xn(st()),Ui(e),Vi(!1)),e}).catch(function(){return null})}function Ol(){if(r.modelsRefreshing)return Promise.resolve(null);r.modelsRefreshing=!0;var e=document.querySelectorAll("#cfg-default-model-refresh, #cfg-commit-model-refresh");return e.forEach(function(t){var n=t,i=n.querySelector("span");n.disabled=!0,n.classList.add("is-loading"),n.setAttribute("aria-busy","true"),i&&(i.textContent="\u68C0\u6D4B\u4E2D")}),fetch("/api/models/refresh",{method:"POST",credentials:"same-origin"}).then(function(t){return t.json()}).then(function(t){return t&&Array.isArray(t.models)&&(r.availableModels=t.models,r.availableCodexModels=Array.isArray(t.codexModels)?t.codexModels:[],Xn(st()),Ui(t),Vi(!1),typeof A=="function"&&A("\u6A21\u578B\u5217\u8868\u5DF2\u5237\u65B0"+(t.claudeVersion?"\uFF08claude "+t.claudeVersion+"\uFF09":""),"success")),t}).catch(function(){return typeof A=="function"&&A("\u5237\u65B0\u6A21\u578B\u5217\u8868\u5931\u8D25","error"),null}).finally(function(){r.modelsRefreshing=!1,e.forEach(function(t){var n=t,i=n.querySelector("span");n.disabled=!1,n.classList.remove("is-loading"),n.removeAttribute("aria-busy"),i&&(i.textContent="\u5237\u65B0\u5217\u8868")})})}function Am(){var e=document.getElementById("env-preview-modal");if(!e){e=document.createElement("section"),e.id="env-preview-modal",e.className="modal-backdrop hidden",e.innerHTML='<div class="modal env-preview-modal" role="dialog" aria-labelledby="env-preview-title" aria-modal="true"><div class="modal-header"><div><h2 class="modal-title" id="env-preview-title">\u5C06\u6CE8\u5165\u5B50\u8FDB\u7A0B\u7684\u73AF\u5883\u53D8\u91CF</h2><p class="modal-subtitle" id="env-preview-subtitle">\u8FD9\u4E9B\u53D8\u91CF\u4F1A\u88AB\u4F20\u7ED9 claude / codex\uFF08PTY \u4E0E\u7ED3\u6784\u5316\u8FD0\u884C\u5668\u4E00\u81F4\uFF09\u3002</p></div><button id="env-preview-close" class="btn btn-ghost btn-icon modal-close-btn" type="button" aria-label="\u5173\u95ED"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" aria-hidden="true"><line x1="6" y1="6" x2="18" y2="18"/><line x1="18" y1="6" x2="6" y2="18"/></svg></button></div><div class="modal-body env-preview-body"><div class="env-preview-toolbar"><div class="env-preview-meta" id="env-preview-meta">\u52A0\u8F7D\u4E2D\u2026</div><div class="env-preview-controls"><input id="env-preview-search" class="env-preview-search" type="search" placeholder="\u641C\u7D22\u53D8\u91CF\u540D\u2026" /><label class="env-preview-reveal"><input id="env-preview-reveal-toggle" type="checkbox" /><span>\u663E\u793A\u654F\u611F\u503C</span></label></div></div><div class="env-preview-list" id="env-preview-list" tabindex="0"><div class="env-preview-loading">\u52A0\u8F7D\u4E2D\u2026</div></div></div><div class="modal-footer env-preview-footer"><span class="env-preview-hint">\u654F\u611F\u5B57\u6BB5\uFF08\u542B KEY/TOKEN/SECRET \u7B49\uFF09\u9ED8\u8BA4\u63A9\u7801\uFF0C\u53EF\u52FE\u9009\u300C\u663E\u793A\u654F\u611F\u503C\u300D\u4E34\u65F6\u8FD8\u539F\u3002</span><button id="env-preview-close-2" class="btn btn-secondary btn-sm" type="button">\u5173\u95ED</button></div></div>',document.body.appendChild(e),e.addEventListener("click",function(s){s.target===e&&Eu()});var t=e.querySelector("#env-preview-close");t&&t.addEventListener("click",Eu);var n=e.querySelector("#env-preview-close-2");n&&n.addEventListener("click",Eu);var a=e.querySelector("#env-preview-search");a&&a.addEventListener("input",function(){Hl()});var i=e.querySelector("#env-preview-reveal-toggle");i&&i.addEventListener("change",function(){Pl(i.checked)})}e.classList.remove("closing"),e.classList.remove("hidden");var i=e.querySelector("#env-preview-reveal-toggle");i&&(i.checked=!1);var a=e.querySelector("#env-preview-search");a&&(a.value=""),Pl(!1)}function Eu(){var e=document.getElementById("env-preview-modal");e&&Du(e)}function Pl(e){var t=document.getElementById("env-preview-list"),n=document.getElementById("env-preview-meta");t&&(t.innerHTML='<div class="env-preview-loading">\u52A0\u8F7D\u4E2D\u2026</div>'),n&&(n.textContent="\u52A0\u8F7D\u4E2D\u2026");var i="/api/settings/env-preview"+(e?"?reveal=1":"");fetch(i,{credentials:"same-origin"}).then(function(a){return a.json()}).then(function(a){if(!a||!Array.isArray(a.entries)){t&&(t.innerHTML='<div class="env-preview-empty">\u8BFB\u53D6\u5931\u8D25\u3002</div>'),n&&(n.textContent="\u8BFB\u53D6\u5931\u8D25");return}if(r._envPreview=a,n){var u=a.inheritEnv?"\u7EE7\u627F\u7236\u8FDB\u7A0B":"\u6700\u5C0F\u767D\u540D\u5355";n.innerHTML='<span class="env-preview-pill '+(a.inheritEnv?"is-inherit":"is-minimal")+'">'+u+'</span><span class="env-preview-count">\u5171 '+a.total+" \u9879</span>"}Hl()}).catch(function(){t&&(t.innerHTML='<div class="env-preview-empty">\u8BFB\u53D6\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002</div>'),n&&(n.textContent="\u8BFB\u53D6\u5931\u8D25")})}function Hl(){var e=document.getElementById("env-preview-list");if(e){var t=r._envPreview;if(!t||!Array.isArray(t.entries)){e.innerHTML='<div class="env-preview-empty">\u5C1A\u672A\u52A0\u8F7D\u3002</div>';return}for(var n=document.getElementById("env-preview-search"),i=(n&&n.value||"").trim().toLowerCase(),a="",u=0,o=0;o<t.entries.length;o++){var s=t.entries[o];if(!(i&&s.name.toLowerCase().indexOf(i)===-1)){u++;var l=typeof s.value=="string"&&s.value.charAt(0)==="<"&&s.value.charAt(s.value.length-1)===">";a+='<div class="env-preview-row'+(s.sensitive?" is-sensitive":"")+'"><div class="env-preview-name">'+p(s.name)+(s.sensitive?'<span class="env-preview-badge" title="\u88AB\u8BC6\u522B\u4E3A\u654F\u611F\u5B57\u6BB5">\u654F\u611F</span>':"")+(l?'<span class="env-preview-badge env-preview-badge-runtime" title="\u6309\u4F1A\u8BDD\u52A8\u6001\u6CE8\u5165">\u8FD0\u884C\u65F6</span>':"")+'</div><div class="env-preview-value'+(l?" is-runtime":"")+'" title="'+p(String(s.value))+'">'+p(String(s.value))+'</div><div class="env-preview-len">'+s.length+" \u5B57\u7B26</div></div>"}}u===0&&(a='<div class="env-preview-empty">\u6CA1\u6709\u5339\u914D\u7684\u53D8\u91CF\u3002</div>'),e.innerHTML=a}}function _l(e){return e==="codex"?r.availableCodexModels||[]:r.availableModels||[]}function Nl(e){if(e){var t=e.getAttribute("data-provider")==="codex"?"codex":"claude",n=e.querySelector(".model-combobox-input"),i=e.closest(".settings-model-field"),a=i?i.querySelector("[data-model-status]"):null;if(!(!n||!a)){for(var u=(n.value||"").trim(),o=_l(t),s=null,l=0;l<o.length;l++)if(o[l].id===u){s=o[l];break}if(a.classList.remove("is-custom","is-known"),!u){a.textContent="\u8DDF\u968F CLI \u9ED8\u8BA4";return}if(s){a.textContent="\u5DF2\u68C0\u6D4B\u5230",a.classList.add("is-known");return}a.textContent="\u81EA\u5B9A\u4E49\u540D\u79F0",a.classList.add("is-custom")}}}function _r(e){if(e){var t=e.getAttribute("data-provider")==="codex"?"codex":"claude",n=e.querySelector(".model-combobox-input"),i=e.querySelector(".model-combobox-menu");if(!(!n||!i)){for(var a=n.value||"",u=a.trim(),o=e.classList.contains("is-filtering")?u.toLowerCase():"",s=_l(t),l=null,d=!1,f=[],c=0;c<s.length;c++){var v=s[c];if(v.id==="default"){l=v;continue}v.id===u&&(d=!0);var h=v.label||v.id;o&&v.id.toLowerCase().indexOf(o)===-1&&h.toLowerCase().indexOf(o)===-1||f.push({value:v.id,label:h,meta:h===v.id?"\u5DF2\u68C0\u6D4B\u6A21\u578B":v.id,custom:!1})}var g=t==="codex"?"\u8DDF\u968F Codex \u9ED8\u8BA4":"\u8DDF\u968F Claude Code \u9ED8\u8BA4",m=l&&l.label?l.label:"\u4E0D\u4F20 --model \u53C2\u6570",y="";(!o||g.toLowerCase().indexOf(o)!==-1||m.toLowerCase().indexOf(o)!==-1)&&(y+='<button type="button" class="model-combobox-option'+(u?"":" is-selected")+'" role="option" aria-selected="'+(u?"false":"true")+'" data-model-value=""><span class="model-combobox-option-check" aria-hidden="true"><svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="m5 12 4 4L19 6"/></svg></span><span class="model-combobox-option-copy"><span class="model-combobox-option-label">'+p(g)+'</span><span class="model-combobox-option-meta">'+p(m)+"</span></span></button>");for(var C=0;C<f.length;C++){var E=f[C],B=E.value===u;y+='<button type="button" class="model-combobox-option'+(B?" is-selected":"")+'" role="option" aria-selected="'+(B?"true":"false")+'" data-model-value="'+p(E.value)+'"><span class="model-combobox-option-check" aria-hidden="true"><svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="m5 12 4 4L19 6"/></svg></span><span class="model-combobox-option-copy"><span class="model-combobox-option-label">'+p(E.label)+'</span><span class="model-combobox-option-meta">'+p(E.meta)+"</span></span></button>"}u&&!d&&(y+='<button type="button" class="model-combobox-option model-combobox-option-custom is-selected" role="option" aria-selected="true" data-model-value="'+p(u)+'"><span class="model-combobox-option-custom-icon" aria-hidden="true"><svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20h9"/><path d="M16.5 3.5a2.1 2.1 0 0 1 3 3L8 18l-4 1 1-4Z"/></svg></span><span class="model-combobox-option-copy"><span class="model-combobox-option-label">\u4F7F\u7528\u81EA\u5B9A\u4E49\u540D\u79F0</span><span class="model-combobox-option-meta">'+p(u)+"</span></span></button>"),y||(y='<div class="model-combobox-empty">\u6CA1\u6709\u5339\u914D\u7684\u6A21\u578B\uFF0C\u53EF\u4EE5\u7EE7\u7EED\u8F93\u5165\u81EA\u5B9A\u4E49\u540D\u79F0\u3002</div>'),i.innerHTML=y;for(var D=i.querySelectorAll(".model-combobox-option"),F=-1,I=0;I<D.length;I++)if(D[I].getAttribute("aria-selected")==="true"){F=I;break}e._wandModelActiveIndex=F>=0?F:D.length?0:-1,jl(e),Nl(e)}}}function jl(e){if(e){var t=e.querySelector(".model-combobox-menu"),n=e.querySelector(".model-combobox-input");if(!(!t||!n)){for(var i=t.querySelectorAll(".model-combobox-option"),a=typeof e._wandModelActiveIndex=="number"?e._wandModelActiveIndex:-1,u=0;u<i.length;u++)i[u].classList.toggle("is-active",u===a),u===a&&(i[u].id||(i[u].id=(t.id||"model-listbox")+"-option-"+u),n.setAttribute("aria-activedescendant",i[u].id));a<0&&n.removeAttribute("aria-activedescendant")}}}function zi(e){if(e){var t=e.querySelector(".model-combobox-input"),n=e.querySelector(".model-combobox-menu");!t||!n||(document.querySelectorAll(".model-combobox.is-open").forEach(function(i){i!==e&&vn(i)}),_r(e),e.classList.add("is-open"),n.classList.remove("hidden"),t.setAttribute("aria-expanded","true"))}}function vn(e){if(e){var t=e.querySelector(".model-combobox-input"),n=e.querySelector(".model-combobox-menu");e.classList.remove("is-open"),e.classList.remove("is-filtering"),n&&n.classList.add("hidden"),t&&(t.setAttribute("aria-expanded","false"),t.removeAttribute("aria-activedescendant"))}}function Rl(e,t){if(e){var n=e.querySelector(".model-combobox-input");if(n){var i=document.activeElement===n;n.value=t||"",n.dataset.modelInitialized="true",n.dataset.modelDirty="true",e.classList.remove("is-filtering"),Nl(e),vn(e),i&&n.focus()}}}function xm(){window.__wandSettingsModelOutsideBound||(window.__wandSettingsModelOutsideBound=!0,document.addEventListener("click",function(t){var n=t.target;document.querySelectorAll(".model-combobox.is-open").forEach(function(i){(!n||!i.contains(n))&&vn(i)})}));var e=document.querySelectorAll(".model-combobox");e.forEach(function(t){if(t.dataset.bound!=="true"){t.dataset.bound="true";var n=t.querySelector(".model-combobox-input"),i=t.querySelector(".model-combobox-toggle"),a=t.querySelector(".model-combobox-menu");!n||!i||!a||(n.addEventListener("focus",function(){zi(t)}),n.addEventListener("input",function(){n.dataset.modelInitialized="true",n.dataset.modelDirty="true",t.classList.add("is-filtering"),zi(t)}),n.addEventListener("keydown",function(u){if(u.key==="Escape"){u.preventDefault(),vn(t);return}if(!(u.key!=="ArrowDown"&&u.key!=="ArrowUp"&&u.key!=="Enter")){if(!t.classList.contains("is-open")){if(u.key==="Enter")return;zi(t)}var o=a.querySelectorAll(".model-combobox-option");if(o.length){u.preventDefault();var s=typeof t._wandModelActiveIndex=="number"?t._wandModelActiveIndex:-1;if(u.key==="ArrowDown"&&(s=s<o.length-1?s+1:0),u.key==="ArrowUp"&&(s=s>0?s-1:o.length-1),t._wandModelActiveIndex=s,jl(t),u.key==="Enter"){var l=o[s];l&&Rl(t,l.getAttribute("data-model-value")||"")}else{var d=o[s];d&&typeof d.scrollIntoView=="function"&&d.scrollIntoView({block:"nearest"})}}}}),i.addEventListener("mousedown",function(u){u.preventDefault()}),i.addEventListener("click",function(){t.classList.contains("is-open")?vn(t):zi(t)}),a.addEventListener("mousedown",function(u){u.preventDefault()}),a.addEventListener("click",function(u){var o=u.target.closest(".model-combobox-option");o&&Rl(t,o.getAttribute("data-model-value")||"")}),t.addEventListener("focusout",function(){setTimeout(function(){t.contains(document.activeElement)||vn(t)},0)}),_r(t))}})}function Vi(e){var t=document.getElementById("cfg-commit-cli"),n=document.getElementById("cfg-commit-model-combobox"),i=document.getElementById("cfg-commit-model"),a=document.getElementById("cfg-commit-model-provider");if(!(!t||!n||!i)){var u=t.value==="codex"?"codex":"claude";n.setAttribute("data-provider",u),i.placeholder=u==="codex"?"\u8DDF\u968F Codex \u9ED8\u8BA4":"\u8DDF\u968F Claude Code \u9ED8\u8BA4",a&&(a.textContent=u==="codex"?"Codex CLI":"Claude Code"),e&&(i.value="",i.dataset.modelDirty="true"),_r(n)}}function Ui(e){var t=gu(),n=document.getElementById("cfg-default-model");if(n){n.dataset.modelInitialized!=="true"&&(n.value=r.configDefaultModels&&r.configDefaultModels.claude||t.claude||"",n.dataset.modelInitialized="true");var i=n.closest(".model-combobox");i&&_r(i)}var a=document.getElementById("cfg-default-codex-model");if(a){a.dataset.modelInitialized!=="true"&&(a.value=r.configDefaultModels&&r.configDefaultModels.codex||t.codex||"",a.dataset.modelInitialized="true");var u=a.closest(".model-combobox");u&&_r(u)}var o=document.getElementById("cfg-default-model-version");o&&e&&(o.textContent=e.claudeVersion?"\u5DF2\u68C0\u6D4B\u5230 Claude CLI "+e.claudeVersion+"\uFF1B\u5217\u8868\u5DF2\u540C\u65F6\u540C\u6B65 Codex \u53EF\u7528\u6A21\u578B\u3002":"\u672A\u8BFB\u53D6\u5230 Claude CLI \u7248\u672C\uFF1B\u4ECD\u53EF\u76F4\u63A5\u8F93\u5165\u81EA\u5B9A\u4E49\u6A21\u578B\u540D\u79F0\u3002")}function st(){if(!r.selectedId)return null;for(var e=0;e<r.sessions.length;e++)if(r.sessions[e].id===r.selectedId)return r.sessions[e];return null}function Sm(e){var t=(e||"").trim(),n=st(),i=mu(n);hu(i,t),qn(),n&&fetch("/api/sessions/"+encodeURIComponent(n.id)+"/model",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({model:t||null})}).then(function(a){return a.json()}).then(function(a){if(a&&a.error){A(a.error,"error");return}if(a&&a.id&&(X(a),qn(),typeof A=="function")){var u=_i(t,n),o=n.provider==="codex"?"\uFF08\u4E0B\u6B21\u5BF9\u8BDD\u751F\u6548\uFF09":"";A("\u5DF2\u5207\u6362\u6A21\u578B \u2192 "+u+o,"success")}}).catch(function(){A("\u5207\u6362\u6A21\u578B\u5931\u8D25","error")})}function Im(e){var t=Dt(Xe(),(e||"default").trim());r.chatMode=t,qn();var n=st();if(!n||!n.id||n.sessionKind!=="structured"){A&&A("\u65B0\u4F1A\u8BDD\u6A21\u5F0F\uFF1A"+t,"info");return}fetch("/api/sessions/"+encodeURIComponent(n.id)+"/mode",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({mode:t})}).then(function(i){return i.json()}).then(function(i){if(i&&i.error){A(i.error,"error");return}if(i&&i.id&&(X(i),typeof A=="function")){var a=n.provider==="codex"?"\uFF08Codex \u56FA\u5B9A\u5168\u6743\u9650\uFF09":"";A("\u5DF2\u5207\u6362\u6A21\u5F0F \u2192 "+t+a,"success")}}).catch(function(){A("\u5207\u6362\u6A21\u5F0F\u5931\u8D25","error")})}function Wl(e,t,n,i){var a=r.sessionTool==="codex"?"codex":"claude",u=Or(a),o=r.chatThinking||"off",s={cwd:t||$e(),mode:n||r.chatMode||r.config&&r.config.defaultMode||"default",provider:a,runner:a==="codex"?"codex-cli-exec":r.config&&r.config.structuredRunner==="sdk"?"claude-sdk":r.structuredRunner||"claude-cli-print",prompt:e||void 0,worktreeEnabled:i===!0,model:u||void 0,thinkingEffort:o};return fetch("/api/structured-sessions",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(s)}).then(function(l){return l.json()}).then(function(l){if(l.error)throw new Error(l.error);return r.selectedId=l.id,he(),r.drafts[l.id]="",Ft(),X(l),pe(),xr(l.id),On(l.id),gn(l.id).then(function(){return l})})}function Ki(){var e=!!r.selectedId,t=document.getElementById("output"),n=document.getElementById("chat-output"),i=document.getElementById("blank-chat"),a=r.sessions.find(function(l){return l.id===r.selectedId}),u=ue(a),o=e&&!u&&r.currentView==="terminal",s=e&&(u||r.currentView!=="terminal");u?r.currentView="chat":e||(r.currentView="terminal"),t&&(t.classList.toggle("active",o),t.classList.toggle("hidden",!o)),n&&(n.classList.toggle("active",s),n.classList.toggle("hidden",!s)),i&&i.classList.toggle("hidden",e),n&&s&&Za(n),sr(),Ge(),Sr()}function Nr(){var e=document.getElementById("mode-description"),t=document.getElementById("session-kind-description"),n=r.sessionTool||"claude",i=r.sessionCreateKind||"structured";r.sessionTool=n,r.modeValue=Dt(n,r.modeValue||r.chatMode||"default");var a=document.querySelectorAll("#provider-cards .provider-card");a.length&&a.forEach(function(s){var l=s.getAttribute("data-provider");s.classList.toggle("active",l===n),s.classList.remove("disabled")});var u=document.querySelectorAll("#session-kind-cards .session-kind-card");u.length&&u.forEach(function(s){var l=s.getAttribute("data-session-kind"),d=!1;s.classList.toggle("active",l===i),s.classList.toggle("disabled",d)});var o=document.querySelectorAll("#mode-cards .mode-card");o.length&&o.forEach(function(s){s.classList.toggle("active",s.getAttribute("data-mode")===r.modeValue)}),t&&(t.textContent=ko(i)),e&&(e.textContent=Fl(n,r.modeValue))}function Tm(e,t,n,i){var a=n||0,u=typeof i=="number"?i:Math.max(a+t.length,t.length),o=e&&Array.isArray(e.messages)?e.messages:[],s=e&&typeof e.messageOffset=="number"?e.messageOffset:0;if(t.length===0&&o.length>0&&u===0)return{messages:o,messageOffset:s,messageTotal:e&&e.messageTotal||o.length};if(o.length===0)return{messages:t,messageOffset:a,messageTotal:u};if(s<=a){var l=Math.min(Math.max(a-s,0),o.length),d=o.slice(0,l).concat(t);return{messages:d,messageOffset:s,messageTotal:Math.max(u,s+d.length)}}return{messages:t,messageOffset:a,messageTotal:u}}function X(e){if(!(!e||!e.id)){var t=r.sessions.find(function(s){return s.id===e.id})||null,n=Dd(e,t);if(Array.isArray(n.messages)&&typeof n.messageOffset=="number"){var i=Tm(t,n.messages,n.messageOffset,n.messageTotal);n.messages=i.messages,n.messageOffset=i.messageOffset,n.messageTotal=i.messageTotal}var a=!1,u=null;r.sessions=r.sessions.map(function(s){return s.id!==n.id?s:(u=s,a=!0,Object.assign({},s,n))}),a||r.sessions.unshift(n);var o=r.sessions.find(function(s){return s.id===n.id})||n;o&&Array.isArray(o.queuedMessages)&&n.id===r.selectedId&&(ti(o),Uu(),dn()),n.id===r.selectedId&&(Ua(),Yt()),n.status&&n.status!=="running"&&r.crossSessionQueue.length>0&&setTimeout(wi,0)}}function On(e){!e||!r.ws||r.ws.readyState!==WebSocket.OPEN||r.ws.send(JSON.stringify({type:"subscribe",sessionId:e}))}function Lm(e,t){if(!e)return t;var n=Object.assign({},e,t),i=e.output||"",a=t.output||"",u=i.length>a.length,o=e.structuredState||null,s=t.structuredState||null,l=e.sessionKind==="structured"||t.sessionKind==="structured",d=!!(e.messages&&e.messages.length&&(function(){var m=e.messages[e.messages.length-1];return m&&m.role==="assistant"&&Array.isArray(m.content)&&m.content.some(function(y){return y&&y.__processing})})()),f=Array.isArray(e.messages)?l?dr(e.messages):e.messages:[],c=Array.isArray(t.messages)?l?dr(t.messages):t.messages:[],v=c.length>0&&(function(){var m=c[c.length-1];return m&&m.role==="assistant"&&Array.isArray(m.content)&&!m.content.some(function(y){return y&&y.__processing})})(),h=e.sessionKind==="structured"&&!!o&&o.inFlight===!0&&(!s||s.inFlight!==!0)&&d&&!!o.activeRequestId&&!!s&&!!s.activeRequestId&&s.activeRequestId===o.activeRequestId&&!v,g=f.length>c.length||f.length>0&&c.length>0&&JSON.stringify(f[f.length-1])!==JSON.stringify(c[c.length-1])&&JSON.stringify(f).length>JSON.stringify(c).length;return u&&(n.output=i),h&&(n.status=e.status||n.status,n.structuredState=Object.assign({},s||{},o,{inFlight:!0}),n.messages=e.messages),g&&(n.messages=f),e.id===r.selectedId&&(e.permissionBlocked&&t.permissionBlocked===!1||e.permissionBlocked&&!t.permissionBlocked&&(n.permissionBlocked=!0),e.pendingEscalation&&!t.pendingEscalation&&t.permissionBlocked!==!1&&(n.pendingEscalation=e.pendingEscalation),e.messages&&e.messages.length>0&&(!t.messages||t.messages.length===0)&&(n.messages=e.messages)),n}function Ze(e,t,n){if(e&&e.messages&&e.messages.length>0)return e.messages;if(e&&e.sessionKind==="structured")return[];if(!n)return[];var i=typeof t=="string"?t:e&&e.output||"";return i?Iv(i,e&&e.command):[]}function Mm(e){if(!e||!e.length)return null;if(r.selectedId){var t=e.find(function(a){return a.id===r.selectedId});return t?t.id:null}var n=e.find(function(a){return a.status==="running"});if(n)return n.id;var i=e.find(function(a){return!a.archived});return i?i.id:e[0].id}function mn(e){var t=e||{};return fetch("/api/sessions",{credentials:"same-origin"}).then(function(n){if(n.status===401){bl();return}return n.json()}).then(function(n){var i=n||[],a=new Set(i.map(function(c){return c.id}));Object.keys(r.drafts).forEach(function(c){a.has(c)||delete r.drafts[c]}),r.sessions=i.map(function(c){var v=r.sessions.find(function(h){return h.id===c.id});return Lm(v,c)});var u=Mm(r.sessions);if(u!==void 0&&(r.selectedId=u),Ju(),dn(),r.bootstrapping=!1,he(),r.modalOpen)pe();else{var o=document.getElementById("sessions-list"),s=ma();if(o&&o.innerHTML===s){var l=document.getElementById("session-count");l&&(l.textContent=String(r.sessions.length))}else{o&&(o.innerHTML=s,jt(o));var l=document.getElementById("session-count");l&&(l.textContent=String(r.sessions.length))}}jr(),r.selectedId&&r.gitStatusSessionId!==r.selectedId&&Bn(r.selectedId);var d=Promise.resolve();if(!t.skipSelectedOutputReload&&r.selectedId)d=gn(r.selectedId);else if(r.selectedId){var f=r.sessions.find(function(c){return c.id===r.selectedId});ue(f)&&(Ft({preserveStickState:!0}),Xa(!0))}return d.then(function(){r.crossSessionQueue.length>0&&wi(),Ct(),qa()})}).catch(function(n){var i=n&&n.message||"",a=i==="Failed to fetch"||i==="NetworkError when attempting to fetch resource."||i==="Load failed"||/aborted|aborterror|networkerror|failed to fetch/i.test(i);a||console.error("[wand] loadSessions failed:",n)})}var Fu=null;function wu(){Fu||(Fu=setTimeout(function(){Fu=null,pe()},200))}function pe(){var e=document.getElementById("sessions-list"),t=document.getElementById("session-count");e&&(e.innerHTML=ma(),jt(e)),t&&(t.textContent=String(r.sessions.length)),typeof Xt=="function"&&Xt(),jr(),r.crossSessionQueue.length>0&&Ct()}function jr(){var e=r.sessions.find(function(g){return g.id===r.selectedId});e||(Mn(!1),Va(),Hs());var t=e?$n(e.command):"Wand",n=e?pr(e):"\u5F00\u59CB\u5BF9\u8BDD",i=document.querySelector(".session-summary-value"),a=document.getElementById("terminal-title"),u=document.getElementById("terminal-info"),o=document.querySelector(".topbar-session-title, .topbar-tagline");o&&e&&(o.classList.remove("topbar-tagline"),o.classList.add("topbar-session-title"),o.textContent=e.title||$n(e.command),o.setAttribute("title",e.description||e.command||""));var s=document.getElementById("blank-chat"),l=document.getElementById("output"),d=document.getElementById("chat-output"),f=document.getElementById("stop-button");i&&i.textContent!==t&&(i.textContent=t),a&&a.textContent!==t&&(a.textContent=t),u&&(u.textContent=e?n+" \xB7 "+Fm(e):n);var c=document.getElementById("session-kind-display"),v=e?Em(e):"\u7EC8\u7AEF";c&&c.textContent!==v&&(c.textContent=v),zo(),!r.terminal&&l&&e&&Yn(),r.terminal&&l&&!l.contains(r.terminal.element)&&(Fr(),Yn()),e||(r.terminalSessionId=null,r.terminalOutput="",r.terminalOutputMarker=0),r.terminal&&e&&r.currentView==="terminal"&&pt("view");var h=document.querySelector(".input-panel");e?(s&&s.classList.add("hidden"),l&&l.classList.remove("hidden"),d&&d.classList.remove("hidden"),h&&h.classList.remove("hidden")):(s&&s.classList.remove("hidden"),l&&l.classList.add("hidden"),d&&d.classList.add("hidden"),f&&f.classList.add("hidden"),h&&h.classList.add("hidden")),Hi(),Xn(st()),Ki(),Ua()}function gn(e){r.chatRenderTimer&&(clearTimeout(r.chatRenderTimer),r.chatRenderTimer=null);var t=r.sessions.find(function(i){return i.id===e}),n="/api/sessions/"+e;return Cl(t)&&(n+="?format=chat"),fetch(n,{credentials:"same-origin"}).then(function(i){return i.json()}).then(function(i){if(i.error){r.selectedId===e&&(r.selectedId=null,he()),mn();return}if(X(i),jr(),r.terminal&&e===r.selectedId&&i.output!==void 0){var a=!!r.ws&&(r.ws.readyState===WebSocket.OPEN||r.ws.readyState===WebSocket.CONNECTING);a?Qe("session-switch"):(gi(e,i.output,{mode:"append"}),Qe("session-switch",{forceReplay:!0}))}var u=r.sessions.find(function(o){return o.id===e});r.currentMessages=ze(u,Ze(u,i.output,!1)),Ve(!1)})}var Cu=!1;function qm(){if(Cu)return!1;var e=r.selectedId;if(!e)return!1;var t=r.sessions.find(function(o){return o.id===e});if(!t)return!1;var n=typeof t.messageOffset=="number"?t.messageOffset:0;if(n<=0)return!1;var i=40,a=Math.max(0,n-i),u=n-a;return Cu=!0,fetch("/api/sessions/"+encodeURIComponent(e)+"/messages?offset="+a+"&limit="+u,{credentials:"same-origin"}).then(function(o){return o.json()}).then(function(o){if(o&&Array.isArray(o.messages)&&t.messageOffset===n){var s=Array.isArray(t.messages)?t.messages:[];t.messages=o.messages.concat(s),t.messageOffset=a,typeof o.total=="number"&&(t.messageTotal=o.total),e===r.selectedId&&(r.currentMessages=ze(t,Ze(t,t.output,!1)),r.chatRenderedCount=r.currentMessages.length,Ve(!0))}}).catch(function(){}).finally(function(){Cu=!1}),!0}function Ht(e){var t=r.sessions.find(function(o){return o.id===e});if(t){r.selectedId!==e&&Fr(),r.selectedId=e,he(),r.toolContentCache={},r.messageQueue=[],r.pendingMessages=[],ti(t),Ju(),dn(),Ft(),r.currentMessages=[],r.chatRenderTimer&&(clearTimeout(r.chatRenderTimer),r.chatRenderTimer=null);var n=document.getElementById("todo-progress");n&&n.classList.add("hidden");var i=document.querySelector(".structured-status-bar");i&&i.remove(),r._statusBarTimerId&&(clearInterval(r._statusBarTimerId),r._statusBarTimerId=null),r._statusBarStartTime=0;var a=document.querySelector(".input-composer");a&&a.classList.remove("in-flight");var u=t;r.preferredCommand=Xe(),r.chatMode=Dt("claude",u&&u.mode?u.mode:r.chatMode),r.terminalInteractive&&u&&u.status!=="running"&&Mn(!1),pe(),xr(e),r.filePanelOpen&&(Id(u),Lt()),gn(e).then(function(){Ot(!0)}),On(e),r.gitStatus=null,r.gitStatusSessionId=null,va(),Bn(e,{force:!0})}}function Om(){var e=document.getElementById("sessions-drawer"),t=document.querySelector(".main-layout"),n=Re(),i=!!r.sidebarPinned&&!!r.sidebarCollapsed,a=i||!n&&(!!r.sidebarPinned||!!r.sessionsDrawerOpen);e&&(e.classList.toggle("pinned",a),e.classList.toggle("collapsed",i)),t&&(t.classList.toggle("sidebar-pinned",a),t.classList.toggle("sidebar-collapsed",i));var u=document.getElementById("sidebar-pin-btn");u&&(u.classList.toggle("pinned",!!r.sidebarPinned),u.title=r.sidebarPinned?"\u5DF2\u56FA\u5B9A\u5E38\u9A7B\uFF08\u70B9\u51FB\u89E3\u9664\u9501\u5B9A\uFF09":"\u56FA\u5B9A\u4FA7\u680F\u5E38\u9A7B",u.setAttribute("aria-label",r.sidebarPinned?"\u89E3\u9664\u56FA\u5B9A\u5E38\u9A7B":"\u56FA\u5B9A\u4FA7\u680F\u5E38\u9A7B"),u.setAttribute("aria-pressed",r.sidebarPinned?"true":"false"))}function Rr(){var e=document.getElementById("sessions-drawer"),t=document.getElementById("sessions-drawer-backdrop"),n=document.querySelector(".main-layout");e&&e.classList.toggle("open",r.sessionsDrawerOpen),t&&t.classList.toggle("open",Xu()),n&&n.classList.toggle("sidebar-open",r.sessionsDrawerOpen);var i=document.getElementById("sessions-toggle-button");i&&i.classList.toggle("active",r.sessionsDrawerOpen),Om()}function Pm(){var e=Re();if(!e){var t=r.sidebarPinned?!1:!r.sessionsDrawerOpen;r.sessionsDrawerOpen=t,t&&(r.sidebarCollapsed=!1,Se("wand-sidebar-collapsed",!1)),Se("wand-sidebar-open",r.sessionsDrawerOpen),un(),zr();return}if(r.sessionsDrawerOpen=!r.sessionsDrawerOpen,Se("wand-sidebar-open",r.sessionsDrawerOpen),r.sessionsDrawerOpen){r.filePanelOpen=!1;try{localStorage.setItem("wand-file-panel-open","false")}catch{}}un()}function Wr(){var e=Re();if(!e){if(!r.sidebarPinned&&!r.sessionsDrawerOpen)return;Lr(),r.sidebarPinned=!1,r.sessionsDrawerOpen=!1,Se("wand-sidebar-pinned",!1),Se("wand-sidebar-open",!1),un(),zr();return}r.sessionsDrawerOpen&&(Lr(),r.sessionsDrawerOpen=!1,Se("wand-sidebar-open",!1),un())}function Hm(){if(Re()){Wr();return}r.sidebarPinned||r.sidebarCollapsed||!r.sessionsDrawerOpen||(Lr(),r.sessionsDrawerOpen=!1,Se("wand-sidebar-open",!1),un(),zr())}function zl(e){var t=document.getElementById("composer-plus-popover"),n=document.getElementById("attach-btn");r.plusPopoverOpen=!!e,t&&t.classList.toggle("hidden",!e),n&&(n.classList.toggle("active",!!e),n.setAttribute("aria-expanded",e?"true":"false"))}function _m(){zl(!r.plusPopoverOpen)}function Ji(){r.plusPopoverOpen&&zl(!1)}function _t(){Re()&&r.sessionsDrawerOpen&&Wr()}function zr(){var e=document.querySelector(".main-layout");if(e){var t=function(n){n.propertyName==="padding-left"&&(e.removeEventListener("transitionend",t),qt(!0))};e.addEventListener("transitionend",t)}setTimeout(function(){qt(!0)},350)}var Nt=null;function Nm(){return Nt&&document.body.contains(Nt)||(Nt=document.createElement("div"),Nt.className="sidebar-tile-bubble",Nt.setAttribute("role","tooltip"),document.body.appendChild(Nt)),Nt}function Xt(){Nt&&Nt.classList.remove("visible")}function jm(e,t){if(!t){Xt();return}var n=Nm();n.textContent=t.length>400?t.slice(0,400)+"\u2026":t;var i=e.getBoundingClientRect();n.classList.add("visible");var a=n.getBoundingClientRect(),u=i.top+i.height/2,o=u-a.height/2,s=8,l=window.innerHeight-a.height-8;o<s&&(o=s),o>l&&(o=Math.max(s,l)),n.style.left=i.right+12+"px",n.style.top=o+"px",n.style.setProperty("--bubble-tail-y",u-o+"px")}function Rm(e){if(e.dataset.collapsedSessionId){var t=r.sessions.find(function(a){return a.id===e.dataset.collapsedSessionId});if(!t)return"";var n=dc(t);return n||t.summary||t.command||""}if(e.dataset.collapsedHistoryId){var i=r.claudeHistory.find(function(a){return a.claudeSessionId===e.dataset.collapsedHistoryId});if(i&&i.firstUserMessage)return i.firstUserMessage}return""}function Wm(e){var t=e.target;if(!(!t||!(t instanceof Element))){var n=t.closest(".sidebar-collapsed-tile");if(!n){Xt();return}var i=Rm(n);if(!i){Xt();return}jm(n,i)}}function zm(e){var t=e.relatedTarget;t&&t instanceof Element&&t.closest(".sidebar-collapsed-tile")||Xt()}function Vm(){var e=Re();r.sidebarPinned||(r.sidebarPinned=!0,Se("wand-sidebar-pinned",!0)),r.sidebarCollapsed=!r.sidebarCollapsed,Se("wand-sidebar-collapsed",r.sidebarCollapsed),r.sidebarCollapsed?r.sessionsDrawerOpen=!1:e?(r.sidebarPinned=!1,r.sessionsDrawerOpen=!0,Se("wand-sidebar-pinned",!1)):r.sessionsDrawerOpen=!0,Se("wand-sidebar-open",r.sessionsDrawerOpen),un(),pe(),Km(),Xt(),zr()}function Um(){Re()||(r.sidebarPinned=!r.sidebarPinned,r.sessionsDrawerOpen=!0,Se("wand-sidebar-pinned",r.sidebarPinned),Se("wand-sidebar-open",!0),un(),zr())}function Km(){var e=document.getElementById("sidebar-collapse-btn");if(e){var t=!!r.sidebarPinned&&!!r.sidebarCollapsed;e.classList.toggle("collapsed",t),e.title=t?"\u5C55\u5F00\u4FA7\u680F":"\u6536\u8D77\u4E3A\u7A84\u6761",e.setAttribute("aria-label",t?"\u5C55\u5F00\u4FA7\u680F":"\u6536\u8D77\u4E3A\u7A84\u6761"),e.innerHTML=t?'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="10 6 16 12 10 18"/><line x1="20" y1="5" x2="20" y2="19"/></svg>':'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="14 6 8 12 14 18"/><line x1="4" y1="5" x2="4" y2="19"/></svg>'}}function Jm(e){if(e){e.style.left="",e.style.right="";var t=e.offsetParent||e.parentElement;if(t){var n=8,i=t.getBoundingClientRect(),a=e.getBoundingClientRect(),u=window.innerWidth;a.left<n?(e.style.right="auto",e.style.left=n-i.left+"px"):a.right>u-n&&(e.style.left="auto",e.style.right=i.right-(u-n)+"px")}}}function Bu(){tr(),r.modalOpen=!0,r.sessionsDrawerOpen=!1,Se("wand-sidebar-open",!1),Rr();var e=document.getElementById("session-modal");e&&(e._wandCloseTimer&&(clearTimeout(e._wandCloseTimer),e._wandCloseTimer=null),e.classList.remove("closing"),e.classList.remove("hidden"),r.lastFocusedElement=document.activeElement,r.sessionTool=Xe(),r.preferredCommand=r.sessionTool,r.sessionCreateKind="structured",r.sessionCreateWorktree=!1,r.modeValue=Dt(r.sessionTool,r.modeValue||r.chatMode),Nr(),yg(),setTimeout(function(){var t=document.getElementById("mode-cards");t&&t.focus()},20),Yi(e))}function hn(){r.modalOpen=!1;var e=document.getElementById("session-modal");e&&(r.focusTrapHandler&&(document.removeEventListener("keydown",r.focusTrapHandler),r.focusTrapHandler=null),r.lastFocusedElement&&typeof r.lastFocusedElement.focus=="function"&&r.lastFocusedElement.focus(),Du(e)),rr()}function Du(e){if(e&&!e.classList.contains("hidden")){var t=!1;try{t=window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}catch{}if(t||document.hidden){e.classList.remove("closing"),e.classList.add("hidden");return}e._wandCloseTimer&&(clearTimeout(e._wandCloseTimer),e._wandCloseTimer=null),e.classList.add("closing"),e._wandCloseTimer=setTimeout(function(){e.classList.remove("closing"),e.classList.add("hidden"),e._wandCloseTimer=null},170)}}function Yi(e){r.focusTrapHandler&&document.removeEventListener("keydown",r.focusTrapHandler);var t='button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])';r.focusTrapHandler=function(n){if(n.key==="Tab"){var i=e.querySelectorAll(t),a=i[0],u=i[i.length-1];!a||!u||(n.shiftKey?document.activeElement===a&&(n.preventDefault(),u.focus()):document.activeElement===u&&(n.preventDefault(),a.focus()))}},document.addEventListener("keydown",r.focusTrapHandler)}function Ym(){return r.activeWorktreeMergeSessionId&&r.sessions.find(function(e){return e.id===r.activeWorktreeMergeSessionId})||null}function Vr(){var e=document.getElementById("worktree-merge-content"),t=document.getElementById("worktree-merge-confirm-button"),n=document.getElementById("worktree-merge-error"),i=Ym(),a=r.worktreeMergeCheckResult;if(!(!e||!t)){if(!i||!i.worktree){e.innerHTML='<p class="field-hint">\u672A\u627E\u5230\u53EF\u5408\u5E76\u7684 worktree \u4F1A\u8BDD\u3002</p>',t.disabled=!0;return}n&&(r.worktreeMergeError?He(n,r.worktreeMergeError):yi(n));var u=['<div class="worktree-merge-row"><span>\u6765\u6E90\u5206\u652F</span><strong>'+p(i.worktree.branch||"-")+"</strong></div>",'<div class="worktree-merge-row"><span>\u5DE5\u4F5C\u76EE\u5F55</span><strong>'+p(i.worktree.path||"-")+"</strong></div>"];a?(u.push('<div class="worktree-merge-row"><span>\u76EE\u6807\u5206\u652F</span><strong>'+p(a.targetBranch||"-")+"</strong></div>"),u.push('<div class="worktree-merge-row"><span>\u5F85\u5408\u5E76\u63D0\u4EA4</span><strong>'+p(String(a.aheadCount||0))+"</strong></div>"),u.push('<div class="worktree-merge-row"><span>\u672A\u63D0\u4EA4\u6539\u52A8</span><strong>'+p(a.hasUncommittedChanges?"\u6709":"\u65E0")+"</strong></div>"),u.push('<div class="worktree-merge-row"><span>\u51B2\u7A81\u98CE\u9669</span><strong>'+p(a.hasConflicts?"\u6709":"\u65E0")+"</strong></div>"),a.reason&&u.push('<p class="field-hint">'+p(a.reason)+"</p>")):r.worktreeMergeLoading&&u.push('<p class="field-hint">\u6B63\u5728\u68C0\u67E5 worktree \u5408\u5E76\u72B6\u6001\u2026</p>'),e.innerHTML=u.join(""),t.disabled=r.worktreeMergeLoading||r.worktreeMergeSubmitting||!a||a.ok!==!0,t.textContent=r.worktreeMergeSubmitting?"\u5408\u5E76\u4E2D...":"\u786E\u8BA4\u5408\u5E76\u5E76\u6E05\u7406"}}function Vl(e){r.activeWorktreeMergeSessionId=e,r.worktreeMergeCheckResult=null,r.worktreeMergeLoading=!0,r.worktreeMergeSubmitting=!1,r.worktreeMergeError="",hn(),tr();var t=document.getElementById("worktree-merge-modal");t&&(t.classList.remove("hidden"),r.lastFocusedElement=document.activeElement,Yi(t)),Vr(),fetch("/api/sessions/"+encodeURIComponent(e)+"/worktree/merge/check",{method:"POST",credentials:"same-origin"}).then(function(n){return n.json()}).then(function(n){if(n&&n.error)throw new Error(n.error);n&&n.session&&X(n.session),r.worktreeMergeCheckResult=n.result||null,r.worktreeMergeError=""}).catch(function(n){r.worktreeMergeError=n&&n.message||"\u65E0\u6CD5\u68C0\u67E5 worktree \u5408\u5E76\u72B6\u6001\u3002"}).finally(function(){r.worktreeMergeLoading=!1,Vr()})}function er(){var e=document.getElementById("worktree-merge-modal");r.activeWorktreeMergeSessionId=null,r.worktreeMergeCheckResult=null,r.worktreeMergeLoading=!1,r.worktreeMergeSubmitting=!1,r.worktreeMergeError="",e&&e.classList.add("hidden"),r.focusTrapHandler&&(document.removeEventListener("keydown",r.focusTrapHandler),r.focusTrapHandler=null),r.lastFocusedElement&&typeof r.lastFocusedElement.focus=="function"&&r.lastFocusedElement.focus()}function Gm(){!r.activeWorktreeMergeSessionId||r.worktreeMergeSubmitting||(r.worktreeMergeSubmitting=!0,r.worktreeMergeError="",Vr(),fetch("/api/sessions/"+encodeURIComponent(r.activeWorktreeMergeSessionId)+"/worktree/merge",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({})}).then(function(e){return e.json()}).then(function(e){if(e&&e.error)throw new Error(e.error);return e&&e.session&&X(e.session),A("\u5DF2\u5408\u5E76\u5230 "+p(e.result&&e.result.targetBranch||"\u4E3B\u5206\u652F")+(e.result&&e.result.cleanupDone===!1?"\uFF0C\u4F46\u5DE5\u4F5C\u6811\u5F85\u6E05\u7406\u3002":"\u3002"),"info"),er(),Pt()}).catch(function(e){r.worktreeMergeError=e&&e.message||"\u65E0\u6CD5\u5408\u5E76 worktree\u3002",Vr()}).finally(function(){r.worktreeMergeSubmitting=!1,Vr()}))}function Ul(e){fetch("/api/sessions/"+encodeURIComponent(e)+"/worktree/cleanup",{method:"POST",credentials:"same-origin"}).then(function(t){return t.json()}).then(function(t){if(t&&t.error)throw new Error(t.error);return t&&t.session&&X(t.session),A("\u5DF2\u5B8C\u6210 worktree \u6E05\u7406\u3002","info"),Pt()}).catch(function(t){A(t&&t.message||"\u65E0\u6CD5\u6E05\u7406 worktree\u3002","error")})}function Qm(){hn();var e=document.getElementById("settings-modal");if(e){e._wandCloseTimer&&(clearTimeout(e._wandCloseTimer),e._wandCloseTimer=null),e.classList.remove("closing"),e.classList.remove("hidden"),r.lastFocusedElement=document.activeElement;var t=document.getElementById("new-password"),n=document.getElementById("confirm-password");t&&(t.value=""),n&&(n.value=""),Kl(),Yi(e),Xm(),e.querySelectorAll(".model-combobox-input").forEach(function(c){c.dataset.modelDirty="false",c.dataset.modelInitialized="false"}),ku("about"),ng();var i=document.getElementById("cfg-notif-sound"),a=document.getElementById("cfg-notif-bubble");i&&(i.checked=r.notifSound),a&&(a.checked=r.notifBubble);var u=document.getElementById("cfg-notif-volume"),o=document.getElementById("cfg-notif-volume-val");if(u){u.value=r.notifVolume,o&&(o.textContent=r.notifVolume+"%");try{u.dispatchEvent(new Event("input",{bubbles:!0}))}catch{}}var s=document.getElementById("notif-volume-field");if(s&&(s.style.display=r.notifSound?"":"none"),bn(),typeof WandNative<"u"&&typeof WandNative.getAppIcon=="function")try{Gl(WandNative.getAppIcon()||"shorthair")}catch{}if(We&&typeof WandNative.getNotificationSound=="function")try{var l=document.getElementById("native-sound-select");l&&(l.value=WandNative.getNotificationSound())}catch{}if(We&&typeof WandNative.getNotificationVolume=="function")try{var d=WandNative.getNotificationVolume();if(r.notifVolume=d,u&&(u.value=String(d)),o&&(o.textContent=d+"%"),u)try{u.dispatchEvent(new Event("input",{bubbles:!0}))}catch{}try{localStorage.setItem("wand-notif-volume",String(d))}catch{}}catch{}if(We&&typeof WandNative.isHapticEnabled=="function")try{var f=document.getElementById("cfg-haptic-enabled");f&&(f.checked=WandNative.isHapticEnabled())}catch{}}}function tr(){var e=document.getElementById("settings-modal");e&&(e.querySelectorAll(".model-combobox.is-open").forEach(function(t){vn(t)}),r.focusTrapHandler&&(document.removeEventListener("keydown",r.focusTrapHandler),r.focusTrapHandler=null),r.lastFocusedElement&&typeof r.lastFocusedElement.focus=="function"&&r.lastFocusedElement.focus(),Du(e))}function Kl(){var e=document.getElementById("settings-error"),t=document.getElementById("settings-success");e&&e.classList.add("hidden"),t&&t.classList.add("hidden")}function $m(){var e=document.getElementById("new-password").value,t=document.getElementById("confirm-password").value,n=document.getElementById("settings-error"),i=document.getElementById("settings-success");if(Kl(),!e||e.length<6){n.textContent="\u5BC6\u7801\u957F\u5EA6\u81F3\u5C11\u4E3A 6 \u4E2A\u5B57\u7B26\u3002",n.classList.remove("hidden");return}if(e!==t){n.textContent="\u4E24\u6B21\u8F93\u5165\u7684\u5BC6\u7801\u4E0D\u4E00\u81F4\u3002",n.classList.remove("hidden");return}fetch("/api/set-password",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:e}),credentials:"same-origin"}).then(function(a){return a.json()}).then(function(a){if(a.error){n.textContent=a.error,n.classList.remove("hidden");return}i.textContent="\u5BC6\u7801\u4FEE\u6539\u6210\u529F\uFF01",i.classList.remove("hidden"),document.getElementById("new-password").value="",document.getElementById("confirm-password").value=""}).catch(function(){n.textContent="Failed to save password.",n.classList.remove("hidden")})}function ku(e){document.querySelectorAll(".model-combobox.is-open").forEach(function(s){vn(s)});for(var t=document.querySelectorAll(".settings-tab"),n=document.querySelectorAll(".settings-panel"),i=0;i<t.length;i++){var a=t[i].getAttribute("data-tab")===e;a?t[i].classList.add("active"):t[i].classList.remove("active"),t[i].setAttribute("aria-selected",a?"true":"false"),t[i].setAttribute("tabindex",a?"0":"-1")}for(var u=0;u<n.length;u++){var o=n[u].id==="settings-tab-"+e;o?(n[u].classList.add("active"),n[u].removeAttribute("hidden")):(n[u].classList.remove("active"),n[u].setAttribute("hidden","hidden"))}}function Jl(e){if(e&&!(e.key!=="ArrowUp"&&e.key!=="ArrowDown"&&e.key!=="ArrowLeft"&&e.key!=="ArrowRight"&&e.key!=="Home"&&e.key!=="End")){var t=Array.prototype.slice.call(document.querySelectorAll(".settings-tab"));if(t.length){var n=e.currentTarget&&e.currentTarget.closest?e.currentTarget.closest(".settings-tabs"):null,i=n&&n.getAttribute("aria-orientation")==="horizontal";if(!(i&&(e.key==="ArrowUp"||e.key==="ArrowDown"))&&!(!i&&(e.key==="ArrowLeft"||e.key==="ArrowRight"))){var a=t.indexOf(e.currentTarget);if(a!==-1){e.preventDefault();var u=a;(e.key==="ArrowUp"||e.key==="ArrowLeft")&&(u=a>0?a-1:t.length-1),(e.key==="ArrowDown"||e.key==="ArrowRight")&&(u=a<t.length-1?a+1:0),e.key==="Home"&&(u=0),e.key==="End"&&(u=t.length-1);var o=t[u];if(o){var s=o.getAttribute("data-tab");s&&ku(s),typeof o.focus=="function"&&o.focus()}}}}}}function Xm(){var e=document.querySelector(".settings-tabs");if(e){var t=!1;try{t=!!(window.matchMedia&&window.matchMedia("(max-width: 760px)").matches)}catch{}e.setAttribute("aria-orientation",t?"horizontal":"vertical")}for(var n=document.querySelectorAll(".settings-tab"),i=0;i<n.length;i++)n[i].removeEventListener("keydown",Jl),n[i].addEventListener("keydown",Jl)}function Zm(e){if(e){var t=e.config||{},n={about:e.version?"\u5F53\u524D v"+e.version:"\u7248\u672C\u4E0E\u66F4\u65B0\u4FE1\u606F",general:[t.defaultMode||"default",t.language||"\u81EA\u52A8\u8BED\u8A00"].filter(Boolean).join(" \xB7 "),notifications:r.notifSound?"\u63D0\u793A\u97F3 "+r.notifVolume+"%":"\u63D0\u793A\u97F3\u5DF2\u5173\u95ED",security:e.hasCert?"\u5DF2\u5B89\u88C5 SSL \u8BC1\u4E66":"\u5BC6\u7801\u4E0E\u8BC1\u4E66\u7BA1\u7406",presets:t.commandPresets&&t.commandPresets.length?t.commandPresets.length+" \u6761\u9884\u8BBE":"\u6682\u65E0\u9884\u8BBE",display:"\u63A7\u5236\u5361\u7247\u9ED8\u8BA4\u5C55\u5F00"};for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var a=document.querySelector('.settings-tab[data-tab="'+i+'"] .settings-tab-meta');a&&(a.textContent=n[i]||"")}}}function eg(e){var t=document.getElementById("android-connect-qr"),n=document.getElementById("android-connect-qr-empty"),i=window.QRCodeLib;if(t){if(!i||typeof i.toCanvas!="function"){n&&(n.textContent="\u4E8C\u7EF4\u7801\u5E93\u672A\u52A0\u8F7D");return}try{i.toCanvas(t,e,{width:220,margin:1,errorCorrectionLevel:"M",color:{dark:"#1f1b17",light:"#ffffff00"}},function(a){if(a){n&&(n.textContent="\u4E8C\u7EF4\u7801\u751F\u6210\u5931\u8D25",n.style.display=""),t.style.visibility="hidden";return}n&&(n.style.display="none"),t.style.visibility="visible"})}catch{n&&(n.textContent="\u4E8C\u7EF4\u7801\u751F\u6210\u5931\u8D25",n.style.display=""),t.style.visibility="hidden"}}}function tg(e){var t=window.QRCodeLib;if(!t||typeof t.toCanvas!="function")return;var n=document.getElementById("connect-qr-modal");n&&n.remove();var i=document.createElement("div");i.id="connect-qr-modal",i.className="connect-qr-modal-overlay",i.innerHTML='<div class="connect-qr-modal-card"><canvas id="connect-qr-modal-canvas"></canvas><p class="connect-qr-modal-hint">\u7528 Wand App \u626B\u4E00\u626B\uFF0C\u8FDE\u63A5\u5F53\u524D\u670D\u52A1\u5668</p><button type="button" class="btn btn-secondary btn-sm connect-qr-modal-close">\u5173\u95ED</button></div>',document.body.appendChild(i);var a=i.querySelector("#connect-qr-modal-canvas"),u=Math.min(window.innerWidth,window.innerHeight)*.7;u<240&&(u=240),u>480&&(u=480);try{t.toCanvas(a,e,{width:u,margin:2,errorCorrectionLevel:"M",color:{dark:"#1f1b17",light:"#ffffff"}})}catch{}function o(){i.remove()}i.addEventListener("click",function(l){l.target===i&&o()});var s=i.querySelector(".connect-qr-modal-close");s&&s.addEventListener("click",o)}function Ur(e,t,n){if(!e)return;function i(){if(Gn("light"),n){n();return}if(t){var a=t.textContent;t.textContent="\u5DF2\u590D\u5236",setTimeout(function(){t.textContent=a},1500)}}if(We&&typeof WandNative.copyToClipboard=="function")try{if(WandNative.copyToClipboard(e)==="ok"){i();return}}catch{}navigator.clipboard.writeText(e).then(i).catch(function(){var a=document.createElement("textarea");a.value=e,a.style.position="fixed",a.style.opacity="0",document.body.appendChild(a),a.select(),document.execCommand("copy"),document.body.removeChild(a),i()})}function yn(e){if(typeof e!="number"||!isFinite(e)||e<0)return"-";if(e<1024)return e+" B";for(var t=["KB","MB","GB","TB"],n=e/1024,i=0;n>=1024&&i<t.length-1;)n=n/1024,i+=1;var a=n>=10?n.toFixed(0):n.toFixed(1);return a+" "+t[i]}function ng(){fetch("/api/settings",{credentials:"same-origin"}).then(function(e){return e.json()}).then(function(e){Zm(e);var t=document.getElementById("settings-pkg-name"),n=document.getElementById("settings-version"),i=document.getElementById("settings-node-req"),a=document.getElementById("settings-repo-url");t&&(t.textContent=e.packageName||"-"),n&&(n.textContent=e.version||"-"),i&&(i.textContent=e.nodeVersion||"-"),a&&e.repoUrl&&(a.innerHTML='<a href="'+p(e.repoUrl)+'" target="_blank" rel="noopener">'+p(e.repoUrl)+"</a>");var u=document.getElementById("settings-latest-version"),o=document.getElementById("do-update-button");e.latestVersion&&u&&(u.textContent=e.latestVersion,e.updateAvailable&&o&&o.classList.remove("hidden"));var s=document.getElementById("beta-channel-toggle");s&&(s.checked=e.updateChannel==="beta");var l=e.autoUpdate||{},d=document.getElementById("auto-update-web-toggle");d&&(d.checked=!!l.web);var f=document.getElementById("auto-update-apk-toggle");f&&(f.checked=!!In&&!!l.apk);var c=document.getElementById("auto-update-dmg-toggle");c&&(c.checked=!!sn&&!!l.dmg);function v(oe,Le){ls(oe,{type:Le==="error"?"danger":"info"})}function h(oe,Le,je){var nt=je?je.textContent:"";je&&(je.disabled=!0,je.textContent="\u4E0B\u8F7D\u4E2D\u2026");function j(){je&&(je.disabled=!1,je.textContent=nt)}fetch(oe,{method:"HEAD",credentials:"same-origin"}).then(function(O){if(!O.ok){v(O.status===404?"\u4E0B\u8F7D\u672A\u542F\u7528\u6216\u6587\u4EF6\u5DF2\u79FB\u9664":"\u4E0B\u8F7D\u5931\u8D25 (HTTP "+O.status+")","error"),j();return}var K=document.createElement("a");K.href=oe,K.download=Le||"",document.body.appendChild(K),K.click(),document.body.removeChild(K),v("\u5DF2\u5F00\u59CB\u4E0B\u8F7D\uFF0C\u8BF7\u5728\u901A\u77E5\u680F/\u4E0B\u8F7D\u7BA1\u7406\u4E2D\u67E5\u770B","info"),j()}).catch(function(O){v("\u4E0B\u8F7D\u5931\u8D25: "+(O&&O.message?O.message:O),"error"),j()})}function g(oe,Le){function je($i){var Hn=String($i||"").replace(/^v/,""),_n=Hn.indexOf("-"),Xi=_n>=0?Hn.slice(0,_n):Hn,Yr=_n>=0?Hn.slice(_n+1):"";return{parts:Xi.split(".").map(function(Pe){return parseInt(Pe,10)||0}),pre:Yr,isDebug:Yr.indexOf("debug")===0}}for(var nt=je(oe),j=je(Le),O=0;O<3;O++){var K=(nt.parts[O]||0)-(j.parts[O]||0);if(K!==0)return K>0?1:-1}if(nt.isDebug!==j.isDebug)return nt.isDebug?1:-1;if(nt.isDebug&&j.isDebug)for(var ae=nt.pre.split("."),se=j.pre.split("."),ye=0;ye<Math.max(ae.length,se.length);ye++){if(ae[ye]===void 0)return-1;if(se[ye]===void 0)return 1;var ar=parseInt(ae[ye],10),ur=parseInt(se[ye],10);if(!isNaN(ar)&&!isNaN(ur)){if(ar!==ur)return ar>ur?1:-1}else if(ae[ye]!==se[ye])return ae[ye]>se[ye]?1:-1}return 0}function m(oe,Le,je,nt,j,O){oe.classList.remove("hidden"),oe.disabled=!1,Le>0?oe.textContent="\u5347\u7EA7":Le===0?(oe.textContent="\u5DF2\u662F\u6700\u65B0",oe.disabled=!0):O?oe.textContent="\u91CD\u65B0\u5B89\u88C5":(oe.textContent="\u7248\u672C\u8F83\u65E7",oe.disabled=!0),oe.onclick=oe.disabled?null:function(){try{WandNative.downloadUpdate(je,nt,j)}catch(K){v("\u8C03\u7528\u4E0B\u8F7D\u5931\u8D25: "+(K&&K.message?K.message:K),"error")}}}var y=document.getElementById("android-apk-section"),C=document.getElementById("android-apk-current-row"),E=document.getElementById("settings-android-apk-current"),B=document.getElementById("android-apk-github-row"),D=document.getElementById("settings-android-apk-github"),F=document.getElementById("download-github-apk-btn"),I=document.getElementById("android-apk-local-row"),L=document.getElementById("settings-android-apk-local"),H=document.getElementById("download-local-apk-btn"),U=document.getElementById("android-apk-message"),x=e.androidApk||{},k=!!In,T=x.enabled!==!1,M=k||T&&(!!x.github||!!x.local);if(y&&(M?y.classList.remove("hidden"):y.classList.add("hidden")),k){if(C&&E&&(E.textContent="v"+In,C.classList.remove("hidden")),x.github&&B&&D){var Y=x.github.version?"v"+x.github.version:x.github.fileName;if(typeof x.github.size=="number"&&(Y+=" \xB7 "+yn(x.github.size)),D.textContent=Y,B.classList.remove("hidden"),F){var z=x.github.version?g(x.github.version,In):1;m(F,z,x.github.downloadUrl,x.github.fileName||"wand-update.apk","github",!1)}}if(x.local&&I&&L){var Q=x.local.version?"v"+x.local.version:x.local.fileName;if(typeof x.local.size=="number"&&(Q+=" \xB7 "+yn(x.local.size)),L.textContent=Q,I.classList.remove("hidden"),H){var le=x.local.version?g(x.local.version,In):1;m(H,le,x.local.downloadUrl,x.local.fileName||"wand-update.apk","local",!1)}}!x.github&&!x.local&&U&&(U.textContent="\u6682\u65E0\u53EF\u7528\u66F4\u65B0",U.classList.remove("hidden"));var ee=document.getElementById("android-auto-update-row"),Z=document.getElementById("android-auto-update-hint");ee&&ee.classList.remove("hidden"),Z&&Z.classList.remove("hidden")}else{if(x.github&&B&&D){var q=x.github.version?"v"+x.github.version:x.github.fileName;typeof x.github.size=="number"&&(q+=" \xB7 "+yn(x.github.size)),D.textContent=q,B.classList.remove("hidden"),F&&(F.textContent="\u4E0B\u8F7D",F.classList.remove("hidden"),F.onclick=function(){window.open(x.github.downloadUrl,"_blank"),v("\u6B63\u5728\u6253\u5F00\u4E0B\u8F7D\u9875\u2026","info")})}if(x.local&&I&&L){var P=x.local.version?"v"+x.local.version:x.local.fileName;typeof x.local.size=="number"&&(P+=" \xB7 "+yn(x.local.size)),L.textContent=P,I.classList.remove("hidden"),H&&(H.textContent="\u4E0B\u8F7D",H.classList.remove("hidden"),H.onclick=function(){h(x.local.downloadUrl,x.local.fileName||"wand-update.apk",H)})}!x.github&&!x.local&&U&&(U.textContent=T?"\u5728\u7EBF\u7248\u672C\u6682\u65F6\u83B7\u53D6\u5931\u8D25\uFF0C\u53EF\u7A0D\u540E\u91CD\u8BD5":"Android \u4E0B\u8F7D\u672A\u5728\u670D\u52A1\u7AEF\u542F\u7528",U.classList.remove("hidden"))}var N=document.getElementById("macos-dmg-section"),G=document.getElementById("macos-dmg-current-row"),J=document.getElementById("settings-macos-dmg-current"),ne=document.getElementById("macos-dmg-github-row"),de=document.getElementById("settings-macos-dmg-github"),re=document.getElementById("download-github-dmg-btn"),ie=document.getElementById("macos-dmg-local-row"),qe=document.getElementById("settings-macos-dmg-local"),ge=document.getElementById("download-local-dmg-btn"),ce=document.getElementById("macos-dmg-message"),R=e.macosDmg||{},gt=!!sn,_e=R.enabled!==!1,$=gt||_e&&(!!R.github||!!R.local);if(N&&($?N.classList.remove("hidden"):N.classList.add("hidden")),gt){if(G&&J&&(J.textContent="v"+sn,G.classList.remove("hidden")),R.github&&ne&&de){var fe=R.github.version?"v"+R.github.version:R.github.fileName;if(typeof R.github.size=="number"&&(fe+=" \xB7 "+yn(R.github.size)),de.textContent=fe,ne.classList.remove("hidden"),re){var Ce=R.github.version?g(R.github.version,sn):1;m(re,Ce,R.github.downloadUrl,R.github.fileName||"wand-update.dmg","github",!0)}}if(R.local&&ie&&qe){var Be=R.local.version?"v"+R.local.version:R.local.fileName;if(typeof R.local.size=="number"&&(Be+=" \xB7 "+yn(R.local.size)),qe.textContent=Be,ie.classList.remove("hidden"),ge){var ve=R.local.version?g(R.local.version,sn):1;m(ge,ve,R.local.downloadUrl,R.local.fileName||"wand-update.dmg","local",!0)}}!R.github&&!R.local&&ce&&(ce.textContent="\u6682\u65E0\u53EF\u7528\u66F4\u65B0",ce.classList.remove("hidden"));var Fe=document.getElementById("macos-auto-update-row"),tt=document.getElementById("macos-auto-update-hint");Fe&&Fe.classList.remove("hidden"),tt&&tt.classList.remove("hidden")}else{if(R.github&&ne&&de){var dt=R.github.version?"v"+R.github.version:R.github.fileName;typeof R.github.size=="number"&&(dt+=" \xB7 "+yn(R.github.size)),de.textContent=dt,ne.classList.remove("hidden"),re&&(re.textContent="\u4E0B\u8F7D",re.classList.remove("hidden"),re.onclick=function(){window.open(R.github.downloadUrl,"_blank"),v("\u6B63\u5728\u6253\u5F00\u4E0B\u8F7D\u9875\u2026","info")})}if(R.local&&ie&&qe){var it=R.local.version?"v"+R.local.version:R.local.fileName;typeof R.local.size=="number"&&(it+=" \xB7 "+yn(R.local.size)),qe.textContent=it,ie.classList.remove("hidden"),ge&&(ge.textContent="\u4E0B\u8F7D",ge.classList.remove("hidden"),ge.onclick=function(){h(R.local.downloadUrl,R.local.fileName||"wand-update.dmg",ge)})}!R.github&&!R.local&&ce&&(ce.textContent=_e?"\u5728\u7EBF\u7248\u672C\u6682\u65F6\u83B7\u53D6\u5931\u8D25\uFF0C\u53EF\u7A0D\u540E\u91CD\u8BD5":"macOS \u4E0B\u8F7D\u672A\u5728\u670D\u52A1\u7AEF\u542F\u7528",ce.classList.remove("hidden"))}var Ne=document.getElementById("android-connect-code"),Rt=document.getElementById("android-connect-qr"),Ye=document.getElementById("android-connect-qr-empty"),De=document.getElementById("android-connect-qr-wrap");if(Ne){Ne.textContent="\u52A0\u8F7D\u4E2D...",Ye&&(Ye.textContent="\u751F\u6210\u4E2D\u2026"),Rt&&(Rt.style.visibility="hidden");var Oe="/api/app-connect-code";window.location&&window.location.origin&&(Oe+="?origin="+encodeURIComponent(window.location.origin)),fetch(Oe,{credentials:"same-origin"}).then(function(oe){return oe.json()}).then(function(oe){oe.code?(Ne.textContent=oe.code,r.androidConnectCode=oe.code,eg(oe.code)):(Ne.textContent="\u751F\u6210\u5931\u8D25",Ye&&(Ye.textContent="\u751F\u6210\u5931\u8D25"))}).catch(function(){Ne.textContent="\u83B7\u53D6\u5931\u8D25",Ye&&(Ye.textContent="\u83B7\u53D6\u5931\u8D25")})}De&&!De.dataset.bound&&(De.dataset.bound="1",De.addEventListener("click",function(){r.androidConnectCode&&tg(r.androidConnectCode)}));var te=e.config||{},we=document.getElementById("cfg-host"),w=document.getElementById("cfg-port"),at=document.getElementById("cfg-https"),kt=document.getElementById("cfg-mode"),ut=document.getElementById("cfg-cwd"),Zt=document.getElementById("cfg-shell");we&&(we.value=te.host||""),w&&(w.value=te.port||""),at&&(at.checked=te.https===!0),kt&&(kt.value=te.defaultMode||"default"),ut&&(ut.value=te.defaultCwd||""),Zt&&(Zt.value=te.shell||"");var At=document.getElementById("cfg-language");At&&(At.value=te.language||"");var Wt=document.getElementById("cfg-structured-runner");Wt&&(Wt.value=te.structuredRunner||"cli");var zt=document.getElementById("cfg-inherit-env");zt&&(zt.checked=te.inheritEnv!==!1);var Te=document.getElementById("cfg-commit-cli"),Ue=document.getElementById("cfg-commit-model");Te&&(Te.value=te.commitCli==="codex"?"codex":"claude"),Ue&&(Ue.value=te.commitModel||"",Ue.dataset.modelInitialized="true",Ue.dataset.modelDirty="false"),Vi(!1);var Ke=te.defaultModels&&typeof te.defaultModels=="object"?te.defaultModels:{claude:te.defaultModel||"",codex:te.defaultCodexModel||""};r.configDefaultModels={claude:Ke.claude||"",codex:Ke.codex||""},r.configDefaultModel=r.configDefaultModels.claude;var xt=document.getElementById("cfg-default-model"),Vt=document.getElementById("cfg-default-codex-model");xt&&xt.dataset.modelDirty!=="true"&&(xt.dataset.modelInitialized="false"),Vt&&Vt.dataset.modelDirty!=="true"&&(Vt.dataset.modelInitialized="false"),Ui(),ql().then(function(){Ui()}).catch(function(){});var Ut=document.getElementById("cert-status");Ut&&(Ut.textContent=e.hasCert?"\u5DF2\u5B89\u88C5 SSL \u8BC1\u4E66":"\u672A\u5B89\u88C5\u8BC1\u4E66\uFF08\u4F7F\u7528\u81EA\u7B7E\u540D\u6216 HTTP\uFF09",Ut.style.color=e.hasCert?"var(--success)":"var(--text-secondary)");var En=document.getElementById("presets-list");if(En&&te.commandPresets){for(var ct="",ke=0;ke<te.commandPresets.length;ke++){var Je=te.commandPresets[ke];ct+='<div class="preset-item"><span class="preset-label">'+p(Je.label)+'</span><span class="preset-detail">'+p(Je.command)+(Je.mode?" ("+p(Je.mode)+")":"")+"</span></div>"}ct||(ct='<div class="empty-state-compact"><span class="empty-icon">\u2699</span><span>\u6CA1\u6709\u547D\u4EE4\u9884\u8BBE</span><span class="hint">\u5728 config.json \u7684 commandPresets \u4E2D\u914D\u7F6E</span></div>'),En.innerHTML=ct}var Ae=te.cardDefaults||{},Pn=document.getElementById("cfg-card-edit"),ft=document.getElementById("cfg-card-inline"),en=document.getElementById("cfg-card-terminal"),tn=document.getElementById("cfg-card-thinking"),St=document.getElementById("cfg-card-toolgroup");Pn&&(Pn.checked=Ae.editCards===!0),ft&&(ft.checked=Ae.inlineTools===!0),en&&(en.checked=Ae.terminal===!0),tn&&(tn.checked=Ae.thinking===!0),St&&(St.checked=Ae.toolGroup===!0)}).catch(function(){})}function rg(){var e=document.getElementById("config-message");e&&(e.classList.add("hidden"),e.textContent="");var t=((document.getElementById("cfg-default-model")||{}).value||"").trim(),n=((document.getElementById("cfg-default-codex-model")||{}).value||"").trim(),i=((document.getElementById("cfg-commit-model")||{}).value||"").trim(),a={host:(document.getElementById("cfg-host")||{}).value,port:Number((document.getElementById("cfg-port")||{}).value),https:(document.getElementById("cfg-https")||{}).checked,defaultMode:(document.getElementById("cfg-mode")||{}).value,defaultCwd:(document.getElementById("cfg-cwd")||{}).value,shell:(document.getElementById("cfg-shell")||{}).value,language:(document.getElementById("cfg-language")||{}).value||"",defaultModel:t,defaultCodexModel:n,defaultModels:{claude:t,codex:n},commitCli:(document.getElementById("cfg-commit-cli")||{}).value==="codex"?"codex":"claude",commitModel:i,structuredRunner:(document.getElementById("cfg-structured-runner")||{}).value||"cli",inheritEnv:(document.getElementById("cfg-inherit-env")||{}).checked!==!1},u=gu(),o=a.defaultModel||"",s=a.defaultCodexModel||"";fetch("/api/settings/config",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(a)}).then(function(l){return l.json()}).then(function(l){if(e&&(l.error?(e.textContent=l.error,e.style.color="var(--error)"):(e.textContent=l.restartRequired?"\u914D\u7F6E\u5DF2\u4FDD\u5B58\uFF0C\u90E8\u5206\u90E8\u7F72\u5B57\u6BB5\uFF08host/port/https/shell\uFF09\u9700\u8981\u91CD\u542F\u670D\u52A1\u624D\u751F\u6548\u3002":"\u914D\u7F6E\u5DF2\u4FDD\u5B58\u3002",e.style.color="var(--success)"),e.classList.remove("hidden")),!l||!l.error){r.config&&(r.config.defaultModel=o,r.config.defaultCodexModel=s,r.config.defaultModels={claude:o,codex:s},r.config.commitCli=a.commitCli,r.config.commitModel=a.commitModel),r.configDefaultModels={claude:o,codex:s},r.configDefaultModel=o;var d=document.getElementById("cfg-default-model"),f=document.getElementById("cfg-default-codex-model");d&&(d.dataset.modelDirty="false"),f&&(f.dataset.modelDirty="false");var c=document.getElementById("cfg-commit-model");c&&(c.dataset.modelDirty="false"),o!==u.claude&&hu("claude",""),s!==u.codex&&hu("codex",""),(o!==u.claude||s!==u.codex)&&Xn(st())}}).catch(function(){e&&(e.textContent="\u4FDD\u5B58\u5931\u8D25\u3002",e.style.color="var(--error)",e.classList.remove("hidden"))})}function ig(){var e=document.getElementById("display-message");e&&(e.classList.add("hidden"),e.textContent="");var t={cardDefaults:{editCards:!!(document.getElementById("cfg-card-edit")||{}).checked,inlineTools:!!(document.getElementById("cfg-card-inline")||{}).checked,terminal:!!(document.getElementById("cfg-card-terminal")||{}).checked,thinking:!!(document.getElementById("cfg-card-thinking")||{}).checked,toolGroup:!!(document.getElementById("cfg-card-toolgroup")||{}).checked}};fetch("/api/settings/config",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(t)}).then(function(n){return n.json()}).then(function(n){e&&(n.error?(e.textContent=n.error,e.style.color="var(--error)"):(e.textContent="\u663E\u793A\u8BBE\u7F6E\u5DF2\u4FDD\u5B58",e.style.color="var(--success)"),e.classList.remove("hidden")),!n.error&&r.config&&(r.config.cardDefaults=t.cardDefaults)}).catch(function(){e&&(e.textContent="\u4FDD\u5B58\u5931\u8D25\u3002",e.style.color="var(--error)",e.classList.remove("hidden"))})}function ag(){var e=document.getElementById("cert-key-file"),t=document.getElementById("cert-cert-file"),n=document.getElementById("cert-message");if(n&&(n.classList.add("hidden"),n.textContent=""),!e||!e.files||!e.files[0]||!t||!t.files||!t.files[0]){n&&(n.textContent="\u8BF7\u9009\u62E9\u79C1\u94A5\u548C\u8BC1\u4E66\u6587\u4EF6\u3002",n.style.color="var(--error)",n.classList.remove("hidden"));return}var i=new FileReader;i.onload=function(){var a=i.result,u=new FileReader;u.onload=function(){var o=u.result;fetch("/api/settings/upload-cert",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({key:a,cert:o})}).then(function(s){return s.json()}).then(function(s){if(n){if(s.error)n.textContent=s.error,n.style.color="var(--error)";else{n.textContent="\u8BC1\u4E66\u5DF2\u4E0A\u4F20\uFF0C\u91CD\u542F\u540E\u751F\u6548\u3002",n.style.color="var(--success)";var l=document.getElementById("cert-status");l&&(l.textContent="\u5DF2\u5B89\u88C5 SSL \u8BC1\u4E66",l.style.color="var(--success)")}n.classList.remove("hidden")}}).catch(function(){n&&(n.textContent="\u4E0A\u4F20\u5931\u8D25\u3002",n.style.color="var(--error)",n.classList.remove("hidden"))})},u.readAsText(t.files[0])},i.readAsText(e.files[0])}function Yl(){var e=document.getElementById("settings-latest-version"),t=document.getElementById("do-update-button"),n=document.getElementById("update-message");e&&(e.textContent="\u68C0\u67E5\u4E2D..."),n&&n.classList.add("hidden"),t&&t.classList.add("hidden"),fetch("/api/check-update",{credentials:"same-origin"}).then(function(i){return i.json()}).then(function(i){if(i.error){e&&(e.textContent="\u68C0\u67E5\u5931\u8D25");return}var a=i.channel==="beta";if(e&&(e.textContent=i.latest||(a?"beta \u672A\u53D1\u5E03":"-")),!i.latest){n&&(n.textContent=a?"\u65E0\u6CD5\u8BFB\u53D6 npm beta \u7248\u672C\u3002":"\u65E0\u6CD5\u8FDE\u63A5\u5230 npm registry\u3002",n.style.color="var(--error)",n.classList.remove("hidden"));return}i.updateAvailable&&t&&(t.textContent=a?"\u66F4\u65B0\u5230 Beta":"\u66F4\u65B0\u5230\u6700\u65B0\u7248",t.classList.remove("hidden")),!i.updateAvailable&&n&&(n.textContent=a?"\u5DF2\u662F\u6700\u65B0 Beta \u7248\u672C\u3002":"\u5DF2\u662F\u6700\u65B0\u7248\u672C\u3002",n.style.color="var(--success)",n.classList.remove("hidden"))}).catch(function(){e&&(e.textContent="\u68C0\u67E5\u5931\u8D25")})}function ug(){var e=document.getElementById("update-message"),t=document.getElementById("do-update-button");if(t){var n=t.textContent||"\u66F4\u65B0\u5230\u6700\u65B0\u7248",i=function(){t.disabled=!1,t.textContent=n,t.removeAttribute("aria-busy")};t.disabled=!0,t.textContent="\u66F4\u65B0\u4E2D...",t.setAttribute("aria-busy","true"),e&&(e.textContent="\u6B63\u5728\u66F4\u65B0\uFF0C\u8BF7\u7A0D\u5019...",e.style.color="var(--text-secondary)",e.classList.remove("hidden")),fetch("/api/update",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin"}).then(function(a){return a.json()}).then(function(a){if(a.error){e&&(e.textContent=a.error,e.style.color="var(--error)",e.classList.remove("hidden")),i();return}if(e&&(e.textContent=(a.message||"\u66F4\u65B0\u5B8C\u6210")+"\uFF0C\u6B63\u5728\u91CD\u542F\u670D\u52A1\u2026",e.style.color="var(--success)",e.classList.remove("hidden")),t.removeAttribute("aria-busy"),t.classList.add("hidden"),a.detachedUpdate)ln();else if(a.restartRequired!==!1)gs(null,e);else{var u=document.getElementById("do-restart-button");u&&u.classList.remove("hidden")}}).catch(function(){e&&(e.textContent="\u66F4\u65B0\u5931\u8D25\u3002",e.style.color="var(--error)",e.classList.remove("hidden")),i()})}}function og(){var e=document.getElementById("do-restart-button"),t=document.getElementById("update-message");gs(e,t)}function sg(){fetch("/api/auto-update",{credentials:"same-origin"}).then(function(e){return e.json()}).then(function(e){if(e.apk)return fetch("/api/android-apk-update?currentVersion="+encodeURIComponent(In),{credentials:"same-origin"}).then(function(t){return t.json()}).then(function(t){if(!(!t.updateAvailable||!t.downloadUrl))try{WandNative.downloadUpdate(t.downloadUrl,t.fileName||"wand-update.apk",t.source||"local")}catch{}})}).catch(function(){})}function lg(){sn&&fetch("/api/auto-update",{credentials:"same-origin"}).then(function(e){return e.json()}).then(function(e){if(e.dmg)return fetch("/api/macos-dmg-update?currentVersion="+encodeURIComponent(sn),{credentials:"same-origin"}).then(function(t){return t.json()}).then(function(t){if(!(!t.updateAvailable||!t.downloadUrl))try{WandNative.downloadUpdate(t.downloadUrl,t.fileName||"wand-update.dmg",t.source||"local")}catch{}})}).catch(function(){})}function Au(e,t){var n={};n[e]=t,fetch("/api/auto-update",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(n)}).then(function(i){return i.json()}).then(function(i){var a=document.getElementById("auto-update-web-toggle"),u=document.getElementById("auto-update-apk-toggle"),o=document.getElementById("auto-update-dmg-toggle");a&&(a.checked=!!i.web),u&&(u.checked=!!i.apk),o&&(o.checked=!!i.dmg)}).catch(function(){var i=document.getElementById("auto-update-"+e+"-toggle");i&&(i.checked=!t)})}function dg(e){fetch("/api/update-channel",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({channel:e})}).then(function(t){return t.json()}).then(function(t){var n=document.getElementById("beta-channel-toggle");n&&(n.checked=t.channel==="beta"),Yl()}).catch(function(){var t=document.getElementById("beta-channel-toggle");t&&(t.checked=e!=="beta")})}function Gl(e){for(var t=document.querySelectorAll(".settings-app-icon-option"),n=0;n<t.length;n++){var i=t[n].getAttribute("data-icon")===e;t[n].classList.toggle("selected",i),t[n].setAttribute("aria-pressed",i?"true":"false")}}function bn(){var e=document.getElementById("notification-permission-status"),t=document.getElementById("notification-request-btn"),n=document.getElementById("notification-reset-btn"),i=document.getElementById("notification-test-message");if(e){var a=bi();if(a===null){if(typeof Notification>"u"){e.textContent="\u4E0D\u652F\u6301",e.style.color="var(--fg-muted)",t&&t.classList.add("hidden"),n&&n.classList.add("hidden");return}a=Notification.permission}a==="granted"?(e.textContent="\u5DF2\u6388\u6743 \u2713",e.style.color="var(--success)",t&&t.classList.add("hidden"),n&&n.classList.add("hidden")):a==="denied"?(e.textContent="\u5DF2\u62D2\u7EDD",e.style.color="var(--danger)",t&&t.classList.add("hidden"),n&&n.classList.remove("hidden")):(e.textContent="\u672A\u6388\u6743",e.style.color="var(--warning)",t&&t.classList.remove("hidden"),n&&n.classList.remove("hidden"))}}function cg(){var e=document.getElementById("notification-test-message");if(We){window._onNativePermissionResult=function(t){bn(),e&&(t==="granted"?(e.textContent="\u2713 \u5DF2\u6388\u6743",e.style.color="var(--success)"):(e.textContent="\u2717 \u672A\u6388\u6743\uFF0C\u8BF7\u5728\u7CFB\u7EDF\u8BBE\u7F6E\u4E2D\u5F00\u542F Wand \u7684\u901A\u77E5\u6743\u9650",e.style.color="var(--danger)"),e.classList.remove("hidden")),delete window._onNativePermissionResult};try{WandNative.requestPermission()}catch{}return}typeof Notification>"u"||Notification.requestPermission().then(function(t){if(bn(),t==="granted")e&&(e.textContent="\u2713 \u5DF2\u6388\u6743",e.style.color="var(--success)",e.classList.remove("hidden"));else if(t==="denied"&&e){var n=location.origin;e.innerHTML='\u6D4F\u89C8\u5668\u5DF2\u62E6\u622A\u6388\u6743\u5F39\u7A97\uFF0C\u8BF7\u624B\u52A8\u91CD\u7F6E\uFF1A<br><span style="display:inline-flex;align-items:center;gap:4px;margin:4px 0">\u2460 \u70B9\u51FB\u5730\u5740\u680F\u5DE6\u4FA7\u7684 <span style="display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;border:1px solid var(--border);font-size:11px;vertical-align:middle">i</span> \u6216\u9501\u56FE\u6807</span><br>\u2461 \u627E\u5230\u300C\u901A\u77E5\u300D\u2192 \u6539\u4E3A\u300C\u5141\u8BB8\u300D<br>\u2462 \u5237\u65B0\u9875\u9762\u5373\u53EF',e.style.color="var(--fg-muted)",e.classList.remove("hidden")}})}function Ql(){var e=document.getElementById("notification-test-delay-btn");e&&(e.disabled=!1,e.textContent="10 \u79D2\u540E\u53D1\u9001")}function fg(){var e=document.getElementById("notification-test-message");r.delayedNotificationTimer&&(clearTimeout(r.delayedNotificationTimer),r.delayedNotificationTimer=null);var t=document.getElementById("notification-test-delay-btn");t&&(t.disabled=!0,t.textContent="\u5DF2\u5B89\u6392\uFF0810s\uFF09"),e&&(e.innerHTML="\u5DF2\u5B89\u6392 10 \u79D2\u540E\u53D1\u9001\u6D4B\u8BD5\u901A\u77E5\uFF0C\u8BF7\u5207\u5230\u540E\u53F0\u7B49\u5F85\u3002",e.style.color="var(--text-secondary)",e.classList.remove("hidden")),r.delayedNotificationTimer=setTimeout(function(){r.delayedNotificationTimer=null,Ql(),$l()},1e4)}function $l(){var e=document.getElementById("notification-test-message"),t=[];r.delayedNotificationTimer&&(clearTimeout(r.delayedNotificationTimer),r.delayedNotificationTimer=null,Ql());var n=$f();t.push(n?"\u2713 \u63D0\u793A\u97F3":"\u2717 \u63D0\u793A\u97F3\uFF08\u65E0\u6CD5\u64AD\u653E\uFF09");var i=r.notifBubble;if(La({title:"\u6D4B\u8BD5\u901A\u77E5",body:"\u8FD9\u662F\u4E00\u6761\u6D4B\u8BD5\u901A\u77E5\u3002",type:"info",icon:"\u266A",duration:5e3,playSound:!1}),t.push(i?"\u2713 \u5E94\u7528\u5185\u6C14\u6CE1":"\u2013 \u5E94\u7528\u5185\u6C14\u6CE1\uFF08\u5DF2\u5173\u95ED\uFF09"),We){var a=bi();if(a==="granted")try{WandNative.sendNotification("Wand \u6D4B\u8BD5\u901A\u77E5","\u7CFB\u7EDF\u901A\u77E5\u5DF2\u6B63\u5E38\u5DE5\u4F5C\u3002","wand-test"),t.push("\u2713 \u7CFB\u7EDF\u901A\u77E5")}catch{t.push("\u2717 \u7CFB\u7EDF\u901A\u77E5\uFF08\u53D1\u9001\u5931\u8D25\uFF09")}else if(a==="denied")t.push("\u2717 \u7CFB\u7EDF\u901A\u77E5\uFF08\u5DF2\u62D2\u7EDD\uFF0C\u8BF7\u5728\u7CFB\u7EDF\u8BBE\u7F6E\u4E2D\u5F00\u542F\uFF09");else{window._onNativePermissionResult=function(s){if(bn(),s==="granted")try{WandNative.sendNotification("Wand \u6D4B\u8BD5\u901A\u77E5","\u7CFB\u7EDF\u901A\u77E5\u5DF2\u6B63\u5E38\u5DE5\u4F5C\u3002","wand-test"),t.push("\u2713 \u7CFB\u7EDF\u901A\u77E5\uFF08\u5DF2\u6388\u6743\uFF09")}catch{t.push("\u2717 \u7CFB\u7EDF\u901A\u77E5\uFF08\u53D1\u9001\u5931\u8D25\uFF09")}else t.push("\u2717 \u7CFB\u7EDF\u901A\u77E5\uFF08\u672A\u6388\u6743\uFF09");nr(e,t),delete window._onNativePermissionResult};try{WandNative.requestPermission()}catch{}return}nr(e,t);return}if(typeof Notification>"u"){t.push("\u2013 \u7CFB\u7EDF\u901A\u77E5\uFF08\u4E0D\u652F\u6301\uFF09"),nr(e,t);return}var u=Notification.permission;if(u==="granted"){try{var o=new Notification("Wand \u6D4B\u8BD5\u901A\u77E5",{body:"\u7CFB\u7EDF\u901A\u77E5\u5DF2\u6B63\u5E38\u5DE5\u4F5C\u3002",icon:"/favicon.ico",tag:"wand-test"});setTimeout(function(){o.close()},5e3),t.push("\u2713 \u7CFB\u7EDF\u901A\u77E5")}catch{t.push("\u2717 \u7CFB\u7EDF\u901A\u77E5\uFF08\u53D1\u9001\u5931\u8D25\uFF0C\u53EF\u80FD\u9700\u8981 HTTPS\uFF09")}nr(e,t)}else u==="denied"?(t.push("\u2717 \u7CFB\u7EDF\u901A\u77E5\uFF08\u5DF2\u62D2\u7EDD\uFF09"),nr(e,t)):Notification.requestPermission().then(function(s){bn(),s==="granted"?t.push("\u2713 \u7CFB\u7EDF\u901A\u77E5\uFF08\u5DF2\u6388\u6743\uFF09"):t.push("\u2717 \u7CFB\u7EDF\u901A\u77E5\uFF08\u672A\u6388\u6743\uFF09"),nr(e,t)})}function nr(e,t){if(e){e.innerHTML=t.map(function(i){return p(i)}).join("<br>");var n=t.every(function(i){return i.indexOf("\u2713")===0||i.indexOf("\u2013")===0});e.style.color=n?"var(--success)":"var(--warning)",e.classList.remove("hidden")}}function lt(e){if(!e||typeof e!="object"||!r.terminal)return e;try{typeof r.terminal.remeasure=="function"&&r.terminal.remeasure()}catch{}var t=r.terminal.cols,n=r.terminal.rows;return typeof t=="number"&&typeof n=="number"&&Number.isFinite(t)&&Number.isFinite(n)&&t>0&&n>0&&(e.cols=t,e.rows=n),e}function Xl(){return r.terminal&&r.terminal.cols?Promise.resolve():new Promise(function(e){var t=!1,n=function(){t||(t=!0,e())},i=setTimeout(n,2e3);try{Yn()}catch{}requestAnimationFrame(function(){requestAnimationFrame(function(){r.terminal&&r.terminal.cols&&(clearTimeout(i),n())})})})}function Zl(){var e=Xe(),t=$e(),n=Dt(e,r.config&&r.config.defaultMode?r.config.defaultMode:"default");r.preferredCommand=e,r.chatMode=Dt(e,r.chatMode),Xl().then(function(){return fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({command:e,provider:e,cwd:t,mode:n}))})}).then(function(i){return i.json()}).then(function(i){if(i.error){A(i.error,"error");return}return r.selectedId=i.id,he(),r.drafts[i.id]="",Ft(),Pt()}).then(function(){Ot(!0)}).catch(function(){A("\u65E0\u6CD5\u542F\u52A8\u4F1A\u8BDD\u3002","error")})}var Kr=!1;function pg(){if(!Kr){var e=document.getElementById("cwd"),t=document.getElementById("modal-error"),n=Xe(),i=r.sessionCreateKind||"structured",a=r.sessionCreateWorktree===!0;yi(t);var u=$e(),o=(e?e.value.trim():"")||u,s=Dt(n,r.modeValue);if(i==="structured"){vg(o,s,a,t);return}mg(n,o,s,a,t)}}function vg(e,t,n,i){var a=r.sessionTool==="codex"?"codex":"claude";return Kr=!0,r.modeValue=t,r.chatMode=t,r.sessionTool=a,r.preferredCommand=a,Hi(),Xn(st()),Wl(void 0,e,t,n).then(function(u){return Gt(e),hn(),_t(),u}).then(function(){Ot(!0)}).catch(function(u){He(i,u&&u.message||"\u65E0\u6CD5\u542F\u52A8\u7ED3\u6784\u5316\u4F1A\u8BDD\uFF0C\u8BF7\u786E\u8BA4 Claude \u5DF2\u6B63\u786E\u5B89\u88C5\u3002")}).finally(function(){Kr=!1})}function mg(e,t,n,i,a){Kr=!0,r.modeValue=n,r.chatMode=n,r.sessionTool=e,r.preferredCommand=e,Hi(),Xl().then(function(){return fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({command:e,provider:e,cwd:t,mode:n,worktreeEnabled:i}))})}).then(function(u){return u.json()}).then(function(u){if(u.error){He(a,u.error);return}return r.selectedId=u.id,he(),Gt(t),r.drafts[u.id]="",Ft(),hn(),_t(),Pt()}).then(function(){r.selectedId?Ht(r.selectedId):Ot(!0)}).catch(function(){He(a,e==="codex"?"\u65E0\u6CD5\u542F\u52A8 Codex \u4F1A\u8BDD\uFF0C\u8BF7\u786E\u8BA4 codex \u5DF2\u6B63\u786E\u5B89\u88C5\u5E76\u53EF\u5728\u7EC8\u7AEF\u4E2D\u6267\u884C\u3002":"\u65E0\u6CD5\u542F\u52A8 Claude \u4F1A\u8BDD\uFF0C\u8BF7\u786E\u8BA4 Claude \u5DF2\u6B63\u786E\u5B89\u88C5\u3002")}).finally(function(){Kr=!1})}function gg(){var e=document.getElementById("blank-chat-cwd");e&&(e.addEventListener("click",ed),e.addEventListener("keydown",function(t){(t.key==="Enter"||t.key===" ")&&(t.preventDefault(),ed())}),document.addEventListener("click",function(t){var n=document.getElementById("blank-chat-cwd-dropdown");if(!(!n||n.classList.contains("hidden"))&&!t.target.closest(".blank-chat-cwd-wrap")){n.classList.add("hidden");var i=document.getElementById("blank-chat-cwd-arrow");i&&(i.textContent="\u25BC")}}))}function ed(){var e=document.getElementById("blank-chat-cwd-dropdown"),t=document.getElementById("blank-chat-cwd-arrow");if(e){var n=e.classList.contains("hidden");n?(hg(e),e.classList.remove("hidden"),t&&(t.textContent="\u25B2")):(e.classList.add("hidden"),t&&(t.textContent="\u25BC"))}}function hg(e){var t=an();e.innerHTML='<div class="blank-chat-cwd-loading">\u52A0\u8F7D\u4E2D...</div>',Ca(function(n){var i="",a=r.workingDir||t;if(i+='<div class="blank-chat-cwd-item'+(a===t?" active":"")+'" data-path="'+p(t)+'"><span class="blank-chat-cwd-item-label">\u9ED8\u8BA4</span>'+mt(t,"blank-chat-cwd-item-path")+"</div>",n.length){var u={};u[t]=!0,n.forEach(function(o){u[o.path]||(u[o.path]=!0,i+='<div class="blank-chat-cwd-item'+(a===o.path?" active":"")+'" data-path="'+p(o.path)+'">'+mt(o.path,"blank-chat-cwd-item-path")+"</div>")})}e.innerHTML=i,jt(e),e.querySelectorAll(".blank-chat-cwd-item").forEach(function(o){o.addEventListener("click",function(s){s.stopPropagation();var l=o.dataset.path;r.workingDir=l;try{localStorage.setItem("wand-working-dir",l)}catch{}var d=document.getElementById("blank-chat-cwd-path");Ou(d,l),e.classList.add("hidden");var f=document.getElementById("blank-chat-cwd-arrow");f&&(f.textContent="\u25BC");var c=document.getElementById("folder-picker-input");c&&(c.value=l)})})})}function yg(){var e=document.getElementById("recent-paths-bubbles");e&&Ca(function(t){if(!t.length){e.innerHTML="";return}e.innerHTML=t.map(function(n){return'<button class="recent-path-bubble" data-path="'+p(n.path)+'" title="'+p(n.path)+'">'+mt(n.path,"recent-path-bubble-path")+"</button>"}).join(""),jt(e),e.querySelectorAll(".recent-path-bubble").forEach(function(n){n.addEventListener("click",function(){var i=document.getElementById("cwd");i&&(i.value=n.dataset.path||"",r.cwdValue=n.dataset.path||"")})})})}function td(){r.suggestionTimer&&clearTimeout(r.suggestionTimer),r.suggestionTimer=setTimeout(bg,120)}function bg(){var e=document.getElementById("session-modal");if(e&&e.classList.contains("hidden")){rr();return}var t=document.getElementById("cwd");t&&fetch("/api/path-suggestions?q="+encodeURIComponent(t.value.trim()),{credentials:"same-origin"}).then(function(n){return n.json()}).then(Eg).catch(rr)}function Eg(e){var t=document.getElementById("cwd-suggestions");if(!t||!e.length){rr();return}t.innerHTML=e.map(function(n){return'<button class="suggestion-item" data-path="'+p(n.path)+'"><strong>'+p(n.name)+"</strong><small>"+mt(n.path,"suggestion-item-path")+"</small></button>"}).join(""),jt(t),t.querySelectorAll(".suggestion-item").forEach(function(n){n.addEventListener("click",function(){document.getElementById("cwd").value=n.dataset.path||"",r.cwdValue=n.dataset.path||"",rr()})}),t.classList.remove("hidden")}function rr(){var e=document.getElementById("cwd-suggestions");e&&(e.classList.add("hidden"),e.innerHTML="")}function Fg(e){if(!e.isComposing){if(Ms(e)){Ka(e);return}if(e.key==="Enter"){if(e.shiftKey){e.preventDefault();var t=document.getElementById("input-box");if(t){var n=t.selectionStart||0,i=t.value,a=i.slice(0,n)+`
49
- `+i.slice(n);t.value=a,t.selectionStart=n+1,t.selectionEnd=n+1,et(a,!0),wt(t)}return}e.preventDefault();var u=!!(e.metaKey||e.ctrlKey);Bs(u?{interrupt:!0}:void 0);return}if(e.key==="Backspace"){setTimeout(function(){var m=document.getElementById("input-box");m&&et(m.value,!0)},0);return}if(e.key==="Tab"){e.preventDefault();var t=document.getElementById("input-box");if(t){var n=t.selectionStart||0,i=t.value,a=i.slice(0,n)+" "+i.slice(n);t.value=a,et(a,!0)}return}if(e.key==="Escape"){e.preventDefault();var o=st();ue(o)?o&&o.structuredState&&o.structuredState.inFlight&&Ja():vt(Ir("escape"),"escape");return}if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="c"){var s=document.getElementById("input-box"),l=s&&s.selectionStart!==s.selectionEnd||Di();if(l)return;var d=st();if(ue(d)){e.preventDefault(),d&&d.structuredState&&d.structuredState.inFlight&&Ja();return}e.preventDefault(),vt(Ir("ctrl_c"),"ctrl_c");return}if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="d"){var f=document.getElementById("input-box"),c=f&&f.selectionStart!==f.selectionEnd||Di();if(c)return;var v=st();if(ue(v)){e.preventDefault();return}e.preventDefault(),vt(Ir("ctrl_d"),"ctrl_d");return}if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="l"){e.preventDefault();var h=st();if(ue(h))return;vt(Ir("ctrl_l"),"ctrl_l");return}if(!((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="a")&&!((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="v")){if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="x"){var t=document.getElementById("input-box"),g=t&&t.selectionStart!==t.selectionEnd;if(g)return;e.preventDefault(),vt("","ctrl_x");return}e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&setTimeout(function(){var m=document.getElementById("input-box");m&&et(m.value)},0)}}}var wg=10*1024*1024;function Cg(e){return e<1024?e+" B":e<1024*1024?(e/1024).toFixed(1)+" KB":(e/(1024*1024)).toFixed(1)+" MB"}function Bg(e){return/^image\/(png|jpe?g|gif|webp|bmp|svg\+xml)/.test(e)}function xu(e){if(e){if(e.size>wg){A("\u6587\u4EF6\u8FC7\u5927\uFF08\u4E0A\u9650 10 MB\uFF09: "+e.name,"error");return}var t={file:e,name:e.name,size:e.size,previewUrl:null};Bg(e.type)&&(t.previewUrl=URL.createObjectURL(e)),r.pendingAttachments.push(t),Su()}}function Dg(e){var t=r.pendingAttachments.splice(e,1);t.length&&t[0].previewUrl&&URL.revokeObjectURL(t[0].previewUrl),Su()}function kg(){r.pendingAttachments.forEach(function(e){e.previewUrl&&URL.revokeObjectURL(e.previewUrl)}),r.pendingAttachments=[],Su()}function Su(){var e=document.getElementById("attachment-preview");if(e){var t=r.pendingAttachments;if(t.length===0){e.classList.add("hidden"),e.innerHTML="";return}e.classList.remove("hidden");for(var n="",i=0;i<t.length;i++){var a=t[i],u=a.previewUrl?'<img src="'+p(a.previewUrl)+'" alt="">':'<span class="att-icon">'+V("file",{size:13,strokeWidth:1.7})+"</span>";n+='<span class="attachment-pill" data-index="'+i+'">'+u+'<span class="att-name" title="'+p(a.name)+'">'+p(a.name)+'</span><span class="att-size">'+Cg(a.size)+'</span><button class="att-remove" data-index="'+i+'" title="\u79FB\u9664">\xD7</button></span>'}e.innerHTML=n,e.querySelectorAll(".att-remove").forEach(function(o){o.addEventListener("click",function(s){s.preventDefault(),s.stopPropagation(),Dg(parseInt(o.getAttribute("data-index"),10))})})}}function Ag(e){if(!r.pendingAttachments.length)return Promise.resolve([]);var t=new FormData;return r.pendingAttachments.forEach(function(n){t.append("files",n.file,n.name)}),fetch("/api/sessions/"+encodeURIComponent(e)+"/upload",{method:"POST",body:t,credentials:"same-origin"}).then(function(n){return n.ok?n.json():n.json().then(function(i){throw new Error(i.error||"\u4E0A\u4F20\u5931\u8D25")})}).then(function(n){return n.files||[]})}function xg(e){if(!e||!e.length)return"";var t=e.map(function(n){return n.savedPath});return`[\u9644\u4EF6\u5DF2\u4E0A\u4F20\uFF0C\u8BF7\u67E5\u770B\u4EE5\u4E0B\u6587\u4EF6:
42
+ `):"":""}function dm(e,t,n,i,a,u){var o=u||{},s=e.input||{},l=s.file_path||s.path||"",d=l.split("/").pop()||l,f=e.id||"tool-"+n+"-"+(typeof a=="number"?a:0),c=s.old_string||"",v=s.new_string||s.content||"",h=s.old_content||"",g=s.new_content||"",m=s.unified_diff||s.diff||"",y=s.kind||"",C=n==="Write"||n==="MultiEdit",E=t&&t.is_error,B=pn(t&&t.content),D=!!(B&&B.trim().length>0),F="",I="",L="";m?L='<div class="diff-col diff-col-full"><div class="diff-col-label">Diff</div>'+cm(m)+"</div>":C?I='<div class="diff-line diff-add">+ '+p(g)+"</div>":(c&&(F='<div class="diff-line diff-remove">- '+p(c)+"</div>"),v&&(I='<div class="diff-line diff-add">+ '+p(v)+"</div>"));var H="",U="";t?E?(H="diff-error",U=B.indexOf("haven't granted")!==-1||B.indexOf("permission")!==-1?"\u7B49\u5F85\u6388\u6743":"\u5931\u8D25"):(H="diff-success",U=y==="add"?"\u5DF2\u65B0\u589E":y==="delete"?"\u5DF2\u5220\u9664":y==="move"?"\u5DF2\u79FB\u52A8":"\u5DF2\u4FEE\u6539"):(H="diff-pending",U="\u6267\u884C\u4E2D");var x=Tt("diff",[i,f||a,a]),k=bt(x),T=Sn("editCards"),M=o.forceExpandedToolBodies?!0:k===null?T:k,Y=M?"":" collapsed",z=!L&&F&&I,Q=z?"diff-col-half":"diff-col-full",le=L||(z?'<div class="diff-col '+Q+'"><div class="diff-col-label">\u65E7</div>'+F+"</div>":"")+'<div class="diff-col '+Q+'"><div class="diff-col-label">'+(z?"\u65B0":"")+"</div>"+(I||F||gl(l))+"</div>",ee=l?'<button class="diff-open-file" type="button" data-path="'+p(l)+`" title="\u6253\u5F00\u6587\u4EF6" onclick="event.stopPropagation(); if(window.__openFilePreview)window.__openFilePreview(this.getAttribute('data-path'));">\u6253\u5F00</button>`:"";return'<div class="inline-diff'+Y+'" data-tool-name="'+p(n)+'" data-expand-kind="diff" data-expand-key="'+p(x)+'" data-tool-use-id="'+p(f)+'" data-path="'+p(l)+'"><div class="diff-header" role="button" tabindex="0" aria-expanded="'+(M?"true":"false")+`" onclick="__tcToggle(event,this)" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();__tcToggle(event,this);}"><span class="diff-file-icon"></span><span class="diff-file-name">`+p(d)+"</span>"+gt(l,"diff-path")+'<span class="diff-status '+H+'">'+U+"</span>"+ee+'<span class="diff-toggle">\u25BC</span></div><div class="diff-body" aria-hidden="'+(M?"false":"true")+'"><div class="diff-columns">'+le+"</div></div></div>"}function cm(e){for(var t=String(e||"").split(`
43
+ `),n=600,i="",a=0;a<t.length&&a<n;a++){var u=t[a],o="diff-context";/^@@/.test(u)?o="diff-hunk":/^\+/.test(u)&&!/^\+\+\+/.test(u)?o="diff-add":/^-/.test(u)&&!/^---/.test(u)&&(o="diff-remove"),i+='<div class="diff-line '+o+'">'+p(u||" ")+"</div>"}return t.length>n&&(i+='<div class="diff-line diff-context">\u2026\uFF08\u5DF2\u622A\u65AD '+(t.length-n)+" \u884C\uFF09</div>"),i||gl("")}function gl(e){var t=e?"\uFF0C\u53EF\u6253\u5F00\u6587\u4EF6\u67E5\u770B\u5F53\u524D\u5185\u5BB9":"";return'<div class="diff-empty">Codex \u672A\u63D0\u4F9B\u5185\u8054 diff'+t+"\u3002</div>"}function hl(e,t){return e?'<pre class="inline-tool-result-text" style="max-height: 300px; overflow-y: auto;">'+p(e)+"</pre>":'<span class="inline-tool-empty">\u65E0\u8F93\u51FA</span>'}function fm(e,t,n,i,a){var u=a||{},o=e.name||"unknown",s=e.id||"tool-"+o+"-"+(typeof n=="number"?n:0),l=vm(o,e.input);if(o==="Read"||o==="Glob"||o==="Grep"||o==="WebFetch"||o==="WebSearch"||o==="TodoRead")return sm(e,t,o,l,"",i,n,u);if(o==="Bash")return lm(e,t,o,i,n,u);if(o==="Edit"||o==="Write"||o==="MultiEdit")return dm(e,t,o,i,n,u);if(o==="AskUserQuestion"&&e.input&&e.input.questions){var d=e.input.questions;if(d&&d.length>0){for(var f=!!t,c=r.askUserSelections[s]||{},v=!!c.submitted,h=f?pn(t.content):"",g=h?h.trim().split(`
44
+ `):[],m="",y=0;y<d.length;y++)if(d[y].header){m=d[y].header;break}var C=m?'<span class="tool-use-summary">'+p(m)+"</span>":"",E="";d.forEach(function(_e,$){var fe=!!_e.multiSelect,Ce=_e.question?'<div class="ask-user-title">'+p(_e.question)+"</div>":"",Be="";_e.options&&_e.options.length>0&&(Be='<div class="ask-user-options" data-multi-select="'+fe+'">',_e.options.forEach(function(ve,Fe){var et=ve.label?p(ve.label):"\u9009\u9879 "+(Fe+1),dt=ve.description?'<div class="ask-user-option-desc">'+p(ve.description)+"</div>":"";if(f){var it=g[$]||g[0]||"",Ne=it.split(",").map(function(Pe){return Pe.trim()}),Rt=Ne.indexOf(ve.label||"")!==-1;Be+='<div class="ask-user-option ask-user-option-readonly'+(Rt?" ask-user-option-chosen":"")+'"><span class="ask-user-indicator"></span><div class="ask-user-option-content"><div class="ask-user-option-label">'+et+"</div>"+dt+"</div></div>"}else{var Ye=(c[$]||[]).indexOf(Fe)!==-1,De=v?" disabled":"";Be+='<button class="ask-user-option'+(Ye?" selected":"")+'" data-option-index="'+Fe+'" data-question-index="'+$+'" data-option-label="'+p(ve.label||"\u9009\u9879 "+(Fe+1))+`" onclick="__askSelect('`+p(s)+"',"+$+","+Fe+","+fe+')"'+De+'><span class="ask-user-indicator"></span><div class="ask-user-option-content"><div class="ask-user-option-label">'+et+"</div>"+dt+"</div></button>"}}),Be+="</div>"),E+='<div class="ask-user-question-group" data-question-index="'+$+'">'+Ce+Be+"</div>"});var B="";if(!f){for(var D=!0,F=0;F<d.length;F++)if(!c[F]||c[F].length===0){D=!1;break}var I=!D||v?" disabled":"",L=v?" ask-user-submitted":"",H=v?"\u5DF2\u63D0\u4EA4...":"\u786E\u8BA4\u63D0\u4EA4";B='<div class="ask-user-actions"><button class="ask-user-submit'+L+'" data-tool-use-id="'+p(s)+`" onclick="__askSubmit('`+p(s)+`')"`+I+">"+H+"</button></div>"}var U="";if(f&&h){var x=h.trim().replace(/\n/g,", ");x.length>40&&(x=x.slice(0,37)+"..."),U='<span class="tool-use-file">'+p(x)+"</span>"}var k=Tt("tool-card",[i,s]),T=bt(k),M=u.forceExpandedToolBodies?!0:T===null?!f:T,Y=M?"":" collapsed",z=f?" ask-user-answered":"";return'<div class="tool-use-card ask-user'+z+Y+'" data-tool-use-id="'+p(s)+'" data-expand-kind="tool-card" data-expand-key="'+p(k)+'"><div class="tool-use-header" data-tool-toggle onclick="__tcToggle(event,this)"><span class="tool-use-icon">'+(f?"\u2713":"?")+'</span><span class="tool-use-name">\u63D0\u95EE</span>'+C+U+'<span class="tool-use-toggle">\u25BC</span></div><div class="tool-use-body ask-user-body">'+E+B+"</div></div>"}}var Q=e.description||e.input&&e.input.description||"",le=pm(e.name,e.input),ee="",Z="";Q?(ee=Q.length>80?Q.slice(0,77)+"...":Q,l&&(Z='<span class="tool-use-file">'+p(l)+"</span>")):(ee=du(o),l&&(Z='<span class="tool-use-file">'+p(l)+"</span>"),le&&(Z+='<span class="tool-use-summary">'+p(le)+"</span>"));var q=e.input?JSON.stringify(e.input,null,2):"{}",O="loading",N='<span class="tool-use-spinner"></span>',G="";if(t){var J=t.is_error,ne=pn(t.content);O=J?"error":"success",N=yl(o);var de=ne&&ne.trim().length>0;de?G='<pre class="tool-use-result-content">'+p(ne)+"</pre>":G='<span class="tool-use-result-empty">\u65E0\u8F93\u51FA</span>'}else N=yl(o);var re=Tt("tool-card",[i,s]),ie=bt(re),qe=Sn("editCards"),ge=u.forceExpandedToolBodies?!0:ie===null?qe:ie,ce=t&&t._truncated===!0,R=ge?"":" collapsed",ht='<span class="tool-use-toggle">\u25BC</span>';return'<div class="tool-use-card '+O+R+'" data-expand-kind="tool-card" data-expand-key="'+p(re)+'" data-tool-use-id="'+p(s)+'"'+(ce?' data-truncated="true"':"")+'><div class="tool-use-header" role="button" tabindex="0" aria-expanded="'+(ge?"true":"false")+`" data-tool-toggle onclick="__tcToggle(event,this)" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();__tcToggle(event,this);}"><span class="tool-use-icon">`+N+'</span><span class="tool-use-name">'+p(ee)+"</span>"+Z+ht+'</div><div class="tool-use-body" aria-hidden="'+(ge?"false":"true")+'">'+(Q?'<div class="tool-use-meta"><span class="tool-use-meta-label">\u5DE5\u5177\uFF1A</span>'+p(o)+"</div>":"")+'<pre class="tool-use-content">'+p(q)+"</pre>"+(G?'<div class="tool-use-result">'+G+"</div>":"")+"</div></div>"}function du(e){var t={Read:"\u8BFB\u53D6\u6587\u4EF6",Write:"\u5199\u5165\u6587\u4EF6",Edit:"\u7F16\u8F91\u6587\u4EF6",MultiEdit:"\u591A\u5904\u7F16\u8F91",Bash:"\u6267\u884C\u547D\u4EE4",Grep:"\u641C\u7D22\u5185\u5BB9",Glob:"\u67E5\u627E\u6587\u4EF6",WebFetch:"\u83B7\u53D6\u7F51\u9875",WebSearch:"\u641C\u7D22\u7F51\u9875",Task:"\u4EFB\u52A1",TodoWrite:"\u66F4\u65B0\u5F85\u529E",TodoRead:"\u8BFB\u53D6\u5F85\u529E",NotebookEdit:"\u7F16\u8F91\u7B14\u8BB0\u672C",Agent:"\u5B50\u4EE3\u7406",AskUserQuestion:"\u63D0\u95EE",Exit:"\u9000\u51FA"};return t[e]||e}function yl(e){var t={Read:"R",Write:"W",Edit:"E",MultiEdit:"E",Bash:"$",Grep:"G",Glob:"F",WebFetch:"\u21E3",WebSearch:"\u21E2",Task:"T",TodoWrite:"\u2610",TodoRead:"\u2611",NotebookEdit:"N",Agent:"A",Exit:"\xD7"};return t[e]||"\xB7"}function pm(e,t){if(!t||typeof t!="object")return"";var n=Object.keys(t);if(n.length===0)return"{}";if(e==="Read")return"\u8BFB\u53D6\u6587\u4EF6";if(e==="Write")return"\u5199\u5165\u6587\u4EF6";if(e==="Edit"){var i=t.edits?t.edits.length:0;return"\u7F16\u8F91 ("+i+" \u5904\u4FEE\u6539)"}if(e==="Bash"){var a=t.command||"";if(a){var u=a.length>60?a.slice(0,60)+"...":a;return"\u547D\u4EE4\uFF1A"+u}}if(e==="Grep"){var o=t.pattern||"",s=t.path||"";if(o)return"\u641C\u7D22\uFF1A"+o+(s?" (\u5728 "+s+")":"")}if(e==="Glob"){var o=t.pattern||"";if(o)return"\u67E5\u627E\uFF1A"+o}if(e==="Agent"){var l=t.prompt||t.task||"";if(l){var d=l.length>40?l.slice(0,40)+"...":l;return"\u4EFB\u52A1\uFF1A"+d}}if(e==="Task"){var l=t.task||t.description||"";if(l){var d=l.length>40?l.slice(0,40)+"...":l;return"\u4EFB\u52A1\uFF1A"+d}}if(e==="TodoWrite"){var f=t.todos||[];return"\u66F4\u65B0\u5F85\u529E ("+f.length+" \u9879)"}if(e==="WebSearch"){var c=t.query||"";if(c)return"\u641C\u7D22\uFF1A"+c}var v=n[0],h=t[v];if(typeof h=="string"){var g=h.length>50?h.slice(0,50)+"...":h;return v+": "+g}return n.length+" \u4E2A\u53C2\u6570"}function vm(e,t){if(!t)return null;var n=t.file_path||t.path||t.cwd;return n?n.length>50?"..."+n.slice(-47):n:null}function mm(e){if(!e)return"";for(var t=`
45
+ `,n=e.split(t),i=[],a=!1,u=0;u<n.length;u++){var o=n[u],s=o.trim();if(!(!a&&!s)){if(a=!0,s.indexOf("\u23FA")===0&&s.length>2){i.push(s.slice(1).trim());continue}if(s.indexOf("\u25CF")===0){if(s=s.slice(1).trim(),!s)continue;o=s}i.push(o)}}for(;i.length>0&&!i[i.length-1].trim();)i.pop();for(var l=[],d={},f=0;f<i.length;f++){var c=i[f].replace(/\s+/g,"");c.length>5&&d[c]||(c.length>5&&(d[c]=!0),l.push(i[f]))}return l.join(t)}function bl(e){var t=`
46
+ `,n=e.split(t),i=[],a=0;function u(m){var y=m.trim();return y.charAt(0)==="|"&&(y=y.slice(1)),y.charAt(y.length-1)==="|"&&(y=y.slice(0,-1)),y.split("|")}function o(m){return m?' style="text-align:'+m+'"':""}function s(m,y,C){var E="<thead><tr>"+m.map(function(D,F){return"<th"+o(y[F])+">"+D.trim()+"</th>"}).join("")+"</tr></thead>",B=C.length?"<tbody>"+C.map(function(D){return"<tr>"+D.map(function(F,I){return"<td"+o(y[I])+">"+F.trim()+"</td>"}).join("")+"</tr>"}).join("")+"</tbody>":"";return'<div class="md-table-wrap"><table class="md-table">'+E+B+"</table></div>"}for(;a<n.length;){var l=n[a];if(l.indexOf("|")!==-1&&a+1<n.length){var d=n[a+1].trim();if(/^\|?\s*:?-+:?(\s*\|\s*:?-+:?)+\s*\|?$/.test(d)){for(var f=u(l),c=u(d).map(function(m){var y=m.trim(),C=y.charAt(0)===":",E=y.charAt(y.length-1)===":";return C&&E?"center":E?"right":C?"left":""}),v=[],h=a+2;h<n.length;){var g=n[h].trim();if(!g||g.indexOf("|")===-1)break;v.push(u(n[h])),h+=1}i.push("",s(f,c,v),""),a=h;continue}}i.push(l),a+=1}return i.join(t)}function cu(e){if(!e)return"";var t=p(e),n="`",i=`
47
+ `;function a(q,O,N,G){for(var J=0;;){var ne=q.indexOf(O,J);if(ne===-1)break;var de=q.indexOf(O,ne+O.length);if(de===-1)break;var re=q.slice(ne+O.length,de);if(!re){J=de+O.length;continue}var ie=N+re+G;q=q.slice(0,ne)+ie+q.slice(de+O.length),J=ne+ie.length}return q}function u(q){return q>=48&&q<=57||q>=65&&q<=90||q>=97&&q<=122||q===95}function o(q,O,N){for(var G=0;G<q.length;){var J=q.indexOf("_",G);if(J===-1)break;var ne=J>0?q.charCodeAt(J-1):0;if(u(ne)){G=J+1;continue}for(var de=J+1,re=-1;de<q.length;){var ie=q.indexOf("_",de);if(ie===-1)break;var qe=ie+1,ge=qe<q.length?q.charCodeAt(qe):0;if(!u(ge)){re=ie;break}de=ie+1}if(re===-1)break;var ce=q.slice(J+1,re);if(!ce){G=re+1;continue}var R=O+ce+N;q=q.slice(0,J)+R+q.slice(re+1),G=J+R.length}return q}function s(q,O,N,G){return q.split(i).map(function(J){return J.indexOf(O)!==0?J:N+J.slice(O.length)+G}).join(i)}function l(q){return q.split(i).map(function(O){var N=O.indexOf(". ");if(N<=0)return O;for(var G=0;G<N;G+=1){var J=O.charCodeAt(G);if(J<48||J>57)return O}return"<li>"+O.slice(N+2)+"</li>"}).join(i)}function d(q){return q.split(i+i).map(function(O){var N=O.trim();return N?N.indexOf("<div")===0||N.indexOf("<h1")===0||N.indexOf("<h2")===0||N.indexOf("<h3")===0||N.indexOf("<h4")===0||N.indexOf("<h5")===0||N.indexOf("<h6")===0||N.indexOf("<ul")===0||N.indexOf("<ol")===0||N.indexOf("<li")===0||N.indexOf("<blockquote")===0||N.indexOf("<pre")===0?N:"<p>"+N.split(i).join("<br>")+"</p>":""}).join("")}for(var f=0;;){var c=t.indexOf(n+n+n,f);if(c===-1)break;var v=t.indexOf(n+n+n,c+3);if(v===-1)break;var h=t.slice(c+3,v),g=h.indexOf(i),m="",y=h;if(g!==-1&&g<30){for(var C=h.slice(0,g).trim(),E=C.length>0,B=0;B<C.length;B+=1){var D=C.charCodeAt(B),F=D>=48&&D<=57,I=D>=65&&D<=90,L=D>=97&&D<=122;if(!F&&!I&&!L){E=!1;break}}E&&(m=C,y=h.slice(g+1))}var H=gm(y.trim(),m),U=H.replace(/_/g,"&#95;").replace(/\*/g,"&#42;"),x='<div class="code-block"><div class="code-block-header"><span class="code-lang">'+(m||"code")+'</span><button class="code-copy">Copy</button></div><pre><code>'+U+"</code></pre></div>";t=t.slice(0,c)+x+t.slice(v+3),f=c+x.length}for(f=0;;){var k=t.indexOf(n,f);if(k===-1)break;var T=t.indexOf(n,k+1);if(T===-1)break;if(T===k+1){f=T+1;continue}var M=t.slice(k+1,T),Y=M.replace(/_/g,"&#95;").replace(/\*/g,"&#42;"),z='<code class="code-inline">'+Y+"</code>";t=t.slice(0,k)+z+t.slice(T+1),f=k+z.length}t=a(t,"**","<strong>","</strong>"),t=a(t,"*","<em>","</em>"),t=o(t,"<em>","</em>"),t=s(t,"### ","<h3>","</h3>"),t=s(t,"## ","<h2>","</h2>"),t=s(t,"# ","<h1>","</h1>"),t=s(t,"&gt; ","<blockquote>","</blockquote>"),t=s(t,"- ","<li>","</li>"),t=s(t,"* ","<li>","</li>"),t=l(t),t=bl(t);var Q=t.split(i),le=[],ee=[];function Z(){ee.length&&(le.push("<ul>"+ee.join("")+"</ul>"),ee=[])}return Q.forEach(function(q){if(q.indexOf("<li>")===0&&q.lastIndexOf("</li>")===q.length-5){ee.push(q);return}Z(),le.push(q)}),Z(),t=d(le.join(i)),'<div class="markdown-content">'+t+"</div>"}function gm(e,t){return e=e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e}function $n(e){var t=String(e||"").trim();return t.length<=24?t||"\u672A\u9009\u62E9\u4F1A\u8BDD":t.slice(0,21)+"..."}function fu(e){return String(e||"").replace(/\r\r\n/g,`\r
48
+ `).replace(/\u0000/g,"")}function hm(){var e=document.getElementById("login-cert-hint");e&&e.classList.remove("hidden");var t=document.getElementById("login-cert-http-link");t&&(t.href="http://"+location.host+location.pathname,t.style.display=location.protocol==="https:"?"":"none")}function ym(){var e=document.getElementById("login-cert-hint");e&&e.classList.add("hidden")}function pu(){if(!r.loginPending){var e=document.getElementById("password"),t=document.getElementById("login-button"),n=document.getElementById("login-error");!e||!t||!n||(yi(n),ym(),e.dataset.error="false",e.setAttribute("aria-invalid","false"),r.loginPending=!0,t.disabled=!0,t.textContent="\u767B\u5F55\u4E2D...",fetch("/api/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:e.value}),credentials:"same-origin"}).then(function(i){return i.status===429?(He(n,"\u767B\u5F55\u5C1D\u8BD5\u6B21\u6570\u8FC7\u591A\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5\u3002"),Promise.reject("handled")):i.ok?fetch("/api/config",{credentials:"same-origin"}):(e.dataset.error="true",e.setAttribute("aria-invalid","true"),He(n,"\u5BC6\u7801\u9519\u8BEF\uFF0C\u8BF7\u91CD\u8BD5\u3002"),Promise.reject("handled"))}).then(function(i){return i.ok?i.json():(location.protocol==="https:"?hm():He(n,"\u767B\u5F55\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002"),Promise.reject("handled"))}).then(function(i){r.config=i;var a=document.getElementById("status-dot"),u=document.getElementById("status-text");return a&&a.classList.add("active"),u&&(u.textContent="\u5DF2\u767B\u5F55"),Ot()}).then(function(){jo(),Qt()}).catch(function(i){i!=="handled"&&(console.error("[wand] Login error:",i),He(n,"\u767B\u5F55\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002"))}).finally(function(){r.loginPending=!1,t.disabled=!1,t.textContent="\u8FDB\u5165\u63A7\u5236\u53F0"}))}}function vu(){return typeof WandNative<"u"&&typeof WandNative.switchServer=="function"}function El(){if(vu())try{WandNative.switchServer()}catch{}}function bm(){return typeof WandNative<"u"&&typeof WandNative.backToNative=="function"?!0:typeof window.__wandBackToNative=="function"}function Em(){try{if(typeof WandNative<"u"&&typeof WandNative.backToNative=="function"){WandNative.backToNative();return}typeof window.__wandBackToNative=="function"&&window.__wandBackToNative()}catch{}}function Fl(){fetch("/api/logout",{method:"POST",credentials:"same-origin"}).catch(function(){}),Ko(),Mn(!1),Ka(),wr(),r.config=null,r.selectedId=null,he(),r.sessions=[],r.claudeHistory=[],r.claudeHistoryLoaded=!1,r.claudeHistoryExpanded=!1,r.claudeHistoryExpandedDirs={},r.sessionsDrawerOpen=!1,Se("wand-sidebar-open",!1),Qt()}function Ot(){return mn()}function mu(e){return e==="full-access"?"\u5168\u6743\u9650":e==="default"?"\u9ED8\u8BA4":e==="native"?"\u539F\u751F":e==="auto-edit"?"\u81EA\u52A8\u7F16\u8F91":e==="managed"?"\u6258\u7BA1":e}function rt(){return r.sessionTool||r.preferredCommand||"claude"}function Fm(){var e=r.sessions.find(function(t){return t.id===r.selectedId});return e&&e.provider||r.preferredCommand||"claude"}function wl(e,t){return t?"\u952E\u76D8\u8F93\u5165\u5C06\u53D1\u9001\u5230\u7EC8\u7AEF":e&&(e.status==="exited"||e.status==="failed"||e.status==="stopped")?Wa(e)?"\u8F93\u5165\u6D88\u606F\u4EE5\u7EE7\u7EED\u4F1A\u8BDD":"\u4F1A\u8BDD\u5DF2\u7ED3\u675F":ue(e)&&e.structuredState&&e.structuredState.inFlight?"\u56DE\u590D\u4E2D\uFF0C\u53EF\u7EE7\u7EED\u8F93\u5165":"\u8F93\u5165\u6D88\u606F"}function Cl(e,t){return e==="codex"?"Codex \u652F\u6301 PTY \u7EC8\u7AEF\u4E0E\u7ED3\u6784\u5316\uFF08JSONL\uFF09\u4E24\u79CD\u4F1A\u8BDD\uFF0C\u7ED3\u6784\u5316\u6A21\u5F0F\u6309 full-access \u542F\u52A8\u3002":t==="full-access"?"\u81EA\u52A8\u786E\u8BA4\u6743\u9650\u8BF7\u6C42\u4E0E\u9AD8\u6743\u9650\u64CD\u4F5C\uFF0C\u9002\u5408\u4F60\u786E\u8BA4\u73AF\u5883\u5B89\u5168\u540E\u7684\u8FDE\u7EED\u4FEE\u6539\u3002":t==="auto-edit"?"\u4FDD\u7559\u4EA4\u4E92\u5F0F\u4F1A\u8BDD\uFF0C\u540C\u65F6\u66F4\u504F\u5411\u76F4\u63A5\u7F16\u8F91\u4EE3\u7801\u3002":t==="native"?"\u8C03\u7528 Claude \u539F\u751F API \u8F93\u51FA\uFF0C\u9002\u5408\u5FEB\u901F\u95EE\u7B54\u6216\u4E00\u6B21\u6027\u751F\u6210\u3002":t==="managed"?"AI \u81EA\u52A8\u5B8C\u6210\u6240\u6709\u5DE5\u4F5C\uFF0C\u65E0\u9700\u4E2D\u9014\u786E\u8BA4\uFF0C\u9002\u5408\u6709\u660E\u786E\u76EE\u6807\u7684\u4EFB\u52A1\u3002":"\u4FDD\u7559\u6807\u51C6\u4EA4\u4E92\u6D41\u7A0B\uFF0C\u9002\u5408\u624B\u52A8\u786E\u8BA4\u6BCF\u4E00\u6B65\u3002"}function gu(e){return e==="codex"?["full-access"]:["default","full-access","auto-edit","native","managed"]}function mt(e,t){var n=gu(e);if(n.indexOf(t)!==-1)return t;var i=r.config&&r.config.defaultMode?r.config.defaultMode:"default";return n.indexOf(i)!==-1?i:n[0]}function Eh(e,t){return gu(e).map(function(n){var i=Bl(n);return'<option value="'+p(n)+'"'+(n===t?" selected":"")+' title="'+i+'">'+p(mu(n))+"</option>"}).join("")}function Bl(e){var t={default:"\u6807\u51C6\u6A21\u5F0F - \u9700\u8981\u786E\u8BA4\u6587\u4EF6\u4FEE\u6539","full-access":"\u5B8C\u5168\u8BBF\u95EE - \u81EA\u52A8\u786E\u8BA4\u6743\u9650\u4E0E\u64CD\u4F5C","auto-edit":"\u81EA\u52A8\u7F16\u8F91 - \u81EA\u52A8\u786E\u8BA4\u6587\u4EF6\u4FEE\u6539",native:"\u539F\u751F\u6A21\u5F0F - \u8FD4\u56DE\u7ED3\u6784\u5316\u8F93\u51FA",managed:"\u6258\u7BA1\u6A21\u5F0F - AI \u81EA\u52A8\u5B8C\u6210\u6240\u6709\u5DE5\u4F5C"};return t[e]||""}function wm(e){var t=e&&e.provider?e.provider:"claude";return(ue(e)?"\u7ED3\u6784\u5316":"\u7EC8\u7AEF")+" \xB7 "+t}function Cm(e){return ue(e)?"\u7ED3\u6784\u5316 \xB7 \u5757\u7EA7\u8BB0\u5F55":e&&e.provider==="codex"?"\u7EC8\u7AEF \xB7 Codex PTY\uFF08chat \u4E3A\u89E3\u6790\u89C6\u56FE\uFF09":"\u7EC8\u7AEF \xB7 PTY \u4F1A\u8BDD"}function Dl(e){return e?ue(e)||e.provider==="codex":!1}function kl(e,t){if(!e||!e.is_error||!t||t.is_error)return!1;var n=pn(e.content).toLowerCase(),i=pn(t.content).toLowerCase();return n?n.indexOf("invalid pages parameter")!==-1&&i.length>0:!1}function ue(e){return!!e&&(e.sessionKind==="structured"||e.runner==="claude-cli-print")}function Hi(){r.chatMode=mt("claude",r.chatMode);var e=document.getElementById("mode-hint");e&&(e.textContent=Bl(r.chatMode)),qn()}function Al(e,t){t=t||{};var n=t.kind==="compact"||t.kind==="popover"?t.kind:"dropdown",i=rt(),a=r.chatMode||"default",u=Hr(e)||"",o=Ni(u,e),s=Fu(e);function l(f,c,v,h){var g=n==="compact"?"":'<span class="chat-mode-trio-tag">'+p(c)+"</span>";return'<span class="composer-text-pill chat-mode-trio-pill" data-mode-control-pill="'+f+'" title="'+p(c)+'">'+g+'<span class="composer-text-label">'+p(v)+'</span><select class="composer-text-hidden-select" data-mode-control="'+f+'" tabindex="-1" aria-label="'+p(c)+'">'+h+"</select></span>"}function d(){return'<span class="composer-text-pill chat-mode-trio-pill thinking-slider-shell" data-mode-control-pill="thinking" title="\u601D\u8003\u6DF1\u5EA6">'+(n==="compact"?"":'<span class="chat-mode-trio-tag">\u601D\u8003</span>')+'<span class="composer-text-label thinking-slider-value">'+p(Zn(s,e))+"</span>"+Il(s,e)+"</span>"}return'<div class="chat-mode-trio chat-mode-trio-'+n+'" role="group" aria-label="\u4F1A\u8BDD\u8BBE\u7F6E">'+l("mode","\u6A21\u5F0F",a,ji(i,a))+'<span class="composer-text-sep" aria-hidden="true">\xB7</span>'+l("model","\u6A21\u578B",o,ql(u,e))+'<span class="composer-text-sep" aria-hidden="true">\xB7</span>'+d()+"</div>"}function xl(e,t){var n=Zn(e,t);return n==="low"?"\u4F4E":n==="medium"?"\u4E2D":n==="high"?"\u9AD8":n==="xhigh"?"\u8D85\u9AD8":n==="max"?"\u6781\u9AD8":n==="ultra"?"\u6781\u9650":"\u5173"}function _i(e,t){var n=e||"",i=Eu(t);if(!n||n==="default"){for(var a=0;a<i.length;a++)if(i[a].id==="default")return i[a].label||i[a].id;return"\u9ED8\u8BA4"}for(var u=0;u<i.length;u++)if(i[u].id===n)return i[u].label||i[u].id;return n}function Ni(e,t){var n=_i(e,t);if(!n||n==="\u8DDF\u968F\u670D\u52A1\u7AEF\u9ED8\u8BA4")return"\u9ED8\u8BA4";var i=n.search(/[((]/);i>0&&(n=n.slice(0,i).trim());var a=n.lastIndexOf("/");a>=0&&a<n.length-1&&(n=n.slice(a+1).trim());var u=n.toLowerCase();return u.indexOf("opus")!==-1?"Opus":u.indexOf("sonnet")!==-1?"Sonnet":u.indexOf("haiku")!==-1?"Haiku":u.indexOf("gpt-5.5")!==-1?"GPT-5.5":u.indexOf("gpt-5")!==-1?"GPT-5":u.indexOf("gpt-4")!==-1?"GPT-4":n.length>12?n.slice(0,10)+"\u2026":n}function Sl(e){return e.length<=1?'<span class="thinking-slider-node" style="left:50%"></span>':e.map(function(t,n){return'<span class="thinking-slider-node" style="left:'+n/(e.length-1)*100+'%"></span>'}).join("")}function Il(e,t){var n=Wi(t),i=Math.max(0,n.findIndex(function(l){return l.id===e})),a=Math.max(0,n.length-1),u=a?i/a*100:0,o=p(JSON.stringify(n.map(function(l){return l.id}))),s=p(JSON.stringify(n.map(function(l){return l.label})));return'<span class="thinking-slider-rail" style="--thinking-progress:'+u+'%"><span class="thinking-slider-nodes" aria-hidden="true">'+Sl(n)+'</span><input class="thinking-discrete-range" type="range" min="0" max="'+a+'" step="1" value="'+i+'" data-mode-control="thinking" data-thinking-values="'+o+'" data-thinking-labels="'+s+'" aria-label="\u601D\u8003\u6DF1\u5EA6" aria-valuetext="'+p(n[i]?.label||"auto")+'"></span>'}function Tl(e,t,n){var i=Wi(n),a=Math.max(0,i.findIndex(function(d){return d.id===t})),u=Math.max(0,i.length-1),o=e.querySelector(".thinking-discrete-range"),s=e.querySelector(".thinking-slider-rail"),l=e.querySelector(".thinking-slider-nodes");!o||!s||(o.max=String(u),o.value=String(a),o.dataset.thinkingValues=JSON.stringify(i.map(function(d){return d.id})),o.dataset.thinkingLabels=JSON.stringify(i.map(function(d){return d.label})),o.setAttribute("aria-valuetext",i[a]?.label||"auto"),s.style.setProperty("--thinking-progress",(u?a/u*100:0)+"%"),l&&(l.innerHTML=Sl(i)))}function Ll(e){var t=rt(),n=r.chatMode||"default",i=Hr(e)||"",a=Fu(e),u=mu(n),o=Ni(i,e),s=xl(a,e),l="\u6A21\u5F0F "+u+" \xB7 \u6A21\u578B "+o+" \xB7 \u601D\u8003 "+s;return'<div class="composer-config-controls" role="group" aria-label="\u4F1A\u8BDD\u8BBE\u7F6E" title="'+p(l)+'"><span class="composer-config-chip composer-config-chip-mode" data-mode-control-pill="mode" title="\u6A21\u5F0F\uFF1A'+p(u)+'">'+V("shield",{size:13,strokeWidth:1.8,cls:"composer-config-icon"})+'<span class="composer-config-label">'+p(u)+'</span><select class="composer-text-hidden-select" data-mode-control="mode" tabindex="-1" aria-label="\u6A21\u5F0F">'+ji(t,n)+'</select></span><span class="composer-config-model-thinking" data-thinking="'+p(a)+'" title="\u6A21\u578B\u4E0E\u601D\u8003\u6DF1\u5EA6"><span class="composer-config-part composer-config-model" data-mode-control-pill="model">'+V("cpu",{size:13,strokeWidth:1.8,cls:"composer-config-icon"})+'<span class="composer-config-label">'+p(o)+'</span><select class="composer-text-hidden-select" data-mode-control="model" tabindex="-1" aria-label="\u6A21\u578B">'+Ml(i,e)+'</select></span><span class="composer-config-part composer-config-thinking" data-mode-control-pill="thinking" data-thinking="'+p(a)+'">'+V("brain",{size:13,strokeWidth:1.8,cls:"composer-config-icon"})+'<span class="composer-config-label thinking-slider-value">'+p(Zn(a,e))+"</span>"+Il(a,e)+"</span></span></div>"}function qn(){var e=st(),t=rt(),n=r.chatMode||"default",i=Hr(e)||"",a=Ni(i,e),u=Fu(e),o=document.querySelectorAll(".chat-mode-trio");o.forEach(function(s){function l(d,f,c,v){var h=s.querySelector('[data-mode-control-pill="'+d+'"]');if(h){var g=h.querySelector(".composer-text-label");if(g&&(g.textContent=v||f),d==="thinking"){Tl(h,f,e);return}var m=h.querySelector('[data-mode-control="'+d+'"]');m&&(c&&(m.innerHTML=c),m.value!==f&&(m.value=f))}}l("mode",n,ji(t,n)),l("model",i,ql(i,e),a),l("thinking",u,"",Zn(u,e))}),Bm(e,n,Hr(e)||"",u)}function Bm(e,t,n,i){var a=rt(),u=mu(t),o=Ni(n,e),s=xl(i,e),l=document.querySelectorAll(".composer-config-controls");l.forEach(function(d){var f="\u6A21\u5F0F "+u+" \xB7 \u6A21\u578B "+o+" \xB7 \u601D\u8003 "+s;d.setAttribute("title",f);function c(B,D,F){var I=B.querySelector("[data-mode-control]");I&&(I.innerHTML=F,I.value=D)}var v=d.querySelector('[data-mode-control-pill="mode"]');if(v){var h=v.querySelector(".composer-config-label");h&&(h.textContent=u),v.setAttribute("title","\u6A21\u5F0F\uFF1A"+u),c(v,t,ji(a,t))}var g=d.querySelector('[data-mode-control-pill="model"]');if(g){var m=g.querySelector(".composer-config-label");m&&(m.textContent=o),c(g,n,Ml(n,e))}var y=d.querySelector('[data-mode-control-pill="thinking"]');if(y){var C=y.querySelector(".composer-config-label");C&&(C.textContent=Zn(i,e)),y.setAttribute("data-thinking",i),Tl(y,i,e)}var E=d.querySelector(".composer-config-model-thinking");E&&E.setAttribute("data-thinking",i)})}function ji(e,t){return gu(e).map(function(n){return'<option value="'+p(n)+'"'+(n===t?" selected":"")+">"+p(n)+"</option>"}).join("")}function Ri(e){return e==="codex"?"codex":"claude"}function hu(e){return Ri(e&&e.provider||r.sessionTool||"claude")}function yu(){var e=r.config&&r.config.defaultModels&&typeof r.config.defaultModels=="object"?r.config.defaultModels:{};return{claude:typeof e.claude=="string"?e.claude:r.config&&r.config.defaultModel||"",codex:typeof e.codex=="string"?e.codex:r.config&&r.config.defaultCodexModel||""}}function Dm(e){var t=yu();return Ri(e)==="codex"?t.codex||"":t.claude||""}function Or(e){var t=Ri(e),n=r.chatModels&&typeof r.chatModels[t]=="string"?r.chatModels[t]:"";return!n&&t==="claude"&&(n=r.chatModel||""),n||""}function bu(e,t){var n=Ri(e),i=(t||"").trim();r.chatModels||(r.chatModels={claude:"",codex:""}),r.chatModels[n]=i,r.chatModel=i;try{localStorage.setItem("wand-chat-model-"+n,i),localStorage.removeItem("wand-chat-model")}catch{}}function Hr(e){if(e&&e.selectedModel)return e.selectedModel;var t=hu(e),n=Or(t);return n||Dm(t)||""}function Eu(e){var t=e&&e.provider||r.sessionTool||"claude";return t==="codex"?r.availableCodexModels||[]:r.availableModels||[]}function Ml(e,t){for(var n=Eu(t),i=e==="default"?"":e||"",a='<option value=""'+(i?"":" selected")+">\u9ED8\u8BA4 \xB7 "+p(_i("",t))+"</option>",u=0;u<n.length;u++){var o=n[u];if(o.id!=="default"){var s=o.label||o.id;a+='<option value="'+p(o.id)+'"'+(o.id===i?" selected":"")+">"+p(s)+"</option>"}}return i&&!n.some(function(l){return l.id===i})&&(a+='<option value="'+p(i)+'" selected>'+p(i)+"\uFF08\u81EA\u5B9A\u4E49\uFF09</option>"),a}function ql(e,t){for(var n=Eu(t),i=e==="default"?"":e||"",a='<option value=""'+(i?"":" selected")+">"+p(_i("",t))+"</option>",u=0;u<n.length;u++){var o=n[u];o.id!=="default"&&(a+='<option value="'+p(o.id)+'"'+(o.id===i?" selected":"")+">"+p(o.id)+"</option>")}return i&&!n.some(function(s){return s.id===i})&&(a+='<option value="'+p(i)+'" selected>'+p(i)+"</option>"),a}function Xn(e){qn()}var _r=[{id:"off",label:"auto",hint:"Claude CLI: auto/default \xB7 SDK \u5173\u95ED thinking \xB7 Codex \u4F7F\u7528\u6A21\u578B\u9ED8\u8BA4\u503C"},{id:"standard",label:"low",hint:"Claude CLI: low \xB7 SDK budget 4096 \xB7 Codex low"},{id:"deep",label:"medium",hint:"Claude CLI: medium \xB7 SDK budget 16000 \xB7 Codex medium"},{id:"max",label:"max",hint:"Claude CLI: max \xB7 SDK budget 31999 \xB7 Codex xhigh"}];function km(e){return e==="low"?"standard":e==="medium"?"deep":e==="xhigh"?"max":"codex:"+e}function Wi(e){if(hu(e)!=="codex")return _r;var t=Hr(e)||"default",n=r.availableCodexModels||[],i=n.find(function(o){return o.id===t})||n.find(function(o){return o.id==="default"}),a=i&&Array.isArray(i.reasoningEfforts)?i.reasoningEfforts:[];if(!a.length)return _r;var u=i.defaultReasoningEffort||"";return[{id:"off",label:"auto",hint:u?"\u4F7F\u7528\u6A21\u578B\u9ED8\u8BA4\u6863\u4F4D\uFF08"+u+"\uFF09":"\u4F7F\u7528\u6A21\u578B\u9ED8\u8BA4\u6863\u4F4D"}].concat(a.map(function(o){var s=String(o.effort||"").toLowerCase();return{id:km(s),label:s,hint:o.description||s}}).filter(function(o){return o.label}))}function Zn(e,t){for(var n=Wi(t),i=0;i<n.length;i++)if(n[i].id===e)return n[i].label;if(typeof e=="string"&&e.indexOf("codex:")===0)return e.slice(6);for(var a=0;a<_r.length;a++)if(_r[a].id===e)return _r[a].label;return"auto"}function Fu(e){return e&&e.thinkingEffort?e.thinkingEffort:r.chatThinking?r.chatThinking:"off"}function Fh(e){qn()}function Am(e){var t=(e||"off").trim(),n=st(),i=Wi(n).some(function(a){return a.id===t});i||(t="off"),r.chatThinking=t;try{localStorage.setItem("wand-thinking-effort",t)}catch{}qn(),n&&fetch("/api/sessions/"+encodeURIComponent(n.id)+"/thinking-effort",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({thinkingEffort:t})}).then(function(a){return a.json()}).then(function(a){if(a&&a.error){A(a.error,"error");return}a&&a.id&&(X(a),typeof A=="function"&&A("\u5DF2\u5207\u6362\u601D\u8003\u6DF1\u5EA6 \u2192 "+Zn(t,n),"success"))}).catch(function(){A("\u5207\u6362\u601D\u8003\u6DF1\u5EA6\u5931\u8D25","error")})}function Pl(e){if(!e)return!1;var t=e.mode;return t==="managed"||t==="full-access"}function xm(e){if(!e||Pl(e))return"";var t=!!e.autoApprovePermissions;return t?'<button id="auto-approve-toggle" class="composer-pill composer-pill-chip auto-approve-indicator active" type="button" aria-pressed="true" aria-label="\u81EA\u52A8\u6279\u51C6\u5DF2\u542F\u7528\uFF0C\u70B9\u51FB\u5173\u95ED" title="\u81EA\u52A8\u6279\u51C6\u5DF2\u542F\u7528 \u2014 \u70B9\u51FB\u5173\u95ED">'+V("shieldCheck",{size:12,strokeWidth:1.7,cls:"composer-pill-icon"})+'<span class="composer-pill-label">\u81EA\u52A8</span></button>':'<button id="auto-approve-toggle" class="composer-pill composer-pill-chip auto-approve-indicator" type="button" aria-pressed="false" aria-label="\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED\uFF0C\u70B9\u51FB\u5F00\u542F" title="\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED \u2014 \u70B9\u51FB\u5F00\u542F">'+V("shield",{size:12,strokeWidth:1.7,cls:"composer-pill-icon"})+'<span class="composer-pill-label">\u624B\u52A8</span></button>'}function Ol(){return fetch("/api/models",{credentials:"same-origin"}).then(function(e){return e.json()}).then(function(e){return e&&Array.isArray(e.models)&&(r.availableModels=e.models,r.availableCodexModels=Array.isArray(e.codexModels)?e.codexModels:[],Xn(st()),Ui(e),Vi(!1)),e}).catch(function(){return null})}function Hl(){if(r.modelsRefreshing)return Promise.resolve(null);r.modelsRefreshing=!0;var e=document.querySelectorAll("#cfg-default-model-refresh, #cfg-commit-model-refresh");return e.forEach(function(t){var n=t,i=n.querySelector("span");n.disabled=!0,n.classList.add("is-loading"),n.setAttribute("aria-busy","true"),i&&(i.textContent="\u68C0\u6D4B\u4E2D")}),fetch("/api/models/refresh",{method:"POST",credentials:"same-origin"}).then(function(t){return t.json()}).then(function(t){return t&&Array.isArray(t.models)&&(r.availableModels=t.models,r.availableCodexModels=Array.isArray(t.codexModels)?t.codexModels:[],Xn(st()),Ui(t),Vi(!1),typeof A=="function"&&A("\u6A21\u578B\u5217\u8868\u5DF2\u5237\u65B0"+(t.claudeVersion?"\uFF08claude "+t.claudeVersion+"\uFF09":""),"success")),t}).catch(function(){return typeof A=="function"&&A("\u5237\u65B0\u6A21\u578B\u5217\u8868\u5931\u8D25","error"),null}).finally(function(){r.modelsRefreshing=!1,e.forEach(function(t){var n=t,i=n.querySelector("span");n.disabled=!1,n.classList.remove("is-loading"),n.removeAttribute("aria-busy"),i&&(i.textContent="\u5237\u65B0\u5217\u8868")})})}function Sm(){var e=document.getElementById("env-preview-modal");if(!e){e=document.createElement("section"),e.id="env-preview-modal",e.className="modal-backdrop hidden",e.innerHTML='<div class="modal env-preview-modal" role="dialog" aria-labelledby="env-preview-title" aria-modal="true"><div class="modal-header"><div><h2 class="modal-title" id="env-preview-title">\u5C06\u6CE8\u5165\u5B50\u8FDB\u7A0B\u7684\u73AF\u5883\u53D8\u91CF</h2><p class="modal-subtitle" id="env-preview-subtitle">\u8FD9\u4E9B\u53D8\u91CF\u4F1A\u88AB\u4F20\u7ED9 claude / codex\uFF08PTY \u4E0E\u7ED3\u6784\u5316\u8FD0\u884C\u5668\u4E00\u81F4\uFF09\u3002</p></div><button id="env-preview-close" class="btn btn-ghost btn-icon modal-close-btn" type="button" aria-label="\u5173\u95ED"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" aria-hidden="true"><line x1="6" y1="6" x2="18" y2="18"/><line x1="18" y1="6" x2="6" y2="18"/></svg></button></div><div class="modal-body env-preview-body"><div class="env-preview-toolbar"><div class="env-preview-meta" id="env-preview-meta">\u52A0\u8F7D\u4E2D\u2026</div><div class="env-preview-controls"><input id="env-preview-search" class="env-preview-search" type="search" placeholder="\u641C\u7D22\u53D8\u91CF\u540D\u2026" /><label class="env-preview-reveal"><input id="env-preview-reveal-toggle" type="checkbox" /><span>\u663E\u793A\u654F\u611F\u503C</span></label></div></div><div class="env-preview-list" id="env-preview-list" tabindex="0"><div class="env-preview-loading">\u52A0\u8F7D\u4E2D\u2026</div></div></div><div class="modal-footer env-preview-footer"><span class="env-preview-hint">\u654F\u611F\u5B57\u6BB5\uFF08\u542B KEY/TOKEN/SECRET \u7B49\uFF09\u9ED8\u8BA4\u63A9\u7801\uFF0C\u53EF\u52FE\u9009\u300C\u663E\u793A\u654F\u611F\u503C\u300D\u4E34\u65F6\u8FD8\u539F\u3002</span><button id="env-preview-close-2" class="btn btn-secondary btn-sm" type="button">\u5173\u95ED</button></div></div>',document.body.appendChild(e),e.addEventListener("click",function(s){s.target===e&&wu()});var t=e.querySelector("#env-preview-close");t&&t.addEventListener("click",wu);var n=e.querySelector("#env-preview-close-2");n&&n.addEventListener("click",wu);var a=e.querySelector("#env-preview-search");a&&a.addEventListener("input",function(){Nl()});var i=e.querySelector("#env-preview-reveal-toggle");i&&i.addEventListener("change",function(){_l(i.checked)})}e.classList.remove("closing"),e.classList.remove("hidden");var i=e.querySelector("#env-preview-reveal-toggle");i&&(i.checked=!1);var a=e.querySelector("#env-preview-search");a&&(a.value=""),_l(!1)}function wu(){var e=document.getElementById("env-preview-modal");e&&Au(e)}function _l(e){var t=document.getElementById("env-preview-list"),n=document.getElementById("env-preview-meta");t&&(t.innerHTML='<div class="env-preview-loading">\u52A0\u8F7D\u4E2D\u2026</div>'),n&&(n.textContent="\u52A0\u8F7D\u4E2D\u2026");var i="/api/settings/env-preview"+(e?"?reveal=1":"");fetch(i,{credentials:"same-origin"}).then(function(a){return a.json()}).then(function(a){if(!a||!Array.isArray(a.entries)){t&&(t.innerHTML='<div class="env-preview-empty">\u8BFB\u53D6\u5931\u8D25\u3002</div>'),n&&(n.textContent="\u8BFB\u53D6\u5931\u8D25");return}if(r._envPreview=a,n){var u=a.inheritEnv?"\u7EE7\u627F\u7236\u8FDB\u7A0B":"\u6700\u5C0F\u767D\u540D\u5355";n.innerHTML='<span class="env-preview-pill '+(a.inheritEnv?"is-inherit":"is-minimal")+'">'+u+'</span><span class="env-preview-count">\u5171 '+a.total+" \u9879</span>"}Nl()}).catch(function(){t&&(t.innerHTML='<div class="env-preview-empty">\u8BFB\u53D6\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002</div>'),n&&(n.textContent="\u8BFB\u53D6\u5931\u8D25")})}function Nl(){var e=document.getElementById("env-preview-list");if(e){var t=r._envPreview;if(!t||!Array.isArray(t.entries)){e.innerHTML='<div class="env-preview-empty">\u5C1A\u672A\u52A0\u8F7D\u3002</div>';return}for(var n=document.getElementById("env-preview-search"),i=(n&&n.value||"").trim().toLowerCase(),a="",u=0,o=0;o<t.entries.length;o++){var s=t.entries[o];if(!(i&&s.name.toLowerCase().indexOf(i)===-1)){u++;var l=typeof s.value=="string"&&s.value.charAt(0)==="<"&&s.value.charAt(s.value.length-1)===">";a+='<div class="env-preview-row'+(s.sensitive?" is-sensitive":"")+'"><div class="env-preview-name">'+p(s.name)+(s.sensitive?'<span class="env-preview-badge" title="\u88AB\u8BC6\u522B\u4E3A\u654F\u611F\u5B57\u6BB5">\u654F\u611F</span>':"")+(l?'<span class="env-preview-badge env-preview-badge-runtime" title="\u6309\u4F1A\u8BDD\u52A8\u6001\u6CE8\u5165">\u8FD0\u884C\u65F6</span>':"")+'</div><div class="env-preview-value'+(l?" is-runtime":"")+'" title="'+p(String(s.value))+'">'+p(String(s.value))+'</div><div class="env-preview-len">'+s.length+" \u5B57\u7B26</div></div>"}}u===0&&(a='<div class="env-preview-empty">\u6CA1\u6709\u5339\u914D\u7684\u53D8\u91CF\u3002</div>'),e.innerHTML=a}}function jl(e){return e==="codex"?r.availableCodexModels||[]:r.availableModels||[]}function Rl(e){if(e){var t=e.getAttribute("data-provider")==="codex"?"codex":"claude",n=e.querySelector(".model-combobox-input"),i=e.closest(".settings-model-field"),a=i?i.querySelector("[data-model-status]"):null;if(!(!n||!a)){for(var u=(n.value||"").trim(),o=jl(t),s=null,l=0;l<o.length;l++)if(o[l].id===u){s=o[l];break}if(a.classList.remove("is-custom","is-known"),!u){a.textContent="\u8DDF\u968F CLI \u9ED8\u8BA4";return}if(s){a.textContent="\u5DF2\u68C0\u6D4B\u5230",a.classList.add("is-known");return}a.textContent="\u81EA\u5B9A\u4E49\u540D\u79F0",a.classList.add("is-custom")}}}function Nr(e){if(e){var t=e.getAttribute("data-provider")==="codex"?"codex":"claude",n=e.querySelector(".model-combobox-input"),i=e.querySelector(".model-combobox-menu");if(!(!n||!i)){for(var a=n.value||"",u=a.trim(),o=e.classList.contains("is-filtering")?u.toLowerCase():"",s=jl(t),l=null,d=!1,f=[],c=0;c<s.length;c++){var v=s[c];if(v.id==="default"){l=v;continue}v.id===u&&(d=!0);var h=v.label||v.id;o&&v.id.toLowerCase().indexOf(o)===-1&&h.toLowerCase().indexOf(o)===-1||f.push({value:v.id,label:h,meta:h===v.id?"\u5DF2\u68C0\u6D4B\u6A21\u578B":v.id,custom:!1})}var g=t==="codex"?"\u8DDF\u968F Codex \u9ED8\u8BA4":"\u8DDF\u968F Claude Code \u9ED8\u8BA4",m=l&&l.label?l.label:"\u4E0D\u4F20 --model \u53C2\u6570",y="";(!o||g.toLowerCase().indexOf(o)!==-1||m.toLowerCase().indexOf(o)!==-1)&&(y+='<button type="button" class="model-combobox-option'+(u?"":" is-selected")+'" role="option" aria-selected="'+(u?"false":"true")+'" data-model-value=""><span class="model-combobox-option-check" aria-hidden="true"><svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="m5 12 4 4L19 6"/></svg></span><span class="model-combobox-option-copy"><span class="model-combobox-option-label">'+p(g)+'</span><span class="model-combobox-option-meta">'+p(m)+"</span></span></button>");for(var C=0;C<f.length;C++){var E=f[C],B=E.value===u;y+='<button type="button" class="model-combobox-option'+(B?" is-selected":"")+'" role="option" aria-selected="'+(B?"true":"false")+'" data-model-value="'+p(E.value)+'"><span class="model-combobox-option-check" aria-hidden="true"><svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="m5 12 4 4L19 6"/></svg></span><span class="model-combobox-option-copy"><span class="model-combobox-option-label">'+p(E.label)+'</span><span class="model-combobox-option-meta">'+p(E.meta)+"</span></span></button>"}u&&!d&&(y+='<button type="button" class="model-combobox-option model-combobox-option-custom is-selected" role="option" aria-selected="true" data-model-value="'+p(u)+'"><span class="model-combobox-option-custom-icon" aria-hidden="true"><svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20h9"/><path d="M16.5 3.5a2.1 2.1 0 0 1 3 3L8 18l-4 1 1-4Z"/></svg></span><span class="model-combobox-option-copy"><span class="model-combobox-option-label">\u4F7F\u7528\u81EA\u5B9A\u4E49\u540D\u79F0</span><span class="model-combobox-option-meta">'+p(u)+"</span></span></button>"),y||(y='<div class="model-combobox-empty">\u6CA1\u6709\u5339\u914D\u7684\u6A21\u578B\uFF0C\u53EF\u4EE5\u7EE7\u7EED\u8F93\u5165\u81EA\u5B9A\u4E49\u540D\u79F0\u3002</div>'),i.innerHTML=y;for(var D=i.querySelectorAll(".model-combobox-option"),F=-1,I=0;I<D.length;I++)if(D[I].getAttribute("aria-selected")==="true"){F=I;break}e._wandModelActiveIndex=F>=0?F:D.length?0:-1,Wl(e),Rl(e)}}}function Wl(e){if(e){var t=e.querySelector(".model-combobox-menu"),n=e.querySelector(".model-combobox-input");if(!(!t||!n)){for(var i=t.querySelectorAll(".model-combobox-option"),a=typeof e._wandModelActiveIndex=="number"?e._wandModelActiveIndex:-1,u=0;u<i.length;u++)i[u].classList.toggle("is-active",u===a),u===a&&(i[u].id||(i[u].id=(t.id||"model-listbox")+"-option-"+u),n.setAttribute("aria-activedescendant",i[u].id));a<0&&n.removeAttribute("aria-activedescendant")}}}function zi(e){if(e){var t=e.querySelector(".model-combobox-input"),n=e.querySelector(".model-combobox-menu");!t||!n||(document.querySelectorAll(".model-combobox.is-open").forEach(function(i){i!==e&&vn(i)}),Nr(e),e.classList.add("is-open"),n.classList.remove("hidden"),t.setAttribute("aria-expanded","true"))}}function vn(e){if(e){var t=e.querySelector(".model-combobox-input"),n=e.querySelector(".model-combobox-menu");e.classList.remove("is-open"),e.classList.remove("is-filtering"),n&&n.classList.add("hidden"),t&&(t.setAttribute("aria-expanded","false"),t.removeAttribute("aria-activedescendant"))}}function zl(e,t){if(e){var n=e.querySelector(".model-combobox-input");if(n){var i=document.activeElement===n;n.value=t||"",n.dataset.modelInitialized="true",n.dataset.modelDirty="true",e.classList.remove("is-filtering"),Rl(e),vn(e),i&&n.focus()}}}function Im(){window.__wandSettingsModelOutsideBound||(window.__wandSettingsModelOutsideBound=!0,document.addEventListener("click",function(t){var n=t.target;document.querySelectorAll(".model-combobox.is-open").forEach(function(i){(!n||!i.contains(n))&&vn(i)})}));var e=document.querySelectorAll(".model-combobox");e.forEach(function(t){if(t.dataset.bound!=="true"){t.dataset.bound="true";var n=t.querySelector(".model-combobox-input"),i=t.querySelector(".model-combobox-toggle"),a=t.querySelector(".model-combobox-menu");!n||!i||!a||(n.addEventListener("focus",function(){zi(t)}),n.addEventListener("input",function(){n.dataset.modelInitialized="true",n.dataset.modelDirty="true",t.classList.add("is-filtering"),zi(t)}),n.addEventListener("keydown",function(u){if(u.key==="Escape"){u.preventDefault(),vn(t);return}if(!(u.key!=="ArrowDown"&&u.key!=="ArrowUp"&&u.key!=="Enter")){if(!t.classList.contains("is-open")){if(u.key==="Enter")return;zi(t)}var o=a.querySelectorAll(".model-combobox-option");if(o.length){u.preventDefault();var s=typeof t._wandModelActiveIndex=="number"?t._wandModelActiveIndex:-1;if(u.key==="ArrowDown"&&(s=s<o.length-1?s+1:0),u.key==="ArrowUp"&&(s=s>0?s-1:o.length-1),t._wandModelActiveIndex=s,Wl(t),u.key==="Enter"){var l=o[s];l&&zl(t,l.getAttribute("data-model-value")||"")}else{var d=o[s];d&&typeof d.scrollIntoView=="function"&&d.scrollIntoView({block:"nearest"})}}}}),i.addEventListener("mousedown",function(u){u.preventDefault()}),i.addEventListener("click",function(){t.classList.contains("is-open")?vn(t):zi(t)}),a.addEventListener("mousedown",function(u){u.preventDefault()}),a.addEventListener("click",function(u){var o=u.target.closest(".model-combobox-option");o&&zl(t,o.getAttribute("data-model-value")||"")}),t.addEventListener("focusout",function(){setTimeout(function(){t.contains(document.activeElement)||vn(t)},0)}),Nr(t))}})}function Vi(e){var t=document.getElementById("cfg-commit-cli"),n=document.getElementById("cfg-commit-model-combobox"),i=document.getElementById("cfg-commit-model"),a=document.getElementById("cfg-commit-model-provider");if(!(!t||!n||!i)){var u=t.value==="codex"?"codex":"claude";n.setAttribute("data-provider",u),i.placeholder=u==="codex"?"\u8DDF\u968F Codex \u9ED8\u8BA4":"\u8DDF\u968F Claude Code \u9ED8\u8BA4",a&&(a.textContent=u==="codex"?"Codex CLI":"Claude Code"),e&&(i.value="",i.dataset.modelDirty="true"),Nr(n)}}function Ui(e){var t=yu(),n=document.getElementById("cfg-default-model");if(n){n.dataset.modelInitialized!=="true"&&(n.value=r.configDefaultModels&&r.configDefaultModels.claude||t.claude||"",n.dataset.modelInitialized="true");var i=n.closest(".model-combobox");i&&Nr(i)}var a=document.getElementById("cfg-default-codex-model");if(a){a.dataset.modelInitialized!=="true"&&(a.value=r.configDefaultModels&&r.configDefaultModels.codex||t.codex||"",a.dataset.modelInitialized="true");var u=a.closest(".model-combobox");u&&Nr(u)}var o=document.getElementById("cfg-default-model-version");o&&e&&(o.textContent=e.claudeVersion?"\u5DF2\u68C0\u6D4B\u5230 Claude CLI "+e.claudeVersion+"\uFF1B\u5217\u8868\u5DF2\u540C\u65F6\u540C\u6B65 Codex \u53EF\u7528\u6A21\u578B\u3002":"\u672A\u8BFB\u53D6\u5230 Claude CLI \u7248\u672C\uFF1B\u4ECD\u53EF\u76F4\u63A5\u8F93\u5165\u81EA\u5B9A\u4E49\u6A21\u578B\u540D\u79F0\u3002")}function st(){if(!r.selectedId)return null;for(var e=0;e<r.sessions.length;e++)if(r.sessions[e].id===r.selectedId)return r.sessions[e];return null}function Tm(e){var t=(e||"").trim(),n=st(),i=hu(n);bu(i,t),qn(),n&&fetch("/api/sessions/"+encodeURIComponent(n.id)+"/model",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({model:t||null})}).then(function(a){return a.json()}).then(function(a){if(a&&a.error){A(a.error,"error");return}if(a&&a.id&&(X(a),qn(),typeof A=="function")){var u=_i(t,n),o=n.provider==="codex"?"\uFF08\u4E0B\u6B21\u5BF9\u8BDD\u751F\u6548\uFF09":"";A("\u5DF2\u5207\u6362\u6A21\u578B \u2192 "+u+o,"success")}}).catch(function(){A("\u5207\u6362\u6A21\u578B\u5931\u8D25","error")})}function Lm(e){var t=mt(rt(),(e||"default").trim());r.chatMode=t,qn();var n=st();if(!n||!n.id||n.sessionKind!=="structured"){A&&A("\u65B0\u4F1A\u8BDD\u6A21\u5F0F\uFF1A"+t,"info");return}fetch("/api/sessions/"+encodeURIComponent(n.id)+"/mode",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({mode:t})}).then(function(i){return i.json()}).then(function(i){if(i&&i.error){A(i.error,"error");return}if(i&&i.id&&(X(i),typeof A=="function")){var a=n.provider==="codex"?"\uFF08Codex \u56FA\u5B9A\u5168\u6743\u9650\uFF09":"";A("\u5DF2\u5207\u6362\u6A21\u5F0F \u2192 "+t+a,"success")}}).catch(function(){A("\u5207\u6362\u6A21\u5F0F\u5931\u8D25","error")})}function Vl(e,t,n,i){var a=r.sessionTool==="codex"?"codex":"claude",u=Or(a),o=r.chatThinking||"off",s={cwd:t||$e(),mode:n||r.chatMode||r.config&&r.config.defaultMode||"default",provider:a,runner:a==="codex"?"codex-cli-exec":r.config&&r.config.structuredRunner==="sdk"?"claude-sdk":r.structuredRunner||"claude-cli-print",prompt:e||void 0,worktreeEnabled:i===!0,model:u||void 0,thinkingEffort:o};return fetch("/api/structured-sessions",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(s)}).then(function(l){return l.json()}).then(function(l){if(l.error)throw new Error(l.error);return r.selectedId=l.id,he(),r.drafts[l.id]="",wt(),X(l),pe(),Sr(l.id),Pn(l.id),gn(l.id).then(function(){return l})})}function Ki(){var e=!!r.selectedId,t=document.getElementById("output"),n=document.getElementById("chat-output"),i=document.getElementById("blank-chat"),a=r.sessions.find(function(l){return l.id===r.selectedId}),u=ue(a),o=e&&!u&&r.currentView==="terminal",s=e&&(u||r.currentView!=="terminal");u?r.currentView="chat":e||(r.currentView="terminal"),t&&(t.classList.toggle("active",o),t.classList.toggle("hidden",!o)),n&&(n.classList.toggle("active",s),n.classList.toggle("hidden",!s)),i&&i.classList.toggle("hidden",e),n&&s&&tu(n),lr(),Ge(),Ir()}function er(){var e=document.getElementById("mode-description"),t=document.getElementById("session-kind-description"),n=r.sessionTool||"claude",i=r.sessionCreateKind||"structured";r.sessionTool=n,r.modeValue=mt(n,r.modeValue||r.chatMode||"default");var a=document.querySelectorAll("#provider-cards .provider-card");a.length&&a.forEach(function(s){var l=s.getAttribute("data-provider");s.classList.toggle("active",l===n),s.classList.remove("disabled")});var u=document.querySelectorAll("#session-kind-cards .session-kind-card");u.length&&u.forEach(function(s){var l=s.getAttribute("data-session-kind"),d=!1;s.classList.toggle("active",l===i),s.classList.toggle("disabled",d)});var o=document.querySelectorAll("#mode-cards .mode-card");o.length&&o.forEach(function(s){s.classList.toggle("active",s.getAttribute("data-mode")===r.modeValue)}),t&&(t.textContent=xo(i)),e&&(e.textContent=Cl(n,r.modeValue))}function Mm(e,t,n,i){var a=n||0,u=typeof i=="number"?i:Math.max(a+t.length,t.length),o=e&&Array.isArray(e.messages)?e.messages:[],s=e&&typeof e.messageOffset=="number"?e.messageOffset:0;if(t.length===0&&o.length>0&&u===0)return{messages:o,messageOffset:s,messageTotal:e&&e.messageTotal||o.length};if(o.length===0)return{messages:t,messageOffset:a,messageTotal:u};if(s<=a){var l=Math.min(Math.max(a-s,0),o.length),d=o.slice(0,l).concat(t);return{messages:d,messageOffset:s,messageTotal:Math.max(u,s+d.length)}}return{messages:t,messageOffset:a,messageTotal:u}}function X(e){if(!(!e||!e.id)){var t=r.sessions.find(function(s){return s.id===e.id})||null,n=Ad(e,t);if(Array.isArray(n.messages)&&typeof n.messageOffset=="number"){var i=Mm(t,n.messages,n.messageOffset,n.messageTotal);n.messages=i.messages,n.messageOffset=i.messageOffset,n.messageTotal=i.messageTotal}var a=!1,u=null;r.sessions=r.sessions.map(function(s){return s.id!==n.id?s:(u=s,a=!0,Object.assign({},s,n))}),a||r.sessions.unshift(n);var o=r.sessions.find(function(s){return s.id===n.id})||n;o&&Array.isArray(o.queuedMessages)&&n.id===r.selectedId&&(ti(o),Ju(),dn()),n.id===r.selectedId&&(Ja(),Yt()),n.status&&n.status!=="running"&&r.crossSessionQueue.length>0&&setTimeout(wi,0)}}function Pn(e){!e||!r.ws||r.ws.readyState!==WebSocket.OPEN||r.ws.send(JSON.stringify({type:"subscribe",sessionId:e}))}function qm(e,t){if(!e)return t;var n=Object.assign({},e,t),i=e.output||"",a=t.output||"",u=i.length>a.length,o=e.structuredState||null,s=t.structuredState||null,l=e.sessionKind==="structured"||t.sessionKind==="structured",d=!!(e.messages&&e.messages.length&&(function(){var m=e.messages[e.messages.length-1];return m&&m.role==="assistant"&&Array.isArray(m.content)&&m.content.some(function(y){return y&&y.__processing})})()),f=Array.isArray(e.messages)?l?cr(e.messages):e.messages:[],c=Array.isArray(t.messages)?l?cr(t.messages):t.messages:[],v=c.length>0&&(function(){var m=c[c.length-1];return m&&m.role==="assistant"&&Array.isArray(m.content)&&!m.content.some(function(y){return y&&y.__processing})})(),h=e.sessionKind==="structured"&&!!o&&o.inFlight===!0&&(!s||s.inFlight!==!0)&&d&&!!o.activeRequestId&&!!s&&!!s.activeRequestId&&s.activeRequestId===o.activeRequestId&&!v,g=f.length>c.length||f.length>0&&c.length>0&&JSON.stringify(f[f.length-1])!==JSON.stringify(c[c.length-1])&&JSON.stringify(f).length>JSON.stringify(c).length;return u&&(n.output=i),h&&(n.status=e.status||n.status,n.structuredState=Object.assign({},s||{},o,{inFlight:!0}),n.messages=e.messages),g&&(n.messages=f),e.id===r.selectedId&&(e.permissionBlocked&&t.permissionBlocked===!1||e.permissionBlocked&&!t.permissionBlocked&&(n.permissionBlocked=!0),e.pendingEscalation&&!t.pendingEscalation&&t.permissionBlocked!==!1&&(n.pendingEscalation=e.pendingEscalation),e.messages&&e.messages.length>0&&(!t.messages||t.messages.length===0)&&(n.messages=e.messages)),n}function Xe(e,t,n){if(e&&e.messages&&e.messages.length>0)return e.messages;if(e&&e.sessionKind==="structured")return[];if(!n)return[];var i=typeof t=="string"?t:e&&e.output||"";return i?Lv(i,e&&e.command):[]}function Pm(e){if(!e||!e.length)return null;if(r.selectedId){var t=e.find(function(a){return a.id===r.selectedId});return t?t.id:null}var n=e.find(function(a){return a.status==="running"});if(n)return n.id;var i=e.find(function(a){return!a.archived});return i?i.id:e[0].id}function mn(e){var t=e||{};return fetch("/api/sessions",{credentials:"same-origin"}).then(function(n){if(n.status===401){Fl();return}return n.json()}).then(function(n){var i=n||[],a=new Set(i.map(function(c){return c.id}));Object.keys(r.drafts).forEach(function(c){a.has(c)||delete r.drafts[c]}),r.sessions=i.map(function(c){var v=r.sessions.find(function(h){return h.id===c.id});return qm(v,c)});var u=Pm(r.sessions);if(u!==void 0&&(r.selectedId=u),Gu(),dn(),r.bootstrapping=!1,he(),r.modalOpen)pe();else{var o=document.getElementById("sessions-list"),s=ha();if(o&&o.innerHTML===s){var l=document.getElementById("session-count");l&&(l.textContent=String(r.sessions.length))}else{o&&(o.innerHTML=s,jt(o));var l=document.getElementById("session-count");l&&(l.textContent=String(r.sessions.length))}}jr(),r.selectedId&&r.gitStatusSessionId!==r.selectedId&&Bn(r.selectedId);var d=Promise.resolve();if(!t.skipSelectedOutputReload&&r.selectedId)d=gn(r.selectedId);else if(r.selectedId){var f=r.sessions.find(function(c){return c.id===r.selectedId});ue(f)&&(wt({preserveStickState:!0}),eu(!0))}return d.then(function(){r.crossSessionQueue.length>0&&wi(),Bt(),Oa()})}).catch(function(n){var i=n&&n.message||"",a=i==="Failed to fetch"||i==="NetworkError when attempting to fetch resource."||i==="Load failed"||/aborted|aborterror|networkerror|failed to fetch/i.test(i);a||console.error("[wand] loadSessions failed:",n)})}var Cu=null;function Bu(){Cu||(Cu=setTimeout(function(){Cu=null,pe()},200))}function pe(){var e=document.getElementById("sessions-list"),t=document.getElementById("session-count");e&&(e.innerHTML=ha(),jt(e)),t&&(t.textContent=String(r.sessions.length)),typeof Xt=="function"&&Xt(),jr(),r.crossSessionQueue.length>0&&Bt()}function jr(){var e=r.sessions.find(function(g){return g.id===r.selectedId});e||(Mn(!1),Ka(),Ns());var t=e?$n(e.command):"Wand",n=e?vr(e):"\u5F00\u59CB\u5BF9\u8BDD",i=document.querySelector(".session-summary-value"),a=document.getElementById("terminal-title"),u=document.getElementById("terminal-info"),o=document.querySelector(".topbar-session-title, .topbar-tagline");o&&e&&(o.classList.remove("topbar-tagline"),o.classList.add("topbar-session-title"),o.textContent=e.title||$n(e.command),o.setAttribute("title",e.description||e.command||""));var s=document.getElementById("blank-chat"),l=document.getElementById("output"),d=document.getElementById("chat-output"),f=document.getElementById("stop-button");i&&i.textContent!==t&&(i.textContent=t),a&&a.textContent!==t&&(a.textContent=t),u&&(u.textContent=e?n+" \xB7 "+Cm(e):n);var c=document.getElementById("session-kind-display"),v=e?wm(e):"\u7EC8\u7AEF";c&&c.textContent!==v&&(c.textContent=v),Uo(),!r.terminal&&l&&e&&Yn(),r.terminal&&l&&!l.contains(r.terminal.element)&&(wr(),Yn()),e||(r.terminalSessionId=null,r.terminalOutput="",r.terminalOutputMarker=0),r.terminal&&e&&r.currentView==="terminal"&&pt("view");var h=document.querySelector(".input-panel");e?(s&&s.classList.add("hidden"),l&&l.classList.remove("hidden"),d&&d.classList.remove("hidden"),h&&h.classList.remove("hidden")):(s&&s.classList.remove("hidden"),l&&l.classList.add("hidden"),d&&d.classList.add("hidden"),f&&f.classList.add("hidden"),h&&h.classList.add("hidden")),Hi(),Xn(st()),Ki(),Ja()}function gn(e){r.chatRenderTimer&&(clearTimeout(r.chatRenderTimer),r.chatRenderTimer=null);var t=r.sessions.find(function(i){return i.id===e}),n="/api/sessions/"+e;return Dl(t)&&(n+="?format=chat"),fetch(n,{credentials:"same-origin"}).then(function(i){return i.json()}).then(function(i){if(i.error){r.selectedId===e&&(r.selectedId=null,he()),mn();return}if(X(i),jr(),r.terminal&&e===r.selectedId&&i.output!==void 0){var a=!!r.ws&&(r.ws.readyState===WebSocket.OPEN||r.ws.readyState===WebSocket.CONNECTING);a?Qe("session-switch"):(gi(e,i.output,{mode:"append"}),Qe("session-switch",{forceReplay:!0}))}var u=r.sessions.find(function(o){return o.id===e});r.currentMessages=ze(u,Xe(u,i.output,!1)),Ve(!1)})}var Du=!1;function Om(){if(Du)return!1;var e=r.selectedId;if(!e)return!1;var t=r.sessions.find(function(o){return o.id===e});if(!t)return!1;var n=typeof t.messageOffset=="number"?t.messageOffset:0;if(n<=0)return!1;var i=40,a=Math.max(0,n-i),u=n-a;return Du=!0,fetch("/api/sessions/"+encodeURIComponent(e)+"/messages?offset="+a+"&limit="+u,{credentials:"same-origin"}).then(function(o){return o.json()}).then(function(o){if(o&&Array.isArray(o.messages)&&t.messageOffset===n){var s=Array.isArray(t.messages)?t.messages:[];t.messages=o.messages.concat(s),t.messageOffset=a,typeof o.total=="number"&&(t.messageTotal=o.total),e===r.selectedId&&(r.currentMessages=ze(t,Xe(t,t.output,!1)),r.chatRenderedCount=r.currentMessages.length,Ve(!0))}}).catch(function(){}).finally(function(){Du=!1}),!0}function Ht(e){var t=r.sessions.find(function(o){return o.id===e});if(t){r.selectedId!==e&&wr(),r.selectedId=e,he(),r.toolContentCache={},r.messageQueue=[],r.pendingMessages=[],ti(t),Gu(),dn(),wt(),r.currentMessages=[],r.chatRenderTimer&&(clearTimeout(r.chatRenderTimer),r.chatRenderTimer=null);var n=document.getElementById("todo-progress");n&&n.classList.add("hidden");var i=document.querySelector(".structured-status-bar");i&&i.remove(),r._statusBarTimerId&&(clearInterval(r._statusBarTimerId),r._statusBarTimerId=null),r._statusBarStartTime=0;var a=document.querySelector(".input-composer");a&&a.classList.remove("in-flight");var u=t;r.preferredCommand=rt(),r.chatMode=mt("claude",u&&u.mode?u.mode:r.chatMode),r.terminalInteractive&&u&&u.status!=="running"&&Mn(!1),pe(),Sr(e),r.filePanelOpen&&(Ld(u),Lt()),gn(e).then(function(){Pt(!0)}),Pn(e),r.gitStatus=null,r.gitStatusSessionId=null,ga(),Bn(e,{force:!0})}}function Hm(){var e=document.getElementById("sessions-drawer"),t=document.querySelector(".main-layout"),n=Re(),i=!!r.sidebarPinned&&!!r.sidebarCollapsed,a=i||!n&&(!!r.sidebarPinned||!!r.sessionsDrawerOpen);e&&(e.classList.toggle("pinned",a),e.classList.toggle("collapsed",i)),t&&(t.classList.toggle("sidebar-pinned",a),t.classList.toggle("sidebar-collapsed",i));var u=document.getElementById("sidebar-pin-btn");u&&(u.classList.toggle("pinned",!!r.sidebarPinned),u.title=r.sidebarPinned?"\u5DF2\u56FA\u5B9A\u5E38\u9A7B\uFF08\u70B9\u51FB\u89E3\u9664\u9501\u5B9A\uFF09":"\u56FA\u5B9A\u4FA7\u680F\u5E38\u9A7B",u.setAttribute("aria-label",r.sidebarPinned?"\u89E3\u9664\u56FA\u5B9A\u5E38\u9A7B":"\u56FA\u5B9A\u4FA7\u680F\u5E38\u9A7B"),u.setAttribute("aria-pressed",r.sidebarPinned?"true":"false"))}function Rr(){var e=document.getElementById("sessions-drawer"),t=document.getElementById("sessions-drawer-backdrop"),n=document.querySelector(".main-layout");e&&e.classList.toggle("open",r.sessionsDrawerOpen),t&&t.classList.toggle("open",eo()),n&&n.classList.toggle("sidebar-open",r.sessionsDrawerOpen);var i=document.getElementById("sessions-toggle-button");i&&i.classList.toggle("active",r.sessionsDrawerOpen),Hm()}function _m(){var e=Re();if(!e){var t=r.sidebarPinned?!1:!r.sessionsDrawerOpen;r.sessionsDrawerOpen=t,t&&(r.sidebarCollapsed=!1,Se("wand-sidebar-collapsed",!1)),Se("wand-sidebar-open",r.sessionsDrawerOpen),un(),zr();return}if(r.sessionsDrawerOpen=!r.sessionsDrawerOpen,Se("wand-sidebar-open",r.sessionsDrawerOpen),r.sessionsDrawerOpen){r.filePanelOpen=!1;try{localStorage.setItem("wand-file-panel-open","false")}catch{}}un()}function Wr(){var e=Re();if(!e){if(!r.sidebarPinned&&!r.sessionsDrawerOpen)return;Mr(),r.sidebarPinned=!1,r.sessionsDrawerOpen=!1,Se("wand-sidebar-pinned",!1),Se("wand-sidebar-open",!1),un(),zr();return}r.sessionsDrawerOpen&&(Mr(),r.sessionsDrawerOpen=!1,Se("wand-sidebar-open",!1),un())}function Nm(){if(Re()){Wr();return}r.sidebarPinned||r.sidebarCollapsed||!r.sessionsDrawerOpen||(Mr(),r.sessionsDrawerOpen=!1,Se("wand-sidebar-open",!1),un(),zr())}function Ul(e){var t=document.getElementById("composer-plus-popover"),n=document.getElementById("attach-btn");r.plusPopoverOpen=!!e,t&&t.classList.toggle("hidden",!e),n&&(n.classList.toggle("active",!!e),n.setAttribute("aria-expanded",e?"true":"false"))}function jm(){Ul(!r.plusPopoverOpen)}function Ji(){r.plusPopoverOpen&&Ul(!1)}function _t(){Re()&&r.sessionsDrawerOpen&&Wr()}function zr(){var e=document.querySelector(".main-layout");if(e){var t=function(n){n.propertyName==="padding-left"&&(e.removeEventListener("transitionend",t),qt(!0))};e.addEventListener("transitionend",t)}setTimeout(function(){qt(!0)},350)}var Nt=null;function Rm(){return Nt&&document.body.contains(Nt)||(Nt=document.createElement("div"),Nt.className="sidebar-tile-bubble",Nt.setAttribute("role","tooltip"),document.body.appendChild(Nt)),Nt}function Xt(){Nt&&Nt.classList.remove("visible")}function Wm(e,t){if(!t){Xt();return}var n=Rm();n.textContent=t.length>400?t.slice(0,400)+"\u2026":t;var i=e.getBoundingClientRect();n.classList.add("visible");var a=n.getBoundingClientRect(),u=i.top+i.height/2,o=u-a.height/2,s=8,l=window.innerHeight-a.height-8;o<s&&(o=s),o>l&&(o=Math.max(s,l)),n.style.left=i.right+12+"px",n.style.top=o+"px",n.style.setProperty("--bubble-tail-y",u-o+"px")}function zm(e){if(e.dataset.collapsedSessionId){var t=r.sessions.find(function(a){return a.id===e.dataset.collapsedSessionId});if(!t)return"";var n=fc(t);return n||t.summary||t.command||""}if(e.dataset.collapsedHistoryId){var i=r.claudeHistory.find(function(a){return a.claudeSessionId===e.dataset.collapsedHistoryId});if(i&&i.firstUserMessage)return i.firstUserMessage}return""}function Vm(e){var t=e.target;if(!(!t||!(t instanceof Element))){var n=t.closest(".sidebar-collapsed-tile");if(!n){Xt();return}var i=zm(n);if(!i){Xt();return}Wm(n,i)}}function Um(e){var t=e.relatedTarget;t&&t instanceof Element&&t.closest(".sidebar-collapsed-tile")||Xt()}function Km(){var e=Re();r.sidebarPinned||(r.sidebarPinned=!0,Se("wand-sidebar-pinned",!0)),r.sidebarCollapsed=!r.sidebarCollapsed,Se("wand-sidebar-collapsed",r.sidebarCollapsed),r.sidebarCollapsed?r.sessionsDrawerOpen=!1:e?(r.sidebarPinned=!1,r.sessionsDrawerOpen=!0,Se("wand-sidebar-pinned",!1)):r.sessionsDrawerOpen=!0,Se("wand-sidebar-open",r.sessionsDrawerOpen),un(),pe(),Ym(),Xt(),zr()}function Jm(){Re()||(r.sidebarPinned=!r.sidebarPinned,r.sessionsDrawerOpen=!0,Se("wand-sidebar-pinned",r.sidebarPinned),Se("wand-sidebar-open",!0),un(),zr())}function Ym(){var e=document.getElementById("sidebar-collapse-btn");if(e){var t=!!r.sidebarPinned&&!!r.sidebarCollapsed;e.classList.toggle("collapsed",t),e.title=t?"\u5C55\u5F00\u4FA7\u680F":"\u6536\u8D77\u4E3A\u7A84\u6761",e.setAttribute("aria-label",t?"\u5C55\u5F00\u4FA7\u680F":"\u6536\u8D77\u4E3A\u7A84\u6761"),e.innerHTML=t?'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="10 6 16 12 10 18"/><line x1="20" y1="5" x2="20" y2="19"/></svg>':'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="14 6 8 12 14 18"/><line x1="4" y1="5" x2="4" y2="19"/></svg>'}}function Gm(e){if(e){e.style.left="",e.style.right="";var t=e.offsetParent||e.parentElement;if(t){var n=8,i=t.getBoundingClientRect(),a=e.getBoundingClientRect(),u=window.innerWidth;a.left<n?(e.style.right="auto",e.style.left=n-i.left+"px"):a.right>u-n&&(e.style.left="auto",e.style.right=i.right-(u-n)+"px")}}}function Qm(e){if(!(!e||typeof e!="object")){r.config=e;var t=e.defaultProvider==="codex"?"codex":"claude";r.sessionTool=t,r.preferredCommand=t,r.sessionCreateKind=e.defaultSessionKind==="pty"?"pty":"structured",r.modeValue=mt(t,e.defaultMode||"default")}}var Yi=Promise.resolve();function Gi(e){return!e||typeof e!="object"?Promise.resolve():(Yi=Yi.catch(function(){}).then(function(){return fetch("/api/settings/config",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(e)})}).then(function(t){return t.json().then(function(n){if(!t.ok||n.error)throw new Error(n.error||"\u4FDD\u5B58\u65B0\u5EFA\u4F1A\u8BDD\u504F\u597D\u5931\u8D25");return n.config&&(r.config=n.config),n})}).catch(function(t){console.warn("[wand] Failed to persist new-session defaults",t)}),Yi)}function ku(){nr(),r.modalOpen=!0,r.sessionsDrawerOpen=!1,Se("wand-sidebar-open",!1),Rr();var e=document.getElementById("session-modal");e&&(e._wandCloseTimer&&(clearTimeout(e._wandCloseTimer),e._wandCloseTimer=null),e.classList.remove("closing"),e.classList.remove("hidden"),r.lastFocusedElement=document.activeElement,r.sessionTool=r.config&&r.config.defaultProvider==="codex"?"codex":"claude",r.preferredCommand=r.sessionTool,r.sessionCreateKind=r.config&&r.config.defaultSessionKind==="pty"?"pty":"structured",r.sessionCreateWorktree=!1,r.modeValue=mt(r.sessionTool,r.config&&r.config.defaultMode?r.config.defaultMode:"default"),er(),Yi.then(function(){return fetch("/api/config",{credentials:"same-origin"})}).then(function(t){return t.ok?t.json():null}).then(function(t){!t||!r.modalOpen||(Qm(t),er())}).catch(function(){}),Fg(),setTimeout(function(){var t=document.getElementById("mode-cards");t&&t.focus()},20),Qi(e))}function hn(){r.modalOpen=!1;var e=document.getElementById("session-modal");e&&(r.focusTrapHandler&&(document.removeEventListener("keydown",r.focusTrapHandler),r.focusTrapHandler=null),r.lastFocusedElement&&typeof r.lastFocusedElement.focus=="function"&&r.lastFocusedElement.focus(),Au(e)),ir()}function Au(e){if(e&&!e.classList.contains("hidden")){var t=!1;try{t=window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}catch{}if(t||document.hidden){e.classList.remove("closing"),e.classList.add("hidden");return}e._wandCloseTimer&&(clearTimeout(e._wandCloseTimer),e._wandCloseTimer=null),e.classList.add("closing"),e._wandCloseTimer=setTimeout(function(){e.classList.remove("closing"),e.classList.add("hidden"),e._wandCloseTimer=null},170)}}function Qi(e){r.focusTrapHandler&&document.removeEventListener("keydown",r.focusTrapHandler);var t='button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])';r.focusTrapHandler=function(n){if(n.key==="Tab"){var i=e.querySelectorAll(t),a=i[0],u=i[i.length-1];!a||!u||(n.shiftKey?document.activeElement===a&&(n.preventDefault(),u.focus()):document.activeElement===u&&(n.preventDefault(),a.focus()))}},document.addEventListener("keydown",r.focusTrapHandler)}function $m(){return r.activeWorktreeMergeSessionId&&r.sessions.find(function(e){return e.id===r.activeWorktreeMergeSessionId})||null}function Vr(){var e=document.getElementById("worktree-merge-content"),t=document.getElementById("worktree-merge-confirm-button"),n=document.getElementById("worktree-merge-error"),i=$m(),a=r.worktreeMergeCheckResult;if(!(!e||!t)){if(!i||!i.worktree){e.innerHTML='<p class="field-hint">\u672A\u627E\u5230\u53EF\u5408\u5E76\u7684 worktree \u4F1A\u8BDD\u3002</p>',t.disabled=!0;return}n&&(r.worktreeMergeError?He(n,r.worktreeMergeError):yi(n));var u=['<div class="worktree-merge-row"><span>\u6765\u6E90\u5206\u652F</span><strong>'+p(i.worktree.branch||"-")+"</strong></div>",'<div class="worktree-merge-row"><span>\u5DE5\u4F5C\u76EE\u5F55</span><strong>'+p(i.worktree.path||"-")+"</strong></div>"];a?(u.push('<div class="worktree-merge-row"><span>\u76EE\u6807\u5206\u652F</span><strong>'+p(a.targetBranch||"-")+"</strong></div>"),u.push('<div class="worktree-merge-row"><span>\u5F85\u5408\u5E76\u63D0\u4EA4</span><strong>'+p(String(a.aheadCount||0))+"</strong></div>"),u.push('<div class="worktree-merge-row"><span>\u672A\u63D0\u4EA4\u6539\u52A8</span><strong>'+p(a.hasUncommittedChanges?"\u6709":"\u65E0")+"</strong></div>"),u.push('<div class="worktree-merge-row"><span>\u51B2\u7A81\u98CE\u9669</span><strong>'+p(a.hasConflicts?"\u6709":"\u65E0")+"</strong></div>"),a.reason&&u.push('<p class="field-hint">'+p(a.reason)+"</p>")):r.worktreeMergeLoading&&u.push('<p class="field-hint">\u6B63\u5728\u68C0\u67E5 worktree \u5408\u5E76\u72B6\u6001\u2026</p>'),e.innerHTML=u.join(""),t.disabled=r.worktreeMergeLoading||r.worktreeMergeSubmitting||!a||a.ok!==!0,t.textContent=r.worktreeMergeSubmitting?"\u5408\u5E76\u4E2D...":"\u786E\u8BA4\u5408\u5E76\u5E76\u6E05\u7406"}}function Kl(e){r.activeWorktreeMergeSessionId=e,r.worktreeMergeCheckResult=null,r.worktreeMergeLoading=!0,r.worktreeMergeSubmitting=!1,r.worktreeMergeError="",hn(),nr();var t=document.getElementById("worktree-merge-modal");t&&(t.classList.remove("hidden"),r.lastFocusedElement=document.activeElement,Qi(t)),Vr(),fetch("/api/sessions/"+encodeURIComponent(e)+"/worktree/merge/check",{method:"POST",credentials:"same-origin"}).then(function(n){return n.json()}).then(function(n){if(n&&n.error)throw new Error(n.error);n&&n.session&&X(n.session),r.worktreeMergeCheckResult=n.result||null,r.worktreeMergeError=""}).catch(function(n){r.worktreeMergeError=n&&n.message||"\u65E0\u6CD5\u68C0\u67E5 worktree \u5408\u5E76\u72B6\u6001\u3002"}).finally(function(){r.worktreeMergeLoading=!1,Vr()})}function tr(){var e=document.getElementById("worktree-merge-modal");r.activeWorktreeMergeSessionId=null,r.worktreeMergeCheckResult=null,r.worktreeMergeLoading=!1,r.worktreeMergeSubmitting=!1,r.worktreeMergeError="",e&&e.classList.add("hidden"),r.focusTrapHandler&&(document.removeEventListener("keydown",r.focusTrapHandler),r.focusTrapHandler=null),r.lastFocusedElement&&typeof r.lastFocusedElement.focus=="function"&&r.lastFocusedElement.focus()}function Xm(){!r.activeWorktreeMergeSessionId||r.worktreeMergeSubmitting||(r.worktreeMergeSubmitting=!0,r.worktreeMergeError="",Vr(),fetch("/api/sessions/"+encodeURIComponent(r.activeWorktreeMergeSessionId)+"/worktree/merge",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({})}).then(function(e){return e.json()}).then(function(e){if(e&&e.error)throw new Error(e.error);return e&&e.session&&X(e.session),A("\u5DF2\u5408\u5E76\u5230 "+p(e.result&&e.result.targetBranch||"\u4E3B\u5206\u652F")+(e.result&&e.result.cleanupDone===!1?"\uFF0C\u4F46\u5DE5\u4F5C\u6811\u5F85\u6E05\u7406\u3002":"\u3002"),"info"),tr(),Ot()}).catch(function(e){r.worktreeMergeError=e&&e.message||"\u65E0\u6CD5\u5408\u5E76 worktree\u3002",Vr()}).finally(function(){r.worktreeMergeSubmitting=!1,Vr()}))}function Jl(e){fetch("/api/sessions/"+encodeURIComponent(e)+"/worktree/cleanup",{method:"POST",credentials:"same-origin"}).then(function(t){return t.json()}).then(function(t){if(t&&t.error)throw new Error(t.error);return t&&t.session&&X(t.session),A("\u5DF2\u5B8C\u6210 worktree \u6E05\u7406\u3002","info"),Ot()}).catch(function(t){A(t&&t.message||"\u65E0\u6CD5\u6E05\u7406 worktree\u3002","error")})}function Zm(){hn();var e=document.getElementById("settings-modal");if(e){e._wandCloseTimer&&(clearTimeout(e._wandCloseTimer),e._wandCloseTimer=null),e.classList.remove("closing"),e.classList.remove("hidden"),r.lastFocusedElement=document.activeElement;var t=document.getElementById("new-password"),n=document.getElementById("confirm-password");t&&(t.value=""),n&&(n.value=""),Yl(),Qi(e),tg(),e.querySelectorAll(".model-combobox-input").forEach(function(c){c.dataset.modelDirty="false",c.dataset.modelInitialized="false"}),xu("about"),ag();var i=document.getElementById("cfg-notif-sound"),a=document.getElementById("cfg-notif-bubble");i&&(i.checked=r.notifSound),a&&(a.checked=r.notifBubble);var u=document.getElementById("cfg-notif-volume"),o=document.getElementById("cfg-notif-volume-val");if(u){u.value=r.notifVolume,o&&(o.textContent=r.notifVolume+"%");try{u.dispatchEvent(new Event("input",{bubbles:!0}))}catch{}}var s=document.getElementById("notif-volume-field");if(s&&(s.style.display=r.notifSound?"":"none"),bn(),typeof WandNative<"u"&&typeof WandNative.getAppIcon=="function")try{$l(WandNative.getAppIcon()||"shorthair")}catch{}if(We&&typeof WandNative.getNotificationSound=="function")try{var l=document.getElementById("native-sound-select");l&&(l.value=WandNative.getNotificationSound())}catch{}if(We&&typeof WandNative.getNotificationVolume=="function")try{var d=WandNative.getNotificationVolume();if(r.notifVolume=d,u&&(u.value=String(d)),o&&(o.textContent=d+"%"),u)try{u.dispatchEvent(new Event("input",{bubbles:!0}))}catch{}try{localStorage.setItem("wand-notif-volume",String(d))}catch{}}catch{}if(We&&typeof WandNative.isHapticEnabled=="function")try{var f=document.getElementById("cfg-haptic-enabled");f&&(f.checked=WandNative.isHapticEnabled())}catch{}}}function nr(){var e=document.getElementById("settings-modal");e&&(e.querySelectorAll(".model-combobox.is-open").forEach(function(t){vn(t)}),r.focusTrapHandler&&(document.removeEventListener("keydown",r.focusTrapHandler),r.focusTrapHandler=null),r.lastFocusedElement&&typeof r.lastFocusedElement.focus=="function"&&r.lastFocusedElement.focus(),Au(e))}function Yl(){var e=document.getElementById("settings-error"),t=document.getElementById("settings-success");e&&e.classList.add("hidden"),t&&t.classList.add("hidden")}function eg(){var e=document.getElementById("new-password").value,t=document.getElementById("confirm-password").value,n=document.getElementById("settings-error"),i=document.getElementById("settings-success");if(Yl(),!e||e.length<6){n.textContent="\u5BC6\u7801\u957F\u5EA6\u81F3\u5C11\u4E3A 6 \u4E2A\u5B57\u7B26\u3002",n.classList.remove("hidden");return}if(e!==t){n.textContent="\u4E24\u6B21\u8F93\u5165\u7684\u5BC6\u7801\u4E0D\u4E00\u81F4\u3002",n.classList.remove("hidden");return}fetch("/api/set-password",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:e}),credentials:"same-origin"}).then(function(a){return a.json()}).then(function(a){if(a.error){n.textContent=a.error,n.classList.remove("hidden");return}i.textContent="\u5BC6\u7801\u4FEE\u6539\u6210\u529F\uFF01",i.classList.remove("hidden"),document.getElementById("new-password").value="",document.getElementById("confirm-password").value=""}).catch(function(){n.textContent="Failed to save password.",n.classList.remove("hidden")})}function xu(e){document.querySelectorAll(".model-combobox.is-open").forEach(function(s){vn(s)});for(var t=document.querySelectorAll(".settings-tab"),n=document.querySelectorAll(".settings-panel"),i=0;i<t.length;i++){var a=t[i].getAttribute("data-tab")===e;a?t[i].classList.add("active"):t[i].classList.remove("active"),t[i].setAttribute("aria-selected",a?"true":"false"),t[i].setAttribute("tabindex",a?"0":"-1")}for(var u=0;u<n.length;u++){var o=n[u].id==="settings-tab-"+e;o?(n[u].classList.add("active"),n[u].removeAttribute("hidden")):(n[u].classList.remove("active"),n[u].setAttribute("hidden","hidden"))}}function Gl(e){if(e&&!(e.key!=="ArrowUp"&&e.key!=="ArrowDown"&&e.key!=="ArrowLeft"&&e.key!=="ArrowRight"&&e.key!=="Home"&&e.key!=="End")){var t=Array.prototype.slice.call(document.querySelectorAll(".settings-tab"));if(t.length){var n=e.currentTarget&&e.currentTarget.closest?e.currentTarget.closest(".settings-tabs"):null,i=n&&n.getAttribute("aria-orientation")==="horizontal";if(!(i&&(e.key==="ArrowUp"||e.key==="ArrowDown"))&&!(!i&&(e.key==="ArrowLeft"||e.key==="ArrowRight"))){var a=t.indexOf(e.currentTarget);if(a!==-1){e.preventDefault();var u=a;(e.key==="ArrowUp"||e.key==="ArrowLeft")&&(u=a>0?a-1:t.length-1),(e.key==="ArrowDown"||e.key==="ArrowRight")&&(u=a<t.length-1?a+1:0),e.key==="Home"&&(u=0),e.key==="End"&&(u=t.length-1);var o=t[u];if(o){var s=o.getAttribute("data-tab");s&&xu(s),typeof o.focus=="function"&&o.focus()}}}}}}function tg(){var e=document.querySelector(".settings-tabs");if(e){var t=!1;try{t=!!(window.matchMedia&&window.matchMedia("(max-width: 760px)").matches)}catch{}e.setAttribute("aria-orientation",t?"horizontal":"vertical")}for(var n=document.querySelectorAll(".settings-tab"),i=0;i<n.length;i++)n[i].removeEventListener("keydown",Gl),n[i].addEventListener("keydown",Gl)}function ng(e){if(e){var t=e.config||{},n={about:e.version?"\u5F53\u524D v"+e.version:"\u7248\u672C\u4E0E\u66F4\u65B0\u4FE1\u606F",general:[t.defaultMode||"default",t.language||"\u81EA\u52A8\u8BED\u8A00"].filter(Boolean).join(" \xB7 "),notifications:r.notifSound?"\u63D0\u793A\u97F3 "+r.notifVolume+"%":"\u63D0\u793A\u97F3\u5DF2\u5173\u95ED",security:e.hasCert?"\u5DF2\u5B89\u88C5 SSL \u8BC1\u4E66":"\u5BC6\u7801\u4E0E\u8BC1\u4E66\u7BA1\u7406",presets:t.commandPresets&&t.commandPresets.length?t.commandPresets.length+" \u6761\u9884\u8BBE":"\u6682\u65E0\u9884\u8BBE",display:"\u63A7\u5236\u5361\u7247\u9ED8\u8BA4\u5C55\u5F00"};for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var a=document.querySelector('.settings-tab[data-tab="'+i+'"] .settings-tab-meta');a&&(a.textContent=n[i]||"")}}}function rg(e){var t=document.getElementById("android-connect-qr"),n=document.getElementById("android-connect-qr-empty"),i=window.QRCodeLib;if(t){if(!i||typeof i.toCanvas!="function"){n&&(n.textContent="\u4E8C\u7EF4\u7801\u5E93\u672A\u52A0\u8F7D");return}try{i.toCanvas(t,e,{width:220,margin:1,errorCorrectionLevel:"M",color:{dark:"#1f1b17",light:"#ffffff00"}},function(a){if(a){n&&(n.textContent="\u4E8C\u7EF4\u7801\u751F\u6210\u5931\u8D25",n.style.display=""),t.style.visibility="hidden";return}n&&(n.style.display="none"),t.style.visibility="visible"})}catch{n&&(n.textContent="\u4E8C\u7EF4\u7801\u751F\u6210\u5931\u8D25",n.style.display=""),t.style.visibility="hidden"}}}function ig(e){var t=window.QRCodeLib;if(!t||typeof t.toCanvas!="function")return;var n=document.getElementById("connect-qr-modal");n&&n.remove();var i=document.createElement("div");i.id="connect-qr-modal",i.className="connect-qr-modal-overlay",i.innerHTML='<div class="connect-qr-modal-card"><canvas id="connect-qr-modal-canvas"></canvas><p class="connect-qr-modal-hint">\u7528 Wand App \u626B\u4E00\u626B\uFF0C\u8FDE\u63A5\u5F53\u524D\u670D\u52A1\u5668</p><button type="button" class="btn btn-secondary btn-sm connect-qr-modal-close">\u5173\u95ED</button></div>',document.body.appendChild(i);var a=i.querySelector("#connect-qr-modal-canvas"),u=Math.min(window.innerWidth,window.innerHeight)*.7;u<240&&(u=240),u>480&&(u=480);try{t.toCanvas(a,e,{width:u,margin:2,errorCorrectionLevel:"M",color:{dark:"#1f1b17",light:"#ffffff"}})}catch{}function o(){i.remove()}i.addEventListener("click",function(l){l.target===i&&o()});var s=i.querySelector(".connect-qr-modal-close");s&&s.addEventListener("click",o)}function Ur(e,t,n){if(!e)return;function i(){if(Gn("light"),n){n();return}if(t){var a=t.textContent;t.textContent="\u5DF2\u590D\u5236",setTimeout(function(){t.textContent=a},1500)}}if(We&&typeof WandNative.copyToClipboard=="function")try{if(WandNative.copyToClipboard(e)==="ok"){i();return}}catch{}navigator.clipboard.writeText(e).then(i).catch(function(){var a=document.createElement("textarea");a.value=e,a.style.position="fixed",a.style.opacity="0",document.body.appendChild(a),a.select(),document.execCommand("copy"),document.body.removeChild(a),i()})}function yn(e){if(typeof e!="number"||!isFinite(e)||e<0)return"-";if(e<1024)return e+" B";for(var t=["KB","MB","GB","TB"],n=e/1024,i=0;n>=1024&&i<t.length-1;)n=n/1024,i+=1;var a=n>=10?n.toFixed(0):n.toFixed(1);return a+" "+t[i]}function ag(){fetch("/api/settings",{credentials:"same-origin"}).then(function(e){return e.json()}).then(function(e){ng(e);var t=document.getElementById("settings-pkg-name"),n=document.getElementById("settings-version"),i=document.getElementById("settings-node-req"),a=document.getElementById("settings-repo-url");t&&(t.textContent=e.packageName||"-"),n&&(n.textContent=e.version||"-"),i&&(i.textContent=e.nodeVersion||"-"),a&&e.repoUrl&&(a.innerHTML='<a href="'+p(e.repoUrl)+'" target="_blank" rel="noopener">'+p(e.repoUrl)+"</a>");var u=document.getElementById("settings-latest-version"),o=document.getElementById("do-update-button");e.latestVersion&&u&&(u.textContent=e.latestVersion,e.updateAvailable&&o&&o.classList.remove("hidden"));var s=document.getElementById("beta-channel-toggle");s&&(s.checked=e.updateChannel==="beta");var l=e.autoUpdate||{},d=document.getElementById("auto-update-web-toggle");d&&(d.checked=!!l.web);var f=document.getElementById("auto-update-apk-toggle");f&&(f.checked=!!In&&!!l.apk);var c=document.getElementById("auto-update-dmg-toggle");c&&(c.checked=!!sn&&!!l.dmg);function v(oe,Le){cs(oe,{type:Le==="error"?"danger":"info"})}function h(oe,Le,je){var tt=je?je.textContent:"";je&&(je.disabled=!0,je.textContent="\u4E0B\u8F7D\u4E2D\u2026");function j(){je&&(je.disabled=!1,je.textContent=tt)}fetch(oe,{method:"HEAD",credentials:"same-origin"}).then(function(P){if(!P.ok){v(P.status===404?"\u4E0B\u8F7D\u672A\u542F\u7528\u6216\u6587\u4EF6\u5DF2\u79FB\u9664":"\u4E0B\u8F7D\u5931\u8D25 (HTTP "+P.status+")","error"),j();return}var K=document.createElement("a");K.href=oe,K.download=Le||"",document.body.appendChild(K),K.click(),document.body.removeChild(K),v("\u5DF2\u5F00\u59CB\u4E0B\u8F7D\uFF0C\u8BF7\u5728\u901A\u77E5\u680F/\u4E0B\u8F7D\u7BA1\u7406\u4E2D\u67E5\u770B","info"),j()}).catch(function(P){v("\u4E0B\u8F7D\u5931\u8D25: "+(P&&P.message?P.message:P),"error"),j()})}function g(oe,Le){function je(Zi){var Hn=String(Zi||"").replace(/^v/,""),_n=Hn.indexOf("-"),ea=_n>=0?Hn.slice(0,_n):Hn,Yr=_n>=0?Hn.slice(_n+1):"";return{parts:ea.split(".").map(function(Oe){return parseInt(Oe,10)||0}),pre:Yr,isDebug:Yr.indexOf("debug")===0}}for(var tt=je(oe),j=je(Le),P=0;P<3;P++){var K=(tt.parts[P]||0)-(j.parts[P]||0);if(K!==0)return K>0?1:-1}if(tt.isDebug!==j.isDebug)return tt.isDebug?1:-1;if(tt.isDebug&&j.isDebug)for(var ae=tt.pre.split("."),se=j.pre.split("."),ye=0;ye<Math.max(ae.length,se.length);ye++){if(ae[ye]===void 0)return-1;if(se[ye]===void 0)return 1;var ur=parseInt(ae[ye],10),or=parseInt(se[ye],10);if(!isNaN(ur)&&!isNaN(or)){if(ur!==or)return ur>or?1:-1}else if(ae[ye]!==se[ye])return ae[ye]>se[ye]?1:-1}return 0}function m(oe,Le,je,tt,j,P){oe.classList.remove("hidden"),oe.disabled=!1,Le>0?oe.textContent="\u5347\u7EA7":Le===0?(oe.textContent="\u5DF2\u662F\u6700\u65B0",oe.disabled=!0):P?oe.textContent="\u91CD\u65B0\u5B89\u88C5":(oe.textContent="\u7248\u672C\u8F83\u65E7",oe.disabled=!0),oe.onclick=oe.disabled?null:function(){try{WandNative.downloadUpdate(je,tt,j)}catch(K){v("\u8C03\u7528\u4E0B\u8F7D\u5931\u8D25: "+(K&&K.message?K.message:K),"error")}}}var y=document.getElementById("android-apk-section"),C=document.getElementById("android-apk-current-row"),E=document.getElementById("settings-android-apk-current"),B=document.getElementById("android-apk-github-row"),D=document.getElementById("settings-android-apk-github"),F=document.getElementById("download-github-apk-btn"),I=document.getElementById("android-apk-local-row"),L=document.getElementById("settings-android-apk-local"),H=document.getElementById("download-local-apk-btn"),U=document.getElementById("android-apk-message"),x=e.androidApk||{},k=!!In,T=x.enabled!==!1,M=k||T&&(!!x.github||!!x.local);if(y&&(M?y.classList.remove("hidden"):y.classList.add("hidden")),k){if(C&&E&&(E.textContent="v"+In,C.classList.remove("hidden")),x.github&&B&&D){var Y=x.github.version?"v"+x.github.version:x.github.fileName;if(typeof x.github.size=="number"&&(Y+=" \xB7 "+yn(x.github.size)),D.textContent=Y,B.classList.remove("hidden"),F){var z=x.github.version?g(x.github.version,In):1;m(F,z,x.github.downloadUrl,x.github.fileName||"wand-update.apk","github",!1)}}if(x.local&&I&&L){var Q=x.local.version?"v"+x.local.version:x.local.fileName;if(typeof x.local.size=="number"&&(Q+=" \xB7 "+yn(x.local.size)),L.textContent=Q,I.classList.remove("hidden"),H){var le=x.local.version?g(x.local.version,In):1;m(H,le,x.local.downloadUrl,x.local.fileName||"wand-update.apk","local",!1)}}!x.github&&!x.local&&U&&(U.textContent="\u6682\u65E0\u53EF\u7528\u66F4\u65B0",U.classList.remove("hidden"));var ee=document.getElementById("android-auto-update-row"),Z=document.getElementById("android-auto-update-hint");ee&&ee.classList.remove("hidden"),Z&&Z.classList.remove("hidden")}else{if(x.github&&B&&D){var q=x.github.version?"v"+x.github.version:x.github.fileName;typeof x.github.size=="number"&&(q+=" \xB7 "+yn(x.github.size)),D.textContent=q,B.classList.remove("hidden"),F&&(F.textContent="\u4E0B\u8F7D",F.classList.remove("hidden"),F.onclick=function(){window.open(x.github.downloadUrl,"_blank"),v("\u6B63\u5728\u6253\u5F00\u4E0B\u8F7D\u9875\u2026","info")})}if(x.local&&I&&L){var O=x.local.version?"v"+x.local.version:x.local.fileName;typeof x.local.size=="number"&&(O+=" \xB7 "+yn(x.local.size)),L.textContent=O,I.classList.remove("hidden"),H&&(H.textContent="\u4E0B\u8F7D",H.classList.remove("hidden"),H.onclick=function(){h(x.local.downloadUrl,x.local.fileName||"wand-update.apk",H)})}!x.github&&!x.local&&U&&(U.textContent=T?"\u5728\u7EBF\u7248\u672C\u6682\u65F6\u83B7\u53D6\u5931\u8D25\uFF0C\u53EF\u7A0D\u540E\u91CD\u8BD5":"Android \u4E0B\u8F7D\u672A\u5728\u670D\u52A1\u7AEF\u542F\u7528",U.classList.remove("hidden"))}var N=document.getElementById("macos-dmg-section"),G=document.getElementById("macos-dmg-current-row"),J=document.getElementById("settings-macos-dmg-current"),ne=document.getElementById("macos-dmg-github-row"),de=document.getElementById("settings-macos-dmg-github"),re=document.getElementById("download-github-dmg-btn"),ie=document.getElementById("macos-dmg-local-row"),qe=document.getElementById("settings-macos-dmg-local"),ge=document.getElementById("download-local-dmg-btn"),ce=document.getElementById("macos-dmg-message"),R=e.macosDmg||{},ht=!!sn,_e=R.enabled!==!1,$=ht||_e&&(!!R.github||!!R.local);if(N&&($?N.classList.remove("hidden"):N.classList.add("hidden")),ht){if(G&&J&&(J.textContent="v"+sn,G.classList.remove("hidden")),R.github&&ne&&de){var fe=R.github.version?"v"+R.github.version:R.github.fileName;if(typeof R.github.size=="number"&&(fe+=" \xB7 "+yn(R.github.size)),de.textContent=fe,ne.classList.remove("hidden"),re){var Ce=R.github.version?g(R.github.version,sn):1;m(re,Ce,R.github.downloadUrl,R.github.fileName||"wand-update.dmg","github",!0)}}if(R.local&&ie&&qe){var Be=R.local.version?"v"+R.local.version:R.local.fileName;if(typeof R.local.size=="number"&&(Be+=" \xB7 "+yn(R.local.size)),qe.textContent=Be,ie.classList.remove("hidden"),ge){var ve=R.local.version?g(R.local.version,sn):1;m(ge,ve,R.local.downloadUrl,R.local.fileName||"wand-update.dmg","local",!0)}}!R.github&&!R.local&&ce&&(ce.textContent="\u6682\u65E0\u53EF\u7528\u66F4\u65B0",ce.classList.remove("hidden"));var Fe=document.getElementById("macos-auto-update-row"),et=document.getElementById("macos-auto-update-hint");Fe&&Fe.classList.remove("hidden"),et&&et.classList.remove("hidden")}else{if(R.github&&ne&&de){var dt=R.github.version?"v"+R.github.version:R.github.fileName;typeof R.github.size=="number"&&(dt+=" \xB7 "+yn(R.github.size)),de.textContent=dt,ne.classList.remove("hidden"),re&&(re.textContent="\u4E0B\u8F7D",re.classList.remove("hidden"),re.onclick=function(){window.open(R.github.downloadUrl,"_blank"),v("\u6B63\u5728\u6253\u5F00\u4E0B\u8F7D\u9875\u2026","info")})}if(R.local&&ie&&qe){var it=R.local.version?"v"+R.local.version:R.local.fileName;typeof R.local.size=="number"&&(it+=" \xB7 "+yn(R.local.size)),qe.textContent=it,ie.classList.remove("hidden"),ge&&(ge.textContent="\u4E0B\u8F7D",ge.classList.remove("hidden"),ge.onclick=function(){h(R.local.downloadUrl,R.local.fileName||"wand-update.dmg",ge)})}!R.github&&!R.local&&ce&&(ce.textContent=_e?"\u5728\u7EBF\u7248\u672C\u6682\u65F6\u83B7\u53D6\u5931\u8D25\uFF0C\u53EF\u7A0D\u540E\u91CD\u8BD5":"macOS \u4E0B\u8F7D\u672A\u5728\u670D\u52A1\u7AEF\u542F\u7528",ce.classList.remove("hidden"))}var Ne=document.getElementById("android-connect-code"),Rt=document.getElementById("android-connect-qr"),Ye=document.getElementById("android-connect-qr-empty"),De=document.getElementById("android-connect-qr-wrap");if(Ne){Ne.textContent="\u52A0\u8F7D\u4E2D...",Ye&&(Ye.textContent="\u751F\u6210\u4E2D\u2026"),Rt&&(Rt.style.visibility="hidden");var Pe="/api/app-connect-code";window.location&&window.location.origin&&(Pe+="?origin="+encodeURIComponent(window.location.origin)),fetch(Pe,{credentials:"same-origin"}).then(function(oe){return oe.json()}).then(function(oe){oe.code?(Ne.textContent=oe.code,r.androidConnectCode=oe.code,rg(oe.code)):(Ne.textContent="\u751F\u6210\u5931\u8D25",Ye&&(Ye.textContent="\u751F\u6210\u5931\u8D25"))}).catch(function(){Ne.textContent="\u83B7\u53D6\u5931\u8D25",Ye&&(Ye.textContent="\u83B7\u53D6\u5931\u8D25")})}De&&!De.dataset.bound&&(De.dataset.bound="1",De.addEventListener("click",function(){r.androidConnectCode&&ig(r.androidConnectCode)}));var te=e.config||{},we=document.getElementById("cfg-host"),w=document.getElementById("cfg-port"),at=document.getElementById("cfg-https"),kt=document.getElementById("cfg-mode"),ut=document.getElementById("cfg-cwd"),Zt=document.getElementById("cfg-shell");we&&(we.value=te.host||""),w&&(w.value=te.port||""),at&&(at.checked=te.https===!0),kt&&(kt.value=te.defaultMode||"default"),ut&&(ut.value=te.defaultCwd||""),Zt&&(Zt.value=te.shell||"");var At=document.getElementById("cfg-language");At&&(At.value=te.language||"");var Wt=document.getElementById("cfg-structured-runner");Wt&&(Wt.value=te.structuredRunner||"cli");var zt=document.getElementById("cfg-inherit-env");zt&&(zt.checked=te.inheritEnv!==!1);var Te=document.getElementById("cfg-commit-cli"),Ue=document.getElementById("cfg-commit-model");Te&&(Te.value=te.commitCli==="codex"?"codex":"claude"),Ue&&(Ue.value=te.commitModel||"",Ue.dataset.modelInitialized="true",Ue.dataset.modelDirty="false"),Vi(!1);var Ke=te.defaultModels&&typeof te.defaultModels=="object"?te.defaultModels:{claude:te.defaultModel||"",codex:te.defaultCodexModel||""};r.configDefaultModels={claude:Ke.claude||"",codex:Ke.codex||""},r.configDefaultModel=r.configDefaultModels.claude;var xt=document.getElementById("cfg-default-model"),Vt=document.getElementById("cfg-default-codex-model");xt&&xt.dataset.modelDirty!=="true"&&(xt.dataset.modelInitialized="false"),Vt&&Vt.dataset.modelDirty!=="true"&&(Vt.dataset.modelInitialized="false"),Ui(),Ol().then(function(){Ui()}).catch(function(){});var Ut=document.getElementById("cert-status");Ut&&(Ut.textContent=e.hasCert?"\u5DF2\u5B89\u88C5 SSL \u8BC1\u4E66":"\u672A\u5B89\u88C5\u8BC1\u4E66\uFF08\u4F7F\u7528\u81EA\u7B7E\u540D\u6216 HTTP\uFF09",Ut.style.color=e.hasCert?"var(--success)":"var(--text-secondary)");var En=document.getElementById("presets-list");if(En&&te.commandPresets){for(var ct="",ke=0;ke<te.commandPresets.length;ke++){var Je=te.commandPresets[ke];ct+='<div class="preset-item"><span class="preset-label">'+p(Je.label)+'</span><span class="preset-detail">'+p(Je.command)+(Je.mode?" ("+p(Je.mode)+")":"")+"</span></div>"}ct||(ct='<div class="empty-state-compact"><span class="empty-icon">\u2699</span><span>\u6CA1\u6709\u547D\u4EE4\u9884\u8BBE</span><span class="hint">\u5728 config.json \u7684 commandPresets \u4E2D\u914D\u7F6E</span></div>'),En.innerHTML=ct}var Ae=te.cardDefaults||{},On=document.getElementById("cfg-card-edit"),ft=document.getElementById("cfg-card-inline"),en=document.getElementById("cfg-card-terminal"),tn=document.getElementById("cfg-card-thinking"),St=document.getElementById("cfg-card-toolgroup");On&&(On.checked=Ae.editCards===!0),ft&&(ft.checked=Ae.inlineTools===!0),en&&(en.checked=Ae.terminal===!0),tn&&(tn.checked=Ae.thinking===!0),St&&(St.checked=Ae.toolGroup===!0)}).catch(function(){})}function ug(){var e=document.getElementById("config-message");e&&(e.classList.add("hidden"),e.textContent="");var t=((document.getElementById("cfg-default-model")||{}).value||"").trim(),n=((document.getElementById("cfg-default-codex-model")||{}).value||"").trim(),i=((document.getElementById("cfg-commit-model")||{}).value||"").trim(),a={host:(document.getElementById("cfg-host")||{}).value,port:Number((document.getElementById("cfg-port")||{}).value),https:(document.getElementById("cfg-https")||{}).checked,defaultMode:(document.getElementById("cfg-mode")||{}).value,defaultCwd:(document.getElementById("cfg-cwd")||{}).value,shell:(document.getElementById("cfg-shell")||{}).value,language:(document.getElementById("cfg-language")||{}).value||"",defaultModel:t,defaultCodexModel:n,defaultModels:{claude:t,codex:n},commitCli:(document.getElementById("cfg-commit-cli")||{}).value==="codex"?"codex":"claude",commitModel:i,structuredRunner:(document.getElementById("cfg-structured-runner")||{}).value||"cli",inheritEnv:(document.getElementById("cfg-inherit-env")||{}).checked!==!1},u=yu(),o=a.defaultModel||"",s=a.defaultCodexModel||"";fetch("/api/settings/config",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(a)}).then(function(l){return l.json()}).then(function(l){if(e&&(l.error?(e.textContent=l.error,e.style.color="var(--error)"):(e.textContent=l.restartRequired?"\u914D\u7F6E\u5DF2\u4FDD\u5B58\uFF0C\u90E8\u5206\u90E8\u7F72\u5B57\u6BB5\uFF08host/port/https/shell\uFF09\u9700\u8981\u91CD\u542F\u670D\u52A1\u624D\u751F\u6548\u3002":"\u914D\u7F6E\u5DF2\u4FDD\u5B58\u3002",e.style.color="var(--success)"),e.classList.remove("hidden")),!l||!l.error){r.config&&(r.config.defaultModel=o,r.config.defaultCodexModel=s,r.config.defaultModels={claude:o,codex:s},r.config.commitCli=a.commitCli,r.config.commitModel=a.commitModel),r.configDefaultModels={claude:o,codex:s},r.configDefaultModel=o;var d=document.getElementById("cfg-default-model"),f=document.getElementById("cfg-default-codex-model");d&&(d.dataset.modelDirty="false"),f&&(f.dataset.modelDirty="false");var c=document.getElementById("cfg-commit-model");c&&(c.dataset.modelDirty="false"),o!==u.claude&&bu("claude",""),s!==u.codex&&bu("codex",""),(o!==u.claude||s!==u.codex)&&Xn(st())}}).catch(function(){e&&(e.textContent="\u4FDD\u5B58\u5931\u8D25\u3002",e.style.color="var(--error)",e.classList.remove("hidden"))})}function og(){var e=document.getElementById("display-message");e&&(e.classList.add("hidden"),e.textContent="");var t={cardDefaults:{editCards:!!(document.getElementById("cfg-card-edit")||{}).checked,inlineTools:!!(document.getElementById("cfg-card-inline")||{}).checked,terminal:!!(document.getElementById("cfg-card-terminal")||{}).checked,thinking:!!(document.getElementById("cfg-card-thinking")||{}).checked,toolGroup:!!(document.getElementById("cfg-card-toolgroup")||{}).checked}};fetch("/api/settings/config",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(t)}).then(function(n){return n.json()}).then(function(n){e&&(n.error?(e.textContent=n.error,e.style.color="var(--error)"):(e.textContent="\u663E\u793A\u8BBE\u7F6E\u5DF2\u4FDD\u5B58",e.style.color="var(--success)"),e.classList.remove("hidden")),!n.error&&r.config&&(r.config.cardDefaults=t.cardDefaults)}).catch(function(){e&&(e.textContent="\u4FDD\u5B58\u5931\u8D25\u3002",e.style.color="var(--error)",e.classList.remove("hidden"))})}function sg(){var e=document.getElementById("cert-key-file"),t=document.getElementById("cert-cert-file"),n=document.getElementById("cert-message");if(n&&(n.classList.add("hidden"),n.textContent=""),!e||!e.files||!e.files[0]||!t||!t.files||!t.files[0]){n&&(n.textContent="\u8BF7\u9009\u62E9\u79C1\u94A5\u548C\u8BC1\u4E66\u6587\u4EF6\u3002",n.style.color="var(--error)",n.classList.remove("hidden"));return}var i=new FileReader;i.onload=function(){var a=i.result,u=new FileReader;u.onload=function(){var o=u.result;fetch("/api/settings/upload-cert",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({key:a,cert:o})}).then(function(s){return s.json()}).then(function(s){if(n){if(s.error)n.textContent=s.error,n.style.color="var(--error)";else{n.textContent="\u8BC1\u4E66\u5DF2\u4E0A\u4F20\uFF0C\u91CD\u542F\u540E\u751F\u6548\u3002",n.style.color="var(--success)";var l=document.getElementById("cert-status");l&&(l.textContent="\u5DF2\u5B89\u88C5 SSL \u8BC1\u4E66",l.style.color="var(--success)")}n.classList.remove("hidden")}}).catch(function(){n&&(n.textContent="\u4E0A\u4F20\u5931\u8D25\u3002",n.style.color="var(--error)",n.classList.remove("hidden"))})},u.readAsText(t.files[0])},i.readAsText(e.files[0])}function Ql(){var e=document.getElementById("settings-latest-version"),t=document.getElementById("do-update-button"),n=document.getElementById("update-message");e&&(e.textContent="\u68C0\u67E5\u4E2D..."),n&&n.classList.add("hidden"),t&&t.classList.add("hidden"),fetch("/api/check-update",{credentials:"same-origin"}).then(function(i){return i.json()}).then(function(i){if(i.error){e&&(e.textContent="\u68C0\u67E5\u5931\u8D25");return}var a=i.channel==="beta";if(e&&(e.textContent=i.latest||(a?"beta \u672A\u53D1\u5E03":"-")),!i.latest){n&&(n.textContent=a?"\u65E0\u6CD5\u8BFB\u53D6 npm beta \u7248\u672C\u3002":"\u65E0\u6CD5\u8FDE\u63A5\u5230 npm registry\u3002",n.style.color="var(--error)",n.classList.remove("hidden"));return}i.updateAvailable&&t&&(t.textContent=a?"\u66F4\u65B0\u5230 Beta":"\u66F4\u65B0\u5230\u6700\u65B0\u7248",t.classList.remove("hidden")),!i.updateAvailable&&n&&(n.textContent=a?"\u5DF2\u662F\u6700\u65B0 Beta \u7248\u672C\u3002":"\u5DF2\u662F\u6700\u65B0\u7248\u672C\u3002",n.style.color="var(--success)",n.classList.remove("hidden"))}).catch(function(){e&&(e.textContent="\u68C0\u67E5\u5931\u8D25")})}function lg(){var e=document.getElementById("update-message"),t=document.getElementById("do-update-button");if(t){var n=t.textContent||"\u66F4\u65B0\u5230\u6700\u65B0\u7248",i=function(){t.disabled=!1,t.textContent=n,t.removeAttribute("aria-busy")};t.disabled=!0,t.textContent="\u66F4\u65B0\u4E2D...",t.setAttribute("aria-busy","true"),e&&(e.textContent="\u6B63\u5728\u66F4\u65B0\uFF0C\u8BF7\u7A0D\u5019...",e.style.color="var(--text-secondary)",e.classList.remove("hidden")),fetch("/api/update",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin"}).then(function(a){return a.json()}).then(function(a){if(a.error){e&&(e.textContent=a.error,e.style.color="var(--error)",e.classList.remove("hidden")),i();return}if(e&&(e.textContent=(a.message||"\u66F4\u65B0\u5B8C\u6210")+"\uFF0C\u6B63\u5728\u91CD\u542F\u670D\u52A1\u2026",e.style.color="var(--success)",e.classList.remove("hidden")),t.removeAttribute("aria-busy"),t.classList.add("hidden"),a.detachedUpdate)ln();else if(a.restartRequired!==!1)ys(null,e);else{var u=document.getElementById("do-restart-button");u&&u.classList.remove("hidden")}}).catch(function(){e&&(e.textContent="\u66F4\u65B0\u5931\u8D25\u3002",e.style.color="var(--error)",e.classList.remove("hidden")),i()})}}function dg(){var e=document.getElementById("do-restart-button"),t=document.getElementById("update-message");ys(e,t)}function cg(){fetch("/api/auto-update",{credentials:"same-origin"}).then(function(e){return e.json()}).then(function(e){if(e.apk)return fetch("/api/android-apk-update?currentVersion="+encodeURIComponent(In),{credentials:"same-origin"}).then(function(t){return t.json()}).then(function(t){if(!(!t.updateAvailable||!t.downloadUrl))try{WandNative.downloadUpdate(t.downloadUrl,t.fileName||"wand-update.apk",t.source||"local")}catch{}})}).catch(function(){})}function fg(){sn&&fetch("/api/auto-update",{credentials:"same-origin"}).then(function(e){return e.json()}).then(function(e){if(e.dmg)return fetch("/api/macos-dmg-update?currentVersion="+encodeURIComponent(sn),{credentials:"same-origin"}).then(function(t){return t.json()}).then(function(t){if(!(!t.updateAvailable||!t.downloadUrl))try{WandNative.downloadUpdate(t.downloadUrl,t.fileName||"wand-update.dmg",t.source||"local")}catch{}})}).catch(function(){})}function Su(e,t){var n={};n[e]=t,fetch("/api/auto-update",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(n)}).then(function(i){return i.json()}).then(function(i){var a=document.getElementById("auto-update-web-toggle"),u=document.getElementById("auto-update-apk-toggle"),o=document.getElementById("auto-update-dmg-toggle");a&&(a.checked=!!i.web),u&&(u.checked=!!i.apk),o&&(o.checked=!!i.dmg)}).catch(function(){var i=document.getElementById("auto-update-"+e+"-toggle");i&&(i.checked=!t)})}function pg(e){fetch("/api/update-channel",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({channel:e})}).then(function(t){return t.json()}).then(function(t){var n=document.getElementById("beta-channel-toggle");n&&(n.checked=t.channel==="beta"),Ql()}).catch(function(){var t=document.getElementById("beta-channel-toggle");t&&(t.checked=e!=="beta")})}function $l(e){for(var t=document.querySelectorAll(".settings-app-icon-option"),n=0;n<t.length;n++){var i=t[n].getAttribute("data-icon")===e;t[n].classList.toggle("selected",i),t[n].setAttribute("aria-pressed",i?"true":"false")}}function bn(){var e=document.getElementById("notification-permission-status"),t=document.getElementById("notification-request-btn"),n=document.getElementById("notification-reset-btn"),i=document.getElementById("notification-test-message");if(e){var a=bi();if(a===null){if(typeof Notification>"u"){e.textContent="\u4E0D\u652F\u6301",e.style.color="var(--fg-muted)",t&&t.classList.add("hidden"),n&&n.classList.add("hidden");return}a=Notification.permission}a==="granted"?(e.textContent="\u5DF2\u6388\u6743 \u2713",e.style.color="var(--success)",t&&t.classList.add("hidden"),n&&n.classList.add("hidden")):a==="denied"?(e.textContent="\u5DF2\u62D2\u7EDD",e.style.color="var(--danger)",t&&t.classList.add("hidden"),n&&n.classList.remove("hidden")):(e.textContent="\u672A\u6388\u6743",e.style.color="var(--warning)",t&&t.classList.remove("hidden"),n&&n.classList.remove("hidden"))}}function vg(){var e=document.getElementById("notification-test-message");if(We){window._onNativePermissionResult=function(t){bn(),e&&(t==="granted"?(e.textContent="\u2713 \u5DF2\u6388\u6743",e.style.color="var(--success)"):(e.textContent="\u2717 \u672A\u6388\u6743\uFF0C\u8BF7\u5728\u7CFB\u7EDF\u8BBE\u7F6E\u4E2D\u5F00\u542F Wand \u7684\u901A\u77E5\u6743\u9650",e.style.color="var(--danger)"),e.classList.remove("hidden")),delete window._onNativePermissionResult};try{WandNative.requestPermission()}catch{}return}typeof Notification>"u"||Notification.requestPermission().then(function(t){if(bn(),t==="granted")e&&(e.textContent="\u2713 \u5DF2\u6388\u6743",e.style.color="var(--success)",e.classList.remove("hidden"));else if(t==="denied"&&e){var n=location.origin;e.innerHTML='\u6D4F\u89C8\u5668\u5DF2\u62E6\u622A\u6388\u6743\u5F39\u7A97\uFF0C\u8BF7\u624B\u52A8\u91CD\u7F6E\uFF1A<br><span style="display:inline-flex;align-items:center;gap:4px;margin:4px 0">\u2460 \u70B9\u51FB\u5730\u5740\u680F\u5DE6\u4FA7\u7684 <span style="display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;border:1px solid var(--border);font-size:11px;vertical-align:middle">i</span> \u6216\u9501\u56FE\u6807</span><br>\u2461 \u627E\u5230\u300C\u901A\u77E5\u300D\u2192 \u6539\u4E3A\u300C\u5141\u8BB8\u300D<br>\u2462 \u5237\u65B0\u9875\u9762\u5373\u53EF',e.style.color="var(--fg-muted)",e.classList.remove("hidden")}})}function Xl(){var e=document.getElementById("notification-test-delay-btn");e&&(e.disabled=!1,e.textContent="10 \u79D2\u540E\u53D1\u9001")}function mg(){var e=document.getElementById("notification-test-message");r.delayedNotificationTimer&&(clearTimeout(r.delayedNotificationTimer),r.delayedNotificationTimer=null);var t=document.getElementById("notification-test-delay-btn");t&&(t.disabled=!0,t.textContent="\u5DF2\u5B89\u6392\uFF0810s\uFF09"),e&&(e.innerHTML="\u5DF2\u5B89\u6392 10 \u79D2\u540E\u53D1\u9001\u6D4B\u8BD5\u901A\u77E5\uFF0C\u8BF7\u5207\u5230\u540E\u53F0\u7B49\u5F85\u3002",e.style.color="var(--text-secondary)",e.classList.remove("hidden")),r.delayedNotificationTimer=setTimeout(function(){r.delayedNotificationTimer=null,Xl(),Zl()},1e4)}function Zl(){var e=document.getElementById("notification-test-message"),t=[];r.delayedNotificationTimer&&(clearTimeout(r.delayedNotificationTimer),r.delayedNotificationTimer=null,Xl());var n=Zf();t.push(n?"\u2713 \u63D0\u793A\u97F3":"\u2717 \u63D0\u793A\u97F3\uFF08\u65E0\u6CD5\u64AD\u653E\uFF09");var i=r.notifBubble;if(qa({title:"\u6D4B\u8BD5\u901A\u77E5",body:"\u8FD9\u662F\u4E00\u6761\u6D4B\u8BD5\u901A\u77E5\u3002",type:"info",icon:"\u266A",duration:5e3,playSound:!1}),t.push(i?"\u2713 \u5E94\u7528\u5185\u6C14\u6CE1":"\u2013 \u5E94\u7528\u5185\u6C14\u6CE1\uFF08\u5DF2\u5173\u95ED\uFF09"),We){var a=bi();if(a==="granted")try{WandNative.sendNotification("Wand \u6D4B\u8BD5\u901A\u77E5","\u7CFB\u7EDF\u901A\u77E5\u5DF2\u6B63\u5E38\u5DE5\u4F5C\u3002","wand-test"),t.push("\u2713 \u7CFB\u7EDF\u901A\u77E5")}catch{t.push("\u2717 \u7CFB\u7EDF\u901A\u77E5\uFF08\u53D1\u9001\u5931\u8D25\uFF09")}else if(a==="denied")t.push("\u2717 \u7CFB\u7EDF\u901A\u77E5\uFF08\u5DF2\u62D2\u7EDD\uFF0C\u8BF7\u5728\u7CFB\u7EDF\u8BBE\u7F6E\u4E2D\u5F00\u542F\uFF09");else{window._onNativePermissionResult=function(s){if(bn(),s==="granted")try{WandNative.sendNotification("Wand \u6D4B\u8BD5\u901A\u77E5","\u7CFB\u7EDF\u901A\u77E5\u5DF2\u6B63\u5E38\u5DE5\u4F5C\u3002","wand-test"),t.push("\u2713 \u7CFB\u7EDF\u901A\u77E5\uFF08\u5DF2\u6388\u6743\uFF09")}catch{t.push("\u2717 \u7CFB\u7EDF\u901A\u77E5\uFF08\u53D1\u9001\u5931\u8D25\uFF09")}else t.push("\u2717 \u7CFB\u7EDF\u901A\u77E5\uFF08\u672A\u6388\u6743\uFF09");rr(e,t),delete window._onNativePermissionResult};try{WandNative.requestPermission()}catch{}return}rr(e,t);return}if(typeof Notification>"u"){t.push("\u2013 \u7CFB\u7EDF\u901A\u77E5\uFF08\u4E0D\u652F\u6301\uFF09"),rr(e,t);return}var u=Notification.permission;if(u==="granted"){try{var o=new Notification("Wand \u6D4B\u8BD5\u901A\u77E5",{body:"\u7CFB\u7EDF\u901A\u77E5\u5DF2\u6B63\u5E38\u5DE5\u4F5C\u3002",icon:"/favicon.ico",tag:"wand-test"});setTimeout(function(){o.close()},5e3),t.push("\u2713 \u7CFB\u7EDF\u901A\u77E5")}catch{t.push("\u2717 \u7CFB\u7EDF\u901A\u77E5\uFF08\u53D1\u9001\u5931\u8D25\uFF0C\u53EF\u80FD\u9700\u8981 HTTPS\uFF09")}rr(e,t)}else u==="denied"?(t.push("\u2717 \u7CFB\u7EDF\u901A\u77E5\uFF08\u5DF2\u62D2\u7EDD\uFF09"),rr(e,t)):Notification.requestPermission().then(function(s){bn(),s==="granted"?t.push("\u2713 \u7CFB\u7EDF\u901A\u77E5\uFF08\u5DF2\u6388\u6743\uFF09"):t.push("\u2717 \u7CFB\u7EDF\u901A\u77E5\uFF08\u672A\u6388\u6743\uFF09"),rr(e,t)})}function rr(e,t){if(e){e.innerHTML=t.map(function(i){return p(i)}).join("<br>");var n=t.every(function(i){return i.indexOf("\u2713")===0||i.indexOf("\u2013")===0});e.style.color=n?"var(--success)":"var(--warning)",e.classList.remove("hidden")}}function lt(e){if(!e||typeof e!="object"||!r.terminal)return e;try{typeof r.terminal.remeasure=="function"&&r.terminal.remeasure()}catch{}var t=r.terminal.cols,n=r.terminal.rows;return typeof t=="number"&&typeof n=="number"&&Number.isFinite(t)&&Number.isFinite(n)&&t>0&&n>0&&(e.cols=t,e.rows=n),e}function ed(){return r.terminal&&r.terminal.cols?Promise.resolve():new Promise(function(e){var t=!1,n=function(){t||(t=!0,e())},i=setTimeout(n,2e3);try{Yn()}catch{}requestAnimationFrame(function(){requestAnimationFrame(function(){r.terminal&&r.terminal.cols&&(clearTimeout(i),n())})})})}function td(){var e=rt(),t=$e(),n=mt(e,r.config&&r.config.defaultMode?r.config.defaultMode:"default");r.preferredCommand=e,r.chatMode=mt(e,r.chatMode),ed().then(function(){return fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({command:e,provider:e,cwd:t,mode:n}))})}).then(function(i){return i.json()}).then(function(i){if(i.error){A(i.error,"error");return}return r.selectedId=i.id,he(),r.drafts[i.id]="",wt(),Ot()}).then(function(){Pt(!0)}).catch(function(){A("\u65E0\u6CD5\u542F\u52A8\u4F1A\u8BDD\u3002","error")})}var Kr=!1;function gg(){if(!Kr){var e=document.getElementById("cwd"),t=document.getElementById("modal-error"),n=rt(),i=r.sessionCreateKind||"structured",a=r.sessionCreateWorktree===!0;yi(t);var u=$e(),o=(e?e.value.trim():"")||u,s=mt(n,r.modeValue);if(Gi({defaultProvider:n,defaultSessionKind:i,defaultMode:s}),i==="structured"){hg(o,s,a,t);return}yg(n,o,s,a,t)}}function hg(e,t,n,i){var a=r.sessionTool==="codex"?"codex":"claude";return Kr=!0,r.modeValue=t,r.chatMode=t,r.sessionTool=a,r.preferredCommand=a,Hi(),Xn(st()),Vl(void 0,e,t,n).then(function(u){return Gt(e),hn(),_t(),u}).then(function(){Pt(!0)}).catch(function(u){He(i,u&&u.message||"\u65E0\u6CD5\u542F\u52A8\u7ED3\u6784\u5316\u4F1A\u8BDD\uFF0C\u8BF7\u786E\u8BA4 Claude \u5DF2\u6B63\u786E\u5B89\u88C5\u3002")}).finally(function(){Kr=!1})}function yg(e,t,n,i,a){Kr=!0,r.modeValue=n,r.chatMode=n,r.sessionTool=e,r.preferredCommand=e,Hi(),ed().then(function(){return fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(lt({command:e,provider:e,cwd:t,mode:n,worktreeEnabled:i}))})}).then(function(u){return u.json()}).then(function(u){if(u.error){He(a,u.error);return}return r.selectedId=u.id,he(),Gt(t),r.drafts[u.id]="",wt(),hn(),_t(),Ot()}).then(function(){r.selectedId?Ht(r.selectedId):Pt(!0)}).catch(function(){He(a,e==="codex"?"\u65E0\u6CD5\u542F\u52A8 Codex \u4F1A\u8BDD\uFF0C\u8BF7\u786E\u8BA4 codex \u5DF2\u6B63\u786E\u5B89\u88C5\u5E76\u53EF\u5728\u7EC8\u7AEF\u4E2D\u6267\u884C\u3002":"\u65E0\u6CD5\u542F\u52A8 Claude \u4F1A\u8BDD\uFF0C\u8BF7\u786E\u8BA4 Claude \u5DF2\u6B63\u786E\u5B89\u88C5\u3002")}).finally(function(){Kr=!1})}function bg(){var e=document.getElementById("blank-chat-cwd");e&&(e.addEventListener("click",nd),e.addEventListener("keydown",function(t){(t.key==="Enter"||t.key===" ")&&(t.preventDefault(),nd())}),document.addEventListener("click",function(t){var n=document.getElementById("blank-chat-cwd-dropdown");if(!(!n||n.classList.contains("hidden"))&&!t.target.closest(".blank-chat-cwd-wrap")){n.classList.add("hidden");var i=document.getElementById("blank-chat-cwd-arrow");i&&(i.textContent="\u25BC")}}))}function nd(){var e=document.getElementById("blank-chat-cwd-dropdown"),t=document.getElementById("blank-chat-cwd-arrow");if(e){var n=e.classList.contains("hidden");n?(Eg(e),e.classList.remove("hidden"),t&&(t.textContent="\u25B2")):(e.classList.add("hidden"),t&&(t.textContent="\u25BC"))}}function Eg(e){var t=an();e.innerHTML='<div class="blank-chat-cwd-loading">\u52A0\u8F7D\u4E2D...</div>',Da(function(n){var i="",a=r.workingDir||t;if(i+='<div class="blank-chat-cwd-item'+(a===t?" active":"")+'" data-path="'+p(t)+'"><span class="blank-chat-cwd-item-label">\u9ED8\u8BA4</span>'+gt(t,"blank-chat-cwd-item-path")+"</div>",n.length){var u={};u[t]=!0,n.forEach(function(o){u[o.path]||(u[o.path]=!0,i+='<div class="blank-chat-cwd-item'+(a===o.path?" active":"")+'" data-path="'+p(o.path)+'">'+gt(o.path,"blank-chat-cwd-item-path")+"</div>")})}e.innerHTML=i,jt(e),e.querySelectorAll(".blank-chat-cwd-item").forEach(function(o){o.addEventListener("click",function(s){s.stopPropagation();var l=o.dataset.path;r.workingDir=l;try{localStorage.setItem("wand-working-dir",l)}catch{}var d=document.getElementById("blank-chat-cwd-path");Hu(d,l),e.classList.add("hidden");var f=document.getElementById("blank-chat-cwd-arrow");f&&(f.textContent="\u25BC");var c=document.getElementById("folder-picker-input");c&&(c.value=l)})})})}function Fg(){var e=document.getElementById("recent-paths-bubbles");e&&Da(function(t){if(!t.length){e.innerHTML="";return}e.innerHTML=t.map(function(n){return'<button class="recent-path-bubble" data-path="'+p(n.path)+'" title="'+p(n.path)+'">'+gt(n.path,"recent-path-bubble-path")+"</button>"}).join(""),jt(e),e.querySelectorAll(".recent-path-bubble").forEach(function(n){n.addEventListener("click",function(){var i=document.getElementById("cwd");i&&(i.value=n.dataset.path||"",r.cwdValue=n.dataset.path||"")})})})}function rd(){r.suggestionTimer&&clearTimeout(r.suggestionTimer),r.suggestionTimer=setTimeout(wg,120)}function wg(){var e=document.getElementById("session-modal");if(e&&e.classList.contains("hidden")){ir();return}var t=document.getElementById("cwd");t&&fetch("/api/path-suggestions?q="+encodeURIComponent(t.value.trim()),{credentials:"same-origin"}).then(function(n){return n.json()}).then(Cg).catch(ir)}function Cg(e){var t=document.getElementById("cwd-suggestions");if(!t||!e.length){ir();return}t.innerHTML=e.map(function(n){return'<button class="suggestion-item" data-path="'+p(n.path)+'"><strong>'+p(n.name)+"</strong><small>"+gt(n.path,"suggestion-item-path")+"</small></button>"}).join(""),jt(t),t.querySelectorAll(".suggestion-item").forEach(function(n){n.addEventListener("click",function(){document.getElementById("cwd").value=n.dataset.path||"",r.cwdValue=n.dataset.path||"",ir()})}),t.classList.remove("hidden")}function ir(){var e=document.getElementById("cwd-suggestions");e&&(e.classList.add("hidden"),e.innerHTML="")}function Bg(e){if(!e.isComposing){if(Ps(e)){Ya(e);return}if(e.key==="Enter"){if(e.shiftKey){e.preventDefault();var t=document.getElementById("input-box");if(t){var n=t.selectionStart||0,i=t.value,a=i.slice(0,n)+`
49
+ `+i.slice(n);t.value=a,t.selectionStart=n+1,t.selectionEnd=n+1,Ze(a,!0),Ct(t)}return}e.preventDefault();var u=!!(e.metaKey||e.ctrlKey);ks(u?{interrupt:!0}:void 0);return}if(e.key==="Backspace"){setTimeout(function(){var m=document.getElementById("input-box");m&&Ze(m.value,!0)},0);return}if(e.key==="Tab"){e.preventDefault();var t=document.getElementById("input-box");if(t){var n=t.selectionStart||0,i=t.value,a=i.slice(0,n)+" "+i.slice(n);t.value=a,Ze(a,!0)}return}if(e.key==="Escape"){e.preventDefault();var o=st();ue(o)?o&&o.structuredState&&o.structuredState.inFlight&&Ga():vt(Tr("escape"),"escape");return}if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="c"){var s=document.getElementById("input-box"),l=s&&s.selectionStart!==s.selectionEnd||Di();if(l)return;var d=st();if(ue(d)){e.preventDefault(),d&&d.structuredState&&d.structuredState.inFlight&&Ga();return}e.preventDefault(),vt(Tr("ctrl_c"),"ctrl_c");return}if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="d"){var f=document.getElementById("input-box"),c=f&&f.selectionStart!==f.selectionEnd||Di();if(c)return;var v=st();if(ue(v)){e.preventDefault();return}e.preventDefault(),vt(Tr("ctrl_d"),"ctrl_d");return}if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="l"){e.preventDefault();var h=st();if(ue(h))return;vt(Tr("ctrl_l"),"ctrl_l");return}if(!((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="a")&&!((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="v")){if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="x"){var t=document.getElementById("input-box"),g=t&&t.selectionStart!==t.selectionEnd;if(g)return;e.preventDefault(),vt("","ctrl_x");return}e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&setTimeout(function(){var m=document.getElementById("input-box");m&&Ze(m.value)},0)}}}var Dg=10*1024*1024;function kg(e){return e<1024?e+" B":e<1024*1024?(e/1024).toFixed(1)+" KB":(e/(1024*1024)).toFixed(1)+" MB"}function Ag(e){return/^image\/(png|jpe?g|gif|webp|bmp|svg\+xml)/.test(e)}function Iu(e){if(e){if(e.size>Dg){A("\u6587\u4EF6\u8FC7\u5927\uFF08\u4E0A\u9650 10 MB\uFF09: "+e.name,"error");return}var t={file:e,name:e.name,size:e.size,previewUrl:null};Ag(e.type)&&(t.previewUrl=URL.createObjectURL(e)),r.pendingAttachments.push(t),Tu()}}function xg(e){var t=r.pendingAttachments.splice(e,1);t.length&&t[0].previewUrl&&URL.revokeObjectURL(t[0].previewUrl),Tu()}function Sg(){r.pendingAttachments.forEach(function(e){e.previewUrl&&URL.revokeObjectURL(e.previewUrl)}),r.pendingAttachments=[],Tu()}function Tu(){var e=document.getElementById("attachment-preview");if(e){var t=r.pendingAttachments;if(t.length===0){e.classList.add("hidden"),e.innerHTML="";return}e.classList.remove("hidden");for(var n="",i=0;i<t.length;i++){var a=t[i],u=a.previewUrl?'<img src="'+p(a.previewUrl)+'" alt="">':'<span class="att-icon">'+V("file",{size:13,strokeWidth:1.7})+"</span>";n+='<span class="attachment-pill" data-index="'+i+'">'+u+'<span class="att-name" title="'+p(a.name)+'">'+p(a.name)+'</span><span class="att-size">'+kg(a.size)+'</span><button class="att-remove" data-index="'+i+'" title="\u79FB\u9664">\xD7</button></span>'}e.innerHTML=n,e.querySelectorAll(".att-remove").forEach(function(o){o.addEventListener("click",function(s){s.preventDefault(),s.stopPropagation(),xg(parseInt(o.getAttribute("data-index"),10))})})}}function Ig(e){if(!r.pendingAttachments.length)return Promise.resolve([]);var t=new FormData;return r.pendingAttachments.forEach(function(n){t.append("files",n.file,n.name)}),fetch("/api/sessions/"+encodeURIComponent(e)+"/upload",{method:"POST",body:t,credentials:"same-origin"}).then(function(n){return n.ok?n.json():n.json().then(function(i){throw new Error(i.error||"\u4E0A\u4F20\u5931\u8D25")})}).then(function(n){return n.files||[]})}function Tg(e){if(!e||!e.length)return"";var t=e.map(function(n){return n.savedPath});return`[\u9644\u4EF6\u5DF2\u4E0A\u4F20\uFF0C\u8BF7\u67E5\u770B\u4EE5\u4E0B\u6587\u4EF6:
50
50
  `+t.join(`
51
51
  `)+`]
52
52
 
53
- `}function nd(e){if(!r.terminalInteractive||!e||document.documentElement.classList.contains("is-wand-embed-terminal"))return!1;var t=e.value||"";return t?(vt(t,"interactive_text").catch(function(){}),e.value="",wt(e),et("",!0),!0):!1}function Sg(e){var t=e.clipboardData&&e.clipboardData.items;if(t&&!r.terminalInteractive){for(var n=0;n<t.length;n++)if(t[n].type.indexOf("image/")===0){e.preventDefault();var i=t[n].getAsFile();i&&xu(i);return}}var a=e.clipboardData&&e.clipboardData.getData("text");if(a){if(e.preventDefault(),r.terminalInteractive){vt(a,"paste").catch(function(){});return}var u=document.getElementById("input-box");if(u){var o=u.selectionStart||0,s=u.selectionEnd||0,l=u.value,d=l.slice(0,o)+a+l.slice(s);u.value=d,et(d)}}}function bh(e){vt(e),et(Ig()+e)}function Ig(){if(r.selectedId){if(r.drafts[r.selectedId]!==void 0)return r.drafts[r.selectedId];try{var e=localStorage.getItem("wand-draft-"+r.selectedId);if(e)return e}catch{}}return""}function et(e,t){if(r.selectedId){r.drafts[r.selectedId]=e;try{localStorage.setItem("wand-draft-"+r.selectedId,e)}catch{}if(!t){var n=document.getElementById("input-box");n&&(n.value=e)}}}var Iu=!1;function Tg(){if(!Iu){var e=document.getElementById("input-box"),t=document.getElementById("prompt-optimize-btn"),n=document.querySelector(".input-composer");if(e){var i=(e.value||"").trim();if(!i){typeof A=="function"&&A("\u8BF7\u5148\u8F93\u5165\u8981\u4F18\u5316\u7684\u5185\u5BB9\u3002","info"),e.focus();return}Iu=!0,t&&(t.classList.add("is-loading"),t.disabled=!0,t.setAttribute("title","\u6B63\u5728\u4F18\u5316\u2026")),n&&n.classList.add("is-optimizing"),e.setAttribute("aria-busy","true");var a=e.readOnly;e.readOnly=!0;var u={text:i};r&&r.selectedId&&(u.sessionId=r.selectedId),fetch("/api/optimize-prompt",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify(u)}).then(function(o){return o.json().then(function(s){return{ok:o.ok,data:s}})}).then(function(o){if(!o.ok)throw new Error(o.data&&o.data.error||"\u63D0\u793A\u8BCD\u4F18\u5316\u5931\u8D25\u3002");var s=o.data&&o.data.optimized||"";if(!s)throw new Error("Claude \u8FD4\u56DE\u4E3A\u7A7A\u3002");Lg(e,s)}).catch(function(o){typeof A=="function"&&A(o&&o.message||"\u63D0\u793A\u8BCD\u4F18\u5316\u5931\u8D25\u3002","error"),t&&(t.classList.remove("is-loading"),t.classList.add("is-shake"),setTimeout(function(){t&&t.classList.remove("is-shake")},400))}).finally(function(){Iu=!1,t&&(t.classList.remove("is-loading"),t.disabled=!1,t.setAttribute("title","\u63D0\u793A\u8BCD\u4F18\u5316\uFF08AI\uFF09")),n&&n.classList.remove("is-optimizing"),e.removeAttribute("aria-busy"),e.readOnly=a})}}}function Lg(e,t){if(!e)return;var n=Array.from(t),i=n.length;if(i===0){e.value="",et("",!0),wt(e);return}var a=Math.min(700,Math.max(220,i*8)),u=Math.min(i,60),o=Math.ceil(i/u),s=a/u,l=0;e.value="",wt(e);function d(){if(l=Math.min(i,l+o),e.value=n.slice(0,l).join(""),wt(e),l<i)setTimeout(d,s);else{et(t,!0);try{e.setSelectionRange(t.length,t.length)}catch{}}}d()}function Gi(e){var t=document.querySelector(".input-composer");if(t){var n=e||document.getElementById("input-box"),i=!!(n&&n.value&&n.value.length>0);t.classList.toggle("has-text",i)}}r._statusBarTimerId=null,r._statusBarStartTime=0;var Jr=null,Qi=0;function Tu(e){if(!e)return{active:!1};if(e.archived)return{active:!1};var t=!!e.permissionBlocked,n=!!(ue(e)&&e.structuredState&&e.structuredState.inFlight),i=!ue(e)&&e.status==="running";return{active:n||i||t,inFlight:n,ptyRunning:i,permissionBlocked:t}}function Mg(e){var t=Math.max(0,Math.floor(e/1e3));if(t<60)return t+"s";var n=Math.floor(t/60),i=t%60;if(n<60)return n+"m"+(i?" "+i+"s":"");var a=Math.floor(n/60),u=n%60;return a+"h"+(u?" "+u+"m":"")}function Lu(e){var t=Tu(e),n=document.querySelector(".main-header-row"),i=n?n.querySelector(".session-status-pill"):null,a=document.querySelector(".chat-messages");if(n&&(n.classList.toggle("is-running",t.active),n.classList.toggle("is-permission-blocked",t.permissionBlocked)),i){var u=i.querySelector(".session-status-elapsed");if(t.inFlight){Qi||(Qi=r._statusBarStartTime>0?r._statusBarStartTime:Date.now());var o=Mg(Date.now()-Qi);u||(u=document.createElement("span"),u.className="session-status-elapsed",i.appendChild(u)),u.textContent=o}else Qi=0,u&&u.remove()}t.active?Jr||(Jr=setInterval(function(){var s=r.sessions.find(function(l){return l.id===r.selectedId});Lu(s)},1e3)):Jr&&(clearInterval(Jr),Jr=null)}function Mu(e,t){Lu(t);var n=document.querySelector(".composer-top-row"),i=document.querySelector(".structured-status-bar"),a=document.querySelector(".input-composer");if(!t||!ue(t)){i&&i.remove(),a&&a.classList.remove("in-flight"),clearInterval(r._statusBarTimerId),r._statusBarTimerId=null;return}var u=t.structuredState&&t.structuredState.inFlight;if(u){if(r._statusBarTimerId||(r._statusBarStartTime=Date.now()),a&&a.classList.add("in-flight"),!i&&n){var o=document.createElement("div");o.className="structured-status-bar",o.innerHTML='<span class="status-bar-dot"></span><span class="status-bar-label">\u56DE\u590D\u4E2D</span><span class="status-bar-timer">0.0s</span>',n.appendChild(o),i=o}else if(i&&i.classList.contains("completed")){i.classList.remove("completed"),i.style.animation="none",i.querySelector(".status-bar-label").textContent="\u56DE\u590D\u4E2D";var s=i.querySelector(".status-bar-dot");s&&(s.style.display=""),r._statusBarStartTime=Date.now()}r._statusBarTimerId||(r._statusBarTimerId=setInterval(function(){var d=document.querySelector(".structured-status-bar:not(.completed)");if(!d){clearInterval(r._statusBarTimerId),r._statusBarTimerId=null;return}var f=((Date.now()-r._statusBarStartTime)/1e3).toFixed(1),c=d.querySelector(".status-bar-timer");c&&(c.textContent=f+"s")},100))}else if(clearInterval(r._statusBarTimerId),r._statusBarTimerId=null,a&&a.classList.remove("in-flight"),i&&!i.classList.contains("completed")){var l=r._statusBarStartTime?((Date.now()-r._statusBarStartTime)/1e3).toFixed(1):"0.0";i.classList.add("completed"),i.querySelector(".status-bar-label").textContent="\u5B8C\u6210",i.querySelector(".status-bar-timer").textContent=l+"s";var s=i.querySelector(".status-bar-dot");s&&(s.style.display="none"),r._statusBarStartTime=0,setTimeout(function(){i.parentNode&&i.remove()},3e3)}}function p(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function mt(e,t,n){var i=String(e||"");return'<span class="'+t+' tail-marquee-path" title="'+p(i)+'"'+(n||"")+'><span class="tail-marquee-path-inner">'+p(i)+"</span></span>"}var qg=/\.(png|jpe?g|gif|webp|svg|avif|bmp|ico|heic|heif)$/i;function qu(e){if(typeof e!="string")return!1;var t=e.trim().split(/[?#]/)[0];return qg.test(t)}function ir(e){if(e){var t=function(){try{var n=e.firstElementChild&&e.firstElementChild.classList&&e.firstElementChild.classList.contains("tail-marquee-path-inner")?e.firstElementChild:null;if(n){var i=Math.max(0,n.scrollWidth-e.clientWidth);e.classList.toggle("is-overflowing",i>1),e.style.setProperty("--tail-marquee-shift",i+"px");var a=Math.max(4.8,i/18);e.style.setProperty("--tail-marquee-duration",Math.max(6.8,a/.68)+"s");return}e.scrollWidth>e.clientWidth&&(e.scrollLeft=e.scrollWidth)}catch{}};t(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(t)}}function jt(e){var t=e||document;!t||typeof t.querySelectorAll!="function"||t.querySelectorAll(".tail-marquee-path").forEach(function(n){ir(n)})}function Ou(e,t){if(e){var n=String(t||""),i=e.querySelector&&e.querySelector(".tail-marquee-path-inner");i?i.textContent=n:e.textContent=n,e.setAttribute&&e.setAttribute("title",n),ir(e)}}function Og(e){if(e){var t=function(){try{if(typeof e.setSelectionRange=="function"&&e.value!=null){var n=e.value.length;try{e.setSelectionRange(n,n)}catch{}}e.scrollWidth>e.clientWidth&&(e.scrollLeft=e.scrollWidth)}catch{}};t(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(t)}}(function(){try{var e=navigator&&navigator.userAgent||"";/WandApp\//.test(e)&&document.documentElement.classList.add("is-wand-app"),/WandPlatform\/iOS/.test(e)&&document.documentElement.classList.add("is-wand-ios"),/WandPlatform\/Android/.test(e)&&document.documentElement.classList.add("is-wand-android")}catch{}try{const t=new URL(window.location.href).searchParams;t.get("embed")==="terminal"&&(document.documentElement.classList.add("is-wand-embed-terminal"),t.get("nativeInput")==="1"&&document.documentElement.classList.add("is-wand-native-input"))}catch{}try{window.__wandNativeBackHooked=!0}catch{}})()})();
53
+ `}function id(e){if(!r.terminalInteractive||!e||document.documentElement.classList.contains("is-wand-embed-terminal"))return!1;var t=e.value||"";return t?(vt(t,"interactive_text").catch(function(){}),e.value="",Ct(e),Ze("",!0),!0):!1}function Lg(e){var t=e.clipboardData&&e.clipboardData.items;if(t&&!r.terminalInteractive){for(var n=0;n<t.length;n++)if(t[n].type.indexOf("image/")===0){e.preventDefault();var i=t[n].getAsFile();i&&Iu(i);return}}var a=e.clipboardData&&e.clipboardData.getData("text");if(a){if(e.preventDefault(),r.terminalInteractive){vt(a,"paste").catch(function(){});return}var u=document.getElementById("input-box");if(u){var o=u.selectionStart||0,s=u.selectionEnd||0,l=u.value,d=l.slice(0,o)+a+l.slice(s);u.value=d,Ze(d)}}}function wh(e){vt(e),Ze(Mg()+e)}function Mg(){if(r.selectedId){if(r.drafts[r.selectedId]!==void 0)return r.drafts[r.selectedId];try{var e=localStorage.getItem("wand-draft-"+r.selectedId);if(e)return e}catch{}}return""}function Ze(e,t){if(r.selectedId){r.drafts[r.selectedId]=e;try{localStorage.setItem("wand-draft-"+r.selectedId,e)}catch{}if(!t){var n=document.getElementById("input-box");n&&(n.value=e)}}}var Lu=!1;function qg(){if(!Lu){var e=document.getElementById("input-box"),t=document.getElementById("prompt-optimize-btn"),n=document.querySelector(".input-composer");if(e){var i=(e.value||"").trim();if(!i){typeof A=="function"&&A("\u8BF7\u5148\u8F93\u5165\u8981\u4F18\u5316\u7684\u5185\u5BB9\u3002","info"),e.focus();return}Lu=!0,t&&(t.classList.add("is-loading"),t.disabled=!0,t.setAttribute("title","\u6B63\u5728\u4F18\u5316\u2026")),n&&n.classList.add("is-optimizing"),e.setAttribute("aria-busy","true");var a=e.readOnly;e.readOnly=!0;var u={text:i};r&&r.selectedId&&(u.sessionId=r.selectedId),fetch("/api/optimize-prompt",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify(u)}).then(function(o){return o.json().then(function(s){return{ok:o.ok,data:s}})}).then(function(o){if(!o.ok)throw new Error(o.data&&o.data.error||"\u63D0\u793A\u8BCD\u4F18\u5316\u5931\u8D25\u3002");var s=o.data&&o.data.optimized||"";if(!s)throw new Error("Claude \u8FD4\u56DE\u4E3A\u7A7A\u3002");Pg(e,s)}).catch(function(o){typeof A=="function"&&A(o&&o.message||"\u63D0\u793A\u8BCD\u4F18\u5316\u5931\u8D25\u3002","error"),t&&(t.classList.remove("is-loading"),t.classList.add("is-shake"),setTimeout(function(){t&&t.classList.remove("is-shake")},400))}).finally(function(){Lu=!1,t&&(t.classList.remove("is-loading"),t.disabled=!1,t.setAttribute("title","\u63D0\u793A\u8BCD\u4F18\u5316\uFF08AI\uFF09")),n&&n.classList.remove("is-optimizing"),e.removeAttribute("aria-busy"),e.readOnly=a})}}}function Pg(e,t){if(!e)return;var n=Array.from(t),i=n.length;if(i===0){e.value="",Ze("",!0),Ct(e);return}var a=Math.min(700,Math.max(220,i*8)),u=Math.min(i,60),o=Math.ceil(i/u),s=a/u,l=0;e.value="",Ct(e);function d(){if(l=Math.min(i,l+o),e.value=n.slice(0,l).join(""),Ct(e),l<i)setTimeout(d,s);else{Ze(t,!0);try{e.setSelectionRange(t.length,t.length)}catch{}}}d()}function $i(e){var t=document.querySelector(".input-composer");if(t){var n=e||document.getElementById("input-box"),i=!!(n&&n.value&&n.value.length>0);t.classList.toggle("has-text",i)}}r._statusBarTimerId=null,r._statusBarStartTime=0;var Jr=null,Xi=0;function Mu(e){if(!e)return{active:!1};if(e.archived)return{active:!1};var t=!!e.permissionBlocked,n=!!(ue(e)&&e.structuredState&&e.structuredState.inFlight),i=!ue(e)&&e.status==="running";return{active:n||i||t,inFlight:n,ptyRunning:i,permissionBlocked:t}}function Og(e){var t=Math.max(0,Math.floor(e/1e3));if(t<60)return t+"s";var n=Math.floor(t/60),i=t%60;if(n<60)return n+"m"+(i?" "+i+"s":"");var a=Math.floor(n/60),u=n%60;return a+"h"+(u?" "+u+"m":"")}function qu(e){var t=Mu(e),n=document.querySelector(".main-header-row"),i=n?n.querySelector(".session-status-pill"):null,a=document.querySelector(".chat-messages");if(n&&(n.classList.toggle("is-running",t.active),n.classList.toggle("is-permission-blocked",t.permissionBlocked)),i){var u=i.querySelector(".session-status-elapsed");if(t.inFlight){Xi||(Xi=r._statusBarStartTime>0?r._statusBarStartTime:Date.now());var o=Og(Date.now()-Xi);u||(u=document.createElement("span"),u.className="session-status-elapsed",i.appendChild(u)),u.textContent=o}else Xi=0,u&&u.remove()}t.active?Jr||(Jr=setInterval(function(){var s=r.sessions.find(function(l){return l.id===r.selectedId});qu(s)},1e3)):Jr&&(clearInterval(Jr),Jr=null)}function Pu(e,t){qu(t);var n=document.querySelector(".composer-top-row"),i=document.querySelector(".structured-status-bar"),a=document.querySelector(".input-composer");if(!t||!ue(t)){i&&i.remove(),a&&a.classList.remove("in-flight"),clearInterval(r._statusBarTimerId),r._statusBarTimerId=null;return}var u=t.structuredState&&t.structuredState.inFlight;if(u){if(r._statusBarTimerId||(r._statusBarStartTime=Date.now()),a&&a.classList.add("in-flight"),!i&&n){var o=document.createElement("div");o.className="structured-status-bar",o.innerHTML='<span class="status-bar-dot"></span><span class="status-bar-label">\u56DE\u590D\u4E2D</span><span class="status-bar-timer">0.0s</span>',n.appendChild(o),i=o}else if(i&&i.classList.contains("completed")){i.classList.remove("completed"),i.style.animation="none",i.querySelector(".status-bar-label").textContent="\u56DE\u590D\u4E2D";var s=i.querySelector(".status-bar-dot");s&&(s.style.display=""),r._statusBarStartTime=Date.now()}r._statusBarTimerId||(r._statusBarTimerId=setInterval(function(){var d=document.querySelector(".structured-status-bar:not(.completed)");if(!d){clearInterval(r._statusBarTimerId),r._statusBarTimerId=null;return}var f=((Date.now()-r._statusBarStartTime)/1e3).toFixed(1),c=d.querySelector(".status-bar-timer");c&&(c.textContent=f+"s")},100))}else if(clearInterval(r._statusBarTimerId),r._statusBarTimerId=null,a&&a.classList.remove("in-flight"),i&&!i.classList.contains("completed")){var l=r._statusBarStartTime?((Date.now()-r._statusBarStartTime)/1e3).toFixed(1):"0.0";i.classList.add("completed"),i.querySelector(".status-bar-label").textContent="\u5B8C\u6210",i.querySelector(".status-bar-timer").textContent=l+"s";var s=i.querySelector(".status-bar-dot");s&&(s.style.display="none"),r._statusBarStartTime=0,setTimeout(function(){i.parentNode&&i.remove()},3e3)}}function p(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function gt(e,t,n){var i=String(e||"");return'<span class="'+t+' tail-marquee-path" title="'+p(i)+'"'+(n||"")+'><span class="tail-marquee-path-inner">'+p(i)+"</span></span>"}var Hg=/\.(png|jpe?g|gif|webp|svg|avif|bmp|ico|heic|heif)$/i;function Ou(e){if(typeof e!="string")return!1;var t=e.trim().split(/[?#]/)[0];return Hg.test(t)}function ar(e){if(e){var t=function(){try{var n=e.firstElementChild&&e.firstElementChild.classList&&e.firstElementChild.classList.contains("tail-marquee-path-inner")?e.firstElementChild:null;if(n){var i=Math.max(0,n.scrollWidth-e.clientWidth);e.classList.toggle("is-overflowing",i>1),e.style.setProperty("--tail-marquee-shift",i+"px");var a=Math.max(4.8,i/18);e.style.setProperty("--tail-marquee-duration",Math.max(6.8,a/.68)+"s");return}e.scrollWidth>e.clientWidth&&(e.scrollLeft=e.scrollWidth)}catch{}};t(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(t)}}function jt(e){var t=e||document;!t||typeof t.querySelectorAll!="function"||t.querySelectorAll(".tail-marquee-path").forEach(function(n){ar(n)})}function Hu(e,t){if(e){var n=String(t||""),i=e.querySelector&&e.querySelector(".tail-marquee-path-inner");i?i.textContent=n:e.textContent=n,e.setAttribute&&e.setAttribute("title",n),ar(e)}}function _g(e){if(e){var t=function(){try{if(typeof e.setSelectionRange=="function"&&e.value!=null){var n=e.value.length;try{e.setSelectionRange(n,n)}catch{}}e.scrollWidth>e.clientWidth&&(e.scrollLeft=e.scrollWidth)}catch{}};t(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(t)}}(function(){try{var e=navigator&&navigator.userAgent||"";/WandApp\//.test(e)&&document.documentElement.classList.add("is-wand-app"),/WandPlatform\/iOS/.test(e)&&document.documentElement.classList.add("is-wand-ios"),/WandPlatform\/Android/.test(e)&&document.documentElement.classList.add("is-wand-android")}catch{}try{const t=new URL(window.location.href).searchParams;t.get("embed")==="terminal"&&(document.documentElement.classList.add("is-wand-embed-terminal"),t.get("nativeInput")==="1"&&document.documentElement.classList.add("is-wand-native-input"))}catch{}try{window.__wandNativeBackHooked=!0}catch{}})()})();