@co0ontty/wand 1.53.2 → 1.53.3-beta.g89c8ca0

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,29 +1,29 @@
1
- "use strict";(()=>{var Dm="${escapeHtml(configPath)}",xi="wand-chat-expand-state-v1",Hr=[function(){}];(function(){try{var t=localStorage.getItem("wand-ls-schema"),r=t==null?0:parseInt(t,10);r>=0||(r=0);for(var i=r;i<Hr.length;i++)try{Hr[i]()}catch{}r<Hr.length&&localStorage.setItem("wand-ls-schema",String(Hr.length))}catch{}})();function Si(e,t){try{var r=localStorage.getItem(e);return r==="true"?!0:r==="false"?!1:t}catch{return t}}function ke(e,t){try{localStorage.setItem(e,String(!!t))}catch{}}var n={selectedId:(function(){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:[],queueBarHoverIndex:null,queueBarDrag:null,drafts:{},isSyncingInputBox:!1,loginPending:!1,loginChecked:!1,bootstrapping:!0,sessionsDrawerOpen:Si("wand-sidebar-open",!1),sidebarPinned:Si("wand-sidebar-pinned",!0),sidebarCollapsed:Si("wand-sidebar-collapsed",!1),modalOpen:!1,presetValue:"",cwdValue:"",modeValue:"managed",chatMode:"managed",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"?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,deferredPrompt:null,showInstallPrompt:!1,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,chatUnreadCount:0,chatUnreadStartIndex:-1,chatScrollThreshold:160,chatIsProgrammaticScroll:!1,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""}})()},Ii="\u4E2D\u6587",_r={\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"},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"}};function au(){var e=n.config&&typeof n.config.language=="string"?n.config.language.trim():"";if(!e)return Ii;if(_r[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 Ue(e,t){var r=au(),i=_r[r]||_r[Ii],a=i&&e in i?i[e]:null;if(a==null){var u=_r[Ii];a=u&&e in u?u[e]:e}if(t&&typeof a=="string")for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&(a=a.split("{"+s+"}").join(t[s]));return a}var Bl={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"/>',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"/>',cloud:'<path d="M17.5 19a4.5 4.5 0 1 0-1-8.9 6 6 0 0 0-11.5 1.7A4 4 0 0 0 6 19h11.5z"/>',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"/>',folderOpen:'<path d="M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2"/><path d="M3 9h18l-2 8a2 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"/>',slash:'<polyline points="4 17 10 11 4 5"/><line x1="12" y1="19" x2="20" y2="19"/>',chevronDown:'<polyline points="6 9 12 15 18 9"/>',chevronUp:'<polyline points="6 15 12 9 18 15"/>',chevronRight:'<polyline points="9 6 15 12 9 18"/>',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"/>',inbox:'<polyline points="22 13 16 13 14 16 10 16 8 13 2 13"/><path d="M5 5h14l3 8v6a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-6z"/>',zap:'<polygon points="13 2 4 14 11 14 10 22 20 9 13 9 13 2"/>',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"/>',check:'<polyline points="5 12 10 17 19 7"/>',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"/>',image:'<rect x="3" y="4" width="18" height="16" rx="2"/><circle cx="9" cy="10" r="1.5"/><polyline points="3 18 9 12 14 17 21 12"/>',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 J(e,t){var r=Bl[e];if(!r)return"";t=t||{};var i=t.size||14,a=t.strokeWidth||1.8,u=t.cls?' class="'+t.cls+'"':"",s=t.fill||"none";return"<svg"+u+' width="'+i+'" height="'+i+'" viewBox="0 0 24 24" fill="'+s+'" stroke="currentColor" stroke-width="'+a+'" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">'+r+"</svg>"}function In(){var e=document.getElementById("chat-output");if(!e)return n.chatScrollElement=null,null;var t=e.querySelector(".chat-messages");return t?(n.chatScrollElement=t,t):(n.chatScrollElement=null,null)}function Ti(e){var t=e||In();return t?Math.abs(t.scrollTop)<n.chatScrollThreshold:!0}function km(e){n.chatStickToBottom=!!e,n.chatStickToBottom&&nr({removeDivider:!0}),Ke()}function nr(e){e=e||{};var t=n.chatUnreadCount>0||n.chatUnreadStartIndex>=0;if(n.chatUnreadCount=0,n.chatUnreadStartIndex=-1,e.removeDivider!==!1){var r=In();if(r){var i=r.querySelector(".chat-unread-divider");i&&i.parentNode&&i.parentNode.removeChild(i)}}t&&Ke()}function Li(e){if(e||(e=In()),!!e){var t=e.querySelector(".chat-unread-divider");if(n.chatUnreadStartIndex<0||n.chatUnreadCount<=0){t&&t.parentNode&&t.parentNode.removeChild(t);return}for(var r=n.chatUnreadStartIndex,i=e.querySelectorAll(".chat-message"),a=null,u=0;u<i.length;u++){var s=i[u].getAttribute("data-msg-index");if(s!==null){var o=parseInt(s,10);if(!isNaN(o)&&o<r){a=i[u];break}}}var l=n.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 Ke(){var e=document.getElementById("chat-unread-bubble");if(e){var t=n.sessions.find(function(o){return o.id===n.selectedId}),r=!Ti(),i=!!t&&n.currentView==="chat"&&r;e.classList.toggle("visible",i),e.classList.toggle("has-unread",n.chatUnreadCount>0);var a=e.querySelector(".chat-unread-bubble-count");a&&(n.chatUnreadCount>0?(a.textContent=n.chatUnreadCount>99?"99+":String(n.chatUnreadCount),a.classList.add("visible")):(a.textContent="",a.classList.remove("visible")));var u=n.chatUnreadCount>0?n.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 s=document.getElementById("chat-output");s&&s.classList.toggle("has-jump-btn",i)}}function Dl(e){var t=In();if(!(!t||!t.isConnected)){n.chatIsProgrammaticScroll=!0;var r=function(){n.chatIsProgrammaticScroll=!1,n.chatStickToBottom=!0,nr({removeDivider:!0}),Ke()};if(e&&typeof t.scrollTo=="function"){t.scrollTo({top:0,behavior:"smooth"}),setTimeout(r,260);return}t.scrollTop=0,requestAnimationFrame(r)}}function rr(){var e=In();if(!(!e||!e.isConnected)){if(n.chatScrollElement===e&&n.chatScrollHandler){Ke();return}n.chatScrollElement&&(n.chatScrollHandler&&n.chatScrollElement.removeEventListener("scroll",n.chatScrollHandler),n.chatScrollWheelHandler&&n.chatScrollElement.removeEventListener("wheel",n.chatScrollWheelHandler),n.chatScrollTouchStartHandler&&n.chatScrollElement.removeEventListener("touchstart",n.chatScrollTouchStartHandler),n.chatScrollTouchMoveHandler&&n.chatScrollElement.removeEventListener("touchmove",n.chatScrollTouchMoveHandler)),n.chatScrollElement=e,n.chatScrollHandler=function(){if(e.isConnected){if(n.chatIsProgrammaticScroll){Ke();return}var t=Ti(e);t?(n.chatStickToBottom=!0,nr({removeDivider:!0})):n.chatStickToBottom=!1,Ke()}},n.chatScrollWheelHandler=function(t){n.chatIsProgrammaticScroll||t.deltaY<0&&(n.chatStickToBottom=!1,Ke())},n.chatScrollTouchStartHandler=function(t){!t.touches||t.touches.length===0||(n.chatTouchStartY=t.touches[0].clientY)},n.chatScrollTouchMoveHandler=function(t){if(!n.chatIsProgrammaticScroll&&!(!t.touches||t.touches.length===0)){var r=t.touches[0].clientY-n.chatTouchStartY;r>4&&(n.chatStickToBottom=!1,Ke())}},e.addEventListener("scroll",n.chatScrollHandler,{passive:!0}),e.addEventListener("wheel",n.chatScrollWheelHandler,{passive:!0}),e.addEventListener("touchstart",n.chatScrollTouchStartHandler,{passive:!0}),e.addEventListener("touchmove",n.chatScrollTouchMoveHandler,{passive:!0}),Ke()}}function uu(){n.chatRenderedCount>=n.currentMessages.length||(n.chatRenderedCount+=n.chatPageSize,Ye(!0))}var ir=null;function kl(){ir&&(ir.disconnect(),ir=null);var e=document.getElementById("chat-load-more-sentinel");if(e){var t=e.querySelector(".chat-load-more-btn");t&&(t.onclick=function(){uu()}),!(typeof IntersectionObserver>"u")&&(ir=new IntersectionObserver(function(r){for(var i=0;i<r.length;i++)if(r[i].isIntersecting){uu();break}},{root:In(),rootMargin:"200px"}),ir.observe(e))}}function ye(){try{n.selectedId?localStorage.setItem("wand-selected-session",n.selectedId):localStorage.removeItem("wand-selected-session")}catch{}}function Mi(e){return e&&Array.isArray(e.queuedMessages)?e.queuedMessages:n.structuredInputQueue}function Al(){var e=n.sessions.find(function(t){return t.id===n.selectedId});return Mi(e)}function jr(e){var t=Mi(e);n.structuredInputQueue=Array.isArray(t)?t.slice():[]}function su(e,t){return!!(e&&Array.isArray(e.content)&&e.content.some(function(r){return r&&typeof r=="object"&&r[t]}))}function xl(e){return!!(e&&e.role==="user"&&su(e,"__queued"))}function Sl(e){return!!(e&&e.role==="assistant"&&su(e,"__processing"))}function ar(e){if(!Array.isArray(e))return[];for(var t=!1,r=[],i=0;i<e.length;i++){var a=e[i];if(xl(a)||Sl(a)){t=!0;continue}r.push(a)}return t?r:e}function Il(e,t){if(!e||!Array.isArray(e.messages))return e;var r=e.sessionKind||t&&t.sessionKind;if(r!=="structured")return e;var i=ar(e.messages);return i===e.messages?e:Object.assign({},e,{messages:i})}function ou(){try{var e=Al();if(!n.selectedId||e.length===0)return;localStorage.setItem("wand-structured-queue",JSON.stringify({sessionId:n.selectedId,items:e}))}catch{}}function lu(e){try{var t=localStorage.getItem("wand-structured-queue");if(!t)return;var r=JSON.parse(t);(!e||!r||r.sessionId===e)&&localStorage.removeItem("wand-structured-queue")}catch{localStorage.removeItem("wand-structured-queue")}}function cu(){var e=n.sessions.find(function(i){return i.id===n.selectedId});if(e&&Array.isArray(e.queuedMessages)){jr(e),ou();return}try{var t=localStorage.getItem("wand-structured-queue");if(!t)return;var r=JSON.parse(t);if(!r||r.sessionId!==n.selectedId||!Array.isArray(r.items))return;n.structuredInputQueue=r.items.slice(0,10)}catch{n.structuredInputQueue=[]}}function Ut(){try{if(n.crossSessionQueue.length===0){localStorage.removeItem("wand-cross-session-queue");return}localStorage.setItem("wand-cross-session-queue",JSON.stringify(n.crossSessionQueue))}catch{}}function en(){return n.config&&n.config.defaultCwd||"/tmp"}function du(){try{var e=localStorage.getItem(xi);if(!e)return{};var t=JSON.parse(e);return t&&typeof t=="object"?t:{}}catch{return{}}}function Tl(e){try{if(!e||Object.keys(e).length===0){localStorage.removeItem(xi);return}localStorage.setItem(xi,JSON.stringify(e))}catch{}}function Ll(){var e=n.selectedId;if(!e)return{};var t=du(),r=t[e];return r&&typeof r=="object"?r:{}}function Ze(e){if(!e||!n.selectedId)return null;var t=Ll();return typeof t[e]=="boolean"?t[e]:null}function Ml(e,t){if(!(!e||!n.selectedId)){var r=du(),i=n.selectedId,a=r[i];(!a||typeof a!="object")&&(a={}),a[e]=!!t,r[i]=a,Tl(r)}}function fu(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 Kt(e,t){for(var r=[],i=0;i<t.length;i++){var a=t[i];a==null||a===""||r.push(String(a))}return e+":"+r.join(":")}function Tn(e){return!e||!e.dataset?"":e.dataset.expandKey||""}function ql(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 r=e.querySelector(".term-body");return r?r.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 qi(e,t,r){if(e)switch(t){case"tool-card":case"diff":{e.classList.toggle("collapsed",!r);break}case"thinking":{e.classList.toggle("collapsed",!r),e.classList.toggle("expanded",!!r);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=r?a:u}var s=e.querySelector(".thinking-inline-action");s&&(s.textContent=r?"\u6536\u8D77":"\u5C55\u5F00");break}case"inline-tool":{e.classList.toggle("inline-tool-open",!!r);var o=e.querySelector(".inline-tool-expanded");o&&(o.style.display=r?"block":"none");break}case"terminal":{var l=e.querySelector(".term-body");l&&(l.style.display=r?"block":"none"),e.dataset.expanded=r?"true":"false";var c=e.querySelector(".term-toggle-icon");c&&(c.textContent=r?"\u25BC":"\u25B6");break}case"tool-group":{e.setAttribute("data-expanded",r?"true":"false");var d=e.querySelector(".tool-group-body");d&&(d.style.display=r?"block":"none");var f=e.querySelector(".tool-group-chevron");f&&(f.style.transform=r?"rotate(180deg)":"");break}case"subagent-reply":{e.setAttribute("data-expanded",r?"true":"false");var v=e.querySelector(".subagent-reply-toggle-label");v&&(v.textContent=r?"\u6536\u8D77":"\u5C55\u5F00");var m=e.querySelector(".subagent-reply-toggle");m&&(m.setAttribute("aria-expanded",r?"true":"false"),m.setAttribute("aria-label",r?"\u6536\u8D77\u5B50\u4EE3\u7406\u56DE\u590D":"\u5C55\u5F00\u5B50\u4EE3\u7406\u56DE\u590D\u5168\u6587"));break}case"subagent-panel":{e.setAttribute("data-expanded",r?"true":"false");for(var b=e.querySelectorAll(".subagent-panel-toggle"),g=0;g<b.length;g++){var y=b[g];y.setAttribute("aria-expanded",r?"true":"false"),y.setAttribute("aria-label",r?"\u6536\u8D77\u5B50\u4EE3\u7406\u8F93\u51FA":"\u5C55\u5F00\u5B50\u4EE3\u7406\u8F93\u51FA");var w=y.querySelector(".subagent-panel-toggle-label");w&&(w.textContent=r?"\u6536\u8D77":"\u5C55\u5F00")}var F=e.querySelector(".subagent-panel-body");F&&(r?F.scrollTop=0:F.scrollTop=F.scrollHeight);break}}}function bn(e,t){var r=Tn(e);r&&Ml(r,ql(e,t))}function Oi(e){!e||!n.selectedId||e.querySelectorAll("[data-expand-key]").forEach(function(t){var r=Tn(t),i=t.dataset.expandKind||"",a=Ze(r);a===null||!i||qi(t,i,a)})}function Pe(){return window.innerWidth<=768}function pu(){return!!n.sessionsDrawerOpen&&(Pe()||!n.sidebarPinned)}function Pi(e){n.filePanelOpen=e;try{localStorage.setItem("wand-file-panel-open",String(n.filePanelOpen))}catch{}n.filePanelOpen&&Pe()&&(n.sessionsDrawerOpen=!1,ke("wand-sidebar-open",!1)),tn(),n.filePanelOpen&&Mt()}function Nr(){Pi(!n.filePanelOpen)}function Ol(){var e=document.getElementById("file-side-panel"),t=document.querySelector(".main-content"),r=document.getElementById("file-panel-toggle-btn"),i=document.getElementById("file-panel-backdrop");e&&e.classList.toggle("open",n.filePanelOpen),t&&t.classList.toggle("file-panel-open",n.filePanelOpen),i&&i.classList.toggle("open",n.filePanelOpen),r&&r.classList.toggle("active",n.filePanelOpen)}function tn(){xr(),Ol()}function Pl(e){var t=document.getElementById("file-explorer-cwd");if(t){var r=e&&e.cwd?e.cwd:en();t.tagName==="INPUT"?document.activeElement!==t&&(t.value=r):t.textContent=r,t.title=r}}function vu(){n.filePanelOpen&&Pi(!1)}function mu(e){var t=n.terminalScale+e;if(t=Math.max(.5,Math.min(2,t)),t=Math.round(t*4)/4,t!==n.terminalScale){n.terminalScale=t;try{localStorage.setItem("wand-terminal-scale",String(t))}catch{}gu(),Hl()}}function gu(){if(!(!n.terminal||!n.terminal.element)){var e=n.terminalBaseFontSize*n.terminalScale,t=Math.max(1,Math.round(e)),r=Math.max(1,Math.round(e*1.5));n.terminal.element.style.setProperty("--term-font-size",t+"px"),n.terminal.element.style.setProperty("--term-row-height",r+"px"),typeof n.terminal.remeasure=="function"&&requestAnimationFrame(function(){n.terminal&&n.terminal.remeasure()})}}function Hl(){var e=document.getElementById("terminal-scale-label-top");e&&(e.textContent=Math.round(n.terminalScale*100)+"%")}var _l={"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 Le(e,t){t=t||{};var r=_l[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">'+r+"</svg>"}function jl(e){var t=e||en();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 Nl={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 hu(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 r=t.lastIndexOf(".");if(r<0||r===t.length-1)return"\u{1F4C4}";var i=t.slice(r+1);return Nl[i]||"\u{1F4C4}"}function Ln(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 r=t/1024;if(r<1024)return(r>=10?Math.round(r):r.toFixed(1))+" MB";var i=r/1024;return(i>=10?Math.round(i):i.toFixed(1))+" GB"}function Rl(e){if(!e)return"";var t=Date.parse(e);return isNaN(t)?"":new Date(t).toLocaleString()}function yu(){if(n.fileExplorerCwd)return n.fileExplorerCwd;if(n.selectedId){var e=n.sessions.find(function(t){return t.id===n.selectedId});if(e&&e.cwd)return e.cwd}return en()}function Mt(e){e=e||{};var t=document.getElementById("file-explorer"),r=document.getElementById("file-explorer-cwd");if(t){var i=e.cwd||yu();if(!i){t.innerHTML='<div class="file-explorer empty">\u6CA1\u6709\u53EF\u663E\u793A\u7684\u5DE5\u4F5C\u76EE\u5F55\u3002</div>';return}n.fileExplorerCwd=i,n.fileExplorerLoading=!0,n.allFiles=[],n.fileExplorerTruncated=!1,n.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>',r&&(r.tagName==="INPUT"?document.activeElement!==r&&(r.value=i):r.textContent=i,r.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){n.fileExplorerLoading=!1;var s,o,l;if(Array.isArray(u)?(s=u,o=!1,l=u.length):(s=u&&u.items||[],o=!!(u&&u.truncated),l=u&&u.total||s.length),!s||s.length===0){t.innerHTML='<div class="file-explorer empty">\u7A7A\u76EE\u5F55\u6216\u65E0\u6CD5\u8BBF\u95EE\u3002</div>';return}n.allFiles=s,n.fileExplorerTruncated=o,n.fileExplorerTotal=l,bu()}).catch(function(){n.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 bu(){var e=document.getElementById("file-explorer");if(e){var t=n.fileExplorerCwd||"";if(t){var r=n.fileSearchQuery,i=n.allFiles||[],a=i;if(r){var u=r.toLowerCase();a=i.filter(function(l){return l.name.toLowerCase().indexOf(u)!==-1})}if(a.length===0){e.innerHTML='<div class="file-explorer empty">'+(r?"\u6CA1\u6709\u627E\u5230\u5339\u914D\u7684\u6587\u4EF6":"\u7A7A\u76EE\u5F55")+"</div>";return}var s="";if(!r&&n.fileExplorerTruncated){var o=i.length;s='<div class="tree-truncated" title="\u540E\u7AEF\u6309\u5B57\u6BCD\u5E8F\u6700\u591A\u8FD4\u56DE '+o+' \u9879">\u663E\u793A\u524D '+o+" \u9879 / \u5171 "+n.fileExplorerTotal+" \u9879</div>"}e.innerHTML='<div class="file-tree" id="file-tree" data-cwd="'+p(t)+'">'+a.map(function(l){return Eu(l)}).join("")+"</div>"+s,Fu()}}}function Eu(e,t){t=t||0;var r=p(e.name),i=e.type==="dir",a=hu(e),u=i?"\u25B8":"",s=i?"":" empty",o=e.gitStatus,l=Wl(o),c="";return!i&&typeof e.size=="number"&&(c='<span class="tree-meta" title="\u5927\u5C0F\uFF1A'+p(Ln(e.size))+(e.mtime?`
2
- \u4FEE\u6539\u65F6\u95F4\uFF1A`+p(Rl(e.mtime)):"")+'">'+p(Ln(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'+s+'">'+u+'</span><span class="tree-icon">'+a+'</span><span class="tree-name">'+r+"</span>"+c+(l?'<span class="git-status-badge '+l.class+'" title="'+l.title+'">'+l.text+"</span>":"")+"</div>"}function Wl(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 Fu(){var e=document.getElementById("file-tree");if(e){e.querySelectorAll(".tree-item[data-type='dir']").forEach(function(i){i.addEventListener("click",function(a){zl(i)})}),e.querySelectorAll(".tree-item[data-type='file']").forEach(function(i){var a=function(){_i(i.dataset.path)};i.addEventListener("click",a),i.addEventListener("dblclick",a)});var t=null,r=!1;e.querySelectorAll(".tree-item").forEach(function(i){i.addEventListener("contextmenu",function(a){a.preventDefault(),wu(a.clientX,a.clientY,i)}),i.addEventListener("touchstart",function(a){r=!1,t=setTimeout(function(){r=!0;var u=a.touches&&a.touches[0];wu(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 zl(e){var t=e.dataset.path,r=e.querySelector(".tree-toggle"),i=e.nextElementSibling;if(i&&i.classList.contains("tree-children")){var a=i.classList.contains("open");i.classList.toggle("open"),r&&r.classList.toggle("open",!a);var u=e.querySelector(".tree-icon");u&&(u.textContent=a?"\u{1F4C1}":"\u{1F4C2}");return}r&&r.classList.add("open");var s=e.querySelector(".tree-icon");s&&(s.textContent="\u{1F4C2}");var o="/api/directory?q="+encodeURIComponent(t)+"&gitStatus=true";fetch(o,{credentials:"same-origin"}).then(function(l){return l.json()}).then(function(l){var c;Array.isArray(l)?c=l:c=l&&l.items||[];var d=document.createElement("div");d.className="tree-children open",!c||c.length===0?d.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>':d.innerHTML=c.map(function(f){return Eu(f)}).join(""),e.parentNode.insertBefore(d,e.nextSibling),Fu()}).catch(function(){})}function Vl(){var e=yu();if(e){var t=e.replace(/\/+$/,"").replace(/\/[^\/]+$/,"");t||(t="/"),t!==e&&Mt({cwd:t})}}function Hi(e){var t=document.getElementById("input-box");if(!t)return!1;var r=t.value||"",i=r&&!r.endsWith(" ")&&!r.endsWith(`
3
- `)?" ":"";t.value=r+i+e,t.dispatchEvent(new Event("input",{bubbles:!0}));try{t.focus(),t.setSelectionRange(t.value.length,t.value.length)}catch{}return!0}function Rr(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 r=document.createElement("textarea");r.value=e,r.style.position="fixed",r.style.left="-9999px",document.body.appendChild(r),r.select();var i=document.execCommand("copy");return document.body.removeChild(r),i}catch{return!1}}}function Ft(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 Mn(){var e=document.getElementById("file-context-menu");e&&e.remove(),document.removeEventListener("click",Mn,!0),document.removeEventListener("scroll",Mn,!0)}function wu(e,t,r){Mn();var i=r.dataset.path||"",a=r.dataset.type||"file",u=n.fileExplorerCwd||"",s=i;u&&i.indexOf(u)===0&&(s=i.slice(u.length).replace(/^\/+/,"")||".");var o=document.createElement("div");o.id="file-context-menu",o.className="file-context-menu";var l=[];a==="file"?l.push({label:"\u6253\u5F00\u9884\u89C8",icon:"\u{1F441}",run:function(){_i(i)}}):l.push({label:"\u8FDB\u5165\u6B64\u76EE\u5F55",icon:"\u{1F4C2}",run:function(){Mt({cwd:i})}}),l.push({label:"\u590D\u5236\u5B8C\u6574\u8DEF\u5F84",icon:"\u{1F4CB}",run:function(){Rr(i).then(function(){Ft("\u5DF2\u590D\u5236\u8DEF\u5F84")})}}),s&&s!==i&&l.push({label:"\u590D\u5236\u76F8\u5BF9\u8DEF\u5F84",icon:"\u{1F4CB}",run:function(){Rr(s).then(function(){Ft("\u5DF2\u590D\u5236\u76F8\u5BF9\u8DEF\u5F84")})}}),l.push({label:"\u7C98\u8D34\u8DEF\u5F84\u5230\u8F93\u5165\u6846",icon:"\u270F\uFE0F",run:function(){Hi(i)&&Ft("\u5DF2\u7C98\u8D34\u5230\u8F93\u5165\u6846")}}),a==="file"&&l.push({label:"\u4E0B\u8F7D\u6587\u4EF6",icon:"\u2B07",run:function(){var b=document.createElement("a");b.href="/api/file-raw?download=1&path="+encodeURIComponent(i),b.rel="noopener",document.body.appendChild(b),b.click(),b.remove()}}),o.innerHTML=l.map(function(b,g){return'<button type="button" class="file-context-menu-item" data-idx="'+g+'"><span class="ctx-icon">'+b.icon+'</span><span class="ctx-label">'+p(b.label)+"</span></button>"}).join(""),document.body.appendChild(o);var c=window.innerWidth,d=window.innerHeight,f=o.getBoundingClientRect(),v=Math.min(e,c-f.width-8),m=Math.min(t,d-f.height-8);o.style.left=Math.max(8,v)+"px",o.style.top=Math.max(8,m)+"px",o.querySelectorAll(".file-context-menu-item").forEach(function(b){b.addEventListener("click",function(g){g.stopPropagation();var y=parseInt(b.dataset.idx,10);Mn(),l[y]&&l[y].run()})}),setTimeout(function(){document.addEventListener("click",Mn,!0),document.addEventListener("scroll",Mn,!0)},0)}var q=null;function _i(e){var t=q&&q.overlay;if(t){q.path=e,q.editing=!1,q.dirty=!1;var s=t.querySelector(".file-preview-title");s&&(s.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><span class="file-preview-path" title=""></span></div>');var o=t.querySelector(".file-preview-toolbar");o&&(o.innerHTML="");var l=t.querySelector(".file-preview-path");l&&(l.textContent="",l.title="");var c=t.querySelector(".file-preview-body");c&&(c.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><span class="file-preview-path" title=""></span></div></div><div class="file-preview-toolbar"></div><button class="file-preview-close" title="\u5173\u95ED (Esc)" aria-label="\u5173\u95ED">'+Le("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 r=t.querySelector(".file-preview-close"),i=function(){if(q&&q.dirty&&typeof nn=="function"){nn({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(f){f&&a()});return}a()},a=function(){t.remove(),document.removeEventListener("keydown",u),q=null};r.addEventListener("click",i),t.addEventListener("click",function(f){f.target===t&&i()});var u=function(f){if((f.key==="s"||f.key==="S")&&(f.ctrlKey||f.metaKey)&&q&&q.editing){f.preventDefault(),xu();return}if(f.key==="Escape"){if(q&&q.editing){f.preventDefault(),Au();return}i();return}q&&(f.target&&(f.target.tagName==="INPUT"||f.target.tagName==="TEXTAREA")||q.editing||(f.key==="ArrowLeft"?(f.preventDefault(),Cu(-1)):f.key==="ArrowRight"&&(f.preventDefault(),Cu(1))))};document.addEventListener("keydown",u),q={overlay:t,close:i,path:e,data:null,editing:!1,dirty:!1}}var d=t.querySelector(".file-preview-path");d&&(d.textContent=e,d.title=e),fetch("/api/file-preview?path="+encodeURIComponent(e),{credentials:"same-origin"}).then(function(f){return f.json().then(function(v){return{ok:f.ok,status:f.status,data:v}})}).then(function(f){var v=t.querySelector(".file-preview-body");if(!f.ok||f.data&&f.data.error){var m=f.data&&f.data.error||"\u52A0\u8F7D\u5931\u8D25";f.status===413&&f.data&&f.data.size&&(m+="\uFF08\u6587\u4EF6\u5927\u5C0F\uFF1A"+Ln(f.data.size)+"\uFF09"),v.innerHTML='<div class="file-preview-error"><span class="preview-error-icon">\u26A0</span><span>'+p(m)+"</span></div>",f.status===413&&ji(t,{kind:"binary",path:e,name:e.split("/").pop()||e,ext:"",size:f.data&&f.data.size||0});return}q.data=f.data,Bu(t,f.data)}).catch(function(){var f=t.querySelector(".file-preview-body");f.innerHTML='<div class="file-preview-error"><span class="preview-error-icon">\u26A0</span><span>\u52A0\u8F7D\u9884\u89C8\u5931\u8D25</span></div>'})}function Cu(e){if(q){var t=(n.allFiles||[]).filter(function(o){return o.type==="file"});if(t.length){for(var r=q.path,i=-1,a=0;a<t.length;a++)if(t[a].path===r){i=a;break}if(!(i<0)){var u=(i+e+t.length)%t.length,s=t[u].path;s&&s!==r&&_i(s)}}}}function Bu(e,t){var r=e.querySelector(".file-preview-filename");r&&(r.textContent=t.name);var i=e.querySelector(".file-preview-icon");i&&(i.textContent=hu({name:t.name,type:"file"}));var a=e.querySelector(".file-preview-title"),u=e.querySelector(".file-preview-lang");u&&u.remove();var s=document.createElement("span");s.className="file-preview-lang";var o={image:"\u56FE\u7247",pdf:"PDF",video:"\u89C6\u9891",audio:"\u97F3\u9891",binary:"\u4E8C\u8FDB\u5236"};t.kind==="text"?s.textContent=t.lang||(t.ext||"").replace(".","")||"text":s.textContent=o[t.kind]||(t.ext||"").replace(".","")||t.kind,a&&a.appendChild(s),ji(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"?Kl(l,t):t.kind==="pdf"?Jl(l,t):t.kind==="video"?Yl(l,t):t.kind==="audio"?Gl(l,t):t.kind==="binary"?Ql(l,t):t.lang==="markdown"||/\.(md|markdown|mdx)$/i.test(t.name||"")?l.innerHTML='<div class="markdown-preview">'+ec(t.content||"")+"</div>":Ul(l,t)}function Ul(e,t){var r=Iu(t.content||"",t.lang),i=r.split(`
1
+ "use strict";(()=>{var xm="${escapeHtml(configPath)}",xi="wand-chat-expand-state-v1",Hr=[function(){}];(function(){try{var t=localStorage.getItem("wand-ls-schema"),r=t==null?0:parseInt(t,10);r>=0||(r=0);for(var i=r;i<Hr.length;i++)try{Hr[i]()}catch{}r<Hr.length&&localStorage.setItem("wand-ls-schema",String(Hr.length))}catch{}})();function Si(e,t){try{var r=localStorage.getItem(e);return r==="true"?!0:r==="false"?!1:t}catch{return t}}function xe(e,t){try{localStorage.setItem(e,String(!!t))}catch{}}var n={selectedId:(function(){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:[],queueBarHoverIndex:null,queueBarDrag:null,drafts:{},isSyncingInputBox:!1,loginPending:!1,loginChecked:!1,bootstrapping:!0,sessionsDrawerOpen:Si("wand-sidebar-open",!1),sidebarPinned:Si("wand-sidebar-pinned",!0),sidebarCollapsed:Si("wand-sidebar-collapsed",!1),modalOpen:!1,presetValue:"",cwdValue:"",modeValue:"managed",chatMode:"managed",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"?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,deferredPrompt:null,showInstallPrompt:!1,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,chatUnreadCount:0,chatUnreadStartIndex:-1,chatScrollThreshold:160,chatIsProgrammaticScroll:!1,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""}})()},Ii="\u4E2D\u6587",_r={\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"},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"}};function uu(){var e=n.config&&typeof n.config.language=="string"?n.config.language.trim():"";if(!e)return Ii;if(_r[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 Ye(e,t){var r=uu(),i=_r[r]||_r[Ii],a=i&&e in i?i[e]:null;if(a==null){var u=_r[Ii];a=u&&e in u?u[e]:e}if(t&&typeof a=="string")for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&(a=a.split("{"+s+"}").join(t[s]));return a}var kl={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"/>',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"/>',cloud:'<path d="M17.5 19a4.5 4.5 0 1 0-1-8.9 6 6 0 0 0-11.5 1.7A4 4 0 0 0 6 19h11.5z"/>',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"/>',folderOpen:'<path d="M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2"/><path d="M3 9h18l-2 8a2 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"/>',slash:'<polyline points="4 17 10 11 4 5"/><line x1="12" y1="19" x2="20" y2="19"/>',chevronDown:'<polyline points="6 9 12 15 18 9"/>',chevronUp:'<polyline points="6 15 12 9 18 15"/>',chevronRight:'<polyline points="9 6 15 12 9 18"/>',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"/>',inbox:'<polyline points="22 13 16 13 14 16 10 16 8 13 2 13"/><path d="M5 5h14l3 8v6a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-6z"/>',zap:'<polygon points="13 2 4 14 11 14 10 22 20 9 13 9 13 2"/>',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"/>',check:'<polyline points="5 12 10 17 19 7"/>',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"/>',image:'<rect x="3" y="4" width="18" height="16" rx="2"/><circle cx="9" cy="10" r="1.5"/><polyline points="3 18 9 12 14 17 21 12"/>',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 J(e,t){var r=kl[e];if(!r)return"";t=t||{};var i=t.size||14,a=t.strokeWidth||1.8,u=t.cls?' class="'+t.cls+'"':"",s=t.fill||"none";return"<svg"+u+' width="'+i+'" height="'+i+'" viewBox="0 0 24 24" fill="'+s+'" stroke="currentColor" stroke-width="'+a+'" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">'+r+"</svg>"}function Tn(){var e=document.getElementById("chat-output");if(!e)return n.chatScrollElement=null,null;var t=e.querySelector(".chat-messages");return t?(n.chatScrollElement=t,t):(n.chatScrollElement=null,null)}function Ti(e){var t=e||Tn();return t?Math.abs(t.scrollTop)<n.chatScrollThreshold:!0}function Sm(e){n.chatStickToBottom=!!e,n.chatStickToBottom&&nr({removeDivider:!0}),Ge()}function nr(e){e=e||{};var t=n.chatUnreadCount>0||n.chatUnreadStartIndex>=0;if(n.chatUnreadCount=0,n.chatUnreadStartIndex=-1,e.removeDivider!==!1){var r=Tn();if(r){var i=r.querySelector(".chat-unread-divider");i&&i.parentNode&&i.parentNode.removeChild(i)}}t&&Ge()}function Li(e){if(e||(e=Tn()),!!e){var t=e.querySelector(".chat-unread-divider");if(n.chatUnreadStartIndex<0||n.chatUnreadCount<=0){t&&t.parentNode&&t.parentNode.removeChild(t);return}for(var r=n.chatUnreadStartIndex,i=e.querySelectorAll(".chat-message"),a=null,u=0;u<i.length;u++){var s=i[u].getAttribute("data-msg-index");if(s!==null){var o=parseInt(s,10);if(!isNaN(o)&&o<r){a=i[u];break}}}var l=n.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=n.sessions.find(function(o){return o.id===n.selectedId}),r=!Ti(),i=!!t&&n.currentView==="chat"&&r;e.classList.toggle("visible",i),e.classList.toggle("has-unread",n.chatUnreadCount>0);var a=e.querySelector(".chat-unread-bubble-count");a&&(n.chatUnreadCount>0?(a.textContent=n.chatUnreadCount>99?"99+":String(n.chatUnreadCount),a.classList.add("visible")):(a.textContent="",a.classList.remove("visible")));var u=n.chatUnreadCount>0?n.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 s=document.getElementById("chat-output");s&&s.classList.toggle("has-jump-btn",i)}}function Al(e){var t=Tn();if(!(!t||!t.isConnected)){n.chatIsProgrammaticScroll=!0;var r=function(){n.chatIsProgrammaticScroll=!1,n.chatStickToBottom=!0,nr({removeDivider:!0}),Ge()};if(e&&typeof t.scrollTo=="function"){t.scrollTo({top:0,behavior:"smooth"}),setTimeout(r,260);return}t.scrollTop=0,requestAnimationFrame(r)}}function rr(){var e=Tn();if(!(!e||!e.isConnected)){if(n.chatScrollElement===e&&n.chatScrollHandler){Ge();return}n.chatScrollElement&&(n.chatScrollHandler&&n.chatScrollElement.removeEventListener("scroll",n.chatScrollHandler),n.chatScrollWheelHandler&&n.chatScrollElement.removeEventListener("wheel",n.chatScrollWheelHandler),n.chatScrollTouchStartHandler&&n.chatScrollElement.removeEventListener("touchstart",n.chatScrollTouchStartHandler),n.chatScrollTouchMoveHandler&&n.chatScrollElement.removeEventListener("touchmove",n.chatScrollTouchMoveHandler)),n.chatScrollElement=e,n.chatScrollHandler=function(){if(e.isConnected){if(n.chatIsProgrammaticScroll){Ge();return}var t=Ti(e);t?(n.chatStickToBottom=!0,nr({removeDivider:!0})):n.chatStickToBottom=!1,Ge()}},n.chatScrollWheelHandler=function(t){n.chatIsProgrammaticScroll||t.deltaY<0&&(n.chatStickToBottom=!1,Ge())},n.chatScrollTouchStartHandler=function(t){!t.touches||t.touches.length===0||(n.chatTouchStartY=t.touches[0].clientY)},n.chatScrollTouchMoveHandler=function(t){if(!n.chatIsProgrammaticScroll&&!(!t.touches||t.touches.length===0)){var r=t.touches[0].clientY-n.chatTouchStartY;r>4&&(n.chatStickToBottom=!1,Ge())}},e.addEventListener("scroll",n.chatScrollHandler,{passive:!0}),e.addEventListener("wheel",n.chatScrollWheelHandler,{passive:!0}),e.addEventListener("touchstart",n.chatScrollTouchStartHandler,{passive:!0}),e.addEventListener("touchmove",n.chatScrollTouchMoveHandler,{passive:!0}),Ge()}}function su(){n.chatRenderedCount>=n.currentMessages.length||(n.chatRenderedCount+=n.chatPageSize,$e(!0))}var ir=null;function xl(){ir&&(ir.disconnect(),ir=null);var e=document.getElementById("chat-load-more-sentinel");if(e){var t=e.querySelector(".chat-load-more-btn");t&&(t.onclick=function(){su()}),!(typeof IntersectionObserver>"u")&&(ir=new IntersectionObserver(function(r){for(var i=0;i<r.length;i++)if(r[i].isIntersecting){su();break}},{root:Tn(),rootMargin:"200px"}),ir.observe(e))}}function be(){try{n.selectedId?localStorage.setItem("wand-selected-session",n.selectedId):localStorage.removeItem("wand-selected-session")}catch{}}function Mi(e){return e&&Array.isArray(e.queuedMessages)?e.queuedMessages:n.structuredInputQueue}function Sl(){var e=n.sessions.find(function(t){return t.id===n.selectedId});return Mi(e)}function Nr(e){var t=Mi(e);n.structuredInputQueue=Array.isArray(t)?t.slice():[]}function ou(e,t){return!!(e&&Array.isArray(e.content)&&e.content.some(function(r){return r&&typeof r=="object"&&r[t]}))}function Il(e){return!!(e&&e.role==="user"&&ou(e,"__queued"))}function Tl(e){return!!(e&&e.role==="assistant"&&ou(e,"__processing"))}function ar(e){if(!Array.isArray(e))return[];for(var t=!1,r=[],i=0;i<e.length;i++){var a=e[i];if(Il(a)||Tl(a)){t=!0;continue}r.push(a)}return t?r:e}function Ll(e,t){if(!e||!Array.isArray(e.messages))return e;var r=e.sessionKind||t&&t.sessionKind;if(r!=="structured")return e;var i=ar(e.messages);return i===e.messages?e:Object.assign({},e,{messages:i})}function lu(){try{var e=Sl();if(!n.selectedId||e.length===0)return;localStorage.setItem("wand-structured-queue",JSON.stringify({sessionId:n.selectedId,items:e}))}catch{}}function cu(e){try{var t=localStorage.getItem("wand-structured-queue");if(!t)return;var r=JSON.parse(t);(!e||!r||r.sessionId===e)&&localStorage.removeItem("wand-structured-queue")}catch{localStorage.removeItem("wand-structured-queue")}}function du(){var e=n.sessions.find(function(i){return i.id===n.selectedId});if(e&&Array.isArray(e.queuedMessages)){Nr(e),lu();return}try{var t=localStorage.getItem("wand-structured-queue");if(!t)return;var r=JSON.parse(t);if(!r||r.sessionId!==n.selectedId||!Array.isArray(r.items))return;n.structuredInputQueue=r.items.slice(0,10)}catch{n.structuredInputQueue=[]}}function Ut(){try{if(n.crossSessionQueue.length===0){localStorage.removeItem("wand-cross-session-queue");return}localStorage.setItem("wand-cross-session-queue",JSON.stringify(n.crossSessionQueue))}catch{}}function en(){return n.config&&n.config.defaultCwd||"/tmp"}function fu(){try{var e=localStorage.getItem(xi);if(!e)return{};var t=JSON.parse(e);return t&&typeof t=="object"?t:{}}catch{return{}}}function Ml(e){try{if(!e||Object.keys(e).length===0){localStorage.removeItem(xi);return}localStorage.setItem(xi,JSON.stringify(e))}catch{}}function ql(){var e=n.selectedId;if(!e)return{};var t=fu(),r=t[e];return r&&typeof r=="object"?r:{}}function Ze(e){if(!e||!n.selectedId)return null;var t=ql();return typeof t[e]=="boolean"?t[e]:null}function Ol(e,t){if(!(!e||!n.selectedId)){var r=fu(),i=n.selectedId,a=r[i];(!a||typeof a!="object")&&(a={}),a[e]=!!t,r[i]=a,Ml(r)}}function pu(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 Kt(e,t){for(var r=[],i=0;i<t.length;i++){var a=t[i];a==null||a===""||r.push(String(a))}return e+":"+r.join(":")}function Ln(e){return!e||!e.dataset?"":e.dataset.expandKey||""}function Pl(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 r=e.querySelector(".term-body");return r?r.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 qi(e,t,r){if(e)switch(t){case"tool-card":case"diff":{e.classList.toggle("collapsed",!r);break}case"thinking":{e.classList.toggle("collapsed",!r),e.classList.toggle("expanded",!!r);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=r?a:u}var s=e.querySelector(".thinking-inline-action");s&&(s.textContent=r?"\u6536\u8D77":"\u5C55\u5F00");break}case"inline-tool":{e.classList.toggle("inline-tool-open",!!r);var o=e.querySelector(".inline-tool-expanded");o&&(o.style.display=r?"block":"none");break}case"terminal":{var l=e.querySelector(".term-body");l&&(l.style.display=r?"block":"none"),e.dataset.expanded=r?"true":"false";var c=e.querySelector(".term-toggle-icon");c&&(c.textContent=r?"\u25BC":"\u25B6");break}case"tool-group":{e.setAttribute("data-expanded",r?"true":"false");var d=e.querySelector(".tool-group-body");d&&(d.style.display=r?"block":"none");var f=e.querySelector(".tool-group-chevron");f&&(f.style.transform=r?"rotate(180deg)":"");break}case"subagent-reply":{e.setAttribute("data-expanded",r?"true":"false");var v=e.querySelector(".subagent-reply-toggle-label");v&&(v.textContent=r?"\u6536\u8D77":"\u5C55\u5F00");var m=e.querySelector(".subagent-reply-toggle");m&&(m.setAttribute("aria-expanded",r?"true":"false"),m.setAttribute("aria-label",r?"\u6536\u8D77\u5B50\u4EE3\u7406\u56DE\u590D":"\u5C55\u5F00\u5B50\u4EE3\u7406\u56DE\u590D\u5168\u6587"));break}case"subagent-panel":{e.setAttribute("data-expanded",r?"true":"false");for(var b=e.querySelectorAll(".subagent-panel-toggle"),g=0;g<b.length;g++){var y=b[g];y.setAttribute("aria-expanded",r?"true":"false"),y.setAttribute("aria-label",r?"\u6536\u8D77\u5B50\u4EE3\u7406\u8F93\u51FA":"\u5C55\u5F00\u5B50\u4EE3\u7406\u8F93\u51FA");var w=y.querySelector(".subagent-panel-toggle-label");w&&(w.textContent=r?"\u6536\u8D77":"\u5C55\u5F00")}var F=e.querySelector(".subagent-panel-body");F&&(r?F.scrollTop=0:F.scrollTop=F.scrollHeight);break}}}function bn(e,t){var r=Ln(e);r&&Ol(r,Pl(e,t))}function Oi(e){!e||!n.selectedId||e.querySelectorAll("[data-expand-key]").forEach(function(t){var r=Ln(t),i=t.dataset.expandKind||"",a=Ze(r);a===null||!i||qi(t,i,a)})}function _e(){return window.innerWidth<=768}function vu(){return!!n.sessionsDrawerOpen&&(_e()||!n.sidebarPinned)}function Pi(e){n.filePanelOpen=e;try{localStorage.setItem("wand-file-panel-open",String(n.filePanelOpen))}catch{}n.filePanelOpen&&_e()&&(n.sessionsDrawerOpen=!1,xe("wand-sidebar-open",!1)),tn(),n.filePanelOpen&&Lt()}function jr(){Pi(!n.filePanelOpen)}function Hl(){var e=document.getElementById("file-side-panel"),t=document.querySelector(".main-content"),r=document.getElementById("file-panel-toggle-btn"),i=document.getElementById("file-panel-backdrop");e&&e.classList.toggle("open",n.filePanelOpen),t&&t.classList.toggle("file-panel-open",n.filePanelOpen),i&&i.classList.toggle("open",n.filePanelOpen),r&&r.classList.toggle("active",n.filePanelOpen)}function tn(){xr(),Hl()}function _l(e){var t=document.getElementById("file-explorer-cwd");if(t){var r=e&&e.cwd?e.cwd:en();t.tagName==="INPUT"?document.activeElement!==t&&(t.value=r):t.textContent=r,t.title=r}}function mu(){n.filePanelOpen&&Pi(!1)}function gu(e){var t=n.terminalScale+e;if(t=Math.max(.5,Math.min(2,t)),t=Math.round(t*4)/4,t!==n.terminalScale){n.terminalScale=t;try{localStorage.setItem("wand-terminal-scale",String(t))}catch{}hu(),Nl()}}function hu(){if(!(!n.terminal||!n.terminal.element)){var e=n.terminalBaseFontSize*n.terminalScale,t=Math.max(1,Math.round(e)),r=Math.max(1,Math.round(e*1.5));n.terminal.element.style.setProperty("--term-font-size",t+"px"),n.terminal.element.style.setProperty("--term-row-height",r+"px"),typeof n.terminal.remeasure=="function"&&requestAnimationFrame(function(){n.terminal&&n.terminal.remeasure()})}}function Nl(){var e=document.getElementById("terminal-scale-label-top");e&&(e.textContent=Math.round(n.terminalScale*100)+"%")}var jl={"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 Le(e,t){t=t||{};var r=jl[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">'+r+"</svg>"}function Rl(e){var t=e||en();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 Wl={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 yu(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 r=t.lastIndexOf(".");if(r<0||r===t.length-1)return"\u{1F4C4}";var i=t.slice(r+1);return Wl[i]||"\u{1F4C4}"}function Mn(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 r=t/1024;if(r<1024)return(r>=10?Math.round(r):r.toFixed(1))+" MB";var i=r/1024;return(i>=10?Math.round(i):i.toFixed(1))+" GB"}function zl(e){if(!e)return"";var t=Date.parse(e);return isNaN(t)?"":new Date(t).toLocaleString()}function bu(){if(n.fileExplorerCwd)return n.fileExplorerCwd;if(n.selectedId){var e=n.sessions.find(function(t){return t.id===n.selectedId});if(e&&e.cwd)return e.cwd}return en()}function Lt(e){e=e||{};var t=document.getElementById("file-explorer"),r=document.getElementById("file-explorer-cwd");if(t){var i=e.cwd||bu();if(!i){t.innerHTML='<div class="file-explorer empty">\u6CA1\u6709\u53EF\u663E\u793A\u7684\u5DE5\u4F5C\u76EE\u5F55\u3002</div>';return}n.fileExplorerCwd=i,n.fileExplorerLoading=!0,n.allFiles=[],n.fileExplorerTruncated=!1,n.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>',r&&(r.tagName==="INPUT"?document.activeElement!==r&&(r.value=i):r.textContent=i,r.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){n.fileExplorerLoading=!1;var s,o,l;if(Array.isArray(u)?(s=u,o=!1,l=u.length):(s=u&&u.items||[],o=!!(u&&u.truncated),l=u&&u.total||s.length),!s||s.length===0){t.innerHTML='<div class="file-explorer empty">\u7A7A\u76EE\u5F55\u6216\u65E0\u6CD5\u8BBF\u95EE\u3002</div>';return}n.allFiles=s,n.fileExplorerTruncated=o,n.fileExplorerTotal=l,Eu()}).catch(function(){n.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 Eu(){var e=document.getElementById("file-explorer");if(e){var t=n.fileExplorerCwd||"";if(t){var r=n.fileSearchQuery,i=n.allFiles||[],a=i;if(r){var u=r.toLowerCase();a=i.filter(function(l){return l.name.toLowerCase().indexOf(u)!==-1})}if(a.length===0){e.innerHTML='<div class="file-explorer empty">'+(r?"\u6CA1\u6709\u627E\u5230\u5339\u914D\u7684\u6587\u4EF6":"\u7A7A\u76EE\u5F55")+"</div>";return}var s="";if(!r&&n.fileExplorerTruncated){var o=i.length;s='<div class="tree-truncated" title="\u540E\u7AEF\u6309\u5B57\u6BCD\u5E8F\u6700\u591A\u8FD4\u56DE '+o+' \u9879">\u663E\u793A\u524D '+o+" \u9879 / \u5171 "+n.fileExplorerTotal+" \u9879</div>"}e.innerHTML='<div class="file-tree" id="file-tree" data-cwd="'+p(t)+'">'+a.map(function(l){return Fu(l)}).join("")+"</div>"+s,wu()}}}function Fu(e,t){t=t||0;var r=p(e.name),i=e.type==="dir",a=yu(e),u=i?"\u25B8":"",s=i?"":" empty",o=e.gitStatus,l=Vl(o),c="";return!i&&typeof e.size=="number"&&(c='<span class="tree-meta" title="\u5927\u5C0F\uFF1A'+p(Mn(e.size))+(e.mtime?`
2
+ \u4FEE\u6539\u65F6\u95F4\uFF1A`+p(zl(e.mtime)):"")+'">'+p(Mn(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'+s+'">'+u+'</span><span class="tree-icon">'+a+'</span><span class="tree-name">'+r+"</span>"+c+(l?'<span class="git-status-badge '+l.class+'" title="'+l.title+'">'+l.text+"</span>":"")+"</div>"}function Vl(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 wu(){var e=document.getElementById("file-tree");if(e){e.querySelectorAll(".tree-item[data-type='dir']").forEach(function(i){i.addEventListener("click",function(a){Ul(i)})}),e.querySelectorAll(".tree-item[data-type='file']").forEach(function(i){var a=function(){_i(i.dataset.path)};i.addEventListener("click",a),i.addEventListener("dblclick",a)});var t=null,r=!1;e.querySelectorAll(".tree-item").forEach(function(i){i.addEventListener("contextmenu",function(a){a.preventDefault(),Cu(a.clientX,a.clientY,i)}),i.addEventListener("touchstart",function(a){r=!1,t=setTimeout(function(){r=!0;var u=a.touches&&a.touches[0];Cu(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 Ul(e){var t=e.dataset.path,r=e.querySelector(".tree-toggle"),i=e.nextElementSibling;if(i&&i.classList.contains("tree-children")){var a=i.classList.contains("open");i.classList.toggle("open"),r&&r.classList.toggle("open",!a);var u=e.querySelector(".tree-icon");u&&(u.textContent=a?"\u{1F4C1}":"\u{1F4C2}");return}r&&r.classList.add("open");var s=e.querySelector(".tree-icon");s&&(s.textContent="\u{1F4C2}");var o="/api/directory?q="+encodeURIComponent(t)+"&gitStatus=true";fetch(o,{credentials:"same-origin"}).then(function(l){return l.json()}).then(function(l){var c;Array.isArray(l)?c=l:c=l&&l.items||[];var d=document.createElement("div");d.className="tree-children open",!c||c.length===0?d.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>':d.innerHTML=c.map(function(f){return Fu(f)}).join(""),e.parentNode.insertBefore(d,e.nextSibling),wu()}).catch(function(){})}function Kl(){var e=bu();if(e){var t=e.replace(/\/+$/,"").replace(/\/[^\/]+$/,"");t||(t="/"),t!==e&&Lt({cwd:t})}}function Hi(e){var t=document.getElementById("input-box");if(!t)return!1;var r=t.value||"",i=r&&!r.endsWith(" ")&&!r.endsWith(`
3
+ `)?" ":"";t.value=r+i+e,t.dispatchEvent(new Event("input",{bubbles:!0}));try{t.focus(),t.setSelectionRange(t.value.length,t.value.length)}catch{}return!0}function Rr(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 r=document.createElement("textarea");r.value=e,r.style.position="fixed",r.style.left="-9999px",document.body.appendChild(r),r.select();var i=document.execCommand("copy");return document.body.removeChild(r),i}catch{return!1}}}function Ft(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 qn(){var e=document.getElementById("file-context-menu");e&&e.remove(),document.removeEventListener("click",qn,!0),document.removeEventListener("scroll",qn,!0)}function Cu(e,t,r){qn();var i=r.dataset.path||"",a=r.dataset.type||"file",u=n.fileExplorerCwd||"",s=i;u&&i.indexOf(u)===0&&(s=i.slice(u.length).replace(/^\/+/,"")||".");var o=document.createElement("div");o.id="file-context-menu",o.className="file-context-menu";var l=[];a==="file"?l.push({label:"\u6253\u5F00\u9884\u89C8",icon:"\u{1F441}",run:function(){_i(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(){Rr(i).then(function(){Ft("\u5DF2\u590D\u5236\u8DEF\u5F84")})}}),s&&s!==i&&l.push({label:"\u590D\u5236\u76F8\u5BF9\u8DEF\u5F84",icon:"\u{1F4CB}",run:function(){Rr(s).then(function(){Ft("\u5DF2\u590D\u5236\u76F8\u5BF9\u8DEF\u5F84")})}}),l.push({label:"\u7C98\u8D34\u8DEF\u5F84\u5230\u8F93\u5165\u6846",icon:"\u270F\uFE0F",run:function(){Hi(i)&&Ft("\u5DF2\u7C98\u8D34\u5230\u8F93\u5165\u6846")}}),a==="file"&&l.push({label:"\u4E0B\u8F7D\u6587\u4EF6",icon:"\u2B07",run:function(){var b=document.createElement("a");b.href="/api/file-raw?download=1&path="+encodeURIComponent(i),b.rel="noopener",document.body.appendChild(b),b.click(),b.remove()}}),o.innerHTML=l.map(function(b,g){return'<button type="button" class="file-context-menu-item" data-idx="'+g+'"><span class="ctx-icon">'+b.icon+'</span><span class="ctx-label">'+p(b.label)+"</span></button>"}).join(""),document.body.appendChild(o);var c=window.innerWidth,d=window.innerHeight,f=o.getBoundingClientRect(),v=Math.min(e,c-f.width-8),m=Math.min(t,d-f.height-8);o.style.left=Math.max(8,v)+"px",o.style.top=Math.max(8,m)+"px",o.querySelectorAll(".file-context-menu-item").forEach(function(b){b.addEventListener("click",function(g){g.stopPropagation();var y=parseInt(b.dataset.idx,10);qn(),l[y]&&l[y].run()})}),setTimeout(function(){document.addEventListener("click",qn,!0),document.addEventListener("scroll",qn,!0)},0)}var q=null;function _i(e){var t=q&&q.overlay;if(t){q.path=e,q.editing=!1,q.dirty=!1;var s=t.querySelector(".file-preview-title");s&&(s.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><span class="file-preview-path" title=""></span></div>');var o=t.querySelector(".file-preview-toolbar");o&&(o.innerHTML="");var l=t.querySelector(".file-preview-path");l&&(l.textContent="",l.title="");var c=t.querySelector(".file-preview-body");c&&(c.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><span class="file-preview-path" title=""></span></div></div><div class="file-preview-toolbar"></div><button class="file-preview-close" title="\u5173\u95ED (Esc)" aria-label="\u5173\u95ED">'+Le("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 r=t.querySelector(".file-preview-close"),i=function(){if(q&&q.dirty&&typeof nn=="function"){nn({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(f){f&&a()});return}a()},a=function(){t.remove(),document.removeEventListener("keydown",u),q=null};r.addEventListener("click",i),t.addEventListener("click",function(f){f.target===t&&i()});var u=function(f){if((f.key==="s"||f.key==="S")&&(f.ctrlKey||f.metaKey)&&q&&q.editing){f.preventDefault(),Su();return}if(f.key==="Escape"){if(q&&q.editing){f.preventDefault(),xu();return}i();return}q&&(f.target&&(f.target.tagName==="INPUT"||f.target.tagName==="TEXTAREA")||q.editing||(f.key==="ArrowLeft"?(f.preventDefault(),Bu(-1)):f.key==="ArrowRight"&&(f.preventDefault(),Bu(1))))};document.addEventListener("keydown",u),q={overlay:t,close:i,path:e,data:null,editing:!1,dirty:!1}}var d=t.querySelector(".file-preview-path");d&&(d.textContent=e,d.title=e),fetch("/api/file-preview?path="+encodeURIComponent(e),{credentials:"same-origin"}).then(function(f){return f.json().then(function(v){return{ok:f.ok,status:f.status,data:v}})}).then(function(f){var v=t.querySelector(".file-preview-body");if(!f.ok||f.data&&f.data.error){var m=f.data&&f.data.error||"\u52A0\u8F7D\u5931\u8D25";f.status===413&&f.data&&f.data.size&&(m+="\uFF08\u6587\u4EF6\u5927\u5C0F\uFF1A"+Mn(f.data.size)+"\uFF09"),v.innerHTML='<div class="file-preview-error"><span class="preview-error-icon">\u26A0</span><span>'+p(m)+"</span></div>",f.status===413&&Ni(t,{kind:"binary",path:e,name:e.split("/").pop()||e,ext:"",size:f.data&&f.data.size||0});return}q.data=f.data,Du(t,f.data)}).catch(function(){var f=t.querySelector(".file-preview-body");f.innerHTML='<div class="file-preview-error"><span class="preview-error-icon">\u26A0</span><span>\u52A0\u8F7D\u9884\u89C8\u5931\u8D25</span></div>'})}function Bu(e){if(q){var t=(n.allFiles||[]).filter(function(o){return o.type==="file"});if(t.length){for(var r=q.path,i=-1,a=0;a<t.length;a++)if(t[a].path===r){i=a;break}if(!(i<0)){var u=(i+e+t.length)%t.length,s=t[u].path;s&&s!==r&&_i(s)}}}}function Du(e,t){var r=e.querySelector(".file-preview-filename");r&&(r.textContent=t.name);var i=e.querySelector(".file-preview-icon");i&&(i.textContent=yu({name:t.name,type:"file"}));var a=e.querySelector(".file-preview-title"),u=e.querySelector(".file-preview-lang");u&&u.remove();var s=document.createElement("span");s.className="file-preview-lang";var o={image:"\u56FE\u7247",pdf:"PDF",video:"\u89C6\u9891",audio:"\u97F3\u9891",binary:"\u4E8C\u8FDB\u5236"};t.kind==="text"?s.textContent=t.lang||(t.ext||"").replace(".","")||"text":s.textContent=o[t.kind]||(t.ext||"").replace(".","")||t.kind,a&&a.appendChild(s),Ni(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"?Yl(l,t):t.kind==="pdf"?Gl(l,t):t.kind==="video"?Ql(l,t):t.kind==="audio"?$l(l,t):t.kind==="binary"?Xl(l,t):t.lang==="markdown"||/\.(md|markdown|mdx)$/i.test(t.name||"")?l.innerHTML='<div class="markdown-preview">'+nc(t.content||"")+"</div>":Jl(l,t)}function Jl(e,t){var r=Tu(t.content||"",t.lang),i=r.split(`
4
4
  `),a=i.map(function(u,s){return s+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 Kl(e,t){var r="/api/file-raw?path="+encodeURIComponent(t.path);e.innerHTML='<div class="image-preview-wrapper"><img class="image-preview-img" src="'+r+'" 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 Jl(e,t){var r="/api/file-raw?path="+encodeURIComponent(t.path);e.innerHTML='<iframe class="pdf-preview-frame" src="'+r+'" title="'+p(t.name)+'"></iframe>'}function Yl(e,t){var r="/api/file-raw?path="+encodeURIComponent(t.path);e.innerHTML='<div class="media-preview-wrapper"><video class="media-preview-video" controls preload="metadata" src="'+r+'">\u60A8\u7684\u6D4F\u89C8\u5668\u4E0D\u652F\u6301 video \u6807\u7B7E\u3002</video><div class="media-preview-meta">'+p(Ln(t.size))+"</div></div>"}function Gl(e,t){var r="/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="'+r+'">\u60A8\u7684\u6D4F\u89C8\u5668\u4E0D\u652F\u6301 audio \u6807\u7B7E\u3002</audio><div class="media-preview-meta">'+p(Ln(t.size))+"</div></div>"}function Ql(e,t){var r="/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(Ln(t.size))+'</span></div><div class="binary-preview-path" title="'+p(t.path)+'">'+p(t.path)+'</div><div class="binary-preview-actions"><a class="binary-preview-btn" href="'+r+'" 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>';var i=e.querySelector('[data-action="view-cat"]');i&&i.addEventListener("click",function(){Hi('cat -- "'+t.path+'"')&&Ft("\u547D\u4EE4\u5DF2\u7C98\u8D34\u5230\u8F93\u5165\u6846")})}function ji(e,t){var r=e.querySelector(".file-preview-toolbar");if(r){if(r.innerHTML="",r.classList.remove("editing"),q&&q.editing){r.classList.add("editing"),ur(e,t);return}var i=[];t.kind==="text"&&i.push({label:"\u7F16\u8F91\u6587\u4EF6 (E)",icon:Le("edit"),primary:!0,action:function(){$l()}}),i.push({label:"\u590D\u5236\u8DEF\u5F84",icon:Le("clipboard"),action:function(){Rr(t.path).then(function(){Ft("\u5DF2\u590D\u5236\u8DEF\u5F84")})}}),i.push({label:"\u7C98\u8D34\u5230\u8F93\u5165\u6846",icon:Le("send-to-input"),action:function(){Hi(t.path)&&Ft("\u5DF2\u7C98\u8D34\u5230\u8F93\u5165\u6846")}}),i.push({label:"\u4E0B\u8F7D",icon:Le("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:Le("copy"),action:function(){Rr(t.content||"").then(function(){Ft("\u5DF2\u590D\u5236\u5185\u5BB9")})}}),i.push({label:"\u5207\u6362\u81EA\u52A8\u6362\u884C",icon:Le("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:Le("minus"),action:function(){Su(e,-1)}},{kind:"label",icon:Le("type"),label:"\u5B57\u53F7"},{label:"\u653E\u5927\u5B57\u53F7",icon:Le("plus"),action:function(){Su(e,1)}}]})),Du(r,i,e)}}function Du(e,t,r){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 s=document.createElement("span");s.className="file-preview-toolbar-grouplabel",s.title=u.label||"",s.innerHTML=u.icon||"",a.appendChild(s);return}a.appendChild(ku(u))}),e.appendChild(a);return}e.appendChild(ku(i))})}function ku(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(r){r.stopPropagation(),typeof e.action=="function"&&e.action(t)}),t}function ur(e,t){var r=e.querySelector(".file-preview-toolbar");if(r){r.innerHTML="";var i=q&&q.saving,a=[{label:"\u4FDD\u5B58 (Ctrl+S)",icon:Le("save"),text:"\u4FDD\u5B58",primary:!0,action:function(){xu()}},{label:"\u64A4\u9500\u6539\u52A8",icon:Le("rotate-ccw"),action:function(){Xl()}},{label:"\u9000\u51FA\u7F16\u8F91 (Esc)",icon:Le("x"),action:function(){Au()}}];Du(r,a,e),i&&r.querySelectorAll(".file-preview-toolbar-btn").forEach(function(u){u.disabled=!0})}}function $l(){if(!(!q||!q.data)){var e=q.data;if(e.kind==="text"){q.editing=!0,q.dirty=!1,q.originalContent=e.content||"";var t=q.overlay,r=t.querySelector(".file-preview-body");if(r){r.classList.add("editing"),r.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=r.querySelector(".code-editor-textarea");i&&(i.value=e.content||"",i.addEventListener("input",function(){var a=i.value!==(q.originalContent||"");a!==q.dirty&&(q.dirty=a,sr())}),i.addEventListener("keydown",function(a){if(a.key==="Tab"){a.preventDefault();var u=i.selectionStart,s=i.selectionEnd,o=" ";i.value=i.value.slice(0,u)+o+i.value.slice(s),i.selectionStart=i.selectionEnd=u+o.length,i.dispatchEvent(new Event("input"))}}),setTimeout(function(){i.focus(),i.setSelectionRange(0,0),i.scrollTop=0},30)),ji(t,e),sr()}}}}function Au(){if(!(!q||!q.editing)){var e=function(){q.editing=!1,q.dirty=!1;var t=q.overlay,r=t.querySelector(".file-preview-body");r&&r.classList.remove("editing"),Bu(t,q.data),sr()};if(q.dirty&&typeof nn=="function"){nn({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 Xl(){if(!(!q||!q.editing)){var e=q.overlay,t=e.querySelector(".code-editor-textarea");t&&(t.value=q.originalContent||"",q.dirty=!1,sr(),t.focus())}}function xu(){if(!(!q||!q.editing)&&!q.saving){var e=q.overlay,t=e.querySelector(".code-editor-textarea");if(t){var r=t.value;if(r===(q.originalContent||"")){Ft("\u6CA1\u6709\u6539\u52A8");return}q.saving=!0,ur(e,q.data),fetch("/api/file-write",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:q.path,content:r})}).then(function(i){return i.json().then(function(a){return{ok:i.ok,status:i.status,data:a}})}).then(function(i){if(q.saving=!1,!i.ok||i.data&&i.data.error){var a=i.data&&i.data.error||"\u4FDD\u5B58\u5931\u8D25 ("+i.status+")";Ft(a),ur(e,q.data);return}if(q.data.content=r,q.data.size=i.data&&i.data.size||r.length,q.originalContent=r,q.dirty=!1,Ft("\u5DF2\u4FDD\u5B58"),sr(),ur(e,q.data),typeof Mt=="function")try{Mt()}catch{}}).catch(function(i){q.saving=!1,Ft("\u4FDD\u5B58\u5931\u8D25\uFF1A"+(i&&i.message?i.message:"\u7F51\u7EDC\u9519\u8BEF")),ur(e,q.data)})}}}function sr(){if(q){var e=q.overlay;if(e){var t=e.querySelector(".file-preview-name-row");if(t){var r=t.querySelector(".file-preview-dirty");if(q.dirty){if(!r){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 r&&r.remove()}}}}function Su(e,t){var r=e.querySelector(".code-preview-content pre"),i=e.querySelector(".code-preview-lines");if(r){var a=parseFloat(getComputedStyle(r).fontSize)||13,u=Math.max(10,Math.min(22,a+t));r.style.fontSize=u+"px",i&&(i.style.fontSize=u+"px")}}function Iu(e,t){var r=e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),i=Zl();if(!i)return r;var a=[];for(var u in i){var s=i[u];s&&s.pattern&&a.push({pattern:s.pattern,cls:s.cls,priority:s.priority||5})}a.sort(function(c,d){return d.priority-c.priority});var o=a.map(function(c){return"("+c.pattern.source+")"}),l=new RegExp(o.join("|"),"gm");return r.replace(l,function(c){for(var d=0;d<a.length;d++){var f=a[d],v=new RegExp("^"+f.pattern.source+"$","gm");if(v.test(c))return'<span class="'+f.cls+'">'+c+"</span>"}return c})}function Zl(){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 ec(e){if(!e)return"";var t=p(e);t=t.replace(/```(\w*)\n([\s\S]*?)```/g,function(i,a,u){var s=Iu(u.trim(),a),o=s.replace(/_/g,"&#95;").replace(/\*/g,"&#42;");return'<pre><code class="language-'+a+'">'+o+"</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=xo(t);var r=t.split(/\n{2,}/);return t=r.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 Tu(){if(!n.selectedId||!n.gitStatus||!n.gitStatus.isGit||n.gitStatusSessionId!==n.selectedId)return"";var e=n.gitStatus.branch||"?",t=n.gitStatus.modifiedCount||0,r=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(r)+'" 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 Ni(){var e=document.getElementById("topbar-git-slot");if(e){e.innerHTML=Tu();var t=document.getElementById("topbar-git-badge");t&&t.addEventListener("click",function(r){r.preventDefault(),Lu()})}}function tc(e){if(!e)return"";var t=n.topbarMoreOpen,r=!!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,s=e.status==="running"||e.worktreeMergeStatus==="merging",o=a&&e.worktreeMergeStatus!=="merged",l=u,c=r||i||!0,d=o||l||!0,f='<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>',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="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>',b='<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>',g='<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>',w="";if(r){var F=e.provider==="codex"?"\u590D\u5236 Codex thread ID":"\u590D\u5236 Claude \u4F1A\u8BDD ID";w+='<button class="topbar-more-item" data-action="copy-claude-session-id" type="button" role="menuitem">'+v+"<span>"+F+"</span></button>"}i&&(w+='<button class="topbar-more-item" data-action="copy-cwd" type="button" role="menuitem">'+m+"<span>\u590D\u5236\u5DE5\u4F5C\u76EE\u5F55</span></button>"),w+='<button class="topbar-more-item" data-action="copy-session-id" type="button" role="menuitem">'+b+"<span>\u590D\u5236\u4F1A\u8BDD ID</span></button>";var E="";o?E+='<button class="topbar-more-item" data-action="worktree-merge" type="button" role="menuitem"'+(s?" disabled":"")+">"+g+"<span>\u5408\u5E76\u5230\u4E3B\u5206\u652F\u2026</span></button>":l&&(E+='<button class="topbar-more-item" data-action="worktree-cleanup" type="button" role="menuitem">'+g+"<span>\u91CD\u8BD5 worktree \u6E05\u7406</span></button>"),E+='<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 A=c&&d?'<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">'+w+A+E+"</div></div>"}function En(e,t){if(!e)return Promise.resolve(null);var r=t&&t.force,i=Date.now();if(!r&&n.gitStatusSessionId===e&&n.gitStatus&&i-n.gitStatusLastFetchAt<1e3)return Promise.resolve(n.gitStatus);if(n.gitStatusInflight&&n.gitStatusInflight.sessionId===e)return n.gitStatusInflight.promise;n.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 n.gitStatus=u||{isGit:!1},n.gitStatusSessionId=e,n.gitStatusLastFetchAt=Date.now(),Ni(),u}).catch(function(){return n.gitStatus={isGit:!1},n.gitStatusSessionId=e,n.gitStatusLastFetchAt=Date.now(),Ni(),null}).finally(function(){n.gitStatusLoading=!1,n.gitStatusInflight&&n.gitStatusInflight.sessionId===e&&(n.gitStatusInflight=null)});return n.gitStatusInflight={sessionId:e,promise:a},a}var Fn=null,wn=null,Am=null;function nc(e){return e==="commit-tag"||e==="commit-tag-push"||e==="commit-push"?e:"commit"}function rc(e){return e=nc(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 Lu(){if(n.selectedId){n.quickCommitOpen=!0,n.quickCommitSubmitting=!1,n.quickCommitAutoGenerating=!1,n.quickCommitError="",n.quickCommitForm={customMessage:"",tag:"",tagEdited:!1},n.quickCommitPushing=!1,n.quickCommitPushError="",n.quickCommitResult=null,n.quickCommitDragAction="commit",Gn(),pn(),Qn(),qt();var e=document.getElementById("quick-commit-modal");e&&(e.classList.remove("hidden"),n.lastFocusedElement=document.activeElement,Fi(e)),Fn&&document.removeEventListener("keydown",Fn),Fn=function(t){t.key==="Escape"&&n.quickCommitOpen&&!n.quickCommitSubmitting&&!n.quickCommitPushing&&qn()},document.addEventListener("keydown",Fn),En(n.selectedId,{force:!0}).then(function(){n.quickCommitOpen&&qt()})}}function qn(){n.quickCommitOpen=!1,n.quickCommitSubmitting=!1,n.quickCommitError="",n.quickCommitResult=null,n.quickCommitDragAction="commit";var e=document.getElementById("quick-commit-modal");e&&e.classList.add("hidden"),n.focusTrapHandler&&(document.removeEventListener("keydown",n.focusTrapHandler),n.focusTrapHandler=null),Fn&&(document.removeEventListener("keydown",Fn),Fn=null),wn&&(wn(),wn=null),n.lastFocusedElement&&typeof n.lastFocusedElement.focus=="function"&&n.lastFocusedElement.focus()}function qt(){var e=document.getElementById("quick-commit-modal");if(e){wn&&(wn(),wn=null);var t=Ou(),r=document.createElement("div");r.innerHTML=t;var i=r.querySelector("#quick-commit-modal");i&&(e.innerHTML=i.innerHTML,Mu())}}function Mu(){var e=document.getElementById("quick-commit-close-btn");e&&e.addEventListener("click",qn);var t=document.getElementById("quick-commit-cancel-btn");t&&t.addEventListener("click",qn);var r=document.getElementById("quick-commit-ai-btn");r&&r.addEventListener("click",sc);var i=document.getElementById("quick-commit-message");i&&(i.addEventListener("input",function(){n.quickCommitForm.customMessage=i.value}),i.addEventListener("keydown",function(s){(s.metaKey||s.ctrlKey)&&s.key==="Enter"&&(s.preventDefault(),On("commit"))}));var a=document.getElementById("quick-commit-tag");a&&(a.addEventListener("input",function(){n.quickCommitForm.tag=a.value,n.quickCommitForm.tagEdited=!0}),a.addEventListener("keydown",function(s){s.key==="Enter"&&(s.preventDefault(),On("commit-tag"))}));var u=document.getElementById("quick-commit-push-after-btn");u&&u.addEventListener("click",function(){var s=n.quickCommitResult||{};oc({pushCommits:!0,pushTags:!!s.tagName,closeOnSuccess:!0})}),uc()}function ic(e){var t=!!(e&&e.tag),r=!!(e&&e.push);return t&&r?"commit-tag-push":t?"commit-tag":r?"commit-push":"commit"}var ac=58,Wr=10;function qu(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 uc(){var e=document.getElementById("qc-dock-field"),t=document.getElementById("qc-dock-stage"),r=document.getElementById("qc-dock-launch"),i=document.getElementById("qc-dock-cluster");if(!e||!t||!r||!i)return;var a=["commit","tag","push"],u={};if(a.forEach(function(B){u[B]=e.querySelector('[data-chip="'+B+'"]')}),!u.commit||!u.tag||!u.push)return;u.sub=e.querySelector('[data-chip="sub"]');var s=!!u.sub,o=s?a.concat(["sub"]):a;function l(B){return u[B]?u[B].offsetWidth:90}function c(){return u.commit?u.commit.offsetHeight:38}function d(){return window.matchMedia&&window.matchMedia("(max-width: 720px)").matches}function f(){var B=e.clientWidth,T=e.clientHeight,I=c(),V=l("commit"),re=l("tag"),te=l("push");if(d()&&s){var $=Math.max(8,T*.2-I/2),ie=Math.min(T-I-8,T*.7-I/2),U=function(ue){return Math.max(8,B*.27-ue/2)},M=function(ue){return Math.min(B-ue-8,B*.73-ue/2)};return{commit:{x:U(V),y:$},tag:{x:M(re),y:$},push:{x:U(te),y:ie},sub:{x:M(l("sub")),y:ie}}}var H=d(),N=H?Math.max(8,T*.18-I/2):Math.max(8,T*.12),Y=H?Math.min(T-I-8,T*.72-I/2):Math.min(T-I-8,T*.88-I),K=H?.24:.28,X=H?.76:.72,ae={commit:{x:Math.max(8,(B-V)/2),y:N},tag:{x:Math.max(8,B*K-re/2),y:Y},push:{x:Math.min(B-te-8,B*X-te/2),y:Y}};if(s){var le=l("sub");ae.sub={x:Math.min(B-le-8,B*.94-le/2),y:Math.max(8,Math.min(T-I-8,(T-I)/2))}}return ae}var v={};function m(B,T,I){u[B]&&(u[B].style.transform="translate("+T.toFixed(1)+"px,"+I.toFixed(1)+"px)")}function b(B){v=f(),o.forEach(function(T){u[T].classList.toggle("qc-chip--anim",!!B),m(T,v[T].x,v[T].y)})}b(!1);var g=null;function y(B,T,I){var V=c(),re=5,te=o.filter(function(H){return B.indexOf(H)>=0}),$=te.reduce(function(H,N){return H+l(N)},0)+Math.max(0,te.length-1)*re,ie=e.clientHeight,U=T-$/2,M=Math.max(2,Math.min(ie-V-2,I-V/2));return te.forEach(function(H){m(H,U,M),U+=l(H)+re}),{x:T-$/2-7,y:M-7,w:$+14,h:V+14}}function w(B){i.classList.add("is-active"),i.style.transform="translate("+B.x.toFixed(1)+"px,"+B.y.toFixed(1)+"px)",i.style.width=B.w.toFixed(1)+"px",i.style.height=B.h.toFixed(1)+"px"}function F(){i.classList.remove("is-active")}function E(B){return ic({commit:!0,tag:B.indexOf("tag")>=0,push:B.indexOf("push")>=0})}function A(B){return B.indexOf("sub")>=0}function x(B){var T=document.getElementById("qc-dock-launch-label");T&&(T.textContent=B)}function S(B,T){var I=r.getBoundingClientRect();return B>=I.left&&B<=I.right&&T>=I.top&&T<=I.bottom}function P(B){return function(T){if(!(u[B].disabled||zr())){g={anchor:B,pointerId:T.pointerId,startX:T.clientX,startY:T.clientY,moved:!1,members:[B]},o.forEach(function(I){u[I].classList.remove("qc-chip--anim")}),u[B].classList.add("is-grabbing");try{u[B].setPointerCapture(T.pointerId)}catch{}t.classList.add("is-dragging"),T.preventDefault()}}}function z(B){if(!(!g||g.pointerId!==B.pointerId)){(Math.abs(B.clientX-g.startX)>3||Math.abs(B.clientY-g.startY)>3)&&(g.moved=!0);var T=e.getBoundingClientRect(),I=B.clientX-T.left,V=B.clientY-T.top;if(a.forEach(function(H){if(!(g.members.indexOf(H)>=0)){var N=v[H].x+l(H)/2,Y=v[H].y+c()/2,K=I-N,X=V-Y;Math.sqrt(K*K+X*X)<ac&&(g.members.push(H),u[H].classList.remove("qc-chip--anim"),u[H].classList.add("is-attached"))}}),s&&g.members.indexOf("sub")<0){var re=v.sub.x-Wr,te=v.sub.y-Wr,$=v.sub.x+l("sub")+Wr,ie=v.sub.y+c()+Wr;I>=re&&I<=$&&V>=te&&V<=ie&&(g.members.push("sub"),u.sub.classList.remove("qc-chip--anim"),u.sub.classList.add("is-attached"))}var U=y(g.members,I,V),M=S(B.clientX,B.clientY);t.setAttribute("data-hot",M?"1":"0"),t.setAttribute("data-action",E(g.members)),g.members.length>1?w(U):F(),x(M?"\u677E\u624B\u6267\u884C":"\u63D0\u4EA4")}}function G(B,T){if(!(!g||g.pointerId!==B.pointerId)){var I=g;g=null,t.classList.remove("is-dragging"),t.setAttribute("data-hot","0"),x("\u63D0\u4EA4"),F(),o.forEach(function(re){u[re].classList.remove("is-grabbing","is-attached")});try{u[I.anchor].releasePointerCapture(I.pointerId)}catch{}if(!T&&!I.moved){var V=qu(I.anchor);On(V.action,V.sub);return}if(!T&&S(B.clientX,B.clientY)){On(E(I.members),A(I.members));return}t.setAttribute("data-action","commit"),b(!0)}}var L=function(){n.quickCommitOpen&&!g&&b(!1)};window.addEventListener("resize",L),o.forEach(function(B){var T=u[B];T.addEventListener("pointerdown",P(B)),T.addEventListener("pointermove",z),T.addEventListener("pointerup",function(I){G(I,!1)}),T.addEventListener("pointercancel",function(I){G(I,!0)}),T.addEventListener("keydown",function(I){if(!(T.disabled||zr())&&(I.key==="Enter"||I.key===" "||I.key==="Spacebar")){I.preventDefault();var V=qu(B);On(V.action,V.sub)}})}),r.addEventListener("click",function(){r.disabled||zr()||g||On("commit")}),wn=function(){window.removeEventListener("resize",L),g=null}}function sc(){if(!(!n.selectedId||n.quickCommitGenerating)){var e=document.getElementById("quick-commit-message");e&&(n.quickCommitForm.customMessage=e.value);var t=document.getElementById("quick-commit-tag");t&&(n.quickCommitForm.tag=t.value),n.quickCommitGenerating=!0,n.quickCommitError="",qt(),fetch("/api/sessions/"+encodeURIComponent(n.selectedId)+"/generate-commit-message",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({})}).then(function(r){return r.json().then(function(i){return{ok:r.ok,data:i}})}).then(function(r){if(!r.ok)throw new Error(r.data&&r.data.error||"AI \u751F\u6210\u5931\u8D25\u3002");var i=r.data||{},a=typeof i.message=="string"?i.message:"",u=typeof i.suggestedTag=="string"?i.suggestedTag.trim():"",s=(n.quickCommitForm.customMessage||"").trim();!s&&a&&(n.quickCommitForm.customMessage=a),u&&(n.quickCommitForm.tagEdited||(n.quickCommitForm.tag=u),n.quickCommitDragAction="commit-tag")}).catch(function(r){n.quickCommitError=r&&r.message||"AI \u751F\u6210\u5931\u8D25\u3002"}).finally(function(){n.quickCommitGenerating=!1,n.quickCommitOpen&&qt()})}}function On(e,t){if(!(!n.selectedId||n.quickCommitSubmitting)){var r=document.getElementById("quick-commit-message");r&&(n.quickCommitForm.customMessage=r.value);var i=document.getElementById("quick-commit-tag");i&&(n.quickCommitForm.tag=i.value);var a=n.quickCommitForm||{},u=rc(e||n.quickCommitDragAction||"commit"),s=u.withTag,o=s?(a.tag||"").trim():"",l=(a.customMessage||"").trim(),c=!l,d={branch:(n.gitStatus||{}).branch||"",commitHash:(n.gitStatus||{}).lastCommit&&(n.gitStatus||{}).lastCommit.shortHash?(n.gitStatus||{}).lastCommit.shortHash:(n.gitStatus||{}).head?(n.gitStatus||{}).head.substring(0,7):"",commitSubject:(n.gitStatus||{}).lastCommit&&(n.gitStatus||{}).lastCommit.subject?(n.gitStatus||{}).lastCommit.subject:"",tag:(n.gitStatus||{}).latestTag||""},f={autoMessage:c,customMessage:c?"":l,tag:o,autoTag:!!(s&&!o),push:!!u.push,submodule:!!t};n.quickCommitSubmitting=!0,n.quickCommitSubmoduleIntent=!!t,n.quickCommitAutoGenerating=c||f.autoTag,n.quickCommitError="",n.quickCommitPushError="",n.quickCommitResult=null,n.quickCommitDragAction=u.action,qt(),fetch("/api/sessions/"+encodeURIComponent(n.selectedId)+"/quick-commit",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify(f)}).then(function(v){return v.json().then(function(m){return{ok:v.ok,data:m}})}).then(function(v){if(!v.ok)throw new Error(v.data&&v.data.error||"\u5FEB\u6377\u63D0\u4EA4\u5931\u8D25\u3002");var m=v.data||{},b=m.commit&&m.commit.hash?m.commit.hash.substring(0,7):"",g=m.tag&&m.tag.name?m.tag.name:"",y=Array.isArray(m.submoduleCommits)?m.submoduleCommits:[],w=y.length>0?"\u5DF2\u5148\u63D0\u4EA4 "+y.length+" \u4E2A submodule\uFF08"+y.map(function(E){return E.path}).join("\u3001")+"\uFF09\uFF0C":"",F=w+"\u5DF2\u63D0\u4EA4"+(b?" "+b:"")+(g?"\uFF0C\u5DF2\u6253 Tag "+g:"");n.quickCommitResult={action:u.action,includeSubmodule:!!t,pushed:!!m.pushed,pushError:m.pushError||"",commitHash:b,commitMessage:m.commit&&m.commit.message?m.commit.message:l,tagName:g,oldTag:d.tag,oldCommitHash:d.commitHash,oldCommitSubject:d.commitSubject,submoduleCount:y.length},u.push&&!m.pushError?(typeof k=="function"&&k(F+"\uFF0C\u5DF2\u63A8\u9001\u3002","success"),qn()):(typeof k=="function"&&k(F+(m.pushError?"\uFF1Bpush \u5931\u8D25\uFF1A"+m.pushError:"\u3002"),m.pushError?"error":"success"),n.selectedId&&En(n.selectedId,{force:!0}).then(function(){n.quickCommitOpen&&qt()}))}).catch(function(v){n.quickCommitError=v&&v.message||"\u5FEB\u6377\u63D0\u4EA4\u5931\u8D25\u3002"}).finally(function(){n.quickCommitSubmitting=!1,n.quickCommitAutoGenerating=!1,n.quickCommitOpen&&qt()})}}function oc(e){if(!(!n.selectedId||n.quickCommitPushing)){var t=!!(e&&e.pushCommits),r=!!(e&&e.pushTags),i=!!(e&&e.closeOnSuccess);if(!(!t&&!r)){var a=n.quickCommitResult||{},u=!!a.includeSubmodule;n.quickCommitPushing=!0,n.quickCommitPushError="",qt(),fetch("/api/sessions/"+encodeURIComponent(n.selectedId)+"/git/push",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({pushCommits:t,pushTags:r,submodule:u,tag:a.tagName||""})}).then(function(s){return s.json().then(function(o){return{ok:s.ok,data:o}})}).then(function(s){var o=s.data||{};if(!s.ok)throw new Error(o&&o.error||"\u63A8\u9001\u5931\u8D25\u3002");if(o.error){n.quickCommitPushError=o.error,typeof k=="function"&&k("\u63A8\u9001\u5931\u8D25\uFF1A"+o.error,"error");return}var l=[];o.pushedCommits&&l.push("commits"),o.pushedTags&&l.push("tags");var c=l.length?l.join(" \u548C "):"\uFF08\u65E0\u5185\u5BB9\uFF09";typeof k=="function"&&k("\u5DF2\u63A8\u9001 "+c,"success"),n.quickCommitResult&&(n.quickCommitResult.pushed=!0),i?(qn(),n.selectedId&&En(n.selectedId,{force:!0})):n.selectedId&&En(n.selectedId,{force:!0}).then(function(){n.quickCommitOpen&&qt()})}).catch(function(s){n.quickCommitPushError=s&&s.message||"\u63A8\u9001\u5931\u8D25\u3002",typeof k=="function"&&k(n.quickCommitPushError,"error")}).finally(function(){n.quickCommitPushing=!1,n.quickCommitOpen&&qt()})}}}function lc(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 r="",i=0;i<e.length;i++)if(e[i]&&e[i]!=="."&&e[i]!==" "){r=e[i];break}r=(r||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[r]||{cls:"other",title:"\u5DF2\u66F4\u6539"};return{letter:r,cls:u.cls,title:u.title}}function xm(e){var t=e.map(function(r){var i=lc(r.status||""),a=r.path||"",u=a.lastIndexOf("/"),s=u>=0?a.slice(0,u+1):"",o=u>=0?a.slice(u+1):a,l="";if(r.isSubmodule){var c=r.submoduleState||{},d=[];c.commitChanged&&d.push("\u65B0\u6307\u9488"),c.hasTrackedChanges&&d.push("dirty"),c.hasUntracked&&d.push("\u672A\u8DDF\u8E2A");var f=d.length?"submodule \xB7 "+d.join(" / "):"submodule";l='<span class="qc-submodule-badge">'+p(f)+"</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">'+(s?'<span class="qc-file-dir">'+p(s)+"</span>":"")+'<span class="qc-file-name">'+p(o)+"</span></span>"+l+"</div>"}).join("");return t||'<div class="qc-empty">\u6CA1\u6709\u53EF\u63D0\u4EA4\u7684\u6539\u52A8\u3002</div>'}function zr(){return n.quickCommitSubmitting||n.quickCommitPushing}function Vr(e,t,r,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">'+r+"</div></div></div>"}function cc(){var e=n.gitStatus||{};if(e.hasSubmodule===!0)return!0;for(var t=e.files||[],r=0;r<t.length;r++)if(t[r]&&t[r].isSubmodule===!0)return!0;return!1}function dc(e){var t=!e||zr(),r=cc();if(n.quickCommitSubmitting){var i=n.quickCommitSubmoduleIntent?"\uFF08\u542B submodule\uFF09":"",a=(n.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(o,l,c){return'<button type="button" class="qc-chip qc-chip--'+o+'" data-chip="'+o+'"'+(c?' title="'+p(c)+'"':"")+(t?" disabled":"")+'><span class="qc-chip-dot" aria-hidden="true"></span><span class="qc-chip-label">'+l+"</span></button>"}var s=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"+(r?" \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")+(r?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(s)+"</div></div>"}function fc(){var e=n.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>',r=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"'+(n.quickCommitPushing?" disabled":"")+">"+(n.quickCommitPushing?"\u63A8\u9001\u4E2D...":"Push & Close")+"</button>";return'<section class="qc-result-panel">'+Vr("Commit",t,r,"")+Vr("Tag",i,a,"qc-pair--tag")+(e.pushError||n.quickCommitPushError?'<p class="error-message">'+p(e.pushError||n.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 Ou(){var e=n.gitStatus||{},t=n.quickCommitForm||{customMessage:"",tag:"",tagEdited:!1},r=(e.modifiedCount||0)>0,i=n.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>',s=e.latestTag?"<code>"+p(e.latestTag)+"</code>":'<span class="qc-muted">\u65E0 tag</span>',o='<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||"")+'"'+(n.quickCommitSubmitting?" disabled":"")+">",l='<textarea id="quick-commit-message" class="field-input qc-message-input" rows="3" placeholder="New commit message" '+(n.quickCommitSubmitting?"disabled":"")+">"+p(t.customMessage||"")+"</textarea>",c=[];c.push(e.branch||"(no branch)"),c.push(r?(e.modifiedCount||0)+" \u4E2A\u6539\u52A8":"\u5DE5\u4F5C\u533A\u5E72\u51C0"),typeof e.ahead=="number"&&e.ahead>0&&c.push("\u2191"+e.ahead),typeof e.behind=="number"&&e.behind>0&&c.push("\u2193"+e.behind);var d=n.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>"+Vr("Commit",u,l,"qc-pair--commit")+Vr("Tag",s,o,"qc-pair--tag")+(n.quickCommitError?'<p class="error-message">'+p(n.quickCommitError)+"</p>":"")+dc(r)+'<div class="qc-modal-actions"><button id="quick-commit-cancel-btn" class="btn btn-ghost btn-sm" type="button">\u53D6\u6D88</button></div></section>',f=fc();return'<section id="quick-commit-modal" class="modal-backdrop'+(n.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(c.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">'+d+f+"</div></div></section>"}function pc(){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 vc(){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">\u4E3B\u673A\u3001\u6A21\u5F0F\u3001\u8BED\u8A00\u3001\u76EE\u5F55</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">'+J("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 id="check-update-button" class="btn btn-secondary btn-sm">\u68C0\u67E5\u66F4\u65B0</button><button id="do-update-button" class="btn btn-primary btn-sm hidden">\u66F4\u65B0\u5230\u6700\u65B0\u7248</button><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">'+J("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">'+J("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">'+J("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">'+J("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">'+J("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">'+J("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">'+J("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">'+J("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\u76D1\u542C\u5730\u5740\u3001\u9ED8\u8BA4\u6A21\u5F0F\u3001\u8BED\u8A00\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><div class="field"><label class="field-label" for="cfg-default-model">\u9ED8\u8BA4\u6A21\u578B</label><div class="settings-row-with-action"><select id="cfg-default-model" class="field-input field-select"><option value="">\u8DDF\u968F Claude Code \u9ED8\u8BA4</option></select><button type="button" id="cfg-default-model-refresh" class="btn btn-secondary btn-sm" title="\u5237\u65B0\u6A21\u578B\u5217\u8868">\u5237\u65B0</button></div><p class="field-hint" id="cfg-default-model-version">\u65B0\u5EFA\u4F1A\u8BDD\u65F6\u9ED8\u8BA4\u4F7F\u7528\u8BE5\u6A21\u578B\uFF1B\u8FD0\u884C\u4E2D\u7684\u4F1A\u8BDD\u53EF\u5728\u8F93\u5165\u6846\u5207\u6362\u3002</p></div><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">'+J("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">'+mi.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">'+mi.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">\u{1F512}</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">\u{1F510}</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 Sm(e){var t=Je();return e.selectedId?"":'<div class="folder-picker-compact" id="folder-picker-container"><div class="folder-picker-compact-row"><span class="folder-picker-compact-icon">'+J("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">'+J("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 Im(e){var t=Je(),r=t;if(e.selectedId){var i=e.sessions.find(function(u){return u.id===e.selectedId});r=i&&i.cwd?i.cwd:t}var a=r;return a.length>28&&(a="..."+a.slice(-25)),'<div class="working-dir-indicator" id="working-dir-indicator" title="'+p(r)+'" data-path="'+p(r)+'"><span class="working-dir-indicator-icon">'+J("folder",{size:12,strokeWidth:1.7})+'</span><span class="working-dir-indicator-path">'+p(a)+"</span></div>"}function Pu(e){if(!e)return"";var t=Date.now(),r=new Date(e).getTime(),i=Math.max(0,t-r),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 s=Math.floor(u/60);if(s<24)return s+"\u5C0F\u65F6\u524D";var o=Math.floor(s/24);return o<30?o+"\u5929\u524D":Math.floor(o/30)+"\u4E2A\u6708\u524D"}function Hu(e){if(!e)return"";var t=Date.now(),r=new Date(e).getTime(),i=Math.max(0,t-r),a=Math.floor(i/1e3),u=Math.floor(a/60),s=Math.floor(u/60);return s>0?s+"h"+(u%60>0?u%60+"m":""):u>0?u+"m":a+"s"}function or(e){if(!e)return"";if(e.archived)return"\u5DF2\u5F52\u6863";if(e.permissionBlocked)return"\u7B49\u5F85\u6388\u6743";if(oe(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 _u(e){return e?e.archived?"archived":e.permissionBlocked?"permission-blocked":oe(e)&&e.structuredState&&e.structuredState.inFlight?"running":e.status||"":""}function mc(e){return e?e.permissionBlocked?"\u7B49\u5F85\u4F60\u7684\u6388\u6743":e.status!=="running"?"":e.id===n.selectedId&&n.currentTask&&n.currentTask.title?n.currentTask.title:e.currentTaskTitle?e.currentTaskTitle:"":""}function gc(e){var t=e&&e.messages;if(!t||t.length===0)return"";for(var r=t.length-1;r>=0;r--){var i=t[r];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 s=0;s<a.length;s++){var o=a[s];if(!(!o||o.type!=="text"||!o.text)&&!o.__queued){var l=String(o.text).trim();if(l)return l}}}}return""}function hc(e){var t=e&&e.messages;if(!t||t.length===0)return"";for(var r=t.length-1;r>=0;r--){var i=t[r];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 s=a[u].text.trim();s=s.replace(/^#+\s+/gm,"").replace(/\*\*/g,"").replace(/`/g,"");var o=s.split(`
8
- `)[0].trim();return o.slice(0,100)}}}return""}function Ri(e,t){var r=e.id===n.selectedId?" active":"",i=n.sessionsManageMode&&n.selectedSessionIds[e.id]?" selected":"",a=or(e),u=_u(e),s="",o=Ju("sessions",e.id,"\u9009\u62E9\u4F1A\u8BDD "+e.command);if((e.provider==="claude"||e.provider==="codex")&&e.claudeSessionId&&e.status!=="running"&&!n.sessionsManageMode&&!oe(e)){var l=e.provider==="codex"?"\u6062\u590D Codex \u4F1A\u8BDD":"\u6062\u590D Claude \u4F1A\u8BDD";s='<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 c=!n.sessionsManageMode&&e.worktreeEnabled&&e.worktree&&e.worktree.branch&&e.worktree.path,d=e.worktreeMergeStatus==="merged"&&e.worktreeMergeInfo&&e.worktreeMergeInfo.cleanupDone===!1,f=e.status==="running"||e.worktreeMergeStatus==="merging",v=d?"\u91CD\u8BD5\u6E05\u7406 worktree":"\u5408\u5E76\u5230\u4E3B\u5206\u652F",m=c&&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)+'"'+(f?" 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>':d?'<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>':"",b=n.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>',g='<span class="session-actions">'+s+m+b+"</span>",y=e.summary?'<div class="session-title">'+p(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>",w=mc(e),F="";e.status==="running"&&w&&(F='<div class="session-activity">'+p(w)+"</div>");var E="";e.status==="running"?E='<span class="session-time" title="\u5DF2\u8FD0\u884C '+p(Hu(e.startedAt))+'">'+p(Hu(e.startedAt))+"</span>":e.endedAt?E='<span class="session-time" title="'+p(new Date(e.endedAt).toLocaleString())+'">'+p(Pu(e.endedAt))+"</span>":e.startedAt&&(E='<span class="session-time" title="'+p(new Date(e.startedAt).toLocaleString())+'">'+p(Pu(e.startedAt))+"</span>");var A=ju(e),x=e.autoRecovered?'<span class="session-recovery-hint">\u81EA\u52A8\u6062\u590D</span>':"";return'<div class="session-item'+r+i+'" data-session-id="'+e.id+'" role="button" tabindex="0"><div class="session-item-content"><div class="session-item-row">'+o+'<div class="session-main"><div class="session-title-row">'+y+E+"</div>"+F+'<div class="session-meta"><span class="session-status '+u+'">'+p(a)+"</span>"+A+x+"</div></div>"+g+"</div></div></div>"}function yc(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 bc(e){var t=yc(e);return t?'<span class="session-kind-badge worktree-merge '+p(e.worktreeMergeStatus||"")+'">'+p(t)+"</span>":""}function ju(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 r=t.length>0?' title="'+p(t.join(`
9
- `))+'"':"";return'<span class="session-kind-badge worktree"'+r+">Worktree</span>"+bc(e)}function Tm(e){if(!e)return"";var t=oe(e)?'<span class="session-kind-badge structured">Structured</span>':'<span class="session-kind-badge pty">PTY</span>';return t+ju(e)}function Ec(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(r){var i=r.id===e?" active":"";return'<button type="button" class="mode-card'+i+'" data-mode="'+r.id+'"><span class="mode-card-label">'+r.label+'</span><span class="mode-card-desc">'+r.desc+"</span></button>"}).join("")}function Fc(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(r){var i=r.id===e?" active":"";return'<button type="button" class="mode-card provider-card'+i+'" data-provider="'+r.id+'"><span class="mode-card-label">'+r.label+'</span><span class="mode-card-desc">'+r.desc+"</span></button>"}).join("")}function wc(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(r){var i=r.id===e?" active":"",a="";return'<button type="button" class="mode-card session-kind-card'+i+a+'" data-session-kind="'+r.id+'"><span class="mode-card-label">'+r.label+'</span><span class="mode-card-desc">'+r.desc+"</span></button>"}).join("")}function Lm(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 Nu(e){var t=n.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 Cc(){var e=vt(),t=Nt(e,n.modeValue||n.chatMode||"default"),r=n.sessionCreateKind||"structured",i=n.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">'+Fc(e)+'</div></div><div class="field"><label class="field-label">\u4F1A\u8BDD\u7C7B\u578B</label><div id="session-kind-cards" class="mode-cards">'+wc(r)+'</div><div class="field-hint session-kind-hint-row"><span id="session-kind-description">'+p(Nu(r))+'</span></div></div><div class="field"><label class="field-label">\u6A21\u5F0F</label><div id="mode-cards" class="mode-cards">'+Ec(t)+'</div><p id="mode-description" class="field-hint">'+p(Lo(e,t))+'</p></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(Je())+'" /><div id="cwd-suggestions" class="suggestions hidden"></div></div><p class="field-hint">\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><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 Ru(){var e=Date.now()-864e5,t=[];return n.sessions.forEach(function(r){if(!r.archived){var i=r.startedAt?new Date(r.startedAt).getTime():0;t.push({kind:"session",ref:r,t:isFinite(i)?i:0})}}),n.claudeHistoryLoaded&&Pn().forEach(function(r){if(r.timestamp){var i=new Date(r.timestamp).getTime();!isFinite(i)||i<=e||t.push({kind:"history",ref:r,t:i})}}),t.sort(function(r,i){return i.t-r.t}),t}function Bc(){var e=n.sessions.filter(function(a){return a.archived}),t=[];t.push(Wu());var r=Ru(),i=Ic();return r.length>0&&t.push(xc(r)),e.length>0&&t.push(Ac(e)),r.length===0&&e.length===0&&!i?Wu()+'<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>':(i&&t.push(i),t.join(""))}function Dc(){return!!n.sidebarPinned&&!!n.sidebarCollapsed}function kc(){var e=Ru(),t=e.map(function(i,a){var u=a+1;if(i.kind==="session"){var s=i.ref,o=s.id===n.selectedId?" active":"",l=s.summary||s.command||"\u4F1A\u8BDD "+u;return'<button class="sidebar-collapsed-tile'+o+'" type="button" data-collapsed-session-id="'+p(s.id)+'" title="'+p(l)+'">'+u+"</button>"}var c=i.ref,d=c.firstUserMessage||"(\u7A7A\u4F1A\u8BDD)",f=d+" \xB7 "+Yu(c.timestamp);return'<button class="sidebar-collapsed-tile history" type="button" data-collapsed-history-id="'+p(c.claudeSessionId)+'" data-cwd="'+p(c.cwd||"")+'" title="'+p(f)+'">'+u+"</button>"}).join(""),r='<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+r+"</div>"}function Wi(){return Dc()?kc():Bc()}function Wu(){if(!n.sessionsManageMode)return'<div class="session-manage-bar"><span class="sidebar-intro">\u6700\u8FD1\u7684\u4F1A\u8BDD\u8BB0\u5F55</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=zu().length,t=Vu().length,r=e+t,i=r>0,a=Mc(),u=a>0&&r>=a,s=u?"\u53D6\u6D88\u5168\u9009":"\u5168\u9009",o=u?"clear-selection":"select-all-visible",l=a===0?" disabled":"",c='<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>',d=i?'<span class="session-manage-count">'+r+'</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">'+c+'<div class="session-manage-summary">'+d+'</div><div class="session-manage-actions"><button class="btn btn-ghost btn-xs" data-action="'+o+'" type="button"'+l+">"+s+'</button><button class="btn btn-danger btn-xs" data-action="delete-selected" type="button"'+(i?"":" disabled")+">\u5220\u9664"+(i?" "+r:"")+"</button></div></div>"}function Mm(e,t,r){return'<section class="session-group"><div class="session-group-title">'+p(e)+"</div>"+t.map(function(i){return Ri(i,r)}).join("")+"</section>"}function Ac(e){var t=!!n.archivedExpanded,r=t?"&#9662;":"&#9656;",i='<div class="session-group-title claude-history-toggle" data-action="toggle-archived-group"><span class="chevron">'+r+'</span> \u5DF2\u5F52\u6863 <span class="history-count">'+e.length+"</span></div>";if(!t)return'<section class="session-group">'+i+"</section>";var a=e.map(function(u){return Ri(u,"sessions")}).join("");return'<section class="session-group">'+i+a+"</section>"}function xc(e){var t='<section class="session-group session-group--recent">';return t+=e.map(function(r){return r.kind==="session"?Ri(r.ref,"sessions"):zi(r.ref,"history")}).join(""),t+="</section>",t}function Sc(){var e=Date.now()-864e5;return Pn().filter(function(t){return!t.timestamp||new Date(t.timestamp).getTime()<=e})}function Ic(){var e=Sc(),t=!!n.claudeHistoryLoaded,r=Wc(),i=!!n.codexHistoryLoaded,a=t&&i,u=(t?e.length:0)+(i?r.length:0);if(a&&u===0)return"";var s=!!n.claudeHistoryExpanded,o=s?"&#9662;":"&#9656;",l=a?u>999?"999+":String(u):"\xB7\xB7\xB7",c='<div class="session-group-title claude-history-toggle session-history-toggle" id="claude-history-toggle" role="button" tabindex="0" aria-expanded="'+s+'" title="'+(s?"\u6536\u8D77\u5386\u53F2\u4F1A\u8BDD":"\u5C55\u5F00\u5386\u53F2\u4F1A\u8BDD")+'"><span class="chevron">'+o+'</span> \u5386\u53F2\u4F1A\u8BDD <span class="history-count'+(a?"":" loading")+'">'+l+"</span></div>",d=s?'<div class="session-history-body">'+Tc(e)+_c(r)+"</div>":"";return'<section class="session-group session-group--history">'+c+d+"</section>"}function Tc(e){if(!n.claudeHistoryLoaded)return'<div class="claude-history-loading">\u626B\u63CF\u5386\u53F2\u4F1A\u8BDD\u4E2D\u2026</div>';if(e.length===0)return"";var t={},r=[];e.forEach(function(u){t[u.cwd]||(t[u.cwd]=[],r.push(u.cwd)),t[u.cwd].push(u)});var i='<div class="sidebar-history-toolbar"><button class="btn btn-ghost btn-xs sidebar-history-clear" data-action="clear-all-history" type="button">\u6E05\u7A7A\u5168\u90E8</button></div>',a="";return r.forEach(function(u){var s=u.split("/").filter(Boolean).slice(-3).join("/"),o=!!n.claudeHistoryExpandedDirs[u];a+=jc(u,s,t[u].length,o),o&&(a+=t[u].map(function(l){return zi(l,"history")}).join(""))}),i+'<div class="sidebar-history-scroll">'+a+"</div>"}function Pn(){var e=new Set;return n.sessions.forEach(function(t){t.claudeSessionId&&e.add(t.claudeSessionId)}),n.claudeHistory.filter(function(t){return t.hasConversation&&!t.managedByWand&&!e.has(t.claudeSessionId)})}function zu(){return Object.keys(n.selectedSessionIds).filter(function(e){return!!n.selectedSessionIds[e]})}function Vu(){return Object.keys(n.selectedClaudeHistoryIds).filter(function(e){return!!n.selectedClaudeHistoryIds[e]})}function Ur(){n.selectedSessionIds={},n.selectedClaudeHistoryIds={}}function Lc(e){n.sessionsManageMode=typeof e=="boolean"?e:!n.sessionsManageMode,n.sessionsManageMode&&!n.claudeHistoryLoaded&&Kr().then(ve),n.sessionsManageMode||(Ur(),Br()),ve()}function Uu(){return n.sessions.slice()}function Mc(){return Uu().length+Pn().length}function Ku(){if(!n.claudeHistoryLoaded){Kr().then(Ku);return}n.claudeHistoryExpanded=!0;var e={};Uu().forEach(function(r){e[r.id]=!0});var t={};Pn().forEach(function(r){t[r.claudeSessionId]=!0}),n.selectedSessionIds=e,n.selectedClaudeHistoryIds=t,ve()}function qc(){Ur(),ve()}function lr(e,t){if(!(!n.sessionsManageMode||!t)){var r=e==="history"?n.selectedClaudeHistoryIds:n.selectedSessionIds;r[t]?delete r[t]:r[t]=!0,ve()}}function Ju(e,t,r){if(!n.sessionsManageMode)return"";var i=e==="history"?!!n.selectedClaudeHistoryIds[t]:!!n.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(r)+'"><span></span></label>'}function Hn(e,t){return typeof window.wandConfirm=="function"?window.wandConfirm(e,Object.assign({type:"danger",danger:!0,okLabel:"\u5220\u9664"},t||{})):Promise.resolve(window.confirm(e))}function Oc(){var e=zu(),t=Vu(),r=e.length+t.length;r&&Hn("\u786E\u8BA4\u5220\u9664\u6240\u9009 "+r+" \u9879\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002",{title:"\u5220\u9664\u6240\u9009 "+r+" \u9879"}).then(function(i){if(i){var a=[];e.length>0&&a.push(fetch("/api/sessions/batch-delete",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({sessionIds:e})}).then(function(u){return u.json()})),t.length>0&&a.push(fetch("/api/claude-history/batch-delete",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({claudeSessionIds:t})}).then(function(u){return u.json()})),Promise.all(a).then(function(){return e.indexOf(n.selectedId)!==-1&&(n.selectedId=null,ye()),n.claudeHistory=n.claudeHistory.filter(function(u){return t.indexOf(u.claudeSessionId)===-1}),Ur(),jt()}).catch(function(){var u=document.getElementById("action-error");Ne(u,"\u65E0\u6CD5\u6279\u91CF\u5220\u9664\u6240\u9009\u9879\u76EE\u3002")})}})}function Pc(){var e=Date.now()-864e5,t=Pn().filter(function(r){return!r.timestamp||new Date(r.timestamp).getTime()<=e});if(t.length)return Hn("\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(r){if(r){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);n.claudeHistory=n.claudeHistory.filter(function(u){return i.indexOf(u.claudeSessionId)===-1}),Ur(),ve()}).catch(function(){var a=document.getElementById("action-error");Ne(a,"\u65E0\u6CD5\u6E05\u7A7A\u5386\u53F2\u4F1A\u8BDD\u3002")})}})}function Hc(e,t,r,i){var a=i?"\u25BE":"\u25B8";return'<div class="claude-history-directory-header codex-history-directory-header" data-action="toggle-codex-history-directory" data-cwd="'+p(e)+'" role="button" tabindex="0"><div class="session-group-title claude-history-directory-title"><span class="chevron">'+a+'</span><span class="claude-history-directory-label">'+p(t)+" ("+r+")</span></div></div>"}function _c(e){if(!n.codexHistoryLoaded)return'<div class="claude-history-loading">\u626B\u63CF Codex \u5386\u53F2\u4F1A\u8BDD\u4E2D\u2026</div>';if(e.length===0)return"";var t={},r=[];e.forEach(function(a){t[a.cwd]||(t[a.cwd]=[],r.push(a.cwd)),t[a.cwd].push(a)});var i='<div class="sidebar-history-section-label">Codex</div>';return r.forEach(function(a){var u=a.split("/").filter(Boolean).slice(-3).join("/"),s=!!n.codexHistoryExpandedDirs[a];i+=Hc(a,u,t[a].length,s),s&&(i+=t[a].map(function(o){return zi(o,"codex")}).join(""))}),'<div class="sidebar-history-scroll codex-history-scroll">'+i+"</div>"}function jc(e,t,r,i){var a=i?"&#9662;":"&#9656;";return'<div class="claude-history-directory-header" data-action="toggle-history-directory" data-cwd="'+p(e)+'" role="button" tabindex="0"><div class="session-group-title claude-history-directory-title"><span class="chevron">'+a+'</span><span class="claude-history-directory-label">'+p(t)+" ("+r+')</span><button class="btn btn-danger btn-xs claude-history-directory-clear-btn" data-action="delete-history-directory" data-cwd="'+p(e)+'" type="button" aria-label="\u6E05\u7A7A\u6B64\u76EE\u5F55\u7684\u5386\u53F2\u4F1A\u8BDD" title="\u6E05\u7A7A\u6B64\u76EE\u5F55\u7684\u5386\u53F2\u4F1A\u8BDD">\u6E05\u7A7A\u6B64\u76EE\u5F55</button></div></div>'}function zi(e,t){var r=t==="codex",i=r?"resume-codex-history":"resume-history",a=r?"delete-codex-history":"delete-history",u=r?n.selectedCodexHistoryIds:n.selectedClaudeHistoryIds,s=e.claudeSessionId.slice(0,8),o=e.firstUserMessage||"(\u7A7A\u4F1A\u8BDD)",l=Yu(e.timestamp),c=Ju(t,e.claudeSessionId,"\u9009\u62E9\u5386\u53F2\u4F1A\u8BDD "+o),d=n.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="\u9690\u85CF\u6B64\u5386\u53F2\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>',f=n.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="'+(r?"\u6062\u590D\u6B64 Codex \u5386\u53F2\u4F1A\u8BDD":"\u6062\u590D\u6B64 Claude \u5386\u53F2\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 claude-history-item'+(n.sessionsManageMode&&u[e.claudeSessionId]?" selected":"")+'" data-claude-history-id="'+e.claudeSessionId+'" data-cwd="'+p(e.cwd)+'" role="button" tabindex="0"><div class="session-item-content"><div class="session-item-row">'+c+'<div class="session-main"><div class="session-command claude-history-preview">'+p(o)+'</div><div class="session-meta"><span class="session-id" title="'+p(e.claudeSessionId)+'">'+p(s)+"</span><span>"+p(l)+'</span></div></div><span class="session-actions">'+f+d+"</span></div></div></div>"}function Yu(e){if(!e)return"";try{var t=new Date(e),r=new Date,i=r-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 s=Math.floor(u/24);return s<30?s+" \u5929\u524D":t.toLocaleDateString()}catch{return""}}function Gu(){return fetch("/api/claude-history",{credentials:"same-origin"}).then(function(e){return e.ok?e.json():[]}).then(function(e){n.claudeHistory=e||[],n.claudeHistoryLoaded=!0,ve()}).catch(function(){n.claudeHistoryLoaded=!0,n.claudeHistory=[],ve()})}var _n=null;function Kr(){return Rc(),n.claudeHistoryLoaded?Promise.resolve():_n||(_n=Gu().then(function(){_n=null},function(){_n=null}),_n)}function Nc(){return fetch("/api/codex-history",{credentials:"same-origin"}).then(function(e){return e.ok?e.json():[]}).then(function(e){n.codexHistory=e||[],n.codexHistoryLoaded=!0,ve()}).catch(function(){n.codexHistoryLoaded=!0,n.codexHistory=[],ve()})}var jn=null;function Rc(){return n.codexHistoryLoaded?Promise.resolve():jn||(jn=Nc().then(function(){jn=null},function(){jn=null}),jn)}function Wc(){var e=new Set;return n.sessions.forEach(function(t){t.claudeSessionId&&e.add(t.claudeSessionId)}),n.codexHistory.filter(function(t){return t.hasConversation&&!t.managedByWand&&!e.has(t.claudeSessionId)})}function Qu(){ns(),!Jr()&&(n.pollTimer=setInterval(jt,1600))}setInterval(function(){var e=document.querySelectorAll(".session-time");e.length>0&&Ko()},3e4);function Vi(){n.wsReconnectTimer&&(clearTimeout(n.wsReconnectTimer),n.wsReconnectTimer=null)}var zc=1e4,Vc=4e4;function Uc(){$u(),n.wsHeartbeatCheckTimer=setInterval(Xu,zc)}function $u(){n.wsHeartbeatCheckTimer&&(clearInterval(n.wsHeartbeatCheckTimer),n.wsHeartbeatCheckTimer=null)}function Xu(){if(!(!n.ws||n.ws.readyState!==WebSocket.OPEN)&&n.lastWsMessageAt){var e=Date.now()-n.lastWsMessageAt;e>Vc&&Ui("heartbeat-stale-"+Math.round(e/1e3)+"s")}}function Ui(e){if(Vi(),n.ws){var t=n.ws;try{t.onclose=null}catch{}try{t.onerror=null}catch{}try{t.onmessage=null}catch{}try{t.close()}catch{}n.ws=null}n.wsConnected=!1,n.wsReconnectAttempts=0,Jr(e)}function Zu(){if(!n.wsReconnectTimer&&!document.hidden){var e=n.wsReconnectAttempts||0,t=[500,1e3,2e3,4e3,8e3],r=t[e<t.length?e:t.length-1];n.wsReconnectAttempts=e+1,n.wsReconnectTimer=setTimeout(function(){n.wsReconnectTimer=null,n.config&&!n.ws&&!document.hidden&&Jr("backoff")},r)}}function Jr(e){if(!window.WebSocket)return!1;if(n.ws){try{n.ws.close()}catch{}n.ws=null}var t=window.location.protocol==="https:"?"wss:":"ws:",r=t+"//"+window.location.host+"/ws";try{var i=new WebSocket(r);return i.onopen=function(){n.ws=i,n.wsConnected=!0,n.lastWsMessageAt=Date.now(),n.wsReconnectAttempts=0,Vi(),n.lastSeqBySession={},Uc(),xn(n.selectedId),pp(),vr("ws-reconnect")},i.onmessage=function(a){n.lastWsMessageAt=Date.now();try{var u=JSON.parse(a.data);if(u&&u.type==="ping"){if(n.ws&&n.ws.readyState===WebSocket.OPEN)try{n.ws.send(JSON.stringify({type:"pong",t:u.t}))}catch{}return}if(u&&u.type==="resync_required"&&u.sessionId){if(n.ws&&n.ws.readyState===WebSocket.OPEN)try{n.ws.send(JSON.stringify({type:"resync",sessionId:u.sessionId}))}catch{}n.lastSeqBySession||(n.lastSeqBySession={}),n.lastSeqBySession[u.sessionId]=0;return}if(u&&(u.type==="init"||u.type==="output")&&u.sessionId&&typeof u.seq=="number"){n.lastSeqBySession||(n.lastSeqBySession={});var s=n.lastSeqBySession[u.sessionId]||0;if(u.type==="init")n.lastSeqBySession[u.sessionId]=u.seq;else if(u.seq===s+1)n.lastSeqBySession[u.sessionId]=u.seq;else if(u.seq>s+1&&s>0){if(n.ws&&n.ws.readyState===WebSocket.OPEN)try{n.ws.send(JSON.stringify({type:"resync",sessionId:u.sessionId}))}catch{}n.lastSeqBySession[u.sessionId]=0;return}else{if(u.seq<s)return;n.lastSeqBySession[u.sessionId]=u.seq}}Kc(u)}catch{}},i.onclose=function(){n.ws=null,n.wsConnected=!1,$u(),Zu()},i.onerror=function(){i.close()},!0}catch{return Zu(),!1}}function Kc(e){switch(e.type){case"output":if(e.data&&e.sessionId&&Object.prototype.hasOwnProperty.call(e.data,"isResponding")&&(n._lastIsResponding||(n._lastIsResponding={}),n._lastIsResponding[e.sessionId]=!!e.data.isResponding),e.data&&e.sessionId){var t=!!e.data.incremental,r={id:e.sessionId};if(!t&&e.data.output!==void 0&&(r.output=e.data.output),Object.prototype.hasOwnProperty.call(e.data,"permissionBlocked")&&(r.permissionBlocked=!!e.data.permissionBlocked),Object.prototype.hasOwnProperty.call(e.data,"queuedMessages")&&(r.queuedMessages=e.data.queuedMessages||[],n.queueEpoch++),e.data.structuredState&&(r.structuredState=e.data.structuredState),e.data.sessionKind&&(r.sessionKind=e.data.sessionKind),e.data.messages)r.messages=e.data.messages;else if(t&&e.data.lastMessage){var i=n.sessions.find(function(U){return U.id===e.sessionId});if(i){var a=Array.isArray(i.messages)?i.messages.slice():[],u=e.data.messageCount||0,s=a.length>0?a[a.length-1]:null,o=e.data.lastMessage;s&&o.role&&s.role===o.role?a[a.length-1]=Pf(s,o):a.length<u&&a.push(o),r.messages=a}}var l=t&&e.data.chunk&&!e.data.lastMessage&&!r.messages&&r.output===void 0&&!e.data.structuredState&&!e.data.sessionKind;if(l){if(e.data.permissionBlocked!==void 0){var c=n.sessions.find(function(U){return U.id===e.sessionId});c&&!!c.permissionBlocked!=!!e.data.permissionBlocked&&(Z(r),e.sessionId===n.selectedId&&Jt())}}else if((r.output!==void 0||r.messages||t||e.data.permissionBlocked!==void 0)&&(Z(r),e.sessionId===n.selectedId)){var d=n.sessions.find(function(U){return U.id===e.sessionId})||r;n.currentMessages=Re(d,tt(d,d.output,!1)),Jt(),d.sessionKind==="structured"||e.data.sessionKind==="structured"?cr():Ki()}}e.sessionId===n.selectedId&&n.terminal&&e.data&&(e.data.chunk&&Jf(e.sessionId)?(n.lastChunkAt=Date.now(),n.terminalLiveStreamSessions[e.sessionId]=!0,Wn(n.terminal,e.data.chunk),n.terminalSessionId=e.sessionId,e.data.output?(n.terminalOutput=ys(Ha(e.data.output)),n.terminalOutputMarker=0):n.terminalOutput=ys((n.terminalOutput||"")+Ha(e.data.chunk)),ft("output"),st()):!e.data.incremental&&Object.prototype.hasOwnProperty.call(e.data,"output")&&Zr(e.sessionId,e.data.output||"",{mode:"append"}));break;case"started":dn();break;case"ended":{var f=e.data&&e.data.status?e.data.status:"exited",v=e.data&&Object.prototype.hasOwnProperty.call(e.data,"permissionBlocked")?!!e.data.permissionBlocked:!1,m={id:e.sessionId,status:f,permissionBlocked:v};e.data&&e.data.messages&&(m.messages=e.data.messages),e.data&&e.data.structuredState&&(m.structuredState=e.data.structuredState),e.data&&e.data.queuedMessages&&(m.queuedMessages=e.data.queuedMessages),Z(m),e.sessionId===n.selectedId&&(Un("Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C"),Ki(!0));var b=n.sessions.find(function(U){return U.id===e.sessionId}),g=e.data&&e.data.exitCode,y=g!=null&&g!==0,w=b&&b.summary||"",F=b?hc(b):"",E=y?"\u4EFB\u52A1\u5F02\u5E38\u7ED3\u675F":"\u4EFB\u52A1\u5DF2\u5B8C\u6210",A="";w?(A=w,F&&!y&&(A+=`
10
- `+F)):A=b&&b.command||e.sessionId,Vn(y?"error":"success"),of(e.sessionId,E,A),Ds(e.sessionId),sa(),(e.sessionId!==n.selectedId||document.hidden)&&aa({title:E,body:A,type:y?"warning":"success",icon:y?"!":"\u2713",duration:6e3,actionLabel:"\u67E5\u770B",action:function(){Rt(e.sessionId)}}),n.messageQueue=[],n.pendingMessages=[];var x=n.sessions.find(function(U){return U.id===e.sessionId}),S=e.sessionId===n.selectedId?n.sessions.find(function(U){return U.id===n.selectedId}):null,P=!!(x&&x.sessionKind==="structured"||S&&S.sessionKind==="structured");P&&e.sessionId===n.selectedId?(Ws(),lu(e.sessionId)):P||(n.structuredInputQueue=[],lu(n.selectedId),un()),e.sessionId===n.selectedId&&(P||An(!1),n.currentTask=null,Jt()),e.sessionId===n.selectedId&&Ar(),dn().then(function(){ai()}),e.sessionId===n.selectedId&&(P||fn(e.sessionId));break}case"init":if(e.sessionId===n.selectedId&&e.data){n.chatRenderTimer&&(clearTimeout(n.chatRenderTimer),n.chatRenderTimer=null),Z(e.data);var z=n.sessions.find(function(U){return U.id===e.sessionId});n.currentMessages=Re(z||e.data,tt(z||e.data,e.data.output,!1)),cr(!0),Jt(),es();var G=e.data.output||"",L=n.terminalSessionId===e.sessionId,B=n.terminalOutput||"",T=L&&B.length>0&&G.length>=B.length&&G.startsWith(B);Qc(G,e.sessionId,T?"append":"replace"),vr("init")}break;case"usage":break;case"task":e.sessionId===n.selectedId&&(n.currentTask=e.data||null,Jt()),uf(e.sessionId,e.data||null),oa(e.sessionId),Ko();break;case"status":if(e.sessionId&&e.data){var I={id:e.sessionId};if(Object.prototype.hasOwnProperty.call(e.data,"status")&&(I.status=e.data.status),Object.prototype.hasOwnProperty.call(e.data,"exitCode")&&(I.exitCode=e.data.exitCode),e.data.structuredState)I.structuredState=e.data.structuredState;else if(Object.prototype.hasOwnProperty.call(e.data,"status")){var i=n.sessions.find(function(M){return M.id===e.sessionId});i&&i.sessionKind==="structured"&&(I.structuredState=Object.assign({},i.structuredState||{},{inFlight:e.data.status==="running"}))}if(Object.prototype.hasOwnProperty.call(e.data,"queuedMessages")&&(I.queuedMessages=e.data.queuedMessages||[],n.queueEpoch++),Object.prototype.hasOwnProperty.call(e.data,"permissionBlocked")&&(I.permissionBlocked=!!e.data.permissionBlocked),e.data.permissionRequest){I.pendingEscalation={scope:e.data.permissionRequest.scope,target:e.data.permissionRequest.target,reason:e.data.permissionRequest.prompt};var V=n.sessions.find(function(U){return U.id===e.sessionId}),re=V&&(V.summary||V.command)||e.sessionId,te=e.data.permissionRequest.prompt||"\u9700\u8981\u6743\u9650\u5BA1\u6279",$=e.data.permissionRequest.target,ie=re;$?ie+=`
11
- `+te+" \xB7 "+$:ie+=`
12
- `+te,Vn("medium"),sf(e.sessionId,ie),e.sessionId!==n.selectedId&&aa({title:"\u9700\u8981\u4F60\u7684\u6388\u6743",body:ie,type:"warning",icon:"!",duration:0,actionLabel:"\u53BB\u5904\u7406",action:function(){Rt(e.sessionId)}})}e.data.permissionBlocked===!1&&(I.pendingEscalation=null),e.data.approvalStats&&(I.approvalStats=e.data.approvalStats),Z(I),oa(e.sessionId),sa(),e.sessionId===n.selectedId&&(Jt(),e.data.approvalStats&&es(),I.structuredState&&(I.structuredState.inFlight||(Un("Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C"),Ws()),Ki()))}break;case"notification":e.data&&(e.data.kind==="update"?Cs(e.data.current||"-",e.data.latest||"-"):e.data.kind==="auto-update-start"?vf(e.data.current||"-",e.data.latest||"-"):(e.data.kind==="auto-update-restart"||e.data.kind==="restart")&&an());break}}function Jt(){var e=document.getElementById("current-task"),t=document.getElementById("permission-actions"),r=document.getElementById("permission-actions-label");if(e){var i=n.sessions.find(function(v){return v.id===n.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 s=i&&i.autoApprovePermissions;if(r)if(s)r.textContent="\u81EA\u52A8\u6279\u51C6\u4E2D...";else if(a){var o=a.reason||"\u7B49\u5F85\u6388\u6743",l=a.target?" \xB7 "+a.target:"";r.textContent=o+l}else r.textContent="\u7B49\u5F85\u6388\u6743";if(t){t.classList.remove("hidden");var c=document.getElementById("approve-permission-btn"),d=document.getElementById("deny-permission-btn");c&&c.classList.toggle("hidden",!!s),d&&d.classList.toggle("hidden",!!s)}e.textContent="",e.classList.add("hidden"),e.classList.remove("permission-blocked");return}e.classList.remove("permission-blocked"),t&&t.classList.add("hidden");var f=n.currentTask;f&&f.title?(e.textContent=f.title,e.classList.remove("hidden")):(e.textContent="",e.classList.add("hidden"))}}function es(){var e=document.getElementById("approval-stats");if(e){var t=n.sessions.find(function(a){return a.id===n.selectedId}),r=t&&t.approvalStats;if(!r||r.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">'+r.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>'+(r.command>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+J("terminal",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u547D\u4EE4\u6267\u884C</span><span class="approval-stats-row-count">'+r.command+"</span></span>":"")+(r.file>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+J("edit",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u6587\u4EF6\u5199\u5165</span><span class="approval-stats-row-count">'+r.file+"</span></span>":"")+(r.tool>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+J("wrench",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u5176\u4ED6\u5DE5\u5177</span><span class="approval-stats-row-count">'+r.tool+"</span></span>":"")+'<span class="approval-stats-row approval-stats-row-total"><span class="approval-stats-row-icon">'+J("sigma",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u5408\u8BA1</span><span class="approval-stats-row-count">'+r.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 Jc(){if(Vn("light"),!!n.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(n.selectedId)+"/approve-permission",{method:"POST",credentials:"same-origin"}).then(function(r){return r.json()}).then(function(r){if(r&&r.error){k(r.error,"error");return}Z(r),Jt()}).catch(function(r){k(r&&r.message||"\u65E0\u6CD5\u6279\u51C6\u6388\u6743\u3002","error")}).finally(function(){e&&(e.disabled=!1),t&&(t.disabled=!1)})}}function Yc(){if(Vn("light"),!!n.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(n.selectedId)+"/deny-permission",{method:"POST",credentials:"same-origin"}).then(function(r){return r.json()}).then(function(r){if(r&&r.error){k(r.error,"error");return}Z(r),Jt()}).catch(function(r){k(r&&r.message||"\u65E0\u6CD5\u62D2\u7EDD\u6388\u6743\u3002","error")}).finally(function(){e&&(e.disabled=!1),t&&(t.disabled=!1)})}}function Gc(){if(n.selectedId){var e=n.sessions.find(function(r){return r.id===n.selectedId});if(e&&e.provider==="codex"){k("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(n.selectedId)+"/toggle-auto-approve",{method:"POST",credentials:"same-origin"}).then(function(r){return r.json()}).then(function(r){if(r&&r.error){k(r.error,"error");return}Z(r),ts();var i=r.autoApprovePermissions;k(i?"\u81EA\u52A8\u6279\u51C6\u5DF2\u5F00\u542F":"\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED","info")}).catch(function(r){k(r&&r.message||"\u65E0\u6CD5\u5207\u6362\u81EA\u52A8\u6279\u51C6\u3002","error")}).finally(function(){t&&(t.style.opacity="")})}}function ts(){var e=document.getElementById("auto-approve-toggle"),t=n.sessions.find(function(a){return a.id===n.selectedId});if(Ro(t)){e&&e.parentNode&&e.parentNode.removeChild(e);return}if(e){var r="composer-pill composer-pill-chip auto-approve-indicator",i=t&&t.autoApprovePermissions;i?(e.className=r+" active",e.title="\u81EA\u52A8\u6279\u51C6\u5DF2\u542F\u7528 \u2014 \u70B9\u51FB\u5173\u95ED",e.innerHTML=J("shieldCheck",{size:12,strokeWidth:1.7,cls:"composer-pill-icon"})+'<span class="composer-pill-label">\u81EA\u52A8</span>'):(e.className=r,e.title="\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED \u2014 \u70B9\u51FB\u5F00\u542F",e.innerHTML=J("shield",{size:12,strokeWidth:1.7,cls:"composer-pill-icon"})+'<span class="composer-pill-label">\u624B\u52A8</span>')}}function Qc(e,t,r){return n.terminal?Zr(t||n.selectedId,e,{mode:r||"append"}):!1}function ns(){n.pollTimer&&(clearInterval(n.pollTimer),n.pollTimer=null)}function qm(e){n.currentView=e||"terminal",n.currentView!=="terminal"&&(An(!1),Gs()),bi(),Ea();var t=Ht();t&&(n.currentMessages=Re(t,tt(t,t.output,!0))),st(),n.currentView==="terminal"&&(Ot(!0),n.terminal&&n.terminal.remeasure&&requestAnimationFrame(function(){n.terminal&&n.terminal.remeasure()}))}function cr(e){n.renderPending&&!e||(n.renderPending=!0,e?(fi(!0),n.renderPending=!1):requestAnimationFrame(function(){fi(!1),n.renderPending=!1}))}n.chatRenderTimer=null;function Ki(e){if(!(n.chatRenderTimer&&!e)){if(n.chatRenderTimer&&clearTimeout(n.chatRenderTimer),e){n.chatRenderTimer=null,cr();return}var t=n.sessions.find(function(a){return a.id===n.selectedId}),r=t&&t.status==="running"&&t.sessionKind!=="structured",i=r?gs:hs;n.chatRenderTimer=setTimeout(function(){n.chatRenderTimer=null;var a=n.sessions.find(function(u){return u.id===n.selectedId});a&&(n.currentMessages=Re(a,tt(a,a.output,!0))),cr()},i)}}var Ji=0,Yr=0,rs=0,Gr=0;function Yi(){var e=document.documentElement;if(e&&e.classList&&e.classList.contains("is-pwa"))return!0;try{return navigator.standalone===!0}catch{}return!1}function is(e){rs=Math.max(rs,Date.now()+(e||1800))}function as(e,t){setTimeout(function(){var r=document.activeElement;Gi(r)&&r!==t||is(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 Xc(e){var t=document.documentElement,r=Math.max(window.innerWidth||0,e&&e.width||0,t&&t.clientWidth||0),i=$c(e);return!Ji||Math.abs(r-Ji)>8?(Ji=r,Yr=i):i>Yr&&(Yr=i),Math.max(1,Math.round(Yr||i||1))}function Zc(e,t,r,i){return e||!Yi()?!1:t>0||i>r+1}function Nn(e){var t=window.visualViewport;if(t){var r=document.documentElement;if(window.__wandImeNative){r.style.setProperty("--app-viewport-top","0px"),r.style.setProperty("--app-viewport-height",Math.round(t.height)+"px");return}var i=Xc(t),a=Math.max(0,Math.round(t.offsetTop||0)),u=Math.max(1,Math.round(t.height));(!e&&Yi()||Zc(e,a,u,i))&&(a=0,u=Math.max(u,i)),r.style.setProperty("--app-viewport-top",a+"px"),r.style.setProperty("--app-viewport-height",u+"px"),(e||(window.scrollY||0)>0)&&ka()}}function Gi(e){if(!e)return!1;var t=e.tagName;if(t==="TEXTAREA"||t==="SELECT")return!0;if(t==="INPUT"){var r=(e.getAttribute("type")||"text").toLowerCase();return!/^(button|checkbox|color|file|hidden|image|radio|range|reset|submit)$/i.test(r)}return!!e.isContentEditable}function ed(){if(!("visualViewport"in window))return;var e=window.visualViewport,t=e.height,r=!1,i=Math.max(window.innerWidth||0,e.width||0),a=Math.max(window.innerHeight||0,e.height||0),u=[];function s(){return Math.max(window.innerHeight||0,e.height||0)}function o(){var m=Math.max(window.innerWidth||0,e.width||0),b=s();if(Math.abs(m-i)>8){i=m,a=b;return}b>a&&(a=b)}function l(m,b){var g=document.activeElement,y=g===m||Gi(g),w=a-e.height,F=a-(window.innerHeight||e.height||0),E=Date.now()<Gr;return E?!!(y&&(w>120||F>120)):!!(b>80||y&&(w>120||F>120)||r&&(w>80||b>32))}function c(){u.forEach(function(m){clearTimeout(m)}),u=[60,180,360,620,900].map(function(m){return setTimeout(function(){Nn(r)},m)})}function d(){if(e){var m=document.getElementById("input-box"),b=window.innerHeight-e.height-e.offsetTop;o();var g=l(m,b),y=Math.abs(e.height-t)>8;if(Nn(g),g&&(!r||y)&&Lp(e,m)&&Da(m),!r&&g){var w=n.terminalAutoFollow||ea();et("keyboard-open",{forceReplay:!0}),window.__wandImeNative||setTimeout(function(){Nn(!0)},220),c(),w&&setTimeout(function(){n.terminal&&ft("force")},220)}if(r&&!g){var F=!!window.__wandImeNative;F||(is(2200),Gr=Date.now()+1200,Nn(!1),ka()),c(),setTimeout(function(){F||(Nn(!1),ka()),et("keyboard-close",{forceReplay:!0}),ft("keyboard")},200)}y&&r===g&&et("viewport"),r=g,t=e.height}}var f=null;function v(){f!==null&&cancelAnimationFrame(f),f=requestAnimationFrame(function(){f=null,d()})}e.addEventListener("resize",v),e.addEventListener("scroll",v),document.addEventListener("visibilitychange",function(){document.visibilityState==="visible"&&(v(),setTimeout(v,240),setTimeout(v,720))}),window.addEventListener("pageshow",function(m){m&&m.persisted&&(v(),setTimeout(v,240))}),document.addEventListener("focusout",function(m){!m||!m.target||Gi(m.target)&&(as(1600,m.target),Yi()&&(Gr=Math.max(Gr,Date.now()+1200)),setTimeout(v,80),setTimeout(v,420))}),d()}function td(){var e=document.getElementById("output");if(e){var t=document.createElement("div");t.className="terminal-resize-handle",t.innerHTML="&#8942;",e.appendChild(t);var r=!1,i=0,a=0;t.addEventListener("mousedown",function(u){r=!0,i=u.clientY,a=e.getBoundingClientRect().height,document.body.style.cursor="ns-resize",document.body.style.userSelect="none",u.preventDefault()}),n.resizeMouseMove=function(u){if(r){var s=u.clientY-i,o=Math.max(200,Math.min(a+s,window.innerHeight-200));e.style.height=o+"px",e.style.flex="none",Ot()}},document.addEventListener("mousemove",n.resizeMouseMove),n.resizeMouseUp=function(){r&&(r=!1,document.body.style.cursor="",document.body.style.userSelect="",Ot())},document.addEventListener("mouseup",n.resizeMouseUp),t.addEventListener("touchstart",function(u){r=!0,i=u.touches[0].clientY,a=e.getBoundingClientRect().height,u.preventDefault()},{passive:!1}),n.resizeTouchMove=function(u){if(r){var s=u.touches[0].clientY-i,o=Math.max(200,Math.min(a+s,window.innerHeight-200));e.style.height=o+"px",e.style.flex="none",Ot(),u.preventDefault()}},document.addEventListener("touchmove",n.resizeTouchMove,{passive:!1}),n.resizeTouchEnd=function(){r&&(r=!1,Ot())},document.addEventListener("touchend",n.resizeTouchEnd)}}function us(){return!!Ht()}function Qi(e){var t=Math.max(sn,window.innerWidth-si-sn),r=Math.max(sn,window.innerHeight-si-sn);return{right:Math.min(Math.max(sn,e.right),t),bottom:Math.min(Math.max(sn,e.bottom),r)}}function ss(){if(n.joystickBallEl){var e=Qi(n.joystickPos||{right:18,bottom:96});n.joystickBallEl.style.right=e.right+"px",n.joystickBallEl.style.bottom=e.bottom+"px"}}function nd(e,t){var r=Qi({right:e,bottom:t});n.joystickPos=r;try{localStorage.setItem("wand-ball-pos",JSON.stringify(r))}catch{}}function rd(){function e(u,s,o){return'<button type="button" class="wjp-key'+(o?" "+o:"")+'" data-key="'+u+'">'+s+"</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>",r="",i;for(i=0;i<ya.length;i++)r+=e(ya[i].key,ya[i].label,"");var a='<div class="wjp-header"><span class="wjp-title">'+J("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">'+J("x",{size:13,strokeWidth:2})+"</button></div>"+t+'<div class="wjp-grid wjp-fnkeys">'+r+"</div>";return a}function id(){if(!n.joystickRootEl){var e=document.createElement("div");e.className="wand-joystick-root";var t=document.createElement("div");t.className="wand-joystick-backdrop",e.appendChild(t);var r=document.createElement("div");r.className="wand-joystick-panel",r.innerHTML=rd(),r.addEventListener("click",fd),e.appendChild(r);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=J("paw",{size:25,strokeWidth:1.6,cls:"wand-joystick-logo"}),e.appendChild(i),document.body.appendChild(e),n.joystickRootEl=e,n.joystickBackdropEl=t,n.joystickPanelEl=r,n.joystickBallEl=i,ss(),i.addEventListener("pointerdown",ad),i.addEventListener("click",function(a){a.preventDefault(),a.stopPropagation()}),t.addEventListener("pointerdown",function(a){n.joystickPinnedOpen&&n.joystickGesture==null&&(a.preventDefault(),dr())}),t.addEventListener("click",function(a){a.preventDefault(),a.stopPropagation()}),n.joystickResizeHandler=function(){ss()},window.addEventListener("resize",n.joystickResizeHandler),window.addEventListener("orientationchange",n.joystickResizeHandler),ds()}}function ad(e){if(us()&&!((e.pointerType==="mouse"||e.pointerType==="pen")&&e.button!==0)&&n.joystickPointerId===null){e.preventDefault(),e.stopPropagation();var t=e.pointerType==="mouse"||e.pointerType==="pen";n.joystickPointerId=e.pointerId,n.joystickPressStart={x:e.clientX,y:e.clientY,t:Date.now()},n.joystickGesture="pending";try{n.joystickBallEl.setPointerCapture(e.pointerId)}catch{}t||(n.joystickLongPressTimer=setTimeout(function(){n.joystickGesture==="pending"&&os()},Qf)),n.joystickMoveHandler=ud,n.joystickUpHandler=sd,document.addEventListener("pointermove",n.joystickMoveHandler),document.addEventListener("pointerup",n.joystickUpHandler),document.addEventListener("pointercancel",n.joystickUpHandler)}}function os(){n.joystickGesture="move",n.joystickPinnedOpen&&dr(),n.joystickBallEl&&n.joystickBallEl.classList.add("dragging"),n.joystickBackdropEl&&n.joystickBackdropEl.classList.add("active")}function ls(e,t){if(n.joystickBallEl){var r=Qi({right:window.innerWidth-e-si/2,bottom:window.innerHeight-t-si/2});n.joystickBallEl.style.right=r.right+"px",n.joystickBallEl.style.bottom=r.bottom+"px"}}function ud(e){if(!(e.pointerId!==n.joystickPointerId||!n.joystickBallEl)){if(e.preventDefault(),n.joystickGesture==="move"){ls(e.clientX,e.clientY);return}if(n.joystickGesture==="pending"){var t=e.clientX-n.joystickPressStart.x,r=e.clientY-n.joystickPressStart.y;Math.sqrt(t*t+r*r)<=$f||(e.pointerType==="mouse"||e.pointerType==="pen"?(os(),ls(e.clientX,e.clientY)):(n.joystickLongPressTimer&&(clearTimeout(n.joystickLongPressTimer),n.joystickLongPressTimer=null),n.joystickGesture="cancelled"))}}}function sd(e){if(e.pointerId===n.joystickPointerId){n.joystickLongPressTimer&&(clearTimeout(n.joystickLongPressTimer),n.joystickLongPressTimer=null);var t=n.joystickGesture;if(t==="pending"){var r=e.clientX-n.joystickPressStart.x,i=e.clientY-n.joystickPressStart.y;Math.sqrt(r*r+i*i)<=Xf&&cd()}else if(t==="move"){var a=n.joystickBallEl?n.joystickBallEl.getBoundingClientRect():null;a&&nd(window.innerWidth-a.right,window.innerHeight-a.bottom)}cs()}}function cs(){if(n.joystickLongPressTimer&&(clearTimeout(n.joystickLongPressTimer),n.joystickLongPressTimer=null),n.joystickBallEl&&n.joystickPointerId!==null)try{n.joystickBallEl.releasePointerCapture(n.joystickPointerId)}catch{}n.joystickMoveHandler&&(document.removeEventListener("pointermove",n.joystickMoveHandler),n.joystickMoveHandler=null),n.joystickUpHandler&&(document.removeEventListener("pointerup",n.joystickUpHandler),document.removeEventListener("pointercancel",n.joystickUpHandler),n.joystickUpHandler=null),n.joystickBallEl&&n.joystickBallEl.classList.remove("dragging"),n.joystickBackdropEl&&!n.joystickPinnedOpen&&n.joystickBackdropEl.classList.remove("active"),n.joystickPointerId=null,n.joystickGesture=null,n.joystickPressStart=null}function od(e){if(e==="ctrl"||e==="alt"||e==="shift"){n.modifiers[e]=!n.modifiers[e],fr();return}var t=Ht();if(t&&oe(t)){(e==="ctrl_c"||e==="escape")&&ld(t,e),li(),fr();return}var r=Qs(e,{ctrl:n.modifiers.ctrl,alt:n.modifiers.alt,shift:n.modifiers.shift});r&&Ys(r,e),li(),fr(),op()}function ld(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(r){return r.ok?r.json():r.json().catch(function(){return{}}).then(function(i){throw new Error(i&&i.error||"\u4E2D\u65AD\u5931\u8D25 (key="+t+")")})}).then(function(r){if(r&&r.id&&(Z(r),r.id===n.selectedId)){var i=n.sessions.find(function(a){return a.id===r.id})||r;n.currentMessages=Re(i,tt(i,r.output,!1)),cr(!0),typeof Dt=="function"&&Dt()}}).catch(function(r){r&&r.message&&console.debug("[wand] joystick interrupt no-op:",r.message)})}function cd(){n.joystickPinnedOpen?dr():dd()}function dd(){if(!(!n.joystickPanelEl||!n.joystickBallEl)){n.joystickPinnedOpen=!0;var e=n.joystickBallEl.getBoundingClientRect();n.joystickPanelEl.style.right=Math.max(sn,window.innerWidth-e.right)+"px",n.joystickPanelEl.style.bottom=Math.max(sn,window.innerHeight-e.top+10)+"px",n.joystickPanelEl.classList.add("active"),n.joystickBallEl.classList.add("panel-open"),n.joystickBackdropEl&&n.joystickBackdropEl.classList.add("active"),fr()}}function dr(){n.joystickPinnedOpen=!1,n.joystickPanelEl&&n.joystickPanelEl.classList.remove("active"),n.joystickBallEl&&n.joystickBallEl.classList.remove("panel-open"),n.joystickBackdropEl&&n.joystickGesture==null&&n.joystickBackdropEl.classList.remove("active")}function fr(){n.joystickPanelEl&&["ctrl","alt"].forEach(function(e){var t=n.joystickPanelEl.querySelector('.wjp-mod[data-key="'+e+'"]');t&&t.classList.toggle("active",!!n.modifiers[e])})}function fd(e){var t=e.target&&e.target.closest?e.target.closest(".wjp-close"):null;if(t){e.preventDefault(),e.stopPropagation(),dr();return}var r=e.target&&e.target.closest?e.target.closest(".wjp-key"):null;if(r){e.preventDefault(),e.stopPropagation();var i=r.getAttribute("data-key");i&&od(i)}}function ds(){var e=n.joystickRootEl;if(e){var t=us();e.classList.toggle("visible",t),t||((n.joystickPointerId!==null||n.joystickGesture)&&cs(),n.joystickPinnedOpen&&dr(),n.joystickBackdropEl&&n.joystickBackdropEl.classList.remove("active"))}}function pd(){n.joystickLongPressTimer&&(clearTimeout(n.joystickLongPressTimer),n.joystickLongPressTimer=null),n.joystickMoveHandler&&(document.removeEventListener("pointermove",n.joystickMoveHandler),n.joystickMoveHandler=null),n.joystickUpHandler&&(document.removeEventListener("pointerup",n.joystickUpHandler),document.removeEventListener("pointercancel",n.joystickUpHandler),n.joystickUpHandler=null),n.joystickResizeHandler&&(window.removeEventListener("resize",n.joystickResizeHandler),window.removeEventListener("orientationchange",n.joystickResizeHandler),n.joystickResizeHandler=null),n.joystickRootEl&&n.joystickRootEl.parentNode&&n.joystickRootEl.parentNode.removeChild(n.joystickRootEl),n.joystickRootEl=null,n.joystickPanelEl=null,n.joystickBackdropEl=null,n.joystickBallEl=null,n.joystickPointerId=null,n.joystickGesture=null,n.joystickPressStart=null,n.joystickPinnedOpen=!1}function vd(){var e=document.getElementById("output");if(e){var t=!Pe();n.resizeHandler=function(){Ot(!0);var r=!Pe();t!==r&&(t=r,!r&&n.sidebarPinned&&n.sessionsDrawerOpen?(n.sessionsDrawerOpen=!1,ke("wand-sidebar-open",!1),xr()):r&&n.sidebarPinned&&!n.sessionsDrawerOpen&&(n.sessionsDrawerOpen=!0,ke("wand-sidebar-open",!0),xr()))},window.addEventListener("resize",n.resizeHandler),window.visualViewport&&(n.visualViewportHandler=function(){Ot(!0)},window.visualViewport.addEventListener("resize",n.visualViewportHandler)),n.visibilityHandler=function(){document.hidden||et("visibility",{forceReplay:!0})},document.addEventListener("visibilitychange",n.visibilityHandler),n.orientationHandler=function(){et("orientation",{forceReplay:!0})},window.addEventListener("orientationchange",n.orientationHandler),requestAnimationFrame(function(){Ot(!0)})}}function md(){n.terminalHealthTimer||(n.terminalHealthTimer=setInterval(function(){if(!(!n.terminal||n.currentView!=="terminal"||document.hidden)){var e=n.sessions.find(function(u){return u.id===n.selectedId});if(!(!e||e.sessionKind==="structured")){et("health");var t=Date.now(),r=n.lastChunkAt>0&&t-n.lastChunkAt>300,i=t-n.lastTerminalResyncAt>3e4,a=n.lastChunkAt>n.lastTerminalResyncAt;i&&a&&(r||e.status!=="running")&&n.terminalOutput&&Cn()}}},5e3))}function gd(){n.terminalHealthTimer&&(clearInterval(n.terminalHealthTimer),n.terminalHealthTimer=null)}function pr(){gd(),n.resizeTimer&&(clearTimeout(n.resizeTimer),n.resizeTimer=null),n.resizeObserver&&(n.resizeObserver.disconnect(),n.resizeObserver=null),n.resizeHandler&&(window.removeEventListener("resize",n.resizeHandler),n.resizeHandler=null),n.visualViewportHandler&&window.visualViewport&&(window.visualViewport.removeEventListener("resize",n.visualViewportHandler),n.visualViewportHandler=null),n.visibilityHandler&&(document.removeEventListener("visibilitychange",n.visibilityHandler),n.visibilityHandler=null),n.orientationHandler&&(window.removeEventListener("orientationchange",n.orientationHandler),n.orientationHandler=null),[["mousemove","resizeMouseMove"],["mouseup","resizeMouseUp"],["touchmove","resizeTouchMove"],["touchend","resizeTouchEnd"]].forEach(function(a){n[a[1]]&&(document.removeEventListener(a[0],n[a[1]]),n[a[1]]=null)}),Rn();var e=document.getElementById("output");if(n.terminalViewportEl&&(n.terminalViewportScrollHandler&&n.terminalViewportEl.removeEventListener("scroll",n.terminalViewportScrollHandler),n.terminalViewportTouchHandler&&n.terminalViewportEl.removeEventListener("touchmove",n.terminalViewportTouchHandler),n.terminalViewportTouchStartHandler&&n.terminalViewportEl.removeEventListener("touchstart",n.terminalViewportTouchStartHandler)),e&&(n.terminalWheelHandler&&e.removeEventListener("wheel",n.terminalWheelHandler),n.terminalClickHandler&&e.removeEventListener("click",n.terminalClickHandler)),n.terminalViewportEl=null,n.terminalViewportScrollHandler=null,n.terminalViewportTouchHandler=null,n.terminalViewportTouchStartHandler=null,n.terminalWheelHandler=null,n.terminalClickHandler=null,n.terminalScrollbarHideTimer&&(clearTimeout(n.terminalScrollbarHideTimer),n.terminalScrollbarHideTimer=null),n.terminalScrollbarEl&&n.terminalScrollbarEl.parentNode&&n.terminalScrollbarEl.parentNode.removeChild(n.terminalScrollbarEl),n.terminalScrollbarEl=null,n.terminalScrollbarThumbEl=null,n.terminalScrollbarDragging=!1,n.terminalScrollbarRafPending=!1,n.terminal&&(n.terminal.destroy(),n.terminal=null),e)for(var t=e.querySelectorAll(".terminal-scroll-wrap"),r=0;r<t.length;r++){var i=t[r];i.parentNode===e&&e.removeChild(i)}ra(),n.syncOutputBuffer=null,n.syncOutputDeadline=0,n.syncFramingResidue=!1,n.terminalSessionId=null,n.terminalOutput="",n.terminalOutputMarker=0,n.terminalAutoFollow=!0,n.showTerminalJumpToBottom=!1,st(),n.softResyncTimer&&(clearTimeout(n.softResyncTimer),n.softResyncTimer=null),n._resyncChunkTailTimer&&(clearTimeout(n._resyncChunkTailTimer),n._resyncChunkTailTimer=null),n._resyncChunkLastAt=0,n._resyncStatsWindowStart=0,n._resyncStatsCount=0,n._resyncLastWarnAt=0,n._resyncInProgress=!1,n.lastResize={cols:0,rows:0},pd()}function Qr(e,t){if(n.selectedId){var r=n.sessions.find(function(a){return a.id===n.selectedId});if(!(!r||r.status!=="running")&&!oe(r)){e>256&&(e=256),t>160&&(t=160);var i={cols:e,rows:t};(n.lastResize.cols!==i.cols||n.lastResize.rows!==i.rows)&&(n.lastResize=i,fetch("/api/sessions/"+n.selectedId+"/resize",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(i)}).catch(function(){}))}}}function et(e,t){if(!n.terminal)return!1;var r=t||{},i=r.forceReplay===!0,a=document.getElementById("output");if(!a||a.offsetWidth===0||a.offsetHeight===0)return vr(e||"fit-retry",{forceReplay:i}),!1;var u=n.terminalAutoFollow||ea(),s=n.terminal.cols,o=n.terminal.rows;return requestAnimationFrame(function(){requestAnimationFrame(function(){if(n.terminal){typeof n.terminal.remeasure=="function"&&n.terminal.remeasure(),Qr(n.terminal.cols,n.terminal.rows);var l=n.terminal.cols!==s||n.terminal.rows!==o;!l&&i&&n.terminalOutput&&Cn({skipFit:!0}),u&&ft("force")}})}),!0}function vr(e,t){if(!n.terminal)return;var r=t||{},i=r.forceReplay!==!1,a=0,u=8;function s(){if(n.terminal){var o=document.getElementById("output");if(o&&o.offsetHeight,o&&o.offsetWidth>0&&o.offsetHeight>0){et(e,{forceReplay:i});return}++a>=u||(a<=4?requestAnimationFrame(s):setTimeout(s,32))}}s()}function Ot(e){n.resizeTimer&&(clearTimeout(n.resizeTimer),n.resizeTimer=null);var t=e?0:100;n.resizeTimer=setTimeout(function(){n.resizeTimer=null,requestAnimationFrame(hd)},t)}function hd(){if(n.terminal){var e=n.terminalAutoFollow||ea();e&&ft("force"),Qr(n.terminal.cols,n.terminal.rows)}}function Yt(e){n.workingDir=e;try{localStorage.setItem("wand-working-dir",e)}catch{}yd(e)}function $i(e){fetch("/api/recent-paths",{credentials:"same-origin"}).then(function(t){return t.json()}).then(function(t){e(t||[])}).catch(function(){e([])})}function yd(e){return fetch("/api/recent-paths",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({path:e})}).catch(function(){})}function Xi(e){var t=n.sessions.find(function(r){return r.id===e});t&&t.status!=="running"&&!oe(t)?no(e):Rt(e),Wt()}function bd(e){var t=e.target;if(!(!t||!(t instanceof Element))){var r=t.closest(".sidebar-collapsed-tile");if(r&&r instanceof HTMLElement){if(r.dataset.collapsedNewSession){e.preventDefault(),e.stopPropagation(),Va();return}if(r.dataset.collapsedSessionId){e.preventDefault(),e.stopPropagation(),Xi(r.dataset.collapsedSessionId);return}if(r.dataset.collapsedHistoryId){e.preventDefault(),e.stopPropagation();var i=r.dataset.collapsedHistoryId,a=r.dataset.cwd||"";ci(i,a).then(function(v){v&&v.id&&(n.selectedId=v.id,ye(),n.drafts[v.id]="",dn().then(function(){Rt(v.id)}))});return}}var u=t.closest("#claude-history-toggle");if(u){e.preventDefault(),e.stopPropagation(),n.claudeHistoryExpanded=!n.claudeHistoryExpanded,n.claudeHistoryExpanded&&!n.claudeHistoryLoaded&&Kr(),ve();return}var s=t.closest("[data-action]");if(s&&s instanceof HTMLElement){if(e.preventDefault(),e.stopPropagation(),s.dataset.action==="toggle-manage-mode")Lc();else if(s.dataset.action==="select-all-visible")Ku();else if(s.dataset.action==="clear-selection")qc();else if(s.dataset.action==="delete-selected")Oc();else if(s.dataset.action==="toggle-selection")lr(s.dataset.kind,s.dataset.id);else if(s.dataset.action==="delete-session"&&s.dataset.sessionId)(function(v){Hn("\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&&$s(v)})})(s.dataset.sessionId);else if(s.dataset.action==="delete-history"&&s.dataset.claudeSessionId)(function(v,m){Hn("\u786E\u8BA4\u9690\u85CF\u8FD9\u6761 Claude \u5386\u53F2\u5417\uFF1F",{title:"\u9690\u85CF\u5386\u53F2\u4F1A\u8BDD",okLabel:"\u9690\u85CF"}).then(function(b){b&&Xs(v,m)})})(s.dataset.claudeSessionId,s.closest(".session-item"));else if(s.dataset.action==="toggle-history-directory"&&s.dataset.cwd){var o=s.dataset.cwd;n.claudeHistoryExpandedDirs[o]=!n.claudeHistoryExpandedDirs[o],ve()}else if(s.dataset.action==="delete-history-directory"&&s.dataset.cwd)(function(v,m){var b=gp(v),g=Pn().filter(function(y){return y.cwd===v}).length;Hn("\u786E\u8BA4\u6E05\u7A7A\u6B64\u76EE\u5F55\u4E0B\u7684 "+g+" \u6761 Claude \u5386\u53F2\u5417\uFF1F",{title:"\u6E05\u7A7A\u76EE\u5F55\u5386\u53F2",okLabel:"\u6E05\u7A7A"}).then(function(y){y&&(Zs(b,!0),mp(v,m,b))})})(s.dataset.cwd,s);else if(s.dataset.action==="clear-all-history")Pc();else if(s.dataset.action==="toggle-archived-group")n.archivedExpanded=!n.archivedExpanded,ve();else if(s.dataset.action==="resume"&&s.dataset.sessionId)bp(s);else if(s.dataset.action==="resume-history"&&s.dataset.claudeSessionId)Cp(s);else if(s.dataset.action==="resume-codex-history"&&s.dataset.claudeSessionId)Ep(s);else if(s.dataset.action==="delete-codex-history"&&s.dataset.claudeSessionId)wp(s);else if(s.dataset.action==="toggle-codex-history-directory"&&s.dataset.cwd){var l=s.dataset.cwd;n.codexHistoryExpandedDirs[l]=!n.codexHistoryExpandedDirs[l],ve()}else s.dataset.action==="worktree-merge"&&s.dataset.sessionId?Yo(s.dataset.sessionId):s.dataset.action==="worktree-cleanup"&&s.dataset.sessionId&&Go(s.dataset.sessionId);return}var c=t.closest(".session-item");if(c){if(n.sessionsManageMode){c.dataset.sessionId?lr("sessions",c.dataset.sessionId):c.dataset.claudeHistoryId&&lr("history",c.dataset.claudeHistoryId);return}if(c.classList.contains("swiped")){Br();return}if(eo)return;if(c.dataset.sessionId)Xi(c.dataset.sessionId);else if(c.dataset.claudeHistoryId){var d=c.dataset.claudeHistoryId,f=c.dataset.cwd;ci(d,f).then(function(v){v&&v.id&&(n.selectedId=v.id,ye(),n.drafts[v.id]="",dn().then(function(){Rt(v.id),Wt()}))})}}}}function Ed(e){if(!(e.key!=="Enter"&&e.key!==" ")){var t=e.target.closest(".session-item");if(t){if(e.preventDefault(),n.sessionsManageMode){t.dataset.sessionId?lr("sessions",t.dataset.sessionId):t.dataset.claudeHistoryId&&lr("history",t.dataset.claudeHistoryId);return}if(t.dataset.sessionId)Xi(t.dataset.sessionId);else if(t.dataset.claudeHistoryId){var r=t.dataset.claudeHistoryId,i=t.dataset.cwd;ci(r,i).then(function(a){a&&a.id&&(n.selectedId=a.id,ye(),n.drafts[a.id]="",dn().then(function(){Rt(a.id),Wt()}))})}}}}function Zi(e,t){var r=n.sessions.find(function(a){return a.id===n.selectedId});if(r){var i=r[e];if(!i){k("\u5F53\u524D\u4F1A\u8BDD\u6CA1\u6709\u53EF\u590D\u5236\u7684\u5185\u5BB9\u3002","error");return}Lr(String(i),null,function(){k(t||"\u5DF2\u590D\u5236","info")})}}function wt(){return!n.terminal||!n.terminal.element?null:(n.terminalViewportEl=n.terminal.element,n.terminalViewportEl)}function Rn(){n.terminalScrollIdleTimer&&(clearTimeout(n.terminalScrollIdleTimer),n.terminalScrollIdleTimer=null)}function st(){var e=document.getElementById("terminal-jump-bottom"),t=!!n.selectedId&&n.currentView==="terminal"&&!n.terminalAutoFollow&&!fs();n.showTerminalJumpToBottom=t,e&&e.classList.toggle("visible",t);var r=document.getElementById("output");r&&r.classList.toggle("has-jump-btn",t)}function ea(){var e=wt();if(!e)return!0;var t=e.scrollHeight-e.clientHeight-e.scrollTop;return t<=n.terminalScrollThreshold}function fs(){var e=wt();if(!e)return!0;var t=e.scrollHeight-e.clientHeight-e.scrollTop;return t<=2}function ps(e){if(n.terminal){var t=wt();if(t){var r=e?500:120;n.terminalProgrammaticScrollUntil=Math.max(n.terminalProgrammaticScrollUntil,Date.now()+r),e?t.scrollTo({top:t.scrollHeight,behavior:"smooth"}):t.scrollTop=t.scrollHeight}}}function ta(){n.terminalAutoFollow=!1,Rn(),n.terminalProgrammaticScrollUntil=0,n.terminal&&"_shouldScrollToBottom"in n.terminal&&(n.terminal._shouldScrollToBottom=!1),st()}function ft(e){if(n.terminal){var t=e==="force";if(t){n.terminalAutoFollow=!0,Rn(),ps(!1),st();return}if(!n.terminalAutoFollow){st();return}ps(!1),st()}}function Fd(e){var t=document.createElement("div");t.className="terminal-scrollbar";var r=document.createElement("div");r.className="terminal-scrollbar-track";var i=document.createElement("div");i.className="terminal-scrollbar-thumb",r.appendChild(i),t.appendChild(r),e.appendChild(t),n.terminalScrollbarEl=t,n.terminalScrollbarThumbEl=i,n.terminalScrollbarHideTimer=null,n.terminalScrollbarDragging=!1,n.terminalScrollbarRafPending=!1;function a(){n.terminalScrollbarHideTimer&&(clearTimeout(n.terminalScrollbarHideTimer),n.terminalScrollbarHideTimer=null),t.classList.add("visible")}function u(){n.terminalScrollbarDragging||(n.terminalScrollbarHideTimer&&clearTimeout(n.terminalScrollbarHideTimer),n.terminalScrollbarHideTimer=setTimeout(function(){n.terminalScrollbarHideTimer=null,n.terminalScrollbarDragging||t.classList.remove("visible")},1500))}function s(){n.terminalScrollbarRafPending=!1;var g=wt();if(g){var y=g.scrollHeight,w=g.clientHeight;if(y<=w){t.classList.remove("visible");return}var F=r.clientHeight,E=Math.max(28,w/y*F),A=y-w,x=g.scrollTop/A,S=x*(F-E);i.style.height=E+"px",i.style.top=S+"px"}}function o(){n.terminalScrollbarRafPending||(n.terminalScrollbarRafPending=!0,requestAnimationFrame(s))}var l=wt();l&&l.addEventListener("scroll",function(){a(),o(),u()},{passive:!0}),r.addEventListener("mousedown",function(g){if(g.target!==i){g.preventDefault();var y=wt();if(y){var w=r.getBoundingClientRect(),F=(g.clientY-w.top)/w.height,E=y.scrollHeight-y.clientHeight;y.scrollTop=F*E}}});var c=0,d=0;i.addEventListener("mousedown",function(g){g.preventDefault(),g.stopPropagation(),n.terminalScrollbarDragging=!0,i.classList.add("dragging"),c=g.clientY;var y=wt();d=y?y.scrollTop:0,document.addEventListener("mousemove",f),document.addEventListener("mouseup",v)});function f(g){g.preventDefault();var y=wt();if(y){var w=r.clientHeight,F=y.scrollHeight,E=y.clientHeight,A=F-E;if(!(A<=0)){var x=Math.max(28,E/F*w),S=w-x;if(!(S<=0)){var P=g.clientY-c,z=P/S*A;y.scrollTop=d+z}}}}function v(){n.terminalScrollbarDragging=!1,i.classList.remove("dragging"),document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",v),u()}i.addEventListener("touchstart",function(g){if(g.touches.length===1){g.stopPropagation(),n.terminalScrollbarDragging=!0,i.classList.add("dragging"),c=g.touches[0].clientY;var y=wt();d=y?y.scrollTop:0,document.addEventListener("touchmove",m,{passive:!1}),document.addEventListener("touchend",b),document.addEventListener("touchcancel",b)}},{passive:!1});function m(g){if(g.touches.length===1){g.preventDefault();var y=wt();if(y){var w=r.clientHeight,F=y.scrollHeight,E=y.clientHeight,A=F-E;if(!(A<=0)){var x=Math.max(28,E/F*w),S=w-x;if(!(S<=0)){var P=g.touches[0].clientY-c,z=P/S*A;y.scrollTop=d+z}}}}}function b(){n.terminalScrollbarDragging=!1,i.classList.remove("dragging"),document.removeEventListener("touchmove",m),document.removeEventListener("touchend",b),document.removeEventListener("touchcancel",b),u()}t.addEventListener("mouseenter",function(){a()}),t.addEventListener("mouseleave",function(){n.terminalScrollbarDragging||u()}),o()}function wd(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 vs="\u2060";function ms(){return{mode:"normal"}}function Cd(e){return!/[^\x00-\x7f]/.test(e)&&e.indexOf("\x1B")===-1}function Bd(e,t){if(!e)return"";var r=String(e);if(t.mode==="normal"&&Cd(r))return r;for(var i="",a=0;a<r.length;a++){var u=r.charCodeAt(a),s=u,o=1;if(u>=55296&&u<=56319&&a+1<r.length){var l=r.charCodeAt(a+1);l>=56320&&l<=57343&&(s=(u-55296)*1024+(l-56320)+65536,o=2)}var c=o===2?r.substr(a,2):r.charAt(a);switch(t.mode){case"normal":s===27?(t.mode="esc",i+=c):s===155?(t.mode="csi",i+=c):s===157||s===144||s===158||s===159?(t.mode="string",i+=c):(i+=c,wd(s)&&(i+=vs));break;case"esc":i+=c,s===91?t.mode="csi":s===93||s===80||s===88||s===94||s===95?t.mode="string":t.mode="normal";break;case"csi":i+=c,s>=64&&s<=126&&(t.mode="normal");break;case"string":i+=c,s===7||s===156?t.mode="normal":s===27&&(t.mode="string-esc");break;case"string-esc":i+=c,s===92?t.mode="normal":t.mode="string";break}a+=o-1}return i}var $r="\x1B[?2026h",na="\x1B[?2026l",Dd=200,kd=256*1024;function Ad(e){if(!e||n.syncOutputBuffer===null&&e.indexOf($r)===-1)return e;for(var t="",r=0;r<e.length;)if(n.syncOutputBuffer!==null){var i=e.indexOf(na,r);if(i===-1)return n.syncOutputBuffer+=e.slice(r),(n.syncOutputBuffer.length>kd||Date.now()>n.syncOutputDeadline)&&(t+=n.syncOutputBuffer,n.syncOutputBuffer=null,n.syncFramingResidue=!0),t;n.syncOutputBuffer+=e.slice(r,i+na.length),t+=n.syncOutputBuffer,n.syncOutputBuffer=null,r=i+na.length}else{var a=e.indexOf($r,r);if(a===-1)return t+=e.slice(r),t;t+=e.slice(r,a),n.syncOutputBuffer=$r,n.syncOutputDeadline=Date.now()+Dd,r=a+$r.length}return t}function Om(){if(n.syncOutputBuffer!==null){var e=n.syncOutputBuffer;return n.syncOutputBuffer=null,e}return""}function Wn(e,t){if(!(!e||t==null)){n.wideParserState||(n.wideParserState=ms());var r=Bd(t,n.wideParserState),i=Ad(r),a=n.terminalAutoFollow!==!1;"_shouldScrollToBottom"in e&&(e._shouldScrollToBottom=a),i&&e.write(i),"_shouldScrollToBottom"in e&&(e._shouldScrollToBottom=a),a&&(n.terminalProgrammaticScrollUntil=Math.max(n.terminalProgrammaticScrollUntil,Date.now()+120)),Hd(t)}}function ra(){n.wideParserState=ms()}function xd(){typeof document>"u"||document.addEventListener("copy",function(e){var t=window.getSelection&&window.getSelection();if(!(!t||t.isCollapsed)){var r=t.anchorNode,i=r&&r.nodeType===3?r.parentNode:r,a=document.getElementById("output");if(!(!a||!i||!a.contains(i))){var u=t.toString(),s=u.split(`
13
- `).map(function(o){return o.split(vs).join("").replace(/[ \t]+$/,"")}).join(`
14
- `);s!==u&&e.clipboardData&&(e.clipboardData.setData("text/plain",s),e.preventDefault())}}})}xd();var gs=150,hs=30,Sd=160*1024,Id=192*1024;function ys(e){if(!e||e.length<=Id)return e;var t=e.length,r=function(x){if(!(typeof n>"u"||!n)){var S=n.terminalOutputMarker|0;if(!(S<=0)){var P=t-x;n.terminalOutputMarker=S>P?S-P:0}}},i=e.length-Sd;if(i>0&&i<e.length){var a=e.charCodeAt(i);a>=56320&&a<=57343&&i++}for(var u=4096,s=Math.min(i+u,e.length),o=i;o<s;o++)if(e.charCodeAt(o)===10){var l=e.slice(o+1);return r(l.length),l}for(var c=Math.max(0,i-256),d=-1,f=i-1;f>=c;f--){var v=e.charCodeAt(f);if(v===27){d=f;break}if(v===7||v>=64&&v<=126)break}if(d!==-1){for(var m=!1,b=d+1;b<i;b++){var g=e.charCodeAt(b);if(g===7){m=!0;break}if(g>=64&&g<=126){m=!0;break}}if(!m)for(var y=Math.min(i+256,e.length),w=i;w<y;w++){var F=e.charCodeAt(w);if(F===7||F>=64&&F<=126){var E=e.slice(w+1);return r(E.length),E}}}var A=e.slice(i);return r(A.length),A}function Xr(){if(n.terminal){if(typeof n.terminal.reset=="function"){n.terminal.reset(),ra(),n.syncOutputBuffer=null,n.syncOutputDeadline=0;return}typeof n.terminal.write=="function"&&n.terminal.write("\x1Bc"),ra(),n.syncOutputBuffer=null,n.syncOutputDeadline=0}}n._resyncStatsWindowStart=0,n._resyncStatsCount=0,n._resyncLastWarnAt=0;var Td=5e3,Ld=12,Md=3e4;n._resyncInProgress=!1;function Cn(e){if(!n.terminal||!n.terminalOutput)return!1;var t=e||{},r=n.terminalOutputMarker|0;r<0&&(r=0),r>n.terminalOutput.length&&(r=n.terminalOutput.length);var i=r>0?n.terminalOutput.slice(r):n.terminalOutput,a=i.length,u=typeof performance<"u"&&performance.now?performance.now():Date.now();n._resyncInProgress=!0;try{Xr(),Wn(n.terminal,i)}finally{n._resyncInProgress=!1}n.lastTerminalResyncAt=Date.now(),ft("output"),t.skipFit||et("refresh");var s=Date.now();if(s-n._resyncStatsWindowStart>Td)n._resyncStatsWindowStart=s,n._resyncStatsCount=1;else if(n._resyncStatsCount++,n._resyncStatsCount>Ld&&s-n._resyncLastWarnAt>Md){n._resyncLastWarnAt=s;var o=typeof performance<"u"&&performance.now?performance.now():Date.now();console.warn("[wand] softResyncTerminal high frequency","count="+n._resyncStatsCount+"/"+Math.round((s-n._resyncStatsWindowStart)/100)/10+"s","bufLen="+a,"lastReplayMs="+Math.round(o-u))}return!0}function qd(e){n.softResyncTimer&&clearTimeout(n.softResyncTimer),n.softResyncTimer=setTimeout(function(){n.softResyncTimer=null,Cn()},typeof e=="number"?e:150)}var Od=/\x1b\[\d*(?:;\d*)?[ABCDfHJK]/,bs=1500,Pd=800;n._resyncChunkLastAt=0,n._resyncChunkTailTimer=null;function Hd(e){if(!n._resyncInProgress&&n.syncFramingResidue&&(n.syncFramingResidue=!1,!(!e||typeof e!="string")&&e.indexOf("\x1B[")!==-1&&Od.test(e))){var t=Date.now(),r=t-n._resyncChunkLastAt;if(r>=bs){n._resyncChunkTailTimer&&(clearTimeout(n._resyncChunkTailTimer),n._resyncChunkTailTimer=null),n._resyncChunkLastAt=t,Cn();return}if(!n._resyncChunkTailTimer){var i=Math.max(Pd,bs-r);n._resyncChunkTailTimer=setTimeout(function(){n._resyncChunkTailTimer=null,n._resyncChunkLastAt=Date.now(),Cn()},i)}}}function Zr(e,t,r){if(!n.terminal)return!1;var i=Ha(t||""),a=e||null,u=r||{},s=u.mode||"append",o=u.scroll!==!1,l=n.terminalSessionId!==a,c=n.terminalOutput||"",d=!!(a&&n.terminalLiveStreamSessions[a]),f=!1;if(i===c&&!l)return o&&ft("output"),st(),!1;if(l&&(Xr(),c="",n.terminalOutput="",n.terminalOutputMarker=0,n.terminalAutoFollow=!0,Rn(),st()),s==="replace")i!==c&&(Xr(),i&&Wn(n.terminal,i),f=!0);else{if(i.length<c.length&&!l)return!1;if(d&&!l&&s!=="replace"&&c&&!i.startsWith(c))return!1;if(i.startsWith(c)){var v=i.slice(c.length);v&&(Wn(n.terminal,v),f=!0)}else{if(c&&c.startsWith(i))return!1;Xr(),i&&Wn(n.terminal,i),f=!0}}return n.terminalSessionId=a,n.terminalOutput=i,n.terminalOutputMarker=0,o&&(f||l||s==="replace")?ft(l||s==="replace"?"force":"output"):st(),l&&Qr(n.terminal.cols,n.terminal.rows),f||l}function zn(){var e=document.getElementById("output");if(!(!e||n.terminal||n.terminalInitializing)){if(typeof WTermLib>"u"||!WTermLib.WTerm){n.terminalInitRetries||(n.terminalInitRetries=0),n.terminalInitRetries<10&&(n.terminalInitRetries++,setTimeout(zn,200));return}n.terminalInitRetries=0,n.terminalInitializing=!0,n.selectedId&&(e.classList.remove("hidden"),e.classList.add("active"));for(var t=e.querySelectorAll(".terminal-scroll-wrap"),r=0;r<t.length;r++){var i=t[r];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(o,l){Qr(o,l),n.terminal&&n.terminalOutput&&Cn({skipFit:!0})}}),s=document.fonts&&typeof document.fonts.ready=="object"?Promise.race([document.fonts.ready,new Promise(function(o){setTimeout(o,800)})]):Promise.resolve();s.then(function(){return u.init()}).then(function(){if(n.terminal=u,n.terminalInitializing=!1,gu(),a.isConnected&&(a.offsetHeight,typeof u.remeasure=="function"))try{u.remeasure()}catch{}n.terminalAutoFollow=!0,Rn();var o=wt();if(o&&(n.terminalViewportScrollHandler=function(){if(Date.now()<n.terminalProgrammaticScrollUntil){st();return}if(fs()){n.terminalAutoFollow=!0,Rn(),st();return}ta()},n.terminalViewportTouchStartHandler=function(c){c.touches&&c.touches.length===1&&(n.terminalTouchStartY=c.touches[0].clientY)},n.terminalViewportTouchHandler=function(c){!c.touches||c.touches.length!==1||typeof n.terminalTouchStartY=="number"&&c.touches[0].clientY-n.terminalTouchStartY>4&&ta()},o.addEventListener("scroll",n.terminalViewportScrollHandler,{passive:!0}),o.addEventListener("touchstart",n.terminalViewportTouchStartHandler,{passive:!0}),o.addEventListener("touchmove",n.terminalViewportTouchHandler,{passive:!0})),n.terminalWheelHandler=function(c){c.deltaY<0&&ta(),c.stopPropagation()},e.addEventListener("wheel",n.terminalWheelHandler,{passive:!0}),Fd(e),n.selectedId){var l=n.sessions.find(function(c){return c.id===n.selectedId});l&&Zr(l.id,l.output||"",{mode:"append",scroll:!1})}else Wn(u,`\u70B9\u51FB\u4E0A\u65B9\u300C\u65B0\u5BF9\u8BDD\u300D\u5F00\u59CB\u4F60\u7684\u7B2C\u4E00\u6B21\u5BF9\u8BDD\u3002\r
15
- `);n.terminalClickHandler=function(c){oi()||_t(c)},e.addEventListener("click",n.terminalClickHandler),st(),td(),id(),vd(),md(),et("mount",{forceReplay:!0})}).catch(function(o){n.terminalInitializing=!1,console.error("[wand] wterm init failed:",o)})}}function _d(e,t){if(!(!n.selectedId||!e)){var r=n.selectedId+":"+e;if(n.toolContentCache[r]){t(null,n.toolContentCache[r]);return}fetch("/api/sessions/"+encodeURIComponent(n.selectedId)+"/tool-content/"+encodeURIComponent(e),{credentials:"same-origin"}).then(function(i){return i.json()}).then(function(i){i.error?t(i.error,null):(n.toolContentCache[r]=i,t(null,i))}).catch(function(){t("\u52A0\u8F7D\u5931\u8D25",null)})}}function Bn(e){return!!(n.config&&n.config.cardDefaults&&n.config.cardDefaults[e])}function ia(e,t,r,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",_d(a,function(u,s){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 o=typeof s.content=="string"?s.content:JSON.stringify(s.content);r(o,s)}))}}window.__tcToggle=function(e,t){var r=t.closest(".tool-use-card")||t.closest(".inline-diff");if(r){var i=r.classList.contains("collapsed");r.classList.toggle("collapsed");var a=r.dataset.expandKind||"tool-card";if(bn(r,a),i){var u=r.querySelector(".tool-use-result");ia(r,u,function(s){u&&(u.innerHTML='<pre class="tool-use-result-content">'+p(s)+"</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 r=e.querySelector(".thinking-inline-action");r&&(r.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 r=e.querySelector(".thinking-inline-action");r&&(r.textContent="\u5C55\u5F00")}bn(e,"thinking")},window.__subagentReplyToggle=function(e,t){e&&(e.preventDefault(),e.stopPropagation());var r=t&&t.closest?t.closest(".subagent-reply"):null;if(r){var i=r.getAttribute("data-expanded")==="true";qi(r,"subagent-reply",!i),bn(r,"subagent-reply")}},window.__subagentPanelToggle=function(e,t){e&&(e.preventDefault(),e.stopPropagation());var r=t&&t.closest?t.closest(".subagent-panel"):null;if(r){var i=r.getAttribute("data-expanded")==="true";qi(r,"subagent-panel",!i),bn(r,"subagent-panel")}};function jd(e){if(e)for(var t=e.querySelectorAll('.subagent-panel[data-expanded="false"]'),r=0;r<t.length;r++){var i=t[r].querySelector(".subagent-panel-body");i&&(i.scrollTop=i.scrollHeight)}}window.__inlineToolToggle=function(e){var t=e.classList.toggle("inline-tool-open"),r=e.querySelector(".inline-tool-expanded");r&&(r.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,r,function(a){e.dataset.result=a,r&&(r.innerHTML='<div class="inline-tool-result">'+ko(a,"")+"</div>")}),bn(e,"inline-tool")},window.__terminalExpand=function(e){var t=e.closest(".inline-terminal");if(t){var r=t.querySelector(".term-body");if(r){var i=r.style.display==="none";r.style.display=i?"block":"none",t.dataset.expanded=i?"true":"false";var a=e.querySelector(".term-toggle-icon");if(a&&(a.textContent=i?"\u25BC":"\u25B6"),bn(t,"terminal"),i){var u=r.querySelector(".term-output");ia(t,u,function(s){if(u){for(var o=s.split(`
16
- `),l="",c=0;c<o.length;c++)!o[c]&&c===o.length-1||(l+='<div class="term-line">'+p(o[c])+"</div>");u.innerHTML=l}})}}}};function Pm(e){var t=document.querySelector(".thinking-streaming");if(t){var r=t.querySelector(".thinking-streaming-text");if(r){var i=e.split(`
6
+ `)+"</pre></div></div>"}function Yl(e,t){var r="/api/file-raw?path="+encodeURIComponent(t.path);e.innerHTML='<div class="image-preview-wrapper"><img class="image-preview-img" src="'+r+'" 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 Gl(e,t){var r="/api/file-raw?path="+encodeURIComponent(t.path);e.innerHTML='<iframe class="pdf-preview-frame" src="'+r+'" title="'+p(t.name)+'"></iframe>'}function Ql(e,t){var r="/api/file-raw?path="+encodeURIComponent(t.path);e.innerHTML='<div class="media-preview-wrapper"><video class="media-preview-video" controls preload="metadata" src="'+r+'">\u60A8\u7684\u6D4F\u89C8\u5668\u4E0D\u652F\u6301 video \u6807\u7B7E\u3002</video><div class="media-preview-meta">'+p(Mn(t.size))+"</div></div>"}function $l(e,t){var r="/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="'+r+'">\u60A8\u7684\u6D4F\u89C8\u5668\u4E0D\u652F\u6301 audio \u6807\u7B7E\u3002</audio><div class="media-preview-meta">'+p(Mn(t.size))+"</div></div>"}function Xl(e,t){var r="/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(Mn(t.size))+'</span></div><div class="binary-preview-path" title="'+p(t.path)+'">'+p(t.path)+'</div><div class="binary-preview-actions"><a class="binary-preview-btn" href="'+r+'" 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>';var i=e.querySelector('[data-action="view-cat"]');i&&i.addEventListener("click",function(){Hi('cat -- "'+t.path+'"')&&Ft("\u547D\u4EE4\u5DF2\u7C98\u8D34\u5230\u8F93\u5165\u6846")})}function Ni(e,t){var r=e.querySelector(".file-preview-toolbar");if(r){if(r.innerHTML="",r.classList.remove("editing"),q&&q.editing){r.classList.add("editing"),ur(e,t);return}var i=[];t.kind==="text"&&i.push({label:"\u7F16\u8F91\u6587\u4EF6 (E)",icon:Le("edit"),primary:!0,action:function(){Zl()}}),i.push({label:"\u590D\u5236\u8DEF\u5F84",icon:Le("clipboard"),action:function(){Rr(t.path).then(function(){Ft("\u5DF2\u590D\u5236\u8DEF\u5F84")})}}),i.push({label:"\u7C98\u8D34\u5230\u8F93\u5165\u6846",icon:Le("send-to-input"),action:function(){Hi(t.path)&&Ft("\u5DF2\u7C98\u8D34\u5230\u8F93\u5165\u6846")}}),i.push({label:"\u4E0B\u8F7D",icon:Le("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:Le("copy"),action:function(){Rr(t.content||"").then(function(){Ft("\u5DF2\u590D\u5236\u5185\u5BB9")})}}),i.push({label:"\u5207\u6362\u81EA\u52A8\u6362\u884C",icon:Le("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:Le("minus"),action:function(){Iu(e,-1)}},{kind:"label",icon:Le("type"),label:"\u5B57\u53F7"},{label:"\u653E\u5927\u5B57\u53F7",icon:Le("plus"),action:function(){Iu(e,1)}}]})),ku(r,i,e)}}function ku(e,t,r){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 s=document.createElement("span");s.className="file-preview-toolbar-grouplabel",s.title=u.label||"",s.innerHTML=u.icon||"",a.appendChild(s);return}a.appendChild(Au(u))}),e.appendChild(a);return}e.appendChild(Au(i))})}function Au(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(r){r.stopPropagation(),typeof e.action=="function"&&e.action(t)}),t}function ur(e,t){var r=e.querySelector(".file-preview-toolbar");if(r){r.innerHTML="";var i=q&&q.saving,a=[{label:"\u4FDD\u5B58 (Ctrl+S)",icon:Le("save"),text:"\u4FDD\u5B58",primary:!0,action:function(){Su()}},{label:"\u64A4\u9500\u6539\u52A8",icon:Le("rotate-ccw"),action:function(){ec()}},{label:"\u9000\u51FA\u7F16\u8F91 (Esc)",icon:Le("x"),action:function(){xu()}}];ku(r,a,e),i&&r.querySelectorAll(".file-preview-toolbar-btn").forEach(function(u){u.disabled=!0})}}function Zl(){if(!(!q||!q.data)){var e=q.data;if(e.kind==="text"){q.editing=!0,q.dirty=!1,q.originalContent=e.content||"";var t=q.overlay,r=t.querySelector(".file-preview-body");if(r){r.classList.add("editing"),r.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=r.querySelector(".code-editor-textarea");i&&(i.value=e.content||"",i.addEventListener("input",function(){var a=i.value!==(q.originalContent||"");a!==q.dirty&&(q.dirty=a,sr())}),i.addEventListener("keydown",function(a){if(a.key==="Tab"){a.preventDefault();var u=i.selectionStart,s=i.selectionEnd,o=" ";i.value=i.value.slice(0,u)+o+i.value.slice(s),i.selectionStart=i.selectionEnd=u+o.length,i.dispatchEvent(new Event("input"))}}),setTimeout(function(){i.focus(),i.setSelectionRange(0,0),i.scrollTop=0},30)),Ni(t,e),sr()}}}}function xu(){if(!(!q||!q.editing)){var e=function(){q.editing=!1,q.dirty=!1;var t=q.overlay,r=t.querySelector(".file-preview-body");r&&r.classList.remove("editing"),Du(t,q.data),sr()};if(q.dirty&&typeof nn=="function"){nn({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 ec(){if(!(!q||!q.editing)){var e=q.overlay,t=e.querySelector(".code-editor-textarea");t&&(t.value=q.originalContent||"",q.dirty=!1,sr(),t.focus())}}function Su(){if(!(!q||!q.editing)&&!q.saving){var e=q.overlay,t=e.querySelector(".code-editor-textarea");if(t){var r=t.value;if(r===(q.originalContent||"")){Ft("\u6CA1\u6709\u6539\u52A8");return}q.saving=!0,ur(e,q.data),fetch("/api/file-write",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:q.path,content:r})}).then(function(i){return i.json().then(function(a){return{ok:i.ok,status:i.status,data:a}})}).then(function(i){if(q.saving=!1,!i.ok||i.data&&i.data.error){var a=i.data&&i.data.error||"\u4FDD\u5B58\u5931\u8D25 ("+i.status+")";Ft(a),ur(e,q.data);return}if(q.data.content=r,q.data.size=i.data&&i.data.size||r.length,q.originalContent=r,q.dirty=!1,Ft("\u5DF2\u4FDD\u5B58"),sr(),ur(e,q.data),typeof Lt=="function")try{Lt()}catch{}}).catch(function(i){q.saving=!1,Ft("\u4FDD\u5B58\u5931\u8D25\uFF1A"+(i&&i.message?i.message:"\u7F51\u7EDC\u9519\u8BEF")),ur(e,q.data)})}}}function sr(){if(q){var e=q.overlay;if(e){var t=e.querySelector(".file-preview-name-row");if(t){var r=t.querySelector(".file-preview-dirty");if(q.dirty){if(!r){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 r&&r.remove()}}}}function Iu(e,t){var r=e.querySelector(".code-preview-content pre"),i=e.querySelector(".code-preview-lines");if(r){var a=parseFloat(getComputedStyle(r).fontSize)||13,u=Math.max(10,Math.min(22,a+t));r.style.fontSize=u+"px",i&&(i.style.fontSize=u+"px")}}function Tu(e,t){var r=e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),i=tc();if(!i)return r;var a=[];for(var u in i){var s=i[u];s&&s.pattern&&a.push({pattern:s.pattern,cls:s.cls,priority:s.priority||5})}a.sort(function(c,d){return d.priority-c.priority});var o=a.map(function(c){return"("+c.pattern.source+")"}),l=new RegExp(o.join("|"),"gm");return r.replace(l,function(c){for(var d=0;d<a.length;d++){var f=a[d],v=new RegExp("^"+f.pattern.source+"$","gm");if(v.test(c))return'<span class="'+f.cls+'">'+c+"</span>"}return c})}function tc(){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 nc(e){if(!e)return"";var t=p(e);t=t.replace(/```(\w*)\n([\s\S]*?)```/g,function(i,a,u){var s=Tu(u.trim(),a),o=s.replace(/_/g,"&#95;").replace(/\*/g,"&#42;");return'<pre><code class="language-'+a+'">'+o+"</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=Io(t);var r=t.split(/\n{2,}/);return t=r.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 Lu(){if(!n.selectedId||!n.gitStatus||!n.gitStatus.isGit||n.gitStatusSessionId!==n.selectedId)return"";var e=n.gitStatus.branch||"?",t=n.gitStatus.modifiedCount||0,r=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(r)+'" 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 ji(){var e=document.getElementById("topbar-git-slot");if(e){e.innerHTML=Lu();var t=document.getElementById("topbar-git-badge");t&&t.addEventListener("click",function(r){r.preventDefault(),Mu()})}}function rc(e){if(!e)return"";var t=n.topbarMoreOpen,r=!!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,s=e.status==="running"||e.worktreeMergeStatus==="merging",o=a&&e.worktreeMergeStatus!=="merged",l=u,c=r||i||!0,d=o||l||!0,f='<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>',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="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>',b='<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>',g='<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>',w="";if(r){var F=e.provider==="codex"?"\u590D\u5236 Codex thread ID":"\u590D\u5236 Claude \u4F1A\u8BDD ID";w+='<button class="topbar-more-item" data-action="copy-claude-session-id" type="button" role="menuitem">'+v+"<span>"+F+"</span></button>"}i&&(w+='<button class="topbar-more-item" data-action="copy-cwd" type="button" role="menuitem">'+m+"<span>\u590D\u5236\u5DE5\u4F5C\u76EE\u5F55</span></button>"),w+='<button class="topbar-more-item" data-action="copy-session-id" type="button" role="menuitem">'+b+"<span>\u590D\u5236\u4F1A\u8BDD ID</span></button>";var E="";o?E+='<button class="topbar-more-item" data-action="worktree-merge" type="button" role="menuitem"'+(s?" disabled":"")+">"+g+"<span>\u5408\u5E76\u5230\u4E3B\u5206\u652F\u2026</span></button>":l&&(E+='<button class="topbar-more-item" data-action="worktree-cleanup" type="button" role="menuitem">'+g+"<span>\u91CD\u8BD5 worktree \u6E05\u7406</span></button>"),E+='<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 A=c&&d?'<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">'+w+A+E+"</div></div>"}function En(e,t){if(!e)return Promise.resolve(null);var r=t&&t.force,i=Date.now();if(!r&&n.gitStatusSessionId===e&&n.gitStatus&&i-n.gitStatusLastFetchAt<1e3)return Promise.resolve(n.gitStatus);if(n.gitStatusInflight&&n.gitStatusInflight.sessionId===e)return n.gitStatusInflight.promise;n.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 n.gitStatus=u||{isGit:!1},n.gitStatusSessionId=e,n.gitStatusLastFetchAt=Date.now(),ji(),u}).catch(function(){return n.gitStatus={isGit:!1},n.gitStatusSessionId=e,n.gitStatusLastFetchAt=Date.now(),ji(),null}).finally(function(){n.gitStatusLoading=!1,n.gitStatusInflight&&n.gitStatusInflight.sessionId===e&&(n.gitStatusInflight=null)});return n.gitStatusInflight={sessionId:e,promise:a},a}var Fn=null,wn=null,Im=null;function ic(e){return e==="commit-tag"||e==="commit-tag-push"||e==="commit-push"?e:"commit"}function ac(e){return e=ic(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 Mu(){if(n.selectedId){n.quickCommitOpen=!0,n.quickCommitSubmitting=!1,n.quickCommitAutoGenerating=!1,n.quickCommitError="",n.quickCommitForm={customMessage:"",tag:"",tagEdited:!1},n.quickCommitPushing=!1,n.quickCommitPushError="",n.quickCommitResult=null,n.quickCommitDragAction="commit",Qn(),pn(),$n(),Mt();var e=document.getElementById("quick-commit-modal");e&&(e.classList.remove("hidden"),n.lastFocusedElement=document.activeElement,Fi(e)),Fn&&document.removeEventListener("keydown",Fn),Fn=function(t){t.key==="Escape"&&n.quickCommitOpen&&!n.quickCommitSubmitting&&!n.quickCommitPushing&&On()},document.addEventListener("keydown",Fn),En(n.selectedId,{force:!0}).then(function(){n.quickCommitOpen&&Mt()})}}function On(){n.quickCommitOpen=!1,n.quickCommitSubmitting=!1,n.quickCommitError="",n.quickCommitResult=null,n.quickCommitDragAction="commit";var e=document.getElementById("quick-commit-modal");e&&e.classList.add("hidden"),n.focusTrapHandler&&(document.removeEventListener("keydown",n.focusTrapHandler),n.focusTrapHandler=null),Fn&&(document.removeEventListener("keydown",Fn),Fn=null),wn&&(wn(),wn=null),n.lastFocusedElement&&typeof n.lastFocusedElement.focus=="function"&&n.lastFocusedElement.focus()}function Mt(){var e=document.getElementById("quick-commit-modal");if(e){wn&&(wn(),wn=null);var t=Pu(),r=document.createElement("div");r.innerHTML=t;var i=r.querySelector("#quick-commit-modal");i&&(e.innerHTML=i.innerHTML,qu())}}function qu(){var e=document.getElementById("quick-commit-close-btn");e&&e.addEventListener("click",On);var t=document.getElementById("quick-commit-cancel-btn");t&&t.addEventListener("click",On);var r=document.getElementById("quick-commit-ai-btn");r&&r.addEventListener("click",lc);var i=document.getElementById("quick-commit-message");i&&(i.addEventListener("input",function(){n.quickCommitForm.customMessage=i.value}),i.addEventListener("keydown",function(s){(s.metaKey||s.ctrlKey)&&s.key==="Enter"&&(s.preventDefault(),Pn("commit"))}));var a=document.getElementById("quick-commit-tag");a&&(a.addEventListener("input",function(){n.quickCommitForm.tag=a.value,n.quickCommitForm.tagEdited=!0}),a.addEventListener("keydown",function(s){s.key==="Enter"&&(s.preventDefault(),Pn("commit-tag"))}));var u=document.getElementById("quick-commit-push-after-btn");u&&u.addEventListener("click",function(){var s=n.quickCommitResult||{};cc({pushCommits:!0,pushTags:!!s.tagName,closeOnSuccess:!0})}),oc()}function uc(e){var t=!!(e&&e.tag),r=!!(e&&e.push);return t&&r?"commit-tag-push":t?"commit-tag":r?"commit-push":"commit"}var sc=58,Wr=10;function Ou(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 oc(){var e=document.getElementById("qc-dock-field"),t=document.getElementById("qc-dock-stage"),r=document.getElementById("qc-dock-launch"),i=document.getElementById("qc-dock-cluster");if(!e||!t||!r||!i)return;var a=["commit","tag","push"],u={};if(a.forEach(function(B){u[B]=e.querySelector('[data-chip="'+B+'"]')}),!u.commit||!u.tag||!u.push)return;u.sub=e.querySelector('[data-chip="sub"]');var s=!!u.sub,o=s?a.concat(["sub"]):a;function l(B){return u[B]?u[B].offsetWidth:90}function c(){return u.commit?u.commit.offsetHeight:38}function d(){return window.matchMedia&&window.matchMedia("(max-width: 720px)").matches}function f(){var B=e.clientWidth,T=e.clientHeight,I=c(),V=l("commit"),te=l("tag"),ee=l("push");if(d()&&s){var Q=Math.max(8,T*.2-I/2),ne=Math.min(T-I-8,T*.7-I/2),U=function(re){return Math.max(8,B*.27-re/2)},M=function(re){return Math.min(B-re-8,B*.73-re/2)};return{commit:{x:U(V),y:Q},tag:{x:M(te),y:Q},push:{x:U(ee),y:ne},sub:{x:M(l("sub")),y:ne}}}var H=d(),j=H?Math.max(8,T*.18-I/2):Math.max(8,T*.12),Y=H?Math.min(T-I-8,T*.72-I/2):Math.min(T-I-8,T*.88-I),K=H?.24:.28,X=H?.76:.72,oe={commit:{x:Math.max(8,(B-V)/2),y:j},tag:{x:Math.max(8,B*K-te/2),y:Y},push:{x:Math.min(B-ee-8,B*X-ee/2),y:Y}};if(s){var le=l("sub");oe.sub={x:Math.min(B-le-8,B*.94-le/2),y:Math.max(8,Math.min(T-I-8,(T-I)/2))}}return oe}var v={};function m(B,T,I){u[B]&&(u[B].style.transform="translate("+T.toFixed(1)+"px,"+I.toFixed(1)+"px)")}function b(B){v=f(),o.forEach(function(T){u[T].classList.toggle("qc-chip--anim",!!B),m(T,v[T].x,v[T].y)})}b(!1);var g=null;function y(B,T,I){var V=c(),te=5,ee=o.filter(function(H){return B.indexOf(H)>=0}),Q=ee.reduce(function(H,j){return H+l(j)},0)+Math.max(0,ee.length-1)*te,ne=e.clientHeight,U=T-Q/2,M=Math.max(2,Math.min(ne-V-2,I-V/2));return ee.forEach(function(H){m(H,U,M),U+=l(H)+te}),{x:T-Q/2-7,y:M-7,w:Q+14,h:V+14}}function w(B){i.classList.add("is-active"),i.style.transform="translate("+B.x.toFixed(1)+"px,"+B.y.toFixed(1)+"px)",i.style.width=B.w.toFixed(1)+"px",i.style.height=B.h.toFixed(1)+"px"}function F(){i.classList.remove("is-active")}function E(B){return uc({commit:!0,tag:B.indexOf("tag")>=0,push:B.indexOf("push")>=0})}function A(B){return B.indexOf("sub")>=0}function x(B){var T=document.getElementById("qc-dock-launch-label");T&&(T.textContent=B)}function S(B,T){var I=r.getBoundingClientRect();return B>=I.left&&B<=I.right&&T>=I.top&&T<=I.bottom}function P(B){return function(T){if(!(u[B].disabled||zr())){g={anchor:B,pointerId:T.pointerId,startX:T.clientX,startY:T.clientY,moved:!1,members:[B]},o.forEach(function(I){u[I].classList.remove("qc-chip--anim")}),u[B].classList.add("is-grabbing");try{u[B].setPointerCapture(T.pointerId)}catch{}t.classList.add("is-dragging"),T.preventDefault()}}}function z(B){if(!(!g||g.pointerId!==B.pointerId)){(Math.abs(B.clientX-g.startX)>3||Math.abs(B.clientY-g.startY)>3)&&(g.moved=!0);var T=e.getBoundingClientRect(),I=B.clientX-T.left,V=B.clientY-T.top;if(a.forEach(function(H){if(!(g.members.indexOf(H)>=0)){var j=v[H].x+l(H)/2,Y=v[H].y+c()/2,K=I-j,X=V-Y;Math.sqrt(K*K+X*X)<sc&&(g.members.push(H),u[H].classList.remove("qc-chip--anim"),u[H].classList.add("is-attached"))}}),s&&g.members.indexOf("sub")<0){var te=v.sub.x-Wr,ee=v.sub.y-Wr,Q=v.sub.x+l("sub")+Wr,ne=v.sub.y+c()+Wr;I>=te&&I<=Q&&V>=ee&&V<=ne&&(g.members.push("sub"),u.sub.classList.remove("qc-chip--anim"),u.sub.classList.add("is-attached"))}var U=y(g.members,I,V),M=S(B.clientX,B.clientY);t.setAttribute("data-hot",M?"1":"0"),t.setAttribute("data-action",E(g.members)),g.members.length>1?w(U):F(),x(M?"\u677E\u624B\u6267\u884C":"\u63D0\u4EA4")}}function G(B,T){if(!(!g||g.pointerId!==B.pointerId)){var I=g;g=null,t.classList.remove("is-dragging"),t.setAttribute("data-hot","0"),x("\u63D0\u4EA4"),F(),o.forEach(function(te){u[te].classList.remove("is-grabbing","is-attached")});try{u[I.anchor].releasePointerCapture(I.pointerId)}catch{}if(!T&&!I.moved){var V=Ou(I.anchor);Pn(V.action,V.sub);return}if(!T&&S(B.clientX,B.clientY)){Pn(E(I.members),A(I.members));return}t.setAttribute("data-action","commit"),b(!0)}}var L=function(){n.quickCommitOpen&&!g&&b(!1)};window.addEventListener("resize",L),o.forEach(function(B){var T=u[B];T.addEventListener("pointerdown",P(B)),T.addEventListener("pointermove",z),T.addEventListener("pointerup",function(I){G(I,!1)}),T.addEventListener("pointercancel",function(I){G(I,!0)}),T.addEventListener("keydown",function(I){if(!(T.disabled||zr())&&(I.key==="Enter"||I.key===" "||I.key==="Spacebar")){I.preventDefault();var V=Ou(B);Pn(V.action,V.sub)}})}),r.addEventListener("click",function(){r.disabled||zr()||g||Pn("commit")}),wn=function(){window.removeEventListener("resize",L),g=null}}function lc(){if(!(!n.selectedId||n.quickCommitGenerating)){var e=document.getElementById("quick-commit-message");e&&(n.quickCommitForm.customMessage=e.value);var t=document.getElementById("quick-commit-tag");t&&(n.quickCommitForm.tag=t.value),n.quickCommitGenerating=!0,n.quickCommitError="",Mt(),fetch("/api/sessions/"+encodeURIComponent(n.selectedId)+"/generate-commit-message",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({})}).then(function(r){return r.json().then(function(i){return{ok:r.ok,data:i}})}).then(function(r){if(!r.ok)throw new Error(r.data&&r.data.error||"AI \u751F\u6210\u5931\u8D25\u3002");var i=r.data||{},a=typeof i.message=="string"?i.message:"",u=typeof i.suggestedTag=="string"?i.suggestedTag.trim():"",s=(n.quickCommitForm.customMessage||"").trim();!s&&a&&(n.quickCommitForm.customMessage=a),u&&(n.quickCommitForm.tagEdited||(n.quickCommitForm.tag=u),n.quickCommitDragAction="commit-tag")}).catch(function(r){n.quickCommitError=r&&r.message||"AI \u751F\u6210\u5931\u8D25\u3002"}).finally(function(){n.quickCommitGenerating=!1,n.quickCommitOpen&&Mt()})}}function Pn(e,t){if(!(!n.selectedId||n.quickCommitSubmitting)){var r=document.getElementById("quick-commit-message");r&&(n.quickCommitForm.customMessage=r.value);var i=document.getElementById("quick-commit-tag");i&&(n.quickCommitForm.tag=i.value);var a=n.quickCommitForm||{},u=ac(e||n.quickCommitDragAction||"commit"),s=u.withTag,o=s?(a.tag||"").trim():"",l=(a.customMessage||"").trim(),c=!l,d={branch:(n.gitStatus||{}).branch||"",commitHash:(n.gitStatus||{}).lastCommit&&(n.gitStatus||{}).lastCommit.shortHash?(n.gitStatus||{}).lastCommit.shortHash:(n.gitStatus||{}).head?(n.gitStatus||{}).head.substring(0,7):"",commitSubject:(n.gitStatus||{}).lastCommit&&(n.gitStatus||{}).lastCommit.subject?(n.gitStatus||{}).lastCommit.subject:"",tag:(n.gitStatus||{}).latestTag||""},f={autoMessage:c,customMessage:c?"":l,tag:o,autoTag:!!(s&&!o),push:!!u.push,submodule:!!t};n.quickCommitSubmitting=!0,n.quickCommitSubmoduleIntent=!!t,n.quickCommitAutoGenerating=c||f.autoTag,n.quickCommitError="",n.quickCommitPushError="",n.quickCommitResult=null,n.quickCommitDragAction=u.action,Mt(),fetch("/api/sessions/"+encodeURIComponent(n.selectedId)+"/quick-commit",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify(f)}).then(function(v){return v.json().then(function(m){return{ok:v.ok,data:m}})}).then(function(v){if(!v.ok)throw new Error(v.data&&v.data.error||"\u5FEB\u6377\u63D0\u4EA4\u5931\u8D25\u3002");var m=v.data||{},b=m.commit&&m.commit.hash?m.commit.hash.substring(0,7):"",g=m.tag&&m.tag.name?m.tag.name:"",y=Array.isArray(m.submoduleCommits)?m.submoduleCommits:[],w=y.length>0?"\u5DF2\u5148\u63D0\u4EA4 "+y.length+" \u4E2A submodule\uFF08"+y.map(function(E){return E.path}).join("\u3001")+"\uFF09\uFF0C":"",F=w+"\u5DF2\u63D0\u4EA4"+(b?" "+b:"")+(g?"\uFF0C\u5DF2\u6253 Tag "+g:"");n.quickCommitResult={action:u.action,includeSubmodule:!!t,pushed:!!m.pushed,pushError:m.pushError||"",commitHash:b,commitMessage:m.commit&&m.commit.message?m.commit.message:l,tagName:g,oldTag:d.tag,oldCommitHash:d.commitHash,oldCommitSubject:d.commitSubject,submoduleCount:y.length},u.push&&!m.pushError?(typeof k=="function"&&k(F+"\uFF0C\u5DF2\u63A8\u9001\u3002","success"),On()):(typeof k=="function"&&k(F+(m.pushError?"\uFF1Bpush \u5931\u8D25\uFF1A"+m.pushError:"\u3002"),m.pushError?"error":"success"),n.selectedId&&En(n.selectedId,{force:!0}).then(function(){n.quickCommitOpen&&Mt()}))}).catch(function(v){n.quickCommitError=v&&v.message||"\u5FEB\u6377\u63D0\u4EA4\u5931\u8D25\u3002"}).finally(function(){n.quickCommitSubmitting=!1,n.quickCommitAutoGenerating=!1,n.quickCommitOpen&&Mt()})}}function cc(e){if(!(!n.selectedId||n.quickCommitPushing)){var t=!!(e&&e.pushCommits),r=!!(e&&e.pushTags),i=!!(e&&e.closeOnSuccess);if(!(!t&&!r)){var a=n.quickCommitResult||{},u=!!a.includeSubmodule;n.quickCommitPushing=!0,n.quickCommitPushError="",Mt(),fetch("/api/sessions/"+encodeURIComponent(n.selectedId)+"/git/push",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({pushCommits:t,pushTags:r,submodule:u,tag:a.tagName||""})}).then(function(s){return s.json().then(function(o){return{ok:s.ok,data:o}})}).then(function(s){var o=s.data||{};if(!s.ok)throw new Error(o&&o.error||"\u63A8\u9001\u5931\u8D25\u3002");if(o.error){n.quickCommitPushError=o.error,typeof k=="function"&&k("\u63A8\u9001\u5931\u8D25\uFF1A"+o.error,"error");return}var l=[];o.pushedCommits&&l.push("commits"),o.pushedTags&&l.push("tags");var c=l.length?l.join(" \u548C "):"\uFF08\u65E0\u5185\u5BB9\uFF09";typeof k=="function"&&k("\u5DF2\u63A8\u9001 "+c,"success"),n.quickCommitResult&&(n.quickCommitResult.pushed=!0),i?(On(),n.selectedId&&En(n.selectedId,{force:!0})):n.selectedId&&En(n.selectedId,{force:!0}).then(function(){n.quickCommitOpen&&Mt()})}).catch(function(s){n.quickCommitPushError=s&&s.message||"\u63A8\u9001\u5931\u8D25\u3002",typeof k=="function"&&k(n.quickCommitPushError,"error")}).finally(function(){n.quickCommitPushing=!1,n.quickCommitOpen&&Mt()})}}}function dc(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 r="",i=0;i<e.length;i++)if(e[i]&&e[i]!=="."&&e[i]!==" "){r=e[i];break}r=(r||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[r]||{cls:"other",title:"\u5DF2\u66F4\u6539"};return{letter:r,cls:u.cls,title:u.title}}function Tm(e){var t=e.map(function(r){var i=dc(r.status||""),a=r.path||"",u=a.lastIndexOf("/"),s=u>=0?a.slice(0,u+1):"",o=u>=0?a.slice(u+1):a,l="";if(r.isSubmodule){var c=r.submoduleState||{},d=[];c.commitChanged&&d.push("\u65B0\u6307\u9488"),c.hasTrackedChanges&&d.push("dirty"),c.hasUntracked&&d.push("\u672A\u8DDF\u8E2A");var f=d.length?"submodule \xB7 "+d.join(" / "):"submodule";l='<span class="qc-submodule-badge">'+p(f)+"</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">'+(s?'<span class="qc-file-dir">'+p(s)+"</span>":"")+'<span class="qc-file-name">'+p(o)+"</span></span>"+l+"</div>"}).join("");return t||'<div class="qc-empty">\u6CA1\u6709\u53EF\u63D0\u4EA4\u7684\u6539\u52A8\u3002</div>'}function zr(){return n.quickCommitSubmitting||n.quickCommitPushing}function Vr(e,t,r,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">'+r+"</div></div></div>"}function fc(){var e=n.gitStatus||{};if(e.hasSubmodule===!0)return!0;for(var t=e.files||[],r=0;r<t.length;r++)if(t[r]&&t[r].isSubmodule===!0)return!0;return!1}function pc(e){var t=!e||zr(),r=fc();if(n.quickCommitSubmitting){var i=n.quickCommitSubmoduleIntent?"\uFF08\u542B submodule\uFF09":"",a=(n.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(o,l,c){return'<button type="button" class="qc-chip qc-chip--'+o+'" data-chip="'+o+'"'+(c?' title="'+p(c)+'"':"")+(t?" disabled":"")+'><span class="qc-chip-dot" aria-hidden="true"></span><span class="qc-chip-label">'+l+"</span></button>"}var s=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"+(r?" \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")+(r?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(s)+"</div></div>"}function vc(){var e=n.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>',r=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"'+(n.quickCommitPushing?" disabled":"")+">"+(n.quickCommitPushing?"\u63A8\u9001\u4E2D...":"Push & Close")+"</button>";return'<section class="qc-result-panel">'+Vr("Commit",t,r,"")+Vr("Tag",i,a,"qc-pair--tag")+(e.pushError||n.quickCommitPushError?'<p class="error-message">'+p(e.pushError||n.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 Pu(){var e=n.gitStatus||{},t=n.quickCommitForm||{customMessage:"",tag:"",tagEdited:!1},r=(e.modifiedCount||0)>0,i=n.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>',s=e.latestTag?"<code>"+p(e.latestTag)+"</code>":'<span class="qc-muted">\u65E0 tag</span>',o='<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||"")+'"'+(n.quickCommitSubmitting?" disabled":"")+">",l='<textarea id="quick-commit-message" class="field-input qc-message-input" rows="3" placeholder="New commit message" '+(n.quickCommitSubmitting?"disabled":"")+">"+p(t.customMessage||"")+"</textarea>",c=[];c.push(e.branch||"(no branch)"),c.push(r?(e.modifiedCount||0)+" \u4E2A\u6539\u52A8":"\u5DE5\u4F5C\u533A\u5E72\u51C0"),typeof e.ahead=="number"&&e.ahead>0&&c.push("\u2191"+e.ahead),typeof e.behind=="number"&&e.behind>0&&c.push("\u2193"+e.behind);var d=n.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>"+Vr("Commit",u,l,"qc-pair--commit")+Vr("Tag",s,o,"qc-pair--tag")+(n.quickCommitError?'<p class="error-message">'+p(n.quickCommitError)+"</p>":"")+pc(r)+'<div class="qc-modal-actions"><button id="quick-commit-cancel-btn" class="btn btn-ghost btn-sm" type="button">\u53D6\u6D88</button></div></section>',f=vc();return'<section id="quick-commit-modal" class="modal-backdrop'+(n.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(c.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">'+d+f+"</div></div></section>"}function mc(){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 gc(){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">\u4E3B\u673A\u3001\u6A21\u5F0F\u3001\u8BED\u8A00\u3001\u76EE\u5F55</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">'+J("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 id="check-update-button" class="btn btn-secondary btn-sm">\u68C0\u67E5\u66F4\u65B0</button><button id="do-update-button" class="btn btn-primary btn-sm hidden">\u66F4\u65B0\u5230\u6700\u65B0\u7248</button><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">'+J("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">'+J("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">'+J("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">'+J("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">'+J("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">'+J("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">'+J("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">'+J("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\u76D1\u542C\u5730\u5740\u3001\u9ED8\u8BA4\u6A21\u5F0F\u3001\u8BED\u8A00\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><div class="field"><label class="field-label" for="cfg-default-model">\u9ED8\u8BA4\u6A21\u578B</label><div class="settings-row-with-action"><select id="cfg-default-model" class="field-input field-select"><option value="">\u8DDF\u968F Claude Code \u9ED8\u8BA4</option></select><button type="button" id="cfg-default-model-refresh" class="btn btn-secondary btn-sm" title="\u5237\u65B0\u6A21\u578B\u5217\u8868">\u5237\u65B0</button></div><p class="field-hint" id="cfg-default-model-version">\u65B0\u5EFA\u4F1A\u8BDD\u65F6\u9ED8\u8BA4\u4F7F\u7528\u8BE5\u6A21\u578B\uFF1B\u8FD0\u884C\u4E2D\u7684\u4F1A\u8BDD\u53EF\u5728\u8F93\u5165\u6846\u5207\u6362\u3002</p></div><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">'+J("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">'+mi.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">'+mi.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">\u{1F512}</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">\u{1F510}</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 Lm(e){var t=Qe();return e.selectedId?"":'<div class="folder-picker-compact" id="folder-picker-container"><div class="folder-picker-compact-row"><span class="folder-picker-compact-icon">'+J("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">'+J("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 Mm(e){var t=Qe(),r=t;if(e.selectedId){var i=e.sessions.find(function(u){return u.id===e.selectedId});r=i&&i.cwd?i.cwd:t}var a=r;return a.length>28&&(a="..."+a.slice(-25)),'<div class="working-dir-indicator" id="working-dir-indicator" title="'+p(r)+'" data-path="'+p(r)+'"><span class="working-dir-indicator-icon">'+J("folder",{size:12,strokeWidth:1.7})+'</span><span class="working-dir-indicator-path">'+p(a)+"</span></div>"}function Hu(e){if(!e)return"";var t=Date.now(),r=new Date(e).getTime(),i=Math.max(0,t-r),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 s=Math.floor(u/60);if(s<24)return s+"\u5C0F\u65F6\u524D";var o=Math.floor(s/24);return o<30?o+"\u5929\u524D":Math.floor(o/30)+"\u4E2A\u6708\u524D"}function _u(e){if(!e)return"";var t=Date.now(),r=new Date(e).getTime(),i=Math.max(0,t-r),a=Math.floor(i/1e3),u=Math.floor(a/60),s=Math.floor(u/60);return s>0?s+"h"+(u%60>0?u%60+"m":""):u>0?u+"m":a+"s"}function or(e){if(!e)return"";if(e.archived)return"\u5DF2\u5F52\u6863";if(e.permissionBlocked)return"\u7B49\u5F85\u6388\u6743";if(se(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 Nu(e){return e?e.archived?"archived":e.permissionBlocked?"permission-blocked":se(e)&&e.structuredState&&e.structuredState.inFlight?"running":e.status||"":""}function hc(e){return e?e.permissionBlocked?"\u7B49\u5F85\u4F60\u7684\u6388\u6743":e.status!=="running"?"":e.id===n.selectedId&&n.currentTask&&n.currentTask.title?n.currentTask.title:e.currentTaskTitle?e.currentTaskTitle:"":""}function yc(e){var t=e&&e.messages;if(!t||t.length===0)return"";for(var r=t.length-1;r>=0;r--){var i=t[r];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 s=0;s<a.length;s++){var o=a[s];if(!(!o||o.type!=="text"||!o.text)&&!o.__queued){var l=String(o.text).trim();if(l)return l}}}}return""}function bc(e){var t=e&&e.messages;if(!t||t.length===0)return"";for(var r=t.length-1;r>=0;r--){var i=t[r];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 s=a[u].text.trim();s=s.replace(/^#+\s+/gm,"").replace(/\*\*/g,"").replace(/`/g,"");var o=s.split(`
8
+ `)[0].trim();return o.slice(0,100)}}}return""}function Ri(e,t){var r=e.id===n.selectedId?" active":"",i=n.sessionsManageMode&&n.selectedSessionIds[e.id]?" selected":"",a=or(e),u=Nu(e),s="",o=Yu("sessions",e.id,"\u9009\u62E9\u4F1A\u8BDD "+e.command);if((e.provider==="claude"||e.provider==="codex")&&e.claudeSessionId&&e.status!=="running"&&!n.sessionsManageMode&&!se(e)){var l=e.provider==="codex"?"\u6062\u590D Codex \u4F1A\u8BDD":"\u6062\u590D Claude \u4F1A\u8BDD";s='<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 c=!n.sessionsManageMode&&e.worktreeEnabled&&e.worktree&&e.worktree.branch&&e.worktree.path,d=e.worktreeMergeStatus==="merged"&&e.worktreeMergeInfo&&e.worktreeMergeInfo.cleanupDone===!1,f=e.status==="running"||e.worktreeMergeStatus==="merging",v=d?"\u91CD\u8BD5\u6E05\u7406 worktree":"\u5408\u5E76\u5230\u4E3B\u5206\u652F",m=c&&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)+'"'+(f?" 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>':d?'<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>':"",b=n.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>',g='<span class="session-actions">'+s+m+b+"</span>",y=e.summary?'<div class="session-title">'+p(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>",w=hc(e),F="";e.status==="running"&&w&&(F='<div class="session-activity">'+p(w)+"</div>");var E="";e.status==="running"?E='<span class="session-time" title="\u5DF2\u8FD0\u884C '+p(_u(e.startedAt))+'">'+p(_u(e.startedAt))+"</span>":e.endedAt?E='<span class="session-time" title="'+p(new Date(e.endedAt).toLocaleString())+'">'+p(Hu(e.endedAt))+"</span>":e.startedAt&&(E='<span class="session-time" title="'+p(new Date(e.startedAt).toLocaleString())+'">'+p(Hu(e.startedAt))+"</span>");var A=ju(e),x=e.autoRecovered?'<span class="session-recovery-hint">\u81EA\u52A8\u6062\u590D</span>':"";return'<div class="session-item'+r+i+'" data-session-id="'+e.id+'" role="button" tabindex="0"><div class="session-item-content"><div class="session-item-row">'+o+'<div class="session-main"><div class="session-title-row">'+y+E+"</div>"+F+'<div class="session-meta"><span class="session-status '+u+'">'+p(a)+"</span>"+A+x+"</div></div>"+g+"</div></div></div>"}function Ec(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 Fc(e){var t=Ec(e);return t?'<span class="session-kind-badge worktree-merge '+p(e.worktreeMergeStatus||"")+'">'+p(t)+"</span>":""}function ju(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 r=t.length>0?' title="'+p(t.join(`
9
+ `))+'"':"";return'<span class="session-kind-badge worktree"'+r+">Worktree</span>"+Fc(e)}function qm(e){if(!e)return"";var t=se(e)?'<span class="session-kind-badge structured">Structured</span>':'<span class="session-kind-badge pty">PTY</span>';return t+ju(e)}function wc(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(r){var i=r.id===e?" active":"";return'<button type="button" class="mode-card'+i+'" data-mode="'+r.id+'"><span class="mode-card-label">'+r.label+'</span><span class="mode-card-desc">'+r.desc+"</span></button>"}).join("")}function Cc(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(r){var i=r.id===e?" active":"";return'<button type="button" class="mode-card provider-card'+i+'" data-provider="'+r.id+'"><span class="mode-card-label">'+r.label+'</span><span class="mode-card-desc">'+r.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(r){var i=r.id===e?" active":"",a="";return'<button type="button" class="mode-card session-kind-card'+i+a+'" data-session-kind="'+r.id+'"><span class="mode-card-label">'+r.label+'</span><span class="mode-card-desc">'+r.desc+"</span></button>"}).join("")}function Om(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 Ru(e){var t=n.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 Dc(){var e=vt(),t=Nt(e,n.modeValue||n.chatMode||"default"),r=n.sessionCreateKind||"structured",i=n.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">'+Cc(e)+'</div></div><div class="field"><label class="field-label">\u4F1A\u8BDD\u7C7B\u578B</label><div id="session-kind-cards" class="mode-cards">'+Bc(r)+'</div><div class="field-hint session-kind-hint-row"><span id="session-kind-description">'+p(Ru(r))+'</span></div></div><div class="field"><label class="field-label">\u6A21\u5F0F</label><div id="mode-cards" class="mode-cards">'+wc(t)+'</div><p id="mode-description" class="field-hint">'+p(qo(e,t))+'</p></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(Qe())+'" /><div id="cwd-suggestions" class="suggestions hidden"></div></div><p class="field-hint">\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><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 Wu(){var e=Date.now()-864e5,t=[];return n.sessions.forEach(function(r){if(!r.archived){var i=r.startedAt?new Date(r.startedAt).getTime():0;t.push({kind:"session",ref:r,t:isFinite(i)?i:0})}}),n.claudeHistoryLoaded&&Hn().forEach(function(r){if(r.timestamp){var i=new Date(r.timestamp).getTime();!isFinite(i)||i<=e||t.push({kind:"history",ref:r,t:i})}}),t.sort(function(r,i){return i.t-r.t}),t}function kc(){var e=n.sessions.filter(function(a){return a.archived}),t=[];t.push(zu());var r=Wu(),i=Lc();return r.length>0&&t.push(Ic(r)),e.length>0&&t.push(Sc(e)),r.length===0&&e.length===0&&!i?zu()+'<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>':(i&&t.push(i),t.join(""))}function Ac(){return!!n.sidebarPinned&&!!n.sidebarCollapsed}function xc(){var e=Wu(),t=e.map(function(i,a){var u=a+1;if(i.kind==="session"){var s=i.ref,o=s.id===n.selectedId?" active":"",l=s.summary||s.command||"\u4F1A\u8BDD "+u;return'<button class="sidebar-collapsed-tile'+o+'" type="button" data-collapsed-session-id="'+p(s.id)+'" title="'+p(l)+'">'+u+"</button>"}var c=i.ref,d=c.firstUserMessage||"(\u7A7A\u4F1A\u8BDD)",f=d+" \xB7 "+Gu(c.timestamp);return'<button class="sidebar-collapsed-tile history" type="button" data-collapsed-history-id="'+p(c.claudeSessionId)+'" data-cwd="'+p(c.cwd||"")+'" title="'+p(f)+'">'+u+"</button>"}).join(""),r='<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+r+"</div>"}function Wi(){return Ac()?xc():kc()}function zu(){if(!n.sessionsManageMode)return'<div class="session-manage-bar"><span class="sidebar-intro">\u6700\u8FD1\u7684\u4F1A\u8BDD\u8BB0\u5F55</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=Vu().length,t=Uu().length,r=e+t,i=r>0,a=Oc(),u=a>0&&r>=a,s=u?"\u53D6\u6D88\u5168\u9009":"\u5168\u9009",o=u?"clear-selection":"select-all-visible",l=a===0?" disabled":"",c='<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>',d=i?'<span class="session-manage-count">'+r+'</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">'+c+'<div class="session-manage-summary">'+d+'</div><div class="session-manage-actions"><button class="btn btn-ghost btn-xs" data-action="'+o+'" type="button"'+l+">"+s+'</button><button class="btn btn-danger btn-xs" data-action="delete-selected" type="button"'+(i?"":" disabled")+">\u5220\u9664"+(i?" "+r:"")+"</button></div></div>"}function Pm(e,t,r){return'<section class="session-group"><div class="session-group-title">'+p(e)+"</div>"+t.map(function(i){return Ri(i,r)}).join("")+"</section>"}function Sc(e){var t=!!n.archivedExpanded,r=t?"&#9662;":"&#9656;",i='<div class="session-group-title claude-history-toggle" data-action="toggle-archived-group"><span class="chevron">'+r+'</span> \u5DF2\u5F52\u6863 <span class="history-count">'+e.length+"</span></div>";if(!t)return'<section class="session-group">'+i+"</section>";var a=e.map(function(u){return Ri(u,"sessions")}).join("");return'<section class="session-group">'+i+a+"</section>"}function Ic(e){var t='<section class="session-group session-group--recent">';return t+=e.map(function(r){return r.kind==="session"?Ri(r.ref,"sessions"):zi(r.ref,"history")}).join(""),t+="</section>",t}function Tc(){var e=Date.now()-864e5;return Hn().filter(function(t){return!t.timestamp||new Date(t.timestamp).getTime()<=e})}function Lc(){var e=Tc(),t=!!n.claudeHistoryLoaded,r=Vc(),i=!!n.codexHistoryLoaded,a=t&&i,u=(t?e.length:0)+(i?r.length:0);if(a&&u===0)return"";var s=!!n.claudeHistoryExpanded,o=s?"&#9662;":"&#9656;",l=a?u>999?"999+":String(u):"\xB7\xB7\xB7",c='<div class="session-group-title claude-history-toggle session-history-toggle" id="claude-history-toggle" role="button" tabindex="0" aria-expanded="'+s+'" title="'+(s?"\u6536\u8D77\u5386\u53F2\u4F1A\u8BDD":"\u5C55\u5F00\u5386\u53F2\u4F1A\u8BDD")+'"><span class="chevron">'+o+'</span> \u5386\u53F2\u4F1A\u8BDD <span class="history-count'+(a?"":" loading")+'">'+l+"</span></div>",d=s?'<div class="session-history-body">'+Mc(e)+jc(r)+"</div>":"";return'<section class="session-group session-group--history">'+c+d+"</section>"}function Mc(e){if(!n.claudeHistoryLoaded)return'<div class="claude-history-loading">\u626B\u63CF\u5386\u53F2\u4F1A\u8BDD\u4E2D\u2026</div>';if(e.length===0)return"";var t={},r=[];e.forEach(function(u){t[u.cwd]||(t[u.cwd]=[],r.push(u.cwd)),t[u.cwd].push(u)});var i='<div class="sidebar-history-toolbar"><button class="btn btn-ghost btn-xs sidebar-history-clear" data-action="clear-all-history" type="button">\u6E05\u7A7A\u5168\u90E8</button></div>',a="";return r.forEach(function(u){var s=u.split("/").filter(Boolean).slice(-3).join("/"),o=!!n.claudeHistoryExpandedDirs[u];a+=Rc(u,s,t[u].length,o),o&&(a+=t[u].map(function(l){return zi(l,"history")}).join(""))}),i+'<div class="sidebar-history-scroll">'+a+"</div>"}function Hn(){var e=new Set;return n.sessions.forEach(function(t){t.claudeSessionId&&e.add(t.claudeSessionId)}),n.claudeHistory.filter(function(t){return t.hasConversation&&!t.managedByWand&&!e.has(t.claudeSessionId)})}function Vu(){return Object.keys(n.selectedSessionIds).filter(function(e){return!!n.selectedSessionIds[e]})}function Uu(){return Object.keys(n.selectedClaudeHistoryIds).filter(function(e){return!!n.selectedClaudeHistoryIds[e]})}function Ur(){n.selectedSessionIds={},n.selectedClaudeHistoryIds={}}function qc(e){n.sessionsManageMode=typeof e=="boolean"?e:!n.sessionsManageMode,n.sessionsManageMode&&!n.claudeHistoryLoaded&&Kr().then(fe),n.sessionsManageMode||(Ur(),Br()),fe()}function Ku(){return n.sessions.slice()}function Oc(){return Ku().length+Hn().length}function Ju(){if(!n.claudeHistoryLoaded){Kr().then(Ju);return}n.claudeHistoryExpanded=!0;var e={};Ku().forEach(function(r){e[r.id]=!0});var t={};Hn().forEach(function(r){t[r.claudeSessionId]=!0}),n.selectedSessionIds=e,n.selectedClaudeHistoryIds=t,fe()}function Pc(){Ur(),fe()}function lr(e,t){if(!(!n.sessionsManageMode||!t)){var r=e==="history"?n.selectedClaudeHistoryIds:n.selectedSessionIds;r[t]?delete r[t]:r[t]=!0,fe()}}function Yu(e,t,r){if(!n.sessionsManageMode)return"";var i=e==="history"?!!n.selectedClaudeHistoryIds[t]:!!n.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(r)+'"><span></span></label>'}function _n(e,t){return typeof window.wandConfirm=="function"?window.wandConfirm(e,Object.assign({type:"danger",danger:!0,okLabel:"\u5220\u9664"},t||{})):Promise.resolve(window.confirm(e))}function Hc(){var e=Vu(),t=Uu(),r=e.length+t.length;r&&_n("\u786E\u8BA4\u5220\u9664\u6240\u9009 "+r+" \u9879\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002",{title:"\u5220\u9664\u6240\u9009 "+r+" \u9879"}).then(function(i){if(i){var a=[];e.length>0&&a.push(fetch("/api/sessions/batch-delete",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({sessionIds:e})}).then(function(u){return u.json()})),t.length>0&&a.push(fetch("/api/claude-history/batch-delete",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({claudeSessionIds:t})}).then(function(u){return u.json()})),Promise.all(a).then(function(){return e.indexOf(n.selectedId)!==-1&&(n.selectedId=null,be()),n.claudeHistory=n.claudeHistory.filter(function(u){return t.indexOf(u.claudeSessionId)===-1}),Ur(),_t()}).catch(function(){var u=document.getElementById("action-error");We(u,"\u65E0\u6CD5\u6279\u91CF\u5220\u9664\u6240\u9009\u9879\u76EE\u3002")})}})}function _c(){var e=Date.now()-864e5,t=Hn().filter(function(r){return!r.timestamp||new Date(r.timestamp).getTime()<=e});if(t.length)return _n("\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(r){if(r){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);n.claudeHistory=n.claudeHistory.filter(function(u){return i.indexOf(u.claudeSessionId)===-1}),Ur(),fe()}).catch(function(){var a=document.getElementById("action-error");We(a,"\u65E0\u6CD5\u6E05\u7A7A\u5386\u53F2\u4F1A\u8BDD\u3002")})}})}function Nc(e,t,r,i){var a=i?"\u25BE":"\u25B8";return'<div class="claude-history-directory-header codex-history-directory-header" data-action="toggle-codex-history-directory" data-cwd="'+p(e)+'" role="button" tabindex="0"><div class="session-group-title claude-history-directory-title"><span class="chevron">'+a+'</span><span class="claude-history-directory-label">'+p(t)+" ("+r+")</span></div></div>"}function jc(e){if(!n.codexHistoryLoaded)return'<div class="claude-history-loading">\u626B\u63CF Codex \u5386\u53F2\u4F1A\u8BDD\u4E2D\u2026</div>';if(e.length===0)return"";var t={},r=[];e.forEach(function(a){t[a.cwd]||(t[a.cwd]=[],r.push(a.cwd)),t[a.cwd].push(a)});var i='<div class="sidebar-history-section-label">Codex</div>';return r.forEach(function(a){var u=a.split("/").filter(Boolean).slice(-3).join("/"),s=!!n.codexHistoryExpandedDirs[a];i+=Nc(a,u,t[a].length,s),s&&(i+=t[a].map(function(o){return zi(o,"codex")}).join(""))}),'<div class="sidebar-history-scroll codex-history-scroll">'+i+"</div>"}function Rc(e,t,r,i){var a=i?"&#9662;":"&#9656;";return'<div class="claude-history-directory-header" data-action="toggle-history-directory" data-cwd="'+p(e)+'" role="button" tabindex="0"><div class="session-group-title claude-history-directory-title"><span class="chevron">'+a+'</span><span class="claude-history-directory-label">'+p(t)+" ("+r+')</span><button class="btn btn-danger btn-xs claude-history-directory-clear-btn" data-action="delete-history-directory" data-cwd="'+p(e)+'" type="button" aria-label="\u6E05\u7A7A\u6B64\u76EE\u5F55\u7684\u5386\u53F2\u4F1A\u8BDD" title="\u6E05\u7A7A\u6B64\u76EE\u5F55\u7684\u5386\u53F2\u4F1A\u8BDD">\u6E05\u7A7A\u6B64\u76EE\u5F55</button></div></div>'}function zi(e,t){var r=t==="codex",i=r?"resume-codex-history":"resume-history",a=r?"delete-codex-history":"delete-history",u=r?n.selectedCodexHistoryIds:n.selectedClaudeHistoryIds,s=e.claudeSessionId.slice(0,8),o=e.firstUserMessage||"(\u7A7A\u4F1A\u8BDD)",l=Gu(e.timestamp),c=Yu(t,e.claudeSessionId,"\u9009\u62E9\u5386\u53F2\u4F1A\u8BDD "+o),d=n.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="\u9690\u85CF\u6B64\u5386\u53F2\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>',f=n.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="'+(r?"\u6062\u590D\u6B64 Codex \u5386\u53F2\u4F1A\u8BDD":"\u6062\u590D\u6B64 Claude \u5386\u53F2\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 claude-history-item'+(n.sessionsManageMode&&u[e.claudeSessionId]?" selected":"")+'" data-claude-history-id="'+e.claudeSessionId+'" data-cwd="'+p(e.cwd)+'" role="button" tabindex="0"><div class="session-item-content"><div class="session-item-row">'+c+'<div class="session-main"><div class="session-command claude-history-preview">'+p(o)+'</div><div class="session-meta"><span class="session-id" title="'+p(e.claudeSessionId)+'">'+p(s)+"</span><span>"+p(l)+'</span></div></div><span class="session-actions">'+f+d+"</span></div></div></div>"}function Gu(e){if(!e)return"";try{var t=new Date(e),r=new Date,i=r-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 s=Math.floor(u/24);return s<30?s+" \u5929\u524D":t.toLocaleDateString()}catch{return""}}function Qu(){return fetch("/api/claude-history",{credentials:"same-origin"}).then(function(e){return e.ok?e.json():[]}).then(function(e){n.claudeHistory=e||[],n.claudeHistoryLoaded=!0,fe()}).catch(function(){n.claudeHistoryLoaded=!0,n.claudeHistory=[],fe()})}var Nn=null;function Kr(){return zc(),n.claudeHistoryLoaded?Promise.resolve():Nn||(Nn=Qu().then(function(){Nn=null},function(){Nn=null}),Nn)}function Wc(){return fetch("/api/codex-history",{credentials:"same-origin"}).then(function(e){return e.ok?e.json():[]}).then(function(e){n.codexHistory=e||[],n.codexHistoryLoaded=!0,fe()}).catch(function(){n.codexHistoryLoaded=!0,n.codexHistory=[],fe()})}var jn=null;function zc(){return n.codexHistoryLoaded?Promise.resolve():jn||(jn=Wc().then(function(){jn=null},function(){jn=null}),jn)}function Vc(){var e=new Set;return n.sessions.forEach(function(t){t.claudeSessionId&&e.add(t.claudeSessionId)}),n.codexHistory.filter(function(t){return t.hasConversation&&!t.managedByWand&&!e.has(t.claudeSessionId)})}function $u(){rs(),!Jr()&&(n.pollTimer=setInterval(_t,1600))}setInterval(function(){var e=document.querySelectorAll(".session-time");e.length>0&&Yo()},3e4);function Vi(){n.wsReconnectTimer&&(clearTimeout(n.wsReconnectTimer),n.wsReconnectTimer=null)}var Uc=1e4,Kc=4e4;function Jc(){Xu(),n.wsHeartbeatCheckTimer=setInterval(Zu,Uc)}function Xu(){n.wsHeartbeatCheckTimer&&(clearInterval(n.wsHeartbeatCheckTimer),n.wsHeartbeatCheckTimer=null)}function Zu(){if(!(!n.ws||n.ws.readyState!==WebSocket.OPEN)&&n.lastWsMessageAt){var e=Date.now()-n.lastWsMessageAt;e>Kc&&Ui("heartbeat-stale-"+Math.round(e/1e3)+"s")}}function Ui(e){if(Vi(),n.ws){var t=n.ws;try{t.onclose=null}catch{}try{t.onerror=null}catch{}try{t.onmessage=null}catch{}try{t.close()}catch{}n.ws=null}n.wsConnected=!1,n.wsReconnectAttempts=0,Jr(e)}function es(){if(!n.wsReconnectTimer&&!document.hidden){var e=n.wsReconnectAttempts||0,t=[500,1e3,2e3,4e3,8e3],r=t[e<t.length?e:t.length-1];n.wsReconnectAttempts=e+1,n.wsReconnectTimer=setTimeout(function(){n.wsReconnectTimer=null,n.config&&!n.ws&&!document.hidden&&Jr("backoff")},r)}}function Jr(e){if(!window.WebSocket)return!1;if(n.ws){try{n.ws.close()}catch{}n.ws=null}var t=window.location.protocol==="https:"?"wss:":"ws:",r=t+"//"+window.location.host+"/ws";try{var i=new WebSocket(r);return i.onopen=function(){n.ws=i,n.wsConnected=!0,n.lastWsMessageAt=Date.now(),n.wsReconnectAttempts=0,Vi(),n.lastSeqBySession={},Jc(),xn(n.selectedId),vp(),vr("ws-reconnect")},i.onmessage=function(a){n.lastWsMessageAt=Date.now();try{var u=JSON.parse(a.data);if(u&&u.type==="ping"){if(n.ws&&n.ws.readyState===WebSocket.OPEN)try{n.ws.send(JSON.stringify({type:"pong",t:u.t}))}catch{}return}if(u&&u.type==="resync_required"&&u.sessionId){if(n.ws&&n.ws.readyState===WebSocket.OPEN)try{n.ws.send(JSON.stringify({type:"resync",sessionId:u.sessionId}))}catch{}n.lastSeqBySession||(n.lastSeqBySession={}),n.lastSeqBySession[u.sessionId]=0;return}if(u&&(u.type==="init"||u.type==="output")&&u.sessionId&&typeof u.seq=="number"){n.lastSeqBySession||(n.lastSeqBySession={});var s=n.lastSeqBySession[u.sessionId]||0;if(u.type==="init")n.lastSeqBySession[u.sessionId]=u.seq;else if(u.seq===s+1)n.lastSeqBySession[u.sessionId]=u.seq;else if(u.seq>s+1&&s>0){if(n.ws&&n.ws.readyState===WebSocket.OPEN)try{n.ws.send(JSON.stringify({type:"resync",sessionId:u.sessionId}))}catch{}n.lastSeqBySession[u.sessionId]=0;return}else{if(u.seq<s)return;n.lastSeqBySession[u.sessionId]=u.seq}}Yc(u)}catch{}},i.onclose=function(){n.ws=null,n.wsConnected=!1,Xu(),es()},i.onerror=function(){i.close()},!0}catch{return es(),!1}}function Yc(e){switch(e.type){case"output":if(e.data&&e.sessionId&&Object.prototype.hasOwnProperty.call(e.data,"isResponding")&&(n._lastIsResponding||(n._lastIsResponding={}),n._lastIsResponding[e.sessionId]=!!e.data.isResponding),e.data&&e.sessionId){var t=!!e.data.incremental,r={id:e.sessionId};if(!t&&e.data.output!==void 0&&(r.output=e.data.output),Object.prototype.hasOwnProperty.call(e.data,"permissionBlocked")&&(r.permissionBlocked=!!e.data.permissionBlocked),Object.prototype.hasOwnProperty.call(e.data,"queuedMessages")&&(r.queuedMessages=e.data.queuedMessages||[],n.queueEpoch++),e.data.structuredState&&(r.structuredState=e.data.structuredState),e.data.sessionKind&&(r.sessionKind=e.data.sessionKind),e.data.messages)r.messages=e.data.messages;else if(t&&e.data.lastMessage){var i=n.sessions.find(function(U){return U.id===e.sessionId});if(i){var a=Array.isArray(i.messages)?i.messages.slice():[],u=e.data.messageCount||0,s=a.length>0?a[a.length-1]:null,o=e.data.lastMessage;s&&o.role&&s.role===o.role?a[a.length-1]=_f(s,o):a.length<u&&a.push(o),r.messages=a}}var l=t&&e.data.chunk&&!e.data.lastMessage&&!r.messages&&r.output===void 0&&!e.data.structuredState&&!e.data.sessionKind;if(l){if(e.data.permissionBlocked!==void 0){var c=n.sessions.find(function(U){return U.id===e.sessionId});c&&!!c.permissionBlocked!=!!e.data.permissionBlocked&&(Z(r),e.sessionId===n.selectedId&&Jt())}}else if((r.output!==void 0||r.messages||t||e.data.permissionBlocked!==void 0)&&(Z(r),e.sessionId===n.selectedId)){var d=n.sessions.find(function(U){return U.id===e.sessionId})||r;n.currentMessages=ze(d,tt(d,d.output,!1)),Jt(),d.sessionKind==="structured"||e.data.sessionKind==="structured"?cr():Ki()}}e.sessionId===n.selectedId&&n.terminal&&e.data&&(e.data.chunk&&Yf(e.sessionId)?(n.lastChunkAt=Date.now(),n.terminalLiveStreamSessions[e.sessionId]=!0,zn(n.terminal,e.data.chunk),n.terminalSessionId=e.sessionId,e.data.output?(n.terminalOutput=bs(Ha(e.data.output)),n.terminalOutputMarker=0):n.terminalOutput=bs((n.terminalOutput||"")+Ha(e.data.chunk)),ft("output"),st()):!e.data.incremental&&Object.prototype.hasOwnProperty.call(e.data,"output")&&Zr(e.sessionId,e.data.output||"",{mode:"append"}));break;case"started":dn();break;case"ended":{var f=e.data&&e.data.status?e.data.status:"exited",v=e.data&&Object.prototype.hasOwnProperty.call(e.data,"permissionBlocked")?!!e.data.permissionBlocked:!1,m={id:e.sessionId,status:f,permissionBlocked:v};e.data&&e.data.messages&&(m.messages=e.data.messages),e.data&&e.data.structuredState&&(m.structuredState=e.data.structuredState),e.data&&e.data.queuedMessages&&(m.queuedMessages=e.data.queuedMessages),Z(m),e.sessionId===n.selectedId&&(Kn("Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C"),Ki(!0));var b=n.sessions.find(function(U){return U.id===e.sessionId}),g=e.data&&e.data.exitCode,y=g!=null&&g!==0,w=b&&b.summary||"",F=b?bc(b):"",E=y?"\u4EFB\u52A1\u5F02\u5E38\u7ED3\u675F":"\u4EFB\u52A1\u5DF2\u5B8C\u6210",A="";w?(A=w,F&&!y&&(A+=`
10
+ `+F)):A=b&&b.command||e.sessionId,Un(y?"error":"success"),cf(e.sessionId,E,A),ks(e.sessionId),sa(),(e.sessionId!==n.selectedId||document.hidden)&&aa({title:E,body:A,type:y?"warning":"success",icon:y?"!":"\u2713",duration:6e3,actionLabel:"\u67E5\u770B",action:function(){jt(e.sessionId)}}),n.messageQueue=[],n.pendingMessages=[];var x=n.sessions.find(function(U){return U.id===e.sessionId}),S=e.sessionId===n.selectedId?n.sessions.find(function(U){return U.id===n.selectedId}):null,P=!!(x&&x.sessionKind==="structured"||S&&S.sessionKind==="structured");P&&e.sessionId===n.selectedId?(zs(),cu(e.sessionId)):P||(n.structuredInputQueue=[],cu(n.selectedId),un()),e.sessionId===n.selectedId&&(P||An(!1),n.currentTask=null,Jt()),e.sessionId===n.selectedId&&Ar(),dn().then(function(){ai()}),e.sessionId===n.selectedId&&(P||fn(e.sessionId));break}case"init":if(e.sessionId===n.selectedId&&e.data){n.chatRenderTimer&&(clearTimeout(n.chatRenderTimer),n.chatRenderTimer=null),Z(e.data);var z=n.sessions.find(function(U){return U.id===e.sessionId});n.currentMessages=ze(z||e.data,tt(z||e.data,e.data.output,!1)),cr(!0),Jt(),ts();var G=e.data.output||"",L=n.terminalSessionId===e.sessionId,B=n.terminalOutput||"",T=L&&B.length>0&&G.length>=B.length&&G.startsWith(B);Xc(G,e.sessionId,T?"append":"replace"),vr("init")}break;case"usage":break;case"task":e.sessionId===n.selectedId&&(n.currentTask=e.data||null,Jt()),of(e.sessionId,e.data||null),oa(e.sessionId),Yo();break;case"status":if(e.sessionId&&e.data){var I={id:e.sessionId};if(Object.prototype.hasOwnProperty.call(e.data,"status")&&(I.status=e.data.status),Object.prototype.hasOwnProperty.call(e.data,"exitCode")&&(I.exitCode=e.data.exitCode),e.data.structuredState)I.structuredState=e.data.structuredState;else if(Object.prototype.hasOwnProperty.call(e.data,"status")){var i=n.sessions.find(function(M){return M.id===e.sessionId});i&&i.sessionKind==="structured"&&(I.structuredState=Object.assign({},i.structuredState||{},{inFlight:e.data.status==="running"}))}if(Object.prototype.hasOwnProperty.call(e.data,"queuedMessages")&&(I.queuedMessages=e.data.queuedMessages||[],n.queueEpoch++),Object.prototype.hasOwnProperty.call(e.data,"permissionBlocked")&&(I.permissionBlocked=!!e.data.permissionBlocked),e.data.permissionRequest){I.pendingEscalation={scope:e.data.permissionRequest.scope,target:e.data.permissionRequest.target,reason:e.data.permissionRequest.prompt};var V=n.sessions.find(function(U){return U.id===e.sessionId}),te=V&&(V.summary||V.command)||e.sessionId,ee=e.data.permissionRequest.prompt||"\u9700\u8981\u6743\u9650\u5BA1\u6279",Q=e.data.permissionRequest.target,ne=te;Q?ne+=`
11
+ `+ee+" \xB7 "+Q:ne+=`
12
+ `+ee,Un("medium"),lf(e.sessionId,ne),e.sessionId!==n.selectedId&&aa({title:"\u9700\u8981\u4F60\u7684\u6388\u6743",body:ne,type:"warning",icon:"!",duration:0,actionLabel:"\u53BB\u5904\u7406",action:function(){jt(e.sessionId)}})}e.data.permissionBlocked===!1&&(I.pendingEscalation=null),e.data.approvalStats&&(I.approvalStats=e.data.approvalStats),Z(I),oa(e.sessionId),sa(),e.sessionId===n.selectedId&&(Jt(),e.data.approvalStats&&ts(),I.structuredState&&(I.structuredState.inFlight||(Kn("Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C"),zs()),Ki()))}break;case"notification":e.data&&(e.data.kind==="update"?Bs(e.data.current||"-",e.data.latest||"-"):e.data.kind==="auto-update-start"?gf(e.data.current||"-",e.data.latest||"-"):(e.data.kind==="auto-update-restart"||e.data.kind==="restart")&&an());break}}function Jt(){var e=document.getElementById("current-task"),t=document.getElementById("permission-actions"),r=document.getElementById("permission-actions-label");if(e){var i=n.sessions.find(function(v){return v.id===n.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 s=i&&i.autoApprovePermissions;if(r)if(s)r.textContent="\u81EA\u52A8\u6279\u51C6\u4E2D...";else if(a){var o=a.reason||"\u7B49\u5F85\u6388\u6743",l=a.target?" \xB7 "+a.target:"";r.textContent=o+l}else r.textContent="\u7B49\u5F85\u6388\u6743";if(t){t.classList.remove("hidden");var c=document.getElementById("approve-permission-btn"),d=document.getElementById("deny-permission-btn");c&&c.classList.toggle("hidden",!!s),d&&d.classList.toggle("hidden",!!s)}e.textContent="",e.classList.add("hidden"),e.classList.remove("permission-blocked");return}e.classList.remove("permission-blocked"),t&&t.classList.add("hidden");var f=n.currentTask;f&&f.title?(e.textContent=f.title,e.classList.remove("hidden")):(e.textContent="",e.classList.add("hidden"))}}function ts(){var e=document.getElementById("approval-stats");if(e){var t=n.sessions.find(function(a){return a.id===n.selectedId}),r=t&&t.approvalStats;if(!r||r.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">'+r.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>'+(r.command>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+J("terminal",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u547D\u4EE4\u6267\u884C</span><span class="approval-stats-row-count">'+r.command+"</span></span>":"")+(r.file>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+J("edit",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u6587\u4EF6\u5199\u5165</span><span class="approval-stats-row-count">'+r.file+"</span></span>":"")+(r.tool>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+J("wrench",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u5176\u4ED6\u5DE5\u5177</span><span class="approval-stats-row-count">'+r.tool+"</span></span>":"")+'<span class="approval-stats-row approval-stats-row-total"><span class="approval-stats-row-icon">'+J("sigma",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u5408\u8BA1</span><span class="approval-stats-row-count">'+r.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 Gc(){if(Un("light"),!!n.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(n.selectedId)+"/approve-permission",{method:"POST",credentials:"same-origin"}).then(function(r){return r.json()}).then(function(r){if(r&&r.error){k(r.error,"error");return}Z(r),Jt()}).catch(function(r){k(r&&r.message||"\u65E0\u6CD5\u6279\u51C6\u6388\u6743\u3002","error")}).finally(function(){e&&(e.disabled=!1),t&&(t.disabled=!1)})}}function Qc(){if(Un("light"),!!n.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(n.selectedId)+"/deny-permission",{method:"POST",credentials:"same-origin"}).then(function(r){return r.json()}).then(function(r){if(r&&r.error){k(r.error,"error");return}Z(r),Jt()}).catch(function(r){k(r&&r.message||"\u65E0\u6CD5\u62D2\u7EDD\u6388\u6743\u3002","error")}).finally(function(){e&&(e.disabled=!1),t&&(t.disabled=!1)})}}function $c(){if(n.selectedId){var e=n.sessions.find(function(r){return r.id===n.selectedId});if(e&&e.provider==="codex"){k("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(n.selectedId)+"/toggle-auto-approve",{method:"POST",credentials:"same-origin"}).then(function(r){return r.json()}).then(function(r){if(r&&r.error){k(r.error,"error");return}Z(r),ns();var i=r.autoApprovePermissions;k(i?"\u81EA\u52A8\u6279\u51C6\u5DF2\u5F00\u542F":"\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED","info")}).catch(function(r){k(r&&r.message||"\u65E0\u6CD5\u5207\u6362\u81EA\u52A8\u6279\u51C6\u3002","error")}).finally(function(){t&&(t.style.opacity="")})}}function ns(){var e=document.getElementById("auto-approve-toggle"),t=n.sessions.find(function(a){return a.id===n.selectedId});if(zo(t)){e&&e.parentNode&&e.parentNode.removeChild(e);return}if(e){var r="composer-pill composer-pill-chip auto-approve-indicator",i=t&&t.autoApprovePermissions;i?(e.className=r+" active",e.title="\u81EA\u52A8\u6279\u51C6\u5DF2\u542F\u7528 \u2014 \u70B9\u51FB\u5173\u95ED",e.innerHTML=J("shieldCheck",{size:12,strokeWidth:1.7,cls:"composer-pill-icon"})+'<span class="composer-pill-label">\u81EA\u52A8</span>'):(e.className=r,e.title="\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED \u2014 \u70B9\u51FB\u5F00\u542F",e.innerHTML=J("shield",{size:12,strokeWidth:1.7,cls:"composer-pill-icon"})+'<span class="composer-pill-label">\u624B\u52A8</span>')}}function Xc(e,t,r){return n.terminal?Zr(t||n.selectedId,e,{mode:r||"append"}):!1}function rs(){n.pollTimer&&(clearInterval(n.pollTimer),n.pollTimer=null)}function Hm(e){n.currentView=e||"terminal",n.currentView!=="terminal"&&(An(!1),$s()),bi(),Ea();var t=Pt();t&&(n.currentMessages=ze(t,tt(t,t.output,!0))),st(),n.currentView==="terminal"&&(qt(!0),n.terminal&&n.terminal.remeasure&&requestAnimationFrame(function(){n.terminal&&n.terminal.remeasure()}))}function cr(e){n.renderPending&&!e||(n.renderPending=!0,e?(fi(!0),n.renderPending=!1):requestAnimationFrame(function(){fi(!1),n.renderPending=!1}))}n.chatRenderTimer=null;function Ki(e){if(!(n.chatRenderTimer&&!e)){if(n.chatRenderTimer&&clearTimeout(n.chatRenderTimer),e){n.chatRenderTimer=null,cr();return}var t=n.sessions.find(function(a){return a.id===n.selectedId}),r=t&&t.status==="running"&&t.sessionKind!=="structured",i=r?hs:ys;n.chatRenderTimer=setTimeout(function(){n.chatRenderTimer=null;var a=n.sessions.find(function(u){return u.id===n.selectedId});a&&(n.currentMessages=ze(a,tt(a,a.output,!0))),cr()},i)}}var Ji=0,Yr=0,is=0,Gr=0;function Yi(){var e=document.documentElement;if(e&&e.classList&&e.classList.contains("is-pwa"))return!0;try{return navigator.standalone===!0}catch{}return!1}function as(e){is=Math.max(is,Date.now()+(e||1800))}function us(e,t){setTimeout(function(){var r=document.activeElement;Gi(r)&&r!==t||as(e)},30)}function Zc(e){return Math.max(window.innerHeight||0,e&&e.height||0,document.documentElement&&document.documentElement.clientHeight||0,document.body&&document.body.clientHeight||0)}function ed(e){var t=document.documentElement,r=Math.max(window.innerWidth||0,e&&e.width||0,t&&t.clientWidth||0),i=Zc(e);return!Ji||Math.abs(r-Ji)>8?(Ji=r,Yr=i):i>Yr&&(Yr=i),Math.max(1,Math.round(Yr||i||1))}function td(e,t,r,i){return e||!Yi()?!1:t>0||i>r+1}function Rn(e){var t=window.visualViewport;if(t){var r=document.documentElement;if(window.__wandImeNative){r.style.setProperty("--app-viewport-top","0px"),r.style.setProperty("--app-viewport-height",Math.round(t.height)+"px");return}var i=ed(t),a=Math.max(0,Math.round(t.offsetTop||0)),u=Math.max(1,Math.round(t.height));(!e&&Yi()||td(e,a,u,i))&&(a=0,u=Math.max(u,i)),r.style.setProperty("--app-viewport-top",a+"px"),r.style.setProperty("--app-viewport-height",u+"px"),(e||(window.scrollY||0)>0)&&ka()}}function Gi(e){if(!e)return!1;var t=e.tagName;if(t==="TEXTAREA"||t==="SELECT")return!0;if(t==="INPUT"){var r=(e.getAttribute("type")||"text").toLowerCase();return!/^(button|checkbox|color|file|hidden|image|radio|range|reset|submit)$/i.test(r)}return!!e.isContentEditable}function nd(){if(!("visualViewport"in window))return;var e=window.visualViewport,t=e.height,r=!1,i=Math.max(window.innerWidth||0,e.width||0),a=Math.max(window.innerHeight||0,e.height||0),u=[];function s(){return Math.max(window.innerHeight||0,e.height||0)}function o(){var m=Math.max(window.innerWidth||0,e.width||0),b=s();if(Math.abs(m-i)>8){i=m,a=b;return}b>a&&(a=b)}function l(m,b){var g=document.activeElement,y=g===m||Gi(g),w=a-e.height,F=a-(window.innerHeight||e.height||0),E=Date.now()<Gr;return E?!!(y&&(w>120||F>120)):!!(b>80||y&&(w>120||F>120)||r&&(w>80||b>32))}function c(){u.forEach(function(m){clearTimeout(m)}),u=[60,180,360,620,900].map(function(m){return setTimeout(function(){Rn(r)},m)})}function d(){if(e){var m=document.getElementById("input-box"),b=window.innerHeight-e.height-e.offsetTop;o();var g=l(m,b),y=Math.abs(e.height-t)>8;if(Rn(g),g&&(!r||y)&&Mp(e,m)&&Da(m),!r&&g){var w=n.terminalAutoFollow||ea();et("keyboard-open",{forceReplay:!0}),window.__wandImeNative||setTimeout(function(){Rn(!0)},220),c(),w&&setTimeout(function(){n.terminal&&ft("force")},220)}if(r&&!g){var F=!!window.__wandImeNative;F||(as(2200),Gr=Date.now()+1200,Rn(!1),ka()),c(),setTimeout(function(){F||(Rn(!1),ka()),et("keyboard-close",{forceReplay:!0}),ft("keyboard")},200)}y&&r===g&&et("viewport"),r=g,t=e.height}}var f=null;function v(){f!==null&&cancelAnimationFrame(f),f=requestAnimationFrame(function(){f=null,d()})}e.addEventListener("resize",v),e.addEventListener("scroll",v),document.addEventListener("visibilitychange",function(){document.visibilityState==="visible"&&(v(),setTimeout(v,240),setTimeout(v,720))}),window.addEventListener("pageshow",function(m){m&&m.persisted&&(v(),setTimeout(v,240))}),document.addEventListener("focusout",function(m){!m||!m.target||Gi(m.target)&&(us(1600,m.target),Yi()&&(Gr=Math.max(Gr,Date.now()+1200)),setTimeout(v,80),setTimeout(v,420))}),d()}function rd(){var e=document.getElementById("output");if(e){var t=document.createElement("div");t.className="terminal-resize-handle",t.innerHTML="&#8942;",e.appendChild(t);var r=!1,i=0,a=0;t.addEventListener("mousedown",function(u){r=!0,i=u.clientY,a=e.getBoundingClientRect().height,document.body.style.cursor="ns-resize",document.body.style.userSelect="none",u.preventDefault()}),n.resizeMouseMove=function(u){if(r){var s=u.clientY-i,o=Math.max(200,Math.min(a+s,window.innerHeight-200));e.style.height=o+"px",e.style.flex="none",qt()}},document.addEventListener("mousemove",n.resizeMouseMove),n.resizeMouseUp=function(){r&&(r=!1,document.body.style.cursor="",document.body.style.userSelect="",qt())},document.addEventListener("mouseup",n.resizeMouseUp),t.addEventListener("touchstart",function(u){r=!0,i=u.touches[0].clientY,a=e.getBoundingClientRect().height,u.preventDefault()},{passive:!1}),n.resizeTouchMove=function(u){if(r){var s=u.touches[0].clientY-i,o=Math.max(200,Math.min(a+s,window.innerHeight-200));e.style.height=o+"px",e.style.flex="none",qt(),u.preventDefault()}},document.addEventListener("touchmove",n.resizeTouchMove,{passive:!1}),n.resizeTouchEnd=function(){r&&(r=!1,qt())},document.addEventListener("touchend",n.resizeTouchEnd)}}function ss(){return!!Pt()}function Qi(e){var t=Math.max(sn,window.innerWidth-si-sn),r=Math.max(sn,window.innerHeight-si-sn);return{right:Math.min(Math.max(sn,e.right),t),bottom:Math.min(Math.max(sn,e.bottom),r)}}function os(){if(n.joystickBallEl){var e=Qi(n.joystickPos||{right:18,bottom:96});n.joystickBallEl.style.right=e.right+"px",n.joystickBallEl.style.bottom=e.bottom+"px"}}function id(e,t){var r=Qi({right:e,bottom:t});n.joystickPos=r;try{localStorage.setItem("wand-ball-pos",JSON.stringify(r))}catch{}}function ad(){function e(u,s,o){return'<button type="button" class="wjp-key'+(o?" "+o:"")+'" data-key="'+u+'">'+s+"</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>",r="",i;for(i=0;i<ya.length;i++)r+=e(ya[i].key,ya[i].label,"");var a='<div class="wjp-header"><span class="wjp-title">'+J("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">'+J("x",{size:13,strokeWidth:2})+"</button></div>"+t+'<div class="wjp-grid wjp-fnkeys">'+r+"</div>";return a}function ud(){if(!n.joystickRootEl){var e=document.createElement("div");e.className="wand-joystick-root";var t=document.createElement("div");t.className="wand-joystick-backdrop",e.appendChild(t);var r=document.createElement("div");r.className="wand-joystick-panel",r.innerHTML=ad(),r.addEventListener("click",vd),e.appendChild(r);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=J("paw",{size:25,strokeWidth:1.6,cls:"wand-joystick-logo"}),e.appendChild(i),document.body.appendChild(e),n.joystickRootEl=e,n.joystickBackdropEl=t,n.joystickPanelEl=r,n.joystickBallEl=i,os(),i.addEventListener("pointerdown",sd),i.addEventListener("click",function(a){a.preventDefault(),a.stopPropagation()}),t.addEventListener("pointerdown",function(a){n.joystickPinnedOpen&&n.joystickGesture==null&&(a.preventDefault(),dr())}),t.addEventListener("click",function(a){a.preventDefault(),a.stopPropagation()}),n.joystickResizeHandler=function(){os()},window.addEventListener("resize",n.joystickResizeHandler),window.addEventListener("orientationchange",n.joystickResizeHandler),fs()}}function sd(e){if(ss()&&!((e.pointerType==="mouse"||e.pointerType==="pen")&&e.button!==0)&&n.joystickPointerId===null){e.preventDefault(),e.stopPropagation();var t=e.pointerType==="mouse"||e.pointerType==="pen";n.joystickPointerId=e.pointerId,n.joystickPressStart={x:e.clientX,y:e.clientY,t:Date.now()},n.joystickGesture="pending";try{n.joystickBallEl.setPointerCapture(e.pointerId)}catch{}t||(n.joystickLongPressTimer=setTimeout(function(){n.joystickGesture==="pending"&&ls()},$f)),n.joystickMoveHandler=od,n.joystickUpHandler=ld,document.addEventListener("pointermove",n.joystickMoveHandler),document.addEventListener("pointerup",n.joystickUpHandler),document.addEventListener("pointercancel",n.joystickUpHandler)}}function ls(){n.joystickGesture="move",n.joystickPinnedOpen&&dr(),n.joystickBallEl&&n.joystickBallEl.classList.add("dragging"),n.joystickBackdropEl&&n.joystickBackdropEl.classList.add("active")}function cs(e,t){if(n.joystickBallEl){var r=Qi({right:window.innerWidth-e-si/2,bottom:window.innerHeight-t-si/2});n.joystickBallEl.style.right=r.right+"px",n.joystickBallEl.style.bottom=r.bottom+"px"}}function od(e){if(!(e.pointerId!==n.joystickPointerId||!n.joystickBallEl)){if(e.preventDefault(),n.joystickGesture==="move"){cs(e.clientX,e.clientY);return}if(n.joystickGesture==="pending"){var t=e.clientX-n.joystickPressStart.x,r=e.clientY-n.joystickPressStart.y;Math.sqrt(t*t+r*r)<=Xf||(e.pointerType==="mouse"||e.pointerType==="pen"?(ls(),cs(e.clientX,e.clientY)):(n.joystickLongPressTimer&&(clearTimeout(n.joystickLongPressTimer),n.joystickLongPressTimer=null),n.joystickGesture="cancelled"))}}}function ld(e){if(e.pointerId===n.joystickPointerId){n.joystickLongPressTimer&&(clearTimeout(n.joystickLongPressTimer),n.joystickLongPressTimer=null);var t=n.joystickGesture;if(t==="pending"){var r=e.clientX-n.joystickPressStart.x,i=e.clientY-n.joystickPressStart.y;Math.sqrt(r*r+i*i)<=Zf&&fd()}else if(t==="move"){var a=n.joystickBallEl?n.joystickBallEl.getBoundingClientRect():null;a&&id(window.innerWidth-a.right,window.innerHeight-a.bottom)}ds()}}function ds(){if(n.joystickLongPressTimer&&(clearTimeout(n.joystickLongPressTimer),n.joystickLongPressTimer=null),n.joystickBallEl&&n.joystickPointerId!==null)try{n.joystickBallEl.releasePointerCapture(n.joystickPointerId)}catch{}n.joystickMoveHandler&&(document.removeEventListener("pointermove",n.joystickMoveHandler),n.joystickMoveHandler=null),n.joystickUpHandler&&(document.removeEventListener("pointerup",n.joystickUpHandler),document.removeEventListener("pointercancel",n.joystickUpHandler),n.joystickUpHandler=null),n.joystickBallEl&&n.joystickBallEl.classList.remove("dragging"),n.joystickBackdropEl&&!n.joystickPinnedOpen&&n.joystickBackdropEl.classList.remove("active"),n.joystickPointerId=null,n.joystickGesture=null,n.joystickPressStart=null}function cd(e){if(e==="ctrl"||e==="alt"||e==="shift"){n.modifiers[e]=!n.modifiers[e],fr();return}var t=Pt();if(t&&se(t)){(e==="ctrl_c"||e==="escape")&&dd(t,e),li(),fr();return}var r=Xs(e,{ctrl:n.modifiers.ctrl,alt:n.modifiers.alt,shift:n.modifiers.shift});r&&Qs(r,e),li(),fr(),lp()}function dd(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(r){return r.ok?r.json():r.json().catch(function(){return{}}).then(function(i){throw new Error(i&&i.error||"\u4E2D\u65AD\u5931\u8D25 (key="+t+")")})}).then(function(r){if(r&&r.id&&(Z(r),r.id===n.selectedId)){var i=n.sessions.find(function(a){return a.id===r.id})||r;n.currentMessages=ze(i,tt(i,r.output,!1)),cr(!0),typeof Dt=="function"&&Dt()}}).catch(function(r){r&&r.message&&console.debug("[wand] joystick interrupt no-op:",r.message)})}function fd(){n.joystickPinnedOpen?dr():pd()}function pd(){if(!(!n.joystickPanelEl||!n.joystickBallEl)){n.joystickPinnedOpen=!0;var e=n.joystickBallEl.getBoundingClientRect();n.joystickPanelEl.style.right=Math.max(sn,window.innerWidth-e.right)+"px",n.joystickPanelEl.style.bottom=Math.max(sn,window.innerHeight-e.top+10)+"px",n.joystickPanelEl.classList.add("active"),n.joystickBallEl.classList.add("panel-open"),n.joystickBackdropEl&&n.joystickBackdropEl.classList.add("active"),fr()}}function dr(){n.joystickPinnedOpen=!1,n.joystickPanelEl&&n.joystickPanelEl.classList.remove("active"),n.joystickBallEl&&n.joystickBallEl.classList.remove("panel-open"),n.joystickBackdropEl&&n.joystickGesture==null&&n.joystickBackdropEl.classList.remove("active")}function fr(){n.joystickPanelEl&&["ctrl","alt"].forEach(function(e){var t=n.joystickPanelEl.querySelector('.wjp-mod[data-key="'+e+'"]');t&&t.classList.toggle("active",!!n.modifiers[e])})}function vd(e){var t=e.target&&e.target.closest?e.target.closest(".wjp-close"):null;if(t){e.preventDefault(),e.stopPropagation(),dr();return}var r=e.target&&e.target.closest?e.target.closest(".wjp-key"):null;if(r){e.preventDefault(),e.stopPropagation();var i=r.getAttribute("data-key");i&&cd(i)}}function fs(){var e=n.joystickRootEl;if(e){var t=ss();e.classList.toggle("visible",t),t||((n.joystickPointerId!==null||n.joystickGesture)&&ds(),n.joystickPinnedOpen&&dr(),n.joystickBackdropEl&&n.joystickBackdropEl.classList.remove("active"))}}function md(){n.joystickLongPressTimer&&(clearTimeout(n.joystickLongPressTimer),n.joystickLongPressTimer=null),n.joystickMoveHandler&&(document.removeEventListener("pointermove",n.joystickMoveHandler),n.joystickMoveHandler=null),n.joystickUpHandler&&(document.removeEventListener("pointerup",n.joystickUpHandler),document.removeEventListener("pointercancel",n.joystickUpHandler),n.joystickUpHandler=null),n.joystickResizeHandler&&(window.removeEventListener("resize",n.joystickResizeHandler),window.removeEventListener("orientationchange",n.joystickResizeHandler),n.joystickResizeHandler=null),n.joystickRootEl&&n.joystickRootEl.parentNode&&n.joystickRootEl.parentNode.removeChild(n.joystickRootEl),n.joystickRootEl=null,n.joystickPanelEl=null,n.joystickBackdropEl=null,n.joystickBallEl=null,n.joystickPointerId=null,n.joystickGesture=null,n.joystickPressStart=null,n.joystickPinnedOpen=!1}function gd(){var e=document.getElementById("output");if(e){var t=!_e();n.resizeHandler=function(){qt(!0);var r=!_e();t!==r&&(t=r,!r&&n.sidebarPinned&&n.sessionsDrawerOpen?(n.sessionsDrawerOpen=!1,xe("wand-sidebar-open",!1),xr()):r&&n.sidebarPinned&&!n.sessionsDrawerOpen&&(n.sessionsDrawerOpen=!0,xe("wand-sidebar-open",!0),xr()))},window.addEventListener("resize",n.resizeHandler),window.visualViewport&&(n.visualViewportHandler=function(){qt(!0)},window.visualViewport.addEventListener("resize",n.visualViewportHandler)),n.visibilityHandler=function(){document.hidden||et("visibility",{forceReplay:!0})},document.addEventListener("visibilitychange",n.visibilityHandler),n.orientationHandler=function(){et("orientation",{forceReplay:!0})},window.addEventListener("orientationchange",n.orientationHandler),requestAnimationFrame(function(){qt(!0)})}}function hd(){n.terminalHealthTimer||(n.terminalHealthTimer=setInterval(function(){if(!(!n.terminal||n.currentView!=="terminal"||document.hidden)){var e=n.sessions.find(function(u){return u.id===n.selectedId});if(!(!e||e.sessionKind==="structured")){et("health");var t=Date.now(),r=n.lastChunkAt>0&&t-n.lastChunkAt>300,i=t-n.lastTerminalResyncAt>3e4,a=n.lastChunkAt>n.lastTerminalResyncAt;i&&a&&(r||e.status!=="running")&&n.terminalOutput&&Cn()}}},5e3))}function yd(){n.terminalHealthTimer&&(clearInterval(n.terminalHealthTimer),n.terminalHealthTimer=null)}function pr(){yd(),n.resizeTimer&&(clearTimeout(n.resizeTimer),n.resizeTimer=null),n.resizeObserver&&(n.resizeObserver.disconnect(),n.resizeObserver=null),n.resizeHandler&&(window.removeEventListener("resize",n.resizeHandler),n.resizeHandler=null),n.visualViewportHandler&&window.visualViewport&&(window.visualViewport.removeEventListener("resize",n.visualViewportHandler),n.visualViewportHandler=null),n.visibilityHandler&&(document.removeEventListener("visibilitychange",n.visibilityHandler),n.visibilityHandler=null),n.orientationHandler&&(window.removeEventListener("orientationchange",n.orientationHandler),n.orientationHandler=null),[["mousemove","resizeMouseMove"],["mouseup","resizeMouseUp"],["touchmove","resizeTouchMove"],["touchend","resizeTouchEnd"]].forEach(function(a){n[a[1]]&&(document.removeEventListener(a[0],n[a[1]]),n[a[1]]=null)}),Wn();var e=document.getElementById("output");if(n.terminalViewportEl&&(n.terminalViewportScrollHandler&&n.terminalViewportEl.removeEventListener("scroll",n.terminalViewportScrollHandler),n.terminalViewportTouchHandler&&n.terminalViewportEl.removeEventListener("touchmove",n.terminalViewportTouchHandler),n.terminalViewportTouchStartHandler&&n.terminalViewportEl.removeEventListener("touchstart",n.terminalViewportTouchStartHandler)),e&&(n.terminalWheelHandler&&e.removeEventListener("wheel",n.terminalWheelHandler),n.terminalClickHandler&&e.removeEventListener("click",n.terminalClickHandler)),n.terminalViewportEl=null,n.terminalViewportScrollHandler=null,n.terminalViewportTouchHandler=null,n.terminalViewportTouchStartHandler=null,n.terminalWheelHandler=null,n.terminalClickHandler=null,n.terminalScrollbarHideTimer&&(clearTimeout(n.terminalScrollbarHideTimer),n.terminalScrollbarHideTimer=null),n.terminalScrollbarEl&&n.terminalScrollbarEl.parentNode&&n.terminalScrollbarEl.parentNode.removeChild(n.terminalScrollbarEl),n.terminalScrollbarEl=null,n.terminalScrollbarThumbEl=null,n.terminalScrollbarDragging=!1,n.terminalScrollbarRafPending=!1,n.terminal&&(n.terminal.destroy(),n.terminal=null),e)for(var t=e.querySelectorAll(".terminal-scroll-wrap"),r=0;r<t.length;r++){var i=t[r];i.parentNode===e&&e.removeChild(i)}ra(),n.syncOutputBuffer=null,n.syncOutputDeadline=0,n.syncFramingResidue=!1,n.terminalSessionId=null,n.terminalOutput="",n.terminalOutputMarker=0,n.terminalAutoFollow=!0,n.showTerminalJumpToBottom=!1,st(),n.softResyncTimer&&(clearTimeout(n.softResyncTimer),n.softResyncTimer=null),n._resyncChunkTailTimer&&(clearTimeout(n._resyncChunkTailTimer),n._resyncChunkTailTimer=null),n._resyncChunkLastAt=0,n._resyncStatsWindowStart=0,n._resyncStatsCount=0,n._resyncLastWarnAt=0,n._resyncInProgress=!1,n.lastResize={cols:0,rows:0},md()}function Qr(e,t){if(n.selectedId){var r=n.sessions.find(function(a){return a.id===n.selectedId});if(!(!r||r.status!=="running")&&!se(r)){e>256&&(e=256),t>160&&(t=160);var i={cols:e,rows:t};(n.lastResize.cols!==i.cols||n.lastResize.rows!==i.rows)&&(n.lastResize=i,fetch("/api/sessions/"+n.selectedId+"/resize",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(i)}).catch(function(){}))}}}function et(e,t){if(!n.terminal)return!1;var r=t||{},i=r.forceReplay===!0,a=document.getElementById("output");if(!a||a.offsetWidth===0||a.offsetHeight===0)return vr(e||"fit-retry",{forceReplay:i}),!1;var u=n.terminalAutoFollow||ea(),s=n.terminal.cols,o=n.terminal.rows;return requestAnimationFrame(function(){requestAnimationFrame(function(){if(n.terminal){typeof n.terminal.remeasure=="function"&&n.terminal.remeasure(),Qr(n.terminal.cols,n.terminal.rows);var l=n.terminal.cols!==s||n.terminal.rows!==o;!l&&i&&n.terminalOutput&&Cn({skipFit:!0}),u&&ft("force")}})}),!0}function vr(e,t){if(!n.terminal)return;var r=t||{},i=r.forceReplay!==!1,a=0,u=8;function s(){if(n.terminal){var o=document.getElementById("output");if(o&&o.offsetHeight,o&&o.offsetWidth>0&&o.offsetHeight>0){et(e,{forceReplay:i});return}++a>=u||(a<=4?requestAnimationFrame(s):setTimeout(s,32))}}s()}function qt(e){n.resizeTimer&&(clearTimeout(n.resizeTimer),n.resizeTimer=null);var t=e?0:100;n.resizeTimer=setTimeout(function(){n.resizeTimer=null,requestAnimationFrame(bd)},t)}function bd(){if(n.terminal){var e=n.terminalAutoFollow||ea();e&&ft("force"),Qr(n.terminal.cols,n.terminal.rows)}}function Yt(e){n.workingDir=e;try{localStorage.setItem("wand-working-dir",e)}catch{}Ed(e)}function $i(e){fetch("/api/recent-paths",{credentials:"same-origin"}).then(function(t){return t.json()}).then(function(t){e(t||[])}).catch(function(){e([])})}function Ed(e){return fetch("/api/recent-paths",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({path:e})}).catch(function(){})}function Xi(e){var t=n.sessions.find(function(r){return r.id===e});t&&t.status!=="running"&&!se(t)?io(e):jt(e),Rt()}function Fd(e){var t=e.target;if(!(!t||!(t instanceof Element))){var r=t.closest(".sidebar-collapsed-tile");if(r&&r instanceof HTMLElement){if(r.dataset.collapsedNewSession){e.preventDefault(),e.stopPropagation(),Va();return}if(r.dataset.collapsedSessionId){e.preventDefault(),e.stopPropagation(),Xi(r.dataset.collapsedSessionId);return}if(r.dataset.collapsedHistoryId){e.preventDefault(),e.stopPropagation();var i=r.dataset.collapsedHistoryId,a=r.dataset.cwd||"";ci(i,a).then(function(v){v&&v.id&&(n.selectedId=v.id,be(),n.drafts[v.id]="",dn().then(function(){jt(v.id)}))});return}}var u=t.closest("#claude-history-toggle");if(u){e.preventDefault(),e.stopPropagation(),n.claudeHistoryExpanded=!n.claudeHistoryExpanded,n.claudeHistoryExpanded&&!n.claudeHistoryLoaded&&Kr(),fe();return}var s=t.closest("[data-action]");if(s&&s instanceof HTMLElement){if(e.preventDefault(),e.stopPropagation(),s.dataset.action==="toggle-manage-mode")qc();else if(s.dataset.action==="select-all-visible")Ju();else if(s.dataset.action==="clear-selection")Pc();else if(s.dataset.action==="delete-selected")Hc();else if(s.dataset.action==="toggle-selection")lr(s.dataset.kind,s.dataset.id);else if(s.dataset.action==="delete-session"&&s.dataset.sessionId)(function(v){_n("\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&&Zs(v)})})(s.dataset.sessionId);else if(s.dataset.action==="delete-history"&&s.dataset.claudeSessionId)(function(v,m){_n("\u786E\u8BA4\u9690\u85CF\u8FD9\u6761 Claude \u5386\u53F2\u5417\uFF1F",{title:"\u9690\u85CF\u5386\u53F2\u4F1A\u8BDD",okLabel:"\u9690\u85CF"}).then(function(b){b&&eo(v,m)})})(s.dataset.claudeSessionId,s.closest(".session-item"));else if(s.dataset.action==="toggle-history-directory"&&s.dataset.cwd){var o=s.dataset.cwd;n.claudeHistoryExpandedDirs[o]=!n.claudeHistoryExpandedDirs[o],fe()}else if(s.dataset.action==="delete-history-directory"&&s.dataset.cwd)(function(v,m){var b=hp(v),g=Hn().filter(function(y){return y.cwd===v}).length;_n("\u786E\u8BA4\u6E05\u7A7A\u6B64\u76EE\u5F55\u4E0B\u7684 "+g+" \u6761 Claude \u5386\u53F2\u5417\uFF1F",{title:"\u6E05\u7A7A\u76EE\u5F55\u5386\u53F2",okLabel:"\u6E05\u7A7A"}).then(function(y){y&&(to(b,!0),gp(v,m,b))})})(s.dataset.cwd,s);else if(s.dataset.action==="clear-all-history")_c();else if(s.dataset.action==="toggle-archived-group")n.archivedExpanded=!n.archivedExpanded,fe();else if(s.dataset.action==="resume"&&s.dataset.sessionId)Ep(s);else if(s.dataset.action==="resume-history"&&s.dataset.claudeSessionId)Bp(s);else if(s.dataset.action==="resume-codex-history"&&s.dataset.claudeSessionId)Fp(s);else if(s.dataset.action==="delete-codex-history"&&s.dataset.claudeSessionId)Cp(s);else if(s.dataset.action==="toggle-codex-history-directory"&&s.dataset.cwd){var l=s.dataset.cwd;n.codexHistoryExpandedDirs[l]=!n.codexHistoryExpandedDirs[l],fe()}else s.dataset.action==="worktree-merge"&&s.dataset.sessionId?Qo(s.dataset.sessionId):s.dataset.action==="worktree-cleanup"&&s.dataset.sessionId&&$o(s.dataset.sessionId);return}var c=t.closest(".session-item");if(c){if(n.sessionsManageMode){c.dataset.sessionId?lr("sessions",c.dataset.sessionId):c.dataset.claudeHistoryId&&lr("history",c.dataset.claudeHistoryId);return}if(c.classList.contains("swiped")){Br();return}if(no)return;if(c.dataset.sessionId)Xi(c.dataset.sessionId);else if(c.dataset.claudeHistoryId){var d=c.dataset.claudeHistoryId,f=c.dataset.cwd;ci(d,f).then(function(v){v&&v.id&&(n.selectedId=v.id,be(),n.drafts[v.id]="",dn().then(function(){jt(v.id),Rt()}))})}}}}function wd(e){if(!(e.key!=="Enter"&&e.key!==" ")){var t=e.target.closest(".session-item");if(t){if(e.preventDefault(),n.sessionsManageMode){t.dataset.sessionId?lr("sessions",t.dataset.sessionId):t.dataset.claudeHistoryId&&lr("history",t.dataset.claudeHistoryId);return}if(t.dataset.sessionId)Xi(t.dataset.sessionId);else if(t.dataset.claudeHistoryId){var r=t.dataset.claudeHistoryId,i=t.dataset.cwd;ci(r,i).then(function(a){a&&a.id&&(n.selectedId=a.id,be(),n.drafts[a.id]="",dn().then(function(){jt(a.id),Rt()}))})}}}}function Zi(e,t){var r=n.sessions.find(function(a){return a.id===n.selectedId});if(r){var i=r[e];if(!i){k("\u5F53\u524D\u4F1A\u8BDD\u6CA1\u6709\u53EF\u590D\u5236\u7684\u5185\u5BB9\u3002","error");return}Lr(String(i),null,function(){k(t||"\u5DF2\u590D\u5236","info")})}}function wt(){return!n.terminal||!n.terminal.element?null:(n.terminalViewportEl=n.terminal.element,n.terminalViewportEl)}function Wn(){n.terminalScrollIdleTimer&&(clearTimeout(n.terminalScrollIdleTimer),n.terminalScrollIdleTimer=null)}function st(){var e=document.getElementById("terminal-jump-bottom"),t=!!n.selectedId&&n.currentView==="terminal"&&!n.terminalAutoFollow&&!ps();n.showTerminalJumpToBottom=t,e&&e.classList.toggle("visible",t);var r=document.getElementById("output");r&&r.classList.toggle("has-jump-btn",t)}function ea(){var e=wt();if(!e)return!0;var t=e.scrollHeight-e.clientHeight-e.scrollTop;return t<=n.terminalScrollThreshold}function ps(){var e=wt();if(!e)return!0;var t=e.scrollHeight-e.clientHeight-e.scrollTop;return t<=2}function vs(e){if(n.terminal){var t=wt();if(t){var r=e?500:120;n.terminalProgrammaticScrollUntil=Math.max(n.terminalProgrammaticScrollUntil,Date.now()+r),e?t.scrollTo({top:t.scrollHeight,behavior:"smooth"}):t.scrollTop=t.scrollHeight}}}function ta(){n.terminalAutoFollow=!1,Wn(),n.terminalProgrammaticScrollUntil=0,n.terminal&&"_shouldScrollToBottom"in n.terminal&&(n.terminal._shouldScrollToBottom=!1),st()}function ft(e){if(n.terminal){var t=e==="force";if(t){n.terminalAutoFollow=!0,Wn(),vs(!1),st();return}if(!n.terminalAutoFollow){st();return}vs(!1),st()}}function Cd(e){var t=document.createElement("div");t.className="terminal-scrollbar";var r=document.createElement("div");r.className="terminal-scrollbar-track";var i=document.createElement("div");i.className="terminal-scrollbar-thumb",r.appendChild(i),t.appendChild(r),e.appendChild(t),n.terminalScrollbarEl=t,n.terminalScrollbarThumbEl=i,n.terminalScrollbarHideTimer=null,n.terminalScrollbarDragging=!1,n.terminalScrollbarRafPending=!1;function a(){n.terminalScrollbarHideTimer&&(clearTimeout(n.terminalScrollbarHideTimer),n.terminalScrollbarHideTimer=null),t.classList.add("visible")}function u(){n.terminalScrollbarDragging||(n.terminalScrollbarHideTimer&&clearTimeout(n.terminalScrollbarHideTimer),n.terminalScrollbarHideTimer=setTimeout(function(){n.terminalScrollbarHideTimer=null,n.terminalScrollbarDragging||t.classList.remove("visible")},1500))}function s(){n.terminalScrollbarRafPending=!1;var g=wt();if(g){var y=g.scrollHeight,w=g.clientHeight;if(y<=w){t.classList.remove("visible");return}var F=r.clientHeight,E=Math.max(28,w/y*F),A=y-w,x=g.scrollTop/A,S=x*(F-E);i.style.height=E+"px",i.style.top=S+"px"}}function o(){n.terminalScrollbarRafPending||(n.terminalScrollbarRafPending=!0,requestAnimationFrame(s))}var l=wt();l&&l.addEventListener("scroll",function(){a(),o(),u()},{passive:!0}),r.addEventListener("mousedown",function(g){if(g.target!==i){g.preventDefault();var y=wt();if(y){var w=r.getBoundingClientRect(),F=(g.clientY-w.top)/w.height,E=y.scrollHeight-y.clientHeight;y.scrollTop=F*E}}});var c=0,d=0;i.addEventListener("mousedown",function(g){g.preventDefault(),g.stopPropagation(),n.terminalScrollbarDragging=!0,i.classList.add("dragging"),c=g.clientY;var y=wt();d=y?y.scrollTop:0,document.addEventListener("mousemove",f),document.addEventListener("mouseup",v)});function f(g){g.preventDefault();var y=wt();if(y){var w=r.clientHeight,F=y.scrollHeight,E=y.clientHeight,A=F-E;if(!(A<=0)){var x=Math.max(28,E/F*w),S=w-x;if(!(S<=0)){var P=g.clientY-c,z=P/S*A;y.scrollTop=d+z}}}}function v(){n.terminalScrollbarDragging=!1,i.classList.remove("dragging"),document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",v),u()}i.addEventListener("touchstart",function(g){if(g.touches.length===1){g.stopPropagation(),n.terminalScrollbarDragging=!0,i.classList.add("dragging"),c=g.touches[0].clientY;var y=wt();d=y?y.scrollTop:0,document.addEventListener("touchmove",m,{passive:!1}),document.addEventListener("touchend",b),document.addEventListener("touchcancel",b)}},{passive:!1});function m(g){if(g.touches.length===1){g.preventDefault();var y=wt();if(y){var w=r.clientHeight,F=y.scrollHeight,E=y.clientHeight,A=F-E;if(!(A<=0)){var x=Math.max(28,E/F*w),S=w-x;if(!(S<=0)){var P=g.touches[0].clientY-c,z=P/S*A;y.scrollTop=d+z}}}}}function b(){n.terminalScrollbarDragging=!1,i.classList.remove("dragging"),document.removeEventListener("touchmove",m),document.removeEventListener("touchend",b),document.removeEventListener("touchcancel",b),u()}t.addEventListener("mouseenter",function(){a()}),t.addEventListener("mouseleave",function(){n.terminalScrollbarDragging||u()}),o()}function Bd(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 ms="\u2060";function gs(){return{mode:"normal"}}function Dd(e){return!/[^\x00-\x7f]/.test(e)&&e.indexOf("\x1B")===-1}function kd(e,t){if(!e)return"";var r=String(e);if(t.mode==="normal"&&Dd(r))return r;for(var i="",a=0;a<r.length;a++){var u=r.charCodeAt(a),s=u,o=1;if(u>=55296&&u<=56319&&a+1<r.length){var l=r.charCodeAt(a+1);l>=56320&&l<=57343&&(s=(u-55296)*1024+(l-56320)+65536,o=2)}var c=o===2?r.substr(a,2):r.charAt(a);switch(t.mode){case"normal":s===27?(t.mode="esc",i+=c):s===155?(t.mode="csi",i+=c):s===157||s===144||s===158||s===159?(t.mode="string",i+=c):(i+=c,Bd(s)&&(i+=ms));break;case"esc":i+=c,s===91?t.mode="csi":s===93||s===80||s===88||s===94||s===95?t.mode="string":t.mode="normal";break;case"csi":i+=c,s>=64&&s<=126&&(t.mode="normal");break;case"string":i+=c,s===7||s===156?t.mode="normal":s===27&&(t.mode="string-esc");break;case"string-esc":i+=c,s===92?t.mode="normal":t.mode="string";break}a+=o-1}return i}var $r="\x1B[?2026h",na="\x1B[?2026l",Ad=200,xd=256*1024;function Sd(e){if(!e||n.syncOutputBuffer===null&&e.indexOf($r)===-1)return e;for(var t="",r=0;r<e.length;)if(n.syncOutputBuffer!==null){var i=e.indexOf(na,r);if(i===-1)return n.syncOutputBuffer+=e.slice(r),(n.syncOutputBuffer.length>xd||Date.now()>n.syncOutputDeadline)&&(t+=n.syncOutputBuffer,n.syncOutputBuffer=null,n.syncFramingResidue=!0),t;n.syncOutputBuffer+=e.slice(r,i+na.length),t+=n.syncOutputBuffer,n.syncOutputBuffer=null,r=i+na.length}else{var a=e.indexOf($r,r);if(a===-1)return t+=e.slice(r),t;t+=e.slice(r,a),n.syncOutputBuffer=$r,n.syncOutputDeadline=Date.now()+Ad,r=a+$r.length}return t}function _m(){if(n.syncOutputBuffer!==null){var e=n.syncOutputBuffer;return n.syncOutputBuffer=null,e}return""}function zn(e,t){if(!(!e||t==null)){n.wideParserState||(n.wideParserState=gs());var r=kd(t,n.wideParserState),i=Sd(r),a=n.terminalAutoFollow!==!1;"_shouldScrollToBottom"in e&&(e._shouldScrollToBottom=a),i&&e.write(i),"_shouldScrollToBottom"in e&&(e._shouldScrollToBottom=a),a&&(n.terminalProgrammaticScrollUntil=Math.max(n.terminalProgrammaticScrollUntil,Date.now()+120)),Nd(t)}}function ra(){n.wideParserState=gs()}function Id(){typeof document>"u"||document.addEventListener("copy",function(e){var t=window.getSelection&&window.getSelection();if(!(!t||t.isCollapsed)){var r=t.anchorNode,i=r&&r.nodeType===3?r.parentNode:r,a=document.getElementById("output");if(!(!a||!i||!a.contains(i))){var u=t.toString(),s=u.split(`
13
+ `).map(function(o){return o.split(ms).join("").replace(/[ \t]+$/,"")}).join(`
14
+ `);s!==u&&e.clipboardData&&(e.clipboardData.setData("text/plain",s),e.preventDefault())}}})}Id();var hs=150,ys=30,Td=160*1024,Ld=192*1024;function bs(e){if(!e||e.length<=Ld)return e;var t=e.length,r=function(x){if(!(typeof n>"u"||!n)){var S=n.terminalOutputMarker|0;if(!(S<=0)){var P=t-x;n.terminalOutputMarker=S>P?S-P:0}}},i=e.length-Td;if(i>0&&i<e.length){var a=e.charCodeAt(i);a>=56320&&a<=57343&&i++}for(var u=4096,s=Math.min(i+u,e.length),o=i;o<s;o++)if(e.charCodeAt(o)===10){var l=e.slice(o+1);return r(l.length),l}for(var c=Math.max(0,i-256),d=-1,f=i-1;f>=c;f--){var v=e.charCodeAt(f);if(v===27){d=f;break}if(v===7||v>=64&&v<=126)break}if(d!==-1){for(var m=!1,b=d+1;b<i;b++){var g=e.charCodeAt(b);if(g===7){m=!0;break}if(g>=64&&g<=126){m=!0;break}}if(!m)for(var y=Math.min(i+256,e.length),w=i;w<y;w++){var F=e.charCodeAt(w);if(F===7||F>=64&&F<=126){var E=e.slice(w+1);return r(E.length),E}}}var A=e.slice(i);return r(A.length),A}function Xr(){if(n.terminal){if(typeof n.terminal.reset=="function"){n.terminal.reset(),ra(),n.syncOutputBuffer=null,n.syncOutputDeadline=0;return}typeof n.terminal.write=="function"&&n.terminal.write("\x1Bc"),ra(),n.syncOutputBuffer=null,n.syncOutputDeadline=0}}n._resyncStatsWindowStart=0,n._resyncStatsCount=0,n._resyncLastWarnAt=0;var Md=5e3,qd=12,Od=3e4;n._resyncInProgress=!1;function Cn(e){if(!n.terminal||!n.terminalOutput)return!1;var t=e||{},r=n.terminalOutputMarker|0;r<0&&(r=0),r>n.terminalOutput.length&&(r=n.terminalOutput.length);var i=r>0?n.terminalOutput.slice(r):n.terminalOutput,a=i.length,u=typeof performance<"u"&&performance.now?performance.now():Date.now();n._resyncInProgress=!0;try{Xr(),zn(n.terminal,i)}finally{n._resyncInProgress=!1}n.lastTerminalResyncAt=Date.now(),ft("output"),t.skipFit||et("refresh");var s=Date.now();if(s-n._resyncStatsWindowStart>Md)n._resyncStatsWindowStart=s,n._resyncStatsCount=1;else if(n._resyncStatsCount++,n._resyncStatsCount>qd&&s-n._resyncLastWarnAt>Od){n._resyncLastWarnAt=s;var o=typeof performance<"u"&&performance.now?performance.now():Date.now();console.warn("[wand] softResyncTerminal high frequency","count="+n._resyncStatsCount+"/"+Math.round((s-n._resyncStatsWindowStart)/100)/10+"s","bufLen="+a,"lastReplayMs="+Math.round(o-u))}return!0}function Pd(e){n.softResyncTimer&&clearTimeout(n.softResyncTimer),n.softResyncTimer=setTimeout(function(){n.softResyncTimer=null,Cn()},typeof e=="number"?e:150)}var Hd=/\x1b\[\d*(?:;\d*)?[ABCDfHJK]/,Es=1500,_d=800;n._resyncChunkLastAt=0,n._resyncChunkTailTimer=null;function Nd(e){if(!n._resyncInProgress&&n.syncFramingResidue&&(n.syncFramingResidue=!1,!(!e||typeof e!="string")&&e.indexOf("\x1B[")!==-1&&Hd.test(e))){var t=Date.now(),r=t-n._resyncChunkLastAt;if(r>=Es){n._resyncChunkTailTimer&&(clearTimeout(n._resyncChunkTailTimer),n._resyncChunkTailTimer=null),n._resyncChunkLastAt=t,Cn();return}if(!n._resyncChunkTailTimer){var i=Math.max(_d,Es-r);n._resyncChunkTailTimer=setTimeout(function(){n._resyncChunkTailTimer=null,n._resyncChunkLastAt=Date.now(),Cn()},i)}}}function Zr(e,t,r){if(!n.terminal)return!1;var i=Ha(t||""),a=e||null,u=r||{},s=u.mode||"append",o=u.scroll!==!1,l=n.terminalSessionId!==a,c=n.terminalOutput||"",d=!!(a&&n.terminalLiveStreamSessions[a]),f=!1;if(i===c&&!l)return o&&ft("output"),st(),!1;if(l&&(Xr(),c="",n.terminalOutput="",n.terminalOutputMarker=0,n.terminalAutoFollow=!0,Wn(),st()),s==="replace")i!==c&&(Xr(),i&&zn(n.terminal,i),f=!0);else{if(i.length<c.length&&!l)return!1;if(d&&!l&&s!=="replace"&&c&&!i.startsWith(c))return!1;if(i.startsWith(c)){var v=i.slice(c.length);v&&(zn(n.terminal,v),f=!0)}else{if(c&&c.startsWith(i))return!1;Xr(),i&&zn(n.terminal,i),f=!0}}return n.terminalSessionId=a,n.terminalOutput=i,n.terminalOutputMarker=0,o&&(f||l||s==="replace")?ft(l||s==="replace"?"force":"output"):st(),l&&Qr(n.terminal.cols,n.terminal.rows),f||l}function Vn(){var e=document.getElementById("output");if(!(!e||n.terminal||n.terminalInitializing)){if(typeof WTermLib>"u"||!WTermLib.WTerm){n.terminalInitRetries||(n.terminalInitRetries=0),n.terminalInitRetries<10&&(n.terminalInitRetries++,setTimeout(Vn,200));return}n.terminalInitRetries=0,n.terminalInitializing=!0,n.selectedId&&(e.classList.remove("hidden"),e.classList.add("active"));for(var t=e.querySelectorAll(".terminal-scroll-wrap"),r=0;r<t.length;r++){var i=t[r];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(o,l){Qr(o,l),n.terminal&&n.terminalOutput&&Cn({skipFit:!0})}}),s=document.fonts&&typeof document.fonts.ready=="object"?Promise.race([document.fonts.ready,new Promise(function(o){setTimeout(o,800)})]):Promise.resolve();s.then(function(){return u.init()}).then(function(){if(n.terminal=u,n.terminalInitializing=!1,hu(),a.isConnected&&(a.offsetHeight,typeof u.remeasure=="function"))try{u.remeasure()}catch{}n.terminalAutoFollow=!0,Wn();var o=wt();if(o&&(n.terminalViewportScrollHandler=function(){if(Date.now()<n.terminalProgrammaticScrollUntil){st();return}if(ps()){n.terminalAutoFollow=!0,Wn(),st();return}ta()},n.terminalViewportTouchStartHandler=function(c){c.touches&&c.touches.length===1&&(n.terminalTouchStartY=c.touches[0].clientY)},n.terminalViewportTouchHandler=function(c){!c.touches||c.touches.length!==1||typeof n.terminalTouchStartY=="number"&&c.touches[0].clientY-n.terminalTouchStartY>4&&ta()},o.addEventListener("scroll",n.terminalViewportScrollHandler,{passive:!0}),o.addEventListener("touchstart",n.terminalViewportTouchStartHandler,{passive:!0}),o.addEventListener("touchmove",n.terminalViewportTouchHandler,{passive:!0})),n.terminalWheelHandler=function(c){c.deltaY<0&&ta(),c.stopPropagation()},e.addEventListener("wheel",n.terminalWheelHandler,{passive:!0}),Cd(e),n.selectedId){var l=n.sessions.find(function(c){return c.id===n.selectedId});l&&Zr(l.id,l.output||"",{mode:"append",scroll:!1})}else zn(u,`\u70B9\u51FB\u4E0A\u65B9\u300C\u65B0\u5BF9\u8BDD\u300D\u5F00\u59CB\u4F60\u7684\u7B2C\u4E00\u6B21\u5BF9\u8BDD\u3002\r
15
+ `);n.terminalClickHandler=function(c){oi()||Ht(c)},e.addEventListener("click",n.terminalClickHandler),st(),rd(),ud(),gd(),hd(),et("mount",{forceReplay:!0})}).catch(function(o){n.terminalInitializing=!1,console.error("[wand] wterm init failed:",o)})}}function jd(e,t){if(!(!n.selectedId||!e)){var r=n.selectedId+":"+e;if(n.toolContentCache[r]){t(null,n.toolContentCache[r]);return}fetch("/api/sessions/"+encodeURIComponent(n.selectedId)+"/tool-content/"+encodeURIComponent(e),{credentials:"same-origin"}).then(function(i){return i.json()}).then(function(i){i.error?t(i.error,null):(n.toolContentCache[r]=i,t(null,i))}).catch(function(){t("\u52A0\u8F7D\u5931\u8D25",null)})}}function Bn(e){return!!(n.config&&n.config.cardDefaults&&n.config.cardDefaults[e])}function ia(e,t,r,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",jd(a,function(u,s){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 o=typeof s.content=="string"?s.content:JSON.stringify(s.content);r(o,s)}))}}window.__tcToggle=function(e,t){var r=t.closest(".tool-use-card")||t.closest(".inline-diff");if(r){var i=r.classList.contains("collapsed");r.classList.toggle("collapsed");var a=r.dataset.expandKind||"tool-card";if(bn(r,a),i){var u=r.querySelector(".tool-use-result");ia(r,u,function(s){u&&(u.innerHTML='<pre class="tool-use-result-content">'+p(s)+"</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 r=e.querySelector(".thinking-inline-action");r&&(r.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 r=e.querySelector(".thinking-inline-action");r&&(r.textContent="\u5C55\u5F00")}bn(e,"thinking")},window.__subagentReplyToggle=function(e,t){e&&(e.preventDefault(),e.stopPropagation());var r=t&&t.closest?t.closest(".subagent-reply"):null;if(r){var i=r.getAttribute("data-expanded")==="true";qi(r,"subagent-reply",!i),bn(r,"subagent-reply")}},window.__subagentPanelToggle=function(e,t){e&&(e.preventDefault(),e.stopPropagation());var r=t&&t.closest?t.closest(".subagent-panel"):null;if(r){var i=r.getAttribute("data-expanded")==="true";qi(r,"subagent-panel",!i),bn(r,"subagent-panel")}};function Rd(e){if(e)for(var t=e.querySelectorAll('.subagent-panel[data-expanded="false"]'),r=0;r<t.length;r++){var i=t[r].querySelector(".subagent-panel-body");i&&(i.scrollTop=i.scrollHeight)}}window.__inlineToolToggle=function(e){var t=e.classList.toggle("inline-tool-open"),r=e.querySelector(".inline-tool-expanded");r&&(r.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,r,function(a){e.dataset.result=a,r&&(r.innerHTML='<div class="inline-tool-result">'+xo(a,"")+"</div>")}),bn(e,"inline-tool")},window.__terminalExpand=function(e){var t=e.closest(".inline-terminal");if(t){var r=t.querySelector(".term-body");if(r){var i=r.style.display==="none";r.style.display=i?"block":"none",t.dataset.expanded=i?"true":"false";var a=e.querySelector(".term-toggle-icon");if(a&&(a.textContent=i?"\u25BC":"\u25B6"),bn(t,"terminal"),i){var u=r.querySelector(".term-output");ia(t,u,function(s){if(u){for(var o=s.split(`
16
+ `),l="",c=0;c<o.length;c++)!o[c]&&c===o.length-1||(l+='<div class="term-line">'+p(o[c])+"</div>");u.innerHTML=l}})}}}};function Nm(e){var t=document.querySelector(".thinking-streaming");if(t){var r=t.querySelector(".thinking-streaming-text");if(r){var i=e.split(`
17
17
  `),a=i.slice(-3);r.textContent=a.join(`
18
18
  `),r.scrollTop=r.scrollHeight}}}window.__askSelect=function(e,t,r,i){var a=n.askUserSelections[e];if(a||(a={submitted:!1},n.askUserSelections[e]=a),!a.submitted){var u=a[t]||[];if(i){var s=u.indexOf(r);s===-1?u.push(r):u.splice(s,1)}else u=u[0]===r?[]:[r];a[t]=u,window.__askRender(e)}},window.__askRender=function(e){var t=document.querySelector('[data-tool-use-id="'+e+'"]');if(t){var r=n.askUserSelections[e]||{};t.querySelectorAll(".ask-user-option").forEach(function(s){var o=parseInt(s.dataset.questionIndex,10),l=parseInt(s.dataset.optionIndex,10),c=(r[o]||[]).indexOf(l)!==-1;s.classList.toggle("selected",c)});var i=t.querySelector(".ask-user-submit");if(i){var a=t.querySelectorAll(".ask-user-question-group"),u=!0;a.forEach(function(s,o){(!r[o]||r[o].length===0)&&(u=!1)}),i.disabled=!u||!!r.submitted,r.submitted&&(i.textContent="\u5DF2\u63D0\u4EA4...",i.classList.add("ask-user-submitted"))}}},window.__askSubmit=function(e){var t=n.askUserSelections[e];if(!(!t||t.submitted||!n.selectedId)){var r=document.querySelector('[data-tool-use-id="'+e+'"]');if(r){var i=r.querySelectorAll(".ask-user-question-group"),a=[],u=!0;if(i.forEach(function(o,l){var c=t[l]||[];if(c.length===0){u=!1;return}var d=[];c.forEach(function(f){var v=o.querySelector('[data-option-index="'+f+'"]');v&&d.push(v.dataset.optionLabel)}),a.push(d.join(", "))}),!!u){t.submitted=!0,window.__askRender(e);var s=a.join(`
19
19
  `);fetch("/api/sessions/"+n.selectedId+"/input",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({input:s+`
20
- `,view:n.currentView})}).catch(function(o){console.error("[wand] Error sending answer:",o),t.submitted=!1,window.__askRender(e)})}}}};function Nd(){if(!n.__globalListenersBound){n.__globalListenersBound=!0,document.addEventListener("click",function(){var t=document.getElementById("sidebar-overflow-menu");t&&t.classList.remove("open")}),window.addEventListener("resize",function(){var t=document.getElementById("sidebar-overflow-menu");t&&t.classList.remove("open")});var e=function(){n.topbarMoreOpen=!1;var t=document.getElementById("topbar-more-menu"),r=document.getElementById("topbar-more-button");t&&t.classList.add("hidden"),r&&(r.classList.remove("active"),r.setAttribute("aria-expanded","false"))};document.addEventListener("click",function(t){if(n.topbarMoreOpen){var r=document.getElementById("topbar-more-menu"),i=r&&r.parentElement;i&&!i.contains(t.target)&&e()}}),document.addEventListener("keydown",function(t){t.key==="Escape"&&n.topbarMoreOpen&&e()}),document.addEventListener("click",function(t){if(n.plusPopoverOpen){var r=document.getElementById("composer-plus-popover"),i=document.getElementById("attach-btn");r&&r.contains(t.target)||i&&i.contains(t.target)||Ei()}}),document.addEventListener("keydown",function(t){t.key==="Escape"&&n.plusPopoverOpen&&Ei()}),document.addEventListener("click",function(t){if(!t.target.closest(".folder-picker-container")){var r=document.getElementById("folder-picker-dropdown");r&&r.classList.add("hidden")}}),document.addEventListener("change",function(t){var r=t.target;if(!(!r||r.nodeType!==1)&&!(typeof r.matches!="function"||!r.matches("[data-mode-control]"))){var i=r.getAttribute("data-mode-control"),a=r.value;i==="mode"?(n.chatMode=a,Jn(),k&&k("\u65B0\u4F1A\u8BDD\u6A21\u5F0F\uFF1A"+a,"info")):i==="model"?Ev(a):i==="thinking"&&gv(a),r.closest&&r.closest("#composer-plus-popover")&&Ei()}})}}function Rd(){Nd();var e=document.getElementById("login-button");if(e){e.addEventListener("click",_a);var t=document.getElementById("login-form");t&&t.addEventListener("submit",function(h){h.preventDefault(),_a()});var r=document.getElementById("login-switch-server-button");r&&r.addEventListener("click",So);var i=document.getElementById("password"),a=document.getElementById("toggle-password-button");a&&i&&a.addEventListener("click",function(){var h=i.type==="text";i.type=h?"password":"text",a.textContent=h?"\u663E\u793A":"\u9690\u85CF",a.setAttribute("aria-label",h?"\u663E\u793A\u5BC6\u7801":"\u9690\u85CF\u5BC6\u7801"),a.setAttribute("aria-pressed",h?"false":"true"),i.focus()}),i&&(i.addEventListener("keydown",function(h){h.key==="Enter"&&_a()}),i.addEventListener("input",function(){i.dataset.error="false",i.setAttribute("aria-invalid","false");var h=document.getElementById("login-error");h&&ti(h)}),i.focus());return}var u=document.getElementById("welcome-input");u&&(u.addEventListener("keydown",function(h){h.key==="Enter"&&!h.shiftKey&&(h.preventDefault(),qs())}),u.focus());var s=document.getElementById("welcome-send-btn");s&&s.addEventListener("click",function(){qs()});var o=document.getElementById("welcome-tool-claude");o&&o.addEventListener("click",function(){rl()});var l=document.getElementById("welcome-tool-codex");l&&l.addEventListener("click",function(){n.sessionTool="codex",n.preferredCommand="codex",n.modeValue="full-access",rl()});var c=document.getElementById("welcome-tool-structured");c&&c.addEventListener("click",function(){Uo().then(function(){_t(!0)}).catch(function(h){k(h&&h.message||"\u65E0\u6CD5\u542F\u52A8\u7ED3\u6784\u5316\u4F1A\u8BDD\u3002","error")})}),im();var d=document.getElementById("sessions-list");d&&(d.addEventListener("click",bd),d.addEventListener("keydown",Ed),d.addEventListener("mouseover",Iv),d.addEventListener("mouseout",Tv),hp(d)),window.addEventListener("scroll",$t,!0),window.addEventListener("resize",$t);var f=document.getElementById("provider-cards");f&&f.addEventListener("click",function(h){var D=h.target.closest(".provider-card");if(!(!D||D.classList.contains("disabled"))){var j=D.getAttribute("data-provider");j&&(n.sessionTool=j,n.preferredCommand=j,kr())}});var v=document.getElementById("session-kind-cards");v&&v.addEventListener("click",function(h){var D=h.target.closest(".session-kind-card");if(!(!D||D.classList.contains("disabled"))){var j=D.getAttribute("data-session-kind");j&&(n.sessionCreateKind=j,kr())}});var m=document.getElementById("mode-cards");m&&m.addEventListener("click",function(h){var D=h.target.closest(".mode-card");if(D){var j=D.getAttribute("data-mode");j&&(n.modeValue=j,kr())}});var b=document.getElementById("session-worktree-toggle");b&&b.addEventListener("change",function(){n.sessionCreateWorktree=b.checked});var g=document.getElementById("cwd");g&&(g.addEventListener("input",function(){n.cwdValue=g.value}),g.addEventListener("change",function(){n.cwdValue=g.value}),g.addEventListener("input",al),g.addEventListener("focus",al),g.addEventListener("blur",function(){setTimeout(Xn,120)}));var y=document.getElementById("sessions-toggle-button");y&&y.addEventListener("click",Bv);var w=document.getElementById("sessions-drawer-backdrop");w&&w.addEventListener("click",Sr);var F=document.getElementById("close-drawer-button");F&&F.addEventListener("click",Sr);var E=document.getElementById("sidebar-collapse-btn");E&&E.addEventListener("click",Lv);var A=document.getElementById("sidebar-pin-btn");A&&A.addEventListener("click",Mv);var x=document.getElementById("sidebar-more-btn"),S=document.getElementById("sidebar-overflow-menu");x&&S&&x.addEventListener("click",function(h){h.stopPropagation();var D=!S.classList.contains("open");S.classList.toggle("open",D),D&&Ov(S)});var P=document.getElementById("sidebar-home-btn");P&&P.addEventListener("click",function(){n.selectedId=null,ye(),Ct(),Wt(),Gt()});var z=document.getElementById("sidebar-refresh-btn");z&&z.addEventListener("click",function(){window.location.reload()});var G=document.getElementById("logout-button");G&&G.addEventListener("click",Io);var L=document.getElementById("switch-server-button");L&&L.addEventListener("click",So);var B=document.getElementById("settings-button");B&&B.addEventListener("click",_v);var T=document.getElementById("close-settings-button");T&&T.addEventListener("click",Qn);var I=document.getElementById("settings-modal");I&&I.addEventListener("click",function(h){h.target.id==="settings-modal"&&Qn()});var V=document.getElementById("save-password-button");V&&V.addEventListener("click",jv);for(var re=document.querySelectorAll(".settings-tab"),te=0;te<re.length;te++)re[te].addEventListener("click",function(h){var D=h.currentTarget||this,j=D&&D.getAttribute?D.getAttribute("data-tab"):null;j&&Ka(j)});var $=document.getElementById("save-config-button");$&&$.addEventListener("click",Uv);var ie=document.getElementById("cfg-default-model-refresh");ie&&ie.addEventListener("click",yv);var U=document.getElementById("cfg-view-env-btn");U&&U.addEventListener("click",bv);var M=document.getElementById("save-display-button");M&&M.addEventListener("click",Kv);var H=document.getElementById("app-icon-picker");if(H)for(var N=H.querySelectorAll(".settings-app-icon-option"),Y=0;Y<N.length;Y++)N[Y].addEventListener("click",function(){var h=this.getAttribute("data-icon");if(!(!h||typeof WandNative>"u"||typeof WandNative.setAppIcon!="function"))try{WandNative.setAppIcon(h),Zo(h);var D=document.getElementById("app-icon-message");D&&(D.textContent="\u56FE\u6807\u5DF2\u5207\u6362\uFF0C\u8FD4\u56DE\u684C\u9762\u540E\u751F\u6548",D.style.color="var(--success)",D.classList.remove("hidden"),setTimeout(function(){D.classList.add("hidden")},3e3))}catch{}});var K=document.getElementById("upload-cert-button");K&&K.addEventListener("click",Jv);for(var X=document.querySelectorAll(".file-picker-input"),ae=0;ae<X.length;ae++)(function(h){h.addEventListener("change",function(){var D=h.closest(".file-picker");if(D){var j=D.querySelector(".file-picker-name");j&&(h.files&&h.files[0]?(j.textContent=h.files[0].name,D.classList.add("file-picker-has-file")):(j.textContent=j.getAttribute("data-default")||"\u672A\u9009\u62E9\u6587\u4EF6",D.classList.remove("file-picker-has-file")))}})})(X[ae]);var le=document.getElementById("check-update-button");le&&le.addEventListener("click",Xo);var ue=document.getElementById("do-update-button");ue&&ue.addEventListener("click",Yv);var Ce=document.getElementById("do-restart-button");Ce&&Ce.addEventListener("click",Gv);var Fe=document.getElementById("auto-update-web-toggle");Fe&&Fe.addEventListener("change",function(){Ja("web",Fe.checked)});var be=document.getElementById("auto-update-apk-toggle");be&&be.addEventListener("change",function(){Ja("apk",be.checked)});var O=document.getElementById("auto-update-dmg-toggle");O&&O.addEventListener("change",function(){Ja("dmg",O.checked)});var R=document.getElementById("beta-channel-toggle");R&&R.addEventListener("change",function(){Xv(R.checked?"beta":"stable")});var se=document.getElementById("copy-connect-code-button");se&&se.addEventListener("click",function(){var h=document.getElementById("android-connect-code");h&&Lr(h.textContent,se)});var Be=document.getElementById("cfg-notif-sound");Be&&(Be.checked=n.notifSound,Be.addEventListener("change",function(){n.notifSound=Be.checked;try{localStorage.setItem("wand-notif-sound",String(n.notifSound))}catch{}n.notifSound&&ii();var h=document.getElementById("notif-volume-field");h&&(h.style.display=n.notifSound?"":"none")}));var ne=document.getElementById("cfg-notif-volume"),de=document.getElementById("cfg-notif-volume-val"),Me=function(h){if(h){var D=Number(h.min||0),j=Number(h.max||100),Ee=Number(h.value||0),Et=j>D?Math.max(0,Math.min(100,(Ee-D)/(j-D)*100)):0;h.style.setProperty("--range-fill",Et+"%")}};if(ne){ne.value=String(n.notifVolume),de&&(de.textContent=n.notifVolume+"%"),Me(ne);var lt=document.getElementById("notif-volume-field");lt&&(lt.style.display=n.notifSound?"":"none");var gt=null;ne.addEventListener("input",function(){n.notifVolume=parseInt(ne.value,10),de&&(de.textContent=n.notifVolume+"%"),Me(ne);try{localStorage.setItem("wand-notif-volume",String(n.notifVolume))}catch{}if(He&&typeof WandNative.setNotificationVolume=="function")try{WandNative.setNotificationVolume(n.notifVolume)}catch{}}),ne.addEventListener("change",function(){ii()})}var Ge=document.getElementById("cfg-notif-bubble");Ge&&(Ge.checked=n.notifBubble,Ge.addEventListener("change",function(){n.notifBubble=Ge.checked;try{localStorage.setItem("wand-notif-bubble",String(n.notifBubble))}catch{}}));var rt=document.getElementById("notification-request-btn");rt&&rt.addEventListener("click",function(){if(He){window._onNativePermissionResult=function(){mn(),delete window._onNativePermissionResult};try{WandNative.requestPermission()}catch{}}else typeof Notification<"u"&&Notification.requestPermission().then(function(){mn()})});var it=document.getElementById("notification-reset-btn");it&&it.addEventListener("click",Zv);var We=document.getElementById("notification-test-btn");We&&We.addEventListener("click",tl);var kt=document.getElementById("notification-test-delay-btn");if(kt&&kt.addEventListener("click",em),mn(),He&&typeof WandNative.getAvailableSounds=="function"){var ze=document.getElementById("native-sound-section"),De=document.getElementById("native-sound-select"),_e=document.getElementById("native-sound-preview");if(ze&&De){ze.classList.remove("hidden");try{var fe=JSON.parse(WandNative.getAvailableSounds()),Ae=WandNative.getNotificationSound();De.innerHTML="";for(var C=0;C<fe.length;C++){var ct=document.createElement("option");ct.value=fe[C].id,ct.textContent=fe[C].name,fe[C].id===Ae&&(ct.selected=!0),De.appendChild(ct)}De.addEventListener("change",function(){try{WandNative.setNotificationSound(De.value)}catch{}}),_e&&_e.addEventListener("click",function(){try{WandNative.previewSound(De.value)}catch{}})}catch{}}}if(He&&typeof WandNative.isHapticEnabled=="function"){var At=document.getElementById("native-haptic-section"),Qe=document.getElementById("cfg-haptic-enabled");if(At&&Qe){At.classList.remove("hidden");try{Qe.checked=WandNative.isHapticEnabled()}catch{}Qe.addEventListener("change",function(){try{WandNative.setHapticEnabled(Qe.checked)}catch{}Qe.checked&&Vn("medium")})}}var $e=document.getElementById("topbar-new-session-button");$e&&$e.addEventListener("click",Va);var xt=document.getElementById("drawer-new-session-button");xt&&xt.addEventListener("click",Va);var Xt=document.getElementById("close-modal-button");Xt&&Xt.addEventListener("click",pn);var at=document.getElementById("close-worktree-merge-button");at&&at.addEventListener("click",Gn);var qe=document.getElementById("worktree-merge-cancel-button");qe&&qe.addEventListener("click",Gn);var Oe=document.getElementById("worktree-merge-confirm-button");Oe&&Oe.addEventListener("click",Hv);var we=document.getElementById("run-button");we&&we.addEventListener("click",tm);var Ve=document.getElementById("approve-permission-btn");Ve&&Ve.addEventListener("click",Jc);var St=document.getElementById("deny-permission-btn");St&&St.addEventListener("click",Yc);var ht=document.getElementById("auto-approve-toggle");ht&&ht.addEventListener("click",Gc);var gn=document.getElementById("send-input-button");gn&&gn.addEventListener("click",function(){Wt(),Bf()});var It=document.getElementById("stop-button");It&&It.addEventListener("click",wa);var Sn=document.getElementById("session-modal");Sn&&Sn.addEventListener("click",function(h){h.target.id==="session-modal"&&pn(),h.target.id==="worktree-merge-modal"&&Gn()});var ce=document.getElementById("input-box");ce&&(ao(ce),ce.addEventListener("keydown",lm),ce.addEventListener("paste",hm),ce.addEventListener("input",function(){n.terminalComposing||ul(ce)||(Tp(ce),nt(ce.value,!0),wi(ce))}),ce.addEventListener("compositionstart",function(){n.terminalInteractive&&(n.terminalComposing=!0)}),ce.addEventListener("compositionend",function(){n.terminalComposing&&(n.terminalComposing=!1,n.terminalInteractive&&ul(ce))}),ce.addEventListener("focus",function(){Wt(),Bp({target:ce})}),ce.addEventListener("blur",Dp));var ut=document.getElementById("attach-btn"),ee=document.getElementById("file-upload-input"),xe=document.getElementById("composer-plus-popover"),Se=document.getElementById("plus-attach-item");ut&&xe&&ut.addEventListener("click",function(h){h.stopPropagation(),kv()}),Se&&ee&&Se.addEventListener("click",function(){Ei(),ee.click()}),ee&&ee.addEventListener("change",function(){var h=ee.files;if(h)for(var D=0;D<h.length;D++)Ya(h[D]);ee.value=""});var yt=document.getElementById("voice-btn");yt&&yt.addEventListener("click",function(){fa()});var dt=document.getElementById("voice-cancel-btn");dt&&dt.addEventListener("click",function(){fa(!1)});var pe=document.getElementById("voice-record-btn");pe&&(pe.addEventListener("pointerdown",hf),pe.addEventListener("pointermove",yf),pe.addEventListener("pointerup",Ts),pe.addEventListener("pointercancel",Ts));var Xe=document.getElementById("prompt-optimize-btn");Xe&&Xe.addEventListener("click",function(){bm()});var bt=document.querySelector(".input-composer");bt&&(bt.addEventListener("dragover",function(h){h.preventDefault(),h.stopPropagation(),bt.classList.add("drag-over")}),bt.addEventListener("dragleave",function(h){h.preventDefault(),h.stopPropagation(),bt.classList.remove("drag-over")}),bt.addEventListener("drop",function(h){h.preventDefault(),h.stopPropagation(),bt.classList.remove("drag-over");var D=h.dataTransfer&&h.dataTransfer.files;if(D)for(var j=0;j<D.length;j++)Ya(D[j])}));var Zn=["terminal-interactive-toggle-top"];Zn.forEach(function(h){var D=document.getElementById(h);D&&D.addEventListener("click",sp)});var W=document.getElementById("pwa-install-button");W&&W.addEventListener("click",function(){n.deferredPrompt&&(n.deferredPrompt.prompt(),n.deferredPrompt.userChoice.then(function(){n.deferredPrompt=null,n.showInstallPrompt=!1,Es()}))});var _=document.getElementById("file-panel-toggle-btn");_&&_.addEventListener("click",Nr);var Q=document.getElementById("file-side-panel-close");Q&&Q.addEventListener("click",vu);var me=document.getElementById("file-panel-backdrop");me&&me.addEventListener("click",vu);var Ie=document.getElementById("topbar-file-button");Ie&&Ie.addEventListener("click",Nr);var Tt=document.getElementById("topbar-cwd");Tt&&(Tt.addEventListener("click",function(){n.filePanelOpen||Nr()}),Tt.addEventListener("keydown",function(h){(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),n.filePanelOpen||Nr())}));var er=document.getElementById("topbar-more-button"),Bi=document.getElementById("topbar-more-menu");er&&Bi&&(er.addEventListener("click",function(h){h.stopPropagation(),n.topbarMoreOpen=!n.topbarMoreOpen,Bi.classList.toggle("hidden",!n.topbarMoreOpen),er.classList.toggle("active",n.topbarMoreOpen),er.setAttribute("aria-expanded",n.topbarMoreOpen?"true":"false")}),Bi.addEventListener("click",function(h){var D=h.target&&h.target.closest?h.target.closest(".topbar-more-item"):null;if(D){var j=D.getAttribute("data-action");switch(n.topbarMoreOpen=!1,Bi.classList.add("hidden"),er.classList.remove("active"),er.setAttribute("aria-expanded","false"),j){case"copy-claude-session-id":Zi("claudeSessionId",Ht()&&Ht().provider==="codex"?"Codex thread ID \u5DF2\u590D\u5236":"Claude \u4F1A\u8BDD ID \u5DF2\u590D\u5236");break;case"copy-cwd":Zi("cwd","\u5DE5\u4F5C\u76EE\u5F55\u5DF2\u590D\u5236");break;case"copy-session-id":Zi("id","\u4F1A\u8BDD ID \u5DF2\u590D\u5236");break;case"worktree-merge":n.selectedId&&Yo(n.selectedId);break;case"worktree-cleanup":n.selectedId&&Go(n.selectedId);break;case"delete-session":n.selectedId&&(function(Ee){Hn("\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(Et){Et&&$s(Ee)})})(n.selectedId);break}}}));var sl=document.getElementById("terminal-scale-down-top"),ol=document.getElementById("terminal-scale-up-top");sl&&sl.addEventListener("click",function(){mu(-.25)}),ol&&ol.addEventListener("click",function(){mu(.25)});var ll=document.getElementById("page-refresh-btn");ll&&ll.addEventListener("click",function(h){if(h&&h.shiftKey){location.reload();return}Cn(),Ct({preserveStickState:!0}),lo(!0)});var cl=document.getElementById("terminal-jump-bottom");cl&&cl.addEventListener("click",function(){ft("force")});var dl=document.getElementById("chat-unread-bubble");dl&&dl.addEventListener("click",function(){Dl(!0)});var fl=document.getElementById("file-explorer-refresh");fl&&fl.addEventListener("click",function(){Mt()});var pl=document.getElementById("file-explorer-up");pl&&pl.addEventListener("click",Vl);var je=document.getElementById("file-explorer-cwd");if(je&&je.tagName==="INPUT"){var tr=je.value,vl=function(h){var D=(h||"").trim();return D?(D=D.replace(/\/{2,}/g,"/"),D.length>1&&(D=D.replace(/\/+$/,"")),D):""};je.addEventListener("focus",function(){tr=je.value,setTimeout(function(){try{je.select()}catch{}},0)}),je.addEventListener("keydown",function(h){if(h.key==="Enter"){h.preventDefault();var D=vl(je.value);if(!D)return;tr=D,je.value=D,Mt({cwd:D}),je.blur()}else h.key==="Escape"&&(h.preventDefault(),je.value=tr,je.blur())}),je.addEventListener("blur",function(){var h=vl(je.value);if(!h){je.value=tr;return}if(h===tr){je.value=h;return}tr=h,je.value=h,Mt({cwd:h})})}var Di=document.getElementById("file-search-input"),Or=document.getElementById("file-search-clear");Di&&Di.addEventListener("input",function(h){n.fileSearchQuery=h.target.value.trim(),Or&&Or.classList.toggle("visible",n.fileSearchQuery.length>0),bu()}),Or&&Or.addEventListener("click",function(){n.fileSearchQuery="",Di&&(Di.value=""),Or.classList.remove("visible")});var ge=document.getElementById("folder-picker-input"),Te=document.getElementById("folder-picker-dropdown"),nu=null,Vt=-1,hn=[];function ml(h){ge&&ge.classList.add("invalid");var D=document.getElementById("folder-picker-validation");D&&(D.textContent=h,D.classList.add("visible"))}function gl(){ge&&ge.classList.remove("invalid");var h=document.getElementById("folder-picker-validation");h&&(h.textContent="",h.classList.remove("visible"))}function wm(h){if(!h.length)return"";var D='<div class="folder-recent-section"><div class="folder-recent-title">\u6700\u8FD1\u4F7F\u7528</div>';return h.forEach(function(j){var Ee=j.path||j;D+='<div class="folder-recent-item" data-path="'+p(Ee)+'"><span class="folder-recent-item-path">'+p(Ee)+"</span></div>"}),D+="</div>",D}function Cm(){Te&&$i(function(h){var D=wm(h);D?(Te.innerHTML=D,Te.classList.remove("hidden"),Te.querySelectorAll(".folder-recent-item").forEach(function(j){j.addEventListener("click",function(){var Ee=this.dataset.path;ge&&(ge.value=Ee,Yt(Ee),Zt(Ee))})})):Pr()})}var hl=document.getElementById("working-dir-indicator");hl&&hl.addEventListener("click",function(){n.selectedId=null,ye(),n.drafts={},Gt(),setTimeout(function(){var h=document.getElementById("folder-picker-input");h&&h.focus()},50)});var ru=document.getElementById("folder-picker-toggle"),Te=document.getElementById("folder-picker-dropdown");ru&&Te&&ru.addEventListener("click",function(){Te.classList.toggle("hidden"),ru.classList.toggle("open")});var ki=document.querySelector(".folder-picker-compact");if(ki&&(ki.addEventListener("dragover",function(h){h.preventDefault(),h.stopPropagation(),this.classList.add("drag-over")}),ki.addEventListener("dragleave",function(h){h.preventDefault(),h.stopPropagation(),this.classList.remove("drag-over")}),ki.addEventListener("drop",function(h){h.preventDefault(),h.stopPropagation(),this.classList.remove("drag-over");var D=h.dataTransfer&&h.dataTransfer.items;if(D)for(var j=0;j<D.length;j++){var Ee=D[j];if(Ee.kind==="file"&&Ee.webkitGetAsEntry){var Et=Ee.webkitGetAsEntry();if(Et&&Et.isDirectory&&ge){var Lt=Et.fullPath;ge.value=Lt,Yt(Lt),Zt(Lt);break}}}})),Te&&Te.addEventListener("click",function(h){var D=h.target.closest(".folder-picker-quick-btn");if(D&&ge){var j=D.dataset.path;ge.value=j,Yt(j),Zt(j),Te.classList.add("hidden");var Ee=document.getElementById("folder-picker-toggle");Ee&&Ee.classList.remove("open")}}),ge){var Bm=Je();Zt(Bm),ge.addEventListener("focus",function(){var h=this.value.trim();h?Zt(h):Cm()}),ge.addEventListener("input",function(h){var D=h.target.value.trim();Vt=-1,nu&&clearTimeout(nu),nu=setTimeout(function(){D?Zt(D):Pr()},150)}),ge.addEventListener("keydown",function(h){if(h.key==="Escape")Pr(),this.blur();else if(h.key==="ArrowDown")h.preventDefault(),hn.length>0&&(Vt=Math.min(Vt+1,hn.length-1),yl());else if(h.key==="ArrowUp")h.preventDefault(),Vt>0&&(Vt--,yl());else if(h.key==="Enter"&&Vt>=0){h.preventDefault();var D=hn[Vt];if(D){var j=D.dataset.path;if(j===".."){var Ee=ge.value.trim(),Et=Ee.substring(0,Ee.lastIndexOf("/"));Et&&(ge.value=Et||"/",Yt(ge.value),Zt(Et||"/"))}else ge.value=j,Yt(j),Pr()}}})}function yl(){hn.forEach(function(h,D){h.classList.toggle("active",D===Vt)})}function ag(h){}function Zt(h){Te&&(Te.innerHTML='<div class="folder-picker-loading">\u52A0\u8F7D\u4E2D...</div>',Te.classList.remove("hidden"),Vt=-1,hn=[],fetch("/api/folders?q="+encodeURIComponent(h),{credentials:"same-origin"}).then(function(D){return D.json().then(function(j){return{ok:D.ok,status:D.status,data:j}})}).then(function(D){var j=D.data;if(!D.ok||j.error){ml(j.error||"\u8DEF\u5F84\u65E0\u6548"),Te.innerHTML='<div class="folder-picker-error">'+p(j.error||"\u8DEF\u5F84\u65E0\u6548")+"</div>";return}gl(),j.currentPath;var Ee=j.items||[],Et=j.currentPath||h;if(Ee.length===0){Te.innerHTML='<div class="folder-picker-loading">\u7A7A\u76EE\u5F55</div>';return}Te.innerHTML=Ee.map(function(Lt){var Ai=Lt.type==="parent"?"\u21A9\uFE0F":"\u{1F4C1}",iu=Lt.type==="parent"?".. (\u8FD4\u56DE\u4E0A\u7EA7)":Lt.name;return'<div class="folder-picker-item" data-path="'+p(Lt.path)+'" data-type="'+Lt.type+'"><span class="folder-picker-item-icon">'+Ai+"</span><span>"+p(iu)+"</span></div>"}).join(""),hn=Array.from(Te.querySelectorAll(".folder-picker-item")),hn.forEach(function(Lt){Lt.addEventListener("click",function(){var Ai=this.dataset.path,iu=this.dataset.type;if(ge)if(iu==="parent"){var wl=ge.value.trim(),Cl=wl.substring(0,wl.lastIndexOf("/"));ge.value=Cl||"/",Yt(ge.value),Zt(Cl||"/")}else ge.value=Ai,Yt(Ai),gl(),Pr()})})}).catch(function(D){ml("\u52A0\u8F7D\u5931\u8D25"),Te.innerHTML='<div class="folder-picker-error">\u52A0\u8F7D\u5931\u8D25</div>'}))}function Pr(){Te&&Te.classList.add("hidden"),Vt=-1,hn=[]}var yn=document.getElementById("folder-picker-modal"),bl=document.getElementById("close-folder-picker");function ug(){if(yn){yn.classList.remove("hidden"),ge&&(ge.value=Je());var h=Je();Zt(h)}}bl&&yn&&bl.addEventListener("click",function(){yn.classList.add("hidden")}),yn&&yn.addEventListener("click",function(h){h.target===yn&&yn.classList.add("hidden")});var El=document.getElementById("topbar-git-badge");El&&El.addEventListener("click",function(h){h.preventDefault(),Lu()});var Fl=document.getElementById("quick-commit-modal");Fl&&Fl.addEventListener("click",function(h){h.target.id==="quick-commit-modal"&&!n.quickCommitSubmitting&&qn()}),Mu(),zn(),Mp(),ed(),Of(),Dt()}function Ct(e){var t=e||{};n.lastRenderedHash=0,n.lastRenderedMsgCount=0,n.lastRenderedEmpty=null,n.renderPending=!1,n.chatRenderedCount=n.chatPageSize,n.askUserSelections={},n.chatScrollElement&&(n.chatScrollHandler&&n.chatScrollElement.removeEventListener("scroll",n.chatScrollHandler),n.chatScrollWheelHandler&&n.chatScrollElement.removeEventListener("wheel",n.chatScrollWheelHandler),n.chatScrollTouchStartHandler&&n.chatScrollElement.removeEventListener("touchstart",n.chatScrollTouchStartHandler),n.chatScrollTouchMoveHandler&&n.chatScrollElement.removeEventListener("touchmove",n.chatScrollTouchMoveHandler)),n.chatScrollElement=null,n.chatScrollHandler=null,n.chatScrollWheelHandler=null,n.chatScrollTouchStartHandler=null,n.chatScrollTouchMoveHandler=null,n.chatIsProgrammaticScroll=!1,t.preserveStickState||(n.chatStickToBottom=!0,n.chatUnreadCount=0,n.chatUnreadStartIndex=-1,n.chatInitialRenderDone=!1)}function Je(){return n.workingDir||en()}window.addEventListener("beforeinstallprompt",function(e){e.preventDefault(),n.deferredPrompt=e,n.showInstallPrompt=!0,Es()}),window.addEventListener("online",function(){n.isOnline=!0,ei()}),window.addEventListener("offline",function(){n.isOnline=!1,ei()});function ei(){var e=document.getElementById("offline-banner");if(!n.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 n.isOnline&&e&&e.remove()}function Es(){var e=!!(n.showInstallPrompt&&n.deferredPrompt),t=document.getElementById("pwa-install-button");t&&t.classList.toggle("hidden",!e);var r=document.getElementById("topbar-install-item");r&&r.classList.toggle("hidden",!e)}function Wd(){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 mr(e,t){if(n.config&&!document.hidden){var r=t&&t.immediate===!0,i=Date.now();!r&&i-n.lastForegroundSyncAt<1500||(n.lastForegroundSyncAt=i,n.foregroundSyncTimer&&(clearTimeout(n.foregroundSyncTimer),n.foregroundSyncTimer=null),zd(e,r))}}function zd(e,t){return!n.config||document.hidden?Promise.resolve():(Xu(),t?Ui("resume-force"):(!n.ws||n.ws.readyState!==WebSocket.OPEN&&n.ws.readyState!==WebSocket.CONNECTING)&&Jr(),n.claudeHistoryLoaded&&Gu(),dn({skipSelectedOutputReload:!0}).catch(function(r){console.error("[wand] foreground sync failed:",e,r)}))}function Vd(){window.__wandForegroundSyncBound||(window.__wandForegroundSyncBound=!0,document.addEventListener("visibilitychange",function(){document.hidden?Vi():(mr("visibility"),vr("visibility"))}),window.addEventListener("focus",function(){mr("focus")}),window.addEventListener("pageshow",function(){mr("pageshow")}),window.addEventListener("resume",function(){mr("resume")}),window.addEventListener("wand-android-resume",function(){mr("android-resume",{immediate:!0}),vr("android-resume")}),window.addEventListener("wand-ime-state",function(e){var t=e&&e.detail&&e.detail.state;if(t==="shown"||t==="hidden")try{et("native-ime-"+t,{forceReplay:!0}),ft("native-ime")}catch{}}),window.addEventListener("wand-android-network",function(e){var t=e&&e.detail&&e.detail.state;if(t==="lost"){n.isOnline=!1;try{ei()}catch{}return}if(t==="available"||t==="changed"||t==="validated"){n.isOnline=!0;try{ei()}catch{}Ui("android-network-"+t)}}))}function Ud(){fetch("/api/session-check",{credentials:"same-origin"}).then(function(e){return e.ok?e.json():{authed:!1}}).then(function(e){return!e||!e.authed?(n.loginChecked=!0,Gt(),null):fetch("/api/config",{credentials:"same-origin"}).then(function(t){return t.ok?t.json():(n.loginChecked=!0,Gt(),null)})}).then(function(e){e&&(n.config=e,n.loginChecked=!0,requestAnimationFrame(function(){try{Gt({skipShellChrome:!0})}catch{}Vd(),Qu(),jt(),Wo(),nf(),e.updateAvailable&&e.latestVersion&&Cs(e.currentVersion||"-",e.latestVersion),Dn&&Qv(),rn&&$v(),n.claudeHistoryLoaded||setTimeout(function(){n.claudeHistoryLoaded||Kr()},600)}))}).catch(function(){if(n.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">'+J("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}Gt()})}document.addEventListener("click",function(e){if(!Pe()&&!n.sidebarPinned&&!n.sidebarCollapsed&&n.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")||Dv()}},!0),Wd(),Ud();function Gt(e){var t=e&&e.skipShellChrome,r=document.getElementById("app"),i=n.config!==null,a=n.modalOpen,u=!i||!!document.getElementById("output");if(u&&pr(),document.documentElement.classList.add("no-transition"),n.sidebarPinned&&!n.sidebarCollapsed&&!Pe()&&(n.sessionsDrawerOpen=!0,ke("wand-sidebar-open",!0)),r.innerHTML=i?Yd():Jd(),Ct(),Rd(),xr(),hi(),Yn(Ht()),bi(),t||Ar(),i&&n.filePanelOpen&&Mt(),document.body.offsetHeight,requestAnimationFrame(function(){document.documentElement.classList.remove("no-transition")}),a&&n.modalOpen){var s=document.getElementById("session-modal");if(s){s.classList.remove("hidden");var o=document.getElementById("cwd");o&&(o.value=n.cwdValue),kr()}}if(i&&n.selectedId&&n.gitStatusSessionId!==n.selectedId&&En(n.selectedId),i){var l=n.sessions.find(function(c){return c.id===n.selectedId});Xa(l)}}function Kd(){var e=n.sessions.find(function(r){return r.id===n.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">'+J("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">'+J("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">'+J("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">'+J("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 Jd(){return n.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><button id="login-button" type="submit" class="btn btn-primary btn-block">\u8FDB\u5165\u63A7\u5236\u53F0</button>'+(ja()?'<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 Yd(){var e="<\/script>",t=n.sessions.find(function(b){return b.id===n.selectedId}),r=t?gi(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=n.selectedId&&n.drafts[n.selectedId]||"",u=n.sessionsDrawerOpen?" open":"",s=pu()?" open":"",o=cv(),l=Nt(o,n.chatMode),c=Pe(),d=!!n.sidebarPinned&&!!n.sidebarCollapsed,f=d||!c&&(!!n.sidebarPinned||!!n.sessionsDrawerOpen),v=d?" sidebar-collapsed":"",m=d?" collapsed":"";return'<div class="app-container"><div id="sessions-drawer-backdrop" class="drawer-backdrop'+s+'"></div><div class="main-layout'+(n.sessionsDrawerOpen?" sidebar-open":"")+(f?" sidebar-pinned":"")+v+'"><aside id="sessions-drawer" class="sidebar'+u+(f?" pinned":"")+m+'"><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(n.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'+(n.sidebarPinned?" pinned":"")+'" type="button" title="'+(n.sidebarPinned?"\u5DF2\u56FA\u5B9A\u5E38\u9A7B\uFF08\u70B9\u51FB\u89E3\u9664\u9501\u5B9A\uFF09":"\u56FA\u5B9A\u4FA7\u680F\u5E38\u9A7B")+'" aria-label="'+(n.sidebarPinned?"\u89E3\u9664\u56FA\u5B9A\u5E38\u9A7B":"\u56FA\u5B9A\u4FA7\u680F\u5E38\u9A7B")+'" aria-pressed="'+(n.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'+(d?" collapsed":"")+'" type="button" title="'+(d?"\u5C55\u5F00\u4E3A\u5168\u5C3A\u5BF8":"\u6536\u8D77\u4E3A\u7A84\u6761")+'" aria-label="'+(d?"\u5C55\u5F00\u4E3A\u5168\u5C3A\u5BF8":"\u6536\u8D77\u4E3A\u7A84\u6761")+'">'+(d?'<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">'+Wi()+'</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'+(n.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><button id="pwa-install-button" class="btn btn-ghost btn-sm hidden" title="\u5B89\u88C5\u5E94\u7528"><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="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg><span>\u5B89\u88C5</span></button>'+(ja()?'<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'+(n.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.command||"")+'">'+p(gi(t.command))+'</span><span class="session-status-pill '+_u(t)+'" title="'+p(or(t))+'"><span class="session-status-dot"></span><span class="session-status-text">'+p(or(t))+'</span></span><span class="current-task hidden" id="current-task"></span>'+(t.cwd?'<span class="topbar-cwd" id="topbar-cwd" title="'+p(t.cwd)+'" role="button" tabindex="0">'+p(t.cwd)+"</span>":""):'<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'+(n.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">'+Tu()+"</span>"+(t?tc(t):"")+'</div></div><div id="file-panel-backdrop" class="file-panel-backdrop'+(n.filePanelOpen?" open":"")+'"></div><div id="file-side-panel" class="file-side-panel'+(n.filePanelOpen?" open":"")+'"><div class="file-side-panel-header"><div class="file-side-panel-title-group"><span class="file-side-panel-icon">'+Le("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">'+Le("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">'+Le("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">'+Le("arrow-up",{size:15})+'</button><input type="text" class="file-explorer-path" id="file-explorer-cwd" value="'+p(t&&t.cwd?t.cwd:en())+'" title="'+p(t&&t.cwd?t.cwd:en())+'" 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">'+Le("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">'+Le("x",{size:13})+'</button></div><div class="file-explorer" id="file-explorer">'+jl(t&&t.cwd?t.cwd:en())+'</div></div></div><div id="output" class="terminal-container'+(n.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(n.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'+(n.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"><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 id="queue-bar-host" class="queue-bar-host" hidden></div></div><div id="blank-chat" class="blank-chat'+(n.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">'+J("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">'+J("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">'+J("folder",{size:13,strokeWidth:1.8})+'</span><span class="blank-chat-cwd-path" id="blank-chat-cwd-path">'+p(Je())+'</span><span class="blank-chat-cwd-arrow" id="blank-chat-cwd-arrow">'+J("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'+(n.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-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><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 class="input-composer'+(a?" has-text":"")+'"><div class="composer-status-row" id="composer-status-row">'+hv(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>'+Kd()+'</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">'+J("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-input-wrap"><textarea id="input-box" class="input-textarea" placeholder="'+To(t,n.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">'+J("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">'+J("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'+(n.terminalInteractive?" is-on":"")+'" id="terminal-interactive-toggle-top" type="button" role="menuitemcheckbox" aria-checked="'+(n.terminalInteractive?"true":"false")+'">'+J("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">'+(n.terminalInteractive?"\u5F00":"\u5173")+'</span></button><div class="plus-popover-sep" aria-hidden="true"></div><div class="plus-popover-trio-wrap">'+Ra(t,{kind:"popover"})+'</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">'+J("trash",{size:13,strokeWidth:1.7})+'<span>\u4E34\u65F6\u76EE\u5F55</span></button><button class="folder-picker-quick-btn btn-with-icon" data-path="/">'+J("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">'+J("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>'+Cc()+pc()+vc()+Ou()}function Ne(e,t){if(e){e.textContent=t,e.classList.remove("hidden");for(var r=e.previousElementSibling;r;){if(r.tagName==="INPUT"){r.setAttribute("data-error","true");break}r=r.previousElementSibling}}}function ti(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 k(e,t){var r=document.createElement("div");r.className="toast-message"+(t==="error"?" toast-error":""),t!=="error"&&(r.style.background="var(--accent)",r.style.color="white"),r.textContent=e,document.body.appendChild(r),setTimeout(function(){r.remove()},t==="error"?4e3:2200)}var gr=[];function Gd(e){switch(e){case"warning":return"!";case"danger":return"\u26A0\uFE0E";case"success":return"\u2713";case"question":return"?";default:return"i"}}function nn(e){e=e||{};var t=e.dismissable!==!1,r=e.type||"info",i=e.icon||Gd(r),a=!!e.input;return new Promise(function(u){var s=document.createElement("div");s.className="wand-dialog-backdrop",s.setAttribute("role","presentation");var o=document.createElement("div");o.className="wand-dialog",o.setAttribute("role",a?"dialog":"alertdialog"),o.setAttribute("aria-modal","true"),e.title&&o.setAttribute("aria-label",e.title);var l=document.createElement("div");l.className="wand-dialog-header";var c=document.createElement("div");c.className="wand-dialog-icon "+r,c.textContent=i,l.appendChild(c);var d=document.createElement("div");if(d.className="wand-dialog-textwrap",e.title){var f=document.createElement("div");f.className="wand-dialog-title",f.textContent=e.title,d.appendChild(f)}if(e.message){var v=document.createElement("div");v.className="wand-dialog-message",v.textContent=e.message,d.appendChild(v)}l.appendChild(d),o.appendChild(l);var m=null;if(a){var b=document.createElement("div");b.className="wand-dialog-body",m=document.createElement("input"),m.type="text",m.className="wand-dialog-input",e.inputPlaceholder&&(m.placeholder=e.inputPlaceholder),e.inputValue!=null&&(m.value=String(e.inputValue)),b.appendChild(m),o.appendChild(b)}var g=e.buttons&&e.buttons.length?e.buttons:[{label:"\u597D",value:!0,kind:"primary",autofocus:!0}],y=document.createElement("div");y.className="wand-dialog-footer";var w=null,F=null;function E(x){if(!s.classList.contains("closing")){s.classList.add("closing"),document.removeEventListener("keydown",A,!0);var S=gr.indexOf(E);S>=0&&gr.splice(S,1),setTimeout(function(){s.parentNode&&s.parentNode.removeChild(s),u(x)},160)}}g.forEach(function(x){var S=document.createElement("button"),P=x.kind||"secondary";S.className="btn btn-"+P,S.type="button",S.textContent=x.label,S.addEventListener("click",function(){a&&x.kind==="primary"?E(m?m.value:""):E(x.value)}),w||(w=S),x.autofocus&&(F=S),y.appendChild(S)}),o.appendChild(y),s.appendChild(o),s.addEventListener("click",function(x){x.target===s&&t&&E(e.cancelValue!==void 0?e.cancelValue:a?null:!1)});function A(x){if(gr[gr.length-1]===E){if(x.key==="Escape"&&t){x.preventDefault(),x.stopPropagation(),E(e.cancelValue!==void 0?e.cancelValue:a?null:!1);return}if(x.key==="Enter"){for(var S=null,P=0;P<g.length;P++)if(g[P].kind==="primary"){S=g[P];break}S||(S=g[g.length-1]),S&&(x.preventDefault(),x.stopPropagation(),a&&S.kind==="primary"?E(m?m.value:""):E(S.value))}}}document.addEventListener("keydown",A,!0),gr.push(E),document.body.appendChild(s),requestAnimationFrame(function(){if(a&&m){m.focus();try{m.select()}catch{}}else F?F.focus():w&&w.focus()})})}function Qd(e,t){return t=t||{},nn({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 $d(e,t){t=t||{};var r=!!t.danger||t.type==="danger";return nn({title:t.title||(r?"\u786E\u8BA4\u64CD\u4F5C":"\u8BF7\u786E\u8BA4"),message:typeof e=="string"?e:String(e??""),type:t.type||(r?"danger":"question"),cancelValue:!1,buttons:[{label:t.cancelLabel||"\u53D6\u6D88",value:!1,kind:"secondary"},{label:t.okLabel||(r?"\u5220\u9664":"\u786E\u5B9A"),value:!0,kind:r?"danger":"primary",autofocus:!r}]}).then(function(i){return i===!0})}function Xd(e,t,r){return r=r||{},nn({title:r.title||"\u8BF7\u8F93\u5165",message:typeof e=="string"?e:String(e??""),type:r.type||"question",input:!0,inputValue:t==null?"":String(t),inputPlaceholder:r.placeholder||"",cancelValue:null,buttons:[{label:r.cancelLabel||"\u53D6\u6D88",value:null,kind:"secondary"},{label:r.okLabel||"\u786E\u5B9A",value:void 0,kind:"primary"}]})}window.wandAlert=Qd,window.wandConfirm=$d,window.wandPrompt=Xd,window.openWandDialog=nn;var Qt=[],Fs=0,Zd=6,ef=16;function aa(e){if((e.actionLabel||e.playSound)&&ks(),!n.notifBubble)return{dismiss:function(){}};var t=++Fs,r=e.type||"info",i=e.icon||(r==="warning"?"!":r==="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 s='<div class="notification-bubble-header"><span class="notification-bubble-icon '+r+'">'+i+'</span><span class="notification-bubble-title">'+p(e.title)+'</span><button class="notification-bubble-close" title="\u5173\u95ED">\xD7</button></div>',o=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=s+o+l,document.body.appendChild(u);var c={id:t,el:u};Qt.push(c),ua();var d=u.querySelector(".notification-bubble-close");if(d&&(d.onclick=function(){hr(t)}),e.actionLabel&&e.action){var f=u.querySelector(".notification-bubble-actions button");f&&(f.onclick=function(){e.action(),hr(t)})}var v=null;return a>0&&(v=setTimeout(function(){hr(t)},a)),{dismiss:function(){hr(t)}}}function hr(e){for(var t=-1,r=0;r<Qt.length;r++)if(Qt[r].id===e){t=r;break}if(t!==-1){var i=Qt[t];i.el.classList.add("slide-out"),Qt.splice(t,1),ua(),setTimeout(function(){i.el.parentNode&&i.el.parentNode.removeChild(i.el)},300)}}function ua(){for(var e=ef,t=0;t<Qt.length;t++)Qt[t].el.style.top=e+"px",e+=Qt[t].el.offsetHeight+Zd}try{xs=navigator.userAgent.match(/WandPlatform\/macOS/),la=window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.wandNative||null,xs&&la&&typeof window.WandNative>"u"&&(window.WandNative={downloadUpdate:function(e,t,r){try{la.postMessage({type:"downloadUpdate",url:String(e||""),fileName:String(t||"wand-update.dmg"),source:String(r||"local")})}catch{}}})}catch{}var He=typeof WandNative<"u"&&typeof WandNative.sendNotification=="function",yr=navigator.userAgent.match(/WandApp\/([^\s]+)/),ws=/WandPlatform\/macOS/.test(navigator.userAgent),tf=!!yr&&!ws,Dn=yr&&tf?yr[1]:null,rn=yr&&ws?yr[1]:null;function Vn(e){if(!(!He||typeof WandNative.vibrate!="function"))try{WandNative.vibrate(e||"light")}catch{}}function sa(){if(He){var e=n.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 ni(){if(He&&typeof WandNative.getPermission=="function")try{return WandNative.getPermission()}catch{}return null}function nf(){if(He){var e=ni();if(e==="default"||e==="denied")try{WandNative.requestPermission()}catch{}return}typeof Notification<"u"&&Notification.permission==="default"&&Notification.requestPermission()}function rf(e){var t=e||{};return!(t.onlyWhenHidden&&!document.hidden||t.skipWhenSelectedSessionId&&t.skipWhenSelectedSessionId===n.selectedId&&!document.hidden)}function af(e,t){if(!e||!t||t<=0)return!1;var r=n.notificationHistory[e]||0,i=Date.now();return i-r<t?!0:(n.notificationHistory[e]=i,!1)}function ri(e,t,r){var i=r||{},a=i.tag||"";if(rf(i)&&!af(a,i.minIntervalMs||0)){if(He){var u=ni();if(u!=="granted")return;try{var s=a;i.kind&&(s=i.kind+(a?":"+a:"")),WandNative.sendNotification(e||"Wand",t||"",s||"")}catch{}return}if(!(typeof Notification>"u"||Notification.permission!=="granted")&&document.hidden)try{var o=new Notification(e,{body:t||"",icon:i.icon||"/favicon.ico",tag:a||void 0});o.onclick=function(){window.focus(),o.close(),i.onClick&&i.onClick()},setTimeout(function(){o.close()},1e4)}catch{}}}function uf(e,t){if(!(!t||!t.title)){var r=n.sessions.find(function(a){return a.id===e});if(r){var i=r.summary||r.command||e;ri("\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!==n.selectedId&&Rt(e)}})}}}function Cs(e,t){ff(e||"-",t||"-"),ri("Wand \u53D1\u73B0\u65B0\u7248\u672C","\u5F53\u524D "+(e||"-")+" \u2192 \u6700\u65B0 "+(t||"-"),{kind:"update",tag:"wand-update",minIntervalMs:3e5})}function sf(e,t){ri("\u9700\u8981\u4F60\u7684\u6388\u6743",t,{kind:"permission",tag:"wand-perm-"+e,minIntervalMs:6e4,onlyWhenHidden:!0,skipWhenSelectedSessionId:e,onClick:function(){e!==n.selectedId&&Rt(e)}})}function of(e,t,r){ri(t,r,{kind:"task-ended",tag:"wand-ended-"+e,minIntervalMs:1e4,onClick:function(){e!==n.selectedId&&Rt(e)}})}var kn={},lf=30;function Bs(e){if(!e)return"";var t=String(e).replace(/^#+\s+/gm,"").replace(/\*\*/g,"").replace(/`/g,"").trim(),r=t.split(`
22
- `)[0].trim();return r.length>100&&(r=r.slice(0,100)+"\u2026"),r}function oa(e){!He||typeof WandNative.updateSessionProgress!="function"||e&&(kn[e]&&clearTimeout(kn[e]),kn[e]=setTimeout(function(){delete kn[e],cf(e)},lf))}function cf(e){var t=n.sessions.find(function(x){return x.id===e});if(t){var r=t.summary||t.command||e,i=t.status||"running";if(i==="idle"||i==="archived"||i==="exited"){Ds(e);return}for(var a=null,u="",s="",o=[],l=t.messages||[],c=l.length-1;c>=0;c--){var d=l[c];if(!(!d.content||!Array.isArray(d.content))){if(!s&&d.role==="assistant")for(var f=d.content.length-1;f>=0;f--){var v=d.content[f];if(v&&v.type==="text"&&v.text&&v.text.trim()){s=Bs(v.text);break}}if(d.role==="user"){var m=d.content.some(function(x){return x&&x.__queued});if(!m)for(var b=0;b<d.content.length;b++){var g=d.content[b];if(g&&g.type==="text"&&g.text&&g.text.trim()){var y=Bs(g.text);u||(u=y),o.length<4&&o.push(y);break}}}if(!a)for(var w=d.content.length-1;w>=0;w--){var F=d.content[w];if(F&&F.type==="tool_use"&&F.name==="TodoWrite"&&F.input&&F.input.todos){a=F.input.todos;break}}if(a&&o.length>=4&&s)break}}o.reverse();var E="";e===n.selectedId&&n.currentTask&&n.currentTask.title&&(E=n.currentTask.title);var A={sessionLabel:r,status:i,currentTask:E,latestUserText:u,latestAssistantText:s,todos:a||[],recentUserTexts:o};try{WandNative.updateSessionProgress(e,JSON.stringify(A))}catch{}}}function Ds(e){if(!(!He||typeof WandNative.clearSessionProgress!="function")){kn[e]&&(clearTimeout(kn[e]),delete kn[e]);try{WandNative.clearSessionProgress(e)}catch{}}}window.handleNativeBack=function(){var e=document.getElementById("settings-modal");if(e&&!e.classList.contains("hidden"))return Qn(),!0;var t=document.getElementById("session-modal");if(t&&!t.classList.contains("hidden"))return pn(),!0;var r=document.getElementById("worktree-merge-modal");return r&&!r.classList.contains("hidden")?(Gn(),!0):n.filePanelOpen&&Pe()?(Pi(!1),!0):n.sessionsDrawerOpen&&Pe()?(Sr(),!0):Pe()&&n.selectedId?(n.selectedId=null,ye(),n.sessionsDrawerOpen=!0,ke("wand-sidebar-open",!0),Gt(),!0):!1};function ks(){n.notifSound&&ii()}function df(){return ii()}function ii(){try{let a=function(u,s,o){var l=r.createOscillator(),c=r.createGain();l.type="sine",l.frequency.value=u,c.gain.setValueAtTime(0,r.currentTime+s),c.gain.linearRampToValueAtTime(.5*i,r.currentTime+s+.04),c.gain.exponentialRampToValueAtTime(.001,r.currentTime+s+o),l.connect(c),c.connect(r.destination),l.start(r.currentTime+s),l.stop(r.currentTime+s+o)};var e=a,t=window.AudioContext||window.webkitAudioContext;if(!t)return!1;var r=new t;r.state==="suspended"&&r.resume();var i=(n.notifVolume||0)/100;return a(523,0,.25),a(659,.12,.3),setTimeout(function(){r.close()},600),!0}catch{return!1}}function ff(e,t){if(n._updateBubbleShown)return;n._updateBubbleShown=!0,ks();var r=++Fs,i=document.createElement("div");i.className="notification-bubble update-card",i.setAttribute("data-nid",String(r)),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:r,el:i};Qt.push(a),ua();var u=i.querySelector(".update-card-close");u&&(u.onclick=function(){hr(r),n._updateBubbleShown=!1});var s=i.querySelector("#update-bubble-action"),o=i.querySelector(".update-card-action-label"),l=i.querySelector("#update-card-subtitle"),c=i.querySelector("#update-card-status"),d=i.querySelector("#update-card-progress");function f(b,g){if(c){if(c.textContent=b||"",c.classList.remove("hidden","error","success"),!b){c.classList.add("hidden");return}g&&c.classList.add(g)}}function v(b){l&&(l.textContent=b||"")}function m(b){d&&d.classList.toggle("active",!!b)}s&&(s.onclick=function(){s.disabled=!0,i.classList.add("is-busy"),o&&(o.textContent="\u66F4\u65B0\u4E2D\u2026"),v("\u6B63\u5728\u4E0B\u8F7D\u5E76\u5B89\u88C5\u65B0\u7248\u672C\u2026"),m(!0),f(""),fetch("/api/update",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin"}).then(function(b){return b.json()}).then(function(b){if(b.error){m(!1),i.classList.remove("is-busy"),v("\u66F4\u65B0\u672A\u5B8C\u6210"),f(b.error,"error"),s.disabled=!1,o&&(o.textContent="\u91CD\u8BD5");return}if(i.classList.add("is-success"),v((b.message||"\u66F4\u65B0\u5B8C\u6210")+"\uFF0C\u6B63\u5728\u91CD\u542F\u670D\u52A1\u2026"),f(""),o&&(o.textContent="\u6B63\u5728\u91CD\u542F\u2026"),b.detachedUpdate){an();return}if(b.restartRequired===!1){m(!1),i.classList.remove("is-busy"),s.disabled=!1,o&&(o.textContent="\u5DF2\u5B8C\u6210");return}pf(s,o,l,c,d)}).catch(function(){m(!1),i.classList.remove("is-busy"),v("\u66F4\u65B0\u672A\u5B8C\u6210"),f("\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u540E\u91CD\u8BD5","error"),s.disabled=!1,o&&(o.textContent="\u91CD\u8BD5")})})}function pf(e,t,r,i,a){fetch("/api/restart",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin"}).then(function(u){return u.json()}).then(function(){an()}).catch(function(){an()})}function As(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(r){return r.json()}).then(function(){an()}).catch(function(){an()})}function an(){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,r=180,i=setInterval(function(){if(t++,fetch("/api/config",{credentials:"same-origin"}).then(function(u){u.ok&&(clearInterval(i),location.reload())}).catch(function(){}),t>=r){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 vf(e,t){if(!document.getElementById("restart-overlay")){var r=document.createElement("div");r.id="restart-overlay",r.className="restart-overlay",r.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(r)}}var xs,la,he={recording:!1,canceling:!1,transcript:"",startY:0,mockTimer:null},mf=60,Ss=["\u5E2E\u6211\u628A","\u5E2E\u6211\u628A\u9996\u9875\u7684","\u5E2E\u6211\u628A\u9996\u9875\u7684\u767B\u5F55\u6309\u94AE","\u5E2E\u6211\u628A\u9996\u9875\u7684\u767B\u5F55\u6309\u94AE\u6539\u6210\u5706\u89D2\uFF0C","\u5E2E\u6211\u628A\u9996\u9875\u7684\u767B\u5F55\u6309\u94AE\u6539\u6210\u5706\u89D2\uFF0C\u5E76\u52A0\u4E00\u70B9\u9634\u5F71"];function gf(){var e=0;he.mockTimer=setInterval(function(){e>=Ss.length||(Is(Ss[e]),e++)},420)}function ca(){he.mockTimer&&(clearInterval(he.mockTimer),he.mockTimer=null)}function Is(e){he.transcript=e||"";var t=document.getElementById("voice-transcript-text");t&&(t.textContent=he.transcript);var r=document.getElementById("voice-transcript-bubble");r&&r.classList.toggle("has-text",!!he.transcript)}function hf(e){if(e){e.preventDefault(),he.startY=typeof e.clientY=="number"?e.clientY:0;try{e.pointerId!==void 0&&e.target&&e.target.setPointerCapture&&e.target.setPointerCapture(e.pointerId)}catch{}}he.recording=!0,he.canceling=!1,he.transcript="";var t=document.getElementById("voice-record-btn");if(t){t.classList.add("is-recording");var r=t.querySelector(".voice-record-label");r&&(r.textContent="\u677E\u5F00 \u53D1\u9001")}var i=document.getElementById("voice-transcript-bubble");i&&i.classList.remove("hidden","is-canceling","has-text"),Is("");var a=document.getElementById("voice-transcript-status");a&&(a.textContent="\u6B63\u5728\u8046\u542C\u2026\u4E0A\u6ED1\u53D6\u6D88"),gf()}function yf(e){if(!(!he.recording||!e)){var t=he.startY-(typeof e.clientY=="number"?e.clientY:he.startY),r=t>mf;if(r!==he.canceling){he.canceling=r;var i=document.getElementById("voice-transcript-bubble");i&&i.classList.toggle("is-canceling",r);var a=document.getElementById("voice-record-btn"),u=a&&a.querySelector(".voice-record-label");u&&(u.textContent=r?"\u677E\u5F00 \u53D6\u6D88":"\u677E\u5F00 \u53D1\u9001");var s=document.getElementById("voice-transcript-status");s&&(s.textContent=r?"\u677E\u5F00\u624B\u6307 \u53D6\u6D88":"\u6B63\u5728\u8046\u542C\u2026\u4E0A\u6ED1\u53D6\u6D88")}}}function Ts(e){if(he.recording){e&&e.preventDefault(),he.recording=!1,ca();var t=!he.canceling&&!!he.transcript.trim(),r=he.transcript;da(),t&&(bf(r),fa(!1))}}function da(){he.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 r=document.getElementById("voice-transcript-bubble");r&&r.classList.add("hidden")}function bf(e){var t=(e||"").trim();if(t){var r=document.getElementById("input-box");if(r){var i=r.value||"",a=i?i.replace(/\s+$/,"")+" "+t:t;r.value=a,nt(a,!0),Pt(r);try{r.setSelectionRange(a.length,a.length)}catch{}}}}function fa(e){var t=document.querySelector(".input-composer");if(t){var r=typeof e=="boolean"?e:!t.classList.contains("voice-mode");if(t.classList.toggle("voice-mode",r),!r){he.recording=!1,ca(),da();var i=document.getElementById("input-box");if(i&&!n.terminalInteractive)try{i.focus({preventScroll:!0})}catch{}}}}function Pt(e){if(e){var t=36,r=120,i=Dr();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,wi(e);return}var a=e.style.overflowY;e.style.overflowY="hidden",e.style.height=t+"px";var u=e.scrollHeight,s=Math.max(t,Math.min(u,r)),o=u>r;e.style.height=s+"px",e.style.minHeight=t+"px",e.style.overflowY=o||i?"auto":"hidden",o?Da(e):e.scrollTop=0,wi(e)}}function Ef(){if(!n.selectedId)return!1;var e=n.sessions.find(function(t){return t.id===n.selectedId});return oe(e)?!!(e.structuredState&&e.structuredState.inFlight):!!e&&e.status==="running"}var br=!1;function pa(){return n.sessions.some(function(e){return oe(e)?!!(e.structuredState&&e.structuredState.inFlight)&&!e.archived:e.status==="running"&&!e.archived})}function Ls(e){if(n.crossSessionQueue.length>=10){k("\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 t="csq-"+Date.now()+"-"+Math.random().toString(36).slice(2,8);n.crossSessionQueue.push({id:t,text:e,cwd:Je(),mode:n.chatMode||"managed",tool:vt(),queuedAt:Date.now()}),Ut(),Bt()}function Ff(e){br||(br=!0,fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({command:e.tool,cwd:e.cwd,mode:e.mode,initialInput:e.text}))}).then(function(t){return t.json()}).then(function(t){return br=!1,t.error?(k(t.error,"error"),n.crossSessionQueue.unshift(e),Ut(),Bt(),null):on(t)}).catch(function(t){br=!1,k(t&&t.message||"\u65E0\u6CD5\u542F\u52A8\u6392\u961F\u4F1A\u8BDD\u3002","error"),n.crossSessionQueue.unshift(e),Ut(),Bt()}))}function wf(e){var t=n.crossSessionQueue.findIndex(function(i){return i.id===e});if(!(t<0)){var r=n.crossSessionQueue.splice(t,1)[0];Ut(),Bt(),fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({command:r.tool,cwd:r.cwd,mode:r.mode,initialInput:r.text}))}).then(function(i){return i.json()}).then(function(i){return i.error?(k(i.error,"error"),n.crossSessionQueue.splice(t,0,r),Ut(),Bt(),null):on(i)}).catch(function(i){k(i&&i.message||"\u65E0\u6CD5\u542F\u52A8\u6392\u961F\u4F1A\u8BDD\u3002","error"),n.crossSessionQueue.splice(t,0,r),Ut(),Bt()})}}function Cf(e){var t=n.crossSessionQueue.findIndex(function(r){return r.id===e});t<0||(n.crossSessionQueue.splice(t,1),Ut(),Bt(),n.crossSessionQueue.length===0&&k("\u6392\u961F\u5DF2\u6E05\u7A7A\u3002","info"))}function ai(){if(n.crossSessionQueue.length!==0&&!pa()&&!br){var e=n.crossSessionQueue.shift();Bt(),Ff(e)}}function Ms(e){var t=Math.floor((Date.now()-e)/1e3);if(t<60)return t+"s";var r=Math.floor(t/60);return r<60?r+"m":Math.floor(r/60)+"h"}function Bt(){var e=document.querySelector(".cross-session-queue"),t=document.querySelector(".input-panel"),r=document.querySelector(".structured-status-bar"),i=document.querySelector(".input-composer"),a=document.getElementById("blank-chat");if(n.crossSessionQueue.length===0){e&&e.remove(),Ut();return}var u=t&&!t.classList.contains("hidden"),s=u?t:a,o=u?r||i:null;if(s){e&&e.parentNode!==s&&(e.remove(),e=null),e?u&&o&&e.nextSibling!==o&&s.insertBefore(e,o):(e=document.createElement("div"),e.className="cross-session-queue",o?s.insertBefore(e,o):s.appendChild(e));var l=n.crossSessionQueue.length,c=n.crossSessionQueue.map(function(f,v){var m=f.text.length>60?f.text.slice(0,60)+"\u2026":f.text,b=Ms(f.queuedAt);return'<div class="queue-item" data-queue-id="'+p(f.id)+'"><span class="queue-item-dot"></span><span class="queue-item-text" title="'+p(f.text)+'">'+p(m)+'</span><span class="queue-item-age">'+b+'</span><button class="queue-item-send-now" data-queue-id="'+p(f.id)+'" title="\u7ACB\u5373\u53D1\u9001" type="button">\u53D1\u9001</button><button class="queue-item-cancel" data-queue-id="'+p(f.id)+'" title="\u53D6\u6D88" type="button">\xD7</button></div>'}).join(""),d=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=d+c}}setInterval(function(){if(n.crossSessionQueue.length>0){var e=document.querySelectorAll(".queue-item-age");n.crossSessionQueue.forEach(function(t,r){e[r]&&(e[r].textContent=Ms(t.queuedAt))}),ai()}},5e3),document.addEventListener("click",function(e){var t=e.target;if(t.closest("#queue-clear-all")){e.preventDefault(),n.crossSessionQueue=[],Ut(),Bt(),k("\u6392\u961F\u5DF2\u6E05\u7A7A\u3002","info");return}var r=t.closest(".queue-item-send-now");if(r){e.preventDefault(),wf(r.dataset.queueId);return}var i=t.closest(".queue-item-cancel");if(i){e.preventDefault(),Cf(i.dataset.queueId);return}});function qs(){var e=document.getElementById("welcome-input"),t=e?e.value.trim():"";if(t){if(pa()){e.value="",Ls(t),k("\u5DF2\u6392\u961F\uFF0C\u5C06\u5728\u5F53\u524D\u4F1A\u8BDD\u5B8C\u6210\u540E\u81EA\u52A8\u53D1\u9001\u3002","info");return}var r=document.getElementById("todo-progress");r&&r.classList.add("hidden"),e.value="",e.placeholder="\u6B63\u5728\u542F\u52A8\u2026",e.disabled=!0;var i=n.chatMode||"managed",a=Je(),u=vt();fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({command:u,provider:u,cwd:a,mode:i,initialInput:t}))}).then(function(s){return s.json()}).then(function(s){if(s.error){k(s.error,"error"),e.placeholder="\u8F93\u5165\u6D88\u606F",e.disabled=!1;return}n.selectedId=s.id,ye(),n.drafts[s.id]="",Ct(),Z(s),ve(),Er(s.id),xn(s.id),fn(s.id).then(function(){e.placeholder="\u8F93\u5165\u6D88\u606F",e.disabled=!1,_t(!0)})}).catch(function(s){k(s&&s.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 Bf(e){e=e||{};var t=document.getElementById("welcome-input"),r=document.getElementById("input-box"),i=t&&t.value.trim()?t.value.trim():r?r.value.trim():"";if(n.selectedId){i&&Os(e);return}if(i&&pa()){r&&(r.value=""),t&&(t.value=""),wi(r),Ls(i),k("\u5DF2\u6392\u961F\uFF0C\u5C06\u5728\u5F53\u524D\u4F1A\u8BDD\u5B8C\u6210\u540E\u81EA\u52A8\u53D1\u9001\u3002","info");return}var a=n.chatMode||"managed",u=Je(),s=vt();fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({command:s,provider:s,cwd:u,mode:a,initialInput:i||void 0}))}).then(function(o){return o.json()}).then(function(o){return o.error?(k(o.error,"error"),null):(n.selectedId=o.id,ye(),n.drafts[o.id]="",Ct(),r&&(r.value=""),t&&(t.value=""),Z(o),ve(),Er(o.id),xn(o.id),fn(o.id))}).catch(function(o){k(o&&o.message||(s==="codex"?"\u65E0\u6CD5\u542F\u52A8 Codex \u4F1A\u8BDD\u3002":"\u65E0\u6CD5\u542F\u52A8 Claude \u4F1A\u8BDD\u3002"),"error")})}function Er(e){var t=n.sessions.find(function(v){return v.id===e}),r=document.getElementById("blank-chat"),i=document.getElementById("output"),a=document.getElementById("chat-output"),u=document.getElementById("stop-button"),s=document.getElementById("terminal-title"),o=document.getElementById("terminal-info"),l=document.querySelector(".session-summary-value"),c=oe(t);r&&r.classList.add("hidden"),i&&i.classList.toggle("hidden",c),a&&a.classList.remove("hidden"),c?n.currentView="chat":n.currentView="terminal";var d=t?gi(t.command):"Wand",f=t?or(t):"\u5F00\u59CB\u5BF9\u8BDD";s&&(s.textContent=d),o&&(o.textContent=f),l&&(l.textContent=d),c||n.terminal||zn(),bi(),_t(!0),c||et("view-switch",{forceReplay:!0})}function Os(e){e=e||{};var t=!!e.interrupt;if(n.terminalInteractive)return k("\u7EC8\u7AEF\u4EA4\u4E92\u6A21\u5F0F\u5F00\u542F\u65F6\uFF0C\u8BF7\u76F4\u63A5\u5728\u7EC8\u7AEF\u4E2D\u8F93\u5165\u3002","info"),Promise.resolve();var r=document.getElementById("input-box"),i=r?r.value:"",a=Ht(),u=n.pendingAttachments.length>0;if(i||u){var s=u&&n.selectedId?mm(n.selectedId):Promise.resolve([]);return s.then(function(o){var l=gm(o),c=l+(i||(o.length?"\u8BF7\u67E5\u770B\u9644\u4EF6\u3002":""));o.length&&vm();var d=document.getElementById("todo-progress");if(d&&d.classList.add("hidden"),oe(a))return Df(c,r,a,{interrupt:t});var f=Nf(a,c),v=!n.wsConnected;return v?(Vf(f),r&&(r.value="",Pt(r)),nt(""),Promise.resolve()):jf(a).then(function(m){if(!m)return null;var b=n.currentView;if(m&&m.provider==="codex"&&n.selectedId!==m.id)throw new Error("Codex session changed before input send.");return Rf(f,"enter_text",30,b).then(function(){r&&r.value===i&&(r.value="",Pt(r)),nt("")})}).catch(function(m){throw k(Hf(m),"error"),m})}).catch(function(o){throw k("\u9644\u4EF6\u4E0A\u4F20\u5931\u8D25: "+(o.message||o),"error"),o})}return Promise.resolve()}var Ps={},Hs=350;function Df(e,t,r,i){i=i||{};var a=!!i.interrupt;if(!n.selectedId||!e)return Promise.resolve();if(!r)return k("\u4F1A\u8BDD\u4E0D\u5B58\u5728\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u6216\u65B0\u5EFA\u4F1A\u8BDD\u3002","error"),Promise.resolve();var u=Date.now(),s=Ps[r.id]||0;if(u-s<Hs)return console.log("[wand] postStructuredInput: duplicate submit (within "+Hs+"ms) ignored for session",r.id),Promise.resolve();Ps[r.id]=u;var o=!!(r.structuredState&&r.structuredState.inFlight&&r.status==="running"),l=o&&a,c=o&&!a,d=ar(Array.isArray(r.messages)?r.messages.slice():[]),f;if(c){var v=Array.isArray(r.queuedMessages)?r.queuedMessages.slice():[];v.push(e),f={id:r.id,queuedMessages:v},Z(f);var m=n.sessions.find(function(F){return F.id===r.id})||r;n.currentMessages=Re(m,tt(m,m.output,!1)),Un("\u5DF2\u52A0\u5165\u6392\u961F\u2026"),Ye(!0),un(),k(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 b={role:"user",content:[{type:"text",text:e}]};d.push(b);var g=Object.assign({},r.structuredState||{},{inFlight:!0});Z({id:r.id,status:"running",messages:d,structuredState:g}),n.currentMessages=Re(Object.assign({},r,{status:"running",messages:d,structuredState:g}),d),Un(l?"\u5DF2\u4E2D\u65AD\uFF0C\u6B63\u5728\u5904\u7406\u65B0\u6D88\u606F\u2026":"\u601D\u8003\u4E2D\u2026"),Ye(!0),l&&k("\u5DF2\u4E2D\u65AD\u4E0A\u4E00\u6761\u56DE\u590D\uFF0C\u6B63\u5728\u5904\u7406\u65B0\u6D88\u606F\u2026","info")}t&&(t.value="",Pt(t)),nt("");var y=n.queueEpoch,w=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Date.now().toString(36)+"-"+Math.random().toString(36).slice(2,10);return fetch("/api/structured-sessions/"+r.id+"/messages",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({input:e,interrupt:l||void 0,idempotencyKey:w})}).then(function(F){return F.ok?F.json():F.json().catch(function(){return{error:"\u8BF7\u6C42\u5931\u8D25"}}).then(function(E){var A=new Error(E&&E.error||"\u65E0\u6CD5\u53D1\u9001\u7ED3\u6784\u5316\u6D88\u606F\u3002");throw A.errorCode=E&&E.errorCode,A.httpStatus=F.status,A})}).then(function(F){if(F&&F.error)throw new Error(F.error);if(F&&F.id&&(n.queueEpoch>y&&F.queuedMessages&&delete F.queuedMessages,Z(F),F.id===n.selectedId)){var E=n.sessions.find(function(A){return A.id===F.id})||F;n.currentMessages=Re(E,tt(E,F.output,!1)),Ye(!0),un()}}).catch(function(F){if(F&&F.errorCode==="duplicate_idempotency_key"){k(F.message||"\u68C0\u6D4B\u5230\u91CD\u590D\u53D1\u9001\uFF0C\u5DF2\u62E6\u622A\u3002","warning"),Un("Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C");return}if(c){var E=Array.isArray(r.queuedMessages)?r.queuedMessages.slice():[];if(Z({id:r.id,queuedMessages:E}),r.id===n.selectedId){var A=n.sessions.find(function(z){return z.id===r.id})||r;n.currentMessages=Re(A,tt(A,A.output,!1)),Ye(!0),un()}}else{var x=d.slice(0,-1);Z({id:r.id,status:r.status,messages:x,structuredState:Object.assign({},r.structuredState||{},{inFlight:!1})}),r.id===n.selectedId&&(n.currentMessages=Re(Object.assign({},r,{messages:x,structuredState:Object.assign({},r.structuredState||{},{inFlight:!1})}),x),Ye(!0))}var S=F&&F.message||"",P=S==="Failed to fetch"||S==="NetworkError when attempting to fetch resource."||S==="Load failed"||/aborted|aborterror|networkerror|failed to fetch/i.test(S);P||k(F&&F.message||"\u65E0\u6CD5\u53D1\u9001\u7ED3\u6784\u5316\u6D88\u606F\u3002","error"),Un("Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C")})}function Un(e){var t=document.querySelector(".input-hint");t&&(t.textContent=e)}function un(){Dt()}var kf=10,_s=24;function Af(e){if(typeof e!="string")return"";var t=e.replace(/\s+/g," ").trim();return t.length<=_s?t:t.slice(0,_s)+"\u2026"}function js(e){return n.queueBarDrag&&typeof n.queueBarDrag.origIndex=="number"?n.queueBarDrag.origIndex:typeof n.queueBarHoverIndex=="number"&&n.queueBarHoverIndex>=0&&n.queueBarHoverIndex<e?n.queueBarHoverIndex:0}function xf(e,t,r){var i=e.length<=1,a="queue-bar";r&&(a+=" queue-bar-capacity"),t&&(a+=" queue-bar-inflight");for(var u=js(e.length),s=t?"\u4E2D\u65AD\u5F53\u524D\u56DE\u590D\uFF0C\u7ACB\u5373\u53D1\u9001\u8FD9\u6761":"\u7ACB\u5373\u53D1\u9001\u8FD9\u6761",o="",l=0;l<e.length;l++){var c=e[l]==null?"":String(e[l]),d=l===u,f="queue-bar-item";d&&(f+=" expanded"),i&&(f+=" queue-bar-item-single");var v=d?c+"\uFF08\u6309\u4F4F\u53EF\u62D6\u52A8\u8C03\u5E8F\uFF09":c;o+='<li class="'+f+'" data-index="'+l+'" data-action="drag" title="'+p(v)+'"><span class="queue-bar-item-index" aria-hidden="true">'+(l+1)+'</span><span class="queue-bar-item-text">'+p(Af(c))+'</span><button type="button" class="queue-bar-item-promote" data-action="promote-item" title="'+p(s)+'" aria-label="\u7ACB\u5373\u53D1\u9001\u8FD9\u6761" tabindex="'+(d?"0":"-1")+'"><svg width="10" height="10" 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><span class="queue-bar-item-promote-label">\u7ACB\u5373</span></button><button type="button" class="queue-bar-item-delete" data-action="delete" aria-label="\u5220\u9664\u8FD9\u6761\u6392\u961F\u6D88\u606F" title="\u5220\u9664" tabindex="'+(d?"0":"-1")+'"><svg width="9" height="9" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" 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>'}return'<div class="'+a+'" data-queue-bar="1"><ol class="queue-bar-list" data-queue-list="1">'+o+"</ol></div>"}function Dt(){var e=document.getElementById("queue-bar-host");if(e){var t=n.sessions.find(function(s){return s.id===n.selectedId}),r=t&&t.sessionKind==="structured",i=r?Mi(t):[];if(i=Array.isArray(i)?i:[],!r||i.length===0){e.hidden=!0,e.innerHTML="",n.queueBarHoverIndex=null;return}if(!n.queueBarDrag){e.hidden=!1;var a=!!(t.structuredState&&t.structuredState.inFlight&&t.status==="running"),u=i.length>=kf;e.innerHTML=xf(i,a,u)}}}function Ns(){var e=document.getElementById("queue-bar-host");if(!(!e||e.hidden)){var t=e.querySelector('[data-queue-list="1"]');if(t)for(var r=t.children,i=js(r.length),a=0;a<r.length;a++){var u=r[a],s=a===i;if(u.classList.contains("expanded")!==s){u.classList.toggle("expanded",s);var o=u.querySelector(".queue-bar-item-delete");o&&(o.tabIndex=s?0:-1)}}}}function va(e){var t=e==null?null:Number(e);n.queueBarHoverIndex!==t&&(n.queueBarHoverIndex=t,Ns())}function ui(e,t){Z({id:e.id,queuedMessages:t});var r=n.sessions.find(function(i){return i.id===e.id})||e;n.currentMessages=Re(r,tt(r,r.output,!1)),Ye(!0),Dt()}function Sf(e){var t=n.sessions.find(function(s){return s.id===n.selectedId});if(t){var r=Array.isArray(t.queuedMessages)?t.queuedMessages.slice():[];if(!(e<0||e>=r.length)){var i=r.slice(),a=r.slice(0,e).concat(r.slice(e+1));typeof n.queueBarHoverIndex=="number"&&(n.queueBarHoverIndex===e?n.queueBarHoverIndex=null:n.queueBarHoverIndex>e&&(n.queueBarHoverIndex-=1)),Z({id:t.id,queuedMessages:a});var u=n.sessions.find(function(s){return s.id===t.id})||t;n.currentMessages=Re(u,tt(u,u.output,!1)),Ye(!0),Dt(),fetch("/api/structured-sessions/"+t.id+"/queued/"+e,{method:"DELETE",credentials:"same-origin"}).then(function(s){if(!s.ok)return s.json().catch(function(){return{}}).then(function(o){throw new Error(o&&o.error||"\u5220\u9664\u5931\u8D25")})}).catch(function(s){ui(t,i),k(s&&s.message||"\u5220\u9664\u6392\u961F\u6D88\u606F\u5931\u8D25\u3002","error")})}}}function Hm(){var e=n.sessions.find(function(i){return i.id===n.selectedId});if(e){var t=Array.isArray(e.queuedMessages)?e.queuedMessages.slice():[];if(t.length!==0){n.queueBarHoverIndex=null,Z({id:e.id,queuedMessages:[]});var r=n.sessions.find(function(i){return i.id===e.id})||e;n.currentMessages=Re(r,tt(r,r.output,!1)),Ye(!0),Dt(),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")});k("\u5DF2\u6E05\u7A7A "+t.length+" \u6761\u6392\u961F\u6D88\u606F\u3002","info")}).catch(function(i){ui(e,t),k(i&&i.message||"\u6E05\u7A7A\u6392\u961F\u6D88\u606F\u5931\u8D25\u3002","error")})}}}function If(e){var t=n.sessions.find(function(c){return c.id===n.selectedId});if(t){var r=Array.isArray(t.queuedMessages)?t.queuedMessages.slice():[];if(!(e<0||e>=r.length)){var i=r[e],a=r.slice(0,e).concat(r.slice(e+1)),u=r.slice(),s=!!(t.structuredState&&t.structuredState.inFlight&&t.status==="running");typeof n.queueBarHoverIndex=="number"&&(n.queueBarHoverIndex===e?n.queueBarHoverIndex=null:n.queueBarHoverIndex>e&&(n.queueBarHoverIndex-=1)),Z({id:t.id,queuedMessages:a});var o=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Date.now().toString(36)+"-"+Math.random().toString(36).slice(2,10),l={input:i,idempotencyKey:o};s&&(l.interrupt=!0,l.preserveQueue=!0),k(s?"\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+"/messages",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(l)}).then(function(c){return c.ok?c.json():c.json().catch(function(){return{}}).then(function(d){throw new Error(d&&d.error||"\u7ACB\u5373\u53D1\u9001\u5931\u8D25")})}).then(function(c){if(c&&c.id&&(Z(c),c.id===n.selectedId)){var d=n.sessions.find(function(f){return f.id===c.id})||c;n.currentMessages=Re(d,tt(d,c.output,!1)),Ye(!0),Dt()}}).catch(function(c){ui(t,u),k(c&&c.message||"\u7ACB\u5373\u53D1\u9001\u5931\u8D25\u3002","error")})}}}function Tf(e,t){var r=n.sessions.find(function(f){return f.id===n.selectedId});if(r){var i=Array.isArray(r.queuedMessages)?r.queuedMessages.slice():[];if(!(i.length<=1)&&t){var a=t.parentElement;if(a){var u=Number(t.getAttribute("data-index")),s=Array.prototype.slice.call(a.children),o=s.map(function(f){return f.getBoundingClientRect()}),l=3;o.length>=2&&(l=Math.max(0,o[1].top-o[0].top-o[0].height)),e.preventDefault();try{t.setPointerCapture(e.pointerId)}catch{}if(navigator&&navigator.vibrate)try{navigator.vibrate(8)}catch{}n.queueBarDrag={pointerId:e.pointerId,handleEl:t,itemEl:t,listEl:a,siblings:s,rects:o,origIndex:u,targetIndex:u,startY:e.clientY,gap:l,queueSnapshot:i},t.classList.add("dragging"),Ns(),s.forEach(function(f){f!==t&&f.classList.add("queue-bar-item-sliding")});var c=function(f){Mf(f)},d=function(f){qf(f)};n.queueBarDrag.moveHandler=c,n.queueBarDrag.upHandler=d,t.addEventListener("pointermove",c),t.addEventListener("pointerup",d),t.addEventListener("pointercancel",d)}}}}function Lf(e,t,r,i){for(var a=r.length,u=[],s=0;s<a;s++)u.push(s);u.splice(e,1),u.splice(t,0,e);for(var o=r[0].top,l=r[0].top,c=1;c<a;c++)r[c].top<l&&(l=r[c].top);for(var d={},f=l,v=0;v<a;v++){var m=u[v];d[m]=f,f+=r[m].height+i}return d}function Mf(e){var t=n.queueBarDrag;if(!(!t||e.pointerId!==t.pointerId)){e.preventDefault();var r=e.clientY-t.startY;t.itemEl.style.transform="translateY("+r+"px)";for(var i=t.rects[t.origIndex].top+t.rects[t.origIndex].height/2+r,a=t.origIndex,u=0;u<t.rects.length;u++)if(u!==t.origIndex){var s=t.rects[u].top+t.rects[u].height/2;u<t.origIndex&&i<s?a=Math.min(a,u):u>t.origIndex&&i>s&&(a=Math.max(a,u))}if(a!==t.targetIndex){t.targetIndex=a;var o=Lf(t.origIndex,a,t.rects,t.gap);t.siblings.forEach(function(l,c){if(c!==t.origIndex){var d=o[c]-t.rects[c].top;l.style.transform=d?"translateY("+d+"px)":""}})}}}function qf(e){var t=n.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 r=t.origIndex,i=t.targetIndex,a=t.queueSnapshot;if(t.siblings.forEach(function(c){c.style.transform="",c.classList.remove("queue-bar-item-sliding")}),t.itemEl.classList.remove("dragging"),n.queueBarDrag=null,r===i){Dt();return}for(var u=[],s=0;s<a.length;s++)u.push(s);u.splice(r,1),u.splice(i,0,r);var o=u.map(function(c){return a[c]});n.queueBarHoverIndex=i;var l=n.sessions.find(function(c){return c.id===n.selectedId});if(!l){Dt();return}Z({id:l.id,queuedMessages:o}),Dt(),fetch("/api/structured-sessions/"+l.id+"/queued",{method:"PATCH",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({order:u})}).then(function(c){if(!c.ok)return c.json().catch(function(){return{}}).then(function(d){throw new Error(d&&d.error||"\u6392\u5E8F\u5931\u8D25")})}).catch(function(c){ui(l,a),k(c&&c.message||"\u8C03\u6574\u6392\u961F\u987A\u5E8F\u5931\u8D25\u3002","error")})}}function Of(){var e=document.getElementById("queue-bar-host");!e||e.__queueDelegated||(e.__queueDelegated=!0,e.addEventListener("click",function(t){var r=t.target,i=r&&r.closest?r.closest("[data-action]"):null;if(!(!i||!e.contains(i))){var a=i.getAttribute("data-action");if(a!=="drag"){if(t.preventDefault(),t.stopPropagation(),a==="promote-item"){var u=i.closest(".queue-bar-item");u&&If(Number(u.getAttribute("data-index")));return}if(a==="delete"){var s=i.closest(".queue-bar-item");s&&Sf(Number(s.getAttribute("data-index")));return}}}}),e.addEventListener("mouseover",function(t){if(!n.queueBarDrag){var r=t.target,i=r&&r.closest?r.closest(".queue-bar-item"):null;!i||!e.contains(i)||va(Number(i.getAttribute("data-index")))}}),e.addEventListener("mouseleave",function(){n.queueBarDrag||va(null)}),e.addEventListener("pointerdown",function(t){if(!(t.button!==void 0&&t.button!==0)){var r=t.target;if(!(r&&r.closest&&r.closest('[data-action="delete"], [data-action="promote-item"]'))){var i=r&&r.closest?r.closest(".queue-bar-item"):null;i&&(va(Number(i.getAttribute("data-index"))),Tf(t,i))}}}))}function Rs(e){if(!e||!Array.isArray(e.content))return 0;for(var t=0,r=0;r<e.content.length;r++){var i=e.content[r];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 Pf(e,t){if(!e)return t;if(!t)return e;var r=Rs(e),i=Rs(t);return i>=r?t:Object.assign({},e,{usage:t.usage||e.usage})}function Re(e,t){var r=Array.isArray(t)?ar(t):[],i=Array.isArray(r)?r.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 Ws(){var e=n.sessions.find(function(t){return t.id===n.selectedId});jr(e),un()}function Hf(e){var t=Ht(),r=t&&t.provider==="codex";return e&&(e.errorCode==="SESSION_NOT_RUNNING"||e.errorCode==="SESSION_NO_PTY")?r?"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||(r?"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 zs(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||n.selectedId||null,t.sessionStatus=Object.prototype.hasOwnProperty.call(e,"sessionStatus")?e.sessionStatus:null),t}function Vs(e){return e&&(e.errorCode==="SESSION_NOT_RUNNING"||e.errorCode==="SESSION_NO_PTY"||e.errorCode==="SESSION_NOT_FOUND")}function _f(e,t){e&&Z({id:e,status:t||"exited"})}function _m(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})}),r=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&&r}function ma(e){return!!(e&&!oe(e)&&(e.provider==="claude"||e.provider==="codex")&&e.status!=="running"&&e.claudeSessionId)}function jf(e,t){if(!e)return k("\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(!ma(e)){var r=e&&e.provider==="codex"?"Codex":"Claude";return k("\u8BE5\u4F1A\u8BDD\u6CA1\u6709\u53EF\u6062\u590D\u7684 "+r+" \u5386\u53F2\u4E0A\u4E0B\u6587\uFF0C\u8BF7\u65B0\u5EFA\u4F1A\u8BDD\u3002","error"),Promise.resolve(null)}return to(e.id,t).then(function(i){return i?(Z(i),ve(),xn(i.id),fn(i.id).then(function(){return _t(!0),i})):null})}function Nf(e,t){return[t,"\r"]}function Rf(e,t,r,i){var a=Array.isArray(e)?e.filter(function(s){return!!s}):[];if(a.length===0)return Promise.resolve();var u=typeof r=="number"?r:0;return a.reduce(function(s,o,l){return s.then(function(){return l>0&&u>0?new Promise(function(c){setTimeout(c,u)}).then(function(){return pt(o,l===a.length-1?t:void 0,i)}):pt(o,l===a.length-1?t:void 0,i)})},Promise.resolve())}var Wf=5e3,zf=100;function ga(e){e&&(n.pendingMessages.length>=zf&&n.pendingMessages.shift(),n.pendingMessages.push({input:e,at:Date.now()}))}function Vf(e){var t=Array.isArray(e)?e.filter(function(r){return!!r}):[];t.forEach(function(r){ga(r)})}function Uf(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 n<"u"&&n&&(n.terminalOutputMarker=(n.terminalOutput&&n.terminalOutput.length)|0)}}function pt(e,t,r){return!e||!n.selectedId?Promise.resolve():(Uf(e),n.messageQueue.push(e),n.inputQueue=n.inputQueue.then(function(){return Kf(e,t,r).finally(function(){var i=n.messageQueue.indexOf(e);i>-1&&n.messageQueue.splice(i,1)})}),n.inputQueue)}function Kf(e,t,r){if(!n.selectedId)return Promise.resolve();var i=n.selectedId,a=r||n.currentView;return Ef()?n.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(s){var o=zs(s);throw o.httpStatus=u.status,console.error("[wand] postInput: request failed",{status:u.status,errorCode:o.errorCode,message:o.message,sessionId:i}),Vs(o)&&_f(i,o.sessionStatus||"exited"),o})}).then(function(u){return u&&u.id&&(Z(u),u.id===n.selectedId&&(u.messages&&u.messages.length>0&&(n.currentMessages=u.messages),Ye(!0))),u}):(ga(e),console.log("[wand] postInput: WebSocket disconnected, queued message",{sessionId:n.selectedId,inputLength:e.length}),Promise.resolve()):n.wsConnected?(console.warn("[wand] postInput: session not running, skipping send",{sessionId:n.selectedId}),k("\u4F1A\u8BDD\u672A\u8FD0\u884C\uFF0C\u6B63\u5728\u7B49\u5F85\u81EA\u52A8\u6062\u590D\u540E\u91CD\u8BD5\u3002","info"),Promise.resolve()):(ga(e),console.log("[wand] postInput: session not running, queued for reconnect",{sessionId:n.selectedId,inputLength:e.length}),Promise.resolve())}function jm(e){return pt(e)}function Ht(){return n.sessions.find(function(e){return e.id===n.selectedId})||null}function Nm(e){return e&&e.provider==="codex"?`
23
- `:"\r"}function ha(){return!!n.selectedId&&n.currentView==="terminal"}function Jf(e){return!(!n.terminal||!e||e!==n.selectedId||n.terminalSessionId&&n.terminalSessionId!==e)}function Us(e){if(!n.terminalInteractive||!ha()||e.defaultPrevented||e.isComposing)return!1;var t=e.target;return t?!(t.closest&&t.closest("#mini-keyboard")||ep(t)):!0}var Yf={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"},Gf={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~"},Ks={" ":0,"[":27,"\\":28,"]":29,"^":30,_:31},Qf=400,$f=10,Xf=8,si=54,sn=8,ya=[{key:"enter",label:"Enter"},{key:"ctrl_c",label:"Ctrl+C"},{key:"escape",label:"Esc"},{key:"shift_tab",label:"Shift+Tab"}],Zf=new Set(["mini-keyboard-fab","mini-keyboard-toggle","terminal-interactive-toggle"]);function ep(e){return!!(e&&Zf.has(e.id))}var tp=new Set(["ctrl","alt","shift"]);function Js(e){return tp.has(e)}function np(e){return Gf[e]||""}function rp(e){var t=e.toLowerCase();return t>="a"&&t<="z"?String.fromCharCode(t.charCodeAt(0)-96):Object.prototype.hasOwnProperty.call(Ks,t)?String.fromCharCode(Ks[t]):""}function ip(e){return Yf[e.key]||e.key}function ap(e,t){return{ctrl:e.ctrlKey,alt:e.altKey,shift:e.shiftKey&&(t.length===1||t==="tab"),meta:e.metaKey}}function Ys(e,t){e&&pt(e,t).catch(function(){})}function up(){oo()}function ba(e){n.keyboardPopupOpen=!1,e!==!1&&li(),lp()}function sp(){ha()&&An(!n.terminalInteractive)}function An(e){var t=!!e&&ha();n.terminalInteractive!==t&&(n.terminalInteractive=t,t?(cp(),ba(!1),up(),k("\u7EC8\u7AEF\u4EA4\u4E92\u6A21\u5F0F\u5DF2\u5F00\u542F","info")):(dp(),li()),Fr())}function Ea(){var e=n.sessions.find(function(r){return r.id===n.selectedId}),t=!e||e.status!=="running"||n.currentView!=="terminal";if(t&&n.terminalInteractive){An(!1);return}(!e||n.currentView!=="terminal")&&n.keyboardPopupOpen&&(n.keyboardPopupOpen=!1),Fr()}function Fr(){var e=n.sessions.find(function(y){return y.id===n.selectedId}),t=oe(e),r=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 w=document.getElementById(y);if(w){w.classList.toggle("active",n.terminalInteractive),w.classList.toggle("is-on",n.terminalInteractive),w.classList.toggle("hidden",t||n.currentView!=="terminal"||!e),w.setAttribute("aria-checked",n.terminalInteractive?"true":"false");var F=w.querySelector(".plus-popover-toggle-state");F&&(F.textContent=n.terminalInteractive?"\u5F00":"\u5173")}});var s=document.querySelector(".input-hint");s&&(s.classList.toggle("hidden",t?!0:n.currentView==="terminal"),!t&&e&&(s.textContent=r?"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 o=!t&&!i&&ma(e);a&&(a.placeholder=To(e,n.terminalInteractive),a.disabled=!t&&!!e&&!i&&!o,a.setAttribute("aria-disabled",a.disabled?"true":"false"),a.readOnly=!1,a.classList.toggle("is-terminal-passthrough",!!n.terminalInteractive));var l=document.querySelector(".input-composer");l&&n.terminalInteractive&&l.classList.contains("voice-mode")&&(l.classList.remove("voice-mode"),he.recording=!1,ca(),da());var c=document.getElementById("send-input-button"),d=t&&i;c&&(c.disabled=!t&&!!e&&!i&&!o,c.setAttribute("title",t?d?"\u6392\u961F\u53D1\u9001\uFF08\u5F53\u524D\u56DE\u590D\u7ED3\u675F\u540E\u5904\u7406\uFF09":"\u53D1\u9001":r?i?"\u53D1\u9001\u7ED9 Codex":"Codex \u4F1A\u8BDD\u5DF2\u7ED3\u675F":!e||i||o?"\u53D1\u9001":"\u4F1A\u8BDD\u5DF2\u7ED3\u675F"),c.classList.toggle("queue-mode",d));var f=document.getElementById("stop-button");if(f){var v=$a(e);f.classList.toggle("hidden",!v.active)}var m=document.getElementById("stop-button");if(m){var b=$a(e);m.classList.toggle("hidden",!b.active)}var g=document.getElementById("output");g&&g.classList.toggle("interactive",!t&&n.terminalInteractive),ds()}function oi(){var e=window.getSelection&&window.getSelection();if(!e||e.isCollapsed)return!1;var t=document.getElementById("output");if(!t)return!1;var r=e.anchorNode;return r&&r.nodeType===3&&(r=r.parentNode),!!(r&&t.contains(r))}function Fa(e){if(Us(e)&&!e.metaKey){var t=ip(e);if(t){var r=ap(e,t);if(!Js(t)&&!(r.ctrl&&t.length===1&&t.toLowerCase()==="c"&&oi())){var i=Qs(t,r);i&&(e.preventDefault(),Ys(i,t))}}}}function op(){n.terminal&&qd(500)}function lp(){fr()}function Rm(e){e.preventDefault(),e.stopPropagation(),!(n.currentView!=="terminal"||!n.selectedId)&&(n.keyboardPopupOpen=!n.keyboardPopupOpen,Fr())}function Gs(){n.keyboardPopupOpen=!1,Fr()}function cp(){document.addEventListener("keydown",Fa,!0)}function dp(){document.removeEventListener("keydown",Fa,!0)}function Qs(e,t){var r=t||{ctrl:!1,alt:!1,shift:!1};if(Js(e))return"";if(e==="tab"&&r.shift)return"\x1B[Z";var i=np(e);if(i)return i;if(e.indexOf("ctrl_")===0)return String.fromCharCode(e.charCodeAt(e.length-1)-96);var a=wr(e);if(a)return a;if(!e)return"";var u=e.length===1?e:"";return u?(r.shift&&(u=u.toUpperCase()),r.ctrl?rp(u):r.alt?"\x1B"+u:u):""}function li(){n.modifiers.ctrl=!1,n.modifiers.alt=!1,n.modifiers.shift=!1,fp()}function fp(){var e=document.getElementById("mini-keyboard");e&&["ctrl","alt","shift"].forEach(function(t){var r=e.querySelector('[data-key="'+t+'"]');r&&r.classList.toggle("active",!!n.modifiers[t])})}function wr(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 pp(){if(n.pendingMessages.length!==0){var e=Ht();if(oe(e)){n.pendingMessages=[];return}var t=Date.now(),r=[],i=0;n.pendingMessages.forEach(function(u){if(typeof u=="string"){r.push(u);return}if(!(!u||typeof u.input!="string")){if(t-(u.at||0)>Wf){i++;return}r.push(u.input)}}),n.pendingMessages=[],i>0&&console.log("[wand] flushPendingMessages: dropped "+i+" stale input(s)");var a=Promise.resolve();r.forEach(function(u){a=a.then(function(){return vp(u).catch(function(){})})})}}function vp(e){if(!e||!n.selectedId)return Promise.resolve();var t=n.selectedId;return fetch("/api/sessions/"+t+"/input",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({input:e,view:n.currentView})}).then(function(r){return r.ok?r.json():r.json().catch(function(){return{error:"\u8BF7\u6C42\u5931\u8D25"}}).then(function(i){var a=zs(i);if(a.httpStatus=r.status,Vs(a))return console.log("[wand] sendInputDirect: session unavailable, dropping",{sessionId:t,errorCode:a.errorCode}),null;throw a})}).then(function(r){return r&&r.id&&(Z(r),r.id===n.selectedId&&(r.messages&&r.messages.length>0&&(n.currentMessages=r.messages),Ye(!0))),r})}function wa(){n.selectedId&&fetch("/api/sessions/"+n.selectedId+"/stop",{method:"POST",credentials:"same-origin"}).then(jt)}function $s(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(r){return r.json()}).then(function(r){if(r&&r.error)throw new Error(r.error);return n.selectedId===e&&(n.selectedId=null,ye()),jt()}).catch(function(){t&&t.classList.remove("deleting");var r=document.getElementById("action-error");Ne(r,"\u65E0\u6CD5\u5220\u9664\u4F1A\u8BDD\u3002")})},250)}function Xs(e,t){t&&t.classList.add("deleting"),setTimeout(function(){fetch("/api/claude-history/"+encodeURIComponent(e),{method:"DELETE",credentials:"same-origin"}).then(function(r){return r.json()}).then(function(r){if(r&&r.error)throw new Error(r.error);n.claudeHistory=n.claudeHistory.filter(function(i){return i.claudeSessionId!==e}),delete n.selectedClaudeHistoryIds[e],ve()}).catch(function(){t&&t.classList.remove("deleting");var r=document.getElementById("action-error");Ne(r,"\u65E0\u6CD5\u5220\u9664\u5386\u53F2\u4F1A\u8BDD\u3002")})},250)}function Wm(e,t){Xs(e,t)}function mp(e,t,r){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);n.claudeHistory=n.claudeHistory.filter(function(a){return a.cwd!==e}),ve()}).catch(function(){Zs(r,!1);var i=document.getElementById("action-error");Ne(i,"\u65E0\u6CD5\u6E05\u7406\u8BE5\u76EE\u5F55\u7684\u5386\u53F2\u4F1A\u8BDD\u3002")})}function Zs(e,t){e.forEach(function(r){r.classList.toggle("deleting",t)})}function gp(e){return Array.prototype.slice.call(document.querySelectorAll('.claude-history-item[data-cwd="'+window.CSS.escape(String(e))+'"]'))}var eo=null,Cr=null;function Br(){if(Cr){Cr.classList.remove("swiped");var e=Cr.querySelector(".session-item-content");e&&(e.style.transform=""),Cr=null}}function hp(e){eo=null,Cr=null}function yp(e,t,r){e==="claude"&&(n.preferredCommand=e,n.chatMode=Nt(e,n.chatMode));var i=n.chatModel||n.config&&n.config.defaultModel||"";return fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({command:e,cwd:t||"",mode:n.chatMode||n.config.defaultMode||"default",model:i||void 0,thinkingEffort:n.chatThinking||void 0}))}).then(function(a){return a.json()}).then(function(a){return a.error?(r&&Ne(r,a.error),null):(n.selectedId=a.id,ye(),n.drafts[a.id]="",a)})}var Ca=!1;function to(e,t){return!e||Ca?Promise.resolve(null):(Ca=!0,fetch("/api/sessions/"+encodeURIComponent(e)+"/resume",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({mode:n.chatMode||n.config.defaultMode||"default"}))}).then(function(r){return r.json()}).then(function(r){return r.error?(t?Ne(t,r.error):k(r.error,"error"),null):(n.selectedId=r.id,ye(),n.drafts[r.id]="",r)}).catch(function(r){var i=r&&r.message||"\u65E0\u6CD5\u6062\u590D\u4F1A\u8BDD\u3002";return t?Ne(t,i):k(i,"error"),null}).finally(function(){Ca=!1}))}function zm(e,t){return e?fetch("/api/claude-sessions/"+encodeURIComponent(e)+"/resume",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({mode:n.chatMode||n.config.defaultMode||"default"}))}).then(function(r){return r.json()}).then(function(r){return r.error?(t?Ne(t,r.error):k(r.error,"error"),null):(n.claudeHistory=n.claudeHistory.filter(function(i){return i.claudeSessionId!==e}),n.selectedId=r.id,ye(),n.drafts[r.id]="",r)}).catch(function(r){var i=r&&r.message||"\u65E0\u6CD5\u6309 Claude \u4F1A\u8BDD ID \u6062\u590D\u4F1A\u8BDD\u3002";return t?Ne(t,i):k(i,"error"),null}):Promise.resolve(null)}function on(e){return!e||!e.id?Promise.resolve():(n.selectedId=e.id,ye(),n.currentMessages=[],pr(),Ct(),Er(e.id),Z(e),ve(),xn(e.id),fn(e.id).then(function(){_t(!0)}))}function no(e){return to(e).then(function(t){return t?(t.claudeSessionId&&(t.provider==="codex"?n.codexHistory=n.codexHistory.filter(function(r){return r.claudeSessionId!==t.claudeSessionId}):n.claudeHistory=n.claudeHistory.filter(function(r){return r.claudeSessionId!==t.claudeSessionId})),on(t).then(function(){return t})):null})}function Vm(e,t,r){return yp(e,t,r).then(function(i){return i?on(i).then(function(){return i}):null})}function Um(e){var t=document.getElementById("welcome-input");if(t){t.placeholder="\u6B63\u5728\u601D\u8003\u2026",t.disabled=!0;var r=n.chatMode||"managed",i=Je(),a=vt(),u=n.chatModel||n.config&&n.config.defaultModel||"";fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({command:a,cwd:i,mode:r,initialInput:e,model:u||void 0,thinkingEffort:n.chatThinking||void 0}))}).then(function(s){return s.json()}).then(function(s){return s.error?(k(s.error,"error"),t.placeholder="\u8F93\u5165\u6D88\u606F",t.disabled=!1,null):on(s)}).catch(function(s){k(s&&s.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 Km(e,t,r){var i=n.chatMode||"managed",a=Je(),u=vt(),s=n.chatModel||n.config&&n.config.defaultModel||"";fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({command:u,cwd:a,mode:i,initialInput:e||void 0,model:s||void 0,thinkingEffort:n.chatThinking||void 0}))}).then(function(o){return o.json()}).then(function(o){return o.error?(k(o.error,"error"),null):(t&&(t.value=""),r&&(r.value=""),on(o))}).catch(function(o){k(o&&o.message||"\u65E0\u6CD5\u542F\u52A8\u4F1A\u8BDD\u3002","error")})}function bp(e){e.disabled=!0,no(e.dataset.sessionId).finally(function(){e.disabled=!1})}function Ep(e){var t=e.dataset.claudeSessionId,r=e.dataset.cwd;t&&(e.disabled=!0,Fp(t,r).then(function(i){i&&i.id&&(n.codexHistory=n.codexHistory.filter(function(a){return a.claudeSessionId!==t}),n.selectedId=i.id,ye(),n.drafts[i.id]="",on(i).then(function(){Wt()}))}).finally(function(){e.disabled=!1}))}function Fp(e,t){return fetch("/api/codex-sessions/"+encodeURIComponent(e)+"/resume",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({mode:n.chatMode||n.config&&n.config.defaultMode||"default",cwd:t}))}).then(function(r){return r.json()}).then(function(r){return r.error?(k(r.error,"error"),null):r}).catch(function(r){return k(r&&r.message||"\u65E0\u6CD5\u6062\u590D\u5386\u53F2\u4F1A\u8BDD\u3002","error"),null})}function wp(e){var t=e.dataset.claudeSessionId;if(t){var r=e.closest(".claude-history-item");r&&(r.style.opacity="0.5"),fetch("/api/codex-history/"+encodeURIComponent(t),{method:"DELETE",credentials:"same-origin"}).then(function(i){return i.json()}).then(function(i){i&&i.ok?(n.codexHistory=n.codexHistory.filter(function(a){return a.claudeSessionId!==t}),ve()):r&&(r.style.opacity="1")}).catch(function(){r&&(r.style.opacity="1")})}}function Cp(e){var t=e.dataset.claudeSessionId,r=e.dataset.cwd;t&&(e.disabled=!0,ci(t,r).then(function(i){i&&i.id&&(n.claudeHistory=n.claudeHistory.filter(function(a){return a.claudeSessionId!==t}),n.selectedId=i.id,ye(),n.drafts[i.id]="",on(i).then(function(){Wt()}))}).finally(function(){e.disabled=!1}))}function ci(e,t){return fetch("/api/claude-sessions/"+encodeURIComponent(e)+"/resume",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({mode:n.chatMode||n.config&&n.config.defaultMode||"default",cwd:t}))}).then(function(r){return r.json()}).then(function(r){return r.error?(k(r.error,"error"),null):r}).catch(function(r){return k(r&&r.message||"\u65E0\u6CD5\u6062\u590D\u5386\u53F2\u4F1A\u8BDD\u3002","error"),null})}function Dr(){return"ontouchstart"in window||navigator.maxTouchPoints>0}function _t(e){if(!n.terminalInteractive){var t=document.getElementById("input-box");!t||!n.selectedId||document.activeElement!==t&&(e&&Dr()||Ba(t))}}function Jm(){var e=document.querySelector(".chat-messages");e&&(e.scrollTop=0)}function ro(){var e=document.querySelector(".input-panel");e&&e.style.removeProperty("--keyboard-offset")}function io(){var e=document.querySelector(".input-panel");e&&e.style.removeProperty("--keyboard-offset")}function di(e){if(e){var t=e.selectionStart,r=e.selectionEnd;Da(e),typeof t=="number"&&typeof r=="number"&&e.setSelectionRange(t,r)}}function ao(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 uo(e){e&&(Pt(e),di(e))}function Bp(e){var t=e&&e.target?e.target:document.getElementById("input-box");t&&(ro(),uo(t))}function Dp(e){var t=e&&e.target?e.target:document.getElementById("input-box");io(),as(2200,t);var r=[80,200,380,620,900];r.forEach(function(i,a){setTimeout(function(){Nn(!1),a===1&&Dr()&&(et("keyboard-blur",{forceReplay:!0}),ft("keyboard"))},i)})}function kp(e){e&&(e.setSelectionRange(e.value.length,e.value.length),di(e))}function Ba(e){e&&(e.focus({preventScroll:!0}),kp(e))}function Ap(e){ao(e),uo(e)}function xp(e){Ba(e)}function Ym(e){ro(),di(e)}function Sp(){io()}function Ip(e){di(e)}function Gm(e){xp(e)}function Tp(e){Ap(e)}function Qm(){Sp()}function $m(e){Ip(e)}function Lp(e,t){if(!e||!t||document.activeElement!==t)return!1;var r=window.innerHeight-e.height-e.offsetTop;if(r<=50)return!1;var i=t.getBoundingClientRect();return i.bottom>e.height-12}function Da(e){if(e){var t=e.scrollHeight>e.clientHeight+1;if(!t){e.scrollTop=0;return}e.scrollTop=e.scrollHeight}}function so(){if(n.terminalInteractive){oo();return}if(!Dr()){var e=document.getElementById("input-box");!e||!n.selectedId||document.activeElement===e||Ba(e)}}function oo(){var e=document.getElementById("output");e&&(e.setAttribute("tabindex","0"),e.focus(),n.terminal&&n.terminal.focus&&n.terminal.focus())}function Mp(){var e=document.querySelector(".input-panel"),t=document.querySelector(".chat-messages");if("virtualKeyboard"in navigator){var r=navigator.virtualKeyboard;r.addEventListener("geometrychange",function(){e&&e.style.removeProperty("padding-bottom")})}var i=document.getElementById("output");i&&i.addEventListener("click",function(){so()}),t&&t.addEventListener("click",function(a){var u=a.target;u.tagName!=="A"&&u.tagName!=="BUTTON"&&!u.closest("button")&&!u.closest("[data-tool-toggle]")&&so()}),document.addEventListener("click",function(a){if(Dr()){var u=document.getElementById("input-box");if(!(!u||document.activeElement!==u)){var s=a.target;!s||typeof s.closest!="function"||s.closest(".input-panel")||s.closest("#mini-keyboard")||s.closest("#mini-keyboard-fab")||s.closest("#mini-keyboard-toggle")||s.closest("#terminal-interactive-toggle")||s.closest(".wand-joystick-root")||u.blur()}}},!0)}function ka(){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 Ye(e){n.renderPending&&!e||(n.renderPending=!0,e?(fi(!0),n.renderPending=!1):requestAnimationFrame(function(){fi(!1),n.renderPending=!1}))}n.chatRenderTimer=null;function lo(e){if(!(n.chatRenderTimer&&!e)){if(n.chatRenderTimer&&clearTimeout(n.chatRenderTimer),e){n.chatRenderTimer=null,Ye();return}var t=n.sessions.find(function(a){return a.id===n.selectedId}),r=t&&t.status==="running"&&t.sessionKind!=="structured",i=r?gs:hs;n.chatRenderTimer=setTimeout(function(){n.chatRenderTimer=null;var a=n.sessions.find(function(u){return u.id===n.selectedId});a&&(n.currentMessages=Re(a,tt(a,a.output,!0))),Ye()},i)}}function qp(e,t){if(!e||!t||t.length===0)return[];function r(w){return w.replace(/\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])/g,"")}for(var i=r(e),a=[],u=[],s=0;s<t.length;s++)if(t[s].role==="user"){var o="",l=t[s].content;if(typeof l=="string")o=l;else if(Array.isArray(l)){for(var c=0;c<l.length;c++)if(l[c].type==="text"){o=l[c].text;break}}o&&u.push({text:o,index:s})}for(var d=0,s=0;s<u.length;s++){var f=u[s],v=i.indexOf("\u276F "+f.text,d);if(v===-1&&(v=i.indexOf(`
20
+ `,view:n.currentView})}).catch(function(o){console.error("[wand] Error sending answer:",o),t.submitted=!1,window.__askRender(e)})}}}};function Wd(){if(!n.__globalListenersBound){n.__globalListenersBound=!0,document.addEventListener("click",function(){var t=document.getElementById("sidebar-overflow-menu");t&&t.classList.remove("open")}),window.addEventListener("resize",function(){var t=document.getElementById("sidebar-overflow-menu");t&&t.classList.remove("open")});var e=function(){n.topbarMoreOpen=!1;var t=document.getElementById("topbar-more-menu"),r=document.getElementById("topbar-more-button");t&&t.classList.add("hidden"),r&&(r.classList.remove("active"),r.setAttribute("aria-expanded","false"))};document.addEventListener("click",function(t){if(n.topbarMoreOpen){var r=document.getElementById("topbar-more-menu"),i=r&&r.parentElement;i&&!i.contains(t.target)&&e()}}),document.addEventListener("keydown",function(t){t.key==="Escape"&&n.topbarMoreOpen&&e()}),document.addEventListener("click",function(t){if(n.plusPopoverOpen){var r=document.getElementById("composer-plus-popover"),i=document.getElementById("attach-btn");r&&r.contains(t.target)||i&&i.contains(t.target)||Ei()}}),document.addEventListener("keydown",function(t){t.key==="Escape"&&n.plusPopoverOpen&&Ei()}),document.addEventListener("click",function(t){if(!t.target.closest(".folder-picker-container")){var r=document.getElementById("folder-picker-dropdown");r&&r.classList.add("hidden")}}),document.addEventListener("change",function(t){var r=t.target;if(!(!r||r.nodeType!==1)&&!(typeof r.matches!="function"||!r.matches("[data-mode-control]"))){var i=r.getAttribute("data-mode-control"),a=r.value;i==="mode"?(n.chatMode=a,Yn(),k&&k("\u65B0\u4F1A\u8BDD\u6A21\u5F0F\uFF1A"+a,"info")):i==="model"?Cv(a):i==="thinking"&&bv(a),r.closest&&r.closest("#composer-plus-popover")&&Ei()}})}}function zd(){Wd();var e=document.getElementById("login-button");if(e){e.addEventListener("click",_a);var t=document.getElementById("login-form");t&&t.addEventListener("submit",function(h){h.preventDefault(),_a()});var r=document.getElementById("login-switch-server-button");r&&r.addEventListener("click",To);var i=document.getElementById("password"),a=document.getElementById("toggle-password-button");a&&i&&a.addEventListener("click",function(){var h=i.type==="text";i.type=h?"password":"text",a.textContent=h?"\u663E\u793A":"\u9690\u85CF",a.setAttribute("aria-label",h?"\u663E\u793A\u5BC6\u7801":"\u9690\u85CF\u5BC6\u7801"),a.setAttribute("aria-pressed",h?"false":"true"),i.focus()}),i&&(i.addEventListener("keydown",function(h){h.key==="Enter"&&_a()}),i.addEventListener("input",function(){i.dataset.error="false",i.setAttribute("aria-invalid","false");var h=document.getElementById("login-error");h&&ti(h)}),i.focus());return}var u=document.getElementById("welcome-input");u&&(u.addEventListener("keydown",function(h){h.key==="Enter"&&!h.shiftKey&&(h.preventDefault(),Os())}),u.focus());var s=document.getElementById("welcome-send-btn");s&&s.addEventListener("click",function(){Os()});var o=document.getElementById("welcome-tool-claude");o&&o.addEventListener("click",function(){al()});var l=document.getElementById("welcome-tool-codex");l&&l.addEventListener("click",function(){n.sessionTool="codex",n.preferredCommand="codex",n.modeValue="full-access",al()});var c=document.getElementById("welcome-tool-structured");c&&c.addEventListener("click",function(){Jo().then(function(){Ht(!0)}).catch(function(h){k(h&&h.message||"\u65E0\u6CD5\u542F\u52A8\u7ED3\u6784\u5316\u4F1A\u8BDD\u3002","error")})}),sm();var d=document.getElementById("sessions-list");d&&(d.addEventListener("click",Fd),d.addEventListener("keydown",wd),d.addEventListener("mouseover",Mv),d.addEventListener("mouseout",qv),yp(d)),window.addEventListener("scroll",$t,!0),window.addEventListener("resize",$t);var f=document.getElementById("provider-cards");f&&f.addEventListener("click",function(h){var D=h.target.closest(".provider-card");if(!(!D||D.classList.contains("disabled"))){var N=D.getAttribute("data-provider");N&&(n.sessionTool=N,n.preferredCommand=N,kr())}});var v=document.getElementById("session-kind-cards");v&&v.addEventListener("click",function(h){var D=h.target.closest(".session-kind-card");if(!(!D||D.classList.contains("disabled"))){var N=D.getAttribute("data-session-kind");N&&(n.sessionCreateKind=N,kr())}});var m=document.getElementById("mode-cards");m&&m.addEventListener("click",function(h){var D=h.target.closest(".mode-card");if(D){var N=D.getAttribute("data-mode");N&&(n.modeValue=N,kr())}});var b=document.getElementById("session-worktree-toggle");b&&b.addEventListener("change",function(){n.sessionCreateWorktree=b.checked});var g=document.getElementById("cwd");g&&(g.addEventListener("input",function(){n.cwdValue=g.value}),g.addEventListener("change",function(){n.cwdValue=g.value}),g.addEventListener("input",sl),g.addEventListener("focus",sl),g.addEventListener("blur",function(){setTimeout(Zn,120)}));var y=document.getElementById("sessions-toggle-button");y&&y.addEventListener("click",Av);var w=document.getElementById("sessions-drawer-backdrop");w&&w.addEventListener("click",Sr);var F=document.getElementById("close-drawer-button");F&&F.addEventListener("click",Sr);var E=document.getElementById("sidebar-collapse-btn");E&&E.addEventListener("click",Ov);var A=document.getElementById("sidebar-pin-btn");A&&A.addEventListener("click",Pv);var x=document.getElementById("sidebar-more-btn"),S=document.getElementById("sidebar-overflow-menu");x&&S&&x.addEventListener("click",function(h){h.stopPropagation();var D=!S.classList.contains("open");S.classList.toggle("open",D),D&&_v(S)});var P=document.getElementById("sidebar-home-btn");P&&P.addEventListener("click",function(){n.selectedId=null,be(),Ct(),Rt(),Gt()});var z=document.getElementById("sidebar-refresh-btn");z&&z.addEventListener("click",function(){window.location.reload()});var G=document.getElementById("logout-button");G&&G.addEventListener("click",Lo);var L=document.getElementById("switch-server-button");L&&L.addEventListener("click",To);var B=document.getElementById("back-to-native-button");B&&B.addEventListener("click",dv);var T=document.getElementById("settings-button");T&&T.addEventListener("click",Rv);var I=document.getElementById("close-settings-button");I&&I.addEventListener("click",$n);var V=document.getElementById("settings-modal");V&&V.addEventListener("click",function(h){h.target.id==="settings-modal"&&$n()});var te=document.getElementById("save-password-button");te&&te.addEventListener("click",Wv);for(var ee=document.querySelectorAll(".settings-tab"),Q=0;Q<ee.length;Q++)ee[Q].addEventListener("click",function(h){var D=h.currentTarget||this,N=D&&D.getAttribute?D.getAttribute("data-tab"):null;N&&Ka(N)});var ne=document.getElementById("save-config-button");ne&&ne.addEventListener("click",Yv);var U=document.getElementById("cfg-default-model-refresh");U&&U.addEventListener("click",Fv);var M=document.getElementById("cfg-view-env-btn");M&&M.addEventListener("click",wv);var H=document.getElementById("save-display-button");H&&H.addEventListener("click",Gv);var j=document.getElementById("app-icon-picker");if(j)for(var Y=j.querySelectorAll(".settings-app-icon-option"),K=0;K<Y.length;K++)Y[K].addEventListener("click",function(){var h=this.getAttribute("data-icon");if(!(!h||typeof WandNative>"u"||typeof WandNative.setAppIcon!="function"))try{WandNative.setAppIcon(h),tl(h);var D=document.getElementById("app-icon-message");D&&(D.textContent="\u56FE\u6807\u5DF2\u5207\u6362\uFF0C\u8FD4\u56DE\u684C\u9762\u540E\u751F\u6548",D.style.color="var(--success)",D.classList.remove("hidden"),setTimeout(function(){D.classList.add("hidden")},3e3))}catch{}});var X=document.getElementById("upload-cert-button");X&&X.addEventListener("click",Qv);for(var oe=document.querySelectorAll(".file-picker-input"),le=0;le<oe.length;le++)(function(h){h.addEventListener("change",function(){var D=h.closest(".file-picker");if(D){var N=D.querySelector(".file-picker-name");N&&(h.files&&h.files[0]?(N.textContent=h.files[0].name,D.classList.add("file-picker-has-file")):(N.textContent=N.getAttribute("data-default")||"\u672A\u9009\u62E9\u6587\u4EF6",D.classList.remove("file-picker-has-file")))}})})(oe[le]);var re=document.getElementById("check-update-button");re&&re.addEventListener("click",el);var Be=document.getElementById("do-update-button");Be&&Be.addEventListener("click",$v);var De=document.getElementById("do-restart-button");De&&De.addEventListener("click",Xv);var Ee=document.getElementById("auto-update-web-toggle");Ee&&Ee.addEventListener("change",function(){Ja("web",Ee.checked)});var O=document.getElementById("auto-update-apk-toggle");O&&O.addEventListener("change",function(){Ja("apk",O.checked)});var R=document.getElementById("auto-update-dmg-toggle");R&&R.addEventListener("change",function(){Ja("dmg",R.checked)});var ie=document.getElementById("beta-channel-toggle");ie&&ie.addEventListener("change",function(){tm(ie.checked?"beta":"stable")});var Se=document.getElementById("copy-connect-code-button");Se&&Se.addEventListener("click",function(){var h=document.getElementById("android-connect-code");h&&Lr(h.textContent,Se)});var ce=document.getElementById("cfg-notif-sound");ce&&(ce.checked=n.notifSound,ce.addEventListener("change",function(){n.notifSound=ce.checked;try{localStorage.setItem("wand-notif-sound",String(n.notifSound))}catch{}n.notifSound&&ii();var h=document.getElementById("notif-volume-field");h&&(h.style.display=n.notifSound?"":"none")}));var ae=document.getElementById("cfg-notif-volume"),ke=document.getElementById("cfg-notif-volume-val"),lt=function(h){if(h){var D=Number(h.min||0),N=Number(h.max||100),we=Number(h.value||0),Et=N>D?Math.max(0,Math.min(100,(we-D)/(N-D)*100)):0;h.style.setProperty("--range-fill",Et+"%")}};if(ae){ae.value=String(n.notifVolume),ke&&(ke.textContent=n.notifVolume+"%"),lt(ae);var rt=document.getElementById("notif-volume-field");rt&&(rt.style.display=n.notifSound?"":"none");var kt=null;ae.addEventListener("input",function(){n.notifVolume=parseInt(ae.value,10),ke&&(ke.textContent=n.notifVolume+"%"),lt(ae);try{localStorage.setItem("wand-notif-volume",String(n.notifVolume))}catch{}if(Ne&&typeof WandNative.setNotificationVolume=="function")try{WandNative.setNotificationVolume(n.notifVolume)}catch{}}),ae.addEventListener("change",function(){ii()})}var Ve=document.getElementById("cfg-notif-bubble");Ve&&(Ve.checked=n.notifBubble,Ve.addEventListener("change",function(){n.notifBubble=Ve.checked;try{localStorage.setItem("wand-notif-bubble",String(n.notifBubble))}catch{}}));var it=document.getElementById("notification-request-btn");it&&it.addEventListener("click",function(){if(Ne){window._onNativePermissionResult=function(){mn(),delete window._onNativePermissionResult};try{WandNative.requestPermission()}catch{}}else typeof Notification<"u"&&Notification.requestPermission().then(function(){mn()})});var Ue=document.getElementById("notification-reset-btn");Ue&&Ue.addEventListener("click",nm);var At=document.getElementById("notification-test-btn");At&&At.addEventListener("click",rl);var Ke=document.getElementById("notification-test-delay-btn");if(Ke&&Ke.addEventListener("click",rm),mn(),Ne&&typeof WandNative.getAvailableSounds=="function"){var je=document.getElementById("native-sound-section"),Ae=document.getElementById("native-sound-select"),pe=document.getElementById("native-sound-preview");if(je&&Ae){je.classList.remove("hidden");try{var Fe=JSON.parse(WandNative.getAvailableSounds()),C=WandNative.getNotificationSound();Ae.innerHTML="";for(var at=0;at<Fe.length;at++){var ct=document.createElement("option");ct.value=Fe[at].id,ct.textContent=Fe[at].name,Fe[at].id===C&&(ct.selected=!0),Ae.appendChild(ct)}Ae.addEventListener("change",function(){try{WandNative.setNotificationSound(Ae.value)}catch{}}),pe&&pe.addEventListener("click",function(){try{WandNative.previewSound(Ae.value)}catch{}})}catch{}}}if(Ne&&typeof WandNative.isHapticEnabled=="function"){var gt=document.getElementById("native-haptic-section"),qe=document.getElementById("cfg-haptic-enabled");if(gt&&qe){gt.classList.remove("hidden");try{qe.checked=WandNative.isHapticEnabled()}catch{}qe.addEventListener("change",function(){try{WandNative.setHapticEnabled(qe.checked)}catch{}qe.checked&&Un("medium")})}}var xt=document.getElementById("topbar-new-session-button");xt&&xt.addEventListener("click",Va);var Xt=document.getElementById("drawer-new-session-button");Xt&&Xt.addEventListener("click",Va);var ut=document.getElementById("close-modal-button");ut&&ut.addEventListener("click",pn);var Oe=document.getElementById("close-worktree-merge-button");Oe&&Oe.addEventListener("click",Qn);var Pe=document.getElementById("worktree-merge-cancel-button");Pe&&Pe.addEventListener("click",Qn);var Ce=document.getElementById("worktree-merge-confirm-button");Ce&&Ce.addEventListener("click",jv);var Je=document.getElementById("run-button");Je&&Je.addEventListener("click",im);var St=document.getElementById("approve-permission-btn");St&&St.addEventListener("click",Gc);var ht=document.getElementById("deny-permission-btn");ht&&ht.addEventListener("click",Qc);var gn=document.getElementById("auto-approve-toggle");gn&&gn.addEventListener("click",$c);var It=document.getElementById("send-input-button");It&&It.addEventListener("click",function(){Rt(),kf()});var Sn=document.getElementById("stop-button");Sn&&Sn.addEventListener("click",wa);var Xe=document.getElementById("session-modal");Xe&&Xe.addEventListener("click",function(h){h.target.id==="session-modal"&&pn(),h.target.id==="worktree-merge-modal"&&Qn()});var de=document.getElementById("input-box");de&&(so(de),de.addEventListener("keydown",fm),de.addEventListener("paste",Em),de.addEventListener("input",function(){n.terminalComposing||ol(de)||(Lp(de),nt(de.value,!0),wi(de))}),de.addEventListener("compositionstart",function(){n.terminalInteractive&&(n.terminalComposing=!0)}),de.addEventListener("compositionend",function(){n.terminalComposing&&(n.terminalComposing=!1,n.terminalInteractive&&ol(de))}),de.addEventListener("focus",function(){Rt(),Dp({target:de})}),de.addEventListener("blur",kp));var ue=document.getElementById("attach-btn"),ve=document.getElementById("file-upload-input"),Me=document.getElementById("composer-plus-popover"),yt=document.getElementById("plus-attach-item");ue&&Me&&ue.addEventListener("click",function(h){h.stopPropagation(),Sv()}),yt&&ve&&yt.addEventListener("click",function(){Ei(),ve.click()}),ve&&ve.addEventListener("change",function(){var h=ve.files;if(h)for(var D=0;D<h.length;D++)Ya(h[D]);ve.value=""});var dt=document.getElementById("voice-btn");dt&&dt.addEventListener("click",function(){fa()});var ye=document.getElementById("voice-cancel-btn");ye&&ye.addEventListener("click",function(){fa(!1)});var He=document.getElementById("voice-record-btn");He&&(He.addEventListener("pointerdown",bf),He.addEventListener("pointermove",Ef),He.addEventListener("pointerup",Ls),He.addEventListener("pointercancel",Ls));var In=document.getElementById("prompt-optimize-btn");In&&In.addEventListener("click",function(){wm()});var bt=document.querySelector(".input-composer");bt&&(bt.addEventListener("dragover",function(h){h.preventDefault(),h.stopPropagation(),bt.classList.add("drag-over")}),bt.addEventListener("dragleave",function(h){h.preventDefault(),h.stopPropagation(),bt.classList.remove("drag-over")}),bt.addEventListener("drop",function(h){h.preventDefault(),h.stopPropagation(),bt.classList.remove("drag-over");var D=h.dataTransfer&&h.dataTransfer.files;if(D)for(var N=0;N<D.length;N++)Ya(D[N])}));var W=["terminal-interactive-toggle-top"];W.forEach(function(h){var D=document.getElementById(h);D&&D.addEventListener("click",op)});var _=document.getElementById("pwa-install-button");_&&_.addEventListener("click",function(){n.deferredPrompt&&(n.deferredPrompt.prompt(),n.deferredPrompt.userChoice.then(function(){n.deferredPrompt=null,n.showInstallPrompt=!1,Fs()}))});var $=document.getElementById("file-panel-toggle-btn");$&&$.addEventListener("click",jr);var me=document.getElementById("file-side-panel-close");me&&me.addEventListener("click",mu);var Ie=document.getElementById("file-panel-backdrop");Ie&&Ie.addEventListener("click",mu);var zt=document.getElementById("topbar-file-button");zt&&zt.addEventListener("click",jr);var nu=document.getElementById("topbar-cwd");nu&&(nu.addEventListener("click",function(){n.filePanelOpen||jr()}),nu.addEventListener("keydown",function(h){(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),n.filePanelOpen||jr())}));var er=document.getElementById("topbar-more-button"),Bi=document.getElementById("topbar-more-menu");er&&Bi&&(er.addEventListener("click",function(h){h.stopPropagation(),n.topbarMoreOpen=!n.topbarMoreOpen,Bi.classList.toggle("hidden",!n.topbarMoreOpen),er.classList.toggle("active",n.topbarMoreOpen),er.setAttribute("aria-expanded",n.topbarMoreOpen?"true":"false")}),Bi.addEventListener("click",function(h){var D=h.target&&h.target.closest?h.target.closest(".topbar-more-item"):null;if(D){var N=D.getAttribute("data-action");switch(n.topbarMoreOpen=!1,Bi.classList.add("hidden"),er.classList.remove("active"),er.setAttribute("aria-expanded","false"),N){case"copy-claude-session-id":Zi("claudeSessionId",Pt()&&Pt().provider==="codex"?"Codex thread ID \u5DF2\u590D\u5236":"Claude \u4F1A\u8BDD ID \u5DF2\u590D\u5236");break;case"copy-cwd":Zi("cwd","\u5DE5\u4F5C\u76EE\u5F55\u5DF2\u590D\u5236");break;case"copy-session-id":Zi("id","\u4F1A\u8BDD ID \u5DF2\u590D\u5236");break;case"worktree-merge":n.selectedId&&Qo(n.selectedId);break;case"worktree-cleanup":n.selectedId&&$o(n.selectedId);break;case"delete-session":n.selectedId&&(function(we){_n("\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(Et){Et&&Zs(we)})})(n.selectedId);break}}}));var ll=document.getElementById("terminal-scale-down-top"),cl=document.getElementById("terminal-scale-up-top");ll&&ll.addEventListener("click",function(){gu(-.25)}),cl&&cl.addEventListener("click",function(){gu(.25)});var dl=document.getElementById("page-refresh-btn");dl&&dl.addEventListener("click",function(h){if(h&&h.shiftKey){location.reload();return}Cn(),Ct({preserveStickState:!0}),fo(!0)});var fl=document.getElementById("terminal-jump-bottom");fl&&fl.addEventListener("click",function(){ft("force")});var pl=document.getElementById("chat-unread-bubble");pl&&pl.addEventListener("click",function(){Al(!0)});var vl=document.getElementById("file-explorer-refresh");vl&&vl.addEventListener("click",function(){Lt()});var ml=document.getElementById("file-explorer-up");ml&&ml.addEventListener("click",Kl);var Re=document.getElementById("file-explorer-cwd");if(Re&&Re.tagName==="INPUT"){var tr=Re.value,gl=function(h){var D=(h||"").trim();return D?(D=D.replace(/\/{2,}/g,"/"),D.length>1&&(D=D.replace(/\/+$/,"")),D):""};Re.addEventListener("focus",function(){tr=Re.value,setTimeout(function(){try{Re.select()}catch{}},0)}),Re.addEventListener("keydown",function(h){if(h.key==="Enter"){h.preventDefault();var D=gl(Re.value);if(!D)return;tr=D,Re.value=D,Lt({cwd:D}),Re.blur()}else h.key==="Escape"&&(h.preventDefault(),Re.value=tr,Re.blur())}),Re.addEventListener("blur",function(){var h=gl(Re.value);if(!h){Re.value=tr;return}if(h===tr){Re.value=h;return}tr=h,Re.value=h,Lt({cwd:h})})}var Di=document.getElementById("file-search-input"),Or=document.getElementById("file-search-clear");Di&&Di.addEventListener("input",function(h){n.fileSearchQuery=h.target.value.trim(),Or&&Or.classList.toggle("visible",n.fileSearchQuery.length>0),Eu()}),Or&&Or.addEventListener("click",function(){n.fileSearchQuery="",Di&&(Di.value=""),Or.classList.remove("visible")});var ge=document.getElementById("folder-picker-input"),Te=document.getElementById("folder-picker-dropdown"),ru=null,Vt=-1,hn=[];function hl(h){ge&&ge.classList.add("invalid");var D=document.getElementById("folder-picker-validation");D&&(D.textContent=h,D.classList.add("visible"))}function yl(){ge&&ge.classList.remove("invalid");var h=document.getElementById("folder-picker-validation");h&&(h.textContent="",h.classList.remove("visible"))}function Dm(h){if(!h.length)return"";var D='<div class="folder-recent-section"><div class="folder-recent-title">\u6700\u8FD1\u4F7F\u7528</div>';return h.forEach(function(N){var we=N.path||N;D+='<div class="folder-recent-item" data-path="'+p(we)+'"><span class="folder-recent-item-path">'+p(we)+"</span></div>"}),D+="</div>",D}function km(){Te&&$i(function(h){var D=Dm(h);D?(Te.innerHTML=D,Te.classList.remove("hidden"),Te.querySelectorAll(".folder-recent-item").forEach(function(N){N.addEventListener("click",function(){var we=this.dataset.path;ge&&(ge.value=we,Yt(we),Zt(we))})})):Pr()})}var bl=document.getElementById("working-dir-indicator");bl&&bl.addEventListener("click",function(){n.selectedId=null,be(),n.drafts={},Gt(),setTimeout(function(){var h=document.getElementById("folder-picker-input");h&&h.focus()},50)});var iu=document.getElementById("folder-picker-toggle"),Te=document.getElementById("folder-picker-dropdown");iu&&Te&&iu.addEventListener("click",function(){Te.classList.toggle("hidden"),iu.classList.toggle("open")});var ki=document.querySelector(".folder-picker-compact");if(ki&&(ki.addEventListener("dragover",function(h){h.preventDefault(),h.stopPropagation(),this.classList.add("drag-over")}),ki.addEventListener("dragleave",function(h){h.preventDefault(),h.stopPropagation(),this.classList.remove("drag-over")}),ki.addEventListener("drop",function(h){h.preventDefault(),h.stopPropagation(),this.classList.remove("drag-over");var D=h.dataTransfer&&h.dataTransfer.items;if(D)for(var N=0;N<D.length;N++){var we=D[N];if(we.kind==="file"&&we.webkitGetAsEntry){var Et=we.webkitGetAsEntry();if(Et&&Et.isDirectory&&ge){var Tt=Et.fullPath;ge.value=Tt,Yt(Tt),Zt(Tt);break}}}})),Te&&Te.addEventListener("click",function(h){var D=h.target.closest(".folder-picker-quick-btn");if(D&&ge){var N=D.dataset.path;ge.value=N,Yt(N),Zt(N),Te.classList.add("hidden");var we=document.getElementById("folder-picker-toggle");we&&we.classList.remove("open")}}),ge){var Am=Qe();Zt(Am),ge.addEventListener("focus",function(){var h=this.value.trim();h?Zt(h):km()}),ge.addEventListener("input",function(h){var D=h.target.value.trim();Vt=-1,ru&&clearTimeout(ru),ru=setTimeout(function(){D?Zt(D):Pr()},150)}),ge.addEventListener("keydown",function(h){if(h.key==="Escape")Pr(),this.blur();else if(h.key==="ArrowDown")h.preventDefault(),hn.length>0&&(Vt=Math.min(Vt+1,hn.length-1),El());else if(h.key==="ArrowUp")h.preventDefault(),Vt>0&&(Vt--,El());else if(h.key==="Enter"&&Vt>=0){h.preventDefault();var D=hn[Vt];if(D){var N=D.dataset.path;if(N===".."){var we=ge.value.trim(),Et=we.substring(0,we.lastIndexOf("/"));Et&&(ge.value=Et||"/",Yt(ge.value),Zt(Et||"/"))}else ge.value=N,Yt(N),Pr()}}})}function El(){hn.forEach(function(h,D){h.classList.toggle("active",D===Vt)})}function og(h){}function Zt(h){Te&&(Te.innerHTML='<div class="folder-picker-loading">\u52A0\u8F7D\u4E2D...</div>',Te.classList.remove("hidden"),Vt=-1,hn=[],fetch("/api/folders?q="+encodeURIComponent(h),{credentials:"same-origin"}).then(function(D){return D.json().then(function(N){return{ok:D.ok,status:D.status,data:N}})}).then(function(D){var N=D.data;if(!D.ok||N.error){hl(N.error||"\u8DEF\u5F84\u65E0\u6548"),Te.innerHTML='<div class="folder-picker-error">'+p(N.error||"\u8DEF\u5F84\u65E0\u6548")+"</div>";return}yl(),N.currentPath;var we=N.items||[],Et=N.currentPath||h;if(we.length===0){Te.innerHTML='<div class="folder-picker-loading">\u7A7A\u76EE\u5F55</div>';return}Te.innerHTML=we.map(function(Tt){var Ai=Tt.type==="parent"?"\u21A9\uFE0F":"\u{1F4C1}",au=Tt.type==="parent"?".. (\u8FD4\u56DE\u4E0A\u7EA7)":Tt.name;return'<div class="folder-picker-item" data-path="'+p(Tt.path)+'" data-type="'+Tt.type+'"><span class="folder-picker-item-icon">'+Ai+"</span><span>"+p(au)+"</span></div>"}).join(""),hn=Array.from(Te.querySelectorAll(".folder-picker-item")),hn.forEach(function(Tt){Tt.addEventListener("click",function(){var Ai=this.dataset.path,au=this.dataset.type;if(ge)if(au==="parent"){var Bl=ge.value.trim(),Dl=Bl.substring(0,Bl.lastIndexOf("/"));ge.value=Dl||"/",Yt(ge.value),Zt(Dl||"/")}else ge.value=Ai,Yt(Ai),yl(),Pr()})})}).catch(function(D){hl("\u52A0\u8F7D\u5931\u8D25"),Te.innerHTML='<div class="folder-picker-error">\u52A0\u8F7D\u5931\u8D25</div>'}))}function Pr(){Te&&Te.classList.add("hidden"),Vt=-1,hn=[]}var yn=document.getElementById("folder-picker-modal"),Fl=document.getElementById("close-folder-picker");function lg(){if(yn){yn.classList.remove("hidden"),ge&&(ge.value=Qe());var h=Qe();Zt(h)}}Fl&&yn&&Fl.addEventListener("click",function(){yn.classList.add("hidden")}),yn&&yn.addEventListener("click",function(h){h.target===yn&&yn.classList.add("hidden")});var wl=document.getElementById("topbar-git-badge");wl&&wl.addEventListener("click",function(h){h.preventDefault(),Mu()});var Cl=document.getElementById("quick-commit-modal");Cl&&Cl.addEventListener("click",function(h){h.target.id==="quick-commit-modal"&&!n.quickCommitSubmitting&&On()}),qu(),Vn(),qp(),nd(),Hf(),Dt()}function Ct(e){var t=e||{};n.lastRenderedHash=0,n.lastRenderedMsgCount=0,n.lastRenderedEmpty=null,n.renderPending=!1,n.chatRenderedCount=n.chatPageSize,n.askUserSelections={},n.chatScrollElement&&(n.chatScrollHandler&&n.chatScrollElement.removeEventListener("scroll",n.chatScrollHandler),n.chatScrollWheelHandler&&n.chatScrollElement.removeEventListener("wheel",n.chatScrollWheelHandler),n.chatScrollTouchStartHandler&&n.chatScrollElement.removeEventListener("touchstart",n.chatScrollTouchStartHandler),n.chatScrollTouchMoveHandler&&n.chatScrollElement.removeEventListener("touchmove",n.chatScrollTouchMoveHandler)),n.chatScrollElement=null,n.chatScrollHandler=null,n.chatScrollWheelHandler=null,n.chatScrollTouchStartHandler=null,n.chatScrollTouchMoveHandler=null,n.chatIsProgrammaticScroll=!1,t.preserveStickState||(n.chatStickToBottom=!0,n.chatUnreadCount=0,n.chatUnreadStartIndex=-1,n.chatInitialRenderDone=!1)}function Qe(){return n.workingDir||en()}window.addEventListener("beforeinstallprompt",function(e){e.preventDefault(),n.deferredPrompt=e,n.showInstallPrompt=!0,Fs()}),window.addEventListener("online",function(){n.isOnline=!0,ei()}),window.addEventListener("offline",function(){n.isOnline=!1,ei()});function ei(){var e=document.getElementById("offline-banner");if(!n.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 n.isOnline&&e&&e.remove()}function Fs(){var e=!!(n.showInstallPrompt&&n.deferredPrompt),t=document.getElementById("pwa-install-button");t&&t.classList.toggle("hidden",!e);var r=document.getElementById("topbar-install-item");r&&r.classList.toggle("hidden",!e)}function Vd(){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 mr(e,t){if(n.config&&!document.hidden){var r=t&&t.immediate===!0,i=Date.now();!r&&i-n.lastForegroundSyncAt<1500||(n.lastForegroundSyncAt=i,n.foregroundSyncTimer&&(clearTimeout(n.foregroundSyncTimer),n.foregroundSyncTimer=null),Ud(e,r))}}function Ud(e,t){return!n.config||document.hidden?Promise.resolve():(Zu(),t?Ui("resume-force"):(!n.ws||n.ws.readyState!==WebSocket.OPEN&&n.ws.readyState!==WebSocket.CONNECTING)&&Jr(),n.claudeHistoryLoaded&&Qu(),dn({skipSelectedOutputReload:!0}).catch(function(r){console.error("[wand] foreground sync failed:",e,r)}))}function Kd(){window.__wandForegroundSyncBound||(window.__wandForegroundSyncBound=!0,document.addEventListener("visibilitychange",function(){document.hidden?Vi():(mr("visibility"),vr("visibility"))}),window.addEventListener("focus",function(){mr("focus")}),window.addEventListener("pageshow",function(){mr("pageshow")}),window.addEventListener("resume",function(){mr("resume")}),window.addEventListener("wand-android-resume",function(){mr("android-resume",{immediate:!0}),vr("android-resume")}),window.addEventListener("wand-ime-state",function(e){var t=e&&e.detail&&e.detail.state;if(t==="shown"||t==="hidden")try{et("native-ime-"+t,{forceReplay:!0}),ft("native-ime")}catch{}}),window.addEventListener("wand-android-network",function(e){var t=e&&e.detail&&e.detail.state;if(t==="lost"){n.isOnline=!1;try{ei()}catch{}return}if(t==="available"||t==="changed"||t==="validated"){n.isOnline=!0;try{ei()}catch{}Ui("android-network-"+t)}}))}function Jd(){fetch("/api/session-check",{credentials:"same-origin"}).then(function(e){return e.ok?e.json():{authed:!1}}).then(function(e){return!e||!e.authed?(n.loginChecked=!0,Gt(),null):fetch("/api/config",{credentials:"same-origin"}).then(function(t){return t.ok?t.json():(n.loginChecked=!0,Gt(),null)})}).then(function(e){e&&(n.config=e,n.loginChecked=!0,requestAnimationFrame(function(){try{Gt({skipShellChrome:!0})}catch{}Kd(),$u(),_t(),Vo(),af(),e.updateAvailable&&e.latestVersion&&Bs(e.currentVersion||"-",e.latestVersion),Dn&&Zv(),rn&&em(),n.claudeHistoryLoaded||setTimeout(function(){n.claudeHistoryLoaded||Kr()},600)}))}).catch(function(){if(n.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">'+J("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}Gt()})}document.addEventListener("click",function(e){if(!_e()&&!n.sidebarPinned&&!n.sidebarCollapsed&&n.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")||xv()}},!0),Vd(),Jd();function Gt(e){var t=e&&e.skipShellChrome,r=document.getElementById("app"),i=n.config!==null,a=n.modalOpen,u=!i||!!document.getElementById("output");if(u&&pr(),document.documentElement.classList.add("no-transition"),n.sidebarPinned&&!n.sidebarCollapsed&&!_e()&&(n.sessionsDrawerOpen=!0,xe("wand-sidebar-open",!0)),r.innerHTML=i?Qd():Gd(),Ct(),zd(),xr(),hi(),Gn(Pt()),bi(),t||Ar(),i&&n.filePanelOpen&&Lt(),document.body.offsetHeight,requestAnimationFrame(function(){document.documentElement.classList.remove("no-transition")}),a&&n.modalOpen){var s=document.getElementById("session-modal");if(s){s.classList.remove("hidden");var o=document.getElementById("cwd");o&&(o.value=n.cwdValue),kr()}}if(i&&n.selectedId&&n.gitStatusSessionId!==n.selectedId&&En(n.selectedId),i){var l=n.sessions.find(function(c){return c.id===n.selectedId});Xa(l)}}function Yd(){var e=n.sessions.find(function(r){return r.id===n.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">'+J("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">'+J("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">'+J("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">'+J("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 Gd(){return n.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><button id="login-button" type="submit" class="btn btn-primary btn-block">\u8FDB\u5165\u63A7\u5236\u53F0</button>'+(Na()?'<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 Qd(){var e="<\/script>",t=n.sessions.find(function(b){return b.id===n.selectedId}),r=t?gi(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=n.selectedId&&n.drafts[n.selectedId]||"",u=n.sessionsDrawerOpen?" open":"",s=vu()?" open":"",o=pv(),l=Nt(o,n.chatMode),c=_e(),d=!!n.sidebarPinned&&!!n.sidebarCollapsed,f=d||!c&&(!!n.sidebarPinned||!!n.sessionsDrawerOpen),v=d?" sidebar-collapsed":"",m=d?" collapsed":"";return'<div class="app-container"><div id="sessions-drawer-backdrop" class="drawer-backdrop'+s+'"></div><div class="main-layout'+(n.sessionsDrawerOpen?" sidebar-open":"")+(f?" sidebar-pinned":"")+v+'"><aside id="sessions-drawer" class="sidebar'+u+(f?" pinned":"")+m+'"><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(n.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'+(n.sidebarPinned?" pinned":"")+'" type="button" title="'+(n.sidebarPinned?"\u5DF2\u56FA\u5B9A\u5E38\u9A7B\uFF08\u70B9\u51FB\u89E3\u9664\u9501\u5B9A\uFF09":"\u56FA\u5B9A\u4FA7\u680F\u5E38\u9A7B")+'" aria-label="'+(n.sidebarPinned?"\u89E3\u9664\u56FA\u5B9A\u5E38\u9A7B":"\u56FA\u5B9A\u4FA7\u680F\u5E38\u9A7B")+'" aria-pressed="'+(n.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'+(d?" collapsed":"")+'" type="button" title="'+(d?"\u5C55\u5F00\u4E3A\u5168\u5C3A\u5BF8":"\u6536\u8D77\u4E3A\u7A84\u6761")+'" aria-label="'+(d?"\u5C55\u5F00\u4E3A\u5168\u5C3A\u5BF8":"\u6536\u8D77\u4E3A\u7A84\u6761")+'">'+(d?'<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">'+Wi()+'</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'+(n.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><button id="pwa-install-button" class="btn btn-ghost btn-sm hidden" title="\u5B89\u88C5\u5E94\u7528"><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="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg><span>\u5B89\u88C5</span></button>'+(cv()?'<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>':"")+(Na()?'<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'+(n.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.command||"")+'">'+p(gi(t.command))+'</span><span class="session-status-pill '+Nu(t)+'" title="'+p(or(t))+'"><span class="session-status-dot"></span><span class="session-status-text">'+p(or(t))+'</span></span><span class="current-task hidden" id="current-task"></span>'+(t.cwd?'<span class="topbar-cwd" id="topbar-cwd" title="'+p(t.cwd)+'" role="button" tabindex="0">'+p(t.cwd)+"</span>":""):'<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'+(n.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">'+Lu()+"</span>"+(t?rc(t):"")+'</div></div><div id="file-panel-backdrop" class="file-panel-backdrop'+(n.filePanelOpen?" open":"")+'"></div><div id="file-side-panel" class="file-side-panel'+(n.filePanelOpen?" open":"")+'"><div class="file-side-panel-header"><div class="file-side-panel-title-group"><span class="file-side-panel-icon">'+Le("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">'+Le("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">'+Le("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">'+Le("arrow-up",{size:15})+'</button><input type="text" class="file-explorer-path" id="file-explorer-cwd" value="'+p(t&&t.cwd?t.cwd:en())+'" title="'+p(t&&t.cwd?t.cwd:en())+'" 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">'+Le("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">'+Le("x",{size:13})+'</button></div><div class="file-explorer" id="file-explorer">'+Rl(t&&t.cwd?t.cwd:en())+'</div></div></div><div id="output" class="terminal-container'+(n.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(n.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'+(n.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"><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 id="queue-bar-host" class="queue-bar-host" hidden></div></div><div id="blank-chat" class="blank-chat'+(n.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">'+J("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">'+J("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">'+J("folder",{size:13,strokeWidth:1.8})+'</span><span class="blank-chat-cwd-path" id="blank-chat-cwd-path">'+p(Qe())+'</span><span class="blank-chat-cwd-arrow" id="blank-chat-cwd-arrow">'+J("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'+(n.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-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><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 class="input-composer'+(a?" has-text":"")+'"><div class="composer-status-row" id="composer-status-row">'+Ev(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>'+Yd()+'</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">'+J("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-input-wrap"><textarea id="input-box" class="input-textarea" placeholder="'+Mo(t,n.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">'+J("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">'+J("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'+(n.terminalInteractive?" is-on":"")+'" id="terminal-interactive-toggle-top" type="button" role="menuitemcheckbox" aria-checked="'+(n.terminalInteractive?"true":"false")+'">'+J("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">'+(n.terminalInteractive?"\u5F00":"\u5173")+'</span></button><div class="plus-popover-sep" aria-hidden="true"></div><div class="plus-popover-trio-wrap">'+Ra(t,{kind:"popover"})+'</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">'+J("trash",{size:13,strokeWidth:1.7})+'<span>\u4E34\u65F6\u76EE\u5F55</span></button><button class="folder-picker-quick-btn btn-with-icon" data-path="/">'+J("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">'+J("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>'+Dc()+mc()+gc()+Pu()}function We(e,t){if(e){e.textContent=t,e.classList.remove("hidden");for(var r=e.previousElementSibling;r;){if(r.tagName==="INPUT"){r.setAttribute("data-error","true");break}r=r.previousElementSibling}}}function ti(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 k(e,t){var r=document.createElement("div");r.className="toast-message"+(t==="error"?" toast-error":""),t!=="error"&&(r.style.background="var(--accent)",r.style.color="white"),r.textContent=e,document.body.appendChild(r),setTimeout(function(){r.remove()},t==="error"?4e3:2200)}var gr=[];function $d(e){switch(e){case"warning":return"!";case"danger":return"\u26A0\uFE0E";case"success":return"\u2713";case"question":return"?";default:return"i"}}function nn(e){e=e||{};var t=e.dismissable!==!1,r=e.type||"info",i=e.icon||$d(r),a=!!e.input;return new Promise(function(u){var s=document.createElement("div");s.className="wand-dialog-backdrop",s.setAttribute("role","presentation");var o=document.createElement("div");o.className="wand-dialog",o.setAttribute("role",a?"dialog":"alertdialog"),o.setAttribute("aria-modal","true"),e.title&&o.setAttribute("aria-label",e.title);var l=document.createElement("div");l.className="wand-dialog-header";var c=document.createElement("div");c.className="wand-dialog-icon "+r,c.textContent=i,l.appendChild(c);var d=document.createElement("div");if(d.className="wand-dialog-textwrap",e.title){var f=document.createElement("div");f.className="wand-dialog-title",f.textContent=e.title,d.appendChild(f)}if(e.message){var v=document.createElement("div");v.className="wand-dialog-message",v.textContent=e.message,d.appendChild(v)}l.appendChild(d),o.appendChild(l);var m=null;if(a){var b=document.createElement("div");b.className="wand-dialog-body",m=document.createElement("input"),m.type="text",m.className="wand-dialog-input",e.inputPlaceholder&&(m.placeholder=e.inputPlaceholder),e.inputValue!=null&&(m.value=String(e.inputValue)),b.appendChild(m),o.appendChild(b)}var g=e.buttons&&e.buttons.length?e.buttons:[{label:"\u597D",value:!0,kind:"primary",autofocus:!0}],y=document.createElement("div");y.className="wand-dialog-footer";var w=null,F=null;function E(x){if(!s.classList.contains("closing")){s.classList.add("closing"),document.removeEventListener("keydown",A,!0);var S=gr.indexOf(E);S>=0&&gr.splice(S,1),setTimeout(function(){s.parentNode&&s.parentNode.removeChild(s),u(x)},160)}}g.forEach(function(x){var S=document.createElement("button"),P=x.kind||"secondary";S.className="btn btn-"+P,S.type="button",S.textContent=x.label,S.addEventListener("click",function(){a&&x.kind==="primary"?E(m?m.value:""):E(x.value)}),w||(w=S),x.autofocus&&(F=S),y.appendChild(S)}),o.appendChild(y),s.appendChild(o),s.addEventListener("click",function(x){x.target===s&&t&&E(e.cancelValue!==void 0?e.cancelValue:a?null:!1)});function A(x){if(gr[gr.length-1]===E){if(x.key==="Escape"&&t){x.preventDefault(),x.stopPropagation(),E(e.cancelValue!==void 0?e.cancelValue:a?null:!1);return}if(x.key==="Enter"){for(var S=null,P=0;P<g.length;P++)if(g[P].kind==="primary"){S=g[P];break}S||(S=g[g.length-1]),S&&(x.preventDefault(),x.stopPropagation(),a&&S.kind==="primary"?E(m?m.value:""):E(S.value))}}}document.addEventListener("keydown",A,!0),gr.push(E),document.body.appendChild(s),requestAnimationFrame(function(){if(a&&m){m.focus();try{m.select()}catch{}}else F?F.focus():w&&w.focus()})})}function Xd(e,t){return t=t||{},nn({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 Zd(e,t){t=t||{};var r=!!t.danger||t.type==="danger";return nn({title:t.title||(r?"\u786E\u8BA4\u64CD\u4F5C":"\u8BF7\u786E\u8BA4"),message:typeof e=="string"?e:String(e??""),type:t.type||(r?"danger":"question"),cancelValue:!1,buttons:[{label:t.cancelLabel||"\u53D6\u6D88",value:!1,kind:"secondary"},{label:t.okLabel||(r?"\u5220\u9664":"\u786E\u5B9A"),value:!0,kind:r?"danger":"primary",autofocus:!r}]}).then(function(i){return i===!0})}function ef(e,t,r){return r=r||{},nn({title:r.title||"\u8BF7\u8F93\u5165",message:typeof e=="string"?e:String(e??""),type:r.type||"question",input:!0,inputValue:t==null?"":String(t),inputPlaceholder:r.placeholder||"",cancelValue:null,buttons:[{label:r.cancelLabel||"\u53D6\u6D88",value:null,kind:"secondary"},{label:r.okLabel||"\u786E\u5B9A",value:void 0,kind:"primary"}]})}window.wandAlert=Xd,window.wandConfirm=Zd,window.wandPrompt=ef,window.openWandDialog=nn;var Qt=[],ws=0,tf=6,nf=16;function aa(e){if((e.actionLabel||e.playSound)&&As(),!n.notifBubble)return{dismiss:function(){}};var t=++ws,r=e.type||"info",i=e.icon||(r==="warning"?"!":r==="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 s='<div class="notification-bubble-header"><span class="notification-bubble-icon '+r+'">'+i+'</span><span class="notification-bubble-title">'+p(e.title)+'</span><button class="notification-bubble-close" title="\u5173\u95ED">\xD7</button></div>',o=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=s+o+l,document.body.appendChild(u);var c={id:t,el:u};Qt.push(c),ua();var d=u.querySelector(".notification-bubble-close");if(d&&(d.onclick=function(){hr(t)}),e.actionLabel&&e.action){var f=u.querySelector(".notification-bubble-actions button");f&&(f.onclick=function(){e.action(),hr(t)})}var v=null;return a>0&&(v=setTimeout(function(){hr(t)},a)),{dismiss:function(){hr(t)}}}function hr(e){for(var t=-1,r=0;r<Qt.length;r++)if(Qt[r].id===e){t=r;break}if(t!==-1){var i=Qt[t];i.el.classList.add("slide-out"),Qt.splice(t,1),ua(),setTimeout(function(){i.el.parentNode&&i.el.parentNode.removeChild(i.el)},300)}}function ua(){for(var e=nf,t=0;t<Qt.length;t++)Qt[t].el.style.top=e+"px",e+=Qt[t].el.offsetHeight+tf}try{Ss=navigator.userAgent.match(/WandPlatform\/macOS/),la=window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.wandNative||null,Ss&&la&&typeof window.WandNative>"u"&&(window.WandNative={downloadUpdate:function(e,t,r){try{la.postMessage({type:"downloadUpdate",url:String(e||""),fileName:String(t||"wand-update.dmg"),source:String(r||"local")})}catch{}}})}catch{}var Ne=typeof WandNative<"u"&&typeof WandNative.sendNotification=="function",yr=navigator.userAgent.match(/WandApp\/([^\s]+)/),Cs=/WandPlatform\/macOS/.test(navigator.userAgent),rf=!!yr&&!Cs,Dn=yr&&rf?yr[1]:null,rn=yr&&Cs?yr[1]:null;function Un(e){if(!(!Ne||typeof WandNative.vibrate!="function"))try{WandNative.vibrate(e||"light")}catch{}}function sa(){if(Ne){var e=n.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 ni(){if(Ne&&typeof WandNative.getPermission=="function")try{return WandNative.getPermission()}catch{}return null}function af(){if(Ne){var e=ni();if(e==="default"||e==="denied")try{WandNative.requestPermission()}catch{}return}typeof Notification<"u"&&Notification.permission==="default"&&Notification.requestPermission()}function uf(e){var t=e||{};return!(t.onlyWhenHidden&&!document.hidden||t.skipWhenSelectedSessionId&&t.skipWhenSelectedSessionId===n.selectedId&&!document.hidden)}function sf(e,t){if(!e||!t||t<=0)return!1;var r=n.notificationHistory[e]||0,i=Date.now();return i-r<t?!0:(n.notificationHistory[e]=i,!1)}function ri(e,t,r){var i=r||{},a=i.tag||"";if(uf(i)&&!sf(a,i.minIntervalMs||0)){if(Ne){var u=ni();if(u!=="granted")return;try{var s=a;i.kind&&(s=i.kind+(a?":"+a:"")),WandNative.sendNotification(e||"Wand",t||"",s||"")}catch{}return}if(!(typeof Notification>"u"||Notification.permission!=="granted")&&document.hidden)try{var o=new Notification(e,{body:t||"",icon:i.icon||"/favicon.ico",tag:a||void 0});o.onclick=function(){window.focus(),o.close(),i.onClick&&i.onClick()},setTimeout(function(){o.close()},1e4)}catch{}}}function of(e,t){if(!(!t||!t.title)){var r=n.sessions.find(function(a){return a.id===e});if(r){var i=r.summary||r.command||e;ri("\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!==n.selectedId&&jt(e)}})}}}function Bs(e,t){vf(e||"-",t||"-"),ri("Wand \u53D1\u73B0\u65B0\u7248\u672C","\u5F53\u524D "+(e||"-")+" \u2192 \u6700\u65B0 "+(t||"-"),{kind:"update",tag:"wand-update",minIntervalMs:3e5})}function lf(e,t){ri("\u9700\u8981\u4F60\u7684\u6388\u6743",t,{kind:"permission",tag:"wand-perm-"+e,minIntervalMs:6e4,onlyWhenHidden:!0,skipWhenSelectedSessionId:e,onClick:function(){e!==n.selectedId&&jt(e)}})}function cf(e,t,r){ri(t,r,{kind:"task-ended",tag:"wand-ended-"+e,minIntervalMs:1e4,onClick:function(){e!==n.selectedId&&jt(e)}})}var kn={},df=30;function Ds(e){if(!e)return"";var t=String(e).replace(/^#+\s+/gm,"").replace(/\*\*/g,"").replace(/`/g,"").trim(),r=t.split(`
22
+ `)[0].trim();return r.length>100&&(r=r.slice(0,100)+"\u2026"),r}function oa(e){!Ne||typeof WandNative.updateSessionProgress!="function"||e&&(kn[e]&&clearTimeout(kn[e]),kn[e]=setTimeout(function(){delete kn[e],ff(e)},df))}function ff(e){var t=n.sessions.find(function(x){return x.id===e});if(t){var r=t.summary||t.command||e,i=t.status||"running";if(i==="idle"||i==="archived"||i==="exited"){ks(e);return}for(var a=null,u="",s="",o=[],l=t.messages||[],c=l.length-1;c>=0;c--){var d=l[c];if(!(!d.content||!Array.isArray(d.content))){if(!s&&d.role==="assistant")for(var f=d.content.length-1;f>=0;f--){var v=d.content[f];if(v&&v.type==="text"&&v.text&&v.text.trim()){s=Ds(v.text);break}}if(d.role==="user"){var m=d.content.some(function(x){return x&&x.__queued});if(!m)for(var b=0;b<d.content.length;b++){var g=d.content[b];if(g&&g.type==="text"&&g.text&&g.text.trim()){var y=Ds(g.text);u||(u=y),o.length<4&&o.push(y);break}}}if(!a)for(var w=d.content.length-1;w>=0;w--){var F=d.content[w];if(F&&F.type==="tool_use"&&F.name==="TodoWrite"&&F.input&&F.input.todos){a=F.input.todos;break}}if(a&&o.length>=4&&s)break}}o.reverse();var E="";e===n.selectedId&&n.currentTask&&n.currentTask.title&&(E=n.currentTask.title);var A={sessionLabel:r,status:i,currentTask:E,latestUserText:u,latestAssistantText:s,todos:a||[],recentUserTexts:o};try{WandNative.updateSessionProgress(e,JSON.stringify(A))}catch{}}}function ks(e){if(!(!Ne||typeof WandNative.clearSessionProgress!="function")){kn[e]&&(clearTimeout(kn[e]),delete kn[e]);try{WandNative.clearSessionProgress(e)}catch{}}}window.handleNativeBack=function(){var e=document.getElementById("settings-modal");if(e&&!e.classList.contains("hidden"))return $n(),!0;var t=document.getElementById("session-modal");if(t&&!t.classList.contains("hidden"))return pn(),!0;var r=document.getElementById("worktree-merge-modal");return r&&!r.classList.contains("hidden")?(Qn(),!0):n.filePanelOpen&&_e()?(Pi(!1),!0):n.sessionsDrawerOpen&&_e()?(Sr(),!0):_e()&&n.selectedId?(n.selectedId=null,be(),n.sessionsDrawerOpen=!0,xe("wand-sidebar-open",!0),Gt(),!0):!1};function As(){n.notifSound&&ii()}function pf(){return ii()}function ii(){try{let a=function(u,s,o){var l=r.createOscillator(),c=r.createGain();l.type="sine",l.frequency.value=u,c.gain.setValueAtTime(0,r.currentTime+s),c.gain.linearRampToValueAtTime(.5*i,r.currentTime+s+.04),c.gain.exponentialRampToValueAtTime(.001,r.currentTime+s+o),l.connect(c),c.connect(r.destination),l.start(r.currentTime+s),l.stop(r.currentTime+s+o)};var e=a,t=window.AudioContext||window.webkitAudioContext;if(!t)return!1;var r=new t;r.state==="suspended"&&r.resume();var i=(n.notifVolume||0)/100;return a(523,0,.25),a(659,.12,.3),setTimeout(function(){r.close()},600),!0}catch{return!1}}function vf(e,t){if(n._updateBubbleShown)return;n._updateBubbleShown=!0,As();var r=++ws,i=document.createElement("div");i.className="notification-bubble update-card",i.setAttribute("data-nid",String(r)),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:r,el:i};Qt.push(a),ua();var u=i.querySelector(".update-card-close");u&&(u.onclick=function(){hr(r),n._updateBubbleShown=!1});var s=i.querySelector("#update-bubble-action"),o=i.querySelector(".update-card-action-label"),l=i.querySelector("#update-card-subtitle"),c=i.querySelector("#update-card-status"),d=i.querySelector("#update-card-progress");function f(b,g){if(c){if(c.textContent=b||"",c.classList.remove("hidden","error","success"),!b){c.classList.add("hidden");return}g&&c.classList.add(g)}}function v(b){l&&(l.textContent=b||"")}function m(b){d&&d.classList.toggle("active",!!b)}s&&(s.onclick=function(){s.disabled=!0,i.classList.add("is-busy"),o&&(o.textContent="\u66F4\u65B0\u4E2D\u2026"),v("\u6B63\u5728\u4E0B\u8F7D\u5E76\u5B89\u88C5\u65B0\u7248\u672C\u2026"),m(!0),f(""),fetch("/api/update",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin"}).then(function(b){return b.json()}).then(function(b){if(b.error){m(!1),i.classList.remove("is-busy"),v("\u66F4\u65B0\u672A\u5B8C\u6210"),f(b.error,"error"),s.disabled=!1,o&&(o.textContent="\u91CD\u8BD5");return}if(i.classList.add("is-success"),v((b.message||"\u66F4\u65B0\u5B8C\u6210")+"\uFF0C\u6B63\u5728\u91CD\u542F\u670D\u52A1\u2026"),f(""),o&&(o.textContent="\u6B63\u5728\u91CD\u542F\u2026"),b.detachedUpdate){an();return}if(b.restartRequired===!1){m(!1),i.classList.remove("is-busy"),s.disabled=!1,o&&(o.textContent="\u5DF2\u5B8C\u6210");return}mf(s,o,l,c,d)}).catch(function(){m(!1),i.classList.remove("is-busy"),v("\u66F4\u65B0\u672A\u5B8C\u6210"),f("\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u540E\u91CD\u8BD5","error"),s.disabled=!1,o&&(o.textContent="\u91CD\u8BD5")})})}function mf(e,t,r,i,a){fetch("/api/restart",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin"}).then(function(u){return u.json()}).then(function(){an()}).catch(function(){an()})}function xs(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(r){return r.json()}).then(function(){an()}).catch(function(){an()})}function an(){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,r=180,i=setInterval(function(){if(t++,fetch("/api/config",{credentials:"same-origin"}).then(function(u){u.ok&&(clearInterval(i),location.reload())}).catch(function(){}),t>=r){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 gf(e,t){if(!document.getElementById("restart-overlay")){var r=document.createElement("div");r.id="restart-overlay",r.className="restart-overlay",r.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(r)}}var Ss,la,he={recording:!1,canceling:!1,transcript:"",startY:0,mockTimer:null},hf=60,Is=["\u5E2E\u6211\u628A","\u5E2E\u6211\u628A\u9996\u9875\u7684","\u5E2E\u6211\u628A\u9996\u9875\u7684\u767B\u5F55\u6309\u94AE","\u5E2E\u6211\u628A\u9996\u9875\u7684\u767B\u5F55\u6309\u94AE\u6539\u6210\u5706\u89D2\uFF0C","\u5E2E\u6211\u628A\u9996\u9875\u7684\u767B\u5F55\u6309\u94AE\u6539\u6210\u5706\u89D2\uFF0C\u5E76\u52A0\u4E00\u70B9\u9634\u5F71"];function yf(){var e=0;he.mockTimer=setInterval(function(){e>=Is.length||(Ts(Is[e]),e++)},420)}function ca(){he.mockTimer&&(clearInterval(he.mockTimer),he.mockTimer=null)}function Ts(e){he.transcript=e||"";var t=document.getElementById("voice-transcript-text");t&&(t.textContent=he.transcript);var r=document.getElementById("voice-transcript-bubble");r&&r.classList.toggle("has-text",!!he.transcript)}function bf(e){if(e){e.preventDefault(),he.startY=typeof e.clientY=="number"?e.clientY:0;try{e.pointerId!==void 0&&e.target&&e.target.setPointerCapture&&e.target.setPointerCapture(e.pointerId)}catch{}}he.recording=!0,he.canceling=!1,he.transcript="";var t=document.getElementById("voice-record-btn");if(t){t.classList.add("is-recording");var r=t.querySelector(".voice-record-label");r&&(r.textContent="\u677E\u5F00 \u53D1\u9001")}var i=document.getElementById("voice-transcript-bubble");i&&i.classList.remove("hidden","is-canceling","has-text"),Ts("");var a=document.getElementById("voice-transcript-status");a&&(a.textContent="\u6B63\u5728\u8046\u542C\u2026\u4E0A\u6ED1\u53D6\u6D88"),yf()}function Ef(e){if(!(!he.recording||!e)){var t=he.startY-(typeof e.clientY=="number"?e.clientY:he.startY),r=t>hf;if(r!==he.canceling){he.canceling=r;var i=document.getElementById("voice-transcript-bubble");i&&i.classList.toggle("is-canceling",r);var a=document.getElementById("voice-record-btn"),u=a&&a.querySelector(".voice-record-label");u&&(u.textContent=r?"\u677E\u5F00 \u53D6\u6D88":"\u677E\u5F00 \u53D1\u9001");var s=document.getElementById("voice-transcript-status");s&&(s.textContent=r?"\u677E\u5F00\u624B\u6307 \u53D6\u6D88":"\u6B63\u5728\u8046\u542C\u2026\u4E0A\u6ED1\u53D6\u6D88")}}}function Ls(e){if(he.recording){e&&e.preventDefault(),he.recording=!1,ca();var t=!he.canceling&&!!he.transcript.trim(),r=he.transcript;da(),t&&(Ff(r),fa(!1))}}function da(){he.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 r=document.getElementById("voice-transcript-bubble");r&&r.classList.add("hidden")}function Ff(e){var t=(e||"").trim();if(t){var r=document.getElementById("input-box");if(r){var i=r.value||"",a=i?i.replace(/\s+$/,"")+" "+t:t;r.value=a,nt(a,!0),Ot(r);try{r.setSelectionRange(a.length,a.length)}catch{}}}}function fa(e){var t=document.querySelector(".input-composer");if(t){var r=typeof e=="boolean"?e:!t.classList.contains("voice-mode");if(t.classList.toggle("voice-mode",r),!r){he.recording=!1,ca(),da();var i=document.getElementById("input-box");if(i&&!n.terminalInteractive)try{i.focus({preventScroll:!0})}catch{}}}}function Ot(e){if(e){var t=36,r=120,i=Dr();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,wi(e);return}var a=e.style.overflowY;e.style.overflowY="hidden",e.style.height=t+"px";var u=e.scrollHeight,s=Math.max(t,Math.min(u,r)),o=u>r;e.style.height=s+"px",e.style.minHeight=t+"px",e.style.overflowY=o||i?"auto":"hidden",o?Da(e):e.scrollTop=0,wi(e)}}function wf(){if(!n.selectedId)return!1;var e=n.sessions.find(function(t){return t.id===n.selectedId});return se(e)?!!(e.structuredState&&e.structuredState.inFlight):!!e&&e.status==="running"}var br=!1;function pa(){return n.sessions.some(function(e){return se(e)?!!(e.structuredState&&e.structuredState.inFlight)&&!e.archived:e.status==="running"&&!e.archived})}function Ms(e){if(n.crossSessionQueue.length>=10){k("\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 t="csq-"+Date.now()+"-"+Math.random().toString(36).slice(2,8);n.crossSessionQueue.push({id:t,text:e,cwd:Qe(),mode:n.chatMode||"managed",tool:vt(),queuedAt:Date.now()}),Ut(),Bt()}function Cf(e){br||(br=!0,fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({command:e.tool,cwd:e.cwd,mode:e.mode,initialInput:e.text}))}).then(function(t){return t.json()}).then(function(t){return br=!1,t.error?(k(t.error,"error"),n.crossSessionQueue.unshift(e),Ut(),Bt(),null):on(t)}).catch(function(t){br=!1,k(t&&t.message||"\u65E0\u6CD5\u542F\u52A8\u6392\u961F\u4F1A\u8BDD\u3002","error"),n.crossSessionQueue.unshift(e),Ut(),Bt()}))}function Bf(e){var t=n.crossSessionQueue.findIndex(function(i){return i.id===e});if(!(t<0)){var r=n.crossSessionQueue.splice(t,1)[0];Ut(),Bt(),fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({command:r.tool,cwd:r.cwd,mode:r.mode,initialInput:r.text}))}).then(function(i){return i.json()}).then(function(i){return i.error?(k(i.error,"error"),n.crossSessionQueue.splice(t,0,r),Ut(),Bt(),null):on(i)}).catch(function(i){k(i&&i.message||"\u65E0\u6CD5\u542F\u52A8\u6392\u961F\u4F1A\u8BDD\u3002","error"),n.crossSessionQueue.splice(t,0,r),Ut(),Bt()})}}function Df(e){var t=n.crossSessionQueue.findIndex(function(r){return r.id===e});t<0||(n.crossSessionQueue.splice(t,1),Ut(),Bt(),n.crossSessionQueue.length===0&&k("\u6392\u961F\u5DF2\u6E05\u7A7A\u3002","info"))}function ai(){if(n.crossSessionQueue.length!==0&&!pa()&&!br){var e=n.crossSessionQueue.shift();Bt(),Cf(e)}}function qs(e){var t=Math.floor((Date.now()-e)/1e3);if(t<60)return t+"s";var r=Math.floor(t/60);return r<60?r+"m":Math.floor(r/60)+"h"}function Bt(){var e=document.querySelector(".cross-session-queue"),t=document.querySelector(".input-panel"),r=document.querySelector(".structured-status-bar"),i=document.querySelector(".input-composer"),a=document.getElementById("blank-chat");if(n.crossSessionQueue.length===0){e&&e.remove(),Ut();return}var u=t&&!t.classList.contains("hidden"),s=u?t:a,o=u?r||i:null;if(s){e&&e.parentNode!==s&&(e.remove(),e=null),e?u&&o&&e.nextSibling!==o&&s.insertBefore(e,o):(e=document.createElement("div"),e.className="cross-session-queue",o?s.insertBefore(e,o):s.appendChild(e));var l=n.crossSessionQueue.length,c=n.crossSessionQueue.map(function(f,v){var m=f.text.length>60?f.text.slice(0,60)+"\u2026":f.text,b=qs(f.queuedAt);return'<div class="queue-item" data-queue-id="'+p(f.id)+'"><span class="queue-item-dot"></span><span class="queue-item-text" title="'+p(f.text)+'">'+p(m)+'</span><span class="queue-item-age">'+b+'</span><button class="queue-item-send-now" data-queue-id="'+p(f.id)+'" title="\u7ACB\u5373\u53D1\u9001" type="button">\u53D1\u9001</button><button class="queue-item-cancel" data-queue-id="'+p(f.id)+'" title="\u53D6\u6D88" type="button">\xD7</button></div>'}).join(""),d=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=d+c}}setInterval(function(){if(n.crossSessionQueue.length>0){var e=document.querySelectorAll(".queue-item-age");n.crossSessionQueue.forEach(function(t,r){e[r]&&(e[r].textContent=qs(t.queuedAt))}),ai()}},5e3),document.addEventListener("click",function(e){var t=e.target;if(t.closest("#queue-clear-all")){e.preventDefault(),n.crossSessionQueue=[],Ut(),Bt(),k("\u6392\u961F\u5DF2\u6E05\u7A7A\u3002","info");return}var r=t.closest(".queue-item-send-now");if(r){e.preventDefault(),Bf(r.dataset.queueId);return}var i=t.closest(".queue-item-cancel");if(i){e.preventDefault(),Df(i.dataset.queueId);return}});function Os(){var e=document.getElementById("welcome-input"),t=e?e.value.trim():"";if(t){if(pa()){e.value="",Ms(t),k("\u5DF2\u6392\u961F\uFF0C\u5C06\u5728\u5F53\u524D\u4F1A\u8BDD\u5B8C\u6210\u540E\u81EA\u52A8\u53D1\u9001\u3002","info");return}var r=document.getElementById("todo-progress");r&&r.classList.add("hidden"),e.value="",e.placeholder="\u6B63\u5728\u542F\u52A8\u2026",e.disabled=!0;var i=n.chatMode||"managed",a=Qe(),u=vt();fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({command:u,provider:u,cwd:a,mode:i,initialInput:t}))}).then(function(s){return s.json()}).then(function(s){if(s.error){k(s.error,"error"),e.placeholder="\u8F93\u5165\u6D88\u606F",e.disabled=!1;return}n.selectedId=s.id,be(),n.drafts[s.id]="",Ct(),Z(s),fe(),Er(s.id),xn(s.id),fn(s.id).then(function(){e.placeholder="\u8F93\u5165\u6D88\u606F",e.disabled=!1,Ht(!0)})}).catch(function(s){k(s&&s.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 kf(e){e=e||{};var t=document.getElementById("welcome-input"),r=document.getElementById("input-box"),i=t&&t.value.trim()?t.value.trim():r?r.value.trim():"";if(n.selectedId){i&&Ps(e);return}if(i&&pa()){r&&(r.value=""),t&&(t.value=""),wi(r),Ms(i),k("\u5DF2\u6392\u961F\uFF0C\u5C06\u5728\u5F53\u524D\u4F1A\u8BDD\u5B8C\u6210\u540E\u81EA\u52A8\u53D1\u9001\u3002","info");return}var a=n.chatMode||"managed",u=Qe(),s=vt();fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({command:s,provider:s,cwd:u,mode:a,initialInput:i||void 0}))}).then(function(o){return o.json()}).then(function(o){return o.error?(k(o.error,"error"),null):(n.selectedId=o.id,be(),n.drafts[o.id]="",Ct(),r&&(r.value=""),t&&(t.value=""),Z(o),fe(),Er(o.id),xn(o.id),fn(o.id))}).catch(function(o){k(o&&o.message||(s==="codex"?"\u65E0\u6CD5\u542F\u52A8 Codex \u4F1A\u8BDD\u3002":"\u65E0\u6CD5\u542F\u52A8 Claude \u4F1A\u8BDD\u3002"),"error")})}function Er(e){var t=n.sessions.find(function(v){return v.id===e}),r=document.getElementById("blank-chat"),i=document.getElementById("output"),a=document.getElementById("chat-output"),u=document.getElementById("stop-button"),s=document.getElementById("terminal-title"),o=document.getElementById("terminal-info"),l=document.querySelector(".session-summary-value"),c=se(t);r&&r.classList.add("hidden"),i&&i.classList.toggle("hidden",c),a&&a.classList.remove("hidden"),c?n.currentView="chat":n.currentView="terminal";var d=t?gi(t.command):"Wand",f=t?or(t):"\u5F00\u59CB\u5BF9\u8BDD";s&&(s.textContent=d),o&&(o.textContent=f),l&&(l.textContent=d),c||n.terminal||Vn(),bi(),Ht(!0),c||et("view-switch",{forceReplay:!0})}function Ps(e){e=e||{};var t=!!e.interrupt;if(n.terminalInteractive)return k("\u7EC8\u7AEF\u4EA4\u4E92\u6A21\u5F0F\u5F00\u542F\u65F6\uFF0C\u8BF7\u76F4\u63A5\u5728\u7EC8\u7AEF\u4E2D\u8F93\u5165\u3002","info"),Promise.resolve();var r=document.getElementById("input-box"),i=r?r.value:"",a=Pt(),u=n.pendingAttachments.length>0;if(i||u){var s=u&&n.selectedId?ym(n.selectedId).catch(function(o){k("\u9644\u4EF6\u4E0A\u4F20\u5931\u8D25: "+(o&&o.message||o),"error");var l=o instanceof Error?o:new Error(String(o));throw l.__wandToasted=!0,l}):Promise.resolve([]);return s.then(function(o){var l=bm(o),c=l+(i||(o.length?"\u8BF7\u67E5\u770B\u9644\u4EF6\u3002":""));o.length&&hm();var d=document.getElementById("todo-progress");if(d&&d.classList.add("hidden"),se(a))return Af(c,r,a,{interrupt:t});var f=Rf(a,c),v=!n.wsConnected;return v?(Uf(f),r&&(r.value="",Ot(r)),nt(""),Promise.resolve()):jf(a).then(function(m){if(!m)return null;var b=n.currentView;if(m&&m.provider==="codex"&&n.selectedId!==m.id)throw new Error("Codex session changed before input send.");return Wf(f,"enter_text",30,b).then(function(){r&&r.value===i&&(r.value="",Ot(r)),nt("")})}).catch(function(m){throw k(Vs(m),"error"),m&&(m.__wandToasted=!0),m})}).catch(function(o){throw o&&o.__wandToasted||k(Vs(o),"error"),o})}return Promise.resolve()}var Hs={},_s=350;function Af(e,t,r,i){i=i||{};var a=!!i.interrupt;if(!n.selectedId||!e)return Promise.resolve();if(!r)return k("\u4F1A\u8BDD\u4E0D\u5B58\u5728\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u6216\u65B0\u5EFA\u4F1A\u8BDD\u3002","error"),Promise.resolve();var u=Date.now(),s=Hs[r.id]||0;if(u-s<_s)return console.log("[wand] postStructuredInput: duplicate submit (within "+_s+"ms) ignored for session",r.id),Promise.resolve();Hs[r.id]=u;var o=!!(r.structuredState&&r.structuredState.inFlight&&r.status==="running"),l=o&&a,c=o&&!a,d=ar(Array.isArray(r.messages)?r.messages.slice():[]),f;if(c){var v=Array.isArray(r.queuedMessages)?r.queuedMessages.slice():[];v.push(e),f={id:r.id,queuedMessages:v},Z(f);var m=n.sessions.find(function(F){return F.id===r.id})||r;n.currentMessages=ze(m,tt(m,m.output,!1)),Kn("\u5DF2\u52A0\u5165\u6392\u961F\u2026"),$e(!0),un(),k(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 b={role:"user",content:[{type:"text",text:e}]};d.push(b);var g=Object.assign({},r.structuredState||{},{inFlight:!0});Z({id:r.id,status:"running",messages:d,structuredState:g}),n.currentMessages=ze(Object.assign({},r,{status:"running",messages:d,structuredState:g}),d),Kn(l?"\u5DF2\u4E2D\u65AD\uFF0C\u6B63\u5728\u5904\u7406\u65B0\u6D88\u606F\u2026":"\u601D\u8003\u4E2D\u2026"),$e(!0),l&&k("\u5DF2\u4E2D\u65AD\u4E0A\u4E00\u6761\u56DE\u590D\uFF0C\u6B63\u5728\u5904\u7406\u65B0\u6D88\u606F\u2026","info")}t&&(t.value="",Ot(t)),nt("");var y=n.queueEpoch,w=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Date.now().toString(36)+"-"+Math.random().toString(36).slice(2,10);return fetch("/api/structured-sessions/"+r.id+"/messages",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({input:e,interrupt:l||void 0,idempotencyKey:w})}).then(function(F){return F.ok?F.json():F.json().catch(function(){return{error:"\u8BF7\u6C42\u5931\u8D25"}}).then(function(E){var A=new Error(E&&E.error||"\u65E0\u6CD5\u53D1\u9001\u7ED3\u6784\u5316\u6D88\u606F\u3002");throw A.errorCode=E&&E.errorCode,A.httpStatus=F.status,A})}).then(function(F){if(F&&F.error)throw new Error(F.error);if(F&&F.id&&(n.queueEpoch>y&&F.queuedMessages&&delete F.queuedMessages,Z(F),F.id===n.selectedId)){var E=n.sessions.find(function(A){return A.id===F.id})||F;n.currentMessages=ze(E,tt(E,F.output,!1)),$e(!0),un()}}).catch(function(F){if(F&&F.errorCode==="duplicate_idempotency_key"){k(F.message||"\u68C0\u6D4B\u5230\u91CD\u590D\u53D1\u9001\uFF0C\u5DF2\u62E6\u622A\u3002","warning"),Kn("Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C");return}if(c){var E=Array.isArray(r.queuedMessages)?r.queuedMessages.slice():[];if(Z({id:r.id,queuedMessages:E}),r.id===n.selectedId){var A=n.sessions.find(function(z){return z.id===r.id})||r;n.currentMessages=ze(A,tt(A,A.output,!1)),$e(!0),un()}}else{var x=d.slice(0,-1);Z({id:r.id,status:r.status,messages:x,structuredState:Object.assign({},r.structuredState||{},{inFlight:!1})}),r.id===n.selectedId&&(n.currentMessages=ze(Object.assign({},r,{messages:x,structuredState:Object.assign({},r.structuredState||{},{inFlight:!1})}),x),$e(!0))}var S=F&&F.message||"",P=S==="Failed to fetch"||S==="NetworkError when attempting to fetch resource."||S==="Load failed"||/aborted|aborterror|networkerror|failed to fetch/i.test(S);P||k(F&&F.message||"\u65E0\u6CD5\u53D1\u9001\u7ED3\u6784\u5316\u6D88\u606F\u3002","error"),Kn("Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C")})}function Kn(e){var t=document.querySelector(".input-hint");t&&(t.textContent=e)}function un(){Dt()}var xf=10,Ns=24;function Sf(e){if(typeof e!="string")return"";var t=e.replace(/\s+/g," ").trim();return t.length<=Ns?t:t.slice(0,Ns)+"\u2026"}function js(e){return n.queueBarDrag&&typeof n.queueBarDrag.origIndex=="number"?n.queueBarDrag.origIndex:typeof n.queueBarHoverIndex=="number"&&n.queueBarHoverIndex>=0&&n.queueBarHoverIndex<e?n.queueBarHoverIndex:0}function If(e,t,r){var i=e.length<=1,a="queue-bar";r&&(a+=" queue-bar-capacity"),t&&(a+=" queue-bar-inflight");for(var u=js(e.length),s=t?"\u4E2D\u65AD\u5F53\u524D\u56DE\u590D\uFF0C\u7ACB\u5373\u53D1\u9001\u8FD9\u6761":"\u7ACB\u5373\u53D1\u9001\u8FD9\u6761",o="",l=0;l<e.length;l++){var c=e[l]==null?"":String(e[l]),d=l===u,f="queue-bar-item";d&&(f+=" expanded"),i&&(f+=" queue-bar-item-single");var v=d?c+"\uFF08\u6309\u4F4F\u53EF\u62D6\u52A8\u8C03\u5E8F\uFF09":c;o+='<li class="'+f+'" data-index="'+l+'" data-action="drag" title="'+p(v)+'"><span class="queue-bar-item-index" aria-hidden="true">'+(l+1)+'</span><span class="queue-bar-item-text">'+p(Sf(c))+'</span><button type="button" class="queue-bar-item-promote" data-action="promote-item" title="'+p(s)+'" aria-label="\u7ACB\u5373\u53D1\u9001\u8FD9\u6761" tabindex="'+(d?"0":"-1")+'"><svg width="10" height="10" 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><span class="queue-bar-item-promote-label">\u7ACB\u5373</span></button><button type="button" class="queue-bar-item-delete" data-action="delete" aria-label="\u5220\u9664\u8FD9\u6761\u6392\u961F\u6D88\u606F" title="\u5220\u9664" tabindex="'+(d?"0":"-1")+'"><svg width="9" height="9" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" 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>'}return'<div class="'+a+'" data-queue-bar="1"><ol class="queue-bar-list" data-queue-list="1">'+o+"</ol></div>"}function Dt(){var e=document.getElementById("queue-bar-host");if(e){var t=n.sessions.find(function(s){return s.id===n.selectedId}),r=t&&t.sessionKind==="structured",i=r?Mi(t):[];if(i=Array.isArray(i)?i:[],!r||i.length===0){e.hidden=!0,e.innerHTML="",n.queueBarHoverIndex=null;return}if(!n.queueBarDrag){e.hidden=!1;var a=!!(t.structuredState&&t.structuredState.inFlight&&t.status==="running"),u=i.length>=xf;e.innerHTML=If(i,a,u)}}}function Rs(){var e=document.getElementById("queue-bar-host");if(!(!e||e.hidden)){var t=e.querySelector('[data-queue-list="1"]');if(t)for(var r=t.children,i=js(r.length),a=0;a<r.length;a++){var u=r[a],s=a===i;if(u.classList.contains("expanded")!==s){u.classList.toggle("expanded",s);var o=u.querySelector(".queue-bar-item-delete");o&&(o.tabIndex=s?0:-1)}}}}function va(e){var t=e==null?null:Number(e);n.queueBarHoverIndex!==t&&(n.queueBarHoverIndex=t,Rs())}function ui(e,t){Z({id:e.id,queuedMessages:t});var r=n.sessions.find(function(i){return i.id===e.id})||e;n.currentMessages=ze(r,tt(r,r.output,!1)),$e(!0),Dt()}function Tf(e){var t=n.sessions.find(function(s){return s.id===n.selectedId});if(t){var r=Array.isArray(t.queuedMessages)?t.queuedMessages.slice():[];if(!(e<0||e>=r.length)){var i=r.slice(),a=r.slice(0,e).concat(r.slice(e+1));typeof n.queueBarHoverIndex=="number"&&(n.queueBarHoverIndex===e?n.queueBarHoverIndex=null:n.queueBarHoverIndex>e&&(n.queueBarHoverIndex-=1)),Z({id:t.id,queuedMessages:a});var u=n.sessions.find(function(s){return s.id===t.id})||t;n.currentMessages=ze(u,tt(u,u.output,!1)),$e(!0),Dt(),fetch("/api/structured-sessions/"+t.id+"/queued/"+e,{method:"DELETE",credentials:"same-origin"}).then(function(s){if(!s.ok)return s.json().catch(function(){return{}}).then(function(o){throw new Error(o&&o.error||"\u5220\u9664\u5931\u8D25")})}).catch(function(s){ui(t,i),k(s&&s.message||"\u5220\u9664\u6392\u961F\u6D88\u606F\u5931\u8D25\u3002","error")})}}}function jm(){var e=n.sessions.find(function(i){return i.id===n.selectedId});if(e){var t=Array.isArray(e.queuedMessages)?e.queuedMessages.slice():[];if(t.length!==0){n.queueBarHoverIndex=null,Z({id:e.id,queuedMessages:[]});var r=n.sessions.find(function(i){return i.id===e.id})||e;n.currentMessages=ze(r,tt(r,r.output,!1)),$e(!0),Dt(),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")});k("\u5DF2\u6E05\u7A7A "+t.length+" \u6761\u6392\u961F\u6D88\u606F\u3002","info")}).catch(function(i){ui(e,t),k(i&&i.message||"\u6E05\u7A7A\u6392\u961F\u6D88\u606F\u5931\u8D25\u3002","error")})}}}function Lf(e){var t=n.sessions.find(function(c){return c.id===n.selectedId});if(t){var r=Array.isArray(t.queuedMessages)?t.queuedMessages.slice():[];if(!(e<0||e>=r.length)){var i=r[e],a=r.slice(0,e).concat(r.slice(e+1)),u=r.slice(),s=!!(t.structuredState&&t.structuredState.inFlight&&t.status==="running");typeof n.queueBarHoverIndex=="number"&&(n.queueBarHoverIndex===e?n.queueBarHoverIndex=null:n.queueBarHoverIndex>e&&(n.queueBarHoverIndex-=1)),Z({id:t.id,queuedMessages:a});var o=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Date.now().toString(36)+"-"+Math.random().toString(36).slice(2,10),l={input:i,idempotencyKey:o};s&&(l.interrupt=!0,l.preserveQueue=!0),k(s?"\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+"/messages",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(l)}).then(function(c){return c.ok?c.json():c.json().catch(function(){return{}}).then(function(d){throw new Error(d&&d.error||"\u7ACB\u5373\u53D1\u9001\u5931\u8D25")})}).then(function(c){if(c&&c.id&&(Z(c),c.id===n.selectedId)){var d=n.sessions.find(function(f){return f.id===c.id})||c;n.currentMessages=ze(d,tt(d,c.output,!1)),$e(!0),Dt()}}).catch(function(c){ui(t,u),k(c&&c.message||"\u7ACB\u5373\u53D1\u9001\u5931\u8D25\u3002","error")})}}}function Mf(e,t){var r=n.sessions.find(function(f){return f.id===n.selectedId});if(r){var i=Array.isArray(r.queuedMessages)?r.queuedMessages.slice():[];if(!(i.length<=1)&&t){var a=t.parentElement;if(a){var u=Number(t.getAttribute("data-index")),s=Array.prototype.slice.call(a.children),o=s.map(function(f){return f.getBoundingClientRect()}),l=3;o.length>=2&&(l=Math.max(0,o[1].top-o[0].top-o[0].height)),e.preventDefault();try{t.setPointerCapture(e.pointerId)}catch{}if(navigator&&navigator.vibrate)try{navigator.vibrate(8)}catch{}n.queueBarDrag={pointerId:e.pointerId,handleEl:t,itemEl:t,listEl:a,siblings:s,rects:o,origIndex:u,targetIndex:u,startY:e.clientY,gap:l,queueSnapshot:i},t.classList.add("dragging"),Rs(),s.forEach(function(f){f!==t&&f.classList.add("queue-bar-item-sliding")});var c=function(f){Of(f)},d=function(f){Pf(f)};n.queueBarDrag.moveHandler=c,n.queueBarDrag.upHandler=d,t.addEventListener("pointermove",c),t.addEventListener("pointerup",d),t.addEventListener("pointercancel",d)}}}}function qf(e,t,r,i){for(var a=r.length,u=[],s=0;s<a;s++)u.push(s);u.splice(e,1),u.splice(t,0,e);for(var o=r[0].top,l=r[0].top,c=1;c<a;c++)r[c].top<l&&(l=r[c].top);for(var d={},f=l,v=0;v<a;v++){var m=u[v];d[m]=f,f+=r[m].height+i}return d}function Of(e){var t=n.queueBarDrag;if(!(!t||e.pointerId!==t.pointerId)){e.preventDefault();var r=e.clientY-t.startY;t.itemEl.style.transform="translateY("+r+"px)";for(var i=t.rects[t.origIndex].top+t.rects[t.origIndex].height/2+r,a=t.origIndex,u=0;u<t.rects.length;u++)if(u!==t.origIndex){var s=t.rects[u].top+t.rects[u].height/2;u<t.origIndex&&i<s?a=Math.min(a,u):u>t.origIndex&&i>s&&(a=Math.max(a,u))}if(a!==t.targetIndex){t.targetIndex=a;var o=qf(t.origIndex,a,t.rects,t.gap);t.siblings.forEach(function(l,c){if(c!==t.origIndex){var d=o[c]-t.rects[c].top;l.style.transform=d?"translateY("+d+"px)":""}})}}}function Pf(e){var t=n.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 r=t.origIndex,i=t.targetIndex,a=t.queueSnapshot;if(t.siblings.forEach(function(c){c.style.transform="",c.classList.remove("queue-bar-item-sliding")}),t.itemEl.classList.remove("dragging"),n.queueBarDrag=null,r===i){Dt();return}for(var u=[],s=0;s<a.length;s++)u.push(s);u.splice(r,1),u.splice(i,0,r);var o=u.map(function(c){return a[c]});n.queueBarHoverIndex=i;var l=n.sessions.find(function(c){return c.id===n.selectedId});if(!l){Dt();return}Z({id:l.id,queuedMessages:o}),Dt(),fetch("/api/structured-sessions/"+l.id+"/queued",{method:"PATCH",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({order:u})}).then(function(c){if(!c.ok)return c.json().catch(function(){return{}}).then(function(d){throw new Error(d&&d.error||"\u6392\u5E8F\u5931\u8D25")})}).catch(function(c){ui(l,a),k(c&&c.message||"\u8C03\u6574\u6392\u961F\u987A\u5E8F\u5931\u8D25\u3002","error")})}}function Hf(){var e=document.getElementById("queue-bar-host");!e||e.__queueDelegated||(e.__queueDelegated=!0,e.addEventListener("click",function(t){var r=t.target,i=r&&r.closest?r.closest("[data-action]"):null;if(!(!i||!e.contains(i))){var a=i.getAttribute("data-action");if(a!=="drag"){if(t.preventDefault(),t.stopPropagation(),a==="promote-item"){var u=i.closest(".queue-bar-item");u&&Lf(Number(u.getAttribute("data-index")));return}if(a==="delete"){var s=i.closest(".queue-bar-item");s&&Tf(Number(s.getAttribute("data-index")));return}}}}),e.addEventListener("mouseover",function(t){if(!n.queueBarDrag){var r=t.target,i=r&&r.closest?r.closest(".queue-bar-item"):null;!i||!e.contains(i)||va(Number(i.getAttribute("data-index")))}}),e.addEventListener("mouseleave",function(){n.queueBarDrag||va(null)}),e.addEventListener("pointerdown",function(t){if(!(t.button!==void 0&&t.button!==0)){var r=t.target;if(!(r&&r.closest&&r.closest('[data-action="delete"], [data-action="promote-item"]'))){var i=r&&r.closest?r.closest(".queue-bar-item"):null;i&&(va(Number(i.getAttribute("data-index"))),Mf(t,i))}}}))}function Ws(e){if(!e||!Array.isArray(e.content))return 0;for(var t=0,r=0;r<e.content.length;r++){var i=e.content[r];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 _f(e,t){if(!e)return t;if(!t)return e;var r=Ws(e),i=Ws(t);return i>=r?t:Object.assign({},e,{usage:t.usage||e.usage})}function ze(e,t){var r=Array.isArray(t)?ar(t):[],i=Array.isArray(r)?r.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 zs(){var e=n.sessions.find(function(t){return t.id===n.selectedId});Nr(e),un()}function Vs(e){var t=Pt(),r=t&&t.provider==="codex";return e&&(e.errorCode==="SESSION_NOT_RUNNING"||e.errorCode==="SESSION_NO_PTY")?r?"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||(r?"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 Us(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||n.selectedId||null,t.sessionStatus=Object.prototype.hasOwnProperty.call(e,"sessionStatus")?e.sessionStatus:null),t}function Ks(e){return e&&(e.errorCode==="SESSION_NOT_RUNNING"||e.errorCode==="SESSION_NO_PTY"||e.errorCode==="SESSION_NOT_FOUND")}function Nf(e,t){e&&Z({id:e,status:t||"exited"})}function Rm(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})}),r=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&&r}function ma(e){return!!(e&&!se(e)&&(e.provider==="claude"||e.provider==="codex")&&e.status!=="running"&&e.claudeSessionId)}function jf(e,t){if(!e)return k("\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(!ma(e)){var r=e&&e.provider==="codex"?"Codex":"Claude";return k("\u8BE5\u4F1A\u8BDD\u6CA1\u6709\u53EF\u6062\u590D\u7684 "+r+" \u5386\u53F2\u4E0A\u4E0B\u6587\uFF0C\u8BF7\u65B0\u5EFA\u4F1A\u8BDD\u3002","error"),Promise.resolve(null)}return ro(e.id,t).then(function(i){return i?(Z(i),fe(),xn(i.id),fn(i.id).then(function(){return Ht(!0),i})):null})}function Rf(e,t){return[t,"\r"]}function Wf(e,t,r,i){var a=Array.isArray(e)?e.filter(function(s){return!!s}):[];if(a.length===0)return Promise.resolve();var u=typeof r=="number"?r:0;return a.reduce(function(s,o,l){return s.then(function(){return l>0&&u>0?new Promise(function(c){setTimeout(c,u)}).then(function(){return pt(o,l===a.length-1?t:void 0,i)}):pt(o,l===a.length-1?t:void 0,i)})},Promise.resolve())}var zf=5e3,Vf=100;function ga(e){e&&(n.pendingMessages.length>=Vf&&n.pendingMessages.shift(),n.pendingMessages.push({input:e,at:Date.now()}))}function Uf(e){var t=Array.isArray(e)?e.filter(function(r){return!!r}):[];t.forEach(function(r){ga(r)})}function Kf(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 n<"u"&&n&&(n.terminalOutputMarker=(n.terminalOutput&&n.terminalOutput.length)|0)}}function pt(e,t,r){return!e||!n.selectedId?Promise.resolve():(Kf(e),n.messageQueue.push(e),n.inputQueue=n.inputQueue.then(function(){return Jf(e,t,r).finally(function(){var i=n.messageQueue.indexOf(e);i>-1&&n.messageQueue.splice(i,1)})}),n.inputQueue)}function Jf(e,t,r){if(!n.selectedId)return Promise.resolve();var i=n.selectedId,a=r||n.currentView;return wf()?n.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(s){var o=Us(s);throw o.httpStatus=u.status,console.error("[wand] postInput: request failed",{status:u.status,errorCode:o.errorCode,message:o.message,sessionId:i}),Ks(o)&&Nf(i,o.sessionStatus||"exited"),o})}).then(function(u){return u&&u.id&&(Z(u),u.id===n.selectedId&&(u.messages&&u.messages.length>0&&(n.currentMessages=u.messages),$e(!0))),u}):(ga(e),console.log("[wand] postInput: WebSocket disconnected, queued message",{sessionId:n.selectedId,inputLength:e.length}),Promise.resolve()):n.wsConnected?(console.warn("[wand] postInput: session not running, skipping send",{sessionId:n.selectedId}),k("\u4F1A\u8BDD\u672A\u8FD0\u884C\uFF0C\u6B63\u5728\u7B49\u5F85\u81EA\u52A8\u6062\u590D\u540E\u91CD\u8BD5\u3002","info"),Promise.resolve()):(ga(e),console.log("[wand] postInput: session not running, queued for reconnect",{sessionId:n.selectedId,inputLength:e.length}),Promise.resolve())}function Wm(e){return pt(e)}function Pt(){return n.sessions.find(function(e){return e.id===n.selectedId})||null}function zm(e){return e&&e.provider==="codex"?`
23
+ `:"\r"}function ha(){return!!n.selectedId&&n.currentView==="terminal"}function Yf(e){return!(!n.terminal||!e||e!==n.selectedId||n.terminalSessionId&&n.terminalSessionId!==e)}function Js(e){if(!n.terminalInteractive||!ha()||e.defaultPrevented||e.isComposing)return!1;var t=e.target;return t?!(t.closest&&t.closest("#mini-keyboard")||tp(t)):!0}var Gf={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"},Qf={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~"},Ys={" ":0,"[":27,"\\":28,"]":29,"^":30,_:31},$f=400,Xf=10,Zf=8,si=54,sn=8,ya=[{key:"enter",label:"Enter"},{key:"ctrl_c",label:"Ctrl+C"},{key:"escape",label:"Esc"},{key:"shift_tab",label:"Shift+Tab"}],ep=new Set(["mini-keyboard-fab","mini-keyboard-toggle","terminal-interactive-toggle"]);function tp(e){return!!(e&&ep.has(e.id))}var np=new Set(["ctrl","alt","shift"]);function Gs(e){return np.has(e)}function rp(e){return Qf[e]||""}function ip(e){var t=e.toLowerCase();return t>="a"&&t<="z"?String.fromCharCode(t.charCodeAt(0)-96):Object.prototype.hasOwnProperty.call(Ys,t)?String.fromCharCode(Ys[t]):""}function ap(e){return Gf[e.key]||e.key}function up(e,t){return{ctrl:e.ctrlKey,alt:e.altKey,shift:e.shiftKey&&(t.length===1||t==="tab"),meta:e.metaKey}}function Qs(e,t){e&&pt(e,t).catch(function(){})}function sp(){co()}function ba(e){n.keyboardPopupOpen=!1,e!==!1&&li(),cp()}function op(){ha()&&An(!n.terminalInteractive)}function An(e){var t=!!e&&ha();n.terminalInteractive!==t&&(n.terminalInteractive=t,t?(dp(),ba(!1),sp(),k("\u7EC8\u7AEF\u4EA4\u4E92\u6A21\u5F0F\u5DF2\u5F00\u542F","info")):(fp(),li()),Fr())}function Ea(){var e=n.sessions.find(function(r){return r.id===n.selectedId}),t=!e||e.status!=="running"||n.currentView!=="terminal";if(t&&n.terminalInteractive){An(!1);return}(!e||n.currentView!=="terminal")&&n.keyboardPopupOpen&&(n.keyboardPopupOpen=!1),Fr()}function Fr(){var e=n.sessions.find(function(y){return y.id===n.selectedId}),t=se(e),r=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 w=document.getElementById(y);if(w){w.classList.toggle("active",n.terminalInteractive),w.classList.toggle("is-on",n.terminalInteractive),w.classList.toggle("hidden",t||n.currentView!=="terminal"||!e),w.setAttribute("aria-checked",n.terminalInteractive?"true":"false");var F=w.querySelector(".plus-popover-toggle-state");F&&(F.textContent=n.terminalInteractive?"\u5F00":"\u5173")}});var s=document.querySelector(".input-hint");s&&(s.classList.toggle("hidden",t?!0:n.currentView==="terminal"),!t&&e&&(s.textContent=r?"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 o=!t&&!i&&ma(e);a&&(a.placeholder=Mo(e,n.terminalInteractive),a.disabled=!t&&!!e&&!i&&!o,a.setAttribute("aria-disabled",a.disabled?"true":"false"),a.readOnly=!1,a.classList.toggle("is-terminal-passthrough",!!n.terminalInteractive));var l=document.querySelector(".input-composer");l&&n.terminalInteractive&&l.classList.contains("voice-mode")&&(l.classList.remove("voice-mode"),he.recording=!1,ca(),da());var c=document.getElementById("send-input-button"),d=t&&i;c&&(c.disabled=!t&&!!e&&!i&&!o,c.setAttribute("title",t?d?"\u6392\u961F\u53D1\u9001\uFF08\u5F53\u524D\u56DE\u590D\u7ED3\u675F\u540E\u5904\u7406\uFF09":"\u53D1\u9001":r?i?"\u53D1\u9001\u7ED9 Codex":"Codex \u4F1A\u8BDD\u5DF2\u7ED3\u675F":!e||i||o?"\u53D1\u9001":"\u4F1A\u8BDD\u5DF2\u7ED3\u675F"),c.classList.toggle("queue-mode",d));var f=document.getElementById("stop-button");if(f){var v=$a(e);f.classList.toggle("hidden",!v.active)}var m=document.getElementById("stop-button");if(m){var b=$a(e);m.classList.toggle("hidden",!b.active)}var g=document.getElementById("output");g&&g.classList.toggle("interactive",!t&&n.terminalInteractive),fs()}function oi(){var e=window.getSelection&&window.getSelection();if(!e||e.isCollapsed)return!1;var t=document.getElementById("output");if(!t)return!1;var r=e.anchorNode;return r&&r.nodeType===3&&(r=r.parentNode),!!(r&&t.contains(r))}function Fa(e){if(Js(e)&&!e.metaKey){var t=ap(e);if(t){var r=up(e,t);if(!Gs(t)&&!(r.ctrl&&t.length===1&&t.toLowerCase()==="c"&&oi())){var i=Xs(t,r);i&&(e.preventDefault(),Qs(i,t))}}}}function lp(){n.terminal&&Pd(500)}function cp(){fr()}function Vm(e){e.preventDefault(),e.stopPropagation(),!(n.currentView!=="terminal"||!n.selectedId)&&(n.keyboardPopupOpen=!n.keyboardPopupOpen,Fr())}function $s(){n.keyboardPopupOpen=!1,Fr()}function dp(){document.addEventListener("keydown",Fa,!0)}function fp(){document.removeEventListener("keydown",Fa,!0)}function Xs(e,t){var r=t||{ctrl:!1,alt:!1,shift:!1};if(Gs(e))return"";if(e==="tab"&&r.shift)return"\x1B[Z";var i=rp(e);if(i)return i;if(e.indexOf("ctrl_")===0)return String.fromCharCode(e.charCodeAt(e.length-1)-96);var a=wr(e);if(a)return a;if(!e)return"";var u=e.length===1?e:"";return u?(r.shift&&(u=u.toUpperCase()),r.ctrl?ip(u):r.alt?"\x1B"+u:u):""}function li(){n.modifiers.ctrl=!1,n.modifiers.alt=!1,n.modifiers.shift=!1,pp()}function pp(){var e=document.getElementById("mini-keyboard");e&&["ctrl","alt","shift"].forEach(function(t){var r=e.querySelector('[data-key="'+t+'"]');r&&r.classList.toggle("active",!!n.modifiers[t])})}function wr(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 vp(){if(n.pendingMessages.length!==0){var e=Pt();if(se(e)){n.pendingMessages=[];return}var t=Date.now(),r=[],i=0;n.pendingMessages.forEach(function(u){if(typeof u=="string"){r.push(u);return}if(!(!u||typeof u.input!="string")){if(t-(u.at||0)>zf){i++;return}r.push(u.input)}}),n.pendingMessages=[],i>0&&console.log("[wand] flushPendingMessages: dropped "+i+" stale input(s)");var a=Promise.resolve();r.forEach(function(u){a=a.then(function(){return mp(u).catch(function(){})})})}}function mp(e){if(!e||!n.selectedId)return Promise.resolve();var t=n.selectedId;return fetch("/api/sessions/"+t+"/input",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({input:e,view:n.currentView})}).then(function(r){return r.ok?r.json():r.json().catch(function(){return{error:"\u8BF7\u6C42\u5931\u8D25"}}).then(function(i){var a=Us(i);if(a.httpStatus=r.status,Ks(a))return console.log("[wand] sendInputDirect: session unavailable, dropping",{sessionId:t,errorCode:a.errorCode}),null;throw a})}).then(function(r){return r&&r.id&&(Z(r),r.id===n.selectedId&&(r.messages&&r.messages.length>0&&(n.currentMessages=r.messages),$e(!0))),r})}function wa(){n.selectedId&&fetch("/api/sessions/"+n.selectedId+"/stop",{method:"POST",credentials:"same-origin"}).then(_t)}function Zs(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(r){return r.json()}).then(function(r){if(r&&r.error)throw new Error(r.error);return n.selectedId===e&&(n.selectedId=null,be()),_t()}).catch(function(){t&&t.classList.remove("deleting");var r=document.getElementById("action-error");We(r,"\u65E0\u6CD5\u5220\u9664\u4F1A\u8BDD\u3002")})},250)}function eo(e,t){t&&t.classList.add("deleting"),setTimeout(function(){fetch("/api/claude-history/"+encodeURIComponent(e),{method:"DELETE",credentials:"same-origin"}).then(function(r){return r.json()}).then(function(r){if(r&&r.error)throw new Error(r.error);n.claudeHistory=n.claudeHistory.filter(function(i){return i.claudeSessionId!==e}),delete n.selectedClaudeHistoryIds[e],fe()}).catch(function(){t&&t.classList.remove("deleting");var r=document.getElementById("action-error");We(r,"\u65E0\u6CD5\u5220\u9664\u5386\u53F2\u4F1A\u8BDD\u3002")})},250)}function Um(e,t){eo(e,t)}function gp(e,t,r){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);n.claudeHistory=n.claudeHistory.filter(function(a){return a.cwd!==e}),fe()}).catch(function(){to(r,!1);var i=document.getElementById("action-error");We(i,"\u65E0\u6CD5\u6E05\u7406\u8BE5\u76EE\u5F55\u7684\u5386\u53F2\u4F1A\u8BDD\u3002")})}function to(e,t){e.forEach(function(r){r.classList.toggle("deleting",t)})}function hp(e){return Array.prototype.slice.call(document.querySelectorAll('.claude-history-item[data-cwd="'+window.CSS.escape(String(e))+'"]'))}var no=null,Cr=null;function Br(){if(Cr){Cr.classList.remove("swiped");var e=Cr.querySelector(".session-item-content");e&&(e.style.transform=""),Cr=null}}function yp(e){no=null,Cr=null}function bp(e,t,r){e==="claude"&&(n.preferredCommand=e,n.chatMode=Nt(e,n.chatMode));var i=n.chatModel||n.config&&n.config.defaultModel||"";return fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({command:e,cwd:t||"",mode:n.chatMode||n.config.defaultMode||"default",model:i||void 0,thinkingEffort:n.chatThinking||void 0}))}).then(function(a){return a.json()}).then(function(a){return a.error?(r&&We(r,a.error),null):(n.selectedId=a.id,be(),n.drafts[a.id]="",a)})}var Ca=!1;function ro(e,t){return!e||Ca?Promise.resolve(null):(Ca=!0,fetch("/api/sessions/"+encodeURIComponent(e)+"/resume",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({mode:n.chatMode||n.config.defaultMode||"default"}))}).then(function(r){return r.json()}).then(function(r){return r.error?(t?We(t,r.error):k(r.error,"error"),null):(n.selectedId=r.id,be(),n.drafts[r.id]="",r)}).catch(function(r){var i=r&&r.message||"\u65E0\u6CD5\u6062\u590D\u4F1A\u8BDD\u3002";return t?We(t,i):k(i,"error"),null}).finally(function(){Ca=!1}))}function Km(e,t){return e?fetch("/api/claude-sessions/"+encodeURIComponent(e)+"/resume",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({mode:n.chatMode||n.config.defaultMode||"default"}))}).then(function(r){return r.json()}).then(function(r){return r.error?(t?We(t,r.error):k(r.error,"error"),null):(n.claudeHistory=n.claudeHistory.filter(function(i){return i.claudeSessionId!==e}),n.selectedId=r.id,be(),n.drafts[r.id]="",r)}).catch(function(r){var i=r&&r.message||"\u65E0\u6CD5\u6309 Claude \u4F1A\u8BDD ID \u6062\u590D\u4F1A\u8BDD\u3002";return t?We(t,i):k(i,"error"),null}):Promise.resolve(null)}function on(e){return!e||!e.id?Promise.resolve():(n.selectedId=e.id,be(),n.currentMessages=[],pr(),Ct(),Er(e.id),Z(e),fe(),xn(e.id),fn(e.id).then(function(){Ht(!0)}))}function io(e){return ro(e).then(function(t){return t?(t.claudeSessionId&&(t.provider==="codex"?n.codexHistory=n.codexHistory.filter(function(r){return r.claudeSessionId!==t.claudeSessionId}):n.claudeHistory=n.claudeHistory.filter(function(r){return r.claudeSessionId!==t.claudeSessionId})),on(t).then(function(){return t})):null})}function Jm(e,t,r){return bp(e,t,r).then(function(i){return i?on(i).then(function(){return i}):null})}function Ym(e){var t=document.getElementById("welcome-input");if(t){t.placeholder="\u6B63\u5728\u601D\u8003\u2026",t.disabled=!0;var r=n.chatMode||"managed",i=Qe(),a=vt(),u=n.chatModel||n.config&&n.config.defaultModel||"";fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({command:a,cwd:i,mode:r,initialInput:e,model:u||void 0,thinkingEffort:n.chatThinking||void 0}))}).then(function(s){return s.json()}).then(function(s){return s.error?(k(s.error,"error"),t.placeholder="\u8F93\u5165\u6D88\u606F",t.disabled=!1,null):on(s)}).catch(function(s){k(s&&s.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 Gm(e,t,r){var i=n.chatMode||"managed",a=Qe(),u=vt(),s=n.chatModel||n.config&&n.config.defaultModel||"";fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({command:u,cwd:a,mode:i,initialInput:e||void 0,model:s||void 0,thinkingEffort:n.chatThinking||void 0}))}).then(function(o){return o.json()}).then(function(o){return o.error?(k(o.error,"error"),null):(t&&(t.value=""),r&&(r.value=""),on(o))}).catch(function(o){k(o&&o.message||"\u65E0\u6CD5\u542F\u52A8\u4F1A\u8BDD\u3002","error")})}function Ep(e){e.disabled=!0,io(e.dataset.sessionId).finally(function(){e.disabled=!1})}function Fp(e){var t=e.dataset.claudeSessionId,r=e.dataset.cwd;t&&(e.disabled=!0,wp(t,r).then(function(i){i&&i.id&&(n.codexHistory=n.codexHistory.filter(function(a){return a.claudeSessionId!==t}),n.selectedId=i.id,be(),n.drafts[i.id]="",on(i).then(function(){Rt()}))}).finally(function(){e.disabled=!1}))}function wp(e,t){return fetch("/api/codex-sessions/"+encodeURIComponent(e)+"/resume",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({mode:n.chatMode||n.config&&n.config.defaultMode||"default",cwd:t}))}).then(function(r){return r.json()}).then(function(r){return r.error?(k(r.error,"error"),null):r}).catch(function(r){return k(r&&r.message||"\u65E0\u6CD5\u6062\u590D\u5386\u53F2\u4F1A\u8BDD\u3002","error"),null})}function Cp(e){var t=e.dataset.claudeSessionId;if(t){var r=e.closest(".claude-history-item");r&&(r.style.opacity="0.5"),fetch("/api/codex-history/"+encodeURIComponent(t),{method:"DELETE",credentials:"same-origin"}).then(function(i){return i.json()}).then(function(i){i&&i.ok?(n.codexHistory=n.codexHistory.filter(function(a){return a.claudeSessionId!==t}),fe()):r&&(r.style.opacity="1")}).catch(function(){r&&(r.style.opacity="1")})}}function Bp(e){var t=e.dataset.claudeSessionId,r=e.dataset.cwd;t&&(e.disabled=!0,ci(t,r).then(function(i){i&&i.id&&(n.claudeHistory=n.claudeHistory.filter(function(a){return a.claudeSessionId!==t}),n.selectedId=i.id,be(),n.drafts[i.id]="",on(i).then(function(){Rt()}))}).finally(function(){e.disabled=!1}))}function ci(e,t){return fetch("/api/claude-sessions/"+encodeURIComponent(e)+"/resume",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({mode:n.chatMode||n.config&&n.config.defaultMode||"default",cwd:t}))}).then(function(r){return r.json()}).then(function(r){return r.error?(k(r.error,"error"),null):r}).catch(function(r){return k(r&&r.message||"\u65E0\u6CD5\u6062\u590D\u5386\u53F2\u4F1A\u8BDD\u3002","error"),null})}function Dr(){return"ontouchstart"in window||navigator.maxTouchPoints>0}function Ht(e){if(!n.terminalInteractive){var t=document.getElementById("input-box");!t||!n.selectedId||document.activeElement!==t&&(e&&Dr()||Ba(t))}}function Qm(){var e=document.querySelector(".chat-messages");e&&(e.scrollTop=0)}function ao(){var e=document.querySelector(".input-panel");e&&e.style.removeProperty("--keyboard-offset")}function uo(){var e=document.querySelector(".input-panel");e&&e.style.removeProperty("--keyboard-offset")}function di(e){if(e){var t=e.selectionStart,r=e.selectionEnd;Da(e),typeof t=="number"&&typeof r=="number"&&e.setSelectionRange(t,r)}}function so(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 oo(e){e&&(Ot(e),di(e))}function Dp(e){var t=e&&e.target?e.target:document.getElementById("input-box");t&&(ao(),oo(t))}function kp(e){var t=e&&e.target?e.target:document.getElementById("input-box");uo(),us(2200,t);var r=[80,200,380,620,900];r.forEach(function(i,a){setTimeout(function(){Rn(!1),a===1&&Dr()&&(et("keyboard-blur",{forceReplay:!0}),ft("keyboard"))},i)})}function Ap(e){e&&(e.setSelectionRange(e.value.length,e.value.length),di(e))}function Ba(e){e&&(e.focus({preventScroll:!0}),Ap(e))}function xp(e){so(e),oo(e)}function Sp(e){Ba(e)}function $m(e){ao(),di(e)}function Ip(){uo()}function Tp(e){di(e)}function Xm(e){Sp(e)}function Lp(e){xp(e)}function Zm(){Ip()}function eg(e){Tp(e)}function Mp(e,t){if(!e||!t||document.activeElement!==t)return!1;var r=window.innerHeight-e.height-e.offsetTop;if(r<=50)return!1;var i=t.getBoundingClientRect();return i.bottom>e.height-12}function Da(e){if(e){var t=e.scrollHeight>e.clientHeight+1;if(!t){e.scrollTop=0;return}e.scrollTop=e.scrollHeight}}function lo(){if(n.terminalInteractive){co();return}if(!Dr()){var e=document.getElementById("input-box");!e||!n.selectedId||document.activeElement===e||Ba(e)}}function co(){var e=document.getElementById("output");e&&(e.setAttribute("tabindex","0"),e.focus(),n.terminal&&n.terminal.focus&&n.terminal.focus())}function qp(){var e=document.querySelector(".input-panel"),t=document.querySelector(".chat-messages");if("virtualKeyboard"in navigator){var r=navigator.virtualKeyboard;r.addEventListener("geometrychange",function(){e&&e.style.removeProperty("padding-bottom")})}var i=document.getElementById("output");i&&i.addEventListener("click",function(){lo()}),t&&t.addEventListener("click",function(a){var u=a.target;u.tagName!=="A"&&u.tagName!=="BUTTON"&&!u.closest("button")&&!u.closest("[data-tool-toggle]")&&lo()}),document.addEventListener("click",function(a){if(Dr()){var u=document.getElementById("input-box");if(!(!u||document.activeElement!==u)){var s=a.target;!s||typeof s.closest!="function"||s.closest(".input-panel")||s.closest("#mini-keyboard")||s.closest("#mini-keyboard-fab")||s.closest("#mini-keyboard-toggle")||s.closest("#terminal-interactive-toggle")||s.closest(".wand-joystick-root")||u.blur()}}},!0)}function ka(){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 $e(e){n.renderPending&&!e||(n.renderPending=!0,e?(fi(!0),n.renderPending=!1):requestAnimationFrame(function(){fi(!1),n.renderPending=!1}))}n.chatRenderTimer=null;function fo(e){if(!(n.chatRenderTimer&&!e)){if(n.chatRenderTimer&&clearTimeout(n.chatRenderTimer),e){n.chatRenderTimer=null,$e();return}var t=n.sessions.find(function(a){return a.id===n.selectedId}),r=t&&t.status==="running"&&t.sessionKind!=="structured",i=r?hs:ys;n.chatRenderTimer=setTimeout(function(){n.chatRenderTimer=null;var a=n.sessions.find(function(u){return u.id===n.selectedId});a&&(n.currentMessages=ze(a,tt(a,a.output,!0))),$e()},i)}}function Op(e,t){if(!e||!t||t.length===0)return[];function r(w){return w.replace(/\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])/g,"")}for(var i=r(e),a=[],u=[],s=0;s<t.length;s++)if(t[s].role==="user"){var o="",l=t[s].content;if(typeof l=="string")o=l;else if(Array.isArray(l)){for(var c=0;c<l.length;c++)if(l[c].type==="text"){o=l[c].text;break}}o&&u.push({text:o,index:s})}for(var d=0,s=0;s<u.length;s++){var f=u[s],v=i.indexOf("\u276F "+f.text,d);if(v===-1&&(v=i.indexOf(`
24
24
  \u276F `+f.text,d),v!==-1&&(v+=1)),v>d){for(var m=i.substring(d,v),b=m.split(`
25
25
  `),g=[],c=0;c<b.length;c++){var y=b[c].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&&g.push(y)}g.length>0&&a.push({beforeMessage:f.index,content:g.join(`
26
- `)})}d=v+f.text.length+2}return a}function Aa(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 co(e,t){var r=Aa(e);return r?(r.innerHTML=t,rr(),Ke(),r):null}function fi(e){var t=document.getElementById("chat-output");if(!t)return;var r=n.sessions.find(function(R){return R.id===n.selectedId});if(!r){n.lastRenderedEmpty!=="none"&&(co(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>'),n.lastRenderedEmpty="none",n.lastRenderedMsgCount=0);return}var i=n.currentMessages,a=$p(i);if(Ia=Xp(i),i.length===0){if(n.lastRenderedEmpty!=="empty"){var u="";oe(r)&&(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>'+Ra(r,{kind:"dropdown"})+"</div>"),co(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),n.lastRenderedEmpty="empty",n.lastRenderedMsgCount=0}Za(null,r),Sa([]);return}var s=i.length;s>n.chatRenderedCount&&(n.chatRenderedCount=s);var o=Math.max(0,s-n.chatRenderedCount),l=o>0?i.slice(o):i,c=o>0,d=l.length,f=r.output?r.output.length:0;if(r.messages&&r.messages.length>0){for(var v=0,m=0,b=0;b<r.messages.length;b++){var g=r.messages[b].content;if(g)if(Array.isArray(g)){v+=g.length;for(var y=0;y<g.length;y++){var w=g[y];w.text&&(m+=w.text.length),w.thinking&&(m+=w.thinking.length),w.content&&(m+=w.content.length),w.id&&(m+=w.id.length),w.tool_use_id&&(m+=w.tool_use_id.length),w.description&&(m+=w.description.length),w.input&&(m+=JSON.stringify(w.input).length)}}else v+=1,m=String(g).length}f=d*1e5+v*1e3+m}var F=e||d!==n.lastRenderedMsgCount;if(!F&&d===n.lastRenderedMsgCount&&f===n.lastRenderedHash){var E=t.querySelector(".chat-messages");E&&Za(E,r),Sa(i);return}var A=n.lastRenderedHash,x=n.lastRenderedMsgCount;if(n.lastRenderedMsgCount=d,n.lastRenderedHash=f,E=Aa(t),!E)return;var S=Ti(E),P=E.querySelectorAll(".chat-message:not(.system-info)").length,z=F||P===0||d!==P;function G(){for(var R=qp(r.output,l),se="",Be=l.slice().reverse(),ne=l.length,de=0;de<Be.length;de++){for(var Me=Be[de],lt=ne-1-de,gt=lt+o,Ge=null,rt=0;rt<R.length;rt++)if(R[rt].beforeMessage===lt){Ge=R[rt];break}Ge&&(se+='<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(Ge.content)+"</div></div></div>"),se+=La(Me,B[gt]||null,gt,a)}c&&(se+='<div class="chat-load-more" id="chat-load-more-sentinel"><button class="chat-load-more-btn" type="button">\u52A0\u8F7D\u66F4\u65E9\u7684 '+Math.min(n.chatPageSize,o)+" \u6761\u6D88\u606F</button></div>");var it=-1,We=0;if(P>0&&!S)for(var kt=E.getBoundingClientRect().top,ze=E.querySelectorAll(".chat-message:not(.system-info)"),De=0;De<ze.length;De++){var _e=ze[De].getBoundingClientRect();if(_e.bottom>=kt){var fe=ze[De].getAttribute("data-msg-index");fe!=null&&(it=parseInt(fe,10),We=_e.top-kt);break}}if(E.innerHTML=se,(function(){for(var Oe=E.querySelectorAll(".chat-message:not(.system-info)"),we=Oe.length,Ve=0;Ve<we;Ve++)Oe[Ve].setAttribute("data-msg-index",String(o+we-1-Ve))})(),x===0&&!n.chatInitialRenderDone)E.scrollTop=0,n.chatStickToBottom=!0,nr({removeDivider:!0}),n.chatInitialRenderDone=!0;else if(x===0&&n.chatStickToBottom)E.scrollTop=0;else if(S)E.scrollTop=0;else if(it>=0){var Ae=E.querySelector('.chat-message[data-msg-index="'+it+'"]');if(Ae){var C=E.getBoundingClientRect().top,ct=Ae.getBoundingClientRect(),At=ct.top-C-We;Math.abs(At)>.5&&(n.chatIsProgrammaticScroll=!0,E.scrollTop+=At,requestAnimationFrame(function(){n.chatIsProgrammaticScroll=!1}))}}fo(E),rr(),Oi(E);var Qe=E.querySelector(".chat-message:not(.system-info)");if(Qe){var $e=Qe.querySelectorAll(".tool-use-card, .inline-diff[data-expand-key]");if($e.length>0){var xt=$e[0],Xt=Tn(xt);Ze(Xt)===null&&xt.classList.remove("collapsed");for(var at=1;at<$e.length;at++){var qe=Tn($e[at]);if(Ze(qe)===null){if($e[at].classList.contains("ask-user")&&!$e[at].classList.contains("ask-user-answered"))continue;$e[at].classList.add("collapsed")}}}}requestAnimationFrame(function(){Li(E),Ke(),kl()})}function L(R,se){var Be=R.querySelectorAll(".tool-use-card, .inline-diff[data-expand-key]");Be.forEach(function(ne){var de=Tn(ne);if(Ze(de)===null&&!(ne.classList.contains("ask-user")&&!ne.classList.contains("ask-user-answered"))){if(se){for(var Me=0;Me<se.length;Me++)if(se[Me].contains(ne))return}ne.classList.add("collapsed")}})}var B={};if((function(){for(var R={inputTokens:0,outputTokens:0,cacheReadInputTokens:0,totalCostUsd:0},se=-1,Be=0;Be<i.length;Be++){var ne=i[Be];if(ne.role==="user")se>=0&&(R.inputTokens>0||R.outputTokens>0||R.totalCostUsd>0)&&(B[se]={inputTokens:R.inputTokens,outputTokens:R.outputTokens,cacheReadInputTokens:R.cacheReadInputTokens,totalCostUsd:R.totalCostUsd}),R={inputTokens:0,outputTokens:0,cacheReadInputTokens:0,totalCostUsd:0},se=-1;else if(ne.role==="assistant"&&ne.usage){var de=ne.usage;R.inputTokens+=de.inputTokens||0,R.outputTokens+=de.outputTokens||0,R.cacheReadInputTokens+=de.cacheReadInputTokens||0,R.totalCostUsd+=de.totalCostUsd||0,se=Be}else ne.role==="assistant"&&(se=Be)}se>=0&&(R.inputTokens>0||R.outputTokens>0||R.totalCostUsd>0)&&(B[se]={inputTokens:R.inputTokens,outputTokens:R.outputTokens,cacheReadInputTokens:R.cacheReadInputTokens,totalCostUsd:R.totalCostUsd})})(),z)G();else if(d>P){var T=l.slice(P);T.reverse();for(var I=document.createDocumentFragment(),V=[],re=[],te=o+P,$=0;$<T.length;$++){var ie=document.createElement("div"),U=o+P+(T.length-1-$);ie.innerHTML=La(T[$],B[U]||null,U,a);var M=ie.firstElementChild;M&&(M.classList.add("animate-in"),M.setAttribute("data-msg-index",String(U)),V.push(M),re.push(U),I.appendChild(M))}E.insertBefore(I,E.firstChild),rr(),fo(E),Oi(E),L(E,V),S?requestAnimationFrame(function(){E.isConnected&&Math.abs(E.scrollTop)>1&&(n.chatIsProgrammaticScroll=!0,E.scrollTop=0,requestAnimationFrame(function(){n.chatIsProgrammaticScroll=!1})),nr({removeDivider:!0}),Ke()}):(n.chatUnreadStartIndex<0&&(n.chatUnreadStartIndex=te),n.chatUnreadCount+=V.length,Li(E),Ke())}else if(d===P&&f!==A){for(var H=Array.from(E.querySelectorAll(".chat-message:not(.system-info)")),N=l.slice().reverse(),Y=!1,K=Math.min(4,N.length,H.length),X=0;X<K;X++){var ae=H[X],le=document.createElement("div"),ue=o+N.length-1-X;le.innerHTML=La(N[X],B[ue]||null,ue,a);var Ce=le.firstElementChild;if(Ce){if(ae.innerHTML!==Ce.innerHTML||ae.className!==Ce.className)E.replaceChild(Ce,ae),Op(Ce),Y=!0;else if(X>0)break}}if(!Y&&N.length>K&&G(),Y){rr(),Oi(E),requestAnimationFrame(function(){S&&E.isConnected&&Math.abs(E.scrollTop)>1&&(n.chatIsProgrammaticScroll=!0,E.scrollTop=0,requestAnimationFrame(function(){n.chatIsProgrammaticScroll=!1})),Li(E),Ke()});var Fe=E.querySelector(".chat-message"),be=E.querySelectorAll(".tool-use-card, .inline-diff[data-expand-key]"),O=null;be.forEach(function(R){var se=Tn(R);Ze(se)===null&&(R.classList.contains("ask-user")&&!R.classList.contains("ask-user-answered")||(Fe&&Fe.contains(R)?O?R.classList.add("collapsed"):O=R:R.classList.add("collapsed")))})}}else d<P&&G();jd(E),Za(E,r),Sa(i)}var xa=!1;document.addEventListener("click",function(e){var t=e.target;if(!(!t||!(t instanceof Element))){var r=t.closest("#todo-progress-toggle");if(r){e.preventDefault(),e.stopPropagation(),xa=!xa;var i=document.getElementById("todo-progress"),a=document.getElementById("todo-progress-body");i&&a&&(xa?(i.classList.add("expanded"),a.classList.add("expanded")):(i.classList.remove("expanded"),a.classList.remove("expanded")))}}});function Sa(e){for(var t=0,r=e.length-1;r>=0;r--)if(e[r]&&e[r].role==="user"){t=r+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 s=u.content.length-1;s>=0;s--){var o=u.content[s];if(o.type==="tool_use"&&o.name==="TodoWrite"&&o.input&&o.input.todos){i=o.input.todos;break}}if(i)break}}var l=document.getElementById("todo-progress"),c=document.getElementById("todo-progress-body");if(l){if(!i||i.length===0){l.classList.add("hidden"),c&&c.classList.add("hidden");return}l.classList.remove("hidden"),c&&c.classList.remove("hidden");for(var d=0,f=0,v="",m=0;m<i.length;m++)i[m].status==="completed"&&d++,i[m].status==="in_progress"&&(f++,v||(v=i[m].activeForm||i[m].content||""));var b=d===i.length,g=b?i.length:Math.min(d+1,i.length);if(b){l.classList.add("hidden"),c&&c.classList.add("hidden");return}else l.classList.remove("all-done");var y=document.getElementById("todo-progress-counter");y&&(y.textContent=g+"/"+i.length);var w=document.getElementById("todo-progress-task");w&&(w.textContent=v);var F=document.getElementById("todo-progress-ring");if(F){var E=i.length>0?g/i.length:0;F.style.setProperty("--progress",E.toFixed(3))}var A=document.getElementById("todo-progress-list");if(A){for(var x="",S=0;S<i.length;S++){var P=i[S],z=P.status||"pending",G=z==="in_progress"?"active":z==="completed"?"done":"",L=z==="in_progress"?"active":z==="completed"?"done":"pending",B=z==="completed"?"\u2713":z==="in_progress"?"\u203A":"\u25CB";x+='<li class="todo-progress-item '+G+'"><span class="todo-item-icon '+L+'">'+B+"</span><span>"+p(P.content||"")+"</span></li>"}A.innerHTML=x}n.selectedId&&oa(n.selectedId)}}function Op(e){e.querySelectorAll(".code-copy").forEach(function(t){t.addEventListener("click",function(){var r=t.closest(".code-block"),i=r?r.querySelector("code"):null;i&&Lr(i.textContent||"",null,function(){t.textContent="Copied!",t.classList.add("copied"),setTimeout(function(){t.textContent="Copy",t.classList.remove("copied")},2e3)})})})}function fo(e){e.querySelectorAll(".code-copy").forEach(function(t){var r=t.cloneNode(!0);t.parentNode.replaceChild(r,t),r.addEventListener("click",function(){var i=r.closest(".code-block"),a=i?i.querySelector("code"):null;a&&Lr(a.textContent||"",null,function(){r.textContent="Copied!",r.classList.add("copied"),setTimeout(function(){r.textContent="Copy",r.classList.remove("copied")},2e3)})})}),Pp(e)}var Xm={timer:null,activeBtn:null};function Pp(e){var t=window.matchMedia("(pointer: coarse)").matches;t&&e.querySelectorAll(".chat-message").forEach(function(r){if(!r.querySelector(".msg-copy-btn")){var i=r.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 s=i.innerText||i.textContent||"";Lr(s.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)})}),r.appendChild(a)}}})}(function(){var t=window.matchMedia("(pointer: coarse)").matches;if(t){var r=null,i=0;document.addEventListener("touchstart",function(a){var u=a.target.closest(".chat-message");if(u){var s=u.querySelector(".chat-message-bubble");s&&(i=a.touches[0].clientY,r=setTimeout(function(){var o=u.querySelector(".msg-copy-btn");o&&(document.querySelectorAll(".msg-copy-btn.visible").forEach(function(l){l.classList.remove("visible")}),o.classList.add("visible"))},500))}},{passive:!0}),document.addEventListener("touchmove",function(a){r&&Math.abs(a.touches[0].clientY-i)>10&&(clearTimeout(r),r=null)},{passive:!0}),document.addEventListener("touchend",function(){r&&(clearTimeout(r),r=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 Hp(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 _p(e){return String(e||"").replace(/\x1b\][^\x07]*(\x07|\x1b\\)/g,"").replace(/\x1b\[(\d+)C/g,function(t,r){return" ".repeat(Number(r)||1)}).replace(/\x1b\[[0-9;?]*[AB]/g,`
26
+ `)})}d=v+f.text.length+2}return a}function Aa(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 po(e,t){var r=Aa(e);return r?(r.innerHTML=t,rr(),Ge(),r):null}function fi(e){var t=document.getElementById("chat-output");if(!t)return;var r=n.sessions.find(function(R){return R.id===n.selectedId});if(!r){n.lastRenderedEmpty!=="none"&&(po(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>'),n.lastRenderedEmpty="none",n.lastRenderedMsgCount=0);return}var i=n.currentMessages,a=Xp(i);if(Ia=Zp(i),i.length===0){if(n.lastRenderedEmpty!=="empty"){var u="";se(r)&&(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>'+Ra(r,{kind:"dropdown"})+"</div>"),po(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),n.lastRenderedEmpty="empty",n.lastRenderedMsgCount=0}Za(null,r),Sa([]);return}var s=i.length;s>n.chatRenderedCount&&(n.chatRenderedCount=s);var o=Math.max(0,s-n.chatRenderedCount),l=o>0?i.slice(o):i,c=o>0,d=l.length,f=r.output?r.output.length:0;if(r.messages&&r.messages.length>0){for(var v=0,m=0,b=0;b<r.messages.length;b++){var g=r.messages[b].content;if(g)if(Array.isArray(g)){v+=g.length;for(var y=0;y<g.length;y++){var w=g[y];w.text&&(m+=w.text.length),w.thinking&&(m+=w.thinking.length),w.content&&(m+=w.content.length),w.id&&(m+=w.id.length),w.tool_use_id&&(m+=w.tool_use_id.length),w.description&&(m+=w.description.length),w.input&&(m+=JSON.stringify(w.input).length)}}else v+=1,m=String(g).length}f=d*1e5+v*1e3+m}var F=e||d!==n.lastRenderedMsgCount;if(!F&&d===n.lastRenderedMsgCount&&f===n.lastRenderedHash){var E=t.querySelector(".chat-messages");E&&Za(E,r),Sa(i);return}var A=n.lastRenderedHash,x=n.lastRenderedMsgCount;if(n.lastRenderedMsgCount=d,n.lastRenderedHash=f,E=Aa(t),!E)return;var S=Ti(E),P=E.querySelectorAll(".chat-message:not(.system-info)").length,z=F||P===0||d!==P;function G(){for(var R=Op(r.output,l),ie="",Se=l.slice().reverse(),ce=l.length,ae=0;ae<Se.length;ae++){for(var ke=Se[ae],lt=ce-1-ae,rt=lt+o,kt=null,Ve=0;Ve<R.length;Ve++)if(R[Ve].beforeMessage===lt){kt=R[Ve];break}kt&&(ie+='<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(kt.content)+"</div></div></div>"),ie+=La(ke,B[rt]||null,rt,a)}c&&(ie+='<div class="chat-load-more" id="chat-load-more-sentinel"><button class="chat-load-more-btn" type="button">\u52A0\u8F7D\u66F4\u65E9\u7684 '+Math.min(n.chatPageSize,o)+" \u6761\u6D88\u606F</button></div>");var it=-1,Ue=0;if(P>0&&!S)for(var At=E.getBoundingClientRect().top,Ke=E.querySelectorAll(".chat-message:not(.system-info)"),je=0;je<Ke.length;je++){var Ae=Ke[je].getBoundingClientRect();if(Ae.bottom>=At){var pe=Ke[je].getAttribute("data-msg-index");pe!=null&&(it=parseInt(pe,10),Ue=Ae.top-At);break}}if(E.innerHTML=ie,(function(){for(var Pe=E.querySelectorAll(".chat-message:not(.system-info)"),Ce=Pe.length,Je=0;Je<Ce;Je++)Pe[Je].setAttribute("data-msg-index",String(o+Ce-1-Je))})(),x===0&&!n.chatInitialRenderDone)E.scrollTop=0,n.chatStickToBottom=!0,nr({removeDivider:!0}),n.chatInitialRenderDone=!0;else if(x===0&&n.chatStickToBottom)E.scrollTop=0;else if(S)E.scrollTop=0;else if(it>=0){var Fe=E.querySelector('.chat-message[data-msg-index="'+it+'"]');if(Fe){var C=E.getBoundingClientRect().top,at=Fe.getBoundingClientRect(),ct=at.top-C-Ue;Math.abs(ct)>.5&&(n.chatIsProgrammaticScroll=!0,E.scrollTop+=ct,requestAnimationFrame(function(){n.chatIsProgrammaticScroll=!1}))}}vo(E),rr(),Oi(E);var gt=E.querySelector(".chat-message:not(.system-info)");if(gt){var qe=gt.querySelectorAll(".tool-use-card, .inline-diff[data-expand-key]");if(qe.length>0){var xt=qe[0],Xt=Ln(xt);Ze(Xt)===null&&xt.classList.remove("collapsed");for(var ut=1;ut<qe.length;ut++){var Oe=Ln(qe[ut]);if(Ze(Oe)===null){if(qe[ut].classList.contains("ask-user")&&!qe[ut].classList.contains("ask-user-answered"))continue;qe[ut].classList.add("collapsed")}}}}requestAnimationFrame(function(){Li(E),Ge(),xl()})}function L(R,ie){var Se=R.querySelectorAll(".tool-use-card, .inline-diff[data-expand-key]");Se.forEach(function(ce){var ae=Ln(ce);if(Ze(ae)===null&&!(ce.classList.contains("ask-user")&&!ce.classList.contains("ask-user-answered"))){if(ie){for(var ke=0;ke<ie.length;ke++)if(ie[ke].contains(ce))return}ce.classList.add("collapsed")}})}var B={};if((function(){for(var R={inputTokens:0,outputTokens:0,cacheReadInputTokens:0,totalCostUsd:0},ie=-1,Se=0;Se<i.length;Se++){var ce=i[Se];if(ce.role==="user")ie>=0&&(R.inputTokens>0||R.outputTokens>0||R.totalCostUsd>0)&&(B[ie]={inputTokens:R.inputTokens,outputTokens:R.outputTokens,cacheReadInputTokens:R.cacheReadInputTokens,totalCostUsd:R.totalCostUsd}),R={inputTokens:0,outputTokens:0,cacheReadInputTokens:0,totalCostUsd:0},ie=-1;else if(ce.role==="assistant"&&ce.usage){var ae=ce.usage;R.inputTokens+=ae.inputTokens||0,R.outputTokens+=ae.outputTokens||0,R.cacheReadInputTokens+=ae.cacheReadInputTokens||0,R.totalCostUsd+=ae.totalCostUsd||0,ie=Se}else ce.role==="assistant"&&(ie=Se)}ie>=0&&(R.inputTokens>0||R.outputTokens>0||R.totalCostUsd>0)&&(B[ie]={inputTokens:R.inputTokens,outputTokens:R.outputTokens,cacheReadInputTokens:R.cacheReadInputTokens,totalCostUsd:R.totalCostUsd})})(),z)G();else if(d>P){var T=l.slice(P);T.reverse();for(var I=document.createDocumentFragment(),V=[],te=[],ee=o+P,Q=0;Q<T.length;Q++){var ne=document.createElement("div"),U=o+P+(T.length-1-Q);ne.innerHTML=La(T[Q],B[U]||null,U,a);var M=ne.firstElementChild;M&&(M.classList.add("animate-in"),M.setAttribute("data-msg-index",String(U)),V.push(M),te.push(U),I.appendChild(M))}E.insertBefore(I,E.firstChild),rr(),vo(E),Oi(E),L(E,V),S?requestAnimationFrame(function(){E.isConnected&&Math.abs(E.scrollTop)>1&&(n.chatIsProgrammaticScroll=!0,E.scrollTop=0,requestAnimationFrame(function(){n.chatIsProgrammaticScroll=!1})),nr({removeDivider:!0}),Ge()}):(n.chatUnreadStartIndex<0&&(n.chatUnreadStartIndex=ee),n.chatUnreadCount+=V.length,Li(E),Ge())}else if(d===P&&f!==A){for(var H=Array.from(E.querySelectorAll(".chat-message:not(.system-info)")),j=l.slice().reverse(),Y=!1,K=Math.min(4,j.length,H.length),X=0;X<K;X++){var oe=H[X],le=document.createElement("div"),re=o+j.length-1-X;le.innerHTML=La(j[X],B[re]||null,re,a);var Be=le.firstElementChild;if(Be){if(oe.innerHTML!==Be.innerHTML||oe.className!==Be.className)E.replaceChild(Be,oe),Pp(Be),Y=!0;else if(X>0)break}}if(!Y&&j.length>K&&G(),Y){rr(),Oi(E),requestAnimationFrame(function(){S&&E.isConnected&&Math.abs(E.scrollTop)>1&&(n.chatIsProgrammaticScroll=!0,E.scrollTop=0,requestAnimationFrame(function(){n.chatIsProgrammaticScroll=!1})),Li(E),Ge()});var De=E.querySelector(".chat-message"),Ee=E.querySelectorAll(".tool-use-card, .inline-diff[data-expand-key]"),O=null;Ee.forEach(function(R){var ie=Ln(R);Ze(ie)===null&&(R.classList.contains("ask-user")&&!R.classList.contains("ask-user-answered")||(De&&De.contains(R)?O?R.classList.add("collapsed"):O=R:R.classList.add("collapsed")))})}}else d<P&&G();Rd(E),Za(E,r),Sa(i)}var xa=!1;document.addEventListener("click",function(e){var t=e.target;if(!(!t||!(t instanceof Element))){var r=t.closest("#todo-progress-toggle");if(r){e.preventDefault(),e.stopPropagation(),xa=!xa;var i=document.getElementById("todo-progress"),a=document.getElementById("todo-progress-body");i&&a&&(xa?(i.classList.add("expanded"),a.classList.add("expanded")):(i.classList.remove("expanded"),a.classList.remove("expanded")))}}});function Sa(e){for(var t=0,r=e.length-1;r>=0;r--)if(e[r]&&e[r].role==="user"){t=r+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 s=u.content.length-1;s>=0;s--){var o=u.content[s];if(o.type==="tool_use"&&o.name==="TodoWrite"&&o.input&&o.input.todos){i=o.input.todos;break}}if(i)break}}var l=document.getElementById("todo-progress"),c=document.getElementById("todo-progress-body");if(l){if(!i||i.length===0){l.classList.add("hidden"),c&&c.classList.add("hidden");return}l.classList.remove("hidden"),c&&c.classList.remove("hidden");for(var d=0,f=0,v="",m=0;m<i.length;m++)i[m].status==="completed"&&d++,i[m].status==="in_progress"&&(f++,v||(v=i[m].activeForm||i[m].content||""));var b=d===i.length,g=b?i.length:Math.min(d+1,i.length);if(b){l.classList.add("hidden"),c&&c.classList.add("hidden");return}else l.classList.remove("all-done");var y=document.getElementById("todo-progress-counter");y&&(y.textContent=g+"/"+i.length);var w=document.getElementById("todo-progress-task");w&&(w.textContent=v);var F=document.getElementById("todo-progress-ring");if(F){var E=i.length>0?g/i.length:0;F.style.setProperty("--progress",E.toFixed(3))}var A=document.getElementById("todo-progress-list");if(A){for(var x="",S=0;S<i.length;S++){var P=i[S],z=P.status||"pending",G=z==="in_progress"?"active":z==="completed"?"done":"",L=z==="in_progress"?"active":z==="completed"?"done":"pending",B=z==="completed"?"\u2713":z==="in_progress"?"\u203A":"\u25CB";x+='<li class="todo-progress-item '+G+'"><span class="todo-item-icon '+L+'">'+B+"</span><span>"+p(P.content||"")+"</span></li>"}A.innerHTML=x}n.selectedId&&oa(n.selectedId)}}function Pp(e){e.querySelectorAll(".code-copy").forEach(function(t){t.addEventListener("click",function(){var r=t.closest(".code-block"),i=r?r.querySelector("code"):null;i&&Lr(i.textContent||"",null,function(){t.textContent="Copied!",t.classList.add("copied"),setTimeout(function(){t.textContent="Copy",t.classList.remove("copied")},2e3)})})})}function vo(e){e.querySelectorAll(".code-copy").forEach(function(t){var r=t.cloneNode(!0);t.parentNode.replaceChild(r,t),r.addEventListener("click",function(){var i=r.closest(".code-block"),a=i?i.querySelector("code"):null;a&&Lr(a.textContent||"",null,function(){r.textContent="Copied!",r.classList.add("copied"),setTimeout(function(){r.textContent="Copy",r.classList.remove("copied")},2e3)})})}),Hp(e)}var tg={timer:null,activeBtn:null};function Hp(e){var t=window.matchMedia("(pointer: coarse)").matches;t&&e.querySelectorAll(".chat-message").forEach(function(r){if(!r.querySelector(".msg-copy-btn")){var i=r.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 s=i.innerText||i.textContent||"";Lr(s.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)})}),r.appendChild(a)}}})}(function(){var t=window.matchMedia("(pointer: coarse)").matches;if(t){var r=null,i=0;document.addEventListener("touchstart",function(a){var u=a.target.closest(".chat-message");if(u){var s=u.querySelector(".chat-message-bubble");s&&(i=a.touches[0].clientY,r=setTimeout(function(){var o=u.querySelector(".msg-copy-btn");o&&(document.querySelectorAll(".msg-copy-btn.visible").forEach(function(l){l.classList.remove("visible")}),o.classList.add("visible"))},500))}},{passive:!0}),document.addEventListener("touchmove",function(a){r&&Math.abs(a.touches[0].clientY-i)>10&&(clearTimeout(r),r=null)},{passive:!0}),document.addEventListener("touchend",function(){r&&(clearTimeout(r),r=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 _p(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 Np(e){return String(e||"").replace(/\x1b\][^\x07]*(\x07|\x1b\\)/g,"").replace(/\x1b\[(\d+)C/g,function(t,r){return" ".repeat(Number(r)||1)}).replace(/\x1b\[[0-9;?]*[AB]/g,`
27
27
  `).replace(/\x1b\[[0-9;?]*[su]/g,"").replace(/\x1b\[[0-9;?]*[HfJKr]/g,`
28
28
  `).replace(/\x1bM/g,`
29
29
  `).replace(/\x1b\[[0-9;?]*[ST]/g,`
@@ -32,23 +32,23 @@
32
32
  `).replace(/\n{3,}/g,`
33
33
 
34
34
  `)}function jp(e,t){var r=[];if(!e)return r;var i=String(e||""),a=`
35
- `,u="\r",s="\x1B";if(/^codex\b/.test(String(t||"").trim())){let ce=function(W){return String(W||"").replace(/\x1b\][^\x07]*(\x07|\x1b\\)/g,"").replace(/\x1b\[(\d+)C/g,function(_,Q){return" ".repeat(Number(Q)||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)},ut=function(W){return String(W||"").replace(/\s+/g," ").replace(/[M]+$/g,"").trim()},ee=function(W){return String(W||"").replace(/^›\s*/,"").replace(/^>\s*/,"").trim()},xe=function(W){var _=String(W||"").trim();return!!(!_||Hp(_)||F.test(_)||/^[╭╰│┌└┐┘├┤┬┴┼─═]/.test(_)||/^\[>[0-9;?]*u$/i.test(_)||/^M+$/i.test(_)||/^(?:OpenAI Codex|Codex)\b/i.test(_)||/^(?:tokens?|context window|remaining context|approvals?|sandbox|provider|session id):\s*/i.test(_)||/^(?:thinking|working)\s*(?:\.\.\.|…)?$/i.test(_)||/^[•◦·]\s+(?:thinking|working|running|planning|applying|reading|searching|inspecting|reviewing|summarizing|editing|updating|writing|completed)\b/i.test(_)||/^(?:model|directory|tip|context|cwd|path):\s+/i.test(_))},Se=function(W){var _=String(W||"").trim();if(!/^›(?:\s|$)/.test(_)||F.test(_))return null;var Q=ut(ee(_));return!Q||xe(Q)?null:Q},yt=function(W){var _=String(W||"").trim();if(!/^[•◦·⏺]/.test(_))return null;var Q=_.replace(/^[•◦·]\s*/,"").replace(/^⏺\s+/,"").replace(/^│\s*/,"").trim();return!Q||/^[•◦·⏺]$/.test(Q)||(Q=Q.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,""),Q=ut(Q),!Q||Q.length<2||E.test(Q)||xe(Q))?null:Q},dt=function(W){var _=ut(W);return!_||xe(_)||/^[•◦·⏺›]/.test(_)||/^[\[\]<>0-9;?]+u?$/i.test(_)||/^[╭╰│┌└┐┘├┤┬┴┼─═]/.test(_)||_.length>500?null:_},pe=function(W,_){if(W.indexOf(_)!==0)return!1;var Q=W.slice(_.length);return/^[a-z]{1,4}$/i.test(Q)},Xe=function(W){for(var _=[],Q=0;Q<W.length;Q++){var me=ut(W[Q]);if(!(!me||me.length<2||xe(me))){var Ie=_[_.length-1];if(!Ie){_.push(me);continue}if(me!==Ie){if(me.indexOf(Ie)===0){_[_.length-1]=me;continue}if(Ie.indexOf(me)===0){pe(Ie,me)&&(_[_.length-1]=me);continue}_.push(me)}}}return _.join(a).trim()},bt=function(W){for(var _=0;_<W.length;_++){var Q=String(W[_]||"").trim();if(Q){var me=Se(Q);if(me)return me;if(Q==="\u203A")for(var Ie=_+1;Ie<W.length;Ie++){var Tt=ut(W[Ie]);if(!(!Tt||F.test(Tt)||xe(Tt)))return Tt}}}return null},Zn=function(W){for(var _=[],Q=!1,me=0;me<W.length;me++){var Ie=String(W[me]||"").trim();if(!Ie){if(Q)break;continue}var Tt=yt(Ie);if(Tt){_.push(Tt),Q=!0;continue}if(Q){if(Ie==="\u203A"||/^›(?:\s|$)/.test(Ie)||F.test(Ie)||xe(Ie))break;_.push(ut(Ie))}}return _};for(var o=ce,l=ut,c=ee,d=xe,f=Se,v=yt,m=dt,b=pe,g=Xe,y=bt,w=Zn,F=/\bgpt-\d+(?:\.\d+)?(?:\s+[a-z0-9.-]+)?\s+·\s+\d+%\s+left\s+·\s+(?:\/|~\/).+/i,E=/^(?:thinking|working|running|planning|applying|reading|searching|inspecting|reviewing|summarizing|editing|updating|writing|completed)\b/i,A=[],x=0,S=i.replace(/\r\n?/g,a).split(a),P=0;P<S.length;P++)for(var z=ce(S[P]),G=z.split(a),L=0;L<G.length;L++){var B=String(G[L]||"").trim();if(B){var T=Se(B);if(T){A.push({kind:"user",order:x++,text:T});continue}var I=yt(B);if(I){A.push({kind:"assistant",order:x++,text:I});continue}var V=dt(B);V&&A.push({kind:"echo",order:x++,text:V})}}for(var re=A.filter(function(W,_,Q){var me=Q[_-1];return!me||me.kind!==W.kind||me.text!==W.text}),te=re.filter(function(W){return W.kind==="user"}),$=re.filter(function(W){return W.kind==="assistant"}),ie=re.filter(function(W){return W.kind==="echo"}),U=_p(i),M=U.split(a).map(function(W){return String(W||"").trimEnd()}),H=bt(M),N=te.length?te[te.length-1]:null,Y=ie.map(function(W){return W.text}).filter(function(W){return W.length>=3}),K=null,X=Y.length-1;X>=0;X--)if(Y[X]!==H){K=Y[X];break}!K&&Y.length&&(K=Y[Y.length-1]);for(var ae=N?N.text:K,le=$.filter(function(W){return!N||W.order>N.order}).map(function(W){return W.text}),ue=[],Ce=U.match(/^[ \t]*[•◦·⏺][ \t]*(.+)$/gm)||[],Fe=0;Fe<Ce.length;Fe++){var be=ut(Ce[Fe].replace(/^[ \t]*[•◦·⏺][ \t]*/,""));be&&(E.test(be)||F.test(be)||/\b(?:OpenAI Codex|model:|directory:|Tip:|esc to interrupt)\b/i.test(be)||ue.push(be))}var O=Xe(le)||Xe(Zn(M))||(ue.length?ue[ue.length-1]:null);return ae&&r.push({role:"user",content:ae}),O&&r.push({role:"assistant",content:O}),!r.length&&N?r.push({role:"user",content:N.text}):!r.length&&K&&r.push({role:"user",content:K}),r}for(var R="\0",se="\b",Be="\v",ne="\f",de="",Me="",lt="\xA0",gt="\x07",Ge=new RegExp(s+"\\[[0-9;?]*[a-zA-Z]|"+s+"\\][^"+gt+"]*("+gt+"|"+s+"\\\\\\\\)|"+s+"[><=eP_X^]|["+R+"-"+se+Be+ne+de+"-"+Me+"]|"+lt+"|"+u,"g"),rt=i.replace(Ge,function(ce){return ce===lt?" ":ce===u?a:""}).split(u).join(a),it=rt.split(a).map(function(ce){return ce.trim()}).filter(Boolean),We=[/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],kt=null,ze=-1,De=[],_e=[],fe=[],Ae=0;Ae<it.length;Ae++){var C=it[Ae],ct=C.replace(/^❯\s*/,"");if(ct.indexOf('Try"')===0||ct.indexOf('Try "')===0){De.push(ct);continue}for(var At=!1,Qe=0;Qe<We.length;Qe++)if(We[Qe].test(C)){At=!0,fe.push(C);break}if(!At&&C&&C.indexOf("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")!==0&&C!=="\u276F"&&C.indexOf("esc to interrupt")===-1&&C.indexOf("Claude Code v")===-1&&C.indexOf("Sonnet")===-1&&C.indexOf("~/")!==0&&C.indexOf("\u25CF high")===-1&&C.indexOf("Failed to install Anthropic marketplace")===-1&&C.indexOf("Claude Code has switched from npm to native installer")===-1&&C.indexOf("Fluttering")===-1&&C.indexOf("? for shortcuts")===-1&&C.indexOf("0;")!==0&&C.indexOf("9;")!==0&&C.indexOf("Claude is waiting")===-1&&!(C.indexOf("\u2722")!==-1||C.indexOf("\u2733")!==-1||C.indexOf("\u2736")!==-1||C.indexOf("\u273B")!==-1||C.indexOf("\u273D")!==-1)&&!(C.indexOf("\u2590")===0||C.indexOf("\u259D")===0||C.indexOf("\u2598")===0)&&!((C==="lu"||C==="ue"||C==="tr"||C==="ti"||C==="g"||C==="n"||C==="i\u2026"||C==="\u2026"||C==="uts"||C==="lt"||C==="rg"||C==="\xB7")&&C.length<4)&&!(C.indexOf("\u273DF")===0||C.indexOf("\u273BF")===0)&&C.indexOf("npm WARN")===-1&&C.indexOf("npm notice")===-1&&!(C.indexOf("added ")!==-1&&C.indexOf(" packages")!==-1)&&C.indexOf("audited ")===-1&&!(C.indexOf("found ")!==-1&&C.indexOf(" vulnerabilities")!==-1)&&!(C.indexOf("Using ")!==-1&&C.indexOf(" for ")!==-1&&C.indexOf("session")!==-1)&&C.indexOf("You can use")===-1&&!(C.indexOf("Press ")!==-1&&C.indexOf(" for")!==-1)&&!(C.indexOf("type ")===0&&C.indexOf(" to ")!==-1)&&C.indexOf("[wand]")!==0&&C.indexOf("Captured Claude session ID")===-1&&C.indexOf("\u23F5")===-1&&C.indexOf("acceptedit")===-1&&C.indexOf("shift+tab")===-1&&C.indexOf("tabtocycle")===-1&&C.indexOf("ctrl+g")===-1&&C.indexOf("/effort")===-1&&!(C.indexOf("Opus")!==-1&&C.indexOf("model")!==-1)&&C.indexOf("Haiku")===-1&&C.indexOf("to cycle")===-1&&!(C.indexOf("high \xB7")!==-1||C.indexOf("high\xB7")!==-1)&&!(C.indexOf("medium \xB7")!==-1||C.indexOf("medium\xB7")!==-1)&&!(C.indexOf("low \xB7")!==-1||C.indexOf("low\xB7")!==-1)){if(C.indexOf("\u25CF")===0){if(C=C.slice(1).trim(),!C)continue;_e.push(C);continue}C.length<3&&!/^[a-zA-Z]{3}$/.test(C)||_e.push(C)}}if(fe.length>0){var $e=fe[fe.length-1],xt=$e.match(new RegExp("for ([0-9]+[ms]+| [0-9]+m [0-9]+s)","i")),Xt=xt?"\u6DF1\u5EA6\u601D\u8003 "+xt[0].replace(/for /i,""):"\u6DF1\u5EA6\u601D\u8003\u4E2D...";r.push({role:"thinking",content:Xt,type:"deep-thought"})}if(De.length>0){var at=De[De.length-1].replace(/^Try\s*/,"").trim();r.push({role:"prompt",content:at,type:"suggestion"})}if(!_e.length)return r;for(var qe=[],Oe=null,we=[],Ae=0;Ae<_e.length;Ae++)if(C=_e[Ae],C.indexOf("\u276F")===0){var Ve=C.replace(/^❯\s*/,"").trim();if(Ve.indexOf('Try"')===0||Ve.indexOf('Try "')===0)continue;Oe!==null&&we.length>0&&(qe.push({user:Oe,assistantLines:we}),we=[]),Ve?Oe=Ve:(Oe!==null&&we.length>0&&(qe.push({user:Oe,assistantLines:we}),we=[]),Oe=null)}else Oe!==null&&(C.indexOf("\u23FA")!==-1&&(C.indexOf("Hi!")!==-1||C.indexOf("Hello")!==-1||C.indexOf("What")!==-1||C.indexOf("working")!==-1)?we.push(C):C.indexOf("\u23FA")===0?we.push(C.slice(1).trim()||C):C.length>=8&&C.indexOf("\u2722")===-1&&C.indexOf("\u2733")===-1&&C.indexOf("\u2736")===-1&&C.indexOf("\u273B")===-1&&C.indexOf("\u273D")===-1&&C.indexOf("\u2590")!==0&&C.indexOf("\u259D")!==0&&C.indexOf("\u2598")!==0&&C.indexOf("esctointerrupt")===-1&&C.indexOf("?for")!==0&&C.indexOf("? for")!==0&&we.push(C));if(Oe!==null&&we.length>0&&qe.push({user:Oe,assistantLines:we}),qe.length===0){for(var St="",ht=-1,Ae=0;Ae<_e.length;Ae++)if(C=_e[Ae],!(C.indexOf('Try"')===0||C.indexOf('Try "')===0)&&C.indexOf("Failed to install")===-1&&C.indexOf("ctrl+g")===-1&&C.indexOf("\u25CF ")!==0&&!(C.length<2||C.length>100)&&/^[a-zA-Z]/.test(C)){St=C.trim(),ht=Ae;break}if(St&&ht>=0){var gn=_e.slice(ht+1).filter(function(ce){return ce.length>=8});gn.length>0&&qe.push({user:St,assistantLines:gn})}}for(var It=0;It<qe.length;It++)if(r.push({role:"user",content:qe[It].user}),qe[It].assistantLines.length>0){var Sn=sv(qe[It].assistantLines.join(a));r.push({role:"assistant",content:Sn})}return r}var po="transparent";function pi(e,t){for(var r=t||3,i=e[0].length*r,a=e.length*r,u="",s=0;s<e.length;s++)for(var o=0;o<e[s].length;o++)e[s][o]!==po&&(u+='<rect x="'+o*r+'" y="'+s*r+'" width="'+r+'" height="'+r+'" fill="'+e[s][o]+'"/>');return'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 '+i+" "+a+'" class="pixel-avatar-svg">'+u+"</svg>"}function vi(e){var t=po,r=e.base,i=e.dark,a=e.light||e.base,u=e.accent||"#FFFFFF",s=e.eye||"#2D2D2D",o=e.mouth||"#F28B9A",l=e.nose||e.dark;return[[t,i,t,t,t,t,t,t,i,t],[i,r,i,t,t,t,t,i,r,i],[i,r,r,r,r,r,r,r,r,i],[r,r,u,s,r,r,u,s,r,r],[r,r,u,u,r,r,u,u,r,r],[r,r,r,r,o,o,r,r,r,r],[r,l,r,a,r,r,a,r,l,r],[t,r,r,r,r,r,r,r,r,t],[t,t,r,i,r,r,i,r,t,t],[t,t,t,r,t,t,r,t,t,t]]}var Np={base:"#F0923A",dark:"#C46A1A",light:"#F0923A",accent:"#FFFFFF",eye:"#2D2D2D",mouth:"#F28B9A",nose:"#E87D5A"},Rp={base:"#9EAAB8",dark:"#6B7B8D",light:"#C5CED8",accent:"#FFFFFF",eye:"#7EC88B",mouth:"#F28B9A"},vo=[{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 Wp(e,t){for(var r=String(e||""),i=0,a=0;a<r.length;a++)i=(i<<5)-i+r.charCodeAt(a)|0;return Math.abs(i)%t}var mo={"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"},Ia=null;function go(e){if(!e)return"";var t=e.agentType||"";if(t&&mo[t])return mo[t];if(t)return t;var r=(e.taskId||"").slice(-4)||(au()==="English"?"?":"\u672A\u77E5");return Ue("subagent.helper_fallback_prefix")+r}function ho(e){var t=go(e);if(!t)return t;var r=Ia&&e&&e.taskId?Ia.get(e.taskId):null;return r?t+r:t}function yo(e){var t=e&&(e.agentType||e.taskId)||"subagent";return vo[Wp(t,vo.length)]}function Zm(e){var t=yo(e),r=ho(e),i=pi(vi(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(r)+"</span></div>"}function zp(e,t){if(!e||e.type!=="tool_result")return"";var r=ln(e.content),i=e.is_error===!0,a=typeof r=="string"?r:r==null?"":String(r);if(!i&&!a.trim())return'<div class="subagent-reply pending"><span class="subagent-reply-marker pending">'+p(Ue("subagent.running"))+'</span><span class="typing-indicator"><span></span><span></span><span></span></span></div>';var u=a.trim()?a:Ue("subagent.no_output"),s=a.trim()?Pa(u):p(u),o=Ue(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(o)+'</span></div><div class="subagent-reply-content">'+s+"</div></div>"}var mi={assistant:pi(vi(Np)),user:pi(vi(Rp))},bo={user:{name:"\u8D5B\u535A\u864E\u599E",avatarSvg:mi.user},assistant:{name:"\u52E4\u52B3\u521D\u4E8C",avatarSvg:mi.assistant}};function Ta(e){var t=n.config&&n.config.structuredChatPersona,r=t&&t[e]?t[e]:null,i=bo[e]||bo.assistant;return{name:r&&typeof r.name=="string"&&r.name.trim()?r.name.trim():i.name,avatar:r&&typeof r.avatar=="string"&&r.avatar.trim()?r.avatar.trim():null,avatarSvg:i.avatarSvg}}function Eo(e){return'<div class="pixel-avatar">'+e+"</div>"}function eg(e,t){if(!(!e||!e.parentNode)){var r=Ta(t==="user"?"user":"assistant");e.outerHTML=Eo(r.avatarSvg)}}function Kn(e,t){t=t||{};var r=e==="user"?"user":"assistant",i=Ta(r),a=i.avatar?'<img class="pixel-avatar-image" src="'+p(i.avatar)+'" alt="'+p(i.name)+'" onerror="handleChatAvatarImageError(this, '+JSON.stringify(r)+')" />':Eo(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 Vp(){var e=Ht();return!e||!oe(e)?"":Ra(e,{kind:"compact"})}function La(e,t,r,i){if(e.role==="thinking"){var a=typeof e.content=="string"?e.content:"";if(!a.trim())return"";var u=Kt("thinking",[fu(e,r),"pty"]),s=Ze(u),o=s===null?Bn("thinking"):s;return'<div class="chat-message thinking"><div class="thinking-inline thinking-pty '+(o?"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">'+(o?"\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 ev(e,t,r,i);var l=Kn(e.role),c=e.role==="assistant"?Pa(e.content):p(e.content);return'<div class="chat-message '+e.role+'">'+l+'<div class="chat-message-bubble">'+c+"</div></div>"}function Up(e){var t={};if(!Array.isArray(e))return t;for(var r=0;r<e.length;r++){var i=e[r];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 Fo(e,t){var r=e&&t?e[t]:null;if(!r||!r.length)return null;for(var i=0;i<r.length-1;i++)if(qo(r[i],r[i+1]))return r[i+1];return r[r.length-1]}function Kp(e,t){var r=e&&t?e[t]:null;if(!r||r.length<2)return!1;for(var i=0;i<r.length-1;i++)if(qo(r[i],r[i+1]))return!0;return!1}function Jp(e){return'<div class="structured-tool-hint">\u5DF2\u81EA\u52A8\u6062\u590D\u4E00\u6B21 '+p(Oa(e))+" \u53C2\u6570\u95EE\u9898</div>"}var wo={Read:1,Glob:1,Grep:1,WebFetch:1,WebSearch:1,TodoRead:1};function Yp(e){for(var t=[],r=0;r<e.length;){var i=e[r];if(i.type==="tool_result"){r++;continue}if(i.type==="tool_use"&&wo[i.name]){for(var a=[{block:i,index:r}],u=r+1;u<e.length;){if(e[u].type==="tool_result"){u++;continue}if(e[u].type==="tool_use"&&wo[e[u].name])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:r}),r=u}else t.push({type:"single",block:i,index:r}),r++}return t}var Gp={Read:"\u8BFB\u53D6",Glob:"\u641C\u7D22",Grep:"\u641C\u7D22",WebFetch:"\u6293\u53D6",WebSearch:"\u641C\u7D22",TodoRead:"\u5F85\u529E"};function Qp(e,t,r,i){for(var a={},u=0;u<e.length;u++){var s=e[u].block.name;a[s]=(a[s]||0)+1}for(var o=!0,l=!1,u=0;u<e.length;u++){var c=e[u].block,d=Fo(r,c.id);d?d.is_error&&(l=!0):o=!1}var f=o?l?"\u2717":"\u2713":"\u2026",v=o?l?"error":"done":"pending",m=[];for(var b in a)m.push(a[b]+" "+(Gp[b]||b));for(var g=m.join(" \xB7 "),y=Kt("tool-group",[i,e[0]&&e[0].index,e.length]),w=Ze(y),F=w===null?Bn("toolGroup"):w,E="",u=0;u<e.length;u++)try{E+=Do(e[u].block,t,r,e[u].index,i)}catch{E+='<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(y)+'" data-expanded="'+(F?"true":"false")+'" data-status="'+v+'"><div class="tool-group-summary" onclick="__toolGroupToggle(this.parentNode)"><span class="tool-group-status">'+f+'</span><span class="tool-group-text">'+p(g)+'</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:'+(F?"rotate(180deg)":"")+'"><polyline points="6 9 12 15 18 9"/></svg></div><div class="tool-group-body" style="display:'+(F?"block":"none")+';">'+E+"</div></div>"}window.__toolGroupToggle=function(e){if(e){var t=e.getAttribute("data-expanded")==="true";e.setAttribute("data-expanded",t?"false":"true");var r=e.querySelector(".tool-group-body");r&&(r.style.display=t?"none":"block");var i=e.querySelector(".tool-group-chevron");i&&(i.style.transform=t?"":"rotate(180deg)"),bn(e,"tool-group")}};function Ma(e){if(!e||e.type!=="tool_use")return null;var t=e.input||{},r=typeof t.subagent_type=="string"?t.subagent_type:null;return!r&&e.name!=="Task"&&e.name!=="Agent"?null:{taskId:e.id,agentType:r||void 0,taskDescription:typeof t.description=="string"?t.description:void 0}}function $p(e){var t=new Map;if(!Array.isArray(e))return t;for(var r=0;r<e.length;r++){var i=e[r];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 s=u.__subagent||Ma(u);s&&t.set(u.id,s)}}}return t}function Xp(e){var t=new Map;if(!Array.isArray(e))return t;var r=new Map,i=new Set;function a(d){if(!(!d||!d.taskId)&&!i.has(d.taskId)){i.add(d.taskId);var f=go(d);f&&(r.has(f)||r.set(f,[]),r.get(f).push(d.taskId))}}for(var u=0;u<e.length;u++){var s=e[u];if(!(!s||!Array.isArray(s.content)))for(var o=0;o<s.content.length;o++){var l=s.content[o];if(l){var c=l.__subagent||(l.type==="tool_use"?Ma(l):null);c&&a(c)}}}return r.forEach(function(d){if(!(d.length<2))for(var f=0;f<d.length;f++)t.set(d[f]," #"+(f+1))}),t}function Co(e,t){var r=[];if(!Array.isArray(e)||!e.length)return r;for(var i=null,a=0;a<e.length;a++){var u=e[a],s=u&&u.type==="text"&&u.__processing===!0;if(s&&i){i.blocks.push(u);continue}var o=u&&u.__subagent?u.__subagent:null;o||(o=Ma(u)),!o&&u&&u.type==="tool_result"&&t&&t.has(u.tool_use_id)&&(o=t.get(u.tool_use_id));var l=o?o.taskId:null;(!i||i.key!==l)&&(i={key:l,subagent:o,blocks:[],firstIndex:a},r.push(i)),i.blocks.push(u)}return r}function qa(e,t,r,i,a){var u="";try{for(var s=Yp(e),o=0;o<s.length;o++){var l=s[o];try{if(l.type==="group"){for(var c=[],d=0;d<l.items.length;d++)c.push({block:l.items[d].block,index:l.items[d].index+t});u+=Qp(c,r,i,a)}else u+=Do(l.block,r,i,l.index+t,a)}catch{u+='<div class="render-error">\u6D88\u606F\u5757\u6E32\u67D3\u5931\u8D25</div>'}}}catch{u+='<div class="render-error">\u6D88\u606F\u6E32\u67D3\u5931\u8D25</div>'}return u}function Bo(e,t,r,i,a,u){for(var s=u||{},o=s.showHandoff!==!1,l="",c=null,d=0;d<e.length;d++){var f=e[d],v=qa(f.blocks,f.firstIndex,t,i,a);if(!(!v||!v.trim()))if(f.subagent){var m=o&&c!==f.subagent.taskId;l+=Zp(f,r,v,a,m),c=f.subagent.taskId}else l+='<div class="chat-message-segment parent">'+Kn(t)+'<div class="chat-message-content">'+v+"</div></div>",c=null}return l}function Zp(e,t,r,i,a){var u=e.subagent,s=yo(u),o=ho(u),l=u.taskId||"",c=pi(vi(s)),d;if(a){var f='<strong class="subagent-panel-name">'+p(o)+'</strong><span class="subagent-panel-tag" title="'+p(Ue("subagent.tag_title"))+'">'+p(Ue("subagent.tag"))+"</span>",v=!!(u.taskDescription&&String(u.taskDescription).trim()),m=v?Ue("subagent.handoff.with_desc",{parent:p(t),sub:f}):Ue("subagent.handoff",{parent:p(t),sub:f}),b=v?'<span class="subagent-panel-task-desc">'+p(u.taskDescription)+"</span>":"";d='<span class="subagent-panel-arrow" aria-hidden="true">\u21B3</span><span class="subagent-panel-attribution">'+m+b+"</span>"}else d='<span class="subagent-panel-attribution"><strong class="subagent-panel-name">'+p(o)+'</strong><span class="subagent-panel-task-desc"> '+p(Ue("subagent.continued"))+"</span></span>";var g=Kt("subagent-panel",[i,l]),y=Ze(g),w=y===null?!1:!!y;function F(E){return'<button type="button" class="subagent-panel-toggle" data-position="'+E+'" onclick="__subagentPanelToggle(event, this)" aria-expanded="'+(w?"true":"false")+'" aria-label="'+p(Ue(w?"ui.collapse_panel_aria":"ui.expand_panel_aria"))+'"><span class="subagent-panel-toggle-label">'+p(Ue(w?"ui.collapse":"ui.expand"))+'</span><svg class="subagent-panel-toggle-icon" width="10" height="10" viewBox="0 0 10 10" fill="none" aria-hidden="true"><path d="M2.5 3.75L5 6.25L7.5 3.75" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/></svg></button>'}return'<div class="subagent-panel" data-expand-kind="subagent-panel" data-expand-key="'+p(g)+'" data-agent-id="'+p(l)+'" data-expanded="'+(w?"true":"false")+'" style="--agent-color:'+s.primary+'"><div class="subagent-panel-header" onclick="__subagentPanelToggle(event, this)" role="button" tabindex="0" aria-label="'+p(Ue("subagent.title_aria"))+'"><span class="subagent-panel-avatar" aria-hidden="true">'+c+"</span>"+d+F("top")+'</div><div class="subagent-panel-body">'+r+'</div><div class="subagent-panel-footer"><span class="subagent-panel-footer-hint" aria-hidden="true">\u2014 '+p(o)+" \u2014</span>"+F("bottom")+"</div></div>"}function ev(e,t,r,i){var a=e.role,u=fu(e,r),s=a==="user"&&e.content&&e.content.some(function(A){return A.__queued});if(!e.content||e.content.length===0)return a==="assistant"?'<div class="chat-message '+a+'">'+Kn(a)+'<div class="chat-message-bubble"><div class="typing-indicator"><span></span><span></span><span></span></div></div></div>':'<div class="chat-message '+a+' empty-message" data-message-key="'+p(u)+'">'+Kn(a)+'<div class="chat-message-content"><span class="empty-message-hint">\uFF08\u7A7A\u6D88\u606F\uFF09</span></div></div>';var o=Up(e.content),l=Ta("assistant");if(a!=="assistant"){var c=Co(e.content,i),d=c.some(function(A){return A.subagent}),f=s?" queued":"",v=s?'<span class="queued-badge">\u6392\u961F\u4E2D</span>':"",m=Vp();if(d){var b=Bo(c,a,l.name,o,u,{showHandoff:!1});return'<div class="chat-message '+a+f+' multi-agent" data-message-key="'+p(u)+'">'+b+v+"</div>"}var g=qa(e.content,0,a,o,u);return'<div class="chat-message '+a+f+'" data-message-key="'+p(u)+'">'+Kn(a,{leftSlot:m})+'<div class="chat-message-content">'+g+v+"</div></div>"}var y=Co(e.content,i),w=y.some(function(A){return A.subagent});if(!w){var F=qa(e.content,0,a,o,u);return'<div class="chat-message '+a+'" data-message-key="'+p(u)+'">'+Kn(a)+'<div class="chat-message-content">'+F+"</div></div>"}var E='<div class="chat-message '+a+' multi-agent" data-message-key="'+p(u)+'">';return E+=Bo(y,a,l.name,o,u,{showHandoff:!0}),E+="</div>",E}function Do(e,t,r,i,a){if(!e||!e.type||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 zp(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"?Pa(e.text||""):p(e.text||"");case"thinking":var u=e.thinking||"",s=e.thinking===void 0&&e.type==="thinking";if(s)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(!u.trim())return"";var o=u.length>60?u.slice(0,57)+"\u2026":u,l=Kt("thinking",[a,i]),c=Ze(l),d=c===null?Bn("thinking"):c;return'<div class="thinking-inline '+(d?"expanded":"collapsed")+'" data-expand-kind="thinking" data-expand-key="'+p(l)+'" data-thinking="'+p(u)+'" onclick="__thinkingToggle(this)"><span class="thinking-inline-icon">\u29BF</span><span class="thinking-inline-preview">'+p(d?u:o)+'</span><span class="thinking-inline-action">'+(d?"\u6536\u8D77":"\u5C55\u5F00")+"</span></div>";case"tool_use":var f=Fo(r,e.id),v=iv(e,f,i,a);return Kp(r,e.id)&&(v=Jp(e.name||"\u5DE5\u5177")+v),v;case"tool_result":return"";default:var m=e&&e.type?String(e.type):"\u672A\u77E5",b="";try{b=JSON.stringify(e,null,2)}catch{b="{}"}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(b)+"</pre></div>"}}function tv(e,t,r,i,a,u,s){var o=e.id||"tool-"+r,l=Kt("inline-tool",[u,o||s,s]),c=Ze(l),d=e.input||{},f=ln(t&&t.content),v=t&&t.is_error,m=f.length>0,b=v?"\u2717":m?"\u2713":"\u2026",g="",y="",w="",F="";if(r==="Read"){g='<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 E=d.file_path||d.path||i||"",A="";d.limit&&(A=" "+d.offset+"-"+(d.offset+d.limit)),y=E,w=A}else if(r==="Glob"){g='<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 x=d.pattern||"",S=d.path||i||"";y=x,w=S}else if(r==="Grep"){g='<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 x=d.pattern||"",S=d.path||i||"";y=x,w=S,d.context&&(w+=" -C"+d.context)}else if(r==="WebFetch"){g='<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 P=d.url||"";y=P,w=a||""}else if(r==="WebSearch"){g='<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 z=d.query||"";y=z,w=a||""}else r==="TodoRead"?(g='<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>',y="\u8BFB\u53D6\u5F85\u529E\u5217\u8868",w=a||""):(g='<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>',y=Oa(r),w=a||"");if(m){var G=f.split(`
35
+ `,u="\r",s="\x1B";if(/^codex\b/.test(String(t||"").trim())){let Xe=function(W){return String(W||"").replace(/\x1b\][^\x07]*(\x07|\x1b\\)/g,"").replace(/\x1b\[(\d+)C/g,function(_,$){return" ".repeat(Number($)||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)},de=function(W){return String(W||"").replace(/\s+/g," ").replace(/[M]+$/g,"").trim()},ue=function(W){return String(W||"").replace(/^›\s*/,"").replace(/^>\s*/,"").trim()},ve=function(W){var _=String(W||"").trim();return!!(!_||_p(_)||F.test(_)||/^[╭╰│┌└┐┘├┤┬┴┼─═]/.test(_)||/^\[>[0-9;?]*u$/i.test(_)||/^M+$/i.test(_)||/^(?:OpenAI Codex|Codex)\b/i.test(_)||/^(?:tokens?|context window|remaining context|approvals?|sandbox|provider|session id):\s*/i.test(_)||/^(?:thinking|working)\s*(?:\.\.\.|…)?$/i.test(_)||/^[•◦·]\s+(?:thinking|working|running|planning|applying|reading|searching|inspecting|reviewing|summarizing|editing|updating|writing|completed)\b/i.test(_)||/^(?:model|directory|tip|context|cwd|path):\s+/i.test(_))},Me=function(W){var _=String(W||"").trim();if(!/^›(?:\s|$)/.test(_)||F.test(_))return null;var $=de(ue(_));return!$||ve($)?null:$},yt=function(W){var _=String(W||"").trim();if(!/^[•◦·⏺]/.test(_))return null;var $=_.replace(/^[•◦·]\s*/,"").replace(/^⏺\s+/,"").replace(/^│\s*/,"").trim();return!$||/^[•◦·⏺]$/.test($)||($=$.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,""),$=de($),!$||$.length<2||E.test($)||ve($))?null:$},dt=function(W){var _=de(W);return!_||ve(_)||/^[•◦·⏺›]/.test(_)||/^[\[\]<>0-9;?]+u?$/i.test(_)||/^[╭╰│┌└┐┘├┤┬┴┼─═]/.test(_)||_.length>500?null:_},ye=function(W,_){if(W.indexOf(_)!==0)return!1;var $=W.slice(_.length);return/^[a-z]{1,4}$/i.test($)},He=function(W){for(var _=[],$=0;$<W.length;$++){var me=de(W[$]);if(!(!me||me.length<2||ve(me))){var Ie=_[_.length-1];if(!Ie){_.push(me);continue}if(me!==Ie){if(me.indexOf(Ie)===0){_[_.length-1]=me;continue}if(Ie.indexOf(me)===0){ye(Ie,me)&&(_[_.length-1]=me);continue}_.push(me)}}}return _.join(a).trim()},In=function(W){for(var _=0;_<W.length;_++){var $=String(W[_]||"").trim();if($){var me=Me($);if(me)return me;if($==="\u203A")for(var Ie=_+1;Ie<W.length;Ie++){var zt=de(W[Ie]);if(!(!zt||F.test(zt)||ve(zt)))return zt}}}return null},bt=function(W){for(var _=[],$=!1,me=0;me<W.length;me++){var Ie=String(W[me]||"").trim();if(!Ie){if($)break;continue}var zt=yt(Ie);if(zt){_.push(zt),$=!0;continue}if($){if(Ie==="\u203A"||/^›(?:\s|$)/.test(Ie)||F.test(Ie)||ve(Ie))break;_.push(de(Ie))}}return _};for(var o=Xe,l=de,c=ue,d=ve,f=Me,v=yt,m=dt,b=ye,g=He,y=In,w=bt,F=/\bgpt-\d+(?:\.\d+)?(?:\s+[a-z0-9.-]+)?\s+·\s+\d+%\s+left\s+·\s+(?:\/|~\/).+/i,E=/^(?:thinking|working|running|planning|applying|reading|searching|inspecting|reviewing|summarizing|editing|updating|writing|completed)\b/i,A=[],x=0,S=i.replace(/\r\n?/g,a).split(a),P=0;P<S.length;P++)for(var z=Xe(S[P]),G=z.split(a),L=0;L<G.length;L++){var B=String(G[L]||"").trim();if(B){var T=Me(B);if(T){A.push({kind:"user",order:x++,text:T});continue}var I=yt(B);if(I){A.push({kind:"assistant",order:x++,text:I});continue}var V=dt(B);V&&A.push({kind:"echo",order:x++,text:V})}}for(var te=A.filter(function(W,_,$){var me=$[_-1];return!me||me.kind!==W.kind||me.text!==W.text}),ee=te.filter(function(W){return W.kind==="user"}),Q=te.filter(function(W){return W.kind==="assistant"}),ne=te.filter(function(W){return W.kind==="echo"}),U=Np(i),M=U.split(a).map(function(W){return String(W||"").trimEnd()}),H=In(M),j=ee.length?ee[ee.length-1]:null,Y=ne.map(function(W){return W.text}).filter(function(W){return W.length>=3}),K=null,X=Y.length-1;X>=0;X--)if(Y[X]!==H){K=Y[X];break}!K&&Y.length&&(K=Y[Y.length-1]);for(var oe=j?j.text:K,le=Q.filter(function(W){return!j||W.order>j.order}).map(function(W){return W.text}),re=[],Be=U.match(/^[ \t]*[•◦·⏺][ \t]*(.+)$/gm)||[],De=0;De<Be.length;De++){var Ee=de(Be[De].replace(/^[ \t]*[•◦·⏺][ \t]*/,""));Ee&&(E.test(Ee)||F.test(Ee)||/\b(?:OpenAI Codex|model:|directory:|Tip:|esc to interrupt)\b/i.test(Ee)||re.push(Ee))}var O=He(le)||He(bt(M))||(re.length?re[re.length-1]:null);return oe&&r.push({role:"user",content:oe}),O&&r.push({role:"assistant",content:O}),!r.length&&j?r.push({role:"user",content:j.text}):!r.length&&K&&r.push({role:"user",content:K}),r}for(var R="\0",ie="\b",Se="\v",ce="\f",ae="",ke="",lt="\xA0",rt="\x07",kt=new RegExp(s+"\\[[0-9;?]*[a-zA-Z]|"+s+"\\][^"+rt+"]*("+rt+"|"+s+"\\\\\\\\)|"+s+"[><=eP_X^]|["+R+"-"+ie+Se+ce+ae+"-"+ke+"]|"+lt+"|"+u,"g"),Ve=i.replace(kt,function(Xe){return Xe===lt?" ":Xe===u?a:""}).split(u).join(a),it=Ve.split(a).map(function(Xe){return Xe.trim()}).filter(Boolean),Ue=[/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],At=null,Ke=-1,je=[],Ae=[],pe=[],Fe=0;Fe<it.length;Fe++){var C=it[Fe],at=C.replace(/^❯\s*/,"");if(at.indexOf('Try"')===0||at.indexOf('Try "')===0){je.push(at);continue}for(var ct=!1,gt=0;gt<Ue.length;gt++)if(Ue[gt].test(C)){ct=!0,pe.push(C);break}if(!ct&&C&&C.indexOf("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")!==0&&C!=="\u276F"&&C.indexOf("esc to interrupt")===-1&&C.indexOf("Claude Code v")===-1&&C.indexOf("Sonnet")===-1&&C.indexOf("~/")!==0&&C.indexOf("\u25CF high")===-1&&C.indexOf("Failed to install Anthropic marketplace")===-1&&C.indexOf("Claude Code has switched from npm to native installer")===-1&&C.indexOf("Fluttering")===-1&&C.indexOf("? for shortcuts")===-1&&C.indexOf("0;")!==0&&C.indexOf("9;")!==0&&C.indexOf("Claude is waiting")===-1&&!(C.indexOf("\u2722")!==-1||C.indexOf("\u2733")!==-1||C.indexOf("\u2736")!==-1||C.indexOf("\u273B")!==-1||C.indexOf("\u273D")!==-1)&&!(C.indexOf("\u2590")===0||C.indexOf("\u259D")===0||C.indexOf("\u2598")===0)&&!((C==="lu"||C==="ue"||C==="tr"||C==="ti"||C==="g"||C==="n"||C==="i\u2026"||C==="\u2026"||C==="uts"||C==="lt"||C==="rg"||C==="\xB7")&&C.length<4)&&!(C.indexOf("\u273DF")===0||C.indexOf("\u273BF")===0)&&C.indexOf("npm WARN")===-1&&C.indexOf("npm notice")===-1&&!(C.indexOf("added ")!==-1&&C.indexOf(" packages")!==-1)&&C.indexOf("audited ")===-1&&!(C.indexOf("found ")!==-1&&C.indexOf(" vulnerabilities")!==-1)&&!(C.indexOf("Using ")!==-1&&C.indexOf(" for ")!==-1&&C.indexOf("session")!==-1)&&C.indexOf("You can use")===-1&&!(C.indexOf("Press ")!==-1&&C.indexOf(" for")!==-1)&&!(C.indexOf("type ")===0&&C.indexOf(" to ")!==-1)&&C.indexOf("[wand]")!==0&&C.indexOf("Captured Claude session ID")===-1&&C.indexOf("\u23F5")===-1&&C.indexOf("acceptedit")===-1&&C.indexOf("shift+tab")===-1&&C.indexOf("tabtocycle")===-1&&C.indexOf("ctrl+g")===-1&&C.indexOf("/effort")===-1&&!(C.indexOf("Opus")!==-1&&C.indexOf("model")!==-1)&&C.indexOf("Haiku")===-1&&C.indexOf("to cycle")===-1&&!(C.indexOf("high \xB7")!==-1||C.indexOf("high\xB7")!==-1)&&!(C.indexOf("medium \xB7")!==-1||C.indexOf("medium\xB7")!==-1)&&!(C.indexOf("low \xB7")!==-1||C.indexOf("low\xB7")!==-1)){if(C.indexOf("\u25CF")===0){if(C=C.slice(1).trim(),!C)continue;Ae.push(C);continue}C.length<3&&!/^[a-zA-Z]{3}$/.test(C)||Ae.push(C)}}if(pe.length>0){var qe=pe[pe.length-1],xt=qe.match(new RegExp("for ([0-9]+[ms]+| [0-9]+m [0-9]+s)","i")),Xt=xt?"\u6DF1\u5EA6\u601D\u8003 "+xt[0].replace(/for /i,""):"\u6DF1\u5EA6\u601D\u8003\u4E2D...";r.push({role:"thinking",content:Xt,type:"deep-thought"})}if(je.length>0){var ut=je[je.length-1].replace(/^Try\s*/,"").trim();r.push({role:"prompt",content:ut,type:"suggestion"})}if(!Ae.length)return r;for(var Oe=[],Pe=null,Ce=[],Fe=0;Fe<Ae.length;Fe++)if(C=Ae[Fe],C.indexOf("\u276F")===0){var Je=C.replace(/^❯\s*/,"").trim();if(Je.indexOf('Try"')===0||Je.indexOf('Try "')===0)continue;Pe!==null&&Ce.length>0&&(Oe.push({user:Pe,assistantLines:Ce}),Ce=[]),Je?Pe=Je:(Pe!==null&&Ce.length>0&&(Oe.push({user:Pe,assistantLines:Ce}),Ce=[]),Pe=null)}else Pe!==null&&(C.indexOf("\u23FA")!==-1&&(C.indexOf("Hi!")!==-1||C.indexOf("Hello")!==-1||C.indexOf("What")!==-1||C.indexOf("working")!==-1)?Ce.push(C):C.indexOf("\u23FA")===0?Ce.push(C.slice(1).trim()||C):C.length>=8&&C.indexOf("\u2722")===-1&&C.indexOf("\u2733")===-1&&C.indexOf("\u2736")===-1&&C.indexOf("\u273B")===-1&&C.indexOf("\u273D")===-1&&C.indexOf("\u2590")!==0&&C.indexOf("\u259D")!==0&&C.indexOf("\u2598")!==0&&C.indexOf("esctointerrupt")===-1&&C.indexOf("?for")!==0&&C.indexOf("? for")!==0&&Ce.push(C));if(Pe!==null&&Ce.length>0&&Oe.push({user:Pe,assistantLines:Ce}),Oe.length===0){for(var St="",ht=-1,Fe=0;Fe<Ae.length;Fe++)if(C=Ae[Fe],!(C.indexOf('Try"')===0||C.indexOf('Try "')===0)&&C.indexOf("Failed to install")===-1&&C.indexOf("ctrl+g")===-1&&C.indexOf("\u25CF ")!==0&&!(C.length<2||C.length>100)&&/^[a-zA-Z]/.test(C)){St=C.trim(),ht=Fe;break}if(St&&ht>=0){var gn=Ae.slice(ht+1).filter(function(Xe){return Xe.length>=8});gn.length>0&&Oe.push({user:St,assistantLines:gn})}}for(var It=0;It<Oe.length;It++)if(r.push({role:"user",content:Oe[It].user}),Oe[It].assistantLines.length>0){var Sn=ov(Oe[It].assistantLines.join(a));r.push({role:"assistant",content:Sn})}return r}var mo="transparent";function pi(e,t){for(var r=t||3,i=e[0].length*r,a=e.length*r,u="",s=0;s<e.length;s++)for(var o=0;o<e[s].length;o++)e[s][o]!==mo&&(u+='<rect x="'+o*r+'" y="'+s*r+'" width="'+r+'" height="'+r+'" fill="'+e[s][o]+'"/>');return'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 '+i+" "+a+'" class="pixel-avatar-svg">'+u+"</svg>"}function vi(e){var t=mo,r=e.base,i=e.dark,a=e.light||e.base,u=e.accent||"#FFFFFF",s=e.eye||"#2D2D2D",o=e.mouth||"#F28B9A",l=e.nose||e.dark;return[[t,i,t,t,t,t,t,t,i,t],[i,r,i,t,t,t,t,i,r,i],[i,r,r,r,r,r,r,r,r,i],[r,r,u,s,r,r,u,s,r,r],[r,r,u,u,r,r,u,u,r,r],[r,r,r,r,o,o,r,r,r,r],[r,l,r,a,r,r,a,r,l,r],[t,r,r,r,r,r,r,r,r,t],[t,t,r,i,r,r,i,r,t,t],[t,t,t,r,t,t,r,t,t,t]]}var Rp={base:"#F0923A",dark:"#C46A1A",light:"#F0923A",accent:"#FFFFFF",eye:"#2D2D2D",mouth:"#F28B9A",nose:"#E87D5A"},Wp={base:"#9EAAB8",dark:"#6B7B8D",light:"#C5CED8",accent:"#FFFFFF",eye:"#7EC88B",mouth:"#F28B9A"},go=[{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 zp(e,t){for(var r=String(e||""),i=0,a=0;a<r.length;a++)i=(i<<5)-i+r.charCodeAt(a)|0;return Math.abs(i)%t}var ho={"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"},Ia=null;function yo(e){if(!e)return"";var t=e.agentType||"";if(t&&ho[t])return ho[t];if(t)return t;var r=(e.taskId||"").slice(-4)||(uu()==="English"?"?":"\u672A\u77E5");return Ye("subagent.helper_fallback_prefix")+r}function bo(e){var t=yo(e);if(!t)return t;var r=Ia&&e&&e.taskId?Ia.get(e.taskId):null;return r?t+r:t}function Eo(e){var t=e&&(e.agentType||e.taskId)||"subagent";return go[zp(t,go.length)]}function ng(e){var t=Eo(e),r=bo(e),i=pi(vi(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(r)+"</span></div>"}function Vp(e,t){if(!e||e.type!=="tool_result")return"";var r=ln(e.content),i=e.is_error===!0,a=typeof r=="string"?r:r==null?"":String(r);if(!i&&!a.trim())return'<div class="subagent-reply pending"><span class="subagent-reply-marker pending">'+p(Ye("subagent.running"))+'</span><span class="typing-indicator"><span></span><span></span><span></span></span></div>';var u=a.trim()?a:Ye("subagent.no_output"),s=a.trim()?Pa(u):p(u),o=Ye(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(o)+'</span></div><div class="subagent-reply-content">'+s+"</div></div>"}var mi={assistant:pi(vi(Rp)),user:pi(vi(Wp))},Fo={user:{name:"\u8D5B\u535A\u864E\u599E",avatarSvg:mi.user},assistant:{name:"\u52E4\u52B3\u521D\u4E8C",avatarSvg:mi.assistant}};function Ta(e){var t=n.config&&n.config.structuredChatPersona,r=t&&t[e]?t[e]:null,i=Fo[e]||Fo.assistant;return{name:r&&typeof r.name=="string"&&r.name.trim()?r.name.trim():i.name,avatar:r&&typeof r.avatar=="string"&&r.avatar.trim()?r.avatar.trim():null,avatarSvg:i.avatarSvg}}function wo(e){return'<div class="pixel-avatar">'+e+"</div>"}function rg(e,t){if(!(!e||!e.parentNode)){var r=Ta(t==="user"?"user":"assistant");e.outerHTML=wo(r.avatarSvg)}}function Jn(e,t){t=t||{};var r=e==="user"?"user":"assistant",i=Ta(r),a=i.avatar?'<img class="pixel-avatar-image" src="'+p(i.avatar)+'" alt="'+p(i.name)+'" onerror="handleChatAvatarImageError(this, '+JSON.stringify(r)+')" />':wo(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 Up(){var e=Pt();return!e||!se(e)?"":Ra(e,{kind:"compact"})}function La(e,t,r,i){if(e.role==="thinking"){var a=typeof e.content=="string"?e.content:"";if(!a.trim())return"";var u=Kt("thinking",[pu(e,r),"pty"]),s=Ze(u),o=s===null?Bn("thinking"):s;return'<div class="chat-message thinking"><div class="thinking-inline thinking-pty '+(o?"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">'+(o?"\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 tv(e,t,r,i);var l=Jn(e.role),c=e.role==="assistant"?Pa(e.content):p(e.content);return'<div class="chat-message '+e.role+'">'+l+'<div class="chat-message-bubble">'+c+"</div></div>"}function Kp(e){var t={};if(!Array.isArray(e))return t;for(var r=0;r<e.length;r++){var i=e[r];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 Co(e,t){var r=e&&t?e[t]:null;if(!r||!r.length)return null;for(var i=0;i<r.length-1;i++)if(Po(r[i],r[i+1]))return r[i+1];return r[r.length-1]}function Jp(e,t){var r=e&&t?e[t]:null;if(!r||r.length<2)return!1;for(var i=0;i<r.length-1;i++)if(Po(r[i],r[i+1]))return!0;return!1}function Yp(e){return'<div class="structured-tool-hint">\u5DF2\u81EA\u52A8\u6062\u590D\u4E00\u6B21 '+p(Oa(e))+" \u53C2\u6570\u95EE\u9898</div>"}var Bo={Read:1,Glob:1,Grep:1,WebFetch:1,WebSearch:1,TodoRead:1};function Gp(e){for(var t=[],r=0;r<e.length;){var i=e[r];if(i.type==="tool_result"){r++;continue}if(i.type==="tool_use"&&Bo[i.name]){for(var a=[{block:i,index:r}],u=r+1;u<e.length;){if(e[u].type==="tool_result"){u++;continue}if(e[u].type==="tool_use"&&Bo[e[u].name])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:r}),r=u}else t.push({type:"single",block:i,index:r}),r++}return t}var Qp={Read:"\u8BFB\u53D6",Glob:"\u641C\u7D22",Grep:"\u641C\u7D22",WebFetch:"\u6293\u53D6",WebSearch:"\u641C\u7D22",TodoRead:"\u5F85\u529E"};function $p(e,t,r,i){for(var a={},u=0;u<e.length;u++){var s=e[u].block.name;a[s]=(a[s]||0)+1}for(var o=!0,l=!1,u=0;u<e.length;u++){var c=e[u].block,d=Co(r,c.id);d?d.is_error&&(l=!0):o=!1}var f=o?l?"\u2717":"\u2713":"\u2026",v=o?l?"error":"done":"pending",m=[];for(var b in a)m.push(a[b]+" "+(Qp[b]||b));for(var g=m.join(" \xB7 "),y=Kt("tool-group",[i,e[0]&&e[0].index,e.length]),w=Ze(y),F=w===null?Bn("toolGroup"):w,E="",u=0;u<e.length;u++)try{E+=Ao(e[u].block,t,r,e[u].index,i)}catch{E+='<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(y)+'" data-expanded="'+(F?"true":"false")+'" data-status="'+v+'"><div class="tool-group-summary" onclick="__toolGroupToggle(this.parentNode)"><span class="tool-group-status">'+f+'</span><span class="tool-group-text">'+p(g)+'</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:'+(F?"rotate(180deg)":"")+'"><polyline points="6 9 12 15 18 9"/></svg></div><div class="tool-group-body" style="display:'+(F?"block":"none")+';">'+E+"</div></div>"}window.__toolGroupToggle=function(e){if(e){var t=e.getAttribute("data-expanded")==="true";e.setAttribute("data-expanded",t?"false":"true");var r=e.querySelector(".tool-group-body");r&&(r.style.display=t?"none":"block");var i=e.querySelector(".tool-group-chevron");i&&(i.style.transform=t?"":"rotate(180deg)"),bn(e,"tool-group")}};function Ma(e){if(!e||e.type!=="tool_use")return null;var t=e.input||{},r=typeof t.subagent_type=="string"?t.subagent_type:null;return!r&&e.name!=="Task"&&e.name!=="Agent"?null:{taskId:e.id,agentType:r||void 0,taskDescription:typeof t.description=="string"?t.description:void 0}}function Xp(e){var t=new Map;if(!Array.isArray(e))return t;for(var r=0;r<e.length;r++){var i=e[r];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 s=u.__subagent||Ma(u);s&&t.set(u.id,s)}}}return t}function Zp(e){var t=new Map;if(!Array.isArray(e))return t;var r=new Map,i=new Set;function a(d){if(!(!d||!d.taskId)&&!i.has(d.taskId)){i.add(d.taskId);var f=yo(d);f&&(r.has(f)||r.set(f,[]),r.get(f).push(d.taskId))}}for(var u=0;u<e.length;u++){var s=e[u];if(!(!s||!Array.isArray(s.content)))for(var o=0;o<s.content.length;o++){var l=s.content[o];if(l){var c=l.__subagent||(l.type==="tool_use"?Ma(l):null);c&&a(c)}}}return r.forEach(function(d){if(!(d.length<2))for(var f=0;f<d.length;f++)t.set(d[f]," #"+(f+1))}),t}function Do(e,t){var r=[];if(!Array.isArray(e)||!e.length)return r;for(var i=null,a=0;a<e.length;a++){var u=e[a],s=u&&u.type==="text"&&u.__processing===!0;if(s&&i){i.blocks.push(u);continue}var o=u&&u.__subagent?u.__subagent:null;o||(o=Ma(u)),!o&&u&&u.type==="tool_result"&&t&&t.has(u.tool_use_id)&&(o=t.get(u.tool_use_id));var l=o?o.taskId:null;(!i||i.key!==l)&&(i={key:l,subagent:o,blocks:[],firstIndex:a},r.push(i)),i.blocks.push(u)}return r}function qa(e,t,r,i,a){var u="";try{for(var s=Gp(e),o=0;o<s.length;o++){var l=s[o];try{if(l.type==="group"){for(var c=[],d=0;d<l.items.length;d++)c.push({block:l.items[d].block,index:l.items[d].index+t});u+=$p(c,r,i,a)}else u+=Ao(l.block,r,i,l.index+t,a)}catch{u+='<div class="render-error">\u6D88\u606F\u5757\u6E32\u67D3\u5931\u8D25</div>'}}}catch{u+='<div class="render-error">\u6D88\u606F\u6E32\u67D3\u5931\u8D25</div>'}return u}function ko(e,t,r,i,a,u){for(var s=u||{},o=s.showHandoff!==!1,l="",c=null,d=0;d<e.length;d++){var f=e[d],v=qa(f.blocks,f.firstIndex,t,i,a);if(!(!v||!v.trim()))if(f.subagent){var m=o&&c!==f.subagent.taskId;l+=ev(f,r,v,a,m),c=f.subagent.taskId}else l+='<div class="chat-message-segment parent">'+Jn(t)+'<div class="chat-message-content">'+v+"</div></div>",c=null}return l}function ev(e,t,r,i,a){var u=e.subagent,s=Eo(u),o=bo(u),l=u.taskId||"",c=pi(vi(s)),d;if(a){var f='<strong class="subagent-panel-name">'+p(o)+'</strong><span class="subagent-panel-tag" title="'+p(Ye("subagent.tag_title"))+'">'+p(Ye("subagent.tag"))+"</span>",v=!!(u.taskDescription&&String(u.taskDescription).trim()),m=v?Ye("subagent.handoff.with_desc",{parent:p(t),sub:f}):Ye("subagent.handoff",{parent:p(t),sub:f}),b=v?'<span class="subagent-panel-task-desc">'+p(u.taskDescription)+"</span>":"";d='<span class="subagent-panel-arrow" aria-hidden="true">\u21B3</span><span class="subagent-panel-attribution">'+m+b+"</span>"}else d='<span class="subagent-panel-attribution"><strong class="subagent-panel-name">'+p(o)+'</strong><span class="subagent-panel-task-desc"> '+p(Ye("subagent.continued"))+"</span></span>";var g=Kt("subagent-panel",[i,l]),y=Ze(g),w=y===null?!1:!!y;function F(E){return'<button type="button" class="subagent-panel-toggle" data-position="'+E+'" onclick="__subagentPanelToggle(event, this)" aria-expanded="'+(w?"true":"false")+'" aria-label="'+p(Ye(w?"ui.collapse_panel_aria":"ui.expand_panel_aria"))+'"><span class="subagent-panel-toggle-label">'+p(Ye(w?"ui.collapse":"ui.expand"))+'</span><svg class="subagent-panel-toggle-icon" width="10" height="10" viewBox="0 0 10 10" fill="none" aria-hidden="true"><path d="M2.5 3.75L5 6.25L7.5 3.75" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/></svg></button>'}return'<div class="subagent-panel" data-expand-kind="subagent-panel" data-expand-key="'+p(g)+'" data-agent-id="'+p(l)+'" data-expanded="'+(w?"true":"false")+'" style="--agent-color:'+s.primary+'"><div class="subagent-panel-header" onclick="__subagentPanelToggle(event, this)" role="button" tabindex="0" aria-label="'+p(Ye("subagent.title_aria"))+'"><span class="subagent-panel-avatar" aria-hidden="true">'+c+"</span>"+d+F("top")+'</div><div class="subagent-panel-body">'+r+'</div><div class="subagent-panel-footer"><span class="subagent-panel-footer-hint" aria-hidden="true">\u2014 '+p(o)+" \u2014</span>"+F("bottom")+"</div></div>"}function tv(e,t,r,i){var a=e.role,u=pu(e,r),s=a==="user"&&e.content&&e.content.some(function(A){return A.__queued});if(!e.content||e.content.length===0)return a==="assistant"?'<div class="chat-message '+a+'">'+Jn(a)+'<div class="chat-message-bubble"><div class="typing-indicator"><span></span><span></span><span></span></div></div></div>':'<div class="chat-message '+a+' empty-message" data-message-key="'+p(u)+'">'+Jn(a)+'<div class="chat-message-content"><span class="empty-message-hint">\uFF08\u7A7A\u6D88\u606F\uFF09</span></div></div>';var o=Kp(e.content),l=Ta("assistant");if(a!=="assistant"){var c=Do(e.content,i),d=c.some(function(A){return A.subagent}),f=s?" queued":"",v=s?'<span class="queued-badge">\u6392\u961F\u4E2D</span>':"",m=Up();if(d){var b=ko(c,a,l.name,o,u,{showHandoff:!1});return'<div class="chat-message '+a+f+' multi-agent" data-message-key="'+p(u)+'">'+b+v+"</div>"}var g=qa(e.content,0,a,o,u);return'<div class="chat-message '+a+f+'" data-message-key="'+p(u)+'">'+Jn(a,{leftSlot:m})+'<div class="chat-message-content">'+g+v+"</div></div>"}var y=Do(e.content,i),w=y.some(function(A){return A.subagent});if(!w){var F=qa(e.content,0,a,o,u);return'<div class="chat-message '+a+'" data-message-key="'+p(u)+'">'+Jn(a)+'<div class="chat-message-content">'+F+"</div></div>"}var E='<div class="chat-message '+a+' multi-agent" data-message-key="'+p(u)+'">';return E+=ko(y,a,l.name,o,u,{showHandoff:!0}),E+="</div>",E}function Ao(e,t,r,i,a){if(!e||!e.type||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 Vp(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"?Pa(e.text||""):p(e.text||"");case"thinking":var u=e.thinking||"",s=e.thinking===void 0&&e.type==="thinking";if(s)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(!u.trim())return"";var o=u.length>60?u.slice(0,57)+"\u2026":u,l=Kt("thinking",[a,i]),c=Ze(l),d=c===null?Bn("thinking"):c;return'<div class="thinking-inline '+(d?"expanded":"collapsed")+'" data-expand-kind="thinking" data-expand-key="'+p(l)+'" data-thinking="'+p(u)+'" onclick="__thinkingToggle(this)"><span class="thinking-inline-icon">\u29BF</span><span class="thinking-inline-preview">'+p(d?u:o)+'</span><span class="thinking-inline-action">'+(d?"\u6536\u8D77":"\u5C55\u5F00")+"</span></div>";case"tool_use":var f=Co(r,e.id),v=av(e,f,i,a);return Jp(r,e.id)&&(v=Yp(e.name||"\u5DE5\u5177")+v),v;case"tool_result":return"";default:var m=e&&e.type?String(e.type):"\u672A\u77E5",b="";try{b=JSON.stringify(e,null,2)}catch{b="{}"}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(b)+"</pre></div>"}}function nv(e,t,r,i,a,u,s){var o=e.id||"tool-"+r,l=Kt("inline-tool",[u,o||s,s]),c=Ze(l),d=e.input||{},f=ln(t&&t.content),v=t&&t.is_error,m=f.length>0,b=v?"\u2717":m?"\u2713":"\u2026",g="",y="",w="",F="";if(r==="Read"){g='<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 E=d.file_path||d.path||i||"",A="";d.limit&&(A=" "+d.offset+"-"+(d.offset+d.limit)),y=E,w=A}else if(r==="Glob"){g='<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 x=d.pattern||"",S=d.path||i||"";y=x,w=S}else if(r==="Grep"){g='<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 x=d.pattern||"",S=d.path||i||"";y=x,w=S,d.context&&(w+=" -C"+d.context)}else if(r==="WebFetch"){g='<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 P=d.url||"";y=P,w=a||""}else if(r==="WebSearch"){g='<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 z=d.query||"";y=z,w=a||""}else r==="TodoRead"?(g='<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>',y="\u8BFB\u53D6\u5F85\u529E\u5217\u8868",w=a||""):(g='<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>',y=Oa(r),w=a||"");if(m){var G=f.split(`
36
36
  `);G.length>10?F=G.slice(0,10).join(`
37
37
  `)+`
38
- \u2026`:F=f}var L=p(f),B=p(F),T=f,I="",V=c===null?Bn("inlineTools"):c;m?I='<div class="inline-tool-expanded" style="display: '+(V?"block":"none")+';"><div class="inline-tool-result">'+ko(f,r)+"</div></div>":v?I='<div class="inline-tool-expanded" style="display: '+(V?"block":"none")+';"><div class="inline-tool-result inline-tool-error">'+p(f||"\u64CD\u4F5C\u5931\u8D25")+"</div></div>":t||(I='<div class="inline-tool-expanded" style="display: '+(V?"block":"none")+';"><div class="inline-tool-loading">\u7B49\u5F85\u54CD\u5E94\u2026</div></div>');var re=t&&t._truncated===!0,te=w?'<span class="inline-tool-meta">'+p(w)+"</span>":"",$=v?"inline-tool-error-inline":"";V&&($+=" inline-tool-open");var ie=re?'data-truncated="true" data-tool-use-id="'+p(e.id||"")+'" ':"";return'<div class="inline-tool '+$+'" data-expand-kind="inline-tool" data-expand-key="'+p(l)+'" data-result="'+p(T)+'" data-preview="'+B+'" data-status="'+(v?"error":m?"done":"pending")+'" '+ie+'onclick="__inlineToolToggle(this)"><div class="inline-tool-row"><span class="inline-tool-status">'+b+"</span>"+g+'<span class="inline-tool-title">'+p(y)+"</span>"+te+"</div>"+I+"</div>"}function nv(e,t,r,i,a){var u=e.input||{},s=u.command||u.cmd||"",o=ln(t&&t.content),l=e.id||"tool-"+r,c=Kt("terminal",[i,l||a,a]),d=Ze(c),f=t&&t.is_error,v=u.exitCode,m=o.length>0,b="";t?f?b='<span class="term-status-dot term-error"></span>':v===0||v===void 0?b='<span class="term-status-dot term-success"></span>':b='<span class="term-status-dot term-warn"></span>':b='<span class="term-status-dot term-running"></span>';for(var g='<span class="term-prompt">$</span>',y=p(s),w=o.split(`
38
+ \u2026`:F=f}var L=p(f),B=p(F),T=f,I="",V=c===null?Bn("inlineTools"):c;m?I='<div class="inline-tool-expanded" style="display: '+(V?"block":"none")+';"><div class="inline-tool-result">'+xo(f,r)+"</div></div>":v?I='<div class="inline-tool-expanded" style="display: '+(V?"block":"none")+';"><div class="inline-tool-result inline-tool-error">'+p(f||"\u64CD\u4F5C\u5931\u8D25")+"</div></div>":t||(I='<div class="inline-tool-expanded" style="display: '+(V?"block":"none")+';"><div class="inline-tool-loading">\u7B49\u5F85\u54CD\u5E94\u2026</div></div>');var te=t&&t._truncated===!0,ee=w?'<span class="inline-tool-meta">'+p(w)+"</span>":"",Q=v?"inline-tool-error-inline":"";V&&(Q+=" inline-tool-open");var ne=te?'data-truncated="true" data-tool-use-id="'+p(e.id||"")+'" ':"";return'<div class="inline-tool '+Q+'" data-expand-kind="inline-tool" data-expand-key="'+p(l)+'" data-result="'+p(T)+'" data-preview="'+B+'" data-status="'+(v?"error":m?"done":"pending")+'" '+ne+'onclick="__inlineToolToggle(this)"><div class="inline-tool-row"><span class="inline-tool-status">'+b+"</span>"+g+'<span class="inline-tool-title">'+p(y)+"</span>"+ee+"</div>"+I+"</div>"}function rv(e,t,r,i,a){var u=e.input||{},s=u.command||u.cmd||"",o=ln(t&&t.content),l=e.id||"tool-"+r,c=Kt("terminal",[i,l||a,a]),d=Ze(c),f=t&&t.is_error,v=u.exitCode,m=o.length>0,b="";t?f?b='<span class="term-status-dot term-error"></span>':v===0||v===void 0?b='<span class="term-status-dot term-success"></span>':b='<span class="term-status-dot term-warn"></span>':b='<span class="term-status-dot term-running"></span>';for(var g='<span class="term-prompt">$</span>',y=p(s),w=o.split(`
39
39
  `),F="",E=0;E<w.length;E++){var A=w[E];!A&&E===w.length-1||(F+='<div class="term-line">'+p(A)+"</div>")}var x="";if(t&&v!==void 0){var S=v===0?"term-exit-success":"term-exit-error";x='<div class="term-exit '+S+'">exit '+v+"</div>"}var P=s.length>80?s.slice(0,77)+"\u2026":s,z=d===null?Bn("terminal"):d,G=t&&t._truncated===!0,L=G?' 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="'+(z?"true":"false")+'"'+L+'><div class="term-header" onclick="__terminalExpand(this)">'+b+'<span class="term-cmd-preview"><span class="term-prompt">$</span> '+p(P)+'</span><span class="term-toggle-icon">'+(z?"\u25BC":"\u25B6")+'</span></div><div class="term-body" style="display:'+(z?"block":"none")+';"><div class="term-command"><span class="term-prompt">$</span> '+y+"</div>"+(F?'<div class="term-output">'+F+"</div>":"")+x+"</div></div>"}function ln(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(`
40
- `):"":""}function rv(e,t,r,i,a){var u=e.input||{},s=u.file_path||u.path||"",o=s.split("/").pop()||s,l=e.id||"tool-"+r+"-"+(typeof a=="number"?a:0),c=u.old_string||"",d=u.new_string||u.content||"",f=u.old_content||"",v=u.new_content||"",m=r==="Write"||r==="MultiEdit",b=t&&t.is_error,g=ln(t&&t.content),y=!!(g&&g.trim().length>0),w="",F="";m?F='<div class="diff-line diff-add">+ '+p(v)+"</div>":(c&&(w='<div class="diff-line diff-remove">- '+p(c)+"</div>"),d&&(F='<div class="diff-line diff-add">+ '+p(d)+"</div>"));var E="",A="";t?b?(E="diff-error",A=g.indexOf("haven't granted")!==-1||g.indexOf("permission")!==-1?"\u7B49\u5F85\u6388\u6743":"\u5931\u8D25"):(E="diff-success",A="\u5DF2\u4FEE\u6539"):(E="diff-pending",A="\u6267\u884C\u4E2D");var x=Kt("diff",[i,l||a,a]),S=Ze(x),P=Bn("editCards"),z=S===null?E==="diff-pending"||P:S,G=z?"":" collapsed",L=w&&F,B=L?"diff-col-half":"diff-col-full";return'<div class="inline-diff'+G+'" data-tool-name="'+p(r)+'" data-expand-kind="diff" data-expand-key="'+p(x)+'" data-tool-use-id="'+p(l)+'"><div class="diff-header" onclick="__tcToggle(event,this)"><span class="diff-file-icon"></span><span class="diff-file-name">'+p(o)+'</span><span class="diff-path">'+p(s)+'</span><span class="diff-status '+E+'">'+A+'</span><span class="diff-toggle">\u25BC</span></div><div class="diff-body"><div class="diff-columns">'+(L?'<div class="diff-col '+B+'"><div class="diff-col-label">\u65E7</div>'+w+"</div>":"")+'<div class="diff-col '+B+'"><div class="diff-col-label">'+(L?"\u65B0":"")+"</div>"+(F||w)+"</div></div></div></div>"}function ko(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 iv(e,t,r,i){var a=e.name||"unknown",u=e.id||"tool-"+a+"-"+(typeof r=="number"?r:0),s=uv(a,e.input);if(a==="Read"||a==="Glob"||a==="Grep"||a==="WebFetch"||a==="WebSearch"||a==="TodoRead")return tv(e,t,a,s,"",i,r);if(a==="Bash")return nv(e,t,a,i,r);if(a==="Edit"||a==="Write"||a==="MultiEdit")return rv(e,t,a,i,r);if(a==="AskUserQuestion"&&e.input&&e.input.questions){var o=e.input.questions;if(o&&o.length>0){for(var l=!!t,c=n.askUserSelections[u]||{},d=!!c.submitted,f=l?ln(t.content):"",v=f?f.trim().split(`
41
- `):[],m="",b=0;b<o.length;b++)if(o[b].header){m=o[b].header;break}var g=m?'<span class="tool-use-summary">'+p(m)+"</span>":"",y="";o.forEach(function(O,R){var se=!!O.multiSelect,Be=O.question?'<div class="ask-user-title">'+p(O.question)+"</div>":"",ne="";O.options&&O.options.length>0&&(ne='<div class="ask-user-options" data-multi-select="'+se+'">',O.options.forEach(function(de,Me){var lt=de.label?p(de.label):"\u9009\u9879 "+(Me+1),gt=de.description?'<div class="ask-user-option-desc">'+p(de.description)+"</div>":"";if(l){var Ge=v[R]||v[0]||"",rt=Ge.split(",").map(function(ze){return ze.trim()}),it=rt.indexOf(de.label||"")!==-1;ne+='<div class="ask-user-option ask-user-option-readonly'+(it?" ask-user-option-chosen":"")+'"><span class="ask-user-indicator"></span><div class="ask-user-option-content"><div class="ask-user-option-label">'+lt+"</div>"+gt+"</div></div>"}else{var We=(c[R]||[]).indexOf(Me)!==-1,kt=d?" disabled":"";ne+='<button class="ask-user-option'+(We?" selected":"")+'" data-option-index="'+Me+'" data-question-index="'+R+'" data-option-label="'+p(de.label||"\u9009\u9879 "+(Me+1))+`" onclick="__askSelect('`+p(u)+"',"+R+","+Me+","+se+')"'+kt+'><span class="ask-user-indicator"></span><div class="ask-user-option-content"><div class="ask-user-option-label">'+lt+"</div>"+gt+"</div></button>"}}),ne+="</div>"),y+='<div class="ask-user-question-group" data-question-index="'+R+'">'+Be+ne+"</div>"});var w="";if(!l){for(var F=!0,E=0;E<o.length;E++)if(!c[E]||c[E].length===0){F=!1;break}var A=!F||d?" disabled":"",x=d?" ask-user-submitted":"",S=d?"\u5DF2\u63D0\u4EA4...":"\u786E\u8BA4\u63D0\u4EA4";w='<div class="ask-user-actions"><button class="ask-user-submit'+x+'" data-tool-use-id="'+p(u)+`" onclick="__askSubmit('`+p(u)+`')"`+A+">"+S+"</button></div>"}var P="";if(l&&f){var z=f.trim().replace(/\n/g,", ");z.length>40&&(z=z.slice(0,37)+"..."),P='<span class="tool-use-file">'+p(z)+"</span>"}var G=Kt("tool-card",[i,u]),L=Ze(G),B=L===null?!l:L,T=B?"":" collapsed",I=l?" ask-user-answered":"";return'<div class="tool-use-card ask-user'+I+T+'" data-tool-use-id="'+p(u)+'" data-expand-kind="tool-card" data-expand-key="'+p(G)+'"><div class="tool-use-header" data-tool-toggle onclick="__tcToggle(event,this)"><span class="tool-use-icon">'+(l?"\u2713":"?")+'</span><span class="tool-use-name">\u63D0\u95EE</span>'+g+P+'<span class="tool-use-toggle">\u25BC</span></div><div class="tool-use-body ask-user-body">'+y+w+"</div></div>"}}var V=e.description||e.input&&e.input.description||"",re=av(e.name,e.input),te="",$="";V?(te=V.length>80?V.slice(0,77)+"...":V,s&&($='<span class="tool-use-file">'+p(s)+"</span>")):(te=Oa(a),s&&($='<span class="tool-use-file">'+p(s)+"</span>"),re&&($+='<span class="tool-use-summary">'+p(re)+"</span>"));var ie=e.input?JSON.stringify(e.input,null,2):"{}",U="loading",M='<span class="tool-use-spinner"></span>',H="";if(t){var N=t.is_error,Y=ln(t.content);U=N?"error":"success",M=Ao(a);var K=Y&&Y.trim().length>0;K?H='<pre class="tool-use-result-content">'+p(Y)+"</pre>":H='<span class="tool-use-result-empty">\u65E0\u8F93\u51FA</span>'}else M=Ao(a);var X=Kt("tool-card",[i,u]),ae=Ze(X),le=Bn("editCards"),ue=ae===null?U==="loading"||le:ae,Ce=t&&t._truncated===!0,Fe=ue?"":" collapsed",be='<span class="tool-use-toggle">\u25BC</span>';return'<div class="tool-use-card '+U+Fe+'" data-expand-kind="tool-card" data-expand-key="'+p(X)+'" data-tool-use-id="'+p(u)+'"'+(Ce?' data-truncated="true"':"")+'><div class="tool-use-header" data-tool-toggle onclick="__tcToggle(event,this)"><span class="tool-use-icon">'+M+'</span><span class="tool-use-name">'+p(te)+"</span>"+$+be+'</div><div class="tool-use-body">'+(V?'<div class="tool-use-meta"><span class="tool-use-meta-label">\u5DE5\u5177\uFF1A</span>'+p(a)+"</div>":"")+'<pre class="tool-use-content">'+p(ie)+"</pre>"+(H?'<div class="tool-use-result">'+H+"</div>":"")+"</div></div>"}function Oa(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 Ao(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 av(e,t){if(!t||typeof t!="object")return"";var r=Object.keys(t);if(r.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 s=t.pattern||"",o=t.path||"";if(s)return"\u641C\u7D22\uFF1A"+s+(o?" (\u5728 "+o+")":"")}if(e==="Glob"){var s=t.pattern||"";if(s)return"\u67E5\u627E\uFF1A"+s}if(e==="Agent"){var l=t.prompt||t.task||"";if(l){var c=l.length>40?l.slice(0,40)+"...":l;return"\u4EFB\u52A1\uFF1A"+c}}if(e==="Task"){var l=t.task||t.description||"";if(l){var c=l.length>40?l.slice(0,40)+"...":l;return"\u4EFB\u52A1\uFF1A"+c}}if(e==="TodoWrite"){var d=t.todos||[];return"\u66F4\u65B0\u5F85\u529E ("+d.length+" \u9879)"}if(e==="WebSearch"){var f=t.query||"";if(f)return"\u641C\u7D22\uFF1A"+f}var v=r[0],m=t[v];if(typeof m=="string"){var b=m.length>50?m.slice(0,50)+"...":m;return v+": "+b}return r.length+" \u4E2A\u53C2\u6570"}function uv(e,t){if(!t)return null;var r=t.file_path||t.path||t.cwd;return r?r.length>50?"..."+r.slice(-47):r:null}function sv(e){if(!e)return"";for(var t=`
42
- `,r=e.split(t),i=[],a=!1,u=0;u<r.length;u++){var s=r[u],o=s.trim();if(!(!a&&!o)){if(a=!0,o.indexOf("\u23FA")===0&&o.length>2){i.push(o.slice(1).trim());continue}if(o.indexOf("\u25CF")===0){if(o=o.slice(1).trim(),!o)continue;s=o}i.push(s)}}for(;i.length>0&&!i[i.length-1].trim();)i.pop();for(var l=[],c={},d=0;d<i.length;d++){var f=i[d].replace(/\s+/g,"");f.length>5&&c[f]||(f.length>5&&(c[f]=!0),l.push(i[d]))}return l.join(t)}function xo(e){var t=`
40
+ `):"":""}function iv(e,t,r,i,a){var u=e.input||{},s=u.file_path||u.path||"",o=s.split("/").pop()||s,l=e.id||"tool-"+r+"-"+(typeof a=="number"?a:0),c=u.old_string||"",d=u.new_string||u.content||"",f=u.old_content||"",v=u.new_content||"",m=r==="Write"||r==="MultiEdit",b=t&&t.is_error,g=ln(t&&t.content),y=!!(g&&g.trim().length>0),w="",F="";m?F='<div class="diff-line diff-add">+ '+p(v)+"</div>":(c&&(w='<div class="diff-line diff-remove">- '+p(c)+"</div>"),d&&(F='<div class="diff-line diff-add">+ '+p(d)+"</div>"));var E="",A="";t?b?(E="diff-error",A=g.indexOf("haven't granted")!==-1||g.indexOf("permission")!==-1?"\u7B49\u5F85\u6388\u6743":"\u5931\u8D25"):(E="diff-success",A="\u5DF2\u4FEE\u6539"):(E="diff-pending",A="\u6267\u884C\u4E2D");var x=Kt("diff",[i,l||a,a]),S=Ze(x),P=Bn("editCards"),z=S===null?E==="diff-pending"||P:S,G=z?"":" collapsed",L=w&&F,B=L?"diff-col-half":"diff-col-full";return'<div class="inline-diff'+G+'" data-tool-name="'+p(r)+'" data-expand-kind="diff" data-expand-key="'+p(x)+'" data-tool-use-id="'+p(l)+'"><div class="diff-header" onclick="__tcToggle(event,this)"><span class="diff-file-icon"></span><span class="diff-file-name">'+p(o)+'</span><span class="diff-path">'+p(s)+'</span><span class="diff-status '+E+'">'+A+'</span><span class="diff-toggle">\u25BC</span></div><div class="diff-body"><div class="diff-columns">'+(L?'<div class="diff-col '+B+'"><div class="diff-col-label">\u65E7</div>'+w+"</div>":"")+'<div class="diff-col '+B+'"><div class="diff-col-label">'+(L?"\u65B0":"")+"</div>"+(F||w)+"</div></div></div></div>"}function xo(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 av(e,t,r,i){var a=e.name||"unknown",u=e.id||"tool-"+a+"-"+(typeof r=="number"?r:0),s=sv(a,e.input);if(a==="Read"||a==="Glob"||a==="Grep"||a==="WebFetch"||a==="WebSearch"||a==="TodoRead")return nv(e,t,a,s,"",i,r);if(a==="Bash")return rv(e,t,a,i,r);if(a==="Edit"||a==="Write"||a==="MultiEdit")return iv(e,t,a,i,r);if(a==="AskUserQuestion"&&e.input&&e.input.questions){var o=e.input.questions;if(o&&o.length>0){for(var l=!!t,c=n.askUserSelections[u]||{},d=!!c.submitted,f=l?ln(t.content):"",v=f?f.trim().split(`
41
+ `):[],m="",b=0;b<o.length;b++)if(o[b].header){m=o[b].header;break}var g=m?'<span class="tool-use-summary">'+p(m)+"</span>":"",y="";o.forEach(function(O,R){var ie=!!O.multiSelect,Se=O.question?'<div class="ask-user-title">'+p(O.question)+"</div>":"",ce="";O.options&&O.options.length>0&&(ce='<div class="ask-user-options" data-multi-select="'+ie+'">',O.options.forEach(function(ae,ke){var lt=ae.label?p(ae.label):"\u9009\u9879 "+(ke+1),rt=ae.description?'<div class="ask-user-option-desc">'+p(ae.description)+"</div>":"";if(l){var kt=v[R]||v[0]||"",Ve=kt.split(",").map(function(Ke){return Ke.trim()}),it=Ve.indexOf(ae.label||"")!==-1;ce+='<div class="ask-user-option ask-user-option-readonly'+(it?" ask-user-option-chosen":"")+'"><span class="ask-user-indicator"></span><div class="ask-user-option-content"><div class="ask-user-option-label">'+lt+"</div>"+rt+"</div></div>"}else{var Ue=(c[R]||[]).indexOf(ke)!==-1,At=d?" disabled":"";ce+='<button class="ask-user-option'+(Ue?" selected":"")+'" data-option-index="'+ke+'" data-question-index="'+R+'" data-option-label="'+p(ae.label||"\u9009\u9879 "+(ke+1))+`" onclick="__askSelect('`+p(u)+"',"+R+","+ke+","+ie+')"'+At+'><span class="ask-user-indicator"></span><div class="ask-user-option-content"><div class="ask-user-option-label">'+lt+"</div>"+rt+"</div></button>"}}),ce+="</div>"),y+='<div class="ask-user-question-group" data-question-index="'+R+'">'+Se+ce+"</div>"});var w="";if(!l){for(var F=!0,E=0;E<o.length;E++)if(!c[E]||c[E].length===0){F=!1;break}var A=!F||d?" disabled":"",x=d?" ask-user-submitted":"",S=d?"\u5DF2\u63D0\u4EA4...":"\u786E\u8BA4\u63D0\u4EA4";w='<div class="ask-user-actions"><button class="ask-user-submit'+x+'" data-tool-use-id="'+p(u)+`" onclick="__askSubmit('`+p(u)+`')"`+A+">"+S+"</button></div>"}var P="";if(l&&f){var z=f.trim().replace(/\n/g,", ");z.length>40&&(z=z.slice(0,37)+"..."),P='<span class="tool-use-file">'+p(z)+"</span>"}var G=Kt("tool-card",[i,u]),L=Ze(G),B=L===null?!l:L,T=B?"":" collapsed",I=l?" ask-user-answered":"";return'<div class="tool-use-card ask-user'+I+T+'" data-tool-use-id="'+p(u)+'" data-expand-kind="tool-card" data-expand-key="'+p(G)+'"><div class="tool-use-header" data-tool-toggle onclick="__tcToggle(event,this)"><span class="tool-use-icon">'+(l?"\u2713":"?")+'</span><span class="tool-use-name">\u63D0\u95EE</span>'+g+P+'<span class="tool-use-toggle">\u25BC</span></div><div class="tool-use-body ask-user-body">'+y+w+"</div></div>"}}var V=e.description||e.input&&e.input.description||"",te=uv(e.name,e.input),ee="",Q="";V?(ee=V.length>80?V.slice(0,77)+"...":V,s&&(Q='<span class="tool-use-file">'+p(s)+"</span>")):(ee=Oa(a),s&&(Q='<span class="tool-use-file">'+p(s)+"</span>"),te&&(Q+='<span class="tool-use-summary">'+p(te)+"</span>"));var ne=e.input?JSON.stringify(e.input,null,2):"{}",U="loading",M='<span class="tool-use-spinner"></span>',H="";if(t){var j=t.is_error,Y=ln(t.content);U=j?"error":"success",M=So(a);var K=Y&&Y.trim().length>0;K?H='<pre class="tool-use-result-content">'+p(Y)+"</pre>":H='<span class="tool-use-result-empty">\u65E0\u8F93\u51FA</span>'}else M=So(a);var X=Kt("tool-card",[i,u]),oe=Ze(X),le=Bn("editCards"),re=oe===null?U==="loading"||le:oe,Be=t&&t._truncated===!0,De=re?"":" collapsed",Ee='<span class="tool-use-toggle">\u25BC</span>';return'<div class="tool-use-card '+U+De+'" data-expand-kind="tool-card" data-expand-key="'+p(X)+'" data-tool-use-id="'+p(u)+'"'+(Be?' data-truncated="true"':"")+'><div class="tool-use-header" data-tool-toggle onclick="__tcToggle(event,this)"><span class="tool-use-icon">'+M+'</span><span class="tool-use-name">'+p(ee)+"</span>"+Q+Ee+'</div><div class="tool-use-body">'+(V?'<div class="tool-use-meta"><span class="tool-use-meta-label">\u5DE5\u5177\uFF1A</span>'+p(a)+"</div>":"")+'<pre class="tool-use-content">'+p(ne)+"</pre>"+(H?'<div class="tool-use-result">'+H+"</div>":"")+"</div></div>"}function Oa(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 So(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 uv(e,t){if(!t||typeof t!="object")return"";var r=Object.keys(t);if(r.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 s=t.pattern||"",o=t.path||"";if(s)return"\u641C\u7D22\uFF1A"+s+(o?" (\u5728 "+o+")":"")}if(e==="Glob"){var s=t.pattern||"";if(s)return"\u67E5\u627E\uFF1A"+s}if(e==="Agent"){var l=t.prompt||t.task||"";if(l){var c=l.length>40?l.slice(0,40)+"...":l;return"\u4EFB\u52A1\uFF1A"+c}}if(e==="Task"){var l=t.task||t.description||"";if(l){var c=l.length>40?l.slice(0,40)+"...":l;return"\u4EFB\u52A1\uFF1A"+c}}if(e==="TodoWrite"){var d=t.todos||[];return"\u66F4\u65B0\u5F85\u529E ("+d.length+" \u9879)"}if(e==="WebSearch"){var f=t.query||"";if(f)return"\u641C\u7D22\uFF1A"+f}var v=r[0],m=t[v];if(typeof m=="string"){var b=m.length>50?m.slice(0,50)+"...":m;return v+": "+b}return r.length+" \u4E2A\u53C2\u6570"}function sv(e,t){if(!t)return null;var r=t.file_path||t.path||t.cwd;return r?r.length>50?"..."+r.slice(-47):r:null}function ov(e){if(!e)return"";for(var t=`
42
+ `,r=e.split(t),i=[],a=!1,u=0;u<r.length;u++){var s=r[u],o=s.trim();if(!(!a&&!o)){if(a=!0,o.indexOf("\u23FA")===0&&o.length>2){i.push(o.slice(1).trim());continue}if(o.indexOf("\u25CF")===0){if(o=o.slice(1).trim(),!o)continue;s=o}i.push(s)}}for(;i.length>0&&!i[i.length-1].trim();)i.pop();for(var l=[],c={},d=0;d<i.length;d++){var f=i[d].replace(/\s+/g,"");f.length>5&&c[f]||(f.length>5&&(c[f]=!0),l.push(i[d]))}return l.join(t)}function Io(e){var t=`
43
43
  `,r=e.split(t),i=[],a=0;function u(g){var y=g.trim();return y.charAt(0)==="|"&&(y=y.slice(1)),y.charAt(y.length-1)==="|"&&(y=y.slice(0,-1)),y.split("|")}function s(g){return g?' style="text-align:'+g+'"':""}function o(g,y,w){var F="<thead><tr>"+g.map(function(A,x){return"<th"+s(y[x])+">"+A.trim()+"</th>"}).join("")+"</tr></thead>",E=w.length?"<tbody>"+w.map(function(A){return"<tr>"+A.map(function(x,S){return"<td"+s(y[S])+">"+x.trim()+"</td>"}).join("")+"</tr>"}).join("")+"</tbody>":"";return'<div class="md-table-wrap"><table class="md-table">'+F+E+"</table></div>"}for(;a<r.length;){var l=r[a];if(l.indexOf("|")!==-1&&a+1<r.length){var c=r[a+1].trim();if(/^\|?\s*:?-+:?(\s*\|\s*:?-+:?)+\s*\|?$/.test(c)){for(var d=u(l),f=u(c).map(function(g){var y=g.trim(),w=y.charAt(0)===":",F=y.charAt(y.length-1)===":";return w&&F?"center":F?"right":w?"left":""}),v=[],m=a+2;m<r.length;){var b=r[m].trim();if(!b||b.indexOf("|")===-1)break;v.push(u(r[m])),m+=1}i.push("",o(d,f,v),""),a=m;continue}}i.push(l),a+=1}return i.join(t)}function Pa(e){if(!e)return"";var t=p(e),r="`",i=`
44
- `;function a(M,H,N,Y){for(var K=0;;){var X=M.indexOf(H,K);if(X===-1)break;var ae=M.indexOf(H,X+H.length);if(ae===-1)break;var le=M.slice(X+H.length,ae);if(!le){K=ae+H.length;continue}var ue=N+le+Y;M=M.slice(0,X)+ue+M.slice(ae+H.length),K=X+ue.length}return M}function u(M){return M>=48&&M<=57||M>=65&&M<=90||M>=97&&M<=122||M===95}function s(M,H,N){for(var Y=0;Y<M.length;){var K=M.indexOf("_",Y);if(K===-1)break;var X=K>0?M.charCodeAt(K-1):0;if(u(X)){Y=K+1;continue}for(var ae=K+1,le=-1;ae<M.length;){var ue=M.indexOf("_",ae);if(ue===-1)break;var Ce=ue+1,Fe=Ce<M.length?M.charCodeAt(Ce):0;if(!u(Fe)){le=ue;break}ae=ue+1}if(le===-1)break;var be=M.slice(K+1,le);if(!be){Y=le+1;continue}var O=H+be+N;M=M.slice(0,K)+O+M.slice(le+1),Y=K+O.length}return M}function o(M,H,N,Y){return M.split(i).map(function(K){return K.indexOf(H)!==0?K:N+K.slice(H.length)+Y}).join(i)}function l(M){return M.split(i).map(function(H){var N=H.indexOf(". ");if(N<=0)return H;for(var Y=0;Y<N;Y+=1){var K=H.charCodeAt(Y);if(K<48||K>57)return H}return"<li>"+H.slice(N+2)+"</li>"}).join(i)}function c(M){return M.split(i+i).map(function(H){var N=H.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 d=0;;){var f=t.indexOf(r+r+r,d);if(f===-1)break;var v=t.indexOf(r+r+r,f+3);if(v===-1)break;var m=t.slice(f+3,v),b=m.indexOf(i),g="",y=m;if(b!==-1&&b<30){for(var w=m.slice(0,b).trim(),F=w.length>0,E=0;E<w.length;E+=1){var A=w.charCodeAt(E),x=A>=48&&A<=57,S=A>=65&&A<=90,P=A>=97&&A<=122;if(!x&&!S&&!P){F=!1;break}}F&&(g=w,y=m.slice(b+1))}var z=ov(y.trim(),g),G=z.replace(/_/g,"&#95;").replace(/\*/g,"&#42;"),L='<div class="code-block"><div class="code-block-header"><span class="code-lang">'+(g||"code")+'</span><button class="code-copy">Copy</button></div><pre><code>'+G+"</code></pre></div>";t=t.slice(0,f)+L+t.slice(v+3),d=f+L.length}for(d=0;;){var B=t.indexOf(r,d);if(B===-1)break;var T=t.indexOf(r,B+1);if(T===-1)break;if(T===B+1){d=T+1;continue}var I=t.slice(B+1,T),V=I.replace(/_/g,"&#95;").replace(/\*/g,"&#42;"),re='<code class="code-inline">'+V+"</code>";t=t.slice(0,B)+re+t.slice(T+1),d=B+re.length}t=a(t,"**","<strong>","</strong>"),t=a(t,"*","<em>","</em>"),t=s(t,"<em>","</em>"),t=o(t,"### ","<h3>","</h3>"),t=o(t,"## ","<h2>","</h2>"),t=o(t,"# ","<h1>","</h1>"),t=o(t,"&gt; ","<blockquote>","</blockquote>"),t=o(t,"- ","<li>","</li>"),t=o(t,"* ","<li>","</li>"),t=l(t),t=xo(t);var te=t.split(i),$=[],ie=[];function U(){ie.length&&($.push("<ul>"+ie.join("")+"</ul>"),ie=[])}return te.forEach(function(M){if(M.indexOf("<li>")===0&&M.lastIndexOf("</li>")===M.length-5){ie.push(M);return}U(),$.push(M)}),U(),t=c($.join(i)),'<div class="markdown-content">'+t+"</div>"}function ov(e,t){return e=e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e}function gi(e){var t=String(e||"").trim();return t.length<=24?t||"\u672A\u9009\u62E9\u4F1A\u8BDD":t.slice(0,21)+"..."}function Ha(e){return String(e||"").replace(/\r\r\n/g,`\r
45
- `).replace(/\u0000/g,"")}function _a(){if(!n.loginPending){var e=document.getElementById("password"),t=document.getElementById("login-button"),r=document.getElementById("login-error");!e||!t||!r||(ti(r),e.dataset.error="false",e.setAttribute("aria-invalid","false"),n.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.ok?fetch("/api/config",{credentials:"same-origin"}):(e.dataset.error="true",e.setAttribute("aria-invalid","true"),Ne(r,"\u5BC6\u7801\u9519\u8BEF\uFF0C\u8BF7\u91CD\u8BD5\u3002"),Promise.reject("Invalid password"))}).then(function(i){return i.json()}).then(function(i){n.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"),jt()}).then(function(){Qu(),Gt()}).catch(function(i){console.error("[wand] Login error:",i),i!=="Invalid password"&&(e.dataset.error="true",e.setAttribute("aria-invalid","true"),Ne(r,"\u767B\u5F55\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002"))}).finally(function(){n.loginPending=!1,t.disabled=!1,t.textContent="\u8FDB\u5165\u63A7\u5236\u53F0"}))}}function ja(){return typeof WandNative<"u"&&typeof WandNative.switchServer=="function"}function So(){if(ja())try{WandNative.switchServer()}catch{}}function Io(){fetch("/api/logout",{method:"POST",credentials:"same-origin"}).catch(function(){}),ns(),An(!1),ba(),pr(),n.config=null,n.selectedId=null,ye(),n.sessions=[],n.claudeHistory=[],n.claudeHistoryLoaded=!1,n.claudeHistoryExpanded=!1,n.claudeHistoryExpandedDirs={},n.sessionsDrawerOpen=!1,ke("wand-sidebar-open",!1),Gt()}function jt(){return dn()}function lv(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 vt(){return n.sessionTool||n.preferredCommand||"claude"}function cv(){var e=n.sessions.find(function(t){return t.id===n.selectedId});return e&&e.provider||n.preferredCommand||"claude"}function To(e,t){return t?"\u7EC8\u7AEF\u4EA4\u4E92\u4E2D":e&&(e.status==="exited"||e.status==="failed"||e.status==="stopped")?ma(e)?"":"\u4F1A\u8BDD\u5DF2\u7ED3\u675F":oe(e)&&e.structuredState&&e.structuredState.inFlight?"\u56DE\u590D\u4E2D\u2026Enter \u6392\u961F \xB7 \u26A1 \u7ACB\u5373\u53D1\u9001":""}function Lo(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 Na(e){return e==="codex"?["full-access"]:["default","full-access","auto-edit","native","managed"]}function Nt(e,t){var r=Na(e);if(r.indexOf(t)!==-1)return t;var i=n.config&&n.config.defaultMode?n.config.defaultMode:"default";return r.indexOf(i)!==-1?i:r[0]}function tg(e,t){return Na(e).map(function(r){var i=Mo(r);return'<option value="'+p(r)+'"'+(r===t?" selected":"")+' title="'+i+'">'+p(lv(r))+"</option>"}).join("")}function Mo(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 dv(e){var t=e&&e.provider?e.provider:"claude";return(oe(e)?"\u7ED3\u6784\u5316":"\u7EC8\u7AEF")+" \xB7 "+t}function fv(e){return oe(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 pv(e){return e?oe(e)||e.provider==="codex":!1}function qo(e,t){if(!e||!e.is_error||!t||t.is_error)return!1;var r=ln(e.content).toLowerCase(),i=ln(t.content).toLowerCase();return r?r.indexOf("invalid pages parameter")!==-1&&i.length>0:!1}function oe(e){return!!e&&(e.sessionKind==="structured"||e.runner==="claude-cli-print")}function hi(){n.chatMode=Nt("claude",n.chatMode);var e=document.getElementById("mode-hint");e&&(e.textContent=Mo(n.chatMode)),Jn()}function Ra(e,t){t=t||{};var r=t.kind==="compact"||t.kind==="popover"?t.kind:"dropdown",i=vt(),a=n.chatMode||"default",u=Po(e)||"default",s=jo(e);function o(l,c,d,f){var v=r==="compact"?"":'<span class="chat-mode-trio-tag">'+p(c)+"</span>";return'<span class="composer-text-pill chat-mode-trio-pill" data-mode-control-pill="'+l+'" title="'+p(c)+'">'+v+'<span class="composer-text-label">'+p(d)+'</span><select class="composer-text-hidden-select" data-mode-control="'+l+'" tabindex="-1" aria-label="'+p(c)+'">'+f+"</select></span>"}return'<div class="chat-mode-trio chat-mode-trio-'+r+'" role="group" aria-label="\u4F1A\u8BDD\u8BBE\u7F6E">'+o("mode","\u6A21\u5F0F",a,Oo(i,a))+'<span class="composer-text-sep" aria-hidden="true">\xB7</span>'+o("model","\u6A21\u578B",u,_o(u,e))+'<span class="composer-text-sep" aria-hidden="true">\xB7</span>'+o("thinking","\u601D\u8003",s,No(s))+"</div>"}function Jn(){var e=mt(),t=vt(),r=n.chatMode||"default",i=Po(e)||"default",a=jo(e),u=document.querySelectorAll(".chat-mode-trio");u.forEach(function(s){function o(l,c,d){var f=s.querySelector('[data-mode-control-pill="'+l+'"]');if(f){var v=f.querySelector(".composer-text-label");v&&(v.textContent=c);var m=f.querySelector('[data-mode-control="'+l+'"]');m&&(d&&(m.innerHTML=d),m.value!==c&&(m.value=c))}}o("mode",r,Oo(t,r)),o("model",i,_o(i,e)),o("thinking",a,No(a))})}function Oo(e,t){return Na(e).map(function(r){return'<option value="'+p(r)+'"'+(r===t?" selected":"")+">"+p(r)+"</option>"}).join("")}function Po(e){return e&&e.selectedModel?e.selectedModel:n.chatModel?n.chatModel:n.config&&n.config.defaultModel?n.config.defaultModel:""}function Ho(e){var t=e&&e.provider||n.sessionTool||"claude";return t==="codex"?n.availableCodexModels||[]:n.availableModels||[]}function vv(e,t){for(var r=Ho(t),i='<option value="">\u9ED8\u8BA4\uFF08\u8DDF\u968F\u8BBE\u7F6E\uFF09</option>',a=0;a<r.length;a++){var u=r[a],s=u.label||u.id;i+='<option value="'+p(u.id)+'"'+(u.id===e?" selected":"")+">"+p(s)+"</option>"}return e&&!r.some(function(o){return o.id===e})&&(i+='<option value="'+p(e)+'" selected>'+p(e)+"\uFF08\u81EA\u5B9A\u4E49\uFF09</option>"),i}function _o(e,t){for(var r=Ho(t),i='<option value="">default</option>',a=0;a<r.length;a++){var u=r[a];i+='<option value="'+p(u.id)+'"'+(u.id===e?" selected":"")+">"+p(u.id)+"</option>"}return e&&!r.some(function(s){return s.id===e})&&(i+='<option value="'+p(e)+'" selected>'+p(e)+"</option>"),i}function Yn(e){Jn()}var cn=[{id:"off",label:"off",hint:"\u4E0D\u542F\u7528\u601D\u8003\uFF08CLI \u65E0\u524D\u7F00\uFF1BSDK \u5173\u95ED thinking\uFF1BCodex minimal\uFF09"},{id:"standard",label:"think",hint:"Claude CLI: think \xB7 SDK budget 4096 \xB7 Codex low"},{id:"deep",label:"think hard",hint:"Claude CLI: think hard \xB7 SDK budget 16000 \xB7 Codex medium"},{id:"max",label:"ultrathink",hint:"Claude CLI: ultrathink \xB7 SDK budget 31999 \xB7 Codex high"}];function mv(e){for(var t=0;t<cn.length;t++)if(cn[t].id===e)return cn[t].label;return cn[0].label}function jo(e){return e&&e.thinkingEffort?e.thinkingEffort:n.chatThinking?n.chatThinking:"off"}function ng(e){for(var t=e||"off",r="",i=0;i<cn.length;i++){var a=cn[i];r+='<option value="'+p(a.id)+'"'+(a.id===t?" selected":"")+' title="'+p(a.hint)+'">'+p(a.label)+"</option>"}return r}function No(e){for(var t=e||"off",r="",i=0;i<cn.length;i++){var a=cn[i];r+='<option value="'+p(a.id)+'"'+(a.id===t?" selected":"")+">"+p(a.id)+"</option>"}return r}function rg(e){Jn()}function gv(e){var t=(e||"off").trim();t!=="off"&&t!=="standard"&&t!=="deep"&&t!=="max"&&(t="off"),n.chatThinking=t;try{localStorage.setItem("wand-thinking-effort",t)}catch{}Jn();var r=mt();r&&fetch("/api/sessions/"+encodeURIComponent(r.id)+"/thinking-effort",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({thinkingEffort:t})}).then(function(i){return i.json()}).then(function(i){if(i&&i.error){k(i.error,"error");return}i&&i.id&&(Z(i),typeof k=="function"&&k("\u5DF2\u5207\u6362\u601D\u8003\u6DF1\u5EA6 \u2192 "+mv(t),"success"))}).catch(function(){k("\u5207\u6362\u601D\u8003\u6DF1\u5EA6\u5931\u8D25","error")})}function Ro(e){if(!e)return!1;var t=e.mode;return t==="managed"||t==="full-access"}function hv(e){if(!e||Ro(e))return"";var t=!!e.autoApprovePermissions;return t?'<span id="auto-approve-toggle" class="composer-pill composer-pill-chip auto-approve-indicator active" title="\u81EA\u52A8\u6279\u51C6\u5DF2\u542F\u7528 \u2014 \u70B9\u51FB\u5173\u95ED">'+J("shieldCheck",{size:12,strokeWidth:1.7,cls:"composer-pill-icon"})+'<span class="composer-pill-label">\u81EA\u52A8</span></span>':'<span id="auto-approve-toggle" class="composer-pill composer-pill-chip auto-approve-indicator" title="\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED \u2014 \u70B9\u51FB\u5F00\u542F">'+J("shield",{size:12,strokeWidth:1.7,cls:"composer-pill-icon"})+'<span class="composer-pill-label">\u624B\u52A8</span></span>'}function Wo(){return fetch("/api/models",{credentials:"same-origin"}).then(function(e){return e.json()}).then(function(e){return e&&Array.isArray(e.models)&&(n.availableModels=e.models,n.availableCodexModels=Array.isArray(e.codexModels)?e.codexModels:[],Yn(mt()),yi(e)),e}).catch(function(){return null})}function yv(){if(n.modelsRefreshing)return Promise.resolve(null);n.modelsRefreshing=!0;var e=document.getElementById("cfg-default-model-refresh");return e&&(e.disabled=!0,e.textContent="\u5237\u65B0\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)&&(n.availableModels=t.models,n.availableCodexModels=Array.isArray(t.codexModels)?t.codexModels:[],Yn(mt()),yi(t),typeof k=="function"&&k("\u6A21\u578B\u5217\u8868\u5DF2\u5237\u65B0"+(t.claudeVersion?"\uFF08claude "+t.claudeVersion+"\uFF09":""),"success")),t}).catch(function(){return typeof k=="function"&&k("\u5237\u65B0\u6A21\u578B\u5217\u8868\u5931\u8D25","error"),null}).finally(function(){n.modelsRefreshing=!1,e&&(e.disabled=!1,e.textContent="\u5237\u65B0")})}function bv(){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(o){o.target===e&&Wa()});var t=e.querySelector("#env-preview-close");t&&t.addEventListener("click",Wa);var r=e.querySelector("#env-preview-close-2");r&&r.addEventListener("click",Wa);var a=e.querySelector("#env-preview-search");a&&a.addEventListener("input",function(){Vo()});var i=e.querySelector("#env-preview-reveal-toggle");i&&i.addEventListener("change",function(){zo(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=""),zo(!1)}function Wa(){var e=document.getElementById("env-preview-modal");e&&Ua(e)}function zo(e){var t=document.getElementById("env-preview-list"),r=document.getElementById("env-preview-meta");t&&(t.innerHTML='<div class="env-preview-loading">\u52A0\u8F7D\u4E2D\u2026</div>'),r&&(r.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>'),r&&(r.textContent="\u8BFB\u53D6\u5931\u8D25");return}if(n._envPreview=a,r){var u=a.inheritEnv?"\u7EE7\u627F\u7236\u8FDB\u7A0B":"\u6700\u5C0F\u767D\u540D\u5355";r.innerHTML='<span class="env-preview-pill '+(a.inheritEnv?"is-inherit":"is-minimal")+'">'+u+'</span><span class="env-preview-count">\u5171 '+a.total+" \u9879</span>"}Vo()}).catch(function(){t&&(t.innerHTML='<div class="env-preview-empty">\u8BFB\u53D6\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002</div>'),r&&(r.textContent="\u8BFB\u53D6\u5931\u8D25")})}function Vo(){var e=document.getElementById("env-preview-list");if(e){var t=n._envPreview;if(!t||!Array.isArray(t.entries)){e.innerHTML='<div class="env-preview-empty">\u5C1A\u672A\u52A0\u8F7D\u3002</div>';return}for(var r=document.getElementById("env-preview-search"),i=(r&&r.value||"").trim().toLowerCase(),a="",u=0,s=0;s<t.entries.length;s++){var o=t.entries[s];if(!(i&&o.name.toLowerCase().indexOf(i)===-1)){u++;var l=typeof o.value=="string"&&o.value.charAt(0)==="<"&&o.value.charAt(o.value.length-1)===">";a+='<div class="env-preview-row'+(o.sensitive?" is-sensitive":"")+'"><div class="env-preview-name">'+p(o.name)+(o.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(o.value))+'">'+p(String(o.value))+'</div><div class="env-preview-len">'+o.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 yi(e){var t=document.getElementById("cfg-default-model");if(t){var r=t.value,i=r||n.configDefaultModel||n.config&&n.config.defaultModel||"";t.innerHTML=vv(i,{provider:"claude"}),t.value=i;var a=document.getElementById("cfg-default-model-version");a&&e&&(a.textContent=e.claudeVersion?"\u5DF2\u68C0\u6D4B\u5230 claude "+e.claudeVersion:"\u65B0\u5EFA\u4F1A\u8BDD\u65F6\u9ED8\u8BA4\u4F7F\u7528\u8BE5\u6A21\u578B\u3002")}}function mt(){if(!n.selectedId)return null;for(var e=0;e<n.sessions.length;e++)if(n.sessions[e].id===n.selectedId)return n.sessions[e];return null}function Ev(e){var t=(e||"").trim();n.chatModel=t;try{localStorage.setItem("wand-chat-model",t)}catch{}Jn();var r=mt();r&&fetch("/api/sessions/"+encodeURIComponent(r.id)+"/model",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({model:t||null})}).then(function(i){return i.json()}).then(function(i){if(i&&i.error){k(i.error,"error");return}if(i&&i.id&&(Z(i),typeof k=="function")){var a=t||"\u9ED8\u8BA4",u=r.provider==="codex"?"\uFF08\u4E0B\u6B21\u5BF9\u8BDD\u751F\u6548\uFF09":"";k("\u5DF2\u5207\u6362\u6A21\u578B \u2192 "+a+u,"success")}}).catch(function(){k("\u5207\u6362\u6A21\u578B\u5931\u8D25","error")})}function Uo(e,t,r,i){var a=n.sessionTool==="codex"?"codex":"claude",u=n.chatModel||n.config&&n.config.defaultModel||"",s=n.chatThinking||"off",o={cwd:t||Je(),mode:r||n.chatMode||n.config&&n.config.defaultMode||"default",provider:a,runner:a==="codex"?"codex-cli-exec":n.config&&n.config.structuredRunner==="sdk"?"claude-sdk":n.structuredRunner||"claude-cli-print",prompt:e||void 0,worktreeEnabled:i===!0,model:u||void 0,thinkingEffort:s};return fetch("/api/structured-sessions",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(o)}).then(function(l){return l.json()}).then(function(l){if(l.error)throw new Error(l.error);return n.selectedId=l.id,ye(),n.drafts[l.id]="",Ct(),Z(l),ve(),Er(l.id),xn(l.id),fn(l.id).then(function(){return l})})}function bi(){var e=!!n.selectedId,t=document.getElementById("output"),r=document.getElementById("chat-output"),i=document.getElementById("blank-chat"),a=n.sessions.find(function(l){return l.id===n.selectedId}),u=oe(a),s=e&&!u&&n.currentView==="terminal",o=e&&(u||n.currentView!=="terminal");u?n.currentView="chat":e||(n.currentView="terminal"),t&&(t.classList.toggle("active",s),t.classList.toggle("hidden",!s)),r&&(r.classList.toggle("active",o),r.classList.toggle("hidden",!o)),i&&i.classList.toggle("hidden",e),r&&o&&Aa(r),rr(),Ke(),Fr()}function kr(){var e=document.getElementById("mode-description"),t=document.getElementById("session-kind-description"),r=n.sessionTool||"claude",i=n.sessionCreateKind||"structured";n.sessionTool=r,n.modeValue=Nt(r,n.modeValue||n.chatMode||"default");var a=document.querySelectorAll("#provider-cards .provider-card");a.length&&a.forEach(function(o){var l=o.getAttribute("data-provider");o.classList.toggle("active",l===r),o.classList.remove("disabled")});var u=document.querySelectorAll("#session-kind-cards .session-kind-card");u.length&&u.forEach(function(o){var l=o.getAttribute("data-session-kind"),c=!1;o.classList.toggle("active",l===i),o.classList.toggle("disabled",c)});var s=document.querySelectorAll("#mode-cards .mode-card");s.length&&s.forEach(function(o){o.classList.toggle("active",o.getAttribute("data-mode")===n.modeValue)}),t&&(t.textContent=Nu(i)),e&&(e.textContent=Lo(r,n.modeValue))}function Z(e){if(!(!e||!e.id)){var t=n.sessions.find(function(s){return s.id===e.id})||null,r=Il(e,t),i=!1,a=null;n.sessions=n.sessions.map(function(s){return s.id!==r.id?s:(a=s,i=!0,Object.assign({},s,r))}),i||n.sessions.unshift(r);var u=n.sessions.find(function(s){return s.id===r.id})||r;u&&Array.isArray(u.queuedMessages)&&r.id===n.selectedId&&(jr(u),ou(),un()),r.id===n.selectedId&&(Ea(),Jt()),r.status&&r.status!=="running"&&n.crossSessionQueue.length>0&&setTimeout(ai,0)}}function xn(e){!e||!n.ws||n.ws.readyState!==WebSocket.OPEN||n.ws.send(JSON.stringify({type:"subscribe",sessionId:e}))}function Fv(e,t){if(!e)return t;var r=Object.assign({},e,t),i=e.output||"",a=t.output||"",u=i.length>a.length,s=e.structuredState||null,o=t.structuredState||null,l=e.sessionKind==="structured"||t.sessionKind==="structured",c=!!(e.messages&&e.messages.length&&(function(){var g=e.messages[e.messages.length-1];return g&&g.role==="assistant"&&Array.isArray(g.content)&&g.content.some(function(y){return y&&y.__processing})})()),d=Array.isArray(e.messages)?l?ar(e.messages):e.messages:[],f=Array.isArray(t.messages)?l?ar(t.messages):t.messages:[],v=f.length>0&&(function(){var g=f[f.length-1];return g&&g.role==="assistant"&&Array.isArray(g.content)&&!g.content.some(function(y){return y&&y.__processing})})(),m=e.sessionKind==="structured"&&!!s&&s.inFlight===!0&&(!o||o.inFlight!==!0)&&c&&!!s.activeRequestId&&!!o&&!!o.activeRequestId&&o.activeRequestId===s.activeRequestId&&!v,b=d.length>f.length||d.length>0&&f.length>0&&JSON.stringify(d[d.length-1])!==JSON.stringify(f[f.length-1])&&JSON.stringify(d).length>JSON.stringify(f).length;return u&&(r.output=i),m&&(r.status=e.status||r.status,r.structuredState=Object.assign({},o||{},s,{inFlight:!0}),r.messages=e.messages),b&&(r.messages=d),e.id===n.selectedId&&(e.permissionBlocked&&t.permissionBlocked===!1||e.permissionBlocked&&!t.permissionBlocked&&(r.permissionBlocked=!0),e.pendingEscalation&&!t.pendingEscalation&&t.permissionBlocked!==!1&&(r.pendingEscalation=e.pendingEscalation),e.messages&&e.messages.length>0&&(!t.messages||t.messages.length===0)&&(r.messages=e.messages)),r}function tt(e,t,r){if(e&&e.messages&&e.messages.length>0)return e.messages;if(e&&e.sessionKind==="structured")return[];if(!r)return[];var i=typeof t=="string"?t:e&&e.output||"";return i?jp(i,e&&e.command):[]}function wv(e){if(!e||!e.length)return null;if(n.selectedId){var t=e.find(function(a){return a.id===n.selectedId});return t?t.id:null}var r=e.find(function(a){return a.status==="running"});if(r)return r.id;var i=e.find(function(a){return!a.archived});return i?i.id:e[0].id}function dn(e){var t=e||{};return fetch("/api/sessions",{credentials:"same-origin"}).then(function(r){if(r.status===401){Io();return}return r.json()}).then(function(r){var i=r||[],a=new Set(i.map(function(f){return f.id}));Object.keys(n.drafts).forEach(function(f){a.has(f)||delete n.drafts[f]}),n.sessions=i.map(function(f){var v=n.sessions.find(function(m){return m.id===f.id});return Fv(v,f)});var u=wv(n.sessions);if(u!==void 0&&(n.selectedId=u),cu(),un(),n.bootstrapping=!1,ye(),n.modalOpen)ve();else{var s=document.getElementById("sessions-list"),o=Wi();if(s&&s.innerHTML===o){var l=document.getElementById("session-count");l&&(l.textContent=String(n.sessions.length))}else{s&&(s.innerHTML=o);var l=document.getElementById("session-count");l&&(l.textContent=String(n.sessions.length))}}Ar(),n.selectedId&&n.gitStatusSessionId!==n.selectedId&&En(n.selectedId);var c=Promise.resolve();if(!t.skipSelectedOutputReload&&n.selectedId)c=fn(n.selectedId);else if(n.selectedId){var d=n.sessions.find(function(f){return f.id===n.selectedId});oe(d)&&(Ct({preserveStickState:!0}),lo(!0))}return c.then(function(){n.crossSessionQueue.length>0&&ai(),Bt(),sa()})}).catch(function(r){var i=r&&r.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:",r)})}var za=null;function Ko(){za||(za=setTimeout(function(){za=null,ve()},200))}function ve(){var e=document.getElementById("sessions-list"),t=document.getElementById("session-count");e&&(e.innerHTML=Wi()),t&&(t.textContent=String(n.sessions.length)),typeof $t=="function"&&$t(),Ar(),n.crossSessionQueue.length>0&&Bt()}function Ar(){var e=n.sessions.find(function(m){return m.id===n.selectedId});e||(An(!1),ba(),Gs());var t=e?gi(e.command):"Wand",r=e?or(e):"\u5F00\u59CB\u5BF9\u8BDD",i=document.querySelector(".session-summary-value"),a=document.getElementById("terminal-title"),u=document.getElementById("terminal-info"),s=document.getElementById("blank-chat"),o=document.getElementById("output"),l=document.getElementById("chat-output"),c=document.getElementById("stop-button");i&&i.textContent!==t&&(i.textContent=t),a&&a.textContent!==t&&(a.textContent=t),u&&(u.textContent=e?r+" \xB7 "+fv(e):r);var d=document.getElementById("session-kind-display"),f=e?dv(e):"\u7EC8\u7AEF";d&&d.textContent!==f&&(d.textContent=f),ts(),!n.terminal&&o&&e&&zn(),n.terminal&&o&&!o.contains(n.terminal.element)&&(pr(),zn()),e||(n.terminalSessionId=null,n.terminalOutput="",n.terminalOutputMarker=0),n.terminal&&e&&n.currentView==="terminal"&&ft("view");var v=document.querySelector(".input-panel");e?(s&&s.classList.add("hidden"),o&&o.classList.remove("hidden"),l&&l.classList.remove("hidden"),v&&v.classList.remove("hidden")):(s&&s.classList.remove("hidden"),o&&o.classList.add("hidden"),l&&l.classList.add("hidden"),c&&c.classList.add("hidden"),v&&v.classList.add("hidden")),hi(),Yn(mt()),bi(),Ea()}function fn(e){n.chatRenderTimer&&(clearTimeout(n.chatRenderTimer),n.chatRenderTimer=null);var t=n.sessions.find(function(i){return i.id===e}),r="/api/sessions/"+e;return pv(t)&&(r+="?format=chat"),fetch(r,{credentials:"same-origin"}).then(function(i){return i.json()}).then(function(i){if(i.error){n.selectedId===e&&(n.selectedId=null,ye()),dn();return}if(Z(i),Ar(),n.terminal&&e===n.selectedId&&i.output!==void 0){var a=!!n.ws&&(n.ws.readyState===WebSocket.OPEN||n.ws.readyState===WebSocket.CONNECTING);a?et("session-switch"):(Zr(e,i.output,{mode:"append"}),et("session-switch",{forceReplay:!0}))}var u=n.sessions.find(function(s){return s.id===e});n.currentMessages=Re(u,tt(u,i.output,!1)),Ye(!1)})}function Rt(e){var t=n.sessions.find(function(s){return s.id===e});if(t){n.selectedId!==e&&pr(),n.selectedId=e,ye(),n.toolContentCache={},n.messageQueue=[],n.pendingMessages=[],jr(t),cu(),un(),Ct(),n.currentMessages=[],n.chatRenderTimer&&(clearTimeout(n.chatRenderTimer),n.chatRenderTimer=null);var r=document.getElementById("todo-progress");r&&r.classList.add("hidden");var i=document.querySelector(".structured-status-bar");i&&i.remove(),n._statusBarTimerId&&(clearInterval(n._statusBarTimerId),n._statusBarTimerId=null),n._statusBarStartTime=0;var a=document.querySelector(".input-composer");a&&a.classList.remove("in-flight");var u=t;n.preferredCommand=vt(),n.chatMode=Nt("claude",u&&u.mode?u.mode:n.chatMode),n.terminalInteractive&&u&&u.status!=="running"&&An(!1),ve(),Er(e),n.filePanelOpen&&(Pl(u),Mt()),fn(e).then(function(){_t(!0)}),xn(e),n.gitStatus=null,n.gitStatusSessionId=null,Ni(),En(e,{force:!0})}}function Cv(){var e=document.getElementById("sessions-drawer"),t=document.querySelector(".main-layout"),r=Pe(),i=!!n.sidebarPinned&&!!n.sidebarCollapsed,a=i||!r&&(!!n.sidebarPinned||!!n.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",!!n.sidebarPinned),u.title=n.sidebarPinned?"\u5DF2\u56FA\u5B9A\u5E38\u9A7B\uFF08\u70B9\u51FB\u89E3\u9664\u9501\u5B9A\uFF09":"\u56FA\u5B9A\u4FA7\u680F\u5E38\u9A7B",u.setAttribute("aria-label",n.sidebarPinned?"\u89E3\u9664\u56FA\u5B9A\u5E38\u9A7B":"\u56FA\u5B9A\u4FA7\u680F\u5E38\u9A7B"),u.setAttribute("aria-pressed",n.sidebarPinned?"true":"false"))}function xr(){var e=document.getElementById("sessions-drawer"),t=document.getElementById("sessions-drawer-backdrop"),r=document.querySelector(".main-layout");e&&e.classList.toggle("open",n.sessionsDrawerOpen),t&&t.classList.toggle("open",pu()),r&&r.classList.toggle("sidebar-open",n.sessionsDrawerOpen);var i=document.getElementById("sessions-toggle-button");i&&i.classList.toggle("active",n.sessionsDrawerOpen),Cv()}function Bv(){var e=Pe();if(!e){var t=n.sidebarPinned?!1:!n.sessionsDrawerOpen;n.sessionsDrawerOpen=t,t&&(n.sidebarCollapsed=!1,ke("wand-sidebar-collapsed",!1)),ke("wand-sidebar-open",n.sessionsDrawerOpen),tn(),Ir();return}if(n.sessionsDrawerOpen=!n.sessionsDrawerOpen,ke("wand-sidebar-open",n.sessionsDrawerOpen),n.sessionsDrawerOpen){n.filePanelOpen=!1;try{localStorage.setItem("wand-file-panel-open","false")}catch{}}tn()}function Sr(){var e=Pe();if(!e){if(!n.sidebarPinned&&!n.sessionsDrawerOpen)return;Br(),n.sidebarPinned=!1,n.sessionsDrawerOpen=!1,ke("wand-sidebar-pinned",!1),ke("wand-sidebar-open",!1),tn(),Ir();return}n.sessionsDrawerOpen&&(Br(),n.sessionsDrawerOpen=!1,ke("wand-sidebar-open",!1),tn())}function Dv(){if(Pe()){Sr();return}n.sidebarPinned||n.sidebarCollapsed||!n.sessionsDrawerOpen||(Br(),n.sessionsDrawerOpen=!1,ke("wand-sidebar-open",!1),tn(),Ir())}function Jo(e){var t=document.getElementById("composer-plus-popover"),r=document.getElementById("attach-btn");n.plusPopoverOpen=!!e,t&&t.classList.toggle("hidden",!e),r&&(r.classList.toggle("active",!!e),r.setAttribute("aria-expanded",e?"true":"false"))}function kv(){Jo(!n.plusPopoverOpen)}function Ei(){n.plusPopoverOpen&&Jo(!1)}function Wt(){Pe()&&n.sessionsDrawerOpen&&Sr()}function Ir(){var e=document.querySelector(".main-layout");if(e){var t=function(r){r.propertyName==="padding-left"&&(e.removeEventListener("transitionend",t),Ot(!0))};e.addEventListener("transitionend",t)}setTimeout(function(){Ot(!0)},350)}var zt=null;function Av(){return zt&&document.body.contains(zt)||(zt=document.createElement("div"),zt.className="sidebar-tile-bubble",zt.setAttribute("role","tooltip"),document.body.appendChild(zt)),zt}function $t(){zt&&zt.classList.remove("visible")}function xv(e,t){if(!t){$t();return}var r=Av();r.textContent=t.length>400?t.slice(0,400)+"\u2026":t;var i=e.getBoundingClientRect();r.classList.add("visible");var a=r.getBoundingClientRect(),u=i.top+i.height/2,s=u-a.height/2,o=8,l=window.innerHeight-a.height-8;s<o&&(s=o),s>l&&(s=Math.max(o,l)),r.style.left=i.right+12+"px",r.style.top=s+"px",r.style.setProperty("--bubble-tail-y",u-s+"px")}function Sv(e){if(e.dataset.collapsedSessionId){var t=n.sessions.find(function(a){return a.id===e.dataset.collapsedSessionId});if(!t)return"";var r=gc(t);return r||t.summary||t.command||""}if(e.dataset.collapsedHistoryId){var i=n.claudeHistory.find(function(a){return a.claudeSessionId===e.dataset.collapsedHistoryId});if(i&&i.firstUserMessage)return i.firstUserMessage}return""}function Iv(e){var t=e.target;if(!(!t||!(t instanceof Element))){var r=t.closest(".sidebar-collapsed-tile");if(!r){$t();return}var i=Sv(r);if(!i){$t();return}xv(r,i)}}function Tv(e){var t=e.relatedTarget;t&&t instanceof Element&&t.closest(".sidebar-collapsed-tile")||$t()}function Lv(){var e=Pe();n.sidebarPinned||(n.sidebarPinned=!0,ke("wand-sidebar-pinned",!0)),n.sidebarCollapsed=!n.sidebarCollapsed,ke("wand-sidebar-collapsed",n.sidebarCollapsed),n.sidebarCollapsed?n.sessionsDrawerOpen=!1:e?(n.sidebarPinned=!1,n.sessionsDrawerOpen=!0,ke("wand-sidebar-pinned",!1)):n.sessionsDrawerOpen=!0,ke("wand-sidebar-open",n.sessionsDrawerOpen),tn(),ve(),qv(),$t(),Ir()}function Mv(){Pe()||(n.sidebarPinned=!n.sidebarPinned,n.sessionsDrawerOpen=!0,ke("wand-sidebar-pinned",n.sidebarPinned),ke("wand-sidebar-open",!0),tn(),Ir())}function qv(){var e=document.getElementById("sidebar-collapse-btn");if(e){var t=!!n.sidebarPinned&&!!n.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 Ov(e){if(e){e.style.left="",e.style.right="";var t=e.offsetParent||e.parentElement;if(t){var r=8,i=t.getBoundingClientRect(),a=e.getBoundingClientRect(),u=window.innerWidth;a.left<r?(e.style.right="auto",e.style.left=r-i.left+"px"):a.right>u-r&&(e.style.left="auto",e.style.right=i.right-(u-r)+"px")}}}function Va(){Qn(),n.modalOpen=!0,n.sessionsDrawerOpen=!1,ke("wand-sidebar-open",!1),xr();var e=document.getElementById("session-modal");e&&(e._wandCloseTimer&&(clearTimeout(e._wandCloseTimer),e._wandCloseTimer=null),e.classList.remove("closing"),e.classList.remove("hidden"),n.lastFocusedElement=document.activeElement,n.sessionTool=vt(),n.preferredCommand=n.sessionTool,n.sessionCreateKind="structured",n.sessionCreateWorktree=!1,n.modeValue=Nt(n.sessionTool,n.modeValue||n.chatMode),kr(),um(),setTimeout(function(){var t=document.getElementById("mode-cards");t&&t.focus()},20),Fi(e))}function pn(){n.modalOpen=!1;var e=document.getElementById("session-modal");e&&(n.focusTrapHandler&&(document.removeEventListener("keydown",n.focusTrapHandler),n.focusTrapHandler=null),n.lastFocusedElement&&typeof n.lastFocusedElement.focus=="function"&&n.lastFocusedElement.focus(),Ua(e)),Xn()}function Ua(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 Fi(e){n.focusTrapHandler&&document.removeEventListener("keydown",n.focusTrapHandler);var t='button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])';n.focusTrapHandler=function(r){if(r.key==="Tab"){var i=e.querySelectorAll(t),a=i[0],u=i[i.length-1];!a||!u||(r.shiftKey?document.activeElement===a&&(r.preventDefault(),u.focus()):document.activeElement===u&&(r.preventDefault(),a.focus()))}},document.addEventListener("keydown",n.focusTrapHandler)}function Pv(){return n.activeWorktreeMergeSessionId&&n.sessions.find(function(e){return e.id===n.activeWorktreeMergeSessionId})||null}function Tr(){var e=document.getElementById("worktree-merge-content"),t=document.getElementById("worktree-merge-confirm-button"),r=document.getElementById("worktree-merge-error"),i=Pv(),a=n.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}r&&(n.worktreeMergeError?Ne(r,n.worktreeMergeError):ti(r));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>")):n.worktreeMergeLoading&&u.push('<p class="field-hint">\u6B63\u5728\u68C0\u67E5 worktree \u5408\u5E76\u72B6\u6001\u2026</p>'),e.innerHTML=u.join(""),t.disabled=n.worktreeMergeLoading||n.worktreeMergeSubmitting||!a||a.ok!==!0,t.textContent=n.worktreeMergeSubmitting?"\u5408\u5E76\u4E2D...":"\u786E\u8BA4\u5408\u5E76\u5E76\u6E05\u7406"}}function Yo(e){n.activeWorktreeMergeSessionId=e,n.worktreeMergeCheckResult=null,n.worktreeMergeLoading=!0,n.worktreeMergeSubmitting=!1,n.worktreeMergeError="",pn(),Qn();var t=document.getElementById("worktree-merge-modal");t&&(t.classList.remove("hidden"),n.lastFocusedElement=document.activeElement,Fi(t)),Tr(),fetch("/api/sessions/"+encodeURIComponent(e)+"/worktree/merge/check",{method:"POST",credentials:"same-origin"}).then(function(r){return r.json()}).then(function(r){if(r&&r.error)throw new Error(r.error);r&&r.session&&Z(r.session),n.worktreeMergeCheckResult=r.result||null,n.worktreeMergeError=""}).catch(function(r){n.worktreeMergeError=r&&r.message||"\u65E0\u6CD5\u68C0\u67E5 worktree \u5408\u5E76\u72B6\u6001\u3002"}).finally(function(){n.worktreeMergeLoading=!1,Tr()})}function Gn(){var e=document.getElementById("worktree-merge-modal");n.activeWorktreeMergeSessionId=null,n.worktreeMergeCheckResult=null,n.worktreeMergeLoading=!1,n.worktreeMergeSubmitting=!1,n.worktreeMergeError="",e&&e.classList.add("hidden"),n.focusTrapHandler&&(document.removeEventListener("keydown",n.focusTrapHandler),n.focusTrapHandler=null),n.lastFocusedElement&&typeof n.lastFocusedElement.focus=="function"&&n.lastFocusedElement.focus()}function Hv(){!n.activeWorktreeMergeSessionId||n.worktreeMergeSubmitting||(n.worktreeMergeSubmitting=!0,n.worktreeMergeError="",Tr(),fetch("/api/sessions/"+encodeURIComponent(n.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&&Z(e.session),k("\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"),Gn(),jt()}).catch(function(e){n.worktreeMergeError=e&&e.message||"\u65E0\u6CD5\u5408\u5E76 worktree\u3002",Tr()}).finally(function(){n.worktreeMergeSubmitting=!1,Tr()}))}function Go(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&&Z(t.session),k("\u5DF2\u5B8C\u6210 worktree \u6E05\u7406\u3002","info"),jt()}).catch(function(t){k(t&&t.message||"\u65E0\u6CD5\u6E05\u7406 worktree\u3002","error")})}function _v(){pn();var e=document.getElementById("settings-modal");if(e){e._wandCloseTimer&&(clearTimeout(e._wandCloseTimer),e._wandCloseTimer=null),e.classList.remove("closing"),e.classList.remove("hidden"),n.lastFocusedElement=document.activeElement;var t=document.getElementById("new-password"),r=document.getElementById("confirm-password");t&&(t.value=""),r&&(r.value=""),Qo(),Fi(e),Nv(),Ka("about"),Vv();var i=document.getElementById("cfg-notif-sound"),a=document.getElementById("cfg-notif-bubble");i&&(i.checked=n.notifSound),a&&(a.checked=n.notifBubble);var u=document.getElementById("cfg-notif-volume"),s=document.getElementById("cfg-notif-volume-val");if(u){u.value=n.notifVolume,s&&(s.textContent=n.notifVolume+"%");try{u.dispatchEvent(new Event("input",{bubbles:!0}))}catch{}}var o=document.getElementById("notif-volume-field");if(o&&(o.style.display=n.notifSound?"":"none"),mn(),typeof WandNative<"u"&&typeof WandNative.getAppIcon=="function")try{Zo(WandNative.getAppIcon()||"shorthair")}catch{}if(He&&typeof WandNative.getNotificationSound=="function")try{var l=document.getElementById("native-sound-select");l&&(l.value=WandNative.getNotificationSound())}catch{}if(He&&typeof WandNative.getNotificationVolume=="function")try{var c=WandNative.getNotificationVolume();if(n.notifVolume=c,u&&(u.value=String(c)),s&&(s.textContent=c+"%"),u)try{u.dispatchEvent(new Event("input",{bubbles:!0}))}catch{}try{localStorage.setItem("wand-notif-volume",String(c))}catch{}}catch{}if(He&&typeof WandNative.isHapticEnabled=="function")try{var d=document.getElementById("cfg-haptic-enabled");d&&(d.checked=WandNative.isHapticEnabled())}catch{}}}function Qn(){var e=document.getElementById("settings-modal");e&&(n.focusTrapHandler&&(document.removeEventListener("keydown",n.focusTrapHandler),n.focusTrapHandler=null),n.lastFocusedElement&&typeof n.lastFocusedElement.focus=="function"&&n.lastFocusedElement.focus(),Ua(e))}function Qo(){var e=document.getElementById("settings-error"),t=document.getElementById("settings-success");e&&e.classList.add("hidden"),t&&t.classList.add("hidden")}function jv(){var e=document.getElementById("new-password").value,t=document.getElementById("confirm-password").value,r=document.getElementById("settings-error"),i=document.getElementById("settings-success");if(Qo(),!e||e.length<6){r.textContent="\u5BC6\u7801\u957F\u5EA6\u81F3\u5C11\u4E3A 6 \u4E2A\u5B57\u7B26\u3002",r.classList.remove("hidden");return}if(e!==t){r.textContent="\u4E24\u6B21\u8F93\u5165\u7684\u5BC6\u7801\u4E0D\u4E00\u81F4\u3002",r.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){r.textContent=a.error,r.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(){r.textContent="Failed to save password.",r.classList.remove("hidden")})}function Ka(e){for(var t=document.querySelectorAll(".settings-tab"),r=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<r.length;u++){var s=r[u].id==="settings-tab-"+e;s?(r[u].classList.add("active"),r[u].removeAttribute("hidden")):(r[u].classList.remove("active"),r[u].setAttribute("hidden","hidden"))}}function $o(e){if(e&&!(e.key!=="ArrowUp"&&e.key!=="ArrowDown"&&e.key!=="Home"&&e.key!=="End")){var t=Array.prototype.slice.call(document.querySelectorAll(".settings-tab"));if(t.length){var r=t.indexOf(e.currentTarget);if(r!==-1){e.preventDefault();var i=r;e.key==="ArrowUp"&&(i=r>0?r-1:t.length-1),e.key==="ArrowDown"&&(i=r<t.length-1?r+1:0),e.key==="Home"&&(i=0),e.key==="End"&&(i=t.length-1);var a=t[i];if(a){var u=a.getAttribute("data-tab");u&&Ka(u),typeof a.focus=="function"&&a.focus()}}}}}function Nv(){for(var e=document.querySelectorAll(".settings-tab"),t=0;t<e.length;t++)e[t].removeEventListener("keydown",$o),e[t].addEventListener("keydown",$o)}function Rv(e){if(e){var t=e.config||{},r={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:n.notifSound?"\u63D0\u793A\u97F3 "+n.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 r)if(Object.prototype.hasOwnProperty.call(r,i)){var a=document.querySelector('.settings-tab[data-tab="'+i+'"] .settings-tab-meta');a&&(a.textContent=r[i]||"")}}}function Wv(e){var t=document.getElementById("android-connect-qr"),r=document.getElementById("android-connect-qr-empty"),i=window.QRCodeLib;if(t){if(!i||typeof i.toCanvas!="function"){r&&(r.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){r&&(r.textContent="\u4E8C\u7EF4\u7801\u751F\u6210\u5931\u8D25",r.style.display=""),t.style.visibility="hidden";return}r&&(r.style.display="none"),t.style.visibility="visible"})}catch{r&&(r.textContent="\u4E8C\u7EF4\u7801\u751F\u6210\u5931\u8D25",r.style.display=""),t.style.visibility="hidden"}}}function zv(e){var t=window.QRCodeLib;if(!t||typeof t.toCanvas!="function")return;var r=document.getElementById("connect-qr-modal");r&&r.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 s(){i.remove()}i.addEventListener("click",function(l){l.target===i&&s()});var o=i.querySelector(".connect-qr-modal-close");o&&o.addEventListener("click",s)}function Lr(e,t,r){if(!e)return;function i(){if(Vn("light"),r){r();return}if(t){var a=t.textContent;t.textContent="\u5DF2\u590D\u5236",setTimeout(function(){t.textContent=a},1500)}}if(He&&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 vn(e){if(typeof e!="number"||!isFinite(e)||e<0)return"-";if(e<1024)return e+" B";for(var t=["KB","MB","GB","TB"],r=e/1024,i=0;r>=1024&&i<t.length-1;)r=r/1024,i+=1;var a=r>=10?r.toFixed(0):r.toFixed(1);return a+" "+t[i]}function Vv(){fetch("/api/settings",{credentials:"same-origin"}).then(function(e){return e.json()}).then(function(e){Rv(e);var t=document.getElementById("settings-pkg-name"),r=document.getElementById("settings-version"),i=document.getElementById("settings-node-req"),a=document.getElementById("settings-repo-url");t&&(t.textContent=e.packageName||"-"),r&&(r.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"),s=document.getElementById("do-update-button");e.latestVersion&&u&&(u.textContent=e.latestVersion,e.updateAvailable&&s&&s.classList.remove("hidden"));var o=document.getElementById("beta-channel-toggle");o&&(o.checked=e.updateChannel==="beta");var l=e.autoUpdate||{},c=document.getElementById("auto-update-web-toggle");c&&(c.checked=!!l.web);var d=document.getElementById("auto-update-apk-toggle");d&&(d.checked=!!Dn&&!!l.apk);var f=document.getElementById("auto-update-dmg-toggle");f&&(f.checked=!!rn&&!!l.dmg);function v(ee,xe){typeof window.wandAlert=="function"?window.wandAlert(ee,{type:xe==="error"?"danger":"info"}):typeof k=="function"?k(ee,xe==="error"?"error":"info"):xe==="error"&&alert(ee)}function m(ee,xe,Se){var yt=Se?Se.textContent:"";Se&&(Se.disabled=!0,Se.textContent="\u4E0B\u8F7D\u4E2D\u2026");function dt(){Se&&(Se.disabled=!1,Se.textContent=yt)}fetch(ee,{method:"HEAD",credentials:"same-origin"}).then(function(pe){if(!pe.ok){v(pe.status===404?"\u4E0B\u8F7D\u672A\u542F\u7528\u6216\u6587\u4EF6\u5DF2\u79FB\u9664":"\u4E0B\u8F7D\u5931\u8D25 (HTTP "+pe.status+")","error"),dt();return}var Xe=document.createElement("a");Xe.href=ee,Xe.download=xe||"",document.body.appendChild(Xe),Xe.click(),document.body.removeChild(Xe),v("\u5DF2\u5F00\u59CB\u4E0B\u8F7D\uFF0C\u8BF7\u5728\u901A\u77E5\u680F/\u4E0B\u8F7D\u7BA1\u7406\u4E2D\u67E5\u770B","info"),dt()}).catch(function(pe){v("\u4E0B\u8F7D\u5931\u8D25: "+(pe&&pe.message?pe.message:pe),"error"),dt()})}function b(ee,xe){function Se(bt){return String(bt||"").replace(/^v/,"").split("-")[0].split(".").map(function(Zn){return parseInt(Zn,10)||0})}for(var yt=Se(ee),dt=Se(xe),pe=0;pe<3;pe++){var Xe=(yt[pe]||0)-(dt[pe]||0);if(Xe!==0)return Xe>0?1:-1}return 0}function g(ee,xe,Se,yt,dt){ee.classList.remove("hidden"),ee.disabled=!1,xe>0?ee.textContent="\u5347\u7EA7":xe===0?(ee.textContent="\u5DF2\u662F\u6700\u65B0",ee.disabled=!0):ee.textContent="\u91CD\u65B0\u5B89\u88C5",ee.onclick=ee.disabled?null:function(){try{WandNative.downloadUpdate(Se,yt,dt)}catch(pe){v("\u8C03\u7528\u4E0B\u8F7D\u5931\u8D25: "+(pe&&pe.message?pe.message:pe),"error")}}}var y=document.getElementById("android-apk-section"),w=document.getElementById("android-apk-current-row"),F=document.getElementById("settings-android-apk-current"),E=document.getElementById("android-apk-github-row"),A=document.getElementById("settings-android-apk-github"),x=document.getElementById("download-github-apk-btn"),S=document.getElementById("android-apk-local-row"),P=document.getElementById("settings-android-apk-local"),z=document.getElementById("download-local-apk-btn"),G=document.getElementById("android-apk-message"),L=e.androidApk||{},B=!!Dn,T=L.enabled!==!1,I=B||T&&(!!L.github||!!L.local);if(y&&(I?y.classList.remove("hidden"):y.classList.add("hidden")),B){if(w&&F&&(F.textContent="v"+Dn,w.classList.remove("hidden")),L.github&&E&&A){var V=L.github.version?"v"+L.github.version:L.github.fileName;if(typeof L.github.size=="number"&&(V+=" \xB7 "+vn(L.github.size)),A.textContent=V,E.classList.remove("hidden"),x){var re=L.github.version?b(L.github.version,Dn):1;g(x,re,L.github.downloadUrl,L.github.fileName||"wand-update.apk","github")}}if(L.local&&S&&P){var te=L.local.version?"v"+L.local.version:L.local.fileName;if(typeof L.local.size=="number"&&(te+=" \xB7 "+vn(L.local.size)),P.textContent=te,S.classList.remove("hidden"),z){var $=L.local.version?b(L.local.version,Dn):1;g(z,$,L.local.downloadUrl,L.local.fileName||"wand-update.apk","local")}}!L.github&&!L.local&&G&&(G.textContent="\u6682\u65E0\u53EF\u7528\u66F4\u65B0",G.classList.remove("hidden"));var ie=document.getElementById("android-auto-update-row"),U=document.getElementById("android-auto-update-hint");ie&&ie.classList.remove("hidden"),U&&U.classList.remove("hidden")}else{if(L.github&&E&&A){var M=L.github.version?"v"+L.github.version:L.github.fileName;typeof L.github.size=="number"&&(M+=" \xB7 "+vn(L.github.size)),A.textContent=M,E.classList.remove("hidden"),x&&(x.textContent="\u4E0B\u8F7D",x.classList.remove("hidden"),x.onclick=function(){window.open(L.github.downloadUrl,"_blank"),v("\u6B63\u5728\u6253\u5F00\u4E0B\u8F7D\u9875\u2026","info")})}if(L.local&&S&&P){var H=L.local.version?"v"+L.local.version:L.local.fileName;typeof L.local.size=="number"&&(H+=" \xB7 "+vn(L.local.size)),P.textContent=H,S.classList.remove("hidden"),z&&(z.textContent="\u4E0B\u8F7D",z.classList.remove("hidden"),z.onclick=function(){m(L.local.downloadUrl,L.local.fileName||"wand-update.apk",z)})}!L.github&&!L.local&&G&&(G.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",G.classList.remove("hidden"))}var N=document.getElementById("macos-dmg-section"),Y=document.getElementById("macos-dmg-current-row"),K=document.getElementById("settings-macos-dmg-current"),X=document.getElementById("macos-dmg-github-row"),ae=document.getElementById("settings-macos-dmg-github"),le=document.getElementById("download-github-dmg-btn"),ue=document.getElementById("macos-dmg-local-row"),Ce=document.getElementById("settings-macos-dmg-local"),Fe=document.getElementById("download-local-dmg-btn"),be=document.getElementById("macos-dmg-message"),O=e.macosDmg||{},R=!!rn,se=O.enabled!==!1,Be=R||se&&(!!O.github||!!O.local);if(N&&(Be?N.classList.remove("hidden"):N.classList.add("hidden")),R){if(Y&&K&&(K.textContent="v"+rn,Y.classList.remove("hidden")),O.github&&X&&ae){var ne=O.github.version?"v"+O.github.version:O.github.fileName;if(typeof O.github.size=="number"&&(ne+=" \xB7 "+vn(O.github.size)),ae.textContent=ne,X.classList.remove("hidden"),le){var de=O.github.version?b(O.github.version,rn):1;g(le,de,O.github.downloadUrl,O.github.fileName||"wand-update.dmg","github")}}if(O.local&&ue&&Ce){var Me=O.local.version?"v"+O.local.version:O.local.fileName;if(typeof O.local.size=="number"&&(Me+=" \xB7 "+vn(O.local.size)),Ce.textContent=Me,ue.classList.remove("hidden"),Fe){var lt=O.local.version?b(O.local.version,rn):1;g(Fe,lt,O.local.downloadUrl,O.local.fileName||"wand-update.dmg","local")}}!O.github&&!O.local&&be&&(be.textContent="\u6682\u65E0\u53EF\u7528\u66F4\u65B0",be.classList.remove("hidden"));var gt=document.getElementById("macos-auto-update-row"),Ge=document.getElementById("macos-auto-update-hint");gt&&gt.classList.remove("hidden"),Ge&&Ge.classList.remove("hidden")}else{if(O.github&&X&&ae){var rt=O.github.version?"v"+O.github.version:O.github.fileName;typeof O.github.size=="number"&&(rt+=" \xB7 "+vn(O.github.size)),ae.textContent=rt,X.classList.remove("hidden"),le&&(le.textContent="\u4E0B\u8F7D",le.classList.remove("hidden"),le.onclick=function(){window.open(O.github.downloadUrl,"_blank"),v("\u6B63\u5728\u6253\u5F00\u4E0B\u8F7D\u9875\u2026","info")})}if(O.local&&ue&&Ce){var it=O.local.version?"v"+O.local.version:O.local.fileName;typeof O.local.size=="number"&&(it+=" \xB7 "+vn(O.local.size)),Ce.textContent=it,ue.classList.remove("hidden"),Fe&&(Fe.textContent="\u4E0B\u8F7D",Fe.classList.remove("hidden"),Fe.onclick=function(){m(O.local.downloadUrl,O.local.fileName||"wand-update.dmg",Fe)})}!O.github&&!O.local&&be&&(be.textContent=se?"\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",be.classList.remove("hidden"))}var We=document.getElementById("android-connect-code"),kt=document.getElementById("android-connect-qr"),ze=document.getElementById("android-connect-qr-empty"),De=document.getElementById("android-connect-qr-wrap");if(We){We.textContent="\u52A0\u8F7D\u4E2D...",ze&&(ze.textContent="\u751F\u6210\u4E2D\u2026"),kt&&(kt.style.visibility="hidden");var _e="/api/app-connect-code";window.location&&window.location.origin&&(_e+="?origin="+encodeURIComponent(window.location.origin)),fetch(_e,{credentials:"same-origin"}).then(function(ee){return ee.json()}).then(function(ee){ee.code?(We.textContent=ee.code,n.androidConnectCode=ee.code,Wv(ee.code)):(We.textContent="\u751F\u6210\u5931\u8D25",ze&&(ze.textContent="\u751F\u6210\u5931\u8D25"))}).catch(function(){We.textContent="\u83B7\u53D6\u5931\u8D25",ze&&(ze.textContent="\u83B7\u53D6\u5931\u8D25")})}De&&!De.dataset.bound&&(De.dataset.bound="1",De.addEventListener("click",function(){n.androidConnectCode&&zv(n.androidConnectCode)}));var fe=e.config||{},Ae=document.getElementById("cfg-host"),C=document.getElementById("cfg-port"),ct=document.getElementById("cfg-https"),At=document.getElementById("cfg-mode"),Qe=document.getElementById("cfg-cwd"),$e=document.getElementById("cfg-shell");Ae&&(Ae.value=fe.host||""),C&&(C.value=fe.port||""),ct&&(ct.checked=fe.https===!0),At&&(At.value=fe.defaultMode||"default"),Qe&&(Qe.value=fe.defaultCwd||""),$e&&($e.value=fe.shell||"");var xt=document.getElementById("cfg-language");xt&&(xt.value=fe.language||"");var Xt=document.getElementById("cfg-structured-runner");Xt&&(Xt.value=fe.structuredRunner||"cli");var at=document.getElementById("cfg-inherit-env");at&&(at.checked=fe.inheritEnv!==!1),n.configDefaultModel=fe.defaultModel||"",yi(),Wo().then(function(){yi()}).catch(function(){});var qe=document.getElementById("cert-status");qe&&(qe.textContent=e.hasCert?"\u5DF2\u5B89\u88C5 SSL \u8BC1\u4E66":"\u672A\u5B89\u88C5\u8BC1\u4E66\uFF08\u4F7F\u7528\u81EA\u7B7E\u540D\u6216 HTTP\uFF09",qe.style.color=e.hasCert?"var(--success)":"var(--text-secondary)");var Oe=document.getElementById("presets-list");if(Oe&&fe.commandPresets){for(var we="",Ve=0;Ve<fe.commandPresets.length;Ve++){var St=fe.commandPresets[Ve];we+='<div class="preset-item"><span class="preset-label">'+p(St.label)+'</span><span class="preset-detail">'+p(St.command)+(St.mode?" ("+p(St.mode)+")":"")+"</span></div>"}we||(we='<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>'),Oe.innerHTML=we}var ht=fe.cardDefaults||{},gn=document.getElementById("cfg-card-edit"),It=document.getElementById("cfg-card-inline"),Sn=document.getElementById("cfg-card-terminal"),ce=document.getElementById("cfg-card-thinking"),ut=document.getElementById("cfg-card-toolgroup");gn&&(gn.checked=ht.editCards===!0),It&&(It.checked=ht.inlineTools===!0),Sn&&(Sn.checked=ht.terminal===!0),ce&&(ce.checked=ht.thinking===!0),ut&&(ut.checked=ht.toolGroup===!0)}).catch(function(){})}function Uv(){var e=document.getElementById("config-message");e&&(e.classList.add("hidden"),e.textContent="");var t={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:(document.getElementById("cfg-default-model")||{}).value||"",structuredRunner:(document.getElementById("cfg-structured-runner")||{}).value||"cli",inheritEnv:(document.getElementById("cfg-inherit-env")||{}).checked!==!1},r=n.config&&n.config.defaultModel||"",i=t.defaultModel||"";fetch("/api/settings/config",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(t)}).then(function(a){return a.json()}).then(function(a){if(e&&(a.error?(e.textContent=a.error,e.style.color="var(--error)"):(e.textContent=a.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")),(!a||!a.error)&&(n.config&&(n.config.defaultModel=i),n.configDefaultModel=i,i!==r)){n.chatModel="";try{localStorage.removeItem("wand-chat-model")}catch{}Yn(mt())}}).catch(function(){e&&(e.textContent="\u4FDD\u5B58\u5931\u8D25\u3002",e.style.color="var(--error)",e.classList.remove("hidden"))})}function Kv(){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(r){return r.json()}).then(function(r){e&&(r.error?(e.textContent=r.error,e.style.color="var(--error)"):(e.textContent="\u663E\u793A\u8BBE\u7F6E\u5DF2\u4FDD\u5B58",e.style.color="var(--success)"),e.classList.remove("hidden")),!r.error&&n.config&&(n.config.cardDefaults=t.cardDefaults)}).catch(function(){e&&(e.textContent="\u4FDD\u5B58\u5931\u8D25\u3002",e.style.color="var(--error)",e.classList.remove("hidden"))})}function Jv(){var e=document.getElementById("cert-key-file"),t=document.getElementById("cert-cert-file"),r=document.getElementById("cert-message");if(r&&(r.classList.add("hidden"),r.textContent=""),!e||!e.files||!e.files[0]||!t||!t.files||!t.files[0]){r&&(r.textContent="\u8BF7\u9009\u62E9\u79C1\u94A5\u548C\u8BC1\u4E66\u6587\u4EF6\u3002",r.style.color="var(--error)",r.classList.remove("hidden"));return}var i=new FileReader;i.onload=function(){var a=i.result,u=new FileReader;u.onload=function(){var s=u.result;fetch("/api/settings/upload-cert",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({key:a,cert:s})}).then(function(o){return o.json()}).then(function(o){if(r){if(o.error)r.textContent=o.error,r.style.color="var(--error)";else{r.textContent="\u8BC1\u4E66\u5DF2\u4E0A\u4F20\uFF0C\u91CD\u542F\u540E\u751F\u6548\u3002",r.style.color="var(--success)";var l=document.getElementById("cert-status");l&&(l.textContent="\u5DF2\u5B89\u88C5 SSL \u8BC1\u4E66",l.style.color="var(--success)")}r.classList.remove("hidden")}}).catch(function(){r&&(r.textContent="\u4E0A\u4F20\u5931\u8D25\u3002",r.style.color="var(--error)",r.classList.remove("hidden"))})},u.readAsText(t.files[0])},i.readAsText(e.files[0])}function Xo(){var e=document.getElementById("settings-latest-version"),t=document.getElementById("do-update-button"),r=document.getElementById("update-message");e&&(e.textContent="\u68C0\u67E5\u4E2D..."),r&&r.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){r&&(r.textContent=a?"\u65E0\u6CD5\u8BFB\u53D6 npm beta \u7248\u672C\u3002":"\u65E0\u6CD5\u8FDE\u63A5\u5230 npm registry\u3002",r.style.color="var(--error)",r.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&&r&&(r.textContent=a?"\u5DF2\u662F\u6700\u65B0 Beta \u7248\u672C\u3002":"\u5DF2\u662F\u6700\u65B0\u7248\u672C\u3002",r.style.color="var(--success)",r.classList.remove("hidden"))}).catch(function(){e&&(e.textContent="\u68C0\u67E5\u5931\u8D25")})}function Yv(){var e=document.getElementById("update-message"),t=document.getElementById("do-update-button");t&&(t.disabled=!0,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(r){return r.json()}).then(function(r){if(r.error){e&&(e.textContent=r.error,e.style.color="var(--error)",e.classList.remove("hidden")),t.disabled=!1;return}if(e&&(e.textContent=(r.message||"\u66F4\u65B0\u5B8C\u6210")+"\uFF0C\u6B63\u5728\u91CD\u542F\u670D\u52A1\u2026",e.style.color="var(--success)",e.classList.remove("hidden")),t.classList.add("hidden"),r.detachedUpdate)an();else if(r.restartRequired!==!1)As(null,e);else{var i=document.getElementById("do-restart-button");i&&i.classList.remove("hidden")}}).catch(function(){e&&(e.textContent="\u66F4\u65B0\u5931\u8D25\u3002",e.style.color="var(--error)",e.classList.remove("hidden")),t.disabled=!1}))}function Gv(){var e=document.getElementById("do-restart-button"),t=document.getElementById("update-message");As(e,t)}function Qv(){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(Dn),{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 $v(){rn&&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(rn),{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 Ja(e,t){var r={};r[e]=t,fetch("/api/auto-update",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(r)}).then(function(i){return i.json()}).then(function(i){var a=document.getElementById("auto-update-web-toggle"),u=document.getElementById("auto-update-apk-toggle"),s=document.getElementById("auto-update-dmg-toggle");a&&(a.checked=!!i.web),u&&(u.checked=!!i.apk),s&&(s.checked=!!i.dmg)}).catch(function(){var i=document.getElementById("auto-update-"+e+"-toggle");i&&(i.checked=!t)})}function Xv(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 r=document.getElementById("beta-channel-toggle");r&&(r.checked=t.channel==="beta"),Xo()}).catch(function(){var t=document.getElementById("beta-channel-toggle");t&&(t.checked=e!=="beta")})}function Zo(e){for(var t=document.querySelectorAll(".settings-app-icon-option"),r=0;r<t.length;r++){var i=t[r].getAttribute("data-icon")===e;t[r].classList.toggle("selected",i),t[r].setAttribute("aria-pressed",i?"true":"false")}}function mn(){var e=document.getElementById("notification-permission-status"),t=document.getElementById("notification-request-btn"),r=document.getElementById("notification-reset-btn"),i=document.getElementById("notification-test-message");if(e){var a=ni();if(a===null){if(typeof Notification>"u"){e.textContent="\u4E0D\u652F\u6301",e.style.color="var(--fg-muted)",t&&t.classList.add("hidden"),r&&r.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"),r&&r.classList.add("hidden")):a==="denied"?(e.textContent="\u5DF2\u62D2\u7EDD",e.style.color="var(--danger)",t&&t.classList.add("hidden"),r&&r.classList.remove("hidden")):(e.textContent="\u672A\u6388\u6743",e.style.color="var(--warning)",t&&t.classList.remove("hidden"),r&&r.classList.remove("hidden"))}}function Zv(){var e=document.getElementById("notification-test-message");if(He){window._onNativePermissionResult=function(t){mn(),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(mn(),t==="granted")e&&(e.textContent="\u2713 \u5DF2\u6388\u6743",e.style.color="var(--success)",e.classList.remove("hidden"));else if(t==="denied"&&e){var r=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 el(){var e=document.getElementById("notification-test-delay-btn");e&&(e.disabled=!1,e.textContent="10 \u79D2\u540E\u53D1\u9001")}function em(){var e=document.getElementById("notification-test-message");n.delayedNotificationTimer&&(clearTimeout(n.delayedNotificationTimer),n.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")),n.delayedNotificationTimer=setTimeout(function(){n.delayedNotificationTimer=null,el(),tl()},1e4)}function tl(){var e=document.getElementById("notification-test-message"),t=[];n.delayedNotificationTimer&&(clearTimeout(n.delayedNotificationTimer),n.delayedNotificationTimer=null,el());var r=df();t.push(r?"\u2713 \u63D0\u793A\u97F3":"\u2717 \u63D0\u793A\u97F3\uFF08\u65E0\u6CD5\u64AD\u653E\uFF09");var i=n.notifBubble;if(aa({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"),He){var a=ni();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(o){if(mn(),o==="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");$n(e,t),delete window._onNativePermissionResult};try{WandNative.requestPermission()}catch{}return}$n(e,t);return}if(typeof Notification>"u"){t.push("\u2013 \u7CFB\u7EDF\u901A\u77E5\uFF08\u4E0D\u652F\u6301\uFF09"),$n(e,t);return}var u=Notification.permission;if(u==="granted"){try{var s=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(){s.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")}$n(e,t)}else u==="denied"?(t.push("\u2717 \u7CFB\u7EDF\u901A\u77E5\uFF08\u5DF2\u62D2\u7EDD\uFF09"),$n(e,t)):Notification.requestPermission().then(function(o){mn(),o==="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"),$n(e,t)})}function $n(e,t){if(e){e.innerHTML=t.map(function(i){return p(i)}).join("<br>");var r=t.every(function(i){return i.indexOf("\u2713")===0||i.indexOf("\u2013")===0});e.style.color=r?"var(--success)":"var(--warning)",e.classList.remove("hidden")}}function ot(e){if(!e||typeof e!="object"||!n.terminal)return e;try{typeof n.terminal.remeasure=="function"&&n.terminal.remeasure()}catch{}var t=n.terminal.cols,r=n.terminal.rows;return typeof t=="number"&&typeof r=="number"&&Number.isFinite(t)&&Number.isFinite(r)&&t>0&&r>0&&(e.cols=t,e.rows=r),e}function nl(){return n.terminal&&n.terminal.cols?Promise.resolve():new Promise(function(e){var t=!1,r=function(){t||(t=!0,e())},i=setTimeout(r,2e3);try{zn()}catch{}requestAnimationFrame(function(){requestAnimationFrame(function(){n.terminal&&n.terminal.cols&&(clearTimeout(i),r())})})})}function rl(){var e=vt(),t=Je(),r=Nt(e,n.config&&n.config.defaultMode?n.config.defaultMode:"default");n.preferredCommand=e,n.chatMode=Nt(e,n.chatMode),nl().then(function(){return fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({command:e,provider:e,cwd:t,mode:r}))})}).then(function(i){return i.json()}).then(function(i){if(i.error){k(i.error,"error");return}return n.selectedId=i.id,ye(),n.drafts[i.id]="",Ct(),jt()}).then(function(){_t(!0)}).catch(function(){k("\u65E0\u6CD5\u542F\u52A8\u4F1A\u8BDD\u3002","error")})}var Mr=!1;function tm(){if(!Mr){var e=document.getElementById("cwd"),t=document.getElementById("modal-error"),r=vt(),i=n.sessionCreateKind||"structured",a=n.sessionCreateWorktree===!0;ti(t);var u=Je(),s=(e?e.value.trim():"")||u,o=Nt(r,n.modeValue);if(i==="structured"){nm(s,o,a,t);return}rm(r,s,o,a,t)}}function nm(e,t,r,i){var a=n.sessionTool==="codex"?"codex":"claude";return Mr=!0,n.modeValue=t,n.chatMode=t,n.sessionTool=a,n.preferredCommand=a,hi(),Yn(mt()),Uo(void 0,e,t,r).then(function(u){return Yt(e),pn(),Wt(),u}).then(function(){_t(!0)}).catch(function(u){Ne(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(){Mr=!1})}function rm(e,t,r,i,a){Mr=!0,n.modeValue=r,n.chatMode=r,n.sessionTool=e,n.preferredCommand=e,hi(),nl().then(function(){return fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({command:e,provider:e,cwd:t,mode:r,worktreeEnabled:i}))})}).then(function(u){return u.json()}).then(function(u){if(u.error){Ne(a,u.error);return}return n.selectedId=u.id,ye(),Yt(t),n.drafts[u.id]="",Ct(),pn(),Wt(),jt()}).then(function(){n.selectedId?Rt(n.selectedId):_t(!0)}).catch(function(){Ne(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(){Mr=!1})}function im(){var e=document.getElementById("blank-chat-cwd");e&&(e.addEventListener("click",il),e.addEventListener("keydown",function(t){(t.key==="Enter"||t.key===" ")&&(t.preventDefault(),il())}),document.addEventListener("click",function(t){var r=document.getElementById("blank-chat-cwd-dropdown");if(!(!r||r.classList.contains("hidden"))&&!t.target.closest(".blank-chat-cwd-wrap")){r.classList.add("hidden");var i=document.getElementById("blank-chat-cwd-arrow");i&&(i.textContent="\u25BC")}}))}function il(){var e=document.getElementById("blank-chat-cwd-dropdown"),t=document.getElementById("blank-chat-cwd-arrow");if(e){var r=e.classList.contains("hidden");r?(am(e),e.classList.remove("hidden"),t&&(t.textContent="\u25B2")):(e.classList.add("hidden"),t&&(t.textContent="\u25BC"))}}function am(e){var t=en();e.innerHTML='<div class="blank-chat-cwd-loading">\u52A0\u8F7D\u4E2D...</div>',$i(function(r){var i="",a=n.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><span class="blank-chat-cwd-item-path">'+p(t)+"</span></div>",r.length){var u={};u[t]=!0,r.forEach(function(s){u[s.path]||(u[s.path]=!0,i+='<div class="blank-chat-cwd-item'+(a===s.path?" active":"")+'" data-path="'+p(s.path)+'"><span class="blank-chat-cwd-item-path">'+p(s.path)+"</span></div>")})}e.innerHTML=i,e.querySelectorAll(".blank-chat-cwd-item").forEach(function(s){s.addEventListener("click",function(o){o.stopPropagation();var l=s.dataset.path;n.workingDir=l;try{localStorage.setItem("wand-working-dir",l)}catch{}var c=document.getElementById("blank-chat-cwd-path");c&&(c.textContent=l),e.classList.add("hidden");var d=document.getElementById("blank-chat-cwd-arrow");d&&(d.textContent="\u25BC");var f=document.getElementById("folder-picker-input");f&&(f.value=l)})})})}function um(){var e=document.getElementById("recent-paths-bubbles");e&&$i(function(t){if(!t.length){e.innerHTML="";return}e.innerHTML=t.map(function(r){return'<button class="recent-path-bubble" data-path="'+p(r.path)+'" title="'+p(r.path)+'">'+p(r.name)+"</button>"}).join(""),e.querySelectorAll(".recent-path-bubble").forEach(function(r){r.addEventListener("click",function(){var i=document.getElementById("cwd");i&&(i.value=r.dataset.path||"",n.cwdValue=r.dataset.path||"")})})})}function al(){n.suggestionTimer&&clearTimeout(n.suggestionTimer),n.suggestionTimer=setTimeout(sm,120)}function sm(){var e=document.getElementById("session-modal");if(e&&e.classList.contains("hidden")){Xn();return}var t=document.getElementById("cwd");t&&fetch("/api/path-suggestions?q="+encodeURIComponent(t.value.trim()),{credentials:"same-origin"}).then(function(r){return r.json()}).then(om).catch(Xn)}function om(e){var t=document.getElementById("cwd-suggestions");if(!t||!e.length){Xn();return}t.innerHTML=e.map(function(r){return'<button class="suggestion-item" data-path="'+p(r.path)+'"><strong>'+p(r.name)+"</strong><small>"+p(r.path)+"</small></button>"}).join(""),t.querySelectorAll(".suggestion-item").forEach(function(r){r.addEventListener("click",function(){document.getElementById("cwd").value=r.dataset.path||"",n.cwdValue=r.dataset.path||"",Xn()})}),t.classList.remove("hidden")}function Xn(){var e=document.getElementById("cwd-suggestions");e&&(e.classList.add("hidden"),e.innerHTML="")}function lm(e){if(!e.isComposing){if(Us(e)){Fa(e);return}if(e.key==="Enter"){if(e.shiftKey){e.preventDefault();var t=document.getElementById("input-box");if(t){var r=t.selectionStart||0,i=t.value,a=i.slice(0,r)+`
46
- `+i.slice(r);t.value=a,t.selectionStart=r+1,t.selectionEnd=r+1,nt(a,!0),Pt(t)}return}e.preventDefault();var u=!!(e.metaKey||e.ctrlKey);Os(u?{interrupt:!0}:void 0);return}if(e.key==="Backspace"){setTimeout(function(){var g=document.getElementById("input-box");g&&nt(g.value,!0)},0);return}if(e.key==="Tab"){e.preventDefault();var t=document.getElementById("input-box");if(t){var r=t.selectionStart||0,i=t.value,a=i.slice(0,r)+" "+i.slice(r);t.value=a,nt(a,!0)}return}if(e.key==="Escape"){e.preventDefault();var s=mt();oe(s)?s&&s.structuredState&&s.structuredState.inFlight&&wa():pt(wr("escape"),"escape");return}if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="c"){var o=document.getElementById("input-box"),l=o&&o.selectionStart!==o.selectionEnd||oi();if(l)return;var c=mt();if(oe(c)){e.preventDefault(),c&&c.structuredState&&c.structuredState.inFlight&&wa();return}e.preventDefault(),pt(wr("ctrl_c"),"ctrl_c");return}if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="d"){var d=document.getElementById("input-box"),f=d&&d.selectionStart!==d.selectionEnd||oi();if(f)return;var v=mt();if(oe(v)){e.preventDefault();return}e.preventDefault(),pt(wr("ctrl_d"),"ctrl_d");return}if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="l"){e.preventDefault();var m=mt();if(oe(m))return;pt(wr("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"),b=t&&t.selectionStart!==t.selectionEnd;if(b)return;e.preventDefault(),pt("","ctrl_x");return}e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&setTimeout(function(){var g=document.getElementById("input-box");g&&nt(g.value)},0)}}}var cm=10*1024*1024;function dm(e){return e<1024?e+" B":e<1024*1024?(e/1024).toFixed(1)+" KB":(e/(1024*1024)).toFixed(1)+" MB"}function fm(e){return/^image\/(png|jpe?g|gif|webp|bmp|svg\+xml)/.test(e)}function Ya(e){if(e){if(e.size>cm){k("\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};fm(e.type)&&(t.previewUrl=URL.createObjectURL(e)),n.pendingAttachments.push(t),Ga()}}function pm(e){var t=n.pendingAttachments.splice(e,1);t.length&&t[0].previewUrl&&URL.revokeObjectURL(t[0].previewUrl),Ga()}function vm(){n.pendingAttachments.forEach(function(e){e.previewUrl&&URL.revokeObjectURL(e.previewUrl)}),n.pendingAttachments=[],Ga()}function Ga(){var e=document.getElementById("attachment-preview");if(e){var t=n.pendingAttachments;if(t.length===0){e.classList.add("hidden"),e.innerHTML="";return}e.classList.remove("hidden");for(var r="",i=0;i<t.length;i++){var a=t[i],u=a.previewUrl?'<img src="'+p(a.previewUrl)+'" alt="">':'<span class="att-icon">'+J("file",{size:13,strokeWidth:1.7})+"</span>";r+='<span class="attachment-pill" data-index="'+i+'">'+u+'<span class="att-name" title="'+p(a.name)+'">'+p(a.name)+'</span><span class="att-size">'+dm(a.size)+'</span><button class="att-remove" data-index="'+i+'" title="\u79FB\u9664">\xD7</button></span>'}e.innerHTML=r,e.querySelectorAll(".att-remove").forEach(function(s){s.addEventListener("click",function(o){o.preventDefault(),o.stopPropagation(),pm(parseInt(s.getAttribute("data-index"),10))})})}}function mm(e){if(!n.pendingAttachments.length)return Promise.resolve([]);var t=new FormData;return n.pendingAttachments.forEach(function(r){t.append("files",r.file,r.name)}),fetch("/api/sessions/"+encodeURIComponent(e)+"/upload",{method:"POST",body:t,credentials:"same-origin"}).then(function(r){return r.ok?r.json():r.json().then(function(i){throw new Error(i.error||"\u4E0A\u4F20\u5931\u8D25")})}).then(function(r){return r.files||[]})}function gm(e){if(!e||!e.length)return"";var t=e.map(function(r){return r.savedPath});return`[\u9644\u4EF6\u5DF2\u4E0A\u4F20\uFF0C\u8BF7\u67E5\u770B\u4EE5\u4E0B\u6587\u4EF6:
44
+ `;function a(M,H,j,Y){for(var K=0;;){var X=M.indexOf(H,K);if(X===-1)break;var oe=M.indexOf(H,X+H.length);if(oe===-1)break;var le=M.slice(X+H.length,oe);if(!le){K=oe+H.length;continue}var re=j+le+Y;M=M.slice(0,X)+re+M.slice(oe+H.length),K=X+re.length}return M}function u(M){return M>=48&&M<=57||M>=65&&M<=90||M>=97&&M<=122||M===95}function s(M,H,j){for(var Y=0;Y<M.length;){var K=M.indexOf("_",Y);if(K===-1)break;var X=K>0?M.charCodeAt(K-1):0;if(u(X)){Y=K+1;continue}for(var oe=K+1,le=-1;oe<M.length;){var re=M.indexOf("_",oe);if(re===-1)break;var Be=re+1,De=Be<M.length?M.charCodeAt(Be):0;if(!u(De)){le=re;break}oe=re+1}if(le===-1)break;var Ee=M.slice(K+1,le);if(!Ee){Y=le+1;continue}var O=H+Ee+j;M=M.slice(0,K)+O+M.slice(le+1),Y=K+O.length}return M}function o(M,H,j,Y){return M.split(i).map(function(K){return K.indexOf(H)!==0?K:j+K.slice(H.length)+Y}).join(i)}function l(M){return M.split(i).map(function(H){var j=H.indexOf(". ");if(j<=0)return H;for(var Y=0;Y<j;Y+=1){var K=H.charCodeAt(Y);if(K<48||K>57)return H}return"<li>"+H.slice(j+2)+"</li>"}).join(i)}function c(M){return M.split(i+i).map(function(H){var j=H.trim();return j?j.indexOf("<div")===0||j.indexOf("<h1")===0||j.indexOf("<h2")===0||j.indexOf("<h3")===0||j.indexOf("<h4")===0||j.indexOf("<h5")===0||j.indexOf("<h6")===0||j.indexOf("<ul")===0||j.indexOf("<ol")===0||j.indexOf("<li")===0||j.indexOf("<blockquote")===0||j.indexOf("<pre")===0?j:"<p>"+j.split(i).join("<br>")+"</p>":""}).join("")}for(var d=0;;){var f=t.indexOf(r+r+r,d);if(f===-1)break;var v=t.indexOf(r+r+r,f+3);if(v===-1)break;var m=t.slice(f+3,v),b=m.indexOf(i),g="",y=m;if(b!==-1&&b<30){for(var w=m.slice(0,b).trim(),F=w.length>0,E=0;E<w.length;E+=1){var A=w.charCodeAt(E),x=A>=48&&A<=57,S=A>=65&&A<=90,P=A>=97&&A<=122;if(!x&&!S&&!P){F=!1;break}}F&&(g=w,y=m.slice(b+1))}var z=lv(y.trim(),g),G=z.replace(/_/g,"&#95;").replace(/\*/g,"&#42;"),L='<div class="code-block"><div class="code-block-header"><span class="code-lang">'+(g||"code")+'</span><button class="code-copy">Copy</button></div><pre><code>'+G+"</code></pre></div>";t=t.slice(0,f)+L+t.slice(v+3),d=f+L.length}for(d=0;;){var B=t.indexOf(r,d);if(B===-1)break;var T=t.indexOf(r,B+1);if(T===-1)break;if(T===B+1){d=T+1;continue}var I=t.slice(B+1,T),V=I.replace(/_/g,"&#95;").replace(/\*/g,"&#42;"),te='<code class="code-inline">'+V+"</code>";t=t.slice(0,B)+te+t.slice(T+1),d=B+te.length}t=a(t,"**","<strong>","</strong>"),t=a(t,"*","<em>","</em>"),t=s(t,"<em>","</em>"),t=o(t,"### ","<h3>","</h3>"),t=o(t,"## ","<h2>","</h2>"),t=o(t,"# ","<h1>","</h1>"),t=o(t,"&gt; ","<blockquote>","</blockquote>"),t=o(t,"- ","<li>","</li>"),t=o(t,"* ","<li>","</li>"),t=l(t),t=Io(t);var ee=t.split(i),Q=[],ne=[];function U(){ne.length&&(Q.push("<ul>"+ne.join("")+"</ul>"),ne=[])}return ee.forEach(function(M){if(M.indexOf("<li>")===0&&M.lastIndexOf("</li>")===M.length-5){ne.push(M);return}U(),Q.push(M)}),U(),t=c(Q.join(i)),'<div class="markdown-content">'+t+"</div>"}function lv(e,t){return e=e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e}function gi(e){var t=String(e||"").trim();return t.length<=24?t||"\u672A\u9009\u62E9\u4F1A\u8BDD":t.slice(0,21)+"..."}function Ha(e){return String(e||"").replace(/\r\r\n/g,`\r
45
+ `).replace(/\u0000/g,"")}function _a(){if(!n.loginPending){var e=document.getElementById("password"),t=document.getElementById("login-button"),r=document.getElementById("login-error");!e||!t||!r||(ti(r),e.dataset.error="false",e.setAttribute("aria-invalid","false"),n.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.ok?fetch("/api/config",{credentials:"same-origin"}):(e.dataset.error="true",e.setAttribute("aria-invalid","true"),We(r,"\u5BC6\u7801\u9519\u8BEF\uFF0C\u8BF7\u91CD\u8BD5\u3002"),Promise.reject("Invalid password"))}).then(function(i){return i.json()}).then(function(i){n.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"),_t()}).then(function(){$u(),Gt()}).catch(function(i){console.error("[wand] Login error:",i),i!=="Invalid password"&&(e.dataset.error="true",e.setAttribute("aria-invalid","true"),We(r,"\u767B\u5F55\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002"))}).finally(function(){n.loginPending=!1,t.disabled=!1,t.textContent="\u8FDB\u5165\u63A7\u5236\u53F0"}))}}function Na(){return typeof WandNative<"u"&&typeof WandNative.switchServer=="function"}function To(){if(Na())try{WandNative.switchServer()}catch{}}function cv(){return typeof WandNative<"u"&&typeof WandNative.backToNative=="function"?!0:typeof window.__wandBackToNative=="function"}function dv(){try{if(typeof WandNative<"u"&&typeof WandNative.backToNative=="function"){WandNative.backToNative();return}typeof window.__wandBackToNative=="function"&&window.__wandBackToNative()}catch{}}function Lo(){fetch("/api/logout",{method:"POST",credentials:"same-origin"}).catch(function(){}),rs(),An(!1),ba(),pr(),n.config=null,n.selectedId=null,be(),n.sessions=[],n.claudeHistory=[],n.claudeHistoryLoaded=!1,n.claudeHistoryExpanded=!1,n.claudeHistoryExpandedDirs={},n.sessionsDrawerOpen=!1,xe("wand-sidebar-open",!1),Gt()}function _t(){return dn()}function fv(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 vt(){return n.sessionTool||n.preferredCommand||"claude"}function pv(){var e=n.sessions.find(function(t){return t.id===n.selectedId});return e&&e.provider||n.preferredCommand||"claude"}function Mo(e,t){return t?"\u7EC8\u7AEF\u4EA4\u4E92\u4E2D":e&&(e.status==="exited"||e.status==="failed"||e.status==="stopped")?ma(e)?"":"\u4F1A\u8BDD\u5DF2\u7ED3\u675F":se(e)&&e.structuredState&&e.structuredState.inFlight?"\u56DE\u590D\u4E2D\u2026Enter \u6392\u961F \xB7 \u26A1 \u7ACB\u5373\u53D1\u9001":""}function qo(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 ja(e){return e==="codex"?["full-access"]:["default","full-access","auto-edit","native","managed"]}function Nt(e,t){var r=ja(e);if(r.indexOf(t)!==-1)return t;var i=n.config&&n.config.defaultMode?n.config.defaultMode:"default";return r.indexOf(i)!==-1?i:r[0]}function ig(e,t){return ja(e).map(function(r){var i=Oo(r);return'<option value="'+p(r)+'"'+(r===t?" selected":"")+' title="'+i+'">'+p(fv(r))+"</option>"}).join("")}function Oo(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 vv(e){var t=e&&e.provider?e.provider:"claude";return(se(e)?"\u7ED3\u6784\u5316":"\u7EC8\u7AEF")+" \xB7 "+t}function mv(e){return se(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 gv(e){return e?se(e)||e.provider==="codex":!1}function Po(e,t){if(!e||!e.is_error||!t||t.is_error)return!1;var r=ln(e.content).toLowerCase(),i=ln(t.content).toLowerCase();return r?r.indexOf("invalid pages parameter")!==-1&&i.length>0:!1}function se(e){return!!e&&(e.sessionKind==="structured"||e.runner==="claude-cli-print")}function hi(){n.chatMode=Nt("claude",n.chatMode);var e=document.getElementById("mode-hint");e&&(e.textContent=Oo(n.chatMode)),Yn()}function Ra(e,t){t=t||{};var r=t.kind==="compact"||t.kind==="popover"?t.kind:"dropdown",i=vt(),a=n.chatMode||"default",u=_o(e)||"default",s=Ro(e);function o(l,c,d,f){var v=r==="compact"?"":'<span class="chat-mode-trio-tag">'+p(c)+"</span>";return'<span class="composer-text-pill chat-mode-trio-pill" data-mode-control-pill="'+l+'" title="'+p(c)+'">'+v+'<span class="composer-text-label">'+p(d)+'</span><select class="composer-text-hidden-select" data-mode-control="'+l+'" tabindex="-1" aria-label="'+p(c)+'">'+f+"</select></span>"}return'<div class="chat-mode-trio chat-mode-trio-'+r+'" role="group" aria-label="\u4F1A\u8BDD\u8BBE\u7F6E">'+o("mode","\u6A21\u5F0F",a,Ho(i,a))+'<span class="composer-text-sep" aria-hidden="true">\xB7</span>'+o("model","\u6A21\u578B",u,jo(u,e))+'<span class="composer-text-sep" aria-hidden="true">\xB7</span>'+o("thinking","\u601D\u8003",s,Wo(s))+"</div>"}function Yn(){var e=mt(),t=vt(),r=n.chatMode||"default",i=_o(e)||"default",a=Ro(e),u=document.querySelectorAll(".chat-mode-trio");u.forEach(function(s){function o(l,c,d){var f=s.querySelector('[data-mode-control-pill="'+l+'"]');if(f){var v=f.querySelector(".composer-text-label");v&&(v.textContent=c);var m=f.querySelector('[data-mode-control="'+l+'"]');m&&(d&&(m.innerHTML=d),m.value!==c&&(m.value=c))}}o("mode",r,Ho(t,r)),o("model",i,jo(i,e)),o("thinking",a,Wo(a))})}function Ho(e,t){return ja(e).map(function(r){return'<option value="'+p(r)+'"'+(r===t?" selected":"")+">"+p(r)+"</option>"}).join("")}function _o(e){return e&&e.selectedModel?e.selectedModel:n.chatModel?n.chatModel:n.config&&n.config.defaultModel?n.config.defaultModel:""}function No(e){var t=e&&e.provider||n.sessionTool||"claude";return t==="codex"?n.availableCodexModels||[]:n.availableModels||[]}function hv(e,t){for(var r=No(t),i='<option value="">\u9ED8\u8BA4\uFF08\u8DDF\u968F\u8BBE\u7F6E\uFF09</option>',a=0;a<r.length;a++){var u=r[a],s=u.label||u.id;i+='<option value="'+p(u.id)+'"'+(u.id===e?" selected":"")+">"+p(s)+"</option>"}return e&&!r.some(function(o){return o.id===e})&&(i+='<option value="'+p(e)+'" selected>'+p(e)+"\uFF08\u81EA\u5B9A\u4E49\uFF09</option>"),i}function jo(e,t){for(var r=No(t),i='<option value="">default</option>',a=0;a<r.length;a++){var u=r[a];i+='<option value="'+p(u.id)+'"'+(u.id===e?" selected":"")+">"+p(u.id)+"</option>"}return e&&!r.some(function(s){return s.id===e})&&(i+='<option value="'+p(e)+'" selected>'+p(e)+"</option>"),i}function Gn(e){Yn()}var cn=[{id:"off",label:"off",hint:"\u4E0D\u542F\u7528\u601D\u8003\uFF08CLI \u65E0\u524D\u7F00\uFF1BSDK \u5173\u95ED thinking\uFF1BCodex minimal\uFF09"},{id:"standard",label:"think",hint:"Claude CLI: think \xB7 SDK budget 4096 \xB7 Codex low"},{id:"deep",label:"think hard",hint:"Claude CLI: think hard \xB7 SDK budget 16000 \xB7 Codex medium"},{id:"max",label:"ultrathink",hint:"Claude CLI: ultrathink \xB7 SDK budget 31999 \xB7 Codex high"}];function yv(e){for(var t=0;t<cn.length;t++)if(cn[t].id===e)return cn[t].label;return cn[0].label}function Ro(e){return e&&e.thinkingEffort?e.thinkingEffort:n.chatThinking?n.chatThinking:"off"}function ag(e){for(var t=e||"off",r="",i=0;i<cn.length;i++){var a=cn[i];r+='<option value="'+p(a.id)+'"'+(a.id===t?" selected":"")+' title="'+p(a.hint)+'">'+p(a.label)+"</option>"}return r}function Wo(e){for(var t=e||"off",r="",i=0;i<cn.length;i++){var a=cn[i];r+='<option value="'+p(a.id)+'"'+(a.id===t?" selected":"")+">"+p(a.id)+"</option>"}return r}function ug(e){Yn()}function bv(e){var t=(e||"off").trim();t!=="off"&&t!=="standard"&&t!=="deep"&&t!=="max"&&(t="off"),n.chatThinking=t;try{localStorage.setItem("wand-thinking-effort",t)}catch{}Yn();var r=mt();r&&fetch("/api/sessions/"+encodeURIComponent(r.id)+"/thinking-effort",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({thinkingEffort:t})}).then(function(i){return i.json()}).then(function(i){if(i&&i.error){k(i.error,"error");return}i&&i.id&&(Z(i),typeof k=="function"&&k("\u5DF2\u5207\u6362\u601D\u8003\u6DF1\u5EA6 \u2192 "+yv(t),"success"))}).catch(function(){k("\u5207\u6362\u601D\u8003\u6DF1\u5EA6\u5931\u8D25","error")})}function zo(e){if(!e)return!1;var t=e.mode;return t==="managed"||t==="full-access"}function Ev(e){if(!e||zo(e))return"";var t=!!e.autoApprovePermissions;return t?'<span id="auto-approve-toggle" class="composer-pill composer-pill-chip auto-approve-indicator active" title="\u81EA\u52A8\u6279\u51C6\u5DF2\u542F\u7528 \u2014 \u70B9\u51FB\u5173\u95ED">'+J("shieldCheck",{size:12,strokeWidth:1.7,cls:"composer-pill-icon"})+'<span class="composer-pill-label">\u81EA\u52A8</span></span>':'<span id="auto-approve-toggle" class="composer-pill composer-pill-chip auto-approve-indicator" title="\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED \u2014 \u70B9\u51FB\u5F00\u542F">'+J("shield",{size:12,strokeWidth:1.7,cls:"composer-pill-icon"})+'<span class="composer-pill-label">\u624B\u52A8</span></span>'}function Vo(){return fetch("/api/models",{credentials:"same-origin"}).then(function(e){return e.json()}).then(function(e){return e&&Array.isArray(e.models)&&(n.availableModels=e.models,n.availableCodexModels=Array.isArray(e.codexModels)?e.codexModels:[],Gn(mt()),yi(e)),e}).catch(function(){return null})}function Fv(){if(n.modelsRefreshing)return Promise.resolve(null);n.modelsRefreshing=!0;var e=document.getElementById("cfg-default-model-refresh");return e&&(e.disabled=!0,e.textContent="\u5237\u65B0\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)&&(n.availableModels=t.models,n.availableCodexModels=Array.isArray(t.codexModels)?t.codexModels:[],Gn(mt()),yi(t),typeof k=="function"&&k("\u6A21\u578B\u5217\u8868\u5DF2\u5237\u65B0"+(t.claudeVersion?"\uFF08claude "+t.claudeVersion+"\uFF09":""),"success")),t}).catch(function(){return typeof k=="function"&&k("\u5237\u65B0\u6A21\u578B\u5217\u8868\u5931\u8D25","error"),null}).finally(function(){n.modelsRefreshing=!1,e&&(e.disabled=!1,e.textContent="\u5237\u65B0")})}function wv(){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(o){o.target===e&&Wa()});var t=e.querySelector("#env-preview-close");t&&t.addEventListener("click",Wa);var r=e.querySelector("#env-preview-close-2");r&&r.addEventListener("click",Wa);var a=e.querySelector("#env-preview-search");a&&a.addEventListener("input",function(){Ko()});var i=e.querySelector("#env-preview-reveal-toggle");i&&i.addEventListener("change",function(){Uo(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=""),Uo(!1)}function Wa(){var e=document.getElementById("env-preview-modal");e&&Ua(e)}function Uo(e){var t=document.getElementById("env-preview-list"),r=document.getElementById("env-preview-meta");t&&(t.innerHTML='<div class="env-preview-loading">\u52A0\u8F7D\u4E2D\u2026</div>'),r&&(r.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>'),r&&(r.textContent="\u8BFB\u53D6\u5931\u8D25");return}if(n._envPreview=a,r){var u=a.inheritEnv?"\u7EE7\u627F\u7236\u8FDB\u7A0B":"\u6700\u5C0F\u767D\u540D\u5355";r.innerHTML='<span class="env-preview-pill '+(a.inheritEnv?"is-inherit":"is-minimal")+'">'+u+'</span><span class="env-preview-count">\u5171 '+a.total+" \u9879</span>"}Ko()}).catch(function(){t&&(t.innerHTML='<div class="env-preview-empty">\u8BFB\u53D6\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002</div>'),r&&(r.textContent="\u8BFB\u53D6\u5931\u8D25")})}function Ko(){var e=document.getElementById("env-preview-list");if(e){var t=n._envPreview;if(!t||!Array.isArray(t.entries)){e.innerHTML='<div class="env-preview-empty">\u5C1A\u672A\u52A0\u8F7D\u3002</div>';return}for(var r=document.getElementById("env-preview-search"),i=(r&&r.value||"").trim().toLowerCase(),a="",u=0,s=0;s<t.entries.length;s++){var o=t.entries[s];if(!(i&&o.name.toLowerCase().indexOf(i)===-1)){u++;var l=typeof o.value=="string"&&o.value.charAt(0)==="<"&&o.value.charAt(o.value.length-1)===">";a+='<div class="env-preview-row'+(o.sensitive?" is-sensitive":"")+'"><div class="env-preview-name">'+p(o.name)+(o.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(o.value))+'">'+p(String(o.value))+'</div><div class="env-preview-len">'+o.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 yi(e){var t=document.getElementById("cfg-default-model");if(t){var r=t.value,i=r||n.configDefaultModel||n.config&&n.config.defaultModel||"";t.innerHTML=hv(i,{provider:"claude"}),t.value=i;var a=document.getElementById("cfg-default-model-version");a&&e&&(a.textContent=e.claudeVersion?"\u5DF2\u68C0\u6D4B\u5230 claude "+e.claudeVersion:"\u65B0\u5EFA\u4F1A\u8BDD\u65F6\u9ED8\u8BA4\u4F7F\u7528\u8BE5\u6A21\u578B\u3002")}}function mt(){if(!n.selectedId)return null;for(var e=0;e<n.sessions.length;e++)if(n.sessions[e].id===n.selectedId)return n.sessions[e];return null}function Cv(e){var t=(e||"").trim();n.chatModel=t;try{localStorage.setItem("wand-chat-model",t)}catch{}Yn();var r=mt();r&&fetch("/api/sessions/"+encodeURIComponent(r.id)+"/model",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({model:t||null})}).then(function(i){return i.json()}).then(function(i){if(i&&i.error){k(i.error,"error");return}if(i&&i.id&&(Z(i),typeof k=="function")){var a=t||"\u9ED8\u8BA4",u=r.provider==="codex"?"\uFF08\u4E0B\u6B21\u5BF9\u8BDD\u751F\u6548\uFF09":"";k("\u5DF2\u5207\u6362\u6A21\u578B \u2192 "+a+u,"success")}}).catch(function(){k("\u5207\u6362\u6A21\u578B\u5931\u8D25","error")})}function Jo(e,t,r,i){var a=n.sessionTool==="codex"?"codex":"claude",u=n.chatModel||n.config&&n.config.defaultModel||"",s=n.chatThinking||"off",o={cwd:t||Qe(),mode:r||n.chatMode||n.config&&n.config.defaultMode||"default",provider:a,runner:a==="codex"?"codex-cli-exec":n.config&&n.config.structuredRunner==="sdk"?"claude-sdk":n.structuredRunner||"claude-cli-print",prompt:e||void 0,worktreeEnabled:i===!0,model:u||void 0,thinkingEffort:s};return fetch("/api/structured-sessions",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(o)}).then(function(l){return l.json()}).then(function(l){if(l.error)throw new Error(l.error);return n.selectedId=l.id,be(),n.drafts[l.id]="",Ct(),Z(l),fe(),Er(l.id),xn(l.id),fn(l.id).then(function(){return l})})}function bi(){var e=!!n.selectedId,t=document.getElementById("output"),r=document.getElementById("chat-output"),i=document.getElementById("blank-chat"),a=n.sessions.find(function(l){return l.id===n.selectedId}),u=se(a),s=e&&!u&&n.currentView==="terminal",o=e&&(u||n.currentView!=="terminal");u?n.currentView="chat":e||(n.currentView="terminal"),t&&(t.classList.toggle("active",s),t.classList.toggle("hidden",!s)),r&&(r.classList.toggle("active",o),r.classList.toggle("hidden",!o)),i&&i.classList.toggle("hidden",e),r&&o&&Aa(r),rr(),Ge(),Fr()}function kr(){var e=document.getElementById("mode-description"),t=document.getElementById("session-kind-description"),r=n.sessionTool||"claude",i=n.sessionCreateKind||"structured";n.sessionTool=r,n.modeValue=Nt(r,n.modeValue||n.chatMode||"default");var a=document.querySelectorAll("#provider-cards .provider-card");a.length&&a.forEach(function(o){var l=o.getAttribute("data-provider");o.classList.toggle("active",l===r),o.classList.remove("disabled")});var u=document.querySelectorAll("#session-kind-cards .session-kind-card");u.length&&u.forEach(function(o){var l=o.getAttribute("data-session-kind"),c=!1;o.classList.toggle("active",l===i),o.classList.toggle("disabled",c)});var s=document.querySelectorAll("#mode-cards .mode-card");s.length&&s.forEach(function(o){o.classList.toggle("active",o.getAttribute("data-mode")===n.modeValue)}),t&&(t.textContent=Ru(i)),e&&(e.textContent=qo(r,n.modeValue))}function Z(e){if(!(!e||!e.id)){var t=n.sessions.find(function(s){return s.id===e.id})||null,r=Ll(e,t),i=!1,a=null;n.sessions=n.sessions.map(function(s){return s.id!==r.id?s:(a=s,i=!0,Object.assign({},s,r))}),i||n.sessions.unshift(r);var u=n.sessions.find(function(s){return s.id===r.id})||r;u&&Array.isArray(u.queuedMessages)&&r.id===n.selectedId&&(Nr(u),lu(),un()),r.id===n.selectedId&&(Ea(),Jt()),r.status&&r.status!=="running"&&n.crossSessionQueue.length>0&&setTimeout(ai,0)}}function xn(e){!e||!n.ws||n.ws.readyState!==WebSocket.OPEN||n.ws.send(JSON.stringify({type:"subscribe",sessionId:e}))}function Bv(e,t){if(!e)return t;var r=Object.assign({},e,t),i=e.output||"",a=t.output||"",u=i.length>a.length,s=e.structuredState||null,o=t.structuredState||null,l=e.sessionKind==="structured"||t.sessionKind==="structured",c=!!(e.messages&&e.messages.length&&(function(){var g=e.messages[e.messages.length-1];return g&&g.role==="assistant"&&Array.isArray(g.content)&&g.content.some(function(y){return y&&y.__processing})})()),d=Array.isArray(e.messages)?l?ar(e.messages):e.messages:[],f=Array.isArray(t.messages)?l?ar(t.messages):t.messages:[],v=f.length>0&&(function(){var g=f[f.length-1];return g&&g.role==="assistant"&&Array.isArray(g.content)&&!g.content.some(function(y){return y&&y.__processing})})(),m=e.sessionKind==="structured"&&!!s&&s.inFlight===!0&&(!o||o.inFlight!==!0)&&c&&!!s.activeRequestId&&!!o&&!!o.activeRequestId&&o.activeRequestId===s.activeRequestId&&!v,b=d.length>f.length||d.length>0&&f.length>0&&JSON.stringify(d[d.length-1])!==JSON.stringify(f[f.length-1])&&JSON.stringify(d).length>JSON.stringify(f).length;return u&&(r.output=i),m&&(r.status=e.status||r.status,r.structuredState=Object.assign({},o||{},s,{inFlight:!0}),r.messages=e.messages),b&&(r.messages=d),e.id===n.selectedId&&(e.permissionBlocked&&t.permissionBlocked===!1||e.permissionBlocked&&!t.permissionBlocked&&(r.permissionBlocked=!0),e.pendingEscalation&&!t.pendingEscalation&&t.permissionBlocked!==!1&&(r.pendingEscalation=e.pendingEscalation),e.messages&&e.messages.length>0&&(!t.messages||t.messages.length===0)&&(r.messages=e.messages)),r}function tt(e,t,r){if(e&&e.messages&&e.messages.length>0)return e.messages;if(e&&e.sessionKind==="structured")return[];if(!r)return[];var i=typeof t=="string"?t:e&&e.output||"";return i?jp(i,e&&e.command):[]}function Dv(e){if(!e||!e.length)return null;if(n.selectedId){var t=e.find(function(a){return a.id===n.selectedId});return t?t.id:null}var r=e.find(function(a){return a.status==="running"});if(r)return r.id;var i=e.find(function(a){return!a.archived});return i?i.id:e[0].id}function dn(e){var t=e||{};return fetch("/api/sessions",{credentials:"same-origin"}).then(function(r){if(r.status===401){Lo();return}return r.json()}).then(function(r){var i=r||[],a=new Set(i.map(function(f){return f.id}));Object.keys(n.drafts).forEach(function(f){a.has(f)||delete n.drafts[f]}),n.sessions=i.map(function(f){var v=n.sessions.find(function(m){return m.id===f.id});return Bv(v,f)});var u=Dv(n.sessions);if(u!==void 0&&(n.selectedId=u),du(),un(),n.bootstrapping=!1,be(),n.modalOpen)fe();else{var s=document.getElementById("sessions-list"),o=Wi();if(s&&s.innerHTML===o){var l=document.getElementById("session-count");l&&(l.textContent=String(n.sessions.length))}else{s&&(s.innerHTML=o);var l=document.getElementById("session-count");l&&(l.textContent=String(n.sessions.length))}}Ar(),n.selectedId&&n.gitStatusSessionId!==n.selectedId&&En(n.selectedId);var c=Promise.resolve();if(!t.skipSelectedOutputReload&&n.selectedId)c=fn(n.selectedId);else if(n.selectedId){var d=n.sessions.find(function(f){return f.id===n.selectedId});se(d)&&(Ct({preserveStickState:!0}),fo(!0))}return c.then(function(){n.crossSessionQueue.length>0&&ai(),Bt(),sa()})}).catch(function(r){var i=r&&r.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:",r)})}var za=null;function Yo(){za||(za=setTimeout(function(){za=null,fe()},200))}function fe(){var e=document.getElementById("sessions-list"),t=document.getElementById("session-count");e&&(e.innerHTML=Wi()),t&&(t.textContent=String(n.sessions.length)),typeof $t=="function"&&$t(),Ar(),n.crossSessionQueue.length>0&&Bt()}function Ar(){var e=n.sessions.find(function(m){return m.id===n.selectedId});e||(An(!1),ba(),$s());var t=e?gi(e.command):"Wand",r=e?or(e):"\u5F00\u59CB\u5BF9\u8BDD",i=document.querySelector(".session-summary-value"),a=document.getElementById("terminal-title"),u=document.getElementById("terminal-info"),s=document.getElementById("blank-chat"),o=document.getElementById("output"),l=document.getElementById("chat-output"),c=document.getElementById("stop-button");i&&i.textContent!==t&&(i.textContent=t),a&&a.textContent!==t&&(a.textContent=t),u&&(u.textContent=e?r+" \xB7 "+mv(e):r);var d=document.getElementById("session-kind-display"),f=e?vv(e):"\u7EC8\u7AEF";d&&d.textContent!==f&&(d.textContent=f),ns(),!n.terminal&&o&&e&&Vn(),n.terminal&&o&&!o.contains(n.terminal.element)&&(pr(),Vn()),e||(n.terminalSessionId=null,n.terminalOutput="",n.terminalOutputMarker=0),n.terminal&&e&&n.currentView==="terminal"&&ft("view");var v=document.querySelector(".input-panel");e?(s&&s.classList.add("hidden"),o&&o.classList.remove("hidden"),l&&l.classList.remove("hidden"),v&&v.classList.remove("hidden")):(s&&s.classList.remove("hidden"),o&&o.classList.add("hidden"),l&&l.classList.add("hidden"),c&&c.classList.add("hidden"),v&&v.classList.add("hidden")),hi(),Gn(mt()),bi(),Ea()}function fn(e){n.chatRenderTimer&&(clearTimeout(n.chatRenderTimer),n.chatRenderTimer=null);var t=n.sessions.find(function(i){return i.id===e}),r="/api/sessions/"+e;return gv(t)&&(r+="?format=chat"),fetch(r,{credentials:"same-origin"}).then(function(i){return i.json()}).then(function(i){if(i.error){n.selectedId===e&&(n.selectedId=null,be()),dn();return}if(Z(i),Ar(),n.terminal&&e===n.selectedId&&i.output!==void 0){var a=!!n.ws&&(n.ws.readyState===WebSocket.OPEN||n.ws.readyState===WebSocket.CONNECTING);a?et("session-switch"):(Zr(e,i.output,{mode:"append"}),et("session-switch",{forceReplay:!0}))}var u=n.sessions.find(function(s){return s.id===e});n.currentMessages=ze(u,tt(u,i.output,!1)),$e(!1)})}function jt(e){var t=n.sessions.find(function(s){return s.id===e});if(t){n.selectedId!==e&&pr(),n.selectedId=e,be(),n.toolContentCache={},n.messageQueue=[],n.pendingMessages=[],Nr(t),du(),un(),Ct(),n.currentMessages=[],n.chatRenderTimer&&(clearTimeout(n.chatRenderTimer),n.chatRenderTimer=null);var r=document.getElementById("todo-progress");r&&r.classList.add("hidden");var i=document.querySelector(".structured-status-bar");i&&i.remove(),n._statusBarTimerId&&(clearInterval(n._statusBarTimerId),n._statusBarTimerId=null),n._statusBarStartTime=0;var a=document.querySelector(".input-composer");a&&a.classList.remove("in-flight");var u=t;n.preferredCommand=vt(),n.chatMode=Nt("claude",u&&u.mode?u.mode:n.chatMode),n.terminalInteractive&&u&&u.status!=="running"&&An(!1),fe(),Er(e),n.filePanelOpen&&(_l(u),Lt()),fn(e).then(function(){Ht(!0)}),xn(e),n.gitStatus=null,n.gitStatusSessionId=null,ji(),En(e,{force:!0})}}function kv(){var e=document.getElementById("sessions-drawer"),t=document.querySelector(".main-layout"),r=_e(),i=!!n.sidebarPinned&&!!n.sidebarCollapsed,a=i||!r&&(!!n.sidebarPinned||!!n.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",!!n.sidebarPinned),u.title=n.sidebarPinned?"\u5DF2\u56FA\u5B9A\u5E38\u9A7B\uFF08\u70B9\u51FB\u89E3\u9664\u9501\u5B9A\uFF09":"\u56FA\u5B9A\u4FA7\u680F\u5E38\u9A7B",u.setAttribute("aria-label",n.sidebarPinned?"\u89E3\u9664\u56FA\u5B9A\u5E38\u9A7B":"\u56FA\u5B9A\u4FA7\u680F\u5E38\u9A7B"),u.setAttribute("aria-pressed",n.sidebarPinned?"true":"false"))}function xr(){var e=document.getElementById("sessions-drawer"),t=document.getElementById("sessions-drawer-backdrop"),r=document.querySelector(".main-layout");e&&e.classList.toggle("open",n.sessionsDrawerOpen),t&&t.classList.toggle("open",vu()),r&&r.classList.toggle("sidebar-open",n.sessionsDrawerOpen);var i=document.getElementById("sessions-toggle-button");i&&i.classList.toggle("active",n.sessionsDrawerOpen),kv()}function Av(){var e=_e();if(!e){var t=n.sidebarPinned?!1:!n.sessionsDrawerOpen;n.sessionsDrawerOpen=t,t&&(n.sidebarCollapsed=!1,xe("wand-sidebar-collapsed",!1)),xe("wand-sidebar-open",n.sessionsDrawerOpen),tn(),Ir();return}if(n.sessionsDrawerOpen=!n.sessionsDrawerOpen,xe("wand-sidebar-open",n.sessionsDrawerOpen),n.sessionsDrawerOpen){n.filePanelOpen=!1;try{localStorage.setItem("wand-file-panel-open","false")}catch{}}tn()}function Sr(){var e=_e();if(!e){if(!n.sidebarPinned&&!n.sessionsDrawerOpen)return;Br(),n.sidebarPinned=!1,n.sessionsDrawerOpen=!1,xe("wand-sidebar-pinned",!1),xe("wand-sidebar-open",!1),tn(),Ir();return}n.sessionsDrawerOpen&&(Br(),n.sessionsDrawerOpen=!1,xe("wand-sidebar-open",!1),tn())}function xv(){if(_e()){Sr();return}n.sidebarPinned||n.sidebarCollapsed||!n.sessionsDrawerOpen||(Br(),n.sessionsDrawerOpen=!1,xe("wand-sidebar-open",!1),tn(),Ir())}function Go(e){var t=document.getElementById("composer-plus-popover"),r=document.getElementById("attach-btn");n.plusPopoverOpen=!!e,t&&t.classList.toggle("hidden",!e),r&&(r.classList.toggle("active",!!e),r.setAttribute("aria-expanded",e?"true":"false"))}function Sv(){Go(!n.plusPopoverOpen)}function Ei(){n.plusPopoverOpen&&Go(!1)}function Rt(){_e()&&n.sessionsDrawerOpen&&Sr()}function Ir(){var e=document.querySelector(".main-layout");if(e){var t=function(r){r.propertyName==="padding-left"&&(e.removeEventListener("transitionend",t),qt(!0))};e.addEventListener("transitionend",t)}setTimeout(function(){qt(!0)},350)}var Wt=null;function Iv(){return Wt&&document.body.contains(Wt)||(Wt=document.createElement("div"),Wt.className="sidebar-tile-bubble",Wt.setAttribute("role","tooltip"),document.body.appendChild(Wt)),Wt}function $t(){Wt&&Wt.classList.remove("visible")}function Tv(e,t){if(!t){$t();return}var r=Iv();r.textContent=t.length>400?t.slice(0,400)+"\u2026":t;var i=e.getBoundingClientRect();r.classList.add("visible");var a=r.getBoundingClientRect(),u=i.top+i.height/2,s=u-a.height/2,o=8,l=window.innerHeight-a.height-8;s<o&&(s=o),s>l&&(s=Math.max(o,l)),r.style.left=i.right+12+"px",r.style.top=s+"px",r.style.setProperty("--bubble-tail-y",u-s+"px")}function Lv(e){if(e.dataset.collapsedSessionId){var t=n.sessions.find(function(a){return a.id===e.dataset.collapsedSessionId});if(!t)return"";var r=yc(t);return r||t.summary||t.command||""}if(e.dataset.collapsedHistoryId){var i=n.claudeHistory.find(function(a){return a.claudeSessionId===e.dataset.collapsedHistoryId});if(i&&i.firstUserMessage)return i.firstUserMessage}return""}function Mv(e){var t=e.target;if(!(!t||!(t instanceof Element))){var r=t.closest(".sidebar-collapsed-tile");if(!r){$t();return}var i=Lv(r);if(!i){$t();return}Tv(r,i)}}function qv(e){var t=e.relatedTarget;t&&t instanceof Element&&t.closest(".sidebar-collapsed-tile")||$t()}function Ov(){var e=_e();n.sidebarPinned||(n.sidebarPinned=!0,xe("wand-sidebar-pinned",!0)),n.sidebarCollapsed=!n.sidebarCollapsed,xe("wand-sidebar-collapsed",n.sidebarCollapsed),n.sidebarCollapsed?n.sessionsDrawerOpen=!1:e?(n.sidebarPinned=!1,n.sessionsDrawerOpen=!0,xe("wand-sidebar-pinned",!1)):n.sessionsDrawerOpen=!0,xe("wand-sidebar-open",n.sessionsDrawerOpen),tn(),fe(),Hv(),$t(),Ir()}function Pv(){_e()||(n.sidebarPinned=!n.sidebarPinned,n.sessionsDrawerOpen=!0,xe("wand-sidebar-pinned",n.sidebarPinned),xe("wand-sidebar-open",!0),tn(),Ir())}function Hv(){var e=document.getElementById("sidebar-collapse-btn");if(e){var t=!!n.sidebarPinned&&!!n.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 _v(e){if(e){e.style.left="",e.style.right="";var t=e.offsetParent||e.parentElement;if(t){var r=8,i=t.getBoundingClientRect(),a=e.getBoundingClientRect(),u=window.innerWidth;a.left<r?(e.style.right="auto",e.style.left=r-i.left+"px"):a.right>u-r&&(e.style.left="auto",e.style.right=i.right-(u-r)+"px")}}}function Va(){$n(),n.modalOpen=!0,n.sessionsDrawerOpen=!1,xe("wand-sidebar-open",!1),xr();var e=document.getElementById("session-modal");e&&(e._wandCloseTimer&&(clearTimeout(e._wandCloseTimer),e._wandCloseTimer=null),e.classList.remove("closing"),e.classList.remove("hidden"),n.lastFocusedElement=document.activeElement,n.sessionTool=vt(),n.preferredCommand=n.sessionTool,n.sessionCreateKind="structured",n.sessionCreateWorktree=!1,n.modeValue=Nt(n.sessionTool,n.modeValue||n.chatMode),kr(),lm(),setTimeout(function(){var t=document.getElementById("mode-cards");t&&t.focus()},20),Fi(e))}function pn(){n.modalOpen=!1;var e=document.getElementById("session-modal");e&&(n.focusTrapHandler&&(document.removeEventListener("keydown",n.focusTrapHandler),n.focusTrapHandler=null),n.lastFocusedElement&&typeof n.lastFocusedElement.focus=="function"&&n.lastFocusedElement.focus(),Ua(e)),Zn()}function Ua(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 Fi(e){n.focusTrapHandler&&document.removeEventListener("keydown",n.focusTrapHandler);var t='button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])';n.focusTrapHandler=function(r){if(r.key==="Tab"){var i=e.querySelectorAll(t),a=i[0],u=i[i.length-1];!a||!u||(r.shiftKey?document.activeElement===a&&(r.preventDefault(),u.focus()):document.activeElement===u&&(r.preventDefault(),a.focus()))}},document.addEventListener("keydown",n.focusTrapHandler)}function Nv(){return n.activeWorktreeMergeSessionId&&n.sessions.find(function(e){return e.id===n.activeWorktreeMergeSessionId})||null}function Tr(){var e=document.getElementById("worktree-merge-content"),t=document.getElementById("worktree-merge-confirm-button"),r=document.getElementById("worktree-merge-error"),i=Nv(),a=n.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}r&&(n.worktreeMergeError?We(r,n.worktreeMergeError):ti(r));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>")):n.worktreeMergeLoading&&u.push('<p class="field-hint">\u6B63\u5728\u68C0\u67E5 worktree \u5408\u5E76\u72B6\u6001\u2026</p>'),e.innerHTML=u.join(""),t.disabled=n.worktreeMergeLoading||n.worktreeMergeSubmitting||!a||a.ok!==!0,t.textContent=n.worktreeMergeSubmitting?"\u5408\u5E76\u4E2D...":"\u786E\u8BA4\u5408\u5E76\u5E76\u6E05\u7406"}}function Qo(e){n.activeWorktreeMergeSessionId=e,n.worktreeMergeCheckResult=null,n.worktreeMergeLoading=!0,n.worktreeMergeSubmitting=!1,n.worktreeMergeError="",pn(),$n();var t=document.getElementById("worktree-merge-modal");t&&(t.classList.remove("hidden"),n.lastFocusedElement=document.activeElement,Fi(t)),Tr(),fetch("/api/sessions/"+encodeURIComponent(e)+"/worktree/merge/check",{method:"POST",credentials:"same-origin"}).then(function(r){return r.json()}).then(function(r){if(r&&r.error)throw new Error(r.error);r&&r.session&&Z(r.session),n.worktreeMergeCheckResult=r.result||null,n.worktreeMergeError=""}).catch(function(r){n.worktreeMergeError=r&&r.message||"\u65E0\u6CD5\u68C0\u67E5 worktree \u5408\u5E76\u72B6\u6001\u3002"}).finally(function(){n.worktreeMergeLoading=!1,Tr()})}function Qn(){var e=document.getElementById("worktree-merge-modal");n.activeWorktreeMergeSessionId=null,n.worktreeMergeCheckResult=null,n.worktreeMergeLoading=!1,n.worktreeMergeSubmitting=!1,n.worktreeMergeError="",e&&e.classList.add("hidden"),n.focusTrapHandler&&(document.removeEventListener("keydown",n.focusTrapHandler),n.focusTrapHandler=null),n.lastFocusedElement&&typeof n.lastFocusedElement.focus=="function"&&n.lastFocusedElement.focus()}function jv(){!n.activeWorktreeMergeSessionId||n.worktreeMergeSubmitting||(n.worktreeMergeSubmitting=!0,n.worktreeMergeError="",Tr(),fetch("/api/sessions/"+encodeURIComponent(n.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&&Z(e.session),k("\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"),Qn(),_t()}).catch(function(e){n.worktreeMergeError=e&&e.message||"\u65E0\u6CD5\u5408\u5E76 worktree\u3002",Tr()}).finally(function(){n.worktreeMergeSubmitting=!1,Tr()}))}function $o(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&&Z(t.session),k("\u5DF2\u5B8C\u6210 worktree \u6E05\u7406\u3002","info"),_t()}).catch(function(t){k(t&&t.message||"\u65E0\u6CD5\u6E05\u7406 worktree\u3002","error")})}function Rv(){pn();var e=document.getElementById("settings-modal");if(e){e._wandCloseTimer&&(clearTimeout(e._wandCloseTimer),e._wandCloseTimer=null),e.classList.remove("closing"),e.classList.remove("hidden"),n.lastFocusedElement=document.activeElement;var t=document.getElementById("new-password"),r=document.getElementById("confirm-password");t&&(t.value=""),r&&(r.value=""),Xo(),Fi(e),zv(),Ka("about"),Jv();var i=document.getElementById("cfg-notif-sound"),a=document.getElementById("cfg-notif-bubble");i&&(i.checked=n.notifSound),a&&(a.checked=n.notifBubble);var u=document.getElementById("cfg-notif-volume"),s=document.getElementById("cfg-notif-volume-val");if(u){u.value=n.notifVolume,s&&(s.textContent=n.notifVolume+"%");try{u.dispatchEvent(new Event("input",{bubbles:!0}))}catch{}}var o=document.getElementById("notif-volume-field");if(o&&(o.style.display=n.notifSound?"":"none"),mn(),typeof WandNative<"u"&&typeof WandNative.getAppIcon=="function")try{tl(WandNative.getAppIcon()||"shorthair")}catch{}if(Ne&&typeof WandNative.getNotificationSound=="function")try{var l=document.getElementById("native-sound-select");l&&(l.value=WandNative.getNotificationSound())}catch{}if(Ne&&typeof WandNative.getNotificationVolume=="function")try{var c=WandNative.getNotificationVolume();if(n.notifVolume=c,u&&(u.value=String(c)),s&&(s.textContent=c+"%"),u)try{u.dispatchEvent(new Event("input",{bubbles:!0}))}catch{}try{localStorage.setItem("wand-notif-volume",String(c))}catch{}}catch{}if(Ne&&typeof WandNative.isHapticEnabled=="function")try{var d=document.getElementById("cfg-haptic-enabled");d&&(d.checked=WandNative.isHapticEnabled())}catch{}}}function $n(){var e=document.getElementById("settings-modal");e&&(n.focusTrapHandler&&(document.removeEventListener("keydown",n.focusTrapHandler),n.focusTrapHandler=null),n.lastFocusedElement&&typeof n.lastFocusedElement.focus=="function"&&n.lastFocusedElement.focus(),Ua(e))}function Xo(){var e=document.getElementById("settings-error"),t=document.getElementById("settings-success");e&&e.classList.add("hidden"),t&&t.classList.add("hidden")}function Wv(){var e=document.getElementById("new-password").value,t=document.getElementById("confirm-password").value,r=document.getElementById("settings-error"),i=document.getElementById("settings-success");if(Xo(),!e||e.length<6){r.textContent="\u5BC6\u7801\u957F\u5EA6\u81F3\u5C11\u4E3A 6 \u4E2A\u5B57\u7B26\u3002",r.classList.remove("hidden");return}if(e!==t){r.textContent="\u4E24\u6B21\u8F93\u5165\u7684\u5BC6\u7801\u4E0D\u4E00\u81F4\u3002",r.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){r.textContent=a.error,r.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(){r.textContent="Failed to save password.",r.classList.remove("hidden")})}function Ka(e){for(var t=document.querySelectorAll(".settings-tab"),r=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<r.length;u++){var s=r[u].id==="settings-tab-"+e;s?(r[u].classList.add("active"),r[u].removeAttribute("hidden")):(r[u].classList.remove("active"),r[u].setAttribute("hidden","hidden"))}}function Zo(e){if(e&&!(e.key!=="ArrowUp"&&e.key!=="ArrowDown"&&e.key!=="Home"&&e.key!=="End")){var t=Array.prototype.slice.call(document.querySelectorAll(".settings-tab"));if(t.length){var r=t.indexOf(e.currentTarget);if(r!==-1){e.preventDefault();var i=r;e.key==="ArrowUp"&&(i=r>0?r-1:t.length-1),e.key==="ArrowDown"&&(i=r<t.length-1?r+1:0),e.key==="Home"&&(i=0),e.key==="End"&&(i=t.length-1);var a=t[i];if(a){var u=a.getAttribute("data-tab");u&&Ka(u),typeof a.focus=="function"&&a.focus()}}}}}function zv(){for(var e=document.querySelectorAll(".settings-tab"),t=0;t<e.length;t++)e[t].removeEventListener("keydown",Zo),e[t].addEventListener("keydown",Zo)}function Vv(e){if(e){var t=e.config||{},r={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:n.notifSound?"\u63D0\u793A\u97F3 "+n.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 r)if(Object.prototype.hasOwnProperty.call(r,i)){var a=document.querySelector('.settings-tab[data-tab="'+i+'"] .settings-tab-meta');a&&(a.textContent=r[i]||"")}}}function Uv(e){var t=document.getElementById("android-connect-qr"),r=document.getElementById("android-connect-qr-empty"),i=window.QRCodeLib;if(t){if(!i||typeof i.toCanvas!="function"){r&&(r.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){r&&(r.textContent="\u4E8C\u7EF4\u7801\u751F\u6210\u5931\u8D25",r.style.display=""),t.style.visibility="hidden";return}r&&(r.style.display="none"),t.style.visibility="visible"})}catch{r&&(r.textContent="\u4E8C\u7EF4\u7801\u751F\u6210\u5931\u8D25",r.style.display=""),t.style.visibility="hidden"}}}function Kv(e){var t=window.QRCodeLib;if(!t||typeof t.toCanvas!="function")return;var r=document.getElementById("connect-qr-modal");r&&r.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 s(){i.remove()}i.addEventListener("click",function(l){l.target===i&&s()});var o=i.querySelector(".connect-qr-modal-close");o&&o.addEventListener("click",s)}function Lr(e,t,r){if(!e)return;function i(){if(Un("light"),r){r();return}if(t){var a=t.textContent;t.textContent="\u5DF2\u590D\u5236",setTimeout(function(){t.textContent=a},1500)}}if(Ne&&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 vn(e){if(typeof e!="number"||!isFinite(e)||e<0)return"-";if(e<1024)return e+" B";for(var t=["KB","MB","GB","TB"],r=e/1024,i=0;r>=1024&&i<t.length-1;)r=r/1024,i+=1;var a=r>=10?r.toFixed(0):r.toFixed(1);return a+" "+t[i]}function Jv(){fetch("/api/settings",{credentials:"same-origin"}).then(function(e){return e.json()}).then(function(e){Vv(e);var t=document.getElementById("settings-pkg-name"),r=document.getElementById("settings-version"),i=document.getElementById("settings-node-req"),a=document.getElementById("settings-repo-url");t&&(t.textContent=e.packageName||"-"),r&&(r.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"),s=document.getElementById("do-update-button");e.latestVersion&&u&&(u.textContent=e.latestVersion,e.updateAvailable&&s&&s.classList.remove("hidden"));var o=document.getElementById("beta-channel-toggle");o&&(o.checked=e.updateChannel==="beta");var l=e.autoUpdate||{},c=document.getElementById("auto-update-web-toggle");c&&(c.checked=!!l.web);var d=document.getElementById("auto-update-apk-toggle");d&&(d.checked=!!Dn&&!!l.apk);var f=document.getElementById("auto-update-dmg-toggle");f&&(f.checked=!!rn&&!!l.dmg);function v(ue,ve){typeof window.wandAlert=="function"?window.wandAlert(ue,{type:ve==="error"?"danger":"info"}):typeof k=="function"?k(ue,ve==="error"?"error":"info"):ve==="error"&&alert(ue)}function m(ue,ve,Me){var yt=Me?Me.textContent:"";Me&&(Me.disabled=!0,Me.textContent="\u4E0B\u8F7D\u4E2D\u2026");function dt(){Me&&(Me.disabled=!1,Me.textContent=yt)}fetch(ue,{method:"HEAD",credentials:"same-origin"}).then(function(ye){if(!ye.ok){v(ye.status===404?"\u4E0B\u8F7D\u672A\u542F\u7528\u6216\u6587\u4EF6\u5DF2\u79FB\u9664":"\u4E0B\u8F7D\u5931\u8D25 (HTTP "+ye.status+")","error"),dt();return}var He=document.createElement("a");He.href=ue,He.download=ve||"",document.body.appendChild(He),He.click(),document.body.removeChild(He),v("\u5DF2\u5F00\u59CB\u4E0B\u8F7D\uFF0C\u8BF7\u5728\u901A\u77E5\u680F/\u4E0B\u8F7D\u7BA1\u7406\u4E2D\u67E5\u770B","info"),dt()}).catch(function(ye){v("\u4E0B\u8F7D\u5931\u8D25: "+(ye&&ye.message?ye.message:ye),"error"),dt()})}function b(ue,ve){function Me(In){return String(In||"").replace(/^v/,"").split("-")[0].split(".").map(function(bt){return parseInt(bt,10)||0})}for(var yt=Me(ue),dt=Me(ve),ye=0;ye<3;ye++){var He=(yt[ye]||0)-(dt[ye]||0);if(He!==0)return He>0?1:-1}return 0}function g(ue,ve,Me,yt,dt){ue.classList.remove("hidden"),ue.disabled=!1,ve>0?ue.textContent="\u5347\u7EA7":ve===0?(ue.textContent="\u5DF2\u662F\u6700\u65B0",ue.disabled=!0):ue.textContent="\u91CD\u65B0\u5B89\u88C5",ue.onclick=ue.disabled?null:function(){try{WandNative.downloadUpdate(Me,yt,dt)}catch(ye){v("\u8C03\u7528\u4E0B\u8F7D\u5931\u8D25: "+(ye&&ye.message?ye.message:ye),"error")}}}var y=document.getElementById("android-apk-section"),w=document.getElementById("android-apk-current-row"),F=document.getElementById("settings-android-apk-current"),E=document.getElementById("android-apk-github-row"),A=document.getElementById("settings-android-apk-github"),x=document.getElementById("download-github-apk-btn"),S=document.getElementById("android-apk-local-row"),P=document.getElementById("settings-android-apk-local"),z=document.getElementById("download-local-apk-btn"),G=document.getElementById("android-apk-message"),L=e.androidApk||{},B=!!Dn,T=L.enabled!==!1,I=B||T&&(!!L.github||!!L.local);if(y&&(I?y.classList.remove("hidden"):y.classList.add("hidden")),B){if(w&&F&&(F.textContent="v"+Dn,w.classList.remove("hidden")),L.github&&E&&A){var V=L.github.version?"v"+L.github.version:L.github.fileName;if(typeof L.github.size=="number"&&(V+=" \xB7 "+vn(L.github.size)),A.textContent=V,E.classList.remove("hidden"),x){var te=L.github.version?b(L.github.version,Dn):1;g(x,te,L.github.downloadUrl,L.github.fileName||"wand-update.apk","github")}}if(L.local&&S&&P){var ee=L.local.version?"v"+L.local.version:L.local.fileName;if(typeof L.local.size=="number"&&(ee+=" \xB7 "+vn(L.local.size)),P.textContent=ee,S.classList.remove("hidden"),z){var Q=L.local.version?b(L.local.version,Dn):1;g(z,Q,L.local.downloadUrl,L.local.fileName||"wand-update.apk","local")}}!L.github&&!L.local&&G&&(G.textContent="\u6682\u65E0\u53EF\u7528\u66F4\u65B0",G.classList.remove("hidden"));var ne=document.getElementById("android-auto-update-row"),U=document.getElementById("android-auto-update-hint");ne&&ne.classList.remove("hidden"),U&&U.classList.remove("hidden")}else{if(L.github&&E&&A){var M=L.github.version?"v"+L.github.version:L.github.fileName;typeof L.github.size=="number"&&(M+=" \xB7 "+vn(L.github.size)),A.textContent=M,E.classList.remove("hidden"),x&&(x.textContent="\u4E0B\u8F7D",x.classList.remove("hidden"),x.onclick=function(){window.open(L.github.downloadUrl,"_blank"),v("\u6B63\u5728\u6253\u5F00\u4E0B\u8F7D\u9875\u2026","info")})}if(L.local&&S&&P){var H=L.local.version?"v"+L.local.version:L.local.fileName;typeof L.local.size=="number"&&(H+=" \xB7 "+vn(L.local.size)),P.textContent=H,S.classList.remove("hidden"),z&&(z.textContent="\u4E0B\u8F7D",z.classList.remove("hidden"),z.onclick=function(){m(L.local.downloadUrl,L.local.fileName||"wand-update.apk",z)})}!L.github&&!L.local&&G&&(G.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",G.classList.remove("hidden"))}var j=document.getElementById("macos-dmg-section"),Y=document.getElementById("macos-dmg-current-row"),K=document.getElementById("settings-macos-dmg-current"),X=document.getElementById("macos-dmg-github-row"),oe=document.getElementById("settings-macos-dmg-github"),le=document.getElementById("download-github-dmg-btn"),re=document.getElementById("macos-dmg-local-row"),Be=document.getElementById("settings-macos-dmg-local"),De=document.getElementById("download-local-dmg-btn"),Ee=document.getElementById("macos-dmg-message"),O=e.macosDmg||{},R=!!rn,ie=O.enabled!==!1,Se=R||ie&&(!!O.github||!!O.local);if(j&&(Se?j.classList.remove("hidden"):j.classList.add("hidden")),R){if(Y&&K&&(K.textContent="v"+rn,Y.classList.remove("hidden")),O.github&&X&&oe){var ce=O.github.version?"v"+O.github.version:O.github.fileName;if(typeof O.github.size=="number"&&(ce+=" \xB7 "+vn(O.github.size)),oe.textContent=ce,X.classList.remove("hidden"),le){var ae=O.github.version?b(O.github.version,rn):1;g(le,ae,O.github.downloadUrl,O.github.fileName||"wand-update.dmg","github")}}if(O.local&&re&&Be){var ke=O.local.version?"v"+O.local.version:O.local.fileName;if(typeof O.local.size=="number"&&(ke+=" \xB7 "+vn(O.local.size)),Be.textContent=ke,re.classList.remove("hidden"),De){var lt=O.local.version?b(O.local.version,rn):1;g(De,lt,O.local.downloadUrl,O.local.fileName||"wand-update.dmg","local")}}!O.github&&!O.local&&Ee&&(Ee.textContent="\u6682\u65E0\u53EF\u7528\u66F4\u65B0",Ee.classList.remove("hidden"));var rt=document.getElementById("macos-auto-update-row"),kt=document.getElementById("macos-auto-update-hint");rt&&rt.classList.remove("hidden"),kt&&kt.classList.remove("hidden")}else{if(O.github&&X&&oe){var Ve=O.github.version?"v"+O.github.version:O.github.fileName;typeof O.github.size=="number"&&(Ve+=" \xB7 "+vn(O.github.size)),oe.textContent=Ve,X.classList.remove("hidden"),le&&(le.textContent="\u4E0B\u8F7D",le.classList.remove("hidden"),le.onclick=function(){window.open(O.github.downloadUrl,"_blank"),v("\u6B63\u5728\u6253\u5F00\u4E0B\u8F7D\u9875\u2026","info")})}if(O.local&&re&&Be){var it=O.local.version?"v"+O.local.version:O.local.fileName;typeof O.local.size=="number"&&(it+=" \xB7 "+vn(O.local.size)),Be.textContent=it,re.classList.remove("hidden"),De&&(De.textContent="\u4E0B\u8F7D",De.classList.remove("hidden"),De.onclick=function(){m(O.local.downloadUrl,O.local.fileName||"wand-update.dmg",De)})}!O.github&&!O.local&&Ee&&(Ee.textContent=ie?"\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",Ee.classList.remove("hidden"))}var Ue=document.getElementById("android-connect-code"),At=document.getElementById("android-connect-qr"),Ke=document.getElementById("android-connect-qr-empty"),je=document.getElementById("android-connect-qr-wrap");if(Ue){Ue.textContent="\u52A0\u8F7D\u4E2D...",Ke&&(Ke.textContent="\u751F\u6210\u4E2D\u2026"),At&&(At.style.visibility="hidden");var Ae="/api/app-connect-code";window.location&&window.location.origin&&(Ae+="?origin="+encodeURIComponent(window.location.origin)),fetch(Ae,{credentials:"same-origin"}).then(function(ue){return ue.json()}).then(function(ue){ue.code?(Ue.textContent=ue.code,n.androidConnectCode=ue.code,Uv(ue.code)):(Ue.textContent="\u751F\u6210\u5931\u8D25",Ke&&(Ke.textContent="\u751F\u6210\u5931\u8D25"))}).catch(function(){Ue.textContent="\u83B7\u53D6\u5931\u8D25",Ke&&(Ke.textContent="\u83B7\u53D6\u5931\u8D25")})}je&&!je.dataset.bound&&(je.dataset.bound="1",je.addEventListener("click",function(){n.androidConnectCode&&Kv(n.androidConnectCode)}));var pe=e.config||{},Fe=document.getElementById("cfg-host"),C=document.getElementById("cfg-port"),at=document.getElementById("cfg-https"),ct=document.getElementById("cfg-mode"),gt=document.getElementById("cfg-cwd"),qe=document.getElementById("cfg-shell");Fe&&(Fe.value=pe.host||""),C&&(C.value=pe.port||""),at&&(at.checked=pe.https===!0),ct&&(ct.value=pe.defaultMode||"default"),gt&&(gt.value=pe.defaultCwd||""),qe&&(qe.value=pe.shell||"");var xt=document.getElementById("cfg-language");xt&&(xt.value=pe.language||"");var Xt=document.getElementById("cfg-structured-runner");Xt&&(Xt.value=pe.structuredRunner||"cli");var ut=document.getElementById("cfg-inherit-env");ut&&(ut.checked=pe.inheritEnv!==!1),n.configDefaultModel=pe.defaultModel||"",yi(),Vo().then(function(){yi()}).catch(function(){});var Oe=document.getElementById("cert-status");Oe&&(Oe.textContent=e.hasCert?"\u5DF2\u5B89\u88C5 SSL \u8BC1\u4E66":"\u672A\u5B89\u88C5\u8BC1\u4E66\uFF08\u4F7F\u7528\u81EA\u7B7E\u540D\u6216 HTTP\uFF09",Oe.style.color=e.hasCert?"var(--success)":"var(--text-secondary)");var Pe=document.getElementById("presets-list");if(Pe&&pe.commandPresets){for(var Ce="",Je=0;Je<pe.commandPresets.length;Je++){var St=pe.commandPresets[Je];Ce+='<div class="preset-item"><span class="preset-label">'+p(St.label)+'</span><span class="preset-detail">'+p(St.command)+(St.mode?" ("+p(St.mode)+")":"")+"</span></div>"}Ce||(Ce='<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>'),Pe.innerHTML=Ce}var ht=pe.cardDefaults||{},gn=document.getElementById("cfg-card-edit"),It=document.getElementById("cfg-card-inline"),Sn=document.getElementById("cfg-card-terminal"),Xe=document.getElementById("cfg-card-thinking"),de=document.getElementById("cfg-card-toolgroup");gn&&(gn.checked=ht.editCards===!0),It&&(It.checked=ht.inlineTools===!0),Sn&&(Sn.checked=ht.terminal===!0),Xe&&(Xe.checked=ht.thinking===!0),de&&(de.checked=ht.toolGroup===!0)}).catch(function(){})}function Yv(){var e=document.getElementById("config-message");e&&(e.classList.add("hidden"),e.textContent="");var t={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:(document.getElementById("cfg-default-model")||{}).value||"",structuredRunner:(document.getElementById("cfg-structured-runner")||{}).value||"cli",inheritEnv:(document.getElementById("cfg-inherit-env")||{}).checked!==!1},r=n.config&&n.config.defaultModel||"",i=t.defaultModel||"";fetch("/api/settings/config",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(t)}).then(function(a){return a.json()}).then(function(a){if(e&&(a.error?(e.textContent=a.error,e.style.color="var(--error)"):(e.textContent=a.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")),(!a||!a.error)&&(n.config&&(n.config.defaultModel=i),n.configDefaultModel=i,i!==r)){n.chatModel="";try{localStorage.removeItem("wand-chat-model")}catch{}Gn(mt())}}).catch(function(){e&&(e.textContent="\u4FDD\u5B58\u5931\u8D25\u3002",e.style.color="var(--error)",e.classList.remove("hidden"))})}function Gv(){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(r){return r.json()}).then(function(r){e&&(r.error?(e.textContent=r.error,e.style.color="var(--error)"):(e.textContent="\u663E\u793A\u8BBE\u7F6E\u5DF2\u4FDD\u5B58",e.style.color="var(--success)"),e.classList.remove("hidden")),!r.error&&n.config&&(n.config.cardDefaults=t.cardDefaults)}).catch(function(){e&&(e.textContent="\u4FDD\u5B58\u5931\u8D25\u3002",e.style.color="var(--error)",e.classList.remove("hidden"))})}function Qv(){var e=document.getElementById("cert-key-file"),t=document.getElementById("cert-cert-file"),r=document.getElementById("cert-message");if(r&&(r.classList.add("hidden"),r.textContent=""),!e||!e.files||!e.files[0]||!t||!t.files||!t.files[0]){r&&(r.textContent="\u8BF7\u9009\u62E9\u79C1\u94A5\u548C\u8BC1\u4E66\u6587\u4EF6\u3002",r.style.color="var(--error)",r.classList.remove("hidden"));return}var i=new FileReader;i.onload=function(){var a=i.result,u=new FileReader;u.onload=function(){var s=u.result;fetch("/api/settings/upload-cert",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({key:a,cert:s})}).then(function(o){return o.json()}).then(function(o){if(r){if(o.error)r.textContent=o.error,r.style.color="var(--error)";else{r.textContent="\u8BC1\u4E66\u5DF2\u4E0A\u4F20\uFF0C\u91CD\u542F\u540E\u751F\u6548\u3002",r.style.color="var(--success)";var l=document.getElementById("cert-status");l&&(l.textContent="\u5DF2\u5B89\u88C5 SSL \u8BC1\u4E66",l.style.color="var(--success)")}r.classList.remove("hidden")}}).catch(function(){r&&(r.textContent="\u4E0A\u4F20\u5931\u8D25\u3002",r.style.color="var(--error)",r.classList.remove("hidden"))})},u.readAsText(t.files[0])},i.readAsText(e.files[0])}function el(){var e=document.getElementById("settings-latest-version"),t=document.getElementById("do-update-button"),r=document.getElementById("update-message");e&&(e.textContent="\u68C0\u67E5\u4E2D..."),r&&r.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){r&&(r.textContent=a?"\u65E0\u6CD5\u8BFB\u53D6 npm beta \u7248\u672C\u3002":"\u65E0\u6CD5\u8FDE\u63A5\u5230 npm registry\u3002",r.style.color="var(--error)",r.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&&r&&(r.textContent=a?"\u5DF2\u662F\u6700\u65B0 Beta \u7248\u672C\u3002":"\u5DF2\u662F\u6700\u65B0\u7248\u672C\u3002",r.style.color="var(--success)",r.classList.remove("hidden"))}).catch(function(){e&&(e.textContent="\u68C0\u67E5\u5931\u8D25")})}function $v(){var e=document.getElementById("update-message"),t=document.getElementById("do-update-button");t&&(t.disabled=!0,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(r){return r.json()}).then(function(r){if(r.error){e&&(e.textContent=r.error,e.style.color="var(--error)",e.classList.remove("hidden")),t.disabled=!1;return}if(e&&(e.textContent=(r.message||"\u66F4\u65B0\u5B8C\u6210")+"\uFF0C\u6B63\u5728\u91CD\u542F\u670D\u52A1\u2026",e.style.color="var(--success)",e.classList.remove("hidden")),t.classList.add("hidden"),r.detachedUpdate)an();else if(r.restartRequired!==!1)xs(null,e);else{var i=document.getElementById("do-restart-button");i&&i.classList.remove("hidden")}}).catch(function(){e&&(e.textContent="\u66F4\u65B0\u5931\u8D25\u3002",e.style.color="var(--error)",e.classList.remove("hidden")),t.disabled=!1}))}function Xv(){var e=document.getElementById("do-restart-button"),t=document.getElementById("update-message");xs(e,t)}function Zv(){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(Dn),{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 em(){rn&&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(rn),{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 Ja(e,t){var r={};r[e]=t,fetch("/api/auto-update",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(r)}).then(function(i){return i.json()}).then(function(i){var a=document.getElementById("auto-update-web-toggle"),u=document.getElementById("auto-update-apk-toggle"),s=document.getElementById("auto-update-dmg-toggle");a&&(a.checked=!!i.web),u&&(u.checked=!!i.apk),s&&(s.checked=!!i.dmg)}).catch(function(){var i=document.getElementById("auto-update-"+e+"-toggle");i&&(i.checked=!t)})}function tm(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 r=document.getElementById("beta-channel-toggle");r&&(r.checked=t.channel==="beta"),el()}).catch(function(){var t=document.getElementById("beta-channel-toggle");t&&(t.checked=e!=="beta")})}function tl(e){for(var t=document.querySelectorAll(".settings-app-icon-option"),r=0;r<t.length;r++){var i=t[r].getAttribute("data-icon")===e;t[r].classList.toggle("selected",i),t[r].setAttribute("aria-pressed",i?"true":"false")}}function mn(){var e=document.getElementById("notification-permission-status"),t=document.getElementById("notification-request-btn"),r=document.getElementById("notification-reset-btn"),i=document.getElementById("notification-test-message");if(e){var a=ni();if(a===null){if(typeof Notification>"u"){e.textContent="\u4E0D\u652F\u6301",e.style.color="var(--fg-muted)",t&&t.classList.add("hidden"),r&&r.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"),r&&r.classList.add("hidden")):a==="denied"?(e.textContent="\u5DF2\u62D2\u7EDD",e.style.color="var(--danger)",t&&t.classList.add("hidden"),r&&r.classList.remove("hidden")):(e.textContent="\u672A\u6388\u6743",e.style.color="var(--warning)",t&&t.classList.remove("hidden"),r&&r.classList.remove("hidden"))}}function nm(){var e=document.getElementById("notification-test-message");if(Ne){window._onNativePermissionResult=function(t){mn(),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(mn(),t==="granted")e&&(e.textContent="\u2713 \u5DF2\u6388\u6743",e.style.color="var(--success)",e.classList.remove("hidden"));else if(t==="denied"&&e){var r=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 nl(){var e=document.getElementById("notification-test-delay-btn");e&&(e.disabled=!1,e.textContent="10 \u79D2\u540E\u53D1\u9001")}function rm(){var e=document.getElementById("notification-test-message");n.delayedNotificationTimer&&(clearTimeout(n.delayedNotificationTimer),n.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")),n.delayedNotificationTimer=setTimeout(function(){n.delayedNotificationTimer=null,nl(),rl()},1e4)}function rl(){var e=document.getElementById("notification-test-message"),t=[];n.delayedNotificationTimer&&(clearTimeout(n.delayedNotificationTimer),n.delayedNotificationTimer=null,nl());var r=pf();t.push(r?"\u2713 \u63D0\u793A\u97F3":"\u2717 \u63D0\u793A\u97F3\uFF08\u65E0\u6CD5\u64AD\u653E\uFF09");var i=n.notifBubble;if(aa({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"),Ne){var a=ni();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(o){if(mn(),o==="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");Xn(e,t),delete window._onNativePermissionResult};try{WandNative.requestPermission()}catch{}return}Xn(e,t);return}if(typeof Notification>"u"){t.push("\u2013 \u7CFB\u7EDF\u901A\u77E5\uFF08\u4E0D\u652F\u6301\uFF09"),Xn(e,t);return}var u=Notification.permission;if(u==="granted"){try{var s=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(){s.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")}Xn(e,t)}else u==="denied"?(t.push("\u2717 \u7CFB\u7EDF\u901A\u77E5\uFF08\u5DF2\u62D2\u7EDD\uFF09"),Xn(e,t)):Notification.requestPermission().then(function(o){mn(),o==="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"),Xn(e,t)})}function Xn(e,t){if(e){e.innerHTML=t.map(function(i){return p(i)}).join("<br>");var r=t.every(function(i){return i.indexOf("\u2713")===0||i.indexOf("\u2013")===0});e.style.color=r?"var(--success)":"var(--warning)",e.classList.remove("hidden")}}function ot(e){if(!e||typeof e!="object"||!n.terminal)return e;try{typeof n.terminal.remeasure=="function"&&n.terminal.remeasure()}catch{}var t=n.terminal.cols,r=n.terminal.rows;return typeof t=="number"&&typeof r=="number"&&Number.isFinite(t)&&Number.isFinite(r)&&t>0&&r>0&&(e.cols=t,e.rows=r),e}function il(){return n.terminal&&n.terminal.cols?Promise.resolve():new Promise(function(e){var t=!1,r=function(){t||(t=!0,e())},i=setTimeout(r,2e3);try{Vn()}catch{}requestAnimationFrame(function(){requestAnimationFrame(function(){n.terminal&&n.terminal.cols&&(clearTimeout(i),r())})})})}function al(){var e=vt(),t=Qe(),r=Nt(e,n.config&&n.config.defaultMode?n.config.defaultMode:"default");n.preferredCommand=e,n.chatMode=Nt(e,n.chatMode),il().then(function(){return fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({command:e,provider:e,cwd:t,mode:r}))})}).then(function(i){return i.json()}).then(function(i){if(i.error){k(i.error,"error");return}return n.selectedId=i.id,be(),n.drafts[i.id]="",Ct(),_t()}).then(function(){Ht(!0)}).catch(function(){k("\u65E0\u6CD5\u542F\u52A8\u4F1A\u8BDD\u3002","error")})}var Mr=!1;function im(){if(!Mr){var e=document.getElementById("cwd"),t=document.getElementById("modal-error"),r=vt(),i=n.sessionCreateKind||"structured",a=n.sessionCreateWorktree===!0;ti(t);var u=Qe(),s=(e?e.value.trim():"")||u,o=Nt(r,n.modeValue);if(i==="structured"){am(s,o,a,t);return}um(r,s,o,a,t)}}function am(e,t,r,i){var a=n.sessionTool==="codex"?"codex":"claude";return Mr=!0,n.modeValue=t,n.chatMode=t,n.sessionTool=a,n.preferredCommand=a,hi(),Gn(mt()),Jo(void 0,e,t,r).then(function(u){return Yt(e),pn(),Rt(),u}).then(function(){Ht(!0)}).catch(function(u){We(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(){Mr=!1})}function um(e,t,r,i,a){Mr=!0,n.modeValue=r,n.chatMode=r,n.sessionTool=e,n.preferredCommand=e,hi(),il().then(function(){return fetch("/api/commands",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(ot({command:e,provider:e,cwd:t,mode:r,worktreeEnabled:i}))})}).then(function(u){return u.json()}).then(function(u){if(u.error){We(a,u.error);return}return n.selectedId=u.id,be(),Yt(t),n.drafts[u.id]="",Ct(),pn(),Rt(),_t()}).then(function(){n.selectedId?jt(n.selectedId):Ht(!0)}).catch(function(){We(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(){Mr=!1})}function sm(){var e=document.getElementById("blank-chat-cwd");e&&(e.addEventListener("click",ul),e.addEventListener("keydown",function(t){(t.key==="Enter"||t.key===" ")&&(t.preventDefault(),ul())}),document.addEventListener("click",function(t){var r=document.getElementById("blank-chat-cwd-dropdown");if(!(!r||r.classList.contains("hidden"))&&!t.target.closest(".blank-chat-cwd-wrap")){r.classList.add("hidden");var i=document.getElementById("blank-chat-cwd-arrow");i&&(i.textContent="\u25BC")}}))}function ul(){var e=document.getElementById("blank-chat-cwd-dropdown"),t=document.getElementById("blank-chat-cwd-arrow");if(e){var r=e.classList.contains("hidden");r?(om(e),e.classList.remove("hidden"),t&&(t.textContent="\u25B2")):(e.classList.add("hidden"),t&&(t.textContent="\u25BC"))}}function om(e){var t=en();e.innerHTML='<div class="blank-chat-cwd-loading">\u52A0\u8F7D\u4E2D...</div>',$i(function(r){var i="",a=n.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><span class="blank-chat-cwd-item-path">'+p(t)+"</span></div>",r.length){var u={};u[t]=!0,r.forEach(function(s){u[s.path]||(u[s.path]=!0,i+='<div class="blank-chat-cwd-item'+(a===s.path?" active":"")+'" data-path="'+p(s.path)+'"><span class="blank-chat-cwd-item-path">'+p(s.path)+"</span></div>")})}e.innerHTML=i,e.querySelectorAll(".blank-chat-cwd-item").forEach(function(s){s.addEventListener("click",function(o){o.stopPropagation();var l=s.dataset.path;n.workingDir=l;try{localStorage.setItem("wand-working-dir",l)}catch{}var c=document.getElementById("blank-chat-cwd-path");c&&(c.textContent=l),e.classList.add("hidden");var d=document.getElementById("blank-chat-cwd-arrow");d&&(d.textContent="\u25BC");var f=document.getElementById("folder-picker-input");f&&(f.value=l)})})})}function lm(){var e=document.getElementById("recent-paths-bubbles");e&&$i(function(t){if(!t.length){e.innerHTML="";return}e.innerHTML=t.map(function(r){return'<button class="recent-path-bubble" data-path="'+p(r.path)+'" title="'+p(r.path)+'">'+p(r.name)+"</button>"}).join(""),e.querySelectorAll(".recent-path-bubble").forEach(function(r){r.addEventListener("click",function(){var i=document.getElementById("cwd");i&&(i.value=r.dataset.path||"",n.cwdValue=r.dataset.path||"")})})})}function sl(){n.suggestionTimer&&clearTimeout(n.suggestionTimer),n.suggestionTimer=setTimeout(cm,120)}function cm(){var e=document.getElementById("session-modal");if(e&&e.classList.contains("hidden")){Zn();return}var t=document.getElementById("cwd");t&&fetch("/api/path-suggestions?q="+encodeURIComponent(t.value.trim()),{credentials:"same-origin"}).then(function(r){return r.json()}).then(dm).catch(Zn)}function dm(e){var t=document.getElementById("cwd-suggestions");if(!t||!e.length){Zn();return}t.innerHTML=e.map(function(r){return'<button class="suggestion-item" data-path="'+p(r.path)+'"><strong>'+p(r.name)+"</strong><small>"+p(r.path)+"</small></button>"}).join(""),t.querySelectorAll(".suggestion-item").forEach(function(r){r.addEventListener("click",function(){document.getElementById("cwd").value=r.dataset.path||"",n.cwdValue=r.dataset.path||"",Zn()})}),t.classList.remove("hidden")}function Zn(){var e=document.getElementById("cwd-suggestions");e&&(e.classList.add("hidden"),e.innerHTML="")}function fm(e){if(!e.isComposing){if(Js(e)){Fa(e);return}if(e.key==="Enter"){if(e.shiftKey){e.preventDefault();var t=document.getElementById("input-box");if(t){var r=t.selectionStart||0,i=t.value,a=i.slice(0,r)+`
46
+ `+i.slice(r);t.value=a,t.selectionStart=r+1,t.selectionEnd=r+1,nt(a,!0),Ot(t)}return}e.preventDefault();var u=!!(e.metaKey||e.ctrlKey);Ps(u?{interrupt:!0}:void 0);return}if(e.key==="Backspace"){setTimeout(function(){var g=document.getElementById("input-box");g&&nt(g.value,!0)},0);return}if(e.key==="Tab"){e.preventDefault();var t=document.getElementById("input-box");if(t){var r=t.selectionStart||0,i=t.value,a=i.slice(0,r)+" "+i.slice(r);t.value=a,nt(a,!0)}return}if(e.key==="Escape"){e.preventDefault();var s=mt();se(s)?s&&s.structuredState&&s.structuredState.inFlight&&wa():pt(wr("escape"),"escape");return}if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="c"){var o=document.getElementById("input-box"),l=o&&o.selectionStart!==o.selectionEnd||oi();if(l)return;var c=mt();if(se(c)){e.preventDefault(),c&&c.structuredState&&c.structuredState.inFlight&&wa();return}e.preventDefault(),pt(wr("ctrl_c"),"ctrl_c");return}if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="d"){var d=document.getElementById("input-box"),f=d&&d.selectionStart!==d.selectionEnd||oi();if(f)return;var v=mt();if(se(v)){e.preventDefault();return}e.preventDefault(),pt(wr("ctrl_d"),"ctrl_d");return}if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="l"){e.preventDefault();var m=mt();if(se(m))return;pt(wr("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"),b=t&&t.selectionStart!==t.selectionEnd;if(b)return;e.preventDefault(),pt("","ctrl_x");return}e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&setTimeout(function(){var g=document.getElementById("input-box");g&&nt(g.value)},0)}}}var pm=10*1024*1024;function vm(e){return e<1024?e+" B":e<1024*1024?(e/1024).toFixed(1)+" KB":(e/(1024*1024)).toFixed(1)+" MB"}function mm(e){return/^image\/(png|jpe?g|gif|webp|bmp|svg\+xml)/.test(e)}function Ya(e){if(e){if(e.size>pm){k("\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};mm(e.type)&&(t.previewUrl=URL.createObjectURL(e)),n.pendingAttachments.push(t),Ga()}}function gm(e){var t=n.pendingAttachments.splice(e,1);t.length&&t[0].previewUrl&&URL.revokeObjectURL(t[0].previewUrl),Ga()}function hm(){n.pendingAttachments.forEach(function(e){e.previewUrl&&URL.revokeObjectURL(e.previewUrl)}),n.pendingAttachments=[],Ga()}function Ga(){var e=document.getElementById("attachment-preview");if(e){var t=n.pendingAttachments;if(t.length===0){e.classList.add("hidden"),e.innerHTML="";return}e.classList.remove("hidden");for(var r="",i=0;i<t.length;i++){var a=t[i],u=a.previewUrl?'<img src="'+p(a.previewUrl)+'" alt="">':'<span class="att-icon">'+J("file",{size:13,strokeWidth:1.7})+"</span>";r+='<span class="attachment-pill" data-index="'+i+'">'+u+'<span class="att-name" title="'+p(a.name)+'">'+p(a.name)+'</span><span class="att-size">'+vm(a.size)+'</span><button class="att-remove" data-index="'+i+'" title="\u79FB\u9664">\xD7</button></span>'}e.innerHTML=r,e.querySelectorAll(".att-remove").forEach(function(s){s.addEventListener("click",function(o){o.preventDefault(),o.stopPropagation(),gm(parseInt(s.getAttribute("data-index"),10))})})}}function ym(e){if(!n.pendingAttachments.length)return Promise.resolve([]);var t=new FormData;return n.pendingAttachments.forEach(function(r){t.append("files",r.file,r.name)}),fetch("/api/sessions/"+encodeURIComponent(e)+"/upload",{method:"POST",body:t,credentials:"same-origin"}).then(function(r){return r.ok?r.json():r.json().then(function(i){throw new Error(i.error||"\u4E0A\u4F20\u5931\u8D25")})}).then(function(r){return r.files||[]})}function bm(e){if(!e||!e.length)return"";var t=e.map(function(r){return r.savedPath});return`[\u9644\u4EF6\u5DF2\u4E0A\u4F20\uFF0C\u8BF7\u67E5\u770B\u4EE5\u4E0B\u6587\u4EF6:
47
47
  `+t.join(`
48
48
  `)+`]
49
49
 
50
- `}function ul(e){if(!n.terminalInteractive||!e)return!1;var t=e.value||"";return t?(pt(t,"interactive_text").catch(function(){}),e.value="",Pt(e),nt("",!0),!0):!1}function hm(e){var t=e.clipboardData&&e.clipboardData.items;if(t&&!n.terminalInteractive){for(var r=0;r<t.length;r++)if(t[r].type.indexOf("image/")===0){e.preventDefault();var i=t[r].getAsFile();i&&Ya(i);return}}var a=e.clipboardData&&e.clipboardData.getData("text");if(a){if(e.preventDefault(),n.terminalInteractive){pt(a,"paste").catch(function(){});return}var u=document.getElementById("input-box");if(u){var s=u.selectionStart||0,o=u.selectionEnd||0,l=u.value,c=l.slice(0,s)+a+l.slice(o);u.value=c,nt(c)}}}function ig(e){pt(e),nt(ym()+e)}function ym(){if(n.selectedId){if(n.drafts[n.selectedId]!==void 0)return n.drafts[n.selectedId];try{var e=localStorage.getItem("wand-draft-"+n.selectedId);if(e)return e}catch{}}return""}function nt(e,t){if(n.selectedId){n.drafts[n.selectedId]=e;try{localStorage.setItem("wand-draft-"+n.selectedId,e)}catch{}if(!t){var r=document.getElementById("input-box");r&&(r.value=e)}}}var Qa=!1;function bm(){if(!Qa){var e=document.getElementById("input-box"),t=document.getElementById("prompt-optimize-btn"),r=document.querySelector(".input-composer");if(e){var i=(e.value||"").trim();if(!i){typeof k=="function"&&k("\u8BF7\u5148\u8F93\u5165\u8981\u4F18\u5316\u7684\u5185\u5BB9\u3002","info"),e.focus();return}Qa=!0,t&&(t.classList.add("is-loading"),t.disabled=!0,t.setAttribute("title","\u6B63\u5728\u4F18\u5316\u2026")),r&&r.classList.add("is-optimizing"),e.setAttribute("aria-busy","true");var a=e.readOnly;e.readOnly=!0;var u={text:i};n&&n.selectedId&&(u.sessionId=n.selectedId),fetch("/api/optimize-prompt",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify(u)}).then(function(s){return s.json().then(function(o){return{ok:s.ok,data:o}})}).then(function(s){if(!s.ok)throw new Error(s.data&&s.data.error||"\u63D0\u793A\u8BCD\u4F18\u5316\u5931\u8D25\u3002");var o=s.data&&s.data.optimized||"";if(!o)throw new Error("Claude \u8FD4\u56DE\u4E3A\u7A7A\u3002");Em(e,o)}).catch(function(s){typeof k=="function"&&k(s&&s.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(){Qa=!1,t&&(t.classList.remove("is-loading"),t.disabled=!1,t.setAttribute("title","\u63D0\u793A\u8BCD\u4F18\u5316\uFF08AI\uFF09")),r&&r.classList.remove("is-optimizing"),e.removeAttribute("aria-busy"),e.readOnly=a})}}}function Em(e,t){if(!e)return;var r=Array.from(t),i=r.length;if(i===0){e.value="",nt("",!0),Pt(e);return}var a=Math.min(700,Math.max(220,i*8)),u=Math.min(i,60),s=Math.ceil(i/u),o=a/u,l=0;e.value="",Pt(e);function c(){if(l=Math.min(i,l+s),e.value=r.slice(0,l).join(""),Pt(e),l<i)setTimeout(c,o);else{nt(t,!0);try{e.setSelectionRange(t.length,t.length)}catch{}}}c()}function wi(e){var t=document.querySelector(".input-composer");if(t){var r=e||document.getElementById("input-box"),i=!!(r&&r.value&&r.value.length>0);t.classList.toggle("has-text",i)}}n._statusBarTimerId=null,n._statusBarStartTime=0;var qr=null,Ci=0;function $a(e){if(!e)return{active:!1};if(e.archived)return{active:!1};var t=!!e.permissionBlocked,r=!!(oe(e)&&e.structuredState&&e.structuredState.inFlight),i=!oe(e)&&e.status==="running";return{active:r||i||t,inFlight:r,ptyRunning:i,permissionBlocked:t}}function Fm(e){var t=Math.max(0,Math.floor(e/1e3));if(t<60)return t+"s";var r=Math.floor(t/60),i=t%60;if(r<60)return r+"m"+(i?" "+i+"s":"");var a=Math.floor(r/60),u=r%60;return a+"h"+(u?" "+u+"m":"")}function Xa(e){var t=$a(e),r=document.querySelector(".main-header-row"),i=r?r.querySelector(".session-status-pill"):null,a=document.querySelector(".chat-messages");if(r&&(r.classList.toggle("is-running",t.active),r.classList.toggle("is-permission-blocked",t.permissionBlocked)),i){var u=i.querySelector(".session-status-elapsed");if(t.inFlight){Ci||(Ci=n._statusBarStartTime>0?n._statusBarStartTime:Date.now());var s=Fm(Date.now()-Ci);u||(u=document.createElement("span"),u.className="session-status-elapsed",i.appendChild(u)),u.textContent=s}else Ci=0,u&&u.remove()}t.active?qr||(qr=setInterval(function(){var o=n.sessions.find(function(l){return l.id===n.selectedId});Xa(o)},1e3)):qr&&(clearInterval(qr),qr=null)}function Za(e,t){Xa(t);var r=document.querySelector(".composer-top-row"),i=document.querySelector(".structured-status-bar"),a=document.querySelector(".input-composer");if(!t||!oe(t)){i&&i.remove(),a&&a.classList.remove("in-flight"),clearInterval(n._statusBarTimerId),n._statusBarTimerId=null;return}var u=t.structuredState&&t.structuredState.inFlight;if(u){if(n._statusBarTimerId||(n._statusBarStartTime=Date.now()),a&&a.classList.add("in-flight"),!i&&r){var s=document.createElement("div");s.className="structured-status-bar",s.innerHTML='<span class="status-bar-dot"></span><span class="status-bar-label">\u56DE\u590D\u4E2D</span><span class="status-bar-timer">0.0s</span>',r.appendChild(s),i=s}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 o=i.querySelector(".status-bar-dot");o&&(o.style.display=""),n._statusBarStartTime=Date.now()}n._statusBarTimerId||(n._statusBarTimerId=setInterval(function(){var c=document.querySelector(".structured-status-bar:not(.completed)");if(!c){clearInterval(n._statusBarTimerId),n._statusBarTimerId=null;return}var d=((Date.now()-n._statusBarStartTime)/1e3).toFixed(1),f=c.querySelector(".status-bar-timer");f&&(f.textContent=d+"s")},100))}else if(clearInterval(n._statusBarTimerId),n._statusBarTimerId=null,a&&a.classList.remove("in-flight"),i&&!i.classList.contains("completed")){var l=n._statusBarStartTime?((Date.now()-n._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 o=i.querySelector(".status-bar-dot");o&&(o.style.display="none"),n._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;")}"serviceWorker"in navigator&&(fetch("/sw.js",{cache:"no-cache"}).then(function(e){return e.ok?navigator.serviceWorker.register("/sw.js"):(console.log("SW fetch failed, skipping service worker registration"),Promise.reject("Service worker script not available"))}).catch(function(e){var t=e&&e.message||String(e||""),r=e&&e.name==="TypeError"||/certificate|SSL|ERR_CERT/i.test(t);r&&location.protocol==="https:"?console.warn(`[wand] PWA / Service Worker \u56E0 TLS \u8BC1\u4E66\u4E0D\u53EF\u4FE1\u800C\u8DF3\u8FC7\u3002
50
+ `}function ol(e){if(!n.terminalInteractive||!e)return!1;var t=e.value||"";return t?(pt(t,"interactive_text").catch(function(){}),e.value="",Ot(e),nt("",!0),!0):!1}function Em(e){var t=e.clipboardData&&e.clipboardData.items;if(t&&!n.terminalInteractive){for(var r=0;r<t.length;r++)if(t[r].type.indexOf("image/")===0){e.preventDefault();var i=t[r].getAsFile();i&&Ya(i);return}}var a=e.clipboardData&&e.clipboardData.getData("text");if(a){if(e.preventDefault(),n.terminalInteractive){pt(a,"paste").catch(function(){});return}var u=document.getElementById("input-box");if(u){var s=u.selectionStart||0,o=u.selectionEnd||0,l=u.value,c=l.slice(0,s)+a+l.slice(o);u.value=c,nt(c)}}}function sg(e){pt(e),nt(Fm()+e)}function Fm(){if(n.selectedId){if(n.drafts[n.selectedId]!==void 0)return n.drafts[n.selectedId];try{var e=localStorage.getItem("wand-draft-"+n.selectedId);if(e)return e}catch{}}return""}function nt(e,t){if(n.selectedId){n.drafts[n.selectedId]=e;try{localStorage.setItem("wand-draft-"+n.selectedId,e)}catch{}if(!t){var r=document.getElementById("input-box");r&&(r.value=e)}}}var Qa=!1;function wm(){if(!Qa){var e=document.getElementById("input-box"),t=document.getElementById("prompt-optimize-btn"),r=document.querySelector(".input-composer");if(e){var i=(e.value||"").trim();if(!i){typeof k=="function"&&k("\u8BF7\u5148\u8F93\u5165\u8981\u4F18\u5316\u7684\u5185\u5BB9\u3002","info"),e.focus();return}Qa=!0,t&&(t.classList.add("is-loading"),t.disabled=!0,t.setAttribute("title","\u6B63\u5728\u4F18\u5316\u2026")),r&&r.classList.add("is-optimizing"),e.setAttribute("aria-busy","true");var a=e.readOnly;e.readOnly=!0;var u={text:i};n&&n.selectedId&&(u.sessionId=n.selectedId),fetch("/api/optimize-prompt",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify(u)}).then(function(s){return s.json().then(function(o){return{ok:s.ok,data:o}})}).then(function(s){if(!s.ok)throw new Error(s.data&&s.data.error||"\u63D0\u793A\u8BCD\u4F18\u5316\u5931\u8D25\u3002");var o=s.data&&s.data.optimized||"";if(!o)throw new Error("Claude \u8FD4\u56DE\u4E3A\u7A7A\u3002");Cm(e,o)}).catch(function(s){typeof k=="function"&&k(s&&s.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(){Qa=!1,t&&(t.classList.remove("is-loading"),t.disabled=!1,t.setAttribute("title","\u63D0\u793A\u8BCD\u4F18\u5316\uFF08AI\uFF09")),r&&r.classList.remove("is-optimizing"),e.removeAttribute("aria-busy"),e.readOnly=a})}}}function Cm(e,t){if(!e)return;var r=Array.from(t),i=r.length;if(i===0){e.value="",nt("",!0),Ot(e);return}var a=Math.min(700,Math.max(220,i*8)),u=Math.min(i,60),s=Math.ceil(i/u),o=a/u,l=0;e.value="",Ot(e);function c(){if(l=Math.min(i,l+s),e.value=r.slice(0,l).join(""),Ot(e),l<i)setTimeout(c,o);else{nt(t,!0);try{e.setSelectionRange(t.length,t.length)}catch{}}}c()}function wi(e){var t=document.querySelector(".input-composer");if(t){var r=e||document.getElementById("input-box"),i=!!(r&&r.value&&r.value.length>0);t.classList.toggle("has-text",i)}}n._statusBarTimerId=null,n._statusBarStartTime=0;var qr=null,Ci=0;function $a(e){if(!e)return{active:!1};if(e.archived)return{active:!1};var t=!!e.permissionBlocked,r=!!(se(e)&&e.structuredState&&e.structuredState.inFlight),i=!se(e)&&e.status==="running";return{active:r||i||t,inFlight:r,ptyRunning:i,permissionBlocked:t}}function Bm(e){var t=Math.max(0,Math.floor(e/1e3));if(t<60)return t+"s";var r=Math.floor(t/60),i=t%60;if(r<60)return r+"m"+(i?" "+i+"s":"");var a=Math.floor(r/60),u=r%60;return a+"h"+(u?" "+u+"m":"")}function Xa(e){var t=$a(e),r=document.querySelector(".main-header-row"),i=r?r.querySelector(".session-status-pill"):null,a=document.querySelector(".chat-messages");if(r&&(r.classList.toggle("is-running",t.active),r.classList.toggle("is-permission-blocked",t.permissionBlocked)),i){var u=i.querySelector(".session-status-elapsed");if(t.inFlight){Ci||(Ci=n._statusBarStartTime>0?n._statusBarStartTime:Date.now());var s=Bm(Date.now()-Ci);u||(u=document.createElement("span"),u.className="session-status-elapsed",i.appendChild(u)),u.textContent=s}else Ci=0,u&&u.remove()}t.active?qr||(qr=setInterval(function(){var o=n.sessions.find(function(l){return l.id===n.selectedId});Xa(o)},1e3)):qr&&(clearInterval(qr),qr=null)}function Za(e,t){Xa(t);var r=document.querySelector(".composer-top-row"),i=document.querySelector(".structured-status-bar"),a=document.querySelector(".input-composer");if(!t||!se(t)){i&&i.remove(),a&&a.classList.remove("in-flight"),clearInterval(n._statusBarTimerId),n._statusBarTimerId=null;return}var u=t.structuredState&&t.structuredState.inFlight;if(u){if(n._statusBarTimerId||(n._statusBarStartTime=Date.now()),a&&a.classList.add("in-flight"),!i&&r){var s=document.createElement("div");s.className="structured-status-bar",s.innerHTML='<span class="status-bar-dot"></span><span class="status-bar-label">\u56DE\u590D\u4E2D</span><span class="status-bar-timer">0.0s</span>',r.appendChild(s),i=s}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 o=i.querySelector(".status-bar-dot");o&&(o.style.display=""),n._statusBarStartTime=Date.now()}n._statusBarTimerId||(n._statusBarTimerId=setInterval(function(){var c=document.querySelector(".structured-status-bar:not(.completed)");if(!c){clearInterval(n._statusBarTimerId),n._statusBarTimerId=null;return}var d=((Date.now()-n._statusBarStartTime)/1e3).toFixed(1),f=c.querySelector(".status-bar-timer");f&&(f.textContent=d+"s")},100))}else if(clearInterval(n._statusBarTimerId),n._statusBarTimerId=null,a&&a.classList.remove("in-flight"),i&&!i.classList.contains("completed")){var l=n._statusBarStartTime?((Date.now()-n._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 o=i.querySelector(".status-bar-dot");o&&(o.style.display="none"),n._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;")}"serviceWorker"in navigator&&(fetch("/sw.js",{cache:"no-cache"}).then(function(e){return e.ok?navigator.serviceWorker.register("/sw.js"):(console.log("SW fetch failed, skipping service worker registration"),Promise.reject("Service worker script not available"))}).catch(function(e){var t=e&&e.message||String(e||""),r=e&&e.name==="TypeError"||/certificate|SSL|ERR_CERT/i.test(t);r&&location.protocol==="https:"?console.warn(`[wand] PWA / Service Worker \u56E0 TLS \u8BC1\u4E66\u4E0D\u53EF\u4FE1\u800C\u8DF3\u8FC7\u3002
51
51
  \u89E3\u51B3\u529E\u6CD5\uFF08\u4EFB\u9009\u4E00\u79CD\uFF09\uFF1A
52
52
  1) \u4ECE `+location.origin+`/cert/server.crt \u4E0B\u8F7D\u672C\u673A\u81EA\u7B7E\u8BC1\u4E66\uFF0C\u5BFC\u5165\u5230\u7CFB\u7EDF/\u6D4F\u89C8\u5668"\u53D7\u4FE1\u4EFB\u6839\u8BC1\u4E66\u9881\u53D1\u673A\u6784"
53
53
  2) \u5728\u672C\u673A\u7528 mkcert \u7B7E\u53D1\u53D7\u4FE1\u4EFB\u8BC1\u4E66\uFF0C\u5E76\u5728 ~/.wand/config.json \u914D\u7F6E tls.certPath / tls.keyPath
54
- 3) \u7528\u5185\u7F51 CA \u6216 Let's Encrypt \u7ED9\u57DF\u540D\u7B7E\u771F\u8BC1\u4E66\uFF08\u540C\u4E0A\u914D\u7F6E tls\uFF09`):console.log("SW registration failed:",t)}),eu=!1,tu=!1,setTimeout(function(){tu=!0},3e3),navigator.serviceWorker.addEventListener("controllerchange",function(){eu||!tu||(eu=!0,location.reload())})),(function(){function e(){var r="browser";return window.matchMedia("(display-mode: window-controls-overlay)").matches?r="window-controls-overlay":window.matchMedia("(display-mode: standalone)").matches?r="standalone":window.matchMedia("(display-mode: fullscreen)").matches?r="fullscreen":navigator.standalone===!0&&(r="standalone"),document.documentElement.setAttribute("data-display-mode",r),document.documentElement.classList.toggle("is-pwa",r!=="browser"),r}e(),["standalone","window-controls-overlay","fullscreen"].forEach(function(r){window.matchMedia("(display-mode: "+r+")").addEventListener("change",e)});try{var t=navigator&&navigator.userAgent||"";/WandApp\//.test(t)&&document.documentElement.classList.add("is-wand-app")}catch{}})();var eu,tu})();
54
+ 3) \u7528\u5185\u7F51 CA \u6216 Let's Encrypt \u7ED9\u57DF\u540D\u7B7E\u771F\u8BC1\u4E66\uFF08\u540C\u4E0A\u914D\u7F6E tls\uFF09`):console.log("SW registration failed:",t)}),eu=!1,tu=!1,setTimeout(function(){tu=!0},3e3),navigator.serviceWorker.addEventListener("controllerchange",function(){eu||!tu||(eu=!0,location.reload())})),(function(){function e(){var r="browser";return window.matchMedia("(display-mode: window-controls-overlay)").matches?r="window-controls-overlay":window.matchMedia("(display-mode: standalone)").matches?r="standalone":window.matchMedia("(display-mode: fullscreen)").matches?r="fullscreen":navigator.standalone===!0&&(r="standalone"),document.documentElement.setAttribute("data-display-mode",r),document.documentElement.classList.toggle("is-pwa",r!=="browser"),r}e(),["standalone","window-controls-overlay","fullscreen"].forEach(function(r){window.matchMedia("(display-mode: "+r+")").addEventListener("change",e)});try{var t=navigator&&navigator.userAgent||"";/WandApp\//.test(t)&&document.documentElement.classList.add("is-wand-app")}catch{}try{window.__wandNativeBackHooked=!0}catch{}})();var eu,tu})();