@yeaft/webchat-agent 1.0.523 → 1.0.525

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.
@@ -7,7 +7,7 @@ ${p}`:p,f=!0;break}}if(!f){for(let g=c.length-1;g>=0;g--)if(c[g].type==="tool-us
7
7
 
8
8
  `))}function io(e){let t=Array.isArray(e?.textSegments)?e.textSegments:[];if(t.length===0)return;let s=Array.isArray(e?.messages)?e.messages:[],n=e?.isActive===!0||e?.isStreaming===!0||t.some(l=>l.isStreaming===!0)||s.some(l=>l?.isStreaming===!0||l?.status==="pending"),r=s.some(l=>l?.incomplete===!0||ml.has(l?.status)||ml.has(l?.turnEndReason)||ml.has(l?.stopReason));if(n||r){for(let l of t)l.kind="progress";return}if(t.some(l=>l.kind==="result"))return;let i=s.some(l=>l?.turnEndReason==="end_turn"),o=t.some(l=>l.explicitKind),a=t.length===1&&!o;(i||a||e.isHistory&&!o)&&(t[t.length-1].kind="result")}var ml,oo=B(()=>{ml=new Set(["aborted","errored","error","cancelled","canceled"])});function bs(e){return typeof e=="string"?e.trim():""}function dt(e){let t=bs(e?.runtimeProvider),s=bs(e?.agentId),n=bs(e?.sessionId);return!t||!s||!n?"":[t,s,n].map(r=>encodeURIComponent(r)).join(":")}function bb(e){let t=0xcbf29ce484222325n;for(let s of String(e||""))t^=BigInt(s.codePointAt(0)),t=BigInt.asUintN(64,t*0x100000001b3n);return t.toString(16).padStart(16,"0")}function bn(e,t){let s=bs(e),n=bs(t);return!s||!n?"":`${s}@${bb(n)}`}function Gr(e,t="main"){if(!e)return"";let s=["main","files-folder-picker","git-folder-picker"].includes(t)?t:"main";return s==="main"?`_workbench:${e}`:`_workbench:${e}:${s}`}function ss(e,t){let s=bs(e?.conversationId);if(!t||!s)return null;if(s===Gr(t))return"main";for(let n of["files-folder-picker","git-folder-picker"])if(s===Gr(t,n))return n;return null}function Xn(e,t){let s=(n={})=>{let r={runtimeProvider:bs(t.runtimeProvider),agentId:bs(t.agentId),sessionId:bs(t.sessionId)},i="main";n.conversationId==="_folder_picker"?i="files-folder-picker":n.conversationId==="_git_folder_picker"&&(i="git-folder-picker");let o={...n,agentId:r.agentId,workbenchRoute:r,workbenchRouteKey:t.routeKey,workbenchWorkspaceGeneration:t.workspaceGeneration,workbenchScope:i,conversationId:Gr(t.routeKey,i)};return!Object.hasOwn(o,"workDir")&&t.workDir&&(o.workDir=t.workDir),e.sendWsMessage(o)};return new Proxy(e,{get(n,r,i){return r==="currentAgent"?t.agentId||null:r==="currentConversation"?t.conversationId||t.sessionId||null:r==="effectiveWorkDir"?t.workDir||"":r==="activeSessionRoute"?{runtimeProvider:t.runtimeProvider,agentId:t.agentId,sessionId:t.sessionId}:r==="sendWsMessage"?s:Reflect.get(n,r,i)},set(n,r,i,o){return Reflect.set(n,r,i,o)}})}function Zn(e,t,s=""){return t?(e?.workbenchRouteKey?e.workbenchRouteKey===t:ss(e,t)!==null)?s?e?.workbenchWorkspaceGeneration===s:!0:!1:!0}var ws=B(()=>{});function vl(e){return e?.type==="user"&&typeof e.content=="string"&&e.content.trim()}function yl(e){return e?.type==="assistant"||e?.type==="thinking"||e?.type==="tool_use"||e?.type==="tool-use"||e?.type==="tool_result"||e?.type==="tool-result"}function bl(e,t){if(!e||e.kind!=="assistant")return!0;let s=e.turnId||e.lastTurnId||"",n=t?.turnId||"";if(s&&n&&s!==n)return!0;let r=e.speakerVpId||"",i=t?.speakerVpId||t?.vpId||"";return!!(r&&i&&r!==i)}function wl(e=[]){let t=[],s=null,n=r=>{s&&(t.push({start:s.start,end:r,kind:s.kind}),s=null)};for(let r=0;r<e.length;r++){let i=e[r];if(i){if(vl(i)||i.type==="system"||i.type==="error"){n(r),s={start:r,kind:i.type};continue}if(!yl(i)){s||(s={start:r,kind:"other"});continue}(!s||s.kind==="assistant"&&bl(s,i))&&(n(r),s={start:r,kind:"assistant",turnId:i.turnId||"",speakerVpId:i.speakerVpId||i.vpId||""}),s.lastTurnId=i.turnId||s.lastTurnId||"",s.speakerVpId=s.speakerVpId||i.speakerVpId||i.vpId||""}}return n(e.length),t}function qp(e,t){return!e||e._historyWindowPrefetched===!0?!1:t?(e.sessionId??e.groupId)===t:!0}function kl(e=[],t=null,s=Qr,n=null){let r=Math.max(1,Number.isFinite(s)?Math.floor(s):Qr),i=[],o=[],a=null,l=d=>{a&&(o.push({start:a.start,end:d,kind:a.kind}),a=null)};for(let d of e){if(!qp(d,t))continue;let u=i.length;if(i.push(d),vl(d)||d.type==="system"||d.type==="error"){l(u),a={start:u,kind:d.type};continue}if(!yl(d)){a||(a={start:u,kind:"other"});continue}(!a||a.kind==="assistant"&&bl(a,d))&&(l(u),a={start:u,kind:"assistant",turnId:d.turnId||"",speakerVpId:d.speakerVpId||d.vpId||""}),a.lastTurnId=d.turnId||a.lastTurnId||"",a.speakerVpId=a.speakerVpId||d.speakerVpId||d.vpId||""}if(l(i.length),o.length<=r)return i;let c=o[o.length-r];return i.slice(c.start)}function Fp(e=[],t=null,s=Qr){let n=Math.max(1,s||Qr),r=0,i=null,o=()=>i?(i=null,r+=1,r>n):!1;for(let a of e)if(qp(a,t)){if(vl(a)||a.type==="system"||a.type==="error"){if(o())return!0;i={kind:a.type};continue}if(!yl(a)){i||(i={kind:"other"});continue}if(!i||i.kind==="assistant"&&bl(i,a)){if(o())return!0;i={kind:"assistant",turnId:a.turnId||"",speakerVpId:a.speakerVpId||a.vpId||""}}i.lastTurnId=a.turnId||i.lastTurnId||"",i.speakerVpId=i.speakerVpId||a.speakerVpId||a.vpId||""}return o(),r>n}function Ws(){return Qr}function Xr(){return wb}var Qr,wb,Hp=B(()=>{Qr=Number.POSITIVE_INFINITY,wb=20});function Sb(e,t){let s=new Set;if(!t)return s;for(let n of e?.sessionCatalog||[])n?.runtimeProvider!=="yeaft"||n?.routeRef?.sessionId!==t||n.routeRef.agentId&&s.add(n.routeRef.agentId);if(s.size===0){let n=ns();for(let r of n?.sessionList||[])r?.id===t&&r?.agentId&&s.add(r.agentId)}return s}function tf(e,t){let s=Sb(e,t);return s.size===1?s.values().next().value:null}function co(e,t,s){return!!s&&tf(e,t)===s}function Mt(e,t,s){return!e||e.sessionId!==t?!1:s?e.agentId===s:!e.agentId}function Bp(e,t,s=null){if(!t)return!1;let n=s||Me(e,t),r=ys(n,t);if(r&&e.yeaftProcessingSessions?.[r]||e.yeaftProcessingSessions?.[t]&&co(e,t,n))return!0;for(let i of Object.values(e.activeVpTurns||{}))if(Mt(i,t,n))return!0;for(let i of Object.values(e.vpStatuses||{}))if(Mt(i,t,n)&&Jr.has(i?.state))return!0;return!1}function Ib(e,t,s,n=null){let r={...e.yeaftProcessingSessions||{}};if(t){let i=rl(t);if(r=Object.fromEntries(Object.entries(r).filter(([o])=>n?o!==ys(t,n):!o.startsWith(i))),n)co(e,n,t)&&delete r[n];else for(let o of Object.keys(r))co(e,o,t)&&delete r[o]}else n?delete r[n]:r={};for(let i of s||[]){let o=i?.sessionId||i?.groupId||null;if(!o||!Jr.has(i?.state))continue;let a=ys(t,o)||o;r[a]=!0}return r}function wn(e,t,s){let n=il(t,s);return n&&e?.activeVpTurns?.[n]?n:e?.activeVpTurns?.[s]&&(!t||!e.activeVpTurns[s]?.agentId||e.activeVpTurns[s].agentId===t)?s:n||s||""}function Np(e,t){if(!t){e.activeVpTurns={},e.stoppingVpTurnIds={},e.vpStatuses={},e.yeaftProcessingSessions={};return}e.activeVpTurns=Object.fromEntries(Object.entries(e.activeVpTurns||{}).filter(([,n])=>n?.agentId&&n.agentId!==t)),e.stoppingVpTurnIds=Object.fromEntries(Object.entries(e.stoppingVpTurnIds||{}).filter(([n])=>e.activeVpTurns?.[n])),e.vpStatuses=Object.fromEntries(Object.entries(e.vpStatuses||{}).filter(([,n])=>n?.agentId&&n.agentId!==t));let s=rl(t);e.yeaftProcessingSessions=Object.fromEntries(Object.entries(e.yeaftProcessingSessions||{}).filter(([n])=>!n.startsWith(s)))}function ks(e,t){return`${e||""}:${t||""}`}function Rb(e){return e?.kind==="action"&&typeof e.actionId=="string"&&Number.isInteger(Number(e.generation))&&Number(e.generation)>0?{kind:"action",actionId:e.actionId,generation:Number(e.generation)}:{kind:"coordinator"}}function _b(e){return typeof e=="string"?e:e?.kind==="action"&&typeof e.actionId=="string"?{kind:"action",actionId:e.actionId,generation:Number.isInteger(Number(e.generation))?Number(e.generation):0}:{kind:"coordinator"}}function Eb(e={}){let t=It(e.quote);return{agentId:e.agentId||"",workItemId:e.workItemId||"",target:Rb(e.target),text:String(e.text||""),...t?{quote:t}:{},attachments:Array.isArray(e.attachments)?e.attachments.map(s=>({fileId:s?.fileId||"",name:s?.name||"",mimeType:s?.mimeType||"",size:Math.max(0,Number(s?.size)||0)})):[],revision:Number(e.revision)||0,planRevision:Number(e.planRevision)||0,ledgerRevision:Number(e.ledgerRevision)||0,coordinatorRevision:Number(e.coordinatorRevision)||0}}function Up(e,t,s){return{conversationId:s||null,agentId:e?.agentId||t?.agentId||null,requestId:t?.requestId||null,toolCallId:t?.toolCallId||null,sessionId:e?.sessionId||t?.sessionId||null,vpId:e?.vpId||t?.vpId||null,turnId:e?.turnId||t?.turnId||null,threadId:e?.threadId||t?.threadId||null}}function Kp(e,t){return{conversationId:t||null,agentId:e?.agentId||null,requestId:e?.askRequestId||null,toolCallId:e?.toolId||null,sessionId:e?.sessionId||e?.groupId||null,vpId:e?.vpId||e?.speakerVpId||null,turnId:e?.turnId||null,threadId:e?.threadId||null}}function Db(e,t){return Ml.every(s=>!t[s]||e[s]===t[s])}function sf(e,t){return Ml.every(s=>!e[s]||!t[s]||e[s]===t[s])}function zp(e,t,s){let n=(e||[]).filter(o=>o?.type==="tool-use"&&(o.toolName==="AskUser"||o.toolName==="AskUserQuestion")&&(!t.requestId||!o.askRequestId||o.askRequestId===t.requestId)&&(!t.toolCallId||!o.toolId||o.toolId===t.toolCallId)),r=n.filter(o=>Db(Kp(o,s),t));if(r.length===1)return r[0];let i=n.filter(o=>sf(Kp(o,s),t));return i.length===1?i[0]:null}function nf(e){return Ml.map(t=>e[t]||"").join("\0")}function $b(e,t,s){let n=nf(t),r={...e._yeaftAskTerminalEvents||{},[n]:{identity:t,event:s,receivedAt:Date.now()}},i=Object.keys(r);if(i.length>jp){i.sort((o,a)=>r[o].receivedAt-r[a].receivedAt);for(let o of i.slice(0,i.length-jp))delete r[o]}e._yeaftAskTerminalEvents=r}function Yp(e,t){let s=e._yeaftAskTerminalEvents||{},n=nf(t),r=s[n]?n:null;if(!r){let l=Object.entries(s).filter(([,c])=>sf(c.identity||{},t));l.length===1&&(r=l[0][0])}if(!r)return null;let i=s[r],{[r]:o,...a}=s;return e._yeaftAskTerminalEvents=a,i?.event||null}function Lb(e,t,s){return(e.messagesMap?.[t]||[]).some(n=>n?.type==="tool-use"&&n.sessionId===s&&n.hasResult===!1)}function Il(e,t){if(!(t.type==="ask_user_answer_rejected"&&(e.askAnswered||e.askExpired))){if(t.type==="ask_user_answer_rejected"&&t.reason==="agent_unavailable"){e.askError="agent_unavailable",e.askSubmittedAt=0;return}e.askError=t.type==="ask_user_answer_rejected"?t.reason||"unavailable":null,e.askSubmittedAt=null,t.type==="ask_user_answered"?(e.askAnswered=!0,e.selectedAnswers=t.answers||{},e.askExpired=!1):(e.isHistory=!0,e.askExpired=!0,e.askAnswered=!1,e.selectedAnswers=null),e.askPending=!1,e.pendingAnswers=null,e.askSubmitGeneration=null,e.askRequestId=null}}function Ob(e){if(!e||typeof e!="string")return null;let t=e.match(/^(\d+)/);if(!t)return null;let s=Number(t[1]);return Number.isFinite(s)?s:null}function Vb(e){if(!e||typeof e!="string")return null;let t=e.match(/^m(\d+)$/);if(!t)return null;let s=Number(t[1]);return Number.isFinite(s)?s:null}function Zr(e){return Er(e)}function Cl(e,t,s){return`${ys(e,t)}::${s||""}`}function Al(e){return Object.fromEntries(Object.entries(e||{}).filter(([,t])=>t?.status==="running"))}function ns(){try{return typeof window>"u"?null:window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore()||null}catch{return null}}function Gp(e){let t=ns();if(!t?.reorderSessionsGlobally)return;let s=(Array.isArray(e)?e:[]).filter(n=>n?.runtimeProvider==="yeaft").map(n=>`${n.routeRef?.agentId||""}${n.routeRef?.sessionId||""}`).filter(n=>!n.startsWith(""));t.reorderSessionsGlobally(s)}function Me(e,t,s=null){if(s)return s;if(t){let n=ns(),r=n?.activeSessionKey?n.sessions?.[n.activeSessionKey]:null;if(r?.id===t&&r.agentId)return r.agentId;let i=n&&typeof n.sessionById=="function"?n.sessionById(t,e?.currentAgent||null):null;if(i&&i.agentId)return i.agentId;let o=e?.yeaftSessionAgentById?e.yeaftSessionAgentById[t]:null;if(o)return o}return e?.currentAgent||null}function Qp(e){let t=Is(e),s=Me(e,t),n=ns()?.sessionById?.(t,s),r=e.currentAgentInfo?.id===s?e.currentAgentInfo:e.agents?.find(o=>o?.id===s),i=o=>typeof o=="string"?o.trim():"";return i(n?.workDir)||i(r?.workDir)}function qb(e,t){let s=i=>String(i||"").replace(/^v/,"").split(".").slice(0,3).map(o=>Number.parseInt(o,10)),n=s(e),r=s(t);if(n.length<3||r.length<3||[...n,...r].some(i=>!Number.isFinite(i)))return!1;for(let i=0;i<3;i+=1)if(n[i]!==r[i])return n[i]>r[i];return!0}function Tt(e,t,s){if(!t||!s)return!1;let n=Array.isArray(e?.agents)?e.agents.find(o=>o?.id===t):null,r=e?.currentAgentInfo?.id===t?e.currentAgentInfo:null;return(n?.capabilities||r?.capabilities||[]).includes(s)?!0:s==="session_history_search"&&qb(n?.version||r?.version,"1.0.166")}function Is(e,{fallbackDefault:t=!1}={}){if(e?.yeaftActiveSessionFilter)return e.yeaftActiveSessionFilter;let s=ns();return s?.activeSessionId?s.activeSessionId:t?"grp_default":null}function lo(e){let t=e.yeaftDebugSessionFilter;if(t==="__all__")return null;if(t)return t;let s=Is(e);return s||(ns()?.sessions?.grp_default?"grp_default":null)}function xl(e,t="session"){return[e?.vpId||e?.ownerVpId||"vp",e?.threadId||"thread",e?.turnId||t].join(":")}function Ss(e,t,s=null){return s||t&&e?.yeaftConversationIdsByAgent?.[t]||e?.yeaftConversationId||null}function yt(e,t=null,s=null){let n=t||e?.yeaftActiveSessionFilter||null,r=s||Me(e,n);return(r&&e?.yeaftConversationIdsByAgent?e.yeaftConversationIdsByAgent[r]:null)||e?.yeaftConversationId||null}function Xp(e,t,s){if(e?.currentView!=="yeaft")return!1;let n=e?.yeaftActiveSessionFilter||null;if(n&&t!==n)return!1;let r=Me(e,n);return!r||!s||r===s}var kb,Qe,ao,Sl,Cb,Ab,xb,Wp,Tb,Jr,Mb,Pb,jp,Ml,Zp,Tl,Jp,ef,kn,uo=B(()=>{Ot();Ta();Gt();qi();Ra();Da();qr();Pu();Nu();pp();ln();Fs();Lr();yp();Ga();Yi();kp();Sp();Cp();Hi();hl();Za();Ns();oo();ws();qn();Bi();to();Hp();Wi();Ja();({defineStore:kb}=Pinia),Qe=Object.freeze([]),ao=(e,t,s)=>`${e||""}::${t||""}::${s}`;Sl=5,Cb=100,Ab=512*1024,xb=15e3,Wp=Object.freeze([150,300,600,1e3]),Tb=new Set(["index_building","stale_result"]),Jr=new Set(["typing","thinking","retrying","streaming","tool"]),Mb=Object.freeze(["model","availableModels","refreshedAt","catalogRefreshedAt","catalogEpoch","catalogRevision","catalogDigest","refreshStartedAt","refreshReason","refreshError","refreshing"]),Pb=8,jp=64;Ml=Object.freeze(["conversationId","agentId","requestId","toolCallId","sessionId","vpId","turnId","threadId"]);Zp=1e3,Tl=1,Jp=5,ef=200,kn=kb("chat",{state:()=>({ws:null,authenticated:!1,_hasHandledAgentList:!1,_hasHandledYeaftSessionHydrate:!1,yeaftSessionInventoryCompleteSupported:null,workbenchRouteProtocolSupported:null,browserRuntimeProtocolSupported:null,browserRuntimeSetupProtocolSupported:null,browserRuntimeServerEnabled:!1,yeaftSessionHydrateRequestId:null,yeaftSessionHydrateSlices:[],yeaftSessionHydrateError:null,_yeaftSessionInventorySocketQuarantined:!1,sessionKey:null,serverEncryptionRequired:!0,connectionState:"disconnected",reconnectAttempts:0,maxReconnectAttempts:10,reconnectTimer:null,agents:[],currentAgent:null,currentAgentInfo:null,conversations:[],activeConversations:[],currentWorkDir:null,messagesMap:{},_messageUiKeySequence:0,chatSessionState:{},panels:[],activePanelId:null,_pendingPaneId:null,conversationTitles:{},customConversationTitles:{},processingConversations:{},yeaftProcessingSessions:{},yeaftUnreadSessionKeys:{},theme:localStorage.getItem("theme")||(typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),themeFollowSystem:!localStorage.getItem("theme"),locale:localStorage.getItem("locale")||"zh-CN",executionStatusMap:{},sessionHealth:{},historySessions:[],historySessionsLoading:!1,folders:[],foldersLoading:!1,providerModels:[],providerModelsLoading:!1,contextUsage:null,lastUsedAgent:localStorage.getItem("lastUsedAgent")||null,lastUsedSession:JSON.parse(localStorage.getItem("lastUsedSession")||"null"),lastViewedConversation:localStorage.getItem("lastViewedConversation")||null,pendingRecovery:null,recoveryDismissed:!1,sessionLoading:!1,sessionLoadingText:"",agentSwitching:!1,pendingAgentSelection:null,_pendingSessionTitle:null,workbenchExpanded:!1,workbenchMaximized:!1,workbenchPanelStateByRoute:{},sidebarCollapsed:!1,sessionSidebarOpen:!1,compactStatus:null,clearStatus:null,refreshingSession:!1,refreshingSessionMap:{},proxyPorts:{},hasMoreMessages:!1,loadingMoreMessages:!1,chatHistoryRequests:{},chatHistoryRequestIdSupported:null,chatHistoryConnectionGeneration:0,sessionCatalog:[],hiddenSessionCatalog:[],sessionProjects:[],sessionCatalogLoaded:!1,sessionCatalogMutationRequests:{},projectMutationRequests:{},activeCatalogKey:null,openUnifiedSessionCreate:!1,openUnifiedChatCreate:!1,pendingUnifiedSessionSettings:null,pluginCenterOpen:!1,pluginCenterAgentId:null,pluginConfigByAgent:{},pluginCatalogByKey:{},pluginCatalogRequestByKey:{},managedSkillRequestByKey:{},_pluginPending:{},yeaftHasMoreHistory:!1,yeaftLoadingMoreHistory:!1,yeaftOldestLoadedSeq:null,yeaftHistoryLoadError:null,_yeaftManualHistoryRefresh:null,yeaftSessionHistoryState:{},yeaftMessageWindowState:{},yeaftHistoryCacheState:{},yeaftBootstrapMetaLoadingKey:null,yeaftHistoryPerfTraceBySession:{},_yeaftHistoryPrefetchBySession:{},yeaftHistorySearchState:{requestId:null,agentId:null,sessionId:null,query:"",senderKey:"",loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,nextCursor:null,error:null},yeaftHistoryOutlineBySession:{},_yeaftHistoryOutlineTimeouts:{},_yeaftHistorySearchTimeout:null,_yeaftHistoryWindowPendingByKey:{},_yeaftHistoryResultRefreshByRequestId:{},_yeaftHistoryRevealLeases:{},_yeaftHistoryRevealSequence:0,yeaftHistoryFocusWindowBySession:{},_yeaftReconnectCatchUpPending:!1,_yeaftOpenedSessionsLoadedAgents:{},_yeaftAgentSeen:null,slashCommandsMap:{},slashCommandDescriptions:{},inputDrafts:{},mcpServers:{},expertRoleDefinitions:null,llmConfig:{},llmModelDiscovery:{},llmGithubDevice:null,modelsDevRegistry:{registry:{},fetchedAt:0,error:null,loaded:!1},_modelsDevPending:null,yeaftSettings:{},searchSettings:null,telemetrySettings:null,telemetrySettingsByAgent:{},telemetryRequestByAgent:{},agentOperations:{},agentUpgradeBatch:null,agentDreamState:{},tavilyUsage:null,tavilyUsageLoading:!1,_perfTraceQueue:[],_perfTraceFlushTimer:null,yeaftPerfTraceByMessageId:{},yeaftPerfTraceByTurnId:{},yeaftMcpServers:[],yeaftMcpRuntime:{connected:!1,toolCount:0,perServer:[]},yeaftMcpLoading:!1,yeaftMcpError:null,btwMode:!1,btwMessages:[],btwLoading:!1,btwSessionId:null,conversationMcpServers:{},conversationMcpServerTools:{},mcpPanelOpen:!1,expertSelections:[],customExpertRoles:[],subagents:{},activeSubagentId:null,activeRightPanel:null,pinnedSessions:JSON.parse(localStorage.getItem("pinned-sessions")||"[]"),...hp(),workCenterOpen:!1,workCenterAgentId:null,workCenterItemsByAgent:{},workCenterListPageByAgent:{},workCenterListMoreLoadingByAgent:{},_workCenterListGenerationByAgent:{},_workCenterListQueryByAgent:{},_workCenterListFiltersByAgent:{},_workCenterListMoreRequestsByAgent:{},_workCenterListEventGenerationByAgent:{},_workCenterListEventsByAgent:{},_workCenterDeletedIdsByAgent:{},workCenterDetailByAgent:{},workCenterActionMessages:{},workCenterActionMessagesLoading:{},workCenterActionMessagesError:{},workCenterActionRequests:{},workCenterActionRequestDetails:{},workCenterActionRequestsLoading:{},workCenterActionRequestsError:{},workCenterActionRequestDetailsLoading:{},workCenterActionRequestDetailsError:{},workCenterLoadedByAgent:{},workCenterLoadingByAgent:{},workCenterErrorByAgent:{},workCenterWatcherByAgent:{},workCenterSettingsByAgent:{},workCenterRuntimeByAgent:{},workCenterSettingsLoadingByAgent:{},workCenterSettingsErrorByAgent:{},_workCenterSettingsGenerationByAgent:{},_workCenterDetailRequestGenerationByAgent:{},_workCenterDetailEventRefreshByAgent:{},_workCenterActionInputGenerationByAgent:{},_workCenterActionMessageRequests:{},_workCenterActionMessageGenerationByKey:{},_workCenterActionRequestsGeneration:{},_workCenterActionRequestDetailsGeneration:{},workCenterPending:{},workCenterComposerDrafts:{},workCenterMessageOutbox:{},_workCenterBrowserFence:null,_workCenterBrowserUnsubscribe:null,workCenterCreateDraft:null,yeaftConversationId:null,yeaftConversationIdsByAgent:{},_yeaftPendingConversationPromotions:{},_yeaftRetiredConversationIdsByAgent:{},_yeaftRetiredConversationTargetsByAgent:{},yeaftSessionAgentById:{},yeaftModel:null,yeaftModelEffort:null,yeaftSessionReady:!1,yeaftStatus:null,yeaftAvailableModels:[],yeaftStatusByAgent:{},_yeaftRetiredCatalogEpochsByAgent:{},yeaftModelsRefreshing:!1,yeaftModelRefreshError:null,yeaftYeaftDir:null,yeaftActiveTasksBySession:{},yeaftStoppingTasksById:{},yeaftToolStats:null,yeaftToolStatsLoading:!1,yeaftDebugLoops:[],yeaftDebugTurnsById:{},yeaftDebugTurnOrder:[],yeaftDebugHistoryLoading:!1,yeaftDebugHistoryError:null,yeaftDebugHistoryFetchedAt:0,yeaftDebugHistoryProjection:null,yeaftDebugHistoryLimit:Tl,yeaftDebugHistoryHasMore:!1,yeaftDebugPanel:{open:!1,status:"idle",requestId:null,agentId:null,sessionId:null,turnId:null,error:null},yeaftDebugSearch:"",yeaftDebugSessionFilter:null,yeaftDreamLatest:{},yeaftDreamSnapshots:{},yeaftDreamPromptLoads:{},yeaftDreamEvents:{},yeaftReflectionCards:{},yeaftSubAgentCards:{},yeaftSidebarV2Enabled:!0,yeaftActiveSessionFilter:null,_currentYeaftSessionId:null,_currentYeaftVpId:null,_currentYeaftTurnId:null,_currentYeaftThreadId:null,_yeaftAskTerminalEvents:{},activeVpTurns:{},vpStatuses:{},stoppingVpTurnIds:{},yeaftVpTyping:{},_vpCrudPending:null}),getters:{currentConversation:e=>e.activeConversations[0]||null,activeConversationId:e=>so(e),activeSessionRoute(e){if(e.currentView==="yeaft"){let n=Is(e);return n?{runtimeProvider:"yeaft",agentId:Me(e,n),sessionId:n}:null}let t=so(e);if(!t)return null;let s=e.conversations.find(n=>n?.id===t&&n.type!=="yeaft");return s?{runtimeProvider:s.provider==="copilot"?"copilot":"claude-code",agentId:s.agentId||e.currentAgent||null,sessionId:t}:null},messages(e){let t=this.activeConversationId,s=t&&e.messagesMap[t]||Qe;if(e.currentView==="yeaft"){let n=e.yeaftActiveSessionFilter||null,r=Pe(Me(e,n),n),i=e.yeaftMessageWindowState[r]?.visibleTurns||Ws(),o=e.yeaftHistoryFocusWindowBySession?.[r]?.windowKey||null;return kl(s,e.yeaftActiveSessionFilter||null,i,o)}return s},yeaftAllMessages:e=>{let t=yt(e);return t&&e.messagesMap[t]||Qe},yeaftVisibleMessages(e){let t=yt(e),s=t&&e.messagesMap[t]||Qe,n=e.yeaftActiveSessionFilter||null,r=Pe(Me(e,n),n),i=e.yeaftMessageWindowState[r]?.visibleTurns||Ws(),o=e.yeaftHistoryFocusWindowBySession?.[r]?.windowKey||null;return kl(s,e.yeaftActiveSessionFilter||null,i,o)},hasHiddenYeaftMessages(e){if(e.currentView!=="yeaft")return!1;let t=yt(e),s=t&&e.messagesMap[t]||Qe,n=e.yeaftActiveSessionFilter||null,r=Pe(Me(e,n),n),i=e.yeaftMessageWindowState[r]?.visibleTurns||Ws();return Fp(s,e.yeaftActiveSessionFilter||null,i)},activeYeaftHistoryState(e){return Oa(e)},yeaftManualHistoryRefreshLoading(e){let t=e._yeaftManualHistoryRefresh||null;if(!t?.requestId)return!1;let s=Pe(t.agentId,t.sessionId),n=Ut(e),r=e.yeaftSessionHistoryState?.[s]||null;return n.sessionKey===s&&r?.loading===!0&&r.requestId===t.requestId},yeaftInitialHistoryLoading(e){let t=Oa(e);return e.currentView==="yeaft"&&!!e.yeaftActiveSessionFilter&&!!t?.loading&&!t?.loaded&&this.yeaftVisibleMessages.length===0},vpsTypingInCurrentConv(e){let t=this.activeConversationId;if(!t)return Qe;let s=(e.yeaftVpTyping||{})[t];if(!s)return Qe;let n=Object.keys(s).filter(r=>(s[r]||0)>0);return n.length===0?Qe:n},isVpTypingInCurrentConv(e){return t=>{if(!t)return!1;let s=this.activeConversationId;if(!s)return!1;let n=(e.yeaftVpTyping||{})[s];return n?(n[t]||0)>0:!1}},yeaftDreamLatestForActiveSession(e){let t=lo(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamLatest?.[s]||null},yeaftDreamSnapshotForActiveSession(e){let t=lo(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamSnapshots?.[s]||null},yeaftDreamPromptLoadForActiveSession(e){let t=lo(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamPromptLoads?.[s]||null},yeaftDreamEventsForActiveSession(e){let t=lo(e);if(!t)return[];let s=`sessions/${t}`,n=Array.isArray(e.yeaftDreamEvents?.[s])?e.yeaftDreamEvents[s]:[],r=Array.isArray(e.yeaftDreamEvents?.["*"])?e.yeaftDreamEvents["*"]:[];return r.length===0?n:n.length===0?r:[...n,...r].sort((i,o)=>(i.at||0)-(o.at||0))},yeaftDebugTurnsForActiveSession:e=>{let t=e.yeaftDebugTurnOrder||Qe,s=e.yeaftDebugTurnsById||{},n=e.yeaftDebugLoops||Qe,r=e.yeaftReflectionCards||{},i=e.yeaftDebugSessionFilter,o;i==="__all__"?o=null:i?o=i:o=null;let a={};for(let d of n)!d||!d.turnId||(a[d.turnId]||(a[d.turnId]=[]),a[d.turnId].push(d));let l={};for(let d of Object.keys(r)){let u=r[d];!u||!u.turnId||(l[u.turnId]||(l[u.turnId]=[]),l[u.turnId].push(u))}let c=[];for(let d=t.length-1;d>=0;d--){let u=t[d],p=s[u];if(!p||o&&p.sessionId&&p.sessionId!==o)continue;let f=a[u]||Qe,g=l[u]||Qe,v=f.length,m=0,b=0;for(let I of f){let y=I&&I.usage;y&&Number.isFinite(y.totalTokens)?m+=y.totalTokens:y&&(m+=(y.totalInputTokens||(y.inputTokens||0)+(y.cacheReadTokens||0)+(y.cacheWriteTokens||0))+(y.outputTokens||0)),I&&Number.isFinite(I.latencyMs)&&(b+=I.latencyMs)}let h=!p.closedAt,w={...p,loopCount:h||!p.loopCount?v:p.loopCount,totalTokens:h||!p.totalTokens?m:p.totalTokens,totalMs:h||!p.totalMs?b:p.totalMs,loops:f,reflections:g};c.push(w)}return c},yeaftDebugAvailableSessions:e=>{let t=new Set;for(let s of e.yeaftDebugTurnOrder||Qe){let n=e.yeaftDebugTurnsById[s];n&&n.sessionId&&t.add(n.sessionId)}return Array.from(t).sort()},yeaftDebugTurnTotal:e=>(e.yeaftDebugTurnOrder||Qe).length,messagesCache:e=>e.messagesMap,isMultiColumn:e=>e.activeConversations.length>1,isSplitMode:e=>e.panels.length>1,isProcessing:e=>{if(e.currentView==="yeaft"){let t=Is(e);return t?Bp(e,t,Me(e,t)):!1}return e.currentConversation?!!e.processingConversations[e.currentConversation]:!1},canSend:e=>!(!e.currentAgent||!e.currentConversation),currentAgentName:e=>e.currentAgentInfo?.name||"\u9009\u62E9 Agent",currentAgentWorkDir:e=>e.currentAgentInfo?.workDir||"",effectiveWorkDir:e=>e.currentView==="yeaft"?Qp(e):e.currentWorkDir||e.currentAgentInfo?.workDir||"",fileReferenceResolutionContextKey:e=>{let t=e.currentView==="yeaft"?(()=>{let o=Is(e);return o?{runtimeProvider:"yeaft",agentId:Me(e,o),sessionId:o}:null})():(()=>{let o=so(e),a=e.conversations.find(l=>l?.id===o&&l.type!=="yeaft");return a?{runtimeProvider:a.provider==="copilot"?"copilot":"claude-code",agentId:a.agentId||e.currentAgent||null,sessionId:o}:null})(),s=t?.agentId||e.currentAgent||null,n=t?.runtimeProvider==="yeaft"?yt(e,t.sessionId,s):e.currentConversation,r=Tt(e,s,"file_reference_resolution");if(!s||!n||!r)return"";let i=e.currentView==="yeaft"?Qp(e):e.currentWorkDir||e.currentAgentInfo?.workDir||"";return JSON.stringify([e.connectionState,e.authenticated,e.workbenchRouteProtocolSupported,t?.runtimeProvider||"",s,t?.sessionId||"",n,i,Tt(e,s,"file_editor"),Tt(e,s,"workbench_session_routes"),Tt(e,s,"response_image_preview")])},currentAgentCapabilities:e=>e.currentAgentInfo?.capabilities||["terminal","file_editor","background_tasks"],hasCapability:e=>t=>(e.currentAgentInfo?.capabilities||["terminal","file_editor","background_tasks"]).includes(t),getConversationTitle:e=>t=>e.customConversationTitles[t]||e.conversationTitles[t]||null,executionStatus:e=>e.currentConversation?e.executionStatusMap[e.currentConversation]||{currentTool:null,toolHistory:[],lastActivity:null}:{currentTool:null,toolHistory:[],lastActivity:null},isConversationProcessing:e=>t=>!!e.processingConversations[t],isConversationConnecting:e=>t=>t?!!e.conversations.find(n=>n.id===t)?.connecting:!1,isConversationCompacting:e=>t=>t?e.compactStatus?.conversationId===t&&e.compactStatus?.status==="compacting":!1,isYeaftSessionProcessing:e=>(t,s=null)=>Bp(e,t,s),isSessionHistorySyncing:e=>t=>{let s=t?.sessionId||null;return s?t.runtimeProvider==="yeaft"?!!e.yeaftSessionHistoryState?.[Pe(t.agentId||null,s)]?.loading:!!e.chatHistoryRequests?.[Vs(s)]?.loading:!1},isYeaftSessionUnread:e=>(t,s=null)=>{if(!t)return!1;let n=Me(e,t,s);return n?!!e.yeaftUnreadSessionKeys?.[Tr(n,t)]:!1},showRecoveryBanner:e=>e.pendingRecovery&&!e.recoveryDismissed&&!e.currentConversation,currentSubagents:e=>{if(!e.currentConversation)return Qe;let t=e.subagents[e.currentConversation];return t?Object.values(t):Qe},hasRunningSubagents:e=>{if(!e.currentConversation)return!1;let t=e.subagents[e.currentConversation];return t?Object.values(t).some(s=>s.status==="running"):!1},runningSubagentCount:e=>{if(!e.currentConversation)return 0;let t=e.subagents[e.currentConversation];return t?Object.values(t).filter(s=>s.status==="running").length:0},activeSubagentMessages:e=>{if(!e.currentConversation||!e.activeSubagentId)return Qe;let t=e.subagents[e.currentConversation];if(!t)return Qe;let s=t[e.activeSubagentId];return(Array.isArray(s?.messages)?s.messages:Qe).filter(r=>r?.type==="text")},selectedTaskInfo:()=>null,currentMcpServers:e=>e.currentConversation&&e.conversationMcpServers[e.currentConversation]||Qe},actions:{activateChatView({persistPreference:e=!1}={}){let t=this._pendingChatRestoreConversationId;this._pendingChatRestoreConversationId=null;let s=t?this.conversations.find(o=>o.id===t):null,n=s?.agentId?this.agents.find(o=>o.id===s.agentId&&o.online):null;!this._savedChatIdentity&&s&&n&&(this._savedChatIdentity={agentId:n.id,agentInfo:{...n},workDir:s.workDir||n.workDir||null}),this.currentView="chat",e&&cl("chat");let r=this._savedChatIdentity||null,i=this.pendingAgentSelection&&this.pendingAgentSelection.agentId!==r?.agentId;r?.agentId&&(this.currentAgent!==r.agentId||i)&&this.selectAgent(r.agentId),vp(this),t&&s&&n&&(this.autoRestoreConversation(t),this.sendWsMessage({type:"refresh_conversation",conversationId:t}))},enterWorkCenter(e=null){if(!this.hydrateWorkCenterBrowserState())return!1;let t=this.agents.filter(n=>n?.online&&Array.isArray(n.capabilities)&&n.capabilities.includes("work_center")),s=t.some(n=>n.id===e)?e:t[0]?.id||null;if(!s)return this.workCenterOpen=!1,this.workCenterAgentId=null,!1;if(this.currentAgent!==s){this.selectAgent(s),this.currentAgent=s;let n=this.agents.find(r=>r.id===s);n&&(this.currentAgentInfo=n)}return this.workCenterAgentId=s,this.workCenterOpen=!0,this.listWorkItems(s).catch(()=>{}),!0},leaveWorkCenter(){this.workCenterOpen=!1},openPluginCenter(e=null){let t=this.agents.find(s=>s?.online&&s.id===e)||this.agents.find(s=>s?.online&&s.id===this.currentAgent)||this.agents.find(s=>s?.online)||null;return t?(this.pluginCenterAgentId=t.id,this.pluginCenterOpen=!0,!0):!1},closePluginCenter(){this.pluginCenterOpen=!1},pluginCatalogKey(e,t=""){return`${e||""}${String(t||"").trim()}`},loadPluginConfig(e=this.pluginCenterAgentId||this.currentAgent){if(!e)return Promise.resolve({plugins:{},error:"no agent"});let t=this.agents.find(n=>n?.id===e);if(!On(t))return Promise.resolve({plugins:{},error:"The selected Agent does not support Plugins; upgrade and restart the Agent"});let s=`plugins-get-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(n=>{let r=setTimeout(()=>{this._pluginPending?.[s]&&(delete this._pluginPending[s],n({plugins:{},error:"timeout"}))},1e4);this._pluginPending[s]={resolve:n,timer:r,kind:"config",agentId:e},this.sendWsMessage({type:"get_yeaft_plugins",agentId:e,requestId:s})})},savePluginConfig(e,t=this.pluginCenterAgentId||this.currentAgent){if(!t)return Promise.resolve({plugins:{},error:"no agent"});let s=this.agents.find(r=>r?.id===t);if(!On(s))return Promise.resolve({plugins:{},error:"The selected Agent does not support Plugins; upgrade and restart the Agent"});let n=`plugins-save-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(r=>{let i=setTimeout(()=>{this._pluginPending?.[n]&&(delete this._pluginPending[n],r({plugins:{},error:"timeout"}))},1e4);this._pluginPending[n]={resolve:r,timer:i,kind:"save",agentId:t},this.sendWsMessage({type:"update_yeaft_plugins",agentId:t,requestId:n,plugins:e})})},activePluginSession(){let e=this.yeaftActiveSessionFilter||ns()?.activeSessionId||null;if(!e)return{sessionId:"",workDir:""};let t=Me(this,e),s=ns()?.sessionById?.(e,t)||null;return{sessionId:e,agentId:s?.agentId||t||"",workDir:typeof s?.workDir=="string"?s.workDir.trim():""}},managedSkillRequestKey(e,t,s){return`${e||""}${t||""}${s||""}`},mutateManagedSkill({action:e,scope:t,skill:s,name:n,sessionId:r=""}={},i=this.pluginCenterAgentId||this.currentAgent){if(!i)return Promise.resolve({catalog:{tools:[],skills:[],skillSources:[],mcpServers:[]},error:"no agent"});let o=this.agents.find(c=>c?.id===i);if(!Fi(o))return Promise.resolve({catalog:{tools:[],skills:[],skillSources:[],mcpServers:[]},error:"The selected Agent does not support Skill management; upgrade and restart the Agent"});let a=`managed-skill-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,l=this.managedSkillRequestKey(i,t,r);return this.managedSkillRequestByKey={...this.managedSkillRequestByKey,[l]:a},new Promise(c=>{let d=setTimeout(()=>{this._pluginPending?.[a]&&(delete this._pluginPending[a],c({catalog:{tools:[],skills:[],skillSources:[],mcpServers:[]},error:"timeout"}))},1e4);this._pluginPending[a]={resolve:c,timer:d,kind:"managed-skill",agentId:i,key:l,workDir:t==="project"&&this.activePluginSession().workDir||""},this.sendWsMessage({type:"yeaft_managed_skill",agentId:i,requestId:a,action:e,scope:t,...r?{sessionId:r}:{},...s?{skill:s}:{},...n?{name:n}:{}})})},loadPluginCatalog(e=this.pluginCenterAgentId||this.currentAgent,t=""){if(!e)return Promise.resolve({catalog:{tools:[],skills:[],mcpServers:[]},error:"no agent"});let s=this.agents.find(i=>i?.id===e);if(!On(s))return Promise.resolve({catalog:{tools:[],skills:[],mcpServers:[]},error:"The selected Agent does not support Plugins; upgrade and restart the Agent"});let n=this.pluginCatalogKey(e,t),r=`plugins-catalog-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return this.pluginCatalogRequestByKey={...this.pluginCatalogRequestByKey,[n]:r},this.pluginCatalogByKey={...this.pluginCatalogByKey,[n]:{...this.pluginCatalogByKey[n]||{},loading:!0,error:null}},new Promise(i=>{let o=setTimeout(()=>{this._pluginPending?.[r]&&(delete this._pluginPending[r],this.pluginCatalogRequestByKey?.[n]===r&&(this.pluginCatalogByKey={...this.pluginCatalogByKey,[n]:{...this.pluginCatalogByKey[n]||{},loading:!1,error:"timeout"}}),i({catalog:{tools:[],skills:[],mcpServers:[]},error:"timeout"}))},1e4);this._pluginPending[r]={resolve:i,timer:o,kind:"catalog",agentId:e,key:n},this.sendWsMessage({type:"yeaft_plugin_catalog",agentId:e,requestId:r,workDir:String(t||"").trim()})})},enterWorkCenterFromSession(e,t=""){if(!e?.id)return;let s=e.agentId||Me(this,e.id),n=String(t||e.title||e.name||"").trim();this.workCenterCreateDraft={sourceAgentId:s,requirement:n,workDir:String(e.workDir||"").trim(),origin:{sessionId:e.id,messageId:null,createdBy:"user"},linkedSessionIds:[e.id]},this.enterWorkCenter(s)},hydrateWorkCenterBrowserState(){this._workCenterBrowserUnsubscribe||(this._workCenterBrowserUnsubscribe=pd(()=>{Cr(this._workCenterBrowserFence)||this.clearWorkCenterBrowserState()}));let e=Oi();if(!e)return this._workCenterBrowserFence=null,this.workCenterComposerDrafts={},this.workCenterMessageOutbox={},!1;if(!Cr(this._workCenterBrowserFence)){let t=ud(e);this._workCenterBrowserFence=e,this.workCenterComposerDrafts=t.drafts,this.workCenterMessageOutbox=t.outbox}return!0},clearWorkCenterBrowserState(){this._workCenterBrowserFence=null,this.workCenterComposerDrafts={},this.workCenterMessageOutbox={}},workCenterComposerKey(e,t){return ks(e,t)},saveWorkCenterComposerDraft(e,t,s={}){let n=ks(e,t);if(!e||!t)return;let r=It(s.quote),i={...this.workCenterComposerDrafts||{},[n]:{text:String(s.text||""),...r?{quote:r}:{},attachments:Array.isArray(s.attachments)?s.attachments:[],target:_b(s.target),error:String(s.error||"")}};return xa(i,this._workCenterBrowserFence)?(this.workCenterComposerDrafts=i,!0):!1},loadWorkCenterComposerDraft(e,t){return this.workCenterComposerDrafts?.[ks(e,t)]||null},removeWorkCenterComposerDraft(e,t){let s=ks(e,t),n={...this.workCenterComposerDrafts||{}};return delete n[s],xa(n,this._workCenterBrowserFence)?(this.workCenterComposerDrafts=n,!0):!1},prepareWorkCenterMessageEnvelope(e={}){let t=Eb(e),s=ks(t.agentId,t.workItemId),n=this.workCenterMessageOutbox?.[s]||null;if(n)return n;let r={...t,clientMessageId:globalThis.crypto?.randomUUID?.()||`${Date.now()}-${Math.random()}`,createdAt:Date.now()},i={...this.workCenterMessageOutbox||{},[s]:r};return Ar(i,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=i,r):null},loadWorkCenterMessageEnvelope(e,t){return this.workCenterMessageOutbox?.[ks(e,t)]||null},replaceWorkCenterMessageEnvelopeAttachments(e,t,s=[]){let n=ks(e,t),r=this.workCenterMessageOutbox?.[n];if(!r)return null;let i={...r,attachments:Array.isArray(s)?s.map(a=>({fileId:a?.fileId||"",name:a?.name||"",mimeType:a?.mimeType||"",size:Math.max(0,Number(a?.size)||0)})):[]},o={...this.workCenterMessageOutbox||{},[n]:i};return Ar(o,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=o,i):null},discardWorkCenterMessageEnvelope(e,t){let s=ks(e,t),n={...this.workCenterMessageOutbox||{}};return delete n[s],Ar(n,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=n,!0):!1},confirmWorkCenterMessageEnvelope(e,t,s){let n=ks(e,t),r=this.workCenterMessageOutbox?.[n];if(!r||r.clientMessageId!==s)return!1;let i={...this.workCenterMessageOutbox||{}};return delete i[n],Ar(i,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=i,this.removeWorkCenterComposerDraft(e,t),!0):!1},workCenterRequest(e,t={},s=null){let n=s||this.workCenterAgentId||this.currentAgent;if(!n)return Promise.reject(new Error("No Agent selected"));let r=`work-center-${Date.now()}-${Math.random().toString(36).slice(2)}`;return new Promise((i,o)=>{let a=setTimeout(()=>{delete this.workCenterPending[r],o(new Error("Work Center request timed out"))},3e4);this.workCenterPending[r]={resolve:i,reject:o,timer:a,agentId:n,op:e,clientMessageId:typeof t.clientMessageId=="string"?t.clientMessageId:null},this.sendWsMessage({type:"work_center_request",agentId:n,requestId:r,op:e,payload:t})})},workItemMatchesBoardQuery(e,t={}){if(!e||t.lane&&e.boardLane!==t.lane||t.vpId&&!(e.executors||[]).some(n=>n?.id===t.vpId)||t.workItemType&&e.workItemType!==t.workItemType||t.updatedFrom&&Number(e.updatedAt)<Number(t.updatedFrom)||t.updatedTo&&Number(e.updatedAt)>Number(t.updatedTo))return!1;let s=String(t.keyword||"").trim().toLowerCase();return!s||String(e.title||"").toLowerCase().includes(s)||String(e.goal||"").toLowerCase().includes(s)},applyWorkItemBoardSummary(e,t,s={}){let n=no(e,t),r=n.find(i=>i?.id===t?.id)||null;return!r||this.workItemMatchesBoardQuery(r,s)?n:n.filter(i=>i.id!==r.id)},async listWorkItems(e=null,t={}){let s=e||this.workCenterAgentId||this.currentAgent;if(!s)return[];let n={lane:["needs_attention","active","closed"].includes(t.lane)?t.lane:null,keyword:String(t.keyword||t.search||"").trim(),vpId:String(t.vpId||"").trim(),workItemType:String(t.workItemType||"").trim(),createdFrom:Number(t.createdFrom)||null,createdTo:Number(t.createdTo)||null,updatedFrom:Number(t.updatedFrom)||null,updatedTo:Number(t.updatedTo)||null,limit:Math.min(Math.max(Number(t.limit)||100,1),200)},r=JSON.stringify(n),i=Number(this._workCenterListGenerationByAgent[s]||0)+1,o=Number(this._workCenterListEventGenerationByAgent[s]||0);this._workCenterListGenerationByAgent={...this._workCenterListGenerationByAgent,[s]:i},this._workCenterListQueryByAgent={...this._workCenterListQueryByAgent,[s]:r},this._workCenterListFiltersByAgent={...this._workCenterListFiltersByAgent,[s]:n},this.workCenterLoadingByAgent={...this.workCenterLoadingByAgent,[s]:!0},this.workCenterErrorByAgent={...this.workCenterErrorByAgent,[s]:null};try{let a=await this.workCenterRequest("list",n,s),l=(Array.isArray(a?.items)?a.items:[]).filter(d=>!this.workItemDeleted(s,d?.id));if(this._workCenterListGenerationByAgent[s]===i&&this._workCenterListQueryByAgent[s]===r&&this.workCenterAgentId===s){let d=l,u=this._workCenterListEventsByAgent[s]||{};for(let p of Object.values(u))Number(p?.generation)<=o||p?.queryKey!==r||(d=this.applyWorkItemBoardSummary(d,p.summary,n));this.workCenterItemsByAgent={...this.workCenterItemsByAgent,[s]:d},this.workCenterListPageByAgent={...this.workCenterListPageByAgent,[s]:{nextCursor:a?.nextCursor||null,queryKey:r}},this.workCenterWatcherByAgent={...this.workCenterWatcherByAgent,[s]:a?.watcher||null},this.workCenterLoadedByAgent={...this.workCenterLoadedByAgent,[s]:!0}}return l}catch(a){throw this._workCenterListGenerationByAgent[s]===i&&this._workCenterListQueryByAgent[s]===r&&(this.workCenterErrorByAgent={...this.workCenterErrorByAgent,[s]:a?.message||String(a)}),a}finally{this._workCenterListGenerationByAgent[s]===i&&this._workCenterListQueryByAgent[s]===r&&(this.workCenterLoadingByAgent={...this.workCenterLoadingByAgent,[s]:!1})}},async loadMoreWorkItems(e=null){let t=e||this.workCenterAgentId||this.currentAgent,s=this.workCenterListPageByAgent[t],n=this._workCenterListFiltersByAgent[t];if(!t||!s?.nextCursor||!n)return[];let r=s.queryKey,i=this._workCenterListGenerationByAgent[t],o=Number(this._workCenterListEventGenerationByAgent[t]||0),a=s.nextCursor,l=`${i}:${r}:${a}`;if(this._workCenterListMoreRequestsByAgent[t]?.key===l)return this._workCenterListMoreRequestsByAgent[t].request;this.workCenterListMoreLoadingByAgent={...this.workCenterListMoreLoadingByAgent,[t]:!0};let c=(async()=>{try{let d=await this.workCenterRequest("list",{...n,cursor:a},t),u=this.workCenterListPageByAgent[t];if(this._workCenterListGenerationByAgent[t]!==i||this._workCenterListQueryByAgent[t]!==r||u?.queryKey!==r||u?.nextCursor!==a||this.workCenterAgentId!==t)return[];let p=[...this.workCenterItemsByAgent[t]||[]];for(let g of Array.isArray(d?.items)?d.items:[]){if(this.workItemDeleted(t,g?.id))continue;let v=p.findIndex(m=>m.id===g.id);v<0?p.push(g):p[v]=no([p[v]],g)[0]}let f=this._workCenterListEventsByAgent[t]||{};for(let g of Object.values(f))Number(g?.generation)<=o||g?.queryKey!==r||(p=this.applyWorkItemBoardSummary(p,g.summary,n));return this.workCenterItemsByAgent={...this.workCenterItemsByAgent,[t]:p},this.workCenterListPageByAgent={...this.workCenterListPageByAgent,[t]:{nextCursor:d?.nextCursor||null,queryKey:r}},d?.items||[]}finally{if(this._workCenterListMoreRequestsByAgent[t]?.key===l){let d={...this._workCenterListMoreRequestsByAgent};delete d[t],this._workCenterListMoreRequestsByAgent=d,this.workCenterListMoreLoadingByAgent={...this.workCenterListMoreLoadingByAgent,[t]:!1}}}})();return this._workCenterListMoreRequestsByAgent={...this._workCenterListMoreRequestsByAgent,[t]:{key:l,request:c}},c},workItemDeleted(e,t){return!!this._workCenterDeletedIdsByAgent[e]?.[t]},removeWorkItemState(e,t){this._workCenterDeletedIdsByAgent={...this._workCenterDeletedIdsByAgent,[e]:{...this._workCenterDeletedIdsByAgent[e]||{},[t]:!0}},this.beginWorkCenterDetailWrite(e),this.workCenterItemsByAgent={...this.workCenterItemsByAgent,[e]:(this.workCenterItemsByAgent[e]||[]).filter(n=>n.id!==t)},this.workCenterDetailByAgent[e]?.id===t&&(this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[e]:null});let s=`${e}:${t}:`;for(let n of["workCenterActionMessages","workCenterActionMessagesLoading","workCenterActionMessagesError","workCenterActionRequests","workCenterActionRequestsLoading","workCenterActionRequestsError","workCenterActionRequestDetails","workCenterActionRequestDetailsLoading","workCenterActionRequestDetailsError","_workCenterActionMessageRequests","_workCenterActionMessageGenerationByKey","_workCenterActionRequestsGeneration","_workCenterActionRequestDetailsGeneration"]){let r={};for(let[i,o]of Object.entries(this[n]||{}))i.startsWith(s)||(r[i]=o);this[n]=r}},beginWorkCenterDetailWrite(e){let t=Number(this._workCenterDetailRequestGenerationByAgent[e]||0)+1;return this._workCenterDetailRequestGenerationByAgent={...this._workCenterDetailRequestGenerationByAgent,[e]:t},t},commitWorkCenterDetail(e,t,s){if(t?.id&&this.workItemDeleted(e,t.id)||s!=null&&Number(this._workCenterDetailRequestGenerationByAgent[e]||0)!==s)return!1;let n=this.workCenterDetailByAgent[e];return n?.id===t?.id&&Ep(t,n)?!1:(this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[e]:t},!0)},async getWorkItem(e,t=null){let s=t||this.workCenterAgentId||this.currentAgent,n=this.beginWorkCenterDetailWrite(s),r=await this.workCenterRequest("get",{id:e},s);return this.commitWorkCenterDetail(s,r,n),this.workCenterDetailByAgent[s]||r},invalidateWorkItemActionMessages(e,t,s,n){if(!e||!t||!s)return null;let r=Vt(n),i=Gn(e,t,s,r);this._workCenterActionMessageGenerationByKey={...this._workCenterActionMessageGenerationByKey,[i]:Number(this._workCenterActionMessageGenerationByKey[i]||0)+1};for(let a of["workCenterActionMessages","workCenterActionMessagesLoading","workCenterActionMessagesError"]){let l={...this[a]};delete l[i],this[a]=l}let o={...this._workCenterActionMessageRequests};for(let a of Object.keys(o))a.startsWith(`${i}:`)&&delete o[a];return this._workCenterActionMessageRequests=o,i},async loadWorkItemActionMessages(e,t,s,n,r=null){let i=r||this.workCenterAgentId||this.currentAgent,o=Vt(s),a=Gn(i,e,t,o),l=Number(this._workCenterActionMessageGenerationByKey[a]||0),c=`${a}:${n==null?"latest":String(n)}`;if(this._workCenterActionMessageRequests[c])return this._workCenterActionMessageRequests[c];this.workCenterActionMessagesLoading={...this.workCenterActionMessagesLoading,[a]:!0},this.workCenterActionMessagesError={...this.workCenterActionMessagesError,[a]:null};let d=(async()=>{try{let u=await this.workCenterRequest("get_action_messages",{id:e,actionId:t,generation:o,cursor:n,limit:20},i);if(this.workItemDeleted(i,e)||Vt(u?.generation)!==o||Number(this._workCenterActionMessageGenerationByKey[a]||0)!==l)return u;let p=this.workCenterActionMessages[a]?.messages||[],f=Yr(p,u?.messages||[]),g=this.workCenterActionMessages[a],v=g?.nextCursor,m=n==null?null:Number(n),b=v==null?null:Number(v),h=!g||m==null||b!=null&&m===b;return this.workCenterActionMessages={...this.workCenterActionMessages,[a]:{generation:o,messages:f,nextCursor:h?u?.nextCursor??null:v,total:Math.max(Number(u?.total)||0,Number(g?.total)||0,f.length)}},u}catch(u){throw Number(this._workCenterActionMessageGenerationByKey[a]||0)===l&&(this.workCenterActionMessagesError={...this.workCenterActionMessagesError,[a]:u?.message||String(u)}),u}finally{if(this._workCenterActionMessageRequests[c]===d){let u={...this._workCenterActionMessageRequests};delete u[c],this._workCenterActionMessageRequests=u;let p=Object.keys(u).some(f=>f.startsWith(`${a}:`));this.workCenterActionMessagesLoading={...this.workCenterActionMessagesLoading,[a]:p}}}})();return this._workCenterActionMessageRequests={...this._workCenterActionMessageRequests,[c]:d},d},async loadWorkItemActionRequests(e,t,s,n=null){let r=n||this.workCenterAgentId||this.currentAgent,i=Vt(s),o=pl(r,e,t,i),a=Number(this._workCenterActionRequestsGeneration[o]||0)+1;this._workCenterActionRequestsGeneration={...this._workCenterActionRequestsGeneration,[o]:a},this.workCenterActionRequestsLoading={...this.workCenterActionRequestsLoading,[o]:!0},this.workCenterActionRequestsError={...this.workCenterActionRequestsError,[o]:null};try{let l=await this.workCenterRequest("get_action_requests",{id:e,actionId:t,generation:i},r),c=!this.workItemDeleted(r,e)&&Vt(l?.generation)===i&&this._workCenterActionRequestsGeneration[o]===a;return c&&(this.workCenterActionRequests={...this.workCenterActionRequests,[o]:l?.requests||[]}),c?l?.requests||[]:this.workCenterActionRequests[o]||[]}catch(l){throw this._workCenterActionRequestsGeneration[o]===a&&(this.workCenterActionRequestsError={...this.workCenterActionRequestsError,[o]:l?.message||String(l)}),l}finally{this._workCenterActionRequestsGeneration[o]===a&&(this.workCenterActionRequestsLoading={...this.workCenterActionRequestsLoading,[o]:!1})}},async loadWorkItemActionRequest(e,t,s,n,r,i=null){let o=i||this.workCenterAgentId||this.currentAgent,a=Vt(s),c=`${pl(o,e,t,a)}:${n}:${r}`,d=Number(this._workCenterActionRequestDetailsGeneration[c]||0)+1;this._workCenterActionRequestDetailsGeneration={...this._workCenterActionRequestDetailsGeneration,[c]:d},this.workCenterActionRequestDetailsLoading={...this.workCenterActionRequestDetailsLoading,[c]:!0},this.workCenterActionRequestDetailsError={...this.workCenterActionRequestDetailsError,[c]:null};try{let u=await this.workCenterRequest("get_action_request",{id:e,actionId:t,generation:a,runId:n,requestId:r},o),p=!this.workItemDeleted(o,e)&&Vt(u?.generation)===a&&this._workCenterActionRequestDetailsGeneration[c]===d;return p&&(this.workCenterActionRequestDetails={...this.workCenterActionRequestDetails,[c]:u?.request||null}),p?u?.request||null:this.workCenterActionRequestDetails[c]||null}catch(u){throw this._workCenterActionRequestDetailsGeneration[c]===d&&(this.workCenterActionRequestDetailsError={...this.workCenterActionRequestDetailsError,[c]:u?.message||String(u)}),u}finally{this._workCenterActionRequestDetailsGeneration[c]===d&&(this.workCenterActionRequestDetailsLoading={...this.workCenterActionRequestDetailsLoading,[c]:!1})}},async loadWorkCenterSettings(e=null){let t=e||this.workCenterAgentId||this.currentAgent;if(!t)throw new Error("No Agent selected");let s=Number(this._workCenterSettingsGenerationByAgent[t]||0)+1;this._workCenterSettingsGenerationByAgent={...this._workCenterSettingsGenerationByAgent,[t]:s},this.workCenterSettingsLoadingByAgent={...this.workCenterSettingsLoadingByAgent,[t]:!0},this.workCenterSettingsErrorByAgent={...this.workCenterSettingsErrorByAgent,[t]:null};try{let n=await this.workCenterRequest("get_settings",{},t);return this._workCenterSettingsGenerationByAgent[t]===s&&(this.workCenterSettingsByAgent={...this.workCenterSettingsByAgent,[t]:n?.settings||null},this.workCenterRuntimeByAgent={...this.workCenterRuntimeByAgent,[t]:n?.runtime||null}),n}catch(n){throw this._workCenterSettingsGenerationByAgent[t]===s&&(this.workCenterSettingsErrorByAgent={...this.workCenterSettingsErrorByAgent,[t]:n?.message||String(n)}),n}finally{this._workCenterSettingsGenerationByAgent[t]===s&&(this.workCenterSettingsLoadingByAgent={...this.workCenterSettingsLoadingByAgent,[t]:!1})}},async refreshWorkCenterRuntime(e=null){let t=e||this.workCenterAgentId||this.currentAgent;if(!t)throw new Error("No Agent selected");let s=Number(this._workCenterSettingsGenerationByAgent[t]||0)+1;this._workCenterSettingsGenerationByAgent={...this._workCenterSettingsGenerationByAgent,[t]:s},this.workCenterSettingsLoadingByAgent={...this.workCenterSettingsLoadingByAgent,[t]:!0},this.workCenterSettingsErrorByAgent={...this.workCenterSettingsErrorByAgent,[t]:null};try{let n=await this.workCenterRequest("refresh_runtime",{},t);return this._workCenterSettingsGenerationByAgent[t]===s&&(this.workCenterSettingsByAgent={...this.workCenterSettingsByAgent,[t]:n?.settings||null},this.workCenterRuntimeByAgent={...this.workCenterRuntimeByAgent,[t]:n?.runtime||null}),n}catch(n){throw this._workCenterSettingsGenerationByAgent[t]===s&&(this.workCenterSettingsErrorByAgent={...this.workCenterSettingsErrorByAgent,[t]:n?.message||String(n)}),n}finally{this._workCenterSettingsGenerationByAgent[t]===s&&(this.workCenterSettingsLoadingByAgent={...this.workCenterSettingsLoadingByAgent,[t]:!1})}},async saveWorkCenterSettings(e,t=null){let s=t||this.workCenterAgentId||this.currentAgent;if(!s)throw new Error("No Agent selected");let n=Number(this._workCenterSettingsGenerationByAgent[s]||0)+1;this._workCenterSettingsGenerationByAgent={...this._workCenterSettingsGenerationByAgent,[s]:n};let r=await this.workCenterRequest("update_settings",{settings:e},s);return this._workCenterSettingsGenerationByAgent[s]===n&&(this.workCenterSettingsByAgent={...this.workCenterSettingsByAgent,[s]:r?.settings||null},this.workCenterRuntimeByAgent={...this.workCenterRuntimeByAgent,[s]:r?.runtime||null},this.workCenterSettingsErrorByAgent={...this.workCenterSettingsErrorByAgent,[s]:null}),r},previewWorkCenterPlan(e={},t=null){let s=t||this.workCenterAgentId||this.currentAgent;return this.workCenterRequest("preview",e,s)},async createWorkItem(e,t=null){let s=t||this.workCenterAgentId||this.currentAgent,n=this.beginWorkCenterDetailWrite(s),r=await this.workCenterRequest("create",e,s);return await this.listWorkItems(s,this._workCenterListFiltersByAgent[s]||{}),this.commitWorkCenterDetail(s,r,n),r},async updateWorkItem(e,t,s=null){let n=s||this.workCenterAgentId||this.currentAgent,r=this.beginWorkCenterDetailWrite(n),i=await this.workCenterRequest("update",{id:e,patch:t},n);return await this.listWorkItems(n,this._workCenterListFiltersByAgent[n]||{}),this.commitWorkCenterDetail(n,i,r),i},async startWorkItem(e,t=null){let s=t||this.workCenterAgentId||this.currentAgent,n=this.beginWorkCenterDetailWrite(s),r=await this.workCenterRequest("start",{id:e},s);return await this.listWorkItems(s,this._workCenterListFiltersByAgent[s]||{}),this.commitWorkCenterDetail(s,r,n),r},async cancelWorkItem(e,t=null){let s=t||this.workCenterAgentId||this.currentAgent,n=this.beginWorkCenterDetailWrite(s),r=await this.workCenterRequest("cancel",{id:e},s);return await this.listWorkItems(s,this._workCenterListFiltersByAgent[s]||{}),this.commitWorkCenterDetail(s,r,n),r},async resumeWorkItem(e,t,s=null){let n=s||this.workCenterAgentId||this.currentAgent,r=this.beginWorkCenterDetailWrite(n),i=await this.workCenterRequest("resume",{id:e,revision:t},n);return await this.listWorkItems(n,this._workCenterListFiltersByAgent[n]||{}),this.commitWorkCenterDetail(n,i,r),i},async deleteWorkItem(e,t,s=null){let n=s||this.workCenterAgentId||this.currentAgent,r=await this.workCenterRequest("delete",{id:e,revision:t},n);return this.removeWorkItemState(n,e),r},async postWorkItemMessage(e,t,s,n,r=[],i=null,o={},a=null){if(!this.hydrateWorkCenterBrowserState())throw new Error("Work Center browser owner is unavailable; sign in again and retry");let l=i||this.workCenterAgentId||this.currentAgent,c=this.prepareWorkCenterMessageEnvelope({agentId:l,workItemId:e,target:s,text:t,quote:a,attachments:r,revision:n,planRevision:o.planRevision,ledgerRevision:o.ledgerRevision,coordinatorRevision:o.coordinatorRevision});if(!c)throw new Error("Work Center browser owner changed; reopen Work Center and try again");let d=c.clientMessageId,u=this.workCenterDetailByAgent[l]?.id===e?this.workCenterDetailByAgent[l]:null,p=await this.workCenterRequest("post_work_item_message",{id:c.workItemId,clientMessageId:d,text:c.text,target:c.target,revision:c.revision,planRevision:c.planRevision||Number(u?.planRevision)||0,ledgerRevision:c.ledgerRevision||Number(u?.ledgerRevision)||0,coordinatorRevision:Number.isInteger(Number(c.coordinatorRevision))?Number(c.coordinatorRevision):Number(u?.coordinatorRevision)||0,...c.quote?{quote:c.quote}:{},attachments:c.attachments},l);if(c.target.kind==="coordinator"){if(!p?.accepted)throw new Error("Work Center Coordinator did not accept the message");return this.confirmWorkCenterMessageEnvelope(l,e,d),p}return await this.listWorkItems(l,this._workCenterListFiltersByAgent[l]||{}),this.confirmWorkCenterMessageEnvelope(l,e,d),p},async sendWorkItemMessage(e,t,s,n=[],r=null,i={},o=null){let a=r||this.workCenterAgentId||this.currentAgent,l=this.workCenterDetailByAgent[a]?.id===e?this.workCenterDetailByAgent[a]:null,c=await this.workCenterRequest("work_item_message",{id:e,text:t,revision:s,planRevision:Number.isInteger(Number(i.planRevision))?Number(i.planRevision):Number(l?.planRevision)||0,ledgerRevision:Number.isInteger(Number(i.ledgerRevision))?Number(i.ledgerRevision):Number(l?.ledgerRevision)||0,coordinatorRevision:Number.isInteger(Number(i.coordinatorRevision))?Number(i.coordinatorRevision):Number(l?.coordinatorRevision)||0,...It(o)?{quote:It(o)}:{},attachments:Array.isArray(n)?n:[]},a);if(!c?.accepted)throw new Error("Work Center Coordinator did not accept the message");return c},async retryWorkItemAction(e,t,s,n,r=null){let i=r||this.workCenterAgentId||this.currentAgent,o=this.beginWorkCenterDetailWrite(i),a=await this.workCenterRequest("retry_action",{id:e,actionId:t,revision:s,generation:n},i);return await this.listWorkItems(i,this._workCenterListFiltersByAgent[i]||{}),this.commitWorkCenterDetail(i,a,o),a},async sendWorkItemActionInput(e,t,s,n,r,i=[],o=null,a=null){let l=o||this.workCenterAgentId||this.currentAgent,c=Number(this._workCenterActionInputGenerationByAgent[l]||0)+1;this._workCenterActionInputGenerationByAgent={...this._workCenterActionInputGenerationByAgent,[l]:c};let d=It(a),u=await this.workCenterRequest("action_input",{id:e,text:t,actionId:s,revision:n,generation:r,attachments:i,...d?{quote:d}:{}},l);await this.listWorkItems(l,this._workCenterListFiltersByAgent[l]||{});let p=this.workCenterDetailByAgent[l],f=p?.actions?.find(v=>v?.id===s),g=p?.id===e&&Number(p.revision)===Number(n)&&f&&Number(f.generation)===Number(r);return this._workCenterActionInputGenerationByAgent[l]===c&&g&&!Tp(u,p)?(this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[l]:u},u):p?.id===e?p:u},async guideWorkItemAction(e,t,s,n,r,i=[],o=null){let a=o||this.workCenterAgentId||this.currentAgent,l=this.beginWorkCenterDetailWrite(a),c=await this.workCenterRequest("guide",{id:e,guidance:t,actionId:s,revision:n,generation:r,attachments:i},a);return await this.listWorkItems(a,this._workCenterListFiltersByAgent[a]||{}),this.commitWorkCenterDetail(a,c,l),c},previewWorkItemAttachment(e,t,s=null){let n=s||this.workCenterAgentId||this.currentAgent;return this.workCenterRequest("preview_attachment",{id:e,attachmentId:t},n)},applyWorkCenterEvent(e,t){if(!e||!t?.workItem)return;let s=t.workItem;if(t.clientMessageId){this.confirmWorkCenterMessageEnvelope(e,s.id,t.clientMessageId);let u=Object.entries(this.workCenterPending||{}).find(([,p])=>p?.agentId===e&&p.clientMessageId===t.clientMessageId);if(u){let[p,f]=u;clearTimeout(f.timer),delete this.workCenterPending[p],f.resolve(t.type==="coordinator.turn_started"?{accepted:!0,turnId:null,receipt:!0}:t.workItem)}}let n=this.workCenterItemsByAgent[e]||[];if(t.type==="work_item.deleted"){this.removeWorkItemState(e,s.id);return}if(this.workItemDeleted(e,s.id))return;let r=this._workCenterListFiltersByAgent[e]||{},i=this._workCenterListEventsByAgent[e]?.[s.id]?.summary||null,o=n.some(u=>u?.id===s.id)?n:i?[i]:[],a=no(o,s).find(u=>u?.id===s.id)||s,l=Number(this._workCenterListEventGenerationByAgent[e]||0)+1;this._workCenterListEventGenerationByAgent={...this._workCenterListEventGenerationByAgent,[e]:l},this._workCenterListEventsByAgent={...this._workCenterListEventsByAgent,[e]:{...this._workCenterListEventsByAgent[e]||{},[s.id]:{generation:l,queryKey:this._workCenterListQueryByAgent[e]||null,summary:a}}};let c=this.applyWorkItemBoardSummary(n,a,r);this.workCenterItemsByAgent={...this.workCenterItemsByAgent,[e]:c};let d=this.workCenterDetailByAgent[e];if(d?.id===s.id){let u=t.type==="run.finished"&&t.actionId&&Array.isArray(s.actionStats)&&s.actionStats.some(b=>b?.id===t.actionId)?{...s,eventActionId:t.actionId}:s,p=gl(d,u),f=Number(s.coordinatorRevision),g=Number(d.coordinatorRevision)||0,v=Number.isInteger(f)&&f>g,m=Mp(d,u);this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[e]:Pp(d,s)},m&&this.refreshWorkItemDetailAfterActionChange(e,s,v?null:p)}},async refreshWorkItemDetailAfterActionChange(e,t,s=null){let n=s?(Array.isArray(t.actionStats)?t.actionStats:[]).find(v=>v?.id===s.actionId):(Array.isArray(t.actionStats)?t.actionStats:[]).find(v=>v?.id===t.currentActionId)||t.currentAction,r=s?.actionId||t.currentActionId||null,i=Number(s?.generation??n?.generation),o=Number.isInteger(i)&&i>0?i:null,a=Number(t.coordinatorRevision),l=!s&&Number.isInteger(a)&&a>=0?a:null,c=Number(s?.attempt),d=Number.isInteger(c)&&c>=0?c:null,u=l!=null?`${t.id}:coordinator:${l}`:`${t.id}:${r}${o==null?"":`:${o}`}${d==null?"":`:${d}`}`;if(this._workCenterDetailEventRefreshByAgent[e]?.key===u)return;let p=this.beginWorkCenterDetailWrite(e),f={key:u,generation:p};this._workCenterDetailEventRefreshByAgent={...this._workCenterDetailEventRefreshByAgent,[e]:f},s&&this.invalidateWorkItemActionMessages(e,t.id,s.actionId,s.generation);let g=r&&o!=null?this.loadWorkItemActionMessages(t.id,r,o,null,e).catch(()=>null):null;try{let v=await this.workCenterRequest("get",{id:t.id},e),m=this.workCenterDetailByAgent[e],b=m?.actions?.find(_=>_?.id===r),h=v?.actions?.find(_=>_?.id===r),w=o==null||Vt(b?.generation)===o,I=o==null||Vt(h?.generation)>=o,y=l==null||Number(v?.coordinatorRevision)===l,k=l!=null||w&&I&&(t.currentActionId==null?v?.currentActionId==null:m?.currentActionId===t.currentActionId&&v?.currentActionId===t.currentActionId);m?.id===t.id&&y&&k&&this.commitWorkCenterDetail(e,v,p)&&g&&await g}catch{}finally{if(this._workCenterDetailEventRefreshByAgent[e]===f){let v={...this._workCenterDetailEventRefreshByAgent};delete v[e],this._workCenterDetailEventRefreshByAgent=v}}},cacheYeaftAgentStatus(e,t,{allowBootstrapCatalog:s=!1}={}){if(!e||!t)return;let n=this.yeaftStatusByAgent[e]||{},r=Number(n.catalogRevision)||0,i=Number(t.catalogRevision)||0,o=typeof n.catalogEpoch=="string"?n.catalogEpoch:"",a=typeof t.catalogEpoch=="string"?t.catalogEpoch:"",l=Number(n.catalogRefreshedAt)||0,c=Number(t.catalogRefreshedAt)||0,d=Array.isArray(t.availableModels),u=t.type==="yeaft_status"&&d&&(i>0||c>0),p=Array.isArray(this._yeaftRetiredCatalogEpochsByAgent?.[e])?this._yeaftRetiredCatalogEpochsByAgent[e]:[],f=!!a&&p.includes(a),g=!!a&&a===o,v=i>0?g&&i===r:c>0&&c===l,m=i>0?!!a&&(a!==o||i>r):r===0&&c>l,b=i>0?!!t.catalogDigest&&!!n.catalogDigest&&t.catalogDigest===n.catalogDigest:t.catalogDigest===n.catalogDigest,h=u&&!f&&(m||v&&b),I=h||s&&r===0&&l===0&&!u&&d,y={...t};if(!I)for(let _ of Mb)delete y[_];let k={...n,...y};if(I){if(h&&o&&a&&o!==a){let _=[...p.filter(A=>A!==o),o].slice(-Pb);this._yeaftRetiredCatalogEpochsByAgent={...this._yeaftRetiredCatalogEpochsByAgent||{},[e]:_}}k.availableModels=t.availableModels,k.catalogRefreshedAt=h?c:null,k.catalogEpoch=h&&a||null,k.catalogRevision=h&&i||null,k.catalogDigest=h&&t.catalogDigest||null}this.yeaftStatusByAgent={...this.yeaftStatusByAgent,[e]:k},this.currentAgent===e&&this.applyCachedYeaftStatus(e)},applyCachedYeaftStatus(e=this.currentAgent){let t=e?this.yeaftStatusByAgent[e]:null;return t?(this.yeaftModel=t.model||null,this.yeaftModelEffort=t.modelEffort||null,this.yeaftAvailableModels=Array.isArray(t.availableModels)?t.availableModels:[],this.yeaftModelsRefreshing=!!t.refreshing,this.yeaftModelRefreshError=t.refreshError||null,this.yeaftYeaftDir=t.yeaftDir||null,this.yeaftStatus={skills:t.skills,mcpServers:t.mcpServers,tools:t.tools,multiVp:!!t.multiVp},!0):!1},activateYeaftAgentCatalog(e,t=this.currentAgent){let s=e?this.yeaftStatusByAgent[e]:null;return s&&this.applyCachedYeaftStatus(e),Array.isArray(s?.availableModels)?!0:(this.yeaftModel=null,this.yeaftModelEffort=null,this.yeaftAvailableModels=[],s||(this.yeaftStatus=null),this.yeaftModelsRefreshing=!!e&&!s?.refreshError,this.yeaftModelRefreshError=s?.refreshError||null,t!==e&&(this.yeaftYeaftDir=null),!1)},activateYeaftAgent(e,t=null){if(!e)return!1;let s=this.currentAgent;return this.currentAgent=e,t&&(this.currentAgentInfo=t),this.activateYeaftAgentCatalog(e,s)},resolveYeaftSessionAgentId(e){return Me(this,e)},requestYeaftSessionInventory(){if(this.yeaftSessionInventoryCompleteSupported===!1&&this.yeaftSessionHydrateRequestId)return this.yeaftSessionHydrateRequestId;if(this._yeaftSessionInventorySocketQuarantined)return this.manualReconnect(),null;clearTimeout(this._legacyYeaftSessionHydrateTimer),this._legacyYeaftSessionHydrateTimer=null;let e=`session_inventory_${crypto.randomUUID()}`;this.yeaftSessionHydrateRequestId=e,this.yeaftSessionHydrateSlices=[],this._hasHandledAgentList=!1,this._hasHandledYeaftSessionHydrate=!1,this.yeaftSessionHydrateError=null;let t=this.conversations.map(n=>n.id).filter(Boolean);return this.sendWsMessage({type:"get_agents",requestId:e,conversationIds:t.length>0?t:void 0})?(setTimeout(()=>{this.yeaftSessionHydrateRequestId===e&&(this.yeaftSessionHydrateRequestId=null,this.yeaftSessionHydrateSlices=[],this.yeaftSessionHydrateError="session_inventory_timeout",this.yeaftSessionInventoryCompleteSupported!==!0&&(this._yeaftSessionInventorySocketQuarantined=!0))},xb),e):(this.yeaftSessionHydrateRequestId=null,this.yeaftSessionHydrateSlices=[],this.yeaftSessionHydrateError="session_inventory_send_failed",null)},beginYeaftHistoryLoad(e){let t=Wd(this,e);if(!t)return null;let{agentId:s,sessionId:n}=e||{};return setTimeout(()=>{$r(this,{agentId:s,sessionId:n,requestId:t.requestId,error:"history_load_timeout"})},Nd),t},finishYeaftHistoryLoad(e,t={},s="chunk"){return jd(this,e,t,s)},isCurrentYeaftHistoryResponse(e){return La(this,e)},syncActiveYeaftHistoryLoad(){return cn(this)},enterYeaft(e=null,{deferBootstrap:t=!1}={}){let s=this.currentAgent;dl(this);let n=Is(this),r=!e&&n?Me(this,n):null,i=e||r||this.currentAgent||null;if(!i){let a=this.agents.find(l=>l.online);a&&(i=a.id)}if(i&&this.currentAgent!==i){this.selectAgent(i),this.currentAgent=i;let a=this.agents.find(l=>l.id===i);a&&(this.currentAgentInfo=a)}if(!this.applyCachedYeaftStatus(i)&&s&&s!==i&&(this.yeaftAvailableModels=[],this.yeaftStatus=null,this.yeaftModelsRefreshing=!0,this.yeaftModelRefreshError=null),i){let a=this.yeaftConversationIdsByAgent?.[i]||null;a||(a=`yeaft-local-${i}-${Date.now()}`,this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[i]:a}),this.yeaftConversationId=a}else this.yeaftConversationId||(this.yeaftConversationId=`yeaft-local-${Date.now()}`);this.messagesMap[this.yeaftConversationId]||(this.messagesMap[this.yeaftConversationId]=[]),mp(this),this.currentView="yeaft",cl("yeaft"),this.hasMoreMessages=!1,this.loadingMoreMessages=!1,this.yeaftHasMoreHistory=!1,this.yeaftLoadingMoreHistory=!1,this.yeaftOldestLoadedSeq=null,this._yeaftReconnectCatchUpPending=!1,this.loadOpenedYeaftSessionsForConnectedAgents(null,{force:!0}),t||this.requestYeaftSessionBootstrap({forceSessionReady:!0,catchUpHistory:!0,forceHistoryReplay:!0})},loadOpenedYeaftSessionsForConnectedAgents(e=null,{force:t=!1}={}){let s=Array.isArray(e)?e.filter(Boolean):Array.isArray(this.agents)?this.agents.filter(i=>i&&i.online&&i.id).map(i=>i.id):[],n=[...new Set(s)];(!this._yeaftOpenedSessionsLoadedAgents||typeof this._yeaftOpenedSessionsLoadedAgents!="object")&&(this._yeaftOpenedSessionsLoadedAgents={});let r=[];for(let i of n)!t&&this._yeaftOpenedSessionsLoadedAgents[i]||(this._yeaftOpenedSessionsLoadedAgents[i]=Date.now(),r.push(i),this.sessionCrudRequest("list",{},{agentId:i}).catch(o=>{delete this._yeaftOpenedSessionsLoadedAgents[i]}));return r},requestYeaftSessionBootstrap({forceSessionReady:e=!1,catchUpHistory:t=!1,forceHistoryReplay:s=!1}={}){if(!this.currentAgent)return;let n=Is(this),r=n?Me(this,n):this.currentAgent,i=Pe(r,n),o=n?this.yeaftSessionHistoryState[i]:null,a=e||!this.yeaftSessionReady||!this.yeaftModel||!this.yeaftStatus,l=Number.isFinite(o?.latestSeq)?o.latestSeq:null,c=!!n&&!!this.yeaftConversationId&&Array.isArray(this.messagesMap?.[this.yeaftConversationId])&&this.messagesMap[this.yeaftConversationId].some(h=>h&&(h.sessionId??h.groupId??null)===n),d=!!n&&su({sessionState:o,hasCachedSessionRows:c,force:!!s}),u=!!n&&!d&&tu(o,t);if(!a&&!d&&!u)return!1;let p=`${r}:${n||"__none__"}`,f=a&&!d&&!u;if(f&&this.yeaftBootstrapMetaLoadingKey===p)return!1;f&&(this.yeaftBootstrapMetaLoadingKey=p);let g=null;n&&d?g=this.beginYeaftHistoryLoad({agentId:r,sessionId:n,mode:"recent",preserveLoaded:!1}):n&&c&&!o?.loaded?(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[i]:{...o||{},loaded:!0,loading:!1,hasMore:!!o?.hasMore,oldestSeq:Number.isFinite(o?.oldestSeq)?o.oldestSeq:null,count:o?.count||0,latestSeq:l}},this.yeaftLoadingMoreHistory=!1):n&&u&&(g=this.beginYeaftHistoryLoad({agentId:r,sessionId:n,mode:"delta",preserveLoaded:!0,latestSeq:l}));let v={type:"yeaft_load_history",agentId:r,sessionId:n,...g?{requestId:g.requestId}:{}};u?v.afterSeq=l:v.limit=d?Sl:0;let m=pn();v.perfTraceId=m;let b=u?"delta":d?"recent":"metadata";return n&&(this.yeaftHistoryPerfTraceBySession={...this.yeaftHistoryPerfTraceBySession||{},[i]:m}),vt(this,{traceId:m,phase:"history.request_send",agentId:r,sessionId:n,messageType:v.type,bytes:JSON.stringify(v).length,detail:{mode:b,limit:v.limit??null,afterSeq:v.afterSeq??null,hasCachedSessionRows:c,needSessionReady:a}}),this.sendWsMessage(v),!0},leaveYeaft(){this.activateChatView({persistPreference:!0})},fetchYeaftToolStats(){this.currentAgent&&(this.yeaftToolStatsLoading=!0,this.sendWsMessage({type:"yeaft_fetch_tool_stats",agentId:this.currentAgent}),this._fetchYeaftToolStatsTimer&&clearTimeout(this._fetchYeaftToolStatsTimer),this._fetchYeaftToolStatsTimer=setTimeout(()=>{this.yeaftToolStatsLoading&&(this.yeaftToolStatsLoading=!1,this.yeaftToolStats={...this.yeaftToolStats||{snapshot:{},registered:[],unused:[]},error:null,notice:"Tool stats are unavailable right now. Try again after the agent reconnects.",fetchedAt:Date.now()}),this._fetchYeaftToolStatsTimer=null},1e4))},loadYeaftDebugHistory({groupId:e,limit:t,dreamLimit:s,indexOnly:n=!1,detailTurnId:r=null,search:i=void 0}={}){let o=Me(this,e);if(!o)return;let a=typeof i=="string"?i.trim():(this.yeaftDebugSearch||"").trim(),l=typeof r=="string"&&r,c=a&&!l?Jp:Tl,d=Number.isFinite(t)&&t>0?t:this.yeaftDebugHistoryLimit||c,u=Math.max(1,Math.min(c,d)),p=l?"detail":"list",f=`dbg_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`,g=JSON.stringify({agentId:o,groupId:e||null,limit:u,dreamLimit:Number.isFinite(s)&&s>0?s:5,indexOnly:!!n,detailTurnId:r||null,search:l?"":a});if(this._yeaftDebugHistoryInFlightKey===g)return;this._yeaftDebugHistoryInFlightKey=g,l?this._yeaftDebugHistoryLatestDetailRequestId=f:this._yeaftDebugHistoryLatestListRequestId=f,this.yeaftDebugHistoryLimit=u,this.yeaftDebugHistoryLoading=!0,this.yeaftDebugHistoryError=null,this.yeaftDebugHistoryProjection=null;let v={type:"yeaft_fetch_debug_history",agentId:o,requestId:f,requestKind:p,limit:u,dreamLimit:Number.isFinite(s)&&s>0?s:5};n&&(v.indexOnly=!0),typeof r=="string"&&r?v.detailTurnId=r:a&&(v.search=a),typeof e=="string"&&e&&(v.sessionId=e),this._yeaftDebugHistoryPending={payload:v,attempt:0,startedAt:Date.now()},Kn(this),this.refreshYeaftDebugHistoryTimeout(f),this.sendWsMessage(v)},scheduleYeaftDebugDetailRefresh(e,t){let s=this.yeaftDebugPanel;!s?.open||s.turnId!==t||s.agentId!==e.agentId||s.sessionId&&s.sessionId!==e.sessionId||(this._yeaftDebugDetailDirty=!0,!this._yeaftDebugDetailRefreshTimer&&(this._yeaftDebugDetailRefreshTimer=setTimeout(()=>{this._yeaftDebugDetailRefreshTimer=null,!(!this.yeaftDebugPanel?.open||this.yeaftDebugPanel.requestId!==s.requestId)&&(this.yeaftDebugHistoryLoading||(this._yeaftDebugDetailDirty=!1,this.loadYeaftDebugHistory({groupId:s.sessionId,detailTurnId:s.turnId})))},500)))},refreshYeaftDebugHistoryTimeout(e){let t=this._yeaftDebugHistoryPending;!t||t.payload.requestId!==e||(this._fetchYeaftDebugHistoryTimer&&clearTimeout(this._fetchYeaftDebugHistoryTimer),this._fetchYeaftDebugHistoryTimer=setTimeout(()=>{if(this._yeaftDebugHistoryPending===t){if(this.yeaftDebugHistoryLoading&&t.attempt<1){t.attempt+=1,t.startedAt=Date.now(),t.payload={...t.payload,requestId:`dbg_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`},t.payload.requestKind==="detail"?this._yeaftDebugHistoryLatestDetailRequestId=t.payload.requestId:this._yeaftDebugHistoryLatestListRequestId=t.payload.requestId,Kn(this),this.refreshYeaftDebugHistoryTimeout(t.payload.requestId),this.sendWsMessage(t.payload);return}this.yeaftDebugHistoryLoading&&(this.yeaftDebugHistoryLoading=!1,this.yeaftDebugHistoryError="debug_history_timeout",this.yeaftDebugPanel?.status==="loading"&&(this.yeaftDebugPanel={...this.yeaftDebugPanel,status:"error",error:this.yeaftDebugHistoryError})),this._yeaftDebugHistoryInFlightKey=null,this._fetchYeaftDebugHistoryTimer=null,this._yeaftDebugHistoryPending=null,this._yeaftDebugHistoryLatestDetailRequestId=null,this._yeaftDebugHistoryLatestListRequestId=null,Kn(this)}},Math.max(0,Math.min(3e4,3e5-(Date.now()-t.startedAt)))))},openYeaftTurnDebug({sessionId:e=null,turnId:t=null}={}){let s=Me(this,e);if(!s)return;this.workbenchExpanded=!1,this.workbenchMaximized=!1,this.rememberWorkbenchPanelState();let n=`dbgpanel_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`,r=t?"loading":"idle";this.yeaftDebugPanel={open:!0,status:r,requestId:n,agentId:s,sessionId:e||null,turnId:t||null,error:null},t&&this.loadYeaftDebugHistory({groupId:e||void 0,limit:1,dreamLimit:5,detailTurnId:t})},closeYeaftDebugPanel(){this._yeaftDebugDetailRefreshTimer&&clearTimeout(this._yeaftDebugDetailRefreshTimer),this._yeaftDebugDetailRefreshTimer=null,this._yeaftDebugDetailDirty=!1,this._fetchYeaftDebugHistoryTimer&&clearTimeout(this._fetchYeaftDebugHistoryTimer),this._fetchYeaftDebugHistoryTimer=null,this._yeaftDebugHistoryPending=null,this._yeaftDebugHistoryInFlightKey=null,this._yeaftDebugHistoryLatestDetailRequestId=null,this._yeaftDebugHistoryLatestListRequestId=null,this.yeaftDebugHistoryLoading=!1,Kn(this);let t=(this.yeaftDebugPanel||{}).turnId||null;if(this.yeaftDebugPanel={open:!1,status:"idle",requestId:null,agentId:null,sessionId:null,turnId:null,error:null},t&&this.yeaftDebugTurnsById&&this.yeaftDebugTurnsById[t]){let s={...this.yeaftDebugTurnsById};delete s[t],this.yeaftDebugTurnsById=s,this.yeaftDebugTurnOrder=(this.yeaftDebugTurnOrder||[]).filter(n=>n!==t),this.yeaftDebugLoops=(this.yeaftDebugLoops||[]).filter(n=>!n||n.turnId!==t)}},agentIdForSession(e){return Me(this,e)},sendYeaftSessionMessage({groupId:e,text:t,mentions:s,attachments:n,quote:r,quickSend:i}){let o=Me(this,e);if(!e||!o||i&&(o!==this.currentAgent||this.connectionState!=="connected"||!this.agents?.some(m=>m.id===o&&m.online)))return!1;let a=Array.isArray(n)?n.filter(m=>m&&m.fileId):[],l=It(r),c=a.length>0;if(!t?.trim()&&!c)return;let d=t?.trim()?t:"(attached files)",u=Date.now(),p=`u_${u.toString(36)}_${Math.random().toString(36).slice(2,10)}`,f=pn();this.yeaftPerfTraceByMessageId={...this.yeaftPerfTraceByMessageId||{},[p]:f},vt(this,{traceId:f,phase:"send.prepare",agentId:o,sessionId:e,turnId:p,messageType:"yeaft_session_send",detail:{mentionCount:Array.isArray(s)?s.length:0,attachmentCount:a.length,quoted:!!l}});let g=yt(this,e);if(g){let m={id:p,messageId:p,clientMessageId:p,stableKey:qs(o,e,p),uiKey:qs(o,e,p),type:"user",content:d,timestamp:u,sessionId:e,turnId:p,...l?{quote:l}:{}};if(a.length>0&&(m.attachments=a.map(b=>({fileId:b.fileId,name:b.name,preview:b.preview,isImage:!!b.isImage,mimeType:b.mimeType||""}))),Xt(this).upsertOverlay({conversationId:g,agentId:o,sessionId:e,row:m}),this.processingConversations[g]=!0,e){let b=ys(o,e);this.yeaftProcessingSessions={...this.yeaftProcessingSessions,...b?{[b]:!0}:{}}}this._turnCompletedConvs?.delete(g),this._closedAt?.[g]&&delete this._closedAt[g],this.getOrCreateExecutionStatus(g),Wn(this,g)}let v={type:"yeaft_session_send",agentId:o,id:p,sessionId:e,text:d,mentions:Array.isArray(s)?s:[],perfTraceId:f,...i?{quickSend:{model:i.model,effort:i.effort??null,maxOutputTokens:i.maxOutputTokens??null}}:{},...l?{quote:l}:{}};a.length>0&&(v.attachments=a.map(m=>({fileId:m.fileId,isImage:!!m.isImage}))),vt(this,{traceId:f,phase:"send.websocket_send",agentId:o,sessionId:e,turnId:p,messageType:v.type,bytes:JSON.stringify(v).length}),this.sendWsMessage(v)},cancelYeaftTask({agentId:e=null,sessionId:t,taskId:s}){let n=typeof t=="string"?t.trim():"",r=typeof s=="string"?s.trim():"",i=Me(this,n,e);return!i||!n||!r?!1:(this.yeaftStoppingTasksById={...this.yeaftStoppingTasksById,[Cl(i,n,r)]:!0},this.sendWsMessage({type:"yeaft_task_cancel",agentId:i,sessionId:n,taskId:r,clientRequestId:`task_cancel_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}),!0)},continueYeaftHistoryDelta(e,t=null,s=null){let n=e||null,r=Me(this,n,t);if(!r||!n||!Number.isFinite(s))return!1;let i=Pe(r,n),o=this.yeaftSessionHistoryState?.[i]||null;if(o?.loading)return!1;let a=this.beginYeaftHistoryLoad({agentId:r,sessionId:n,mode:"delta",preserveLoaded:!0,latestSeq:s});if(!a)return!1;this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[i]:{...this.yeaftSessionHistoryState[i],syncingAfterSeq:s}};let l={type:"yeaft_load_history",agentId:r,sessionId:n,requestId:a.requestId,afterSeq:s,maxRows:Cb,maxBytes:Ab,...typeof o?.streamId=="string"?{streamId:o.streamId}:{},...Number.isFinite(o?.revision)?{revision:o.revision}:{}};return this.sendWsMessage(l)?!0:($r(this,{agentId:r,sessionId:n,requestId:a.requestId,error:"history_load_send_failed"}),!1)},clearYeaftHistoryMemory({agentId:e=null,sessionId:t=null,preserveLiveRows:s=!1,preserveSessionOwner:n=!1}={}){let r=e||null,i=t||null,o=r&&i?Pe(r,i):null,a={};for(let[v,m]of Object.entries(this._yeaftHistoryWindowPendingByKey||{})){if(!(!o||m?.agentId===r&&m?.sessionId===i)){a[v]=m;continue}clearTimeout(m?.timeout),m?.resolve?.(!1)}this._yeaftHistoryWindowPendingByKey=a;let l={};for(let[v,m]of Object.entries(this._yeaftHistoryPrefetchBySession||{})){if(o&&v!==o){l[v]=m;continue}m.cancelled=!0,m.idle&&typeof globalThis.cancelIdleCallback=="function"?globalThis.cancelIdleCallback(m.handle):clearTimeout(m.handle)}this._yeaftHistoryPrefetchBySession=l;let c={};for(let[v,m]of Object.entries(this._yeaftHistoryResultRefreshByRequestId||{})){if(!(!o||m?.agentId===r&&m?.sessionId===i)){c[v]=m;continue}clearTimeout(m?.timeout),m?.resolve?.(null)}this._yeaftHistoryResultRefreshByRequestId=c;let d=r&&this.yeaftConversationIdsByAgent?.[r]||null,u=o?new Set([d].filter(Boolean)):new Set(Object.values(this.yeaftConversationIdsByAgent||{}).filter(Boolean));!o&&this.yeaftConversationId&&u.add(this.yeaftConversationId);let p={...this.messagesMap||{}};for(let v of u)Array.isArray(p[v])&&(p[v]=o?p[v].filter(m=>(m?.sessionId??m?.groupId??null)!==i?!0:s&&!ct(m)):[]);this.messagesMap=p;let f=v=>{if(!o)return{};let{[o]:m,...b}=v||{};return b};if(this.yeaftSessionHistoryState=f(this.yeaftSessionHistoryState),this.yeaftHistoryCacheState=f(this.yeaftHistoryCacheState),this.yeaftMessageWindowState=f(this.yeaftMessageWindowState),this.yeaftHistoryFocusWindowBySession=f(this.yeaftHistoryFocusWindowBySession),this.yeaftHistoryOutlineBySession=f(this.yeaftHistoryOutlineBySession),o){let v=this._yeaftHistoryOutlineTimeouts?.[o];v&&clearTimeout(v),this._yeaftHistoryOutlineTimeouts=f(this._yeaftHistoryOutlineTimeouts)}else{for(let v of Object.values(this._yeaftHistoryOutlineTimeouts||{}))v&&clearTimeout(v);this._yeaftHistoryOutlineTimeouts={}}if((!o||this.yeaftHistorySearchState?.agentId===r&&this.yeaftHistorySearchState?.sessionId===i)&&(this._yeaftHistorySearchTimeout&&clearTimeout(this._yeaftHistorySearchTimeout),this._yeaftHistorySearchTimeout=null,this.yeaftHistorySearchState={requestId:null,agentId:null,sessionId:null,query:"",senderKey:"",loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,nextCursor:null,error:null}),this._yeaftHistoryRevealLeases=o?Object.fromEntries(Object.entries(this._yeaftHistoryRevealLeases||{}).filter(([,v])=>v?.sessionKey!==o)):{},o||(this.yeaftHasMoreHistory=!1,this.yeaftLoadingMoreHistory=!1,this.yeaftOldestLoadedSeq=null),!n&&i&&this.yeaftSessionAgentById?.[i]===r){let{[i]:v,...m}=this.yeaftSessionAgentById;this.yeaftSessionAgentById=m}this.syncActiveYeaftHistoryLoad()},getYeaftMessageWindowKey(e=null,t=null){let s=e||this.yeaftActiveSessionFilter||null,n=Me(this,s,t);return Pe(n,s)},showLatestYeaftMessageWindow(e=null,t=null){let s=this.getYeaftMessageWindowKey(e,t);if(!s||!this.yeaftHistoryFocusWindowBySession?.[s])return!1;let{[s]:n,...r}=this.yeaftHistoryFocusWindowBySession;return this.yeaftHistoryFocusWindowBySession=r,!0},pruneYeaftMessageWindow(e=null,t=null){if(this.currentView!=="yeaft")return;let s=this.getYeaftMessageWindowKey(e,t);Object.values(this._yeaftHistoryRevealLeases||{}).some(r=>r?.sessionKey===s)||(this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[s]:{visibleTurns:Ws()}})},expandYeaftMessageWindow(e=null,t=Xr(),s=null){if(this.currentView!=="yeaft")return;let n=this.getYeaftMessageWindowKey(e,s),i=(this.yeaftMessageWindowState[n]?.visibleTurns||Ws())+Math.max(1,Number.isFinite(t)?Math.floor(t):Xr());this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[n]:{visibleTurns:i}}},isYeaftMessageCached(e,t,s=null,n=null){let r=e||this.yeaftActiveSessionFilter||null,i=s||yt(this,r,n);return!i||!t?!1:(this.messagesMap[i]||[]).some(o=>(!r||(o?.sessionId??o?.groupId??null)===r)&&((o?.id||o?.messageId)===t||o?.persistedMessageId===t))},revealYeaftMessage(e,t,s=null,n=null){let r=e||this.yeaftActiveSessionFilter||null,i=Me(this,r,n),o=s||yt(this,r,i);if(!o||!t)return!1;let a=(this.messagesMap[o]||[]).filter(m=>m?._historyWindowPrefetched===!0?!1:r?(m?.sessionId??m?.groupId??null)===r:!0),c=a.findIndex(m=>(m?.id||m?.messageId)===t||m?.persistedMessageId===t);if(c<0){let m=(this.messagesMap[o]||[]).find(b=>b?._historyWindowPrefetched===!0&&(b?.sessionId??b?.groupId??null)===r&&((b?.id||b?.messageId)===t||b?.persistedMessageId===t));if(!m)return!1;m._historyWindowPrefetched=!1,a.push(m),a.sort((b,h)=>{let w=Number.isFinite(b?.seq)?b.seq:null,I=Number.isFinite(h?.seq)?h.seq:null;return w!==null&&I!==null&&w!==I?w-I:w!==null&&I===null?-1:w===null&&I!==null?1:(b?.timestamp||0)-(h?.timestamp||0)}),c=a.indexOf(m)}let u=a[c]?._historyWindowKey||null,p=this.getYeaftMessageWindowKey(r,i);if(u){let m=(this.messagesMap[o]||[]).filter(h=>(h?.sessionId??h?.groupId??null)===r&&h?._historyWindowKey===u);return wl(m).length===0?!1:(this.yeaftHistoryFocusWindowBySession={...this.yeaftHistoryFocusWindowBySession||{},[p]:{windowKey:u,messageId:t,conversationId:o}},this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[p]:{visibleTurns:Ws()}},!0)}let f=wl(a),g=f.findIndex(m=>c>=m.start&&c<m.end);if(g<0)return!1;let v=Math.max(Ws(),f.length-g);return this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[p]:{visibleTurns:v}},!0},getYeaftHistoryOutlineState(e=null,t=null){let s=e||this.yeaftActiveSessionFilter||null,n=Me(this,s,t),r=Pe(n,s),i=this.yeaftHistoryOutlineBySession[r]||{requestId:null,agentId:n,sessionId:s,loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,nextCursor:null,totalCount:null,loaded:!1,retryAttempt:0,error:null},o=yt(this,s,n),a=o?this.messagesMap[o]||[]:[],l=new Map((i.results||[]).map(p=>[Zr(p),p])),c=0;for(let p of a){if((p?.sessionId??p?.groupId??null)!==s)continue;let f=p.messageId||p.id;if(!f)continue;let g=p.type==="user"&&!!p.clientMessageId&&f===p.clientMessageId,v=p.type==="assistant"&&p.isStreaming===!0;if(!g&&!v)continue;let m=p.type,b=p.turnId||p.threadId||f,h=p.speakerVpId||p.vpId||null,w=Zr({role:m,messageId:f,clientMessageId:p.clientMessageId,turnId:b,speakerVpId:h}),I=l.get(w),k=(typeof p.content=="string"?p.content:"").replace(/\s+/g," ").trim();l.set(w,{...I,agentId:n,sessionId:s,messageId:Number.isFinite(I?.seq)?I.messageId:f,...p.clientMessageId?{clientMessageId:p.clientMessageId}:{},turnId:b,role:m,speakerVpId:h||I?.speakerVpId||null,timestamp:p.timestamp||p.ts||I?.timestamp||null,snippet:k.length>180?`${k.slice(0,180).trimEnd()}\u2026`:k||I?.snippet||""}),I||(c+=1)}let d=p=>{let f=typeof p=="number"?p:Date.parse(p||"");return Number.isFinite(f)?f:0},u=Array.from(l.values()).sort((p,f)=>Number.isFinite(p.seq)&&Number.isFinite(f.seq)?p.seq-f.seq:d(p.timestamp)-d(f.timestamp));return{...i,results:u,totalCount:Number.isFinite(i.totalCount)?i.totalCount+c:i.totalCount}},promoteYeaftHistoryOutlineRow(e,t=null){let s=e?.sessionId??e?.groupId??null,n=Pe(t,s),r=this.yeaftHistoryOutlineBySession[n];if(!s||!t||!r?.loaded||r.loading)return!1;let i=e?.type;if(i!=="user"&&i!=="assistant")return!1;let o=e.dbMessageId||e.messageId||e.id||null,a=Vb(o);if(!o||!Number.isFinite(a))return!1;let l=e.turnId||e.threadId||o,c=e.speakerVpId||e.vpId||null,u=(typeof e.content=="string"?e.content:"").replace(/\s+/g," ").trim(),p=Zr({role:i,messageId:o,clientMessageId:e.clientMessageId,turnId:l,speakerVpId:c}),f=new Map((r.results||[]).map(w=>[Zr(w),w])),g=f.get(p);f.set(p,{...g,agentId:t,sessionId:s,messageId:o,...e.clientMessageId?{clientMessageId:e.clientMessageId}:{},turnId:l,seq:a,role:i,speakerVpId:c,timestamp:e.timestamp||e.ts||g?.timestamp||null,snippet:u.length>180?`${u.slice(0,180).trimEnd()}\u2026`:u||g?.snippet||""});let v=50,m=Array.from(f.values()).sort((w,I)=>(w.seq||0)-(I.seq||0)),b=m.length>v,h=m.slice(-v);return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[n]:{...r,results:h,hasMore:r.hasMore||b,nextBeforeSeq:b&&Number.isFinite(h[0]?.seq)?h[0].seq:r.nextBeforeSeq,totalCount:Number.isFinite(r.totalCount)&&!g?r.totalCount+1:r.totalCount}},!0},promoteCompletedYeaftHistoryOutline(e,t=null,s=null){let n=this.messagesMap[e]||[],r=null,i=[];for(let o=n.length-1;o>=0;o--){let a=n[o];if(a?.type==="user")break;if(t&&a?.turnId&&a.turnId!==t||a?.type!=="assistant")continue;let l=typeof a.content=="string"?a.content.replace(/\s+/g," ").trim():"";r?!String(r.content||"").trim()&&l&&(r=a):r=a,l&&i.unshift(l)}return r?this.promoteYeaftHistoryOutlineRow({...r,content:i.join(" ")},s):!1},invalidateYeaftHistoryOutline(e,t=null){let s=Pe(t,e),n=this.yeaftHistoryOutlineBySession[s];if(!e||!t||!n)return!1;if(n.loading)return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[s]:{...n,refreshPending:!0}},!0;this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[s]:{...n,loaded:!1,refreshPending:!1}};let r=Me(this,e);return this.currentView==="yeaft"&&this.yeaftActiveSessionFilter===e&&r===t?this.loadYeaftHistoryOutline({force:!0,targetSessionId:e,targetAgentId:t}):!0},loadYeaftHistoryOutline({append:e=!1,force:t=!1,targetSessionId:s=null,targetAgentId:n=null,retryAttempt:r=0}={}){if(this.currentView!=="yeaft"&&!s)return!1;let i=s||this.yeaftActiveSessionFilter||null,o=n||Me(this,i);if(!i||!o)return!1;let a=Pe(o,i),l=this.getYeaftHistoryOutlineState(i,o);if(!e&&l.loaded&&!t)return!0;if(e&&(!l.hasMore||!Number.isFinite(l.nextBeforeSeq))||l.loading)return!1;if(!Tt(this,o,"session_history_outline"))return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[a]:{...l,error:"unsupported",loading:!1}},!1;let c=`history_outline_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,d={...l,requestId:c,agentId:o,sessionId:i,loading:!0,requestAppend:e,refreshPending:!1,retryAttempt:r,error:null};this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[a]:d};let u=this._yeaftHistoryOutlineTimeouts[a];u&&clearTimeout(u);let p=setTimeout(()=>{let v=this.yeaftHistoryOutlineBySession[a];if(v?.requestId!==c)return;let m={...this._yeaftHistoryOutlineTimeouts};delete m[a],this._yeaftHistoryOutlineTimeouts=m;let b=v.refreshPending===!0;this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[a]:{...v,requestId:null,loading:!1,requestAppend:!1,loaded:b?!1:v.loaded,refreshPending:!1,error:b?null:"timeout"}},b&&this.loadYeaftHistoryOutline({force:!0,targetSessionId:i,targetAgentId:o})},1e4);this._yeaftHistoryOutlineTimeouts={...this._yeaftHistoryOutlineTimeouts,[a]:p};let f=pn(),g={type:"yeaft_load_history_outline",agentId:o,sessionId:i,requestId:c,perfTraceId:f,limit:50,...e&&l.nextCursor?{cursor:l.nextCursor}:{},...e&&!l.nextCursor&&Number.isFinite(l.nextBeforeSeq)?{beforeSeq:l.nextBeforeSeq}:{}};return vt(this,{traceId:f,phase:"history_outline.request_send",agentId:o,sessionId:i,messageType:g.type,bytes:JSON.stringify(g).length,detail:{append:e,limit:g.limit}}),this.sendWsMessage(g),!0},handleYeaftHistoryOutline(e){if(!e?.agentId||!e?.sessionId)return!1;let t=Pe(e.agentId,e.sessionId),s=this.yeaftHistoryOutlineBySession[t];if(!s||e.requestId!==s.requestId)return!1;let n=this._yeaftHistoryOutlineTimeouts[t];n&&clearTimeout(n);let r={...this._yeaftHistoryOutlineTimeouts};delete r[t],this._yeaftHistoryOutlineTimeouts=r;let i=Number.isInteger(s.retryAttempt)?s.retryAttempt:0;if(Tb.has(e.error)&&i<Wp.length){let p=Wp[i],f=setTimeout(()=>{let g=this.yeaftHistoryOutlineBySession[t];if(g?.requestId!==e.requestId||g.loading!==!0)return;let v={...this._yeaftHistoryOutlineTimeouts};delete v[t],this._yeaftHistoryOutlineTimeouts=v;let m=g.refreshPending===!0;this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[t]:{...g,requestId:null,loading:!1,refreshPending:!1}},this.loadYeaftHistoryOutline({append:m?!1:s.requestAppend===!0,force:!0,targetSessionId:e.sessionId,targetAgentId:e.agentId,retryAttempt:i+1})},p);return this._yeaftHistoryOutlineTimeouts={...this._yeaftHistoryOutlineTimeouts,[t]:f},!0}let o=Array.isArray(e.results)?e.results.map(p=>({...p,agentId:e.agentId,sessionId:e.sessionId})):[],a=s.requestAppend?[...s.results||[],...o]:o,l=new Map(a.filter(p=>p?.messageId).map(p=>[Zr(p),p])),c=Array.from(l.values()).sort((p,f)=>(p.seq||0)-(f.seq||0)),d=s.refreshPending===!0;this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[t]:{...s,requestId:null,loading:!1,requestAppend:!1,refreshPending:!1,loaded:d?!1:!e.error,results:c,hasMore:!!e.hasMore,nextBeforeSeq:Number.isFinite(e.nextBeforeSeq)?e.nextBeforeSeq:null,nextCursor:e.nextCursor&&typeof e.nextCursor=="object"?e.nextCursor:null,totalCount:Number.isFinite(e.totalCount)?e.totalCount:s.totalCount,error:d?null:e.error||null}};let u=this._yeaftHistoryResultRefreshByRequestId?.[e.requestId];if(u?.source==="outline"){clearTimeout(u.timeout);let{[e.requestId]:p,...f}=this._yeaftHistoryResultRefreshByRequestId;this._yeaftHistoryResultRefreshByRequestId=f;let g=c.find(v=>u.messageId&&v?.messageId===u.messageId||u.entryId&&v?.entryId===u.entryId);u.resolve(g||null)}return d&&this.loadYeaftHistoryOutline({force:!0,targetSessionId:e.sessionId,targetAgentId:e.agentId}),!0},searchYeaftHistory(e,{append:t=!1,senderKey:s=""}={}){if(this.currentView!=="yeaft")return!1;let n=typeof e=="string"?e.trim():"",r=typeof s=="string"&&(s==="user"||s.startsWith("vp:"))?s.slice(0,103):"",i=this.yeaftActiveSessionFilter||null,o=Me(this,i);if(this._yeaftHistorySearchTimeout&&(clearTimeout(this._yeaftHistorySearchTimeout),this._yeaftHistorySearchTimeout=null),!i||!o||Array.from(n).length<1&&!r)return this.yeaftHistorySearchState={requestId:null,agentId:o,sessionId:i,query:n,senderKey:r,loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,nextCursor:null,error:null},!1;let a=this.yeaftHistorySearchState||{};if(!Tt(this,o,"session_history_search"))return this.yeaftHistorySearchState={requestId:null,agentId:o,sessionId:i,query:n,senderKey:r,loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,nextCursor:null,error:"unsupported"},!1;let l=`history_search_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;this.yeaftHistorySearchState={requestId:l,agentId:o,sessionId:i,query:n,senderKey:r,loading:!0,results:t&&a.query===n&&a.senderKey===r?a.results:[],hasMore:!1,nextBeforeSeq:t&&a.query===n&&a.senderKey===r?a.nextBeforeSeq:null,nextCursor:t&&a.query===n&&a.senderKey===r&&a.nextCursor||null,error:null},this._yeaftHistorySearchTimeout=setTimeout(()=>{this.yeaftHistorySearchState?.requestId===l&&(this._yeaftHistorySearchTimeout=null,this.yeaftHistorySearchState={...this.yeaftHistorySearchState,loading:!1,error:"timeout"})},1e4);let c=pn(),d={type:"yeaft_search_history",agentId:o,sessionId:i,requestId:l,perfTraceId:c,query:n,senderKey:r,limit:20,...t&&a.query===n&&a.senderKey===r&&a.nextCursor?{cursor:a.nextCursor}:{},...t&&a.query===n&&a.senderKey===r&&!a.nextCursor&&Number.isFinite(a.nextBeforeSeq)?{beforeSeq:a.nextBeforeSeq}:{}};return vt(this,{traceId:c,phase:"history_search.request_send",agentId:o,sessionId:i,messageType:d.type,bytes:JSON.stringify(d).length,detail:{append:t,limit:d.limit,queryLength:Array.from(n).length,senderFilter:!!r}}),this.sendWsMessage(d),!0},handleYeaftHistorySearchResult(e){let t=this.yeaftHistorySearchState||{};if(!e||e.requestId!==t.requestId||e.agentId!==t.agentId||e.sessionId!==t.sessionId||e.query!==t.query||(e.senderKey||"")!==t.senderKey)return!1;this._yeaftHistorySearchTimeout&&(clearTimeout(this._yeaftHistorySearchTimeout),this._yeaftHistorySearchTimeout=null);let s=Array.isArray(e.results)?e.results.map(o=>({...o,agentId:e.agentId,sessionId:e.sessionId})):[],n=new Map((t.results||[]).map(o=>[Er(o),o]));for(let o of s)(o?.entryId||o?.messageId)&&n.set(Er(o),o);let r=Array.from(n.values());this.yeaftHistorySearchState={...t,loading:!1,results:r,hasMore:!!e.hasMore,nextBeforeSeq:Number.isFinite(e.nextBeforeSeq)?e.nextBeforeSeq:null,nextCursor:e.nextCursor&&typeof e.nextCursor=="object"?e.nextCursor:null,error:e.error||null};let i=this._yeaftHistoryResultRefreshByRequestId?.[e.requestId];if(i){clearTimeout(i.timeout);let{[e.requestId]:o,...a}=this._yeaftHistoryResultRefreshByRequestId;this._yeaftHistoryResultRefreshByRequestId=a;let l=r.find(c=>i.messageId&&c?.messageId===i.messageId||i.entryId&&c?.entryId===i.entryId);i.resolve(l||null)}return!0},reloadYeaftHistoryResult(e){let t=e?.sessionId||null,s=e?.agentId||null,n=this.yeaftHistorySearchState||{},i=n.agentId===s&&n.sessionId===t&&(Array.from(String(n.query||"").trim()).length>0||!!n.senderKey);if(!t||!s)return Promise.resolve(null);let o=i&&n.query||"",a=i&&n.senderKey||"",l=null,c=!1;if(i)c=this.searchYeaftHistory(o,{senderKey:a}),l=this.yeaftHistorySearchState?.requestId||null;else{let d=Pe(s,t),u=this.yeaftHistoryOutlineBySession?.[d]||null;u?.loading===!0&&u.requestAppend!==!0&&u.requestId?(c=!0,l=u.requestId):(c=this.loadYeaftHistoryOutline({force:!0,targetSessionId:t,targetAgentId:s}),l=this.yeaftHistoryOutlineBySession?.[d]?.requestId||null)}return!c||!l?Promise.resolve(null):new Promise(d=>{let u=setTimeout(()=>{if(this._yeaftHistoryResultRefreshByRequestId?.[l]?.resolve!==d)return;let{[l]:f,...g}=this._yeaftHistoryResultRefreshByRequestId;this._yeaftHistoryResultRefreshByRequestId=g,d(null)},1e4);this._yeaftHistoryResultRefreshByRequestId={...this._yeaftHistoryResultRefreshByRequestId||{},[l]:{agentId:s,sessionId:t,query:o,senderKey:a,source:i?"search":"outline",messageId:e?.messageId||null,entryId:e?.entryId||null,resolve:d,timeout:u}}})},loadYeaftHistoryWindow(e,{validateCached:t=!1}={}){let s=e?.sessionId||this.yeaftActiveSessionFilter||null,n=e?.agentId||Me(this,s),r=Er(e);if(!s||!n||!e?.entryId||!Number.isFinite(e.indexGeneration)||!Number.isFinite(e.entryStartSeq)||!e?.messageId||!Number.isFinite(e.seq))return Promise.resolve(!1);let i=yt(this,s,n);if((this.messagesMap[i]||[]).some(v=>(v?.sessionId??v?.groupId??null)===s&&v?.historyEntryId===e.entryId&&v?.historyIndexGeneration===e.indexGeneration)&&!t)return Promise.resolve(!0);let a=Pe(n,`${s}:${r}:generation:${e.indexGeneration}`),l=this._yeaftHistoryWindowPendingByKey||{};if(l[a]?.promise)return l[a].promise;let c=`history_window_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,d=null,u=null,p=new Promise(v=>{d=v});Object.defineProperty(p,"error",{get:()=>u});let f=v=>{u=v||null},g=setTimeout(()=>{if(this._yeaftHistoryWindowPendingByKey?.[a]?.requestId!==c)return;let{[a]:m,...b}=this._yeaftHistoryWindowPendingByKey;this._yeaftHistoryWindowPendingByKey=b,d(!1)},1e4);return this._yeaftHistoryWindowPendingByKey={...l,[a]:{requestId:c,agentId:n,sessionId:s,entryId:e.entryId||null,indexGeneration:Number.isFinite(e.indexGeneration)?e.indexGeneration:null,entryStartSeq:Number.isFinite(e.entryStartSeq)?e.entryStartSeq:null,resultId:r,messageId:e.messageId,prefetch:!t,validateCached:!!t,setError:f,resolve:d,timeout:g,promise:p}},this.sendWsMessage({type:"yeaft_load_history_window",agentId:n,sessionId:s,requestId:c,prefetch:!t,...e.entryId?{entryId:e.entryId}:{},...Number.isFinite(e.indexGeneration)?{indexGeneration:e.indexGeneration}:{},...Number.isFinite(e.entryStartSeq)?{entryStartSeq:e.entryStartSeq}:{},anchorMessageId:e.messageId,anchorSeq:e.seq,beforeTurns:5,afterTurns:5,maxRows:200,maxBytes:512*1024}),p},beginYeaftHistoryReveal(e){let t=e?.sessionId||null,s=e?.agentId||null,n=yt(this,t,s);if(!t||!s||!n)return null;let r=Pe(s,t),i=`${r}${n}`,o=++this._yeaftHistoryRevealSequence,a={key:i,token:o,sessionKey:r,agentId:s,sessionId:t,conversationId:n};return this._yeaftHistoryRevealLeases={...this._yeaftHistoryRevealLeases||{},[i]:a},a},finishYeaftHistoryReveal(e){if(!e?.key||!Number.isFinite(e.token)||this._yeaftHistoryRevealLeases?.[e.key]?.token!==e.token)return!1;let{[e.key]:s,...n}=this._yeaftHistoryRevealLeases;return this._yeaftHistoryRevealLeases=n,!0},async revealYeaftHistoryResult(e,t=null){let s=!t,n=t||this.beginYeaftHistoryReveal(e),r=e?.sessionId||null,i=e?.agentId||null,o=yt(this,r,i);if(!n||!r||!i||!o||!e?.messageId)return this.finishYeaftHistoryReveal(n),!1;let a=e,l=this.loadYeaftHistoryWindow(a,{validateCached:!0}),c=await l;if(!c&&l.error==="stale_result"){let u=await this.reloadYeaftHistoryResult(a);u&&(a=u,l=this.loadYeaftHistoryWindow(a,{validateCached:!0}),c=await l)}if(!c)return this.finishYeaftHistoryReveal(n),!1;if(this.currentView!=="yeaft"||this.yeaftActiveSessionFilter!==r||Me(this,r)!==i||yt(this,r,i)!==o)return this.finishYeaftHistoryReveal(n),!1;let d=this.revealYeaftMessage(r,a.messageId,o,i);return(!d||s)&&this.finishYeaftHistoryReveal(n),d},pendingYeaftHistoryWindow(e){let s=Object.entries(this._yeaftHistoryWindowPendingByKey||{}).find(([,i])=>i?.requestId===e?.requestId);if(!s)return null;let[n,r]=s;return e.agentId!==r.agentId||e.sessionId!==r.sessionId||e.entryId&&r.entryId&&e.entryId!==r.entryId||Number.isFinite(e.indexGeneration)&&Number.isFinite(r.indexGeneration)&&e.indexGeneration!==r.indexGeneration?null:{pendingKey:n,pending:r}},handleYeaftHistoryWindow(e,t=null){let s=this.pendingYeaftHistoryWindow(e);if(!s)return!1;let{pendingKey:n,pending:r}=s;r.prefetch===!0&&e.prefetch!==!0&&r.validateCached!==!0&&(e.prefetch=!0),clearTimeout(r.timeout);let{[n]:i,...o}=this._yeaftHistoryWindowPendingByKey;this._yeaftHistoryWindowPendingByKey=o;let a=!e.error&&!!t&&this.isYeaftMessageCached(r.sessionId,r.messageId,t,r.agentId);return r.setError?.(e.error||null),r.resolve(!!a),!!a},createYeaftSession({displayName:e,vpIds:t,defaultVpId:s,workDir:n,agentId:r}={}){let i=Array.isArray(t)?t.slice():[],o=s&&i.includes(s)?s:i[0]||null,a=(e||"").trim(),l=(n||"").trim(),c={roster:i,defaultVpId:o};return a&&(c.name=a),l&&(c.workDir=l),this.sessionCrudRequest("create",c,{agentId:r})},handleYeaftOutput(e){if(!e)return;let t=e.agentId||this.yeaftAgentId||this.currentAgent||null,s=e.conversationId||e.event?.conversationId||null,n=jn(this,t,s);if(e.data&&n){if(e.data.type!=="result")return;let a=cu(this,t,s);if(!a)return;let l=e.turnId?wn(this,t,e.turnId):"",c=!!(l&&this.activeVpTurns?.[l])||(this.messagesMap?.[a]||[]).some(d=>d?.turnId===e.turnId&&(d.isStreaming||d.status==="pending"));if(!e.turnId||!c)return;e={...e,conversationId:a}}if(e.perfTraceId&&(vt(this,{traceId:e.perfTraceId,phase:"receive.yeaft_output",agentId:e.agentId||null,sessionId:e.sessionId||null,vpId:e.vpId||null,turnId:e.turnId||null,threadId:e.threadId||null,messageType:e.data?.type||e.event?.type||e.type}),e.turnId&&(this.yeaftPerfTraceByTurnId={...this.yeaftPerfTraceByTurnId||{},[e.turnId]:e.perfTraceId})),e.data){let a=e.agentId||null,l=Ss(this,a,e.conversationId);if(l){let d=xl(e,e.turnId||"session");for(let u of["retry","retrying","thinking"])Nn(this,l,`${u}:${d}`);e.data?.tool_use_result&&Nn(this,l,`tool:${d}`)}let c=e.turnId?wn(this,e.agentId||null,e.turnId):"";if(c&&this.activeVpTurns?.[c]?.retryAttempt){let{retryAttempt:d,retryMax:u,retryDelayMs:p,retryReason:f,retryRecoveryMode:g,...v}=this.activeVpTurns[c];this.activeVpTurns={...this.activeVpTurns,[c]:v}}if(l){let d=e.sessionId??e.groupId??null,u=Xp(this,d,a),p=a&&this.yeaftConversationIdsByAgent?this.yeaftConversationIdsByAgent[a]:null,f=Zt(this,a);f&&f.targetConversationId!==l?Nr(this,a,l):!f&&p&&p!==l&&!String(p).startsWith("yeaft-local-")&&(Jt(this,p,l,{removeSource:p!==this.yeaftConversationId}),Hr(this,a,p,l)),Ya(this,a,l);let g=Zt(this,a,l),v=g?.sourceConversationId||p,m=!u&&v===this.yeaftConversationId;if(this.currentView==="yeaft"&&a&&v&&v!==l){let k=!m&&(!!g||String(v).startsWith("yeaft-local-"));Jt(this,v,l,{removeSource:k}),m?Qi(this,a,v,l):k&&Br(this,a,l)}a&&(this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[a]:l}),(u||!this.yeaftConversationId)&&(this.yeaftConversationId=l),u&&(this.activeConversations=[l]),this.messagesMap[l]||(this.messagesMap[l]=[]);let b=this._currentYeaftAgentId,h=this._currentYeaftSessionId,w=this._currentYeaftVpId,I=this._currentYeaftTurnId,y=this._currentYeaftThreadId;a&&(this._currentYeaftAgentId=a),d!=null&&(this._currentYeaftSessionId=d),e.vpId&&(this._currentYeaftVpId=e.vpId),e.turnId&&(this._currentYeaftTurnId=e.turnId),e.threadId&&(this._currentYeaftThreadId=e.threadId);try{let k=typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();if(this.handleAssistantOutputFrame(l,e.data,a),e.perfTraceId){let te=typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();vt(this,{traceId:e.perfTraceId,phase:"store.apply_output",agentId:e.agentId||null,sessionId:d||null,vpId:e.vpId||null,turnId:e.turnId||null,threadId:e.threadId||null,messageType:e.data?.type||null,durationMs:te-k}),Zi(this,{traceId:e.perfTraceId,agentId:e.agentId||null,sessionId:d||null,vpId:e.vpId||null,turnId:e.turnId||null,threadId:e.threadId||null,messageType:e.data?.type||null})}let _=e.data,A=_?.message?.id||_?.id||null,Q=Ob(A),H=Array.isArray(_?.message?.content)?_.message.content:[],z=H.some(te=>te?.type==="tool_use"),$=!!_?.tool_use_result||H.some(te=>te?.type==="tool_result");if(d){let te=!$&&!Lb(this,l,d)&&(_?.type==="user"||_?.type==="assistant"&&!z)?Q:null,F=Pe(e.agentId||null,d),S=this.yeaftSessionHistoryState[F]||{},M=Number.isFinite(S.latestSeq)?S.latestSeq:-1;te!==null&&te>M&&(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[F]:{...S,latestSeq:te}})}}finally{this._currentYeaftAgentId=b,this._currentYeaftSessionId=h,this._currentYeaftVpId=w,this._currentYeaftTurnId=I,this._currentYeaftThreadId=y}}return}let r=e.event;if(!r)return;let i={...r,vpId:r.vpId||e.vpId||null,threadId:r.threadId||e.threadId||null,turnId:r.turnId||e.turnId||null},o=Ss(this,e.agentId||null,e.conversationId);if(o){let a=xl(i);r.type==="tool_start"?Fr(this,o,`tool:${a}`):r.type==="tool_end"?Nn(this,o,`tool:${a}`):r.type==="llm_retry"?Fr(this,o,`retry:${a}`):r.type==="vp_async_task_wait_start"?Fr(this,o,`async-wait:${a}`):r.type==="vp_async_task_wait_end"&&Nn(this,o,`async-wait:${a}`)}switch(r.type){case"project_mutation_result":r.projectsAuthoritative===!0?this.finishProjectMutation(r):this.finishLegacyProjectMutation(r,e.agentId||null);break;case"ask_user_question":{let a=Ss(this,e.agentId||null,e.conversationId);if(!a||!r.requestId)break;let l=Up(e,r,a),c=()=>{let d=this.messagesMap[a]||[],u=zp(d,l,a);if(u){if(u.askAnswered||u.askExpired)return!0;u.toolName="AskUserQuestion",r.toolCallId&&!u.toolId&&(u.toolId=r.toolCallId),u.agentId=l.agentId||u.agentId||null;for(let v of["sessionId","vpId","turnId","threadId"])l[v]&&(u[v]=l[v]);u.hasResult=!1,u.askRequestId=r.requestId,u.askQuestions=r.questions||[],u.askCreatedAt=r.createdAt||null,u.askExpiresAt=r.expiresAt||null,u.isHistory=!1;let g=Yp(this,l);return g&&Il(u,g),this.messagesMap={...this.messagesMap,[a]:d.slice()},!0}if(!r.replay)return!1;let p={id:`ask-card-${r.requestId}`,type:"tool-use",toolName:"AskUserQuestion",toolId:r.toolCallId||null,toolInput:{questions:r.questions||[]},askRequestId:r.requestId,askQuestions:r.questions||[],askCreatedAt:r.createdAt||null,askExpiresAt:r.expiresAt||null,agentId:l.agentId,sessionId:l.sessionId,vpId:l.vpId,speakerVpId:l.vpId,turnId:l.turnId,threadId:l.threadId||"main",hasResult:!1,isHistory:!1,timestamp:r.createdAt||Date.now()},f=Yp(this,l);return f&&Il(p,f),d.push(p),this.messagesMap={...this.messagesMap,[a]:d.slice()},!0};if(!c()){let d=0,u=setInterval(()=>{d+=1,(c()||d>=10)&&clearInterval(u)},200)}break}case"ask_user_answered":case"ask_user_answer_rejected":case"ask_user_expired":{let a=Ss(this,e.agentId||null,e.conversationId);if(!a||!r.requestId)break;let l=this.messagesMap[a]||[],c=Up(e,r,a),d=zp(l,c,a);if(!d){$b(this,c,r);break}Il(d,r),this.messagesMap={...this.messagesMap,[a]:l.slice()};break}case"session_ready":{let a=r.conversationId,l=e.agentId||this.currentAgent;if(jn(this,l,a))break;let c=l&&this.yeaftConversationIdsByAgent?this.yeaftConversationIdsByAgent[l]:null,d=this.yeaftConversationId?String(this.yeaftConversationId):"",u=d.startsWith("yeaft-local-")&&(!l||d.startsWith(`yeaft-local-${l}-`)||/^yeaft-local-\d/.test(d))?this.yeaftConversationId:null,p=c||u,f=r.sessionId||e.sessionId||null,g=Xp(this,f,l),v=Zt(this,l);v&&v.targetConversationId!==a?Nr(this,l,a):!v&&c&&c!==a&&!String(c).startsWith("yeaft-local-")&&Hr(this,l,c,a),Ya(this,l,a);let b=Zt(this,l,a)?.sourceConversationId||p,h=!g&&b===this.yeaftConversationId;if(b&&b!==a){let _=!h;Jt(this,b,a,{removeSource:_}),h?Qi(this,l,b,a):_&&Br(this,l,a)}else this.messagesMap[a]||(this.messagesMap[a]=[]);l&&(this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[l]:a},this.cacheYeaftAgentStatus(l,r,{allowBootstrapCatalog:g})),g&&(this.yeaftModel=r.model,this.yeaftModelEffort=r.modelEffort||null,this.yeaftSessionReady=!0,this.yeaftBootstrapMetaLoadingKey=null,l?this.applyCachedYeaftStatus(l):this.yeaftAvailableModels=r.availableModels||[]);let w=Array.isArray(r.tasks)?r.tasks:[],I={};for(let[_,A]of Object.entries(this.yeaftActiveTasksBySession||{})){let Q=Object.fromEntries(Object.entries(A||{}).filter(([,z])=>z?.id&&z.status==="running"&&z.agentId&&z.agentId!==l)),H=Al(Q);Object.keys(H).length>0&&(I[_]=H)}for(let _ of w){if(!_?.id||!_.sessionId||_.status!=="running")continue;let A=Pe(l,_.sessionId);I[A]={...I[A]||{},[_.id]:{..._,agentId:l}}}this.yeaftActiveTasksBySession=I,g&&(r.yeaftDir&&(this.yeaftYeaftDir=r.yeaftDir),this.yeaftStatus={skills:r.skills,mcpServers:r.mcpServers,tools:r.tools,multiVp:!!r.multiVp}),(g||!this.yeaftConversationId)&&(this.yeaftConversationId=a),g&&(this.activeConversations=[a]);let y=e.agentId||this.currentAgent||null,k=y||"__current__";this._yeaftVpSubscribedAgentKey!==k&&(this._yeaftVpSubscribedAgentKey=k,this.sendWsMessage(y?{type:"yeaft_vp_subscribe",agentId:y}:{type:"yeaft_vp_subscribe"}));break}case"yeaft_status":{let a=e.agentId||this.currentAgent;a&&this.cacheYeaftAgentStatus(a,r);break}case"context_usage":break;case"turn_open":{if(!r.turnId)break;let a={turnId:r.turnId,userPrompt:r.userPrompt||"",vpId:r.vpId||e.vpId||null,sessionId:r.sessionId||e.sessionId||null,openedAt:r.at||Date.now(),closedAt:null,totalMs:0,inputTokens:0,outputTokens:0,totalTokens:0,loopCount:0,memoryLoaded:null,memoryLoadedMeta:null,memoryAdjust:null,tools:[],detailsLoaded:!0};this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:a};let l=wn(this,e.agentId||null,r.turnId),c=this.activeVpTurns?.[l];c&&Number.isFinite(r.at)&&(this.activeVpTurns={...this.activeVpTurns,[l]:{...c,startedAt:r.at}}),this.yeaftDebugTurnOrder.includes(r.turnId)||(this.yeaftDebugTurnOrder=[...this.yeaftDebugTurnOrder,r.turnId]);break}case"turn_close":{if(!r.turnId)break;let a=this.yeaftDebugTurnsById[r.turnId];if(!a)break;this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...a,closedAt:Date.now(),...Number.isFinite(r.totalMs)?{totalMs:r.totalMs}:{},...Number.isFinite(r.inputTokens)?{inputTokens:r.inputTokens}:{},...Number.isFinite(r.outputTokens)?{outputTokens:r.outputTokens}:{},...Number.isFinite(r.totalTokens)?{totalTokens:r.totalTokens}:{},loopCount:r.loopCount||a.loopCount||0,...typeof r.model=="string"&&r.model?{model:r.model}:{},...typeof r.effort=="string"&&r.effort?{effort:r.effort}:{}}};break}case"memory_used":{if(!r.turnId)break;let a=this.yeaftDebugTurnsById[r.turnId];if(!a)break;this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...a,memoryLoaded:Array.isArray(r.loaded)?r.loaded:[],memoryLoadedMeta:r.meta||null}};break}case"dream_memory_loaded":{let a=Array.isArray(r.resident)?r.resident:[];if(r.turnId){let c=this.yeaftDebugTurnsById[r.turnId];c&&(this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...c,dreamMemoryLoaded:a,dreamMemoryLoadedInto:r.loadedInto||"system_prompt.memory"}})}let l={};for(let c of a){let d=c&&typeof c.scope=="string"?c.scope:null,u=d&&/^sessions\/[^/]+$/.test(d)?d:d&&/^group\/[^/]+$/.test(d)?`sessions/${d.slice(6)}`:null;u&&(l[u]={scope:u,sourceScope:d,sessionId:u.slice(9),turnId:r.turnId||null,vpId:r.vpId||null,loadedInto:r.loadedInto||"system_prompt.memory",summary:c.summary||"",truncated:!!c.truncated,receivedAt:Date.now()})}Object.keys(l).length>0&&(this.yeaftDreamPromptLoads={...this.yeaftDreamPromptLoads,...l});break}case"memory_adjust":{if(!r.turnId)break;let a=this.yeaftDebugTurnsById[r.turnId];if(!a)break;this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...a,memoryAdjust:{sessionKey:r.sessionKey||null,added:r.added||0,evicted:r.evicted||0,skipped:r.skipped||0,reason:r.reason||""}}};break}case"tool_exec":{if(this.scheduleYeaftDebugDetailRefresh(e,r.turnId),!r.turnId)break;let a=this.yeaftDebugTurnsById[r.turnId];if(!a)break;let l=[...a.tools||[],{loopNumber:r.loopNumber||0,callId:r.callId||null,name:r.name||"?",durationMs:r.durationMs||0,isError:!!r.isError}];this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...a,tools:l}};break}case"loop":{if(this.scheduleYeaftDebugDetailRefresh(e,r.turnId),this.yeaftDebugLoops.push({turnId:r.turnId||null,loopNumber:r.loopNumber||0,model:r.model,usage:r.usage||{inputTokens:0,outputTokens:0,totalTokens:0},latencyMs:r.latencyMs,ttfbMs:r.ttfbMs,stopReason:r.stopReason,at:typeof r.at=="number"?r.at:null,sessionId:e.sessionId||null,vpId:e.vpId||r.vpId||null}),this.yeaftDebugLoops.length>Zp){let a=Ip({loops:this.yeaftDebugLoops,turnsById:this.yeaftDebugTurnsById,turnOrder:this.yeaftDebugTurnOrder,maxLoops:Math.max(Zp,this.yeaftDebugHistoryLimit||0)});this.yeaftDebugLoops=a.loops,this.yeaftDebugTurnsById=a.turnsById,this.yeaftDebugTurnOrder=a.turnOrder}break}case"llm_retry":{if(!e.turnId)break;let a=wn(this,e.agentId||null,e.turnId),l=this.activeVpTurns?.[a];if(!l)break;let c=r.reason==="stream_idle_timeout"?"stream_idle_timeout":"transient_error";this.activeVpTurns={...this.activeVpTurns,[a]:{...l,retryAttempt:r.attempt||0,retryMax:r.maxRetries||0,retryDelayMs:r.delayMs||0,retryReason:c,retryRecoveryMode:r.recoveryMode||"restart"}};break}case"recall":case"fallback":case"thinking_delta":break;case"reflection":{let a=Ss(this,e.agentId||null,e.conversationId)||"unknown",l=Array.isArray(r.loopRange)?r.loopRange:[0,0],c=`${a}:${r.trigger}:${l[0]}-${l[1]}`,d=this.yeaftReflectionCards[c],u=this.messagesMap[a]||[],p=d?d.anchorMsgId:u.length>0&&u[u.length-1].id||null,f=d?d.anchorOrder:u.length;this.yeaftReflectionCards={...this.yeaftReflectionCards,[c]:{key:c,conversationId:a,turnId:r.turnId||d&&d.turnId||null,loopNumber:r.loopNumber||d&&d.loopNumber||null,trigger:r.trigger,status:r.status,loopRange:l,toolCount:r.toolCount||0,content:r.content||"",durationMs:r.durationMs||0,error:r.error||null,sessionId:e.sessionId||null,anchorMsgId:p,anchorOrder:f,updatedAt:Date.now()}};break}case"model_switched":this.yeaftModel=r.model,this.yeaftModelEffort=r.modelEffort||null;break;case"yeaft_task_event":{let a=r.task;if(!a?.id||!a.sessionId)break;let l=e.agentId||Me(this,a.sessionId),c=Pe(l,a.sessionId),d={...a,agentId:l},u={...this.yeaftActiveTasksBySession},p={...u[c]||{}};a.status==="running"?p[a.id]=d:delete p[a.id];let f=Al(p);if(Object.keys(f).length>0?u[c]=f:delete u[c],this.yeaftActiveTasksBySession=u,a.status!=="running"){let{[Cl(l,a.sessionId,a.id)]:g,...v}=this.yeaftStoppingTasksById||{};this.yeaftStoppingTasksById=v}break}case"yeaft_task_cancel_result":{let a=r.taskId||r.task?.id||null,l=r.task?.sessionId||r.sessionId||e.sessionId||null,c=e.agentId||Me(this,l);if(a&&l&&r.success===!1){let{[Cl(c,l,a)]:u,...p}=this.yeaftStoppingTasksById||{};this.yeaftStoppingTasksById=p}let d=r.task;if(d?.id&&d.sessionId){let u=Pe(c,d.sessionId),p={...this.yeaftActiveTasksBySession},f={...p[u]||{}};d.status==="running"?f[d.id]={...d,agentId:c}:delete f[d.id];let g=Al(f);Object.keys(g).length>0?p[u]=g:delete p[u],this.yeaftActiveTasksBySession=p}break}case"sub_agent_event":{let a=Ss(this,e.agentId||null,e.conversationId)||"unknown",l=r.agentId;if(!l)break;let c=r.payload||{},d=`${a}:${l}`,u=this.yeaftSubAgentCards[d],p=this.messagesMap[a]||[],f=u?u.anchorMsgId:p.length>0&&p[p.length-1].id||null,g=u?u.anchorOrder:p.length,v=u?{...u}:{key:d,conversationId:a,agentId:l,agentName:c.agentName||"sub-agent",status:"running",text:"",toolCallCount:0,turns:0,error:null,expanded:!1,anchorMsgId:f,anchorOrder:g,updatedAt:Date.now(),sessionId:e.sessionId||null};switch(c.agentName&&!v.agentName&&(v.agentName=c.agentName),c.type){case"sub_agent_status":v.status=c.status||v.status,c.error&&(v.error=c.error);break;case"text_delta":break;case"tool_use":case"tool_call":v.toolCallCount=Number(v.toolCallCount||0)+1;break;case"tool_start":break;case"tool_result":case"tool_end":break;case"sub_agent_turn_end":{v.turns+=1;let m=typeof c.content=="string"?c.content.trim():"";m&&(v.text=v.text?`${v.text}
9
9
 
10
- ${m}`:m),v.status!=="failed"&&v.status!=="closed"&&(v.status=c.status||"idle");break}case"error":c.error&&(v.error=c.error.message||String(c.error));break;default:break}v.updatedAt=Date.now(),this.yeaftSubAgentCards={...this.yeaftSubAgentCards,[d]:v};break}case"history_loaded":{let a={...r,agentId:e.agentId||null,requestId:r.requestId||e.requestId||null};if(a.requestId&&!this.isCurrentYeaftHistoryResponse(a))break;let l=e.agentId||null,c=r.sessionId??null,d=Pe(l,c),u=e.perfTraceId||this.yeaftHistoryPerfTraceBySession?.[d];u&&vt(this,{traceId:u,phase:"history.loaded_event",agentId:e.agentId||null,sessionId:r.sessionId||null,messageType:r.type,detail:{mode:r.mode||"recent",count:r.count||0,hasMore:!!r.hasMore}});let p=r.mode==="delta"?"delta":"recent",f=this.yeaftSessionHistoryState[d]||{},g=Number.isFinite(r.latestSeq)?r.latestSeq:Number.isFinite(f.latestSeq)?f.latestSeq:null,v=Number.isFinite(r.nextBeforeSeq)?r.nextBeforeSeq:Number.isFinite(r.oldestSeq)?r.oldestSeq:Number.isFinite(f.serverOldestFetchedSeq)?f.serverOldestFetchedSeq:Number.isFinite(f.oldestSeq)?f.oldestSeq:null,m=p==="delta"?{...f,loaded:!0,loading:!1,latestSeq:g,syncingAfterSeq:null,count:(f.count||0)+(r.count||0)}:{...f,loaded:!0,loading:!1,hasMore:!!r.hasMore,serverHasMore:!!r.hasMore,oldestSeq:v,serverOldestFetchedSeq:v,count:typeof r.count=="number"?r.count:0,latestSeq:g,syncingAfterSeq:null},b=a.requestId?this.finishYeaftHistoryLoad(a,m,"completion"):null;b||(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[d]:m});let h=Pe(l?this.currentAgent:null,this.yeaftActiveSessionFilter??null);if(d===h)p==="recent"&&(this.yeaftHasMoreHistory=m.hasMore,this.yeaftOldestLoadedSeq=m.serverOldestFetchedSeq),this.yeaftLoadingMoreHistory=!!b?.loading;else if(this.yeaftLoadingMoreHistory){let w=this.yeaftSessionHistoryState[h]||null;this.yeaftLoadingMoreHistory=!!w?.loading}}break;case"vp_snapshot":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&a.applySnapshot(r,e.agentId||null,e.requestId||null);break}case"vp_snapshot_error":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&a.failSnapshot(e.agentId||null,e.requestId||null,r.error||r.message||"VP library request failed");break}case"vp_updated":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&r.vp&&a.upsert(r.vp,r.reason,e.agentId||null);break}case"vp_removed":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&r.vpId&&a.remove(r.vpId,r.reason,e.agentId||null);break}case"vp_crud_result":{let a=this._vpCrudPending&&this._vpCrudPending.get(r.requestId);a&&(this._vpCrudPending.delete(r.requestId),a.resolve({ok:!!r.ok,op:r.op,vpId:r.vpId,vp:r.vp,error:r.error||null}));break}case"group_list_updated":case"session_list_updated":case"yeaft_session_hydrate":{let a=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore(),l=r.sessions||[];if(r.projectsAuthoritative===!0&&Array.isArray(r.projects)?this.applySessionCatalogSnapshot(this.sessionCatalog,r.projects):Array.isArray(r.projects)&&e.agentId&&this.applyLegacyProjectSnapshot(r.projects,e.agentId),r.type!=="yeaft_session_hydrate"&&this.yeaftSessionHydrateRequestId&&this.yeaftSessionInventoryCompleteSupported===!0){let f=Array.isArray(this.yeaftSessionHydrateSlices)?this.yeaftSessionHydrateSlices.filter(g=>g.agentId!==(e.agentId||null)):[];this.yeaftSessionHydrateSlices=[...f,{agentId:e.agentId||null,sessions:l}];break}let c=a&&a.activeSessionId||null,d=a?.activeSessionKey&&a.sessions?.[a.activeSessionKey]?.agentId||null;a&&(a.applySnapshot(l,e.agentId||null),this._hasHandledYeaftSessionHydrate=!0,this.yeaftSessionHydrateError=null);let u=a&&a.activeSessionId||null,p=a?.activeSessionKey&&a.sessions?.[a.activeSessionKey]?.agentId||null;if(this.currentView==="yeaft"&&u){let f=p||Me(this,u,e.agentId||null),g=Pe(f,u),v=this.yeaftSessionHistoryState[g]||null;this.setActiveSessionFilter(u,{agentId:f,force:d!==f||eu(u,c,v)})}break}case"group_roster_changed":case"session_roster_changed":{let a=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();a&&a.applyRosterChange(r,e.agentId||null);break}case"group_crud_result":case"session_crud_result":{let a=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();a&&a.applyCrudResult(r,e.agentId||null),r.ok&&r.op==="delete"&&r.sessionId&&e.agentId&&this.clearYeaftHistoryMemory({agentId:e.agentId,sessionId:r.sessionId});let l=this._sessionCrudPending&&this._sessionCrudPending.get(r.requestId);l&&(()=>{if(this._sessionCrudPending?.get(r.requestId)!==l)return;this._sessionCrudPending.delete(r.requestId);let d=r.session||r.group||null,u=d&&e.agentId&&!d.agentId?{...d,agentId:e.agentId}:d,p=r.sessionId||null,f=r.sessions||null;l.resolve({ok:!!r.ok,op:r.op,session:u,sessionId:p,sessions:f,config:r.config||null,error:r.error||null})})();break}case"vp_turn_start":{if(!r.turnId||!r.vpId)break;let a=il(e.agentId||null,r.turnId)||r.turnId;if(this.activeVpTurns={...this.activeVpTurns,[a]:{agentId:e.agentId||null,turnId:r.turnId,vpId:r.vpId,sessionId:r.sessionId||null,threadId:r.threadId||null,isStreaming:!0,startedAt:r.ts||Date.now()}},r.sessionId){let l=ys(e.agentId||null,r.sessionId);this.yeaftProcessingSessions={...this.yeaftProcessingSessions,...l?{[l]:!0}:{[r.sessionId]:!0}}}break}case"vp_turn_end":{if(!r.turnId)break;let a=wn(this,e.agentId||null,r.turnId),l=r.sessionId||this.activeVpTurns?.[a]?.sessionId||null;r.reason==="end_turn"&&l&&this.markYeaftSessionUnread(l,e.agentId||null);let{[a]:c,...d}=this.activeVpTurns;this.activeVpTurns=d;let{[a]:u,...p}=this.stoppingVpTurnIds;this.stoppingVpTurnIds=p;let f=r.sessionId||c?.sessionId||null,g=e.agentId||c?.agentId||null,v=r.vpId||c?.vpId||null;if(!(f&&v?Object.values(this.activeVpTurns||{}).some(y=>y?.vpId===v&&Mt(y,f,g)):!1)&&f&&v){let y={...this.vpStatuses||{}},k=!1;for(let[_,A]of Object.entries(y))A?.vpId===v&&Mt(A,f,g)&&Jr.has(A.state)&&(y[_]={...A,state:"idle",turnId:null,since:r.ts||Date.now()},k=!0);k&&(this.vpStatuses=y)}this.clearYeaftSessionProcessingIfIdle(f,{agentId:g});let h={end_turn:"completed",route_forward:"completed",aborted:"aborted",errored:"errored",error:"errored",cancelled:"cancelled",canceled:"cancelled"}[r.reason]||"completed",w=Date.now(),I=Ss(this,e.agentId||null,e.conversationId);if(I&&Array.isArray(this.messagesMap[I])){let y=this.messagesMap[I],k=Vp(y,r);for(let _=0;_<y.length;_++){let A=y[_];if(!A||A.type!=="assistant")continue;let Q=A.sessionId??A.groupId;r.sessionId&&Q&&Q!==r.sessionId||r.vpId&&A.speakerVpId&&A.speakerVpId!==r.vpId||r.turnId&&A.turnId&&A.turnId!==r.turnId||A.status&&A.status!=="pending"||(A.status=h,A.turnEndAt=w,A.turnEndReason=r.reason||null,r.detail&&(A.turnEndDetail=r.detail),Number.isFinite(r.durationMs)&&(A.turnDurationMs=r.durationMs),k=!0)}k&&(this.messagesMap={...this.messagesMap,[I]:y.slice()}),this.pruneConversationMessageRetention(I,f,g)}break}case"yeaft_turn_aborted":{let a=Array.isArray(r.turnIds)?r.turnIds.filter(Boolean):[];r.turnId&&a.push(r.turnId);let l=r.sessionId||null,c=r.vpId||null,d=new Set;for(let g of a){let v=wn(this,e.agentId||null,g),m=this.activeVpTurns?.[v]||null;(!m||Mt(m,m.sessionId,e.agentId||null))&&d.add(v)}if(c)for(let[g,v]of Object.entries(this.activeVpTurns||{}))!v||v.vpId!==c||Mt(v,l,e.agentId||null)&&d.add(g);if(d.size===0)break;let u=l,p={...this.activeVpTurns||{}},f={...this.stoppingVpTurnIds||{}};for(let g of d){let v=p[g];!u&&v?.sessionId&&(u=v.sessionId),delete p[g],delete f[g]}this.activeVpTurns=p,this.stoppingVpTurnIds=f,this.clearYeaftSessionProcessingIfIdle(u||null,{agentId:e.agentId||null});break}case"yeaft_aborted":{let a=r.sessionId||e.sessionId||null;a?(this.activeVpTurns=Object.fromEntries(Object.entries(this.activeVpTurns||{}).filter(([,l])=>!Mt(l,a,e.agentId||null))),this.stoppingVpTurnIds=Object.fromEntries(Object.entries(this.stoppingVpTurnIds||{}).filter(([l])=>this.activeVpTurns?.[l])),this.vpStatuses=Object.fromEntries(Object.entries(this.vpStatuses||{}).filter(([,l])=>!Mt(l,a,e.agentId||null))),this.clearYeaftSessionProcessingIfIdle(a,{agentId:e.agentId||null,ignoreStatuses:!0})):r.all&&Np(this,e.agentId||null);break}case"vp_typing_start":{if(!r.vpId)break;let a=Ss(this,e.agentId||null,e.conversationId);if(!a)break;this.yeaftVpTyping=bp(this.yeaftVpTyping,a,r.vpId);break}case"vp_typing_end":{if(!r.vpId)break;let a=Ss(this,e.agentId||null,e.conversationId);if(!a)break;this.yeaftVpTyping=wp(this.yeaftVpTyping,a,r.vpId);break}case"vp_status_changed":{if(!r.vpId||!r.state)break;if(o){let u=xl(i);if(r.state==="thinking"||r.state==="retrying"||r.state==="tool")Fr(this,o,`${r.state}:${u}`);else if(r.state==="streaming"||r.state==="idle"||r.state==="error")for(let p of["thinking","retrying","tool"])Nn(this,o,`${p}:${u}`)}let a=r.sessionId||null,l=e.agentId||null,c=ao(l,a,r.vpId),d={agentId:l,state:r.state,since:r.since||Date.now(),turnId:r.turnId||null,title:r.title||"",sessionId:a,vpId:r.vpId};if(this.vpStatuses={...this.vpStatuses,[c]:d},a&&Jr.has(r.state)){let u=ys(l,a);this.yeaftProcessingSessions={...this.yeaftProcessingSessions,...u?{[u]:!0}:{[a]:!0}}}else a&&this.clearYeaftSessionProcessingIfIdle(a,{agentId:l});this.restoreActiveYeaftSessionFromStatuses([d],l);break}case"vp_status_snapshot":{let a=Array.isArray(r.statuses)?r.statuses:[],l=r.sessionId;if(l==null){let c={...this.vpStatuses||{}};if(e.agentId)for(let[d,u]of Object.entries(c))(!u?.agentId||u.agentId===e.agentId)&&delete c[d];else for(let d of Object.keys(c))delete c[d];for(let d of a){if(!d||!d.vpId)continue;let u=d.sessionId||d.groupId||null,p=ao(e.agentId||null,u,d.vpId);c[p]={agentId:e.agentId||null,state:d.state,since:d.since||Date.now(),turnId:d.turnId||null,title:d.title||"",sessionId:u,vpId:d.vpId}}this.vpStatuses=c}else{let c={...this.vpStatuses};for(let[d,u]of Object.entries(c))u&&u.sessionId===l&&(!e.agentId||!u.agentId||u.agentId===e.agentId)&&delete c[d];for(let d of a){if(!d||!d.vpId)continue;let u=d.sessionId||d.groupId||null,p=ao(e.agentId||null,u,d.vpId);c[p]={agentId:e.agentId||null,state:d.state,since:d.since||Date.now(),turnId:d.turnId||null,title:d.title||"",sessionId:u,vpId:d.vpId}}this.vpStatuses=c}this.yeaftProcessingSessions=Ib(this,e.agentId||null,a,l??null),this.restoreActiveYeaftSessionFromStatuses(a,e.agentId||null);break}case"yeaft_dream_snapshot":{let a=r&&r.snapshot,l=a&&typeof a.scope=="string"?a.scope:null;l&&(this.yeaftDreamSnapshots={...this.yeaftDreamSnapshots,[l]:{...a,receivedAt:Date.now()}});break}case"yeaft_dream_status":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&a.applyDreamStatus(r);break}case"yeaft_dream_result":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&a.applyDreamResult(r),r?.snapshot?.scope&&(this.yeaftDreamSnapshots={...this.yeaftDreamSnapshots,[r.snapshot.scope]:{...r.snapshot,receivedAt:Date.now()}});{let l=typeof r?.snapshot?.scope=="string"&&r.snapshot.scope?r.snapshot.scope:typeof r?.sessionId=="string"&&r.sessionId?`sessions/${r.sessionId}`:null;if(!l)break;let c=this.yeaftDreamLatest[l]||null;this.yeaftDreamLatest={...this.yeaftDreamLatest,[l]:{scope:l,phase:"result",status:r.skipped?"skipped":r.success?"success":"error",startedAt:c?.startedAt??null,finishedAt:Date.now(),mergedCount:typeof r.entriesCreated=="number"?r.entriesCreated:c?.mergedCount??null,error:r.skipped||r.success?null:r.error||"unknown",manual:typeof r?.manual=="boolean"?r.manual:c?.manual??null,durationMs:typeof r.durationMs=="number"?r.durationMs:c?.durationMs??null,llmCallCount:typeof r.llmCallCount=="number"?r.llmCallCount:c?.llmCallCount??0,inputTokens:typeof r.inputTokens=="number"?r.inputTokens:c?.inputTokens??0,outputTokens:typeof r.outputTokens=="number"?r.outputTokens:c?.outputTokens??0,totalTokens:typeof r.totalTokens=="number"?r.totalTokens:c?.totalTokens??0,metrics:r.metrics||c?.metrics||null,passBreakdown:r.passBreakdown||r.metrics?.passBreakdown||c?.passBreakdown||null,isRunning:!1}},this._appendDreamEvent(l,{type:"dream_progress",phase:"result",sessionId:r.sessionId,status:r.skipped?"skipped":r.success?"success":"error",success:!!r.success,entriesCreated:typeof r.entriesCreated=="number"?r.entriesCreated:null,trigger:r.trigger||null,error:r.skipped||r.success?null:r.error||null,skipped:!!r.skipped,skippedReason:r.skippedReason||null,durationMs:typeof r.durationMs=="number"?r.durationMs:null,llmCallCount:typeof r.llmCallCount=="number"?r.llmCallCount:0,inputTokens:typeof r.inputTokens=="number"?r.inputTokens:0,outputTokens:typeof r.outputTokens=="number"?r.outputTokens:0,totalTokens:typeof r.totalTokens=="number"?r.totalTokens:0,metrics:r.metrics||null,passBreakdown:r.passBreakdown||r.metrics?.passBreakdown||null,ts:Date.now()})}break}case"dream_progress":{let a=r?.phase||"unknown",l=null;typeof r?.target=="string"&&r.target.includes("/")?l=r.target:typeof r?.sessionId=="string"&&r.sessionId?l=`sessions/${r.sessionId}`:l="*";let c=a==="done",d=a==="error"||r?.status==="error",u=!c&&!d,p=f=>{let g=this.yeaftDreamLatest[f]||null;return{scope:f,phase:a,status:d?"error":c?"success":"running",startedAt:g?.startedAt&&u?g.startedAt:r?.ts||g?.startedAt||Date.now(),finishedAt:c||d?r?.ts||Date.now():null,mergedCount:typeof r?.mergedCount=="number"?r.mergedCount:typeof r?.targets=="number"?r.targets:g?.mergedCount??null,error:d?r?.error||"unknown":null,manual:typeof r?.manual=="boolean"?r.manual:g?.manual??!1,durationMs:typeof r?.duration=="number"?r.duration:typeof r?.durationMs=="number"?r.durationMs:g?.durationMs??null,llmCallCount:typeof r?.llmCallCount=="number"?r.llmCallCount:g?.llmCallCount??0,inputTokens:typeof r?.inputTokens=="number"?r.inputTokens:g?.inputTokens??0,outputTokens:typeof r?.outputTokens=="number"?r.outputTokens:g?.outputTokens??0,totalTokens:typeof r?.totalTokens=="number"?r.totalTokens:g?.totalTokens??0,metrics:r?.metrics||g?.metrics||null,passBreakdown:r?.passBreakdown||r?.metrics?.passBreakdown||g?.passBreakdown||null,isRunning:u}};if(l==="*"){let f={...this.yeaftDreamLatest,"*":p("*")};for(let g of Object.keys(this.yeaftDreamLatest))g!=="*"&&(f[g]=p(g));this.yeaftDreamLatest=f}else this.yeaftDreamLatest={...this.yeaftDreamLatest,[l]:p(l)};this._appendDreamEvent(l,r);break}}},_appendDreamEvent(e,t){if(!e||!t)return;let s=Date.now(),n={...t,at:s},r=Array.isArray(this.yeaftDreamEvents?.[e])?this.yeaftDreamEvents[e]:[],i=l=>[l?.type||"",l?.phase||"",(l?.sessionId??l?.groupId)||"",l?.target||"",l?.ts||l?.at||""].join("|"),o=i(n);if(r.some(l=>i(l)===o))return;let a=[...r,n];a.length>ef&&a.splice(0,a.length-ef),this.yeaftDreamEvents={...this.yeaftDreamEvents,[e]:a}},fetchExpertRoleDefinitions(){if(this.expertRoleDefinitions)return;let e=this.currentAgent;e&&this.sendWsMessage({type:"get_expert_roles",agentId:e})},setYeaftSidebarEnabled(e){try{typeof localStorage<"u"&&localStorage.removeItem("yeaft-sidebar-enabled")}catch{}},vpCrudRequest(e,t){(!this._vpCrudPending||typeof this._vpCrudPending.get!="function")&&(this._vpCrudPending=new Map);let s="vpc_"+Date.now().toString(36)+"_"+Math.random().toString(36).slice(2,8),r={create:"yeaft_vp_create",update:"yeaft_vp_update",delete:"yeaft_vp_delete",read:"yeaft_vp_read"}[e];if(!r)return Promise.resolve({ok:!1,op:e,error:{code:"bad_op",message:"unknown op: "+e}});let i={type:r,requestId:s};return e==="create"||e==="update"?i.payload=t||{}:i.vpId=t,new Promise(o=>{let a=setTimeout(()=>{this._vpCrudPending&&this._vpCrudPending.has(s)&&(this._vpCrudPending.delete(s),o({ok:!1,op:e,error:{code:"timeout",message:"vp_crud timeout"}}))},1e4);this._vpCrudPending.set(s,{resolve:l=>{clearTimeout(a),o(l)}}),this.sendWsMessage(i)})},sessionCrudRequest(e,t,s={}){(!this._sessionCrudPending||typeof this._sessionCrudPending.get!="function")&&(this._sessionCrudPending=new Map);let n="grc_"+Date.now().toString(36)+"_"+Math.random().toString(36).slice(2,8),i={list:"yeaft_list_sessions",create:"yeaft_create_session",copy:"yeaft_copy_session",rename:"yeaft_rename_session",update:"yeaft_update_session",update_config:"yeaft_update_session_config",archive:"yeaft_archive_session",delete:"yeaft_delete_session",add_member:"yeaft_session_add_member",remove_member:"yeaft_session_remove_member",set_default_vp:"yeaft_session_set_default_vp",reorder:"reorder_yeaft_sessions",scan_workdir:"yeaft_scan_workdir_sessions",restore:"yeaft_restore_session"}[e];if(!i)return Promise.resolve({ok:!1,op:e,error:{code:"bad_op",message:"unknown op: "+e}});let o={type:i,requestId:n};e==="create"?o.payload=t||{}:t&&typeof t=="object"&&Object.assign(o,t);let a=s&&s.agentId?s.agentId:null;a&&(o.agentId=a);let l=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();return l&&l.markPending(n,e),new Promise(c=>{let d=setTimeout(()=>{this._sessionCrudPending&&this._sessionCrudPending.has(n)&&(this._sessionCrudPending.delete(n),c({ok:!1,op:e,error:{code:"timeout",message:"group_crud timeout"}}))},1e4);this._sessionCrudPending.set(n,{resolve:u=>{clearTimeout(d),c(u)}}),this.sendWsMessage(o)})},markYeaftSessionUnread(e,t=null){if(!e)return!1;let s=Me(this,e,t);if(!s)return!1;let n=Tr(s,e);return this.currentView==="yeaft"&&this.yeaftActiveSessionFilter===e&&Me(this,e)===s||this.yeaftUnreadSessionKeys?.[n]?!1:(this.yeaftUnreadSessionKeys={...this.yeaftUnreadSessionKeys,[n]:!0},!0)},markYeaftSessionRead(e,t=null){if(!e)return!1;let s=Me(this,e,t);if(!s)return!1;let n=Tr(s,e);if(!this.yeaftUnreadSessionKeys?.[n])return!1;let{[n]:r,...i}=this.yeaftUnreadSessionKeys;return this.yeaftUnreadSessionKeys=i,!0},restoreActiveYeaftSessionFromStatuses(e=[],t=null){if(this.yeaftActiveSessionFilter)return null;let n=(Array.isArray(e)?e:[]).filter(o=>o&&(o.sessionId||o.groupId)&&!["idle","offline","completed","failed","aborted"].includes(o.state)).sort((o,a)=>(a.updatedAt||a.since||0)-(o.updatedAt||o.since||0)),r=n[0]?.sessionId||n[0]?.groupId||null;if(!r)return null;let i=t||n[0]?.agentId||tf(this,r);if(!i)return null;this.setActiveSessionFilter(r,{agentId:i,force:!0});try{let o=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();o&&typeof o.setActive=="function"&&o.setActive(r,i)}catch{}return r},setActiveSessionFilter(e,t={}){let s=this.yeaftActiveSessionFilter||null,n=e||null,r=n?Me(this,n,t.agentId||null):this.currentAgent,i=!!n&&n===s&&!!r&&!!this.currentAgent&&r!==this.currentAgent,o=!!t.force||i;if(this.yeaftActiveSessionFilter=n,r&&n&&this.currentAgent!==r){this.selectAgent(r);let l=this.agents.find(c=>c.id===r);this.activateYeaftAgent(r,l||null)}else r&&n&&this.activateYeaftAgent(r);r&&n&&(this.markYeaftSessionRead(n,r),Yd(this,r,n));let a=!o&&n===s;if(r&&n){this.yeaftSessionAgentById={...this.yeaftSessionAgentById||{},[n]:r};let l=this.yeaftConversationIdsByAgent?.[r]||null;l||(l=`yeaft-local-${r}-${Date.now()}`,this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[r]:l}),this.yeaftConversationId=l,this.messagesMap[l]||(this.messagesMap[l]=[]),this.currentView==="yeaft"&&(this.activeConversations=[l])}try{let l=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();l&&typeof l.setActive=="function"&&l.setActive(n,r||null);let c=l?.activeSessionKey||null;c?localStorage.setItem("lastViewedYeaftSession",c):localStorage.removeItem("lastViewedYeaftSession")}catch{}this.syncActiveYeaftHistoryLoad(),n&&r&&!a&&this.requestYeaftSessionBootstrap({forceSessionReady:!0,forceHistoryReplay:!0})},async switchYeaftModel(e,t=null,s=void 0){if(!e||!this.currentAgent)return;let n=t||null;if(n){let r={model:e};return s!==void 0&&(r.modelEffort=s||null),await this.sessionCrudRequest("update_config",{sessionId:n,config:r},{agentId:Me(this,n)})}return this.sendWsMessage({type:"yeaft_model_switch",model:e,modelEffort:s||null,agentId:this.currentAgent}),null},setYeaftDebugSearch(e){this.yeaftDebugSearch=typeof e=="string"?e:"",this._yeaftDebugSearchTimer&&clearTimeout(this._yeaftDebugSearchTimer),this._yeaftDebugSearchTimer=setTimeout(()=>{this._yeaftDebugSearchTimer=null,this.yeaftDebugLoops=[],this.yeaftDebugTurnsById={},this.yeaftDebugTurnOrder=[],this.loadYeaftDebugHistory({limit:this.yeaftDebugSearch.trim()?Jp:Tl,dreamLimit:5,indexOnly:!0,search:this.yeaftDebugSearch})},250)},setYeaftDebugSessionFilter(e){e==null?this.yeaftDebugSessionFilter=null:this.yeaftDebugSessionFilter=String(e)},toggleSubAgentCardExpand(e){let t=this.yeaftSubAgentCards?.[e];t&&(this.yeaftSubAgentCards={...this.yeaftSubAgentCards,[e]:{...t,expanded:!t.expanded}})},requestTelemetrySettings(e,t,s=null){if(!t)return Promise.reject(new Error("no agent"));let n=`telemetry-${Date.now()}-${Math.random().toString(36).slice(2)}`;return this.telemetryRequestByAgent={...this.telemetryRequestByAgent,[t]:n},new Promise((r,i)=>{this._telemetryPending||(this._telemetryPending={});let o=setTimeout(()=>{if(delete this._telemetryPending[n],this.telemetryRequestByAgent?.[t]===n){let a={...this.telemetryRequestByAgent};delete a[t],this.telemetryRequestByAgent=a}i(new Error("Telemetry request timed out"))},15e3);this._telemetryPending[n]={resolve:r,reject:i,timer:o,agentId:t,operation:e,requestId:n},this.sendWsMessage({type:e==="load"?"get_telemetry_settings":"update_telemetry_settings",agentId:t,requestId:n,...e==="update"?{settings:s||{}}:{}})})},loadTelemetrySettings(e=this.currentAgent){return e?this.requestTelemetrySettings("load",e):Promise.resolve({enabled:!0,retentionDays:3,flushIntervalMs:1e3,maxQueueSize:5e3,rawExchangeMaxBytes:524288,traceTextMaxBytes:262144,loaded:!0})},updateTelemetrySettings(e,t=this.currentAgent){return this.requestTelemetrySettings("update",t,e)},restartAgent(e){if(!e||this.agentOperations?.[e]?.restart?.pending)return!1;let t=`restart-${Date.now()}-${Math.random().toString(36).slice(2)}`,s=setTimeout(()=>this.finishAgentOperation(e,"restart","timeout"),12e4);return this.agentOperations={...this.agentOperations,[e]:{...this.agentOperations[e]||{},restart:{pending:!0,acknowledged:!1,startedAt:Date.now(),requestId:t,timer:s,error:null}}},this.sendWsMessage({type:"restart_agent",agentId:e,requestId:t}),!0},upgradeAgent(e,t=null){if(!e||this.agentOperations?.[e]?.upgrade?.pending)return!1;let s=this.agents.find(i=>i.id===e),n=`upgrade-${Date.now()}-${Math.random().toString(36).slice(2)}`,r=setTimeout(()=>this.finishAgentOperation(e,"upgrade","timeout"),12e4);return this.agentOperations={...this.agentOperations,[e]:{...this.agentOperations[e]||{},upgrade:{pending:!0,acknowledged:!1,startedAt:Date.now(),requestId:n,oldVersion:s?.version||null,batchId:t,timer:r,error:null}}},this.sendWsMessage({type:"upgrade_agent",agentId:e,requestId:n}),!0},getUpgradableAgents(){return(this.agents||[]).filter(e=>e?.online&&Array.isArray(e.capabilities)&&e.capabilities.includes("remote_upgrade_safe")&&!e.capabilities.includes("container_agent")&&!this.agentOperations?.[e.id]?.restart?.pending&&!this.agentOperations?.[e.id]?.upgrade?.pending)},upgradeAllAgents(){if(this.agentUpgradeBatch?.pending)return null;let e=this.getUpgradableAgents();if(e.length===0)return null;let t={id:`upgrade-batch-${Date.now()}-${Math.random().toString(36).slice(2)}`,pending:!0,startedAt:Date.now(),agentIds:e.map(s=>s.id),skippedCount:Math.max(0,(this.agents||[]).length-e.length),results:{}};this.agentUpgradeBatch=t;for(let s of e)this.upgradeAgent(s.id,t.id)||this.recordAgentUpgradeBatchResult(s.id,{status:"failed",error:"not_started"},t.id);return t.agentIds.length},recordAgentUpgradeBatchResult(e,t={},s=null){let n=this.agentUpgradeBatch;if(!n?.pending||s&&n.id!==s||!n.agentIds.includes(e)||n.results[e])return null;let r={...n,results:{...n.results,[e]:{status:t.status||"failed",error:t.error||null,version:t.version||null,reason:t.reason||null}}},i=r.agentIds.every(o=>r.results[o]);return this.agentUpgradeBatch=i?{...r,pending:!1,completedAt:Date.now()}:r,i&&typeof window<"u"&&window.dispatchEvent(new CustomEvent("agent-upgrade-batch-complete",{detail:this.agentUpgradeBatch})),i?this.agentUpgradeBatch:null},finishAgentOperation(e,t,s=null){let n=this.agentOperations?.[e]?.[t];n&&(clearTimeout(n.timer),this.agentOperations={...this.agentOperations,[e]:{...this.agentOperations[e]||{},[t]:{...n,pending:!1,timer:null,error:s}}},t==="upgrade"&&n.batchId&&this.recordAgentUpgradeBatchResult(e,s?{status:"failed",error:s}:{status:"upgraded"},n.batchId))},loadSearchSettings(){return this.currentAgent?new Promise(e=>{this._searchPending||(this._searchPending={}),this._searchPending.load=e,this.sendWsMessage({type:"get_search_settings",agentId:this.currentAgent})}):(this.searchSettings={backend:"tavily",tavilyKeyConfigured:!1,tavilyKeyMasked:null,disableHtmlFallback:!1,loaded:!0},Promise.resolve(this.searchSettings))},updateSearchSettings(e){return this.currentAgent?new Promise(t=>{this._searchPending||(this._searchPending={}),this._searchPending.update=t,this.sendWsMessage({type:"update_search_settings",agentId:this.currentAgent,settings:e||{}})}):Promise.resolve({error:"no agent"})},loadTavilyUsage(){return this.currentAgent?(this.tavilyUsageLoading=!0,new Promise(e=>{this._searchPending||(this._searchPending={}),this._searchPending.usage=e,this.sendWsMessage({type:"get_tavily_usage",agentId:this.currentAgent})})):Promise.resolve(null)},loadYeaftMcpServers(){if(!this.currentAgent)return this.yeaftMcpServers=[],this.yeaftMcpRuntime={connected:!1,toolCount:0,perServer:[]},Promise.resolve({servers:[],runtime:this.yeaftMcpRuntime});this.yeaftMcpLoading=!0;let e=`mcp-list-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(t=>{this._mcpPending||(this._mcpPending={}),this._mcpPending[e]=t,this.sendWsMessage({type:"yeaft_mcp_list",agentId:this.currentAgent,requestId:e})})},addYeaftMcpServer(e){if(!this.currentAgent)return Promise.resolve({error:"no agent"});this.yeaftMcpLoading=!0;let t=`mcp-add-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(s=>{this._mcpPending||(this._mcpPending={}),this._mcpPending[t]=s,this.sendWsMessage({type:"yeaft_mcp_add",agentId:this.currentAgent,requestId:t,server:e||{}})})},removeYeaftMcpServer(e){if(!this.currentAgent)return Promise.resolve({error:"no agent"});this.yeaftMcpLoading=!0;let t=`mcp-rem-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(s=>{this._mcpPending||(this._mcpPending={}),this._mcpPending[t]=s,this.sendWsMessage({type:"yeaft_mcp_remove",agentId:this.currentAgent,requestId:t,name:e})})},reloadYeaftMcpServer(e){if(!this.currentAgent)return Promise.resolve({error:"no agent"});this.yeaftMcpLoading=!0;let t=`mcp-rel-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(s=>{this._mcpPending||(this._mcpPending={}),this._mcpPending[t]=s,this.sendWsMessage({type:"yeaft_mcp_reload",agentId:this.currentAgent,requestId:t,name:e||null})})},clearYeaftMessages(){let e=this.yeaftConversationId;e&&(qe(this,e),delete this.messagesMap[e],delete this.processingConversations[e],delete this.executionStatusMap[e],delete this.refreshingSessionMap[e],this._closedAt&&delete this._closedAt[e],this._turnCompletedConvs?.delete(e)),this.yeaftConversationId=this.currentAgent?`yeaft-local-${this.currentAgent}-${Date.now()}`:`yeaft-local-${Date.now()}`,this.currentAgent&&(this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[this.currentAgent]:this.yeaftConversationId}),this.messagesMap[this.yeaftConversationId]=[],this.activeConversations=[this.yeaftConversationId],this.yeaftSessionReady=!1,this.yeaftModel=null,this.yeaftAvailableModels=[],this.yeaftStatus=null,this._yeaftAskTerminalEvents={},this.yeaftDebugLoops=[],this.yeaftDebugTurnsById={},this.yeaftDebugTurnOrder=[],this.yeaftDebugHistoryLoading=!1,this.yeaftDebugHistoryError=null,this.yeaftDebugHistoryFetchedAt=0,this.yeaftDebugHistoryProjection=null,this.yeaftDebugSearch="",this.yeaftDebugSessionFilter=null,this.yeaftDebugPanel={open:!1,status:"idle",requestId:null,agentId:null,sessionId:null,turnId:null,error:null},this._yeaftDebugSearchTimer&&(clearTimeout(this._yeaftDebugSearchTimer),this._yeaftDebugSearchTimer=null),this._fetchYeaftDebugHistoryTimer&&(clearTimeout(this._fetchYeaftDebugHistoryTimer),this._fetchYeaftDebugHistoryTimer=null),this._yeaftDebugHistoryInFlightKey=null,this._yeaftDebugHistoryLatestListRequestId=null,this._yeaftDebugHistoryLatestDetailRequestId=null,this.yeaftReflectionCards={},this.yeaftSubAgentCards={},this.yeaftDreamLatest={},this.yeaftDreamEvents={},this.vpStatuses={},this.currentAgent&&this.sendWsMessage({type:"yeaft_reset",agentId:this.currentAgent})},togglePaneRightPanel(e,t=null){if(t&&this.isSplitMode){let s=this.panels.find(n=>n.id===t);if(s){s.activeRightPanel=s.activeRightPanel===e?null:e;return}}this.activeRightPanel=this.activeRightPanel===e?null:e,this.activeRightPanel&&(this.workbenchExpanded=!1,this.workbenchMaximized=!1,this.rememberWorkbenchPanelState())},getPaneRightPanel(e){if(e&&this.isSplitMode){let t=this.panels.find(s=>s.id===e);if(t)return t.activeRightPanel}return this.activeRightPanel},setPaneRightPanel(e,t){if(e&&this.isSplitMode){let s=this.panels.find(n=>n.id===e);if(s){s.activeRightPanel=t;return}}this.activeRightPanel=t},applySessionCatalogSnapshot(e,t=null,s=null){let n=r=>{let i=new Set;return(Array.isArray(r)?r:[]).filter(o=>!o?.catalogKey||i.has(o.catalogKey)?!1:(i.add(o.catalogKey),!0)).map(o=>({...o}))};if(this.sessionCatalog=n(e),Array.isArray(s)&&(this.hiddenSessionCatalog=n(s)),Array.isArray(t)){this.sessionProjects=t.filter(i=>i?.id).map(i=>({...i,members:Array.isArray(i.members)?i.members.filter(o=>o?.agentId&&o?.sessionId):i.agentId?(i.sessionIds||[]).map(o=>({agentId:i.agentId,sessionId:o})):[]}));let r=new Map;for(let i of this.sessionProjects)for(let o of i.members)r.set(`${o.agentId}${o.sessionId}`,i.id);this.sessionCatalog=this.sessionCatalog.map(i=>i.runtimeProvider==="yeaft"?{...i,projectId:r.get(`${i.routeRef?.agentId}${i.routeRef?.sessionId}`)||null}:i)}this.sessionCatalogLoaded=!0},mutateProject(e,t={},s=null){let n=s||t.agentId||this.currentAgent||null;if(e==="move_session"&&!n)return Promise.resolve({ok:!1,error:{code:"missing_agent"}});let r=`project_${crypto.randomUUID()}`;return new Promise(i=>{let o=setTimeout(()=>{delete this.projectMutationRequests[r],i({ok:!1,error:{code:"timeout"}})},1e4);this.projectMutationRequests[r]={connectionGeneration:Number(this.chatHistoryConnectionGeneration||0),catalogOrder:Array.isArray(t.catalogOrder)?t.catalogOrder:null,resolve:l=>{clearTimeout(o),i(l)}},this.sendWsMessage({type:"yeaft_project_mutation",...n?{agentId:n,targetAgentId:n}:{},requestId:r,op:e,...t})||(clearTimeout(o),delete this.projectMutationRequests[r],i({ok:!1,error:{code:"send_failed"}}))})},applyLegacyProjectSnapshot(e,t){if(!t||!Array.isArray(e))return;let s=this.sessionProjects.filter(r=>r.legacyAgentId!==t),n=e.filter(r=>r?.id).map(r=>({...r,id:`${t}${r.id}`,legacyProjectId:r.id,legacyAgentId:t,members:(r.sessionIds||[]).map(i=>({agentId:t,sessionId:i}))}));this.applySessionCatalogSnapshot(this.sessionCatalog,[...s,...n])},finishLegacyProjectMutation(e,t){if(!e?.requestId)return!1;let s=this.projectMutationRequests[e.requestId]||null;return!s||s.connectionGeneration!==Number(this.chatHistoryConnectionGeneration||0)?!1:(delete this.projectMutationRequests[e.requestId],e.ok&&Array.isArray(e.projects)&&t&&this.applyLegacyProjectSnapshot(e.projects,t),s.resolve(e),!0)},finishProjectMutation(e){if(!e?.requestId)return!1;let t=this.projectMutationRequests[e.requestId]||null;if(!t||t.connectionGeneration!==Number(this.chatHistoryConnectionGeneration||0))return!1;if(delete this.projectMutationRequests[e.requestId],e.ok){if(Array.isArray(t.catalogOrder)){let s=new Map(this.sessionCatalog.map(r=>[r.catalogKey,r])),n=t.catalogOrder.map((r,i)=>{let o=s.get(r?.catalogKey);return o?{...o,sortRank:i}:null}).filter(Boolean);n.length===this.sessionCatalog.length&&(this.sessionCatalog=n,Gp(n))}Array.isArray(e.projects)&&this.applySessionCatalogSnapshot(this.sessionCatalog,e.projects)}return t.resolve(e),!0},toggleCatalogSessionPin(e){if(!e?.catalogKey||!e?.routeRef||Object.keys(this.sessionCatalogMutationRequests).length>0)return!1;let t=`session_ui_${crypto.randomUUID()}`,s=Mr(this,t),n=!e.pinned;return e.pinned=n,this.sendWsMessage({type:"set_session_ui_metadata",requestId:t,catalogKey:e.catalogKey,routeRef:e.routeRef,pinned:n,sortRank:Number.isFinite(e.sortRank)?e.sortRank:null})?!0:(this.sessionCatalog=s,delete this.sessionCatalogMutationRequests[t],!1)},hideCatalogSession(e){if(!e?.catalogKey||!e?.routeRef||Object.keys(this.sessionCatalogMutationRequests).length>0)return!1;let t=`session_hide_${crypto.randomUUID()}`,s=Mr(this,t);return this.sessionCatalog=this.sessionCatalog.filter(r=>r.catalogKey!==e.catalogKey),this.hiddenSessionCatalog=[...(this.hiddenSessionCatalog||[]).filter(r=>r.catalogKey!==e.catalogKey),{...e,hidden:!0}],this.sendWsMessage({type:"set_session_ui_metadata",requestId:t,catalogKey:e.catalogKey,routeRef:e.routeRef,hidden:!0,...Number.isFinite(e.sortRank)?{sortRank:e.sortRank}:{}})?!0:(this.sessionCatalog=s,this.hiddenSessionCatalog=Array.isArray(this.sessionCatalogMutationRequests[t]?.previousHiddenCatalog)?this.sessionCatalogMutationRequests[t].previousHiddenCatalog:[],delete this.sessionCatalogMutationRequests[t],!1)},restoreCatalogSession(e){if(!e?.catalogKey||!e?.routeRef||Object.keys(this.sessionCatalogMutationRequests).length>0)return!1;let t=`session_restore_${crypto.randomUUID()}`,s=Mr(this,t);return this.hiddenSessionCatalog=(this.hiddenSessionCatalog||[]).filter(r=>r.catalogKey!==e.catalogKey),this.sessionCatalog=this.sessionCatalog.some(r=>r.catalogKey===e.catalogKey)?this.sessionCatalog:[...this.sessionCatalog,{...e,hidden:!1}],this.sendWsMessage({type:"set_session_ui_metadata",requestId:t,catalogKey:e.catalogKey,routeRef:e.routeRef,hidden:!1,...Number.isFinite(e.sortRank)?{sortRank:e.sortRank}:{}})?!0:(this.sessionCatalog=s,this.hiddenSessionCatalog=Array.isArray(this.sessionCatalogMutationRequests[t]?.previousHiddenCatalog)?this.sessionCatalogMutationRequests[t].previousHiddenCatalog:[],delete this.sessionCatalogMutationRequests[t],!1)},renameCatalogSession({row:e,title:t}={}){if(!e?.routeRef||!t)return!1;let{runtimeProvider:s,agentId:n,sessionId:r}=e.routeRef;if(s==="yeaft")this.sessionCrudRequest("rename",{sessionId:r,name:t},{agentId:n});else if(s==="claude-code"||s==="copilot")this.renameChatSession(r,t,n);else return!1;return!0},async copyCatalogSession(e){let t=e?.routeRef;if(t?.runtimeProvider!=="yeaft"||!t.agentId||!t.sessionId)return{ok:!1,op:"copy",error:{code:"bad_route",message:"Yeaft Session route required"}};let s=await this.sessionCrudRequest("copy",{sessionId:t.sessionId},{agentId:t.agentId});if(!s?.ok||!s.session?.id)return s;let n={runtimeProvider:"yeaft",agentId:s.session.agentId||t.agentId,sessionId:s.session.id};return this.openCatalogSession({catalogKey:Tr(n.agentId,n.sessionId),routeRef:n}),s},reorderCatalogSessions(e){if(!Array.isArray(e)||e.length===0||Object.keys(this.sessionCatalogMutationRequests).length>0)return!1;let t=`session_order_${crypto.randomUUID()}`,s=Mr(this,t);return this.sessionCatalog=e.map((r,i)=>({...r,sortRank:i})),this.sendWsMessage({type:"reorder_session_catalog",requestId:t,sessions:this.sessionCatalog.map((r,i)=>({catalogKey:r.catalogKey,routeRef:r.routeRef,pinned:!!r.pinned,sortRank:i}))})?!0:(this.sessionCatalog=s,delete this.sessionCatalogMutationRequests[t],!1)},finishSessionCatalogMutation(e){if(!gd(this,e))return!1;if(e?.ok===!0&&e?.type==="session_ui_metadata_updated"){let s=n=>{n&&(n.pinned=e.pinned===!0,Object.prototype.hasOwnProperty.call(e,"sortRank")&&(n.sortRank=Number.isFinite(e.sortRank)?e.sortRank:null))};s(this.sessionCatalog.find(n=>n.catalogKey===e.catalogKey)),s(this.hiddenSessionCatalog.find(n=>n.catalogKey===e.catalogKey))}return e?.ok===!0&&e?.type==="session_catalog_reorder_result"&&Gp(this.sessionCatalog),!0},openCatalogSession(e){if(!e?.catalogKey||!e.routeRef)return!1;let{runtimeProvider:t,agentId:s,sessionId:n}=e.routeRef;if(this.activeCatalogKey=e.catalogKey,t==="yeaft"){let r=this.isSessionHistorySyncing(e.routeRef);return this.enterYeaft(s,{deferBootstrap:!0}),this.setActiveSessionFilter(n,{agentId:s,force:!1}),r||this.reloadYeaftMessages(),!0}return t!=="claude-code"&&t!=="copilot"?!1:(this.currentView==="yeaft"&&this.leaveYeaft(),this.selectConversation(n,s,{refresh:!0}),!0)},syncChatConversationHistory(e){if(!e)return null;let t=Vs(e);if(this.chatHistoryRequests[t]?.loading)return this.chatHistoryRequests[t].requestId;let s=dn(this.messagesMap[e]);return this.requestChatHistory(e,s===null?{mode:"recent",turns:5}:{mode:"delta",afterMessageId:s})},requestChatHistory(e,{mode:t="recent",turns:s=null,beforeId:n=null,afterMessageId:r=null}={}){if(!e)return null;let i=Vs(e);if(this.chatHistoryRequestIdSupported!==!0&&this.chatHistoryRequests[i]?.loading)return null;let o=n??r??null,a=this.beginChatHistoryRequest(e,t,o);return this.sendWsMessage({type:"sync_messages",conversationId:e,...s!=null?{turns:s}:{},...n!=null?{beforeId:n}:{},...r!=null?{afterMessageId:r}:{},requestId:a})?(setTimeout(()=>{_a(this,i,a,"history_load_timeout")},1e4),a):(_a(this,i,a,"send_failed"),null)},beginChatHistoryRequest(e,t="recent",s=null){return hd(this,e,t,s)},isCurrentChatHistoryResponse(e){if(!e?.conversationId||!e?.requestId||!e?.catalogKey)return!1;let t=Vs(e.conversationId);if(e.catalogKey!==t)return!1;let s=this.chatHistoryRequests[t];return!!s&&s.loading===!0&&s.requestId===e.requestId&&Number(s.connectionGeneration||0)===Number(this.chatHistoryConnectionGeneration||0)},finishChatHistoryRequest(e){if(!this.isCurrentChatHistoryResponse(e))return!1;let t=this.chatHistoryRequests[e.catalogKey];return this.chatHistoryRequests[e.catalogKey]={...t,loading:!1},!0},isRefreshingSession(e){return e?!!this.refreshingSessionMap[e]:this.refreshingSession},setRefreshingSession(e,t){e&&(this.refreshingSessionMap[e]=t),this.refreshingSession=t},enterBtwMode(){this.btwMode=!0,this.btwMessages=[],this.btwLoading=!1,this.btwSessionId=null},sendBtwQuestion(e){this.currentConversation&&(this.btwMessages.push({role:"user",content:e}),this.btwMessages.push({role:"assistant",content:""}),this.btwLoading=!0,this.sendWsMessage({type:"btw_question",conversationId:this.currentConversation,question:e,btwSessionId:this.btwSessionId}))},closeBtw(){this.btwMode=!1,this.btwMessages=[],this.btwLoading=!1,this.btwSessionId=null},appendBtwDelta(e){let t=this.btwMessages[this.btwMessages.length-1];t&&t.role==="assistant"&&(t.content+=e)},addSubagent(e,t){this.subagents[e]||(this.subagents[e]={}),this.subagents[e][t.id]={id:t.id,slug:t.slug||t.id,type:t.type||"Task",description:t.description||"",parentToolUseId:t.parentToolUseId||null,status:"running",startTime:Date.now(),messages:[],toolCallCount:0},e===this.currentConversation&&this.activeRightPanel!=="subagents"&&(this.activeRightPanel="subagents")},appendSubagentMessage(e,t,s){let n=this.subagents[e];if(!n||!n[t])return;let r=n[t];if(s?.type==="tool"){r.toolCallCount=Number(r.toolCallCount||0)+1;return}s?.type==="text"&&r.messages.push(s)},completeSubagent(e,t){let s=this.subagents[e];!s||!s[t]||(s[t].status="completed")},sendWsMessage(e){return $d(this,e)},parseWsMessage(e){return Ld(this,e)},connect(){Od(this)},ensureConnected(){return _r(this)},scheduleReconnect(){Vd(this)},manualReconnect(){qd(this)},startHeartbeat(){Fd(this)},stopHeartbeat(){Hd(this)},setupVisibilityHandler(){Bd(this)},handleMessage(e){Bu(this,e)},getOrCreateExecutionStatus(e){return tl(this,e)},handleAssistantOutputFrame(e,t,s=null){Mu(this,e,t,s)},handleClaudeOutput(e,t){this.handleAssistantOutputFrame(e,t,null)},addMessageToConversation(e,t){return Ki(this,e,t)},pruneConversationMessageRetention(e,t=null,s=null,n=void 0){return Kd(this,{conversationId:e,sessionId:t,agentId:s,limits:n})},appendToAssistantMessageForConversation(e,t,s){nu(this,e,t,s)},finishStreamingForConversation(e,t){ru(this,e,t)},sweepStaleStreamingForConversation(e){iu(this,e)},appendToAssistantMessage(e){this.appendToAssistantMessageForConversation(this.currentConversation,e)},finishStreaming(){this.finishStreamingForConversation(this.currentConversation)},addMessage(e){this.addMessageToConversation(this.currentConversation,e)},loadHistoryMessages(e){ou(this,e)},formatDbMessage(e){return au(e)},selectAgent(e){return Gu(this,e)},createConversation(e,t=null,s=null,n=void 0){Qu(this,e,t,s,n)},resumeConversation(e,t,s=null,n=null,r=null){Xu(this,e,t,s,n,r)},selectConversation(e,t,s={}){Zu(this,e,t,s)},updateConversationSettings(e,t){ll(this,e,t)},toggleConversationMcp(e,t){Ju(this,e,t)},deleteConversation(e,t){tp(this,e,t)},closeSession(e,t){ep(this,e,t)},appendColumn(e){ip(this,e)},removeColumn(e){op(this,e)},sendMessageToConversation(e,t,s=[],n={}){ap(this,e,t,s,n)},cancelExecutionForConversation(e){lp(this,e)},addPanel(){if(this.panels.length>=3)return;let e=(t,s)=>({id:t,conversationId:s,activeRightPanel:null});if(this.panels.length===0){let t=localStorage.getItem("splitPanesSaved");if(t){try{let s=JSON.parse(t);if(Array.isArray(s)&&s.length>=2){let n=new Set(this.conversations.map(i=>i.id)),r=s.filter(i=>i&&typeof i.id=="string").map(i=>({...e(i.id,null),conversationId:i.conversationId&&n.has(i.conversationId)?i.conversationId:null}));if(r.length>=2){this.panels=r,this.activePanelId=r[0].id;for(let i of r)i.conversationId&&!this.activeConversations.includes(i.conversationId)&&this.activeConversations.push(i.conversationId),i.conversationId&&!this.messagesMap[i.conversationId]&&(this.messagesMap[i.conversationId]=[],this.requestChatHistory(i.conversationId,{mode:"recent",turns:5}));localStorage.removeItem("splitPanesSaved"),this.saveOpenSessions();return}}}catch{}localStorage.removeItem("splitPanesSaved")}this.panels=[e("panel-0",this.currentConversation),e("panel-1",null)],this.activePanelId="panel-0"}else{let t="panel-"+Date.now();this.panels.push(e(t,null))}this.saveOpenSessions()},removePanel(e){let t=this.panels.findIndex(s=>s.id===e);if(!(t<0)){if(this.panels.splice(t,1),this.panels.length<=1){let s=this.panels[0];s?.conversationId&&(this.activeConversations=[s.conversationId]),this.panels=[],this.activePanelId=null}else this.activePanelId===e&&(this.activePanelId=this.panels[0]?.id||null);this.saveOpenSessions()}},setPanelConversation(e,t,{refresh:s=!1}={}){let n=this.panels.find(i=>i.id===e);if(!n)return;let r=n.conversationId===t;n.conversationId=t,t&&!this.activeConversations.includes(t)&&this.activeConversations.push(t),t&&!this.messagesMap[t]?(this.messagesMap[t]=[],this.syncChatConversationHistory(t)):t&&(s||!r)&&this.syncChatConversationHistory(t),this.saveOpenSessions()},setActivePanel(e){this.activePanelId=e},splitToPanel(e){if(!e)return;let t=(s,n)=>({id:s,conversationId:n,activeRightPanel:null});if(this.panels.length===0)this.panels=[t("panel-0",this.currentConversation),t("panel-"+Date.now(),e)],this.activePanelId=this.panels[1].id;else if(this.panels.length>=3)this.panels[this.panels.length-1].conversationId=e,this.activePanelId=this.panels[this.panels.length-1].id;else{let s="panel-"+Date.now();this.panels.push(t(s,e)),this.activePanelId=s}this.activeConversations.includes(e)||this.activeConversations.push(e),this.messagesMap[e]||(this.messagesMap[e]=[],this.requestChatHistory(e,{mode:"recent",turns:5})),this.saveOpenSessions()},isInAnyPanel(e){return this.panels.some(t=>t.conversationId===e)},setSessionPinned(e,t,s={}){if(!e)return;let n=s&&s.agentId?s.agentId:null,r=n?!!ns()?.sessionById?.(e,n)?.pinned:this.pinnedSessions.includes(e);if(t&&!r)this.pinnedSessions.unshift(e);else if(!t&&r){let i=this.pinnedSessions.indexOf(e);i>=0&&this.pinnedSessions.splice(i,1)}try{localStorage.setItem("pinned-sessions",JSON.stringify(this.pinnedSessions))}catch{}try{let i=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore(),o=Me(this,e,n);i&&typeof i.applyPinState=="function"&&i.applyPinState(e,!!t,o)}catch{}},togglePin(e,t={}){let s=t&&t.agentId?t.agentId:null,n=s?ns()?.sessionById?.(e,s):null,r=t&&Object.prototype.hasOwnProperty.call(t,"pinned"),o=!(n?!!n.pinned:r?!!t.pinned:this.pinnedSessions.includes(e));this.setSessionPinned(e,o,{agentId:s});let a={type:o?"pin_session":"unpin_session",conversationId:e};t&&t.sessionKind==="yeaft"&&(a.sessionKind="yeaft",t.agentId&&(a.agentId=t.agentId),t.sessionName&&(a.sessionName=t.sessionName),t.workDir&&(a.workDir=t.workDir)),this.sendWsMessage(a)},isSessionPinned(e){return this.pinnedSessions.includes(e)},applyServerPinSnapshot(e,t,s){if(!Array.isArray(this.pinnedSessions))return;let n=new Set(this.pinnedSessions),r=[];for(let i of t)n.has(i)||r.push(i);if(r.length>0&&(this.pinnedSessions=[...r,...this.pinnedSessions]),e){let i=this.pinnedSessions.filter(o=>s(o)?t.has(o):!0);i.length!==this.pinnedSessions.length&&(this.pinnedSessions=i)}try{localStorage.setItem("pinned-sessions",JSON.stringify(this.pinnedSessions))}catch{}},clearYeaftSessionProcessingIfIdle(e,{agentId:t=null,ignoreStatuses:s=!1}={}){if(!e)return;let n=t||Me(this,e);if(Object.values(this.activeVpTurns||{}).some(a=>Mt(a,e,n))||!s&&Object.values(this.vpStatuses||{}).some(l=>Mt(l,e,n)&&Jr.has(l?.state)))return;let i=ys(n,e),o={...this.yeaftProcessingSessions||{}};i&&delete o[i],co(this,e,n)&&delete o[e],this.yeaftProcessingSessions=o},sendMessage(e,t=[],s={}){sp(this,e,t,s)},cancelExecution(){np(this)},cancelYeaft(){if(!this.currentAgent)return;this.sendWsMessage({type:"yeaft_abort_all",agentId:this.currentAgent});let e=this.yeaftConversationIdsByAgent?.[this.currentAgent]||this.yeaftConversationId;e&&delete this.processingConversations[e],Np(this,this.currentAgent)},cancelYeaftSession(e){let t=Me(this,e);!t||!e||(this.sendWsMessage({type:"yeaft_abort_all",agentId:t,sessionId:e}),this.activeVpTurns=Object.fromEntries(Object.entries(this.activeVpTurns||{}).filter(([,s])=>!Mt(s,e,t))),this.stoppingVpTurnIds=Object.fromEntries(Object.entries(this.stoppingVpTurnIds||{}).filter(([s])=>this.activeVpTurns?.[s])),this.vpStatuses=Object.fromEntries(Object.entries(this.vpStatuses||{}).filter(([,s])=>!Mt(s,e,t))),this.clearYeaftSessionProcessingIfIdle(e,{agentId:t,ignoreStatuses:!0}))},cancelVpTurn(e,{sessionId:t=null,vpId:s=null}={}){let n=Me(this,t);if(!n||!e)return;let r=wn(this,n,e);this.stoppingVpTurnIds={...this.stoppingVpTurnIds,[r]:Date.now()};let i={type:"yeaft_abort_turn",agentId:n,turnId:e};t&&(i.sessionId=t),s&&(i.vpId=s),this.sendWsMessage(i)},cancelVpTurnForSession(e,t=null){if(!e)return!1;let s=t||this.yeaftActiveSessionFilter||null;if(!s)return!1;let n=Me(this,s);if(!n)return!1;let r=this.activeVpTurns||{},i=null,o=-1/0;for(let[a,l]of Object.entries(r)){if(!l||l.vpId!==e||!Mt(l,s,n))continue;let c=typeof l.startedAt=="number"?l.startedAt:0;c>=o&&(o=c,i=a)}if(!i){let a=this.vpStatuses?.[ao(n,s,e)]||null;a?.turnId&&!["idle","offline"].includes(a.state)&&(i=a.turnId)}if(i){let a=r[i]?.turnId||i;return this.cancelVpTurn(a,{sessionId:s,vpId:e}),!0}return this.sendWsMessage({type:"yeaft_abort_turn",agentId:n,sessionId:s,vpId:e}),!0},answerUserQuestion(e,t,s){rp(this,e,t,s)},refreshAgents(){cp(this)},refreshConversation(){dp(this)},setDreamEnabled(e,t){if(!e||this.agentDreamState?.[e]?.pending)return!1;let s=this.agents.find(o=>o.id===e),n=t!==!1,r=`dream-${Date.now()}-${Math.random().toString(36).slice(2)}`,i=setTimeout(()=>{let o=this.agentDreamState?.[e];!o?.pending||o.requestId!==r||(this.agentDreamState={...this.agentDreamState,[e]:{...o,pending:!1,timer:null,error:"timeout"}})},15e3);return this.agentDreamState={...this.agentDreamState,[e]:{pending:!0,requestId:r,requested:n,authoritative:s?.dreamEnabled===!0,timer:i,error:null}},up(this,e,n,r),!0},loadMoreMessages(){if(this.currentView==="yeaft"||this.loadingMoreMessages||!this.hasMoreMessages||!this.currentConversation)return;this.loadingMoreMessages=!0;let e=this._loadMoreGeneration=(this._loadMoreGeneration||0)+1,s=(this.messagesMap[this.currentConversation]||[]).find(i=>i.dbMessageId),n=this.currentConversation,r=s?.dbMessageId??null;this.requestChatHistory(n,{mode:"older",turns:5,beforeId:r}),setTimeout(()=>{this._loadMoreGeneration===e&&this.loadingMoreMessages&&this.currentConversation===n&&(this.loadingMoreMessages=!1)},1e4)},reloadYeaftMessages(){if(this.currentView!=="yeaft")return!1;let e=Is(this),t=Me(this,e);if(!t)return!1;let s=Pe(t,e),n=this.yeaftConversationId,r=this.yeaftSessionHistoryState?.[s];if(r?.loading)return r.requestId?(this._yeaftManualHistoryRefresh={agentId:t,sessionId:e,requestId:r.requestId},r.requestId):!1;let i=this.beginYeaftHistoryLoad({agentId:t,sessionId:e,mode:"recent",preserveLoaded:!1});if(!i)return!1;this._yeaftManualHistoryRefresh={agentId:t,sessionId:e,requestId:i.requestId};let o=pn();this.yeaftHistoryPerfTraceBySession={...this.yeaftHistoryPerfTraceBySession||{},[s]:o};let a={type:"yeaft_load_history",agentId:t,limit:Sl,sessionId:e,requestId:i.requestId,perfTraceId:o};return vt(this,{traceId:o,phase:"history.request_send",agentId:t,sessionId:e,messageType:a.type,bytes:JSON.stringify(a).length,detail:{mode:"manual-reload",limit:Sl}}),this.sendWsMessage(a)?!0:($r(this,{agentId:t,sessionId:e,requestId:i.requestId,error:"history_load_send_failed"}),!1)},loadMoreYeaftHistory(e=Xr(),{sessionId:t=null,agentId:s=null,background:n=!1}={}){if(this.currentView!=="yeaft")return!1;let r=t||Is(this),i=Me(this,r,s);if(!i||!r)return!1;let o=Pe(i,r),a=this.yeaftSessionHistoryState?.[o]||{};if(a.loading||!a.hasMore)return!1;let l=Math.min(50,Math.max(1,Number.isFinite(e)?Math.floor(e):Xr())),c=this.yeaftHistoryCacheState?.[o]?.ranges||[],d=Number(this.yeaftHistoryCacheState?.[o]?.rangeEpoch)||0,u=uu(a,c,d);if(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState||{},[o]:u.state},!u.request)return this.syncActiveYeaftHistoryLoad(),!1;let p=this.beginYeaftHistoryLoad({agentId:i,sessionId:r,mode:n?"prefetch":"older",preserveLoaded:!0,latestSeq:this.yeaftSessionHistoryState[o]?.latestSeq??null});if(!p)return!1;let f=pn();this.yeaftHistoryPerfTraceBySession={...this.yeaftHistoryPerfTraceBySession||{},[o]:f};let g={type:"yeaft_load_more_history",agentId:i,sessionId:r,requestId:p.requestId,beforeSeq:u.request.beforeSeq,pageKind:u.request.kind,gapStopAtSeq:u.request.stopAtSeq,cacheEpoch:u.request.cacheEpoch,turns:l,perfTraceId:f};return vt(this,{traceId:f,phase:"history_more.request_send",agentId:i,sessionId:r,messageType:g.type,bytes:JSON.stringify(g).length,detail:{beforeSeq:g.beforeSeq,turns:g.turns,pageKind:u.request.kind,gapStopAtSeq:u.request.stopAtSeq,background:n}}),this.sendWsMessage(g)?!0:($r(this,{agentId:i,sessionId:r,requestId:p.requestId,error:"history_load_send_failed"}),!1)},checkPendingRecovery(){md(this)},performRecovery(){vd(this)},dismissRecovery(){yd(this)},autoRestoreConversation(e){bd(this,e)},saveOpenSessions(){an(this)},getLastSession(){return kd(this)},clearLastSession(){Sd(this)},listHistorySessions(e){Id(this,e)},listFolders(){return Cd(this)},listFoldersForAgent(e,t){return Ad(this,e,t)},listModelsForAgent(e,t){return xd(this,e,t)},listHistorySessionsForAgent(e,t,s){Td(this,e,t,s)},async loadGlobalSessions(e=20){return Md(this,e)},async deleteGlobalSession(e){return Pd(this,e)},findAgentForSession(e){return Ea(this,e)},isSessionResumable(e){return Rd(this,e)},_isRecentlyClosed(e){return un(this,e)},_startProcessingWatchdog(e){Bn(this,e)},_resetProcessingWatchdog(e){zi(this,e)},_stopProcessingWatchdog(e){qe(this,e)},startRefreshTimeout(e){let t=e||this.currentConversation;t&&(this._refreshTimeouts||(this._refreshTimeouts={}),this._refreshTimeouts[t]&&clearTimeout(this._refreshTimeouts[t]),this._refreshTimeouts[t]=setTimeout(()=>{this.setRefreshingSession(t,!1),delete this._refreshTimeouts[t]},1e4))},toggleTheme(){this.theme=this.theme==="dark"?"light":"dark",this.themeFollowSystem=!1,localStorage.setItem("theme",this.theme),document.documentElement.setAttribute("data-theme",this.theme),document.documentElement.classList.toggle("light",this.theme==="light")},initTheme(){if(document.documentElement.setAttribute("data-theme",this.theme),document.documentElement.classList.toggle("light",this.theme==="light"),this.themeFollowSystem&&typeof window<"u"&&window.matchMedia){let e=window.matchMedia("(prefers-color-scheme: dark)"),t=s=>{this.themeFollowSystem&&(this.theme=s.matches?"dark":"light",document.documentElement.setAttribute("data-theme",this.theme),document.documentElement.classList.toggle("light",this.theme==="light"))};e.addEventListener?e.addEventListener("change",t):e.addListener&&e.addListener(t)}},loadModelsDevRegistry({forceRefresh:e=!1}={}){let t=this.modelsDevRegistry.loaded&&!this.modelsDevRegistry.error&&Date.now()-this.modelsDevRegistry.fetchedAt<36e5;if(!e&&t)return Promise.resolve(this.modelsDevRegistry);let s=this.currentAgent;if(!s)return Promise.resolve(this.modelsDevRegistry);if(this._modelsDevPending&&(!e||this._modelsDevPending.force))return new Promise(n=>this._modelsDevPending.resolvers.push(n));if(this._modelsDevPending){let n=this._modelsDevPending;this._modelsDevPending=null,n.timer&&clearTimeout(n.timer);for(let r of n.resolvers)r(this.modelsDevRegistry)}return new Promise(n=>{let r={resolvers:[n],force:e,timer:null};this._modelsDevPending=r;try{this.sendWsMessage({type:"get_models_dev_registry",agentId:s,forceRefresh:e})}catch{this._modelsDevPending===r&&(this._modelsDevPending=null),n(this.modelsDevRegistry);return}r.timer=setTimeout(()=>{if(this._modelsDevPending===r){this._modelsDevPending=null;for(let i of r.resolvers)i(this.modelsDevRegistry)}},2e4)})},changeLocale(e){if(this.locale=e,xr(e),this.currentAgent)try{this.sendWsMessage({type:"update_llm_config",agentId:this.currentAgent,config:{language:e}})}catch{}},async fetchCustomExpertRoles(){let e=je();try{let t={};e.token&&(t.Authorization=`Bearer ${e.token}`);let s=await fetch("/api/expert-roles/custom",{headers:t});if(s.ok){let n=await s.json();this.customExpertRoles=n.roles||[]}}catch{}},async createCustomExpertRole(e){let t=je();try{let s={"Content-Type":"application/json"};t.token&&(s.Authorization=`Bearer ${t.token}`);let n=await fetch("/api/expert-roles/custom",{method:"POST",headers:s,body:JSON.stringify(e)});if(n.ok){let r=await n.json();return this.customExpertRoles.push(r.role),r.role}else{let r=await n.json().catch(()=>({}));throw new Error(r.error||"Failed to create custom expert role")}}catch(s){throw s}},async updateCustomExpertRole(e,t){let s=je();try{let n={"Content-Type":"application/json"};s.token&&(n.Authorization=`Bearer ${s.token}`);let r=await fetch(`/api/expert-roles/custom/${e}`,{method:"PUT",headers:n,body:JSON.stringify(t)});if(r.ok){let i=await r.json(),o=this.customExpertRoles.findIndex(a=>a.id===e);return o!==-1&&(this.customExpertRoles[o]=i.role),i.role}else{let i=await r.json().catch(()=>({}));throw new Error(i.error||"Failed to update custom expert role")}}catch(n){throw n}},async deleteCustomExpertRole(e){let t=je();try{let s={};t.token&&(s.Authorization=`Bearer ${t.token}`);let n=await fetch(`/api/expert-roles/custom/${e}`,{method:"DELETE",headers:s});if(n.ok)return this.customExpertRoles=this.customExpertRoles.filter(r=>r.id!==e),!0;{let r=await n.json().catch(()=>({}));throw new Error(r.error||"Failed to delete custom expert role")}}catch(s){throw s}},rememberWorkbenchPanelState(e=this.activeSessionRoute,t){let s=typeof e=="string"?e:dt(e);if(!s)return!1;let n=this.workbenchPanelStateByRoute[s]||{},r=Number.isFinite(t)&&t>0?Math.round(t):n.width;return this.workbenchPanelStateByRoute={...this.workbenchPanelStateByRoute,[s]:{expanded:!!this.workbenchExpanded,maximized:!!this.workbenchExpanded&&!!this.workbenchMaximized,...Number.isFinite(r)&&r>0?{width:r}:{}}},!0},workbenchPanelWidthForRoute(e=this.activeSessionRoute){let t=typeof e=="string"?e:dt(e),s=t?this.workbenchPanelStateByRoute[t]?.width:null;return Number.isFinite(s)&&s>0?s:null},restoreWorkbenchPanelState(e=this.activeSessionRoute){let t=dt(e),s=t?this.workbenchPanelStateByRoute[t]:null;return this.workbenchExpanded=!!s?.expanded,this.workbenchMaximized=!!s?.expanded&&!!s?.maximized,!!s},openWorkbench(){this.workbenchExpanded=!0,this.activeRightPanel=null,this.closeYeaftDebugPanel(),this.rememberWorkbenchPanelState()},toggleWorkbench(){if(this.workbenchExpanded){this.workbenchExpanded=!1,this.workbenchMaximized=!1,this.rememberWorkbenchPanelState();return}this.openWorkbench()},toggleSidebar(){this.sidebarCollapsed=!this.sidebarCollapsed},toggleSessionSidebar(){this.sessionSidebarOpen=!this.sessionSidebarOpen},closeSessionSidebar(){this.sessionSidebarOpen=!1},toggleWorkbenchMaximized(){this.workbenchMaximized=!this.workbenchMaximized,this.rememberWorkbenchPanelState()},renameChatSession(e,t,s=null){let n=t&&t.trim()?t.trim():"";n?this.customConversationTitles[e]=n:delete this.customConversationTitles[e],this.sendWsMessage({type:"update_conversation_settings",conversationId:e,...s?{agentId:s}:{},title:n})},resolveMessageFileReferences(e){let t=this.activeSessionRoute,s=t?.agentId||this.currentAgent||null,n=t?.runtimeProvider==="yeaft"?yt(this,t.sessionId,s):this.currentConversation,i=dt(t)&&s&&n&&this.workbenchRouteProtocolSupported===!0&&(s===this.currentAgent?this.hasCapability("file_reference_resolution")&&this.hasCapability("workbench_session_routes"):Tt(this,s,"file_reference_resolution")&&Tt(this,s,"workbench_session_routes")),o=[...new Set((Array.isArray(e)?e:[]).filter(u=>typeof u=="string"&&u.trim()).map(u=>u.trim()))].slice(0,32);if(!i||o.length===0)return null;let a=this.effectiveWorkDir||"",l=t?{runtimeProvider:t.runtimeProvider,agentId:t.agentId,sessionId:t.sessionId}:null,c=`file_refs_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`;return this.sendWsMessage({type:"resolve_file_references",requestId:c,references:o,agentId:s,conversationId:n,workDir:a,workbenchRoute:l})?c:null},requestMessageImagePreview(e){let t=this.activeSessionRoute,s=t?.agentId||this.currentAgent||null,n=t?.runtimeProvider==="yeaft"?yt(this,t.sessionId,s):this.currentConversation,i=dt(t)&&s&&n&&this.workbenchRouteProtocolSupported===!0&&(s===this.currentAgent?this.hasCapability("file_editor")&&this.hasCapability("workbench_session_routes")&&this.hasCapability("response_image_preview"):Tt(this,s,"file_editor")&&Tt(this,s,"workbench_session_routes")&&Tt(this,s,"response_image_preview")),o=typeof e=="string"?e.trim():"";if(!i||!o)return null;let a=`message_image_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`;return this.sendWsMessage({type:"read_file",requestId:a,filePath:o,responseImagePreview:!0,agentId:s,conversationId:n,workDir:this.effectiveWorkDir||"",workbenchRoute:{runtimeProvider:t.runtimeProvider,agentId:t.agentId,sessionId:t.sessionId}})?a:null},openFileInExplorer(e,{hideTree:t=!1,line:s=null}={}){let n=this.activeSessionRoute,r=n?{runtimeProvider:n.runtimeProvider,agentId:n.agentId,sessionId:n.sessionId}:null,i=dt(r),o=this.effectiveWorkDir||"",a=bn(i,o),l=r?.agentId||this.currentAgent||null,c=r?.runtimeProvider==="yeaft"?yt(this,r.sessionId,l):this.currentConversation,d=this.workbenchRouteProtocolSupported===!0&&(l===this.currentAgent?this.hasCapability("file_editor")&&this.hasCapability("workbench_session_routes"):Tt(this,l,"file_editor")&&Tt(this,l,"workbench_session_routes"));if(!l||!c||!d)return!1;let u=typeof e=="string"?e.trim():"";if(!u)return!1;let p=this.workbenchExpanded;this.openWorkbench(),this.workbenchMaximized=!1,this.rememberWorkbenchPanelState();let f=()=>{let g=dt(this.activeSessionRoute),v=this.effectiveWorkDir||"";g!==i||v!==o||bn(g,v)!==a||window.dispatchEvent(new CustomEvent("open-file-in-explorer",{detail:{filePath:u,agentId:l,conversationId:c,workDir:o,workbenchRoute:r,workbenchRouteKey:i,workspaceGeneration:a,hideTree:!!t,line:Number.isFinite(s)&&s>0?s:null}}))};return p?f():Vue.nextTick(f),!0},logout(){je().logout(),this.authenticated=!1,this.sessionKey=null,this.agents=[],this.currentAgent=null,this.currentAgentInfo=null,this.yeaftStatusByAgent={},this._yeaftRetiredCatalogEpochsByAgent={},this.conversations=[],this.activeConversations=[],this.messagesMap={},this.conversationTitles={},this.customConversationTitles={},this.processingConversations={},this.executionStatusMap={},this.workbenchExpanded=!1,this.workbenchMaximized=!1,this.workbenchPanelStateByRoute={},this.subagents={},this.activeSubagentId=null,this.activeRightPanel=null,this.pinnedSessions=[],this.clearWorkCenterBrowserState(),this.ws&&this.ws.close()}}})});function Pl(e,t){!e||typeof e.handleYeaftOutput!="function"||!t||e.handleYeaftOutput({event:t})}function Bb(e){let t=String(e||""),s=2166136261;for(let n=0;n<t.length;n++)s^=t.charCodeAt(n),s=Math.imul(s,16777619)>>>0;return s>>>0}function _l(e){if(!e)return js[0];let t=String(e).toLowerCase();return Hb[t]||js[Bb(t)%js.length]}function Nb(e){return _l(e).background}function Wb(e){return _l(e).foreground}function Rl(){let e=typeof window<"u"&&window.Pinia&&window.Pinia.useChatStore?window.Pinia.useChatStore():null;return e&&typeof e.locale=="string"?e.locale:typeof localStorage<"u"&&localStorage.getItem("locale")||""}function jb(e,t=""){return e?String(t||"").startsWith("zh")?e.descriptionZh||e.roleZh||e.description||e.role||"":e.description||e.role||e.descriptionZh||e.roleZh||"":""}var Fb,js,Hb,FC,rs,Jn=B(()=>{({defineStore:Fb}=Pinia);js=[{key:"rat",label:"Rat",glyph:"R",background:"var(--vp-avatar-rat-bg)",foreground:"var(--vp-avatar-rat-fg)"},{key:"ox",label:"Ox",glyph:"O",background:"var(--vp-avatar-ox-bg)",foreground:"var(--vp-avatar-ox-fg)"},{key:"tiger",label:"Tiger",glyph:"T",background:"var(--vp-avatar-tiger-bg)",foreground:"var(--vp-avatar-tiger-fg)"},{key:"rabbit",label:"Rabbit",glyph:"B",background:"var(--vp-avatar-rabbit-bg)",foreground:"var(--vp-avatar-rabbit-fg)"},{key:"dragon",label:"Dragon",glyph:"D",background:"var(--vp-avatar-dragon-bg)",foreground:"var(--vp-avatar-dragon-fg)"},{key:"snake",label:"Snake",glyph:"S",background:"var(--vp-avatar-snake-bg)",foreground:"var(--vp-avatar-snake-fg)"},{key:"horse",label:"Horse",glyph:"H",background:"var(--vp-avatar-horse-bg)",foreground:"var(--vp-avatar-horse-fg)"},{key:"goat",label:"Goat",glyph:"G",background:"var(--vp-avatar-goat-bg)",foreground:"var(--vp-avatar-goat-fg)"},{key:"monkey",label:"Monkey",glyph:"M",background:"var(--vp-avatar-monkey-bg)",foreground:"var(--vp-avatar-monkey-fg)"},{key:"rooster",label:"Rooster",glyph:"K",background:"var(--vp-avatar-rooster-bg)",foreground:"var(--vp-avatar-rooster-fg)"},{key:"dog",label:"Dog",glyph:"D",background:"var(--vp-avatar-dog-bg)",foreground:"var(--vp-avatar-dog-fg)"},{key:"pig",label:"Pig",glyph:"P",background:"var(--vp-avatar-pig-bg)",foreground:"var(--vp-avatar-pig-fg)"}],Hb=Object.freeze({steve:js[8],ada:js[3],linus:js[0],martin:js[4]}),FC=js.map(e=>e.background);rs=Fb("vp",{state:()=>({vps:{},vpOrder:[],emptyLibrary:!1,lastSnapshotAt:0,snapshotStatus:"idle",snapshotAgentId:null,snapshotRequestId:null,snapshotError:"",lastVpSnapshotAgentId:null,lastChange:null,dreamStatus:{},groupDreamStatus:{}}),getters:{vpList(e){return e.vpOrder.map(t=>e.vps[t]).filter(Boolean)},vpCount(e){return e.vpOrder.length},vpById:e=>t=>e.vps[t]||null,vpLabel:e=>t=>{let s=e.vps[t];return s?Rl().startsWith("zh")&&s.displayNameZh?s.displayNameZh:s.displayName||s.vpId||t:t},vpDescription:e=>t=>jb(e.vps[t],Rl()),vpInitial:e=>t=>{let s=e.vps[t],n=Rl().startsWith("zh"),r=s&&(s.avatar||n&&s.displayNameZh||s.displayName||s.vpId)||t||"?";return String(r).charAt(0).toUpperCase()||"?"},vpColor:e=>t=>{let s=e.vps[t];return s&&s.color?s.color:Nb(t)},vpTextColor:()=>e=>Wb(e),vpAvatarMotif:()=>e=>_l(e),dreamStatusFor:e=>t=>e.dreamStatus[t]||{status:"idle",lastRunAt:null,lastResult:null,lastError:null},groupDreamStatusFor:e=>t=>e.groupDreamStatus[t]||{status:"idle",lastRunAt:null,lastResult:null,lastError:null}},actions:{applySnapshot(e,t=null,s=null){let n=this.snapshotAgentId||null;if(n&&t&&t!==n||s&&this.snapshotRequestId&&s!==this.snapshotRequestId)return!1;let r=e&&Array.isArray(e.vps)?e.vps:[];return this._setActiveSnapshot({vps:r,emptyLibrary:!!(e&&e.emptyLibrary),agentId:t||n||null,requestId:s||this.snapshotRequestId||null,receivedAt:Date.now()}),!0},beginSnapshot(e,t){this.vps={},this.vpOrder=[],this.emptyLibrary=!1,this.lastVpSnapshotAgentId=null,this.snapshotStatus="loading",this.snapshotAgentId=e||null,this.snapshotRequestId=t||null,this.snapshotError=""},failSnapshot(e,t,s=""){return!this.snapshotRequestId||!t||t!==this.snapshotRequestId||e&&this.snapshotAgentId&&e!==this.snapshotAgentId?!1:(this.snapshotStatus="error",this.snapshotAgentId=e||this.snapshotAgentId||null,this.snapshotRequestId=t||this.snapshotRequestId||null,this.snapshotError=String(s||"VP library request failed"),!0)},_setActiveSnapshot({vps:e,emptyLibrary:t,agentId:s,requestId:n,receivedAt:r}){this.vps={},this.vpOrder=[];for(let i of e||[])this._upsertInternal(i);this.emptyLibrary=!!t,this.lastSnapshotAt=r||Date.now(),this.lastVpSnapshotAgentId=s||null,this.snapshotStatus="ready",this.snapshotAgentId=s||null,this.snapshotRequestId=n||null,this.snapshotError=""},upsert(e,t=null,s=null){return s&&this.snapshotAgentId&&s!==this.snapshotAgentId?!1:(this._upsertInternal(e),e&&e.vpId&&(this.lastChange={vpId:e.vpId,kind:"updated",reason:t||null,at:Date.now()}),!0)},remove(e,t=null,s=null){return s&&this.snapshotAgentId&&s!==this.snapshotAgentId||!e?!1:(delete this.vps[e],this.vpOrder=this.vpOrder.filter(n=>n!==e),this.lastChange={vpId:e,kind:"removed",reason:t||"file.removed",at:Date.now()},!0)},_upsertInternal(e){if(!e||!e.vpId)return;let t=!!this.vps[e.vpId];this.vps[e.vpId]={...this.vps[e.vpId]||{},...e},t||this.vpOrder.push(e.vpId),this.emptyLibrary&&(this.emptyLibrary=!1)},triggerDream(e){if(!e)return;this.dreamStatus={...this.dreamStatus,[e]:{...this.dreamStatus[e]||{},status:"running",lastError:null}};let t=window.Pinia&&window.Pinia.useChatStore?window.Pinia.useChatStore():null;t&&typeof t.sendWsMessage=="function"&&t.sendWsMessage({type:"yeaft_dream_trigger",vpId:e})},triggerGroupDream(e,t={}){if(!e)return;this.groupDreamStatus={...this.groupDreamStatus,[e]:{...this.groupDreamStatus[e]||{},status:"running",lastError:null}};let s=window.Pinia&&window.Pinia.useChatStore?window.Pinia.useChatStore():null,n=Date.now();if(Pl(s,{type:"dream_progress",phase:"start",groupId:e,manual:!0,trigger:"manual",source:"header-button",ts:n}),!s||typeof s.sendWsMessage!="function"){Pl(s,{type:"yeaft_dream_result",groupId:e,success:!1,skipped:!0,skippedReason:"chat-store-unavailable",trigger:"manual",error:null});return}let r={type:"yeaft_dream_trigger",sessionId:e},i=t&&t.agentId?t.agentId:typeof s.agentIdForSession=="function"?s.agentIdForSession(e):s.currentAgent;i&&(r.agentId=i),s.sendWsMessage(r)===!1&&Pl(s,{type:"yeaft_dream_result",groupId:e,success:!1,skipped:!0,skippedReason:"websocket-not-open",trigger:"manual",error:null})},applyDreamStatus(e){if(!e)return;let t=e.sessionId;if(t){this.groupDreamStatus={...this.groupDreamStatus,[t]:{...this.groupDreamStatus[t]||{},status:e.status==="running"?"running":e.status||"idle"}};return}if(!e.vpId)return;let s=e.vpId;this.dreamStatus={...this.dreamStatus,[s]:{...this.dreamStatus[s]||{},status:e.status==="running"?"running":e.status||"idle"}}},applyDreamResult(e){if(!e)return;let t=!!e.success,s=!!e.skipped,n={mergedCount:e.mergedCount??null,extractedCount:e.extractedCount??null,entriesCreated:typeof e.entriesCreated=="number"?e.entriesCreated:e.mergedCount??e.extractedCount??0,skipped:s,skippedReason:e.skippedReason||null,sessionsProcessed:typeof e.sessionsProcessed=="number"?e.sessionsProcessed:null,sessionsSkipped:typeof e.sessionsSkipped=="number"?e.sessionsSkipped:null,targetsApplied:typeof e.targetsApplied=="number"?e.targetsApplied:null,durationMs:typeof e.durationMs=="number"?e.durationMs:null,llmCallCount:typeof e.llmCallCount=="number"?e.llmCallCount:0,inputTokens:typeof e.inputTokens=="number"?e.inputTokens:0,outputTokens:typeof e.outputTokens=="number"?e.outputTokens:0,totalTokens:typeof e.totalTokens=="number"?e.totalTokens:0,metrics:e.metrics||null,passBreakdown:e.passBreakdown||e.metrics?.passBreakdown||null,targetErrors:Array.isArray(e.targetErrors)?e.targetErrors:[]},r=t||s?null:e.error||null,i=s?"skipped":t?"success":"error",o=e.sessionId;if(o){this.groupDreamStatus={...this.groupDreamStatus,[o]:{status:i,lastRunAt:Date.now(),lastResult:n,lastError:r}};return}if(!e.vpId)return;let a=e.vpId;this.dreamStatus={...this.dreamStatus,[a]:{status:i,lastRunAt:Date.now(),lastResult:n,lastError:r}}}}})});function El(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"&&e){let t=Date.parse(e);if(Number.isFinite(t))return t}return 0}function po(e){return!e||typeof e!="object"?0:El(e.lastMessageAt)||El(e.updatedAt)||El(e.createdAt)||0}function Dl(e,t){let s=po(t)-po(e);return s!==0?s:String(e?.id||"").localeCompare(String(t?.id||""))}function rf(e){return[...Array.isArray(e)?e:[]].sort(Dl)}var fo=B(()=>{});function of(){try{if(typeof localStorage>"u")return{};let e=JSON.parse(localStorage.getItem(df)||"{}");return e&&typeof e=="object"?e:{}}catch{return{}}}function Ub(e){try{typeof localStorage<"u"&&localStorage.setItem(df,JSON.stringify(e&&typeof e=="object"?e:{}))}catch{}}function af(){try{return typeof localStorage>"u"?[]:ei(JSON.parse(localStorage.getItem(uf)||"[]"))}catch{return[]}}function Kb(e){try{typeof localStorage<"u"&&localStorage.setItem(uf,JSON.stringify(ei(e)))}catch{}}function pf(e,t){return`${e||""}${t||""}`}function Cs(e){return e&&e.agentId&&e.id?pf(e.agentId,e.id):""}function is(e,t){return t?e?pf(e,t):String(t):""}function zb(e){return typeof e=="string"?e:String(e||"")}function qt(e,t,s=null){let n=zb(t);if(!n)return"";let r=is(s,n),i=r?e.sessions[r]:null;if(i&&(s||i.agentId||e.inventoryIdentityMode==="legacy-bare"))return r;if(s){let c=e.sessions[n];return e.inventoryIdentityMode==="legacy-bare"&&c&&!c.agentId?n:""}let o=e.sessions[n];if(o){if(o.agentId||e.inventoryIdentityMode==="legacy-bare")return n;let c=e.activeSessionKey?e.sessions[e.activeSessionKey]:null;return c?.agentId&&c.id===n?e.activeSessionKey:""}if(e.activeSessionKey&&e.sessions[e.activeSessionKey]?.id===n)return e.activeSessionKey;let a=e.sessionOrder.filter(c=>e.sessions[c]?.id===n),l=ti();if(l?.currentAgent){let c=a.find(d=>e.sessions[d]?.agentId===l.currentAgent);if(c)return c}return a[0]||""}function $l(e,t,s=null){return qt(e,t,s)||""}function Ll(e){if(e.inventoryIdentityMode==="legacy-bare"){let t=e.activeSessionKey?e.sessions[e.activeSessionKey]:null,s=t&&!t.agentId?t:e.activeSessionId?e.sessions[e.activeSessionId]:null;e._retiredBareActiveSessionId=s&&!s.agentId&&s.id||null,e.sessionOrder=e.sessionOrder.filter(n=>e.sessions[n]?.agentId),e._retiredBareActiveSessionId&&(e.activeSessionId=null,e.activeSessionKey=null)}e.inventoryIdentityMode="agent-scoped"}function Yb(e){let t=e._preferredExactSessionIdentity||null;if(!t)return!1;e._preferredExactSessionIdentity=null;let s=e.sessions[t.key]||null,n=ti(),r=s?.id===t.sessionId&&s.agentId===t.agentId,i=n?.currentView!=="yeaft"||typeof n.setActiveSessionFilter=="function";if(r&&i){if(e.activeSessionId=t.sessionId,e.activeSessionKey=t.key,n?.currentView==="yeaft")n.setActiveSessionFilter(t.sessionId,{agentId:t.agentId,force:!0});else if(n){n.yeaftActiveSessionFilter=t.sessionId,n.yeaftSessionAgentById={...n.yeaftSessionAgentById||{},[t.sessionId]:t.agentId};try{localStorage.setItem("lastViewedYeaftSession",t.key)}catch{}}return!0}if(e.activeSessionId=null,e.activeSessionKey=null,n?.yeaftActiveSessionFilter===t.sessionId&&(n.yeaftActiveSessionFilter=null),n?.yeaftSessionAgentById?.[t.sessionId]===t.agentId){let o={...n.yeaftSessionAgentById};delete o[t.sessionId],n.yeaftSessionAgentById=o}try{let o=Kr(localStorage.getItem("lastViewedYeaftSession")||"");o.agentId===t.agentId&&o.sessionId===t.sessionId&&localStorage.removeItem("lastViewedYeaftSession")}catch{}return!0}function go(e){let t=e._retiredBareActiveSessionId||null;if(!t)return!1;let s=ti();if(e.inventoryIdentityMode==="legacy-bare"){let r=e.sessions[t];return e._retiredBareActiveSessionId=null,!r||r.agentId?!1:(e.activeSessionId=t,e.activeSessionKey=t,s?.currentView==="yeaft"&&typeof s.setActiveSessionFilter=="function"?s.setActiveSessionFilter(t,{force:!0}):s&&(s.yeaftActiveSessionFilter=t),!0)}let n=e.sessionOrder.filter(r=>{let i=e.sessions[r];return i?.agentId&&i.id===t});if(n.length===1){let r=n[0],i=e.activeSessionId===t&&e.activeSessionKey===r,o=e.sessions[r]?.agentId||null;return e.activeSessionId=t,e.activeSessionKey=r,i||(s?.currentView==="yeaft"&&typeof s.setActiveSessionFilter=="function"?(s.setActiveSessionFilter(t,{agentId:o,force:!0}),e._retiredBareActiveSessionId=t):s&&(s.yeaftActiveSessionFilter=t)),!0}e.activeSessionId=null,e.activeSessionKey=null,s?.yeaftActiveSessionFilter===t&&(s.yeaftActiveSessionFilter=null);try{let r=localStorage.getItem("lastViewedYeaftSession")||"";Kr(r).sessionId===t&&localStorage.removeItem("lastViewedYeaftSession")}catch{}return!0}function ei(e){let t=[],s=new Set;for(let n of Array.isArray(e)?e:[]){let r=typeof n=="string"?n:String(n||"");!r||s.has(r)||(s.add(r),t.push(r))}return t}function Ol(e,t){let s=ei(e),n=new Set(s),r=ei(t).filter(o=>n.has(o)),i=new Set(r);return[...r,...s.filter(o=>!i.has(o))]}function ho(e,t=!1){return!e||typeof e!="object"?!!t:Object.prototype.hasOwnProperty.call(e,"pinned")?e.pinned===!0:Object.prototype.hasOwnProperty.call(e,"isPinned")?e.isPinned===!0:!!t}function lf(e){return!e||typeof e!="object"?!1:e.running===!0||e.active===!0||e.isActive===!0||e.isRunning===!0}function cf(e){if(!e||typeof e!="object")return 0;let t=e.latestActivityAt||e.lastActivityAt||e.lastMessageAt||e.updatedAt||0;if(typeof t=="number"&&Number.isFinite(t))return t;if(typeof t=="string"&&t){let s=Date.parse(t);return Number.isFinite(s)?s:0}return 0}function ti(){try{if(typeof window<"u"&&window.Pinia&&typeof window.Pinia.useChatStore=="function")return window.Pinia.useChatStore()}catch{}return null}var df,uf,Gb,ff,gf=B(()=>{fo();to();df="yeaft-session-order-by-agent",uf="yeaft-session-order-global";({defineStore:Gb}=Pinia);ff=Gb("sessions",{state:()=>({sessions:{},sessionOrder:[],activeSessionId:null,activeSessionKey:null,inventoryIdentityMode:"empty",_retiredBareActiveSessionId:null,_preferredExactSessionIdentity:null,lastSnapshotAt:0,lastCrudResult:null,pending:{}}),getters:{sessionList(e){let t=e.sessionOrder.map(d=>e.sessions[d]).filter(Boolean),s=ti(),n=s&&Array.isArray(s.pinnedSessions)?new Set(s.pinnedSessions):new Set;for(let d of t)d&&d.id&&d.pinned&&n.add(d.id);let r=[],i=[];for(let d of t)d.pinned||!d.agentId&&n.has(d.id)?r.push(d):i.push(d);let o=d=>[...d].sort((u,p)=>{let f=Number.isFinite(u?.sortOrder)?u.sortOrder:Number.MAX_SAFE_INTEGER,g=Number.isFinite(p?.sortOrder)?p.sortOrder:Number.MAX_SAFE_INTEGER;return f!==g?f-g:Dl(u,p)}),a=[...o(r),...o(i)],l=af();if(l.length===0)return a;let c=new Map(l.map((d,u)=>[d,u]));return a.sort((d,u)=>{let p=c.has(Cs(d))?c.get(Cs(d)):Number.MAX_SAFE_INTEGER,f=c.has(Cs(u))?c.get(Cs(u)):Number.MAX_SAFE_INTEGER;return p!==f?p-f:0})},sessionCount(e){return e.sessionOrder.length},sessionById:e=>(t,s=null)=>{let n=qt(e,t,s);return n&&e.sessions[n]||null},activeSession(e){return e.activeSessionKey&&e.sessions[e.activeSessionKey]||null},hasLoadedSnapshot(e){return e.lastSnapshotAt>0},isEmpty(e){return e.sessionOrder.length===0},activeNeedsInvite(e){let t=e.activeSessionKey?e.sessions[e.activeSessionKey]:null;return t?!t.defaultVpId&&(!Array.isArray(t.roster)||t.roster.length===0):!1}},actions:{applySnapshot(e,t=null,{deferActivation:s=!1}={}){let n=Array.isArray(e)?e:[],r=!1;if(t){Ll(this);let o={...this.sessions},a=new Set;for(let f of n){if(!f||!f.id)continue;let g=is(t,f.id);a.add(g),o[g]=this._normalize(f,t,ho(this.sessions[g]))}for(let f of this.sessionOrder){let g=this.sessions[f];g&&g.agentId===t&&!a.has(f)&&delete o[f]}let l=this.sessionOrder.filter(f=>o[f]),c=new Set(l),d=[];for(let f of n){if(!f||!f.id)continue;let g=is(t,f.id);o[g]&&!c.has(g)&&d.push(g)}this.sessions=o;let u=[...l,...d],p=af();if(p.length>0){let f=new Map(u.map(b=>[Cs(o[b]),b]).filter(([b])=>b)),g=p.map(b=>f.get(b)).filter(Boolean),v=new Set(g);u=[...g,...u.filter(b=>!v.has(b))];let m=new Map(p.map((b,h)=>[b,h]));for(let b of u){let h=Cs(o[b]);h&&m.has(h)&&(o[b]={...o[b],sortOrder:m.get(h)})}}if(t&&p.length===0){let f=of(),g=ei(f[t]);if(g.length>0){let v=g.map(y=>is(t,y)),m=new Set(v),b=Ol(u.filter(y=>o[y]?.agentId===t),v),h=this.sessionOrder.some(y=>o[y]?.agentId===t),w=0;h?u=this.sessionOrder.filter(y=>o[y]).map(y=>o[y]?.agentId===t?b[w++]:y).concat(b.slice(w)):u=u.map(y=>o[y]?.agentId===t?b[w++]:y);let I=new Map(v.map((y,k)=>[y,k]));for(let y of b)o[y]&&m.has(y)&&(o[y]={...o[y],sortOrder:I.get(y)})}}this.sessionOrder=u}else{if(this.inventoryIdentityMode==="agent-scoped")return;if(Object.values(this.sessions).some(c=>c&&c.agentId)){this.inventoryIdentityMode="agent-scoped";return}let a={},l=[];for(let c of n){if(!c||!c.id)continue;let d=is(null,c.id);a[d]=this._normalize(c,null,ho(this.sessions[d])),l.push(d)}this.sessions=a,this.sessionOrder=l,this.inventoryIdentityMode="legacy-bare"}s||(r=Yb(this)||go(this)),this.lastSnapshotAt=Date.now();let i=ti();if(i&&t){let o={...i.yeaftSessionAgentById||{}};for(let a of n)a&&a.id&&!o[a.id]&&(o[a.id]=t);i.yeaftSessionAgentById=o}if(!s&&!r){let o=null;try{o=localStorage.getItem("lastViewedYeaftSession")||null}catch{}let l=(o?this.sessions[o]:null)?o:o?qt(this,o,t):"",c=l?this.sessions[l]:null,d=c&&(!t||c.agentId===t),u=this.sessionOrder.filter(w=>this.sessions[w]&&(!t||this.sessions[w].agentId===t)&&this.sessions[w].running).sort((w,I)=>cf(this.sessions[I])-cf(this.sessions[w]))[0]||null,p=u?this.sessions[u]?.id:null,f=this.sessionList[0]||null,g=f?.id||null,v=g?qt(this,g,f?.raw?.agentId||null):"",m=p||(d?c.id:null)||g,b=u||(d?l:"")||v||$l(this,m,t),h=this.activeSessionKey?this.sessions[this.activeSessionKey]?.agentId:null;if(this.activeSessionId&&!qt(this,this.activeSessionId,h)?(this.activeSessionId=m,this.activeSessionKey=b||null):!this.activeSessionId&&this.sessionOrder.length>0&&!this._retiredBareActiveSessionId?(this.activeSessionId=m,this.activeSessionKey=b||null):this.activeSessionId&&(this.activeSessionKey=$l(this,this.activeSessionId,h)||this.activeSessionKey),i&&!this._retiredBareActiveSessionId){let w=this.activeSessionId||m,I=null;if((i.yeaftActiveSessionFilter&&!qt(this,i.yeaftActiveSessionFilter)||!i.yeaftActiveSessionFilter&&w)&&(I=w),I){let y=$l(this,I),k=y&&this.sessions[y]?.agentId||null;i.currentView==="yeaft"&&typeof i.setActiveSessionFilter=="function"?i.setActiveSessionFilter(I,{agentId:k,force:!0}):i.yeaftActiveSessionFilter=I,this.activeSessionKey=y||this.activeSessionKey}}}if(i&&typeof i.applyServerPinSnapshot=="function"){let o=new Set;for(let l of n){if(!l||!l.id)continue;let c=is(t,l.id),d=this.sessions[c];d&&d.pinned&&o.add(l.id)}let a=l=>{let c=qt(this,l,t),d=c?this.sessions[c]:null;return d?d.agentId===t:!1};i.applyServerPinSnapshot(t,o,a)}},applyRosterChange(e,t=null){if(!e)return;let s=e.sessionId||e.groupId;if(!s)return;let n=t||e.agentId||null;if(n)Ll(this);else if(this.inventoryIdentityMode!=="legacy-bare")return;let r=qt(this,s,n)||is(n,s),i=this.sessions[r];if(!i){let o=this._normalize({id:s,name:e.name||s,roster:Array.isArray(e.roster)?e.roster:[],defaultVpId:e.defaultVpId||null},n);this.sessions[r]=o,this.sessionOrder.push(r),go(this);return}this.sessions[r]={...i,name:e.name||i.name,roster:Array.isArray(e.roster)?e.roster.slice():i.roster,defaultVpId:e.defaultVpId!=null?e.defaultVpId:i.defaultVpId,announcement:typeof e.announcement=="string"?e.announcement:i.announcement},go(this)},applyCrudResult(e,t=null){if(!e)return;this.lastCrudResult={...e,at:Date.now()},e.requestId&&this.pending[e.requestId]&&delete this.pending[e.requestId];let s=e.session||e.group||null,n=t||e.agentId||s?.agentId||null;e.ok&&e.op==="list"&&Array.isArray(e.sessions)&&this.applySnapshot(e.sessions,n),e.ok&&(e.op==="create"||e.op==="copy"||e.op==="restore")&&s&&s.id&&this.applySnapshotUpsert(s,n)&&this.setActive(s.id,n);let r=e.sessionId||e.groupId,i=this.inventoryIdentityMode==="legacy-bare",o=r&&(n||i)?qt(this,r,n):"";if(e.ok&&(e.op==="archive"||e.op==="delete")&&r&&o&&(delete this.sessions[o],this.sessionOrder=this.sessionOrder.filter(a=>a!==o),(this.activeSessionKey===o||i&&this.activeSessionId===r)&&(this.activeSessionKey=this.sessionOrder[0]||null,this.activeSessionId=this.activeSessionKey&&this.sessions[this.activeSessionKey]?.id||null)),e.ok&&e.op==="update_config"&&r){let a=o?this.sessions[o]:null;a&&(this.sessions[o]={...a,config:e.config&&typeof e.config=="object"?{...e.config}:{}})}},applySnapshotUpsert(e,t=null){if(!e||!e.id)return"";let s=t||e.agentId||null;if(s)Ll(this);else if(this.inventoryIdentityMode!=="legacy-bare")return"";let n=qt(this,e.id,s)||is(s,e.id),r=!!this.sessions[n],i=this.sessions[n]||{};return this.sessions[n]={...i,...this._normalize(e,s,ho(i))},r||this.sessionOrder.push(n),go(this),n},setActive(e,t=null){let s=qt(this,e,t);e&&s&&this.sessions[s]?(this.activeSessionId=e,this.activeSessionKey=s,this._retiredBareActiveSessionId=null):(this.activeSessionId=null,this.activeSessionKey=null)},reorderSessionsForAgent(e,t){if(!e)return[];let s=this.sessionOrder.filter(l=>this.sessions[l]?.agentId===e),n=Ol(s,t.map(l=>is(e,l)));if(n.length===0)return[];let r=new Map(n.map((l,c)=>[l,c])),i=0;this.sessionOrder=this.sessionOrder.map(l=>this.sessions[l]?.agentId===e?n[i++]:l);for(let l of n)this.sessions[l]={...this.sessions[l],sortOrder:r.get(l)};let o=of(),a=n.map(l=>this.sessions[l]?.id).filter(Boolean);return o[e]=a,Ub(o),a},reorderSessionsGlobally(e){let t=this.sessionOrder.map(a=>Cs(this.sessions[a])).filter(Boolean),s=Ol(t,e);if(s.length===0)return[];let n=new Map(this.sessionOrder.map(a=>[Cs(this.sessions[a]),a]).filter(([a])=>a)),r=s.map(a=>n.get(a)).filter(Boolean),i=new Set(r);this.sessionOrder=[...r,...this.sessionOrder.filter(a=>!i.has(a))];let o=new Map(s.map((a,l)=>[a,l]));for(let a of this.sessionOrder){let l=Cs(this.sessions[a]);l&&o.has(l)&&(this.sessions[a]={...this.sessions[a],sortOrder:o.get(l)})}return Kb(s),s.map(a=>{let l=n.get(a),c=l?this.sessions[l]:null;return c?{agentId:c.agentId,sessionId:c.id}:null}).filter(Boolean)},applyPinState(e,t,s=null){if(!s&&this.inventoryIdentityMode!=="legacy-bare")return;let n=qt(this,e,s);!e||!n||!this.sessions[n]||(this.sessions[n]={...this.sessions[n],pinned:!!t})},markPending(e,t){e&&(this.pending[e]=t)},clearLastResult(){this.lastCrudResult=null},resetInventory(){this.sessions={},this.sessionOrder=[],this.activeSessionId=null,this.activeSessionKey=null,this.inventoryIdentityMode="empty",this._retiredBareActiveSessionId=null,this._preferredExactSessionIdentity=null,this.lastSnapshotAt=0},beginInventoryCommit(e=null,t=null){if(this.resetInventory(),e&&t){let s=is(t,e);this.activeSessionId=e,this.activeSessionKey=s,this._preferredExactSessionIdentity={sessionId:e,agentId:t,key:s}}else e&&(this._retiredBareActiveSessionId=e)},_normalize(e,t=null,s=!1){return{id:e.id,name:e.name||e.id,roster:Array.isArray(e.roster)?e.roster.slice():[],defaultVpId:e.defaultVpId||null,announcement:typeof e.announcement=="string"?e.announcement:"",config:e.config&&typeof e.config=="object"?{...e.config}:{},workDir:typeof e.workDir=="string"?e.workDir:"",createdAt:e.createdAt||null,updatedAt:e.updatedAt||null,lastMessageAt:e.lastMessageAt||null,running:lf(e),active:lf(e),runningVpCount:Number.isFinite(Number(e.runningVpCount))?Number(e.runningVpCount):0,latestActivityAt:e.latestActivityAt||e.lastActivityAt||e.lastMessageAt||null,agentId:t||e.agentId||null,pinned:ho(e,s),sortOrder:Number.isFinite(e.sortOrder)?e.sortOrder:null}}}})});function mo(){return globalThis.crypto?.randomUUID?.()||`browser-${Date.now()}-${Math.random().toString(16).slice(2)}`}function Ft(e,t){return`${String(e||"")}\0${String(t||"")}`}function hf(e,t,s,n){return`${Ft(e,t)}\0${String(s||"")}\0${String(n||"")}`}function Vl(e,t="Browser Runtime request failed"){return e?.safeError||e?.code||t}function ql(e){return globalThis.Vue?.markRaw?.(e)||e}var Qb,Xb,Zb,Jb,ew,tw,sw,vo,Fl=B(()=>{({defineStore:Qb}=Pinia),Xb=3e4,Zb=60*6e4,Jb=2e4,ew=5e3,tw=60*6e4,sw=256;vo=Qb("browser",{state:()=>({sessions:{},pending:{},peers:{},cancelledPeers:{},errors:{},errorCodes:{},peerDiagnostics:{},runtimeStatus:{},installProgress:{},protocolSupported:null,connectionEpoch:0,lastError:null,_cancelledPeerCleanupTimer:null,_messageListenerInstalled:!1}),actions:{chatStore(){return window.Pinia?.useChatStore?.()||null},installMessageListener(){if(this._messageListenerInstalled||typeof window>"u")return;this._messageListenerInstalled=!0;let e=this.chatStore();this.protocolSupported=e?.browserRuntimeProtocolSupported??null,window.addEventListener("browser-runtime-message",t=>this.handleMessage(t.detail)),window.addEventListener("browser-runtime-transport-reset",()=>this.handleTransportReset())},send(e){if(!this.chatStore()?.sendWsMessage?.(e))throw new Error("Browser Runtime transport unavailable")},beginRequest(e,t,s=Xb){let n=mo();return new Promise((r,i)=>{let o=setTimeout(()=>{delete this.pending[n],i(new Error(`${e} timed out`))},s);this.pending[n]={type:e,resolve:r,reject:i,timer:o,payload:t};try{this.send({type:e,requestId:n,...t})}catch(a){clearTimeout(o),delete this.pending[n],i(a)}})},completeRequest(e,t,s=null){let n=e?this.pending[e]:null;return n?(clearTimeout(n.timer),delete this.pending[e],s?n.reject(s):n.resolve(t),!0):!1},clearCancelledPeers(){clearTimeout(this._cancelledPeerCleanupTimer),this._cancelledPeerCleanupTimer=null,this.cancelledPeers={}},pruneCancelledPeers(e=Date.now()){clearTimeout(this._cancelledPeerCleanupTimer),this._cancelledPeerCleanupTimer=null;for(let[s,n]of Object.entries(this.cancelledPeers))Number(n.expiresAt)<=e&&delete this.cancelledPeers[s];let t=Math.min(...Object.values(this.cancelledPeers).map(s=>Number(s.expiresAt)).filter(Number.isFinite));Number.isFinite(t)&&(this._cancelledPeerCleanupTimer=setTimeout(()=>this.pruneCancelledPeers(),Math.max(1,t-Date.now())))},rememberCancelledPeer(e){let t=Date.now();for(this.pruneCancelledPeers(t);Object.keys(this.cancelledPeers).length>=sw;)delete this.cancelledPeers[Object.keys(this.cancelledPeers)[0]];this.cancelledPeers[hf(e.agentId,e.browserSessionId,e.requestId,e.connectionGeneration)]={agentId:e.agentId,browserSessionId:e.browserSessionId,requestId:e.requestId,connectionGeneration:e.connectionGeneration,expiresAt:t+tw},this.pruneCancelledPeers(t)},takeCancelledPeer(e){let t=hf(e.agentId,e.browserSessionId,e.requestId,e.connectionGeneration),s=this.cancelledPeers[t];return!s||(delete this.cancelledPeers[t],this.pruneCancelledPeers(),Number(s.expiresAt)<=Date.now())?null:s},async getRuntimeStatus(e){let t=await this.beginRequest("browser_runtime_status",{agentId:e});return this.runtimeStatus[e]=t,t},async installRuntime(e,t){let s=await this.beginRequest("browser_runtime_install",{agentId:e,confirmedBuildId:t?.buildId,confirmedDownloadBytes:Number(t?.downloadBytes)||0},Zb);return this.runtimeStatus[e]=s,delete this.installProgress[e],s},async enableRuntime(e){let t=await this.beginRequest("browser_runtime_enable",{agentId:e},6e4);return this.runtimeStatus[e]=t,t},async setupRuntime(e,t){return t?.installed?this.enableRuntime(e):this.installRuntime(e,t)},async createSession({agentId:e,sourceRef:t=null,initialUrl:s="about:blank",viewport:n=null,locale:r="en-US"}){let i=await this.beginRequest("browser_session_create",{agentId:e,sourceRef:t,options:{initialUrl:s,viewport:n||{width:1280,height:720,deviceScaleFactor:1},locale:r,capturePreference:"auto"}},45e3);return this.sessions[Ft(e,i.browserSessionId)]=i,i},async listSessions(e){let t=await this.beginRequest("browser_session_list",{agentId:e}),s=new Set((t.sessions||[]).map(n=>Ft(e,n.browserSessionId)));for(let n of Object.keys(this.sessions))n.startsWith(`${e}\0`)&&!s.has(n)&&delete this.sessions[n];for(let n of t.sessions||[])this.sessions[Ft(e,n.browserSessionId)]={...n,agentId:e};return t.sessions||[]},async closeSession(e,t,s){await this.beginRequest("browser_session_close",{agentId:e,browserSessionId:t,expectedRevision:s})},async attach({agentId:e,browserSessionId:t,videoElement:s}){if(!s)throw new Error("Browser video element required");let n=Ft(e,t);delete this.errors[n],delete this.errorCodes[n];let r=Number(this.connectionEpoch||0)+1;this.connectionEpoch=r;let i=mo(),o={localKey:n,agentId:e,browserSessionId:t,requestId:i,peerId:null,connectionGeneration:r,connection:null,videoElement:ql(s),state:"preparing",remoteState:null,pendingOffer:null,pendingCandidates:[],answerPromise:null,channels:{},controlSeq:0,pointerSeq:0,iceServerCount:null,diagnostics:{connectionState:"new",iceConnectionState:"new",iceGatheringState:"new",candidateErrors:0,lastCandidateError:null},attachTimer:null,disconnectedTimer:null};return this.peers[n]=o,this.peerDiagnostics[n]=o.diagnostics,o.attachTimer=setTimeout(()=>{if(o.attachTimer=null,this.peers[n]!==o||o.connection?.connectionState==="connected")return;let a=o.iceServerCount===0?"browser_ice_servers_missing":o.diagnostics.iceConnectionState==="failed"?"browser_ice_connection_failed":"browser_peer_attach_timeout";this.failPeer(o,new Error(a),a)},Jb),this.send({type:"browser_peer_attach",agentId:e,browserSessionId:t,requestId:i,connectionGeneration:r,role:"interactive",clientCapabilities:{codecs:["video/VP8"],maxWidth:1920,maxHeight:1080,maxFps:30}}),o},async preparePeer(e,t){if(this.peers[e.localKey]!==e||e.connectionGeneration!==t.connectionGeneration)return;if(e.connection){if(e.peerId===t.peerId)return;throw new Error("Browser peer identity changed during preparation")}e.peerId=t.peerId;let s=Array.isArray(t.iceServers)?t.iceServers:[];e.iceServerCount=s.length;let n=ql(new RTCPeerConnection({iceServers:s,iceTransportPolicy:t.iceTransportPolicy==="relay"?"relay":"all"}));e.connection=n,e.diagnostics.iceConnectionState=n.iceConnectionState||"new",e.diagnostics.iceGatheringState=n.iceGatheringState||"new",e.state="prepared",n.ondatachannel=i=>{if(this.peers[e.localKey]!==e)return;let o=i.channel;if(!["browser.control.v1","browser.pointer.v1","browser.state.v1"].includes(o?.label)){o?.close?.();return}e.channels[o.label]=ql(o),o.onclose=()=>{e.channels[o.label]===o&&delete e.channels[o.label]}},n.ontrack=i=>{this.peers[e.localKey]===e&&(e.videoElement.srcObject=i.streams[0]||new MediaStream([i.track]),e.videoElement.play().catch(()=>{}))},n.onicecandidate=i=>{if(this.peers[e.localKey]===e)try{this.send({type:"browser_peer_ice_candidate",agentId:e.agentId,browserSessionId:e.browserSessionId,peerId:e.peerId,connectionGeneration:e.connectionGeneration,candidate:i.candidate?i.candidate.toJSON():null})}catch{}},n.onicecandidateerror=i=>{this.peers[e.localKey]===e&&(e.diagnostics.candidateErrors+=1,e.diagnostics.lastCandidateError={address:typeof i.address=="string"?i.address:null,port:Number(i.port)||null,url:typeof i.url=="string"?i.url:null,errorCode:Number(i.errorCode)||null,errorText:typeof i.errorText=="string"?i.errorText.slice(0,256):null})},n.oniceconnectionstatechange=()=>{this.peers[e.localKey]===e&&(e.diagnostics.iceConnectionState=n.iceConnectionState||"new")},n.onicegatheringstatechange=()=>{this.peers[e.localKey]===e&&(e.diagnostics.iceGatheringState=n.iceGatheringState||"new")},n.onconnectionstatechange=()=>{if(this.peers[e.localKey]===e){if(e.state=n.connectionState,e.diagnostics.connectionState=n.connectionState||"new",e.diagnostics.iceConnectionState=n.iceConnectionState||"new",e.diagnostics.iceGatheringState=n.iceGatheringState||"new",n.connectionState==="connected"){clearTimeout(e.attachTimer),e.attachTimer=null,clearTimeout(e.disconnectedTimer),e.disconnectedTimer=null;return}if(n.connectionState==="disconnected"){e.disconnectedTimer||(e.disconnectedTimer=setTimeout(()=>{if(e.disconnectedTimer=null,this.peers[e.localKey]!==e||n.connectionState==="connected")return;let i=e.iceServerCount===0?"browser_ice_servers_missing":"browser_ice_connection_failed";this.failPeer(e,new Error(i),i)},ew));return}if(["failed","closed"].includes(n.connectionState)){let i=e.iceServerCount===0?"browser_ice_servers_missing":"browser_ice_connection_failed";this.failPeer(e,new Error(i),i)}}};let r=e.pendingOffer;e.pendingOffer=null,r&&await this.acceptOffer(e,r)},async acceptOffer(e,t){if(!(this.peers[e.localKey]!==e||e.connectionGeneration!==Number(t.connectionGeneration))){if(!e.connection){(!e.peerId||e.peerId===t.peerId)&&(e.pendingOffer||(e.pendingOffer=t));return}if(e.peerId===t.peerId){if(e.answerPromise)return e.answerPromise;e.answerPromise=(async()=>{if(await e.connection.setRemoteDescription(t.description),await e.connection.setLocalDescription(await e.connection.createAnswer()),this.peers[e.localKey]===e){this.send({type:"browser_peer_answer",agentId:e.agentId,browserSessionId:e.browserSessionId,peerId:e.peerId,connectionGeneration:e.connectionGeneration,description:e.connection.localDescription});for(let s of e.pendingCandidates.splice(0))await e.connection.addIceCandidate(s)}})();try{await e.answerPromise}finally{e.answerPromise=null}}}},async acceptCandidate(e,t){if(!(this.peers[e.localKey]!==e||e.connectionGeneration!==Number(t.connectionGeneration)||!t.candidate)){if(!e.connection){(!e.peerId||e.peerId===t.peerId)&&e.pendingCandidates.push(t.candidate);return}e.peerId===t.peerId&&(e.connection.remoteDescription?await e.connection.addIceCandidate(t.candidate):e.pendingCandidates.push(t.candidate))}},interactiveReady(e,t){let s=this.peers[Ft(e,t)];return s?.state==="connected"&&s.channels["browser.control.v1"]?.readyState==="open"&&s.channels["browser.pointer.v1"]?.readyState==="open"},sendControl(e,t,s){let n=this.peers[Ft(e,t)],r=n?.channels["browser.control.v1"];return!n||n.state!=="connected"||r?.readyState!=="open"?!1:(r.send(JSON.stringify({version:1,connectionGeneration:n.connectionGeneration,controlSeq:++n.controlSeq,action:s})),!0)},sendPointer(e,t,s){let n=this.peers[Ft(e,t)],r=n?.channels["browser.pointer.v1"];return!n||n.state!=="connected"||r?.readyState!=="open"?!1:(r.send(JSON.stringify({version:1,connectionGeneration:n.connectionGeneration,pointerSeq:++n.pointerSeq,action:s})),!0)},detach(e,t,{notify:s=!0}={}){let n=Ft(e,t),r=this.peers[n];if(r){if(delete this.peers[n],clearTimeout(r.attachTimer),r.attachTimer=null,clearTimeout(r.disconnectedTimer),r.disconnectedTimer=null,s&&!r.peerId&&this.rememberCancelledPeer(r),s&&r.peerId)try{this.send({type:"browser_peer_detach",requestId:mo(),agentId:e,browserSessionId:t,peerId:r.peerId,connectionGeneration:r.connectionGeneration})}catch{}this.errorCodes[n]||delete this.peerDiagnostics[n];for(let i of Object.values(r.channels||{}))try{i?.close?.()}catch{}r.channels={};try{r.connection?.close()}catch{}r.videoElement&&(r.videoElement.srcObject=null)}},failPeer(e,t,s=null){this.peers[e.localKey]===e&&(this.lastError=t?.message||String(t),this.errors[e.localKey]=this.lastError,s?this.errorCodes[e.localKey]=s:delete this.errorCodes[e.localKey],this.detach(e.agentId,e.browserSessionId,{notify:!0}))},handleTransportReset(){this.protocolSupported=null,this.connectionEpoch+=1;for(let e of Object.values(this.pending))clearTimeout(e.timer),e.reject(new Error("Browser Runtime connection changed"));this.pending={};for(let e of Object.values(this.peers))this.detach(e.agentId,e.browserSessionId,{notify:!1});this.peers={},this.runtimeStatus={},this.installProgress={},this.errors={},this.errorCodes={},this.peerDiagnostics={},this.clearCancelledPeers()},handleMessage(e){if(!e?.type)return;if(e.type==="client_hello_ack"){this.protocolSupported=e.browserRuntimeProtocol===1;return}if(e.type==="auth_result"){this.protocolSupported=!1;return}if(e.type==="browser_runtime_error"){let n=new Error(Vl(e));n.code=e.code,this.completeRequest(e.requestId,null,n)||(this.lastError=n.message);return}if(e.type==="browser_runtime_install_progress"){this.installProgress[e.agentId]={downloadedBytes:Number(e.downloadedBytes)||0,totalBytes:Number(e.totalBytes)||0};return}if(e.type==="browser_runtime_status_result"){this.runtimeStatus[e.agentId]=e,this.completeRequest(e.requestId,e),e.state!=="installing"&&delete this.installProgress[e.agentId];return}if(e.type==="browser_session_error"){let n=new Error(Vl(e));n.code=e.code,this.completeRequest(e.requestId,null,n)||(this.lastError=n.message);return}if(e.type==="browser_session_created"){this.sessions[Ft(e.agentId,e.browserSessionId)]=e,this.completeRequest(e.requestId,e);return}if(e.type==="browser_session_list_result"){this.completeRequest(e.requestId,e);return}if(e.type==="browser_session_snapshot"){let n=Ft(e.agentId,e.browserSessionId);this.sessions[n]=e,this.completeRequest(e.requestId,e),["closed","failed"].includes(e.state)&&this.detach(e.agentId,e.browserSessionId,{notify:!1});return}let t=Ft(e.agentId,e.browserSessionId),s=this.peers[t];if(!s||s.connectionGeneration!==Number(e.connectionGeneration)){if(e.type==="browser_peer_prepared"||e.type==="browser_peer_error"||e.type==="browser_peer_state"&&["failed","disconnected","closed"].includes(e.state)){let n=this.takeCancelledPeer(e);if(n&&e.type==="browser_peer_prepared")try{this.send({type:"browser_peer_detach",requestId:mo(),agentId:n.agentId,browserSessionId:n.browserSessionId,peerId:e.peerId,connectionGeneration:n.connectionGeneration})}catch{}}return}if(e.type==="browser_peer_error")this.failPeer(s,new Error(Vl(e,"Browser peer failed")),e.code||null);else if(e.type==="browser_peer_prepared")this.preparePeer(s,e).catch(n=>this.failPeer(s,n));else if(e.type==="browser_peer_offer")this.acceptOffer(s,e).catch(n=>this.failPeer(s,n));else if(e.type==="browser_peer_ice_candidate")this.acceptCandidate(s,e).catch(n=>this.failPeer(s,n));else if(e.type==="browser_peer_state"&&e.state&&(s.remoteState=e.state,["failed","disconnected","closed"].includes(e.state))){let n=s.iceServerCount===0?"browser_ice_servers_missing":"browser_ice_connection_failed";this.failPeer(s,new Error(n),n)}}}})});function yo(){try{if(window.Pinia&&typeof window.Pinia.useAuthStore=="function")return window.Pinia.useAuthStore()}catch{}return null}function Hl(){try{return localStorage.getItem("authToken")||null}catch{return null}}function yf(){let e=yo();if(e)try{return e.getActiveToken?.()||e.token||Hl()}catch{return e.token||Hl()}return Hl()}function rw(e,t){if(!e)return!1;let s=yf();if(s&&s!==t)return!1;try{localStorage.setItem("authToken",e)}catch{}let n=yo();return n&&(n.token=e),!0}function iw(e){try{let t=typeof e=="string"?e:e?.url;return!t||typeof window>"u"||!window.location?null:new URL(t,window.location.href)}catch{return null}}function vf(e){return!e||typeof window>"u"||!window.location?!1:e.origin===window.location.origin&&e.pathname.startsWith("/api/")}function ow(e){if(!e)return!1;let t=e.pathname;return!!(nw.has(t)||t.startsWith("/api/auth/sso/poll/")||/^\/api\/auth\/sso\/[^/]+\/start(?:-qr)?$/.test(t))}function aw(e,t){return t?.headers?new Headers(t.headers):e&&typeof e=="object"&&e.headers?new Headers(e.headers):new Headers}function lw(e){let t=e.get("Authorization");return!t||!t.startsWith("Bearer ")?null:t.slice(7)}function cw(e,t){return{...e||{},headers:t}}function dw(e,t,s,n){let r=yo();r&&typeof r.handleAuthResponse=="function"?r.handleAuthResponse(e,t,s,n):r&&typeof r.handleAuthFailure=="function"&&n&&r.handleAuthFailure(void 0,t,s)}function bf(){if(mf||typeof window>"u"||!window.fetch)return;mf=!0;let e=window.fetch.bind(window);window.fetch=async function(s,n){let r=iw(s),i=vf(r)&&!ow(r),o=vf(r)?{...n||{},credentials:"same-origin"}:n,a=null,l=i?yo():null,c=l?.authGeneration,d=!!l?.isAuthenticated;if(i){let p=aw(s,n);a=lw(p),a||(a=yf(),a&&(p.set("Authorization",`Bearer ${a}`),o=cw(o,p)))}let u=await e(s,o);try{let p=u.headers&&u.headers.get&&u.headers.get("X-New-Token");p&&rw(p,a),i&&u.status===401&&dw(u,a,c,d)}catch{}return u}}var mf,nw,wf=B(()=>{mf=!1,nw=new Set(["/api/auth/mode","/api/auth/login","/api/auth/aad","/api/auth/verify","/api/auth/verify-totp","/api/auth/setup-totp","/api/auth/register","/api/auth/password-reset/request","/api/auth/password-reset/verify"])});var kf,Sf,Bl=B(()=>{kf={"quickSend.title":"Quick send","quickSend.description":"Add up to 5 send buttons for this Agent. Each sends your current message with its model and optional turn overrides.","quickSend.empty":"No quick sends configured. No extra send buttons are shown.","quickSend.offline":"This Agent is offline. Reconnect to load or save quick sends.","quickSend.entry":"Quick send {index}","quickSend.name":"Button name","quickSend.model":"Model","quickSend.chooseModel":"Choose a model","quickSend.noModels":"Configure models in the LLM category first.","quickSend.effort":"Reasoning effort","quickSend.maxOutputTokens":"Maximum output tokens","quickSend.default":"Default","quickSend.outputLimit":"Leave blank to use the model default: {max} tokens (also the maximum).","quickSend.add":"Add quick send","quickSend.remove":"Remove","quickSend.limit":"Maximum 5 quick sends.","quickSend.nameRequired":"Enter a button name (1\u201380 characters).","quickSend.modelRequired":"Choose an available model for each quick send.","quickSend.effortInvalid":"The selected effort is not available for this model.","quickSend.outputInvalid":"Output tokens must be a positive integer no greater than {max}.","quickSend.loadFailed":"Could not load quick sends. Refresh to retry.","quickSend.saveFailed":"Save was not confirmed. Refresh to check the saved configuration before retrying.","quickSend.saved":"Quick sends saved.","quickSend.savedRefreshWarning":"Quick sends saved, but runtime refresh failed: {error}"},Sf={"quickSend.title":"\u5FEB\u6377\u53D1\u9001","quickSend.description":"\u4E3A\u6B64 Agent \u6DFB\u52A0\u6700\u591A 5 \u4E2A\u53D1\u9001\u6309\u94AE\u3002\u4F7F\u7528\u6307\u5B9A\u6A21\u578B\u548C\u53EF\u9009\u7684\u5355\u8F6E\u53C2\u6570\u53D1\u9001\u5F53\u524D\u6D88\u606F\u3002","quickSend.empty":"\u5C1A\u672A\u914D\u7F6E\u5FEB\u6377\u53D1\u9001\uFF0C\u4E0D\u4F1A\u663E\u793A\u989D\u5916\u7684\u53D1\u9001\u6309\u94AE\u3002","quickSend.offline":"\u6B64 Agent \u5DF2\u79BB\u7EBF\u3002\u91CD\u65B0\u8FDE\u63A5\u540E\u53EF\u52A0\u8F7D\u6216\u4FDD\u5B58\u5FEB\u6377\u53D1\u9001\u3002","quickSend.entry":"\u5FEB\u6377\u53D1\u9001 {index}","quickSend.name":"\u6309\u94AE\u540D\u79F0","quickSend.model":"\u6A21\u578B","quickSend.chooseModel":"\u9009\u62E9\u6A21\u578B","quickSend.noModels":"\u8BF7\u5148\u5728\u6A21\u578B\u914D\u7F6E\u5206\u7C7B\u4E2D\u6DFB\u52A0\u6A21\u578B\u3002","quickSend.effort":"\u63A8\u7406\u5F3A\u5EA6","quickSend.maxOutputTokens":"\u6700\u5927\u8F93\u51FA Token \u6570","quickSend.default":"\u9ED8\u8BA4","quickSend.outputLimit":"\u7559\u7A7A\u4F7F\u7528\u6A21\u578B\u9ED8\u8BA4\u503C\uFF1A{max} Token\uFF08\u4E5F\u662F\u53EF\u8BBE\u7F6E\u7684\u4E0A\u9650\uFF09\u3002","quickSend.add":"\u6DFB\u52A0\u5FEB\u6377\u53D1\u9001","quickSend.remove":"\u5220\u9664","quickSend.limit":"\u6700\u591A\u6DFB\u52A0 5 \u4E2A\u5FEB\u6377\u53D1\u9001\u3002","quickSend.nameRequired":"\u8BF7\u8F93\u5165\u6309\u94AE\u540D\u79F0\uFF081\u201380 \u4E2A\u5B57\u7B26\uFF09\u3002","quickSend.modelRequired":"\u8BF7\u4E3A\u6BCF\u4E2A\u5FEB\u6377\u53D1\u9001\u9009\u62E9\u53EF\u7528\u6A21\u578B\u3002","quickSend.effortInvalid":"\u6B64\u6A21\u578B\u4E0D\u652F\u6301\u6240\u9009\u63A8\u7406\u5F3A\u5EA6\u3002","quickSend.outputInvalid":"\u8F93\u51FA Token \u6570\u5FC5\u987B\u4E3A\u4E0D\u8D85\u8FC7 {max} \u7684\u6B63\u6574\u6570\u3002","quickSend.loadFailed":"\u65E0\u6CD5\u52A0\u8F7D\u5FEB\u6377\u53D1\u9001\uFF0C\u8BF7\u5237\u65B0\u91CD\u8BD5\u3002","quickSend.saveFailed":"\u5C1A\u672A\u786E\u8BA4\u4FDD\u5B58\u3002\u8BF7\u5148\u5237\u65B0\u68C0\u67E5\u5DF2\u4FDD\u5B58\u7684\u914D\u7F6E\uFF0C\u518D\u51B3\u5B9A\u662F\u5426\u91CD\u8BD5\u3002","quickSend.saved":"\u5FEB\u6377\u53D1\u9001\u5DF2\u4FDD\u5B58\u3002","quickSend.savedRefreshWarning":"\u5FEB\u6377\u53D1\u9001\u5DF2\u4FDD\u5B58\uFF0C\u4F46\u8FD0\u884C\u65F6\u5237\u65B0\u5931\u8D25\uFF1A{error}"}});var If,Cf,Nl=B(()=>{If={"userShortcuts.title":"Keyboard shortcuts","userShortcuts.scope":"These are your user preferences, stored only in this browser for this account. They do not sync across devices.","userShortcuts.showQuickSends":"Enable quick-send shortcuts","userShortcuts.quickSendHelp":"Preset names and request settings are configured in Agent settings. Quick-send shortcuts only work while the message composer is focused.","userShortcuts.help":"Shortcuts use simple Alt + key defaults. Click a binding to replace it, or clear it to disable the action. Escape cancels; Tab moves on. Global actions stay available while the message composer is focused, and never run in dialogs, other text fields, editors or terminals.","userShortcuts.suggestion":"Suggestion: {binding}","userShortcuts.recording":"Press a shortcut\u2026","userShortcuts.unbound":"Not bound","userShortcuts.clear":"Clear","userShortcuts.clearAction":"Clear shortcut for {action}","userShortcuts.reset":"Reset shortcuts and hide buttons","userShortcuts.action.terminal":"Open terminal","userShortcuts.action.files":"Open files","userShortcuts.action.git":"Open Git","userShortcuts.action.newSession":"New session","userShortcuts.action.closeWorkbench":"Close workbench","userShortcuts.action.quickSend1":"Quick send 1","userShortcuts.action.quickSend2":"Quick send 2","userShortcuts.action.quickSend3":"Quick send 3","userShortcuts.action.quickSend4":"Quick send 4","userShortcuts.action.quickSend5":"Quick send 5","userShortcuts.error.invalid":"Use Ctrl, Meta or Alt with a letter or number; Shift is optional.","userShortcuts.error.reserved":"This combination conflicts with a browser or existing app shortcut.","userShortcuts.error.conflict":"This shortcut is already assigned to {action}. Clear it there first.","userShortcuts.error.storage":"Could not save preferences in this browser. Check browser storage permissions.","userShortcuts.error.unauthenticated":"Sign in before saving your shortcuts."},Cf={"userShortcuts.title":"\u952E\u76D8\u5FEB\u6377\u952E","userShortcuts.scope":"\u8FD9\u662F\u4F60\u7684\u7528\u6237\u504F\u597D\uFF0C\u6309\u5F53\u524D\u8D26\u53F7\u4EC5\u4FDD\u5B58\u5728\u6B64\u6D4F\u89C8\u5668\u4E2D\uFF0C\u4E0D\u8DE8\u8BBE\u5907\u540C\u6B65\u3002","userShortcuts.showQuickSends":"\u542F\u7528\u5FEB\u6377\u53D1\u9001\u5FEB\u6377\u952E","userShortcuts.quickSendHelp":"\u9884\u8BBE\u540D\u79F0\u4E0E\u8BF7\u6C42\u53C2\u6570\u5728 Agent \u8BBE\u7F6E\u4E2D\u914D\u7F6E\u3002\u5FEB\u6377\u53D1\u9001\u6309\u952E\u4EC5\u5728\u6D88\u606F\u8F93\u5165\u6846\u83B7\u5F97\u7126\u70B9\u65F6\u751F\u6548\u3002","userShortcuts.help":"\u9ED8\u8BA4\u4F7F\u7528\u7B80\u5355\u7684 Alt + \u5355\u952E\u3002\u70B9\u51FB\u7ED1\u5B9A\u6309\u94AE\u53EF\u66FF\u6362\uFF0C\u6E05\u9664\u540E\u53EF\u505C\u7528\u8BE5\u64CD\u4F5C\u3002Escape \u53D6\u6D88\uFF0CTab \u79FB\u81F3\u4E0B\u4E00\u9879\u3002\u6D88\u606F\u8F93\u5165\u6846\u83B7\u5F97\u7126\u70B9\u65F6\u4ECD\u53EF\u4F7F\u7528\u5168\u5C40\u52A8\u4F5C\uFF1B\u5F39\u7A97\u3001\u5176\u4ED6\u8F93\u5165\u6846\u3001\u7F16\u8F91\u5668\u4E0E\u7EC8\u7AEF\u4E2D\u7684\u6309\u952E\u4E0D\u4F1A\u88AB\u62A2\u5360\u3002","userShortcuts.suggestion":"\u63A8\u8350\uFF1A{binding}","userShortcuts.recording":"\u8BF7\u6309\u4E0B\u7EC4\u5408\u952E\u2026","userShortcuts.unbound":"\u672A\u7ED1\u5B9A","userShortcuts.clear":"\u6E05\u9664","userShortcuts.clearAction":"\u6E05\u9664\u201C{action}\u201D\u5FEB\u6377\u952E","userShortcuts.reset":"\u91CD\u7F6E\u5FEB\u6377\u952E\u5E76\u9690\u85CF\u6309\u94AE","userShortcuts.action.terminal":"\u6253\u5F00\u7EC8\u7AEF","userShortcuts.action.files":"\u6253\u5F00\u6587\u4EF6","userShortcuts.action.git":"\u6253\u5F00 Git","userShortcuts.action.newSession":"\u65B0\u5EFA\u4F1A\u8BDD","userShortcuts.action.closeWorkbench":"\u5173\u95ED\u5DE5\u4F5C\u53F0","userShortcuts.action.quickSend1":"\u5FEB\u6377\u53D1\u9001 1","userShortcuts.action.quickSend2":"\u5FEB\u6377\u53D1\u9001 2","userShortcuts.action.quickSend3":"\u5FEB\u6377\u53D1\u9001 3","userShortcuts.action.quickSend4":"\u5FEB\u6377\u53D1\u9001 4","userShortcuts.action.quickSend5":"\u5FEB\u6377\u53D1\u9001 5","userShortcuts.error.invalid":"\u8BF7\u4F7F\u7528 Ctrl\u3001Meta \u6216 Alt \u642D\u914D\u5B57\u6BCD\u6216\u6570\u5B57\uFF0C\u53EF\u52A0 Shift\u3002","userShortcuts.error.reserved":"\u8BE5\u7EC4\u5408\u4E0E\u6D4F\u89C8\u5668\u6216\u5E94\u7528\u5DF2\u6709\u5FEB\u6377\u952E\u51B2\u7A81\u3002","userShortcuts.error.conflict":"\u8BE5\u7EC4\u5408\u5DF2\u7ED1\u5B9A\u201C{action}\u201D\uFF0C\u8BF7\u5148\u6E05\u9664\u539F\u7ED1\u5B9A\u3002","userShortcuts.error.storage":"\u65E0\u6CD5\u5728\u6B64\u6D4F\u89C8\u5668\u4FDD\u5B58\u504F\u597D\uFF0C\u8BF7\u68C0\u67E5\u6D4F\u89C8\u5668\u5B58\u50A8\u6743\u9650\u3002","userShortcuts.error.unauthenticated":"\u8BF7\u5148\u767B\u5F55\u518D\u4FDD\u5B58\u5FEB\u6377\u952E\u3002"}});var Af,xf=B(()=>{Bl();Nl();Af={...Sf,...Cf,"quickSend.composer.label":"\u5FEB\u6377\u53D1\u9001","quickSend.composer.send":"\u5FEB\u6377\u53D1\u9001 {number}\uFF1A{name}","common.loading":"\u52A0\u8F7D\u4E2D...","common.confirm":"\u786E\u5B9A","common.apply":"\u5E94\u7528","common.cancel":"\u53D6\u6D88","common.delete":"\u5220\u9664","common.copy":"\u590D\u5236","common.copied":"\u5DF2\u590D\u5236","common.close":"\u5173\u95ED","common.refresh":"\u5237\u65B0","common.open":"\u6253\u5F00","common.save":"\u4FDD\u5B58","common.saving":"\u4FDD\u5B58\u4E2D...","common.search":"\u641C\u7D22","common.back":"\u8FD4\u56DE","common.noSubdirectories":"\u65E0\u5B50\u76EE\u5F55","common.drives":"\u9A71\u52A8\u5668","common.rootDir":"\u6839\u76EE\u5F55","common.comma":"\uFF0C","common.select":"\u9009\u62E9","common.retry":"\u91CD\u8BD5","mermaid.export":"\u5BFC\u51FA","mermaid.exportMd":"\u5BFC\u51FA MD","mermaid.exportPng":"\u5BFC\u51FA PNG","mermaid.exportJpg":"\u5BFC\u51FA JPG","login.subtitle":"Yeaft Web Code Agent","login.username":"\u7528\u6237\u540D","login.password":"\u5BC6\u7801","login.login":"\u767B\u5F55","login.loggingIn":"\u767B\u5F55\u4E2D...","login.enterUsername":"\u8BF7\u8F93\u5165\u7528\u6237\u540D","login.enterPassword":"\u8BF7\u8F93\u5165\u5BC6\u7801","login.noAccount":"\u6CA1\u6709\u8D26\u53F7\uFF1F","login.registerWithCode":"\u6CE8\u518C\u65B0\u8D26\u53F7","login.or":"\u6216","login.usePassword":"\u4F7F\u7528\u8D26\u53F7\u5BC6\u7801\u767B\u5F55","login.useSso":"\u8FD4\u56DE\u5355\u70B9\u767B\u5F55","login.noProviders":"\u7BA1\u7406\u5458\u5C1A\u672A\u542F\u7528\u4EFB\u4F55\u7B2C\u4E09\u65B9\u767B\u5F55\u3002","login.microsoft":"\u4F7F\u7528 Microsoft \u8D26\u53F7\u767B\u5F55","login.github":"\u4F7F\u7528 GitHub \u8D26\u53F7\u767B\u5F55","login.google":"\u4F7F\u7528 Google \u8D26\u53F7\u767B\u5F55","login.wechat":"\u4F7F\u7528\u5FAE\u4FE1\u626B\u7801\u767B\u5F55","login.alipay":"\u4F7F\u7528\u652F\u4ED8\u5B9D\u8D26\u53F7\u767B\u5F55","login.wechat.mobileUnsupported":"\u5FAE\u4FE1\u767B\u5F55\u6682\u4EC5\u652F\u6301\u7535\u8111\u7AEF\uFF0C\u8BF7\u5728\u7535\u8111\u6D4F\u89C8\u5668\u4E2D\u626B\u7801\u767B\u5F55\u3002","login.alipay.mobileWaiting":"\u6B63\u5728\u7B49\u5F85\u4F60\u5728\u652F\u4ED8\u5B9D\u4E2D\u786E\u8BA4\u2026 \u5B8C\u6210\u540E\u8FD4\u56DE\u672C\u9875\u9762\u5C06\u81EA\u52A8\u767B\u5F55\u3002","login.alipay.relaunch":"\u91CD\u65B0\u6253\u5F00\u652F\u4ED8\u5B9D","login.qr.title":"\u626B\u7801\u767B\u5F55","login.qr.titleAlipay":"\u652F\u4ED8\u5B9D\u626B\u7801\u767B\u5F55","login.qr.titleWechat":"\u5FAE\u4FE1\u626B\u7801\u767B\u5F55","login.qr.hint":"\u8BF7\u4F7F\u7528\u624B\u673A\u626B\u63CF\u4E8C\u7EF4\u7801\u5B8C\u6210\u6388\u6743","login.error.enterUsername":"\u8BF7\u8F93\u5165\u7528\u6237\u540D","login.error.enterPassword":"\u8BF7\u8F93\u5165\u5BC6\u7801","login.error.enter6Digit":"\u8BF7\u8F93\u51656\u4F4D\u9A8C\u8BC1\u7801","login.error.enterInviteCode":"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801","login.error.usernameMinLen":"\u7528\u6237\u540D\u81F3\u5C112\u4E2A\u5B57\u7B26","login.error.passwordMinLen":"\u5BC6\u7801\u81F3\u5C116\u4F4D","login.error.passwordMismatch":"\u4E24\u6B21\u5BC6\u7801\u4E0D\u4E00\u81F4","login.error.enterVerifyCode":"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801","login.error.loginFailed":"\u767B\u5F55\u5931\u8D25","login.forgot.link":"\u5FD8\u8BB0\u5BC6\u7801\uFF1F","login.forgot.title":"\u91CD\u7F6E\u5BC6\u7801","login.forgot.emailHint":"\u8F93\u5165\u8D26\u6237\u7ED1\u5B9A\u7684\u90AE\u7BB1\uFF0C\u6211\u4EEC\u5C06\u53D1\u9001 6 \u4F4D\u91CD\u7F6E\u9A8C\u8BC1\u7801\u3002","login.forgot.sendCode":"\u53D1\u9001\u91CD\u7F6E\u9A8C\u8BC1\u7801","login.forgot.sending":"\u53D1\u9001\u4E2D...","login.forgot.codeSent":"\u5982\u679C\u90AE\u7BB1\u5DF2\u6CE8\u518C\uFF0C\u91CD\u7F6E\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001\u3002\u8BF7\u5728\u4E0B\u65B9\u8F93\u5165\u9A8C\u8BC1\u7801\u4E0E\u65B0\u5BC6\u7801\u3002","login.forgot.resetBtn":"\u91CD\u7F6E\u5BC6\u7801","login.forgot.resetting":"\u91CD\u7F6E\u4E2D...","login.forgot.success":"\u5BC6\u7801\u5DF2\u91CD\u7F6E\uFF0C\u53EF\u4EE5\u4F7F\u7528\u65B0\u5BC6\u7801\u767B\u5F55\u3002","login.forgot.emailInvalid":"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u90AE\u7BB1","login.register.title":"\u65B0\u7528\u6237\u6CE8\u518C","login.register.inviteCode":"\u9080\u8BF7\u7801","login.register.username":"\u7528\u6237\u540D","login.register.password":"\u5BC6\u7801\uFF08\u81F3\u5C116\u4F4D\uFF09","login.register.confirmPassword":"\u786E\u8BA4\u5BC6\u7801","login.register.email":"\u90AE\u7BB1\uFF08\u53EF\u9009\uFF09","login.register.submit":"\u6CE8\u518C","login.register.submitting":"\u6CE8\u518C\u4E2D...","login.register.back":"\u8FD4\u56DE\u767B\u5F55","login.register.success":"\u6CE8\u518C\u6210\u529F\uFF0C\u8BF7\u767B\u5F55","login.register.enterCode":"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801","login.register.usernameMin":"\u7528\u6237\u540D\u81F3\u5C112\u4E2A\u5B57\u7B26","login.register.passwordMin":"\u5BC6\u7801\u81F3\u5C116\u4F4D","login.register.passwordMismatch":"\u4E24\u6B21\u5BC6\u7801\u4E0D\u4E00\u81F4","login.totp.setupTitle":"\u8BBE\u7F6E\u53CC\u56E0\u7D20\u8BA4\u8BC1","login.totp.setupHint":"\u4F7F\u7528 Microsoft Authenticator \u6216 Google Authenticator \u626B\u63CF\u4E0B\u65B9\u4E8C\u7EF4\u7801","login.totp.manualKey":"\u6216\u624B\u52A8\u8F93\u5165\u5BC6\u94A5\uFF1A","login.totp.enterCode":"\u8F93\u51656\u4F4D\u9A8C\u8BC1\u7801","login.totp.complete":"\u5B8C\u6210\u8BBE\u7F6E","login.totp.verifying":"\u9A8C\u8BC1\u4E2D...","login.totp.verify":"\u9A8C\u8BC1","login.totp.prompt":"\u8BF7\u8F93\u5165 Authenticator \u5E94\u7528\u4E2D\u7684\u9A8C\u8BC1\u7801","login.totp.invalidCode":"\u8BF7\u8F93\u51656\u4F4D\u9A8C\u8BC1\u7801","login.email.codeSent":"\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001\u81F3 {email}","login.email.enterCode":"\u8F93\u5165\u9A8C\u8BC1\u7801","login.email.verify":"\u9A8C\u8BC1","login.email.verifying":"\u9A8C\u8BC1\u4E2D...","login.email.enterCodeError":"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801","chat.agent.select":"\u9009\u62E9 Agent","chat.agent.manage":"\u7BA1\u7406 Agent","chat.agent.count":"{count} agents","chat.agent.none":"\u6682\u65E0 Agent","chat.agent.restarting":"\u91CD\u542F\u4E2D","agentSettings.open":"Agent \u8BBE\u7F6E","agentSettings.manage":"\u7BA1\u7406","agentSettings.eyebrow":"\u672C\u5730\u8FD0\u884C\u65F6","agentSettings.title":"Agent \u8BBE\u7F6E","agentSettings.description":"\u6309 Agent \u67E5\u770B\u548C\u914D\u7F6E\u672C\u5730\u8FD0\u884C\u65F6\uFF0C\u4E0D\u518D\u628A\u8FD0\u884C\u63A7\u5236\u6DF7\u5165\u8D26\u6237\u8BBE\u7F6E\u3002","agentSettings.agentList":"Agent","agentSettings.categories":"Agent \u8BBE\u7F6E\u5206\u7C7B","agentSettings.categories.operations":"\u64CD\u4F5C","agentSettings.categories.trace":"Trace","agentSettings.categories.llm":"LLM \u914D\u7F6E","agentSettings.selectedAgent":"\u5F53\u524D Agent","agentSettings.online":"\u5728\u7EBF","agentSettings.offline":"\u79BB\u7EBF","agentSettings.empty":"\u6682\u65E0\u53EF\u7528 Agent\u3002","agentSettings.runtime.title":"\u8FD0\u884C\u65F6","agentSettings.runtime.description":"\u8EAB\u4EFD\u3001\u5DE5\u4F5C\u76EE\u5F55\u548C\u672C\u5730\u540E\u53F0\u5904\u7406\u3002","agentSettings.runtime.version":"\u7248\u672C","agentSettings.runtime.updateAvailable":"\u53EF\u66F4\u65B0\u81F3 v{version}","agentSettings.runtime.updateUnknown":"\u65E0\u6CD5\u83B7\u53D6\u66F4\u65B0\u72B6\u6001","agentSettings.runtime.workDir":"\u5DE5\u4F5C\u76EE\u5F55","agentSettings.telemetry.title":"\u8BCA\u65AD","agentSettings.telemetry.saved":"\u8BCA\u65AD\u8BBE\u7F6E\u5DF2\u4FDD\u5B58\u3002","agentSettings.telemetry.loadFailed":"\u8BCA\u65AD\u8BBE\u7F6E\u52A0\u8F7D\u5931\u8D25\u3002","agentSettings.telemetry.saveFailed":"\u8BCA\u65AD\u8BBE\u7F6E\u4FDD\u5B58\u5931\u8D25\u3002","agentSettings.maintenance.title":"\u7EF4\u62A4","agentSettings.maintenance.description":"\u8FD9\u4E9B\u64CD\u4F5C\u4F1A\u4E2D\u65AD\u5F53\u524D Agent \u4E0A\u6B63\u5728\u8FD0\u884C\u7684\u5DE5\u4F5C\u3002","agentSettings.maintenance.upgradeFailed":"Agent \u5347\u7EA7\u5931\u8D25\u3002","chat.agent.dream":"Dream","chat.agent.dreamHint":"\u542F\u7528\u81EA\u52A8 Dream \u8BB0\u5FC6\u5904\u7406","chat.agent.restart":"\u91CD\u542F","chat.agent.restartConfirm":`\u786E\u5B9A\u8981\u91CD\u542F Agent "{name}" \u5417\uFF1F
10
+ ${m}`:m),v.status!=="failed"&&v.status!=="closed"&&(v.status=c.status||"idle");break}case"error":c.error&&(v.error=c.error.message||String(c.error));break;default:break}v.updatedAt=Date.now(),this.yeaftSubAgentCards={...this.yeaftSubAgentCards,[d]:v};break}case"history_loaded":{let a={...r,agentId:e.agentId||null,requestId:r.requestId||e.requestId||null};if(a.requestId&&!this.isCurrentYeaftHistoryResponse(a))break;let l=e.agentId||null,c=r.sessionId??null,d=Pe(l,c),u=e.perfTraceId||this.yeaftHistoryPerfTraceBySession?.[d];u&&vt(this,{traceId:u,phase:"history.loaded_event",agentId:e.agentId||null,sessionId:r.sessionId||null,messageType:r.type,detail:{mode:r.mode||"recent",count:r.count||0,hasMore:!!r.hasMore}});let p=r.mode==="delta"?"delta":"recent",f=this.yeaftSessionHistoryState[d]||{},g=Number.isFinite(r.latestSeq)?r.latestSeq:Number.isFinite(f.latestSeq)?f.latestSeq:null,v=Number.isFinite(r.nextBeforeSeq)?r.nextBeforeSeq:Number.isFinite(r.oldestSeq)?r.oldestSeq:Number.isFinite(f.serverOldestFetchedSeq)?f.serverOldestFetchedSeq:Number.isFinite(f.oldestSeq)?f.oldestSeq:null,m=p==="delta"?{...f,loaded:!0,loading:!1,latestSeq:g,syncingAfterSeq:null,count:(f.count||0)+(r.count||0)}:{...f,loaded:!0,loading:!1,hasMore:!!r.hasMore,serverHasMore:!!r.hasMore,oldestSeq:v,serverOldestFetchedSeq:v,count:typeof r.count=="number"?r.count:0,latestSeq:g,syncingAfterSeq:null},b=a.requestId?this.finishYeaftHistoryLoad(a,m,"completion"):null;b||(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[d]:m});let h=Pe(l?this.currentAgent:null,this.yeaftActiveSessionFilter??null);if(d===h)p==="recent"&&(this.yeaftHasMoreHistory=m.hasMore,this.yeaftOldestLoadedSeq=m.serverOldestFetchedSeq),this.yeaftLoadingMoreHistory=!!b?.loading;else if(this.yeaftLoadingMoreHistory){let w=this.yeaftSessionHistoryState[h]||null;this.yeaftLoadingMoreHistory=!!w?.loading}}break;case"vp_snapshot":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&a.applySnapshot(r,e.agentId||null,e.requestId||null);break}case"vp_snapshot_error":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&a.failSnapshot(e.agentId||null,e.requestId||null,r.error||r.message||"VP library request failed");break}case"vp_updated":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&r.vp&&a.upsert(r.vp,r.reason,e.agentId||null);break}case"vp_removed":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&r.vpId&&a.remove(r.vpId,r.reason,e.agentId||null);break}case"vp_crud_result":{let a=this._vpCrudPending&&this._vpCrudPending.get(r.requestId);a&&(this._vpCrudPending.delete(r.requestId),a.resolve({ok:!!r.ok,op:r.op,vpId:r.vpId,vp:r.vp,error:r.error||null}));break}case"group_list_updated":case"session_list_updated":case"yeaft_session_hydrate":{let a=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore(),l=r.sessions||[];if(r.projectsAuthoritative===!0&&Array.isArray(r.projects)?this.applySessionCatalogSnapshot(this.sessionCatalog,r.projects):Array.isArray(r.projects)&&e.agentId&&this.applyLegacyProjectSnapshot(r.projects,e.agentId),r.type!=="yeaft_session_hydrate"&&this.yeaftSessionHydrateRequestId&&this.yeaftSessionInventoryCompleteSupported===!0){let f=Array.isArray(this.yeaftSessionHydrateSlices)?this.yeaftSessionHydrateSlices.filter(g=>g.agentId!==(e.agentId||null)):[];this.yeaftSessionHydrateSlices=[...f,{agentId:e.agentId||null,sessions:l}];break}let c=a&&a.activeSessionId||null,d=a?.activeSessionKey&&a.sessions?.[a.activeSessionKey]?.agentId||null;a&&(a.applySnapshot(l,e.agentId||null),this._hasHandledYeaftSessionHydrate=!0,this.yeaftSessionHydrateError=null);let u=a&&a.activeSessionId||null,p=a?.activeSessionKey&&a.sessions?.[a.activeSessionKey]?.agentId||null;if(this.currentView==="yeaft"&&u){let f=p||Me(this,u,e.agentId||null),g=Pe(f,u),v=this.yeaftSessionHistoryState[g]||null;this.setActiveSessionFilter(u,{agentId:f,force:d!==f||eu(u,c,v)})}break}case"group_roster_changed":case"session_roster_changed":{let a=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();a&&a.applyRosterChange(r,e.agentId||null);break}case"group_crud_result":case"session_crud_result":{let a=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();a&&a.applyCrudResult(r,e.agentId||null),r.ok&&r.op==="delete"&&r.sessionId&&e.agentId&&this.clearYeaftHistoryMemory({agentId:e.agentId,sessionId:r.sessionId});let l=this._sessionCrudPending&&this._sessionCrudPending.get(r.requestId);l&&(()=>{if(this._sessionCrudPending?.get(r.requestId)!==l)return;this._sessionCrudPending.delete(r.requestId);let d=r.session||r.group||null,u=d&&e.agentId&&!d.agentId?{...d,agentId:e.agentId}:d,p=r.sessionId||null,f=r.sessions||null;l.resolve({ok:!!r.ok,op:r.op,session:u,sessionId:p,sessions:f,config:r.config||null,error:r.error||null})})();break}case"vp_turn_start":{if(!r.turnId||!r.vpId)break;let a=il(e.agentId||null,r.turnId)||r.turnId;if(this.activeVpTurns={...this.activeVpTurns,[a]:{agentId:e.agentId||null,turnId:r.turnId,vpId:r.vpId,sessionId:r.sessionId||null,threadId:r.threadId||null,isStreaming:!0,startedAt:r.ts||Date.now()}},r.sessionId){let l=ys(e.agentId||null,r.sessionId);this.yeaftProcessingSessions={...this.yeaftProcessingSessions,...l?{[l]:!0}:{[r.sessionId]:!0}}}break}case"vp_turn_end":{if(!r.turnId)break;let a=wn(this,e.agentId||null,r.turnId),l=r.sessionId||this.activeVpTurns?.[a]?.sessionId||null;r.reason==="end_turn"&&l&&this.markYeaftSessionUnread(l,e.agentId||null);let{[a]:c,...d}=this.activeVpTurns;this.activeVpTurns=d;let{[a]:u,...p}=this.stoppingVpTurnIds;this.stoppingVpTurnIds=p;let f=r.sessionId||c?.sessionId||null,g=e.agentId||c?.agentId||null,v=r.vpId||c?.vpId||null;if(!(f&&v?Object.values(this.activeVpTurns||{}).some(y=>y?.vpId===v&&Mt(y,f,g)):!1)&&f&&v){let y={...this.vpStatuses||{}},k=!1;for(let[_,A]of Object.entries(y))A?.vpId===v&&Mt(A,f,g)&&Jr.has(A.state)&&(y[_]={...A,state:"idle",turnId:null,since:r.ts||Date.now()},k=!0);k&&(this.vpStatuses=y)}this.clearYeaftSessionProcessingIfIdle(f,{agentId:g});let h={end_turn:"completed",route_forward:"completed",aborted:"aborted",errored:"errored",error:"errored",cancelled:"cancelled",canceled:"cancelled"}[r.reason]||"completed",w=Date.now(),I=Ss(this,e.agentId||null,e.conversationId);if(I&&Array.isArray(this.messagesMap[I])){let y=this.messagesMap[I],k=Vp(y,r);for(let _=0;_<y.length;_++){let A=y[_];if(!A||A.type!=="assistant")continue;let Q=A.sessionId??A.groupId;r.sessionId&&Q&&Q!==r.sessionId||r.vpId&&A.speakerVpId&&A.speakerVpId!==r.vpId||r.turnId&&A.turnId&&A.turnId!==r.turnId||A.status&&A.status!=="pending"||(A.status=h,A.turnEndAt=w,A.turnEndReason=r.reason||null,r.detail&&(A.turnEndDetail=r.detail),Number.isFinite(r.durationMs)&&(A.turnDurationMs=r.durationMs),k=!0)}k&&(this.messagesMap={...this.messagesMap,[I]:y.slice()}),this.pruneConversationMessageRetention(I,f,g)}break}case"yeaft_turn_aborted":{let a=Array.isArray(r.turnIds)?r.turnIds.filter(Boolean):[];r.turnId&&a.push(r.turnId);let l=r.sessionId||null,c=r.vpId||null,d=new Set;for(let g of a){let v=wn(this,e.agentId||null,g),m=this.activeVpTurns?.[v]||null;(!m||Mt(m,m.sessionId,e.agentId||null))&&d.add(v)}if(c)for(let[g,v]of Object.entries(this.activeVpTurns||{}))!v||v.vpId!==c||Mt(v,l,e.agentId||null)&&d.add(g);if(d.size===0)break;let u=l,p={...this.activeVpTurns||{}},f={...this.stoppingVpTurnIds||{}};for(let g of d){let v=p[g];!u&&v?.sessionId&&(u=v.sessionId),delete p[g],delete f[g]}this.activeVpTurns=p,this.stoppingVpTurnIds=f,this.clearYeaftSessionProcessingIfIdle(u||null,{agentId:e.agentId||null});break}case"yeaft_aborted":{let a=r.sessionId||e.sessionId||null;a?(this.activeVpTurns=Object.fromEntries(Object.entries(this.activeVpTurns||{}).filter(([,l])=>!Mt(l,a,e.agentId||null))),this.stoppingVpTurnIds=Object.fromEntries(Object.entries(this.stoppingVpTurnIds||{}).filter(([l])=>this.activeVpTurns?.[l])),this.vpStatuses=Object.fromEntries(Object.entries(this.vpStatuses||{}).filter(([,l])=>!Mt(l,a,e.agentId||null))),this.clearYeaftSessionProcessingIfIdle(a,{agentId:e.agentId||null,ignoreStatuses:!0})):r.all&&Np(this,e.agentId||null);break}case"vp_typing_start":{if(!r.vpId)break;let a=Ss(this,e.agentId||null,e.conversationId);if(!a)break;this.yeaftVpTyping=bp(this.yeaftVpTyping,a,r.vpId);break}case"vp_typing_end":{if(!r.vpId)break;let a=Ss(this,e.agentId||null,e.conversationId);if(!a)break;this.yeaftVpTyping=wp(this.yeaftVpTyping,a,r.vpId);break}case"vp_status_changed":{if(!r.vpId||!r.state)break;if(o){let u=xl(i);if(r.state==="thinking"||r.state==="retrying"||r.state==="tool")Fr(this,o,`${r.state}:${u}`);else if(r.state==="streaming"||r.state==="idle"||r.state==="error")for(let p of["thinking","retrying","tool"])Nn(this,o,`${p}:${u}`)}let a=r.sessionId||null,l=e.agentId||null,c=ao(l,a,r.vpId),d={agentId:l,state:r.state,since:r.since||Date.now(),turnId:r.turnId||null,title:r.title||"",sessionId:a,vpId:r.vpId};if(this.vpStatuses={...this.vpStatuses,[c]:d},a&&Jr.has(r.state)){let u=ys(l,a);this.yeaftProcessingSessions={...this.yeaftProcessingSessions,...u?{[u]:!0}:{[a]:!0}}}else a&&this.clearYeaftSessionProcessingIfIdle(a,{agentId:l});this.restoreActiveYeaftSessionFromStatuses([d],l);break}case"vp_status_snapshot":{let a=Array.isArray(r.statuses)?r.statuses:[],l=r.sessionId;if(l==null){let c={...this.vpStatuses||{}};if(e.agentId)for(let[d,u]of Object.entries(c))(!u?.agentId||u.agentId===e.agentId)&&delete c[d];else for(let d of Object.keys(c))delete c[d];for(let d of a){if(!d||!d.vpId)continue;let u=d.sessionId||d.groupId||null,p=ao(e.agentId||null,u,d.vpId);c[p]={agentId:e.agentId||null,state:d.state,since:d.since||Date.now(),turnId:d.turnId||null,title:d.title||"",sessionId:u,vpId:d.vpId}}this.vpStatuses=c}else{let c={...this.vpStatuses};for(let[d,u]of Object.entries(c))u&&u.sessionId===l&&(!e.agentId||!u.agentId||u.agentId===e.agentId)&&delete c[d];for(let d of a){if(!d||!d.vpId)continue;let u=d.sessionId||d.groupId||null,p=ao(e.agentId||null,u,d.vpId);c[p]={agentId:e.agentId||null,state:d.state,since:d.since||Date.now(),turnId:d.turnId||null,title:d.title||"",sessionId:u,vpId:d.vpId}}this.vpStatuses=c}this.yeaftProcessingSessions=Ib(this,e.agentId||null,a,l??null),this.restoreActiveYeaftSessionFromStatuses(a,e.agentId||null);break}case"yeaft_dream_snapshot":{let a=r&&r.snapshot,l=a&&typeof a.scope=="string"?a.scope:null;l&&(this.yeaftDreamSnapshots={...this.yeaftDreamSnapshots,[l]:{...a,receivedAt:Date.now()}});break}case"yeaft_dream_status":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&a.applyDreamStatus(r);break}case"yeaft_dream_result":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&a.applyDreamResult(r),r?.snapshot?.scope&&(this.yeaftDreamSnapshots={...this.yeaftDreamSnapshots,[r.snapshot.scope]:{...r.snapshot,receivedAt:Date.now()}});{let l=typeof r?.snapshot?.scope=="string"&&r.snapshot.scope?r.snapshot.scope:typeof r?.sessionId=="string"&&r.sessionId?`sessions/${r.sessionId}`:null;if(!l)break;let c=this.yeaftDreamLatest[l]||null;this.yeaftDreamLatest={...this.yeaftDreamLatest,[l]:{scope:l,phase:"result",status:r.skipped?"skipped":r.success?"success":"error",startedAt:c?.startedAt??null,finishedAt:Date.now(),mergedCount:typeof r.entriesCreated=="number"?r.entriesCreated:c?.mergedCount??null,error:r.skipped||r.success?null:r.error||"unknown",manual:typeof r?.manual=="boolean"?r.manual:c?.manual??null,durationMs:typeof r.durationMs=="number"?r.durationMs:c?.durationMs??null,llmCallCount:typeof r.llmCallCount=="number"?r.llmCallCount:c?.llmCallCount??0,inputTokens:typeof r.inputTokens=="number"?r.inputTokens:c?.inputTokens??0,outputTokens:typeof r.outputTokens=="number"?r.outputTokens:c?.outputTokens??0,totalTokens:typeof r.totalTokens=="number"?r.totalTokens:c?.totalTokens??0,metrics:r.metrics||c?.metrics||null,passBreakdown:r.passBreakdown||r.metrics?.passBreakdown||c?.passBreakdown||null,isRunning:!1}},this._appendDreamEvent(l,{type:"dream_progress",phase:"result",sessionId:r.sessionId,status:r.skipped?"skipped":r.success?"success":"error",success:!!r.success,entriesCreated:typeof r.entriesCreated=="number"?r.entriesCreated:null,trigger:r.trigger||null,error:r.skipped||r.success?null:r.error||null,skipped:!!r.skipped,skippedReason:r.skippedReason||null,durationMs:typeof r.durationMs=="number"?r.durationMs:null,llmCallCount:typeof r.llmCallCount=="number"?r.llmCallCount:0,inputTokens:typeof r.inputTokens=="number"?r.inputTokens:0,outputTokens:typeof r.outputTokens=="number"?r.outputTokens:0,totalTokens:typeof r.totalTokens=="number"?r.totalTokens:0,metrics:r.metrics||null,passBreakdown:r.passBreakdown||r.metrics?.passBreakdown||null,ts:Date.now()})}break}case"dream_progress":{let a=r?.phase||"unknown",l=null;typeof r?.target=="string"&&r.target.includes("/")?l=r.target:typeof r?.sessionId=="string"&&r.sessionId?l=`sessions/${r.sessionId}`:l="*";let c=a==="done",d=a==="error"||r?.status==="error",u=!c&&!d,p=f=>{let g=this.yeaftDreamLatest[f]||null;return{scope:f,phase:a,status:d?"error":c?"success":"running",startedAt:g?.startedAt&&u?g.startedAt:r?.ts||g?.startedAt||Date.now(),finishedAt:c||d?r?.ts||Date.now():null,mergedCount:typeof r?.mergedCount=="number"?r.mergedCount:typeof r?.targets=="number"?r.targets:g?.mergedCount??null,error:d?r?.error||"unknown":null,manual:typeof r?.manual=="boolean"?r.manual:g?.manual??!1,durationMs:typeof r?.duration=="number"?r.duration:typeof r?.durationMs=="number"?r.durationMs:g?.durationMs??null,llmCallCount:typeof r?.llmCallCount=="number"?r.llmCallCount:g?.llmCallCount??0,inputTokens:typeof r?.inputTokens=="number"?r.inputTokens:g?.inputTokens??0,outputTokens:typeof r?.outputTokens=="number"?r.outputTokens:g?.outputTokens??0,totalTokens:typeof r?.totalTokens=="number"?r.totalTokens:g?.totalTokens??0,metrics:r?.metrics||g?.metrics||null,passBreakdown:r?.passBreakdown||r?.metrics?.passBreakdown||g?.passBreakdown||null,isRunning:u}};if(l==="*"){let f={...this.yeaftDreamLatest,"*":p("*")};for(let g of Object.keys(this.yeaftDreamLatest))g!=="*"&&(f[g]=p(g));this.yeaftDreamLatest=f}else this.yeaftDreamLatest={...this.yeaftDreamLatest,[l]:p(l)};this._appendDreamEvent(l,r);break}}},_appendDreamEvent(e,t){if(!e||!t)return;let s=Date.now(),n={...t,at:s},r=Array.isArray(this.yeaftDreamEvents?.[e])?this.yeaftDreamEvents[e]:[],i=l=>[l?.type||"",l?.phase||"",(l?.sessionId??l?.groupId)||"",l?.target||"",l?.ts||l?.at||""].join("|"),o=i(n);if(r.some(l=>i(l)===o))return;let a=[...r,n];a.length>ef&&a.splice(0,a.length-ef),this.yeaftDreamEvents={...this.yeaftDreamEvents,[e]:a}},fetchExpertRoleDefinitions(){if(this.expertRoleDefinitions)return;let e=this.currentAgent;e&&this.sendWsMessage({type:"get_expert_roles",agentId:e})},setYeaftSidebarEnabled(e){try{typeof localStorage<"u"&&localStorage.removeItem("yeaft-sidebar-enabled")}catch{}},vpCrudRequest(e,t){(!this._vpCrudPending||typeof this._vpCrudPending.get!="function")&&(this._vpCrudPending=new Map);let s="vpc_"+Date.now().toString(36)+"_"+Math.random().toString(36).slice(2,8),r={create:"yeaft_vp_create",update:"yeaft_vp_update",delete:"yeaft_vp_delete",read:"yeaft_vp_read"}[e];if(!r)return Promise.resolve({ok:!1,op:e,error:{code:"bad_op",message:"unknown op: "+e}});let i={type:r,requestId:s};return e==="create"||e==="update"?i.payload=t||{}:i.vpId=t,new Promise(o=>{let a=setTimeout(()=>{this._vpCrudPending&&this._vpCrudPending.has(s)&&(this._vpCrudPending.delete(s),o({ok:!1,op:e,error:{code:"timeout",message:"vp_crud timeout"}}))},1e4);this._vpCrudPending.set(s,{resolve:l=>{clearTimeout(a),o(l)}}),this.sendWsMessage(i)})},sessionCrudRequest(e,t,s={}){(!this._sessionCrudPending||typeof this._sessionCrudPending.get!="function")&&(this._sessionCrudPending=new Map);let n="grc_"+Date.now().toString(36)+"_"+Math.random().toString(36).slice(2,8),i={list:"yeaft_list_sessions",create:"yeaft_create_session",copy:"yeaft_copy_session",rename:"yeaft_rename_session",update:"yeaft_update_session",update_config:"yeaft_update_session_config",archive:"yeaft_archive_session",delete:"yeaft_delete_session",add_member:"yeaft_session_add_member",remove_member:"yeaft_session_remove_member",set_default_vp:"yeaft_session_set_default_vp",reorder:"reorder_yeaft_sessions",scan_workdir:"yeaft_scan_workdir_sessions",restore:"yeaft_restore_session"}[e];if(!i)return Promise.resolve({ok:!1,op:e,error:{code:"bad_op",message:"unknown op: "+e}});let o={type:i,requestId:n};e==="create"?o.payload=t||{}:t&&typeof t=="object"&&Object.assign(o,t);let a=s&&s.agentId?s.agentId:null;a&&(o.agentId=a);let l=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();return l&&l.markPending(n,e),new Promise(c=>{let d=setTimeout(()=>{this._sessionCrudPending&&this._sessionCrudPending.has(n)&&(this._sessionCrudPending.delete(n),c({ok:!1,op:e,error:{code:"timeout",message:"group_crud timeout"}}))},1e4);this._sessionCrudPending.set(n,{resolve:u=>{clearTimeout(d),c(u)}}),this.sendWsMessage(o)})},markYeaftSessionUnread(e,t=null){if(!e)return!1;let s=Me(this,e,t);if(!s)return!1;let n=Tr(s,e);return this.currentView==="yeaft"&&this.yeaftActiveSessionFilter===e&&Me(this,e)===s||this.yeaftUnreadSessionKeys?.[n]?!1:(this.yeaftUnreadSessionKeys={...this.yeaftUnreadSessionKeys,[n]:!0},!0)},markYeaftSessionRead(e,t=null){if(!e)return!1;let s=Me(this,e,t);if(!s)return!1;let n=Tr(s,e);if(!this.yeaftUnreadSessionKeys?.[n])return!1;let{[n]:r,...i}=this.yeaftUnreadSessionKeys;return this.yeaftUnreadSessionKeys=i,!0},restoreActiveYeaftSessionFromStatuses(e=[],t=null){if(this.yeaftActiveSessionFilter)return null;let n=(Array.isArray(e)?e:[]).filter(o=>o&&(o.sessionId||o.groupId)&&!["idle","offline","completed","failed","aborted"].includes(o.state)).sort((o,a)=>(a.updatedAt||a.since||0)-(o.updatedAt||o.since||0)),r=n[0]?.sessionId||n[0]?.groupId||null;if(!r)return null;let i=t||n[0]?.agentId||tf(this,r);if(!i)return null;this.setActiveSessionFilter(r,{agentId:i,force:!0});try{let o=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();o&&typeof o.setActive=="function"&&o.setActive(r,i)}catch{}return r},setActiveSessionFilter(e,t={}){let s=this.yeaftActiveSessionFilter||null,n=e||null,r=n?Me(this,n,t.agentId||null):this.currentAgent,i=!!n&&n===s&&!!r&&!!this.currentAgent&&r!==this.currentAgent,o=!!t.force||i;if(this.yeaftActiveSessionFilter=n,r&&n&&this.currentAgent!==r){this.selectAgent(r);let l=this.agents.find(c=>c.id===r);this.activateYeaftAgent(r,l||null)}else r&&n&&this.activateYeaftAgent(r);r&&n&&(this.markYeaftSessionRead(n,r),Yd(this,r,n));let a=!o&&n===s;if(r&&n){this.yeaftSessionAgentById={...this.yeaftSessionAgentById||{},[n]:r};let l=this.yeaftConversationIdsByAgent?.[r]||null;l||(l=`yeaft-local-${r}-${Date.now()}`,this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[r]:l}),this.yeaftConversationId=l,this.messagesMap[l]||(this.messagesMap[l]=[]),this.currentView==="yeaft"&&(this.activeConversations=[l])}try{let l=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();l&&typeof l.setActive=="function"&&l.setActive(n,r||null);let c=l?.activeSessionKey||null;c?localStorage.setItem("lastViewedYeaftSession",c):localStorage.removeItem("lastViewedYeaftSession")}catch{}this.syncActiveYeaftHistoryLoad(),n&&r&&!a&&this.requestYeaftSessionBootstrap({forceSessionReady:!0,forceHistoryReplay:!0})},async switchYeaftModel(e,t=null,s=void 0){if(!e||!this.currentAgent)return;let n=t||null;if(n){let r={model:e};return s!==void 0&&(r.modelEffort=s||null),await this.sessionCrudRequest("update_config",{sessionId:n,config:r},{agentId:Me(this,n)})}return this.sendWsMessage({type:"yeaft_model_switch",model:e,modelEffort:s||null,agentId:this.currentAgent}),null},setYeaftDebugSearch(e){this.yeaftDebugSearch=typeof e=="string"?e:"",this._yeaftDebugSearchTimer&&clearTimeout(this._yeaftDebugSearchTimer),this._yeaftDebugSearchTimer=setTimeout(()=>{this._yeaftDebugSearchTimer=null,this.yeaftDebugLoops=[],this.yeaftDebugTurnsById={},this.yeaftDebugTurnOrder=[],this.loadYeaftDebugHistory({limit:this.yeaftDebugSearch.trim()?Jp:Tl,dreamLimit:5,indexOnly:!0,search:this.yeaftDebugSearch})},250)},setYeaftDebugSessionFilter(e){e==null?this.yeaftDebugSessionFilter=null:this.yeaftDebugSessionFilter=String(e)},toggleSubAgentCardExpand(e){let t=this.yeaftSubAgentCards?.[e];t&&(this.yeaftSubAgentCards={...this.yeaftSubAgentCards,[e]:{...t,expanded:!t.expanded}})},requestTelemetrySettings(e,t,s=null){if(!t)return Promise.reject(new Error("no agent"));let n=`telemetry-${Date.now()}-${Math.random().toString(36).slice(2)}`;return this.telemetryRequestByAgent={...this.telemetryRequestByAgent,[t]:n},new Promise((r,i)=>{this._telemetryPending||(this._telemetryPending={});let o=setTimeout(()=>{if(delete this._telemetryPending[n],this.telemetryRequestByAgent?.[t]===n){let a={...this.telemetryRequestByAgent};delete a[t],this.telemetryRequestByAgent=a}i(new Error("Telemetry request timed out"))},15e3);this._telemetryPending[n]={resolve:r,reject:i,timer:o,agentId:t,operation:e,requestId:n},this.sendWsMessage({type:e==="load"?"get_telemetry_settings":"update_telemetry_settings",agentId:t,requestId:n,...e==="update"?{settings:s||{}}:{}})})},loadTelemetrySettings(e=this.currentAgent){return e?this.requestTelemetrySettings("load",e):Promise.resolve({enabled:!0,retentionDays:3,flushIntervalMs:1e3,maxQueueSize:5e3,rawExchangeMaxBytes:524288,traceTextMaxBytes:262144,loaded:!0})},updateTelemetrySettings(e,t=this.currentAgent){return this.requestTelemetrySettings("update",t,e)},restartAgent(e){if(!e||this.agentOperations?.[e]?.restart?.pending)return!1;let t=`restart-${Date.now()}-${Math.random().toString(36).slice(2)}`,s=setTimeout(()=>this.finishAgentOperation(e,"restart","timeout"),12e4);return this.agentOperations={...this.agentOperations,[e]:{...this.agentOperations[e]||{},restart:{pending:!0,acknowledged:!1,startedAt:Date.now(),requestId:t,timer:s,error:null}}},this.sendWsMessage({type:"restart_agent",agentId:e,requestId:t}),!0},upgradeAgent(e,t=null){if(!e||this.agentOperations?.[e]?.upgrade?.pending)return!1;let s=this.agents.find(i=>i.id===e),n=`upgrade-${Date.now()}-${Math.random().toString(36).slice(2)}`,r=setTimeout(()=>this.finishAgentOperation(e,"upgrade","timeout"),12e4);return this.agentOperations={...this.agentOperations,[e]:{...this.agentOperations[e]||{},upgrade:{pending:!0,acknowledged:!1,startedAt:Date.now(),requestId:n,oldVersion:s?.version||null,batchId:t,timer:r,error:null}}},this.sendWsMessage({type:"upgrade_agent",agentId:e,requestId:n}),!0},getUpgradableAgents(){return(this.agents||[]).filter(e=>e?.online&&Array.isArray(e.capabilities)&&e.capabilities.includes("remote_upgrade_safe")&&!e.capabilities.includes("container_agent")&&!this.agentOperations?.[e.id]?.restart?.pending&&!this.agentOperations?.[e.id]?.upgrade?.pending)},upgradeAllAgents(){if(this.agentUpgradeBatch?.pending)return null;let e=this.getUpgradableAgents();if(e.length===0)return null;let t={id:`upgrade-batch-${Date.now()}-${Math.random().toString(36).slice(2)}`,pending:!0,startedAt:Date.now(),agentIds:e.map(s=>s.id),skippedCount:Math.max(0,(this.agents||[]).length-e.length),results:{}};this.agentUpgradeBatch=t;for(let s of e)this.upgradeAgent(s.id,t.id)||this.recordAgentUpgradeBatchResult(s.id,{status:"failed",error:"not_started"},t.id);return t.agentIds.length},recordAgentUpgradeBatchResult(e,t={},s=null){let n=this.agentUpgradeBatch;if(!n?.pending||s&&n.id!==s||!n.agentIds.includes(e)||n.results[e])return null;let r={...n,results:{...n.results,[e]:{status:t.status||"failed",error:t.error||null,version:t.version||null,reason:t.reason||null}}},i=r.agentIds.every(o=>r.results[o]);return this.agentUpgradeBatch=i?{...r,pending:!1,completedAt:Date.now()}:r,i&&typeof window<"u"&&window.dispatchEvent(new CustomEvent("agent-upgrade-batch-complete",{detail:this.agentUpgradeBatch})),i?this.agentUpgradeBatch:null},finishAgentOperation(e,t,s=null){let n=this.agentOperations?.[e]?.[t];n&&(clearTimeout(n.timer),this.agentOperations={...this.agentOperations,[e]:{...this.agentOperations[e]||{},[t]:{...n,pending:!1,timer:null,error:s}}},t==="upgrade"&&n.batchId&&this.recordAgentUpgradeBatchResult(e,s?{status:"failed",error:s}:{status:"upgraded"},n.batchId))},loadSearchSettings(){return this.currentAgent?new Promise(e=>{this._searchPending||(this._searchPending={}),this._searchPending.load=e,this.sendWsMessage({type:"get_search_settings",agentId:this.currentAgent})}):(this.searchSettings={backend:"tavily",tavilyKeyConfigured:!1,tavilyKeyMasked:null,disableHtmlFallback:!1,loaded:!0},Promise.resolve(this.searchSettings))},updateSearchSettings(e){return this.currentAgent?new Promise(t=>{this._searchPending||(this._searchPending={}),this._searchPending.update=t,this.sendWsMessage({type:"update_search_settings",agentId:this.currentAgent,settings:e||{}})}):Promise.resolve({error:"no agent"})},loadTavilyUsage(){return this.currentAgent?(this.tavilyUsageLoading=!0,new Promise(e=>{this._searchPending||(this._searchPending={}),this._searchPending.usage=e,this.sendWsMessage({type:"get_tavily_usage",agentId:this.currentAgent})})):Promise.resolve(null)},loadYeaftMcpServers(){if(!this.currentAgent)return this.yeaftMcpServers=[],this.yeaftMcpRuntime={connected:!1,toolCount:0,perServer:[]},Promise.resolve({servers:[],runtime:this.yeaftMcpRuntime});this.yeaftMcpLoading=!0;let e=`mcp-list-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(t=>{this._mcpPending||(this._mcpPending={}),this._mcpPending[e]=t,this.sendWsMessage({type:"yeaft_mcp_list",agentId:this.currentAgent,requestId:e})})},addYeaftMcpServer(e){if(!this.currentAgent)return Promise.resolve({error:"no agent"});this.yeaftMcpLoading=!0;let t=`mcp-add-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(s=>{this._mcpPending||(this._mcpPending={}),this._mcpPending[t]=s,this.sendWsMessage({type:"yeaft_mcp_add",agentId:this.currentAgent,requestId:t,server:e||{}})})},removeYeaftMcpServer(e){if(!this.currentAgent)return Promise.resolve({error:"no agent"});this.yeaftMcpLoading=!0;let t=`mcp-rem-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(s=>{this._mcpPending||(this._mcpPending={}),this._mcpPending[t]=s,this.sendWsMessage({type:"yeaft_mcp_remove",agentId:this.currentAgent,requestId:t,name:e})})},reloadYeaftMcpServer(e){if(!this.currentAgent)return Promise.resolve({error:"no agent"});this.yeaftMcpLoading=!0;let t=`mcp-rel-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(s=>{this._mcpPending||(this._mcpPending={}),this._mcpPending[t]=s,this.sendWsMessage({type:"yeaft_mcp_reload",agentId:this.currentAgent,requestId:t,name:e||null})})},clearYeaftMessages(){let e=this.yeaftConversationId;e&&(qe(this,e),delete this.messagesMap[e],delete this.processingConversations[e],delete this.executionStatusMap[e],delete this.refreshingSessionMap[e],this._closedAt&&delete this._closedAt[e],this._turnCompletedConvs?.delete(e)),this.yeaftConversationId=this.currentAgent?`yeaft-local-${this.currentAgent}-${Date.now()}`:`yeaft-local-${Date.now()}`,this.currentAgent&&(this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[this.currentAgent]:this.yeaftConversationId}),this.messagesMap[this.yeaftConversationId]=[],this.activeConversations=[this.yeaftConversationId],this.yeaftSessionReady=!1,this.yeaftModel=null,this.yeaftAvailableModels=[],this.yeaftStatus=null,this._yeaftAskTerminalEvents={},this.yeaftDebugLoops=[],this.yeaftDebugTurnsById={},this.yeaftDebugTurnOrder=[],this.yeaftDebugHistoryLoading=!1,this.yeaftDebugHistoryError=null,this.yeaftDebugHistoryFetchedAt=0,this.yeaftDebugHistoryProjection=null,this.yeaftDebugSearch="",this.yeaftDebugSessionFilter=null,this.yeaftDebugPanel={open:!1,status:"idle",requestId:null,agentId:null,sessionId:null,turnId:null,error:null},this._yeaftDebugSearchTimer&&(clearTimeout(this._yeaftDebugSearchTimer),this._yeaftDebugSearchTimer=null),this._fetchYeaftDebugHistoryTimer&&(clearTimeout(this._fetchYeaftDebugHistoryTimer),this._fetchYeaftDebugHistoryTimer=null),this._yeaftDebugHistoryInFlightKey=null,this._yeaftDebugHistoryLatestListRequestId=null,this._yeaftDebugHistoryLatestDetailRequestId=null,this.yeaftReflectionCards={},this.yeaftSubAgentCards={},this.yeaftDreamLatest={},this.yeaftDreamEvents={},this.vpStatuses={},this.currentAgent&&this.sendWsMessage({type:"yeaft_reset",agentId:this.currentAgent})},togglePaneRightPanel(e,t=null){if(t&&this.isSplitMode){let s=this.panels.find(n=>n.id===t);if(s){s.activeRightPanel=s.activeRightPanel===e?null:e;return}}this.activeRightPanel=this.activeRightPanel===e?null:e,this.activeRightPanel&&(this.workbenchExpanded=!1,this.workbenchMaximized=!1,this.rememberWorkbenchPanelState())},getPaneRightPanel(e){if(e&&this.isSplitMode){let t=this.panels.find(s=>s.id===e);if(t)return t.activeRightPanel}return this.activeRightPanel},setPaneRightPanel(e,t){if(e&&this.isSplitMode){let s=this.panels.find(n=>n.id===e);if(s){s.activeRightPanel=t;return}}this.activeRightPanel=t},applySessionCatalogSnapshot(e,t=null,s=null){let n=r=>{let i=new Set;return(Array.isArray(r)?r:[]).filter(o=>!o?.catalogKey||i.has(o.catalogKey)?!1:(i.add(o.catalogKey),!0)).map(o=>({...o}))};if(this.sessionCatalog=n(e),Array.isArray(s)&&(this.hiddenSessionCatalog=n(s)),Array.isArray(t)){this.sessionProjects=t.filter(i=>i?.id).map(i=>({...i,members:Array.isArray(i.members)?i.members.filter(o=>o?.agentId&&o?.sessionId):i.agentId?(i.sessionIds||[]).map(o=>({agentId:i.agentId,sessionId:o})):[]}));let r=new Map;for(let i of this.sessionProjects)for(let o of i.members)r.set(`${o.agentId}${o.sessionId}`,i.id);this.sessionCatalog=this.sessionCatalog.map(i=>i.runtimeProvider==="yeaft"?{...i,projectId:r.get(`${i.routeRef?.agentId}${i.routeRef?.sessionId}`)||null}:i)}this.sessionCatalogLoaded=!0},mutateProject(e,t={},s=null){let n=s||t.agentId||this.currentAgent||null;if(e==="move_session"&&!n)return Promise.resolve({ok:!1,error:{code:"missing_agent"}});let r=`project_${crypto.randomUUID()}`;return new Promise(i=>{let o=setTimeout(()=>{delete this.projectMutationRequests[r],i({ok:!1,error:{code:"timeout"}})},1e4);this.projectMutationRequests[r]={connectionGeneration:Number(this.chatHistoryConnectionGeneration||0),catalogOrder:Array.isArray(t.catalogOrder)?t.catalogOrder:null,resolve:l=>{clearTimeout(o),i(l)}},this.sendWsMessage({type:"yeaft_project_mutation",...n?{agentId:n,targetAgentId:n}:{},requestId:r,op:e,...t})||(clearTimeout(o),delete this.projectMutationRequests[r],i({ok:!1,error:{code:"send_failed"}}))})},applyLegacyProjectSnapshot(e,t){if(!t||!Array.isArray(e))return;let s=this.sessionProjects.filter(r=>r.legacyAgentId!==t),n=e.filter(r=>r?.id).map(r=>({...r,id:`${t}${r.id}`,legacyProjectId:r.id,legacyAgentId:t,members:(r.sessionIds||[]).map(i=>({agentId:t,sessionId:i}))}));this.applySessionCatalogSnapshot(this.sessionCatalog,[...s,...n])},finishLegacyProjectMutation(e,t){if(!e?.requestId)return!1;let s=this.projectMutationRequests[e.requestId]||null;return!s||s.connectionGeneration!==Number(this.chatHistoryConnectionGeneration||0)?!1:(delete this.projectMutationRequests[e.requestId],e.ok&&Array.isArray(e.projects)&&t&&this.applyLegacyProjectSnapshot(e.projects,t),s.resolve(e),!0)},finishProjectMutation(e){if(!e?.requestId)return!1;let t=this.projectMutationRequests[e.requestId]||null;if(!t||t.connectionGeneration!==Number(this.chatHistoryConnectionGeneration||0))return!1;if(delete this.projectMutationRequests[e.requestId],e.ok){if(Array.isArray(t.catalogOrder)){let s=new Map(this.sessionCatalog.map(r=>[r.catalogKey,r])),n=t.catalogOrder.map((r,i)=>{let o=s.get(r?.catalogKey);return o?{...o,sortRank:i}:null}).filter(Boolean);n.length===this.sessionCatalog.length&&(this.sessionCatalog=n,Gp(n))}Array.isArray(e.projects)&&this.applySessionCatalogSnapshot(this.sessionCatalog,e.projects)}return t.resolve(e),!0},toggleCatalogSessionPin(e){if(!e?.catalogKey||!e?.routeRef||Object.keys(this.sessionCatalogMutationRequests).length>0)return!1;let t=`session_ui_${crypto.randomUUID()}`,s=Mr(this,t),n=!e.pinned;return e.pinned=n,this.sendWsMessage({type:"set_session_ui_metadata",requestId:t,catalogKey:e.catalogKey,routeRef:e.routeRef,pinned:n,sortRank:Number.isFinite(e.sortRank)?e.sortRank:null})?!0:(this.sessionCatalog=s,delete this.sessionCatalogMutationRequests[t],!1)},hideCatalogSession(e){if(!e?.catalogKey||!e?.routeRef||Object.keys(this.sessionCatalogMutationRequests).length>0)return!1;let t=`session_hide_${crypto.randomUUID()}`,s=Mr(this,t);return this.sessionCatalog=this.sessionCatalog.filter(r=>r.catalogKey!==e.catalogKey),this.hiddenSessionCatalog=[...(this.hiddenSessionCatalog||[]).filter(r=>r.catalogKey!==e.catalogKey),{...e,hidden:!0}],this.sendWsMessage({type:"set_session_ui_metadata",requestId:t,catalogKey:e.catalogKey,routeRef:e.routeRef,hidden:!0,...Number.isFinite(e.sortRank)?{sortRank:e.sortRank}:{}})?!0:(this.sessionCatalog=s,this.hiddenSessionCatalog=Array.isArray(this.sessionCatalogMutationRequests[t]?.previousHiddenCatalog)?this.sessionCatalogMutationRequests[t].previousHiddenCatalog:[],delete this.sessionCatalogMutationRequests[t],!1)},restoreCatalogSession(e){if(!e?.catalogKey||!e?.routeRef||Object.keys(this.sessionCatalogMutationRequests).length>0)return!1;let t=`session_restore_${crypto.randomUUID()}`,s=Mr(this,t);return this.hiddenSessionCatalog=(this.hiddenSessionCatalog||[]).filter(r=>r.catalogKey!==e.catalogKey),this.sessionCatalog=this.sessionCatalog.some(r=>r.catalogKey===e.catalogKey)?this.sessionCatalog:[...this.sessionCatalog,{...e,hidden:!1}],this.sendWsMessage({type:"set_session_ui_metadata",requestId:t,catalogKey:e.catalogKey,routeRef:e.routeRef,hidden:!1,...Number.isFinite(e.sortRank)?{sortRank:e.sortRank}:{}})?!0:(this.sessionCatalog=s,this.hiddenSessionCatalog=Array.isArray(this.sessionCatalogMutationRequests[t]?.previousHiddenCatalog)?this.sessionCatalogMutationRequests[t].previousHiddenCatalog:[],delete this.sessionCatalogMutationRequests[t],!1)},renameCatalogSession({row:e,title:t}={}){if(!e?.routeRef||!t)return!1;let{runtimeProvider:s,agentId:n,sessionId:r}=e.routeRef;if(s==="yeaft")this.sessionCrudRequest("rename",{sessionId:r,name:t},{agentId:n});else if(s==="claude-code"||s==="copilot")this.renameChatSession(r,t,n);else return!1;return!0},async copyCatalogSession(e){let t=e?.routeRef;if(t?.runtimeProvider!=="yeaft"||!t.agentId||!t.sessionId)return{ok:!1,op:"copy",error:{code:"bad_route",message:"Yeaft Session route required"}};let s=await this.sessionCrudRequest("copy",{sessionId:t.sessionId},{agentId:t.agentId});if(!s?.ok||!s.session?.id)return s;let n={runtimeProvider:"yeaft",agentId:s.session.agentId||t.agentId,sessionId:s.session.id};return this.openCatalogSession({catalogKey:Tr(n.agentId,n.sessionId),routeRef:n}),s},reorderCatalogSessions(e){if(!Array.isArray(e)||e.length===0||Object.keys(this.sessionCatalogMutationRequests).length>0)return!1;let t=`session_order_${crypto.randomUUID()}`,s=Mr(this,t);return this.sessionCatalog=e.map((r,i)=>({...r,sortRank:i})),this.sendWsMessage({type:"reorder_session_catalog",requestId:t,sessions:this.sessionCatalog.map((r,i)=>({catalogKey:r.catalogKey,routeRef:r.routeRef,pinned:!!r.pinned,sortRank:i}))})?!0:(this.sessionCatalog=s,delete this.sessionCatalogMutationRequests[t],!1)},finishSessionCatalogMutation(e){if(!gd(this,e))return!1;if(e?.ok===!0&&e?.type==="session_ui_metadata_updated"){let s=n=>{n&&(n.pinned=e.pinned===!0,Object.prototype.hasOwnProperty.call(e,"sortRank")&&(n.sortRank=Number.isFinite(e.sortRank)?e.sortRank:null))};s(this.sessionCatalog.find(n=>n.catalogKey===e.catalogKey)),s(this.hiddenSessionCatalog.find(n=>n.catalogKey===e.catalogKey))}return e?.ok===!0&&e?.type==="session_catalog_reorder_result"&&Gp(this.sessionCatalog),!0},openCatalogSession(e){if(!e?.catalogKey||!e.routeRef)return!1;let{runtimeProvider:t,agentId:s,sessionId:n}=e.routeRef;if(this.activeCatalogKey=e.catalogKey,t==="yeaft"){let r=this.isSessionHistorySyncing(e.routeRef);return this.enterYeaft(s,{deferBootstrap:!0}),this.setActiveSessionFilter(n,{agentId:s,force:!1}),r||this.reloadYeaftMessages(),!0}return t!=="claude-code"&&t!=="copilot"?!1:(this.currentView==="yeaft"&&this.leaveYeaft(),this.selectConversation(n,s,{refresh:!0}),!0)},syncChatConversationHistory(e){if(!e)return null;let t=Vs(e);if(this.chatHistoryRequests[t]?.loading)return this.chatHistoryRequests[t].requestId;let s=dn(this.messagesMap[e]);return this.requestChatHistory(e,s===null?{mode:"recent",turns:5}:{mode:"delta",afterMessageId:s})},requestChatHistory(e,{mode:t="recent",turns:s=null,beforeId:n=null,afterMessageId:r=null}={}){if(!e)return null;let i=Vs(e);if(this.chatHistoryRequestIdSupported!==!0&&this.chatHistoryRequests[i]?.loading)return null;let o=n??r??null,a=this.beginChatHistoryRequest(e,t,o);return this.sendWsMessage({type:"sync_messages",conversationId:e,...s!=null?{turns:s}:{},...n!=null?{beforeId:n}:{},...r!=null?{afterMessageId:r}:{},requestId:a})?(setTimeout(()=>{_a(this,i,a,"history_load_timeout")},1e4),a):(_a(this,i,a,"send_failed"),null)},beginChatHistoryRequest(e,t="recent",s=null){return hd(this,e,t,s)},isCurrentChatHistoryResponse(e){if(!e?.conversationId||!e?.requestId||!e?.catalogKey)return!1;let t=Vs(e.conversationId);if(e.catalogKey!==t)return!1;let s=this.chatHistoryRequests[t];return!!s&&s.loading===!0&&s.requestId===e.requestId&&Number(s.connectionGeneration||0)===Number(this.chatHistoryConnectionGeneration||0)},finishChatHistoryRequest(e){if(!this.isCurrentChatHistoryResponse(e))return!1;let t=this.chatHistoryRequests[e.catalogKey];return this.chatHistoryRequests[e.catalogKey]={...t,loading:!1},!0},isRefreshingSession(e){return e?!!this.refreshingSessionMap[e]:this.refreshingSession},setRefreshingSession(e,t){e&&(this.refreshingSessionMap[e]=t),this.refreshingSession=t},enterBtwMode(){this.btwMode=!0,this.btwMessages=[],this.btwLoading=!1,this.btwSessionId=null},sendBtwQuestion(e){this.currentConversation&&(this.btwMessages.push({role:"user",content:e}),this.btwMessages.push({role:"assistant",content:""}),this.btwLoading=!0,this.sendWsMessage({type:"btw_question",conversationId:this.currentConversation,question:e,btwSessionId:this.btwSessionId}))},closeBtw(){this.btwMode=!1,this.btwMessages=[],this.btwLoading=!1,this.btwSessionId=null},appendBtwDelta(e){let t=this.btwMessages[this.btwMessages.length-1];t&&t.role==="assistant"&&(t.content+=e)},addSubagent(e,t){this.subagents[e]||(this.subagents[e]={}),this.subagents[e][t.id]={id:t.id,slug:t.slug||t.id,type:t.type||"Task",description:t.description||"",parentToolUseId:t.parentToolUseId||null,status:"running",startTime:Date.now(),messages:[],toolCallCount:0},e===this.currentConversation&&this.activeRightPanel!=="subagents"&&(this.activeRightPanel="subagents")},appendSubagentMessage(e,t,s){let n=this.subagents[e];if(!n||!n[t])return;let r=n[t];if(s?.type==="tool"){r.toolCallCount=Number(r.toolCallCount||0)+1;return}s?.type==="text"&&r.messages.push(s)},completeSubagent(e,t){let s=this.subagents[e];!s||!s[t]||(s[t].status="completed")},sendWsMessage(e){return $d(this,e)},parseWsMessage(e){return Ld(this,e)},connect(){Od(this)},ensureConnected(){return _r(this)},scheduleReconnect(){Vd(this)},manualReconnect(){qd(this)},startHeartbeat(){Fd(this)},stopHeartbeat(){Hd(this)},setupVisibilityHandler(){Bd(this)},handleMessage(e){Bu(this,e)},getOrCreateExecutionStatus(e){return tl(this,e)},handleAssistantOutputFrame(e,t,s=null){Mu(this,e,t,s)},handleClaudeOutput(e,t){this.handleAssistantOutputFrame(e,t,null)},addMessageToConversation(e,t){return Ki(this,e,t)},pruneConversationMessageRetention(e,t=null,s=null,n=void 0){return Kd(this,{conversationId:e,sessionId:t,agentId:s,limits:n})},appendToAssistantMessageForConversation(e,t,s){nu(this,e,t,s)},finishStreamingForConversation(e,t){ru(this,e,t)},sweepStaleStreamingForConversation(e){iu(this,e)},appendToAssistantMessage(e){this.appendToAssistantMessageForConversation(this.currentConversation,e)},finishStreaming(){this.finishStreamingForConversation(this.currentConversation)},addMessage(e){this.addMessageToConversation(this.currentConversation,e)},loadHistoryMessages(e){ou(this,e)},formatDbMessage(e){return au(e)},selectAgent(e){return Gu(this,e)},createConversation(e,t=null,s=null,n=void 0){Qu(this,e,t,s,n)},resumeConversation(e,t,s=null,n=null,r=null){Xu(this,e,t,s,n,r)},selectConversation(e,t,s={}){Zu(this,e,t,s)},updateConversationSettings(e,t){ll(this,e,t)},toggleConversationMcp(e,t){Ju(this,e,t)},deleteConversation(e,t){tp(this,e,t)},closeSession(e,t){ep(this,e,t)},appendColumn(e){ip(this,e)},removeColumn(e){op(this,e)},sendMessageToConversation(e,t,s=[],n={}){ap(this,e,t,s,n)},cancelExecutionForConversation(e){lp(this,e)},addPanel(){if(this.panels.length>=3)return;let e=(t,s)=>({id:t,conversationId:s,activeRightPanel:null});if(this.panels.length===0){let t=localStorage.getItem("splitPanesSaved");if(t){try{let s=JSON.parse(t);if(Array.isArray(s)&&s.length>=2){let n=new Set(this.conversations.map(i=>i.id)),r=s.filter(i=>i&&typeof i.id=="string").map(i=>({...e(i.id,null),conversationId:i.conversationId&&n.has(i.conversationId)?i.conversationId:null}));if(r.length>=2){this.panels=r,this.activePanelId=r[0].id;for(let i of r)i.conversationId&&!this.activeConversations.includes(i.conversationId)&&this.activeConversations.push(i.conversationId),i.conversationId&&!this.messagesMap[i.conversationId]&&(this.messagesMap[i.conversationId]=[],this.requestChatHistory(i.conversationId,{mode:"recent",turns:5}));localStorage.removeItem("splitPanesSaved"),this.saveOpenSessions();return}}}catch{}localStorage.removeItem("splitPanesSaved")}this.panels=[e("panel-0",this.currentConversation),e("panel-1",null)],this.activePanelId="panel-0"}else{let t="panel-"+Date.now();this.panels.push(e(t,null))}this.saveOpenSessions()},removePanel(e){let t=this.panels.findIndex(s=>s.id===e);if(!(t<0)){if(this.panels.splice(t,1),this.panels.length<=1){let s=this.panels[0];s?.conversationId&&(this.activeConversations=[s.conversationId]),this.panels=[],this.activePanelId=null}else this.activePanelId===e&&(this.activePanelId=this.panels[0]?.id||null);this.saveOpenSessions()}},setPanelConversation(e,t,{refresh:s=!1}={}){let n=this.panels.find(i=>i.id===e);if(!n)return;let r=n.conversationId===t;n.conversationId=t,t&&!this.activeConversations.includes(t)&&this.activeConversations.push(t),t&&!this.messagesMap[t]?(this.messagesMap[t]=[],this.syncChatConversationHistory(t)):t&&(s||!r)&&this.syncChatConversationHistory(t),this.saveOpenSessions()},setActivePanel(e){this.activePanelId=e},splitToPanel(e){if(!e)return;let t=(s,n)=>({id:s,conversationId:n,activeRightPanel:null});if(this.panels.length===0)this.panels=[t("panel-0",this.currentConversation),t("panel-"+Date.now(),e)],this.activePanelId=this.panels[1].id;else if(this.panels.length>=3)this.panels[this.panels.length-1].conversationId=e,this.activePanelId=this.panels[this.panels.length-1].id;else{let s="panel-"+Date.now();this.panels.push(t(s,e)),this.activePanelId=s}this.activeConversations.includes(e)||this.activeConversations.push(e),this.messagesMap[e]||(this.messagesMap[e]=[],this.requestChatHistory(e,{mode:"recent",turns:5})),this.saveOpenSessions()},isInAnyPanel(e){return this.panels.some(t=>t.conversationId===e)},setSessionPinned(e,t,s={}){if(!e)return;let n=s&&s.agentId?s.agentId:null,r=n?!!ns()?.sessionById?.(e,n)?.pinned:this.pinnedSessions.includes(e);if(t&&!r)this.pinnedSessions.unshift(e);else if(!t&&r){let i=this.pinnedSessions.indexOf(e);i>=0&&this.pinnedSessions.splice(i,1)}try{localStorage.setItem("pinned-sessions",JSON.stringify(this.pinnedSessions))}catch{}try{let i=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore(),o=Me(this,e,n);i&&typeof i.applyPinState=="function"&&i.applyPinState(e,!!t,o)}catch{}},togglePin(e,t={}){let s=t&&t.agentId?t.agentId:null,n=s?ns()?.sessionById?.(e,s):null,r=t&&Object.prototype.hasOwnProperty.call(t,"pinned"),o=!(n?!!n.pinned:r?!!t.pinned:this.pinnedSessions.includes(e));this.setSessionPinned(e,o,{agentId:s});let a={type:o?"pin_session":"unpin_session",conversationId:e};t&&t.sessionKind==="yeaft"&&(a.sessionKind="yeaft",t.agentId&&(a.agentId=t.agentId),t.sessionName&&(a.sessionName=t.sessionName),t.workDir&&(a.workDir=t.workDir)),this.sendWsMessage(a)},isSessionPinned(e){return this.pinnedSessions.includes(e)},applyServerPinSnapshot(e,t,s){if(!Array.isArray(this.pinnedSessions))return;let n=new Set(this.pinnedSessions),r=[];for(let i of t)n.has(i)||r.push(i);if(r.length>0&&(this.pinnedSessions=[...r,...this.pinnedSessions]),e){let i=this.pinnedSessions.filter(o=>s(o)?t.has(o):!0);i.length!==this.pinnedSessions.length&&(this.pinnedSessions=i)}try{localStorage.setItem("pinned-sessions",JSON.stringify(this.pinnedSessions))}catch{}},clearYeaftSessionProcessingIfIdle(e,{agentId:t=null,ignoreStatuses:s=!1}={}){if(!e)return;let n=t||Me(this,e);if(Object.values(this.activeVpTurns||{}).some(a=>Mt(a,e,n))||!s&&Object.values(this.vpStatuses||{}).some(l=>Mt(l,e,n)&&Jr.has(l?.state)))return;let i=ys(n,e),o={...this.yeaftProcessingSessions||{}};i&&delete o[i],co(this,e,n)&&delete o[e],this.yeaftProcessingSessions=o},sendMessage(e,t=[],s={}){sp(this,e,t,s)},cancelExecution(){np(this)},cancelYeaft(){if(!this.currentAgent)return;this.sendWsMessage({type:"yeaft_abort_all",agentId:this.currentAgent});let e=this.yeaftConversationIdsByAgent?.[this.currentAgent]||this.yeaftConversationId;e&&delete this.processingConversations[e],Np(this,this.currentAgent)},cancelYeaftSession(e){let t=Me(this,e);!t||!e||(this.sendWsMessage({type:"yeaft_abort_all",agentId:t,sessionId:e}),this.activeVpTurns=Object.fromEntries(Object.entries(this.activeVpTurns||{}).filter(([,s])=>!Mt(s,e,t))),this.stoppingVpTurnIds=Object.fromEntries(Object.entries(this.stoppingVpTurnIds||{}).filter(([s])=>this.activeVpTurns?.[s])),this.vpStatuses=Object.fromEntries(Object.entries(this.vpStatuses||{}).filter(([,s])=>!Mt(s,e,t))),this.clearYeaftSessionProcessingIfIdle(e,{agentId:t,ignoreStatuses:!0}))},cancelVpTurn(e,{sessionId:t=null,vpId:s=null}={}){let n=Me(this,t);if(!n||!e)return;let r=wn(this,n,e);this.stoppingVpTurnIds={...this.stoppingVpTurnIds,[r]:Date.now()};let i={type:"yeaft_abort_turn",agentId:n,turnId:e};t&&(i.sessionId=t),s&&(i.vpId=s),this.sendWsMessage(i)},cancelVpTurnForSession(e,t=null){if(!e)return!1;let s=t||this.yeaftActiveSessionFilter||null;if(!s)return!1;let n=Me(this,s);if(!n)return!1;let r=this.activeVpTurns||{},i=null,o=-1/0;for(let[a,l]of Object.entries(r)){if(!l||l.vpId!==e||!Mt(l,s,n))continue;let c=typeof l.startedAt=="number"?l.startedAt:0;c>=o&&(o=c,i=a)}if(!i){let a=this.vpStatuses?.[ao(n,s,e)]||null;a?.turnId&&!["idle","offline"].includes(a.state)&&(i=a.turnId)}if(i){let a=r[i]?.turnId||i;return this.cancelVpTurn(a,{sessionId:s,vpId:e}),!0}return this.sendWsMessage({type:"yeaft_abort_turn",agentId:n,sessionId:s,vpId:e}),!0},answerUserQuestion(e,t,s){rp(this,e,t,s)},refreshAgents(){cp(this)},refreshConversation(){dp(this)},setDreamEnabled(e,t){if(!e||this.agentDreamState?.[e]?.pending)return!1;let s=this.agents.find(o=>o.id===e),n=t!==!1,r=`dream-${Date.now()}-${Math.random().toString(36).slice(2)}`,i=setTimeout(()=>{let o=this.agentDreamState?.[e];!o?.pending||o.requestId!==r||(this.agentDreamState={...this.agentDreamState,[e]:{...o,pending:!1,timer:null,error:"timeout"}})},15e3);return this.agentDreamState={...this.agentDreamState,[e]:{pending:!0,requestId:r,requested:n,authoritative:s?.dreamEnabled===!0,timer:i,error:null}},up(this,e,n,r),!0},loadMoreMessages(){if(this.currentView==="yeaft"||this.loadingMoreMessages||!this.hasMoreMessages||!this.currentConversation)return;this.loadingMoreMessages=!0;let e=this._loadMoreGeneration=(this._loadMoreGeneration||0)+1,s=(this.messagesMap[this.currentConversation]||[]).find(i=>i.dbMessageId),n=this.currentConversation,r=s?.dbMessageId??null;this.requestChatHistory(n,{mode:"older",turns:5,beforeId:r}),setTimeout(()=>{this._loadMoreGeneration===e&&this.loadingMoreMessages&&this.currentConversation===n&&(this.loadingMoreMessages=!1)},1e4)},reloadYeaftMessages(){if(this.currentView!=="yeaft")return!1;let e=Is(this),t=Me(this,e);if(!t)return!1;let s=Pe(t,e),n=this.yeaftConversationId,r=this.yeaftSessionHistoryState?.[s];if(r?.loading)return r.requestId?(this._yeaftManualHistoryRefresh={agentId:t,sessionId:e,requestId:r.requestId},r.requestId):!1;let i=this.beginYeaftHistoryLoad({agentId:t,sessionId:e,mode:"recent",preserveLoaded:!1});if(!i)return!1;this._yeaftManualHistoryRefresh={agentId:t,sessionId:e,requestId:i.requestId};let o=pn();this.yeaftHistoryPerfTraceBySession={...this.yeaftHistoryPerfTraceBySession||{},[s]:o};let a={type:"yeaft_load_history",agentId:t,limit:Sl,sessionId:e,requestId:i.requestId,perfTraceId:o};return vt(this,{traceId:o,phase:"history.request_send",agentId:t,sessionId:e,messageType:a.type,bytes:JSON.stringify(a).length,detail:{mode:"manual-reload",limit:Sl}}),this.sendWsMessage(a)?!0:($r(this,{agentId:t,sessionId:e,requestId:i.requestId,error:"history_load_send_failed"}),!1)},loadMoreYeaftHistory(e=Xr(),{sessionId:t=null,agentId:s=null,background:n=!1}={}){if(this.currentView!=="yeaft")return!1;let r=t||Is(this),i=Me(this,r,s);if(!i||!r)return!1;let o=Pe(i,r),a=this.yeaftSessionHistoryState?.[o]||{};if(a.loading||!a.hasMore)return!1;let l=Math.min(50,Math.max(1,Number.isFinite(e)?Math.floor(e):Xr())),c=this.yeaftHistoryCacheState?.[o]?.ranges||[],d=Number(this.yeaftHistoryCacheState?.[o]?.rangeEpoch)||0,u=uu(a,c,d);if(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState||{},[o]:u.state},!u.request)return this.syncActiveYeaftHistoryLoad(),!1;let p=this.beginYeaftHistoryLoad({agentId:i,sessionId:r,mode:n?"prefetch":"older",preserveLoaded:!0,latestSeq:this.yeaftSessionHistoryState[o]?.latestSeq??null});if(!p)return!1;let f=pn();this.yeaftHistoryPerfTraceBySession={...this.yeaftHistoryPerfTraceBySession||{},[o]:f};let g={type:"yeaft_load_more_history",agentId:i,sessionId:r,requestId:p.requestId,beforeSeq:u.request.beforeSeq,pageKind:u.request.kind,gapStopAtSeq:u.request.stopAtSeq,cacheEpoch:u.request.cacheEpoch,turns:l,perfTraceId:f};return vt(this,{traceId:f,phase:"history_more.request_send",agentId:i,sessionId:r,messageType:g.type,bytes:JSON.stringify(g).length,detail:{beforeSeq:g.beforeSeq,turns:g.turns,pageKind:u.request.kind,gapStopAtSeq:u.request.stopAtSeq,background:n}}),this.sendWsMessage(g)?!0:($r(this,{agentId:i,sessionId:r,requestId:p.requestId,error:"history_load_send_failed"}),!1)},checkPendingRecovery(){md(this)},performRecovery(){vd(this)},dismissRecovery(){yd(this)},autoRestoreConversation(e){bd(this,e)},saveOpenSessions(){an(this)},getLastSession(){return kd(this)},clearLastSession(){Sd(this)},listHistorySessions(e){Id(this,e)},listFolders(){return Cd(this)},listFoldersForAgent(e,t){return Ad(this,e,t)},listModelsForAgent(e,t){return xd(this,e,t)},listHistorySessionsForAgent(e,t,s){Td(this,e,t,s)},async loadGlobalSessions(e=20){return Md(this,e)},async deleteGlobalSession(e){return Pd(this,e)},findAgentForSession(e){return Ea(this,e)},isSessionResumable(e){return Rd(this,e)},_isRecentlyClosed(e){return un(this,e)},_startProcessingWatchdog(e){Bn(this,e)},_resetProcessingWatchdog(e){zi(this,e)},_stopProcessingWatchdog(e){qe(this,e)},startRefreshTimeout(e){let t=e||this.currentConversation;t&&(this._refreshTimeouts||(this._refreshTimeouts={}),this._refreshTimeouts[t]&&clearTimeout(this._refreshTimeouts[t]),this._refreshTimeouts[t]=setTimeout(()=>{this.setRefreshingSession(t,!1),delete this._refreshTimeouts[t]},1e4))},toggleTheme(){this.theme=this.theme==="dark"?"light":"dark",this.themeFollowSystem=!1,localStorage.setItem("theme",this.theme),document.documentElement.setAttribute("data-theme",this.theme),document.documentElement.classList.toggle("light",this.theme==="light")},initTheme(){if(document.documentElement.setAttribute("data-theme",this.theme),document.documentElement.classList.toggle("light",this.theme==="light"),this.themeFollowSystem&&typeof window<"u"&&window.matchMedia){let e=window.matchMedia("(prefers-color-scheme: dark)"),t=s=>{this.themeFollowSystem&&(this.theme=s.matches?"dark":"light",document.documentElement.setAttribute("data-theme",this.theme),document.documentElement.classList.toggle("light",this.theme==="light"))};e.addEventListener?e.addEventListener("change",t):e.addListener&&e.addListener(t)}},loadModelsDevRegistry({forceRefresh:e=!1}={}){let t=this.modelsDevRegistry.loaded&&!this.modelsDevRegistry.error&&Date.now()-this.modelsDevRegistry.fetchedAt<36e5;if(!e&&t)return Promise.resolve(this.modelsDevRegistry);let s=this.currentAgent;if(!s)return Promise.resolve(this.modelsDevRegistry);if(this._modelsDevPending&&(!e||this._modelsDevPending.force))return new Promise(n=>this._modelsDevPending.resolvers.push(n));if(this._modelsDevPending){let n=this._modelsDevPending;this._modelsDevPending=null,n.timer&&clearTimeout(n.timer);for(let r of n.resolvers)r(this.modelsDevRegistry)}return new Promise(n=>{let r={resolvers:[n],force:e,timer:null};this._modelsDevPending=r;try{this.sendWsMessage({type:"get_models_dev_registry",agentId:s,forceRefresh:e})}catch{this._modelsDevPending===r&&(this._modelsDevPending=null),n(this.modelsDevRegistry);return}r.timer=setTimeout(()=>{if(this._modelsDevPending===r){this._modelsDevPending=null;for(let i of r.resolvers)i(this.modelsDevRegistry)}},2e4)})},changeLocale(e){if(this.locale=e,xr(e),this.currentAgent)try{this.sendWsMessage({type:"update_llm_config",agentId:this.currentAgent,config:{language:e}})}catch{}},async fetchCustomExpertRoles(){let e=je();try{let t={};e.token&&(t.Authorization=`Bearer ${e.token}`);let s=await fetch("/api/expert-roles/custom",{headers:t});if(s.ok){let n=await s.json();this.customExpertRoles=n.roles||[]}}catch{}},async createCustomExpertRole(e){let t=je();try{let s={"Content-Type":"application/json"};t.token&&(s.Authorization=`Bearer ${t.token}`);let n=await fetch("/api/expert-roles/custom",{method:"POST",headers:s,body:JSON.stringify(e)});if(n.ok){let r=await n.json();return this.customExpertRoles.push(r.role),r.role}else{let r=await n.json().catch(()=>({}));throw new Error(r.error||"Failed to create custom expert role")}}catch(s){throw s}},async updateCustomExpertRole(e,t){let s=je();try{let n={"Content-Type":"application/json"};s.token&&(n.Authorization=`Bearer ${s.token}`);let r=await fetch(`/api/expert-roles/custom/${e}`,{method:"PUT",headers:n,body:JSON.stringify(t)});if(r.ok){let i=await r.json(),o=this.customExpertRoles.findIndex(a=>a.id===e);return o!==-1&&(this.customExpertRoles[o]=i.role),i.role}else{let i=await r.json().catch(()=>({}));throw new Error(i.error||"Failed to update custom expert role")}}catch(n){throw n}},async deleteCustomExpertRole(e){let t=je();try{let s={};t.token&&(s.Authorization=`Bearer ${t.token}`);let n=await fetch(`/api/expert-roles/custom/${e}`,{method:"DELETE",headers:s});if(n.ok)return this.customExpertRoles=this.customExpertRoles.filter(r=>r.id!==e),!0;{let r=await n.json().catch(()=>({}));throw new Error(r.error||"Failed to delete custom expert role")}}catch(s){throw s}},rememberWorkbenchPanelState(e=this.activeSessionRoute,t){let s=typeof e=="string"?e:dt(e);if(!s)return!1;let n=this.workbenchPanelStateByRoute[s]||{},r=Number.isFinite(t)&&t>0?Math.round(t):n.width;return this.workbenchPanelStateByRoute={...this.workbenchPanelStateByRoute,[s]:{expanded:!!this.workbenchExpanded,maximized:!!this.workbenchExpanded&&!!this.workbenchMaximized,...Number.isFinite(r)&&r>0?{width:r}:{}}},!0},workbenchPanelWidthForRoute(e=this.activeSessionRoute){let t=typeof e=="string"?e:dt(e),s=t?this.workbenchPanelStateByRoute[t]?.width:null;return Number.isFinite(s)&&s>0?s:null},restoreWorkbenchPanelState(e=this.activeSessionRoute){let t=dt(e),s=t?this.workbenchPanelStateByRoute[t]:null;return this.workbenchExpanded=!!s?.expanded,this.workbenchMaximized=!!s?.expanded&&!!s?.maximized,!!s},openWorkbench(){this.workbenchExpanded=!0,this.activeRightPanel=null,this.closeYeaftDebugPanel(),this.rememberWorkbenchPanelState()},toggleWorkbench(){if(this.workbenchExpanded){this.workbenchExpanded=!1,this.workbenchMaximized=!1,this.rememberWorkbenchPanelState();return}this.openWorkbench()},toggleSidebar(){this.sidebarCollapsed=!this.sidebarCollapsed},toggleSessionSidebar(){this.sessionSidebarOpen=!this.sessionSidebarOpen},closeSessionSidebar(){this.sessionSidebarOpen=!1},toggleWorkbenchMaximized(){this.workbenchMaximized=!this.workbenchMaximized,this.rememberWorkbenchPanelState()},renameChatSession(e,t,s=null){let n=t&&t.trim()?t.trim():"";n?this.customConversationTitles[e]=n:delete this.customConversationTitles[e],this.sendWsMessage({type:"update_conversation_settings",conversationId:e,...s?{agentId:s}:{},title:n})},resolveMessageFileReferences(e){let t=this.activeSessionRoute,s=t?.agentId||this.currentAgent||null,n=t?.runtimeProvider==="yeaft"?yt(this,t.sessionId,s):this.currentConversation,i=dt(t)&&s&&n&&this.workbenchRouteProtocolSupported===!0&&(s===this.currentAgent?this.hasCapability("file_reference_resolution")&&this.hasCapability("workbench_session_routes"):Tt(this,s,"file_reference_resolution")&&Tt(this,s,"workbench_session_routes")),o=[...new Set((Array.isArray(e)?e:[]).filter(u=>typeof u=="string"&&u.trim()).map(u=>u.trim()))].slice(0,32);if(!i||o.length===0)return null;let a=this.effectiveWorkDir||"",l=t?{runtimeProvider:t.runtimeProvider,agentId:t.agentId,sessionId:t.sessionId}:null,c=`file_refs_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`;return this.sendWsMessage({type:"resolve_file_references",requestId:c,references:o,agentId:s,conversationId:n,workDir:a,workbenchRoute:l})?c:null},requestMessageImagePreview(e){let t=this.activeSessionRoute,s=t?.agentId||this.currentAgent||null,n=t?.runtimeProvider==="yeaft"?yt(this,t.sessionId,s):this.currentConversation,i=dt(t)&&s&&n&&this.workbenchRouteProtocolSupported===!0&&(s===this.currentAgent?this.hasCapability("file_editor")&&this.hasCapability("workbench_session_routes")&&this.hasCapability("response_image_preview"):Tt(this,s,"file_editor")&&Tt(this,s,"workbench_session_routes")&&Tt(this,s,"response_image_preview")),o=typeof e=="string"?e.trim():"";if(!i||!o)return null;let a=`message_image_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`;return this.sendWsMessage({type:"read_file",requestId:a,filePath:o,responseImagePreview:!0,agentId:s,conversationId:n,workDir:this.effectiveWorkDir||"",workbenchRoute:{runtimeProvider:t.runtimeProvider,agentId:t.agentId,sessionId:t.sessionId}})?a:null},openFileInExplorer(e,{hideTree:t=!1,line:s=null}={}){let n=this.activeSessionRoute,r=n?{runtimeProvider:n.runtimeProvider,agentId:n.agentId,sessionId:n.sessionId}:null,i=dt(r),o=this.effectiveWorkDir||"",a=bn(i,o),l=r?.agentId||this.currentAgent||null,c=r?.runtimeProvider==="yeaft"?yt(this,r.sessionId,l):this.currentConversation,d=this.workbenchRouteProtocolSupported===!0&&(l===this.currentAgent?this.hasCapability("file_editor")&&this.hasCapability("workbench_session_routes"):Tt(this,l,"file_editor")&&Tt(this,l,"workbench_session_routes"));if(!l||!c||!d)return!1;let u=typeof e=="string"?e.trim():"";if(!u)return!1;let p=this.workbenchExpanded;this.openWorkbench(),this.workbenchMaximized=!1,this.rememberWorkbenchPanelState();let f=()=>{let g=dt(this.activeSessionRoute),v=this.effectiveWorkDir||"";g!==i||v!==o||bn(g,v)!==a||window.dispatchEvent(new CustomEvent("open-file-in-explorer",{detail:{filePath:u,agentId:l,conversationId:c,workDir:o,workbenchRoute:r,workbenchRouteKey:i,workspaceGeneration:a,hideTree:!!t,line:Number.isFinite(s)&&s>0?s:null}}))};return p?f():Vue.nextTick(f),!0},logout(){je().logout(),this.authenticated=!1,this.sessionKey=null,this.agents=[],this.currentAgent=null,this.currentAgentInfo=null,this.yeaftStatusByAgent={},this._yeaftRetiredCatalogEpochsByAgent={},this.conversations=[],this.activeConversations=[],this.messagesMap={},this.conversationTitles={},this.customConversationTitles={},this.processingConversations={},this.executionStatusMap={},this.workbenchExpanded=!1,this.workbenchMaximized=!1,this.workbenchPanelStateByRoute={},this.subagents={},this.activeSubagentId=null,this.activeRightPanel=null,this.pinnedSessions=[],this.clearWorkCenterBrowserState(),this.ws&&this.ws.close()}}})});function Pl(e,t){!e||typeof e.handleYeaftOutput!="function"||!t||e.handleYeaftOutput({event:t})}function Bb(e){let t=String(e||""),s=2166136261;for(let n=0;n<t.length;n++)s^=t.charCodeAt(n),s=Math.imul(s,16777619)>>>0;return s>>>0}function _l(e){if(!e)return js[0];let t=String(e).toLowerCase();return Hb[t]||js[Bb(t)%js.length]}function Nb(e){return _l(e).background}function Wb(e){return _l(e).foreground}function Rl(){let e=typeof window<"u"&&window.Pinia&&window.Pinia.useChatStore?window.Pinia.useChatStore():null;return e&&typeof e.locale=="string"?e.locale:typeof localStorage<"u"&&localStorage.getItem("locale")||""}function jb(e,t=""){return e?String(t||"").startsWith("zh")?e.descriptionZh||e.roleZh||e.description||e.role||"":e.description||e.role||e.descriptionZh||e.roleZh||"":""}var Fb,js,Hb,FC,rs,Jn=B(()=>{({defineStore:Fb}=Pinia);js=[{key:"rat",label:"Rat",glyph:"R",background:"var(--vp-avatar-rat-bg)",foreground:"var(--vp-avatar-rat-fg)"},{key:"ox",label:"Ox",glyph:"O",background:"var(--vp-avatar-ox-bg)",foreground:"var(--vp-avatar-ox-fg)"},{key:"tiger",label:"Tiger",glyph:"T",background:"var(--vp-avatar-tiger-bg)",foreground:"var(--vp-avatar-tiger-fg)"},{key:"rabbit",label:"Rabbit",glyph:"B",background:"var(--vp-avatar-rabbit-bg)",foreground:"var(--vp-avatar-rabbit-fg)"},{key:"dragon",label:"Dragon",glyph:"D",background:"var(--vp-avatar-dragon-bg)",foreground:"var(--vp-avatar-dragon-fg)"},{key:"snake",label:"Snake",glyph:"S",background:"var(--vp-avatar-snake-bg)",foreground:"var(--vp-avatar-snake-fg)"},{key:"horse",label:"Horse",glyph:"H",background:"var(--vp-avatar-horse-bg)",foreground:"var(--vp-avatar-horse-fg)"},{key:"goat",label:"Goat",glyph:"G",background:"var(--vp-avatar-goat-bg)",foreground:"var(--vp-avatar-goat-fg)"},{key:"monkey",label:"Monkey",glyph:"M",background:"var(--vp-avatar-monkey-bg)",foreground:"var(--vp-avatar-monkey-fg)"},{key:"rooster",label:"Rooster",glyph:"K",background:"var(--vp-avatar-rooster-bg)",foreground:"var(--vp-avatar-rooster-fg)"},{key:"dog",label:"Dog",glyph:"D",background:"var(--vp-avatar-dog-bg)",foreground:"var(--vp-avatar-dog-fg)"},{key:"pig",label:"Pig",glyph:"P",background:"var(--vp-avatar-pig-bg)",foreground:"var(--vp-avatar-pig-fg)"}],Hb=Object.freeze({steve:js[8],ada:js[3],linus:js[0],martin:js[4]}),FC=js.map(e=>e.background);rs=Fb("vp",{state:()=>({vps:{},vpOrder:[],emptyLibrary:!1,lastSnapshotAt:0,snapshotStatus:"idle",snapshotAgentId:null,snapshotRequestId:null,snapshotError:"",lastVpSnapshotAgentId:null,lastChange:null,dreamStatus:{},groupDreamStatus:{}}),getters:{vpList(e){return e.vpOrder.map(t=>e.vps[t]).filter(Boolean)},vpCount(e){return e.vpOrder.length},vpById:e=>t=>e.vps[t]||null,vpLabel:e=>t=>{let s=e.vps[t];return s?Rl().startsWith("zh")&&s.displayNameZh?s.displayNameZh:s.displayName||s.vpId||t:t},vpDescription:e=>t=>jb(e.vps[t],Rl()),vpInitial:e=>t=>{let s=e.vps[t],n=Rl().startsWith("zh"),r=s&&(s.avatar||n&&s.displayNameZh||s.displayName||s.vpId)||t||"?";return String(r).charAt(0).toUpperCase()||"?"},vpColor:e=>t=>{let s=e.vps[t];return s&&s.color?s.color:Nb(t)},vpTextColor:()=>e=>Wb(e),vpAvatarMotif:()=>e=>_l(e),dreamStatusFor:e=>t=>e.dreamStatus[t]||{status:"idle",lastRunAt:null,lastResult:null,lastError:null},groupDreamStatusFor:e=>t=>e.groupDreamStatus[t]||{status:"idle",lastRunAt:null,lastResult:null,lastError:null}},actions:{applySnapshot(e,t=null,s=null){let n=this.snapshotAgentId||null;if(n&&t&&t!==n||s&&this.snapshotRequestId&&s!==this.snapshotRequestId)return!1;let r=e&&Array.isArray(e.vps)?e.vps:[];return this._setActiveSnapshot({vps:r,emptyLibrary:!!(e&&e.emptyLibrary),agentId:t||n||null,requestId:s||this.snapshotRequestId||null,receivedAt:Date.now()}),!0},beginSnapshot(e,t){this.vps={},this.vpOrder=[],this.emptyLibrary=!1,this.lastVpSnapshotAgentId=null,this.snapshotStatus="loading",this.snapshotAgentId=e||null,this.snapshotRequestId=t||null,this.snapshotError=""},failSnapshot(e,t,s=""){return!this.snapshotRequestId||!t||t!==this.snapshotRequestId||e&&this.snapshotAgentId&&e!==this.snapshotAgentId?!1:(this.snapshotStatus="error",this.snapshotAgentId=e||this.snapshotAgentId||null,this.snapshotRequestId=t||this.snapshotRequestId||null,this.snapshotError=String(s||"VP library request failed"),!0)},_setActiveSnapshot({vps:e,emptyLibrary:t,agentId:s,requestId:n,receivedAt:r}){this.vps={},this.vpOrder=[];for(let i of e||[])this._upsertInternal(i);this.emptyLibrary=!!t,this.lastSnapshotAt=r||Date.now(),this.lastVpSnapshotAgentId=s||null,this.snapshotStatus="ready",this.snapshotAgentId=s||null,this.snapshotRequestId=n||null,this.snapshotError=""},upsert(e,t=null,s=null){return s&&this.snapshotAgentId&&s!==this.snapshotAgentId?!1:(this._upsertInternal(e),e&&e.vpId&&(this.lastChange={vpId:e.vpId,kind:"updated",reason:t||null,at:Date.now()}),!0)},remove(e,t=null,s=null){return s&&this.snapshotAgentId&&s!==this.snapshotAgentId||!e?!1:(delete this.vps[e],this.vpOrder=this.vpOrder.filter(n=>n!==e),this.lastChange={vpId:e,kind:"removed",reason:t||"file.removed",at:Date.now()},!0)},_upsertInternal(e){if(!e||!e.vpId)return;let t=!!this.vps[e.vpId];this.vps[e.vpId]={...this.vps[e.vpId]||{},...e},t||this.vpOrder.push(e.vpId),this.emptyLibrary&&(this.emptyLibrary=!1)},triggerDream(e){if(!e)return;this.dreamStatus={...this.dreamStatus,[e]:{...this.dreamStatus[e]||{},status:"running",lastError:null}};let t=window.Pinia&&window.Pinia.useChatStore?window.Pinia.useChatStore():null;t&&typeof t.sendWsMessage=="function"&&t.sendWsMessage({type:"yeaft_dream_trigger",vpId:e})},triggerGroupDream(e,t={}){if(!e)return;this.groupDreamStatus={...this.groupDreamStatus,[e]:{...this.groupDreamStatus[e]||{},status:"running",lastError:null}};let s=window.Pinia&&window.Pinia.useChatStore?window.Pinia.useChatStore():null,n=Date.now();if(Pl(s,{type:"dream_progress",phase:"start",groupId:e,manual:!0,trigger:"manual",source:"header-button",ts:n}),!s||typeof s.sendWsMessage!="function"){Pl(s,{type:"yeaft_dream_result",groupId:e,success:!1,skipped:!0,skippedReason:"chat-store-unavailable",trigger:"manual",error:null});return}let r={type:"yeaft_dream_trigger",sessionId:e},i=t&&t.agentId?t.agentId:typeof s.agentIdForSession=="function"?s.agentIdForSession(e):s.currentAgent;i&&(r.agentId=i),s.sendWsMessage(r)===!1&&Pl(s,{type:"yeaft_dream_result",groupId:e,success:!1,skipped:!0,skippedReason:"websocket-not-open",trigger:"manual",error:null})},applyDreamStatus(e){if(!e)return;let t=e.sessionId;if(t){this.groupDreamStatus={...this.groupDreamStatus,[t]:{...this.groupDreamStatus[t]||{},status:e.status==="running"?"running":e.status||"idle"}};return}if(!e.vpId)return;let s=e.vpId;this.dreamStatus={...this.dreamStatus,[s]:{...this.dreamStatus[s]||{},status:e.status==="running"?"running":e.status||"idle"}}},applyDreamResult(e){if(!e)return;let t=!!e.success,s=!!e.skipped,n={mergedCount:e.mergedCount??null,extractedCount:e.extractedCount??null,entriesCreated:typeof e.entriesCreated=="number"?e.entriesCreated:e.mergedCount??e.extractedCount??0,skipped:s,skippedReason:e.skippedReason||null,sessionsProcessed:typeof e.sessionsProcessed=="number"?e.sessionsProcessed:null,sessionsSkipped:typeof e.sessionsSkipped=="number"?e.sessionsSkipped:null,targetsApplied:typeof e.targetsApplied=="number"?e.targetsApplied:null,durationMs:typeof e.durationMs=="number"?e.durationMs:null,llmCallCount:typeof e.llmCallCount=="number"?e.llmCallCount:0,inputTokens:typeof e.inputTokens=="number"?e.inputTokens:0,outputTokens:typeof e.outputTokens=="number"?e.outputTokens:0,totalTokens:typeof e.totalTokens=="number"?e.totalTokens:0,metrics:e.metrics||null,passBreakdown:e.passBreakdown||e.metrics?.passBreakdown||null,targetErrors:Array.isArray(e.targetErrors)?e.targetErrors:[]},r=t||s?null:e.error||null,i=s?"skipped":t?"success":"error",o=e.sessionId;if(o){this.groupDreamStatus={...this.groupDreamStatus,[o]:{status:i,lastRunAt:Date.now(),lastResult:n,lastError:r}};return}if(!e.vpId)return;let a=e.vpId;this.dreamStatus={...this.dreamStatus,[a]:{status:i,lastRunAt:Date.now(),lastResult:n,lastError:r}}}}})});function El(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"&&e){let t=Date.parse(e);if(Number.isFinite(t))return t}return 0}function po(e){return!e||typeof e!="object"?0:El(e.lastMessageAt)||El(e.updatedAt)||El(e.createdAt)||0}function Dl(e,t){let s=po(t)-po(e);return s!==0?s:String(e?.id||"").localeCompare(String(t?.id||""))}function rf(e){return[...Array.isArray(e)?e:[]].sort(Dl)}var fo=B(()=>{});function of(){try{if(typeof localStorage>"u")return{};let e=JSON.parse(localStorage.getItem(df)||"{}");return e&&typeof e=="object"?e:{}}catch{return{}}}function Ub(e){try{typeof localStorage<"u"&&localStorage.setItem(df,JSON.stringify(e&&typeof e=="object"?e:{}))}catch{}}function af(){try{return typeof localStorage>"u"?[]:ei(JSON.parse(localStorage.getItem(uf)||"[]"))}catch{return[]}}function Kb(e){try{typeof localStorage<"u"&&localStorage.setItem(uf,JSON.stringify(ei(e)))}catch{}}function pf(e,t){return`${e||""}${t||""}`}function Cs(e){return e&&e.agentId&&e.id?pf(e.agentId,e.id):""}function is(e,t){return t?e?pf(e,t):String(t):""}function zb(e){return typeof e=="string"?e:String(e||"")}function qt(e,t,s=null){let n=zb(t);if(!n)return"";let r=is(s,n),i=r?e.sessions[r]:null;if(i&&(s||i.agentId||e.inventoryIdentityMode==="legacy-bare"))return r;if(s){let c=e.sessions[n];return e.inventoryIdentityMode==="legacy-bare"&&c&&!c.agentId?n:""}let o=e.sessions[n];if(o){if(o.agentId||e.inventoryIdentityMode==="legacy-bare")return n;let c=e.activeSessionKey?e.sessions[e.activeSessionKey]:null;return c?.agentId&&c.id===n?e.activeSessionKey:""}if(e.activeSessionKey&&e.sessions[e.activeSessionKey]?.id===n)return e.activeSessionKey;let a=e.sessionOrder.filter(c=>e.sessions[c]?.id===n),l=ti();if(l?.currentAgent){let c=a.find(d=>e.sessions[d]?.agentId===l.currentAgent);if(c)return c}return a[0]||""}function $l(e,t,s=null){return qt(e,t,s)||""}function Ll(e){if(e.inventoryIdentityMode==="legacy-bare"){let t=e.activeSessionKey?e.sessions[e.activeSessionKey]:null,s=t&&!t.agentId?t:e.activeSessionId?e.sessions[e.activeSessionId]:null;e._retiredBareActiveSessionId=s&&!s.agentId&&s.id||null,e.sessionOrder=e.sessionOrder.filter(n=>e.sessions[n]?.agentId),e._retiredBareActiveSessionId&&(e.activeSessionId=null,e.activeSessionKey=null)}e.inventoryIdentityMode="agent-scoped"}function Yb(e){let t=e._preferredExactSessionIdentity||null;if(!t)return!1;e._preferredExactSessionIdentity=null;let s=e.sessions[t.key]||null,n=ti(),r=s?.id===t.sessionId&&s.agentId===t.agentId,i=n?.currentView!=="yeaft"||typeof n.setActiveSessionFilter=="function";if(r&&i){if(e.activeSessionId=t.sessionId,e.activeSessionKey=t.key,n?.currentView==="yeaft")n.setActiveSessionFilter(t.sessionId,{agentId:t.agentId,force:!0});else if(n){n.yeaftActiveSessionFilter=t.sessionId,n.yeaftSessionAgentById={...n.yeaftSessionAgentById||{},[t.sessionId]:t.agentId};try{localStorage.setItem("lastViewedYeaftSession",t.key)}catch{}}return!0}if(e.activeSessionId=null,e.activeSessionKey=null,n?.yeaftActiveSessionFilter===t.sessionId&&(n.yeaftActiveSessionFilter=null),n?.yeaftSessionAgentById?.[t.sessionId]===t.agentId){let o={...n.yeaftSessionAgentById};delete o[t.sessionId],n.yeaftSessionAgentById=o}try{let o=Kr(localStorage.getItem("lastViewedYeaftSession")||"");o.agentId===t.agentId&&o.sessionId===t.sessionId&&localStorage.removeItem("lastViewedYeaftSession")}catch{}return!0}function go(e){let t=e._retiredBareActiveSessionId||null;if(!t)return!1;let s=ti();if(e.inventoryIdentityMode==="legacy-bare"){let r=e.sessions[t];return e._retiredBareActiveSessionId=null,!r||r.agentId?!1:(e.activeSessionId=t,e.activeSessionKey=t,s?.currentView==="yeaft"&&typeof s.setActiveSessionFilter=="function"?s.setActiveSessionFilter(t,{force:!0}):s&&(s.yeaftActiveSessionFilter=t),!0)}let n=e.sessionOrder.filter(r=>{let i=e.sessions[r];return i?.agentId&&i.id===t});if(n.length===1){let r=n[0],i=e.activeSessionId===t&&e.activeSessionKey===r,o=e.sessions[r]?.agentId||null;return e.activeSessionId=t,e.activeSessionKey=r,i||(s?.currentView==="yeaft"&&typeof s.setActiveSessionFilter=="function"?(s.setActiveSessionFilter(t,{agentId:o,force:!0}),e._retiredBareActiveSessionId=t):s&&(s.yeaftActiveSessionFilter=t)),!0}e.activeSessionId=null,e.activeSessionKey=null,s?.yeaftActiveSessionFilter===t&&(s.yeaftActiveSessionFilter=null);try{let r=localStorage.getItem("lastViewedYeaftSession")||"";Kr(r).sessionId===t&&localStorage.removeItem("lastViewedYeaftSession")}catch{}return!0}function ei(e){let t=[],s=new Set;for(let n of Array.isArray(e)?e:[]){let r=typeof n=="string"?n:String(n||"");!r||s.has(r)||(s.add(r),t.push(r))}return t}function Ol(e,t){let s=ei(e),n=new Set(s),r=ei(t).filter(o=>n.has(o)),i=new Set(r);return[...r,...s.filter(o=>!i.has(o))]}function ho(e,t=!1){return!e||typeof e!="object"?!!t:Object.prototype.hasOwnProperty.call(e,"pinned")?e.pinned===!0:Object.prototype.hasOwnProperty.call(e,"isPinned")?e.isPinned===!0:!!t}function lf(e){return!e||typeof e!="object"?!1:e.running===!0||e.active===!0||e.isActive===!0||e.isRunning===!0}function cf(e){if(!e||typeof e!="object")return 0;let t=e.latestActivityAt||e.lastActivityAt||e.lastMessageAt||e.updatedAt||0;if(typeof t=="number"&&Number.isFinite(t))return t;if(typeof t=="string"&&t){let s=Date.parse(t);return Number.isFinite(s)?s:0}return 0}function ti(){try{if(typeof window<"u"&&window.Pinia&&typeof window.Pinia.useChatStore=="function")return window.Pinia.useChatStore()}catch{}return null}var df,uf,Gb,ff,gf=B(()=>{fo();to();df="yeaft-session-order-by-agent",uf="yeaft-session-order-global";({defineStore:Gb}=Pinia);ff=Gb("sessions",{state:()=>({sessions:{},sessionOrder:[],activeSessionId:null,activeSessionKey:null,inventoryIdentityMode:"empty",_retiredBareActiveSessionId:null,_preferredExactSessionIdentity:null,lastSnapshotAt:0,lastCrudResult:null,pending:{}}),getters:{sessionList(e){let t=e.sessionOrder.map(d=>e.sessions[d]).filter(Boolean),s=ti(),n=s&&Array.isArray(s.pinnedSessions)?new Set(s.pinnedSessions):new Set;for(let d of t)d&&d.id&&d.pinned&&n.add(d.id);let r=[],i=[];for(let d of t)d.pinned||!d.agentId&&n.has(d.id)?r.push(d):i.push(d);let o=d=>[...d].sort((u,p)=>{let f=Number.isFinite(u?.sortOrder)?u.sortOrder:Number.MAX_SAFE_INTEGER,g=Number.isFinite(p?.sortOrder)?p.sortOrder:Number.MAX_SAFE_INTEGER;return f!==g?f-g:Dl(u,p)}),a=[...o(r),...o(i)],l=af();if(l.length===0)return a;let c=new Map(l.map((d,u)=>[d,u]));return a.sort((d,u)=>{let p=c.has(Cs(d))?c.get(Cs(d)):Number.MAX_SAFE_INTEGER,f=c.has(Cs(u))?c.get(Cs(u)):Number.MAX_SAFE_INTEGER;return p!==f?p-f:0})},sessionCount(e){return e.sessionOrder.length},sessionById:e=>(t,s=null)=>{let n=qt(e,t,s);return n&&e.sessions[n]||null},activeSession(e){return e.activeSessionKey&&e.sessions[e.activeSessionKey]||null},hasLoadedSnapshot(e){return e.lastSnapshotAt>0},isEmpty(e){return e.sessionOrder.length===0},activeNeedsInvite(e){let t=e.activeSessionKey?e.sessions[e.activeSessionKey]:null;return t?!t.defaultVpId&&(!Array.isArray(t.roster)||t.roster.length===0):!1}},actions:{applySnapshot(e,t=null,{deferActivation:s=!1}={}){let n=Array.isArray(e)?e:[],r=!1;if(t){Ll(this);let o={...this.sessions},a=new Set;for(let f of n){if(!f||!f.id)continue;let g=is(t,f.id);a.add(g),o[g]=this._normalize(f,t,ho(this.sessions[g]))}for(let f of this.sessionOrder){let g=this.sessions[f];g&&g.agentId===t&&!a.has(f)&&delete o[f]}let l=this.sessionOrder.filter(f=>o[f]),c=new Set(l),d=[];for(let f of n){if(!f||!f.id)continue;let g=is(t,f.id);o[g]&&!c.has(g)&&d.push(g)}this.sessions=o;let u=[...l,...d],p=af();if(p.length>0){let f=new Map(u.map(b=>[Cs(o[b]),b]).filter(([b])=>b)),g=p.map(b=>f.get(b)).filter(Boolean),v=new Set(g);u=[...g,...u.filter(b=>!v.has(b))];let m=new Map(p.map((b,h)=>[b,h]));for(let b of u){let h=Cs(o[b]);h&&m.has(h)&&(o[b]={...o[b],sortOrder:m.get(h)})}}if(t&&p.length===0){let f=of(),g=ei(f[t]);if(g.length>0){let v=g.map(y=>is(t,y)),m=new Set(v),b=Ol(u.filter(y=>o[y]?.agentId===t),v),h=this.sessionOrder.some(y=>o[y]?.agentId===t),w=0;h?u=this.sessionOrder.filter(y=>o[y]).map(y=>o[y]?.agentId===t?b[w++]:y).concat(b.slice(w)):u=u.map(y=>o[y]?.agentId===t?b[w++]:y);let I=new Map(v.map((y,k)=>[y,k]));for(let y of b)o[y]&&m.has(y)&&(o[y]={...o[y],sortOrder:I.get(y)})}}this.sessionOrder=u}else{if(this.inventoryIdentityMode==="agent-scoped")return;if(Object.values(this.sessions).some(c=>c&&c.agentId)){this.inventoryIdentityMode="agent-scoped";return}let a={},l=[];for(let c of n){if(!c||!c.id)continue;let d=is(null,c.id);a[d]=this._normalize(c,null,ho(this.sessions[d])),l.push(d)}this.sessions=a,this.sessionOrder=l,this.inventoryIdentityMode="legacy-bare"}s||(r=Yb(this)||go(this)),this.lastSnapshotAt=Date.now();let i=ti();if(i&&t){let o={...i.yeaftSessionAgentById||{}};for(let a of n)a&&a.id&&!o[a.id]&&(o[a.id]=t);i.yeaftSessionAgentById=o}if(!s&&!r){let o=null;try{o=localStorage.getItem("lastViewedYeaftSession")||null}catch{}let l=(o?this.sessions[o]:null)?o:o?qt(this,o,t):"",c=l?this.sessions[l]:null,d=c&&(!t||c.agentId===t),u=this.sessionOrder.filter(w=>this.sessions[w]&&(!t||this.sessions[w].agentId===t)&&this.sessions[w].running).sort((w,I)=>cf(this.sessions[I])-cf(this.sessions[w]))[0]||null,p=u?this.sessions[u]?.id:null,f=this.sessionList[0]||null,g=f?.id||null,v=g?qt(this,g,f?.raw?.agentId||null):"",m=p||(d?c.id:null)||g,b=u||(d?l:"")||v||$l(this,m,t),h=this.activeSessionKey?this.sessions[this.activeSessionKey]?.agentId:null;if(this.activeSessionId&&!qt(this,this.activeSessionId,h)?(this.activeSessionId=m,this.activeSessionKey=b||null):!this.activeSessionId&&this.sessionOrder.length>0&&!this._retiredBareActiveSessionId?(this.activeSessionId=m,this.activeSessionKey=b||null):this.activeSessionId&&(this.activeSessionKey=$l(this,this.activeSessionId,h)||this.activeSessionKey),i&&!this._retiredBareActiveSessionId){let w=this.activeSessionId||m,I=null;if((i.yeaftActiveSessionFilter&&!qt(this,i.yeaftActiveSessionFilter)||!i.yeaftActiveSessionFilter&&w)&&(I=w),I){let y=$l(this,I),k=y&&this.sessions[y]?.agentId||null;i.currentView==="yeaft"&&typeof i.setActiveSessionFilter=="function"?i.setActiveSessionFilter(I,{agentId:k,force:!0}):i.yeaftActiveSessionFilter=I,this.activeSessionKey=y||this.activeSessionKey}}}if(i&&typeof i.applyServerPinSnapshot=="function"){let o=new Set;for(let l of n){if(!l||!l.id)continue;let c=is(t,l.id),d=this.sessions[c];d&&d.pinned&&o.add(l.id)}let a=l=>{let c=qt(this,l,t),d=c?this.sessions[c]:null;return d?d.agentId===t:!1};i.applyServerPinSnapshot(t,o,a)}},applyRosterChange(e,t=null){if(!e)return;let s=e.sessionId||e.groupId;if(!s)return;let n=t||e.agentId||null;if(n)Ll(this);else if(this.inventoryIdentityMode!=="legacy-bare")return;let r=qt(this,s,n)||is(n,s),i=this.sessions[r];if(!i){let o=this._normalize({id:s,name:e.name||s,roster:Array.isArray(e.roster)?e.roster:[],defaultVpId:e.defaultVpId||null},n);this.sessions[r]=o,this.sessionOrder.push(r),go(this);return}this.sessions[r]={...i,name:e.name||i.name,roster:Array.isArray(e.roster)?e.roster.slice():i.roster,defaultVpId:e.defaultVpId!=null?e.defaultVpId:i.defaultVpId,announcement:typeof e.announcement=="string"?e.announcement:i.announcement},go(this)},applyCrudResult(e,t=null){if(!e)return;this.lastCrudResult={...e,at:Date.now()},e.requestId&&this.pending[e.requestId]&&delete this.pending[e.requestId];let s=e.session||e.group||null,n=t||e.agentId||s?.agentId||null;e.ok&&e.op==="list"&&Array.isArray(e.sessions)&&this.applySnapshot(e.sessions,n),e.ok&&(e.op==="create"||e.op==="copy"||e.op==="restore")&&s&&s.id&&this.applySnapshotUpsert(s,n)&&this.setActive(s.id,n);let r=e.sessionId||e.groupId,i=this.inventoryIdentityMode==="legacy-bare",o=r&&(n||i)?qt(this,r,n):"";if(e.ok&&(e.op==="archive"||e.op==="delete")&&r&&o&&(delete this.sessions[o],this.sessionOrder=this.sessionOrder.filter(a=>a!==o),(this.activeSessionKey===o||i&&this.activeSessionId===r)&&(this.activeSessionKey=this.sessionOrder[0]||null,this.activeSessionId=this.activeSessionKey&&this.sessions[this.activeSessionKey]?.id||null)),e.ok&&e.op==="update_config"&&r){let a=o?this.sessions[o]:null;a&&(this.sessions[o]={...a,config:e.config&&typeof e.config=="object"?{...e.config}:{}})}},applySnapshotUpsert(e,t=null){if(!e||!e.id)return"";let s=t||e.agentId||null;if(s)Ll(this);else if(this.inventoryIdentityMode!=="legacy-bare")return"";let n=qt(this,e.id,s)||is(s,e.id),r=!!this.sessions[n],i=this.sessions[n]||{};return this.sessions[n]={...i,...this._normalize(e,s,ho(i))},r||this.sessionOrder.push(n),go(this),n},setActive(e,t=null){let s=qt(this,e,t);e&&s&&this.sessions[s]?(this.activeSessionId=e,this.activeSessionKey=s,this._retiredBareActiveSessionId=null):(this.activeSessionId=null,this.activeSessionKey=null)},reorderSessionsForAgent(e,t){if(!e)return[];let s=this.sessionOrder.filter(l=>this.sessions[l]?.agentId===e),n=Ol(s,t.map(l=>is(e,l)));if(n.length===0)return[];let r=new Map(n.map((l,c)=>[l,c])),i=0;this.sessionOrder=this.sessionOrder.map(l=>this.sessions[l]?.agentId===e?n[i++]:l);for(let l of n)this.sessions[l]={...this.sessions[l],sortOrder:r.get(l)};let o=of(),a=n.map(l=>this.sessions[l]?.id).filter(Boolean);return o[e]=a,Ub(o),a},reorderSessionsGlobally(e){let t=this.sessionOrder.map(a=>Cs(this.sessions[a])).filter(Boolean),s=Ol(t,e);if(s.length===0)return[];let n=new Map(this.sessionOrder.map(a=>[Cs(this.sessions[a]),a]).filter(([a])=>a)),r=s.map(a=>n.get(a)).filter(Boolean),i=new Set(r);this.sessionOrder=[...r,...this.sessionOrder.filter(a=>!i.has(a))];let o=new Map(s.map((a,l)=>[a,l]));for(let a of this.sessionOrder){let l=Cs(this.sessions[a]);l&&o.has(l)&&(this.sessions[a]={...this.sessions[a],sortOrder:o.get(l)})}return Kb(s),s.map(a=>{let l=n.get(a),c=l?this.sessions[l]:null;return c?{agentId:c.agentId,sessionId:c.id}:null}).filter(Boolean)},applyPinState(e,t,s=null){if(!s&&this.inventoryIdentityMode!=="legacy-bare")return;let n=qt(this,e,s);!e||!n||!this.sessions[n]||(this.sessions[n]={...this.sessions[n],pinned:!!t})},markPending(e,t){e&&(this.pending[e]=t)},clearLastResult(){this.lastCrudResult=null},resetInventory(){this.sessions={},this.sessionOrder=[],this.activeSessionId=null,this.activeSessionKey=null,this.inventoryIdentityMode="empty",this._retiredBareActiveSessionId=null,this._preferredExactSessionIdentity=null,this.lastSnapshotAt=0},beginInventoryCommit(e=null,t=null){if(this.resetInventory(),e&&t){let s=is(t,e);this.activeSessionId=e,this.activeSessionKey=s,this._preferredExactSessionIdentity={sessionId:e,agentId:t,key:s}}else e&&(this._retiredBareActiveSessionId=e)},_normalize(e,t=null,s=!1){return{id:e.id,name:e.name||e.id,roster:Array.isArray(e.roster)?e.roster.slice():[],defaultVpId:e.defaultVpId||null,announcement:typeof e.announcement=="string"?e.announcement:"",config:e.config&&typeof e.config=="object"?{...e.config}:{},workDir:typeof e.workDir=="string"?e.workDir:"",createdAt:e.createdAt||null,updatedAt:e.updatedAt||null,lastMessageAt:e.lastMessageAt||null,running:lf(e),active:lf(e),runningVpCount:Number.isFinite(Number(e.runningVpCount))?Number(e.runningVpCount):0,latestActivityAt:e.latestActivityAt||e.lastActivityAt||e.lastMessageAt||null,agentId:t||e.agentId||null,pinned:ho(e,s),sortOrder:Number.isFinite(e.sortOrder)?e.sortOrder:null}}}})});function mo(){return globalThis.crypto?.randomUUID?.()||`browser-${Date.now()}-${Math.random().toString(16).slice(2)}`}function Ft(e,t){return`${String(e||"")}\0${String(t||"")}`}function hf(e,t,s,n){return`${Ft(e,t)}\0${String(s||"")}\0${String(n||"")}`}function Vl(e,t="Browser Runtime request failed"){return e?.safeError||e?.code||t}function ql(e){return globalThis.Vue?.markRaw?.(e)||e}var Qb,Xb,Zb,Jb,ew,tw,sw,vo,Fl=B(()=>{({defineStore:Qb}=Pinia),Xb=3e4,Zb=60*6e4,Jb=2e4,ew=5e3,tw=60*6e4,sw=256;vo=Qb("browser",{state:()=>({sessions:{},pending:{},peers:{},cancelledPeers:{},errors:{},errorCodes:{},peerDiagnostics:{},runtimeStatus:{},installProgress:{},protocolSupported:null,connectionEpoch:0,lastError:null,_cancelledPeerCleanupTimer:null,_messageListenerInstalled:!1}),actions:{chatStore(){return window.Pinia?.useChatStore?.()||null},installMessageListener(){if(this._messageListenerInstalled||typeof window>"u")return;this._messageListenerInstalled=!0;let e=this.chatStore();this.protocolSupported=e?.browserRuntimeProtocolSupported??null,window.addEventListener("browser-runtime-message",t=>this.handleMessage(t.detail)),window.addEventListener("browser-runtime-transport-reset",()=>this.handleTransportReset())},send(e){if(!this.chatStore()?.sendWsMessage?.(e))throw new Error("Browser Runtime transport unavailable")},beginRequest(e,t,s=Xb){let n=mo();return new Promise((r,i)=>{let o=setTimeout(()=>{delete this.pending[n],i(new Error(`${e} timed out`))},s);this.pending[n]={type:e,resolve:r,reject:i,timer:o,payload:t};try{this.send({type:e,requestId:n,...t})}catch(a){clearTimeout(o),delete this.pending[n],i(a)}})},completeRequest(e,t,s=null){let n=e?this.pending[e]:null;return n?(clearTimeout(n.timer),delete this.pending[e],s?n.reject(s):n.resolve(t),!0):!1},clearCancelledPeers(){clearTimeout(this._cancelledPeerCleanupTimer),this._cancelledPeerCleanupTimer=null,this.cancelledPeers={}},pruneCancelledPeers(e=Date.now()){clearTimeout(this._cancelledPeerCleanupTimer),this._cancelledPeerCleanupTimer=null;for(let[s,n]of Object.entries(this.cancelledPeers))Number(n.expiresAt)<=e&&delete this.cancelledPeers[s];let t=Math.min(...Object.values(this.cancelledPeers).map(s=>Number(s.expiresAt)).filter(Number.isFinite));Number.isFinite(t)&&(this._cancelledPeerCleanupTimer=setTimeout(()=>this.pruneCancelledPeers(),Math.max(1,t-Date.now())))},rememberCancelledPeer(e){let t=Date.now();for(this.pruneCancelledPeers(t);Object.keys(this.cancelledPeers).length>=sw;)delete this.cancelledPeers[Object.keys(this.cancelledPeers)[0]];this.cancelledPeers[hf(e.agentId,e.browserSessionId,e.requestId,e.connectionGeneration)]={agentId:e.agentId,browserSessionId:e.browserSessionId,requestId:e.requestId,connectionGeneration:e.connectionGeneration,expiresAt:t+tw},this.pruneCancelledPeers(t)},takeCancelledPeer(e){let t=hf(e.agentId,e.browserSessionId,e.requestId,e.connectionGeneration),s=this.cancelledPeers[t];return!s||(delete this.cancelledPeers[t],this.pruneCancelledPeers(),Number(s.expiresAt)<=Date.now())?null:s},async getRuntimeStatus(e){let t=await this.beginRequest("browser_runtime_status",{agentId:e});return this.runtimeStatus[e]=t,t},async installRuntime(e,t){let s=await this.beginRequest("browser_runtime_install",{agentId:e,confirmedBuildId:t?.buildId,confirmedDownloadBytes:Number(t?.downloadBytes)||0},Zb);return this.runtimeStatus[e]=s,delete this.installProgress[e],s},async enableRuntime(e){let t=await this.beginRequest("browser_runtime_enable",{agentId:e},6e4);return this.runtimeStatus[e]=t,t},async setupRuntime(e,t){return t?.installed?this.enableRuntime(e):this.installRuntime(e,t)},async createSession({agentId:e,sourceRef:t=null,initialUrl:s="about:blank",viewport:n=null,locale:r="en-US"}){let i=await this.beginRequest("browser_session_create",{agentId:e,sourceRef:t,options:{initialUrl:s,viewport:n||{width:1280,height:720,deviceScaleFactor:1},locale:r,capturePreference:"auto"}},45e3);return this.sessions[Ft(e,i.browserSessionId)]=i,i},async listSessions(e){let t=await this.beginRequest("browser_session_list",{agentId:e}),s=new Set((t.sessions||[]).map(n=>Ft(e,n.browserSessionId)));for(let n of Object.keys(this.sessions))n.startsWith(`${e}\0`)&&!s.has(n)&&delete this.sessions[n];for(let n of t.sessions||[])this.sessions[Ft(e,n.browserSessionId)]={...n,agentId:e};return t.sessions||[]},async closeSession(e,t,s){await this.beginRequest("browser_session_close",{agentId:e,browserSessionId:t,expectedRevision:s})},async attach({agentId:e,browserSessionId:t,videoElement:s}){if(!s)throw new Error("Browser video element required");let n=Ft(e,t);delete this.errors[n],delete this.errorCodes[n];let r=Number(this.connectionEpoch||0)+1;this.connectionEpoch=r;let i=mo(),o={localKey:n,agentId:e,browserSessionId:t,requestId:i,peerId:null,connectionGeneration:r,connection:null,videoElement:ql(s),state:"preparing",remoteState:null,pendingOffer:null,pendingCandidates:[],answerPromise:null,channels:{},controlSeq:0,pointerSeq:0,iceServerCount:null,diagnostics:{connectionState:"new",iceConnectionState:"new",iceGatheringState:"new",candidateErrors:0,lastCandidateError:null},attachTimer:null,disconnectedTimer:null};return this.peers[n]=o,this.peerDiagnostics[n]=o.diagnostics,o.attachTimer=setTimeout(()=>{if(o.attachTimer=null,this.peers[n]!==o||o.connection?.connectionState==="connected")return;let a=o.iceServerCount===0?"browser_ice_servers_missing":o.diagnostics.iceConnectionState==="failed"?"browser_ice_connection_failed":"browser_peer_attach_timeout";this.failPeer(o,new Error(a),a)},Jb),this.send({type:"browser_peer_attach",agentId:e,browserSessionId:t,requestId:i,connectionGeneration:r,role:"interactive",clientCapabilities:{codecs:["video/VP8"],maxWidth:1920,maxHeight:1080,maxFps:30}}),o},async preparePeer(e,t){if(this.peers[e.localKey]!==e||e.connectionGeneration!==t.connectionGeneration)return;if(e.connection){if(e.peerId===t.peerId)return;throw new Error("Browser peer identity changed during preparation")}e.peerId=t.peerId;let s=Array.isArray(t.iceServers)?t.iceServers:[];e.iceServerCount=s.length;let n=ql(new RTCPeerConnection({iceServers:s,iceTransportPolicy:t.iceTransportPolicy==="relay"?"relay":"all"}));e.connection=n,e.diagnostics.iceConnectionState=n.iceConnectionState||"new",e.diagnostics.iceGatheringState=n.iceGatheringState||"new",e.state="prepared",n.ondatachannel=i=>{if(this.peers[e.localKey]!==e)return;let o=i.channel;if(!["browser.control.v1","browser.pointer.v1","browser.state.v1"].includes(o?.label)){o?.close?.();return}e.channels[o.label]=ql(o),o.onclose=()=>{e.channels[o.label]===o&&delete e.channels[o.label]}},n.ontrack=i=>{this.peers[e.localKey]===e&&(e.videoElement.srcObject=i.streams[0]||new MediaStream([i.track]),e.videoElement.play().catch(()=>{}))},n.onicecandidate=i=>{if(this.peers[e.localKey]===e)try{this.send({type:"browser_peer_ice_candidate",agentId:e.agentId,browserSessionId:e.browserSessionId,peerId:e.peerId,connectionGeneration:e.connectionGeneration,candidate:i.candidate?i.candidate.toJSON():null})}catch{}},n.onicecandidateerror=i=>{this.peers[e.localKey]===e&&(e.diagnostics.candidateErrors+=1,e.diagnostics.lastCandidateError={address:typeof i.address=="string"?i.address:null,port:Number(i.port)||null,url:typeof i.url=="string"?i.url:null,errorCode:Number(i.errorCode)||null,errorText:typeof i.errorText=="string"?i.errorText.slice(0,256):null})},n.oniceconnectionstatechange=()=>{this.peers[e.localKey]===e&&(e.diagnostics.iceConnectionState=n.iceConnectionState||"new")},n.onicegatheringstatechange=()=>{this.peers[e.localKey]===e&&(e.diagnostics.iceGatheringState=n.iceGatheringState||"new")},n.onconnectionstatechange=()=>{if(this.peers[e.localKey]===e){if(e.state=n.connectionState,e.diagnostics.connectionState=n.connectionState||"new",e.diagnostics.iceConnectionState=n.iceConnectionState||"new",e.diagnostics.iceGatheringState=n.iceGatheringState||"new",n.connectionState==="connected"){clearTimeout(e.attachTimer),e.attachTimer=null,clearTimeout(e.disconnectedTimer),e.disconnectedTimer=null;return}if(n.connectionState==="disconnected"){e.disconnectedTimer||(e.disconnectedTimer=setTimeout(()=>{if(e.disconnectedTimer=null,this.peers[e.localKey]!==e||n.connectionState==="connected")return;let i=e.iceServerCount===0?"browser_ice_servers_missing":"browser_ice_connection_failed";this.failPeer(e,new Error(i),i)},ew));return}if(["failed","closed"].includes(n.connectionState)){let i=e.iceServerCount===0?"browser_ice_servers_missing":"browser_ice_connection_failed";this.failPeer(e,new Error(i),i)}}};let r=e.pendingOffer;e.pendingOffer=null,r&&await this.acceptOffer(e,r)},async acceptOffer(e,t){if(!(this.peers[e.localKey]!==e||e.connectionGeneration!==Number(t.connectionGeneration))){if(!e.connection){(!e.peerId||e.peerId===t.peerId)&&(e.pendingOffer||(e.pendingOffer=t));return}if(e.peerId===t.peerId){if(e.answerPromise)return e.answerPromise;e.answerPromise=(async()=>{if(await e.connection.setRemoteDescription(t.description),await e.connection.setLocalDescription(await e.connection.createAnswer()),this.peers[e.localKey]===e){this.send({type:"browser_peer_answer",agentId:e.agentId,browserSessionId:e.browserSessionId,peerId:e.peerId,connectionGeneration:e.connectionGeneration,description:e.connection.localDescription});for(let s of e.pendingCandidates.splice(0))await e.connection.addIceCandidate(s)}})();try{await e.answerPromise}finally{e.answerPromise=null}}}},async acceptCandidate(e,t){if(!(this.peers[e.localKey]!==e||e.connectionGeneration!==Number(t.connectionGeneration)||!t.candidate)){if(!e.connection){(!e.peerId||e.peerId===t.peerId)&&e.pendingCandidates.push(t.candidate);return}e.peerId===t.peerId&&(e.connection.remoteDescription?await e.connection.addIceCandidate(t.candidate):e.pendingCandidates.push(t.candidate))}},interactiveReady(e,t){let s=this.peers[Ft(e,t)];return s?.state==="connected"&&s.channels["browser.control.v1"]?.readyState==="open"&&s.channels["browser.pointer.v1"]?.readyState==="open"},sendControl(e,t,s){let n=this.peers[Ft(e,t)],r=n?.channels["browser.control.v1"];return!n||n.state!=="connected"||r?.readyState!=="open"?!1:(r.send(JSON.stringify({version:1,connectionGeneration:n.connectionGeneration,controlSeq:++n.controlSeq,action:s})),!0)},sendPointer(e,t,s){let n=this.peers[Ft(e,t)],r=n?.channels["browser.pointer.v1"];return!n||n.state!=="connected"||r?.readyState!=="open"?!1:(r.send(JSON.stringify({version:1,connectionGeneration:n.connectionGeneration,pointerSeq:++n.pointerSeq,action:s})),!0)},detach(e,t,{notify:s=!0}={}){let n=Ft(e,t),r=this.peers[n];if(r){if(delete this.peers[n],clearTimeout(r.attachTimer),r.attachTimer=null,clearTimeout(r.disconnectedTimer),r.disconnectedTimer=null,s&&!r.peerId&&this.rememberCancelledPeer(r),s&&r.peerId)try{this.send({type:"browser_peer_detach",requestId:mo(),agentId:e,browserSessionId:t,peerId:r.peerId,connectionGeneration:r.connectionGeneration})}catch{}this.errorCodes[n]||delete this.peerDiagnostics[n];for(let i of Object.values(r.channels||{}))try{i?.close?.()}catch{}r.channels={};try{r.connection?.close()}catch{}r.videoElement&&(r.videoElement.srcObject=null)}},failPeer(e,t,s=null){this.peers[e.localKey]===e&&(this.lastError=t?.message||String(t),this.errors[e.localKey]=this.lastError,s?this.errorCodes[e.localKey]=s:delete this.errorCodes[e.localKey],this.detach(e.agentId,e.browserSessionId,{notify:!0}))},handleTransportReset(){this.protocolSupported=null,this.connectionEpoch+=1;for(let e of Object.values(this.pending))clearTimeout(e.timer),e.reject(new Error("Browser Runtime connection changed"));this.pending={};for(let e of Object.values(this.peers))this.detach(e.agentId,e.browserSessionId,{notify:!1});this.peers={},this.runtimeStatus={},this.installProgress={},this.errors={},this.errorCodes={},this.peerDiagnostics={},this.clearCancelledPeers()},handleMessage(e){if(!e?.type)return;if(e.type==="client_hello_ack"){this.protocolSupported=e.browserRuntimeProtocol===1;return}if(e.type==="auth_result"){this.protocolSupported=!1;return}if(e.type==="browser_runtime_error"){let n=new Error(Vl(e));n.code=e.code,this.completeRequest(e.requestId,null,n)||(this.lastError=n.message);return}if(e.type==="browser_runtime_install_progress"){this.installProgress[e.agentId]={downloadedBytes:Number(e.downloadedBytes)||0,totalBytes:Number(e.totalBytes)||0};return}if(e.type==="browser_runtime_status_result"){this.runtimeStatus[e.agentId]=e,this.completeRequest(e.requestId,e),e.state!=="installing"&&delete this.installProgress[e.agentId];return}if(e.type==="browser_session_error"){let n=new Error(Vl(e));n.code=e.code,this.completeRequest(e.requestId,null,n)||(this.lastError=n.message);return}if(e.type==="browser_session_created"){this.sessions[Ft(e.agentId,e.browserSessionId)]=e,this.completeRequest(e.requestId,e);return}if(e.type==="browser_session_list_result"){this.completeRequest(e.requestId,e);return}if(e.type==="browser_session_snapshot"){let n=Ft(e.agentId,e.browserSessionId);this.sessions[n]=e,this.completeRequest(e.requestId,e),["closed","failed"].includes(e.state)&&this.detach(e.agentId,e.browserSessionId,{notify:!1});return}let t=Ft(e.agentId,e.browserSessionId),s=this.peers[t];if(!s||s.connectionGeneration!==Number(e.connectionGeneration)){if(e.type==="browser_peer_prepared"||e.type==="browser_peer_error"||e.type==="browser_peer_state"&&["failed","disconnected","closed"].includes(e.state)){let n=this.takeCancelledPeer(e);if(n&&e.type==="browser_peer_prepared")try{this.send({type:"browser_peer_detach",requestId:mo(),agentId:n.agentId,browserSessionId:n.browserSessionId,peerId:e.peerId,connectionGeneration:n.connectionGeneration})}catch{}}return}if(e.type==="browser_peer_error")this.failPeer(s,new Error(Vl(e,"Browser peer failed")),e.code||null);else if(e.type==="browser_peer_prepared")this.preparePeer(s,e).catch(n=>this.failPeer(s,n));else if(e.type==="browser_peer_offer")this.acceptOffer(s,e).catch(n=>this.failPeer(s,n));else if(e.type==="browser_peer_ice_candidate")this.acceptCandidate(s,e).catch(n=>this.failPeer(s,n));else if(e.type==="browser_peer_state"&&e.state&&(s.remoteState=e.state,["failed","disconnected","closed"].includes(e.state))){let n=s.iceServerCount===0?"browser_ice_servers_missing":"browser_ice_connection_failed";this.failPeer(s,new Error(n),n)}}}})});function yo(){try{if(window.Pinia&&typeof window.Pinia.useAuthStore=="function")return window.Pinia.useAuthStore()}catch{}return null}function Hl(){try{return localStorage.getItem("authToken")||null}catch{return null}}function yf(){let e=yo();if(e)try{return e.getActiveToken?.()||e.token||Hl()}catch{return e.token||Hl()}return Hl()}function rw(e,t){if(!e)return!1;let s=yf();if(s&&s!==t)return!1;try{localStorage.setItem("authToken",e)}catch{}let n=yo();return n&&(n.token=e),!0}function iw(e){try{let t=typeof e=="string"?e:e?.url;return!t||typeof window>"u"||!window.location?null:new URL(t,window.location.href)}catch{return null}}function vf(e){return!e||typeof window>"u"||!window.location?!1:e.origin===window.location.origin&&e.pathname.startsWith("/api/")}function ow(e){if(!e)return!1;let t=e.pathname;return!!(nw.has(t)||t.startsWith("/api/auth/sso/poll/")||/^\/api\/auth\/sso\/[^/]+\/start(?:-qr)?$/.test(t))}function aw(e,t){return t?.headers?new Headers(t.headers):e&&typeof e=="object"&&e.headers?new Headers(e.headers):new Headers}function lw(e){let t=e.get("Authorization");return!t||!t.startsWith("Bearer ")?null:t.slice(7)}function cw(e,t){return{...e||{},headers:t}}function dw(e,t,s,n){let r=yo();r&&typeof r.handleAuthResponse=="function"?r.handleAuthResponse(e,t,s,n):r&&typeof r.handleAuthFailure=="function"&&n&&r.handleAuthFailure(void 0,t,s)}function bf(){if(mf||typeof window>"u"||!window.fetch)return;mf=!0;let e=window.fetch.bind(window);window.fetch=async function(s,n){let r=iw(s),i=vf(r)&&!ow(r),o=vf(r)?{...n||{},credentials:"same-origin"}:n,a=null,l=i?yo():null,c=l?.authGeneration,d=!!l?.isAuthenticated;if(i){let p=aw(s,n);a=lw(p),a||(a=yf(),a&&(p.set("Authorization",`Bearer ${a}`),o=cw(o,p)))}let u=await e(s,o);try{let p=u.headers&&u.headers.get&&u.headers.get("X-New-Token");p&&rw(p,a),i&&u.status===401&&dw(u,a,c,d)}catch{}return u}}var mf,nw,wf=B(()=>{mf=!1,nw=new Set(["/api/auth/mode","/api/auth/login","/api/auth/aad","/api/auth/verify","/api/auth/verify-totp","/api/auth/setup-totp","/api/auth/register","/api/auth/password-reset/request","/api/auth/password-reset/verify"])});var kf,Sf,Bl=B(()=>{kf={"quickSend.title":"Quick send","quickSend.description":"Add up to 5 send buttons for this Agent. Each sends your current message with its model and optional turn overrides.","quickSend.empty":"No quick sends configured. No extra send buttons are shown.","quickSend.offline":"This Agent is offline. Reconnect to load or save quick sends.","quickSend.entry":"Quick send {index}","quickSend.name":"Button name","quickSend.model":"Model","quickSend.chooseModel":"Choose a model","quickSend.noModels":"Configure models in the LLM category first.","quickSend.effort":"Reasoning effort","quickSend.maxOutputTokens":"Maximum output tokens","quickSend.default":"Default","quickSend.outputLimit":"Leave blank to use the model default: {max} tokens (also the maximum).","quickSend.add":"Add quick send","quickSend.remove":"Remove","quickSend.limit":"Maximum 5 quick sends.","quickSend.nameRequired":"Enter a button name (1\u201380 characters).","quickSend.modelRequired":"Choose an available model for each quick send.","quickSend.effortInvalid":"The selected effort is not available for this model.","quickSend.outputInvalid":"Output tokens must be a positive integer no greater than {max}.","quickSend.loadFailed":"Could not load quick sends. Refresh to retry.","quickSend.saveFailed":"Save was not confirmed. Refresh to check the saved configuration before retrying.","quickSend.saved":"Quick sends saved.","quickSend.savedRefreshWarning":"Quick sends saved, but runtime refresh failed: {error}"},Sf={"quickSend.title":"\u5FEB\u6377\u53D1\u9001","quickSend.description":"\u4E3A\u6B64 Agent \u6DFB\u52A0\u6700\u591A 5 \u4E2A\u53D1\u9001\u6309\u94AE\u3002\u4F7F\u7528\u6307\u5B9A\u6A21\u578B\u548C\u53EF\u9009\u7684\u5355\u8F6E\u53C2\u6570\u53D1\u9001\u5F53\u524D\u6D88\u606F\u3002","quickSend.empty":"\u5C1A\u672A\u914D\u7F6E\u5FEB\u6377\u53D1\u9001\uFF0C\u4E0D\u4F1A\u663E\u793A\u989D\u5916\u7684\u53D1\u9001\u6309\u94AE\u3002","quickSend.offline":"\u6B64 Agent \u5DF2\u79BB\u7EBF\u3002\u91CD\u65B0\u8FDE\u63A5\u540E\u53EF\u52A0\u8F7D\u6216\u4FDD\u5B58\u5FEB\u6377\u53D1\u9001\u3002","quickSend.entry":"\u5FEB\u6377\u53D1\u9001 {index}","quickSend.name":"\u6309\u94AE\u540D\u79F0","quickSend.model":"\u6A21\u578B","quickSend.chooseModel":"\u9009\u62E9\u6A21\u578B","quickSend.noModels":"\u8BF7\u5148\u5728\u6A21\u578B\u914D\u7F6E\u5206\u7C7B\u4E2D\u6DFB\u52A0\u6A21\u578B\u3002","quickSend.effort":"\u63A8\u7406\u5F3A\u5EA6","quickSend.maxOutputTokens":"\u6700\u5927\u8F93\u51FA Token \u6570","quickSend.default":"\u9ED8\u8BA4","quickSend.outputLimit":"\u7559\u7A7A\u4F7F\u7528\u6A21\u578B\u9ED8\u8BA4\u503C\uFF1A{max} Token\uFF08\u4E5F\u662F\u53EF\u8BBE\u7F6E\u7684\u4E0A\u9650\uFF09\u3002","quickSend.add":"\u6DFB\u52A0\u5FEB\u6377\u53D1\u9001","quickSend.remove":"\u5220\u9664","quickSend.limit":"\u6700\u591A\u6DFB\u52A0 5 \u4E2A\u5FEB\u6377\u53D1\u9001\u3002","quickSend.nameRequired":"\u8BF7\u8F93\u5165\u6309\u94AE\u540D\u79F0\uFF081\u201380 \u4E2A\u5B57\u7B26\uFF09\u3002","quickSend.modelRequired":"\u8BF7\u4E3A\u6BCF\u4E2A\u5FEB\u6377\u53D1\u9001\u9009\u62E9\u53EF\u7528\u6A21\u578B\u3002","quickSend.effortInvalid":"\u6B64\u6A21\u578B\u4E0D\u652F\u6301\u6240\u9009\u63A8\u7406\u5F3A\u5EA6\u3002","quickSend.outputInvalid":"\u8F93\u51FA Token \u6570\u5FC5\u987B\u4E3A\u4E0D\u8D85\u8FC7 {max} \u7684\u6B63\u6574\u6570\u3002","quickSend.loadFailed":"\u65E0\u6CD5\u52A0\u8F7D\u5FEB\u6377\u53D1\u9001\uFF0C\u8BF7\u5237\u65B0\u91CD\u8BD5\u3002","quickSend.saveFailed":"\u5C1A\u672A\u786E\u8BA4\u4FDD\u5B58\u3002\u8BF7\u5148\u5237\u65B0\u68C0\u67E5\u5DF2\u4FDD\u5B58\u7684\u914D\u7F6E\uFF0C\u518D\u51B3\u5B9A\u662F\u5426\u91CD\u8BD5\u3002","quickSend.saved":"\u5FEB\u6377\u53D1\u9001\u5DF2\u4FDD\u5B58\u3002","quickSend.savedRefreshWarning":"\u5FEB\u6377\u53D1\u9001\u5DF2\u4FDD\u5B58\uFF0C\u4F46\u8FD0\u884C\u65F6\u5237\u65B0\u5931\u8D25\uFF1A{error}"}});var If,Cf,Nl=B(()=>{If={"userShortcuts.title":"Keyboard shortcuts","userShortcuts.scope":"These are your user preferences, stored only in this browser for this account. They do not sync across devices.","userShortcuts.quickSendHelp":"Quick-send shortcuts are active automatically when presets are configured in Agent settings. They only work while the message composer is focused; clear an individual binding to disable it.","userShortcuts.help":"Shortcuts use simple Alt + key defaults. Click a binding to replace it, or clear it to disable the action. Escape cancels; Tab moves on. Global actions stay available while the message composer is focused, and never run in dialogs, other text fields, editors or terminals.","userShortcuts.suggestion":"Suggestion: {binding}","userShortcuts.recording":"Press a shortcut\u2026","userShortcuts.unbound":"Not bound","userShortcuts.clear":"Clear","userShortcuts.clearAction":"Clear shortcut for {action}","userShortcuts.reset":"Reset shortcuts","userShortcuts.action.terminal":"Open terminal","userShortcuts.action.files":"Open files","userShortcuts.action.git":"Open Git","userShortcuts.action.newSession":"New session","userShortcuts.action.closeWorkbench":"Close workbench","userShortcuts.action.quickSend1":"Quick send 1","userShortcuts.action.quickSend2":"Quick send 2","userShortcuts.action.quickSend3":"Quick send 3","userShortcuts.action.quickSend4":"Quick send 4","userShortcuts.action.quickSend5":"Quick send 5","userShortcuts.error.invalid":"Use Ctrl, Meta or Alt with a letter or number; Shift is optional.","userShortcuts.error.reserved":"This combination conflicts with a browser or existing app shortcut.","userShortcuts.error.conflict":"This shortcut is already assigned to {action}. Clear it there first.","userShortcuts.error.storage":"Could not save preferences in this browser. Check browser storage permissions.","userShortcuts.error.unauthenticated":"Sign in before saving your shortcuts."},Cf={"userShortcuts.title":"\u952E\u76D8\u5FEB\u6377\u952E","userShortcuts.scope":"\u8FD9\u662F\u4F60\u7684\u7528\u6237\u504F\u597D\uFF0C\u6309\u5F53\u524D\u8D26\u53F7\u4EC5\u4FDD\u5B58\u5728\u6B64\u6D4F\u89C8\u5668\u4E2D\uFF0C\u4E0D\u8DE8\u8BBE\u5907\u540C\u6B65\u3002","userShortcuts.quickSendHelp":"\u5728 Agent \u8BBE\u7F6E\u4E2D\u914D\u7F6E\u5FEB\u6377\u53D1\u9001\u540E\uFF0C\u5FEB\u6377\u952E\u4F1A\u81EA\u52A8\u751F\u6548\uFF1B\u4EC5\u5728\u6D88\u606F\u8F93\u5165\u6846\u83B7\u5F97\u7126\u70B9\u65F6\u89E6\u53D1\u3002\u6E05\u9664\u5355\u9879\u7ED1\u5B9A\u5373\u53EF\u505C\u7528\u5BF9\u5E94\u5FEB\u6377\u952E\u3002","userShortcuts.help":"\u9ED8\u8BA4\u4F7F\u7528\u7B80\u5355\u7684 Alt + \u5355\u952E\u3002\u70B9\u51FB\u7ED1\u5B9A\u6309\u94AE\u53EF\u66FF\u6362\uFF0C\u6E05\u9664\u540E\u53EF\u505C\u7528\u8BE5\u64CD\u4F5C\u3002Escape \u53D6\u6D88\uFF0CTab \u79FB\u81F3\u4E0B\u4E00\u9879\u3002\u6D88\u606F\u8F93\u5165\u6846\u83B7\u5F97\u7126\u70B9\u65F6\u4ECD\u53EF\u4F7F\u7528\u5168\u5C40\u52A8\u4F5C\uFF1B\u5F39\u7A97\u3001\u5176\u4ED6\u8F93\u5165\u6846\u3001\u7F16\u8F91\u5668\u4E0E\u7EC8\u7AEF\u4E2D\u7684\u6309\u952E\u4E0D\u4F1A\u88AB\u62A2\u5360\u3002","userShortcuts.suggestion":"\u63A8\u8350\uFF1A{binding}","userShortcuts.recording":"\u8BF7\u6309\u4E0B\u7EC4\u5408\u952E\u2026","userShortcuts.unbound":"\u672A\u7ED1\u5B9A","userShortcuts.clear":"\u6E05\u9664","userShortcuts.clearAction":"\u6E05\u9664\u201C{action}\u201D\u5FEB\u6377\u952E","userShortcuts.reset":"\u91CD\u7F6E\u5FEB\u6377\u952E","userShortcuts.action.terminal":"\u6253\u5F00\u7EC8\u7AEF","userShortcuts.action.files":"\u6253\u5F00\u6587\u4EF6","userShortcuts.action.git":"\u6253\u5F00 Git","userShortcuts.action.newSession":"\u65B0\u5EFA\u4F1A\u8BDD","userShortcuts.action.closeWorkbench":"\u5173\u95ED\u5DE5\u4F5C\u53F0","userShortcuts.action.quickSend1":"\u5FEB\u6377\u53D1\u9001 1","userShortcuts.action.quickSend2":"\u5FEB\u6377\u53D1\u9001 2","userShortcuts.action.quickSend3":"\u5FEB\u6377\u53D1\u9001 3","userShortcuts.action.quickSend4":"\u5FEB\u6377\u53D1\u9001 4","userShortcuts.action.quickSend5":"\u5FEB\u6377\u53D1\u9001 5","userShortcuts.error.invalid":"\u8BF7\u4F7F\u7528 Ctrl\u3001Meta \u6216 Alt \u642D\u914D\u5B57\u6BCD\u6216\u6570\u5B57\uFF0C\u53EF\u52A0 Shift\u3002","userShortcuts.error.reserved":"\u8BE5\u7EC4\u5408\u4E0E\u6D4F\u89C8\u5668\u6216\u5E94\u7528\u5DF2\u6709\u5FEB\u6377\u952E\u51B2\u7A81\u3002","userShortcuts.error.conflict":"\u8BE5\u7EC4\u5408\u5DF2\u7ED1\u5B9A\u201C{action}\u201D\uFF0C\u8BF7\u5148\u6E05\u9664\u539F\u7ED1\u5B9A\u3002","userShortcuts.error.storage":"\u65E0\u6CD5\u5728\u6B64\u6D4F\u89C8\u5668\u4FDD\u5B58\u504F\u597D\uFF0C\u8BF7\u68C0\u67E5\u6D4F\u89C8\u5668\u5B58\u50A8\u6743\u9650\u3002","userShortcuts.error.unauthenticated":"\u8BF7\u5148\u767B\u5F55\u518D\u4FDD\u5B58\u5FEB\u6377\u952E\u3002"}});var Af,xf=B(()=>{Bl();Nl();Af={...Sf,...Cf,"quickSend.composer.label":"\u5FEB\u6377\u53D1\u9001","quickSend.composer.send":"\u5FEB\u6377\u53D1\u9001 {number}\uFF1A{name}","common.loading":"\u52A0\u8F7D\u4E2D...","common.confirm":"\u786E\u5B9A","common.apply":"\u5E94\u7528","common.cancel":"\u53D6\u6D88","common.delete":"\u5220\u9664","common.copy":"\u590D\u5236","common.copied":"\u5DF2\u590D\u5236","common.close":"\u5173\u95ED","common.refresh":"\u5237\u65B0","common.open":"\u6253\u5F00","common.save":"\u4FDD\u5B58","common.saving":"\u4FDD\u5B58\u4E2D...","common.search":"\u641C\u7D22","common.back":"\u8FD4\u56DE","common.noSubdirectories":"\u65E0\u5B50\u76EE\u5F55","common.drives":"\u9A71\u52A8\u5668","common.rootDir":"\u6839\u76EE\u5F55","common.comma":"\uFF0C","common.select":"\u9009\u62E9","common.retry":"\u91CD\u8BD5","mermaid.export":"\u5BFC\u51FA","mermaid.exportMd":"\u5BFC\u51FA MD","mermaid.exportPng":"\u5BFC\u51FA PNG","mermaid.exportJpg":"\u5BFC\u51FA JPG","login.subtitle":"Yeaft Web Code Agent","login.username":"\u7528\u6237\u540D","login.password":"\u5BC6\u7801","login.login":"\u767B\u5F55","login.loggingIn":"\u767B\u5F55\u4E2D...","login.enterUsername":"\u8BF7\u8F93\u5165\u7528\u6237\u540D","login.enterPassword":"\u8BF7\u8F93\u5165\u5BC6\u7801","login.noAccount":"\u6CA1\u6709\u8D26\u53F7\uFF1F","login.registerWithCode":"\u6CE8\u518C\u65B0\u8D26\u53F7","login.or":"\u6216","login.usePassword":"\u4F7F\u7528\u8D26\u53F7\u5BC6\u7801\u767B\u5F55","login.useSso":"\u8FD4\u56DE\u5355\u70B9\u767B\u5F55","login.noProviders":"\u7BA1\u7406\u5458\u5C1A\u672A\u542F\u7528\u4EFB\u4F55\u7B2C\u4E09\u65B9\u767B\u5F55\u3002","login.microsoft":"\u4F7F\u7528 Microsoft \u8D26\u53F7\u767B\u5F55","login.github":"\u4F7F\u7528 GitHub \u8D26\u53F7\u767B\u5F55","login.google":"\u4F7F\u7528 Google \u8D26\u53F7\u767B\u5F55","login.wechat":"\u4F7F\u7528\u5FAE\u4FE1\u626B\u7801\u767B\u5F55","login.alipay":"\u4F7F\u7528\u652F\u4ED8\u5B9D\u8D26\u53F7\u767B\u5F55","login.wechat.mobileUnsupported":"\u5FAE\u4FE1\u767B\u5F55\u6682\u4EC5\u652F\u6301\u7535\u8111\u7AEF\uFF0C\u8BF7\u5728\u7535\u8111\u6D4F\u89C8\u5668\u4E2D\u626B\u7801\u767B\u5F55\u3002","login.alipay.mobileWaiting":"\u6B63\u5728\u7B49\u5F85\u4F60\u5728\u652F\u4ED8\u5B9D\u4E2D\u786E\u8BA4\u2026 \u5B8C\u6210\u540E\u8FD4\u56DE\u672C\u9875\u9762\u5C06\u81EA\u52A8\u767B\u5F55\u3002","login.alipay.relaunch":"\u91CD\u65B0\u6253\u5F00\u652F\u4ED8\u5B9D","login.qr.title":"\u626B\u7801\u767B\u5F55","login.qr.titleAlipay":"\u652F\u4ED8\u5B9D\u626B\u7801\u767B\u5F55","login.qr.titleWechat":"\u5FAE\u4FE1\u626B\u7801\u767B\u5F55","login.qr.hint":"\u8BF7\u4F7F\u7528\u624B\u673A\u626B\u63CF\u4E8C\u7EF4\u7801\u5B8C\u6210\u6388\u6743","login.error.enterUsername":"\u8BF7\u8F93\u5165\u7528\u6237\u540D","login.error.enterPassword":"\u8BF7\u8F93\u5165\u5BC6\u7801","login.error.enter6Digit":"\u8BF7\u8F93\u51656\u4F4D\u9A8C\u8BC1\u7801","login.error.enterInviteCode":"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801","login.error.usernameMinLen":"\u7528\u6237\u540D\u81F3\u5C112\u4E2A\u5B57\u7B26","login.error.passwordMinLen":"\u5BC6\u7801\u81F3\u5C116\u4F4D","login.error.passwordMismatch":"\u4E24\u6B21\u5BC6\u7801\u4E0D\u4E00\u81F4","login.error.enterVerifyCode":"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801","login.error.loginFailed":"\u767B\u5F55\u5931\u8D25","login.forgot.link":"\u5FD8\u8BB0\u5BC6\u7801\uFF1F","login.forgot.title":"\u91CD\u7F6E\u5BC6\u7801","login.forgot.emailHint":"\u8F93\u5165\u8D26\u6237\u7ED1\u5B9A\u7684\u90AE\u7BB1\uFF0C\u6211\u4EEC\u5C06\u53D1\u9001 6 \u4F4D\u91CD\u7F6E\u9A8C\u8BC1\u7801\u3002","login.forgot.sendCode":"\u53D1\u9001\u91CD\u7F6E\u9A8C\u8BC1\u7801","login.forgot.sending":"\u53D1\u9001\u4E2D...","login.forgot.codeSent":"\u5982\u679C\u90AE\u7BB1\u5DF2\u6CE8\u518C\uFF0C\u91CD\u7F6E\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001\u3002\u8BF7\u5728\u4E0B\u65B9\u8F93\u5165\u9A8C\u8BC1\u7801\u4E0E\u65B0\u5BC6\u7801\u3002","login.forgot.resetBtn":"\u91CD\u7F6E\u5BC6\u7801","login.forgot.resetting":"\u91CD\u7F6E\u4E2D...","login.forgot.success":"\u5BC6\u7801\u5DF2\u91CD\u7F6E\uFF0C\u53EF\u4EE5\u4F7F\u7528\u65B0\u5BC6\u7801\u767B\u5F55\u3002","login.forgot.emailInvalid":"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u90AE\u7BB1","login.register.title":"\u65B0\u7528\u6237\u6CE8\u518C","login.register.inviteCode":"\u9080\u8BF7\u7801","login.register.username":"\u7528\u6237\u540D","login.register.password":"\u5BC6\u7801\uFF08\u81F3\u5C116\u4F4D\uFF09","login.register.confirmPassword":"\u786E\u8BA4\u5BC6\u7801","login.register.email":"\u90AE\u7BB1\uFF08\u53EF\u9009\uFF09","login.register.submit":"\u6CE8\u518C","login.register.submitting":"\u6CE8\u518C\u4E2D...","login.register.back":"\u8FD4\u56DE\u767B\u5F55","login.register.success":"\u6CE8\u518C\u6210\u529F\uFF0C\u8BF7\u767B\u5F55","login.register.enterCode":"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801","login.register.usernameMin":"\u7528\u6237\u540D\u81F3\u5C112\u4E2A\u5B57\u7B26","login.register.passwordMin":"\u5BC6\u7801\u81F3\u5C116\u4F4D","login.register.passwordMismatch":"\u4E24\u6B21\u5BC6\u7801\u4E0D\u4E00\u81F4","login.totp.setupTitle":"\u8BBE\u7F6E\u53CC\u56E0\u7D20\u8BA4\u8BC1","login.totp.setupHint":"\u4F7F\u7528 Microsoft Authenticator \u6216 Google Authenticator \u626B\u63CF\u4E0B\u65B9\u4E8C\u7EF4\u7801","login.totp.manualKey":"\u6216\u624B\u52A8\u8F93\u5165\u5BC6\u94A5\uFF1A","login.totp.enterCode":"\u8F93\u51656\u4F4D\u9A8C\u8BC1\u7801","login.totp.complete":"\u5B8C\u6210\u8BBE\u7F6E","login.totp.verifying":"\u9A8C\u8BC1\u4E2D...","login.totp.verify":"\u9A8C\u8BC1","login.totp.prompt":"\u8BF7\u8F93\u5165 Authenticator \u5E94\u7528\u4E2D\u7684\u9A8C\u8BC1\u7801","login.totp.invalidCode":"\u8BF7\u8F93\u51656\u4F4D\u9A8C\u8BC1\u7801","login.email.codeSent":"\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001\u81F3 {email}","login.email.enterCode":"\u8F93\u5165\u9A8C\u8BC1\u7801","login.email.verify":"\u9A8C\u8BC1","login.email.verifying":"\u9A8C\u8BC1\u4E2D...","login.email.enterCodeError":"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801","chat.agent.select":"\u9009\u62E9 Agent","chat.agent.manage":"\u7BA1\u7406 Agent","chat.agent.count":"{count} agents","chat.agent.none":"\u6682\u65E0 Agent","chat.agent.restarting":"\u91CD\u542F\u4E2D","agentSettings.open":"Agent \u8BBE\u7F6E","agentSettings.manage":"\u7BA1\u7406","agentSettings.eyebrow":"\u672C\u5730\u8FD0\u884C\u65F6","agentSettings.title":"Agent \u8BBE\u7F6E","agentSettings.description":"\u6309 Agent \u67E5\u770B\u548C\u914D\u7F6E\u672C\u5730\u8FD0\u884C\u65F6\uFF0C\u4E0D\u518D\u628A\u8FD0\u884C\u63A7\u5236\u6DF7\u5165\u8D26\u6237\u8BBE\u7F6E\u3002","agentSettings.agentList":"Agent","agentSettings.categories":"Agent \u8BBE\u7F6E\u5206\u7C7B","agentSettings.categories.operations":"\u64CD\u4F5C","agentSettings.categories.trace":"Trace","agentSettings.categories.llm":"LLM \u914D\u7F6E","agentSettings.selectedAgent":"\u5F53\u524D Agent","agentSettings.online":"\u5728\u7EBF","agentSettings.offline":"\u79BB\u7EBF","agentSettings.empty":"\u6682\u65E0\u53EF\u7528 Agent\u3002","agentSettings.runtime.title":"\u8FD0\u884C\u65F6","agentSettings.runtime.description":"\u8EAB\u4EFD\u3001\u5DE5\u4F5C\u76EE\u5F55\u548C\u672C\u5730\u540E\u53F0\u5904\u7406\u3002","agentSettings.runtime.version":"\u7248\u672C","agentSettings.runtime.updateAvailable":"\u53EF\u66F4\u65B0\u81F3 v{version}","agentSettings.runtime.updateUnknown":"\u65E0\u6CD5\u83B7\u53D6\u66F4\u65B0\u72B6\u6001","agentSettings.runtime.workDir":"\u5DE5\u4F5C\u76EE\u5F55","agentSettings.telemetry.title":"\u8BCA\u65AD","agentSettings.telemetry.saved":"\u8BCA\u65AD\u8BBE\u7F6E\u5DF2\u4FDD\u5B58\u3002","agentSettings.telemetry.loadFailed":"\u8BCA\u65AD\u8BBE\u7F6E\u52A0\u8F7D\u5931\u8D25\u3002","agentSettings.telemetry.saveFailed":"\u8BCA\u65AD\u8BBE\u7F6E\u4FDD\u5B58\u5931\u8D25\u3002","agentSettings.maintenance.title":"\u7EF4\u62A4","agentSettings.maintenance.description":"\u8FD9\u4E9B\u64CD\u4F5C\u4F1A\u4E2D\u65AD\u5F53\u524D Agent \u4E0A\u6B63\u5728\u8FD0\u884C\u7684\u5DE5\u4F5C\u3002","agentSettings.maintenance.upgradeFailed":"Agent \u5347\u7EA7\u5931\u8D25\u3002","chat.agent.dream":"Dream","chat.agent.dreamHint":"\u542F\u7528\u81EA\u52A8 Dream \u8BB0\u5FC6\u5904\u7406","chat.agent.restart":"\u91CD\u542F","chat.agent.restartConfirm":`\u786E\u5B9A\u8981\u91CD\u542F Agent "{name}" \u5417\uFF1F
11
11
  \u6240\u6709\u6D3B\u8DC3\u7684\u4F1A\u8BDD\u5C06\u88AB\u4E2D\u65AD\u3002`,"chat.agent.upgrade":"\u5347\u7EA7","chat.agent.upgrading":"\u5347\u7EA7\u4E2D","chat.agent.upgradeConfirm":`\u5347\u7EA7 Agent "{name}" \u5230\u6700\u65B0\u7248\u672C\uFF1F
12
12
  \u5347\u7EA7\u5B8C\u6210\u540E Agent \u4F1A\u81EA\u52A8\u91CD\u542F\u3002`,"chat.agent.upgradeAll":"\u5168\u90E8\u5347\u7EA7","chat.agent.upgradingAll":"\u5168\u90E8\u5347\u7EA7\u4E2D\u2026","chat.agent.upgradeAllConfirm":`\u786E\u5B9A\u5C06 {count} \u4E2A\u7B26\u5408\u6761\u4EF6\u7684 Agent \u5347\u7EA7\u5230\u6700\u65B0\u7248\u672C\u5417\uFF1F
13
13
  \u5347\u7EA7\u5B8C\u6210\u540E\u5B83\u4EEC\u4F1A\u81EA\u52A8\u91CD\u542F\u3002\u53E6\u6709 {skipped} \u4E2A Agent \u56E0\u5F53\u524D\u4E0D\u53EF\u7528\u6216\u4E0D\u652F\u6301\u5B89\u5168\u8FDC\u7A0B\u5347\u7EA7\u800C\u8DF3\u8FC7\u3002`,"chat.agent.upgradeAllSummary":"Agent \u6279\u91CF\u5347\u7EA7\u5B8C\u6210\uFF1A\u5347\u7EA7\u6210\u529F {upgraded} \u4E2A\uFF0C\u5DF2\u662F\u6700\u65B0 {latest} \u4E2A\uFF0C\u5931\u8D25 {failed} \u4E2A\uFF0C\u8DF3\u8FC7 {skipped} \u4E2A\u3002","chat.agent.alreadyLatest":"Agent \u5DF2\u662F\u6700\u65B0\u7248\u672C (v{version})\uFF0C\u65E0\u9700\u5347\u7EA7\u3002","chat.agent.nodeIncompatible":"Agent \u5347\u7EA7\u4E2D\u6B62\uFF1A\u76EE\u6807\u7248\u672C v{version} \u9700\u8981 Node {required}\uFF0C\u4F46\u5F53\u524D\u673A\u5668\u8FD0\u884C\u7684\u662F Node {current}\u3002\u8BF7\u5148\u5347\u7EA7 Node.js \u518D\u91CD\u8BD5\u3002","chat.agent.manualUpgradeRequired":'Agent v{version} \u6CA1\u6709\u58F0\u660E\u5B89\u5168\u8FDC\u7A0B\u5347\u7EA7\u80FD\u529B\uFF1B\u65E7\u5BA2\u6237\u7AEF\u53C8\u672A\u4E0A\u62A5\u8DB3\u591F\u7684\u5E73\u53F0\u4FE1\u606F\uFF0CServer \u65E0\u6CD5\u6392\u9664 Windows \u5305\u76EE\u5F55\u9501\u5B9A\u6545\u969C\u3002\u4E3A\u907F\u514D\u91CD\u590D\u6267\u884C\u5DF2\u77E5\u4F1A\u5931\u8D25\u7684\u5347\u7EA7\uFF0C\u672C\u6B21\u64CD\u4F5C\u5DF2\u88AB\u963B\u6B62\u3002\u8BF7\u5148\u505C\u6B62\u8BE5\u673A\u5668\u4E0A\u6240\u9009\u7684 Agent/\u670D\u52A1\uFF1A\u82E5\u7531 PM2 \u6216\u5176\u4ED6\u670D\u52A1\u7BA1\u7406\u5668\u8FD0\u884C\uFF0C\u8BF7\u5728\u90A3\u91CC\u505C\u6B62\u8FD9\u4E2A\u7CBE\u786E\u5B9E\u4F8B\uFF1B\u82E5\u5728\u524D\u53F0\u7EC8\u7AEF\u8FD0\u884C\uFF0C\u8BF7\u7EC8\u6B62\u8BE5\u8FDB\u7A0B\u3002\u786E\u8BA4\u8BE5\u8FDB\u7A0B\u5DF2\u7ECF\u9000\u51FA\u540E\uFF0C\u518D\u6267\u884C "npm install -g @yeaft/webchat-agent@latest --registry=https://pkg.yeaft.com/"\uFF1B\u6700\u540E\u4F7F\u7528\u539F\u914D\u7F6E\u542F\u52A8\u540C\u4E00 Agent \u5B9E\u4F8B\u3002\u5B8C\u6210\u8FD9\u6B21\u5F15\u5BFC\u540E\uFF0C\u540E\u7EED\u53EF\u7EE7\u7EED\u5728\u6D4F\u89C8\u5668\u4E2D\u5347\u7EA7\u3002',"chat.agent.containerImageUpgradeRequired":'\u5BB9\u5668 Agent v{version} \u7531 Docker \u955C\u50CF\u7BA1\u7406\uFF0C\u4E0D\u80FD\u5728\u5BB9\u5668\u5185\u4F7F\u7528 npm \u81EA\u5347\u7EA7\u3002\u8BF7\u5728 Docker Host \u4E0A\u6267\u884C "docker pull <configured-agent-image>"\uFF0C\u7136\u540E\u901A\u8FC7\u73B0\u6709 Server/Sandbox \u751F\u547D\u5468\u671F\u6216\u539F\u6765\u7684 "yeaft-agent container install" \u547D\u4EE4\u91CD\u5EFA\u540C\u4E00\u4E2A\u5BB9\u5668\u3002\u4FDD\u7559\u73B0\u6709\u7684 /home/yeaft/.yeaft \u548C /workspace \u6301\u4E45\u5377\uFF0C\u5E76\u590D\u7528 Host \u7AEF\u539F\u6709\u7684 0600 agent-secret \u6587\u4EF6\uFF1B\u4E0D\u8981\u5728\u91CD\u5EFA\u65F6\u5220\u9664\u8FD9\u4E9B\u5377\u3002',"chat.agent.online":"{count} \u4E2A Agent \u5728\u7EBF","chat.agent.selectFirst":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A Agent","chat.agent.yeaft":"Yeaft \u5BF9\u8BDD","sidebar.toggle.chat":"\u5207\u6362\u5230 Chat","sidebar.toggle.yeaft":"\u5207\u6362\u5230 Yeaft","sidebar.surface.label":"\u4FA7\u680F\u89C6\u56FE","sidebar.surface.sessions":"\u4F1A\u8BDD","sidebar.provider.label":"\u4F1A\u8BDD Provider","sidebar.provider.claude":"Claude","sidebar.sessions.new":"\u65B0\u5EFA\u4F1A\u8BDD","sidebar.sessions.newChat":"\u65B0\u5EFA\u804A\u5929","sidebar.sessions.emptyProvider":"\u6B64 Provider \u6682\u65E0\u4F1A\u8BDD","sidebar.sessions.menu":"\u4F1A\u8BDD\u83DC\u5355","sidebar.sessions.unread":"\u672A\u8BFB","sidebar.sessions.pinned":"\u5DF2\u7F6E\u9876","sidebar.sessions.processing":"\u6B63\u5728\u56DE\u590D","sidebar.sessions.hidden":"\u5DF2\u9690\u85CF\u7684\u4F1A\u8BDD","sidebar.sessions.remove":"\u4ECE\u4FA7\u680F\u79FB\u9664","sidebar.sessions.agent":"Agent","sidebar.sessions.provider":"Provider","sidebar.projects.title":"\u9879\u76EE","sidebar.projects.menu":"\u9879\u76EE\u83DC\u5355","sidebar.projects.new":"\u65B0\u5EFA\u9879\u76EE","sidebar.projects.newSession":"\u5728{name}\u4E2D\u521B\u5EFA Session","sidebar.projects.assignFailed":"Session \u5DF2\u521B\u5EFA\uFF0C\u4F46\u65E0\u6CD5\u52A0\u5165{name}\u3002\u9519\u8BEF\uFF1A{message}","sidebar.projects.empty":"\u6682\u65E0\u9879\u76EE","sidebar.projects.noSessions":"\u5C06 Yeaft \u804A\u5929\u62D6\u5230\u8FD9\u91CC","sidebar.projects.namePrompt":"\u9879\u76EE\u540D\u79F0","sidebar.projects.renamePrompt":"\u91CD\u547D\u540D\u9879\u76EE","sidebar.projects.rename":"\u91CD\u547D\u540D\u9879\u76EE","sidebar.projects.delete":"\u5220\u9664\u9879\u76EE","sidebar.projects.deleteConfirm":"\u5220\u9664\u9879\u76EE\u201C{name}\u201D\uFF1F\u5176\u4E2D\u804A\u5929\u4F1A\u79FB\u56DE\u6700\u8FD1\u3002","sidebar.projects.remove":"\u79FB\u51FA\u9879\u76EE","sidebar.projects.moveMenu":"\u79FB\u52A8\u5230 Projects","sidebar.projects.moveBack":"\u8FD4\u56DE","sidebar.projects.moveEmpty":"\u6CA1\u6709\u5176\u4ED6 Project","sidebar.projects.moveTo":"\u79FB\u5230 {name}","sidebar.projects.instructions":"Project \u6307\u4EE4","sidebar.projects.instructionsTitle":"{name} \u6307\u4EE4","sidebar.projects.instructionsHint":"\u8FD9\u4E9B\u6307\u4EE4\u4F1A\u52A0\u5165\u6B64 Project \u5185\u6BCF\u4E2A Session \u7684 system prompt\u3002","sidebar.projects.instructionsPlaceholder":"\u8F93\u5165\u5171\u4EAB\u7684\u7F16\u7801\u89C4\u8303\u3001\u7EA6\u675F\u6216\u5DE5\u4F5C\u6D41\u8BF4\u660E\u2026","sidebar.recents.title":"\u6700\u8FD1","sidebar.recents.empty":"\u6682\u65E0\u804A\u5929","yeaft.back":"\u8FD4\u56DE","yeaft.session.people":"\u6210\u5458","yeaft.session.peopleEmpty":"\u6682\u65E0\u6210\u5458","yeaft.session.runningTasks":"\u8FD0\u884C\u4E2D\u7684\u4EFB\u52A1","yeaft.session.tasksEmpty":"\u6682\u65E0\u8FD0\u884C\u4EFB\u52A1","yeaft.session.owner":"\u8D1F\u8D23\u4EBA","yeaft.session.started":"\u5F00\u59CB\u65F6\u95F4","yeaft.breadcrumb.label":"Thread \u8FC7\u6EE4","yeaft.breadcrumb.mainStream":"\u4E3B\u6D41","yeaft.breadcrumb.backHint":"\u8FD4\u56DE\u5168\u6D41 (Esc)","yeaft.featureDetail.ariaLabel":"Task \u8BE6\u60C5","yeaft.featureDetail.replyTo":"\u56DE\u590D\u5230:","yeaft.featureDetail.forkHint":"\u8BE5 task \u6682\u65E0\u6D3B\u8DC3 thread \u2014 \u8BF7 fork \u65B0 thread \u540E\u56DE\u590D\u3002","yeaft.featureDetail.empty":"\u8BE5 task \u6682\u65E0\u6D88\u606F\u3002","yeaft.featureDetail.threadPillHint":"\u6253\u5F00 thread","yeaft.featureDetail.summary.aria":"\u4EFB\u52A1\u6458\u8981\u65F6\u95F4\u7EBF","yeaft.featureDetail.summary.title":"\u6458\u8981\u65F6\u95F4\u7EBF","yeaft.featureDetail.summary.loading":"\u6B63\u5728\u52A0\u8F7D\u6458\u8981\u5386\u53F2\u2026","yeaft.featureDetail.summary.empty":"\u6682\u65E0\u6458\u8981\u3002","yeaft.featureDetail.summary.error":"\u6458\u8981\u52A0\u8F7D\u5931\u8D25\uFF1A{error}","yeaft.featureDetail.summary.showArchived":"\u663E\u793A\u5DF2\u5F52\u6863","yeaft.featureDetail.related.aria":"\u5173\u8054\u4EFB\u52A1","yeaft.featureDetail.related.title":"\u5173\u8054\u4EFB\u52A1","yeaft.featureDetail.related.unlink":"\u53D6\u6D88\u5173\u8054","yeaft.featureDetail.members.aria":"\u4EFB\u52A1\u6210\u5458","yeaft.featureDetail.members.title":"\u6210\u5458","yeaft.featureDetail.members.abort":"\u4E2D\u6B62","yeaft.featureDetail.members.kick":"\u8E22\u51FA","yeaft.model":"\u6A21\u578B","yeaft.placeholder":"\u95EE\u6211\u4EFB\u4F55\u95EE\u9898...","yeaft.inbox":"\u6536\u4EF6\u7BB1","yeaft.inbox.tooltip":"\u4F60\u7684\u9ED8\u8BA4\u5BF9\u8BDD\u7EBF\u7A0B \u2014\u2014 \u4E0E Yeaft \u7684\u4E00\u5BF9\u4E00\u804A\u5929\u3002\u53EF\u4EE5\u4E3A\u5177\u4F53\u8BDD\u9898\u6216\u4EFB\u52A1\u521B\u5EFA\u65B0\u7EBF\u7A0B\u3002","yeaft.sidebar.activeThreads":"\u6D3B\u8DC3","yeaft.sidebar.idleThreads":"\u9759\u9ED8","yeaft.sidebar.archivedThreads":"\u5DF2\u5F52\u6863","yeaft.sidebar.tasks":"\u4EFB\u52A1","yeaft.sidebar.emptyActive":"\u6682\u65E0\u6D3B\u8DC3 thread","yeaft.sidebar.emptyIdle":"\u6682\u65E0\u9759\u9ED8 thread","yeaft.sidebar.emptyArchived":"\u6682\u65E0\u5F52\u6863 thread","yeaft.sidebar.emptyTasks":"\u65E0\u5339\u914D\u4EFB\u52A1","yeaft.sidebar.results":"\u641C\u7D22\u7ED3\u679C","yeaft.sidebar.resultsThreads":"Threads","yeaft.sidebar.kindThread":"thread","yeaft.sidebar.cancel":"\u53D6\u6D88","yeaft.sidebar.mergeInto":"\u5408\u5E76\u5230\u2026","yeaft.sidebar.mergeNoCandidates":"\u6CA1\u6709\u53EF\u5408\u5E76\u7684\u5176\u4ED6\u7EBF\u7A0B","yeaft.sidebar.mergeConfirmTitle":"\u5408\u5E76\u8FD9\u4E2A\u7EBF\u7A0B\uFF1F","yeaft.sidebar.mergeIrreversible":"\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\uFF0C\u6E90\u7EBF\u7A0B\u5C06\u88AB\u5F52\u6863\uFF0C\u5176\u6D88\u606F\u4F1A\u88AB\u79FB\u52A8\u5230\u76EE\u6807\u7EBF\u7A0B\u3002","yeaft.sidebar.mergeConfirm":"\u5408\u5E76","yeaft.settings.sidebarV2":"\u5B9E\u9A8C\u529F\u80FD\uFF1A\u4FA7\u8FB9\u680F V2","yeaft.settings.sidebarV2Hint":"Thread \u5217\u8868 + \u4EFB\u52A1\u6811\uFF08\u9884\u89C8\uFF09\u3002","yeaft.clearConfirm":"\u6E05\u7A7A\u6240\u6709\u6D88\u606F\uFF1F","yeaft.mode":"\u6A21\u5F0F","yeaft.agent":"\u667A\u80FD\u4F53","yeaft.connecting":"\u8FDE\u63A5\u4E2D...","yeaft.ready":"\u5C31\u7EEA","yeaft.tools":"\u4E2A\u5DE5\u5177","yeaft.skills":"\u4E2A\u6280\u80FD","yeaft.mcp":"\u4E2A MCP","yeaft.showSidebar":"\u663E\u793A\u4FA7\u680F","yeaft.hideSidebar":"\u9690\u85CF\u4FA7\u680F","yeaft.debug":"\u8C03\u8BD5","yeaft.debugClose":"\u5173\u95ED\u8C03\u8BD5\u9762\u677F","yeaft.debugTurns":"\u8F6E","yeaft.debugTabToolStats":"\u5DE5\u5177\u7EDF\u8BA1","yeaft.debugTabDream":"Dream","yeaft.debugTabRequestLog":"\u8BF7\u6C42\u65E5\u5FD7","yeaft.debugHistoryLoad":"\u52A0\u8F7D\u8BF7\u6C42\u5386\u53F2","yeaft.debugHistoryLoading":"\u52A0\u8F7D\u4E2D...","yeaft.debugHistoryLoaded":"\u5DF2\u52A0\u8F7D {count} \u6761","yeaft.debugHistoryUnavailable":"\u8C03\u8BD5\u8F68\u8FF9\u8BF7\u6C42\u8D85\u65F6\u3002Agent \u53EF\u80FD\u79BB\u7EBF\uFF0C\u6216\u54CD\u5E94\u5DF2\u88AB\u4E22\u5F03\uFF0C\u8BF7\u91CD\u8BD5\u3002","yeaft.debugHistoryTruncated":"\u8BE5\u8F68\u8FF9\u8FC7\u5927\uFF0C\u65E0\u6CD5\u5728\u4E00\u6B21\u54CD\u5E94\u4E2D\u5B8C\u6574\u4F20\u8F93\u3002\u6B64\u5904\u663E\u793A\u5927\u5B57\u6BB5\u9884\u89C8\uFF0C\u5B8C\u6574\u8F68\u8FF9\u4ECD\u4FDD\u7559\u5728 Agent\u3002","yeaft.debugSearchPlaceholder":"\u6B63\u5219\u641C\u7D22\u8BF7\u6C42\u65E5\u5FD7","yeaft.debugSearchHint":"\u9ED8\u8BA4\u663E\u793A\u5168\u5C40\u6700\u8FD1 10 \u6761\uFF1B\u641C\u7D22\u4F1A\u8DE8 Session \u5339\u914D\u8BF7\u6C42\u6458\u8981\u3002","yeaft.debugTurnAction":"\u67E5\u770B\u8BE5\u8F6E\u5BF9\u8BDD\u7684\u8C03\u8BD5\u8F68\u8FF9","yeaft.debugTurnContext":"\u8C03\u8BD5\u8F68\u8FF9","yeaft.debugPanelEmpty":"\u60AC\u505C\u5728 AI \u56DE\u590D\u4E0A\uFF0C\u70B9\u51FB\u8C03\u8BD5\u56FE\u6807\u5373\u53EF\u67E5\u770B\u8BE5\u8F6E\u5BF9\u8BDD\u7684\u8C03\u8BD5\u8F68\u8FF9\u3002","yeaft.dreamDebug.title":"Dream \u751F\u547D\u5468\u671F","yeaft.dreamDebug.trigger":"\u89E6\u53D1","yeaft.dreamDebug.status":"\u72B6\u6001","yeaft.dreamDebug.started":"\u5F00\u59CB","yeaft.dreamDebug.finished":"\u7ED3\u675F","yeaft.dreamDebug.time":"\u65F6\u95F4","yeaft.dreamDebug.phase":"\u9636\u6BB5","yeaft.dreamDebug.call":"\u8C03\u7528","yeaft.dreamDebug.location":"\u751F\u6210\u4F4D\u7F6E","yeaft.dreamDebug.result":"\u7ED3\u679C","yeaft.dreamDebug.noLatest":"\u8FD9\u4E2A\u4F1A\u8BDD\u8FD8\u6CA1\u6709\u8BB0\u5F55\u5230 Dream \u68C0\u67E5\u3002","yeaft.dreamDebug.noEvents":"\u8FD9\u4E2A\u4F1A\u8BDD\u8FD8\u6CA1\u6709 Dream \u4E8B\u4EF6\u3002","yeaft.dreamDebug.outputTitle":"\u672C session \u5DF2\u52A0\u8F7D\u7684 Dream \u8F93\u51FA","yeaft.dreamDebug.scope":"Scope","yeaft.dreamDebug.lastDream":"\u4E0A\u6B21 Dream","yeaft.dreamDebug.messagesCovered":"\u5DF2\u8986\u76D6\u6D88\u606F\u6570","yeaft.dreamDebug.noOutput":"\u8FD9\u4E2A session \u8FD8\u6CA1\u6709\u5199\u5165 Dream \u8F93\u51FA\u3002","yeaft.dreamDebug.promptLoadTitle":"\u5DF2\u52A0\u8F7D\u8FDB system prompt \u7684 Dream \u8BB0\u5FC6","yeaft.dreamDebug.loadedInto":"\u52A0\u8F7D\u4F4D\u7F6E","yeaft.dreamDebug.vp":"VP","yeaft.dreamDebug.summaryToPrompt":"summary.md -> system prompt","yeaft.dreamDebug.itemList":"Dream \u8FD0\u884C\u548C Scope","yeaft.dreamDebug.searchPlaceholder":"\u6309\u6807\u9898\u3001ID \u6216\u6458\u8981\u641C\u7D22 Dream Session...","yeaft.dreamDebug.noSearchResults":"\u6CA1\u6709\u5339\u914D\u7684 Dream Session\u3002","yeaft.dreamDebug.noSummary":"\u6682\u65E0\u6458\u8981","yeaft.dreamDebug.segments":"\u6BB5","yeaft.dreamDebug.lastError":"\u6700\u8FD1\u9519\u8BEF","yeaft.dreamDebug.overview":"\u6982\u89C8","yeaft.dreamDebug.sessionId":"Session ID","yeaft.dreamDebug.loadedAt":"\u52A0\u8F7D\u65F6\u95F4","yeaft.dreamDebug.layers":"\u5C42\u7EA7","yeaft.dreamDebug.summaryLayer":"Resident summary","yeaft.dreamDebug.noPromptLoad":"\u8FD9\u4E2A scope \u6682\u65E0 prompt-load \u8BB0\u5F55\u3002","yeaft.dreamDebug.segmentTitle":"Segments","yeaft.dreamDebug.sourceMessages":"\u6765\u6E90\u6D88\u606F","yeaft.dreamDebug.createdAt":"\u521B\u5EFA\u65F6\u95F4","yeaft.dreamDebug.updatedAt":"\u66F4\u65B0\u65F6\u95F4","yeaft.dreamDebug.noSegments":"\u8FD9\u4E2A scope \u6682\u65E0 memory segments\u3002","yeaft.dreamDebug.requestResponse":"Request / Response","yeaft.dreamDebug.noRequestResponse":"\u8FD9\u4E2A scope \u8FD8\u6CA1\u6709\u6301\u4E45\u5316\u7684 Dream request/response \u65E5\u5FD7\u3002","yeaft.dreamDebug.empty":"\u6682\u65E0 Dream debug \u6570\u636E\u3002","yeaft.debugGroupFollowMain":"\u8DDF\u968F\u4E3B\u9762\u677F","yeaft.debugGroupAll":"\u5168\u90E8\u4F1A\u8BDD","yeaft.debugAssistantResponse":"Assistant \u56DE\u590D","yeaft.debugViewAssistantResponse":"\u67E5\u770B\u56DE\u590D","yeaft.debugLatestRequestBody":"\u6700\u8FD1\u53EF\u7528\u8BF7\u6C42\u4F53","yeaft.debugLatestSystemPrompt":"\u6700\u8FD1\u53EF\u7528\u7CFB\u7EDF\u63D0\u793A","yeaft.debugRequestBodyUnavailable":"\u6B64 Turn \u6682\u65E0\u53EF\u7528\u8BF7\u6C42\u4F53\u3002","yeaft.debugSystemPromptUnavailable":"\u6B64 Turn \u6682\u65E0\u53EF\u7528\u7CFB\u7EDF\u63D0\u793A\u3002","yeaft.debugInputSystemShort":"\u7CFB\u7EDF","yeaft.debugInputHistoryShort":"\u5386\u53F2","yeaft.debugInputToolsShort":"\u5DE5\u5177\u5B9A\u4E49","yeaft.debugInputCurrentShort":"\u5F53\u524D","yeaft.debugInputTokenBreakdown":"Provider \u8F93\u5165 {total}\uFF1A\u7CFB\u7EDF\u63D0\u793A {system}\u3001\u5386\u53F2\u6D88\u606F {history}\u3001\u5DE5\u5177\u5B9A\u4E49 {tools}\u3001\u5F53\u524D Turn {current}\uFF08\u4F30\u7B97\u62C6\u5206\uFF09","yeaft.debugToolInput":"\u8F93\u5165","yeaft.debugToolResult":"\u7ED3\u679C","yeaft.debugToolRunning":"\u6267\u884C\u4E2D","yeaft.debugToolRunningNoResult":"\u6267\u884C\u4E2D\uFF0C\u6682\u65E0\u7ED3\u679C","yeaft.debugShowDetails":"\u5C55\u5F00","yeaft.debugHideDetails":"\u6536\u8D77","yeaft.debugTurnStartedAt":"\u56DE\u5408\u5F00\u59CB\u65F6\u95F4","yeaft.debugRequestAt":"\u8BF7\u6C42\u65F6\u95F4","yeaft.debugRequestAtDerived":"\u7531\u56DE\u5408\u5F00\u59CB\u65F6\u95F4\u63A8\u7B97\uFF08\u65E7 loop\uFF09","yeaft.turn":"\u7B2C {n} \u8F6E","yeaft.systemPrompt":"\u7CFB\u7EDF\u63D0\u793A","yeaft.messagesLabel":"\u6D88\u606F","yeaft.response":"\u56DE\u590D","yeaft.toolCalls":"\u5DE5\u5177\u8C03\u7528","yeaft.functionCalls":"\u51FD\u6570\u8C03\u7528","yeaft.request":"\u8BF7\u6C42","yeaft.pending":"(\u7B49\u5F85\u4E2D)","yeaft.inputTokens":"\u8F93\u5165","yeaft.outputTokens":"\u8F93\u51FA","yeaft.duration":"\u8017\u65F6","yeaft.noDebugData":"\u6682\u65E0\u8C03\u8BD5\u6570\u636E","yeaft.showDebug":"\u663E\u793A\u8C03\u8BD5\u9762\u677F","yeaft.hideDebug":"\u9690\u85CF\u8C03\u8BD5\u9762\u677F","yeaft.reloadPage":"\u5237\u65B0\u9875\u9762","yeaft.reloadMessages":"\u91CD\u65B0\u52A0\u8F7D\u6D88\u606F","sidebar.sessions.syncing":"\u6B63\u5728\u540C\u6B65\u6700\u65B0\u6D88\u606F","yeaft.historySearch.label":"\u641C\u7D22 Session \u5386\u53F2\u6D88\u606F","yeaft.historySearch.button":"\u641C\u7D22\u6D88\u606F","yeaft.historySearch.placeholder":"\u641C\u7D22\u5F53\u524D Session \u7684\u6D88\u606F","yeaft.historySearch.searching":"\u6B63\u5728\u641C\u7D22\u2026","yeaft.historySearch.minChars":"\u81F3\u5C11\u8F93\u5165 2 \u4E2A\u5B57\u7B26","yeaft.historySearch.empty":"\u6CA1\u6709\u5339\u914D\u7684\u6D88\u606F","yeaft.historySearch.error":"\u641C\u7D22\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5","yeaft.historySearch.unsupported":"\u8BF7\u5347\u7EA7\u5F53\u524D Agent \u540E\u518D\u641C\u7D22 Session \u5386\u53F2\u6D88\u606F","yeaft.historySearch.more":"\u52A0\u8F7D\u66F4\u591A\u7ED3\u679C","yeaft.historySearch.you":"\u4F60","yeaft.historySearch.assistant":"\u52A9\u624B","yeaft.outline.label":"\u5386\u53F2\u6D88\u606F","yeaft.outline.sender":"\u53D1\u9001\u8005","yeaft.outline.allSenders":"\u5168\u90E8\u53D1\u9001\u8005","yeaft.outline.title":"\u5386\u53F2\u6D88\u606F","yeaft.outline.placeholder":"\u641C\u7D22\u5F53\u524D\u5BF9\u8BDD","yeaft.outline.searching":"\u6B63\u5728\u641C\u7D22\u2026","yeaft.outline.loading":"\u6B63\u5728\u52A0\u8F7D\u2026","yeaft.outline.older":"\u52A0\u8F7D\u66F4\u65E9\u6D88\u606F","yeaft.outline.moreMatches":"\u52A0\u8F7D\u66F4\u591A\u5339\u914D\u9879","yeaft.outline.minChars":"\u81F3\u5C11\u8F93\u5165 2 \u4E2A\u5B57\u7B26","yeaft.outline.empty":"\u6682\u65E0\u6D88\u606F","yeaft.outline.noMatches":"\u6CA1\u6709\u5339\u914D\u7684\u6D88\u606F","yeaft.outline.error":"\u5927\u7EB2\u52A0\u8F7D\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5","yeaft.outline.unsupported":"\u8BF7\u5347\u7EA7\u5F53\u524D Agent \u540E\u518D\u4F7F\u7528\u5BF9\u8BDD\u5927\u7EB2","yeaft.outline.you":"\u4F60","yeaft.outline.assistant":"\u52A9\u624B","yeaft.outline.nonText":"\u975E\u6587\u672C\u56DE\u590D","yeaft.switchModel":"\u5207\u6362\u6A21\u578B","yeaft.modelMenu.title":"\u6A21\u578B\u548C LLM \u8BBE\u7F6E","yeaft.modelMenu.label":"\u6A21\u578B","yeaft.modelMenu.effort":"\u63A8\u7406\u5F3A\u5EA6","yeaft.modelMenu.effort.openaiReasoning":"\u63A8\u7406\u5F3A\u5EA6","yeaft.modelMenu.effort.anthropicBudget":"\u601D\u8003\u9884\u7B97","yeaft.modelMenu.effort.anthropicAdaptive":"\u81EA\u9002\u5E94\u601D\u8003\u5F3A\u5EA6","yeaft.modelMenu.effort.minimal":"\u6700\u5C0F","yeaft.modelMenu.effort.low":"\u4F4E","yeaft.modelMenu.effort.medium":"\u4E2D","yeaft.modelMenu.effort.high":"\u9AD8","yeaft.modelMenu.effort.xhigh":"\u8D85\u9AD8","yeaft.modelMenu.effort.max":"\u6700\u9AD8","yeaft.modelMenu.effort.ultra":"\u6781\u81F4","yeaft.modelMenu.noEffort":"\u5F53\u524D\u6A21\u578B\u6CA1\u6709\u53EF\u517C\u5BB9\u6620\u5C04\u7684\u63A8\u7406\u5F3A\u5EA6\u63A7\u5236\u3002","yeaft.modelMenu.configureHint":"Provider\u3001\u5BC6\u94A5\u3001\u6A21\u578B\u5217\u8868","yeaft.settings.title":"\u8BBE\u7F6E","yeaft.settings.tabs.vp":"VP \u5E93","yeaft.settings.tabs.search":"\u641C\u7D22","search.settings.backendTitle":"\u641C\u7D22\u540E\u7AEF","search.settings.backendDesc":"\u9009\u62E9 WebSearch \u5DE5\u5177\u9ED8\u8BA4\u4F7F\u7528\u7684\u540E\u7AEF\u3002\u4E3B\u540E\u7AEF\u5931\u8D25\u65F6,\u5F15\u64CE\u4F1A\u81EA\u52A8\u964D\u7EA7\u5230 HTML \u6293\u53D6\u3002","search.settings.backend.tavily":"Tavily","search.settings.backend.tavilyHint":"\u6258\u7BA1\u641C\u7D22 API\u3002\u514D\u8D39\u989D\u5EA6 1000 \u6B21/\u6708\u3002\u63A8\u8350\u3002","search.settings.backend.playwright":"Playwright \u670D\u52A1","search.settings.backend.playwrightHint":"\u81EA\u5EFA\u7684\u6D4F\u89C8\u5668\u5F0F\u641C\u7D22/\u6293\u53D6\u670D\u52A1,\u9002\u5408 IP \u4FE1\u8A89\u5DEE\u88AB bot \u68C0\u6D4B\u7684\u73AF\u5883\u3002\u5C1A\u672A\u4E0A\u7EBF\u3002","search.settings.comingSoon":"\u5373\u5C06\u63A8\u51FA","search.settings.tavilyKeyTitle":"Tavily API key","search.settings.tavilyKeyDesc":"\u4FDD\u5B58\u5728 agent \u7684 ~/.yeaft/config.json \u4E2D\u3002\u514D\u8D39\u7533\u8BF7:","search.settings.tavilyKeyUnchanged":"\u4FDD\u6301\u4E0D\u53D8","search.settings.clearKey":"\u6E05\u9664","search.settings.usageTitle":"\u672C\u6708\u7528\u91CF","search.settings.usageRefresh":"\u5237\u65B0","search.settings.usageLoading":"\u52A0\u8F7D\u4E2D\u2026","search.settings.usagePlan":"\u8BA1\u5212","search.settings.usageUsed":"\u5DF2\u7528","search.settings.usagePaygo":"\u6309\u91CF\u4ED8\u8D39","search.settings.usageError":"\u52A0\u8F7D\u7528\u91CF\u5931\u8D25","search.settings.save":"\u4FDD\u5B58","search.settings.saving":"\u4FDD\u5B58\u4E2D\u2026","search.settings.saveSuccess":"\u5DF2\u4FDD\u5B58","search.settings.cancel":"\u91CD\u7F6E","yeaft.settings.yeaftTitle":"\u7EBF\u7A0B\u5E76\u53D1\u4E0E\u5F52\u6863","yeaft.settings.yeaftDesc":"\u8C03\u6574\u53EF\u540C\u65F6\u8FD0\u884C\u7684\u7EBF\u7A0B\u6570\u91CF\uFF0C\u4EE5\u53CA\u95F2\u7F6E\u7EBF\u7A0B\u7684\u81EA\u52A8\u5F52\u6863\u65F6\u957F\u3002","yeaft.settings.maxConcurrentLabel":"\u6700\u5927\u5E76\u53D1\u7EBF\u7A0B\u6570","yeaft.settings.maxConcurrentHint":"\u540C\u65F6\u5728\u7EBF\u7684\u7EBF\u7A0B\u603B\u6570\u4E0A\u9650\uFF08\u542B\u59CB\u7EC8\u5B58\u5728\u7684 main \u4E3B\u7EBF\u7A0B\uFF09\u3002\u8D85\u8FC7\u6B64\u4E0A\u9650\u7684\u65B0\u7EBF\u7A0B\u5C06\u88AB\u62D2\u7EDD\uFF0C\u76F4\u81F3\u5DF2\u6709\u7EBF\u7A0B\u88AB\u5F52\u6863\u6216\u7EC8\u6B62\u3002\u8303\u56F4\uFF1A1-50\u3002","yeaft.settings.archiveIdleDaysLabel":"\u95F2\u7F6E\u591A\u4E45\u540E\u81EA\u52A8\u5F52\u6863\u7EBF\u7A0B\uFF08\u5929\uFF09","yeaft.settings.archiveIdleDaysHint":"\u65E0\u6D3B\u52A8\u8D85\u8FC7\u6B64\u5929\u6570\u7684\u7EBF\u7A0B\u5C06\u88AB\u5F52\u6863\u3002\u8303\u56F4\uFF1A1-3650\u3002","yeaft.settings.yeaftSaveBtn":"\u4FDD\u5B58","yeaft.settings.yeaftSaving":"\u4FDD\u5B58\u4E2D...","yeaft.settings.yeaftSaved":"\u5DF2\u4FDD\u5B58","yeaft.settings.yeaftLoading":"\u52A0\u8F7D\u4E2D...","yeaft.settings.yeaftLoadError":"\u52A0\u8F7D Yeaft \u8BBE\u7F6E\u5931\u8D25","yeaft.settings.yeaftSaveError":"\u4FDD\u5B58 Yeaft \u8BBE\u7F6E\u5931\u8D25","yeaft.settings.rangeErrorConcurrent":"\u5FC5\u987B\u5728 1 \u5230 50 \u4E4B\u95F4","yeaft.settings.rangeErrorArchive":"\u5FC5\u987B\u5728 1 \u5230 3650 \u4E4B\u95F4","chat.session.creating":"\u6B63\u5728\u521B\u5EFA\u4F1A\u8BDD...","chat.session.loadingHistory":"\u6B63\u5728\u52A0\u8F7D\u4F1A\u8BDD\u5386\u53F2...","yeaft.historyLoad.error":"\u4F1A\u8BDD\u5386\u53F2\u6682\u65F6\u65E0\u6CD5\u52A0\u8F7D\uFF0C\u6D88\u606F\u4ECD\u5B89\u5168\u4FDD\u5B58\u5728 Agent \u4E2D\u3002","yeaft.historyLoad.retry":"\u91CD\u65B0\u52A0\u8F7D","yeaft.sessionInventory.error":"\u6682\u65F6\u65E0\u6CD5\u52A0\u8F7D Session\uFF0C\u4F1A\u8BDD\u4ECD\u5B89\u5168\u4FDD\u5B58\u5728 Agent \u4E2D\u3002","yeaft.sessionInventory.retry":"\u91CD\u65B0\u52A0\u8F7D Session","chat.session.closed":"\u4F1A\u8BDD\u5DF2\u5173\u95ED","chat.session.agentOffline":"Agent \u5DF2\u79BB\u7EBF\uFF0C\u8BE5\u4F1A\u8BDD\u5C06\u5728 Agent \u91CD\u65B0\u4E0A\u7EBF\u540E\u6062\u590D\u3002","chat.execution.cancelled":"\u6267\u884C\u5DF2\u53D6\u6D88","chat.sidebar.expand":"\u5C55\u5F00\u83DC\u5355","chat.sidebar.collapse":"\u6536\u8D77\u4FA7\u8FB9\u680F","chat.sidebar.workbench":"\u5DE5\u5177\u9762\u677F","chat.sidebar.newConv":"\u4F1A\u8BDD","chat.sidebar.recentChats":"\u6700\u8FD1\u4F1A\u8BDD","chat.sidebar.resumeConv":"\u6062\u590D\u4F1A\u8BDD","chat.sidebar.lightMode":"\u6D45\u8272\u6A21\u5F0F","chat.sidebar.darkMode":"\u6DF1\u8272\u6A21\u5F0F","chat.sidebar.settings":"\u8BBE\u7F6E","chat.sidebar.emptyHint":"\u70B9\u51FB\u4E0A\u65B9\u6309\u94AE\u521B\u5EFA\u65B0\u4F1A\u8BDD","chat.sidebar.closeConv":"\u5173\u95ED\u4F1A\u8BDD","chat.sidebar.renameConv":"\u91CD\u547D\u540D","chat.sidebar.pin":"\u7F6E\u9876","chat.sidebar.unpin":"\u53D6\u6D88\u7F6E\u9876","chat.connection.connecting":"\u8FDE\u63A5\u4E2D...","chat.connection.reconnecting":"\u91CD\u8FDE\u4E2D ({current}/{max})...","chat.connection.updating":"\u670D\u52A1\u6B63\u5728\u66F4\u65B0\uFF0C\u8BF7\u7A0D\u5019...","chat.connection.disconnected":"\u8FDE\u63A5\u65AD\u5F00","chat.connection.reconnect":"\u91CD\u8FDE","chat.connection.reconnectFailed":"\u8FDE\u63A5\u65AD\u5F00\uFF0C\u8BF7\u70B9\u51FB\u91CD\u8FDE\u6309\u94AE\u91CD\u8BD5\u3002","chat.time.justNow":"\u521A\u521A","chat.time.minutesAgo":"{count}\u5206\u949F\u524D","chat.time.daysAgo":"{count}\u5929\u524D","chat.time.today":"\u4ECA\u5929","chat.time.yesterday":"\u6628\u5929","chat.delete.confirm":"\u786E\u5B9A\u8981\u5173\u95ED\u8FD9\u4E2A\u4F1A\u8BDD\u5417\uFF1F\u8FD9\u5C06\u7EC8\u6B62\u5BF9\u5E94\u7684 Claude \u8FDB\u7A0B\u3002","chat.delete.enterWorkDir":"\u8BF7\u8F93\u5165\u5DE5\u4F5C\u76EE\u5F55\u8DEF\u5F84","modal.newConv.workDir":"\u5DE5\u4F5C\u76EE\u5F55","modal.newConv.inputOrSelect":"\u8F93\u5165\u6216\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","modal.newConv.browse":"\u6D4F\u89C8\u76EE\u5F55","modal.newConv.noWorkDirs":"\u6682\u65E0\u5DE5\u4F5C\u76EE\u5F55","modal.newConv.selectAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A\u5728\u7EBF\u7684 Agent","modal.newConv.create":"\u521B\u5EFA\u4F1A\u8BDD","modal.newConv.folderLabel":"\u{1F4C1} \u5DE5\u4F5C\u76EE\u5F55","modal.newConv.provider":"\u63D0\u4F9B\u65B9","modal.newConv.model":"\u6A21\u578B","provider.claudeCode":"Claude Code","provider.copilot":"Copilot","modal.resume.workDir":"\u5DE5\u4F5C\u76EE\u5F55","modal.resume.inputOrSelect":"\u8F93\u5165\u6216\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","modal.resume.browse":"\u6D4F\u89C8\u76EE\u5F55","modal.resume.tabFolders":"\u5DE5\u4F5C\u76EE\u5F55","modal.resume.tabSessions":"\u5386\u53F2\u4F1A\u8BDD","modal.resume.noWorkDirs":"\u6682\u65E0\u5DE5\u4F5C\u76EE\u5F55","modal.resume.selectWorkDir":"\u8BF7\u5148\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","modal.resume.noSessions":"\u8BE5\u76EE\u5F55\u4E0B\u6CA1\u6709\u5386\u53F2\u4F1A\u8BDD","modal.resume.untitled":"\u672A\u547D\u540D\u4F1A\u8BDD","modal.resume.folderLabel":"\u{1F4C1} \u5DE5\u4F5C\u76EE\u5F55","modal.resume.sessionLabel":"\u{1F4AC} \u5386\u53F2\u4F1A\u8BDD","modal.resume.selectAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A\u5728\u7EBF\u7684 Agent","modal.folderPicker.title":"\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","modal.folderPicker.parentDir":"\u4E0A\u7EA7\u76EE\u5F55","welcome.subtitle":"\u9762\u5411 Session\u3001\u5DE5\u5177\u548C VP \u534F\u4F5C\u7684 Web Code Agent","welcome.agentOnline":"{count} \u4E2A Agent \u5728\u7EBF","welcome.noAgents":"\u6682\u65E0\u5728\u7EBF Agent","welcome.noAgentsHint":"\u8BF7\u5148\u542F\u52A8 Agent \u7A0B\u5E8F\u8FDE\u63A5\u5230\u670D\u52A1\u5668","welcome.noAgent":"\u6682\u65E0\u5728\u7EBF Agent","welcome.noAgentHint":"\u8BF7\u5148\u542F\u52A8 Agent \u7A0B\u5E8F\u8FDE\u63A5\u5230\u670D\u52A1\u5668","welcome.setupAgent":"\u8BBE\u7F6E Agent","welcome.setupKicker":"Agent \u63A5\u5165","welcome.setupTitle":"\u8FDE\u63A5\u4F60\u7684\u7B2C\u4E00\u4E2A Yeaft Agent","welcome.setupDesc":"\u590D\u5236\u4E24\u6761\u547D\u4EE4\u5373\u53EF\u8FDE\u63A5\u672C\u673A Agent\u3002\u6A21\u578B\u53EF\u7528 GitHub Copilot \u81EA\u52A8\u914D\u7F6E\u3002","welcome.setupInstallTitle":"\u5B89\u88C5 CLI","welcome.setupCopilotTitle":"\u914D\u7F6E\u6A21\u578B","welcome.setupRunTitle":"\u542F\u52A8 Agent","welcome.setupSecretLoading":"\u6B63\u5728\u51C6\u5907 Agent secret...","welcome.setupSecretError":"\u65E0\u6CD5\u51C6\u5907 Agent secret\uFF0C\u8BF7\u6253\u5F00\u5B89\u5168\u8BBE\u7F6E\u91CD\u8BD5\u3002","welcome.openSecuritySettings":"\u6253\u5F00\u5B89\u5168\u8BBE\u7F6E","welcome.newConv":"\u4F1A\u8BDD","welcome.resumeHistory":"\u6062\u590D\u5386\u53F2","messages.loadingMore":"\u52A0\u8F7D\u66F4\u591A\u6D88\u606F...","messages.loadMore":"\u2191 \u70B9\u51FB\u6216\u5411\u4E0A\u6EDA\u52A8\u52A0\u8F7D\u66F4\u591A","message.loadingMore":"\u52A0\u8F7D\u66F4\u591A\u6D88\u606F...","message.loadMore":"\u2191 \u70B9\u51FB\u6216\u5411\u4E0A\u6EDA\u52A8\u52A0\u8F7D\u66F4\u591A","message.scrollToLatest":"\u2193 \u6700\u65B0","message.showResponses":"\u5C55\u5F00 {count} \u6761\u56DE\u590D","message.hideResponses":"\u6298\u53E0\u56DE\u590D","message.assistant":"\u52A9\u624B","chat.waiting.disconnected":"\u8FDE\u63A5\u5DF2\u65AD\u5F00","chat.connecting":"\u6B63\u5728\u8FDE\u63A5 provider \u4F1A\u8BDD...","chat.waiting.compacting":"\u6B63\u5728\u538B\u7F29\u4E0A\u4E0B\u6587...","chat.waiting.agentOffline":"Agent \u5DF2\u79BB\u7EBF","chat.waiting.sessionLost":"Session \u5DF2\u4E22\u5931\uFF0C\u5DF2\u5237\u65B0\uFF0C\u7B49\u5F85\u6700\u65B0\u4FE1\u606F...","chat.waiting.cliExited":"Claude \u8FDB\u7A0B\u5DF2\u9000\u51FA\uFF0C\u5DF2\u5237\u65B0\uFF0C\u7B49\u5F85\u6700\u65B0\u4FE1\u606F...","chat.waiting.refresh":"\u5237\u65B0","chat.waiting.thinking":"AI \u6B63\u5728\u601D\u8003\u4E2D\uFF0C\u8BF7\u7A0D\u5019...","btw.hint":"esc \u9000\u51FA","btw.placeholder":"\u95EE\u4E2A\u987A\u4FBF\u7684\u95EE\u9898...","btw.close":"\u9000\u51FA BTW \u6A21\u5F0F","message.copyContent":"\u590D\u5236\u5185\u5BB9","message.copy":"\u590D\u5236\u5185\u5BB9","message.copied":"\u5DF2\u590D\u5236","message.copyCode":"\u590D\u5236\u4EE3\u7801","message.copyAll":"\u590D\u5236\u5168\u90E8","message.screenshot":"\u622A\u56FE","message.screenshotting":"\u6B63\u5728\u622A\u56FE...","message.exportMd":"\u5BFC\u51FA MD","message.askInput":"\u9700\u8981\u4F60\u7684\u8F93\u5165","message.askAnswered":"\u2713 \u5DF2\u56DE\u7B54","message.askCustom":"\u6216\u8F93\u5165\u81EA\u5B9A\u4E49\u56DE\u7B54...","message.askCustomPlaceholder":"\u6216\u8F93\u5165\u81EA\u5B9A\u4E49\u56DE\u7B54...","message.askSubmit":"\u63D0\u4EA4\u56DE\u7B54","message.askWaiting":"\u7B49\u5F85\u95EE\u9898\u52A0\u8F7D...","message.askSubmitting":"\u56DE\u7B54\u5DF2\u53D1\u9001\uFF0C\u7B49\u5F85 Agent \u786E\u8BA4\u2026","message.askUnconfirmed":"\u5C1A\u672A\u6536\u5230\u786E\u8BA4\uFF0C\u8BF7\u68C0\u67E5\u8FDE\u63A5\u540E\u91CD\u53D1\u540C\u4E00\u56DE\u7B54\u3002","message.askRetry":"\u91CD\u53D1\u56DE\u7B54","message.askSendFailed":"\u56DE\u7B54\u672A\u53D1\u9001\uFF0C\u8BF7\u68C0\u67E5\u8FDE\u63A5\u540E\u91CD\u8BD5\u3002","message.askAgentUnavailable":"Agent \u6682\u4E0D\u53EF\u7528\uFF0C\u8BF7\u6062\u590D\u8FDE\u63A5\u540E\u91CD\u53D1\u56DE\u7B54\u3002","message.askIdentityMismatch":"\u6B64\u95EE\u9898\u4E0E\u5F53\u524D\u8BF7\u6C42\u4E0D\u4E00\u81F4\uFF0C\u8BF7\u8BA9\u89D2\u8272\u91CD\u65B0\u63D0\u95EE\u3002","message.askExpired":"\u6B64\u95EE\u9898\u5DF2\u5931\u6548\uFF0C\u8BF7\u8BA9\u89D2\u8272\u91CD\u65B0\u63D0\u95EE","message.openInEditor":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00","message.resultDone":"\u5B8C\u6210","message.done":"\u5B8C\u6210","message.resultRead":"\u8BFB\u53D6 {file}","message.readFile":"\u8BFB\u53D6 {name}","message.file":"\u6587\u4EF6","message.attachImages":"{count} \u5F20\u56FE\u7247","message.imageCount":"{count} \u5F20\u56FE\u7247","message.imagePreview":"\u56FE\u7247\u9884\u89C8","message.zoomOut":"\u7F29\u5C0F\u56FE\u7247","message.zoomIn":"\u653E\u5927\u56FE\u7247","message.resetZoom":"\u91CD\u7F6E\u56FE\u7247\u7F29\u653E","message.previousImage":"\u4E0A\u4E00\u5F20\u56FE\u7247","message.nextImage":"\u4E0B\u4E00\u5F20\u56FE\u7247","message.imagePosition":"\u7B2C {current} \u5F20\uFF0C\u5171 {total} \u5F20","message.imageUnavailable":"\u56FE\u7247\u65E0\u6CD5\u52A0\u8F7D","message.attachFiles":"{count} \u4E2A\u6587\u4EF6","message.fileCount":"{count} \u4E2A\u6587\u4EF6","message.quote":"\u5F15\u7528","message.removeQuote":"\u5220\u9664\u5F15\u7528","message.replyingTo":"\u6B63\u5728\u56DE\u590D {author}","message.quotedFrom":"\u5F15\u7528\u81EA {author}","message.editAsNew":"\u7F16\u8F91","message.you":"\u4F60","input.upload":"\u4E0A\u4F20\u6587\u4EF6","input.placeholder":"\u8F93\u5165\u6D88\u606F...","input.send":"\u53D1\u9001","input.stopExecution":"\u505C\u6B62\u6267\u884C","chatInput.upload":"\u4E0A\u4F20\u6587\u4EF6","chatInput.uploading":"\u6B63\u5728\u4E0A\u4F20\u2026","chatInput.uploadFailed":"\u4E0A\u4F20\u5931\u8D25","chatInput.retryUpload":"\u91CD\u8BD5","chatInput.removeAttachment":"\u79FB\u9664\u9644\u4EF6","chatInput.placeholder":"\u8F93\u5165\u6D88\u606F...","chatInput.send":"\u53D1\u9001","chatInput.stop":"\u505C\u6B62\u6267\u884C","tools.thinking":"\u601D\u8003\u4E2D...","tools.read":"\u6B63\u5728\u8BFB\u53D6\u6587\u4EF6","tools.write":"\u6B63\u5728\u5199\u5165\u6587\u4EF6","tools.edit":"\u6B63\u5728\u7F16\u8F91\u6587\u4EF6","tools.bash":"\u6B63\u5728\u6267\u884C\u547D\u4EE4","tools.glob":"\u6B63\u5728\u641C\u7D22\u6587\u4EF6","tools.grep":"\u6B63\u5728\u641C\u7D22\u5185\u5BB9","tools.task":"\u6B63\u5728\u6267\u884C\u4EFB\u52A1","tools.webFetch":"\u6B63\u5728\u83B7\u53D6\u7F51\u9875","tools.webSearch":"\u6B63\u5728\u641C\u7D22\u7F51\u7EDC","tools.todoWrite":"\u6B63\u5728\u66F4\u65B0\u4EFB\u52A1","tools.executing":"\u6B63\u5728\u6267\u884C {name}","status.thinking":"\u601D\u8003\u4E2D...","status.reading":"\u6B63\u5728\u8BFB\u53D6\u6587\u4EF6","status.writing":"\u6B63\u5728\u5199\u5165\u6587\u4EF6","status.editing":"\u6B63\u5728\u7F16\u8F91\u6587\u4EF6","status.executing":"\u6B63\u5728\u6267\u884C\u547D\u4EE4","status.searchingFiles":"\u6B63\u5728\u641C\u7D22\u6587\u4EF6","status.searchingContent":"\u6B63\u5728\u641C\u7D22\u5185\u5BB9","status.executingTask":"\u6B63\u5728\u6267\u884C\u4EFB\u52A1","status.fetching":"\u6B63\u5728\u83B7\u53D6\u7F51\u9875","status.searching":"\u6B63\u5728\u641C\u7D22\u7F51\u7EDC","status.updatingTasks":"\u6B63\u5728\u66F4\u65B0\u4EFB\u52A1","status.executingTool":"\u6B63\u5728\u6267\u884C {name}","header.compacting":"\u6B63\u5728\u538B\u7F29\u4E0A\u4E0B\u6587...","header.compacted":"\u4E0A\u4E0B\u6587\u538B\u7F29\u5B8C\u6210","chatHeader.newConv":"\u4F1A\u8BDD","chatHeader.compacting":"\u6B63\u5728\u538B\u7F29\u4E0A\u4E0B\u6587...","chatHeader.compactDone":"\u4E0A\u4E0B\u6587\u538B\u7F29\u5B8C\u6210","chatHeader.compact":"\u538B\u7F29\u4E0A\u4E0B\u6587","chatHeader.resume":"\u6062\u590D\u4F1A\u8BDD","chatHeader.refresh":"\u5237\u65B0\u6D88\u606F","chatHeader.reloadPage":"\u5237\u65B0\u9875\u9762","chatHeader.clear":"\u6E05\u7A7A\u6D88\u606F","chatHeader.clearing":"\u6B63\u5728\u6E05\u7A7A\u4E0A\u4E0B\u6587...","chatHeader.clearDone":"\u4E0A\u4E0B\u6587\u5DF2\u6E05\u7A7A","chatHeader.confirmClear":"\u786E\u5B9A\u8981\u6E05\u7A7A\u5F53\u524D\u4F1A\u8BDD\u7684\u6240\u6709\u6D88\u606F\u5417\uFF1F","chatHeader.mcpConfig":"MCP \u670D\u52A1\u5668\u914D\u7F6E","chatHeader.mcpNeedRestart":"\u66F4\u6539\u5C06\u5728\u91CD\u542F\u4F1A\u8BDD\u540E\u751F\u6548\u3002","chatHeader.expertPanel":"\u5E2E\u5E2E\u56E2","chatHeader.subAgentPanel":"\u5B50\u4EE3\u7406","settings.close":"\u5173\u95ED\u8BBE\u7F6E","settings.tabs.account":"\u8D26\u53F7","settings.tabs.security":"\u5B89\u5168","settings.tabs.general":"\u901A\u7528","settings.tabs.sandbox":"Sandbox","settings.tabs.invitations":"\u9080\u8BF7","auth.sessionExpired":"\u767B\u5F55\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55\u3002","settings.sandbox.description":"\u5728\u672C Server \u7BA1\u7406\u7684 Docker \u5BB9\u5668\u4E2D\u8FD0\u884C\u4E00\u4E2A\u6301\u4E45\u5316 Yeaft Agent\u3002","settings.sandbox.containerAgent":"Docker \u5316 Yeaft Agent","settings.sandbox.serverManaged":"Server \u53EA\u7BA1\u7406\u6B64\u5BB9\u5668\u7684\u542F\u52A8\u3001\u505C\u6B62\u548C\u5220\u9664\uFF1B\u5BB9\u5668\u5185 Agent \u4ECD\u4F7F\u7528\u666E\u901A Yeaft \u8FDE\u63A5\u3002","settings.sandbox.agentName":"Agent \u540D\u79F0","settings.sandbox.sizeLabel":"\u89C4\u683C","settings.sandbox.enable":"\u542F\u7528 Sandbox","settings.sandbox.creating":"\u6B63\u5728\u8BBE\u7F6E\u2026","settings.sandbox.start":"\u542F\u52A8","settings.sandbox.stop":"\u505C\u6B62","settings.sandbox.retry":"\u91CD\u8BD5","settings.sandbox.remove":"\u79FB\u9664","settings.sandbox.removeConfirm":"\u6C38\u4E45\u79FB\u9664\u6B64 Sandbox\uFF0C\u5E76\u5220\u9664 home \u548C workspace \u6570\u636E\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002","settings.sandbox.size.small":"\u5C0F\u578B","settings.sandbox.size.normal":"\u6807\u51C6","settings.sandbox.state.reserving":"\u6B63\u5728\u8BBE\u7F6E","settings.sandbox.state.provisioning":"\u6B63\u5728\u51C6\u5907 Sandbox","settings.sandbox.state.starting":"\u6B63\u5728\u542F\u52A8","settings.sandbox.state.waiting_for_agent":"\u6B63\u5728\u7B49\u5F85 Agent","settings.sandbox.state.stopping":"\u6B63\u5728\u505C\u6B62","settings.sandbox.state.removing":"\u6B63\u5728\u79FB\u9664","settings.sandbox.state.removed":"\u5DF2\u79FB\u9664","settings.sandbox.state.running":"\u8FD0\u884C\u4E2D","settings.sandbox.state.stopped":"\u5DF2\u505C\u6B62","settings.sandbox.state.failed":"\u5931\u8D25","settings.sandbox.state.remove_failed":"\u79FB\u9664\u5931\u8D25","settings.sandbox.state.recovery_required":"\u9700\u8981\u6062\u590D\u5904\u7406","settings.sandbox.stage.reserving_capacity":"\u6B63\u5728\u9884\u7559\u5BB9\u91CF","settings.sandbox.stage.starting":"\u6B63\u5728\u542F\u52A8 Sandbox","settings.sandbox.stage.stopping":"\u6B63\u5728\u505C\u6B62 Sandbox","settings.sandbox.stage.retrying":"\u6B63\u5728\u91CD\u8BD5\u64CD\u4F5C","settings.sandbox.stage.removing":"\u6B63\u5728\u79FB\u9664 Sandbox","settings.sandbox.stage.complete":"\u5DF2\u5B8C\u6210","settings.sandbox.stage.dispatching":"\u6B63\u5728\u5B89\u5168\u5206\u53D1","settings.sandbox.stage.capacity_rejected":"\u6B63\u5728\u7B49\u5F85\u5BB9\u91CF","settings.sandbox.unavailable.disabled":"\u6B64 Server \u5C1A\u672A\u542F\u7528 Sandbox\u3002\u5347\u7EA7\u672C\u673A Agent \u4E0D\u4F1A\u81EA\u52A8\u542F\u7528\uFF1B\u9700\u8981 Server \u7BA1\u7406\u5458\u5F00\u542F Docker \u7BA1\u7406\u3002","settings.sandbox.unavailable.dockerUnavailable":"Server \u65E0\u6CD5\u4F7F\u7528 Docker\uFF0C\u8BF7\u68C0\u67E5 Sandbox \u7684 Server \u90E8\u7F72\u914D\u7F6E\u3002","settings.sandbox.unavailable.notEntitled":"\u6B64\u8D26\u53F7\u6682\u4E0D\u53EF\u4F7F\u7528 Sandbox\u3002","settings.sandbox.unavailable.capacityUnavailable":"Sandbox \u6682\u65F6\u4E0D\u53EF\u7528\u3002","settings.sandbox.error.SANDBOX_LOAD_FAILED":"\u65E0\u6CD5\u52A0\u8F7D Sandbox \u72B6\u6001\u3002","settings.sandbox.retryLoad":"\u91CD\u8BD5","settings.sandbox.error.SANDBOX_CREATE_FAILED":"\u65E0\u6CD5\u521B\u5EFA Sandbox\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002","settings.sandbox.error.SANDBOX_ACTION_FAILED":"\u65E0\u6CD5\u5B89\u6392 Sandbox \u64CD\u4F5C\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002","settings.sandbox.error.SANDBOX_OPERATION_TIMEOUT":"\u64CD\u4F5C\u5DF2\u8D85\u65F6\uFF0C\u8BF7\u91CD\u8BD5\u6216\u79FB\u9664 Sandbox\u3002","settings.sandbox.error.SANDBOX_RUNTIME_FAILED":"Sandbox \u8FD0\u884C\u65F6\u62A5\u544A\u5931\u8D25\u3002","settings.sandbox.error.SANDBOX_CGROUP_SLICE_UNAVAILABLE":"\u65E0\u6CD5\u5728\u5BBF\u4E3B\u673A\u521D\u59CB\u5316\u5171\u4EAB\u8D44\u6E90 slice\uFF08\u9700\u8981 cgroup v2 \u4E0E root \u6743\u9650\uFF09\u3002\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\uFF0C\u6216\u79FB\u9664 SANDBOX_CGROUP_PARENT \u4EE5\u5173\u95ED\u8D44\u6E90\u4E0A\u9650\u3002","settings.account.username":"\u7528\u6237\u540D","settings.account.role":"\u89D2\u8272","settings.account.email":"\u90AE\u7BB1","settings.account.emailNotSet":"\u672A\u8BBE\u7F6E","settings.account.profileLoadFailed":"\u8D26\u53F7\u8D44\u6599\u52A0\u8F7D\u5931\u8D25","settings.account.logout":"\u9000\u51FA\u767B\u5F55","settings.account.roleAdmin":"\u7BA1\u7406\u5458","settings.account.rolePro":"Pro","settings.account.linkedAccounts":"\u5DF2\u5173\u8054\u8D26\u6237","settings.account.linkedDesc":"\u5173\u8054\u7B2C\u4E09\u65B9\u767B\u5F55\u540E\uFF0C\u4F7F\u7528\u4EFB\u610F\u4E00\u79CD\u65B9\u5F0F\u90FD\u80FD\u767B\u5F55\u6B64\u8D26\u53F7\u3002","settings.account.bind":"\u7ED1\u5B9A","settings.account.unbind":"\u89E3\u7ED1","settings.account.linked":"\u5DF2\u7ED1\u5B9A","settings.account.providerDisabled":"\u672A\u914D\u7F6E","settings.account.cantUnbindLast":"\u4E0D\u80FD\u89E3\u7ED1\u552F\u4E00\u7684\u767B\u5F55\u65B9\u5F0F","settings.account.unbindFailed":"\u89E3\u7ED1\u5931\u8D25\uFF1A{error}","settings.account.bindFailed":"\u7ED1\u5B9A\u5931\u8D25","settings.account.ssoBoundMsg":"\u5DF2\u6210\u529F\u7ED1\u5B9A {provider}\u3002","settings.account.ssoConflictMsg":"\u8BE5 {provider} \u8D26\u53F7\u5DF2\u88AB\u5176\u4ED6\u7528\u6237\u7ED1\u5B9A\u3002","settings.account.providerMicrosoft":"Microsoft","settings.account.providerGithub":"GitHub","settings.account.providerGoogle":"Google","settings.account.providerWechat":"\u5FAE\u4FE1","settings.account.providerAlipay":"\u652F\u4ED8\u5B9D","settings.security.agentKey":"Agent \u5BC6\u94A5","settings.security.agentKeyDesc":"\u7528\u4E8E Agent \u8FDE\u63A5\u8BA4\u8BC1\u7684\u5171\u4EAB\u5BC6\u94A5","settings.security.agentSetupCommands":"Agent \u63A5\u5165\u547D\u4EE4","settings.security.agentCmdInstall":"\u5B89\u88C5 Agent","settings.security.agentCmdService":"\u8FD0\u884C Agent server","settings.security.agentCmdContainer":"\u5728 Docker \u4E2D\u8FD0\u884C Agent","settings.security.agentCmdContainerDesc":"\u4E00\u6761\u547D\u4EE4\u5373\u53EF\u3002\u9996\u6B21\u8FD0\u884C\u4F1A\u81EA\u52A8\u521D\u59CB\u5316\u5171\u4EAB CPU/\u5185\u5B58\u9650\u5236\uFF08\u4F1A\u63D0\u793A\u8F93\u5165\u4E00\u6B21 sudo \u5BC6\u7801\uFF09\uFF1B\u4F20 --no-slice \u53EF\u4E0D\u542F\u7528\u8D44\u6E90\u4FDD\u62A4\u3002\u673A\u5668\u4E0A\u9700\u8981\u5DF2\u5B89\u88C5 Docker\u3002","settings.security.agentCmdNeedsSecret":"\u8BF7\u5148\u751F\u6210 Agent \u5BC6\u94A5\uFF0C\u4EE5\u521B\u5EFA\u5305\u542B server \u5730\u5740\u548C\u5BC6\u94A5\u7684\u547D\u4EE4\u3002","settings.security.agentCmdLlm":"Copilot \u624B\u52A8\u515C\u5E95","settings.security.agentCmdLlmDesc":"\u5148\u8FD0\u884C\u5B89\u88C5\u547D\u4EE4\uFF1B\u5982\u679C\u672C\u673A\u5DF2\u6709 GitHub Copilot token\uFF0CYeaft \u4F1A\u81EA\u52A8\u914D\u7F6E github-copilot/gpt-5.5\u3002Copilot \u547D\u4EE4\u53EA\u4F5C\u4E3A\u515C\u5E95\u4F7F\u7528\u3002","settings.security.none":"\u65E0","settings.security.show":"\u663E\u793A","settings.security.hide":"\u9690\u85CF","settings.security.generateKey":"\u751F\u6210\u5BC6\u94A5","settings.security.resetKey":"\u91CD\u7F6E\u5BC6\u94A5","settings.security.resetting":"\u91CD\u7F6E\u4E2D...","settings.security.resetWarning":"\u91CD\u7F6E\u540E\u6240\u6709 Agent \u9700\u91CD\u65B0\u914D\u7F6E","settings.security.changePassword":"\u4FEE\u6539\u5BC6\u7801","settings.security.currentPassword":"\u5F53\u524D\u5BC6\u7801","settings.security.newPassword":"\u65B0\u5BC6\u7801\uFF08\u81F3\u5C116\u4F4D\uFF09","settings.security.confirmPassword":"\u786E\u8BA4\u65B0\u5BC6\u7801","settings.security.changeBtn":"\u4FEE\u6539\u5BC6\u7801","settings.security.changing":"\u4FEE\u6539\u4E2D...","settings.security.enterCurrentPwd":"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801","settings.security.newPwdMin":"\u65B0\u5BC6\u7801\u81F3\u5C116\u4F4D","settings.security.pwdMismatch":"\u4E24\u6B21\u5BC6\u7801\u4E0D\u4E00\u81F4","settings.security.pwdChanged":"\u5BC6\u7801\u4FEE\u6539\u6210\u529F","settings.security.setPassword":"\u8BBE\u7F6E\u5BC6\u7801","settings.security.setPasswordDesc":"\u4F60\u76EE\u524D\u901A\u8FC7 SSO \u767B\u5F55\uFF0C\u5C1A\u672A\u8BBE\u7F6E\u5BC6\u7801\u3002\u8BBE\u7F6E\u540E\u5373\u53EF\u4F7F\u7528\u7528\u6237\u540D + \u5BC6\u7801\u767B\u5F55\u3002","settings.security.setBtn":"\u8BBE\u7F6E\u5BC6\u7801","settings.security.pwdSet":"\u5BC6\u7801\u8BBE\u7F6E\u6210\u529F","settings.security.deleteAccount":"\u6CE8\u9500\u8D26\u6237","settings.security.deleteAccountDesc":"\u6C38\u4E45\u5220\u9664\u4F60\u7684\u8D26\u6237\u548C\u6240\u6709\u76F8\u5173\u6570\u636E\u3002\u6B64\u64CD\u4F5C\u4E0D\u53EF\u6062\u590D\u3002","settings.security.deleteBtn":"\u6CE8\u9500\u8D26\u6237","settings.security.deleteConfirmBtn":"\u786E\u8BA4\u5220\u9664","settings.security.deleteConfirmPlaceholder":"\u8F93\u5165 DELETE \u4EE5\u786E\u8BA4","settings.security.deleteConfirmRequired":"\u8BF7\u8F93\u5165 DELETE \u4EE5\u786E\u8BA4\u6CE8\u9500\u8D26\u6237","settings.security.deleteFailed":"\u6CE8\u9500\u8D26\u6237\u5931\u8D25","settings.security.deleting":"\u6CE8\u9500\u4E2D...","settings.general.theme":"\u4E3B\u9898","settings.general.lightTheme":"\u6D45\u8272","settings.general.darkTheme":"\u6DF1\u8272","settings.general.language":"\u8BED\u8A00","settings.general.telemetry":"\u6027\u80FD\u9065\u6D4B","settings.general.telemetryDesc":"\u5728\u672C\u5730\u6279\u91CF\u8BB0\u5F55\u8017\u65F6\u8BCA\u65AD\uFF1Btrace \u5185\u5BB9\u4E0D\u4F1A\u53D1\u9001\u5230\u670D\u52A1\u5668\u3002","settings.general.telemetryOn":"\u5F00\u542F","settings.general.telemetryOff":"\u5173\u95ED","settings.general.telemetryRawLimit":"Provider \u539F\u59CB\u8BF7\u6C42/\u54CD\u5E94\u4E0A\u9650\uFF08\u5B57\u8282\uFF09","settings.general.telemetryTraceTextLimit":"Debug Prompt \u4E0E\u6D88\u606F\u4E0A\u9650\uFF08\u5B57\u8282\uFF09","settings.invite.create":"\u521B\u5EFA\u9080\u8BF7\u7801","settings.invite.normalUser":"\u666E\u901A\u7528\u6237","settings.invite.proUser":"Pro \u7528\u6237","settings.invite.createBtn":"\u521B\u5EFA\u9080\u8BF7\u7801","settings.invite.creating":"\u521B\u5EFA\u4E2D...","settings.invite.list":"\u9080\u8BF7\u7801\u5217\u8868","settings.invite.used":"\u5DF2\u4F7F\u7528","settings.invite.expired":"\u5DF2\u8FC7\u671F","settings.invite.available":"\u53EF\u7528","settings.invite.usedBy":"\u4F7F\u7528\u8005: {user}","settings.invite.expiredAt":"\u8FC7\u671F\u4E8E: {time}","settings.invite.expiresAt":"\u6709\u6548\u81F3: {time}","settings.invite.noInvites":"\u6682\u65E0\u9080\u8BF7\u7801","settings.msg.copiedClipboard":"\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F","settings.msg.copyFailed":"\u590D\u5236\u5931\u8D25","settings.msg.keyReset":"\u5BC6\u94A5\u5DF2\u91CD\u7F6E","settings.msg.resetFailed":"\u91CD\u7F6E\u5931\u8D25","settings.msg.changeFailed":"\u4FEE\u6539\u5931\u8D25","settings.msg.inviteCreated":"\u9080\u8BF7\u7801\u5DF2\u521B\u5EFA","settings.msg.createFailed":"\u521B\u5EFA\u5931\u8D25","settings.msg.inviteCopied":"\u9080\u8BF7\u7801\u5DF2\u590D\u5236","settings.msg.inviteDeleted":"\u9080\u8BF7\u7801\u5DF2\u5220\u9664","settings.msg.deleteFailed":"\u5220\u9664\u5931\u8D25","settings.tabs.llm":"LLM","settings.tabs.yeaft":"Yeaft","settings.yeaft.tabs.vp":"VP \u5E93","settings.yeaft.tabs.search":"\u641C\u7D22","settings.yeaft.tabs.mcp":"MCP","settings.mcp.title":"MCP \u670D\u52A1\u5668","settings.mcp.description":"\u901A\u8FC7 Model Context Protocol \u7ED9 Yeaft \u63A5\u5165\u66F4\u591A\u5DE5\u5177\u3002\u914D\u7F6E\u5199\u5165 agent \u4E0A\u7684 ~/.yeaft/config.json\uFF0C\u5DE5\u5177\u4F1A\u4EE5 mcp__<server>__<tool> \u7684\u5F62\u5F0F\u51FA\u73B0\u5728 LLM \u5DE5\u5177\u5217\u8868\u91CC\u3002","settings.mcp.reloadAll":"\u5168\u90E8\u91CD\u8FDE","settings.mcp.reloadOne":"\u91CD\u65B0\u8FDE\u63A5\u6B64\u670D\u52A1\u5668","settings.mcp.loading":"\u5904\u7406\u4E2D\u2026","settings.mcp.connected":"\u5DF2\u8FDE\u63A5","settings.mcp.disconnected":"\u672A\u8FDE\u63A5","settings.mcp.tools":"\u4E2A\u5DE5\u5177","settings.mcp.remove":"\u79FB\u9664","settings.mcp.empty":"\u8FD8\u6CA1\u6709\u914D\u7F6E MCP \u670D\u52A1\u5668\uFF0C\u53EF\u4EE5\u5728\u4E0B\u65B9\u6DFB\u52A0\u4E00\u4E2A\u3002","settings.mcp.addServer":"\u6DFB\u52A0\u670D\u52A1\u5668","settings.mcp.addServerDesc":"\u5927\u90E8\u5206 MCP \u670D\u52A1\u5668\u662F\u672C\u5730\u547D\u4EE4 \u2014 Yeaft \u4F1A\u901A\u8FC7 stdio \u542F\u52A8\u5B83\u5E76\u81EA\u52A8\u53D1\u73B0\u53EF\u7528\u5DE5\u5177\u3002","settings.mcp.serverName":"\u540D\u79F0","settings.mcp.command":"\u547D\u4EE4","settings.mcp.args":"\u53C2\u6570","settings.mcp.argsPlaceholder":"\u4F8B\u5982\uFF1A-y @modelcontextprotocol/server-filesystem /tmp","settings.mcp.env":"\u73AF\u5883\u53D8\u91CF","settings.mcp.envPlaceholder":"\u6BCF\u884C\u4E00\u4E2A KEY=value\uFF0C# \u5F00\u5934\u7684\u884C\u4F1A\u88AB\u5FFD\u7565\u3002","settings.mcp.saving":"\u4FDD\u5B58\u4E2D\u2026","settings.mcp.add":"\u6DFB\u52A0","settings.mcp.cancel":"\u6E05\u7A7A","settings.mcp.connectFailed":"\u5DF2\u4FDD\u5B58\u4F46\u8FDE\u63A5\u5931\u8D25","settings.mcp.addSuccess":"\u670D\u52A1\u5668\u5DF2\u6DFB\u52A0","settings.mcp.removeSuccess":"\u670D\u52A1\u5668\u5DF2\u79FB\u9664","settings.mcp.reloadSuccess":"\u5DF2\u8BF7\u6C42\u91CD\u8FDE","settings.mcp.confirmRemove":'\u79FB\u9664 MCP \u670D\u52A1\u5668 "{name}"\uFF1F\u4E0B\u4E00\u4E2A LLM turn \u8D77\u5B83\u7684\u5DE5\u5177\u5C06\u4E0D\u518D\u53EF\u89C1\u3002',"settings.mcp.errors.nameRequired":"\u8BF7\u586B\u5199\u540D\u79F0","settings.mcp.errors.nameFormat":"\u540D\u79F0\u53EA\u80FD\u5305\u542B\u5C0F\u5199\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u77ED\u6A2A\u7EBF\u548C\u4E0B\u5212\u7EBF","settings.mcp.errors.commandRequired":"\u8BF7\u586B\u5199\u547D\u4EE4","settings.mcp.errors.argsParse":"\u53C2\u6570\u89E3\u6790\u5931\u8D25","settings.mcp.errors.envParse":"\u73AF\u5883\u53D8\u91CF\u89E3\u6790\u5931\u8D25","yeaft.session.title":"\u4F1A\u8BDD","yeaft.session.new":"+ \u65B0\u5EFA\u4F1A\u8BDD","yeaft.session.create.title":"\u65B0\u5EFA\u4F1A\u8BDD","yeaft.session.create.subtitle":"\u9009\u62E9\u8FD0\u884C\u4F4D\u7F6E\u548C\u5904\u7406\u4F1A\u8BDD\u7684 Provider\u3002","yeaft.session.create.close":"\u5173\u95ED","yeaft.session.create.nameLabel":"\u540D\u79F0","yeaft.session.create.namePlaceholder":"\u4F1A\u8BDD\u540D\u79F0\uFF08\u53EF\u9009\uFF09","yeaft.session.create.workDirLabel":"\u5DE5\u4F5C\u76EE\u5F55","yeaft.session.create.agentLabel":"Agent","yeaft.session.create.vpPicker":"\u9009\u62E9 VP","yeaft.session.create.vpNone":"\u672A\u9009\u62E9 VP","yeaft.session.create.vpCount":"\u5DF2\u9009 {n} \u4E2A VP","yeaft.session.create.untitled":"\u672A\u547D\u540D\u4F1A\u8BDD","yeaft.session.create.rosterEmpty":"\u6682\u65E0\u53EF\u7528 VP \u2014 \u8BF7\u5148\u5230\u89D2\u8272\u5E93\u521B\u5EFA\u3002","yeaft.session.create.rosterLoading":"VP \u52A0\u8F7D\u4E2D\u2026","yeaft.session.create.rosterError":"\u65E0\u6CD5\u4ECE\u5F53\u524D Agent \u52A0\u8F7D VP\u3002","yeaft.session.create.rosterRetry":"\u91CD\u8BD5","yeaft.vp.domain.general":"\u901A\u7528\u4E0E\u534F\u4F5C","yeaft.vp.domain.productDesign":"\u4EA7\u54C1\u4E0E\u4F53\u9A8C\u8BBE\u8BA1","yeaft.vp.domain.softwareSystems":"\u8F6F\u4EF6\u4E0E\u7CFB\u7EDF","yeaft.vp.domain.securityReliability":"\u5B89\u5168\u4E0E\u53EF\u9760\u6027","yeaft.vp.domain.scienceAnalysis":"\u79D1\u5B66\u4E0E\u5206\u6790","yeaft.vp.domain.philosophyPsychology":"\u54F2\u5B66\u4E0E\u5FC3\u7406","yeaft.vp.domain.strategyHistory":"\u6218\u7565\u4E0E\u5386\u53F2","yeaft.vp.domain.businessManagement":"\u5546\u4E1A\u4E0E\u7BA1\u7406","yeaft.vp.domain.artsCulture":"\u827A\u672F\u4E0E\u6587\u5316","yeaft.vp.domain.other":"\u5176\u4ED6\u9886\u57DF","yeaft.vp.domain.custom":"\u81EA\u5B9A\u4E49 VP","yeaft.session.create.defaultVpHint":"\u5F53\u6CA1\u6709 @ \u63D0\u53CA\u65F6\u9ED8\u8BA4\u56DE\u7B54\u7684 VP\u3002","yeaft.session.create.folderLabel":"\u{1F4C1} \u5DE5\u4F5C\u76EE\u5F55","yeaft.session.create.sessionLabel":"\u{1F4AC} \u6B64\u76EE\u5F55\u4E0B\u7684 session","yeaft.session.create.noWorkDirs":"\u8FD8\u6CA1\u6709\u4EFB\u4F55\u4F1A\u8BDD \u2014 \u5728\u4E0A\u65B9\u9009\u62E9\u6216\u8F93\u5165\u5DE5\u4F5C\u76EE\u5F55\u5F00\u59CB\u3002","yeaft.session.create.back":"\u8FD4\u56DE","yeaft.session.create.creating":"\u521B\u5EFA\u4E2D\u2026","yeaft.session.create.submit":"\u521B\u5EFA","yeaft.plugins.title":"\u63D2\u4EF6","yeaft.plugins.subtitle":"\u9009\u62E9\u6B64 Agent \u5411\u4F1A\u8BDD\u63D0\u4F9B\u54EA\u4E9B\u5DE5\u5177\u3001\u6280\u80FD\u548C MCP \u670D\u52A1\u5668\u3002","yeaft.plugins.agentLabel":"Agent","yeaft.plugins.overviewLabel":"\u63D2\u4EF6\u53EF\u7528\u6027\u6982\u89C8","yeaft.plugins.noAgent":"\u672A\u9009\u62E9 Agent","yeaft.plugins.allAvailable":"\u5DF2\u542F\u7528\u5168\u90E8\u53EF\u7528\u80FD\u529B\u3002","yeaft.plugins.selectedSummary":"\u5DF2\u542F\u7528 {count} \u9879\u80FD\u529B\u3002","yeaft.plugins.enabledLabel":"\u5DF2\u542F\u7528","yeaft.plugins.useAll":"\u4F7F\u7528\u5168\u90E8\u53EF\u7528\u9879","yeaft.plugins.loading":"\u6B63\u5728\u52A0\u8F7D\u63D2\u4EF6\u2026","yeaft.plugins.empty":"\u6B64 Agent \u6CA1\u6709\u53EF\u914D\u7F6E\u7684\u63D2\u4EF6\u3002","yeaft.plugins.loadError":"\u52A0\u8F7D\u63D2\u4EF6\u5931\u8D25\uFF1A{error}","yeaft.plugins.upgradeRequired":"\u6B64 Agent \u4E0D\u652F\u6301\u63D2\u4EF6\u3002\u8BF7\u5347\u7EA7\u5E76\u91CD\u542F\u8BE5 Agent\u3002","yeaft.plugins.retry":"\u91CD\u8BD5","yeaft.plugins.searchPlaceholder":"\u641C\u7D22\u5DE5\u5177\u3001\u6280\u80FD\u548C MCP \u670D\u52A1\u5668","yeaft.plugins.resultCount":"{count} \u4E2A\u7ED3\u679C","yeaft.plugins.categoryLabel":"\u63D2\u4EF6\u5206\u7C7B","yeaft.plugins.all":"\u5168\u90E8","yeaft.plugins.noMatchesTitle":"\u6CA1\u6709\u5339\u914D\u7684\u63D2\u4EF6","yeaft.plugins.noMatchesBody":"\u8BF7\u5C1D\u8BD5\u5176\u4ED6\u641C\u7D22\u8BCD\u6216\u5206\u7C7B\u3002","yeaft.plugins.toolDescription":"Agent \u5185\u7F6E\u80FD\u529B","yeaft.plugins.skillDescription":"\u53EF\u590D\u7528\u7684 Agent \u5DE5\u4F5C\u6D41","yeaft.plugins.mcpDescription":"\u53EF\u63D0\u4F9B {count} \u4E2A\u5DE5\u5177","yeaft.plugins.unsavedChanges":"\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539","yeaft.plugins.tools":"\u5DE5\u5177","yeaft.plugins.skills":"\u6280\u80FD","yeaft.plugins.mcpServers":"MCP \u670D\u52A1\u5668","yeaft.plugins.toolsCount":"\u4E2A\u5DE5\u5177","yeaft.plugins.manageSkills":"\u7BA1\u7406\u6280\u80FD","yeaft.plugins.manageSkillsDescription":"\u4E3A\u6B64 Agent \u6216\u5F53\u524D\u9879\u76EE\u521B\u5EFA\u53EF\u590D\u7528\u6280\u80FD\u3002\u9879\u76EE\u7EA7\u6280\u80FD\u4F1A\u8986\u76D6\u540C\u540D\u7528\u6237\u7EA7\u6280\u80FD\u3002","yeaft.plugins.createSkill":"\u521B\u5EFA\u6280\u80FD","yeaft.plugins.removeSkill":"\u79FB\u9664","yeaft.plugins.confirmRemoveSkill":"\u79FB\u9664\u6280\u80FD\u201C{name}\u201D\uFF1F\u8FD9\u53EA\u4F1A\u5220\u9664\u8BE5\u5C42\u7EA7\u4E2D\u7684\u539F\u751F\u6280\u80FD\u3002","yeaft.plugins.skillManagementUpgradeRequired":"\u6B64 Agent \u5FC5\u987B\u5347\u7EA7\u540E\u624D\u80FD\u521B\u5EFA\u6216\u79FB\u9664\u6280\u80FD\u3002","yeaft.plugins.skillManagementVersionUnknown":"\u6B64 Agent \u5C1A\u672A\u4E0A\u62A5\u6280\u80FD\u7BA1\u7406\u652F\u6301\u3002\u8BF7\u5347\u7EA7\u5E76\u91CD\u542F\u540E\u518D\u521B\u5EFA\u6216\u79FB\u9664\u6280\u80FD\u3002","yeaft.plugins.skillScope":"\u5C42\u7EA7","yeaft.plugins.userScope":"\u7528\u6237\u7EA7","yeaft.plugins.projectScope":"\u9879\u76EE\u7EA7","yeaft.plugins.userScopeDescription":"\u5BF9\u8BE5 Agent \u8FD0\u884C\u7684\u6240\u6709\u9879\u76EE\u53EF\u7528\u3002","yeaft.plugins.projectScopeDescription":"\u53EA\u5BF9\u5F53\u524D\u9879\u76EE\u53EF\u7528\uFF0C\u5E76\u8986\u76D6\u540C\u540D\u7528\u6237\u7EA7\u6280\u80FD\u3002","yeaft.plugins.projectScopeUnavailable":"\u8BF7\u9009\u62E9\u5E26\u9879\u76EE\u76EE\u5F55\u7684 Session\uFF0C\u624D\u80FD\u7BA1\u7406\u9879\u76EE\u7EA7\u6280\u80FD\u3002","yeaft.plugins.skillName":"\u540D\u79F0","yeaft.plugins.skillDescriptionLabel":"\u8BF4\u660E","yeaft.plugins.skillTrigger":"\u89E6\u53D1\u8BCD\uFF08\u53EF\u9009\uFF09","yeaft.plugins.skillInstructions":"\u6307\u4EE4","yeaft.plugins.resetSkillForm":"\u91CD\u7F6E","yeaft.plugins.skillTier.bundled":"\u5185\u7F6E \xB7 \u53EA\u8BFB","yeaft.plugins.skillTier.user":"\u7528\u6237\u7EA7","yeaft.plugins.skillTier.project":"\u9879\u76EE\u7EA7","yeaft.plugins.skillTier.project-claude":"Claude \u9879\u76EE \xB7 \u53EA\u8BFB","yeaft.plugins.skillTier.project-codex":"Codex \u9879\u76EE \xB7 \u53EA\u8BFB","yeaft.onboarding.ariaLabel":"Yeaft \u4E0A\u624B\u8BF4\u660E","yeaft.onboarding.topbarTitle":"\u5F00\u59CB\u4F7F\u7528 Yeaft","yeaft.onboarding.eyebrow":"Yeaft \u4E0A\u624B\u6307\u5357","yeaft.onboarding.title":"\u5148\u8FDE\u63A5 Agent\uFF0C\u518D\u5F00\u59CB\u4F1A\u8BDD","yeaft.onboarding.subtitle":"\u5728\u8D1F\u8D23\u6267\u884C\u5DE5\u5177\u7684\u673A\u5668\u4E0A\u76F4\u63A5\u8FD0\u884C\u4E0B\u9762\u7684\u547D\u4EE4\u3002agent secret \u5982\u679C\u4E0D\u5B58\u5728\uFF0C\u4F1A\u81EA\u52A8\u4E3A\u5F53\u524D\u8D26\u53F7\u751F\u6210\u3002","yeaft.onboarding.createSession":"\u521B\u5EFA\u6216\u6062\u590D Session","yeaft.onboarding.configureLlm":"\u6253\u5F00 LLM \u8BBE\u7F6E","yeaft.onboarding.secretLoading":"\u6B63\u5728\u751F\u6210 agent secret\u2026","yeaft.onboarding.secretError":"\u52A0\u8F7D agent secret \u5931\u8D25\u3002","yeaft.onboarding.secretPending":"<\u6B63\u5728\u52A0\u8F7D-agent-secret>","yeaft.onboarding.installTitle":"\u5B89\u88C5 yeaft-agent","yeaft.onboarding.installDesc":"\u5B89\u88C5\u547D\u4EE4\u884C Agent \u5305\u3002","yeaft.onboarding.connectTitle":"\u8FDE\u63A5\u8FD9\u4E2A Agent","yeaft.onboarding.connectDesc":"\u4E0B\u9762\u7684\u547D\u4EE4\u5DF2\u7ECF\u5E26\u4E0A\u5F53\u524D server URL \u548C\u81EA\u52A8\u751F\u6210\u7684 secret\u3002","yeaft.onboarding.llmTitle":"\u4F7F\u7528 GitHub Copilot","yeaft.onboarding.llmDesc":"\u5148\u767B\u5F55 GitHub CLI\uFF0C\u7136\u540E\u628A gpt-5.5 \u8BBE\u4E3A Yeaft \u9ED8\u8BA4\u6A21\u578B\u3002","yeaft.restore.modal.empty":"\u6B64\u76EE\u5F55\u4E0B\u6CA1\u6709 yeaft session","yeaft.restore.modal.scanError":"\u626B\u63CF\u5931\u8D25: {message}","yeaft.restore.modal.restoreError":"\u6062\u590D\u5931\u8D25: {message}","settings.llm.noAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A Agent \u4EE5\u7BA1\u7406 LLM \u914D\u7F6E\u3002","settings.llm.agentOffline":"Agent \u5F53\u524D\u79BB\u7EBF\uFF0C\u65E0\u6CD5\u52A0\u8F7D LLM \u914D\u7F6E\u3002\u8BF7\u7B49\u5F85 Agent \u4E0A\u7EBF\u540E\u91CD\u8BD5\u3002","settings.llm.loading":"\u6B63\u5728\u52A0\u8F7D\u914D\u7F6E...","settings.llm.loadError":"\u52A0\u8F7D\u914D\u7F6E\u5931\u8D25","settings.llm.configureAgent":"\u914D\u7F6E\u5F53\u524D Agent \u7684 LLM","settings.llm.configureMenu":"\u8BBE\u7F6E LLM","settings.llm.simpleCopilotTitle":"\u63A8\u8350\uFF1AGitHub Copilot","settings.llm.useGitHubCopilot":"\u4F7F\u7528 GitHub Copilot","settings.llm.refreshingModels":"\u6B63\u5728\u5237\u65B0\u6A21\u578B...","settings.llm.managedCopilotTitle":"\u6258\u7BA1\u7684 GitHub Copilot","settings.llm.managedCopilotDesc":"Base URL\u3001\u8BA4\u8BC1\u3001\u6A21\u578B\u76EE\u5F55\u548C\u6BCF\u4E2A\u6A21\u578B\u7684 API \u534F\u8BAE\u90FD\u81EA\u52A8\u7BA1\u7406\u3002Claude \u6A21\u578B\u8D70 Anthropic Messages\uFF1BGPT/o \u6A21\u578B\u8D70 OpenAI Responses\u3002","settings.llm.providersTitle":"\u670D\u52A1\u5546","settings.llm.testFailed":"\u8FDE\u63A5\u6D4B\u8BD5\u5931\u8D25","settings.llm.saveSuccess":"LLM \u8BBE\u7F6E\u5DF2\u4FDD\u5B58","settings.llm.saveFailed":"\u4FDD\u5B58 LLM \u8BBE\u7F6E\u5931\u8D25","settings.llm.presets.title":"\u5FEB\u901F\u914D\u7F6E","settings.llm.providersDesc":"\u9009\u62E9\u4E00\u4E2A\u670D\u52A1\u5546\uFF0C\u4FDD\u5B58\u540E\u5373\u53EF\u5728 Session \u4E2D\u4F7F\u7528\u3002","settings.llm.agentProviders":"\u5F53\u524D agent providers","settings.llm.agentBadge":"\u5F53\u524D agent","settings.llm.addProvider":"\u6DFB\u52A0\u670D\u52A1\u5546","settings.llm.addFromPreset":"\u4ECE\u76EE\u5F55\u6DFB\u52A0","settings.llm.preset.title":"\u670D\u52A1\u5546\u76EE\u5F55\uFF08models.dev\uFF09","settings.llm.preset.refresh":"\u5237\u65B0\u76EE\u5F55","settings.llm.preset.loading":"\u52A0\u8F7D\u76EE\u5F55\u2026","settings.llm.preset.empty":"\u76EE\u5F55\u4E3A\u7A7A\u3002","settings.llm.preset.pickProvider":"\u5728\u5DE6\u4FA7\u9009\u62E9\u4E00\u4E2A\u670D\u52A1\u5546\u4EE5\u67E5\u770B\u6A21\u578B\u3002","settings.llm.preset.filterProviders":"\u8FC7\u6EE4\u670D\u52A1\u5546\u2026","settings.llm.preset.filterModels":"\u8FC7\u6EE4\u6A21\u578B\u2026","settings.llm.preset.selectAll":"\u5168\u9009","settings.llm.preset.selectNone":"\u6E05\u7A7A","settings.llm.preset.cancel":"\u53D6\u6D88","settings.llm.preset.add":"\u6DFB\u52A0\u5230\u670D\u52A1\u5546\u5217\u8868","settings.llm.preset.fetchedAt":"\u76EE\u5F55\u5DF2\u66F4\u65B0 {minutes} \u5206\u949F","settings.llm.addModel":"\u6DFB\u52A0\u6A21\u578B","settings.llm.removeModel":"\u79FB\u9664\u6A21\u578B","settings.llm.providerName":"\u540D\u79F0","settings.llm.providerNamePlaceholder":"\u4F8B\u5982 my-proxy","settings.llm.baseUrl":"Base URL","settings.llm.baseUrlPlaceholder":"\u4F8B\u5982 http://localhost:6628/v1","settings.llm.apiKey":"API Key","settings.llm.apiKeyPlaceholder":"\u8F93\u5165 API Key","settings.llm.protocol":"\u534F\u8BAE","settings.llm.protocolOpenAI":"OpenAI \u517C\u5BB9","settings.llm.protocolOpenAIResponses":"OpenAI Responses (GPT-5)","settings.llm.protocolAnthropic":"Anthropic \u539F\u751F","settings.llm.protocolHint.anthropic":"Claude \u539F\u751F Messages API\u3002","settings.llm.protocolHint.openai":"Chat Completions /v1/chat/completions \u2014 GPT-4 \u53CA\u5927\u591A\u6570\u517C\u5BB9\u4EE3\u7406\u3002","settings.llm.protocolHint.openaiResponses":"Responses API /v1/responses \u2014 GPT-5 \u7CFB\u5217\u5FC5\u987B\u3002","settings.llm.modelCtxPlaceholder":"\u4E0A\u4E0B\u6587","settings.llm.modelMaxPlaceholder":"\u8F93\u51FA","settings.llm.models":"\u5019\u9009\u6A21\u578B ID","settings.llm.modelsPlaceholder":"\u6A21\u578B ID\uFF0C\u9017\u53F7\u6216\u6362\u884C\u5206\u9694\uFF0C\u4F8B\u5982 claude-sonnet-4-20250514, gpt-5","settings.llm.modelsHint":"\u9017\u53F7\u6216\u6362\u884C\u5206\u9694\u3002","settings.llm.removeProvider":"\u79FB\u9664","settings.llm.modelSelectionTitle":"\u6A21\u578B\u9009\u62E9","settings.llm.modelSelectionDesc":"\u9009\u62E9\u9ED8\u8BA4\u6A21\u578B\u3002","settings.llm.primaryModel":"\u4E3B\u6A21\u578B","settings.llm.primaryModelDesc":"\u7528\u4E8E\u7528\u6237\u5BF9\u8BDD","settings.llm.fastModel":"\u5FEB\u901F\u6A21\u578B","settings.llm.fastModelDesc":"\u7528\u4E8E\u5185\u90E8\u4EFB\u52A1\uFF08\u8BB0\u5FC6\u3001\u603B\u7ED3\uFF09","settings.llm.noModels":"\u6682\u65E0\u53EF\u7528\u6A21\u578B\u3002\u8BF7\u5148\u6DFB\u52A0\u670D\u52A1\u5546\u3002","settings.llm.selectModel":"\u9009\u62E9\u6A21\u578B...","settings.llm.debugTitle":"\u8C03\u8BD5\u8F68\u8FF9","settings.llm.debugDesc":"\u6309 Agent \u5F00\u542F\u9010\u8F6E\u8C03\u8BD5\u8F68\u8FF9\u6536\u96C6\uFF08\u7CFB\u7EDF\u63D0\u793A\u8BCD\u3001LLM \u8C03\u7528\u3001\u5DE5\u5177\u8F7D\u8377\uFF09\u3002","settings.llm.enableDebug":"\u542F\u7528\u8C03\u8BD5\u8F68\u8FF9","settings.llm.save":"\u4FDD\u5B58\u66F4\u6539","settings.llm.saving":"\u4FDD\u5B58\u4E2D...","settings.llm.saved":"\u914D\u7F6E\u5DF2\u4FDD\u5B58","settings.llm.savedRefreshWarning":"\u914D\u7F6E\u5DF2\u4FDD\u5B58\uFF0C\u4F46\u5B9E\u65F6\u6A21\u578B\u76EE\u5F55\u5237\u65B0\u5931\u8D25\uFF1A{error}","settings.llm.unsavedChanges":"\u6709\u672A\u4FDD\u5B58\u7684\u66F4\u6539","settings.llm.confirmRemoveProvider":"\u786E\u5B9A\u79FB\u9664\u6B64\u670D\u52A1\u5546\uFF1F","settings.llm.setupTitle":"\u8FDE\u63A5\u6A21\u578B","settings.llm.setupDesc":"\u63A8\u8350\u4F7F\u7528 GitHub Copilot\uFF1B\u4E5F\u53EF\u4EE5\u6DFB\u52A0\u81EA\u5DF1\u7684 API \u670D\u52A1\u5546\u3002","settings.llm.providerSectionHint":"\u53EA\u4FDD\u7559\u8FDE\u63A5\u6A21\u578B\u5FC5\u9700\u7684\u4FE1\u606F\u3002","settings.tabs.dashboard":"\u4EEA\u8868\u677F","settings.dashboard.totalUsers":"\u603B\u7528\u6237\u6570","settings.dashboard.onlineUsers":"\u5728\u7EBF\u7528\u6237","settings.dashboard.activeUsers":"\u6D3B\u8DC3\u7528\u6237","settings.dashboard.onlineAgents":"\u5728\u7EBFAgent","settings.dashboard.totalSessions":"\u603B\u4F1A\u8BDD\u6570","settings.dashboard.todayActive":"\u4ECA\u65E5\u6D3B\u8DC3","settings.dashboard.todayMessages":"\u4ECA\u65E5\u6D88\u606F","settings.dashboard.todayUserTurns":"\u4ECA\u65E5\u7528\u6237 Turn","settings.dashboard.totalTokens":"\u603B Token","settings.dashboard.tokenAccuracy":"\u6765\u81EA\u6A21\u578B\u670D\u52A1\u5546\u8FD4\u56DE\u7684\u5B9E\u9645\u7528\u91CF\uFF1B\u4ECE\u542F\u7528\u6309\u7528\u6237 Token \u7EDF\u8BA1\u7684\u7248\u672C\u5F00\u59CB\u7D2F\u8BA1\uFF0C\u4E14\u4E0D\u5305\u542B\u5FC3\u8DF3\u3002","settings.dashboard.agentTurns":"Agent Turn","settings.dashboard.agentSessions":"Agent Session","settings.dashboard.turns":"Turn","settings.dashboard.tokens":"Token","settings.dashboard.inputTokens":"\u8F93\u5165","settings.dashboard.outputTokens":"\u8F93\u51FA","settings.dashboard.cacheTokens":"\u7F13\u5B58","settings.dashboard.today":"\u4ECA\u5929","settings.dashboard.thisWeek":"\u672C\u5468","settings.dashboard.thisMonth":"\u672C\u6708","settings.dashboard.all":"\u5168\u90E8","settings.dashboard.general":"\u5E38\u89C4","settings.dashboard.detailed":"\u8BE6\u7EC6\u4FE1\u606F","settings.dashboard.users":"\u7528\u6237","settings.dashboard.agents":"Agent","settings.dashboard.time":"\u65F6\u95F4","settings.dashboard.active":"\u6D3B\u8DC3","settings.dashboard.inactive":"\u672A\u6D3B\u8DC3","settings.dashboard.activeOnly":"\u4EC5\u6D3B\u8DC3","settings.dashboard.inactiveOnly":"\u4EC5\u672A\u6D3B\u8DC3","settings.dashboard.userUsage":"\u7528\u6237\u7528\u91CF","settings.dashboard.refresh":"\u5237\u65B0","settings.dashboard.name":"\u540D\u79F0","settings.dashboard.messages":"\u6D88\u606F\u6570","settings.dashboard.userTurns":"\u7528\u6237 Turn \u6570","settings.dashboard.sessions":"\u4F1A\u8BDD\u6570","settings.dashboard.requests":"\u8BF7\u6C42\u6570","settings.dashboard.traffic":"\u6D41\u91CF","settings.dashboard.lastTurnCompleted":"\u6700\u540E Turn \u7ED3\u675F\u65F6\u95F4","settings.dashboard.status":"\u72B6\u6001","settings.dashboard.latency":"\u5EF6\u8FDF","settings.dashboard.version":"\u7248\u672C","settings.dashboard.owner":"\u6240\u6709\u8005","settings.dashboard.role":"\u89D2\u8272","settings.dashboard.agent":"Agent","settings.dashboard.online":"\u5728\u7EBF","settings.dashboard.offline":"\u79BB\u7EBF","settings.dashboard.noAgents":"\u6682\u65E0\u6CE8\u518C Agent","settings.dashboard.noUserData":"\u6682\u65E0\u7528\u6237\u6570\u636E","settings.dashboard.noOnlineUsers":"\u6682\u65E0\u5728\u7EBF\u7528\u6237","settings.dashboard.loading":"\u52A0\u8F7D\u4E2D...","settings.dashboard.error":"\u6570\u636E\u52A0\u8F7D\u5931\u8D25","settings.dashboard.ago":"{time}\u524D","settings.dashboard.loadMore":"\u52A0\u8F7D\u66F4\u591A\uFF08\u5269\u4F59 {remaining} \u6761\uFF09","workbench.title":"Workbench","workbench.openItems":"\u5DF2\u6253\u5F00\u7684 Workbench \u9879\u76EE","workbench.addItem":"\u6DFB\u52A0 Workbench \u9879\u76EE","workbench.addItemHint":"\u4F7F\u7528 + \u6253\u5F00\u6587\u4EF6\u3001\u7EC8\u7AEF\u3001Git \u6216\u6D4F\u89C8\u5668\u3002","workbench.closeItem":"\u5173\u95ED {name}","workbench.chooseCapability":"\u9009\u62E9\u80FD\u529B","workbench.chooseCapabilityHint":"\u9009\u62E9\u4E00\u4E2A\u5DE5\u5177\u5F00\u59CB\u4F7F\u7528\uFF1B\u5DF2\u6253\u5F00\u7684\u5DE5\u5177\u4F1A\u4FDD\u7559\u5728\u6807\u7B7E\u9875\u4E2D\u3002","workbench.terminal":"\u7EC8\u7AEF","workbench.terminalDescription":"\u5728\u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55\u8FD0\u884C\u547D\u4EE4\u5E76\u7BA1\u7406\u7EC8\u7AEF\u5206\u5C4F\u3002","workbench.git":"Git","workbench.gitDescription":"\u67E5\u770B\u4ED3\u5E93\u72B6\u6001\u3001\u4EE3\u7801\u5DEE\u5F02\u548C\u53D8\u66F4\u6587\u4EF6\u3002","workbench.files":"\u6587\u4EF6","workbench.filesDescription":"\u6D4F\u89C8\u3001\u9884\u89C8\u548C\u7F16\u8F91\u6240\u9009 Agent \u4E0A\u7684\u6587\u4EF6\u3002","workbench.browser":"\u6D4F\u89C8\u5668","workbench.browserDescription":"\u901A\u8FC7\u5B9E\u65F6 WebRTC \u753B\u9762\u67E5\u770B Agent \u672C\u5730\u6D4F\u89C8\u5668\u3002","workbench.available":"\u53EF\u7528","workbench.enableRequired":"\u9700\u8981\u542F\u7528","workbench.unavailable":"\u5F53\u524D Agent \u4E0D\u53EF\u7528","workbench.capabilityUnavailable":"\u6240\u9009 Agent \u672A\u63D0\u4F9B\u6B64\u80FD\u529B\u3002","workbench.browserUnavailable":"\u6D4F\u89C8\u5668\u5DF2\u88AB\u7BA1\u7406\u5458\u5173\u95ED\uFF0C\u6216\u5F53\u524D Agent \u4E0D\u652F\u6301\u3002\u8BF7\u5347\u7EA7 Agent\uFF0C\u6216\u8BA9\u7BA1\u7406\u5458\u5F00\u542F\u6D4F\u89C8\u5668\u8DEF\u7531\u3002","workbench.browserReadyHint":"\u8F93\u5165\u5730\u5740\u4EE5\u542F\u52A8\u9694\u79BB\u7684 Agent \u672C\u5730\u6D4F\u89C8\u5668\u3002\u70B9\u51FB\u5B9E\u65F6\u753B\u9762\u540E\u53EF\u4F7F\u7528\u9F20\u6807\u548C\u952E\u76D8\u4EA4\u4E92\u3002","workbench.browserStart":"\u542F\u52A8\u6D4F\u89C8\u5668","workbench.browserAddressLabel":"\u6D4F\u89C8\u5668\u5730\u5740","workbench.browserAddressPlaceholder":"example.com","workbench.browserAddressInvalid":"\u8BF7\u8F93\u5165\u6709\u6548\u7684 HTTP \u6216 HTTPS \u5730\u5740\u3002","workbench.browserInteractionUnavailable":"\u6D4F\u89C8\u5668\u8F93\u5165\u94FE\u8DEF\u5C1A\u672A\u8FDE\u63A5\uFF0C\u8BF7\u7B49\u5F85 WebRTC \u8FDE\u63A5\u540E\u91CD\u8BD5\u3002","workbench.browserGo":"\u524D\u5F80","workbench.browserStarting":"\u6B63\u5728\u542F\u52A8 Agent \u672C\u5730\u6D4F\u89C8\u5668\u2026","workbench.browserConnecting":"\u6B63\u5728\u8FDE\u63A5\u5B9E\u65F6 WebRTC \u753B\u9762\u2026","workbench.browserIceServersMissing":"\u6D4F\u89C8\u5668\u753B\u9762\u65E0\u6CD5\u8FDE\u63A5\u5F53\u524D Agent\uFF0C\u4E14 Server \u672A\u914D\u7F6E STUN \u6216 TURN \u670D\u52A1\u3002\u8BF7\u8BA9\u7BA1\u7406\u5458\u914D\u7F6E Browser ICE/TURN \u540E\u91CD\u8BD5\u3002","workbench.browserIceConnectionFailed":"\u6D4F\u89C8\u5668 WebRTC \u8FDE\u63A5\u5931\u8D25\u3002\u8BF7\u68C0\u67E5\u5DF2\u914D\u7F6E\u7684 TURN \u670D\u52A1\u662F\u5426\u80FD\u88AB Web \u6D4F\u89C8\u5668\u548C Agent \u540C\u65F6\u8BBF\u95EE\uFF0C\u7136\u540E\u91CD\u8BD5\u3002","workbench.browserPeerAttachTimeout":"\u8FDE\u63A5\u6D4F\u89C8\u5668 WebRTC \u753B\u9762\u8D85\u65F6\u3002\u8BF7\u68C0\u67E5 Browser ICE/TURN \u8FDE\u901A\u6027\uFF0C\u7136\u540E\u91CD\u8BD5\u3002","workbench.browserEnd":"\u7ED3\u675F\u6D4F\u89C8\u5668","workbench.browserVideoLabel":"Agent \u6D4F\u89C8\u5668\u5B9E\u65F6\u753B\u9762","workbench.browserInputLabel":"\u6D4F\u89C8\u5668\u952E\u76D8\u8F93\u5165","workbench.browserStatusConnecting":"\u8FDE\u63A5\u4E2D","workbench.browserProtocolUnavailable":"\u5F53\u524D Server \u8FDE\u63A5\u4E0D\u652F\u6301 Browser Runtime \u534F\u8BAE\u3002","workbench.browserChecking":"\u6B63\u5728\u68C0\u67E5\u6240\u9009 Agent \u7684 Browser Runtime\u2026","workbench.browserPlatformUnsupported":"\u6240\u9009 Agent \u65E0\u6CD5\u8FD0\u884C\u5F53\u524D Browser Runtime \u6570\u636E\u94FE\u8DEF\u3002","workbench.browserSetupTitle":"\u542F\u7528\u6D4F\u89C8\u5668","workbench.browserOptionalInstall":"\u6D4F\u89C8\u5668\u9700\u8981\u5728\u5F53\u524D Agent \u5B89\u88C5\u56FA\u5B9A\u7248\u672C Chrome for Testing\u3002\u542F\u7528\u540E\u5C06\u4E0B\u8F7D\u7EA6 {size}\uFF0C\u6821\u9A8C\u5E76\u5B89\u88C5\u7248\u672C {build}\uFF0C\u7136\u540E\u68C0\u67E5\u5A92\u4F53\u94FE\u8DEF\u3002","workbench.browserInstallDiskNote":"\u70B9\u51FB\u201C\u542F\u7528\u6D4F\u89C8\u5668\u201D\u524D\u4E0D\u4F1A\u4E0B\u8F7D\u4EFB\u4F55\u5185\u5BB9\uFF1B\u6D4F\u89C8\u5668\u6587\u4EF6\u53EA\u5B58\u653E\u5728\u5F53\u524D Agent instance \u7684\u6570\u636E\u76EE\u5F55\u3002","workbench.browserInstallAction":"\u542F\u7528\u6D4F\u89C8\u5668\uFF08{size}\uFF09","workbench.browserInstalling":"\u6B63\u5728\u542F\u7528\u6D4F\u89C8\u5668\uFF1A\u4E0B\u8F7D\u5E76\u6821\u9A8C Chrome for Testing {build}\u2026","workbench.browserInstallKeepOpen":"\u53EF\u4EE5\u79BB\u5F00\u6B64\u9762\u677F\u3002\u518D\u6B21\u6253\u5F00\u6D4F\u89C8\u5668\u4F1A\u6062\u590D\u663E\u793A\u5F53\u524D\u5B89\u88C5\u72B6\u6001\uFF0C\u4E0D\u4F1A\u91CD\u590D\u4E0B\u8F7D\u3002","workbench.browserInstallProgressLabel":"\u6D4F\u89C8\u5668\u4E0B\u8F7D\u8FDB\u5EA6","workbench.browserInstallProgress":"\u5DF2\u4E0B\u8F7D {downloaded} / {total}","workbench.browserInstalledEnable":"\u6D4F\u89C8\u5668\u6587\u4EF6\u5DF2\u7ECF\u5B89\u88C5\u3002\u542F\u7528\u6D4F\u89C8\u5668\u5E76\u68C0\u67E5\u5A92\u4F53\u94FE\u8DEF\u5373\u53EF\u4F7F\u7528\u3002","workbench.browserEnableAction":"\u542F\u7528\u6D4F\u89C8\u5668","workbench.browserEnabling":"\u6B63\u5728\u5B8C\u6210\u8BBE\u7F6E\u5E76\u68C0\u67E5\u5A92\u4F53\u94FE\u8DEF\u2026","workbench.browserStatusInstalling":"\u5B89\u88C5\u4E2D","workbench.browserStatusProbing":"\u63A2\u6D4B\u4E2D","workbench.backToCapabilities":"\u8FD4\u56DE\u80FD\u529B\u5217\u8868","workbench.closeCapability":"\u5173\u95ED\u5F53\u524D\u80FD\u529B","workbench.maximize":"\u6700\u5927\u5316\u9762\u677F","workbench.restore":"\u8FD8\u539F\u9762\u677F","workbench.collapse":"\u6536\u8D77\u9762\u677F","theme.switchToLight":"\u5207\u6362\u5230\u6D45\u8272\u4E3B\u9898","theme.switchToDark":"\u5207\u6362\u5230\u6DF1\u8272\u4E3B\u9898","theme.toLight":"\u5207\u6362\u5230\u6D45\u8272\u4E3B\u9898","theme.toDark":"\u5207\u6362\u5230\u6DF1\u8272\u4E3B\u9898","terminal.splitH":"\u6C34\u5E73\u5206\u5C4F\uFF08\u5DE6\u53F3\uFF09","terminal.splitV":"\u5782\u76F4\u5206\u5C4F\uFF08\u4E0A\u4E0B\uFF09","terminal.close":"\u5173\u95ED\u5F53\u524D\u7EC8\u7AEF","terminal.autoCreate":"\u6253\u5F00\u7EC8\u7AEF\u80FD\u529B\u65F6\u5C06\u81EA\u52A8\u521B\u5EFA\u7EC8\u7AEF","terminal.xtermError":"xterm.js \u672A\u52A0\u8F7D\uFF0C\u8BF7\u5237\u65B0\u9875\u9762","terminal.xtermNotLoaded":"xterm.js \u672A\u52A0\u8F7D\uFF0C\u8BF7\u5237\u65B0\u9875\u9762","terminal.mountError":"\u7EC8\u7AEF\u5BB9\u5668\u6302\u8F7D\u5931\u8D25","terminal.mountFailed":"\u7EC8\u7AEF\u5BB9\u5668\u6302\u8F7D\u5931\u8D25","terminal.createError":"\u7EC8\u7AEF\u521B\u5EFA\u5931\u8D25","terminal.createFailed":"\u7EC8\u7AEF\u521B\u5EFA\u5931\u8D25","terminal.error":"\u7EC8\u7AEF\u9519\u8BEF","git.selectFolder":"\u9009\u62E9\u6587\u4EF6\u5939","git.repoPath":"\u8F93\u5165 Git \u4ED3\u5E93\u8DEF\u5F84...","git.repoPathPlaceholder":"\u8F93\u5165 Git \u4ED3\u5E93\u8DEF\u5F84...","git.workDir":"Git \u5DE5\u4F5C\u76EE\u5F55","git.loadStatus":"\u52A0\u8F7D Git \u72B6\u6001","git.loading":"\u52A0\u8F7D Git \u72B6\u6001...","git.loadingStatus":"\u52A0\u8F7D Git \u72B6\u6001...","git.clean":"\u5DE5\u4F5C\u533A\u5E72\u51C0\uFF0C\u65E0\u53D8\u66F4","git.cleanWorkDir":"\u5DE5\u4F5C\u533A\u5E72\u51C0\uFF0C\u65E0\u53D8\u66F4","git.selectAgent":"\u9009\u62E9 Agent \u540E\u52A0\u8F7D Git \u72B6\u6001","git.selectAgentFirst":"\u9009\u62E9 Agent \u540E\u52A0\u8F7D Git \u72B6\u6001","git.diffOnly":"\u53EA\u770B\u5DEE\u5F02","git.fullFile":"\u770B\u5168\u6587","git.zoomIn":"\u653E\u5927\u5B57\u4F53","git.zoomOut":"\u7F29\u5C0F\u5B57\u4F53","git.loadingDiff":"\u52A0\u8F7D Diff...","git.clickToView":"\u70B9\u51FB\u6587\u4EF6\u67E5\u770B\u5DEE\u5F02","git.clickFileToView":"\u70B9\u51FB\u6587\u4EF6\u67E5\u770B\u5DEE\u5F02","git.selectRepo":"\u9009\u62E9 Git \u4ED3\u5E93","git.noDiff":"(\u65E0\u5DEE\u5F02)","git.binaryFile":"(\u4E8C\u8FDB\u5236\u6587\u4EF6)","files.notLoaded":"\u672A\u52A0\u8F7D","files.newFile":"\u65B0\u5EFA\u6587\u4EF6","files.newFolder":"\u65B0\u5EFA\u6587\u4EF6\u5939","files.openFolder":"\u6253\u5F00\u6587\u4EF6\u5939","files.showTree":"\u663E\u793A\u6587\u4EF6\u5939","files.hideTree":"\u9690\u85CF\u6587\u4EF6\u5939","files.deleteSelected":"\u5220\u9664\u9009\u4E2D","files.moveSelected":"\u79FB\u52A8\u9009\u4E2D","files.enterPath":"\u8F93\u5165\u8DEF\u5F84...","files.searchFiles":"\u641C\u7D22\u6587\u4EF6... (Ctrl+P)","files.noMatch":"\u65E0\u5339\u914D\u7ED3\u679C","files.searching":"\u641C\u7D22\u4E2D...","files.loadingTree":"\u52A0\u8F7D\u4E2D...","files.emptyDir":"\u7A7A\u76EE\u5F55","files.loadingFile":"\u52A0\u8F7D\u6587\u4EF6...","files.searchPlaceholder":"\u641C\u7D22...","files.replacePlaceholder":"\u66FF\u6362...","files.replace":"\u66FF\u6362","files.replaceAll":"\u5168\u90E8","files.replaceCurrent":"\u66FF\u6362\u5F53\u524D","files.replaceAllTitle":"\u5168\u90E8\u66FF\u6362","files.clickToView":"\u70B9\u51FB\u6587\u4EF6\u67E5\u770B\u5185\u5BB9","files.selectFolder":"\u9009\u62E9\u6587\u4EF6\u5939","files.enterFolderName":"\u8F93\u5165\u6587\u4EF6\u5939\u540D...","files.enterFileName":"\u8F93\u5165\u6587\u4EF6\u540D...","files.moveTarget":"\u8F93\u5165\u76EE\u6807\u76EE\u5F55\u8DEF\u5F84...","files.moveItems":"\u5C06 {count} \u4E2A\u9879\u76EE\u79FB\u52A8\u5230\u6307\u5B9A\u76EE\u5F55","files.workDir":"\u5DE5\u4F5C\u76EE\u5F55: {dir}","files.enterDirPath":"\u8F93\u5165\u76EE\u5F55\u8DEF\u5F84...","files.unsavedConfirm":'"{name}" \u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539\uFF0C\u786E\u5B9A\u5173\u95ED\uFF1F',"files.unsavedBatchConfirm":"{count} \u4E2A\u6587\u4EF6\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539\uFF0C\u786E\u5B9A\u5173\u95ED\uFF1F","files.showOpenTabs":"\u663E\u793A\u5DF2\u6253\u5F00\u7684\u6587\u4EF6","files.closeTab":"\u5173\u95ED {name}","files.closeTabAction":"\u5173\u95ED","files.closeOtherTabs":"\u5173\u95ED\u5176\u4ED6","files.closeTabsToLeft":"\u5173\u95ED\u5DE6\u4FA7","files.closeTabsToRight":"\u5173\u95ED\u53F3\u4FA7","files.closeAllTabs":"\u5168\u90E8\u5173\u95ED","files.deleteConfirm":'\u786E\u5B9A\u8981\u5220\u9664 "{name}" \u5417\uFF1F',"files.deleteDirHint":"\uFF08\u5C06\u5220\u9664\u6587\u4EF6\u5939\u53CA\u5176\u6240\u6709\u5185\u5BB9\uFF09","files.deleteSelectedConfirm":"\u786E\u5B9A\u8981\u5220\u9664\u9009\u4E2D\u7684 {count} \u4E2A\u9879\u76EE\u5417\uFF1F\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002","files.findPrev":"\u4E0A\u4E00\u4E2A (Shift+Enter)","files.findNext":"\u4E0B\u4E00\u4E2A (Enter)","files.caseSensitive":"\u533A\u5206\u5927\u5C0F\u5199","files.regex":"\u6B63\u5219\u8868\u8FBE\u5F0F","files.unsaved":"\u672A\u4FDD\u5B58","files.clearSelection":"\u6E05\u9664\u9009\u62E9","files.rename":"\u91CD\u547D\u540D","files.copyHere":"\u590D\u5236","files.moveTo":"\u79FB\u52A8\u5230...","files.download":"\u4E0B\u8F7D","files.enterNewName":"\u8F93\u5165\u65B0\u540D\u79F0...","files.loadingPreview":"\u52A0\u8F7D\u9884\u89C8\u4E2D...","files.previewTooLarge":"\u8BE5\u6587\u4EF6\u5927\u5C0F\u4E3A {size} MB\uFF0C\u8D85\u8FC7 {limit} MB \u7684\u9884\u89C8\u4E0E\u4E0B\u8F7D\u4E0A\u9650\u3002","files.previewLoadFailed":"\u56FE\u7247\u9884\u89C8\u52A0\u8F7D\u5931\u8D25\u3002","files.videoPreviewLoadFailed":"\u89C6\u9891\u65E0\u6CD5\u64AD\u653E\uFF0C\u5F53\u524D\u6D4F\u89C8\u5668\u53EF\u80FD\u4E0D\u652F\u6301\u8BE5\u89C6\u9891\u7F16\u7801\u3002","files.videoStreamUnavailable":"\u5F53\u524D Agent \u6216 Session \u4E0D\u652F\u6301\u89C6\u9891\u6D41\u5F0F\u64AD\u653E\u3002","files.preview":"\u9884\u89C8","files.edit":"\u7F16\u8F91","files.pptxNotSupported":"PPTX \u672C\u5730\u9884\u89C8\u6682\u4E0D\u652F\u6301\uFF0C\u8BF7\u5728\u8BBE\u7F6E\u4E2D\u5207\u6362\u4E3A Office Online \u6A21\u5F0F\u3002","files.officePreviewMode":"Office \u9884\u89C8\u6A21\u5F0F","files.officeOnline":"Office Online","files.localRender":"\u672C\u5730\u6E32\u67D3","proxy.port":"\u7AEF\u53E3","proxy.label":"\u6807\u7B7E","proxy.add":"\u6DFB\u52A0\u7AEF\u53E3\u6620\u5C04","proxy.addPort":"\u6DFB\u52A0\u7AEF\u53E3\u6620\u5C04","proxy.enable":"\u70B9\u51FB\u542F\u7528","proxy.clickEnable":"\u70B9\u51FB\u542F\u7528","proxy.disable":"\u70B9\u51FB\u7981\u7528","proxy.clickDisable":"\u70B9\u51FB\u7981\u7528","proxy.openNewTab":"\u5728\u65B0\u6807\u7B7E\u9875\u6253\u5F00","proxy.openInBrowser":"\u5728\u65B0\u6807\u7B7E\u9875\u6253\u5F00","proxy.noMappings":"\u6682\u65E0\u7AEF\u53E3\u6620\u5C04","proxy.noPorts":"\u6682\u65E0\u7AEF\u53E3\u6620\u5C04","proxy.hint":"\u6DFB\u52A0\u7AEF\u53E3\u540E\uFF0C\u53EF\u901A\u8FC7\u4EE3\u7406 URL \u8BBF\u95EE agent \u673A\u5668\u4E0A\u7684\u672C\u5730\u670D\u52A1","proxy.noPortsHint":"\u6DFB\u52A0\u7AEF\u53E3\u540E\uFF0C\u53EF\u901A\u8FC7\u4EE3\u7406 URL \u8BBF\u95EE agent \u673A\u5668\u4E0A\u7684\u672C\u5730\u670D\u52A1","proxy.selectAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A Agent","store.selectAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A Agent","store.creatingConv":"\u6B63\u5728\u521B\u5EFA\u4F1A\u8BDD...","store.loadingHistory":"\u6B63\u5728\u52A0\u8F7D\u4F1A\u8BDD\u5386\u53F2...","store.executionCancelled":"\u6267\u884C\u5DF2\u53D6\u6D88","store.loginFailed":"\u767B\u5F55\u5931\u8D25","store.convClosed":"\u4F1A\u8BDD\u5DF2\u5173\u95ED","store.convCreated":"\u65B0\u4F1A\u8BDD\u5DF2\u521B\u5EFA [{agent}]\uFF0C\u5DE5\u4F5C\u76EE\u5F55: {workDir}","store.convResumed":"\u5DF2\u6062\u590D\u4F1A\u8BDD [{agent}]: {sessionId}","roleplay.creating":"\u6B63\u5728\u521B\u5EFA \u89D2\u8272\u626E\u6F14 \u4F1A\u8BDD...","roleplay.working":"\u5DE5\u4F5C\u4E2D","roleplay.selectTeam":"\u9009\u62E9\u56E2\u961F\u6A21\u677F","roleplay.teamDev":"\u8F6F\u4EF6\u5F00\u53D1","roleplay.teamCustom":"\u81EA\u5B9A\u4E49","roleplay.editRoles":"\u7F16\u8F91\u89D2\u8272","roleplay.roleName":"\u89D2\u8272\u6807\u8BC6","roleplay.roleDisplayName":"\u663E\u793A\u540D\u79F0","roleplay.roleIcon":"\u56FE\u6807","roleplay.roleDesc":"\u89D2\u8272\u63CF\u8FF0","roleplay.rolePrompt":"\u89D2\u8272 Prompt","roleplay.removeRole":"\u79FB\u9664\u89D2\u8272","roleplay.addRole":"\u6DFB\u52A0\u89D2\u8272","roleplay.start":"\u542F\u52A8 \u89D2\u8272\u626E\u6F14","roleplay.sidebarTitle":"\u89D2\u8272\u626E\u6F14","roleplay.configTitle":"\u89D2\u8272\u626E\u6F14","roleplay.newSession":"\u65B0\u5EFA \u89D2\u8272\u626E\u6F14","roleplay.emptyHint":"\u53D1\u9001\u6D88\u606F\u5F00\u59CB\u591A\u89D2\u8272\u534F\u4F5C","roleplay.askingYou":"\u6B63\u5728\u63D0\u95EE","roleplay.language":"\u8BED\u8A00","roleplay.rolePreview":"\u89D2\u8272\u914D\u7F6E","roleplay.noAgents":"\u6CA1\u6709\u5728\u7EBF\u7684 Agent","roleplay.inputPlaceholder":"\u8F93\u5165\u6D88\u606F\u2026 \u4F7F\u7528 @ \u63D0\u53CA\u89D2\u8272","roleplay.existingSessions":"\u5DF2\u6709\u56E2\u961F","roleplay.restore":"\u6062\u590D","roleplay.restoring":"\u6B63\u5728\u6062\u590D \u89D2\u8272\u626E\u6F14 \u4F1A\u8BDD...","roleplay.createNew":"\u521B\u5EFA\u65B0\u56E2\u961F","expertPanel.title":"\u5E2E\u5E2E\u56E2","expertPanel.search":"\u641C\u7D22\u89D2\u8272\u6216 Action...","expertPanel.noResults":"\u6CA1\u6709\u5339\u914D\u7ED3\u679C","expertPanel.clearAll":"\u6E05\u7A7A","expertPanel.persona":"\u89D2\u8272\u4EBA\u8BBE","expertPanel.template":"\u6709\u8F93\u5165\u65F6 \xB7 \u6D88\u606F\u524D\u7F00","expertPanel.templateHint":"\u7528\u6237\u5199\u4E86\u6587\u5B57\u65F6\uFF1A\u6B64\u524D\u7F00 + \u7528\u6237\u6587\u5B57 = \u6700\u7EC8\u53D1\u9001\u5185\u5BB9","expertPanel.defaultMsg":"\u65E0\u8F93\u5165\u65F6 \xB7 \u5B8C\u6574 Prompt","expertPanel.defaultMsgHint":"\u7528\u6237\u4E0D\u5199\u6587\u5B57\u76F4\u63A5\u53D1\u9001\u65F6\uFF0C\u4F7F\u7528\u6B64\u5B8C\u6574 prompt","expertPanel.loading":"\u6B63\u5728\u52A0\u8F7D\u89D2\u8272\u5B9A\u4E49...","expertPanel.viewPrompt":"\u67E5\u770B\u63D0\u793A\u8BCD","expertPanel.customRoles":"\u81EA\u5B9A\u4E49\u89D2\u8272","expertPanel.addRole":"\u6DFB\u52A0\u89D2\u8272","expertPanel.editRole":"\u7F16\u8F91\u89D2\u8272","expertPanel.deleteRole":"\u5220\u9664\u89D2\u8272","expertPanel.noCustomRoles":"\u6682\u65E0\u81EA\u5B9A\u4E49\u89D2\u8272","expertPanel.createFirst":"\u521B\u5EFA\u7B2C\u4E00\u4E2A\u81EA\u5B9A\u4E49\u89D2\u8272","expertPanel.noActions":"\u6682\u65E0 Action","expertPanel.deleteConfirm":'\u786E\u5B9A\u8981\u5220\u9664\u89D2\u8272 "{name}" \u5417\uFF1F\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002',"expertPanel.deleteConfirmBtn":"\u5220\u9664","expertEditor.createTitle":"\u521B\u5EFA\u81EA\u5B9A\u4E49\u89D2\u8272","expertEditor.editTitle":"\u7F16\u8F91\u81EA\u5B9A\u4E49\u89D2\u8272","expertEditor.basicInfo":"\u57FA\u672C\u4FE1\u606F","expertEditor.roleName":"\u89D2\u8272\u540D\u79F0","expertEditor.roleNamePlaceholder":"\u5982\uFF1A\u6570\u636E\u5206\u6790\u5E08","expertEditor.roleTitle":"\u804C\u79F0","expertEditor.roleTitlePlaceholder":"\u5982\uFF1A\u9AD8\u7EA7\u6570\u636E\u5206\u6790\u5E08","expertEditor.fullName":"\u5168\u540D","expertEditor.fullNamePlaceholder":"\u53EF\u9009","expertEditor.titleEn":"\u82F1\u6587\u804C\u79F0","expertEditor.titleEnPlaceholder":"\u53EF\u9009","expertEditor.rolePrompt":"\u89D2\u8272 Prompt","expertEditor.messagePrefix":"\u6D88\u606F\u524D\u7F00\uFF08\u4E2D\u6587\uFF09","expertEditor.messagePrefixPlaceholder":"\u5982\uFF1A\u4F5C\u4E3A\u4E00\u540D\u8D44\u6DF1\u6570\u636E\u5206\u6790\u5E08\uFF0C","expertEditor.messagePrefixEn":"\u6D88\u606F\u524D\u7F00\uFF08\u82F1\u6587\uFF09","expertEditor.messagePrefixEnPlaceholder":"As a senior data analyst, ","expertEditor.actions":"Actions","expertEditor.addAction":"\u6DFB\u52A0 Action","expertEditor.removeAction":"\u79FB\u9664","expertEditor.actionName":"Action \u540D\u79F0","expertEditor.actionNamePlaceholder":"\u5982\uFF1A\u6570\u636E\u5206\u6790","expertEditor.actionNameEn":"\u82F1\u6587\u540D\u79F0","expertEditor.actionNameEnPlaceholder":"\u53EF\u9009","expertEditor.messageTemplate":"\u6709\u8F93\u5165\u65F6 \xB7 \u6D88\u606F\u524D\u7F00\uFF08\u4E2D\u6587\uFF09","expertEditor.messageTemplatePlaceholder":"\u7528\u6237\u5199\u4E86\u6587\u5B57\u65F6\uFF0C\u62FC\u5728\u7528\u6237\u6587\u5B57\u524D\u9762\u53D1\u9001","expertEditor.messageTemplateEn":"\u6709\u8F93\u5165\u65F6 \xB7 \u6D88\u606F\u524D\u7F00\uFF08\u82F1\u6587\uFF09","expertEditor.messageTemplateEnPlaceholder":"Prepended to user text when user types something","expertEditor.defaultMessage":"\u65E0\u8F93\u5165\u65F6 \xB7 \u5B8C\u6574 Prompt\uFF08\u4E2D\u6587\uFF09","expertEditor.defaultMessagePlaceholder":"\u7528\u6237\u4E0D\u5199\u6587\u5B57\u76F4\u63A5\u53D1\u9001\u65F6\uFF0C\u4F7F\u7528\u6B64\u5B8C\u6574\u5185\u5BB9","expertEditor.defaultMessageEn":"\u65E0\u8F93\u5165\u65F6 \xB7 \u5B8C\u6574 Prompt\uFF08\u82F1\u6587\uFF09","expertEditor.defaultMessageEnPlaceholder":"Used as-is when user sends without typing","expertEditor.cancel":"\u53D6\u6D88","expertEditor.save":"\u4FDD\u5B58","expertEditor.saving":"\u4FDD\u5B58\u4E2D...","subAgentPanel.title":"\u5B50\u4EE3\u7406","subAgentPanel.back":"\u8FD4\u56DE\u5217\u8868","subAgentPanel.running":"\u8FD0\u884C\u4E2D","subAgentPanel.completed":"\u5DF2\u5B8C\u6210","subAgentPanel.waitingMessages":"\u7B49\u5F85\u6D88\u606F...","subAgentPanel.toolCount":"{count} \u4E2A\u5DE5\u5177","subAgentPanel.toolSummary":"\u5DF2\u5B8C\u6210 {count} \u6B21\u5DE5\u5177\u8C03\u7528","subAgentPanel.empty":"\u6682\u65E0\u5B50\u4EE3\u7406","subAgentPanel.emptyHint":"\u5F53 Claude \u59D4\u6D3E\u4EFB\u52A1\u65F6\uFF0C\u5B50\u4EE3\u7406\u4F1A\u5728\u8FD9\u91CC\u663E\u793A","splitScreen.split":"\u5206\u5C4F","splitScreen.closePane":"\u5173\u95ED\u6B64\u9762\u677F","splitScreen.newChat":"\u65B0\u5EFA Chat","splitScreen.noSessions":"\u6682\u65E0\u4F1A\u8BDD","splitScreen.splitToPanel":"\u5728\u65B0\u9762\u677F\u4E2D\u6253\u5F00","splitScreen.selectFromSidebar":"\u4ECE\u5DE6\u4FA7\u9009\u62E9\u5BF9\u8BDD","yeaft.vp.library":"\u89D2\u8272\u5E93","yeaft.vp.createFirst":"+ \u521B\u5EFA\u4F60\u7684\u7B2C\u4E00\u4E2A\u89D2\u8272","yeaft.vp.empty.aria":"\u5C1A\u65E0\u89D2\u8272","yeaft.vp.avatar.aria":"{name} \u5934\u50CF","yeaft.vp.speaker.stateCauseAria":"\u72B6\u6001\u53D8\u66F4\uFF1A{cause}","yeaft.vp.status.thinking":"\u6B63\u5728\u601D\u8003\u2026","yeaft.vp.status.tool":"\u6B63\u5728\u4F7F\u7528 {name}","yeaft.vp.status.done":"\u5B8C\u6210 \xB7 {count} \u4E2A\u5DE5\u5177","yeaft.vp.status.aborted":"\u5DF2\u4E2D\u6B62","yeaft.vp.crud.title":"\u89D2\u8272\u5E93","yeaft.vp.crud.close":"\u5173\u95ED","yeaft.vp.crud.addNew":"+ \u65B0\u5EFA\u89D2\u8272","yeaft.vp.crud.empty":"\u8FD8\u6CA1\u6709\u89D2\u8272\u3002\u521B\u5EFA\u7B2C\u4E00\u4E2A\u89D2\u8272\u5F00\u59CB\u534F\u4F5C\u5427\u3002","yeaft.vp.crud.edit":"\u7F16\u8F91","yeaft.vp.crud.delete":"\u5220\u9664","yeaft.vp.crud.deleteConfirm":'\u5220\u9664 "{name}"\uFF1F\u4F1A\u4E00\u5E76\u5220\u9664\u78C1\u76D8\u4E0A\u7684 role.md \u6587\u4EF6\u3002',"yeaft.vp.crud.form.create":"\u521B\u5EFA\u89D2\u8272","yeaft.vp.crud.form.update":"\u7F16\u8F91\u89D2\u8272","yeaft.vp.crud.form.vpId":"\u89D2\u8272 ID","yeaft.vp.crud.form.vpId.tooltip":"\u53EA\u80FD\u7528\u5B57\u6BCD\u3001\u6570\u5B57\u3001- \u548C _\uFF0C\u4E0D\u80FD\u4EE5 _ \u5F00\u5934\uFF0C\u4E0D\u80FD\u662F\u7EAF\u6570\u5B57\uFF0C\u4E0D\u80FD\u7528\u4FDD\u7559\u540D\uFF1Aall / user / system / everyone\u3002","yeaft.vp.crud.form.displayName":"\u663E\u793A\u540D\uFF08\u82F1\u6587\uFF09","yeaft.vp.crud.form.displayNameZh":"\u663E\u793A\u540D\uFF08\u4E2D\u6587\uFF09","yeaft.vp.crud.form.description":"\u80FD\u529B\u63CF\u8FF0\uFF08\u82F1\u6587\uFF09","yeaft.vp.crud.form.descriptionZh":"\u80FD\u529B\u63CF\u8FF0\uFF08\u4E2D\u6587\uFF09","yeaft.vp.crud.form.descriptionPlaceholder":"\u4F8B\u5982\uFF1AAPI design, migration planning, and compatibility reviews","yeaft.vp.crud.form.descriptionZhPlaceholder":"\u4F8B\u5982\uFF1AAPI \u8BBE\u8BA1\u3001\u8FC1\u79FB\u89C4\u5212\u4E0E\u517C\u5BB9\u6027\u8BC4\u5BA1","yeaft.vp.crud.form.role":"\u804C\u4F4D","yeaft.vp.crud.form.rolePlaceholder":"\u4F8B\u5982\uFF1A\u4EA7\u54C1\u7ECF\u7406","yeaft.vp.crud.form.traits":"\u7279\u8D28\u6807\u7B7E","yeaft.vp.crud.form.traitsHint":"\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\u7684\u77ED\u6807\u7B7E\uFF08\u4F8B\u5982\uFF1A\u597D\u5947, \u52A1\u5B9E\uFF09\u3002","yeaft.vp.crud.form.modelHint":"\u6A21\u578B\u504F\u597D","yeaft.vp.crud.form.modelHint.none":"\u2014 \u9ED8\u8BA4 \u2014","yeaft.vp.crud.form.modelHint.primary":"\u4E3B\u6A21\u578B","yeaft.vp.crud.form.modelHint.fast":"\u5FEB\u6A21\u578B","yeaft.vp.crud.form.persona":"\u4EBA\u8BBE\uFF08Markdown\uFF09","yeaft.vp.crud.form.personaPlaceholder":"\u63CF\u8FF0\u8FD9\u4E2A\u89D2\u8272\u5982\u4F55\u601D\u8003\u3001\u8868\u8FBE\u3001\u505A\u51B3\u7B56\u2026\u2026","yeaft.vp.crud.form.submit":"\u4FDD\u5B58","yeaft.vp.crud.form.cancel":"\u53D6\u6D88","yeaft.vp.crud.form.ok":"\u683C\u5F0F\u6B63\u786E","yeaft.vp.crud.form.idLocked":"\u521B\u5EFA\u540E\u89D2\u8272 ID \u4E0D\u53EF\u4FEE\u6539\u3002","yeaft.vp.crud.saving":"\u4FDD\u5B58\u4E2D\u2026\u2026","yeaft.vp.crud.saveFailed":"\u4FDD\u5B58\u5931\u8D25\uFF1A{error}","yeaft.vp.crud.deleteFailed":"\u5220\u9664\u5931\u8D25\uFF1A{error}","yeaft.vp.crud.viewPrompt":"\u67E5\u770B prompt","yeaft.vp.crud.view.title":"VP \u63D0\u793A\u8BCD","yeaft.vp.crud.view.personaEmpty":"\uFF08\u672A\u5B9A\u4E49 persona \u6B63\u6587\uFF0C\u53EA\u6709\u57FA\u7840\u5143\u6570\u636E\uFF09","yeaft.vp.crud.view.back":"\u8FD4\u56DE","yeaft.vp.crud.view.editFromHere":"\u7F16\u8F91\u8BE5 VP","yeaft.vp.crud.view.removed":"\u8BE5 VP \u5DF2\u5728\u522B\u5904\u88AB\u5220\u9664\uFF0C\u8FD4\u56DE\u5217\u8868\u3002","yeaft.vp.crud.stockBadge":"\u9884\u88C5","yeaft.vp.crud.stockReadOnly":"\u9884\u88C5 VP \u968F agent \u51FA\u5382\uFF0C\u4E0D\u80FD\u7F16\u8F91\u6216\u5220\u9664\u3002","yeaft.vp.idError.empty_or_non_string":"\u89D2\u8272 ID \u4E0D\u80FD\u4E3A\u7A7A\u3002","yeaft.vp.idError.too_long":"\u89D2\u8272 ID \u592A\u957F\uFF08\u6700\u591A 40 \u5B57\u7B26\uFF09\u3002","yeaft.vp.idError.illegal_character":'\u53EA\u80FD\u4F7F\u7528\u5B57\u6BCD\u3001\u6570\u5B57\u3001"-" \u548C "_"\u3002',"yeaft.vp.idError.underscore_prefix_reserved":'\u89D2\u8272 ID \u4E0D\u80FD\u4EE5 "_" \u5F00\u5934\uFF08\u9884\u7559\u7ED9\u7CFB\u7EDF\u89D2\u8272\uFF09\u3002',"yeaft.vp.idError.pure_digits":"\u89D2\u8272 ID \u4E0D\u80FD\u662F\u7EAF\u6570\u5B57\u3002","yeaft.vp.idError.reserved":"\u89D2\u8272 ID \u4E0D\u80FD\u7528\u4FDD\u7559\u540D\uFF08all / user / system / everyone\uFF09\u3002","yeaft.vp.idError.duplicate":"\u5DF2\u7ECF\u5B58\u5728\u540C ID \u7684\u89D2\u8272\u3002","yeaft.vp.idError.not_found":"\u8BE5 VP \u4E0D\u5B58\u5728\uFF0C\u53EF\u80FD\u5DF2\u88AB\u5220\u9664\u3002","yeaft.vp.idError.stock_readonly":"\u9884\u88C5 VP \u4E0D\u80FD\u7F16\u8F91\u6216\u5220\u9664\u3002","yeaft.vp.idError.unknown":"\u53D1\u751F\u672A\u77E5\u9519\u8BEF\uFF0C\u8BF7\u91CD\u8BD5\u3002","yeaft.vp.reason.personaEdit":"\u4EBA\u8BBE\u5DF2\u66F4\u65B0","yeaft.vp.reason.traitsEdit":"\u7279\u5F81\u5DF2\u66F4\u65B0","yeaft.vp.reason.manualReload":"\u5DF2\u91CD\u65B0\u8F7D\u5165","yeaft.vp.reason.fileRemoved":"\u5DF2\u79FB\u9664","yeaft.vp.reason.toast.updated":"{name}\uFF1A{reason}","yeaft.vp.reason.toast.removed":"{name} \u5DF2\u88AB\u79FB\u9664","yeaft.message.timeAria":"\u53D1\u9001\u4E8E {time}","yeaft.message.llmCall":"{count} \u6B21 LLM \u8C03\u7528","yeaft.message.llmCalls":"{count} \u6B21 LLM \u8C03\u7528","yeaft.message.tokenUsage":"\u603B\u8BA1 {total} \xB7 \u8F93\u5165 {input} \xB7 \u8F93\u51FA {output}","yeaft.user.youLabel":"\u6211","yeaft.session.sidebarTitle":"\u4F1A\u8BDD","yeaft.session.sidebarAria":"\u4F1A\u8BDD\u5217\u8868","yeaft.session.newButton":"+ \u65B0\u5EFA\u4F1A\u8BDD","yeaft.session.newButtonAria":"\u521B\u5EFA\u65B0\u4F1A\u8BDD","yeaft.session.empty":"\u6682\u65E0\u4F1A\u8BDD\u3002","yeaft.session.membersCount":"{count} \u4F4D\u6210\u5458","yeaft.session.oneMember":"1 \u4F4D\u6210\u5458","yeaft.session.noMembers":"\u7A7A\u4F1A\u8BDD \u2014 \u8BF7\u9080\u8BF7 VP","yeaft.session.defaultBadge":"\u9ED8\u8BA4","yeaft.session.defaultName":"\u9ED8\u8BA4\u4F1A\u8BDD","yeaft.session.moreActions":"\u66F4\u591A\u64CD\u4F5C","yeaft.session.archive":"\u5F52\u6863","yeaft.session.archiveConfirm":"\u5F52\u6863\u300C{name}\u300D\uFF1F\u7A0D\u540E\u53EF\u4ECE\u78C1\u76D8\u6062\u590D\u3002","yeaft.session.archivingEllipsis":"\u5F52\u6863\u4E2D\u2026","yeaft.session.delete":"\u5220\u9664","yeaft.session.deleteConfirm":"\u5220\u9664\u300C{name}\u300D\uFF1F\u5C06\u6C38\u4E45\u5220\u9664\u8BE5\u4F1A\u8BDD\u53CA\u5176\u6240\u6709\u6570\u636E\uFF0C\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002","yeaft.session.deletingEllipsis":"\u5220\u9664\u4E2D\u2026","yeaft.session.rename":"\u91CD\u547D\u540D","yeaft.session.copyCurrent":"\u4ECE\u5F53\u524D\u4F1A\u8BDD\u590D\u5236","yeaft.session.copyFailed":"\u65E0\u6CD5\u590D\u5236\u4F1A\u8BDD\uFF1A{message}","yeaft.session.openSettings":"\u8BBE\u7F6E","yeaft.session.removeFromList":"\u79FB\u9664","yeaft.session.manageMembers":"\u7BA1\u7406\u6210\u5458","yeaft.session.memberCount.one":"1 \u4F4D\u6210\u5458","yeaft.session.memberCount.other":"{count} \u4F4D\u6210\u5458","yeaft.session.renamePrompt":"\u4E3A\u300C{name}\u300D\u8F93\u5165\u65B0\u540D\u79F0\uFF1A","yeaft.session.renamingEllipsis":"\u91CD\u547D\u540D\u4E2D\u2026","yeaft.session.editModal.renameTitle":"\u91CD\u547D\u540D\u4F1A\u8BDD","yeaft.session.editModal.renameBody":"\u4E3A\u300C{name}\u300D\u9009\u62E9\u4E00\u4E2A\u65B0\u540D\u79F0\u3002","yeaft.session.editModal.renameSubmit":"\u4FDD\u5B58","yeaft.session.editModal.archiveTitle":"\u5F52\u6863\u4F1A\u8BDD","yeaft.session.editModal.archiveBody":"\u5F52\u6863\u300C{name}\u300D\uFF1F\u7A0D\u540E\u53EF\u4ECE\u78C1\u76D8\u6062\u590D\u3002","yeaft.session.editModal.archiveSubmit":"\u5F52\u6863","yeaft.session.editModal.deleteTitle":"\u5220\u9664\u4F1A\u8BDD","yeaft.session.editModal.deleteBody":"\u5220\u9664\u300C{name}\u300D\uFF1F\u5C06\u6C38\u4E45\u5220\u9664\u8BE5\u4F1A\u8BDD\u53CA\u5176\u6240\u6709\u6570\u636E\uFF0C\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002","yeaft.session.editModal.deleteSubmit":"\u5220\u9664","yeaft.session.editModal.newNameLabel":"\u65B0\u540D\u79F0","yeaft.session.editModal.cancel":"\u53D6\u6D88","yeaft.session.editModal.close":"\u5173\u95ED","yeaft.session.error.invalid_name":"\u4F1A\u8BDD\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A\u3002","yeaft.session.error.duplicate":"\u8BE5\u4F1A\u8BDD id \u5DF2\u5B58\u5728\u3002","yeaft.session.error.not_found":"\u672A\u627E\u5230\u8BE5\u4F1A\u8BDD\u3002","yeaft.session.error.session_running":"\u8BF7\u7B49\u5F85\u5F53\u524D\u56DE\u590D\u5B8C\u6210\u540E\u518D\u590D\u5236\u8BE5\u4F1A\u8BDD\u3002","yeaft.session.error.default_not_in_roster":"\u9ED8\u8BA4 VP \u5FC5\u987B\u5728\u6210\u5458\u5217\u8868\u4E2D\u3002","yeaft.session.error.no_default_vp":"\u8BE5\u4F1A\u8BDD\u6CA1\u6709\u6210\u5458\uFF0C\u8BF7\u4ECE\u89D2\u8272\u5E93\u6DFB\u52A0 VP \u4EE5\u5F00\u59CB\u5BF9\u8BDD\u3002","yeaft.session.error.reserved":"\u6240\u9009 id \u4E2D\u5305\u542B\u4FDD\u7559\u540D\uFF08all / user / system / everyone\uFF09\u3002","yeaft.session.error.unknown":"\u4F1A\u8BDD\u64CD\u4F5C\u5931\u8D25\uFF1A{message}","yeaft.session.error.timeout":"\u4F1A\u8BDD\u64CD\u4F5C\u8D85\u65F6\uFF0C\u8BF7\u91CD\u8BD5\u3002","yeaft.session.invite.title":"\u9080\u8BF7 VP","yeaft.session.invite.body":"\u300C{name}\u300D\u5F53\u524D\u4E3A\u7A7A\uFF0C\u8BF7\u4ECE\u89D2\u8272\u5E93\u6DFB\u52A0\u4E00\u4F4D VP \u4EE5\u5F00\u59CB\u5BF9\u8BDD\u3002","yeaft.session.invite.openLibrary":"\u6253\u5F00\u89D2\u8272\u5E93","yeaft.session.invite.dismiss":"\u6682\u4E0D","yeaft.session.empty.title":"\u7A7A\u4F1A\u8BDD","yeaft.session.empty.hint":"\u300C{name}\u300D\u8FD8\u6CA1\u6709\u6210\u5458\u3002\u6DFB\u52A0\u4E00\u4F4D VP \u5373\u53EF\u5F00\u59CB\u5BF9\u8BDD\u3002","yeaft.session.empty.cta":"\u7BA1\u7406\u6210\u5458","yeaft.session.members.title":"\u7BA1\u7406\u300C{name}\u300D\u7684\u6210\u5458","yeaft.session.members.aria":"\u6210\u5458\u7BA1\u7406","yeaft.session.members.close":"\u5173\u95ED","yeaft.session.members.done":"\u5B8C\u6210","yeaft.session.members.empty":"\u6682\u65E0\u53EF\u7528 VP \u2014 \u8BF7\u5148\u5230\u89D2\u8272\u5E93\u521B\u5EFA\u3002","yeaft.session.members.loading":"VP \u52A0\u8F7D\u4E2D\u2026","yeaft.session.members.defaultHint":"\u9ED8\u8BA4 VP\uFF08@\u63D0\u53CA\u7F3A\u7701\u65F6\u7531\u8BE5 VP \u5E94\u7B54\uFF09","yeaft.session.members.memberCount":"\u5DF2\u9009 {count} \u4F4D","yeaft.session.members.actionFailed":"\u64CD\u4F5C\u5931\u8D25\uFF1A{error}","yeaft.session.members.openLibrary":"\u6253\u5F00 VP \u5E93","yeaft.session.members.openLibraryHint":"\u5728 VP \u5E93\u53EF\u521B\u5EFA\u65B0 VP \u6216\u67E5\u770B VP \u7684 prompt\u3002","yeaft.session.announcement.label":"\u4F1A\u8BDD\u516C\u544A","yeaft.session.announcement.hintEmpty":"\u6682\u65E0\u516C\u544A \u2014 \u70B9\u51FB \u270F\uFE0F \u6DFB\u52A0\u3002","yeaft.session.announcement.emptyBody":"\u672A\u8BBE\u7F6E\u4F1A\u8BDD\u516C\u544A\u3002\u53EF\u4EE5\u5728\u8FD9\u91CC\u5199\u4E00\u6BB5\u7B80\u4ECB\uFF0C\u4F1A\u8BDD\u5185\u6240\u6709 VP \u5728\u6536\u5230\u6D88\u606F\u65F6\u90FD\u4F1A\u5728 system prompt \u9876\u90E8\u770B\u5230 \u2014 \u9002\u5408\u5199\u5171\u540C\u80CC\u666F\u3001\u89C4\u5219\u3001\u6216 CLAUDE.md \u5F0F\u7684\u6307\u5F15\u3002","yeaft.session.announcement.placeholder":"\u4E3A\u8FD9\u4E2A\u4F1A\u8BDD\u91CC\u7684\u6240\u6709 VP \u5199\u4E00\u6BB5\u5171\u4EAB\u7684\u7B80\u4ECB\u2026","yeaft.session.announcement.edit":"\u7F16\u8F91\u516C\u544A","yeaft.session.announcement.editTitle":"\u7F16\u8F91\u4F1A\u8BDD\u516C\u544A","yeaft.session.announcement.saving":"\u4FDD\u5B58\u4E2D\u2026","yeaft.session.announcement.saveFailed":"\u4FDD\u5B58\u5931\u8D25\uFF1A{error}","yeaft.session.announcement.openSettings":"\u6253\u5F00\u4F1A\u8BDD\u8BBE\u7F6E","yeaft.session.settings.title":"{name} \u2014 \u4F1A\u8BDD\u8BBE\u7F6E","yeaft.session.settings.short":"\u4F1A\u8BDD","yeaft.session.settings.close":"\u5173\u95ED","yeaft.session.settings.nav.session":"\u4F1A\u8BDD","yeaft.session.settings.nav.members":"\u6210\u5458","yeaft.session.settings.nav.memory":"\u4F1A\u8BDD\u8BB0\u5FC6","yeaft.session.settings.announcement.heading":"\u4F1A\u8BDD\u516C\u544A","yeaft.session.settings.announcement.help":"\u6CE8\u5165\u5230\u4F1A\u8BDD\u5185\u6BCF\u4E2A VP \u7684 system prompt \u9876\u90E8 \u2014 \u7C7B\u4F3C\u56E2\u961F\u5171\u4EAB\u7684 CLAUDE.md\u3002","yeaft.session.settings.members.heading":"\u6210\u5458","yeaft.session.settings.rename.heading":"\u91CD\u547D\u540D\u4F1A\u8BDD","yeaft.session.settings.rename.label":"\u65B0\u540D\u79F0","yeaft.session.settings.rename.save":"\u4FDD\u5B58\u540D\u79F0","yeaft.session.settings.rename.saving":"\u4FDD\u5B58\u4E2D\u2026","yeaft.session.settings.memory.heading":"\u4F1A\u8BDD\u8BB0\u5FC6","yeaft.session.settings.memory.help":"\u7ACB\u5373\u8FD0\u884C dream \u6574\u7406\uFF1A\u8BFB\u53D6\u4E0A\u6B21\u4EE5\u6765\u7684\u65B0\u6D88\u606F\uFF0C\u63D0\u53D6\u8981\u70B9\u5E76\u5408\u5E76\u8FDB\u4F1A\u8BDD\u7684 summary\uFF0C\u8BA9 Resident \u5C42\u80FD\u53CD\u6620\u6700\u65B0\u7684\u5BF9\u8BDD\u3002","yeaft.session.settings.memory.runNow":"\u7ACB\u5373\u8FD0\u884C dream","yeaft.session.settings.memory.running":"\u8FD0\u884C\u4E2D\u2026","yeaft.session.settings.memory.lastSuccess":"\u4E0A\u6B21\u6210\u529F\uFF1A{time} \u2014 \u66F4\u65B0\u4E86 {count} \u4E2A\u76EE\u6807\u3002","yeaft.session.settings.memory.lastError":"\u4E0A\u6B21\u8FD0\u884C\u5931\u8D25\uFF1A{error}","yeaft.session.settings.danger.heading":"\u5220\u9664\u4F1A\u8BDD","yeaft.session.settings.danger.deleteHelp":"\u8FD9\u4F1A\u6C38\u4E45\u5220\u9664\u8BE5\u4F1A\u8BDD\uFF0C\u79FB\u9664\u78C1\u76D8\u4E0A\u7684 session.json \u548C\u5168\u90E8\u6D88\u606F\u5386\u53F2\uFF0C\u4E0D\u53EF\u6062\u590D\u3002","yeaft.session.settings.danger.deleteBtn":"\u5220\u9664\u4F1A\u8BDD","yeaft.vp.mention.placeholder":"\u6309 id \u6216\u540D\u79F0\u641C\u7D22\u89D2\u8272\u2026","yeaft.vp.mention.noMatch":"\u6CA1\u6709\u5339\u914D\u7684\u89D2\u8272","yeaft.vp.mention.count":"\u5DF2 @{count} \u4EBA","yeaft.feature.reject.missing_group_id":"\u53D1\u9001\u5931\u8D25\uFF1A\u672A\u6307\u5B9A\u4F1A\u8BDD\u3002","yeaft.feature.reject.missing_feature_id":"\u53D1\u9001\u5931\u8D25\uFF1A\u4EFB\u52A1\u4E0A\u4E0B\u6587\u4E22\u5931\u3002","yeaft.feature.reject.missing_vp_id":"\u53D1\u9001\u5931\u8D25\uFF1A\u672A\u8BBE\u7F6E\u53D1\u8A00\u8005\u3002","yeaft.feature.reject.invalid_vp_id":"\u53D1\u9001\u5931\u8D25\uFF1A\u53D1\u8A00\u8005 id \u975E\u6CD5\u3002","yeaft.feature.reject.empty_text":"\u53D1\u9001\u5931\u8D25\uFF1A\u5185\u5BB9\u4E3A\u7A7A\u3002","yeaft.feature.reject.text_too_long":"\u53D1\u9001\u5931\u8D25\uFF1A\u5185\u5BB9\u8FC7\u957F\uFF08\u4E0A\u9650 16 KiB\uFF09\u3002","yeaft.feature.reject.unknown":"\u53D1\u9001\u5931\u8D25\u3002","yeaft.feature.pill.label":"\u4EFB\u52A1","yeaft.feature.messageTime.aria":"\u53D1\u9001\u4E8E {time}","yeaft.vp.turnBlock.elapsedTitle":"\u672C\u8F6E turn \u5F00\u59CB\u81F3\u4ECA\u7684\u65F6\u95F4","yeaft.vp.turnBlock.retryingRequest":"\u54CD\u5E94\u505C\u6EDE\uFF0C\u6B63\u5728\u53D1\u8D77\u5168\u65B0\u8BF7\u6C42\uFF08{attempt}/{max}\uFF09","yeaft.vp.turnBlock.retryingContinue":"\u54CD\u5E94\u505C\u6EDE\uFF0C\u6B63\u5728\u7528\u5168\u65B0\u8BF7\u6C42\u7EED\u5199\uFF08{attempt}/{max}\uFF09","yeaft.sessionStatus.aria":"Session \u72B6\u6001","yeaft.sessionStatus.title":"Session \u72B6\u6001","yeaft.sessionStatus.announcement":"\u516C\u544A","yeaft.sessionStatus.announcementEmpty":"\u6682\u65E0\u516C\u544A","yeaft.sessionStatus.announcementAdd":"\u6DFB\u52A0\u516C\u544A","yeaft.sessionStatus.announcementEdit":"\u7F16\u8F91\u516C\u544A","yeaft.sessionStatus.vps":"VP","yeaft.sessionStatus.backgroundTasks":"\u540E\u53F0\u4EFB\u52A1","yeaft.sessionStatus.noLogPreview":"\u6682\u65E0\u65E5\u5FD7\u8F93\u51FA\u3002","yeaft.sessionStatus.task.subAgentStarted":"{name} \u5DF2\u542F\u52A8","yeaft.sessionStatus.task.subAgentStartedWithMission":"{name} \u5DF2\u542F\u52A8\uFF1A{mission}","yeaft.sessionStatus.task.subAgentStatus":"{name} \u72B6\u6001\uFF1A{status}","yeaft.sessionStatus.task.subAgentStatusUpdated":"{name} \u72B6\u6001\u5DF2\u66F4\u65B0","yeaft.sessionStatus.task.subAgentResult":"{name} \u7ED3\u679C\uFF1A{text}","yeaft.sessionStatus.task.subAgentProducedResult":"{name} \u5DF2\u4EA7\u751F\u7ED3\u679C","yeaft.sessionStatus.task.subAgentUsedTool":"{name} \u8C03\u7528\u4E86 {tool}","yeaft.sessionStatus.task.subAgentFinishedTool":"{name} \u5B8C\u6210\u4E86 {tool}","yeaft.sessionStatus.task.subAgentUsage":"{name} \u4F7F\u7528\u4E86 {tokens} tokens","yeaft.sessionStatus.task.subAgentEvent":"{name}\uFF1A{text}","yeaft.sessionStatus.task.subAgentUserPrompt":"\u4F60\uFF1A{text}","yeaft.sessionStatus.task.subAgentToolSummary":"\u5DF2\u5B8C\u6210 {count} \u6B21\u5DE5\u5177\u8C03\u7528","yeaft.sessionStatus.task.subAgentError":"{name} \u9519\u8BEF\uFF1A{error}","yeaft.sessionStatus.task.subAgentHitError":"{name} \u9047\u5230\u9519\u8BEF","yeaft.sessionStatus.task.subAgentNoReadableEvents":"\u6682\u65E0\u53EF\u8BFB\u7684 sub-agent \u6D3B\u52A8\u3002","yeaft.sessionStatus.task.promptPlaceholder":"\u7ED9\u8FD9\u4E2A sub-agent \u8FFD\u52A0\u60F3\u6CD5\u2026","yeaft.sessionStatus.task.promptSend":"\u53D1\u9001","yeaft.sessionStatus.task.promptSending":"\u53D1\u9001\u4E2D\u2026","yeaft.sessionStatus.task.promptFailed":"\u53D1\u9001\u5931\u8D25\u3002","yeaft.sessionStatus.task.title":"\u4EFB\u52A1","yeaft.sessionStatus.task.command":"\u547D\u4EE4","yeaft.sessionStatus.task.stop":"\u505C\u6B62\u4EFB\u52A1","yeaft.sessionStatus.task.stopping":"\u505C\u6B62\u4E2D\u2026","yeaft.sessionStatus.task.kind.subAgent":"sub-agent","yeaft.sessionStatus.task.kind.shell":"shell","yeaft.sessionStatus.show":"\u663E\u793A Session \u72B6\u6001","yeaft.sessionStatus.hide":"\u9690\u85CF Session \u72B6\u6001","yeaft.sessionStatus.close":"\u5173\u95ED Session \u72B6\u6001","yeaft.vpTimeline.empty":"\u672C Session \u8FD8\u6CA1\u6709 VP\u3002","yeaft.vpTimeline.resizeTitle":"\u62D6\u52A8\u8C03\u6574\u5BBD\u5EA6","yeaft.vpTimeline.status.idle":"\u7A7A\u95F2","yeaft.vpTimeline.status.typing":"\u8F93\u5165\u4E2D\u2026","yeaft.vpTimeline.status.thinking":"\u601D\u8003\u4E2D\u2026","yeaft.vpTimeline.status.retrying":"\u6B63\u5728\u91CD\u8BD5\u8BF7\u6C42\u2026","yeaft.vpTimeline.status.streaming":"\u751F\u6210\u4E2D","yeaft.vpTimeline.status.tool":"\u8C03\u7528\u5DE5\u5177\u4E2D\u2026","yeaft.vpTimeline.status.error":"\u51FA\u9519","yeaft.vpTimeline.status.offline":"\u79BB\u7EBF","yeaft.vpTimeline.abort":"\u4E2D\u6B62","yeaft.vpTimeline.edit":"\u7F16\u8F91 VP","yeaft.vpTimeline.mention":"\u70B9\u51FB @ \u8BE5 VP","yeaft.vpTimeline.expand":"\u5C55\u5F00\u4EFB\u52A1\u8BE6\u60C5","yeaft.toolStats.title":"\u5DE5\u5177\u4F7F\u7528\u7EDF\u8BA1","yeaft.toolStats.refresh":"\u5237\u65B0","yeaft.toolStats.close":"\u5173\u95ED","yeaft.toolStats.tabAll":"\u5168\u90E8\u5DE5\u5177","yeaft.toolStats.tabUnused":"\u672A\u4F7F\u7528","yeaft.toolStats.loading":"\u52A0\u8F7D\u4E2D\u2026","yeaft.toolStats.notLoaded":"\u6682\u65E0\u6570\u636E \u2014 \u70B9\u51FB\u5237\u65B0\u3002","yeaft.toolStats.empty":"\uFF08\u6682\u65E0\u5DE5\u5177\u8C03\u7528\u8BB0\u5F55\uFF09","yeaft.toolStats.noneUnused":"\uFF08\u6BCF\u4E2A\u5DF2\u6CE8\u518C\u5DE5\u5177\u90FD\u81F3\u5C11\u88AB\u8C03\u7528\u8FC7\u4E00\u6B21\uFF09","yeaft.toolStats.fetchedAt":"\u83B7\u53D6\u65F6\u95F4","yeaft.toolStats.col.name":"\u5DE5\u5177","yeaft.toolStats.col.calls":"\u8C03\u7528","yeaft.toolStats.col.errors":"\u9519\u8BEF","yeaft.toolStats.col.errRate":"\u9519\u8BEF\u7387","yeaft.toolStats.col.p50":"p50","yeaft.toolStats.col.p95":"p95","yeaft.toolStats.col.avg":"\u5E73\u5747","yeaft.toolStats.col.last":"\u6700\u8FD1","yeaft.toolStats.buttonLabel":"\u5DE5\u5177\u7EDF\u8BA1","workCenter.title":"\u5DE5\u4F5C\u4E2D\u5FC3","workCenter.subtitle":"\u7531\u5F53\u524D Agent \u6301\u7EED\u63A8\u8FDB\u7684\u6301\u4E45\u5DE5\u4F5C","workCenter.agent":"Agent","workCenter.selectAgent":"\u9009\u62E9 Agent","workCenter.noOnlineAgents":"\u6CA1\u6709\u5728\u7EBF Agent","workCenter.noAvailableAgents":"\u6CA1\u6709\u517C\u5BB9\u5DE5\u4F5C\u4E2D\u5FC3\u7684\u5728\u7EBF Agent","workCenter.new":"\u65B0\u5EFA","workCenter.newWorkItem":"\u65B0\u5EFA\u5DE5\u4F5C\u9879","workCenter.workItem":"\u5DE5\u4F5C\u9879","workCenter.createFirst":"\u521B\u5EFA\u7B2C\u4E00\u4E2A\u5DE5\u4F5C\u9879","workCenter.backToChat":"\u8FD4\u56DE\u5BF9\u8BDD","workCenter.refresh":"\u5237\u65B0","workCenter.search":"\u641C\u7D22\u5DE5\u4F5C\u9879","workCenter.filter":"\u7B5B\u9009","workCenter.filterAttention":"\u9700\u8981\u5904\u7406","workCenter.filterActive":"\u6267\u884C\u4E2D","workCenter.filterAll":"\u5168\u90E8","workCenter.filterDone":"\u5DF2\u5B8C\u6210","workCenter.attentionItems":"\u9700\u8981\u5904\u7406","workCenter.board.active":"\u8FDB\u884C\u4E2D","workCenter.board.needsAttention":"\u9700\u8981\u5904\u7406","workCenter.board.closed":"\u5DF2\u5173\u95ED","workCenter.board.emptyLane":"\u6682\u65E0\u5DE5\u4F5C\u9879","workCenter.board.lanes":"\u5DE5\u4F5C\u9879\u5206\u680F","workCenter.filterVp":"\u6309 VP \u7B5B\u9009","workCenter.filterType":"\u6309\u7C7B\u578B\u7B5B\u9009","workCenter.filterUpdated":"\u6309\u66F4\u65B0\u65F6\u95F4\u7B5B\u9009","workCenter.allVps":"\u5168\u90E8 VP","workCenter.allTypes":"\u5168\u90E8\u7C7B\u578B","workCenter.anyTime":"\u4E0D\u9650\u65F6\u95F4","workCenter.lastDay":"\u6700\u8FD1 24 \u5C0F\u65F6","workCenter.lastWeek":"\u6700\u8FD1 7 \u5929","workCenter.deleteWorkItem":"\u5220\u9664 Work Item","workCenter.deleteConfirm":"\u6C38\u4E45\u5220\u9664\u8FD9\u4E2A Work Item\u3001\u6267\u884C\u5386\u53F2\u548C\u9644\u4EF6\uFF1F","workCenter.deleteRequiresStop":"\u8BF7\u5148\u505C\u6B62\u8FD9\u4E2A Work Item \u518D\u5220\u9664","workCenter.lastMonth":"\u6700\u8FD1 30 \u5929","workCenter.assignment.planned":"\u8BA1\u5212\u5206\u914D","workCenter.created":"\u521B\u5EFA\u4E8E","workCenter.files":"\u4E2A\u6587\u4EF6","workCenter.loadMore":"\u52A0\u8F7D\u66F4\u591A","workCenter.activeItems":"\u6267\u884C\u4E2D\u7684\u5DE5\u4F5C","workCenter.allItems":"\u5168\u90E8\u5DE5\u4F5C\u9879","workCenter.completedItems":"\u5DF2\u5B8C\u6210","workCenter.watcherActive":"Watcher \u8FD0\u884C\u4E2D","workCenter.loading":"\u6B63\u5728\u52A0\u8F7D\u5DE5\u4F5C\u9879\u2026","workCenter.noTimestamp":"\u65E0\u65F6\u95F4\u6233","workCenter.updated":"\u66F4\u65B0\u65F6\u95F4","workCenter.emptyTitle":"\u8FD8\u6CA1\u6709\u5DE5\u4F5C\u9879","workCenter.emptyBody":"\u5F53\u5DE5\u4F5C\u9700\u8981\u8DE8\u8D8A\u4E00\u6B21\u5BF9\u8BDD\u3001\u7B49\u5F85\u6216\u89D2\u8272\u63A5\u529B\u65F6\uFF0C\u628A\u5B83\u521B\u5EFA\u4E3A\u6301\u4E45\u5DE5\u4F5C\u9879\u3002","workCenter.noAttentionTitle":"\u5F53\u524D\u6CA1\u6709\u9700\u8981\u5904\u7406\u7684\u5DE5\u4F5C\u9879","workCenter.noAttentionBody":"\u7B49\u5F85\u4F60\u56DE\u7B54\u6216\u9700\u8981\u6062\u590D\u7684\u5DE5\u4F5C\u9879\u4F1A\u663E\u793A\u5728\u8FD9\u91CC\u3002","workCenter.noActiveTitle":"\u5F53\u524D\u6CA1\u6709\u6267\u884C\u4E2D\u7684\u5DE5\u4F5C\u9879","workCenter.noActiveBody":"\u8349\u7A3F\u3001\u5C31\u7EEA\u548C\u6267\u884C\u4E2D\u7684\u5DE5\u4F5C\u9879\u4F1A\u663E\u793A\u5728\u8FD9\u91CC\u3002","workCenter.noCompletedTitle":"\u8FD8\u6CA1\u6709\u5DF2\u5B8C\u6210\u7684\u5DE5\u4F5C\u9879","workCenter.noCompletedBody":"\u5B8C\u6210\u540E\u7684\u5DE5\u4F5C\u9879\u4F1A\u663E\u793A\u5728\u8FD9\u91CC\u3002","workCenter.noMatchesTitle":"\u6CA1\u6709\u5339\u914D\u7684\u5DE5\u4F5C\u9879","workCenter.noMatchesBody":"\u5C1D\u8BD5\u8C03\u6574\u641C\u7D22\u5185\u5BB9\u6216\u7B5B\u9009\u6761\u4EF6\u3002","workCenter.selectTitle":"\u5DE5\u4F5C\u9879\u8BE6\u60C5","workCenter.detailLoading":"\u6B63\u5728\u52A0\u8F7D\u5B8C\u6574\u8BE6\u60C5\u2026","workCenter.detailLoadFailed":"\u65E0\u6CD5\u52A0\u8F7D\u5B8C\u6574\u8BE6\u60C5","workCenter.start":"\u5F00\u59CB","workCenter.retry":"\u91CD\u8BD5","workCenter.cancel":"\u53D6\u6D88","workCenter.closeWorkItem":"\u5173\u95ED\u8BE6\u60C5","workCenter.cancelWorkItem":"\u505C\u6B62\u5DE5\u4F5C\u9879","workCenter.cancelWorkItemHint":"\u505C\u6B62\u8FD9\u4E2A\u5DE5\u4F5C\u9879\u53CA\u6240\u6709\u5C1A\u672A\u5B8C\u6210\u7684 Actions\u3002","workCenter.cancelConfirm":"\u505C\u6B62\u8FD9\u4E2A\u5DE5\u4F5C\u9879\u53CA\u5176\u5C1A\u672A\u5B8C\u6210\u7684 Actions\uFF1F","workCenter.stopWorkItem":"\u505C\u6B62\u5DE5\u4F5C\u9879","workCenter.resumeWorkItem":"\u6062\u590D\u5DE5\u4F5C\u9879","workCenter.breadcrumbs":"Work Center \u5BFC\u822A","workCenter.actionNumber":"Action {number}","workCenter.actionBreadcrumb":"Action {number}\uFF1A{description}","workCenter.untitledAction":"\u672A\u547D\u540D Action","workCenter.workItems":"\u5DE5\u4F5C\u9879","workCenter.description":"\u9700\u6C42\u63CF\u8FF0","workCenter.goal":"\u76EE\u6807","workCenter.acceptanceCriteria":"\u9A8C\u6536\u6761\u4EF6","workCenter.noCriteria":"\u672A\u63D0\u4F9B\u9A8C\u6536\u6761\u4EF6","workCenter.failureReason":"\u5931\u8D25\u539F\u56E0","workCenter.workflow":"\u4EFB\u52A1\u6D41","workCenter.triageSummary":"Triage \u6458\u8981","workCenter.actionFlow":"Action \u6D41\u7A0B","workCenter.viewActions":"\u67E5\u770B Actions","workCenter.actionsPanel":"Actions","workCenter.closeActions":"\u5173\u95ED Actions","workCenter.actionCount":"{count} \u4E2A Action","workCenter.noActionSummary":"\u6682\u65E0\u6458\u8981","workCenter.actionProgress":"{completed} / {total} \u4E2A Action","workCenter.currentAction":"\u5F53\u524D Action","workCenter.expandActions":"\u5C55\u5F00 Action","workCenter.collapseActions":"\u6536\u8D77","workCenter.actionObjective":"\u8FD9\u6B21\u8981\u505A\u4EC0\u4E48","workCenter.actionApproach":"\u51C6\u5907\u600E\u4E48\u505A","workCenter.actionExpectedOutcome":"\u671F\u5F85\u7684\u7ED3\u679C","workCenter.dependencies":"\u6765\u6E90 Action","workCenter.actionResult":"\u6700\u65B0\u7ED3\u679C","workCenter.currentProgress":"\u5F53\u524D\u8FDB\u5EA6","workCenter.actionMessages":"\u6D88\u606F","workCenter.loops":"\u4E2A Loop","workCenter.tools":"\u6B21\u5DE5\u5177\u8C03\u7528","workCenter.noActionMessages":"\u8FD8\u6CA1\u6709\u6D88\u606F\u3002","workCenter.actionDetails":"Action \u8BE6\u60C5","workCenter.selectAction":"\u9009\u62E9\u4E00\u4E2A Action","workCenter.backToWorkItems":"\u5DE5\u4F5C\u9879","workCenter.backToActions":"\u8FD4\u56DE Actions","workCenter.you":"\u4F60","workCenter.noRequestDetails":"\u8FD9\u4E2A Action \u6682\u65F6\u6CA1\u6709\u53EF\u7528\u7684\u6267\u884C\u8BB0\u5F55\u3002","workCenter.loadingRequests":"\u6B63\u5728\u52A0\u8F7D\u6267\u884C\u8BB0\u5F55\u2026","workCenter.loadingRequestDetail":"\u6B63\u5728\u52A0\u8F7D\u5DE5\u5177\u8BC1\u636E\u2026","workCenter.requestDetailUnavailable":"\u5DE5\u5177\u8BC1\u636E\u6682\u4E0D\u53EF\u7528\uFF0C\u8BF7\u91CD\u8BD5\u3002","workCenter.noRequestLoops":"\u8FD9\u6B21\u6267\u884C\u6CA1\u6709\u4FDD\u7559\u4E0B\u53EF\u5C55\u793A\u7684 Loop\u3002","workCenter.requestDetailTruncated":"\u6267\u884C\u5185\u5BB9\u8F83\u5927\uFF1A{summarized} \u4E2A Loop \u663E\u793A\u6458\u8981\uFF0C\u53E6\u6709 {omitted} \u4E2A\u8F83\u65E9 Loop \u672A\u663E\u793A\u3002","workCenter.loopDetailTruncated":"\u8FD9\u4E2A Loop \u5185\u5BB9\u8F83\u5927\uFF0C\u5F53\u524D\u663E\u793A\u4FDD\u7559\u4E0B\u6765\u7684\u5DE5\u5177\u8BC1\u636E\u3002","workCenter.loadEarlierMessages":"\u52A0\u8F7D\u66F4\u65E9\u6D88\u606F","workCenter.loadingEarlierMessages":"\u6B63\u5728\u52A0\u8F7D\u66F4\u65E9\u6D88\u606F\u2026","workCenter.unknownModel":"\u672A\u77E5\u6A21\u578B","workCenter.loop":"Loop","workCenter.actionBrief":"\u4EFB\u52A1\u8BF4\u660E","workCenter.executionSummary":"\u6267\u884C\u6458\u8981","workCenter.toolParameters":"\u8C03\u7528\u53C2\u6570","workCenter.toolResult":"\u6267\u884C\u7ED3\u679C","workCenter.noToolCalls":"\u8FD9\u4E2A Loop \u6CA1\u6709\u5DE5\u5177\u8C03\u7528\u3002","workCenter.actionInputPlaceholder":"\u8865\u5145\u4E0A\u4E0B\u6587\u3001\u56DE\u7B54\u95EE\u9898\u6216\u8C03\u6574\u8FD9\u4E2A Action","workCenter.actionInputResumeHint":"\u4F60\u7684\u8F93\u5165\u4F1A\u5E26\u7740\u65B0\u589E\u4E0A\u4E0B\u6587\u7EE7\u7EED\u8FD9\u4E2A Action\u3002","workCenter.waitingQuestionTitle":"\u9700\u8981\u4F60\u7684\u56DE\u7B54","workCenter.actionInputRetryHint":"\u8865\u5145\u4FEE\u6B63\u8BF4\u660E\u6216\u6587\u4EF6\u540E\uFF0C\u4F7F\u7528\u65B0\u4E0A\u4E0B\u6587\u91CD\u65B0\u6267\u884C\u8FD9\u4E2A Action\u3002","workCenter.actionInputContinueHint":"\u8FD9\u91CC\u53EA\u76F4\u63A5\u5E72\u9884\u5F53\u524D Action\u3002","workCenter.actionFailedTitle":"\u8FD9\u4E2A Action \u4E3A\u4EC0\u4E48\u5931\u8D25","workCenter.actionClosedTitle":"\u8FD9\u4E2A Action \u4E3A\u4EC0\u4E48\u88AB\u5173\u95ED","workCenter.failedAt":"\u5931\u8D25\u65F6\u95F4","workCenter.closedAt":"\u5173\u95ED\u65F6\u95F4","workCenter.actionFailureRecovery":"\u5728\u5DE5\u4F5C\u9879\u8F93\u5165\u6846\u4E2D\u9009\u62E9\u6B64 Action\uFF0C\u518D\u53D1\u9001\u4FEE\u6B63\u8BF4\u660E\u3002","workCenter.sendInput":"\u53D1\u9001\u7ED9 Action","workCenter.sendingInput":"\u6B63\u5728\u53D1\u9001\u2026","workCenter.retryAction":"\u91CD\u8BD5 Action","workCenter.sendAndRetryAction":"\u53D1\u9001\u5E76\u91CD\u8BD5 Action","workCenter.coordinatorDecision.guide_actions":"\u5DF2\u66F4\u65B0 Action \u6307\u4EE4","workCenter.coordinatorDecision.replan":"\u5DF2\u66F4\u65B0\u76EE\u6807\u6216\u8BA1\u5212","workCenter.coordinatorDecision.request_human":"\u9700\u8981\u4EBA\u5DE5\u8865\u5145\u4FE1\u606F","workCenter.conversation":"\u5BF9\u8BDD","workCenter.contentPane":"\u5185\u5BB9","workCenter.workItemPanes":"\u5DE5\u4F5C\u9879\u9762\u677F","workCenter.coordinator":"\u534F\u8C03\u8005","workCenter.coordinatorTargetHint":"\u5DE5\u4F5C\u9879\u89C4\u5212\u4E0E\u534F\u8C03","workCenter.composerTarget":"\u6D88\u606F\u76EE\u6807","workCenter.targetUnavailable":"\u6240\u9009 Action \u5DF2\u4E0D\u53EF\u7528","workCenter.targetUnavailableHelp":"\u53D1\u9001\u524D\u8BF7\u9009\u62E9\u5176\u4ED6\u76EE\u6807\uFF1B\u7CFB\u7EDF\u6CA1\u6709\u91CD\u5B9A\u5411\u8FD9\u4EFD\u8349\u7A3F\u3002","workCenter.sendToCoordinatorInstead":"\u6539\u53D1\u7ED9 Coordinator","workCenter.sendToTarget":"\u53D1\u9001\u7ED9 {target}","workCenter.answerWithTarget":"\u5728\u5BF9\u8BDD\u8F93\u5165\u6846\u4E2D\u9009\u62E9\u76F8\u5173\u76EE\u6807\uFF0C\u7136\u540E\u56DE\u590D\u3002","workCenter.conversationThinking":"\u5904\u7406\u4E2D\u2026","workCenter.conversationReadOnly":"\u8FD9\u4E2A\u5DE5\u4F5C\u9879\u5DF2\u5173\u95ED\uFF0C\u5BF9\u8BDD\u8BB0\u5F55\u4ECD\u53EF\u67E5\u770B\u3002","workCenter.conversationPlaceholder":"\u7EE7\u7EED\u8BA8\u8BBA\u8FD9\u4E2A\u5DE5\u4F5C\u9879","workCenter.sendMessage":"\u53D1\u9001\u6D88\u606F","workCenter.messageSpeakerRole":"{name} \xB7 {role}","workCenter.originalRequest":"\u539F\u59CB\u9700\u6C42","workCenter.actionMessageScopeTitle":"\u7ED9\u8FD9\u4E2A Action \u53D1\u6D88\u606F","workCenter.actionMessageScope":"\u6D88\u606F\u53EA\u53D1\u9001\u7ED9\u5F53\u524D Action\u3002","workCenter.actionConversation":"\u5BF9\u8BDD","workCenter.actionConversationWith":"Action \u6267\u884C\u8005","workCenter.actionViews":"Action \u89C6\u56FE","workCenter.actionExecutor":"\u6267\u884C\u8005","workCenter.actionExecutorPending":"\u7B49\u5F85\u5206\u914D\u6267\u884C\u8005","workCenter.actionInformation":"Action \u4FE1\u606F","workCenter.messageExecutor":"\u7ED9 {name} \u53D1\u6D88\u606F","workCenter.actionChatPlaceholder":"\u5728\u5BF9\u8BDD\u8F93\u5165\u6846\u4E2D\u7ED9 {name} \u53D1\u6D88\u606F","workCenter.statusLabel":"\u72B6\u6001","workCenter.llmRequestsLabel":"LLM \u8BF7\u6C42","workCenter.loopsLabel":"Loops","workCenter.toolsLabel":"\u5DE5\u5177","workCenter.tokensLabel":"Tokens","workCenter.workItemMessagePlaceholder":"\u8865\u5145\u6574\u4E2A Work Item \u7684\u65B9\u5411\u6216\u7EA6\u675F","workCenter.sendWorkItemMessage":"\u53D1\u9001\u7ED9 Work Item","workCenter.fromSession":"\u4ECE\u5F53\u524D Session \u521B\u5EFA\u5DE5\u4F5C\u9879","workCenter.llmRequestCount":"{count} \u6B21 LLM \u8BF7\u6C42","workCenter.loopCount":"{count} \u6B21 Loop","workCenter.toolCount":"{count} \u4E2A\u5DE5\u5177","workCenter.tokenCount":"{count} tokens","workCenter.tokenBreakdown":"\u8F93\u5165 {input} / \u8F93\u51FA {output} / \u7F13\u5B58 {cache}","workCenter.guidance":"\u7ED9\u5F53\u524D Action \u8865\u5145\u63D0\u793A","workCenter.guidanceHint":"\u8865\u5145\u7EA6\u675F\uFF0C\u6216\u8C03\u6574\u5F53\u524D Action \u7684\u6267\u884C\u65B9\u5411","workCenter.guidanceRestartHint":"\u53D1\u9001\u540E\u4F1A\u4F7F\u7528\u65B0\u63D0\u793A\u91CD\u542F\u5F53\u524D Action\u3002","workCenter.sendGuidance":"\u53D1\u9001\u63D0\u793A","workCenter.reuseMemory":"\u4F7F\u7528\u76F8\u5173 Agent memory \u548C\u6B64\u9879\u76EE\u7684\u5DF2\u5B8C\u6210\u5DE5\u4F5C","workCenter.reuseMemoryHelp":"\u5305\u62EC\u53D7 scope \u7EA6\u675F\u7684 Agent memory\uFF0C\u4EE5\u53CA canonical \u9879\u76EE\u76EE\u5F55\u76F8\u540C\u7684\u5DF2\u5B8C\u6210 Work Item \u7ED3\u6784\u5316\u6458\u8981\u548C\u8BC1\u636E\uFF1B\u4E0D\u4F1A\u590D\u7528\u539F\u59CB\u5DE5\u5177\u8F93\u51FA\u3002","workCenter.resumeAnswer":"\u56DE\u7B54\u7B49\u5F85\u4E2D\u7684\u95EE\u9898","workCenter.resumeAnswerHint":"\u63D0\u4F9B\u7EE7\u7EED\u6267\u884C\u6240\u9700\u7684\u4FE1\u606F","workCenter.answerInActionDetail":"\u5728\u5BF9\u8BDD\u8F93\u5165\u6846\u4E2D\u5C06\u76EE\u6807\u8BBE\u4E3A\u5F53\u524D Action\uFF0C\u7136\u540E\u56DE\u590D\u3002","workCenter.selectPrompt":"\u9009\u62E9\u4E00\u4E2A\u5DE5\u4F5C\u9879\uFF0C\u67E5\u770B\u5B83\u7684\u6D41\u7A0B\u3002","workCenter.createHint":"\u63CF\u8FF0\u4F60\u9700\u8981\u4EC0\u4E48\uFF0CCoordinator \u4F1A\u6301\u7EED\u521B\u5EFA\u5F53\u524D\u5FC5\u8981\u7684 Actions\uFF0C\u76F4\u5230\u9A8C\u6536\u6761\u4EF6\u5F97\u5230\u9A8C\u8BC1\u3002","workCenter.requirement":"\u9700\u6C42","workCenter.requirementHint":"\u7528\u81EA\u7136\u8BED\u8A00\u63CF\u8FF0\u95EE\u9898\u3001\u671F\u671B\u7ED3\u679C\u548C\u5FC5\u8981\u7EA6\u675F","workCenter.requirementHelp":"Coordinator \u4F1A\u5B8C\u5584\u76EE\u6807\u4E0E\u9A8C\u6536\u6761\u4EF6\uFF0C\u5E76\u968F\u7740\u8BC1\u636E\u4EA7\u751F\u52A8\u6001\u521B\u5EFA Actions\u3002","workCenter.titleField":"\u6807\u9898","workCenter.titleHint":"\u7B80\u77ED\u3001\u660E\u786E\u5730\u63CF\u8FF0\u9884\u671F\u7ED3\u679C","workCenter.goalHint":"\u8BF4\u660E Agent \u5FC5\u987B\u4EA4\u4ED8\u7684\u6700\u7EC8\u7ED3\u679C","workCenter.criteriaHint":"\u6BCF\u884C\u4E00\u6761\u9A8C\u6536\u6761\u4EF6","workCenter.attachments":"\u9644\u4EF6","workCenter.outputs":"\u4EA7\u51FA","workCenter.deliveryTarget":"\u4EA4\u4ED8\u76EE\u6807","workCenter.deliveryTargetAsk":"\u4EA4\u4ED8\u524D\u8BE2\u95EE\u6211","workCenter.deliveryTargetFiles":"\u5DE5\u4F5C\u76EE\u5F55\u4E2D\u7684\u6587\u4EF6","workCenter.deliveryTargetPr":"\u521B\u5EFA\u62C9\u53D6\u8BF7\u6C42","workCenter.deliveryTargetMerge":"\u5408\u5E76\u5DF2\u6279\u51C6\u7684\u62C9\u53D6\u8BF7\u6C42","workCenter.deliveryTargetHelp":"\u8FD9\u662F\u5B8C\u6210\u8FB9\u754C\uFF0C\u4E0D\u4EE3\u8868\u53EF\u4EE5\u7ED5\u8FC7\u8BC4\u5BA1\u6216\u5408\u5E76\u7B56\u7565\u3002","workCenter.attachmentsHelp":"\u56FE\u7247\u3001PDF \u548C\u6587\u672C\u6587\u4EF6\u4F1A\u6301\u7EED\u7ED1\u5B9A\u5230\u6B64 Work Item\uFF0C\u5E76\u63D0\u4F9B\u7ED9\u6BCF\u4E2A Action\u3002","workCenter.attachmentsUnsupported":"\u6240\u9009 Agent \u4E0D\u652F\u6301 Work Item \u9644\u4EF6\u3002","workCenter.addAttachments":"\u6DFB\u52A0\u6587\u4EF6","workCenter.attachmentsUploading":"\u4E0A\u4F20\u4E2D\u2026","workCenter.attachmentsUploadFailed":"\u9644\u4EF6\u4E0A\u4F20\u5931\u8D25","workCenter.pendingEnvelopeLocked":"\u6709\u4E00\u6761\u672A\u786E\u8BA4\u8BF7\u6C42\u5DF2\u9501\u5B9A\u5230\u539F\u59CB\u8EAB\u4EFD\u3002","workCenter.replacePendingAttachments":"\u66FF\u6362\u9644\u4EF6","workCenter.discardPendingEnvelope":"\u653E\u5F03\u5F85\u786E\u8BA4\u8BF7\u6C42","workCenter.pendingEnvelopeChanged":"\u5F85\u786E\u8BA4\u8BF7\u6C42\u5DF2\u53D8\u5316\uFF0C\u8BF7\u91CD\u65B0\u6253\u5F00\u8BE5\u5DE5\u4F5C\u9879\u540E\u518D\u8BD5\u3002","workCenter.removeAttachment":"\u4ECE\u8349\u7A3F\u4E2D\u79FB\u9664","workCenter.previewAttachment":"\u6253\u5F00\u9644\u4EF6","workCenter.openAttachmentNamed":"\u6253\u5F00\u9644\u4EF6 {name}","workCenter.openingAttachment":"\u6B63\u5728\u6253\u5F00\u9644\u4EF6\u2026","workCenter.attachmentPreviewFailed":"\u65E0\u6CD5\u6253\u5F00\u9644\u4EF6\uFF0C\u8BF7\u91CD\u8BD5\u3002","workCenter.attachmentOpenBlocked":"\u6D4F\u89C8\u5668\u963B\u6B62\u4E86\u9644\u4EF6\u7A97\u53E3\uFF0C\u8BF7\u5141\u8BB8\u5F39\u51FA\u7A97\u53E3\u540E\u91CD\u8BD5\u3002","workCenter.execution":"\u6267\u884C\u65B9\u5F0F","workCenter.executionHint":"\u9009\u62E9\u5DE5\u4F5C\u9879\u5728\u54EA\u91CC\u6267\u884C\uFF0C\u4EE5\u53CA\u521B\u5EFA\u540E\u662F\u5426\u7ACB\u5373\u5F00\u59CB\u3002","workCenter.workDir":"\u5DE5\u4F5C\u76EE\u5F55","workCenter.workDirHint":"\u9009\u62E9\u4E00\u4E2A\u5DF2\u5B58\u5728\u7684\u9879\u76EE\u76EE\u5F55","workCenter.chooseFolder":"\u9009\u62E9\u6587\u4EF6\u5939","workCenter.workDirPickerHelp":"\u4ECE\u5F53\u524D Agent \u7684\u771F\u5B9E\u76EE\u5F55\u4E2D\u9009\u62E9\u5DF2\u5B58\u5728\u7684\u6587\u4EF6\u5939\u3002","workCenter.folderPickerHint":"\u9009\u62E9\u8FD9\u4E2A\u5DE5\u4F5C\u9879\u53EF\u4EE5\u8BFB\u53D6\u548C\u4FEE\u6539\u7684\u9879\u76EE\u76EE\u5F55\u3002","workCenter.folderPickerSelectionHint":"\u53CC\u51FB\u8FDB\u5165\u76EE\u5F55\uFF0C\u6216\u9009\u4E2D\u76EE\u5F55\u540E\u786E\u8BA4\u3002","workCenter.startImmediately":"\u7ACB\u5373\u5F00\u59CB","workCenter.startImmediatelyHint":"\u5173\u95ED\u540E\u5C06\u521B\u5EFA\u4E3A\u8349\u7A3F\uFF0C\u786E\u8BA4\u65E0\u8BEF\u540E\u518D\u5F00\u59CB\u3002","workCenter.creating":"\u521B\u5EFA\u4E2D\u2026","workCenter.create":"\u521B\u5EFA","workCenter.status.draft":"\u8349\u7A3F","workCenter.status.ready":"\u5F85\u6267\u884C","workCenter.status.running":"\u6267\u884C\u4E2D","workCenter.status.waiting":"\u7B49\u5F85\u4E2D","workCenter.status.needs_attention":"\u9700\u8981\u5904\u7406","workCenter.status.done":"\u5DF2\u5B8C\u6210","workCenter.status.cancelled":"\u5DF2\u53D6\u6D88","workCenter.status.completed":"\u5DF2\u5B8C\u6210","workCenter.status.failed":"\u5931\u8D25","workCenter.status.closed":"\u5DF2\u5173\u95ED","workCenter.status.superseded":"\u5DF2\u66FF\u4EE3","workCenter.action.triage":"\u5206\u6790","workCenter.action.implement":"\u5B9E\u73B0","workCenter.action.review":"\u8BC4\u5BA1","workCenter.action.integrate":"\u96C6\u6210","workCenter.action.deliver":"\u4EA4\u4ED8","workCenter.action.test":"\u6D4B\u8BD5","workCenter.action.research":"\u7814\u7A76","workCenter.action.design":"\u8BBE\u8BA1","workCenter.action.diagnose":"\u8BCA\u65AD","workCenter.action.migrate":"\u8FC1\u79FB","workCenter.action.document":"\u6587\u6863","workCenter.action.operate":"\u8FD0\u7EF4","workCenter.action.write":"\u5199\u4F5C","workCenter.action.create_vp":"\u521B\u5EFA VP","workCenter.action.custom":"\u81EA\u5B9A\u4E49","workCenter.assignment.auto":"\u4F7F\u7528\u4EFB\u52A1\u6D41\u7B56\u7565","workCenter.model.inherit":"\u4F7F\u7528\u4EFB\u52A1\u6D41\u6A21\u578B","workCenter.model.defaultProvider":"\u9ED8\u8BA4 Provider","workCenter.planPreview":"\u6267\u884C\u8BA1\u5212","workCenter.planPreviewHelp":"\u6839\u636E\u5F53\u524D Agent \u7684 VP \u6C60\u548C\u6A21\u578B\u8BBE\u7F6E\u5B9E\u65F6\u89E3\u6790\u3002","workCenter.settings.title":"\u5DE5\u4F5C\u4E2D\u5FC3\u8BBE\u7F6E","workCenter.settings.subtitle":"\u914D\u7F6E Coordinator\uFF0C\u4EE5\u53CA AI \u52A8\u6001\u89C4\u5212\u4F7F\u7528\u7684 Action \u63D0\u793A\u8BCD\u3001\u6A21\u578B\u548C effort\u3002","workCenter.settings.workflow":"\u4EFB\u52A1\u6D41","workCenter.settings.workflowHelp":"Coordinator \u4F1A\u9488\u5BF9\u4EFB\u52A1\u52A8\u6001\u9009\u62E9 Action \u548C\u6267\u884C\u8005\u3002","workCenter.settings.aiWorkflowHelp":"Coordinator \u53EA\u521B\u5EFA\u5F53\u524D\u5FC5\u8981\u7684\u4EFB\u52A1\u4E13\u5C5E Action\u3002\u5185\u7F6E Action \u7B56\u7565\u662F\u53EF\u590D\u7528\u6A21\u677F\uFF1B\u9700\u8981\u65F6 Coordinator \u53EF\u4EE5\u521B\u5EFA\u7CBE\u786E\u7684\u9886\u57DF\u7C7B\u578B\u3002","workCenter.settings.globalInstructions":"Agent \u5168\u5C40\u6307\u4EE4","workCenter.settings.globalInstructionsHint":"\u4F8B\u5982\uFF1A\u9075\u5FAA\u4ED3\u5E93\u53D1\u5E03\u6D41\u7A0B\u3001\u5FC5\u987B\u72EC\u7ACB\u8BC4\u5BA1\uFF0C\u672A\u7ECF\u660E\u786E\u6279\u51C6\u4E0D\u5F97\u521B\u5EFA\u90E8\u7F72 tag\u3002","workCenter.settings.globalInstructionsHelp":"\u4FDD\u5B58\u5728 Agent \u7EA7\uFF0C\u5E76\u51BB\u7ED3\u8FDB\u6BCF\u4E2A\u65B0 Work Item\uFF1B\u5BF9 triage \u548C\u6240\u6709\u751F\u6210\u7684 Action \u751F\u6548\uFF0C\u4F18\u5148\u7EA7\u4F4E\u4E8E Work Item \u5951\u7EA6\u53CA\u7CFB\u7EDF/\u5DE5\u5177\u5B89\u5168\u89C4\u5219\u3002\u5DF2\u6709 Work Item \u4FDD\u7559\u539F\u5FEB\u7167\u3002","workCenter.settings.actionPolicies":"\u5185\u7F6E Action \u7B56\u7565","workCenter.settings.actionPoliciesHelp":"\u8FD9\u4E9B\u662F\u53EF\u590D\u7528\u7684\u6267\u884C\u57FA\u7EBF\uFF0C\u4E0D\u662F\u56FA\u5B9A\u5DE5\u4F5C\u6D41\u3002\u672A\u77E5\u7684\u9886\u57DF Action \u7C7B\u578B\u4F1A\u4F7F\u7528\u201C\u81EA\u5B9A\u4E49\u201D\u7B56\u7565\uFF0C\u5E76\u4FDD\u7559 triage \u751F\u6210\u7684\u7C7B\u578B\u548C\u4EFB\u52A1\u76EE\u6807\u3002","workCenter.settings.dynamicInstructionHelp":"AI \u4F1A\u52A0\u5165 Work Item \u5951\u7EA6\u3001\u5168\u5C40\u6307\u4EE4\u3001\u524D\u5E8F Action \u4E0A\u4E0B\u6587\u3001memory \u548C\u4EFB\u52A1\u4E13\u5C5E\u76EE\u6807\uFF1B\u8FD9\u91CC\u5B9A\u4E49\u8BE5 Action \u7C7B\u578B\u7684\u53EF\u590D\u7528\u884C\u4E3A\u3002","workCenter.settings.models":"\u6A21\u578B","workCenter.settings.modelsHelp":"Provider \u548C\u51ED\u8BC1\u4ECD\u7531 Agent LLM \u8BBE\u7F6E\u7BA1\u7406\uFF1B\u5DE5\u4F5C\u4E2D\u5FC3\u53EA\u9009\u62E9\u53EF\u7528\u6A21\u578B\u3002","workCenter.settings.dynamicModelsHelp":"Coordinator \u4E0E\u5B9E\u9645\u6267\u884C Action \u7684\u6A21\u578B\u53EF\u4EE5\u5206\u522B\u914D\u7F6E\u3002","workCenter.settings.coordinatorModel":"Coordinator","workCenter.settings.coordinatorModelHelp":"\u7528\u4E8E Work Item \u5BF9\u8BDD\u3001\u4FEE\u6539\u76EE\u6807\u548C\u91CD\u65B0\u89C4\u5212\uFF1B\u4E0D\u4F1A\u6267\u884C\u9879\u76EE\u5DE5\u5177\u3002","workCenter.settings.allActions":"\u6240\u6709 Action \u7684\u515C\u5E95\u7B56\u7565","workCenter.settings.maxConcurrentActions":"\u6700\u5927\u5E76\u53D1 Action \u6570","workCenter.settings.maxConcurrentActionsHelp":"\u9ED8\u8BA4 3\u3002\u975E Git\u3001\u810F\u5DE5\u4F5C\u533A\u3001\u5171\u4EAB\u526F\u4F5C\u7528\u548C\u96C6\u6210 Action \u4ECD\u4F1A\u4E32\u884C\u6267\u884C\u3002","workCenter.workItemType":"\u7C7B\u578B","workCenter.typeAuto":"Auto \u2014 \u7531 LLM \u63A8\u65AD","workCenter.typeHelp":"\u53EF\u9009\u62E9\u4EFB\u52A1\u7C7B\u522B\uFF0C\u4E5F\u53EF\u8BA9 AI \u81EA\u52A8\u63A8\u65AD\uFF1B\u5177\u4F53 Actions \u59CB\u7EC8\u7531 AI \u89C4\u5212\u3002","workCenter.planning":"\u89C4\u5212\u4E2D","workCenter.aiPlan":"Coordinator \u9A71\u52A8\u6267\u884C","workCenter.aiPlanHelp":"Coordinator \u4F1A\u4F9D\u636E\u5F53\u524D\u8BC1\u636E\u9009\u62E9\u4E0B\u4E00\u6279 Action \u548C\u6267\u884C\u8005\uFF0C\u4E0D\u518D\u9884\u5148\u751F\u6210\u5DE5\u4F5C\u6D41\u56FE\uFF1B\u6A21\u578B\u4E0E effort \u7531 Work Center \u8BBE\u7F6E\u63A7\u5236\u3002","workCenter.settings.manageProviders":"\u7BA1\u7406 Agent \u6A21\u578B","workCenter.settings.assignment":"VP \u9009\u62E9","workCenter.settings.assignment.auto":"\u4ECE\u5168\u90E8 VP \u81EA\u52A8\u9009\u62E9","workCenter.settings.assignment.pool":"\u5019\u9009\u6C60","workCenter.settings.assignment.fixed":"\u56FA\u5B9A VP","workCenter.settings.capability":"\u6240\u9700\u80FD\u529B","workCenter.settings.vp":"Virtual Person","workCenter.settings.poolMembers":"\u5019\u9009 VP","workCenter.settings.modelPolicy":"\u6A21\u578B\u7B56\u7565","workCenter.settings.model.inherit":"\u7EE7\u627F VP \u504F\u597D","workCenter.settings.model.primary":"Agent \u4E3B\u6A21\u578B","workCenter.settings.model.fast":"Agent \u5FEB\u6A21\u578B","workCenter.settings.model.specific":"\u6307\u5B9A\u6A21\u578B","workCenter.settings.model":"\u6A21\u578B","workCenter.settings.effort":"\u63A8\u7406\u5F3A\u5EA6","workCenter.settings.effortDefault":"\u6A21\u578B\u9ED8\u8BA4\u503C","workCenter.settings.effortHelp":"\u8986\u76D6\u6240\u9009\u6A21\u578B\u7684\u9ED8\u8BA4\u63A8\u7406\u5F3A\u5EA6\uFF0C\u5E76\u7528\u4E8E\u6240\u6709 Work Center Action\u3002","workCenter.settings.effortChooseModelHelp":"\u9009\u62E9 Agent \u4E3B\u6A21\u578B\u3001\u5FEB\u6A21\u578B\u6216\u6307\u5B9A\u6A21\u578B\u540E\u53EF\u914D\u7F6E\u63A8\u7406\u5F3A\u5EA6\uFF1B\u7EE7\u627F VP \u504F\u597D\u65F6\u4F7F\u7528\u5404 VP \u6A21\u578B\u7684\u9ED8\u8BA4\u503C\u3002","workCenter.settings.effortUnsupportedHelp":"\u6240\u9009\u6A21\u578B\u4E0D\u63D0\u4F9B\u53EF\u914D\u7F6E\u7684\u63A8\u7406\u5F3A\u5EA6\uFF0C\u56E0\u6B64\u4F7F\u7528\u6A21\u578B\u9ED8\u8BA4\u503C\u3002","workCenter.settings.saving":"\u4FDD\u5B58\u4E2D\u2026","workCenter.settings.reload":"\u91CD\u65B0\u52A0\u8F7D\u8BBE\u7F6E","workCenter.settings.conflict":"\u8BBE\u7F6E\u5DF2\u5728\u5176\u4ED6\u4F4D\u7F6E\u66F4\u65B0\uFF0C\u8BF7\u91CD\u65B0\u52A0\u8F7D\u540E\u518D\u4FDD\u5B58\u3002","workCenter.settings.upgradeRequired":"\u5F53\u524D Agent \u7248\u672C\u65E0\u6CD5\u4FDD\u5B58\u5DE5\u4F5C\u4E2D\u5FC3\u8BBE\u7F6E\u3002\u8FD9\u91CC\u4EE5\u53EA\u8BFB\u65B9\u5F0F\u663E\u793A\u5F53\u524D\u503C\uFF1B\u5347\u7EA7 Agent \u540E\u5373\u53EF\u7F16\u8F91\u5E76\u4FDD\u5B58\u3002","workCenter.settings.saveNotConfirmed":"Agent \u672A\u786E\u8BA4\u672C\u6B21\u63D0\u4EA4\u7684\u63D0\u793A\u8BCD\u548C\u6A21\u578B\u7B56\u7565\u3002\u8BBE\u7F6E\u7A97\u53E3\u4E0D\u4F1A\u5173\u95ED\uFF1B\u8BF7\u91CD\u65B0\u52A0\u8F7D\u6216\u5347\u7EA7 Agent \u540E\u518D\u8BD5\u3002","workCenter.settings.addWorkflow":"\u590D\u5236\u4EFB\u52A1\u6D41","workCenter.settings.removeWorkflow":"\u5220\u9664","workCenter.settings.newWorkflow":"\u4EFB\u52A1\u6D41 {index}","workCenter.settings.workflowName":"\u4EFB\u52A1\u6D41\u540D\u79F0","workCenter.settings.newStage":"\u65B0\u9636\u6BB5","workCenter.settings.addStage":"\u6DFB\u52A0\u9636\u6BB5","workCenter.settings.removeStage":"\u5220\u9664\u9636\u6BB5","workCenter.settings.moveUp":"\u4E0A\u79FB\u9636\u6BB5","workCenter.settings.moveDown":"\u4E0B\u79FB\u9636\u6BB5","workCenter.settings.stageType":"\u9636\u6BB5\u7C7B\u578B","workCenter.settings.reviewReturnStage":"\u8981\u6C42\u4FEE\u6539\u65F6\u9000\u56DE\u9636\u6BB5","workCenter.settings.instruction":"\u9636\u6BB5 Prompt","workCenter.settings.instructionHint":"\u5B9A\u4E49\u8FD9\u4E2A\u9636\u6BB5\u5177\u4F53\u8981\u505A\u4EC0\u4E48\u3002","workCenter.settings.instructionHelp":"\u8FD0\u884C\u65F6\u4F1A\u81EA\u52A8\u52A0\u5165 Work Item \u7684\u76EE\u6807\u3001\u9A8C\u6536\u6807\u51C6\u548C\u53EF\u590D\u7528\u4E0A\u4E0B\u6587\u3002","workCenter.settings.instructionReset":"\u6062\u590D\u9ED8\u8BA4\u503C"}});var Tf,Mf=B(()=>{Bl();Nl();Tf={...kf,...If,"quickSend.composer.label":"Quick send","quickSend.composer.send":"Quick send {number}: {name}","common.loading":"Loading...","common.confirm":"OK","common.apply":"Apply","common.cancel":"Cancel","common.delete":"Delete","common.copy":"Copy","common.copied":"Copied","common.close":"Close","common.refresh":"Refresh","common.open":"Open","common.save":"Save","common.saving":"Saving...","common.search":"Search","common.back":"Back","common.noSubdirectories":"No subdirectories","common.drives":"Drives","common.rootDir":"Root","common.comma":", ","common.select":"Select","common.retry":"Retry","mermaid.export":"Export","mermaid.exportMd":"Export MD","mermaid.exportPng":"Export PNG","mermaid.exportJpg":"Export JPG","login.subtitle":"Yeaft Web Code Agent","login.username":"Username","login.password":"Password","login.login":"Login","login.loggingIn":"Logging in...","login.enterUsername":"Please enter your username","login.enterPassword":"Please enter your password","login.noAccount":"Don't have an account?","login.registerWithCode":"Register","login.or":"or","login.usePassword":"Sign in with username & password","login.useSso":"Back to single sign-on","login.noProviders":"No third-party sign-in providers are enabled.","login.microsoft":"Sign in with Microsoft","login.github":"Sign in with GitHub","login.google":"Sign in with Google","login.wechat":"Sign in with WeChat","login.alipay":"Sign in with Alipay","login.wechat.mobileUnsupported":"Sign in with WeChat is only available on PC. Please scan the QR code from a desktop browser.","login.alipay.mobileWaiting":"Waiting for you to confirm in the Alipay app\u2026 Once you finish, return to this page and you will be signed in automatically.","login.alipay.relaunch":"Open Alipay again","login.qr.title":"Scan to sign in","login.qr.titleAlipay":"Sign in with Alipay","login.qr.titleWechat":"Sign in with WeChat","login.qr.hint":"Scan the QR code with your phone to authorize.","login.error.enterUsername":"Please enter your username","login.error.enterPassword":"Please enter your password","login.error.enter6Digit":"Please enter a 6-digit code","login.error.enterInviteCode":"Please enter the invite code","login.error.usernameMinLen":"Username must be at least 2 characters","login.error.passwordMinLen":"Password must be at least 6 characters","login.error.passwordMismatch":"Passwords do not match","login.error.enterVerifyCode":"Please enter the verification code","login.error.loginFailed":"Login failed","login.forgot.link":"Forgot password?","login.forgot.title":"Reset your password","login.forgot.emailHint":"Enter the email address on your account. We will send a 6-digit reset code.","login.forgot.sendCode":"Send Reset Code","login.forgot.sending":"Sending...","login.forgot.codeSent":"If the email is on file, a 6-digit reset code has been sent. Enter it below along with your new password.","login.forgot.resetBtn":"Reset Password","login.forgot.resetting":"Resetting...","login.forgot.success":"Password reset. You can now sign in with your new password.","login.forgot.emailInvalid":"Please enter a valid email","login.register.title":"New User Registration","login.register.inviteCode":"Invite Code","login.register.username":"Username","login.register.password":"Password (min 6 characters)","login.register.confirmPassword":"Confirm Password","login.register.email":"Email (optional)","login.register.submit":"Register","login.register.submitting":"Registering...","login.register.back":"Back to Login","login.register.success":"Registration successful, please login","login.register.enterCode":"Please enter the invite code","login.register.usernameMin":"Username must be at least 2 characters","login.register.passwordMin":"Password must be at least 6 characters","login.register.passwordMismatch":"Passwords do not match","login.totp.setupTitle":"Set Up Two-Factor Authentication","login.totp.setupHint":"Scan the QR code below with Microsoft Authenticator or Google Authenticator","login.totp.manualKey":"Or enter the key manually:","login.totp.enterCode":"Enter 6-digit code","login.totp.complete":"Complete Setup","login.totp.verifying":"Verifying...","login.totp.verify":"Verify","login.totp.prompt":"Enter the code from your Authenticator app","login.totp.invalidCode":"Please enter a 6-digit code","login.email.codeSent":"Verification code sent to {email}","login.email.enterCode":"Enter verification code","login.email.verify":"Verify","login.email.verifying":"Verifying...","login.email.enterCodeError":"Please enter the verification code","chat.agent.select":"Select Agent","chat.agent.manage":"Manage Agents","chat.agent.count":"{count} agents","chat.agent.none":"No Agents","chat.agent.restarting":"Restarting","agentSettings.open":"Agent settings","agentSettings.manage":"Manage","agentSettings.eyebrow":"Local runtime","agentSettings.title":"Agent settings","agentSettings.description":"Inspect and configure each connected Agent without mixing runtime controls into account settings.","agentSettings.agentList":"Agent","agentSettings.categories":"Agent setting categories","agentSettings.categories.operations":"Operations","agentSettings.categories.trace":"Trace","agentSettings.categories.llm":"LLM configuration","agentSettings.selectedAgent":"Selected Agent","agentSettings.online":"Online","agentSettings.offline":"Offline","agentSettings.empty":"No Agents are available.","agentSettings.runtime.title":"Runtime","agentSettings.runtime.description":"Identity, workspace, and local background processing.","agentSettings.runtime.version":"Version","agentSettings.runtime.updateAvailable":"Update available: v{version}","agentSettings.runtime.updateUnknown":"Update status unavailable","agentSettings.runtime.workDir":"Working directory","agentSettings.telemetry.title":"Diagnostics","agentSettings.telemetry.saved":"Diagnostics settings saved.","agentSettings.telemetry.loadFailed":"Failed to load diagnostics settings.","agentSettings.telemetry.saveFailed":"Failed to save diagnostics settings.","agentSettings.maintenance.title":"Maintenance","agentSettings.maintenance.description":"These operations interrupt work running on the selected Agent.","agentSettings.maintenance.upgradeFailed":"Agent upgrade failed.","chat.agent.dream":"Dream","chat.agent.dreamHint":"Enable automatic Dream memory processing","chat.agent.restart":"Restart","chat.agent.restartConfirm":`Are you sure you want to restart Agent "{name}"?
@@ -305,7 +305,7 @@ They will restart after upgrading. {skipped} other Agent(s) will be skipped beca
305
305
  </template>
306
306
  </div>
307
307
  </div>
308
- `,setup(){let e=je(),t=Vue.inject("t"),s=Vue.inject("locale"),n=Vue.ref(""),r=Vue.ref(""),i=Vue.ref(""),o=Vue.ref(""),a=Vue.ref(""),l=Vue.ref(null),c=Vue.ref(null),d=Vue.ref(null),u=Vue.ref(null),p=Vue.ref(null),f=Vue.ref(null),g=Vue.ref(""),v=Vue.ref(localStorage.getItem("loginMode")==="credentials"?"credentials":"oauth");Vue.watch(v,ge=>localStorage.setItem("loginMode",ge));let m=Vue.ref(""),b=Vue.ref(""),h=Vue.ref(""),w=Vue.ref(""),I=Vue.ref(""),y=Vue.ref(!1),k=Vue.ref(""),_=Vue.ref(""),A=Vue.ref(""),Q=Vue.ref(""),H=Vue.ref(""),z=Vue.ref(""),$=Vue.ref(!1),te=Vue.ref(!1),F=()=>{a.value="",e.error=null,k.value="email",_.value="",Q.value="",H.value="",z.value="",A.value="",te.value=!1},S=()=>{k.value="",A.value="",te.value=!1},M=async()=>{if(a.value="",!_.value||!/.+@.+\..+/.test(_.value)){a.value=t("login.forgot.emailInvalid");return}$.value=!0;try{let ge=await e.requestPasswordReset(_.value.trim());if(!ge)return;A.value=ge,k.value="verify"}finally{$.value=!1}},L=async()=>{if(a.value="",!Q.value){a.value=t("login.error.enterVerifyCode");return}if(!H.value||H.value.length<6){a.value=t("login.error.passwordMinLen");return}if(H.value!==z.value){a.value=t("login.error.passwordMismatch");return}$.value=!0;try{await e.verifyPasswordReset(A.value,Q.value,H.value)&&(te.value=!0,setTimeout(()=>{S(),v.value="credentials"},1500))}finally{$.value=!1}},T={alipay:'<svg viewBox="0 0 32 32" width="22" height="22" aria-hidden="true"><rect width="32" height="32" rx="6" fill="#1677FF"/><path fill="#fff" d="M25 18.6c-1.5-.5-3-1-4.6-1.7.4-.8.8-1.6 1.1-2.5h-2.9v-1h3.4v-.5h-3.4v-1.6h-1.4c-.3 0-.3.3-.3.3v1.3h-3.6v.5h3.6v1H11v.5h5.7c-.2.6-.4 1.2-.7 1.7-1.7-.5-3.4-.8-4.7-.8-2.2 0-3.7 1-3.8 2.5-.1 1.4.9 3 3.4 3 1.8 0 3.4-.9 4.7-2.5 2.2 1 4.2 2 6.6 2.9.3-.4.5-.8.7-1.2.2-.4.1-.9-.1-1.3zM11 19.7c-1.8 0-2.3-1.3-2.1-2 .1-.4.6-.9 1.4-1.1.4-.1 1.4-.1 2.4.2.9.2 1.8.5 2.7.8-.7 1.4-2.1 2.1-4.4 2.1z"/></svg>',microsoft:'<svg viewBox="0 0 21 21" width="20" height="20" aria-hidden="true"><rect x="1" y="1" width="9" height="9" fill="#f25022"/><rect x="1" y="11" width="9" height="9" fill="#00a4ef"/><rect x="11" y="1" width="9" height="9" fill="#7fba00"/><rect x="11" y="11" width="9" height="9" fill="#ffb900"/></svg>',github:'<svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true"><path fill="currentColor" d="M12 .3a12 12 0 0 0-3.8 23.4c.6.1.8-.3.8-.6v-2c-3.3.7-4-1.6-4-1.6-.5-1.4-1.3-1.7-1.3-1.7-1.1-.7.1-.7.1-.7 1.2.1 1.8 1.2 1.8 1.2 1.1 1.8 2.8 1.3 3.4 1 .1-.8.4-1.3.8-1.6-2.7-.3-5.5-1.3-5.5-6 0-1.3.5-2.3 1.2-3.2-.1-.3-.5-1.5.1-3.2 0 0 1-.3 3.3 1.2A11.5 11.5 0 0 1 12 5.8c1 0 2 .1 3 .4 2.3-1.5 3.3-1.2 3.3-1.2.6 1.7.2 2.9.1 3.2.7.9 1.2 1.9 1.2 3.2 0 4.6-2.8 5.7-5.5 6 .4.4.8 1.1.8 2.2v3.3c0 .3.2.7.8.6A12 12 0 0 0 12 .3"/></svg>',google:'<svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true"><path fill="#4285F4" d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"/><path fill="#34A853" d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84A11 11 0 0 0 12 23z"/><path fill="#FBBC05" d="M5.84 14.1A6.6 6.6 0 0 1 5.5 12c0-.73.13-1.44.34-2.1V7.07H2.18A11 11 0 0 0 1 12c0 1.77.42 3.45 1.18 4.93l3.66-2.83z"/><path fill="#EA4335" d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1A11 11 0 0 0 2.18 7.07l3.66 2.83C6.71 7.31 9.14 5.38 12 5.38z"/></svg>',wechat:'<svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true"><path fill="#07C160" d="M9.5 4C5.36 4 2 6.91 2 10.5c0 2.07 1.13 3.91 2.86 5.09L4 18l2.7-1.41c.85.22 1.76.34 2.7.34h.51c-.13-.42-.21-.86-.21-1.32 0-3 2.91-5.43 6.5-5.43.32 0 .64.02.95.06C16.63 7.32 13.4 4 9.5 4zM7 8.5a1 1 0 110 2 1 1 0 010-2zm5 0a1 1 0 110 2 1 1 0 010-2zm4.21 3.66c-3.04 0-5.5 1.92-5.5 4.29 0 1.39.91 2.65 2.34 3.46l-.46 1.5 1.93-.95c.55.13 1.13.2 1.69.2 3.04 0 5.5-1.92 5.5-4.21 0-2.37-2.46-4.29-5.5-4.29zm-1.71 2.21a.75.75 0 110 1.5.75.75 0 010-1.5zm3.42 0a.75.75 0 110 1.5.75.75 0 010-1.5z"/></svg>'},D=Vue.computed(()=>["alipay","microsoft","github","google","wechat"].filter(ne=>ne==="microsoft"?e.aadEnabled:!!e.ssoProviders[ne]).map(ne=>({key:ne,label:t(`login.${ne}`),icon:T[ne]}))),U=()=>{c.value&&c.value.focus()},X=()=>{v.value="credentials",Vue.nextTick(()=>{l.value&&l.value.focus()})},G=()=>{let ge=e.qrPanel;if(!ge||!ge.authorizeUrl)return;let ne=`alipays://platformapi/startapp?appId=20000067&url=${encodeURIComponent(ge.authorizeUrl)}`;window.location.href=ne},ce=ge=>{if(a.value="",ge==="microsoft"){e.loginWithMicrosoft();return}if(ge==="alipay"){wo()?e.loginWithSso(ge):er()?e.loginWithAlipayMobile():e.startSsoQr(ge).then(ne=>{ne&&N()});return}if(ge==="wechat"){if(er()||bo()){a.value=t("login.wechat.mobileUnsupported");return}e.startSsoQr(ge).then(ne=>{ne&&N()});return}e.loginWithSso(ge)},be=async()=>{if(!n.value){a.value=t("login.error.enterUsername");return}if(!r.value){a.value=t("login.error.enterPassword");return}a.value="",await e.login(n.value,r.value),Vue.nextTick(()=>{(e.loginStep==="totp"||e.loginStep==="totp-setup")&&u.value?u.value.focus():e.loginStep==="verification"&&d.value&&d.value.focus()})},N=()=>{if(e.qrPanel&&typeof qrcode=="function")try{let ge=qrcode(0,"M");ge.addData(e.qrPanel.authorizeUrl,"Byte"),ge.make(),g.value=ge.createDataURL(6,4)}catch{}},Z=Vue.computed(()=>{let ge=e.qrPanel?.provider;return t(ge==="alipay"?"login.qr.titleAlipay":ge==="wechat"?"login.qr.titleWechat":"login.qr.title")});Vue.watch(()=>e.qrPanel?.authorizeUrl,ge=>{ge?N():g.value=""});let K=async()=>{if(!o.value||o.value.length!==6){a.value=t("login.error.enter6Digit");return}a.value="",await e.verifyTotpCode(o.value)&&e.loginStep==="verification"&&(o.value="",Vue.nextTick(()=>{d.value&&d.value.focus()}))},oe=async()=>{if(!o.value||o.value.length!==6){a.value=t("login.error.enter6Digit");return}a.value="",await e.completeTotpSetup(o.value)&&e.loginStep==="verification"&&(o.value="",Vue.nextTick(()=>{d.value&&d.value.focus()}))},he=async()=>{if(a.value="",y.value=!1,!b.value||b.value.length<2){a.value=t("login.error.usernameMinLen");return}if(!h.value||h.value.length<6){a.value=t("login.error.passwordMinLen");return}if(h.value!==w.value){a.value=t("login.error.passwordMismatch");return}await e.register(b.value,h.value,I.value||void 0,m.value)&&(y.value=!0,n.value=b.value,m.value="",b.value="",h.value="",w.value="",I.value="",setTimeout(()=>e.backToCredentials(),1500))},xe=async()=>{if(!i.value){a.value=t("login.error.enterVerifyCode");return}a.value="",await e.verifyCode(i.value)};return Vue.onMounted(async()=>{await e.checkAuthMode(),D.value.length===0&&v.value==="oauth"&&(v.value="credentials"),e.loginStep==="credentials"&&v.value==="credentials"&&l.value&&l.value.focus()}),Vue.watch(()=>e.loginStep,ge=>{Vue.nextTick(()=>{ge==="credentials"&&v.value==="credentials"&&l.value?l.value.focus():(ge==="totp"||ge==="totp-setup")&&u.value?u.value.focus():ge==="verification"&&d.value?d.value.focus():ge==="register"&&p.value&&p.value.focus()})}),{authStore:e,currentLocale:s,toggleLang:()=>{xr(s.value==="zh-CN"?"en":"zh-CN")},loginMode:v,switchToCredentials:X,enabledProviders:D,handleProviderClick:ce,relaunchAlipayMobile:G,qrCanvas:f,qrDataUrl:g,qrPanelTitle:Z,username:n,password:r,verificationCode:i,totpCode:o,localError:a,usernameInput:l,passwordInput:c,codeInput:d,totpInput:u,regCodeInput:p,regInvitationCode:m,regUsername:b,regPassword:h,regPasswordConfirm:w,regEmail:I,registerSuccess:y,focusPassword:U,login:be,verify:xe,verifyTotp:K,setupTotp:oe,doRegister:he,forgotStep:k,forgotEmail:_,forgotResetToken:A,forgotCode:Q,forgotNewPassword:H,forgotConfirm:z,forgotLoading:$,forgotSuccess:te,enterForgotMode:F,exitForgotMode:S,submitForgotEmail:M,submitForgotReset:L}}}});function zl(){return Ul||(Ul=Vue.reactive({open:!1,id:0,type:"alert",title:"",message:"",value:"",confirmLabel:"",cancelLabel:"",destructive:!1})),Ul}function _f(){Pt||Kl.length===0||(Pt=Kl.shift(),Object.assign(zl(),{open:!0,id:Pt.id,type:Pt.type,title:Pt.options.title||"",message:Pt.options.message||"",value:Pt.options.defaultValue||"",confirmLabel:Pt.options.confirmLabel||"",cancelLabel:Pt.options.cancelLabel||"",destructive:Pt.options.destructive===!0}))}function Yl(e,t,s={}){return new Promise(n=>{Kl.push({id:++uw,type:e,options:{...s,message:String(t||"")},resolve:n}),_f()})}function ot(e,t){return Yl("alert",e,t)}function Fe(e,t){return Yl("confirm",e,t)}function Gl(e,t="",s={}){return Yl("prompt",e,{...s,defaultValue:t})}function ko(e,t=""){if(!Pt)return;let s=Pt;Pt=null,zl().open=!1,s.type==="alert"?s.resolve(void 0):s.type==="confirm"?s.resolve(e===!0):s.resolve(e?t:null),Vue.nextTick(_f)}function Ef(){return zl()}var Kl,Pt,uw,Ul,Ct=B(()=>{Kl=[],Pt=null,uw=0,Ul=null});var So,Ql=B(()=>{Ct();So={name:"ChatHeader",emits:["toggle-sidebar","close-pane"],props:{conversationId:{type:String,default:null},paneId:{type:String,default:null},showClosePane:{type:Boolean,default:!1},canUseWorkbench:{type:Boolean,default:!1}},template:`
308
+ `,setup(){let e=je(),t=Vue.inject("t"),s=Vue.inject("locale"),n=Vue.ref(""),r=Vue.ref(""),i=Vue.ref(""),o=Vue.ref(""),a=Vue.ref(""),l=Vue.ref(null),c=Vue.ref(null),d=Vue.ref(null),u=Vue.ref(null),p=Vue.ref(null),f=Vue.ref(null),g=Vue.ref(""),v=Vue.ref(localStorage.getItem("loginMode")==="credentials"?"credentials":"oauth");Vue.watch(v,ge=>localStorage.setItem("loginMode",ge));let m=Vue.ref(""),b=Vue.ref(""),h=Vue.ref(""),w=Vue.ref(""),I=Vue.ref(""),y=Vue.ref(!1),k=Vue.ref(""),_=Vue.ref(""),A=Vue.ref(""),Q=Vue.ref(""),H=Vue.ref(""),z=Vue.ref(""),$=Vue.ref(!1),te=Vue.ref(!1),F=()=>{a.value="",e.error=null,k.value="email",_.value="",Q.value="",H.value="",z.value="",A.value="",te.value=!1},S=()=>{k.value="",A.value="",te.value=!1},M=async()=>{if(a.value="",!_.value||!/.+@.+\..+/.test(_.value)){a.value=t("login.forgot.emailInvalid");return}$.value=!0;try{let ge=await e.requestPasswordReset(_.value.trim());if(!ge)return;A.value=ge,k.value="verify"}finally{$.value=!1}},L=async()=>{if(a.value="",!Q.value){a.value=t("login.error.enterVerifyCode");return}if(!H.value||H.value.length<6){a.value=t("login.error.passwordMinLen");return}if(H.value!==z.value){a.value=t("login.error.passwordMismatch");return}$.value=!0;try{await e.verifyPasswordReset(A.value,Q.value,H.value)&&(te.value=!0,setTimeout(()=>{S(),v.value="credentials"},1500))}finally{$.value=!1}},T={alipay:'<svg viewBox="0 0 32 32" width="22" height="22" aria-hidden="true"><rect width="32" height="32" rx="6" fill="#1677FF"/><path fill="#fff" d="M25 18.6c-1.5-.5-3-1-4.6-1.7.4-.8.8-1.6 1.1-2.5h-2.9v-1h3.4v-.5h-3.4v-1.6h-1.4c-.3 0-.3.3-.3.3v1.3h-3.6v.5h3.6v1H11v.5h5.7c-.2.6-.4 1.2-.7 1.7-1.7-.5-3.4-.8-4.7-.8-2.2 0-3.7 1-3.8 2.5-.1 1.4.9 3 3.4 3 1.8 0 3.4-.9 4.7-2.5 2.2 1 4.2 2 6.6 2.9.3-.4.5-.8.7-1.2.2-.4.1-.9-.1-1.3zM11 19.7c-1.8 0-2.3-1.3-2.1-2 .1-.4.6-.9 1.4-1.1.4-.1 1.4-.1 2.4.2.9.2 1.8.5 2.7.8-.7 1.4-2.1 2.1-4.4 2.1z"/></svg>',microsoft:'<svg viewBox="0 0 21 21" width="20" height="20" aria-hidden="true"><rect x="1" y="1" width="9" height="9" fill="#f25022"/><rect x="1" y="11" width="9" height="9" fill="#00a4ef"/><rect x="11" y="1" width="9" height="9" fill="#7fba00"/><rect x="11" y="11" width="9" height="9" fill="#ffb900"/></svg>',github:'<svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true"><path fill="currentColor" d="M12 .3a12 12 0 0 0-3.8 23.4c.6.1.8-.3.8-.6v-2c-3.3.7-4-1.6-4-1.6-.5-1.4-1.3-1.7-1.3-1.7-1.1-.7.1-.7.1-.7 1.2.1 1.8 1.2 1.8 1.2 1.1 1.8 2.8 1.3 3.4 1 .1-.8.4-1.3.8-1.6-2.7-.3-5.5-1.3-5.5-6 0-1.3.5-2.3 1.2-3.2-.1-.3-.5-1.5.1-3.2 0 0 1-.3 3.3 1.2A11.5 11.5 0 0 1 12 5.8c1 0 2 .1 3 .4 2.3-1.5 3.3-1.2 3.3-1.2.6 1.7.2 2.9.1 3.2.7.9 1.2 1.9 1.2 3.2 0 4.6-2.8 5.7-5.5 6 .4.4.8 1.1.8 2.2v3.3c0 .3.2.7.8.6A12 12 0 0 0 12 .3"/></svg>',google:'<svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true"><path fill="#4285F4" d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"/><path fill="#34A853" d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84A11 11 0 0 0 12 23z"/><path fill="#FBBC05" d="M5.84 14.1A6.6 6.6 0 0 1 5.5 12c0-.73.13-1.44.34-2.1V7.07H2.18A11 11 0 0 0 1 12c0 1.77.42 3.45 1.18 4.93l3.66-2.83z"/><path fill="#EA4335" d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1A11 11 0 0 0 2.18 7.07l3.66 2.83C6.71 7.31 9.14 5.38 12 5.38z"/></svg>',wechat:'<svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true"><path fill="#07C160" d="M9.5 4C5.36 4 2 6.91 2 10.5c0 2.07 1.13 3.91 2.86 5.09L4 18l2.7-1.41c.85.22 1.76.34 2.7.34h.51c-.13-.42-.21-.86-.21-1.32 0-3 2.91-5.43 6.5-5.43.32 0 .64.02.95.06C16.63 7.32 13.4 4 9.5 4zM7 8.5a1 1 0 110 2 1 1 0 010-2zm5 0a1 1 0 110 2 1 1 0 010-2zm4.21 3.66c-3.04 0-5.5 1.92-5.5 4.29 0 1.39.91 2.65 2.34 3.46l-.46 1.5 1.93-.95c.55.13 1.13.2 1.69.2 3.04 0 5.5-1.92 5.5-4.21 0-2.37-2.46-4.29-5.5-4.29zm-1.71 2.21a.75.75 0 110 1.5.75.75 0 010-1.5zm3.42 0a.75.75 0 110 1.5.75.75 0 010-1.5z"/></svg>'},D=Vue.computed(()=>["alipay","microsoft","github","google","wechat"].filter(ne=>ne==="microsoft"?e.aadEnabled:!!e.ssoProviders[ne]).map(ne=>({key:ne,label:t(`login.${ne}`),icon:T[ne]}))),j=()=>{c.value&&c.value.focus()},X=()=>{v.value="credentials",Vue.nextTick(()=>{l.value&&l.value.focus()})},G=()=>{let ge=e.qrPanel;if(!ge||!ge.authorizeUrl)return;let ne=`alipays://platformapi/startapp?appId=20000067&url=${encodeURIComponent(ge.authorizeUrl)}`;window.location.href=ne},ce=ge=>{if(a.value="",ge==="microsoft"){e.loginWithMicrosoft();return}if(ge==="alipay"){wo()?e.loginWithSso(ge):er()?e.loginWithAlipayMobile():e.startSsoQr(ge).then(ne=>{ne&&N()});return}if(ge==="wechat"){if(er()||bo()){a.value=t("login.wechat.mobileUnsupported");return}e.startSsoQr(ge).then(ne=>{ne&&N()});return}e.loginWithSso(ge)},be=async()=>{if(!n.value){a.value=t("login.error.enterUsername");return}if(!r.value){a.value=t("login.error.enterPassword");return}a.value="",await e.login(n.value,r.value),Vue.nextTick(()=>{(e.loginStep==="totp"||e.loginStep==="totp-setup")&&u.value?u.value.focus():e.loginStep==="verification"&&d.value&&d.value.focus()})},N=()=>{if(e.qrPanel&&typeof qrcode=="function")try{let ge=qrcode(0,"M");ge.addData(e.qrPanel.authorizeUrl,"Byte"),ge.make(),g.value=ge.createDataURL(6,4)}catch{}},Z=Vue.computed(()=>{let ge=e.qrPanel?.provider;return t(ge==="alipay"?"login.qr.titleAlipay":ge==="wechat"?"login.qr.titleWechat":"login.qr.title")});Vue.watch(()=>e.qrPanel?.authorizeUrl,ge=>{ge?N():g.value=""});let K=async()=>{if(!o.value||o.value.length!==6){a.value=t("login.error.enter6Digit");return}a.value="",await e.verifyTotpCode(o.value)&&e.loginStep==="verification"&&(o.value="",Vue.nextTick(()=>{d.value&&d.value.focus()}))},oe=async()=>{if(!o.value||o.value.length!==6){a.value=t("login.error.enter6Digit");return}a.value="",await e.completeTotpSetup(o.value)&&e.loginStep==="verification"&&(o.value="",Vue.nextTick(()=>{d.value&&d.value.focus()}))},he=async()=>{if(a.value="",y.value=!1,!b.value||b.value.length<2){a.value=t("login.error.usernameMinLen");return}if(!h.value||h.value.length<6){a.value=t("login.error.passwordMinLen");return}if(h.value!==w.value){a.value=t("login.error.passwordMismatch");return}await e.register(b.value,h.value,I.value||void 0,m.value)&&(y.value=!0,n.value=b.value,m.value="",b.value="",h.value="",w.value="",I.value="",setTimeout(()=>e.backToCredentials(),1500))},xe=async()=>{if(!i.value){a.value=t("login.error.enterVerifyCode");return}a.value="",await e.verifyCode(i.value)};return Vue.onMounted(async()=>{await e.checkAuthMode(),D.value.length===0&&v.value==="oauth"&&(v.value="credentials"),e.loginStep==="credentials"&&v.value==="credentials"&&l.value&&l.value.focus()}),Vue.watch(()=>e.loginStep,ge=>{Vue.nextTick(()=>{ge==="credentials"&&v.value==="credentials"&&l.value?l.value.focus():(ge==="totp"||ge==="totp-setup")&&u.value?u.value.focus():ge==="verification"&&d.value?d.value.focus():ge==="register"&&p.value&&p.value.focus()})}),{authStore:e,currentLocale:s,toggleLang:()=>{xr(s.value==="zh-CN"?"en":"zh-CN")},loginMode:v,switchToCredentials:X,enabledProviders:D,handleProviderClick:ce,relaunchAlipayMobile:G,qrCanvas:f,qrDataUrl:g,qrPanelTitle:Z,username:n,password:r,verificationCode:i,totpCode:o,localError:a,usernameInput:l,passwordInput:c,codeInput:d,totpInput:u,regCodeInput:p,regInvitationCode:m,regUsername:b,regPassword:h,regPasswordConfirm:w,regEmail:I,registerSuccess:y,focusPassword:j,login:be,verify:xe,verifyTotp:K,setupTotp:oe,doRegister:he,forgotStep:k,forgotEmail:_,forgotResetToken:A,forgotCode:Q,forgotNewPassword:H,forgotConfirm:z,forgotLoading:$,forgotSuccess:te,enterForgotMode:F,exitForgotMode:S,submitForgotEmail:M,submitForgotReset:L}}}});function zl(){return Ul||(Ul=Vue.reactive({open:!1,id:0,type:"alert",title:"",message:"",value:"",confirmLabel:"",cancelLabel:"",destructive:!1})),Ul}function _f(){Pt||Kl.length===0||(Pt=Kl.shift(),Object.assign(zl(),{open:!0,id:Pt.id,type:Pt.type,title:Pt.options.title||"",message:Pt.options.message||"",value:Pt.options.defaultValue||"",confirmLabel:Pt.options.confirmLabel||"",cancelLabel:Pt.options.cancelLabel||"",destructive:Pt.options.destructive===!0}))}function Yl(e,t,s={}){return new Promise(n=>{Kl.push({id:++uw,type:e,options:{...s,message:String(t||"")},resolve:n}),_f()})}function ot(e,t){return Yl("alert",e,t)}function Fe(e,t){return Yl("confirm",e,t)}function Gl(e,t="",s={}){return Yl("prompt",e,{...s,defaultValue:t})}function ko(e,t=""){if(!Pt)return;let s=Pt;Pt=null,zl().open=!1,s.type==="alert"?s.resolve(void 0):s.type==="confirm"?s.resolve(e===!0):s.resolve(e?t:null),Vue.nextTick(_f)}function Ef(){return zl()}var Kl,Pt,uw,Ul,Ct=B(()=>{Kl=[],Pt=null,uw=0,Ul=null});var So,Ql=B(()=>{Ct();So={name:"ChatHeader",emits:["toggle-sidebar","close-pane"],props:{conversationId:{type:String,default:null},paneId:{type:String,default:null},showClosePane:{type:Boolean,default:!1},canUseWorkbench:{type:Boolean,default:!1}},template:`
309
309
  <header class="chat-header">
310
310
  <!-- Mobile sidebar toggle \u2014 hidden on desktop and in split mode -->
311
311
  <button class="header-sidebar-toggle" v-if="!store.isSplitMode"
@@ -410,7 +410,7 @@ They will restart after upgrading. {skipped} other Agent(s) will be skipped beca
410
410
  </button>
411
411
  </div>
412
412
  </header>
413
- `,setup(e){let t=Pinia.useChatStore(),s=Vue.inject("t"),n=Vue.computed(()=>e.conversationId||t.currentConversation),r=Vue.computed(()=>n.value&&t.conversations.find(N=>N.id===n.value)||null),i=Vue.computed(()=>r.value?.capabilities||null),o=Vue.computed(()=>n.value?(r.value?.provider||"claude-code")==="claude-code":!0),a=(N,Z=!0)=>{let K=i.value;return K?!!K[N]:o.value?Z:!1},l=Vue.computed(()=>a("compact")),c=Vue.computed(()=>a("clear")),d=Vue.computed(()=>a("expert")),u=Vue.computed(()=>a("mcp")),p=Vue.computed(()=>{if(!n.value)return"Yeaft";let N=t.getConversationTitle(n.value);if(N)return N;let K=t.conversations.find(oe=>oe.id===n.value)?.workDir||t.currentWorkDir;if(K){let oe=K.split(/[/\\]/);return oe[oe.length-1]||oe[oe.length-2]||K}return s("chatHeader.newConv")}),f=Vue.computed(()=>{if(!n.value)return"";let Z=t.conversations.find(oe=>oe.id===n.value)?.agentId;return Z&&t.agents.find(oe=>oe.id===Z)?.name||""}),g=Vue.computed(()=>t.clearStatus?.conversationId===n.value?!0:t.compactStatus?t.compactStatus.conversationId===n.value:!1),v=Vue.computed(()=>t.clearStatus?.conversationId===n.value?t.clearStatus.status==="clearing"?"compacting":"completed":t.compactStatus?t.compactStatus.status==="compacting"?"compacting":"completed":""),m=Vue.computed(()=>t.clearStatus?.conversationId===n.value?t.clearStatus.status==="clearing":t.compactStatus?.status==="compacting"),b=Vue.computed(()=>t.clearStatus?.conversationId===n.value?t.clearStatus.status==="clearing"?s("chatHeader.clearing"):s("chatHeader.clearDone"):t.compactStatus?t.compactStatus.status==="compacting"?t.compactStatus.message||s("chatHeader.compacting"):t.compactStatus.message||s("chatHeader.compactDone"):""),h=Vue.computed(()=>n.value&&(t.conversations.find(Z=>Z.id===n.value)?.workDir||t.currentWorkDir)||""),w=Vue.computed(()=>!t.contextUsage||t.contextUsage.conversationId!==n.value?null:t.contextUsage),I=Vue.computed(()=>{let N=w.value?.percentage||0;return N>=80?"context-danger":N>=50?"context-warn":"context-ok"}),y=Vue.computed(()=>{if(!w.value)return"";let N=(w.value.inputTokens/1e3).toFixed(0),Z=(w.value.maxTokens/1e3).toFixed(0);return`Context: ${N}k / ${Z}k`}),k=Vue.computed(()=>t.isRefreshingSession(n.value)),_=Vue.computed(()=>t.compactStatus?.status==="compacting"&&t.compactStatus?.conversationId===n.value),A=Vue.computed(()=>t.clearStatus?.status==="clearing"&&t.clearStatus?.conversationId===n.value),Q=Vue.computed(()=>n.value?!t.isRefreshingSession(n.value):!1),H=()=>{if(t.isRefreshingSession(n.value)||!n.value)return;t.setRefreshingSession(n.value,!0),t.startRefreshTimeout(n.value),t.requestChatHistory(n.value,{mode:"recent",turns:5})||t.setRefreshingSession(n.value,!1)},z=()=>{_.value||t.sendMessage("/compact")},$=()=>{window.location.reload()},te=async()=>{A.value||await Fe(s("chatHeader.confirmClear"),{destructive:!0})&&(t.clearStatus={conversationId:n.value,status:"clearing"},t.sendMessage("/clear"))},F=Vue.computed(()=>t.getPaneRightPanel(e.paneId)),S=Vue.ref(null),M=Vue.computed(()=>{if(!t.mcpPanelOpen||!S.value)return null;let N=S.value.getBoundingClientRect();return{top:`${N.bottom+6}px`,right:`${window.innerWidth-N.right}px`}}),L=Vue.computed(()=>t.currentMcpServers.filter(N=>N.enabled).length),T=Vue.computed(()=>!!t.conversations.find(Z=>Z.id===n.value)?.needRestart),D=()=>{t.mcpPanelOpen=!t.mcpPanelOpen},U=()=>{t.togglePaneRightPanel("experts",e.paneId)},X=()=>{t.togglePaneRightPanel("subagents",e.paneId)},G=Vue.computed(()=>t.runningSubagentCount),ce=(N,Z)=>{t.toggleConversationMcp(N,Z)},be=N=>{t.mcpPanelOpen&&!N.target.closest(".mcp-dropdown")&&!N.target.closest(".mcp-config-wrapper")&&(t.mcpPanelOpen=!1)};return Vue.onMounted(()=>{document.addEventListener("click",be)}),Vue.onUnmounted(()=>{document.removeEventListener("click",be)}),{store:t,effectiveConvId:n,effectiveRightPanel:F,isClaudeCode:o,canCompact:l,canClear:c,canExpert:d,canMcp:u,headerTitle:p,showStatusBanner:g,statusBannerClass:v,statusBannerSpinner:m,statusBannerMessage:b,contextUsage:w,contextColorClass:I,contextLabel:y,isRefreshing:k,isCompacting:_,isClearing:A,canRefresh:Q,refreshSession:H,reloadPage:$,compactContext:z,clearMessages:te,mcpBtnRef:S,mcpDropdownStyle:M,mcpEnabledCount:L,currentConvNeedRestart:T,toggleMcpPanel:D,toggleMcpServer:ce,toggleExpertPanel:U,toggleSubAgentPanel:X,runningSubagentCount:G}}}});function tr(e=globalThis.location){let t=e?.protocol==="https:"?"wss:":"ws:",s=e?.host||"localhost";return`${t}//${s}`}function Io(){return"npm install -g @yeaft/webchat-agent"}function Co(){return"yeaft-agent llm use github-copilot --model gpt-5.5"}function Ao(e=null){let t=e&&(e.username||e.displayName)||"agent",s=2166136261;for(let i=0;i<t.length;i++)s^=t.charCodeAt(i),s=s+((s<<1)+(s<<4)+(s<<7)+(s<<8)+(s<<24))>>>0;let n=s.toString(16).padStart(8,"0").slice(0,6);return`${String(t).replace(/[^A-Za-z0-9_-]/g,"-").replace(/^-+|-+$/g,"")||"agent"}-${n}`}function xo({profile:e=null,agentSecret:t="",serverWsUrl:s=tr()}={}){if(!t)return"";let n=Ao(e);return`yeaft-agent install --server ${s} --secret ${t} --name ${n}`}function Df({profile:e=null,agentSecret:t="",serverWsUrl:s=tr()}={}){if(!t)return"";let n=Ao(e);return`yeaft-agent container install --server ${s} --secret ${t} --name ${n}`}var Xl=B(()=>{});function pw(e,t){return typeof e=="string"?e?{src:e,alt:t}:null:!e||typeof e!="object"||!e.src?null:{src:e.src,alt:e.alt||t}}function As(e,{alt:t="Preview",closeLabel:s="Close",previousLabel:n="Previous image",nextLabel:r="Next image",positionLabel:i=(p,f)=>`${p} / ${f}`,zoomOutLabel:o="Zoom out",zoomInLabel:a="Zoom in",resetZoomLabel:l="Reset zoom",gallery:c=null,initialIndex:d=null,trigger:u=null}={}){if(!e)return null;let p=(Array.isArray(c)?c:[e]).map(Z=>pw(Z,t)).filter(Boolean);p.length===0&&p.push({src:e,alt:t});let f=Number.isInteger(d)&&d>=0&&d<p.length?d:p.findIndex(Z=>Z.src===e);f<0&&(f=0);let g=document.createElement("div");g.className="image-preview-overlay",g.setAttribute("role","dialog"),g.setAttribute("aria-modal","true"),g.setAttribute("aria-label",t);let v=document.createElement("img");v.className="image-preview-img",v.draggable=!1;let m=(Z,K,oe)=>{let he=document.createElement("button");return he.type="button",he.className=Z,he.setAttribute("aria-label",K),he.setAttribute("title",K),he.textContent=oe,he},b=m("image-preview-close",s,"\xD7"),h=document.createElement("div");h.className="image-preview-zoom-controls";let w=m("image-preview-zoom-button",o,"\u2212"),I=m("image-preview-zoom-reset",l,"100%"),y=m("image-preview-zoom-button",a,"+");h.append(w,I,y);let k=1,_=0,A=0,Q=null,H=()=>{if(k<=1){_=0,A=0;return}let Z=Math.max(0,(v.offsetWidth*k-g.clientWidth)/2),K=Math.max(0,(v.offsetHeight*k-g.clientHeight)/2);_=Math.max(-Z,Math.min(Z,_)),A=Math.max(-K,Math.min(K,A))},z=()=>{H(),v.style.transform=`translate(${_}px, ${A}px) scale(${k})`,v.classList.toggle("is-zoomed",k>1),I.textContent=`${Math.round(k*100)}%`,w.disabled=k<=$f,y.disabled=k>=Lf},$=(Z,K=null)=>{let oe=k;if(k=Math.max($f,Math.min(Lf,Z)),k<=1)_=0,A=0;else if(K&&Number.isFinite(K.clientX)&&Number.isFinite(K.clientY)&&oe>0&&k!==oe){let he=g.getBoundingClientRect(),xe=K.clientX-(he.left+he.width/2),_e=K.clientY-(he.top+he.height/2),ge=k/oe;_=xe-(xe-_)*ge,A=_e-(_e-A)*ge}z()},te=()=>{k=1,_=0,A=0,z()},F=null,S=null,M=null;p.length>1&&(F=document.createElement("button"),F.type="button",F.className="image-preview-navigation image-preview-previous",F.setAttribute("aria-label",n),F.setAttribute("title",n),F.innerHTML='<svg viewBox="0 0 24 24" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="m15 18-6-6 6-6"/></svg>',S=document.createElement("button"),S.type="button",S.className="image-preview-navigation image-preview-next",S.setAttribute("aria-label",r),S.setAttribute("title",r),S.innerHTML='<svg viewBox="0 0 24 24" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="m9 18 6-6-6-6"/></svg>',M=document.createElement("div"),M.className="image-preview-position",M.setAttribute("aria-live","polite"));let L=()=>{let Z=p[f];v.src=Z.src,v.alt=Z.alt,g.setAttribute("aria-label",Z.alt),M&&(M.textContent=typeof i=="function"?i(f+1,p.length):`${f+1} / ${p.length}`),te()},T=Z=>{f=(f+Z+p.length)%p.length,L()};L(),g.append(v),F&&S&&M&&g.append(F,S,M),g.append(b,h),document.body.appendChild(g),g.offsetHeight,g.classList.add("visible"),b.focus();let D=!1,U=null,X=()=>{U&&clearTimeout(U),U=null,g.isConnected&&g.remove()},G=()=>{D||(D=!0,g.classList.remove("visible"),g.addEventListener("transitionend",X,{once:!0}),U=setTimeout(X,250),document.removeEventListener("keydown",be),window.removeEventListener("resize",z),u?.isConnected&&typeof u.focus=="function"&&u.focus())},ce=()=>[F,S,w,I,y,b].filter(Z=>Z&&!Z.disabled),be=Z=>{if(Z.key==="Escape"){Z.preventDefault(),G();return}if(Z.key==="+"||Z.key==="="){Z.preventDefault(),$(k+si);return}if(Z.key==="-"||Z.key==="_"){Z.preventDefault(),$(k-si);return}if(Z.key==="0"){Z.preventDefault(),te();return}if(p.length>1&&(Z.key==="ArrowLeft"||Z.key==="ArrowRight")){Z.preventDefault(),T(Z.key==="ArrowLeft"?-1:1);return}if(Z.key==="Tab"){Z.preventDefault();let K=ce(),oe=K.indexOf(document.activeElement),he=Z.shiftKey?-1:1,xe=oe<0?0:(oe+he+K.length)%K.length;K[xe]?.focus()}};b.addEventListener("click",G),w.addEventListener("click",()=>$(k-si)),I.addEventListener("click",te),y.addEventListener("click",()=>$(k+si)),F?.addEventListener("click",()=>T(-1)),S?.addEventListener("click",()=>T(1)),v.addEventListener("load",z),v.addEventListener("wheel",Z=>{Z.preventDefault();let K=Z.deltaY<0?1:-1;$(k+K*si,Z)},{passive:!1}),v.addEventListener("pointerdown",Z=>{k<=1||Z.button!==0||(Z.preventDefault(),Q={pointerId:Z.pointerId,x:Z.clientX,y:Z.clientY,panX:_,panY:A},v.classList.add("is-dragging"),v.setPointerCapture?.(Z.pointerId))}),v.addEventListener("pointermove",Z=>{!Q||Q.pointerId!==Z.pointerId||(_=Q.panX+Z.clientX-Q.x,A=Q.panY+Z.clientY-Q.y,z())});let N=Z=>{!Q||Q.pointerId!==Z.pointerId||(v.releasePointerCapture?.(Z.pointerId),Q=null,v.classList.remove("is-dragging"))};return v.addEventListener("pointerup",N),v.addEventListener("pointercancel",N),g.addEventListener("click",Z=>{Z.target===g&&G()}),document.addEventListener("keydown",be),window.addEventListener("resize",z),g}var $f,Lf,si,ni=B(()=>{$f=.5,Lf=4,si=.25});function hw(e){let t=[];for(let s of e)s==="\b"?t.pop():t.push(s);return t.join("")}function mw(e){let t=e.split("\r"),s=t[t.length-1]||"";return hw(s)}function Hf(e){return e.replace(/\r\n/g,`
413
+ `,setup(e){let t=Pinia.useChatStore(),s=Vue.inject("t"),n=Vue.computed(()=>e.conversationId||t.currentConversation),r=Vue.computed(()=>n.value&&t.conversations.find(N=>N.id===n.value)||null),i=Vue.computed(()=>r.value?.capabilities||null),o=Vue.computed(()=>n.value?(r.value?.provider||"claude-code")==="claude-code":!0),a=(N,Z=!0)=>{let K=i.value;return K?!!K[N]:o.value?Z:!1},l=Vue.computed(()=>a("compact")),c=Vue.computed(()=>a("clear")),d=Vue.computed(()=>a("expert")),u=Vue.computed(()=>a("mcp")),p=Vue.computed(()=>{if(!n.value)return"Yeaft";let N=t.getConversationTitle(n.value);if(N)return N;let K=t.conversations.find(oe=>oe.id===n.value)?.workDir||t.currentWorkDir;if(K){let oe=K.split(/[/\\]/);return oe[oe.length-1]||oe[oe.length-2]||K}return s("chatHeader.newConv")}),f=Vue.computed(()=>{if(!n.value)return"";let Z=t.conversations.find(oe=>oe.id===n.value)?.agentId;return Z&&t.agents.find(oe=>oe.id===Z)?.name||""}),g=Vue.computed(()=>t.clearStatus?.conversationId===n.value?!0:t.compactStatus?t.compactStatus.conversationId===n.value:!1),v=Vue.computed(()=>t.clearStatus?.conversationId===n.value?t.clearStatus.status==="clearing"?"compacting":"completed":t.compactStatus?t.compactStatus.status==="compacting"?"compacting":"completed":""),m=Vue.computed(()=>t.clearStatus?.conversationId===n.value?t.clearStatus.status==="clearing":t.compactStatus?.status==="compacting"),b=Vue.computed(()=>t.clearStatus?.conversationId===n.value?t.clearStatus.status==="clearing"?s("chatHeader.clearing"):s("chatHeader.clearDone"):t.compactStatus?t.compactStatus.status==="compacting"?t.compactStatus.message||s("chatHeader.compacting"):t.compactStatus.message||s("chatHeader.compactDone"):""),h=Vue.computed(()=>n.value&&(t.conversations.find(Z=>Z.id===n.value)?.workDir||t.currentWorkDir)||""),w=Vue.computed(()=>!t.contextUsage||t.contextUsage.conversationId!==n.value?null:t.contextUsage),I=Vue.computed(()=>{let N=w.value?.percentage||0;return N>=80?"context-danger":N>=50?"context-warn":"context-ok"}),y=Vue.computed(()=>{if(!w.value)return"";let N=(w.value.inputTokens/1e3).toFixed(0),Z=(w.value.maxTokens/1e3).toFixed(0);return`Context: ${N}k / ${Z}k`}),k=Vue.computed(()=>t.isRefreshingSession(n.value)),_=Vue.computed(()=>t.compactStatus?.status==="compacting"&&t.compactStatus?.conversationId===n.value),A=Vue.computed(()=>t.clearStatus?.status==="clearing"&&t.clearStatus?.conversationId===n.value),Q=Vue.computed(()=>n.value?!t.isRefreshingSession(n.value):!1),H=()=>{if(t.isRefreshingSession(n.value)||!n.value)return;t.setRefreshingSession(n.value,!0),t.startRefreshTimeout(n.value),t.requestChatHistory(n.value,{mode:"recent",turns:5})||t.setRefreshingSession(n.value,!1)},z=()=>{_.value||t.sendMessage("/compact")},$=()=>{window.location.reload()},te=async()=>{A.value||await Fe(s("chatHeader.confirmClear"),{destructive:!0})&&(t.clearStatus={conversationId:n.value,status:"clearing"},t.sendMessage("/clear"))},F=Vue.computed(()=>t.getPaneRightPanel(e.paneId)),S=Vue.ref(null),M=Vue.computed(()=>{if(!t.mcpPanelOpen||!S.value)return null;let N=S.value.getBoundingClientRect();return{top:`${N.bottom+6}px`,right:`${window.innerWidth-N.right}px`}}),L=Vue.computed(()=>t.currentMcpServers.filter(N=>N.enabled).length),T=Vue.computed(()=>!!t.conversations.find(Z=>Z.id===n.value)?.needRestart),D=()=>{t.mcpPanelOpen=!t.mcpPanelOpen},j=()=>{t.togglePaneRightPanel("experts",e.paneId)},X=()=>{t.togglePaneRightPanel("subagents",e.paneId)},G=Vue.computed(()=>t.runningSubagentCount),ce=(N,Z)=>{t.toggleConversationMcp(N,Z)},be=N=>{t.mcpPanelOpen&&!N.target.closest(".mcp-dropdown")&&!N.target.closest(".mcp-config-wrapper")&&(t.mcpPanelOpen=!1)};return Vue.onMounted(()=>{document.addEventListener("click",be)}),Vue.onUnmounted(()=>{document.removeEventListener("click",be)}),{store:t,effectiveConvId:n,effectiveRightPanel:F,isClaudeCode:o,canCompact:l,canClear:c,canExpert:d,canMcp:u,headerTitle:p,showStatusBanner:g,statusBannerClass:v,statusBannerSpinner:m,statusBannerMessage:b,contextUsage:w,contextColorClass:I,contextLabel:y,isRefreshing:k,isCompacting:_,isClearing:A,canRefresh:Q,refreshSession:H,reloadPage:$,compactContext:z,clearMessages:te,mcpBtnRef:S,mcpDropdownStyle:M,mcpEnabledCount:L,currentConvNeedRestart:T,toggleMcpPanel:D,toggleMcpServer:ce,toggleExpertPanel:j,toggleSubAgentPanel:X,runningSubagentCount:G}}}});function tr(e=globalThis.location){let t=e?.protocol==="https:"?"wss:":"ws:",s=e?.host||"localhost";return`${t}//${s}`}function Io(){return"npm install -g @yeaft/webchat-agent"}function Co(){return"yeaft-agent llm use github-copilot --model gpt-5.5"}function Ao(e=null){let t=e&&(e.username||e.displayName)||"agent",s=2166136261;for(let i=0;i<t.length;i++)s^=t.charCodeAt(i),s=s+((s<<1)+(s<<4)+(s<<7)+(s<<8)+(s<<24))>>>0;let n=s.toString(16).padStart(8,"0").slice(0,6);return`${String(t).replace(/[^A-Za-z0-9_-]/g,"-").replace(/^-+|-+$/g,"")||"agent"}-${n}`}function xo({profile:e=null,agentSecret:t="",serverWsUrl:s=tr()}={}){if(!t)return"";let n=Ao(e);return`yeaft-agent install --server ${s} --secret ${t} --name ${n}`}function Df({profile:e=null,agentSecret:t="",serverWsUrl:s=tr()}={}){if(!t)return"";let n=Ao(e);return`yeaft-agent container install --server ${s} --secret ${t} --name ${n}`}var Xl=B(()=>{});function pw(e,t){return typeof e=="string"?e?{src:e,alt:t}:null:!e||typeof e!="object"||!e.src?null:{src:e.src,alt:e.alt||t}}function As(e,{alt:t="Preview",closeLabel:s="Close",previousLabel:n="Previous image",nextLabel:r="Next image",positionLabel:i=(p,f)=>`${p} / ${f}`,zoomOutLabel:o="Zoom out",zoomInLabel:a="Zoom in",resetZoomLabel:l="Reset zoom",gallery:c=null,initialIndex:d=null,trigger:u=null}={}){if(!e)return null;let p=(Array.isArray(c)?c:[e]).map(Z=>pw(Z,t)).filter(Boolean);p.length===0&&p.push({src:e,alt:t});let f=Number.isInteger(d)&&d>=0&&d<p.length?d:p.findIndex(Z=>Z.src===e);f<0&&(f=0);let g=document.createElement("div");g.className="image-preview-overlay",g.setAttribute("role","dialog"),g.setAttribute("aria-modal","true"),g.setAttribute("aria-label",t);let v=document.createElement("img");v.className="image-preview-img",v.draggable=!1;let m=(Z,K,oe)=>{let he=document.createElement("button");return he.type="button",he.className=Z,he.setAttribute("aria-label",K),he.setAttribute("title",K),he.textContent=oe,he},b=m("image-preview-close",s,"\xD7"),h=document.createElement("div");h.className="image-preview-zoom-controls";let w=m("image-preview-zoom-button",o,"\u2212"),I=m("image-preview-zoom-reset",l,"100%"),y=m("image-preview-zoom-button",a,"+");h.append(w,I,y);let k=1,_=0,A=0,Q=null,H=()=>{if(k<=1){_=0,A=0;return}let Z=Math.max(0,(v.offsetWidth*k-g.clientWidth)/2),K=Math.max(0,(v.offsetHeight*k-g.clientHeight)/2);_=Math.max(-Z,Math.min(Z,_)),A=Math.max(-K,Math.min(K,A))},z=()=>{H(),v.style.transform=`translate(${_}px, ${A}px) scale(${k})`,v.classList.toggle("is-zoomed",k>1),I.textContent=`${Math.round(k*100)}%`,w.disabled=k<=$f,y.disabled=k>=Lf},$=(Z,K=null)=>{let oe=k;if(k=Math.max($f,Math.min(Lf,Z)),k<=1)_=0,A=0;else if(K&&Number.isFinite(K.clientX)&&Number.isFinite(K.clientY)&&oe>0&&k!==oe){let he=g.getBoundingClientRect(),xe=K.clientX-(he.left+he.width/2),_e=K.clientY-(he.top+he.height/2),ge=k/oe;_=xe-(xe-_)*ge,A=_e-(_e-A)*ge}z()},te=()=>{k=1,_=0,A=0,z()},F=null,S=null,M=null;p.length>1&&(F=document.createElement("button"),F.type="button",F.className="image-preview-navigation image-preview-previous",F.setAttribute("aria-label",n),F.setAttribute("title",n),F.innerHTML='<svg viewBox="0 0 24 24" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="m15 18-6-6 6-6"/></svg>',S=document.createElement("button"),S.type="button",S.className="image-preview-navigation image-preview-next",S.setAttribute("aria-label",r),S.setAttribute("title",r),S.innerHTML='<svg viewBox="0 0 24 24" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="m9 18 6-6-6-6"/></svg>',M=document.createElement("div"),M.className="image-preview-position",M.setAttribute("aria-live","polite"));let L=()=>{let Z=p[f];v.src=Z.src,v.alt=Z.alt,g.setAttribute("aria-label",Z.alt),M&&(M.textContent=typeof i=="function"?i(f+1,p.length):`${f+1} / ${p.length}`),te()},T=Z=>{f=(f+Z+p.length)%p.length,L()};L(),g.append(v),F&&S&&M&&g.append(F,S,M),g.append(b,h),document.body.appendChild(g),g.offsetHeight,g.classList.add("visible"),b.focus();let D=!1,j=null,X=()=>{j&&clearTimeout(j),j=null,g.isConnected&&g.remove()},G=()=>{D||(D=!0,g.classList.remove("visible"),g.addEventListener("transitionend",X,{once:!0}),j=setTimeout(X,250),document.removeEventListener("keydown",be),window.removeEventListener("resize",z),u?.isConnected&&typeof u.focus=="function"&&u.focus())},ce=()=>[F,S,w,I,y,b].filter(Z=>Z&&!Z.disabled),be=Z=>{if(Z.key==="Escape"){Z.preventDefault(),G();return}if(Z.key==="+"||Z.key==="="){Z.preventDefault(),$(k+si);return}if(Z.key==="-"||Z.key==="_"){Z.preventDefault(),$(k-si);return}if(Z.key==="0"){Z.preventDefault(),te();return}if(p.length>1&&(Z.key==="ArrowLeft"||Z.key==="ArrowRight")){Z.preventDefault(),T(Z.key==="ArrowLeft"?-1:1);return}if(Z.key==="Tab"){Z.preventDefault();let K=ce(),oe=K.indexOf(document.activeElement),he=Z.shiftKey?-1:1,xe=oe<0?0:(oe+he+K.length)%K.length;K[xe]?.focus()}};b.addEventListener("click",G),w.addEventListener("click",()=>$(k-si)),I.addEventListener("click",te),y.addEventListener("click",()=>$(k+si)),F?.addEventListener("click",()=>T(-1)),S?.addEventListener("click",()=>T(1)),v.addEventListener("load",z),v.addEventListener("wheel",Z=>{Z.preventDefault();let K=Z.deltaY<0?1:-1;$(k+K*si,Z)},{passive:!1}),v.addEventListener("pointerdown",Z=>{k<=1||Z.button!==0||(Z.preventDefault(),Q={pointerId:Z.pointerId,x:Z.clientX,y:Z.clientY,panX:_,panY:A},v.classList.add("is-dragging"),v.setPointerCapture?.(Z.pointerId))}),v.addEventListener("pointermove",Z=>{!Q||Q.pointerId!==Z.pointerId||(_=Q.panX+Z.clientX-Q.x,A=Q.panY+Z.clientY-Q.y,z())});let N=Z=>{!Q||Q.pointerId!==Z.pointerId||(v.releasePointerCapture?.(Z.pointerId),Q=null,v.classList.remove("is-dragging"))};return v.addEventListener("pointerup",N),v.addEventListener("pointercancel",N),g.addEventListener("click",Z=>{Z.target===g&&G()}),document.addEventListener("keydown",be),window.addEventListener("resize",z),g}var $f,Lf,si,ni=B(()=>{$f=.5,Lf=4,si=.25});function hw(e){let t=[];for(let s of e)s==="\b"?t.pop():t.push(s);return t.join("")}function mw(e){let t=e.split("\r"),s=t[t.length-1]||"";return hw(s)}function Hf(e){return e.replace(/\r\n/g,`
414
414
  `).split(`
415
415
  `).map(t=>mw(t)).join(`
416
416
  `)}function Bf(e){return e.replace(fw,"").replace(gw,"")}function vw(e){return e?e.split(";").filter(t=>t!=="").map(t=>Number(t)).filter(Number.isFinite):[0]}function Of(e,t){let s=t==="bg"&&e>=30&&e<=37||t==="bg"&&e>=90&&e<=97?e+10:e;return t==="bg"?tc.get(s):ec.get(s)}function Vf(e,t,s){let n=sc[0],r=1/0;for(let i of sc){let o=(i.r-e)**2+(i.g-t)**2+(i.b-s)**2;o<r&&(n=i,r=o)}return n.code}function yw(e){if(e<0||e>255)return null;if(e<16){let s=sc[e];return{r:s.r,g:s.g,b:s.b}}if(e>=232){let s=8+(e-232)*10;return{r:s,g:s,b:s}}let t=e-16;return{r:Jl[Math.floor(t/36)],g:Jl[Math.floor(t%36/6)],b:Jl[t%6]}}function qf(e,t,s,n){let r=s[n+1];if(r===5){let i=s[n+2];if(Number.isFinite(i)){let o=yw(i);o&&(e[t]=Of(Vf(o.r,o.g,o.b),t)||"")}return n+3}if(r===2){let i=s[n+2],o=s[n+3],a=s[n+4];return Number.isFinite(i)&&Number.isFinite(o)&&Number.isFinite(a)&&(e[t]=Of(Vf(i,o,a),t)||""),n+5}return n+2}function bw(e,t){let s={...e},n=t.length?t:[0];for(let r=0;r<n.length;){let i=n[r];if(i===0)s.fg="",s.bg="",s.bold=!1,s.dim=!1,s.italic=!1,s.underline=!1;else if(i===1)s.bold=!0,s.dim=!1;else if(i===2)s.dim=!0,s.bold=!1;else if(i===3)s.italic=!0;else if(i===4)s.underline=!0;else if(i===22)s.bold=!1,s.dim=!1;else if(i===23)s.italic=!1;else if(i===24)s.underline=!1;else if(i===39)s.fg="";else if(i===49)s.bg="";else if(ec.has(i))s.fg=ec.get(i);else if(tc.has(i))s.bg=tc.get(i);else if(i===38){r=qf(s,"fg",n,r);continue}else if(i===48){r=qf(s,"bg",n,r);continue}r+=1}return s}function ww(e){return[e.fg,e.bg,e.bold&&"terminal-bold",e.dim&&"terminal-dim",e.italic&&"terminal-italic",e.underline&&"terminal-underline"].filter(Boolean).join(" ")}function Ff(e,t,s){let n=Bf(t);if(!n)return;let r=ww(s),i=e[e.length-1];i&&i.className===r?i.text+=n:e.push({text:n,className:r})}function xs(e){if(e==null)return"";let t=typeof e=="string"?e:String(e);return t?Bf(Hf(t)):""}function Nf(e){if(e==null)return[];let t=typeof e=="string"?e:String(e);if(!t)return[];let s=Hf(t),n=[],r={fg:"",bg:"",bold:!1,dim:!1,italic:!1,underline:!1},i=0;Zl.lastIndex=0;for(let o=Zl.exec(s);o;o=Zl.exec(s))Ff(n,s.slice(i,o.index),r),r=bw(r,vw(o[1])),i=o.index+o[0].length;return Ff(n,s.slice(i),r),n}var fw,Zl,gw,ec,tc,sc,Jl,ri=B(()=>{fw=/[\u001b\u009b](?:[\[\]()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><~]|\][^\u0007]*(?:\u0007|\u001b\\)|[PX^_][\s\S]*?\u001b\\)/g,Zl=/(?:\u001b\[|\u009b)([0-9;]*)m/g,gw=/[\u0000-\u0008\u000b\u000c\u000e-\u001a\u001c-\u001f\u007f-\u009f]/g,ec=new Map([[30,"terminal-fg-black"],[31,"terminal-fg-red"],[32,"terminal-fg-green"],[33,"terminal-fg-yellow"],[34,"terminal-fg-blue"],[35,"terminal-fg-magenta"],[36,"terminal-fg-cyan"],[37,"terminal-fg-white"],[90,"terminal-fg-bright-black"],[91,"terminal-fg-bright-red"],[92,"terminal-fg-bright-green"],[93,"terminal-fg-bright-yellow"],[94,"terminal-fg-bright-blue"],[95,"terminal-fg-bright-magenta"],[96,"terminal-fg-bright-cyan"],[97,"terminal-fg-bright-white"]]),tc=new Map([[40,"terminal-bg-black"],[41,"terminal-bg-red"],[42,"terminal-bg-green"],[43,"terminal-bg-yellow"],[44,"terminal-bg-blue"],[45,"terminal-bg-magenta"],[46,"terminal-bg-cyan"],[47,"terminal-bg-white"],[100,"terminal-bg-bright-black"],[101,"terminal-bg-bright-red"],[102,"terminal-bg-bright-green"],[103,"terminal-bg-bright-yellow"],[104,"terminal-bg-bright-blue"],[105,"terminal-bg-bright-magenta"],[106,"terminal-bg-bright-cyan"],[107,"terminal-bg-bright-white"]]),sc=[{code:30,r:0,g:0,b:0},{code:31,r:170,g:0,b:0},{code:32,r:0,g:170,b:0},{code:33,r:170,g:85,b:0},{code:34,r:0,g:0,b:170},{code:35,r:170,g:0,b:170},{code:36,r:0,g:170,b:170},{code:37,r:170,g:170,b:170},{code:90,r:85,g:85,b:85},{code:91,r:255,g:85,b:85},{code:92,r:85,g:255,b:85},{code:93,r:255,g:255,b:85},{code:94,r:85,g:85,b:255},{code:95,r:255,g:85,b:255},{code:96,r:85,g:255,b:255},{code:97,r:255,g:255,b:255}],Jl=[0,95,135,175,215,255]});var sr,To=B(()=>{ni();zr();ri();Ns();sr={name:"MessageItem",props:{message:{type:Object,required:!0},sessionActions:{type:Boolean,default:!1},externalAttachmentOpen:{type:Boolean,default:!1}},emits:["quote","edit-as-new","open-attachment"],template:`
@@ -897,7 +897,7 @@ ${String(e||"").trim()}
897
897
  <!-- H2.f.6: Fork-from-here button removed (single-conversation model). -->
898
898
  </div>
899
899
  </div>
900
- `,setup(e,{emit:t}){let s=Pinia.useChatStore(),n=Vue.ref(!1),r=Vue.ref(!1),i=Vue.ref(!1),o=Vue.computed(()=>e.actionsExpanded===null?i.value:!!e.actionsExpanded),a=R=>{i.value=!!R,t("update-actions-expanded",!!R)},l=Vue.ref(!1),c=Vue.ref(null),d=Vue.reactive(new Set),u=Vue.reactive(new Map),p=Vue.reactive(new Map),f=new Map,g=null,v="",m=Vue.inject("t"),b=(R,ee)=>{s.answerUserQuestion(R,ee,e.conversationId||void 0)},h=Vue.computed(()=>(Array.isArray(e.turn?.toolMsgs)?e.turn.toolMsgs:[]).filter(ee=>ee?.toolName==="RouteForward").map((ee,V)=>({...nc(ee.toolInput||{}),key:ee.toolId||`${ee.startTime||0}:${V}`}))),w=Vue.computed(()=>(Array.isArray(e.turn?.toolMsgs)?e.turn.toolMsgs:[]).filter(ee=>ee?.toolName!=="RouteForward")),I=Vue.computed(()=>w.value.length>0),y=Vue.computed(()=>{let R=w.value;return R[R.length-1]}),k=Vue.computed(()=>w.value.slice(0,-1)),_=Vue.computed(()=>Math.max(0,w.value.length-1)),A=Vue.computed(()=>{let R=e.turn?.todoMsg?.toolInput?.todos;return Array.isArray(R)?R.map(ee=>Yf(e.turn,ee)):[]}),Q=()=>{a(!o.value)},H=(R,ee,V)=>{let P=e.toolStatePrefix||e.turn.id||e.turn.turnId||"assistant-turn",re=R?.toolName||"tool",we=R?.startTime||ee;return`${P}:tool:${V}:${ee}:${re}:${we}`},z=(R,ee,V)=>{let P=H(R,ee,V);return e.toolExpandStates&&Object.prototype.hasOwnProperty.call(e.toolExpandStates,P)?!!e.toolExpandStates[P]:null},$=(R,ee,V,P)=>{t("update-tool-expanded",{key:H(R,ee,V),value:!!P})};cc();let te=R=>{let ee=R;if(typeof ee!="string"&&(Array.isArray(ee)?ee=ee.map(V=>typeof V=="string"?V:V&&V.type==="text"&&V.text||"").join(""):ee=String(ee)),ee=xs(ee),!ee)return"";try{if(typeof marked<"u"){let V=marked.parse(ee);return pg(ce(G(V)),u,p,s.effectiveWorkDir||"")}}catch{}return be(ee)},F=R=>{let ee=R.target?.closest?.("img");if(ee&&R.currentTarget?.contains?.(ee)){let we=ee.getAttribute("src");we&&(R.preventDefault(),R.stopPropagation(),As(we,{alt:ee.getAttribute("alt")||m("message.imagePreview"),closeLabel:m("common.close"),zoomOutLabel:m("message.zoomOut"),zoomInLabel:m("message.zoomIn"),resetZoomLabel:m("message.resetZoom"),trigger:ee}));return}let V=R.target?.closest?.("a[href]");if(!V||!R.currentTarget?.contains?.(V))return;let P=Ms(V.getAttribute("href")),re=V.dataset?.resolvedFilePath;!P||!re||(R.preventDefault(),R.stopPropagation(),s.openFileInExplorer(re,{hideTree:!0,line:P.line}))},S=Vue.computed(()=>Array.isArray(e.turn?.textSegments)&&e.turn.textSegments.length>0?e.turn.textSegments:e.turn?.textContent?[{key:"legacy-result",content:e.turn.textContent,kind:"result",isStreaming:e.turn.isStreaming===!0}]:[]),M=Vue.computed(()=>S.value.filter(R=>R.kind!=="result")),L=Vue.computed(()=>S.value.filter(R=>R.kind==="result")),T=Vue.computed(()=>[...S.value.map(R=>typeof R?.content=="string"?R.content:R?.content==null?"":JSON.stringify(R.content)),...Array.isArray(e.turn?.imageMsgs)?e.turn.imageMsgs.map(R=>R?.src||R?.fileId||""):[]].join("\0")),D=new Set,U=()=>{if(e.turn?.isStreaming)return;let R=new Set;D.clear();for(let ee of S.value)if(!(!ee?.content||typeof marked>"u"))try{let V=marked.parse(typeof ee.content=="string"?ee.content:String(ee.content)),P=s.effectiveWorkDir||"";for(let re of ug(V,P))R.add(re);for(let re of dc(V,P))D.add(re)}catch{}for(let ee of Array.isArray(e.turn?.imageMsgs)?e.turn.imageMsgs:[]){let V=li(ee?.src,s.effectiveWorkDir||"");V&&(R.add(V.path),D.add(V.path))}u.clear(),p.clear(),f.clear(),v=s.fileReferenceResolutionContextKey||"",g=s.resolveMessageFileReferences?.([...R])||null},X=R=>{let ee=R.detail;if(ee?.type==="file_content"){let V=f.get(ee.requestId);if(!V||(f.delete(ee.requestId),V.contextKey!==(s.fileReferenceResolutionContextKey||"")))return;!ee.error&&ee.binary&&ee.previewUrl&&p.set(V.requestedPath,ee.previewUrl);return}if(!(!g||ee?.type!=="file_references_resolved"||ee.requestId!==g)&&(g=null,(s.fileReferenceResolutionContextKey||"")===v)){u.clear();for(let V of ee.references||[])if(!(!V?.requestedPath||!V?.resolvedPath)&&(u.set(V.requestedPath,V.resolvedPath),D.has(V.requestedPath))){let P=s.requestMessageImagePreview?.(V.resolvedPath);P&&f.set(P,{requestedPath:V.requestedPath,contextKey:v})}}};Vue.onMounted(()=>{window.addEventListener("workbench-message",X),U()}),Vue.onBeforeUnmount(()=>{window.removeEventListener("workbench-message",X),f.clear()}),Vue.watch([()=>e.turn?.isStreaming,T,()=>s.fileReferenceResolutionContextKey],([R,ee,V],[P,re,we])=>{!R&&(P||ee!==re||V!==we)&&U()},{flush:"post"});let G=R=>R.replace(/<pre><code([^>]*)>([\s\S]*?)<\/code><\/pre>/g,(ee,V,P)=>{let re=V.match(/class="language-(\w+)"/);return`<div class="code-block-wrapper">
900
+ `,setup(e,{emit:t}){let s=Pinia.useChatStore(),n=Vue.ref(!1),r=Vue.ref(!1),i=Vue.ref(!1),o=Vue.computed(()=>e.actionsExpanded===null?i.value:!!e.actionsExpanded),a=R=>{i.value=!!R,t("update-actions-expanded",!!R)},l=Vue.ref(!1),c=Vue.ref(null),d=Vue.reactive(new Set),u=Vue.reactive(new Map),p=Vue.reactive(new Map),f=new Map,g=null,v="",m=Vue.inject("t"),b=(R,ee)=>{s.answerUserQuestion(R,ee,e.conversationId||void 0)},h=Vue.computed(()=>(Array.isArray(e.turn?.toolMsgs)?e.turn.toolMsgs:[]).filter(ee=>ee?.toolName==="RouteForward").map((ee,V)=>({...nc(ee.toolInput||{}),key:ee.toolId||`${ee.startTime||0}:${V}`}))),w=Vue.computed(()=>(Array.isArray(e.turn?.toolMsgs)?e.turn.toolMsgs:[]).filter(ee=>ee?.toolName!=="RouteForward")),I=Vue.computed(()=>w.value.length>0),y=Vue.computed(()=>{let R=w.value;return R[R.length-1]}),k=Vue.computed(()=>w.value.slice(0,-1)),_=Vue.computed(()=>Math.max(0,w.value.length-1)),A=Vue.computed(()=>{let R=e.turn?.todoMsg?.toolInput?.todos;return Array.isArray(R)?R.map(ee=>Yf(e.turn,ee)):[]}),Q=()=>{a(!o.value)},H=(R,ee,V)=>{let P=e.toolStatePrefix||e.turn.id||e.turn.turnId||"assistant-turn",re=R?.toolName||"tool",we=R?.startTime||ee;return`${P}:tool:${V}:${ee}:${re}:${we}`},z=(R,ee,V)=>{let P=H(R,ee,V);return e.toolExpandStates&&Object.prototype.hasOwnProperty.call(e.toolExpandStates,P)?!!e.toolExpandStates[P]:null},$=(R,ee,V,P)=>{t("update-tool-expanded",{key:H(R,ee,V),value:!!P})};cc();let te=R=>{let ee=R;if(typeof ee!="string"&&(Array.isArray(ee)?ee=ee.map(V=>typeof V=="string"?V:V&&V.type==="text"&&V.text||"").join(""):ee=String(ee)),ee=xs(ee),!ee)return"";try{if(typeof marked<"u"){let V=marked.parse(ee);return pg(ce(G(V)),u,p,s.effectiveWorkDir||"")}}catch{}return be(ee)},F=R=>{let ee=R.target?.closest?.("img");if(ee&&R.currentTarget?.contains?.(ee)){let we=ee.getAttribute("src");we&&(R.preventDefault(),R.stopPropagation(),As(we,{alt:ee.getAttribute("alt")||m("message.imagePreview"),closeLabel:m("common.close"),zoomOutLabel:m("message.zoomOut"),zoomInLabel:m("message.zoomIn"),resetZoomLabel:m("message.resetZoom"),trigger:ee}));return}let V=R.target?.closest?.("a[href]");if(!V||!R.currentTarget?.contains?.(V))return;let P=Ms(V.getAttribute("href")),re=V.dataset?.resolvedFilePath;!P||!re||(R.preventDefault(),R.stopPropagation(),s.openFileInExplorer(re,{hideTree:!0,line:P.line}))},S=Vue.computed(()=>Array.isArray(e.turn?.textSegments)&&e.turn.textSegments.length>0?e.turn.textSegments:e.turn?.textContent?[{key:"legacy-result",content:e.turn.textContent,kind:"result",isStreaming:e.turn.isStreaming===!0}]:[]),M=Vue.computed(()=>S.value.filter(R=>R.kind!=="result")),L=Vue.computed(()=>S.value.filter(R=>R.kind==="result")),T=Vue.computed(()=>[...S.value.map(R=>typeof R?.content=="string"?R.content:R?.content==null?"":JSON.stringify(R.content)),...Array.isArray(e.turn?.imageMsgs)?e.turn.imageMsgs.map(R=>R?.src||R?.fileId||""):[]].join("\0")),D=new Set,j=()=>{if(e.turn?.isStreaming)return;let R=new Set;D.clear();for(let ee of S.value)if(!(!ee?.content||typeof marked>"u"))try{let V=marked.parse(typeof ee.content=="string"?ee.content:String(ee.content)),P=s.effectiveWorkDir||"";for(let re of ug(V,P))R.add(re);for(let re of dc(V,P))D.add(re)}catch{}for(let ee of Array.isArray(e.turn?.imageMsgs)?e.turn.imageMsgs:[]){let V=li(ee?.src,s.effectiveWorkDir||"");V&&(R.add(V.path),D.add(V.path))}u.clear(),p.clear(),f.clear(),v=s.fileReferenceResolutionContextKey||"",g=s.resolveMessageFileReferences?.([...R])||null},X=R=>{let ee=R.detail;if(ee?.type==="file_content"){let V=f.get(ee.requestId);if(!V||(f.delete(ee.requestId),V.contextKey!==(s.fileReferenceResolutionContextKey||"")))return;!ee.error&&ee.binary&&ee.previewUrl&&p.set(V.requestedPath,ee.previewUrl);return}if(!(!g||ee?.type!=="file_references_resolved"||ee.requestId!==g)&&(g=null,(s.fileReferenceResolutionContextKey||"")===v)){u.clear();for(let V of ee.references||[])if(!(!V?.requestedPath||!V?.resolvedPath)&&(u.set(V.requestedPath,V.resolvedPath),D.has(V.requestedPath))){let P=s.requestMessageImagePreview?.(V.resolvedPath);P&&f.set(P,{requestedPath:V.requestedPath,contextKey:v})}}};Vue.onMounted(()=>{window.addEventListener("workbench-message",X),j()}),Vue.onBeforeUnmount(()=>{window.removeEventListener("workbench-message",X),f.clear()}),Vue.watch([()=>e.turn?.isStreaming,T,()=>s.fileReferenceResolutionContextKey],([R,ee,V],[P,re,we])=>{!R&&(P||ee!==re||V!==we)&&j()},{flush:"post"});let G=R=>R.replace(/<pre><code([^>]*)>([\s\S]*?)<\/code><\/pre>/g,(ee,V,P)=>{let re=V.match(/class="language-(\w+)"/);return`<div class="code-block-wrapper">
901
901
  <div class="code-block-header">
902
902
  <span class="code-lang">${re?re[1]:""}</span>
903
903
  <button class="code-copy-btn" onclick="window.copyCodeBlock(this)" title="Copy">
@@ -907,7 +907,7 @@ ${String(e||"").trim()}
907
907
  </button>
908
908
  </div>
909
909
  <pre><code${V}>${P}</code></pre>
910
- </div>`}),ce=R=>R.replace(/<table>([\s\S]*?)<\/table>/g,ee=>`<div class="table-scroll-wrapper">${ee}</div>`),be=R=>{if(!R)return"";typeof R!="string"&&(R=String(R));let ee=V=>{let P=document.createElement("div");return P.textContent=V,P.innerHTML};return R.replace(/```(\w*)\n([\s\S]*?)```/g,(V,P,re)=>`<div class="code-block-wrapper"><pre><code class="language-${P}">${ee(re.trim())}</code></pre></div>`).replace(/`([^`]+)`/g,"<code>$1</code>").replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>").replace(/\*([^*]+)\*/g,"<em>$1</em>").replace(/^### (.+)$/gm,"<h3>$1</h3>").replace(/^## (.+)$/gm,"<h2>$1</h2>").replace(/^# (.+)$/gm,"<h1>$1</h1>").replace(/\n/g,"<br>")},N=async()=>{try{await navigator.clipboard.writeText(e.turn.textContent||""),n.value=!0,setTimeout(()=>{n.value=!1},2e3)}catch{}},Z=async()=>{try{await navigator.clipboard.writeText(e.turn.textContent||""),r.value=!0,setTimeout(()=>{r.value=!1},2e3)}catch{}},K=()=>{let R=e.turn.textContent||"";if(!R)return;let ee=new Blob([R],{type:"text/markdown;charset=utf-8"}),V=URL.createObjectURL(ee),P=document.createElement("a");P.download=`response-${Date.now()}.md`,P.href=V,P.click(),URL.revokeObjectURL(V)},oe=async()=>{if(!(l.value||!window.htmlToImage)){l.value=!0;try{let R=c.value;if(!R)return;let ee=R.querySelector(".turn-content");if(!ee)return;let V=getComputedStyle(document.body).getPropertyValue("--bg-main").trim()||"#ffffff";ee.classList.add("screenshot-mode");try{let re=ee.getBoundingClientRect(),we=await window.htmlToImage.toPng(ee,{backgroundColor:V,pixelRatio:3,width:re.width+64,height:re.height+64,style:{padding:"32px"},filter:Be=>!(Be.classList&&(Be.classList.contains("turn-header")||Be.classList.contains("screenshot-btn")))}),Ve=document.createElement("a");Ve.download=`response-${Date.now()}.png`,Ve.href=we,Ve.click()}finally{ee.classList.remove("screenshot-mode")}}catch{}finally{l.value=!1}}};Vue.onMounted(()=>{window.copyCodeBlock||(window.copyCodeBlock=async function(R){let V=R.closest(".code-block-wrapper").querySelector("code");if(V)try{await navigator.clipboard.writeText(V.textContent),R.innerHTML='<svg viewBox="0 0 24 24" width="14" height="14"><path fill="currentColor" d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/></svg>',setTimeout(()=>{R.innerHTML='<svg viewBox="0 0 24 24" width="14" height="14"><path fill="currentColor" d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>'},2e3)}catch{}}),Vue.nextTick(()=>{typeof hljs<"u"&&document.querySelectorAll("pre code:not([data-highlighted])").forEach(R=>{hljs.highlightElement(R),R.dataset.highlighted="true"}),Ht(c.value)})}),Vue.watch(()=>e.turn.textContent,()=>{Vue.nextTick(()=>{typeof hljs<"u"&&document.querySelectorAll("pre code:not([data-highlighted])").forEach(R=>{hljs.highlightElement(R),R.dataset.highlighted="true"}),Ht(c.value)})});let he=R=>{if(R?.src){let V=li(R.src,s.effectiveWorkDir||"");return V?p.get(V.path)||"":R.src}if(!R?.fileId)return"";let ee=R.previewToken||"";return`/api/preview/${R.fileId}?token=${ee}`},xe=R=>{d.add(R?.assetId||R?.id)},_e=Vue.computed(()=>(Array.isArray(e.turn?.imageMsgs)?e.turn.imageMsgs:[]).map(R=>({image:R,src:he(R),alt:R?.filename||m("message.imagePreview")})).filter(R=>R.src&&!d.has(R.image?.assetId||R.image?.id))),ge=(R,ee)=>{let V=_e.value,P=V.findIndex(re=>re.image===R);P<0||As(V[P].src,{alt:V[P].alt,closeLabel:m("common.close"),zoomOutLabel:m("message.zoomOut"),zoomInLabel:m("message.zoomIn"),resetZoomLabel:m("message.resetZoom"),previousLabel:m("message.previousImage"),nextLabel:m("message.nextImage"),positionLabel:(re,we)=>m("message.imagePosition",{current:re,total:we}),gallery:V.map(({src:re,alt:we})=>({src:re,alt:we})),initialIndex:P,trigger:ee})},ne=R=>{if(R)try{typeof s.cancelVpTurn=="function"&&s.cancelVpTurn(R)}catch{}},se=()=>{let R=e.turn;return R?typeof R.timestamp=="number"&&R.timestamp>0?R.timestamp:typeof R.createdAt=="number"&&R.createdAt>0?R.createdAt:typeof R.speakerTimestamp=="number"&&R.speakerTimestamp>0?R.speakerTimestamp:null:null},E=Vue.computed(()=>ts(se())),ae=Vue.computed(()=>{let R=se();if(!R)return"";try{return new Date(R).toLocaleString()}catch{return""}}),ue=Vue.computed(()=>Lp(e.turn,e.quoteAuthor||m("message.assistant"))),j=Vue.computed(()=>{let R=typeof e.turn?.model=="string"?e.turn.model.trim():"";if(!R)return"";let ee=R.lastIndexOf("/");return ee>=0?R.slice(ee+1):R}),J=Vue.computed(()=>{let R=Number.isFinite(e.turn?.inputTokens)?Math.max(0,Math.round(e.turn.inputTokens)):null,ee=Number.isFinite(e.turn?.outputTokens)?Math.max(0,Math.round(e.turn.outputTokens)):null,V=Number.isFinite(e.turn?.totalTokens)?Math.max(0,Math.round(e.turn.totalTokens)):R!=null&&ee!=null?R+ee:null;if(V==null||R==null||ee==null||V===0&&R===0&&ee===0)return"";let P=re=>new Intl.NumberFormat().format(re);return m("yeaft.message.tokenUsage",{total:P(V),input:P(R),output:P(ee)})});return{onStopTurn:ne,turnTime:E,turnTimeFull:ae,assistantQuote:ue,responseModelMeta:j,responseTokenMeta:J,copied:n,fullCopied:r,expanded:o,screenshotting:l,turnRef:c,showToolActions:I,latestTool:y,historyTools:k,latestToolIndex:_,actionTools:w,routeMessages:h,toggleExpand:Q,toolExpandedValue:z,updateToolExpanded:$,textSegments:S,progressSegments:M,resultSegments:L,renderSegment:te,onMarkdownClick:F,copyContent:N,copyFullResponse:Z,exportMarkdown:K,screenshotContent:oe,onAskSubmit:b,imageSrc:he,failedImages:d,handleImageError:xe,previewImage:ge,displayedTodos:A}}}});function uc(e){if(!Number.isFinite(e)||e<0)return"";let t=Math.floor(e/1e3),s=t%60,n=Math.floor(t/60)%60,r=Math.floor(t/3600);return r>0?`${r}h${n}m${s}s`:t>=60?`${n}m${s}s`:`${s}s`}var gg=B(()=>{});var rr,Eo=B(()=>{_o();uo();Jn();gg();Ns();rr={name:"VpTurnBlock",components:{AssistantTurn:nr},props:{turn:{type:Object,required:!0},conversationId:{type:String,default:null},nowMs:{type:Number,default:0},responseCollapsible:{type:Boolean,default:!1},responseCollapsed:{type:Boolean,default:!1},responseToggleLabel:{type:String,default:""},displayNameOverride:{type:String,default:""},canStop:{type:Boolean,default:!0},interactiveSpeaker:{type:Boolean,default:!0}},emits:["toggle-response-collapse","quote","open-debug"],template:`
910
+ </div>`}),ce=R=>R.replace(/<table>([\s\S]*?)<\/table>/g,ee=>`<div class="table-scroll-wrapper">${ee}</div>`),be=R=>{if(!R)return"";typeof R!="string"&&(R=String(R));let ee=V=>{let P=document.createElement("div");return P.textContent=V,P.innerHTML};return R.replace(/```(\w*)\n([\s\S]*?)```/g,(V,P,re)=>`<div class="code-block-wrapper"><pre><code class="language-${P}">${ee(re.trim())}</code></pre></div>`).replace(/`([^`]+)`/g,"<code>$1</code>").replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>").replace(/\*([^*]+)\*/g,"<em>$1</em>").replace(/^### (.+)$/gm,"<h3>$1</h3>").replace(/^## (.+)$/gm,"<h2>$1</h2>").replace(/^# (.+)$/gm,"<h1>$1</h1>").replace(/\n/g,"<br>")},N=async()=>{try{await navigator.clipboard.writeText(e.turn.textContent||""),n.value=!0,setTimeout(()=>{n.value=!1},2e3)}catch{}},Z=async()=>{try{await navigator.clipboard.writeText(e.turn.textContent||""),r.value=!0,setTimeout(()=>{r.value=!1},2e3)}catch{}},K=()=>{let R=e.turn.textContent||"";if(!R)return;let ee=new Blob([R],{type:"text/markdown;charset=utf-8"}),V=URL.createObjectURL(ee),P=document.createElement("a");P.download=`response-${Date.now()}.md`,P.href=V,P.click(),URL.revokeObjectURL(V)},oe=async()=>{if(!(l.value||!window.htmlToImage)){l.value=!0;try{let R=c.value;if(!R)return;let ee=R.querySelector(".turn-content");if(!ee)return;let V=getComputedStyle(document.body).getPropertyValue("--bg-main").trim()||"#ffffff";ee.classList.add("screenshot-mode");try{let re=ee.getBoundingClientRect(),we=await window.htmlToImage.toPng(ee,{backgroundColor:V,pixelRatio:3,width:re.width+64,height:re.height+64,style:{padding:"32px"},filter:Be=>!(Be.classList&&(Be.classList.contains("turn-header")||Be.classList.contains("screenshot-btn")))}),Ve=document.createElement("a");Ve.download=`response-${Date.now()}.png`,Ve.href=we,Ve.click()}finally{ee.classList.remove("screenshot-mode")}}catch{}finally{l.value=!1}}};Vue.onMounted(()=>{window.copyCodeBlock||(window.copyCodeBlock=async function(R){let V=R.closest(".code-block-wrapper").querySelector("code");if(V)try{await navigator.clipboard.writeText(V.textContent),R.innerHTML='<svg viewBox="0 0 24 24" width="14" height="14"><path fill="currentColor" d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/></svg>',setTimeout(()=>{R.innerHTML='<svg viewBox="0 0 24 24" width="14" height="14"><path fill="currentColor" d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>'},2e3)}catch{}}),Vue.nextTick(()=>{typeof hljs<"u"&&document.querySelectorAll("pre code:not([data-highlighted])").forEach(R=>{hljs.highlightElement(R),R.dataset.highlighted="true"}),Ht(c.value)})}),Vue.watch(()=>e.turn.textContent,()=>{Vue.nextTick(()=>{typeof hljs<"u"&&document.querySelectorAll("pre code:not([data-highlighted])").forEach(R=>{hljs.highlightElement(R),R.dataset.highlighted="true"}),Ht(c.value)})});let he=R=>{if(R?.src){let V=li(R.src,s.effectiveWorkDir||"");return V?p.get(V.path)||"":R.src}if(!R?.fileId)return"";let ee=R.previewToken||"";return`/api/preview/${R.fileId}?token=${ee}`},xe=R=>{d.add(R?.assetId||R?.id)},_e=Vue.computed(()=>(Array.isArray(e.turn?.imageMsgs)?e.turn.imageMsgs:[]).map(R=>({image:R,src:he(R),alt:R?.filename||m("message.imagePreview")})).filter(R=>R.src&&!d.has(R.image?.assetId||R.image?.id))),ge=(R,ee)=>{let V=_e.value,P=V.findIndex(re=>re.image===R);P<0||As(V[P].src,{alt:V[P].alt,closeLabel:m("common.close"),zoomOutLabel:m("message.zoomOut"),zoomInLabel:m("message.zoomIn"),resetZoomLabel:m("message.resetZoom"),previousLabel:m("message.previousImage"),nextLabel:m("message.nextImage"),positionLabel:(re,we)=>m("message.imagePosition",{current:re,total:we}),gallery:V.map(({src:re,alt:we})=>({src:re,alt:we})),initialIndex:P,trigger:ee})},ne=R=>{if(R)try{typeof s.cancelVpTurn=="function"&&s.cancelVpTurn(R)}catch{}},se=()=>{let R=e.turn;return R?typeof R.timestamp=="number"&&R.timestamp>0?R.timestamp:typeof R.createdAt=="number"&&R.createdAt>0?R.createdAt:typeof R.speakerTimestamp=="number"&&R.speakerTimestamp>0?R.speakerTimestamp:null:null},E=Vue.computed(()=>ts(se())),ae=Vue.computed(()=>{let R=se();if(!R)return"";try{return new Date(R).toLocaleString()}catch{return""}}),pe=Vue.computed(()=>Lp(e.turn,e.quoteAuthor||m("message.assistant"))),U=Vue.computed(()=>{let R=typeof e.turn?.model=="string"?e.turn.model.trim():"";if(!R)return"";let ee=R.lastIndexOf("/");return ee>=0?R.slice(ee+1):R}),J=Vue.computed(()=>{let R=Number.isFinite(e.turn?.inputTokens)?Math.max(0,Math.round(e.turn.inputTokens)):null,ee=Number.isFinite(e.turn?.outputTokens)?Math.max(0,Math.round(e.turn.outputTokens)):null,V=Number.isFinite(e.turn?.totalTokens)?Math.max(0,Math.round(e.turn.totalTokens)):R!=null&&ee!=null?R+ee:null;if(V==null||R==null||ee==null||V===0&&R===0&&ee===0)return"";let P=re=>new Intl.NumberFormat().format(re);return m("yeaft.message.tokenUsage",{total:P(V),input:P(R),output:P(ee)})});return{onStopTurn:ne,turnTime:E,turnTimeFull:ae,assistantQuote:pe,responseModelMeta:U,responseTokenMeta:J,copied:n,fullCopied:r,expanded:o,screenshotting:l,turnRef:c,showToolActions:I,latestTool:y,historyTools:k,latestToolIndex:_,actionTools:w,routeMessages:h,toggleExpand:Q,toolExpandedValue:z,updateToolExpanded:$,textSegments:S,progressSegments:M,resultSegments:L,renderSegment:te,onMarkdownClick:F,copyContent:N,copyFullResponse:Z,exportMarkdown:K,screenshotContent:oe,onAskSubmit:b,imageSrc:he,failedImages:d,handleImageError:xe,previewImage:ge,displayedTodos:A}}}});function uc(e){if(!Number.isFinite(e)||e<0)return"";let t=Math.floor(e/1e3),s=t%60,n=Math.floor(t/60)%60,r=Math.floor(t/3600);return r>0?`${r}h${n}m${s}s`:t>=60?`${n}m${s}s`:`${s}s`}var gg=B(()=>{});var rr,Eo=B(()=>{_o();uo();Jn();gg();Ns();rr={name:"VpTurnBlock",components:{AssistantTurn:nr},props:{turn:{type:Object,required:!0},conversationId:{type:String,default:null},nowMs:{type:Number,default:0},responseCollapsible:{type:Boolean,default:!1},responseCollapsed:{type:Boolean,default:!1},responseToggleLabel:{type:String,default:""},displayNameOverride:{type:String,default:""},canStop:{type:Boolean,default:!0},interactiveSpeaker:{type:Boolean,default:!0}},emits:["toggle-response-collapse","quote","open-debug"],template:`
911
911
  <div class="vp-turn-block"
912
912
  :class="{ 'vp-turn-block-streaming': turn.isStreaming }"
913
913
  :data-turn-id="turn.turnId || ''"
@@ -1086,8 +1086,8 @@ ${String(e||"").trim()}
1086
1086
  aria-hidden="true"
1087
1087
  ></div>
1088
1088
  </div>
1089
- `,setup(e,{emit:t,expose:s}){let n=Vue.ref(null),r=Vue.ref(null),i=e.initialAlign==="end",o=Vue.ref(i?Number.MAX_SAFE_INTEGER:0),a=Vue.ref(zs.viewportHeight),l=Vue.reactive({}),c=new Map,d=new Map,u=new Map,p=null,f=null,g=null,v=null,m=0,b=!1,h=0,w=!0,I=null,y="start",k=null,_=[],A=0,Q=Vue.computed(()=>di(e.items,l,{itemGap:e.itemGap,estimateHeight:e.estimateHeight})),H=Vue.computed(()=>pc(e.items,Q.value,{scrollTop:o.value,viewportHeight:a.value,overscan:e.overscan})),z=Vue.computed(()=>H.value.items),$=Vue.computed(()=>H.value.topSpacerHeight),te=Vue.computed(()=>H.value.bottomSpacerHeight);function F(E){E&&t("scroll-state",{scrollTop:E.scrollTop||0,scrollHeight:E.scrollHeight||0,clientHeight:E.clientHeight||0})}function S(){let E=r.value;E&&(a.value=Math.max(1,E.clientHeight||zs.viewportHeight),i&&e.items.length===0||(o.value=Math.max(0,E.scrollTop||0)),F(E))}function M(){let E=r.value;return!i||e.initialAlign!=="end"||e.items.length===0||!E?!1:(ce(),E.scrollTop=E.scrollHeight,i=!1,S(),!0)}function L(){M()||S()}function T(E,ae){let ue=E.findIndex((J,R)=>Ks(J,R)===ae);return ue<0?null:di(E,l,{itemGap:e.itemGap,estimateHeight:e.estimateHeight}).offsets[ue]||0}function D(E,ae,ue){let j=r.value;if(!j||w||E.length===0||ae.length===0)return;let J=di(E,l,{itemGap:e.itemGap,estimateHeight:e.estimateHeight}),R=pc(E,J,{scrollTop:j.scrollTop||0,viewportHeight:j.clientHeight||a.value,overscan:0}),ee=Math.min(E.length-1,R.visibleStart),V=Ks(E[ee],ee),P=J.offsets[ee]||0;Vue.nextTick(()=>{if(ue!==A)return;let re=T(ae,V);Number.isFinite(re)&&(j.scrollTop+=re-P,S())})}function U(){f||(f=requestAnimationFrame(()=>{f=null,S()}))}function X(E){return E?ui({scrollTop:E.scrollTop,scrollHeight:E.scrollHeight,clientHeight:E.clientHeight,threshold:zs.bottomThreshold}):!0}function G({delta:E=0,toBottom:ae=!1}={},ue=h){if(ue!==h||(Math.abs(E)>=pi&&(m+=E),ae&&(b=!0),v))return;let j=ue;v=requestAnimationFrame(()=>{if(v=null,j!==h)return;let J=r.value;if(!J){m=0,b=!1;return}b?J.scrollTop=J.scrollHeight:Math.abs(m)>=pi&&(J.scrollTop+=m),m=0,b=!1,S()})}function ce(){I=null,k=null}function be({preserveTarget:E=!1}={}){h+=1,b=!1,m=0,E||ce(),v&&cancelAnimationFrame(v),v=null}function N(E,ae,ue){!E||!ue||(u.set(E,{index:ae,el:ue}),!g&&(g=requestAnimationFrame(()=>{g=null;let j=Array.from(u.entries());u.clear(),Z(j)})))}function Z(E){let ae=[];for(let[we,Ve]of E){let Be=Ve?.el;if(!Be)continue;let rt=Math.ceil(Be.getBoundingClientRect?.().height||Be.offsetHeight||0);if(!Number.isFinite(rt)||rt<=0)continue;let st=l[we];if(st===rt)continue;let Je=c.get(we);ae.push({key:we,nextHeight:rt,previousHeight:st,itemIndex:Number.isFinite(Je)?Je:Ve.index})}if(!ae.length)return;let ue=r.value,j=w&&X(ue),J=ae.some(we=>!Number.isFinite(we.previousHeight)),R=H.value.visibleStart,ee=!!I&&ae.some(we=>we.key===I),V=0,P=w&&e.initialAlign==="end"&&J;for(let we of ae){let{key:Ve,nextHeight:Be,previousHeight:rt,itemIndex:st}=we;if(l[Ve]=Be,!ue||!Number.isFinite(rt))continue;let Je=Be-rt;Math.abs(Je)<pi||(Number.isFinite(st)&&st<R?V+=Je:j&&(P=!0))}if(ee){be({preserveTarget:!0}),oe(I,y);return}if(Math.abs(V)>=pi||P){let we={delta:V,toBottom:P},Ve=h;P?Vue.nextTick(()=>G(we,Ve)):G(we,Ve)}}function K(E,ae="start"){let ue=r.value,j=k||d.get(String(E));if(!ue||!j)return!1;let J=ue.getBoundingClientRect?.(),R=j.getBoundingClientRect?.();if(!J||!R)return!1;let ee=Number(J.top),V=Number(ue.clientHeight||a.value),P=Number(R.height||0),re=ae==="center"&&P<=V?ee+(V-P)/2:ae==="end"&&P<=V?Number(J.bottom)-P:ee,we=Number(R.top)-re;return Math.abs(we)>=pi&&(ue.scrollTop+=we),S(),!0}function oe(E,ae="start",ue){let j=String(E);I=j,y=ae,ue!==void 0&&(k=ue);let J=()=>{I===j&&K(j,y)};Vue.nextTick(J)}function he(E){let ae=!!E;ae&&ce(),w!==ae&&(w=ae,w||be())}function xe(E,ae,ue){c.set(E,ae),ue&&(d.set(E,ue),p&&p.observe(ue),Vue.nextTick(()=>N(E,ae,ue)))}function _e(E,ae,ue){if(!E)return;let j=d.get(E);if(j&&j!==ue&&p&&p.unobserve(j),!ue){d.delete(E);return}xe(E,ae,ue)}async function ge(E,{align:ae="center"}={}){let ue=Number.isFinite(E)?Math.floor(E):-1,j=r.value;if(!j||ue<0||ue>=e.items.length)return!1;be({preserveTarget:!0});let J=Ks(e.items[ue],ue);return I=J,y=ae,k=null,j.scrollTop=kg(e.items,ue,l,{itemGap:e.itemGap,estimateHeight:e.estimateHeight,viewportHeight:j.clientHeight||a.value,align:ae}),S(),await Vue.nextTick(),d.get(J)?(oe(J,ae),!0):!1}function ne(E,ae={}){let ue=c.get(String(E));return Number.isFinite(ue)?ge(ue,ae):Promise.resolve(!1)}function se(E,ae,{align:ue="start"}={}){let j=String(E||"");return!j||!ae?!1:(I=j,y=ue,k=ae,K(j,ue),!0)}return s({scrollToKey:ne,scrollToIndex:ge,anchorTarget:se,clearTargetAnchor:ce,cancelPendingBottomFollow:be,setBottomFollowEnabled:he}),Vue.watch(()=>e.items.map((E,ae)=>Ks(E,ae)).join(`
1090
- `),()=>{let E=e.items.slice(),ae=_;_=E,A+=1;let ue=A;c.clear(),e.items.forEach((j,J)=>c.set(Ks(j,J),J)),I&&!c.has(I)&&ce(),ae.length>0&&D(ae,E,ue),Vue.nextTick(()=>{ue===A&&L()})},{immediate:!0}),Vue.onMounted(()=>{if(r.value=n.value?.closest?.(".chat-container")||n.value?.parentElement||null,L(),r.value?.addEventListener("scroll",U,{passive:!0}),window.addEventListener("resize",U),typeof ResizeObserver<"u"){p=new ResizeObserver(E=>{for(let ae of E){let ue=ae.target?.dataset?.virtualId,j=Number(ae.target?.dataset?.virtualIndex);ue&&N(ue,j,ae.target)}});for(let[E,ae]of d.entries()){let ue=c.get(E)??Number(ae.dataset?.virtualIndex||0);xe(E,ue,ae)}}}),Vue.onBeforeUnmount(()=>{r.value?.removeEventListener("scroll",U),window.removeEventListener("resize",U),p&&p.disconnect(),f&&cancelAnimationFrame(f),g&&cancelAnimationFrame(g),v&&cancelAnimationFrame(v),u.clear(),m=0,b=!1}),{rootRef:n,visibleEntries:z,topSpacerHeight:$,bottomSpacerHeight:te,setItemRef:_e}}}});function Lo(e,t=0){let s=Math.max(0,e)%19e3,n=0,r=1,i="speed-normal";return s<2500?n=s/2500*.16:s<5e3?(n=.16+(s-2500)/2500*.29,i="speed-fast"):s<7500?(n=.45+(s-5e3)/2500*.55,i="speed-turbo"):s<1e4?(n=1-(s-7500)/2500,r=-1,i="speed-crazy"):s<14e3?(n=0,i="speed-tired"):s<16e3?(n=0,i="speed-petted"):(n=0,i="speed-napping"),{phase:i,transform:`translate3d(${Math.max(0,t)*n}px, 0, 0) scaleX(${r})`}}function Oo(e,t,s){if(!(!e||!t||!s)){e.style.transform=s.transform;for(let n of sk)t.classList.toggle(n,n===s.phase)}}function Vo({onFrame:e,requestFrame:t=requestAnimationFrame,cancelFrame:s=cancelAnimationFrame}){let n=!1,r=null,i=()=>{r=null,n&&(e?.(),n&&(r=t(i)))};return{start(){return n?!1:(n=!0,r=t(i),!0)},stop(){return n?(n=!1,r!==null&&s(r),r=null,!0):!1},isRunning(){return n}}}var sk,gc=B(()=>{sk=["speed-napping","speed-normal","speed-fast","speed-turbo","speed-crazy","speed-tired","speed-petted"]});function or(e){return typeof e=="string"&&e.trim()?e.trim():""}function Rg(e){return or(e?.speakerVpId)||or(e?.vpId)}function Pg(e){let t=Rg(e),s=or(e?.turnId);return!t||!s?"":[t,s].join("\0")}function _g(e){if(!Array.isArray(e)||e.length<2)return e||[];let t=[],s=[],n=()=>{if(s.length===0)return;let r=new Map;for(let i of s){let o=Pg(i);r.has(o)||r.set(o,[]),r.get(o).push(i)}for(let i of r.values())t.push(...i);s=[]};for(let r of e){if(nk.has(r?.type)&&Pg(r)){s.push(r);continue}n(),t.push(r)}return n(),t}function Eg(e,t){if(!e||!t)return!1;let s=or(e.speakerVpId),n=Rg(t);if(s&&n&&s!==n)return!0;let r=or(e.turnId),i=or(t.turnId);return e.isHistory&&t.isHistory?e.messages?.length>0&&t.executionOrigin==="route_forward"&&r&&i&&r!==i:!!(r&&i&&r!==i)}var nk,Dg=B(()=>{nk=new Set(["assistant","chat-image","tool-result","tool-use","tool_result"])});function fi(e){return e?e.type!=="user"&&e.type!=="system"&&e.type!=="error":!1}function qo(e){let t=Array.isArray(e?.items)?e.items:[];return e?.responseCollapsed?t.filter(s=>!fi(s)):t}function rk(e){return(Array.isArray(e?.items)?e.items:[]).filter(fi)}function $g(e){let t=rk(e);return t.length?t[0]:null}function ik(e){let t=e?.textContent??e?.text??e?.content??e?.message?.content??"";return typeof t=="string"?t:Array.isArray(t)?t.map(s=>typeof s=="string"?s:s&&s.type==="text"&&s.text||"").join(""):t==null?"":String(t)}function Lg(e){if(!e?.responseCollapsed)return[];let t=$g(e);return ik(t).replace(/```[\s\S]*?```/g," ").replace(/`([^`]+)`/g,"$1").replace(/!\[[^\]]*\]\([^)]*\)/g," ").replace(/\[[^\]]*\]\(([^)]*)\)/g,"").replace(/[#>*_~\-]+/g," ").split(/\r?\n/).map(n=>n.trim()).filter(Boolean).slice(0,2)}function Og(e,t){if(!e?.responseCollapsed||typeof t!="function")return null;let s=qo(e),n=$g(e)?74:0,r=s.length+(n?1:0);if(!s.length)return n;let i=s.reduce((a,l)=>a+t(l),0),o=Math.max(0,r-1)*18;return i+o+n}var Vg=B(()=>{});function Ps(e,t){typeof t!="string"||!/^m\d+$/.test(t)||e.includes(t)||e.push(t)}function ok(e){if(!e)return[];let t=[];for(let s of Array.isArray(e.messages)?e.messages:[]){Ps(t,s?.id),Ps(t,s?.messageId),Ps(t,s?.persistedMessageId);for(let n of Array.isArray(s?.sourceMessageIds)?s.sourceMessageIds:[])Ps(t,n)}return Ps(t,e.message?.id),Ps(t,e.messageId),Ps(t,e.atMessageId),e.type!=="assistant-turn"&&Ps(t,e.id),t}function ak(e){let t=[],s=n=>{typeof n=="string"&&n&&!t.includes(n)&&t.push(n)};s(e?.entryId),s(e?.message?.entryId);for(let n of Array.isArray(e?.messages)?e.messages:[])s(n?.entryId);return t}function Fg(e,t=[]){return e?.closest?.(qg)?!1:!t.some(s=>s?.matches?.(qg))}async function Hg({result:e,revealWindow:t,nextTick:s,revealMessage:n,isMobile:r,closeOutline:i}){if(!e||!await t?.(e))return!1;await s?.();let a=await n?.(e);return a&&r&&i?.(),!!a}function lk(e,t){let s=typeof t?.entryId=="string"?t.entryId:null,n=[];for(let r of[...Array.isArray(t?.sourceMessageIds)?t.sourceMessageIds:[],t?.messageId,typeof t=="string"?t:null])Ps(n,r);if(!s&&n.length===0)return null;for(let r of Array.isArray(e)?e:[]){if(!r)continue;let i=Array.isArray(r.items)?r.items:[r];for(let o of i){let a=s&&ak(o).includes(s),l=n.some(u=>ok(o).includes(u));if(!a&&!l)continue;let c=o?.id,d=r?.id;return!c||!d?null:{blockId:d,rowId:c,collapseKey:r.responseCollapseKey||null,requiresExpansion:!!(r.responseCollapsed&&o.type==="assistant-turn")}}}return null}async function Bg({blocks:e,target:t,messageId:s,collapseStates:n,scrollToBlock:r,findRow:i,anchorRow:o,flashRow:a,nextTick:l,align:c="start"}){let d=lk(e,t||s);if(!d||typeof r!="function"||typeof i!="function")return!1;if(d.requiresExpansion){if(!d.collapseKey||!n)return!1;n[d.collapseKey]=!1,await l?.()}if(!await r(d.blockId,{align:c}))return!1;await l?.();let p=i(d.rowId);return p?(typeof o=="function"?o(d.blockId,d.rowId,p,{align:c}):p.scrollIntoView?.({block:c,inline:"nearest"}),a?.(d.rowId),!0):!1}var qg,hc=B(()=>{qg=[".yeaft-conversation-outline",".yeaft-conversation-outline-sender-menu",".yeaft-search-btn"].join(", ")});var Fo,mc=B(()=>{Ot();Xl();To();_o();Eo();ac();mg();yg();Do();Mg();gc();Dg();fc();Vg();hc();Ns();oo();Fo={name:"MessageList",components:{MessageItem:sr,AssistantTurn:nr,VpTurnBlock:rr,VpSpeakerHeader:Ro,ReflectionCard:hg,SubAgentCard:vg,UserTurnBlock:ir,VirtualTranscript:Tg},template:`
1089
+ `,setup(e,{emit:t,expose:s}){let n=Vue.ref(null),r=Vue.ref(null),i=e.initialAlign==="end",o=Vue.ref(i?Number.MAX_SAFE_INTEGER:0),a=Vue.ref(zs.viewportHeight),l=Vue.reactive({}),c=new Map,d=new Map,u=new Map,p=null,f=null,g=null,v=null,m=0,b=!1,h=0,w=!0,I=null,y="start",k=null,_=[],A=0,Q=Vue.computed(()=>di(e.items,l,{itemGap:e.itemGap,estimateHeight:e.estimateHeight})),H=Vue.computed(()=>pc(e.items,Q.value,{scrollTop:o.value,viewportHeight:a.value,overscan:e.overscan})),z=Vue.computed(()=>H.value.items),$=Vue.computed(()=>H.value.topSpacerHeight),te=Vue.computed(()=>H.value.bottomSpacerHeight);function F(E){E&&t("scroll-state",{scrollTop:E.scrollTop||0,scrollHeight:E.scrollHeight||0,clientHeight:E.clientHeight||0})}function S(){let E=r.value;E&&(a.value=Math.max(1,E.clientHeight||zs.viewportHeight),i&&e.items.length===0||(o.value=Math.max(0,E.scrollTop||0)),F(E))}function M(){let E=r.value;return!i||e.initialAlign!=="end"||e.items.length===0||!E?!1:(ce(),E.scrollTop=E.scrollHeight,i=!1,S(),!0)}function L(){M()||S()}function T(E,ae){let pe=E.findIndex((J,R)=>Ks(J,R)===ae);return pe<0?null:di(E,l,{itemGap:e.itemGap,estimateHeight:e.estimateHeight}).offsets[pe]||0}function D(E,ae,pe){let U=r.value;if(!U||w||E.length===0||ae.length===0)return;let J=di(E,l,{itemGap:e.itemGap,estimateHeight:e.estimateHeight}),R=pc(E,J,{scrollTop:U.scrollTop||0,viewportHeight:U.clientHeight||a.value,overscan:0}),ee=Math.min(E.length-1,R.visibleStart),V=Ks(E[ee],ee),P=J.offsets[ee]||0;Vue.nextTick(()=>{if(pe!==A)return;let re=T(ae,V);Number.isFinite(re)&&(U.scrollTop+=re-P,S())})}function j(){f||(f=requestAnimationFrame(()=>{f=null,S()}))}function X(E){return E?ui({scrollTop:E.scrollTop,scrollHeight:E.scrollHeight,clientHeight:E.clientHeight,threshold:zs.bottomThreshold}):!0}function G({delta:E=0,toBottom:ae=!1}={},pe=h){if(pe!==h||(Math.abs(E)>=pi&&(m+=E),ae&&(b=!0),v))return;let U=pe;v=requestAnimationFrame(()=>{if(v=null,U!==h)return;let J=r.value;if(!J){m=0,b=!1;return}b?J.scrollTop=J.scrollHeight:Math.abs(m)>=pi&&(J.scrollTop+=m),m=0,b=!1,S()})}function ce(){I=null,k=null}function be({preserveTarget:E=!1}={}){h+=1,b=!1,m=0,E||ce(),v&&cancelAnimationFrame(v),v=null}function N(E,ae,pe){!E||!pe||(u.set(E,{index:ae,el:pe}),!g&&(g=requestAnimationFrame(()=>{g=null;let U=Array.from(u.entries());u.clear(),Z(U)})))}function Z(E){let ae=[];for(let[we,Ve]of E){let Be=Ve?.el;if(!Be)continue;let rt=Math.ceil(Be.getBoundingClientRect?.().height||Be.offsetHeight||0);if(!Number.isFinite(rt)||rt<=0)continue;let st=l[we];if(st===rt)continue;let Je=c.get(we);ae.push({key:we,nextHeight:rt,previousHeight:st,itemIndex:Number.isFinite(Je)?Je:Ve.index})}if(!ae.length)return;let pe=r.value,U=w&&X(pe),J=ae.some(we=>!Number.isFinite(we.previousHeight)),R=H.value.visibleStart,ee=!!I&&ae.some(we=>we.key===I),V=0,P=w&&e.initialAlign==="end"&&J;for(let we of ae){let{key:Ve,nextHeight:Be,previousHeight:rt,itemIndex:st}=we;if(l[Ve]=Be,!pe||!Number.isFinite(rt))continue;let Je=Be-rt;Math.abs(Je)<pi||(Number.isFinite(st)&&st<R?V+=Je:U&&(P=!0))}if(ee){be({preserveTarget:!0}),oe(I,y);return}if(Math.abs(V)>=pi||P){let we={delta:V,toBottom:P},Ve=h;P?Vue.nextTick(()=>G(we,Ve)):G(we,Ve)}}function K(E,ae="start"){let pe=r.value,U=k||d.get(String(E));if(!pe||!U)return!1;let J=pe.getBoundingClientRect?.(),R=U.getBoundingClientRect?.();if(!J||!R)return!1;let ee=Number(J.top),V=Number(pe.clientHeight||a.value),P=Number(R.height||0),re=ae==="center"&&P<=V?ee+(V-P)/2:ae==="end"&&P<=V?Number(J.bottom)-P:ee,we=Number(R.top)-re;return Math.abs(we)>=pi&&(pe.scrollTop+=we),S(),!0}function oe(E,ae="start",pe){let U=String(E);I=U,y=ae,pe!==void 0&&(k=pe);let J=()=>{I===U&&K(U,y)};Vue.nextTick(J)}function he(E){let ae=!!E;ae&&ce(),w!==ae&&(w=ae,w||be())}function xe(E,ae,pe){c.set(E,ae),pe&&(d.set(E,pe),p&&p.observe(pe),Vue.nextTick(()=>N(E,ae,pe)))}function _e(E,ae,pe){if(!E)return;let U=d.get(E);if(U&&U!==pe&&p&&p.unobserve(U),!pe){d.delete(E);return}xe(E,ae,pe)}async function ge(E,{align:ae="center"}={}){let pe=Number.isFinite(E)?Math.floor(E):-1,U=r.value;if(!U||pe<0||pe>=e.items.length)return!1;be({preserveTarget:!0});let J=Ks(e.items[pe],pe);return I=J,y=ae,k=null,U.scrollTop=kg(e.items,pe,l,{itemGap:e.itemGap,estimateHeight:e.estimateHeight,viewportHeight:U.clientHeight||a.value,align:ae}),S(),await Vue.nextTick(),d.get(J)?(oe(J,ae),!0):!1}function ne(E,ae={}){let pe=c.get(String(E));return Number.isFinite(pe)?ge(pe,ae):Promise.resolve(!1)}function se(E,ae,{align:pe="start"}={}){let U=String(E||"");return!U||!ae?!1:(I=U,y=pe,k=ae,K(U,pe),!0)}return s({scrollToKey:ne,scrollToIndex:ge,anchorTarget:se,clearTargetAnchor:ce,cancelPendingBottomFollow:be,setBottomFollowEnabled:he}),Vue.watch(()=>e.items.map((E,ae)=>Ks(E,ae)).join(`
1090
+ `),()=>{let E=e.items.slice(),ae=_;_=E,A+=1;let pe=A;c.clear(),e.items.forEach((U,J)=>c.set(Ks(U,J),J)),I&&!c.has(I)&&ce(),ae.length>0&&D(ae,E,pe),Vue.nextTick(()=>{pe===A&&L()})},{immediate:!0}),Vue.onMounted(()=>{if(r.value=n.value?.closest?.(".chat-container")||n.value?.parentElement||null,L(),r.value?.addEventListener("scroll",j,{passive:!0}),window.addEventListener("resize",j),typeof ResizeObserver<"u"){p=new ResizeObserver(E=>{for(let ae of E){let pe=ae.target?.dataset?.virtualId,U=Number(ae.target?.dataset?.virtualIndex);pe&&N(pe,U,ae.target)}});for(let[E,ae]of d.entries()){let pe=c.get(E)??Number(ae.dataset?.virtualIndex||0);xe(E,pe,ae)}}}),Vue.onBeforeUnmount(()=>{r.value?.removeEventListener("scroll",j),window.removeEventListener("resize",j),p&&p.disconnect(),f&&cancelAnimationFrame(f),g&&cancelAnimationFrame(g),v&&cancelAnimationFrame(v),u.clear(),m=0,b=!1}),{rootRef:n,visibleEntries:z,topSpacerHeight:$,bottomSpacerHeight:te,setItemRef:_e}}}});function Lo(e,t=0){let s=Math.max(0,e)%19e3,n=0,r=1,i="speed-normal";return s<2500?n=s/2500*.16:s<5e3?(n=.16+(s-2500)/2500*.29,i="speed-fast"):s<7500?(n=.45+(s-5e3)/2500*.55,i="speed-turbo"):s<1e4?(n=1-(s-7500)/2500,r=-1,i="speed-crazy"):s<14e3?(n=0,i="speed-tired"):s<16e3?(n=0,i="speed-petted"):(n=0,i="speed-napping"),{phase:i,transform:`translate3d(${Math.max(0,t)*n}px, 0, 0) scaleX(${r})`}}function Oo(e,t,s){if(!(!e||!t||!s)){e.style.transform=s.transform;for(let n of sk)t.classList.toggle(n,n===s.phase)}}function Vo({onFrame:e,requestFrame:t=requestAnimationFrame,cancelFrame:s=cancelAnimationFrame}){let n=!1,r=null,i=()=>{r=null,n&&(e?.(),n&&(r=t(i)))};return{start(){return n?!1:(n=!0,r=t(i),!0)},stop(){return n?(n=!1,r!==null&&s(r),r=null,!0):!1},isRunning(){return n}}}var sk,gc=B(()=>{sk=["speed-napping","speed-normal","speed-fast","speed-turbo","speed-crazy","speed-tired","speed-petted"]});function or(e){return typeof e=="string"&&e.trim()?e.trim():""}function Rg(e){return or(e?.speakerVpId)||or(e?.vpId)}function Pg(e){let t=Rg(e),s=or(e?.turnId);return!t||!s?"":[t,s].join("\0")}function _g(e){if(!Array.isArray(e)||e.length<2)return e||[];let t=[],s=[],n=()=>{if(s.length===0)return;let r=new Map;for(let i of s){let o=Pg(i);r.has(o)||r.set(o,[]),r.get(o).push(i)}for(let i of r.values())t.push(...i);s=[]};for(let r of e){if(nk.has(r?.type)&&Pg(r)){s.push(r);continue}n(),t.push(r)}return n(),t}function Eg(e,t){if(!e||!t)return!1;let s=or(e.speakerVpId),n=Rg(t);if(s&&n&&s!==n)return!0;let r=or(e.turnId),i=or(t.turnId);return e.isHistory&&t.isHistory?e.messages?.length>0&&t.executionOrigin==="route_forward"&&r&&i&&r!==i:!!(r&&i&&r!==i)}var nk,Dg=B(()=>{nk=new Set(["assistant","chat-image","tool-result","tool-use","tool_result"])});function fi(e){return e?e.type!=="user"&&e.type!=="system"&&e.type!=="error":!1}function qo(e){let t=Array.isArray(e?.items)?e.items:[];return e?.responseCollapsed?t.filter(s=>!fi(s)):t}function rk(e){return(Array.isArray(e?.items)?e.items:[]).filter(fi)}function $g(e){let t=rk(e);return t.length?t[0]:null}function ik(e){let t=e?.textContent??e?.text??e?.content??e?.message?.content??"";return typeof t=="string"?t:Array.isArray(t)?t.map(s=>typeof s=="string"?s:s&&s.type==="text"&&s.text||"").join(""):t==null?"":String(t)}function Lg(e){if(!e?.responseCollapsed)return[];let t=$g(e);return ik(t).replace(/```[\s\S]*?```/g," ").replace(/`([^`]+)`/g,"$1").replace(/!\[[^\]]*\]\([^)]*\)/g," ").replace(/\[[^\]]*\]\(([^)]*)\)/g,"").replace(/[#>*_~\-]+/g," ").split(/\r?\n/).map(n=>n.trim()).filter(Boolean).slice(0,2)}function Og(e,t){if(!e?.responseCollapsed||typeof t!="function")return null;let s=qo(e),n=$g(e)?74:0,r=s.length+(n?1:0);if(!s.length)return n;let i=s.reduce((a,l)=>a+t(l),0),o=Math.max(0,r-1)*18;return i+o+n}var Vg=B(()=>{});function Ps(e,t){typeof t!="string"||!/^m\d+$/.test(t)||e.includes(t)||e.push(t)}function ok(e){if(!e)return[];let t=[];for(let s of Array.isArray(e.messages)?e.messages:[]){Ps(t,s?.id),Ps(t,s?.messageId),Ps(t,s?.persistedMessageId);for(let n of Array.isArray(s?.sourceMessageIds)?s.sourceMessageIds:[])Ps(t,n)}return Ps(t,e.message?.id),Ps(t,e.messageId),Ps(t,e.atMessageId),e.type!=="assistant-turn"&&Ps(t,e.id),t}function ak(e){let t=[],s=n=>{typeof n=="string"&&n&&!t.includes(n)&&t.push(n)};s(e?.entryId),s(e?.message?.entryId);for(let n of Array.isArray(e?.messages)?e.messages:[])s(n?.entryId);return t}function Fg(e,t=[]){return e?.closest?.(qg)?!1:!t.some(s=>s?.matches?.(qg))}async function Hg({result:e,revealWindow:t,nextTick:s,revealMessage:n,isMobile:r,closeOutline:i}){if(!e||!await t?.(e))return!1;await s?.();let a=await n?.(e);return a&&r&&i?.(),!!a}function lk(e,t){let s=typeof t?.entryId=="string"?t.entryId:null,n=[];for(let r of[...Array.isArray(t?.sourceMessageIds)?t.sourceMessageIds:[],t?.messageId,typeof t=="string"?t:null])Ps(n,r);if(!s&&n.length===0)return null;for(let r of Array.isArray(e)?e:[]){if(!r)continue;let i=Array.isArray(r.items)?r.items:[r];for(let o of i){let a=s&&ak(o).includes(s),l=n.some(u=>ok(o).includes(u));if(!a&&!l)continue;let c=o?.id,d=r?.id;return!c||!d?null:{blockId:d,rowId:c,collapseKey:r.responseCollapseKey||null,requiresExpansion:!!(r.responseCollapsed&&o.type==="assistant-turn")}}}return null}async function Bg({blocks:e,target:t,messageId:s,collapseStates:n,scrollToBlock:r,findRow:i,anchorRow:o,flashRow:a,nextTick:l,align:c="start"}){let d=lk(e,t||s);if(!d||typeof r!="function"||typeof i!="function")return!1;if(d.requiresExpansion){if(!d.collapseKey||!n)return!1;n[d.collapseKey]=!1,await l?.()}if(!await r(d.blockId,{align:c}))return!1;await l?.();let p=i(d.rowId);return p?(typeof o=="function"?o(d.blockId,d.rowId,p,{align:c}):p.scrollIntoView?.({block:c,inline:"nearest"}),a?.(d.rowId),!0):!1}var qg,hc=B(()=>{qg=[".yeaft-conversation-outline",".yeaft-conversation-outline-sender-menu",".yeaft-search-btn"].join(", ")});var Fo,mc=B(()=>{Ot();Xl();To();_o();Eo();ac();mg();yg();Do();Mg();gc();Dg();fc();Vg();hc();Ns();oo();Fo={name:"MessageList",components:{MessageItem:sr,AssistantTurn:nr,VpTurnBlock:rr,VpSpeakerHeader:Ro,ReflectionCard:hg,SubAgentCard:vg,UserTurnBlock:ir,VirtualTranscript:Tg},template:`
1091
1091
  <main class="chat-container" ref="containerRef">
1092
1092
  <!-- Session Loading Overlay - only covers message area -->
1093
1093
  <div class="session-loading-overlay" v-if="showSessionLoadingOverlay">
@@ -1711,7 +1711,7 @@ ${String(e||"").trim()}
1711
1711
  {{ $t('message.scrollToLatest') }}
1712
1712
  </button>
1713
1713
  </main>
1714
- `,emits:["new-conversation","resume-conversation","open-settings","quote-message","edit-message-as-new"],setup(e,{expose:t}){let s=Pinia.useChatStore(),n=je(),r=typeof window<"u"&&window.Pinia?.useVpStore?window.Pinia.useVpStore():null,i=Vue.inject("t",null),o=Vue.ref(null),a=Vue.ref(null),l=Vue.reactive({}),c=Vue.reactive({}),d=Vue.reactive({}),u=C=>String(C?.id||C?.turnId||C?.messageId||C?.atMessageId||C?.message?.id||"turn_unknown"),p=C=>{let W=u(C);return Object.prototype.hasOwnProperty.call(l,W)?!!l[W]:!1},f=(C,W)=>{l[u(C)]=!!W},g=C=>{let W=C&&(C.turnId||C.id);!W||typeof s.openYeaftTurnDebug!="function"||s.openYeaftTurnDebug({sessionId:H.value||null,turnId:W})},v=({key:C,value:W}={})=>{C&&(c[C]=!!W)},m=C=>{let W=Og(C,Us);return Number.isFinite(W)?W:Us(C)},b=C=>qo(C),h=C=>{let W=Array.isArray(C?.collapsedResponsePreview)?C.collapsedResponsePreview:Lg(C);return Array.isArray(W)?W:W?[String(W)]:[]},w=C=>{let W=Array.isArray(C?.items)?C.items.find(ye=>fi(ye)):null,Y=W?.speakerVpId||W?.vpId||W?.message?.speakerVpId||W?.message?.vpId||C?.vpId||"",Se=Y&&r&&typeof r.vpLabel=="function"?r.vpLabel(Y)||Y:Y||(typeof i=="function"?i("message.assistant"):"Assistant"),Re=Y&&r&&typeof r.vpTextColor=="function"?{color:r.vpTextColor(Y)}:{},Ce=W?.speakerTimestamp||W?.timestamp||W?.createdAt||W?.message?.timestamp||W?.message?.createdAt||0,nt="",Le="";if(Ce)try{let ye=new Date(Ce);Number.isNaN(ye.getTime())||(nt=ts(Ce),Le=ye.toLocaleString())}catch{}return{name:Se,style:Re,timeText:nt,fullTimeText:Le}},I=C=>{let W=Array.isArray(C?.items)?C.items:[];for(let Y=W.length-1;Y>=0;Y-=1)if(fi(W[Y]))return W[Y];return null},y=(C,W)=>!C?.responseCollapsible||!W?!1:I(C)===W,k=C=>!!(C?.responseCollapsible&&!qo(C).some(W=>y(C,W))),_=C=>{let W=C?.responseCollapseKey;W&&(d[W]=!C.responseCollapsed)},A=C=>{let W=Number(C?.responseCount||0),Y=C?.responseCollapsed?"message.showResponses":"message.hideResponses",Se=(typeof i=="function"?i(Y):"")||(C?.responseCollapsed?"Show {count} response(s)":"Hide response(s)");return String(Se).replace("{count}",String(W))},Q=(()=>{try{return window.Pinia?.useSessionsStore?.()||null}catch{return null}}),H=Vue.computed(()=>{if(s.currentView!=="yeaft")return null;let C=Q();if(!C)return null;let W=s.yeaftActiveSessionFilter||null;return W&&typeof C.sessionById=="function"&&C.sessionById(W,s.currentAgent||null)?W:C.activeSessionId&&typeof C.sessionById=="function"&&C.sessionById(C.activeSessionId,s.currentAgent||null)?C.activeSessionId:null}),z=Vue.computed(()=>{let C=s.currentView||"",W=s.currentAgent||"";if(C==="yeaft"){let Y=s.yeaftActiveSessionFilter||H.value||"__all__";return[C,W,Y].join("")}return[C,W,s.activeConversationId||""].join("")}),$=Vue.computed(()=>H.value!==null),te=Vue.computed(()=>s.agents.filter(C=>C.online)),F=Vue.ref(null),S=Vue.ref(null),M=Vue.ref(!1),L=Vue.ref(""),T=null,D=0,U=n.token||"",X=()=>{F.value=null,S.value=null,L.value="",T=null,D+=1},G=Io(),ce=Co(),be=Vue.computed(()=>xo({profile:F.value,agentSecret:S.value,serverWsUrl:tr(location)})),N=()=>{let C={"Content-Type":"application/json"};return n.token&&(C.Authorization=`Bearer ${n.token}`),C},Z=async()=>{if(te.value.length>0||s.currentConversation)return;if(S.value||T)return T;M.value=!0,L.value="";let C=++D;return T=(async()=>{let W=n.token||"",Y=N(),[Se,Re]=await Promise.all([fetch("/api/user/profile",{headers:Y}),fetch("/api/user/agent-secret",{headers:Y})]),Ce=Se.ok?await Se.json():null;if(C!==D||W!==(n.token||""))return;if(Ce&&(F.value=Ce),!Re.ok){let ye="";try{ye=(await Re.json())?.error||""}catch{}throw new Error(ye||"Failed to load Agent secret")}let nt=await Re.json();if(C!==D||W!==(n.token||""))return;let Le=nt?.agentSecret||nt?.agent_secret||null;S.value=Le&&String(Le).trim()?String(Le):null})().catch(W=>{C===D&&(L.value=W?.message||"Failed to load Agent secret")}).finally(()=>{C===D&&(M.value=!1,T=null)}),T},K=async C=>{if(C)try{await navigator.clipboard.writeText(C)}catch{}},oe=new WeakMap,he=0,xe=(C,W)=>{let Y=C?.message&&typeof C.message=="object"?C.message:Array.isArray(C?.messages)&&C.messages[0]&&typeof C.messages[0]=="object"?C.messages[0]:W&&typeof W=="object"?W:C&&typeof C=="object"?C:null;if(!Y)return`legacy_render_${++he}`;let Se=oe.get(Y);return Se||(Se=`legacy_render_${++he}`,oe.set(Y,Se)),Se},_e=C=>{let W=C?.message||C||null;return C?.entryId||C?.uiKey||C?.stableKey||W?.entryId||W?.uiKey||W?.stableKey||C?.atMessageId||C?.messageId||W?.messageId||C?.id||W?.id||xe(C,W)},ge=C=>encodeURIComponent(String(C||"legacy")),ne=C=>{let W=C?.message||null,Y=_e(C),Se=C?.id||C?.atMessageId||W?.id||W?.messageId||Y,Re=C?.speakerVpId||C?.vpId||W?.speakerVpId||W?.vpId||"";return{id:`message_${ge(Y)}`,uiKey:Y,vpId:Re,messageId:Se}},se=Vue.computed(()=>{let C=s.currentView==="yeaft"?_g(s.messages):s.messages,W=[],Y=null,Se=()=>{if(Y){let Le=Y.turnId&&Object.values(s.activeVpTurns||{}).find(Ge=>((Ge?.turnId||null)===Y.turnId||!Ge?.turnId&&s.activeVpTurns?.[Y.turnId]===Ge)&&(!s.currentAgent||!Ge?.agentId||Ge.agentId===s.currentAgent))||null;Y.isActive=!!Le,Number.isFinite(Le?.startedAt)&&(Y.startedAt=Le.startedAt),io(Y);let ye=Y.messages.reduce((Ge,Ls)=>Number.isInteger(Ls?.llmCallCount)&&Ls.llmCallCount>Ge?Ls.llmCallCount:Ge,0),$t=Y.turnId?s.yeaftDebugTurnsById?.[Y.turnId]:null;Y.llmCallCount=Math.max(ye,$t?.loopCount||0);let Lt=[...Y.messages].reverse().find(Ge=>Ge?.type==="assistant"&&(Ge.model||Ge.effort||Number.isFinite(Ge.inputTokens)||Number.isFinite(Ge.outputTokens)||Number.isFinite(Ge.totalTokens)||Number.isFinite(Ge.totalMs)||Number.isFinite(Ge.turnDurationMs)));Y.model=$t?.model||Lt?.model||null,Y.effort=$t?.effort||Lt?.effort||null;for(let Ge of["inputTokens","outputTokens","totalTokens"]){let Ls=$t?.[Ge],_i=Lt?.[Ge];Number.isFinite(Ls)?Y[Ge]=Ls:Number.isFinite(_i)&&(Y[Ge]=_i)}Number.isFinite($t?.totalMs)?Y.totalMs=$t.totalMs:Number.isFinite(Lt?.totalMs)?Y.totalMs=Lt.totalMs:Number.isFinite(Lt?.turnDurationMs)&&(Y.totalMs=Lt.turnDurationMs);let sn=!!(Y.textContent||Y.todoMsg||Y.askMsg||Y.imageMsgs.length>0),Ri=Y.toolMsgs.length>0;(sn||Ri)&&(Y.showSpeakerHeader=!!Y.speakerVpId,W.push(Y)),Y=null}},Re=Le=>{if(Y){if(!Y.speakerVpId){let ye=Le.speakerVpId||Le.vpId;ye&&(Y.speakerVpId=ye,Y.speakerTimestamp=typeof Le.timestamp=="number"&&Le.timestamp>0?Le.timestamp:typeof Le.createdAt=="number"?Le.createdAt:0,typeof Le.lastStateChangeCause=="string"&&!Y.speakerStateCause&&(Y.speakerStateCause=Le.lastStateChangeCause))}!Y.turnId&&Le.turnId&&(Y.turnId=Le.turnId)}},Ce=(Le=null)=>{let ye=_e(Le);Y={type:"assistant-turn",id:`response_${ge(ye)}`,uiKey:ye,...Le?.entryId?{entryId:Le.entryId}:{},textContent:"",textSegments:[],isStreaming:!1,isActive:!1,isHistory:!1,todoMsg:null,toolMsgs:[],imageMsgs:[],askMsg:null,messages:[],atMessageId:null,speakerVpId:null,speakerTimestamp:0,speakerStateCause:"",showSpeakerHeader:!1,startedAt:0,totalMs:null,inputTokens:null,outputTokens:null,totalTokens:null,turnId:null}},nt=Le=>{Eg(Y,Le)&&Se()};for(let Le=0;Le<C.length;Le++){let ye=C[Le];if(ye.type==="user"){if(!ye.content||!ye.content.trim())continue;Se(),W.push({type:"user",id:_e(ye),message:ye});continue}if(ye.type==="system"||ye.type==="error"){Se(),W.push({type:ye.type,id:_e(ye),message:ye});continue}if(!(ye.type==="tool-result"||ye.type==="tool_result")){if(ye.type==="assistant"){nt(ye),Y||Ce(ye),ro(Y,ye),ye.isStreaming&&(Y.isStreaming=!0),ye.isHistory&&(Y.isHistory=!0),ye.id&&/^m\d+$/.test(ye.id)&&(Y.atMessageId=ye.id),Re(ye),Y.messages.push(ye);continue}if(ye.type==="tool-use"){nt(ye),Y||Ce(ye),Re(ye);let $t=C[Le+1],Lt=$t&&($t.type==="tool-result"||$t.type==="tool_result"),sn={...ye,hasResult:Lt||ye.hasResult||!1,toolResult:ye.toolResult||null};ye.isHistory&&(Y.isHistory=!0),ye.toolName==="TodoWrite"?Y.todoMsg=sn:ye.toolName==="AskUserQuestion"?Y.askMsg=sn:Y.toolMsgs.push(sn),Y.messages.push(ye);continue}if(ye.type==="chat-image"){nt(ye),Y||Ce(ye),Re(ye),ye.isHistory&&(Y.isHistory=!0),Y.imageMsgs.push(ye),Y.messages.push(ye);continue}Se(),W.push({type:ye.type||"unknown",id:_e(ye),message:ye})}}return Se(),W}),E=Vue.computed(()=>{let C=[],W=null,Y=()=>{W&&C.push(W),W=null};return se.value.forEach(Se=>{if(!Se||Se.type==="system"||Se.type==="error"){Y(),C.push(Se);return}let Re=ne(Se);if(Se.type==="user"||!W){Y(),W={type:"message-block",id:`block_${ge(Re.uiKey)}`,uiKey:Re.uiKey,vpId:Re.vpId,messageId:Re.messageId,items:[Se]};return}W.items.push(Se),!W.vpId&&Re.vpId&&(W.vpId=Re.vpId)}),Y(),C}),ae=Vue.computed(()=>{let C=s.yeaftReflectionCards||{},W=s.yeaftConversationId,Y={__orphans:[]},Se=Object.values(C).filter(Ce=>Ce&&Ce.conversationId===W).sort((Ce,nt)=>(Ce.anchorOrder||0)-(nt.anchorOrder||0)||(Ce.updatedAt||0)-(nt.updatedAt||0)),Re=new Set;for(let Ce of s.messages||[])Ce&&Ce.id&&Re.add(Ce.id);for(let Ce of Se)Ce.anchorMsgId&&Re.has(Ce.anchorMsgId)?(Y[Ce.anchorMsgId]||(Y[Ce.anchorMsgId]=[]),Y[Ce.anchorMsgId].push(Ce)):Y.__orphans.push(Ce);return Y}),ue=C=>C?C.type==="assistant-turn"?C.atMessageId||null:C.message&&C.message.id||null:null,j=C=>{let W=ue(C);return W?(ae.value||{})[W]||[]:[]},J=Vue.computed(()=>(ae.value||{}).__orphans||[]),R=Vue.computed(()=>{let C=s.yeaftSubAgentCards||{},W=s.yeaftConversationId,Y={__orphans:[]},Se=Object.values(C).filter(Ce=>Ce&&Ce.conversationId===W).sort((Ce,nt)=>(Ce.anchorOrder||0)-(nt.anchorOrder||0)||(Ce.updatedAt||0)-(nt.updatedAt||0)),Re=new Set;for(let Ce of s.messages||[])Ce&&Ce.id&&Re.add(Ce.id);for(let Ce of Se)Ce.anchorMsgId&&Re.has(Ce.anchorMsgId)?(Y[Ce.anchorMsgId]||(Y[Ce.anchorMsgId]=[]),Y[Ce.anchorMsgId].push(Ce)):Y.__orphans.push(Ce);return Y}),ee=C=>{let W=ue(C);return W?(R.value||{})[W]||[]:[]},V=Vue.computed(()=>(R.value||{}).__orphans||[]),P=Vue.ref(!0),re=Vue.ref(!1),we=zs.bottomThreshold,Ve=!0,Be=Vue.computed(()=>s.messages.some(C=>C.isStreaming)),rt=Vue.computed(()=>{let C=s.currentAgent||null,W=s.yeaftActiveSessionFilter||s.activeYeaftSessionId||null;return Object.values(s.activeVpTurns||{}).some(Y=>(!C||!Y?.agentId||Y.agentId===C)&&(!W||!Y?.sessionId||Y.sessionId===W))}),st=Vue.computed(()=>!s.activeConversationId||E.value.length>0?!1:s.currentView==="yeaft"?!!s.yeaftInitialHistoryLoading:!!s.sessionLoading),Je=Vue.computed(()=>s.currentView==="yeaft"&&!!s.yeaftLoadingMoreHistory&&s.activeYeaftHistoryState?.mode==="older"),Rt=Vue.computed(()=>s.currentView==="yeaft"?"":s.sessionLoadingText||""),Bt=Vue.computed(()=>!!s.sessionLoading&&!st.value),Nt=Vue.computed(()=>s.isProcessing&&!Be.value),At=Vue.ref(Date.now()),at=null,it=()=>{at||(at=setInterval(()=>{At.value=Date.now()},1e3))},ds=()=>{at&&(clearInterval(at),at=null)};Vue.watch(rt,C=>{C?(At.value=Date.now(),it()):ds()},{immediate:!0}),Vue.onBeforeUnmount(()=>ds());let et=Vue.ref(0),ut=Vue.ref(Date.now()),xt=Vue.ref(null),us=Vue.ref(null),pt=null,O=Vue.ref("cat"),le=new URLSearchParams(window.location.search).get("preview"),me=Vue.ref(5),Ae=Vue.ref(95),Ie=Vue.ref("bark-both"),Oe=Vue.ref(1),He=Vue.ref(-1),Ue=null;function _t(){if(!et.value)return;let C=xt.value,W=us.value;if(C&&W){let Y=C.parentElement,Se=Math.max(0,(Y?.clientWidth||0)-80);Oo(C,W,Lo(Date.now()-et.value,Se))}}let ft=Vo({onFrame:_t});function bt(){if(!et.value||O.value!=="dog")return;ut.value=Date.now();let C=(ut.value-et.value)%18e3;if(C<2e3)me.value=5,Ae.value=95,Ie.value="bark-both",Oe.value=1,He.value=-1;else if(C<5e3){let W=(C-2e3)/3e3;me.value=5+W*25,Ae.value=95,Ie.value="left-approach",Oe.value=1,He.value=-1}else if(C<8e3){let W=(C-5e3)/3e3;me.value=30,Ae.value=95-W*25,Ie.value="right-approach",Oe.value=1,He.value=-1}else if(C<1e4){let W=(C-8e3)/2e3;me.value=30+W*13,Ae.value=70-W*13,Ie.value="both-approach",Oe.value=1,He.value=-1}else if(C<11e3)me.value=43,Ae.value=57,Ie.value="snap",Oe.value=1,He.value=-1;else if(C<12500)me.value=43,Ae.value=57,Ie.value="stunned",Oe.value=1,He.value=-1;else if(C<15e3){let W=(C-12500)/2500;me.value=43-W*38,Ae.value=57+W*38,Ie.value="retreat",Oe.value=-1,He.value=1}else C<17e3?(me.value=5,Ae.value=95,Ie.value="rehang",Oe.value=-1,He.value=1):(me.value=5,Ae.value=95,Ie.value="reset",Oe.value=1,He.value=-1);Ue=requestAnimationFrame(bt)}let Js=Vue.computed(()=>{let C=me.value*1.2;return Oe.value<0?`translate(${C+13.5}, 0) scale(-1, 1)`:`translate(${C-13.5}, 0)`}),An=Vue.computed(()=>{let C=Ae.value*1.2;return He.value>0?`translate(${C-10.5}, 2)`:`translate(${C+10.5}, 2) scale(-1, 1)`}),xn=Vue.computed(()=>{let C=Ie.value;return C==="bark-both"||C==="left-approach"||C==="right-approach"||C==="both-approach"||C==="reset"}),zt=Vue.computed(()=>{let C=me.value*1.2,W=10;if(xn.value){let Re=Math.max(0,(C-3)*.12);return`M3,18 Q${(3+C)/2},${18+Re} ${C},${W}`}if(Ie.value==="rehang")return`M${C},${W} Q${C-3},20 3,18`;let Y=Oe.value<0?1:-1,Se=C+Y*8;return`M${C},${W} Q${C},18 ${Se},22`}),en=Vue.computed(()=>{let C=Ae.value*1.2,W=10;if(xn.value){let Re=Math.max(0,(118-C)*.12);return`M118,18 Q${(118+C)/2},${18+Re} ${C},${W}`}if(Ie.value==="rehang")return`M${C},${W} Q${C+3},20 118,18`;let Y=He.value>0?-1:1,Se=C+Y*8;return`M${C},${W} Q${C},18 ${Se},22`}),yr=Vue.computed(()=>Ie.value==="snap"?.2:.4),br=Vue.computed(()=>Ie.value==="snap"?.2:.4),wr=Vue.computed(()=>me.value*1.2),Tn=Vue.computed(()=>Ae.value*1.2),Es=le==="cat"||le==="dog"||le==="animation",lt=600,q=Vue.ref(!1),ie=null,ve=Vue.computed(()=>Es?!0:q.value);Vue.watch(Nt,C=>{if(C)ie&&(clearTimeout(ie),ie=null),q.value=!0,et.value=Date.now(),ut.value=Date.now(),pt||(pt=setInterval(()=>{ut.value=Date.now()},1e3)),O.value="cat",me.value=5,Ae.value=95,Ie.value="bark-both",Oe.value=1,He.value=-1,O.value==="cat"?ft.start():Ue=requestAnimationFrame(bt);else{let W=et.value?Date.now()-et.value:lt,Y=Math.max(0,lt-W),Se=()=>{ie=null,q.value=!1,et.value=0,pt&&(clearInterval(pt),pt=null),ft.stop(),Ue&&(cancelAnimationFrame(Ue),Ue=null)};Y===0?Se():(ie&&clearTimeout(ie),ie=setTimeout(Se,Y))}},{immediate:!0}),Es&&(et.value=Date.now(),ut.value=Date.now(),le==="dog"?O.value="dog":O.value="cat",O.value==="cat"?ft.start():(me.value=5,Ae.value=95,Ie.value="bark-both",Oe.value=1,He.value=-1,Ue=requestAnimationFrame(bt)));let Te=Vue.computed(()=>{if(!s.isProcessing)return null;if(s.connectionState!=="connected")return"disconnected";let C=s.currentConversation;if(s.compactStatus?.conversationId===C&&s.compactStatus?.status==="compacting")return"compacting";let W=s.sessionHealth?.[C];return W?W.status:et.value&&ut.value-et.value>8e3?"thinking":null});function $e(){let C=s.currentConversation;if(!C)return;let W=s.conversations.find(Y=>Y.id===C);s.sendWsMessage({type:"refresh_conversation",conversationId:C,agentId:W?.agentId})}let Ke=()=>{if(!o.value)return!0;let{scrollTop:C,scrollHeight:W,clientHeight:Y}=o.value;return ui({scrollTop:C,scrollHeight:W,clientHeight:Y,threshold:we})},Ye=(C,W=0,{allowContinuation:Y=!1}={})=>{if(C>Sg(W)){Ve=!0;return}Y&&(Ve=!0),!(!Ve||!Ci())&&(Ve=!1,Mn())},wt=C=>{if(!C)return"";let Y=(Array.isArray(C.items)?C.items:[])[0]||null;return[C.type||"",C.messageId||"",C.turnId||"",C.vpId||"",Y?.id||"",Y?.turnId||"",Y?.messageId||""].join(":")},Yt=()=>{let C=E.value||[];return{blockCount:C.length,firstBlockIdentity:wt(C[0])}},Et=(C,W)=>!C||!W?!1:W.blockCount>C.blockCount||W.firstBlockIdentity!==C.firstBlockIdentity,kt=C=>{Vue.nextTick(()=>{if(!o.value)return;let W=Yt();Et(C,W)&&Ye(o.value.scrollTop||0,o.value.clientHeight||0,{allowContinuation:!0})})},St=()=>{re.value=!1,P.value=!0,a.value?.setBottomFollowEnabled?.(!0)},gt=()=>{re.value=!0,P.value=!1,a.value?.setBottomFollowEnabled?.(!1),a.value?.cancelPendingBottomFollow?.()},Ee=({scrollTop:C,scrollHeight:W,clientHeight:Y})=>{let Se=ui({scrollTop:C||0,scrollHeight:W||0,clientHeight:Y||0,threshold:we});P.value=Ig({following:!re.value,atBottom:Se}),re.value=!P.value,a.value?.setBottomFollowEnabled?.(P.value),ps||(Rn=Number(C||0)),Ye(C||0,Y||0)},ht=(C,W)=>{let Y=Yt(),Se=!1,Re=null,Ce=()=>{Se||(Se=!0,Re&&Re(),kt(Y))};W&&(Re=Vue.watch(W,nt=>{nt||Ce()})),C(),Vue.nextTick(()=>{(!W||!W())&&Ce()})},ka=()=>{if(s.hasHiddenYeaftMessages){s.expandYeaftMessageWindow();return}s.loadMoreYeaftHistory()},Ci=()=>s.currentView==="yeaft"?s.hasHiddenYeaftMessages||s.yeaftHasMoreHistory&&!s.yeaftLoadingMoreHistory&&s.yeaftOldestLoadedSeq!=null:!!s.currentConversation&&s.hasMoreMessages&&!s.loadingMoreMessages,Mn=()=>{if(!Ci())return;let C=s.currentView==="yeaft";ht(C?ka:()=>s.loadMoreMessages(),C?()=>s.yeaftLoadingMoreHistory:()=>s.loadingMoreMessages)},ps=!1,Pn=!1,Dt=null,Rn=0,Ai=250,kr=()=>{ps=!1,Dt&&(clearTimeout(Dt),Dt=null)},_n=()=>{Pn||(Dt&&clearTimeout(Dt),Dt=setTimeout(kr,Ai))},En=()=>{gt(),ps=!0,a.value?.clearTargetAnchor?.(),Rn=Number(o.value?.scrollTop||0),_n()},xi=C=>{Ag(C,o.value)&&(gt(),Pn=!0,ps=!0,a.value?.clearTargetAnchor?.(),Rn=Number(o.value?.scrollTop||0),Dt&&(clearTimeout(Dt),Dt=null))},Dn=()=>{Pn=!1,_n()},Ds=C=>{xg(C,o.value)&&(gt(),ps=!0,a.value?.clearTargetAnchor?.(),_n())},$s=()=>{let C=Number(o.value?.scrollTop||0),W=!re.value;Rn=C;let Y=Ke();P.value=Cg({following:W,atBottom:Y,userScroll:ps}),re.value=!P.value,a.value?.setBottomFollowEnabled?.(P.value),ps&&_n(),o.value&&Ye(o.value.scrollTop||0,o.value.clientHeight||0)},$n=()=>{o.value&&(o.value.scrollTop=o.value.scrollHeight,St())},Sa=()=>{a.value?.clearTargetAnchor?.(),s.currentView==="yeaft"&&s.showLatestYeaftMessageWindow?.(H.value||s.yeaftActiveSessionFilter||null,s.currentAgent||null),kr(),St(),Vue.nextTick($n)},Ti=()=>{!re.value&&P.value&&Vue.nextTick($n)},Mi=C=>{if(!C)return"";if(Array.isArray(C.items))return C.items.map(Mi).join(",");let W=C.message||{};return[C.type||"",C.id||"",C.atMessageId||"",C.turnId||"",C.messageId||"",C.speakerVpId||"",W.id||"",W.content?String(W.content).length:0,C.textContent?String(C.textContent).length:0,C.isStreaming||W.isStreaming?"streaming":"done"].join(":")},Ia=Vue.computed(()=>{let C=E.value||[];return[s.activeConversationId||"",H.value||"",Mi(C[C.length-1])].join("|")});Vue.watch(()=>[s.currentConversation,te.value.length,n.token],()=>{let C=n.token||"";C!==U&&(U=C,X()),Z()},{immediate:!0}),Vue.watch(Ia,Ti),Vue.watch(ve,C=>{C&&Ti()}),Vue.watch(z,()=>{for(let C of Object.keys(l))delete l[C];for(let C of Object.keys(c))delete c[C];for(let C of Object.keys(d))delete d[C];St(),Vue.nextTick($n)});let tn=Vue.ref(null),Pi=0;return t({revealMessage:async C=>C?(gt(),await Bg({blocks:E.value,target:C,collapseStates:d,nextTick:Vue.nextTick,scrollToBlock:(Y,Se)=>(gt(),a.value?.scrollToKey?.(Y,Se)),findRow:Y=>{let Se=o.value?.querySelectorAll?.("[data-msg-id]")||[];return Array.from(Se).find(Re=>Re?.dataset?.msgId===Y)||null},anchorRow:(Y,Se,Re,Ce)=>a.value?.anchorTarget?.(Y,Re,Ce),flashRow:Y=>{let Se=++Pi;tn.value=Y,setTimeout(()=>{Se===Pi&&(tn.value=null)},1800)}})):!1}),Vue.onMounted(()=>{$n(),o.value&&(o.value.addEventListener("wheel",En,{passive:!0}),o.value.addEventListener("touchmove",En,{passive:!0}),o.value.addEventListener("pointerdown",xi,{passive:!0}),o.value.addEventListener("scroll",$s)),window.addEventListener("pointerup",Dn,{passive:!0}),window.addEventListener("pointercancel",Dn,{passive:!0}),window.addEventListener("keydown",Ds)}),Vue.onUnmounted(()=>{o.value&&(o.value.removeEventListener("wheel",En),o.value.removeEventListener("touchmove",En),o.value.removeEventListener("pointerdown",xi),o.value.removeEventListener("scroll",$s)),window.removeEventListener("pointerup",Dn),window.removeEventListener("pointercancel",Dn),window.removeEventListener("keydown",Ds),kr(),pt&&(clearInterval(pt),pt=null),ie&&(clearTimeout(ie),ie=null),ft.stop(),Ue&&(cancelAnimationFrame(Ue),Ue=null)}),{store:s,containerRef:o,virtualTranscriptRef:a,flashMsgId:tn,hasStreamingMessage:Be,nowMs:At,showTypingDots:Nt,showInitialMessagesLoading:st,showYeaftOlderHistoryLoading:Je,showSessionLoadingOverlay:Bt,initialMessagesLoadingText:Rt,previewShowTypingDots:ve,isPreviewMode:Es,waitingStatus:Te,animationType:O,catWalkRef:xt,catSpriteRef:us,dogPhase:Ie,spikeTransform:Js,teddyTransform:An,leashPathL:zt,leashPathR:en,leashOpacityL:yr,leashOpacityR:br,questionLX:wr,questionRX:Tn,refreshSession:$e,onlineAgents:te,welcomeInstallCommand:G,welcomeLlmCommand:ce,welcomeServiceCommand:be,welcomeSetupLoading:M,welcomeSetupError:L,copyWelcomeCommand:K,turnGroups:se,messageBlocks:E,virtualTranscriptIdentity:z,estimateMessageBlockHeight:m,visibleItemsForBlock:b,collapsedResponsePreviewLines:h,collapsedResponsePreviewSpeaker:w,responseToggleBelongsToItem:y,showBlockResponseToggle:k,toggleMessageTurnResponse:_,responseCollapseLabel:A,turnUiKey:u,assistantTurnActionsExpandedFor:p,setAssistantTurnActionsExpanded:f,onOpenTurnDebug:g,toolExpandStates:c,setToolExpanded:v,cardsForRow:j,orphanCards:J,subAgentCardsForRow:ee,orphanSubAgentCards:V,useImStyleForUser:$,onClickLoadMore:Mn,onVirtualTranscriptScrollState:Ee,isAtBottom:P,scrollToLatest:Sa}}}});function No(...e){let t=[];for(let s of e)if(Array.isArray(s))for(let n of s)typeof n!="string"||!n||t.includes(n)||t.push(n);return t}function Ug(e,t,s){let n=t?e?.slashCommandsMap?.[t]:null;return e?.currentView==="yeaft"?No(n):No(n,s?e?.slashCommandsMap?.[`agent:${s}`]:null,e?.slashCommandsMap?.__preload__)}function dk(e,t={},s=new Set){if(ck.has(e)||Object.prototype.hasOwnProperty.call(Bo,e))return"builtin";let n=e.startsWith("/")?e.slice(1):e;return n.startsWith("skill:")||n.startsWith("yeaft-skills:")||s.has(n)&&Object.prototype.hasOwnProperty.call(t||{},n)?"skill":"project"}function Kg(e,t={}){if(Ho[e])return Ho[e];if(Bo[e])return Bo[e];let s=e.startsWith("/")?e.slice(1):e;return t[s]?t[s]:uk(s)}function uk(e){return(e.includes(":")?e.split(":").pop():e).replace(/-/g," ").replace(/^\w/,s=>s.toUpperCase())}function zg(e,t={},s=[]){if(e.length===0)return[];let n=new Set(s.filter(o=>typeof o=="string").map(o=>o.startsWith("/")?o.slice(1):o)),r={};e.forEach((o,a)=>{let l=dk(o.cmd,o.descriptions||o.dynamicDescriptions||t,n);r[l]||(r[l]=[]),r[l].push({...o,flatIndex:a})});let i=Object.keys(r).sort((o,a)=>(Ng[o]??99)-(Ng[a]??99));return i.map((o,a)=>({label:pk[o]||o,items:r[o],isLast:a===i.length-1}))}var Ho,ck,Wg,Bo,jg,pk,Ng,Yg=B(()=>{Ho={"/compact":"Compact context","/context":"Show context usage","/cost":"Show token costs","/init":"Reinitialize session","/doctor":"Check health status","/memory":"View/edit memory","/model":"View/switch model","/review":"Code review","/mcp":"MCP server status","/skills":"List available skills","/btw":"Side question (no history)","/insights":"Session insights","/pr-comments":"PR comment review","/release-notes":"Generate release notes","/security-review":"Security review"},ck=new Set(Object.keys(Ho)),Wg=Object.keys(Ho),Bo={"/low":"Use low reasoning effort for this turn","/medium":"Use medium reasoning effort for this turn","/high":"Use high reasoning effort for this turn","/xhigh":"Use extra-high reasoning effort for this turn","/max":"Use maximum reasoning effort for this turn","/ultra":"Use ultra reasoning effort for this turn"},jg=Object.keys(Bo);pk={skill:"Skills",builtin:"Built-in",project:"Commands"},Ng={skill:0,project:1,builtin:2}});function mk(e){return!(!e||typeof e!="string"||e.length<1||e.length>40||e.startsWith("_")||gk.test(e)||fk.has(e.toLowerCase()))}function Wo(e){if(!e||typeof e!="string")return{text:e||"",mentions:[]};let t=new Set;Gg.lastIndex=0;let s;for(;(s=Gg.exec(e))!==null;){let n=s[2];if(mk(n)&&!t.has(n)&&(t.add(n),t.size>=hk))break}return{text:e,mentions:Array.from(t)}}var fk,Gg,gk,hk,vc=B(()=>{fk=new Set(["all","user","system","everyone"]),Gg=/(^|[\s\p{P}])@([A-Za-z0-9_-]{1,40})(?=$|[\s\p{P}])/gu,gk=/^[0-9]+$/,hk=32});function Qg(e){let t=typeof e?.vpId=="string"?e.vpId:"";return yc.has(t)?yc.get(t):e?.isStock===!0?"other":"custom"}function Sn(e){let t=new Map(jo.map(s=>[s.id,[]]));for(let s of Array.isArray(e)?e:[])!s||typeof s.vpId!="string"||!s.vpId||t.get(Qg(s)).push(s);return jo.map(s=>({id:s.id,labelKey:s.labelKey,vps:t.get(s.id)})).filter(s=>s.vps.length>0)}function gi(e){return Sn(e).flatMap(t=>t.vps)}function Xg(e){let t=new Map(jo.map(r=>[r.id,r])),s=new Map,n=[];for(let r of Array.isArray(e)?e:[]){if(!r||typeof r.vpId!="string"||!r.vpId)continue;let i=Qg(r),o=n[n.length-1];if(o&&o.id===i){o.vps.push(r);continue}let a=(s.get(i)||0)+1;s.set(i,a),n.push({id:i,key:`${i}-${a}`,labelKey:t.get(i).labelKey,vps:[r]})}return n}var vk,jo,yc,hi=B(()=>{vk=[{id:"general",labelKey:"yeaft.vp.domain.general",vpIds:["omni"]},{id:"productDesign",labelKey:"yeaft.vp.domain.productDesign",vpIds:["steve","dieter","norman"]},{id:"softwareSystems",labelKey:"yeaft.vp.domain.softwareSystems",vpIds:["linus","martin","anders","ada","grace","ken","alan"]},{id:"securityReliability",labelKey:"yeaft.vp.domain.securityReliability",vpIds:["alice","margaret"]},{id:"scienceAnalysis",labelKey:"yeaft.vp.domain.scienceAnalysis",vpIds:["shannon","einstein"]},{id:"philosophyPsychology",labelKey:"yeaft.vp.domain.philosophyPsychology",vpIds:["kongzi","socrates","nietzsche","kahneman","jung"]},{id:"strategyHistory",labelKey:"yeaft.vp.domain.strategyHistory",vpIds:["sunzi","clausewitz","simaqian","harari"]},{id:"businessManagement",labelKey:"yeaft.vp.domain.businessManagement",vpIds:["buffett","munger","dalio","bezos","drucker"]},{id:"artsCulture",labelKey:"yeaft.vp.domain.artsCulture",vpIds:["luxun","sudongpo","borges","kubrick","miyazaki"]},{id:"other",labelKey:"yeaft.vp.domain.other",vpIds:[]},{id:"custom",labelKey:"yeaft.vp.domain.custom",vpIds:[]}],jo=Object.freeze(vk.map(e=>Object.freeze({id:e.id,labelKey:e.labelKey,vpIds:Object.freeze([...e.vpIds])}))),yc=new Map;for(let e of jo)for(let t of e.vpIds)yc.set(t,e.id)});function bc(e,t){let s=Array.isArray(e)?e:[],n=typeof t=="string"?t.toLowerCase():"";if(!n){let c=s.filter(d=>d&&d.vpId&&d.vpId!=="user");return gi(c).slice(0,Zg)}let r=[],i=[],o=[],a=new Set,l=(c,d)=>{a.has(c.vpId)||(a.add(c.vpId),d.push(c))};for(let c of s){if(!c||!c.vpId||c.vpId==="user")continue;if(String(c.vpId).toLowerCase().startsWith(n)){l(c,r);continue}let u=Array.isArray(c.aliases)?c.aliases:[],p=!1;for(let w of u){let I=String(w||"").toLowerCase();if(I&&I.startsWith(n)){p=!0;break}}if(p){l(c,i);continue}let f=String(c.displayName||"").toLowerCase(),g=String(c.displayNameZh||""),v=[c.description,c.descriptionZh,c.role,c.roleZh].map(w=>String(w||"").toLowerCase()),m=typeof t=="string"?t:"",b=f.includes(n)||m&&g.includes(m),h=n&&v.some(w=>w.includes(n));(b||h)&&l(c,o)}return[...gi(r),...gi(i),...gi(o)].slice(0,Zg)}function wc(e="chat-input"){return`${e}-vp-mention-listbox`}function kc(e,t){let s=String(t||"").replace(/[^A-Za-z0-9_.:-]/g,"-");return`${e}-vp-mention-option-${s}`}function yk(e){let t=0;return Xg(e).map(s=>({...s,items:s.vps.map(n=>({vp:n,flatIndex:t++}))}))}function Jg(e,t){let s=Array.isArray(e)?e:[];if(!t)return s;let n=Array.isArray(t.roster)?t.roster:[];if(n.length===0)return[];let r=new Set(n);return s.filter(i=>i&&i.vpId&&r.has(i.vpId))}function eh(e,t){if(typeof e!="string"||!t)return e;let s=e.lastIndexOf("@");if(s<0)return e;let n=s+1;for(;n<e.length&&!/[\s]/.test(e[n]);)n++;return e.slice(0,s)+"@"+t+" "+e.slice(n)}var Zg,th,sh=B(()=>{hi();Zg=12;th={name:"VpMentionAutocomplete",emits:["select","hover-index"],props:{vps:{type:Array,default:()=>[]},query:{type:String,default:""},selectedIndex:{type:Number,default:0},inputId:{type:String,required:!0}},template:`
1714
+ `,emits:["new-conversation","resume-conversation","open-settings","quote-message","edit-message-as-new"],setup(e,{expose:t}){let s=Pinia.useChatStore(),n=je(),r=typeof window<"u"&&window.Pinia?.useVpStore?window.Pinia.useVpStore():null,i=Vue.inject("t",null),o=Vue.ref(null),a=Vue.ref(null),l=Vue.reactive({}),c=Vue.reactive({}),d=Vue.reactive({}),u=C=>String(C?.id||C?.turnId||C?.messageId||C?.atMessageId||C?.message?.id||"turn_unknown"),p=C=>{let W=u(C);return Object.prototype.hasOwnProperty.call(l,W)?!!l[W]:!1},f=(C,W)=>{l[u(C)]=!!W},g=C=>{let W=C&&(C.turnId||C.id);!W||typeof s.openYeaftTurnDebug!="function"||s.openYeaftTurnDebug({sessionId:H.value||null,turnId:W})},v=({key:C,value:W}={})=>{C&&(c[C]=!!W)},m=C=>{let W=Og(C,Us);return Number.isFinite(W)?W:Us(C)},b=C=>qo(C),h=C=>{let W=Array.isArray(C?.collapsedResponsePreview)?C.collapsedResponsePreview:Lg(C);return Array.isArray(W)?W:W?[String(W)]:[]},w=C=>{let W=Array.isArray(C?.items)?C.items.find(ye=>fi(ye)):null,Y=W?.speakerVpId||W?.vpId||W?.message?.speakerVpId||W?.message?.vpId||C?.vpId||"",Se=Y&&r&&typeof r.vpLabel=="function"?r.vpLabel(Y)||Y:Y||(typeof i=="function"?i("message.assistant"):"Assistant"),Re=Y&&r&&typeof r.vpTextColor=="function"?{color:r.vpTextColor(Y)}:{},Ce=W?.speakerTimestamp||W?.timestamp||W?.createdAt||W?.message?.timestamp||W?.message?.createdAt||0,nt="",Le="";if(Ce)try{let ye=new Date(Ce);Number.isNaN(ye.getTime())||(nt=ts(Ce),Le=ye.toLocaleString())}catch{}return{name:Se,style:Re,timeText:nt,fullTimeText:Le}},I=C=>{let W=Array.isArray(C?.items)?C.items:[];for(let Y=W.length-1;Y>=0;Y-=1)if(fi(W[Y]))return W[Y];return null},y=(C,W)=>!C?.responseCollapsible||!W?!1:I(C)===W,k=C=>!!(C?.responseCollapsible&&!qo(C).some(W=>y(C,W))),_=C=>{let W=C?.responseCollapseKey;W&&(d[W]=!C.responseCollapsed)},A=C=>{let W=Number(C?.responseCount||0),Y=C?.responseCollapsed?"message.showResponses":"message.hideResponses",Se=(typeof i=="function"?i(Y):"")||(C?.responseCollapsed?"Show {count} response(s)":"Hide response(s)");return String(Se).replace("{count}",String(W))},Q=(()=>{try{return window.Pinia?.useSessionsStore?.()||null}catch{return null}}),H=Vue.computed(()=>{if(s.currentView!=="yeaft")return null;let C=Q();if(!C)return null;let W=s.yeaftActiveSessionFilter||null;return W&&typeof C.sessionById=="function"&&C.sessionById(W,s.currentAgent||null)?W:C.activeSessionId&&typeof C.sessionById=="function"&&C.sessionById(C.activeSessionId,s.currentAgent||null)?C.activeSessionId:null}),z=Vue.computed(()=>{let C=s.currentView||"",W=s.currentAgent||"";if(C==="yeaft"){let Y=s.yeaftActiveSessionFilter||H.value||"__all__";return[C,W,Y].join("")}return[C,W,s.activeConversationId||""].join("")}),$=Vue.computed(()=>H.value!==null),te=Vue.computed(()=>s.agents.filter(C=>C.online)),F=Vue.ref(null),S=Vue.ref(null),M=Vue.ref(!1),L=Vue.ref(""),T=null,D=0,j=n.token||"",X=()=>{F.value=null,S.value=null,L.value="",T=null,D+=1},G=Io(),ce=Co(),be=Vue.computed(()=>xo({profile:F.value,agentSecret:S.value,serverWsUrl:tr(location)})),N=()=>{let C={"Content-Type":"application/json"};return n.token&&(C.Authorization=`Bearer ${n.token}`),C},Z=async()=>{if(te.value.length>0||s.currentConversation)return;if(S.value||T)return T;M.value=!0,L.value="";let C=++D;return T=(async()=>{let W=n.token||"",Y=N(),[Se,Re]=await Promise.all([fetch("/api/user/profile",{headers:Y}),fetch("/api/user/agent-secret",{headers:Y})]),Ce=Se.ok?await Se.json():null;if(C!==D||W!==(n.token||""))return;if(Ce&&(F.value=Ce),!Re.ok){let ye="";try{ye=(await Re.json())?.error||""}catch{}throw new Error(ye||"Failed to load Agent secret")}let nt=await Re.json();if(C!==D||W!==(n.token||""))return;let Le=nt?.agentSecret||nt?.agent_secret||null;S.value=Le&&String(Le).trim()?String(Le):null})().catch(W=>{C===D&&(L.value=W?.message||"Failed to load Agent secret")}).finally(()=>{C===D&&(M.value=!1,T=null)}),T},K=async C=>{if(C)try{await navigator.clipboard.writeText(C)}catch{}},oe=new WeakMap,he=0,xe=(C,W)=>{let Y=C?.message&&typeof C.message=="object"?C.message:Array.isArray(C?.messages)&&C.messages[0]&&typeof C.messages[0]=="object"?C.messages[0]:W&&typeof W=="object"?W:C&&typeof C=="object"?C:null;if(!Y)return`legacy_render_${++he}`;let Se=oe.get(Y);return Se||(Se=`legacy_render_${++he}`,oe.set(Y,Se)),Se},_e=C=>{let W=C?.message||C||null;return C?.entryId||C?.uiKey||C?.stableKey||W?.entryId||W?.uiKey||W?.stableKey||C?.atMessageId||C?.messageId||W?.messageId||C?.id||W?.id||xe(C,W)},ge=C=>encodeURIComponent(String(C||"legacy")),ne=C=>{let W=C?.message||null,Y=_e(C),Se=C?.id||C?.atMessageId||W?.id||W?.messageId||Y,Re=C?.speakerVpId||C?.vpId||W?.speakerVpId||W?.vpId||"";return{id:`message_${ge(Y)}`,uiKey:Y,vpId:Re,messageId:Se}},se=Vue.computed(()=>{let C=s.currentView==="yeaft"?_g(s.messages):s.messages,W=[],Y=null,Se=()=>{if(Y){let Le=Y.turnId&&Object.values(s.activeVpTurns||{}).find(Ge=>((Ge?.turnId||null)===Y.turnId||!Ge?.turnId&&s.activeVpTurns?.[Y.turnId]===Ge)&&(!s.currentAgent||!Ge?.agentId||Ge.agentId===s.currentAgent))||null;Y.isActive=!!Le,Number.isFinite(Le?.startedAt)&&(Y.startedAt=Le.startedAt),io(Y);let ye=Y.messages.reduce((Ge,Ls)=>Number.isInteger(Ls?.llmCallCount)&&Ls.llmCallCount>Ge?Ls.llmCallCount:Ge,0),$t=Y.turnId?s.yeaftDebugTurnsById?.[Y.turnId]:null;Y.llmCallCount=Math.max(ye,$t?.loopCount||0);let Lt=[...Y.messages].reverse().find(Ge=>Ge?.type==="assistant"&&(Ge.model||Ge.effort||Number.isFinite(Ge.inputTokens)||Number.isFinite(Ge.outputTokens)||Number.isFinite(Ge.totalTokens)||Number.isFinite(Ge.totalMs)||Number.isFinite(Ge.turnDurationMs)));Y.model=$t?.model||Lt?.model||null,Y.effort=$t?.effort||Lt?.effort||null;for(let Ge of["inputTokens","outputTokens","totalTokens"]){let Ls=$t?.[Ge],_i=Lt?.[Ge];Number.isFinite(Ls)?Y[Ge]=Ls:Number.isFinite(_i)&&(Y[Ge]=_i)}Number.isFinite($t?.totalMs)?Y.totalMs=$t.totalMs:Number.isFinite(Lt?.totalMs)?Y.totalMs=Lt.totalMs:Number.isFinite(Lt?.turnDurationMs)&&(Y.totalMs=Lt.turnDurationMs);let sn=!!(Y.textContent||Y.todoMsg||Y.askMsg||Y.imageMsgs.length>0),Ri=Y.toolMsgs.length>0;(sn||Ri)&&(Y.showSpeakerHeader=!!Y.speakerVpId,W.push(Y)),Y=null}},Re=Le=>{if(Y){if(!Y.speakerVpId){let ye=Le.speakerVpId||Le.vpId;ye&&(Y.speakerVpId=ye,Y.speakerTimestamp=typeof Le.timestamp=="number"&&Le.timestamp>0?Le.timestamp:typeof Le.createdAt=="number"?Le.createdAt:0,typeof Le.lastStateChangeCause=="string"&&!Y.speakerStateCause&&(Y.speakerStateCause=Le.lastStateChangeCause))}!Y.turnId&&Le.turnId&&(Y.turnId=Le.turnId)}},Ce=(Le=null)=>{let ye=_e(Le);Y={type:"assistant-turn",id:`response_${ge(ye)}`,uiKey:ye,...Le?.entryId?{entryId:Le.entryId}:{},textContent:"",textSegments:[],isStreaming:!1,isActive:!1,isHistory:!1,todoMsg:null,toolMsgs:[],imageMsgs:[],askMsg:null,messages:[],atMessageId:null,speakerVpId:null,speakerTimestamp:0,speakerStateCause:"",showSpeakerHeader:!1,startedAt:0,totalMs:null,inputTokens:null,outputTokens:null,totalTokens:null,turnId:null}},nt=Le=>{Eg(Y,Le)&&Se()};for(let Le=0;Le<C.length;Le++){let ye=C[Le];if(ye.type==="user"){if(!ye.content||!ye.content.trim())continue;Se(),W.push({type:"user",id:_e(ye),message:ye});continue}if(ye.type==="system"||ye.type==="error"){Se(),W.push({type:ye.type,id:_e(ye),message:ye});continue}if(!(ye.type==="tool-result"||ye.type==="tool_result")){if(ye.type==="assistant"){nt(ye),Y||Ce(ye),ro(Y,ye),ye.isStreaming&&(Y.isStreaming=!0),ye.isHistory&&(Y.isHistory=!0),ye.id&&/^m\d+$/.test(ye.id)&&(Y.atMessageId=ye.id),Re(ye),Y.messages.push(ye);continue}if(ye.type==="tool-use"){nt(ye),Y||Ce(ye),Re(ye);let $t=C[Le+1],Lt=$t&&($t.type==="tool-result"||$t.type==="tool_result"),sn={...ye,hasResult:Lt||ye.hasResult||!1,toolResult:ye.toolResult||null};ye.isHistory&&(Y.isHistory=!0),ye.toolName==="TodoWrite"?Y.todoMsg=sn:ye.toolName==="AskUserQuestion"?Y.askMsg=sn:Y.toolMsgs.push(sn),Y.messages.push(ye);continue}if(ye.type==="chat-image"){nt(ye),Y||Ce(ye),Re(ye),ye.isHistory&&(Y.isHistory=!0),Y.imageMsgs.push(ye),Y.messages.push(ye);continue}Se(),W.push({type:ye.type||"unknown",id:_e(ye),message:ye})}}return Se(),W}),E=Vue.computed(()=>{let C=[],W=null,Y=()=>{W&&C.push(W),W=null};return se.value.forEach(Se=>{if(!Se||Se.type==="system"||Se.type==="error"){Y(),C.push(Se);return}let Re=ne(Se);if(Se.type==="user"||!W){Y(),W={type:"message-block",id:`block_${ge(Re.uiKey)}`,uiKey:Re.uiKey,vpId:Re.vpId,messageId:Re.messageId,items:[Se]};return}W.items.push(Se),!W.vpId&&Re.vpId&&(W.vpId=Re.vpId)}),Y(),C}),ae=Vue.computed(()=>{let C=s.yeaftReflectionCards||{},W=s.yeaftConversationId,Y={__orphans:[]},Se=Object.values(C).filter(Ce=>Ce&&Ce.conversationId===W).sort((Ce,nt)=>(Ce.anchorOrder||0)-(nt.anchorOrder||0)||(Ce.updatedAt||0)-(nt.updatedAt||0)),Re=new Set;for(let Ce of s.messages||[])Ce&&Ce.id&&Re.add(Ce.id);for(let Ce of Se)Ce.anchorMsgId&&Re.has(Ce.anchorMsgId)?(Y[Ce.anchorMsgId]||(Y[Ce.anchorMsgId]=[]),Y[Ce.anchorMsgId].push(Ce)):Y.__orphans.push(Ce);return Y}),pe=C=>C?C.type==="assistant-turn"?C.atMessageId||null:C.message&&C.message.id||null:null,U=C=>{let W=pe(C);return W?(ae.value||{})[W]||[]:[]},J=Vue.computed(()=>(ae.value||{}).__orphans||[]),R=Vue.computed(()=>{let C=s.yeaftSubAgentCards||{},W=s.yeaftConversationId,Y={__orphans:[]},Se=Object.values(C).filter(Ce=>Ce&&Ce.conversationId===W).sort((Ce,nt)=>(Ce.anchorOrder||0)-(nt.anchorOrder||0)||(Ce.updatedAt||0)-(nt.updatedAt||0)),Re=new Set;for(let Ce of s.messages||[])Ce&&Ce.id&&Re.add(Ce.id);for(let Ce of Se)Ce.anchorMsgId&&Re.has(Ce.anchorMsgId)?(Y[Ce.anchorMsgId]||(Y[Ce.anchorMsgId]=[]),Y[Ce.anchorMsgId].push(Ce)):Y.__orphans.push(Ce);return Y}),ee=C=>{let W=pe(C);return W?(R.value||{})[W]||[]:[]},V=Vue.computed(()=>(R.value||{}).__orphans||[]),P=Vue.ref(!0),re=Vue.ref(!1),we=zs.bottomThreshold,Ve=!0,Be=Vue.computed(()=>s.messages.some(C=>C.isStreaming)),rt=Vue.computed(()=>{let C=s.currentAgent||null,W=s.yeaftActiveSessionFilter||s.activeYeaftSessionId||null;return Object.values(s.activeVpTurns||{}).some(Y=>(!C||!Y?.agentId||Y.agentId===C)&&(!W||!Y?.sessionId||Y.sessionId===W))}),st=Vue.computed(()=>!s.activeConversationId||E.value.length>0?!1:s.currentView==="yeaft"?!!s.yeaftInitialHistoryLoading:!!s.sessionLoading),Je=Vue.computed(()=>s.currentView==="yeaft"&&!!s.yeaftLoadingMoreHistory&&s.activeYeaftHistoryState?.mode==="older"),Rt=Vue.computed(()=>s.currentView==="yeaft"?"":s.sessionLoadingText||""),Bt=Vue.computed(()=>!!s.sessionLoading&&!st.value),Nt=Vue.computed(()=>s.isProcessing&&!Be.value),At=Vue.ref(Date.now()),at=null,it=()=>{at||(at=setInterval(()=>{At.value=Date.now()},1e3))},ds=()=>{at&&(clearInterval(at),at=null)};Vue.watch(rt,C=>{C?(At.value=Date.now(),it()):ds()},{immediate:!0}),Vue.onBeforeUnmount(()=>ds());let et=Vue.ref(0),ut=Vue.ref(Date.now()),xt=Vue.ref(null),us=Vue.ref(null),pt=null,O=Vue.ref("cat"),le=new URLSearchParams(window.location.search).get("preview"),me=Vue.ref(5),Ie=Vue.ref(95),Ae=Vue.ref("bark-both"),Oe=Vue.ref(1),He=Vue.ref(-1),Ue=null;function _t(){if(!et.value)return;let C=xt.value,W=us.value;if(C&&W){let Y=C.parentElement,Se=Math.max(0,(Y?.clientWidth||0)-80);Oo(C,W,Lo(Date.now()-et.value,Se))}}let ft=Vo({onFrame:_t});function bt(){if(!et.value||O.value!=="dog")return;ut.value=Date.now();let C=(ut.value-et.value)%18e3;if(C<2e3)me.value=5,Ie.value=95,Ae.value="bark-both",Oe.value=1,He.value=-1;else if(C<5e3){let W=(C-2e3)/3e3;me.value=5+W*25,Ie.value=95,Ae.value="left-approach",Oe.value=1,He.value=-1}else if(C<8e3){let W=(C-5e3)/3e3;me.value=30,Ie.value=95-W*25,Ae.value="right-approach",Oe.value=1,He.value=-1}else if(C<1e4){let W=(C-8e3)/2e3;me.value=30+W*13,Ie.value=70-W*13,Ae.value="both-approach",Oe.value=1,He.value=-1}else if(C<11e3)me.value=43,Ie.value=57,Ae.value="snap",Oe.value=1,He.value=-1;else if(C<12500)me.value=43,Ie.value=57,Ae.value="stunned",Oe.value=1,He.value=-1;else if(C<15e3){let W=(C-12500)/2500;me.value=43-W*38,Ie.value=57+W*38,Ae.value="retreat",Oe.value=-1,He.value=1}else C<17e3?(me.value=5,Ie.value=95,Ae.value="rehang",Oe.value=-1,He.value=1):(me.value=5,Ie.value=95,Ae.value="reset",Oe.value=1,He.value=-1);Ue=requestAnimationFrame(bt)}let Js=Vue.computed(()=>{let C=me.value*1.2;return Oe.value<0?`translate(${C+13.5}, 0) scale(-1, 1)`:`translate(${C-13.5}, 0)`}),An=Vue.computed(()=>{let C=Ie.value*1.2;return He.value>0?`translate(${C-10.5}, 2)`:`translate(${C+10.5}, 2) scale(-1, 1)`}),xn=Vue.computed(()=>{let C=Ae.value;return C==="bark-both"||C==="left-approach"||C==="right-approach"||C==="both-approach"||C==="reset"}),zt=Vue.computed(()=>{let C=me.value*1.2,W=10;if(xn.value){let Re=Math.max(0,(C-3)*.12);return`M3,18 Q${(3+C)/2},${18+Re} ${C},${W}`}if(Ae.value==="rehang")return`M${C},${W} Q${C-3},20 3,18`;let Y=Oe.value<0?1:-1,Se=C+Y*8;return`M${C},${W} Q${C},18 ${Se},22`}),en=Vue.computed(()=>{let C=Ie.value*1.2,W=10;if(xn.value){let Re=Math.max(0,(118-C)*.12);return`M118,18 Q${(118+C)/2},${18+Re} ${C},${W}`}if(Ae.value==="rehang")return`M${C},${W} Q${C+3},20 118,18`;let Y=He.value>0?-1:1,Se=C+Y*8;return`M${C},${W} Q${C},18 ${Se},22`}),yr=Vue.computed(()=>Ae.value==="snap"?.2:.4),br=Vue.computed(()=>Ae.value==="snap"?.2:.4),wr=Vue.computed(()=>me.value*1.2),Tn=Vue.computed(()=>Ie.value*1.2),Es=le==="cat"||le==="dog"||le==="animation",lt=600,q=Vue.ref(!1),ie=null,ve=Vue.computed(()=>Es?!0:q.value);Vue.watch(Nt,C=>{if(C)ie&&(clearTimeout(ie),ie=null),q.value=!0,et.value=Date.now(),ut.value=Date.now(),pt||(pt=setInterval(()=>{ut.value=Date.now()},1e3)),O.value="cat",me.value=5,Ie.value=95,Ae.value="bark-both",Oe.value=1,He.value=-1,O.value==="cat"?ft.start():Ue=requestAnimationFrame(bt);else{let W=et.value?Date.now()-et.value:lt,Y=Math.max(0,lt-W),Se=()=>{ie=null,q.value=!1,et.value=0,pt&&(clearInterval(pt),pt=null),ft.stop(),Ue&&(cancelAnimationFrame(Ue),Ue=null)};Y===0?Se():(ie&&clearTimeout(ie),ie=setTimeout(Se,Y))}},{immediate:!0}),Es&&(et.value=Date.now(),ut.value=Date.now(),le==="dog"?O.value="dog":O.value="cat",O.value==="cat"?ft.start():(me.value=5,Ie.value=95,Ae.value="bark-both",Oe.value=1,He.value=-1,Ue=requestAnimationFrame(bt)));let Te=Vue.computed(()=>{if(!s.isProcessing)return null;if(s.connectionState!=="connected")return"disconnected";let C=s.currentConversation;if(s.compactStatus?.conversationId===C&&s.compactStatus?.status==="compacting")return"compacting";let W=s.sessionHealth?.[C];return W?W.status:et.value&&ut.value-et.value>8e3?"thinking":null});function $e(){let C=s.currentConversation;if(!C)return;let W=s.conversations.find(Y=>Y.id===C);s.sendWsMessage({type:"refresh_conversation",conversationId:C,agentId:W?.agentId})}let Ke=()=>{if(!o.value)return!0;let{scrollTop:C,scrollHeight:W,clientHeight:Y}=o.value;return ui({scrollTop:C,scrollHeight:W,clientHeight:Y,threshold:we})},Ye=(C,W=0,{allowContinuation:Y=!1}={})=>{if(C>Sg(W)){Ve=!0;return}Y&&(Ve=!0),!(!Ve||!Ci())&&(Ve=!1,Mn())},wt=C=>{if(!C)return"";let Y=(Array.isArray(C.items)?C.items:[])[0]||null;return[C.type||"",C.messageId||"",C.turnId||"",C.vpId||"",Y?.id||"",Y?.turnId||"",Y?.messageId||""].join(":")},Yt=()=>{let C=E.value||[];return{blockCount:C.length,firstBlockIdentity:wt(C[0])}},Et=(C,W)=>!C||!W?!1:W.blockCount>C.blockCount||W.firstBlockIdentity!==C.firstBlockIdentity,kt=C=>{Vue.nextTick(()=>{if(!o.value)return;let W=Yt();Et(C,W)&&Ye(o.value.scrollTop||0,o.value.clientHeight||0,{allowContinuation:!0})})},St=()=>{re.value=!1,P.value=!0,a.value?.setBottomFollowEnabled?.(!0)},gt=()=>{re.value=!0,P.value=!1,a.value?.setBottomFollowEnabled?.(!1),a.value?.cancelPendingBottomFollow?.()},Ee=({scrollTop:C,scrollHeight:W,clientHeight:Y})=>{let Se=ui({scrollTop:C||0,scrollHeight:W||0,clientHeight:Y||0,threshold:we});P.value=Ig({following:!re.value,atBottom:Se}),re.value=!P.value,a.value?.setBottomFollowEnabled?.(P.value),ps||(Rn=Number(C||0)),Ye(C||0,Y||0)},ht=(C,W)=>{let Y=Yt(),Se=!1,Re=null,Ce=()=>{Se||(Se=!0,Re&&Re(),kt(Y))};W&&(Re=Vue.watch(W,nt=>{nt||Ce()})),C(),Vue.nextTick(()=>{(!W||!W())&&Ce()})},ka=()=>{if(s.hasHiddenYeaftMessages){s.expandYeaftMessageWindow();return}s.loadMoreYeaftHistory()},Ci=()=>s.currentView==="yeaft"?s.hasHiddenYeaftMessages||s.yeaftHasMoreHistory&&!s.yeaftLoadingMoreHistory&&s.yeaftOldestLoadedSeq!=null:!!s.currentConversation&&s.hasMoreMessages&&!s.loadingMoreMessages,Mn=()=>{if(!Ci())return;let C=s.currentView==="yeaft";ht(C?ka:()=>s.loadMoreMessages(),C?()=>s.yeaftLoadingMoreHistory:()=>s.loadingMoreMessages)},ps=!1,Pn=!1,Dt=null,Rn=0,Ai=250,kr=()=>{ps=!1,Dt&&(clearTimeout(Dt),Dt=null)},_n=()=>{Pn||(Dt&&clearTimeout(Dt),Dt=setTimeout(kr,Ai))},En=()=>{gt(),ps=!0,a.value?.clearTargetAnchor?.(),Rn=Number(o.value?.scrollTop||0),_n()},xi=C=>{Ag(C,o.value)&&(gt(),Pn=!0,ps=!0,a.value?.clearTargetAnchor?.(),Rn=Number(o.value?.scrollTop||0),Dt&&(clearTimeout(Dt),Dt=null))},Dn=()=>{Pn=!1,_n()},Ds=C=>{xg(C,o.value)&&(gt(),ps=!0,a.value?.clearTargetAnchor?.(),_n())},$s=()=>{let C=Number(o.value?.scrollTop||0),W=!re.value;Rn=C;let Y=Ke();P.value=Cg({following:W,atBottom:Y,userScroll:ps}),re.value=!P.value,a.value?.setBottomFollowEnabled?.(P.value),ps&&_n(),o.value&&Ye(o.value.scrollTop||0,o.value.clientHeight||0)},$n=()=>{o.value&&(o.value.scrollTop=o.value.scrollHeight,St())},Sa=()=>{a.value?.clearTargetAnchor?.(),s.currentView==="yeaft"&&s.showLatestYeaftMessageWindow?.(H.value||s.yeaftActiveSessionFilter||null,s.currentAgent||null),kr(),St(),Vue.nextTick($n)},Ti=()=>{!re.value&&P.value&&Vue.nextTick($n)},Mi=C=>{if(!C)return"";if(Array.isArray(C.items))return C.items.map(Mi).join(",");let W=C.message||{};return[C.type||"",C.id||"",C.atMessageId||"",C.turnId||"",C.messageId||"",C.speakerVpId||"",W.id||"",W.content?String(W.content).length:0,C.textContent?String(C.textContent).length:0,C.isStreaming||W.isStreaming?"streaming":"done"].join(":")},Ia=Vue.computed(()=>{let C=E.value||[];return[s.activeConversationId||"",H.value||"",Mi(C[C.length-1])].join("|")});Vue.watch(()=>[s.currentConversation,te.value.length,n.token],()=>{let C=n.token||"";C!==j&&(j=C,X()),Z()},{immediate:!0}),Vue.watch(Ia,Ti),Vue.watch(ve,C=>{C&&Ti()}),Vue.watch(z,()=>{for(let C of Object.keys(l))delete l[C];for(let C of Object.keys(c))delete c[C];for(let C of Object.keys(d))delete d[C];St(),Vue.nextTick($n)});let tn=Vue.ref(null),Pi=0;return t({revealMessage:async C=>C?(gt(),await Bg({blocks:E.value,target:C,collapseStates:d,nextTick:Vue.nextTick,scrollToBlock:(Y,Se)=>(gt(),a.value?.scrollToKey?.(Y,Se)),findRow:Y=>{let Se=o.value?.querySelectorAll?.("[data-msg-id]")||[];return Array.from(Se).find(Re=>Re?.dataset?.msgId===Y)||null},anchorRow:(Y,Se,Re,Ce)=>a.value?.anchorTarget?.(Y,Re,Ce),flashRow:Y=>{let Se=++Pi;tn.value=Y,setTimeout(()=>{Se===Pi&&(tn.value=null)},1800)}})):!1}),Vue.onMounted(()=>{$n(),o.value&&(o.value.addEventListener("wheel",En,{passive:!0}),o.value.addEventListener("touchmove",En,{passive:!0}),o.value.addEventListener("pointerdown",xi,{passive:!0}),o.value.addEventListener("scroll",$s)),window.addEventListener("pointerup",Dn,{passive:!0}),window.addEventListener("pointercancel",Dn,{passive:!0}),window.addEventListener("keydown",Ds)}),Vue.onUnmounted(()=>{o.value&&(o.value.removeEventListener("wheel",En),o.value.removeEventListener("touchmove",En),o.value.removeEventListener("pointerdown",xi),o.value.removeEventListener("scroll",$s)),window.removeEventListener("pointerup",Dn),window.removeEventListener("pointercancel",Dn),window.removeEventListener("keydown",Ds),kr(),pt&&(clearInterval(pt),pt=null),ie&&(clearTimeout(ie),ie=null),ft.stop(),Ue&&(cancelAnimationFrame(Ue),Ue=null)}),{store:s,containerRef:o,virtualTranscriptRef:a,flashMsgId:tn,hasStreamingMessage:Be,nowMs:At,showTypingDots:Nt,showInitialMessagesLoading:st,showYeaftOlderHistoryLoading:Je,showSessionLoadingOverlay:Bt,initialMessagesLoadingText:Rt,previewShowTypingDots:ve,isPreviewMode:Es,waitingStatus:Te,animationType:O,catWalkRef:xt,catSpriteRef:us,dogPhase:Ae,spikeTransform:Js,teddyTransform:An,leashPathL:zt,leashPathR:en,leashOpacityL:yr,leashOpacityR:br,questionLX:wr,questionRX:Tn,refreshSession:$e,onlineAgents:te,welcomeInstallCommand:G,welcomeLlmCommand:ce,welcomeServiceCommand:be,welcomeSetupLoading:M,welcomeSetupError:L,copyWelcomeCommand:K,turnGroups:se,messageBlocks:E,virtualTranscriptIdentity:z,estimateMessageBlockHeight:m,visibleItemsForBlock:b,collapsedResponsePreviewLines:h,collapsedResponsePreviewSpeaker:w,responseToggleBelongsToItem:y,showBlockResponseToggle:k,toggleMessageTurnResponse:_,responseCollapseLabel:A,turnUiKey:u,assistantTurnActionsExpandedFor:p,setAssistantTurnActionsExpanded:f,onOpenTurnDebug:g,toolExpandStates:c,setToolExpanded:v,cardsForRow:U,orphanCards:J,subAgentCardsForRow:ee,orphanSubAgentCards:V,useImStyleForUser:$,onClickLoadMore:Mn,onVirtualTranscriptScrollState:Ee,isAtBottom:P,scrollToLatest:Sa}}}});function No(...e){let t=[];for(let s of e)if(Array.isArray(s))for(let n of s)typeof n!="string"||!n||t.includes(n)||t.push(n);return t}function Ug(e,t,s){let n=t?e?.slashCommandsMap?.[t]:null;return e?.currentView==="yeaft"?No(n):No(n,s?e?.slashCommandsMap?.[`agent:${s}`]:null,e?.slashCommandsMap?.__preload__)}function dk(e,t={},s=new Set){if(ck.has(e)||Object.prototype.hasOwnProperty.call(Bo,e))return"builtin";let n=e.startsWith("/")?e.slice(1):e;return n.startsWith("skill:")||n.startsWith("yeaft-skills:")||s.has(n)&&Object.prototype.hasOwnProperty.call(t||{},n)?"skill":"project"}function Kg(e,t={}){if(Ho[e])return Ho[e];if(Bo[e])return Bo[e];let s=e.startsWith("/")?e.slice(1):e;return t[s]?t[s]:uk(s)}function uk(e){return(e.includes(":")?e.split(":").pop():e).replace(/-/g," ").replace(/^\w/,s=>s.toUpperCase())}function zg(e,t={},s=[]){if(e.length===0)return[];let n=new Set(s.filter(o=>typeof o=="string").map(o=>o.startsWith("/")?o.slice(1):o)),r={};e.forEach((o,a)=>{let l=dk(o.cmd,o.descriptions||o.dynamicDescriptions||t,n);r[l]||(r[l]=[]),r[l].push({...o,flatIndex:a})});let i=Object.keys(r).sort((o,a)=>(Ng[o]??99)-(Ng[a]??99));return i.map((o,a)=>({label:pk[o]||o,items:r[o],isLast:a===i.length-1}))}var Ho,ck,Wg,Bo,jg,pk,Ng,Yg=B(()=>{Ho={"/compact":"Compact context","/context":"Show context usage","/cost":"Show token costs","/init":"Reinitialize session","/doctor":"Check health status","/memory":"View/edit memory","/model":"View/switch model","/review":"Code review","/mcp":"MCP server status","/skills":"List available skills","/btw":"Side question (no history)","/insights":"Session insights","/pr-comments":"PR comment review","/release-notes":"Generate release notes","/security-review":"Security review"},ck=new Set(Object.keys(Ho)),Wg=Object.keys(Ho),Bo={"/low":"Use low reasoning effort for this turn","/medium":"Use medium reasoning effort for this turn","/high":"Use high reasoning effort for this turn","/xhigh":"Use extra-high reasoning effort for this turn","/max":"Use maximum reasoning effort for this turn","/ultra":"Use ultra reasoning effort for this turn"},jg=Object.keys(Bo);pk={skill:"Skills",builtin:"Built-in",project:"Commands"},Ng={skill:0,project:1,builtin:2}});function mk(e){return!(!e||typeof e!="string"||e.length<1||e.length>40||e.startsWith("_")||gk.test(e)||fk.has(e.toLowerCase()))}function Wo(e){if(!e||typeof e!="string")return{text:e||"",mentions:[]};let t=new Set;Gg.lastIndex=0;let s;for(;(s=Gg.exec(e))!==null;){let n=s[2];if(mk(n)&&!t.has(n)&&(t.add(n),t.size>=hk))break}return{text:e,mentions:Array.from(t)}}var fk,Gg,gk,hk,vc=B(()=>{fk=new Set(["all","user","system","everyone"]),Gg=/(^|[\s\p{P}])@([A-Za-z0-9_-]{1,40})(?=$|[\s\p{P}])/gu,gk=/^[0-9]+$/,hk=32});function Qg(e){let t=typeof e?.vpId=="string"?e.vpId:"";return yc.has(t)?yc.get(t):e?.isStock===!0?"other":"custom"}function Sn(e){let t=new Map(jo.map(s=>[s.id,[]]));for(let s of Array.isArray(e)?e:[])!s||typeof s.vpId!="string"||!s.vpId||t.get(Qg(s)).push(s);return jo.map(s=>({id:s.id,labelKey:s.labelKey,vps:t.get(s.id)})).filter(s=>s.vps.length>0)}function gi(e){return Sn(e).flatMap(t=>t.vps)}function Xg(e){let t=new Map(jo.map(r=>[r.id,r])),s=new Map,n=[];for(let r of Array.isArray(e)?e:[]){if(!r||typeof r.vpId!="string"||!r.vpId)continue;let i=Qg(r),o=n[n.length-1];if(o&&o.id===i){o.vps.push(r);continue}let a=(s.get(i)||0)+1;s.set(i,a),n.push({id:i,key:`${i}-${a}`,labelKey:t.get(i).labelKey,vps:[r]})}return n}var vk,jo,yc,hi=B(()=>{vk=[{id:"general",labelKey:"yeaft.vp.domain.general",vpIds:["omni"]},{id:"productDesign",labelKey:"yeaft.vp.domain.productDesign",vpIds:["steve","dieter","norman"]},{id:"softwareSystems",labelKey:"yeaft.vp.domain.softwareSystems",vpIds:["linus","martin","anders","ada","grace","ken","alan"]},{id:"securityReliability",labelKey:"yeaft.vp.domain.securityReliability",vpIds:["alice","margaret"]},{id:"scienceAnalysis",labelKey:"yeaft.vp.domain.scienceAnalysis",vpIds:["shannon","einstein"]},{id:"philosophyPsychology",labelKey:"yeaft.vp.domain.philosophyPsychology",vpIds:["kongzi","socrates","nietzsche","kahneman","jung"]},{id:"strategyHistory",labelKey:"yeaft.vp.domain.strategyHistory",vpIds:["sunzi","clausewitz","simaqian","harari"]},{id:"businessManagement",labelKey:"yeaft.vp.domain.businessManagement",vpIds:["buffett","munger","dalio","bezos","drucker"]},{id:"artsCulture",labelKey:"yeaft.vp.domain.artsCulture",vpIds:["luxun","sudongpo","borges","kubrick","miyazaki"]},{id:"other",labelKey:"yeaft.vp.domain.other",vpIds:[]},{id:"custom",labelKey:"yeaft.vp.domain.custom",vpIds:[]}],jo=Object.freeze(vk.map(e=>Object.freeze({id:e.id,labelKey:e.labelKey,vpIds:Object.freeze([...e.vpIds])}))),yc=new Map;for(let e of jo)for(let t of e.vpIds)yc.set(t,e.id)});function bc(e,t){let s=Array.isArray(e)?e:[],n=typeof t=="string"?t.toLowerCase():"";if(!n){let c=s.filter(d=>d&&d.vpId&&d.vpId!=="user");return gi(c).slice(0,Zg)}let r=[],i=[],o=[],a=new Set,l=(c,d)=>{a.has(c.vpId)||(a.add(c.vpId),d.push(c))};for(let c of s){if(!c||!c.vpId||c.vpId==="user")continue;if(String(c.vpId).toLowerCase().startsWith(n)){l(c,r);continue}let u=Array.isArray(c.aliases)?c.aliases:[],p=!1;for(let w of u){let I=String(w||"").toLowerCase();if(I&&I.startsWith(n)){p=!0;break}}if(p){l(c,i);continue}let f=String(c.displayName||"").toLowerCase(),g=String(c.displayNameZh||""),v=[c.description,c.descriptionZh,c.role,c.roleZh].map(w=>String(w||"").toLowerCase()),m=typeof t=="string"?t:"",b=f.includes(n)||m&&g.includes(m),h=n&&v.some(w=>w.includes(n));(b||h)&&l(c,o)}return[...gi(r),...gi(i),...gi(o)].slice(0,Zg)}function wc(e="chat-input"){return`${e}-vp-mention-listbox`}function kc(e,t){let s=String(t||"").replace(/[^A-Za-z0-9_.:-]/g,"-");return`${e}-vp-mention-option-${s}`}function yk(e){let t=0;return Xg(e).map(s=>({...s,items:s.vps.map(n=>({vp:n,flatIndex:t++}))}))}function Jg(e,t){let s=Array.isArray(e)?e:[];if(!t)return s;let n=Array.isArray(t.roster)?t.roster:[];if(n.length===0)return[];let r=new Set(n);return s.filter(i=>i&&i.vpId&&r.has(i.vpId))}function eh(e,t){if(typeof e!="string"||!t)return e;let s=e.lastIndexOf("@");if(s<0)return e;let n=s+1;for(;n<e.length&&!/[\s]/.test(e[n]);)n++;return e.slice(0,s)+"@"+t+" "+e.slice(n)}var Zg,th,sh=B(()=>{hi();Zg=12;th={name:"VpMentionAutocomplete",emits:["select","hover-index"],props:{vps:{type:Array,default:()=>[]},query:{type:String,default:""},selectedIndex:{type:Number,default:0},inputId:{type:String,required:!0}},template:`
1715
1715
  <div
1716
1716
  class="slash-autocomplete vp-mention-autocomplete"
1717
1717
  v-if="filteredList.length > 0"
@@ -1800,7 +1800,7 @@ ${String(e||"").trim()}
1800
1800
  </div>
1801
1801
  </div>
1802
1802
  </div>
1803
- `}});function xc(){return{showQuickSends:!1,bindings:{...Ac}}}function Ko(e){if(typeof e!="string"||!e.trim())return"";let t=e.split("+").map(r=>r.trim()),s=t.pop()?.toUpperCase(),n=t.map(r=>rh.find(i=>i.toLowerCase()===r.toLowerCase()));return!/^[A-Z0-9]$/.test(s)||n.some(r=>!r)||new Set(n).size!==n.length||!n.some(r=>["Ctrl","Meta","Alt"].includes(r))?null:[...rh.filter(r=>n.includes(r)),s].join("+")}function mi(e,t={},s=""){let n=Ko(e);if(n===null)return{valid:!1,error:"invalid"};if(!n)return{valid:!0,binding:""};let r=n.split("+"),i=r.pop(),o=r.includes("Ctrl")||r.includes("Meta"),a=r.includes("Shift");if(o&&("TWNLRPFHJDEBKQS".includes(i)||/^[0-9]$/.test(i)||!a&&"GOACVXYZ".includes(i)))return{valid:!1,error:"reserved"};let c=ar.find(d=>d!==s&&Ko(t[d])===n);return c?{valid:!1,error:"conflict",conflict:c}:{valid:!0,binding:n}}function zo(e){return!!e&&!e.repeat&&!e.isComposing&&e.keyCode!==229&&!["Dead","Process","Unidentified"].includes(e.key)&&!e.getModifierState?.("AltGraph")}function Tc(e){if(!zo(e))return"";let t=/^(?:Key([A-Z])|Digit([0-9]))$/.exec(e.code||""),s=t?t[1]||t[2]:String(e.key||"").toUpperCase();if(!/^[A-Z0-9]$/.test(s))return"";let n=[];return e.ctrlKey&&n.push("Ctrl"),e.metaKey&&n.push("Meta"),e.altKey&&n.push("Alt"),e.shiftKey&&n.push("Shift"),[...n,s].join("+")}function Yo(e,t){if(!zo(e)||e.defaultPrevented)return!1;let s=mi(t);return s.valid&&!!s.binding&&Tc(e)===s.binding}function Cc(e,{migrateLegacy:t=!1}={}){let s=xc();if(!e||typeof e!="object")return s;s.showQuickSends=e.showQuickSends===!0;let n=e.bindings&&typeof e.bindings=="object"?e.bindings:{},r=new Set(Object.values(n).map(Ko).filter(Boolean));for(let o of ar)!Object.prototype.hasOwnProperty.call(n,o)&&r.has(Ac[o])&&(s.bindings[o]="");let i=new Set;for(let o of ar){if(!Object.prototype.hasOwnProperty.call(e.bindings||{},o))continue;let a=Ko(e.bindings[o]);if(a&&i.has(a)){s.bindings[o]="";continue}a&&i.add(a);let l=mi(e.bindings[o],s.bindings,o),c=l.valid?l.binding:"";s.bindings[o]=t&&wk[o]?.includes(c)?Ac[o]:c}return s}function kk(e,{storage:t=()=>globalThis.localStorage}={}){let s=Vue.ref(xc()),n=Vue.ref(null),r=Vue.effectScope(!0);r.run(()=>Vue.watch(()=>e.isAuthenticated&&e.userId?String(e.userId):null,o=>{n.value=o;let a=null;try{if(o){let l=t(),c=encodeURIComponent(o),d=l?.getItem(nh+c),u=l?.getItem(bk+c);a=JSON.parse(d||u||"null"),s.value=Cc(a,{migrateLegacy:!d&&!!u});return}}catch{}s.value=Cc(a)},{immediate:!0,flush:"sync"}));let i=o=>{if(!n.value)return{ok:!1,error:"unauthenticated"};let a={showQuickSends:o?.showQuickSends??s.value.showQuickSends,bindings:{...s.value.bindings,...o?.bindings}};for(let c of ar){let d=mi(a.bindings[c],a.bindings,c);if(!d.valid)return{ok:!1,action:c,...d};a.bindings[c]=d.binding}let l=Cc(a);try{let c=t();if(!c)return{ok:!1,error:"storage"};c.setItem(nh+encodeURIComponent(n.value),JSON.stringify(l))}catch{return{ok:!1,error:"storage"}}return s.value=l,{ok:!0}};return{preferences:Vue.readonly(s),ownerId:Vue.readonly(n),save:i,reset:()=>i(xc()),dispose:()=>r.stop()}}function lr(){let e=je();return Ic.has(e)||Ic.set(e,kk(e)),Ic.get(e)}var ar,nh,bk,rh,Ic,Ac,wk,vi=B(()=>{Ot();ar=Object.freeze(["terminal","files","git","newSession","closeWorkbench","quickSend1","quickSend2","quickSend3","quickSend4","quickSend5"]),nh="yeaft:user-shortcuts:v2:",bk="yeaft:user-shortcuts:v1:",rh=["Ctrl","Meta","Alt","Shift"],Ic=new WeakMap,Ac=Object.freeze({terminal:"Alt+T",files:"Alt+O",git:"Alt+G",newSession:"Alt+N",closeWorkbench:"Alt+W",quickSend1:"Alt+1",quickSend2:"Alt+2",quickSend3:"Alt+3",quickSend4:"Alt+4",quickSend5:"Alt+5"}),wk=Object.freeze({terminal:["Ctrl+Shift+Y","Meta+Shift+Y"],files:["Ctrl+Shift+O","Meta+Shift+O"],git:["Ctrl+Shift+G","Meta+Shift+G"],newSession:["Ctrl+Shift+U","Meta+Shift+U"],quickSend1:["Alt+Shift+1"],quickSend2:["Alt+Shift+2"],quickSend3:["Alt+Shift+3"],quickSend4:["Alt+Shift+4"],quickSend5:["Alt+Shift+5"]})});var cr,Go=B(()=>{Yg();zr();vc();sh();Sc();vi();cr={name:"ChatInput",components:{MessageComposer:Uo,VpMentionAutocomplete:th},props:{sendFn:{type:Function,default:null},quickSendEnabled:{type:Boolean,default:!1},cancelFn:{type:Function,default:null},placeholderKey:{type:String,default:""},showStop:{type:Boolean,default:!1},conversationId:{type:String,default:null},draftKey:{type:String,default:null},quote:{type:Object,default:null}},emits:["remove-quote","quote-consumed"],template:`
1803
+ `}});function xc(){return{bindings:{...Ac}}}function Ko(e){if(typeof e!="string"||!e.trim())return"";let t=e.split("+").map(r=>r.trim()),s=t.pop()?.toUpperCase(),n=t.map(r=>rh.find(i=>i.toLowerCase()===r.toLowerCase()));return!/^[A-Z0-9]$/.test(s)||n.some(r=>!r)||new Set(n).size!==n.length||!n.some(r=>["Ctrl","Meta","Alt"].includes(r))?null:[...rh.filter(r=>n.includes(r)),s].join("+")}function mi(e,t={},s=""){let n=Ko(e);if(n===null)return{valid:!1,error:"invalid"};if(!n)return{valid:!0,binding:""};let r=n.split("+"),i=r.pop(),o=r.includes("Ctrl")||r.includes("Meta"),a=r.includes("Shift");if(o&&("TWNLRPFHJDEBKQS".includes(i)||/^[0-9]$/.test(i)||!a&&"GOACVXYZ".includes(i)))return{valid:!1,error:"reserved"};let c=ar.find(d=>d!==s&&Ko(t[d])===n);return c?{valid:!1,error:"conflict",conflict:c}:{valid:!0,binding:n}}function zo(e){return!!e&&!e.repeat&&!e.isComposing&&e.keyCode!==229&&!["Dead","Process","Unidentified"].includes(e.key)&&!e.getModifierState?.("AltGraph")}function Tc(e){if(!zo(e))return"";let t=/^(?:Key([A-Z])|Digit([0-9]))$/.exec(e.code||""),s=t?t[1]||t[2]:String(e.key||"").toUpperCase();if(!/^[A-Z0-9]$/.test(s))return"";let n=[];return e.ctrlKey&&n.push("Ctrl"),e.metaKey&&n.push("Meta"),e.altKey&&n.push("Alt"),e.shiftKey&&n.push("Shift"),[...n,s].join("+")}function Yo(e,t){if(!zo(e)||e.defaultPrevented)return!1;let s=mi(t);return s.valid&&!!s.binding&&Tc(e)===s.binding}function Cc(e,{migrateLegacy:t=!1}={}){let s=xc();if(!e||typeof e!="object")return s;let n=e.bindings&&typeof e.bindings=="object"?e.bindings:{},r=new Set(Object.values(n).map(Ko).filter(Boolean));for(let o of ar)!Object.prototype.hasOwnProperty.call(n,o)&&r.has(Ac[o])&&(s.bindings[o]="");let i=new Set;for(let o of ar){if(!Object.prototype.hasOwnProperty.call(e.bindings||{},o))continue;let a=Ko(e.bindings[o]);if(a&&i.has(a)){s.bindings[o]="";continue}a&&i.add(a);let l=mi(e.bindings[o],s.bindings,o),c=l.valid?l.binding:"";s.bindings[o]=t&&wk[o]?.includes(c)?Ac[o]:c}return s}function kk(e,{storage:t=()=>globalThis.localStorage}={}){let s=Vue.ref(xc()),n=Vue.ref(null),r=Vue.effectScope(!0);r.run(()=>Vue.watch(()=>e.isAuthenticated&&e.userId?String(e.userId):null,o=>{n.value=o;let a=null;try{if(o){let l=t(),c=encodeURIComponent(o),d=l?.getItem(nh+c),u=l?.getItem(bk+c);a=JSON.parse(d||u||"null"),s.value=Cc(a,{migrateLegacy:!d&&!!u});return}}catch{}s.value=Cc(a)},{immediate:!0,flush:"sync"}));let i=o=>{if(!n.value)return{ok:!1,error:"unauthenticated"};let a={bindings:{...s.value.bindings,...o?.bindings}};for(let c of ar){let d=mi(a.bindings[c],a.bindings,c);if(!d.valid)return{ok:!1,action:c,...d};a.bindings[c]=d.binding}let l=Cc(a);try{let c=t();if(!c)return{ok:!1,error:"storage"};c.setItem(nh+encodeURIComponent(n.value),JSON.stringify(l))}catch{return{ok:!1,error:"storage"}}return s.value=l,{ok:!0}};return{preferences:Vue.readonly(s),ownerId:Vue.readonly(n),save:i,reset:()=>i(xc()),dispose:()=>r.stop()}}function lr(){let e=je();return Ic.has(e)||Ic.set(e,kk(e)),Ic.get(e)}var ar,nh,bk,rh,Ic,Ac,wk,vi=B(()=>{Ot();ar=Object.freeze(["terminal","files","git","newSession","closeWorkbench","quickSend1","quickSend2","quickSend3","quickSend4","quickSend5"]),nh="yeaft:user-shortcuts:v2:",bk="yeaft:user-shortcuts:v1:",rh=["Ctrl","Meta","Alt","Shift"],Ic=new WeakMap,Ac=Object.freeze({terminal:"Alt+T",files:"Alt+O",git:"Alt+G",newSession:"Alt+N",closeWorkbench:"Alt+W",quickSend1:"Alt+1",quickSend2:"Alt+2",quickSend3:"Alt+3",quickSend4:"Alt+4",quickSend5:"Alt+5"}),wk=Object.freeze({terminal:["Ctrl+Shift+Y","Meta+Shift+Y"],files:["Ctrl+Shift+O","Meta+Shift+O"],git:["Ctrl+Shift+G","Meta+Shift+G"],newSession:["Ctrl+Shift+U","Meta+Shift+U"],quickSend1:["Alt+Shift+1"],quickSend2:["Alt+Shift+2"],quickSend3:["Alt+Shift+3"],quickSend4:["Alt+Shift+4"],quickSend5:["Alt+Shift+5"]})});var cr,Go=B(()=>{Yg();zr();vc();sh();Sc();vi();cr={name:"ChatInput",components:{MessageComposer:Uo,VpMentionAutocomplete:th},props:{sendFn:{type:Function,default:null},quickSendEnabled:{type:Boolean,default:!1},cancelFn:{type:Function,default:null},placeholderKey:{type:String,default:""},showStop:{type:Boolean,default:!1},conversationId:{type:String,default:null},draftKey:{type:String,default:null},quote:{type:Object,default:null}},emits:["remove-quote","quote-consumed"],template:`
1804
1804
  <footer class="input-area" ref="inputAreaRef">
1805
1805
  <!-- Expert chips bar (above attachments) \u2014 hidden in custom send mode and btw mode -->
1806
1806
  <div v-if="quote" class="input-quote-preview">
@@ -1972,8 +1972,8 @@ ${String(e||"").trim()}
1972
1972
  </template>
1973
1973
  </MessageComposer>
1974
1974
  </footer>
1975
- `,setup(e,{emit:t}){let s=Pinia.useChatStore(),n=Pinia.useAuthStore(),r=Pinia.useVpStore(),i=Pinia.useSessionsStore?Pinia.useSessionsStore():null,o=Vue.ref(""),a=Vue.ref(!1),l=Vue.ref(null),c=Vue.computed(()=>l.value?.getTextarea?.()||null),u=`chat-input-${Vue.getCurrentInstance()?.uid??0}`,p=Vue.ref(null),f=Vue.ref([]),g=Vue.computed(()=>f.value.some(O=>O.uploading)),v=Vue.ref(null),m=Vue.ref(null),b=Vue.ref(null),h=Vue.computed(()=>!!e.sendFn),w=Vue.computed(()=>!s.btwMode),I=Vue.computed(()=>e.placeholderKey||"chatInput.placeholder"),y=Vue.computed(()=>e.showStop||!h.value&&s.isProcessing),k=Vue.computed({get:()=>s.expertSelections||[],set:O=>{s.expertSelections=O}}),_=Vue.ref(!1),A=Vue.ref(0),Q=Vue.computed(()=>Uu(s.customExpertRoles)),H=Vue.computed(()=>{let O=o.value,le=O.lastIndexOf("@");if(le===-1||!_.value)return[];let me=O.slice(le+1).toLowerCase();return Q.value.filter(Ae=>me?Ae.searchText.includes(me):!0).filter(Ae=>!k.value.some(Ie=>Ie.role===Ae.roleId)).slice(0,12)}),z=O=>{if(k.value.length>=vn)return;let le={role:O.roleId,action:O.actionId};s.expertSelections=[...k.value,le];let me=o.value,Ae=me.lastIndexOf("@");Ae!==-1&&(o.value=me.slice(0,Ae).trimEnd()),_.value=!1,Vue.nextTick(()=>c.value?.focus())},$=O=>{let le=[...k.value];le.splice(O,1),s.expertSelections=le},te=O=>mn(O,s.customExpertRoles),F=O=>O==="completed"?"\u2713":O==="in_progress"?"\u2192":"\u25CB",S=Vue.ref(!1),M=Vue.ref(0),L=()=>s.currentView==="yeaft"&&!!s.currentAgent,T=Vue.computed(()=>{let O=o.value,le=O.lastIndexOf("@");return le<0||!S.value?"":O.slice(le+1)}),D=Vue.computed(()=>{if(!i)return r.vpList||[];let O=s.yeaftActiveSessionFilter||i.activeSessionId||null,le=typeof i.sessionById=="function"?i.sessionById(O,s.currentAgent||null):i.sessions?.[O];return Jg(r.vpList,le)}),U=Vue.computed(()=>bc(D.value,T.value)),X=Vue.computed(()=>!s.btwMode&&S.value&&!_.value&&U.value.length>0),G=wc(u),ce=Vue.computed(()=>{if(!X.value)return null;let O=U.value[M.value];return O?kc(u,O.vpId):null}),be=O=>{!O||!O.vpId||(o.value=eh(o.value,O.vpId),S.value=!1,M.value=0,Vue.nextTick(()=>c.value?.focus()))},N=Vue.computed(()=>e.draftKey||e.conversationId||s.currentConversation||null);N.value&&s.inputDrafts[N.value]&&(o.value=s.inputDrafts[N.value]),Vue.watch(o,O=>{let le=N.value;le&&(O?s.inputDrafts[le]=O:delete s.inputDrafts[le])}),Vue.watch(U,O=>{if(O.length===0){M.value=0;return}M.value>=O.length&&(M.value=O.length-1)}),Vue.watch(N,(O,le)=>{le&&o.value&&(s.inputDrafts[le]=o.value),o.value=O&&s.inputDrafts[O]||""});let Z=O=>{if(!O||typeof O!="string")return;let le=o.value||"",me=le.length>0&&!/\s$/.test(le),Ae=le+(me?" ":"")+"@"+O+" ";o.value=Ae,Vue.nextTick(()=>{let Ie=c.value;Ie&&(Ie.focus(),Ie.setSelectionRange(Ae.length,Ae.length),P())})},K=Vue.ref(!1),oe=Vue.ref(0),he=Vue.computed(()=>{let O=e.conversationId||s.activeConversationId||s.currentConversation,le=s.currentAgent,me=Ug(s,O,le),Ae=s.currentView==="yeaft"?jg:Wg;return No(Ae,me).map(Oe=>Oe.startsWith("/")?Oe:"/"+Oe)}),xe=Vue.computed(()=>{let O=o.value.trim();if(!O.startsWith("/"))return[];let le=O.toLowerCase();return he.value.filter(me=>me.toLowerCase().startsWith(le)&&me.toLowerCase()!==le).map(me=>({cmd:me,desc:Kg(me,s.slashCommandDescriptions)}))}),_e=Vue.computed(()=>zg(xe.value,s.slashCommandDescriptions,he.value)),ge=Vue.computed(()=>xe.value.map(O=>O.cmd)),ne=Vue.computed(()=>e.conversationId||s.activeConversationId||s.currentConversation||null),se=Vue.computed(()=>s.compactStatus?.status==="compacting"&&s.compactStatus?.conversationId===ne.value),E=O=>typeof O?.fileId=="string"&&O.fileId.trim().length>0,ae=Vue.computed(()=>{if(se.value)return!1;let O=!!o.value.trim(),le=f.value.length>0;if(h.value){let He=!g.value&&f.value.every(E);return(O||le)&&He}let me=k.value.length>0,Ae=k.value.some(He=>He.action),Ie=O||le||me&&(O||Ae),Oe=!g.value&&f.value.every(E);return Ie&&s.currentAgent&&s.currentConversation&&Oe}),{preferences:ue}=lr(),j=Vue.computed(()=>{if(!e.quickSendEnabled||!ue.value.showQuickSends||s.btwMode)return[];let O=s.llmConfig?.[s.currentAgent];if(!O?.loaded||O.error)return[];let le=O.agentConfig?.quickSends||O.effectiveConfig?.quickSends||[];return Array.isArray(le)?le.slice(0,5):[]}),J=Vue.computed(()=>ae.value&&s.connectionState==="connected"&&s.agents?.some(O=>O.id===s.currentAgent&&O.online));Vue.watch(()=>[e.quickSendEnabled,ue.value.showQuickSends,s.currentAgent,s.connectionState,s.agents?.find(O=>O.id===s.currentAgent)?.online],([O,le,me,Ae,Ie])=>{O&&le&&me&&Ae==="connected"&&Ie&&s.sendWsMessage({type:"get_llm_config",agentId:me})},{immediate:!0});let R=O=>{!J.value||!j.value.includes(O)||et({model:O.model,effort:O.effort??null,maxOutputTokens:O.maxOutputTokens??null})},ee=()=>{if(typeof window>"u")return!1;try{return typeof window.matchMedia=="function"?window.matchMedia("(max-width: 768px)").matches:Number(window.innerWidth)<=768}catch{return!1}},V=()=>{if(!ee())return;c.value?.blur();let O=globalThis.document?.activeElement;O?.closest?.("[data-message-composer]")&&O.blur?.(),a.value=!1},P=()=>l.value?.autoResize?.(),re=()=>l.value?.resetTextareaSize?.(),we=()=>{P();let O=o.value.trim();O.startsWith("/")&&!O.includes(" ")?(K.value=!0,oe.value=0,_.value=!1):K.value=!1;let le=o.value,me=le.lastIndexOf("@");if(me!==-1&&!K.value){let Ae=me>0?le[me-1]:" ";Ae===" "||Ae===`
1976
- `||me===0?L()?(S.value=!0,M.value=0,_.value=!1):(_.value=!0,A.value=0,S.value=!1):(_.value=!1,S.value=!1)}else me===-1&&(_.value=!1,S.value=!1)},Ve=O=>{o.value=O+" ",K.value=!1,Vue.nextTick(()=>{c.value?.focus()})},Be=()=>{a.value=!1,setTimeout(()=>{K.value=!1,_.value=!1,S.value=!1},150)},rt=async O=>{let le=Array.from(O.target.files||[]);le.length>0&&await at(le),O.target.value="",Vue.nextTick(()=>{c.value?.focus()})},st=async O=>{let le=O.clipboardData?.items;if(!le)return;let me=[];for(let Ae of le)if(Ae.kind==="file"){let Ie=Ae.getAsFile();Ie&&me.push(Ie)}me.length>0&&(O.preventDefault(),await at(me))},Je=O=>{let le=String(O||"").toLowerCase();return le==="image/png"?".png":le==="image/jpeg"?".jpg":le==="image/gif"?".gif":le==="image/webp"?".webp":le==="image/svg+xml"?".svg":le==="text/plain"?".txt":le==="application/json"?".json":""},Rt=(O,le)=>{let me=typeof O?.name=="string"?O.name.trim():"";return me||`${String(O?.type||"").startsWith("image/")?"pasted-image":"pasted-file"}-${Date.now()}-${le+1}${Je(O?.type)}`},Bt=1,Nt=O=>{let le=Number(O);return!Number.isFinite(le)||le<=0?"":le<1024?`${le} B`:le<1024*1024?`${Math.round(le/1024)} KB`:`${(le/(1024*1024)).toFixed(le<10*1024*1024?1:0)} MB`},At=async O=>{for(let le of O)le.uploading=!0,le.uploadError=!1;try{let le=new FormData;for(let Ue of O)le.append("files",Ue.file,Ue.uploadName);let me={},Ae=n.getActiveToken?.()||n.token||null;Ae&&(me.Authorization=`Bearer ${Ae}`);let Ie=await fetch("/api/upload",{method:"POST",headers:me,body:le});if(!Ie.ok)throw new Error("Upload failed");let Oe=await Ie.json(),He=Array.isArray(Oe.files)?Oe.files:[];for(let[Ue,_t]of O.entries()){let ft=He[Ue],bt=typeof ft?.fileId=="string"?ft.fileId.trim():"";if(!bt)throw new Error("Upload response is incomplete");_t.fileId=bt,_t.uploading=!1,delete _t.uploadName}}catch{for(let me of O)me.fileId||(me.uploading=!1,me.uploadError=!0)}finally{Vue.nextTick(()=>c.value?.focus())}},at=async O=>{let le=[];for(let[me,Ae]of O.entries()){let Ie=Rt(Ae,me),Oe=Vue.reactive({localId:`attachment-${Bt++}`,file:Ae,name:Ie,size:Ae.size,uploadName:Ie,preview:null,uploading:!1,uploadError:!1,fileId:null});Ae.type.startsWith("image/")&&(Oe.preview=URL.createObjectURL(Ae)),f.value.push(Oe),le.push(Oe)}await At(le)},it=async O=>{!O||O.uploading||O.fileId||(O.uploadName=O.name,await At([O]))},ds=O=>{let le=f.value[O];le.preview&&URL.revokeObjectURL(le.preview),f.value.splice(O,1),Vue.nextTick(()=>{c.value?.focus()})},et=(O=null)=>{if(!ae.value)return;(!O||typeof O.model!="string")&&(O=null),K.value=!1,_.value=!1,S.value=!1;let le=o.value.trim();if(e.sendFn){let Ie=f.value.filter(E).map(Ue=>({fileId:Ue.fileId,name:Ue.name,preview:Ue.preview,isImage:Ue.file?.type?.startsWith("image/")||!1,mimeType:Ue.file?.type||""})),Oe=Ie.length>0?Ie:void 0;if((O?e.sendFn(le,Oe,e.quote,O):e.quote?e.sendFn(le,Oe,e.quote):e.sendFn(le,Oe))===!1)return;f.value=[],e.quote&&t("quote-consumed"),o.value="",N.value&&delete s.inputDrafts[N.value],re(),V();return}if(le==="/btw"||le.startsWith("/btw ")){let Ie=le.substring(4).trim();s.enterBtwMode(),Ie&&s.sendBtwQuestion(Ie),o.value="",N.value&&delete s.inputDrafts[N.value],re(),V();return}if(s.btwMode){s.sendBtwQuestion(le),o.value="",N.value&&delete s.inputDrafts[N.value],re(),V();return}let me=f.value.filter(E).map(Ie=>({fileId:Ie.fileId,name:Ie.name,preview:Ie.preview,isImage:Ie.file?.type?.startsWith("image/")||!1,mimeType:Ie.file?.type||""}));if(s.currentView==="yeaft"&&(le||me.length>0)){let Ie=Wo(le).mentions,Oe=s.yeaftActiveSessionFilter||i?.activeSessionId||"grp_default";s.sendYeaftSessionMessage({groupId:Oe,text:le,mentions:Ie,attachments:me}),f.value=[],o.value="",N.value&&delete s.inputDrafts[N.value],re(),V();return}let Ae=[...k.value];s.sendMessage(o.value.trim(),me,{expertSelections:Ae}),f.value=[],o.value="",s.expertSelections=[],N.value&&delete s.inputDrafts[N.value],re(),V()},ut=O=>{if(!(O.isComposing||O.keyCode===229)){if(!O.defaultPrevented&&e.quickSendEnabled&&ue.value.showQuickSends){let le=[1,2,3,4,5].find(me=>Yo(O,ue.value.bindings[`quickSend${me}`]));if(le){O.preventDefault(),O.stopPropagation(),!O.repeat&&j.value[le-1]&&R(j.value[le-1]);return}}if(O.key==="Escape"&&s.btwMode){O.preventDefault(),s.closeBtw();return}if(S.value){let le=U.value;if(le.length>0){if(O.key==="ArrowDown"){O.preventDefault(),M.value=(M.value+1)%le.length;return}if(O.key==="ArrowUp"){O.preventDefault(),M.value=(M.value-1+le.length)%le.length;return}if(O.key==="Tab"||O.key==="Enter"&&!O.shiftKey){O.preventDefault(),be(le[M.value]);return}}if(O.key==="Escape"){O.preventDefault(),S.value=!1;return}}if(_.value&&H.value.length>0){if(O.key==="ArrowDown"){O.preventDefault(),A.value=(A.value+1)%H.value.length;return}if(O.key==="ArrowUp"){O.preventDefault(),A.value=(A.value-1+H.value.length)%H.value.length;return}if(O.key==="Tab"||O.key==="Enter"&&!O.shiftKey){O.preventDefault(),z(H.value[A.value]);return}if(O.key==="Escape"){O.preventDefault(),_.value=!1;return}}if(K.value&&ge.value.length>0){if(O.key==="ArrowDown"){O.preventDefault(),oe.value=(oe.value+1)%ge.value.length;return}if(O.key==="ArrowUp"){O.preventDefault(),oe.value=(oe.value-1+ge.value.length)%ge.value.length;return}if(O.key==="Tab"||O.key==="Enter"&&!O.shiftKey){O.preventDefault(),Ve(ge.value[oe.value]);return}if(O.key==="Escape"){O.preventDefault(),K.value=!1;return}}O.key==="Enter"&&!O.shiftKey&&(O.preventDefault(),et())}},xt=()=>{e.cancelFn?e.cancelFn():s.cancelExecution()},us=O=>{o.value=typeof O=="string"?O:"",Vue.nextTick(()=>{P(),c.value?.focus();let le=o.value.length;c.value?.setSelectionRange(le,le)})},pt=()=>Vue.nextTick(()=>c.value?.focus());return{store:s,inputText:o,inputFocused:a,inputRef:c,messageComposerRef:l,inputAreaRef:v,fileInput:p,attachments:f,uploading:g,canSend:ae,quickSends:j,canQuickSend:J,shortcutPreferences:ue,sendQuick:R,isCompacting:se,isStopVisible:y,effectivePlaceholderKey:I,attachmentsAllowed:w,showAutocomplete:K,selectedIndex:oe,filteredCommands:ge,flatItems:xe,groupedCommands:_e,autocompleteRef:m,sendFn:Vue.toRef(e,"sendFn"),expertSelections:k,showExpertAutocomplete:_,expertSelectedIndex:A,expertAutocompleteFiltered:H,expertAutocompleteRef:b,selectExpertItem:z,removeExpertSelection:$,getExpertLabel:te,todoStatusSymbol:F,autoResize:P,handleInput:we,selectCommand:Ve,onBlur:Be,handleFileSelect:rt,handlePaste:st,formatFileSize:Nt,retryAttachment:it,removeAttachment:ds,send:et,handleKeydown:ut,cancelExecution:xt,vpStore:r,inputElementId:u,showVpAutocomplete:S,vpMentionPopupOpen:X,vpMentionPopupId:G,vpMentionActiveOptionId:ce,vpSelectedIndex:M,vpMentionQuery:T,mentionVpCandidates:D,selectVpMention:be,appendMention:Z,replaceDraft:us,focusInput:pt}}}});function Mc(e){return new Promise((t,s)=>{if(document.querySelector(`script[src="${e}"]`))return t();let n=document.createElement("script");n.src=e,n.onload=t,n.onerror=s,document.head.appendChild(n)})}function ih(e){return e+":"+Math.random().toString(36).slice(2,8)}function yi(e){return e?e.type==="pane"?[e.terminalId]:[...yi(e.first),...yi(e.second)]:[]}function Xo(e){return e?e.type==="pane"?e.terminalId:Xo(e.first):null}function Qo(e,t,s){return e&&(e.type==="pane"?e.terminalId===t?s:e:{...e,first:Qo(e.first,t,s),second:Qo(e.second,t,s)})}function Ys(e,t){if(!e)return null;if(e.type==="pane")return e.terminalId===t?null:e;if(e.first?.type==="pane"&&e.first.terminalId===t)return e.second;if(e.second?.type==="pane"&&e.second.terminalId===t)return e.first;let s=Ys(e.first,t),n=Ys(e.second,t);return s?n?{...e,first:s,second:n}:s:n}var oh=B(()=>{});var ah,lh=B(()=>{ah={name:"PaneTree",props:{node:Object,terminals:Object,activePane:String,onActivate:Function,onClosePane:Function,setMountRef:Function},template:`
1975
+ `,setup(e,{emit:t}){let s=Pinia.useChatStore(),n=Pinia.useAuthStore(),r=Pinia.useVpStore(),i=Pinia.useSessionsStore?Pinia.useSessionsStore():null,o=Vue.ref(""),a=Vue.ref(!1),l=Vue.ref(null),c=Vue.computed(()=>l.value?.getTextarea?.()||null),u=`chat-input-${Vue.getCurrentInstance()?.uid??0}`,p=Vue.ref(null),f=Vue.ref([]),g=Vue.computed(()=>f.value.some(O=>O.uploading)),v=Vue.ref(null),m=Vue.ref(null),b=Vue.ref(null),h=Vue.computed(()=>!!e.sendFn),w=Vue.computed(()=>!s.btwMode),I=Vue.computed(()=>e.placeholderKey||"chatInput.placeholder"),y=Vue.computed(()=>e.showStop||!h.value&&s.isProcessing),k=Vue.computed({get:()=>s.expertSelections||[],set:O=>{s.expertSelections=O}}),_=Vue.ref(!1),A=Vue.ref(0),Q=Vue.computed(()=>Uu(s.customExpertRoles)),H=Vue.computed(()=>{let O=o.value,le=O.lastIndexOf("@");if(le===-1||!_.value)return[];let me=O.slice(le+1).toLowerCase();return Q.value.filter(Ie=>me?Ie.searchText.includes(me):!0).filter(Ie=>!k.value.some(Ae=>Ae.role===Ie.roleId)).slice(0,12)}),z=O=>{if(k.value.length>=vn)return;let le={role:O.roleId,action:O.actionId};s.expertSelections=[...k.value,le];let me=o.value,Ie=me.lastIndexOf("@");Ie!==-1&&(o.value=me.slice(0,Ie).trimEnd()),_.value=!1,Vue.nextTick(()=>c.value?.focus())},$=O=>{let le=[...k.value];le.splice(O,1),s.expertSelections=le},te=O=>mn(O,s.customExpertRoles),F=O=>O==="completed"?"\u2713":O==="in_progress"?"\u2192":"\u25CB",S=Vue.ref(!1),M=Vue.ref(0),L=()=>s.currentView==="yeaft"&&!!s.currentAgent,T=Vue.computed(()=>{let O=o.value,le=O.lastIndexOf("@");return le<0||!S.value?"":O.slice(le+1)}),D=Vue.computed(()=>{if(!i)return r.vpList||[];let O=s.yeaftActiveSessionFilter||i.activeSessionId||null,le=typeof i.sessionById=="function"?i.sessionById(O,s.currentAgent||null):i.sessions?.[O];return Jg(r.vpList,le)}),j=Vue.computed(()=>bc(D.value,T.value)),X=Vue.computed(()=>!s.btwMode&&S.value&&!_.value&&j.value.length>0),G=wc(u),ce=Vue.computed(()=>{if(!X.value)return null;let O=j.value[M.value];return O?kc(u,O.vpId):null}),be=O=>{!O||!O.vpId||(o.value=eh(o.value,O.vpId),S.value=!1,M.value=0,Vue.nextTick(()=>c.value?.focus()))},N=Vue.computed(()=>e.draftKey||e.conversationId||s.currentConversation||null);N.value&&s.inputDrafts[N.value]&&(o.value=s.inputDrafts[N.value]),Vue.watch(o,O=>{let le=N.value;le&&(O?s.inputDrafts[le]=O:delete s.inputDrafts[le])}),Vue.watch(j,O=>{if(O.length===0){M.value=0;return}M.value>=O.length&&(M.value=O.length-1)}),Vue.watch(N,(O,le)=>{le&&o.value&&(s.inputDrafts[le]=o.value),o.value=O&&s.inputDrafts[O]||""});let Z=O=>{if(!O||typeof O!="string")return;let le=o.value||"",me=le.length>0&&!/\s$/.test(le),Ie=le+(me?" ":"")+"@"+O+" ";o.value=Ie,Vue.nextTick(()=>{let Ae=c.value;Ae&&(Ae.focus(),Ae.setSelectionRange(Ie.length,Ie.length),P())})},K=Vue.ref(!1),oe=Vue.ref(0),he=Vue.computed(()=>{let O=e.conversationId||s.activeConversationId||s.currentConversation,le=s.currentAgent,me=Ug(s,O,le),Ie=s.currentView==="yeaft"?jg:Wg;return No(Ie,me).map(Oe=>Oe.startsWith("/")?Oe:"/"+Oe)}),xe=Vue.computed(()=>{let O=o.value.trim();if(!O.startsWith("/"))return[];let le=O.toLowerCase();return he.value.filter(me=>me.toLowerCase().startsWith(le)&&me.toLowerCase()!==le).map(me=>({cmd:me,desc:Kg(me,s.slashCommandDescriptions)}))}),_e=Vue.computed(()=>zg(xe.value,s.slashCommandDescriptions,he.value)),ge=Vue.computed(()=>xe.value.map(O=>O.cmd)),ne=Vue.computed(()=>e.conversationId||s.activeConversationId||s.currentConversation||null),se=Vue.computed(()=>s.compactStatus?.status==="compacting"&&s.compactStatus?.conversationId===ne.value),E=O=>typeof O?.fileId=="string"&&O.fileId.trim().length>0,ae=Vue.computed(()=>{if(se.value)return!1;let O=!!o.value.trim(),le=f.value.length>0;if(h.value){let He=!g.value&&f.value.every(E);return(O||le)&&He}let me=k.value.length>0,Ie=k.value.some(He=>He.action),Ae=O||le||me&&(O||Ie),Oe=!g.value&&f.value.every(E);return Ae&&s.currentAgent&&s.currentConversation&&Oe}),{preferences:pe}=lr(),U=Vue.computed(()=>{if(!e.quickSendEnabled||s.btwMode)return[];let O=s.llmConfig?.[s.currentAgent];if(!O?.loaded||O.error)return[];let le=O.agentConfig?.quickSends||O.effectiveConfig?.quickSends||[];return Array.isArray(le)?le.slice(0,5):[]}),J=Vue.computed(()=>ae.value&&s.connectionState==="connected"&&s.agents?.some(O=>O.id===s.currentAgent&&O.online));Vue.watch(()=>[e.quickSendEnabled,s.currentAgent,s.connectionState,s.agents?.find(O=>O.id===s.currentAgent)?.online],([O,le,me,Ie])=>{O&&le&&me==="connected"&&Ie&&s.sendWsMessage({type:"get_llm_config",agentId:le})},{immediate:!0});let R=O=>{!J.value||!U.value.includes(O)||et({model:O.model,effort:O.effort??null,maxOutputTokens:O.maxOutputTokens??null})},ee=()=>{if(typeof window>"u")return!1;try{return typeof window.matchMedia=="function"?window.matchMedia("(max-width: 768px)").matches:Number(window.innerWidth)<=768}catch{return!1}},V=()=>{if(!ee())return;c.value?.blur();let O=globalThis.document?.activeElement;O?.closest?.("[data-message-composer]")&&O.blur?.(),a.value=!1},P=()=>l.value?.autoResize?.(),re=()=>l.value?.resetTextareaSize?.(),we=()=>{P();let O=o.value.trim();O.startsWith("/")&&!O.includes(" ")?(K.value=!0,oe.value=0,_.value=!1):K.value=!1;let le=o.value,me=le.lastIndexOf("@");if(me!==-1&&!K.value){let Ie=me>0?le[me-1]:" ";Ie===" "||Ie===`
1976
+ `||me===0?L()?(S.value=!0,M.value=0,_.value=!1):(_.value=!0,A.value=0,S.value=!1):(_.value=!1,S.value=!1)}else me===-1&&(_.value=!1,S.value=!1)},Ve=O=>{o.value=O+" ",K.value=!1,Vue.nextTick(()=>{c.value?.focus()})},Be=()=>{a.value=!1,setTimeout(()=>{K.value=!1,_.value=!1,S.value=!1},150)},rt=async O=>{let le=Array.from(O.target.files||[]);le.length>0&&await at(le),O.target.value="",Vue.nextTick(()=>{c.value?.focus()})},st=async O=>{let le=O.clipboardData?.items;if(!le)return;let me=[];for(let Ie of le)if(Ie.kind==="file"){let Ae=Ie.getAsFile();Ae&&me.push(Ae)}me.length>0&&(O.preventDefault(),await at(me))},Je=O=>{let le=String(O||"").toLowerCase();return le==="image/png"?".png":le==="image/jpeg"?".jpg":le==="image/gif"?".gif":le==="image/webp"?".webp":le==="image/svg+xml"?".svg":le==="text/plain"?".txt":le==="application/json"?".json":""},Rt=(O,le)=>{let me=typeof O?.name=="string"?O.name.trim():"";return me||`${String(O?.type||"").startsWith("image/")?"pasted-image":"pasted-file"}-${Date.now()}-${le+1}${Je(O?.type)}`},Bt=1,Nt=O=>{let le=Number(O);return!Number.isFinite(le)||le<=0?"":le<1024?`${le} B`:le<1024*1024?`${Math.round(le/1024)} KB`:`${(le/(1024*1024)).toFixed(le<10*1024*1024?1:0)} MB`},At=async O=>{for(let le of O)le.uploading=!0,le.uploadError=!1;try{let le=new FormData;for(let Ue of O)le.append("files",Ue.file,Ue.uploadName);let me={},Ie=n.getActiveToken?.()||n.token||null;Ie&&(me.Authorization=`Bearer ${Ie}`);let Ae=await fetch("/api/upload",{method:"POST",headers:me,body:le});if(!Ae.ok)throw new Error("Upload failed");let Oe=await Ae.json(),He=Array.isArray(Oe.files)?Oe.files:[];for(let[Ue,_t]of O.entries()){let ft=He[Ue],bt=typeof ft?.fileId=="string"?ft.fileId.trim():"";if(!bt)throw new Error("Upload response is incomplete");_t.fileId=bt,_t.uploading=!1,delete _t.uploadName}}catch{for(let me of O)me.fileId||(me.uploading=!1,me.uploadError=!0)}finally{Vue.nextTick(()=>c.value?.focus())}},at=async O=>{let le=[];for(let[me,Ie]of O.entries()){let Ae=Rt(Ie,me),Oe=Vue.reactive({localId:`attachment-${Bt++}`,file:Ie,name:Ae,size:Ie.size,uploadName:Ae,preview:null,uploading:!1,uploadError:!1,fileId:null});Ie.type.startsWith("image/")&&(Oe.preview=URL.createObjectURL(Ie)),f.value.push(Oe),le.push(Oe)}await At(le)},it=async O=>{!O||O.uploading||O.fileId||(O.uploadName=O.name,await At([O]))},ds=O=>{let le=f.value[O];le.preview&&URL.revokeObjectURL(le.preview),f.value.splice(O,1),Vue.nextTick(()=>{c.value?.focus()})},et=(O=null)=>{if(!ae.value)return;(!O||typeof O.model!="string")&&(O=null),K.value=!1,_.value=!1,S.value=!1;let le=o.value.trim();if(e.sendFn){let Ae=f.value.filter(E).map(Ue=>({fileId:Ue.fileId,name:Ue.name,preview:Ue.preview,isImage:Ue.file?.type?.startsWith("image/")||!1,mimeType:Ue.file?.type||""})),Oe=Ae.length>0?Ae:void 0;if((O?e.sendFn(le,Oe,e.quote,O):e.quote?e.sendFn(le,Oe,e.quote):e.sendFn(le,Oe))===!1)return;f.value=[],e.quote&&t("quote-consumed"),o.value="",N.value&&delete s.inputDrafts[N.value],re(),V();return}if(le==="/btw"||le.startsWith("/btw ")){let Ae=le.substring(4).trim();s.enterBtwMode(),Ae&&s.sendBtwQuestion(Ae),o.value="",N.value&&delete s.inputDrafts[N.value],re(),V();return}if(s.btwMode){s.sendBtwQuestion(le),o.value="",N.value&&delete s.inputDrafts[N.value],re(),V();return}let me=f.value.filter(E).map(Ae=>({fileId:Ae.fileId,name:Ae.name,preview:Ae.preview,isImage:Ae.file?.type?.startsWith("image/")||!1,mimeType:Ae.file?.type||""}));if(s.currentView==="yeaft"&&(le||me.length>0)){let Ae=Wo(le).mentions,Oe=s.yeaftActiveSessionFilter||i?.activeSessionId||"grp_default";s.sendYeaftSessionMessage({groupId:Oe,text:le,mentions:Ae,attachments:me}),f.value=[],o.value="",N.value&&delete s.inputDrafts[N.value],re(),V();return}let Ie=[...k.value];s.sendMessage(o.value.trim(),me,{expertSelections:Ie}),f.value=[],o.value="",s.expertSelections=[],N.value&&delete s.inputDrafts[N.value],re(),V()},ut=O=>{if(!(O.isComposing||O.keyCode===229)){if(!O.defaultPrevented&&e.quickSendEnabled){let le=[1,2,3,4,5].find(Ie=>Yo(O,pe.value.bindings[`quickSend${Ie}`])),me=le?U.value[le-1]:null;if(!O.repeat&&me&&J.value){O.preventDefault(),O.stopPropagation(),R(me);return}}if(O.key==="Escape"&&s.btwMode){O.preventDefault(),s.closeBtw();return}if(S.value){let le=j.value;if(le.length>0){if(O.key==="ArrowDown"){O.preventDefault(),M.value=(M.value+1)%le.length;return}if(O.key==="ArrowUp"){O.preventDefault(),M.value=(M.value-1+le.length)%le.length;return}if(O.key==="Tab"||O.key==="Enter"&&!O.shiftKey){O.preventDefault(),be(le[M.value]);return}}if(O.key==="Escape"){O.preventDefault(),S.value=!1;return}}if(_.value&&H.value.length>0){if(O.key==="ArrowDown"){O.preventDefault(),A.value=(A.value+1)%H.value.length;return}if(O.key==="ArrowUp"){O.preventDefault(),A.value=(A.value-1+H.value.length)%H.value.length;return}if(O.key==="Tab"||O.key==="Enter"&&!O.shiftKey){O.preventDefault(),z(H.value[A.value]);return}if(O.key==="Escape"){O.preventDefault(),_.value=!1;return}}if(K.value&&ge.value.length>0){if(O.key==="ArrowDown"){O.preventDefault(),oe.value=(oe.value+1)%ge.value.length;return}if(O.key==="ArrowUp"){O.preventDefault(),oe.value=(oe.value-1+ge.value.length)%ge.value.length;return}if(O.key==="Tab"||O.key==="Enter"&&!O.shiftKey){O.preventDefault(),Ve(ge.value[oe.value]);return}if(O.key==="Escape"){O.preventDefault(),K.value=!1;return}}O.key==="Enter"&&!O.shiftKey&&(O.preventDefault(),et())}},xt=()=>{e.cancelFn?e.cancelFn():s.cancelExecution()},us=O=>{o.value=typeof O=="string"?O:"",Vue.nextTick(()=>{P(),c.value?.focus();let le=o.value.length;c.value?.setSelectionRange(le,le)})},pt=()=>Vue.nextTick(()=>c.value?.focus());return{store:s,inputText:o,inputFocused:a,inputRef:c,messageComposerRef:l,inputAreaRef:v,fileInput:p,attachments:f,uploading:g,canSend:ae,quickSends:U,canQuickSend:J,shortcutPreferences:pe,sendQuick:R,isCompacting:se,isStopVisible:y,effectivePlaceholderKey:I,attachmentsAllowed:w,showAutocomplete:K,selectedIndex:oe,filteredCommands:ge,flatItems:xe,groupedCommands:_e,autocompleteRef:m,sendFn:Vue.toRef(e,"sendFn"),expertSelections:k,showExpertAutocomplete:_,expertSelectedIndex:A,expertAutocompleteFiltered:H,expertAutocompleteRef:b,selectExpertItem:z,removeExpertSelection:$,getExpertLabel:te,todoStatusSymbol:F,autoResize:P,handleInput:we,selectCommand:Ve,onBlur:Be,handleFileSelect:rt,handlePaste:st,formatFileSize:Nt,retryAttachment:it,removeAttachment:ds,send:et,handleKeydown:ut,cancelExecution:xt,vpStore:r,inputElementId:u,showVpAutocomplete:S,vpMentionPopupOpen:X,vpMentionPopupId:G,vpMentionActiveOptionId:ce,vpSelectedIndex:M,vpMentionQuery:T,mentionVpCandidates:D,selectVpMention:be,appendMention:Z,replaceDraft:us,focusInput:pt}}}});function Mc(e){return new Promise((t,s)=>{if(document.querySelector(`script[src="${e}"]`))return t();let n=document.createElement("script");n.src=e,n.onload=t,n.onerror=s,document.head.appendChild(n)})}function ih(e){return e+":"+Math.random().toString(36).slice(2,8)}function yi(e){return e?e.type==="pane"?[e.terminalId]:[...yi(e.first),...yi(e.second)]:[]}function Xo(e){return e?e.type==="pane"?e.terminalId:Xo(e.first):null}function Qo(e,t,s){return e&&(e.type==="pane"?e.terminalId===t?s:e:{...e,first:Qo(e.first,t,s),second:Qo(e.second,t,s)})}function Ys(e,t){if(!e)return null;if(e.type==="pane")return e.terminalId===t?null:e;if(e.first?.type==="pane"&&e.first.terminalId===t)return e.second;if(e.second?.type==="pane"&&e.second.terminalId===t)return e.first;let s=Ys(e.first,t),n=Ys(e.second,t);return s?n?{...e,first:s,second:n}:s:n}var oh=B(()=>{});var ah,lh=B(()=>{ah={name:"PaneTree",props:{node:Object,terminals:Object,activePane:String,onActivate:Function,onClosePane:Function,setMountRef:Function},template:`
1977
1977
  <div v-if="node.type === 'pane'"
1978
1978
  class="terminal-pane"
1979
1979
  :class="{ active: node.terminalId === activePane }"
@@ -2043,7 +2043,7 @@ ${String(e||"").trim()}
2043
2043
  <div class="placeholder-text">{{ $t('terminal.autoCreate') }}</div>
2044
2044
  </div>
2045
2045
  </div>
2046
- `,setup(e){let t=Xn(Pinia.useChatStore(),e),s=Vue.inject("t"),n=Vue.reactive({}),r=Vue.reactive({}),i=Vue.reactive({}),o=Vue.ref(""),a=Vue.ref(null),l={},c=!1,d=null,u=Vue.computed(()=>{let L=t.currentConversation;return L&&r[L]||null}),p=Vue.computed(()=>{let L=t.currentConversation;return L&&i[L]||""}),f=Vue.computed(()=>!!p.value),g=(L,T)=>{if(T){let D=l[L];if(l[L]=T,D&&D!==T){let U=n[L];U?.terminal?.element&&(T.innerHTML="",T.appendChild(U.terminal.element),Vue.nextTick(()=>{try{U.fitAddon?.fit()}catch{}}))}}},v=L=>{let T=t.currentConversation;T&&(i[T]=L)};async function m(){if(c)return!0;let L=typeof Terminal<"u"?Terminal.Terminal||Terminal:null,T=typeof FitAddon<"u"?FitAddon.FitAddon||FitAddon:null;if(!L||!T)try{await Mc("vendor/xterm.min.js"),await Mc("vendor/xterm-addon-fit.min.js"),L=typeof Terminal<"u"?Terminal.Terminal||Terminal:null,T=typeof FitAddon<"u"?FitAddon.FitAddon||FitAddon:null}catch{}return!L||!T?(o.value=s("terminal.xtermNotLoaded"),!1):(c=!0,!0)}function b(){let L=document.documentElement.getAttribute("data-theme")==="dark",D=getComputedStyle(document.documentElement).getPropertyValue("--bg-main").trim()||(L?"#212121":"#ffffff");return L?{background:D,foreground:"#d4d4d4",cursor:"#a0a0a0",selectionBackground:"rgba(255,255,255,0.12)",black:"#3a3a3a",red:"#f48771",green:"#89d185",yellow:"#e5c07b",blue:"#6cb6ff",magenta:"#d670d6",cyan:"#56d4dd",white:"#cccccc",brightBlack:"#555555",brightRed:"#f48771",brightGreen:"#89d185",brightYellow:"#e5c07b",brightBlue:"#6cb6ff",brightMagenta:"#d670d6",brightCyan:"#56d4dd",brightWhite:"#e8e8e8"}:{background:D,foreground:"#383a42",cursor:"#526fff",selectionBackground:"rgba(0,0,0,0.07)",black:"#383a42",red:"#e45649",green:"#50a14f",yellow:"#c18401",blue:"#4078f2",magenta:"#a626a4",cyan:"#0184bc",white:"#a0a1a7",brightBlack:"#4f525e",brightRed:"#e45649",brightGreen:"#50a14f",brightYellow:"#c18401",brightBlue:"#4078f2",brightMagenta:"#a626a4",brightCyan:"#0184bc",brightWhite:"#fafafa"}}async function h(L){if(!L||!t.currentAgent||!await m())return null;let T=ih(L),D=Terminal.Terminal||Terminal,U=FitAddon.FitAddon||FitAddon,X=new D({cursorBlink:!0,fontSize:13,fontFamily:"'SF Mono', 'Fira Code', 'Consolas', monospace, 'Symbols Nerd Font Mono', 'Apple Color Emoji', 'Segoe UI Emoji', 'Noto Color Emoji'",theme:b(),allowProposedApi:!0}),G=new U;return X.loadAddon(G),X.attachCustomKeyEventHandler(ce=>!((ce.ctrlKey||ce.metaKey)&&ce.key==="v"||(ce.ctrlKey||ce.metaKey)&&ce.key==="c"&&X.hasSelection())),n[T]={created:!0,connected:!1,terminal:X,fitAddon:G},X.onData(ce=>{t.sendWsMessage({type:"terminal_input",agentId:t.currentAgent,conversationId:L,terminalId:T,data:ce,_clientId:t.clientId})}),T}async function w(L,T){let D=n[T];if(!D)return!1;let U=null;for(let X=0;X<10&&(await Vue.nextTick(),U=l[T],!(U||X>=2&&(await new Promise(G=>setTimeout(G,50)),U=l[T],U)));X++);return U?(D.terminal.open(U),D.fitAddon.fit(),t.sendWsMessage({type:"terminal_create",agentId:t.currentAgent,conversationId:L,terminalId:T,workDir:e.workDir,cols:D.terminal.cols,rows:D.terminal.rows,_clientId:t.clientId}),!0):(o.value=s("terminal.mountFailed"),D.terminal.dispose(),delete n[T],!1)}let I=!1;async function y(){let L=t.currentConversation;if(!L||!t.currentAgent||r[L]||I)return;I=!0,o.value="";let T=await h(L);if(!T){I=!1;return}r[L]=Vue.reactive({type:"pane",terminalId:T}),i[L]=T,await w(L,T)||(delete r[L],delete i[L]),I=!1}async function k(L){let T=t.currentConversation;if(!T||!i[T])return;let D=i[T],U=await h(T);if(!U)return;let X=Vue.reactive({type:"split",direction:L,ratio:.5,first:{type:"pane",terminalId:D},second:{type:"pane",terminalId:U}}),G=Qo(r[T],D,X);if(r[T]=Vue.reactive(G),i[T]=U,!await w(T,U)){let be=Ys(r[T],U);be&&(r[T]=Vue.reactive(be)),i[T]=D;return}await Vue.nextTick(),Q(T)}function _(L){let T=t.currentConversation;if(!T)return;let D=n[L];D&&(t.sendWsMessage({type:"terminal_close",agentId:t.currentAgent,conversationId:T,terminalId:L,_clientId:t.clientId}),D.terminal?.dispose(),delete n[L],delete l[L]);let U=Ys(r[T],L);U?(r[T]=Vue.reactive(U),i[T]===L&&(i[T]=Xo(r[T])||""),Vue.nextTick(()=>Q(T))):(delete r[T],delete i[T],Vue.nextTick(()=>y()))}function A(){let L=t.currentConversation;!L||!i[L]||_(i[L])}function Q(L){if(L||(L=t.currentConversation),!L||!r[L])return;let T=yi(r[L]);for(let D of T){let U=n[D];if(U?.fitAddon&&U.connected)try{U.fitAddon.fit(),t.sendWsMessage({type:"terminal_resize",agentId:t.currentAgent,conversationId:L,terminalId:D,cols:U.terminal.cols,rows:U.terminal.rows,_clientId:t.clientId})}catch{}}}function H(L){let T=L.detail;if(!(!T||!Zn(T,e.routeKey,e.workspaceGeneration))&&!(e.routeKey&&ss(T,e.routeKey)!=="main"))switch(T.type){case"terminal_created":{let D=T.terminalId||T.conversationId,U=n[D];if(U)if(T.success)U.connected=!0,o.value="";else{o.value=T.error||s("terminal.createFailed"),U.terminal?.dispose(),delete n[D];let X=T.conversationId;if(X&&r[X]){let G=Ys(r[X],D);G?r[X]=Vue.reactive(G):(delete r[X],delete i[X])}}break}case"terminal_output":{let D=T.terminalId||T.conversationId,U=n[D];U?.terminal&&U.terminal.write(T.data);break}case"terminal_closed":{let D=T.terminalId||T.conversationId,U=n[D];if(U){U.terminal?.dispose(),delete n[D],delete l[D];let X=T.conversationId;if(X&&r[X]){let G=Ys(r[X],D);G?(r[X]=Vue.reactive(G),i[X]===D&&(i[X]=Xo(r[X])||"")):(delete r[X],delete i[X])}}break}case"terminal_error":{o.value=T.message||s("terminal.error");let D=T.terminalId;if(D&&n[D]&&!n[D].connected){n[D].terminal?.dispose(),delete n[D];let U=T.conversationId;if(U&&r[U]){let X=Ys(r[U],D);X?r[U]=Vue.reactive(X):(delete r[U],delete i[U])}}break}}}let z=null;function $(){clearTimeout(z),z=setTimeout(()=>Q(),100)}function te(){Q()}function F(L){let{conversationId:T}=L.detail;if(T&&r[T]){let D=yi(r[T]);for(let U of D){let X=n[U];X&&(t.sendWsMessage({type:"terminal_close",terminalId:U,_clientId:t.clientId}),X.terminal?.dispose(),delete n[U],delete l[U])}delete r[T],delete i[T]}}let S=Vue.ref(!0);Vue.onMounted(()=>{window.addEventListener("workbench-message",H),window.addEventListener("resize",$),window.addEventListener("workbench-panel-resize",$),window.addEventListener("terminal-fit-all",te),window.addEventListener("conversation-deleted",F),typeof ResizeObserver<"u"&&a.value&&(d=new ResizeObserver($),d.observe(a.value))}),Vue.onActivated(()=>{S.value=!0,Vue.nextTick(()=>{y(),Q()})}),Vue.onDeactivated(()=>{S.value=!1}),Vue.onUnmounted(()=>{window.removeEventListener("workbench-message",H),window.removeEventListener("resize",$),window.removeEventListener("workbench-panel-resize",$),window.removeEventListener("terminal-fit-all",te),window.removeEventListener("conversation-deleted",F),d?.disconnect(),d=null,clearTimeout(z);for(let L of Object.keys(n))t.sendWsMessage({type:"terminal_close",terminalId:L,_clientId:t.clientId}),n[L]?.terminal?.dispose()}),Vue.watch(()=>[t.currentConversation,t.workbenchExpanded],()=>{Vue.nextTick(()=>{if(!t.currentConversation||!t.workbenchExpanded||!S.value)return;let T=document.querySelector(".terminal-tab");T&&T.offsetParent!==null&&y()})},{immediate:!0}),Vue.watch(()=>t.connectionState,(L,T)=>{if(L==="connected"&&T&&T!=="connected"){for(let D of Object.keys(n))n[D]?.terminal?.dispose(),delete n[D],delete l[D];for(let D of Object.keys(r))delete r[D],delete i[D];Vue.nextTick(()=>y())}}),Vue.watch(()=>t.currentConversation,()=>{Vue.nextTick(()=>Q())});let M=null;return Vue.onMounted(()=>{let L=()=>{let D=document.querySelector(".terminal-tab");S.value&&D&&D.offsetParent!==null&&(y(),Q())};M=new MutationObserver(()=>{setTimeout(L,50)});let T=document.querySelector(".workbench-tab-content");T&&M.observe(T,{attributes:!0,subtree:!0,attributeFilter:["style"]})}),Vue.onUnmounted(()=>{M&&M.disconnect()}),{store:t,terminalRoot:a,terminals:n,currentTree:u,currentActivePane:p,hasActivePane:f,terminalError:o,setMountRef:g,activatePane:v,splitPane:k,closeActivePane:A,closePane:_}}}});function Zo(e){if(!e)return bi(fe.default);let t=e.toLowerCase();if(Pc[t])return Pc[t]();let s=t.lastIndexOf(".");if(s>=0){let n=t.slice(s+1);if(uh[n])return uh[n]();let r=t;for(let[i,o]of Object.entries(Pc))if(r===i||r.endsWith("/"+i))return o()}return bi(fe.default)}function Jo(e=!1){return Sk(fe.folder,e)}var fe,bi,Sk,de,uh,Pc,Rc=B(()=>{fe={js:"#F1C40F",ts:"#3178C6",jsx:"#61DAFB",tsx:"#3178C6",py:"#3776AB",rb:"#CC342D",go:"#00ADD8",rs:"#DEA584",java:"#E76F00",cs:"#68217A",cpp:"#00599C",c:"#A8B9CC",html:"#E44D26",css:"#1572B6",scss:"#CF649A",less:"#1D365D",json:"#F1C40F",yaml:"#CB171E",xml:"#E44D26",md:"#519ABA",txt:"#8E8E8E",log:"#8E8E8E",sh:"#4EAA25",ps1:"#012456",sql:"#E38C00",svg:"#FFB13B",img:"#26A69A",video:"#7E57C2",git:"#F05032",docker:"#2496ED",config:"#6D8086",lock:"#8E8E8E",env:"#ECD53F",vue:"#41B883",react:"#61DAFB",angular:"#DD0031",svelte:"#FF3E00",php:"#777BB4",swift:"#FA7343",kt:"#7F52FF",lua:"#000080",r:"#276DC3",dart:"#00B4AB",liquid:"#67B6E4",folder:"#90A4AE",folderOpen:"#90A4AE",default:"#8E8E8E"},bi=e=>`<svg width="16" height="16" viewBox="0 0 24 24" fill="none"><path d="M14 2H6C4.9 2 4 2.9 4 4v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6z" fill="${e}" opacity="0.85"/><path d="M14 2v6h6" fill="${e}" opacity="0.5"/></svg>`,Sk=(e,t)=>t?`<svg width="16" height="16" viewBox="0 0 24 24" fill="none"><path d="M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z" fill="${e}" opacity="0.9"/></svg>`:`<svg width="16" height="16" viewBox="0 0 24 24" fill="none"><path d="M10 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z" fill="${e}" opacity="0.9"/></svg>`,de=(e,t)=>`<svg width="16" height="16" viewBox="0 0 24 24" fill="none"><path d="M14 2H6C4.9 2 4 2.9 4 4v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6z" fill="${e}" opacity="0.2"/><path d="M14 2v6h6" fill="${e}" opacity="0.15"/><path d="M14 2H6C4.9 2 4 2.9 4 4v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6z" stroke="${e}" stroke-width="1.2" fill="none"/><text x="12" y="17" text-anchor="middle" font-size="7" font-weight="700" font-family="system-ui,sans-serif" fill="${e}">${t}</text></svg>`,uh={js:()=>de(fe.js,"JS"),mjs:()=>de(fe.js,"JS"),cjs:()=>de(fe.js,"JS"),ts:()=>de(fe.ts,"TS"),mts:()=>de(fe.ts,"TS"),jsx:()=>de(fe.jsx,"JSX"),tsx:()=>de(fe.tsx,"TSX"),html:()=>de(fe.html,"</>"),htm:()=>de(fe.html,"</>"),css:()=>de(fe.css,"CSS"),scss:()=>de(fe.scss,"SC"),sass:()=>de(fe.scss,"SA"),less:()=>de(fe.less,"LS"),vue:()=>de(fe.vue,"V"),svelte:()=>de(fe.svelte,"SV"),json:()=>de(fe.json,"{ }"),yaml:()=>de(fe.yaml,"YML"),yml:()=>de(fe.yaml,"YML"),toml:()=>de(fe.config,"TML"),xml:()=>de(fe.xml,"</>"),csv:()=>de(fe.config,"CSV"),md:()=>de(fe.md,"MD"),markdown:()=>de(fe.md,"MD"),txt:()=>bi(fe.txt),log:()=>bi(fe.log),pdf:()=>de("#E53935","PDF"),py:()=>de(fe.py,"PY"),rb:()=>de(fe.rb,"RB"),go:()=>de(fe.go,"GO"),rs:()=>de(fe.rs,"RS"),java:()=>de(fe.java,"JA"),cs:()=>de(fe.cs,"C#"),cpp:()=>de(fe.cpp,"C+"),cc:()=>de(fe.cpp,"C+"),c:()=>de(fe.c,"C"),h:()=>de(fe.c,"H"),hpp:()=>de(fe.cpp,"H+"),swift:()=>de(fe.swift,"SW"),kt:()=>de(fe.kt,"KT"),php:()=>de(fe.php,"PHP"),lua:()=>de(fe.lua,"LUA"),r:()=>de(fe.r,"R"),dart:()=>de(fe.dart,"DA"),sh:()=>de(fe.sh,">_"),bash:()=>de(fe.sh,">_"),zsh:()=>de(fe.sh,">_"),fish:()=>de(fe.sh,">_"),ps1:()=>de(fe.ps1,"PS"),bat:()=>de(fe.ps1,"BAT"),cmd:()=>de(fe.ps1,"CMD"),sql:()=>de(fe.sql,"SQL"),db:()=>de(fe.sql,"DB"),sqlite:()=>de(fe.sql,"DB"),svg:()=>de(fe.svg,"SVG"),png:()=>de(fe.img,"PNG"),jpg:()=>de(fe.img,"JPG"),jpeg:()=>de(fe.img,"JPG"),gif:()=>de(fe.img,"GIF"),ico:()=>de(fe.img,"ICO"),webp:()=>de(fe.img,"WP"),mp4:()=>de(fe.video,"MP4"),m4v:()=>de(fe.video,"M4V"),webm:()=>de(fe.video,"WEB"),ogv:()=>de(fe.video,"OGV"),ogg:()=>de(fe.video,"OGG"),mov:()=>de(fe.video,"MOV"),lock:()=>bi(fe.lock),env:()=>de(fe.env,"ENV"),ini:()=>de(fe.config,"INI"),cfg:()=>de(fe.config,"CFG"),conf:()=>de(fe.config,"CNF"),liquid:()=>de(fe.liquid,"LQ"),ejs:()=>de(fe.html,"EJS"),hbs:()=>de(fe.html,"HBS"),pug:()=>de(fe.html,"PUG"),wasm:()=>de("#654FF0","WA"),proto:()=>de(fe.config,"PB"),graphql:()=>de("#E535AB","GQL"),gql:()=>de("#E535AB","GQL")},Pc={dockerfile:()=>de(fe.docker,"DK"),"docker-compose.yml":()=>de(fe.docker,"DC"),"docker-compose.yaml":()=>de(fe.docker,"DC"),".gitignore":()=>de(fe.git,"GI"),".gitattributes":()=>de(fe.git,"GA"),".gitmodules":()=>de(fe.git,"GM"),".env":()=>de(fe.env,"ENV"),".env.local":()=>de(fe.env,"ENV"),".env.development":()=>de(fe.env,"ENV"),".env.production":()=>de(fe.env,"ENV"),"package.json":()=>de("#CB3837","NPM"),"package-lock.json":()=>de("#CB3837","NPM"),"tsconfig.json":()=>de(fe.ts,"TSC"),eslintrc:()=>de("#4B32C3","ESL"),".eslintrc.js":()=>de("#4B32C3","ESL"),".eslintrc.json":()=>de("#4B32C3","ESL"),".prettierrc":()=>de("#F7B93E","PR"),makefile:()=>de(fe.config,"MK"),"cmakelists.txt":()=>de("#064F8C","CM"),"readme.md":()=>de(fe.md,"RM"),license:()=>de("#F5C518","LIC"),"license.md":()=>de("#F5C518","LIC"),"cargo.toml":()=>de(fe.rs,"CG"),"go.mod":()=>de(fe.go,"MOD"),"go.sum":()=>de(fe.go,"SUM"),gemfile:()=>de(fe.rb,"GEM"),rakefile:()=>de(fe.rb,"RK"),"requirements.txt":()=>de(fe.py,"REQ"),pipfile:()=>de(fe.py,"PIP"),csproj:()=>de(fe.cs,"CSP"),".sln":()=>de(fe.cs,"SLN"),slnx:()=>de(fe.cs,"SLN")}});function In(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Ik(e,t){if(!e||!t)return In(e);let s=[],n=(a,l)=>{if(!a)return;let c=new RegExp(a.source,a.flags),d;for(;(d=c.exec(e))!==null;){let u=d[1]!==void 0?d[1]:d[0],p=d.index+(d[1]!==void 0?d[0].indexOf(d[1]):0);if(s.push({start:p,end:p+u.length,cls:l}),!c.global)break}},r=t.commentType||"slash";if((r==="slash"||r==="both")&&(n(dr.comment1,Ne.comment),n(dr.commentBlock,Ne.comment)),(r==="hash"||r==="both")&&n(dr.commentHash,Ne.comment),r==="html"&&n(t.commentHtml,Ne.comment),t.commentLine&&n(t.commentLine,Ne.comment),t.commentBlock&&n(t.commentBlock,Ne.comment),n(dr.string,Ne.string),n(dr.number,Ne.number),t.keywords&&n(t.keywords,Ne.keyword),t.builtins&&n(t.builtins,Ne.builtin),t.operators&&n(t.operators,Ne.operator),t.decorators&&n(t.decorators,Ne.decorator),t.macros&&n(t.macros,Ne.macro),t.preprocessor&&n(t.preprocessor,Ne.preprocessor),t.attributes&&n(t.attributes,Ne.attribute),t.tags&&n(t.tags,Ne.tag),t.properties&&n(t.properties,Ne.property),t.variables&&n(t.variables,Ne.variable),t.headings&&n(t.headings,Ne.heading),t.bold&&n(t.bold,Ne.bold),t.links&&n(t.links,Ne.link),t.keys&&n(t.keys,Ne.key),t.sections&&n(t.sections,Ne.section),t.selectors&&n(t.selectors,Ne.keyword),t.values&&n(t.values,Ne.number),t.code&&n(t.code,Ne.string),t.italic&&n(t.italic,Ne.builtin),t.attrs&&n(t.attrs,Ne.attribute),s.length===0)return In(e);s.sort((a,l)=>a.start-l.start||l.end-l.start-(a.end-a.start));let i="",o=0;for(let a of s)a.start<o||(a.start>o&&(i+=In(e.slice(o,a.start))),i+=`<span class="${a.cls}">${In(e.slice(a.start,a.end))}</span>`,o=a.end);return o<e.length&&(i+=In(e.slice(o))),i}function Ck(e){if(!e)return null;let t=e.split(".").pop()?.toLowerCase();if(!t)return null;let s=ph[t];return typeof s=="string"&&(s=ph[s]),s||null}function fh(e,t){if(!e)return In(e||"");let s=Ck(t);return s?Ik(e,s):In(e)}var dr,ph,Ne,gh=B(()=>{dr={string:/("(?:[^"\\]|\\.)*")|('(?:[^'\\]|\\.)*')|(`(?:[^`\\]|\\.)*`)/g,number:/\b(\d+\.?\d*(?:[eE][+-]?\d+)?|0x[\da-fA-F]+|0b[01]+|0o[0-7]+)\b/g,comment1:/(\/\/.*$)/gm,commentHash:/(#.*$)/gm,commentBlock:/(\/\*.*?\*\/)/g},ph={js:{keywords:/\b(const|let|var|function|class|extends|return|if|else|for|while|do|switch|case|break|continue|new|this|super|import|export|from|default|async|await|yield|try|catch|finally|throw|typeof|instanceof|in|of|delete|void|null|undefined|true|false|NaN|Infinity)\b/g,builtins:/\b(console|window|document|Math|JSON|Array|Object|String|Number|Boolean|Promise|Map|Set|WeakMap|WeakSet|Symbol|Proxy|Reflect|RegExp|Error|Date|parseInt|parseFloat|setTimeout|setInterval|clearTimeout|clearInterval|fetch|require|module|exports|process)\b/g,operators:/(=>|\.\.\.|\?\.|&&|\|\||===|!==|==|!=|>=|<=|>>>=|>>>|>>=|<<=|\+\+|--|[+\-*/%&|^~!<>]=?|\?|:)/g},ts:"js",jsx:"js",tsx:"js",mjs:"js",cjs:"js",vue:"js",py:{keywords:/\b(def|class|return|if|elif|else|for|while|break|continue|pass|import|from|as|with|try|except|finally|raise|yield|lambda|and|or|not|is|in|True|False|None|global|nonlocal|del|assert|async|await)\b/g,builtins:/\b(print|len|range|int|float|str|bool|list|dict|set|tuple|type|isinstance|super|property|staticmethod|classmethod|enumerate|zip|map|filter|sorted|reversed|open|input|hasattr|getattr|setattr|id|hex|oct|bin|abs|max|min|sum|all|any|iter|next)\b/g,decorators:/(@\w+)/g,commentType:"hash"},rb:{keywords:/\b(def|class|module|end|return|if|elsif|else|unless|for|while|until|do|break|next|case|when|begin|rescue|ensure|raise|yield|require|include|extend|attr_accessor|attr_reader|attr_writer|self|super|nil|true|false|and|or|not|then|puts|print)\b/g,commentType:"hash"},go:{keywords:/\b(func|package|import|var|const|type|struct|interface|map|chan|go|select|switch|case|default|if|else|for|range|break|continue|return|defer|fallthrough|nil|true|false|iota)\b/g,builtins:/\b(fmt|make|len|cap|append|copy|delete|close|panic|recover|new|error|string|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|float32|float64|bool|byte|rune|complex64|complex128)\b/g},rs:{keywords:/\b(fn|let|mut|const|pub|mod|use|struct|enum|impl|trait|where|for|loop|while|if|else|match|return|break|continue|move|ref|self|Self|super|crate|as|in|unsafe|async|await|dyn|true|false|Some|None|Ok|Err)\b/g,builtins:/\b(String|Vec|Box|Rc|Arc|Option|Result|HashMap|HashSet|println|eprintln|format|panic|todo|unimplemented|assert|assert_eq|assert_ne|dbg|cfg|derive|macro_rules)\b/g,macros:/(\w+!)/g},java:{keywords:/\b(class|interface|extends|implements|public|private|protected|static|final|abstract|synchronized|volatile|transient|native|new|return|if|else|for|while|do|switch|case|default|break|continue|try|catch|finally|throw|throws|import|package|this|super|void|null|true|false|instanceof)\b/g,builtins:/\b(System|String|Integer|Long|Double|Float|Boolean|List|ArrayList|Map|HashMap|Set|HashSet|Optional|Stream|Object|Exception|RuntimeException|Thread|Runnable|Override|Deprecated)\b/g},cs:{keywords:/\b(class|struct|interface|enum|record|delegate|event|namespace|using|public|private|protected|internal|static|readonly|const|sealed|abstract|virtual|override|new|return|if|else|for|foreach|while|do|switch|case|default|break|continue|try|catch|finally|throw|async|await|yield|var|dynamic|is|as|in|out|ref|params|this|base|null|true|false|void|get|set|init|required|partial|where|select|from|orderby|group|join|let|into)\b/g,builtins:/\b(Console|String|Int32|Int64|Double|Boolean|List|Dictionary|HashSet|Task|IEnumerable|ILogger|IOptions|IFeatures|Exception|Guid|DateTime|TimeSpan|CancellationToken|Action|Func|Span|Memory|ReadOnlySpan)\b/g,attributes:/(\[[\w]+(?:\(.*?\))?\])/g},cpp:{keywords:/\b(class|struct|enum|union|namespace|using|template|typename|public|private|protected|static|const|constexpr|volatile|virtual|override|final|explicit|inline|extern|auto|decltype|new|delete|return|if|else|for|while|do|switch|case|default|break|continue|try|catch|throw|sizeof|alignof|typeid|static_cast|dynamic_cast|reinterpret_cast|const_cast|nullptr|true|false|void|this|operator|friend|noexcept|co_await|co_yield|co_return|concept|requires)\b/g,builtins:/\b(std|string|vector|map|unordered_map|set|array|pair|tuple|shared_ptr|unique_ptr|weak_ptr|optional|variant|any|cout|cin|endl|printf|scanf|malloc|free|sizeof|size_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t)\b/g,preprocessor:/(#\s*(?:include|define|undef|if|ifdef|ifndef|else|elif|endif|pragma|error|warning).*$)/gm},c:"cpp",h:"cpp",hpp:"cpp",html:{tags:/(<\/?[\w-]+|>|\/>)/g,attrs:/\b([\w-]+)(?==)/g,commentType:"html",commentHtml:/(<!--[\s\S]*?-->)/g},xml:"html",svg:"html",css:{selectors:/([\w.#\[\]:,>+~*-]+)\s*\{/g,properties:/\b([\w-]+)(?=\s*:)/g,values:/:\s*([^;{}]+)/g,commentType:"block"},scss:"css",less:"css",json:{keys:/("[\w.-]+")\s*:/g,commentType:"none"},yaml:{keys:/([\w.-]+)\s*:/g,commentType:"hash"},yml:"yaml",md:{headings:/^(#{1,6}\s.*)$/gm,bold:/(\*\*[^*]+\*\*|__[^_]+__)/g,italic:/(\*[^*]+\*|_[^_]+_)/g,code:/(`[^`]+`)/g,links:/(\[[^\]]+\]\([^)]+\))/g,commentType:"none"},sh:{keywords:/\b(if|then|else|elif|fi|for|while|do|done|case|esac|function|return|exit|echo|export|local|readonly|unset|set|shift|eval|exec|trap|source|alias|cd|pwd|ls|mkdir|rm|cp|mv|cat|grep|sed|awk|find|xargs|sort|uniq|wc|head|tail|tee|cut|tr|test)\b/g,variables:/(\$\{?\w+\}?|\$\(|\$\{)/g,commentType:"hash"},bash:"sh",zsh:"sh",sql:{keywords:/\b(SELECT|FROM|WHERE|AND|OR|NOT|IN|LIKE|BETWEEN|JOIN|LEFT|RIGHT|INNER|OUTER|FULL|ON|AS|GROUP|BY|ORDER|HAVING|LIMIT|OFFSET|INSERT|INTO|VALUES|UPDATE|SET|DELETE|CREATE|ALTER|DROP|TABLE|INDEX|VIEW|TRIGGER|FUNCTION|PROCEDURE|BEGIN|END|IF|ELSE|THEN|CASE|WHEN|DECLARE|EXEC|UNION|ALL|DISTINCT|TOP|EXISTS|NULL|IS|ASC|DESC|PRIMARY|KEY|FOREIGN|REFERENCES|CONSTRAINT|DEFAULT|CHECK|UNIQUE|CASCADE|TRUNCATE|COMMIT|ROLLBACK|GRANT|REVOKE)\b/gi,commentType:"both"},lua:{keywords:/\b(and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/g,builtins:/\b(print|type|tostring|tonumber|pairs|ipairs|next|select|unpack|error|pcall|xpcall|assert|require|table|string|math|io|os|coroutine|setmetatable|getmetatable|rawget|rawset)\b/g,commentLine:/(--(?!\[).*$)/gm,commentBlock:/(--\[\[[\s\S]*?\]\])/g},php:{keywords:/\b(function|class|interface|trait|extends|implements|public|private|protected|static|final|abstract|const|var|new|return|if|else|elseif|for|foreach|while|do|switch|case|default|break|continue|try|catch|finally|throw|use|namespace|require|include|require_once|include_once|echo|print|die|exit|null|true|false|array|list|match|fn|yield|from)\b/g,variables:/(\$\w+)/g},swift:{keywords:/\b(func|class|struct|enum|protocol|extension|let|var|guard|if|else|for|while|repeat|switch|case|default|break|continue|return|throw|try|catch|defer|import|typealias|associatedtype|init|deinit|subscript|operator|precedencegroup|self|Self|super|nil|true|false|is|as|in|inout|throws|rethrows|where|some|any|weak|unowned|lazy|mutating|nonmutating|override|final|required|convenience|optional|dynamic|async|await|actor|nonisolated|isolated|sending|consuming|borrowing)\b/g},kt:{keywords:/\b(fun|class|object|interface|val|var|if|else|when|for|while|do|return|break|continue|throw|try|catch|finally|import|package|as|is|in|out|by|init|constructor|companion|data|sealed|enum|abstract|open|override|private|protected|internal|public|inline|reified|suspend|coroutine|null|true|false|this|super|it|typealias|annotation|lateinit|lazy|get|set)\b/g},dart:{keywords:/\b(class|extends|implements|with|mixin|abstract|sealed|base|interface|final|const|var|late|required|dynamic|void|static|return|if|else|for|while|do|switch|case|default|break|continue|try|catch|finally|throw|rethrow|assert|new|this|super|null|true|false|is|as|in|async|await|yield|import|export|library|part|show|hide|deferred|typedef|enum|extension|on)\b/g},r:{keywords:/\b(if|else|for|while|repeat|function|return|break|next|in|TRUE|FALSE|NULL|NA|Inf|NaN|library|require|source|print|cat|paste|paste0|sprintf|stop|warning|message)\b/g,commentType:"hash"},toml:{keys:/([\w.-]+)\s*=/g,sections:/(\[[\w.]+\])/g,commentType:"hash"},proto:{keywords:/\b(syntax|package|import|option|message|enum|service|rpc|returns|repeated|optional|required|map|oneof|reserved|extensions|extend|group|default|packed|deprecated|java_package|java_outer_classname|optimize_for|cc_enable_arenas|objc_class_prefix|csharp_namespace|swift_prefix|php_class_prefix|php_namespace|ruby_package|string|int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|float|double|bool|bytes)\b/g}},Ne={keyword:"hl-kw",builtin:"hl-bi",string:"hl-st",number:"hl-nm",comment:"hl-cm",operator:"hl-op",decorator:"hl-dc",macro:"hl-mc",preprocessor:"hl-pp",attribute:"hl-at",tag:"hl-tg",property:"hl-pr",variable:"hl-vr",heading:"hl-hd",bold:"hl-bd",link:"hl-lk",key:"hl-ky",section:"hl-sc"}});function hh(e,t,s){let n=[],r=0,i=0;if(t!=null){let f=t.split(`
2046
+ `,setup(e){let t=Xn(Pinia.useChatStore(),e),s=Vue.inject("t"),n=Vue.reactive({}),r=Vue.reactive({}),i=Vue.reactive({}),o=Vue.ref(""),a=Vue.ref(null),l={},c=!1,d=null,u=Vue.computed(()=>{let L=t.currentConversation;return L&&r[L]||null}),p=Vue.computed(()=>{let L=t.currentConversation;return L&&i[L]||""}),f=Vue.computed(()=>!!p.value),g=(L,T)=>{if(T){let D=l[L];if(l[L]=T,D&&D!==T){let j=n[L];j?.terminal?.element&&(T.innerHTML="",T.appendChild(j.terminal.element),Vue.nextTick(()=>{try{j.fitAddon?.fit()}catch{}}))}}},v=L=>{let T=t.currentConversation;T&&(i[T]=L)};async function m(){if(c)return!0;let L=typeof Terminal<"u"?Terminal.Terminal||Terminal:null,T=typeof FitAddon<"u"?FitAddon.FitAddon||FitAddon:null;if(!L||!T)try{await Mc("vendor/xterm.min.js"),await Mc("vendor/xterm-addon-fit.min.js"),L=typeof Terminal<"u"?Terminal.Terminal||Terminal:null,T=typeof FitAddon<"u"?FitAddon.FitAddon||FitAddon:null}catch{}return!L||!T?(o.value=s("terminal.xtermNotLoaded"),!1):(c=!0,!0)}function b(){let L=document.documentElement.getAttribute("data-theme")==="dark",D=getComputedStyle(document.documentElement).getPropertyValue("--bg-main").trim()||(L?"#212121":"#ffffff");return L?{background:D,foreground:"#d4d4d4",cursor:"#a0a0a0",selectionBackground:"rgba(255,255,255,0.12)",black:"#3a3a3a",red:"#f48771",green:"#89d185",yellow:"#e5c07b",blue:"#6cb6ff",magenta:"#d670d6",cyan:"#56d4dd",white:"#cccccc",brightBlack:"#555555",brightRed:"#f48771",brightGreen:"#89d185",brightYellow:"#e5c07b",brightBlue:"#6cb6ff",brightMagenta:"#d670d6",brightCyan:"#56d4dd",brightWhite:"#e8e8e8"}:{background:D,foreground:"#383a42",cursor:"#526fff",selectionBackground:"rgba(0,0,0,0.07)",black:"#383a42",red:"#e45649",green:"#50a14f",yellow:"#c18401",blue:"#4078f2",magenta:"#a626a4",cyan:"#0184bc",white:"#a0a1a7",brightBlack:"#4f525e",brightRed:"#e45649",brightGreen:"#50a14f",brightYellow:"#c18401",brightBlue:"#4078f2",brightMagenta:"#a626a4",brightCyan:"#0184bc",brightWhite:"#fafafa"}}async function h(L){if(!L||!t.currentAgent||!await m())return null;let T=ih(L),D=Terminal.Terminal||Terminal,j=FitAddon.FitAddon||FitAddon,X=new D({cursorBlink:!0,fontSize:13,fontFamily:"'SF Mono', 'Fira Code', 'Consolas', monospace, 'Symbols Nerd Font Mono', 'Apple Color Emoji', 'Segoe UI Emoji', 'Noto Color Emoji'",theme:b(),allowProposedApi:!0}),G=new j;return X.loadAddon(G),X.attachCustomKeyEventHandler(ce=>!((ce.ctrlKey||ce.metaKey)&&ce.key==="v"||(ce.ctrlKey||ce.metaKey)&&ce.key==="c"&&X.hasSelection())),n[T]={created:!0,connected:!1,terminal:X,fitAddon:G},X.onData(ce=>{t.sendWsMessage({type:"terminal_input",agentId:t.currentAgent,conversationId:L,terminalId:T,data:ce,_clientId:t.clientId})}),T}async function w(L,T){let D=n[T];if(!D)return!1;let j=null;for(let X=0;X<10&&(await Vue.nextTick(),j=l[T],!(j||X>=2&&(await new Promise(G=>setTimeout(G,50)),j=l[T],j)));X++);return j?(D.terminal.open(j),D.fitAddon.fit(),t.sendWsMessage({type:"terminal_create",agentId:t.currentAgent,conversationId:L,terminalId:T,workDir:e.workDir,cols:D.terminal.cols,rows:D.terminal.rows,_clientId:t.clientId}),!0):(o.value=s("terminal.mountFailed"),D.terminal.dispose(),delete n[T],!1)}let I=!1;async function y(){let L=t.currentConversation;if(!L||!t.currentAgent||r[L]||I)return;I=!0,o.value="";let T=await h(L);if(!T){I=!1;return}r[L]=Vue.reactive({type:"pane",terminalId:T}),i[L]=T,await w(L,T)||(delete r[L],delete i[L]),I=!1}async function k(L){let T=t.currentConversation;if(!T||!i[T])return;let D=i[T],j=await h(T);if(!j)return;let X=Vue.reactive({type:"split",direction:L,ratio:.5,first:{type:"pane",terminalId:D},second:{type:"pane",terminalId:j}}),G=Qo(r[T],D,X);if(r[T]=Vue.reactive(G),i[T]=j,!await w(T,j)){let be=Ys(r[T],j);be&&(r[T]=Vue.reactive(be)),i[T]=D;return}await Vue.nextTick(),Q(T)}function _(L){let T=t.currentConversation;if(!T)return;let D=n[L];D&&(t.sendWsMessage({type:"terminal_close",agentId:t.currentAgent,conversationId:T,terminalId:L,_clientId:t.clientId}),D.terminal?.dispose(),delete n[L],delete l[L]);let j=Ys(r[T],L);j?(r[T]=Vue.reactive(j),i[T]===L&&(i[T]=Xo(r[T])||""),Vue.nextTick(()=>Q(T))):(delete r[T],delete i[T],Vue.nextTick(()=>y()))}function A(){let L=t.currentConversation;!L||!i[L]||_(i[L])}function Q(L){if(L||(L=t.currentConversation),!L||!r[L])return;let T=yi(r[L]);for(let D of T){let j=n[D];if(j?.fitAddon&&j.connected)try{j.fitAddon.fit(),t.sendWsMessage({type:"terminal_resize",agentId:t.currentAgent,conversationId:L,terminalId:D,cols:j.terminal.cols,rows:j.terminal.rows,_clientId:t.clientId})}catch{}}}function H(L){let T=L.detail;if(!(!T||!Zn(T,e.routeKey,e.workspaceGeneration))&&!(e.routeKey&&ss(T,e.routeKey)!=="main"))switch(T.type){case"terminal_created":{let D=T.terminalId||T.conversationId,j=n[D];if(j)if(T.success)j.connected=!0,o.value="";else{o.value=T.error||s("terminal.createFailed"),j.terminal?.dispose(),delete n[D];let X=T.conversationId;if(X&&r[X]){let G=Ys(r[X],D);G?r[X]=Vue.reactive(G):(delete r[X],delete i[X])}}break}case"terminal_output":{let D=T.terminalId||T.conversationId,j=n[D];j?.terminal&&j.terminal.write(T.data);break}case"terminal_closed":{let D=T.terminalId||T.conversationId,j=n[D];if(j){j.terminal?.dispose(),delete n[D],delete l[D];let X=T.conversationId;if(X&&r[X]){let G=Ys(r[X],D);G?(r[X]=Vue.reactive(G),i[X]===D&&(i[X]=Xo(r[X])||"")):(delete r[X],delete i[X])}}break}case"terminal_error":{o.value=T.message||s("terminal.error");let D=T.terminalId;if(D&&n[D]&&!n[D].connected){n[D].terminal?.dispose(),delete n[D];let j=T.conversationId;if(j&&r[j]){let X=Ys(r[j],D);X?r[j]=Vue.reactive(X):(delete r[j],delete i[j])}}break}}}let z=null;function $(){clearTimeout(z),z=setTimeout(()=>Q(),100)}function te(){Q()}function F(L){let{conversationId:T}=L.detail;if(T&&r[T]){let D=yi(r[T]);for(let j of D){let X=n[j];X&&(t.sendWsMessage({type:"terminal_close",terminalId:j,_clientId:t.clientId}),X.terminal?.dispose(),delete n[j],delete l[j])}delete r[T],delete i[T]}}let S=Vue.ref(!0);Vue.onMounted(()=>{window.addEventListener("workbench-message",H),window.addEventListener("resize",$),window.addEventListener("workbench-panel-resize",$),window.addEventListener("terminal-fit-all",te),window.addEventListener("conversation-deleted",F),typeof ResizeObserver<"u"&&a.value&&(d=new ResizeObserver($),d.observe(a.value))}),Vue.onActivated(()=>{S.value=!0,Vue.nextTick(()=>{y(),Q()})}),Vue.onDeactivated(()=>{S.value=!1}),Vue.onUnmounted(()=>{window.removeEventListener("workbench-message",H),window.removeEventListener("resize",$),window.removeEventListener("workbench-panel-resize",$),window.removeEventListener("terminal-fit-all",te),window.removeEventListener("conversation-deleted",F),d?.disconnect(),d=null,clearTimeout(z);for(let L of Object.keys(n))t.sendWsMessage({type:"terminal_close",terminalId:L,_clientId:t.clientId}),n[L]?.terminal?.dispose()}),Vue.watch(()=>[t.currentConversation,t.workbenchExpanded],()=>{Vue.nextTick(()=>{if(!t.currentConversation||!t.workbenchExpanded||!S.value)return;let T=document.querySelector(".terminal-tab");T&&T.offsetParent!==null&&y()})},{immediate:!0}),Vue.watch(()=>t.connectionState,(L,T)=>{if(L==="connected"&&T&&T!=="connected"){for(let D of Object.keys(n))n[D]?.terminal?.dispose(),delete n[D],delete l[D];for(let D of Object.keys(r))delete r[D],delete i[D];Vue.nextTick(()=>y())}}),Vue.watch(()=>t.currentConversation,()=>{Vue.nextTick(()=>Q())});let M=null;return Vue.onMounted(()=>{let L=()=>{let D=document.querySelector(".terminal-tab");S.value&&D&&D.offsetParent!==null&&(y(),Q())};M=new MutationObserver(()=>{setTimeout(L,50)});let T=document.querySelector(".workbench-tab-content");T&&M.observe(T,{attributes:!0,subtree:!0,attributeFilter:["style"]})}),Vue.onUnmounted(()=>{M&&M.disconnect()}),{store:t,terminalRoot:a,terminals:n,currentTree:u,currentActivePane:p,hasActivePane:f,terminalError:o,setMountRef:g,activatePane:v,splitPane:k,closeActivePane:A,closePane:_}}}});function Zo(e){if(!e)return bi(fe.default);let t=e.toLowerCase();if(Pc[t])return Pc[t]();let s=t.lastIndexOf(".");if(s>=0){let n=t.slice(s+1);if(uh[n])return uh[n]();let r=t;for(let[i,o]of Object.entries(Pc))if(r===i||r.endsWith("/"+i))return o()}return bi(fe.default)}function Jo(e=!1){return Sk(fe.folder,e)}var fe,bi,Sk,de,uh,Pc,Rc=B(()=>{fe={js:"#F1C40F",ts:"#3178C6",jsx:"#61DAFB",tsx:"#3178C6",py:"#3776AB",rb:"#CC342D",go:"#00ADD8",rs:"#DEA584",java:"#E76F00",cs:"#68217A",cpp:"#00599C",c:"#A8B9CC",html:"#E44D26",css:"#1572B6",scss:"#CF649A",less:"#1D365D",json:"#F1C40F",yaml:"#CB171E",xml:"#E44D26",md:"#519ABA",txt:"#8E8E8E",log:"#8E8E8E",sh:"#4EAA25",ps1:"#012456",sql:"#E38C00",svg:"#FFB13B",img:"#26A69A",video:"#7E57C2",git:"#F05032",docker:"#2496ED",config:"#6D8086",lock:"#8E8E8E",env:"#ECD53F",vue:"#41B883",react:"#61DAFB",angular:"#DD0031",svelte:"#FF3E00",php:"#777BB4",swift:"#FA7343",kt:"#7F52FF",lua:"#000080",r:"#276DC3",dart:"#00B4AB",liquid:"#67B6E4",folder:"#90A4AE",folderOpen:"#90A4AE",default:"#8E8E8E"},bi=e=>`<svg width="16" height="16" viewBox="0 0 24 24" fill="none"><path d="M14 2H6C4.9 2 4 2.9 4 4v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6z" fill="${e}" opacity="0.85"/><path d="M14 2v6h6" fill="${e}" opacity="0.5"/></svg>`,Sk=(e,t)=>t?`<svg width="16" height="16" viewBox="0 0 24 24" fill="none"><path d="M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z" fill="${e}" opacity="0.9"/></svg>`:`<svg width="16" height="16" viewBox="0 0 24 24" fill="none"><path d="M10 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z" fill="${e}" opacity="0.9"/></svg>`,de=(e,t)=>`<svg width="16" height="16" viewBox="0 0 24 24" fill="none"><path d="M14 2H6C4.9 2 4 2.9 4 4v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6z" fill="${e}" opacity="0.2"/><path d="M14 2v6h6" fill="${e}" opacity="0.15"/><path d="M14 2H6C4.9 2 4 2.9 4 4v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6z" stroke="${e}" stroke-width="1.2" fill="none"/><text x="12" y="17" text-anchor="middle" font-size="7" font-weight="700" font-family="system-ui,sans-serif" fill="${e}">${t}</text></svg>`,uh={js:()=>de(fe.js,"JS"),mjs:()=>de(fe.js,"JS"),cjs:()=>de(fe.js,"JS"),ts:()=>de(fe.ts,"TS"),mts:()=>de(fe.ts,"TS"),jsx:()=>de(fe.jsx,"JSX"),tsx:()=>de(fe.tsx,"TSX"),html:()=>de(fe.html,"</>"),htm:()=>de(fe.html,"</>"),css:()=>de(fe.css,"CSS"),scss:()=>de(fe.scss,"SC"),sass:()=>de(fe.scss,"SA"),less:()=>de(fe.less,"LS"),vue:()=>de(fe.vue,"V"),svelte:()=>de(fe.svelte,"SV"),json:()=>de(fe.json,"{ }"),yaml:()=>de(fe.yaml,"YML"),yml:()=>de(fe.yaml,"YML"),toml:()=>de(fe.config,"TML"),xml:()=>de(fe.xml,"</>"),csv:()=>de(fe.config,"CSV"),md:()=>de(fe.md,"MD"),markdown:()=>de(fe.md,"MD"),txt:()=>bi(fe.txt),log:()=>bi(fe.log),pdf:()=>de("#E53935","PDF"),py:()=>de(fe.py,"PY"),rb:()=>de(fe.rb,"RB"),go:()=>de(fe.go,"GO"),rs:()=>de(fe.rs,"RS"),java:()=>de(fe.java,"JA"),cs:()=>de(fe.cs,"C#"),cpp:()=>de(fe.cpp,"C+"),cc:()=>de(fe.cpp,"C+"),c:()=>de(fe.c,"C"),h:()=>de(fe.c,"H"),hpp:()=>de(fe.cpp,"H+"),swift:()=>de(fe.swift,"SW"),kt:()=>de(fe.kt,"KT"),php:()=>de(fe.php,"PHP"),lua:()=>de(fe.lua,"LUA"),r:()=>de(fe.r,"R"),dart:()=>de(fe.dart,"DA"),sh:()=>de(fe.sh,">_"),bash:()=>de(fe.sh,">_"),zsh:()=>de(fe.sh,">_"),fish:()=>de(fe.sh,">_"),ps1:()=>de(fe.ps1,"PS"),bat:()=>de(fe.ps1,"BAT"),cmd:()=>de(fe.ps1,"CMD"),sql:()=>de(fe.sql,"SQL"),db:()=>de(fe.sql,"DB"),sqlite:()=>de(fe.sql,"DB"),svg:()=>de(fe.svg,"SVG"),png:()=>de(fe.img,"PNG"),jpg:()=>de(fe.img,"JPG"),jpeg:()=>de(fe.img,"JPG"),gif:()=>de(fe.img,"GIF"),ico:()=>de(fe.img,"ICO"),webp:()=>de(fe.img,"WP"),mp4:()=>de(fe.video,"MP4"),m4v:()=>de(fe.video,"M4V"),webm:()=>de(fe.video,"WEB"),ogv:()=>de(fe.video,"OGV"),ogg:()=>de(fe.video,"OGG"),mov:()=>de(fe.video,"MOV"),lock:()=>bi(fe.lock),env:()=>de(fe.env,"ENV"),ini:()=>de(fe.config,"INI"),cfg:()=>de(fe.config,"CFG"),conf:()=>de(fe.config,"CNF"),liquid:()=>de(fe.liquid,"LQ"),ejs:()=>de(fe.html,"EJS"),hbs:()=>de(fe.html,"HBS"),pug:()=>de(fe.html,"PUG"),wasm:()=>de("#654FF0","WA"),proto:()=>de(fe.config,"PB"),graphql:()=>de("#E535AB","GQL"),gql:()=>de("#E535AB","GQL")},Pc={dockerfile:()=>de(fe.docker,"DK"),"docker-compose.yml":()=>de(fe.docker,"DC"),"docker-compose.yaml":()=>de(fe.docker,"DC"),".gitignore":()=>de(fe.git,"GI"),".gitattributes":()=>de(fe.git,"GA"),".gitmodules":()=>de(fe.git,"GM"),".env":()=>de(fe.env,"ENV"),".env.local":()=>de(fe.env,"ENV"),".env.development":()=>de(fe.env,"ENV"),".env.production":()=>de(fe.env,"ENV"),"package.json":()=>de("#CB3837","NPM"),"package-lock.json":()=>de("#CB3837","NPM"),"tsconfig.json":()=>de(fe.ts,"TSC"),eslintrc:()=>de("#4B32C3","ESL"),".eslintrc.js":()=>de("#4B32C3","ESL"),".eslintrc.json":()=>de("#4B32C3","ESL"),".prettierrc":()=>de("#F7B93E","PR"),makefile:()=>de(fe.config,"MK"),"cmakelists.txt":()=>de("#064F8C","CM"),"readme.md":()=>de(fe.md,"RM"),license:()=>de("#F5C518","LIC"),"license.md":()=>de("#F5C518","LIC"),"cargo.toml":()=>de(fe.rs,"CG"),"go.mod":()=>de(fe.go,"MOD"),"go.sum":()=>de(fe.go,"SUM"),gemfile:()=>de(fe.rb,"GEM"),rakefile:()=>de(fe.rb,"RK"),"requirements.txt":()=>de(fe.py,"REQ"),pipfile:()=>de(fe.py,"PIP"),csproj:()=>de(fe.cs,"CSP"),".sln":()=>de(fe.cs,"SLN"),slnx:()=>de(fe.cs,"SLN")}});function In(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Ik(e,t){if(!e||!t)return In(e);let s=[],n=(a,l)=>{if(!a)return;let c=new RegExp(a.source,a.flags),d;for(;(d=c.exec(e))!==null;){let u=d[1]!==void 0?d[1]:d[0],p=d.index+(d[1]!==void 0?d[0].indexOf(d[1]):0);if(s.push({start:p,end:p+u.length,cls:l}),!c.global)break}},r=t.commentType||"slash";if((r==="slash"||r==="both")&&(n(dr.comment1,Ne.comment),n(dr.commentBlock,Ne.comment)),(r==="hash"||r==="both")&&n(dr.commentHash,Ne.comment),r==="html"&&n(t.commentHtml,Ne.comment),t.commentLine&&n(t.commentLine,Ne.comment),t.commentBlock&&n(t.commentBlock,Ne.comment),n(dr.string,Ne.string),n(dr.number,Ne.number),t.keywords&&n(t.keywords,Ne.keyword),t.builtins&&n(t.builtins,Ne.builtin),t.operators&&n(t.operators,Ne.operator),t.decorators&&n(t.decorators,Ne.decorator),t.macros&&n(t.macros,Ne.macro),t.preprocessor&&n(t.preprocessor,Ne.preprocessor),t.attributes&&n(t.attributes,Ne.attribute),t.tags&&n(t.tags,Ne.tag),t.properties&&n(t.properties,Ne.property),t.variables&&n(t.variables,Ne.variable),t.headings&&n(t.headings,Ne.heading),t.bold&&n(t.bold,Ne.bold),t.links&&n(t.links,Ne.link),t.keys&&n(t.keys,Ne.key),t.sections&&n(t.sections,Ne.section),t.selectors&&n(t.selectors,Ne.keyword),t.values&&n(t.values,Ne.number),t.code&&n(t.code,Ne.string),t.italic&&n(t.italic,Ne.builtin),t.attrs&&n(t.attrs,Ne.attribute),s.length===0)return In(e);s.sort((a,l)=>a.start-l.start||l.end-l.start-(a.end-a.start));let i="",o=0;for(let a of s)a.start<o||(a.start>o&&(i+=In(e.slice(o,a.start))),i+=`<span class="${a.cls}">${In(e.slice(a.start,a.end))}</span>`,o=a.end);return o<e.length&&(i+=In(e.slice(o))),i}function Ck(e){if(!e)return null;let t=e.split(".").pop()?.toLowerCase();if(!t)return null;let s=ph[t];return typeof s=="string"&&(s=ph[s]),s||null}function fh(e,t){if(!e)return In(e||"");let s=Ck(t);return s?Ik(e,s):In(e)}var dr,ph,Ne,gh=B(()=>{dr={string:/("(?:[^"\\]|\\.)*")|('(?:[^'\\]|\\.)*')|(`(?:[^`\\]|\\.)*`)/g,number:/\b(\d+\.?\d*(?:[eE][+-]?\d+)?|0x[\da-fA-F]+|0b[01]+|0o[0-7]+)\b/g,comment1:/(\/\/.*$)/gm,commentHash:/(#.*$)/gm,commentBlock:/(\/\*.*?\*\/)/g},ph={js:{keywords:/\b(const|let|var|function|class|extends|return|if|else|for|while|do|switch|case|break|continue|new|this|super|import|export|from|default|async|await|yield|try|catch|finally|throw|typeof|instanceof|in|of|delete|void|null|undefined|true|false|NaN|Infinity)\b/g,builtins:/\b(console|window|document|Math|JSON|Array|Object|String|Number|Boolean|Promise|Map|Set|WeakMap|WeakSet|Symbol|Proxy|Reflect|RegExp|Error|Date|parseInt|parseFloat|setTimeout|setInterval|clearTimeout|clearInterval|fetch|require|module|exports|process)\b/g,operators:/(=>|\.\.\.|\?\.|&&|\|\||===|!==|==|!=|>=|<=|>>>=|>>>|>>=|<<=|\+\+|--|[+\-*/%&|^~!<>]=?|\?|:)/g},ts:"js",jsx:"js",tsx:"js",mjs:"js",cjs:"js",vue:"js",py:{keywords:/\b(def|class|return|if|elif|else|for|while|break|continue|pass|import|from|as|with|try|except|finally|raise|yield|lambda|and|or|not|is|in|True|False|None|global|nonlocal|del|assert|async|await)\b/g,builtins:/\b(print|len|range|int|float|str|bool|list|dict|set|tuple|type|isinstance|super|property|staticmethod|classmethod|enumerate|zip|map|filter|sorted|reversed|open|input|hasattr|getattr|setattr|id|hex|oct|bin|abs|max|min|sum|all|any|iter|next)\b/g,decorators:/(@\w+)/g,commentType:"hash"},rb:{keywords:/\b(def|class|module|end|return|if|elsif|else|unless|for|while|until|do|break|next|case|when|begin|rescue|ensure|raise|yield|require|include|extend|attr_accessor|attr_reader|attr_writer|self|super|nil|true|false|and|or|not|then|puts|print)\b/g,commentType:"hash"},go:{keywords:/\b(func|package|import|var|const|type|struct|interface|map|chan|go|select|switch|case|default|if|else|for|range|break|continue|return|defer|fallthrough|nil|true|false|iota)\b/g,builtins:/\b(fmt|make|len|cap|append|copy|delete|close|panic|recover|new|error|string|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|float32|float64|bool|byte|rune|complex64|complex128)\b/g},rs:{keywords:/\b(fn|let|mut|const|pub|mod|use|struct|enum|impl|trait|where|for|loop|while|if|else|match|return|break|continue|move|ref|self|Self|super|crate|as|in|unsafe|async|await|dyn|true|false|Some|None|Ok|Err)\b/g,builtins:/\b(String|Vec|Box|Rc|Arc|Option|Result|HashMap|HashSet|println|eprintln|format|panic|todo|unimplemented|assert|assert_eq|assert_ne|dbg|cfg|derive|macro_rules)\b/g,macros:/(\w+!)/g},java:{keywords:/\b(class|interface|extends|implements|public|private|protected|static|final|abstract|synchronized|volatile|transient|native|new|return|if|else|for|while|do|switch|case|default|break|continue|try|catch|finally|throw|throws|import|package|this|super|void|null|true|false|instanceof)\b/g,builtins:/\b(System|String|Integer|Long|Double|Float|Boolean|List|ArrayList|Map|HashMap|Set|HashSet|Optional|Stream|Object|Exception|RuntimeException|Thread|Runnable|Override|Deprecated)\b/g},cs:{keywords:/\b(class|struct|interface|enum|record|delegate|event|namespace|using|public|private|protected|internal|static|readonly|const|sealed|abstract|virtual|override|new|return|if|else|for|foreach|while|do|switch|case|default|break|continue|try|catch|finally|throw|async|await|yield|var|dynamic|is|as|in|out|ref|params|this|base|null|true|false|void|get|set|init|required|partial|where|select|from|orderby|group|join|let|into)\b/g,builtins:/\b(Console|String|Int32|Int64|Double|Boolean|List|Dictionary|HashSet|Task|IEnumerable|ILogger|IOptions|IFeatures|Exception|Guid|DateTime|TimeSpan|CancellationToken|Action|Func|Span|Memory|ReadOnlySpan)\b/g,attributes:/(\[[\w]+(?:\(.*?\))?\])/g},cpp:{keywords:/\b(class|struct|enum|union|namespace|using|template|typename|public|private|protected|static|const|constexpr|volatile|virtual|override|final|explicit|inline|extern|auto|decltype|new|delete|return|if|else|for|while|do|switch|case|default|break|continue|try|catch|throw|sizeof|alignof|typeid|static_cast|dynamic_cast|reinterpret_cast|const_cast|nullptr|true|false|void|this|operator|friend|noexcept|co_await|co_yield|co_return|concept|requires)\b/g,builtins:/\b(std|string|vector|map|unordered_map|set|array|pair|tuple|shared_ptr|unique_ptr|weak_ptr|optional|variant|any|cout|cin|endl|printf|scanf|malloc|free|sizeof|size_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t)\b/g,preprocessor:/(#\s*(?:include|define|undef|if|ifdef|ifndef|else|elif|endif|pragma|error|warning).*$)/gm},c:"cpp",h:"cpp",hpp:"cpp",html:{tags:/(<\/?[\w-]+|>|\/>)/g,attrs:/\b([\w-]+)(?==)/g,commentType:"html",commentHtml:/(<!--[\s\S]*?-->)/g},xml:"html",svg:"html",css:{selectors:/([\w.#\[\]:,>+~*-]+)\s*\{/g,properties:/\b([\w-]+)(?=\s*:)/g,values:/:\s*([^;{}]+)/g,commentType:"block"},scss:"css",less:"css",json:{keys:/("[\w.-]+")\s*:/g,commentType:"none"},yaml:{keys:/([\w.-]+)\s*:/g,commentType:"hash"},yml:"yaml",md:{headings:/^(#{1,6}\s.*)$/gm,bold:/(\*\*[^*]+\*\*|__[^_]+__)/g,italic:/(\*[^*]+\*|_[^_]+_)/g,code:/(`[^`]+`)/g,links:/(\[[^\]]+\]\([^)]+\))/g,commentType:"none"},sh:{keywords:/\b(if|then|else|elif|fi|for|while|do|done|case|esac|function|return|exit|echo|export|local|readonly|unset|set|shift|eval|exec|trap|source|alias|cd|pwd|ls|mkdir|rm|cp|mv|cat|grep|sed|awk|find|xargs|sort|uniq|wc|head|tail|tee|cut|tr|test)\b/g,variables:/(\$\{?\w+\}?|\$\(|\$\{)/g,commentType:"hash"},bash:"sh",zsh:"sh",sql:{keywords:/\b(SELECT|FROM|WHERE|AND|OR|NOT|IN|LIKE|BETWEEN|JOIN|LEFT|RIGHT|INNER|OUTER|FULL|ON|AS|GROUP|BY|ORDER|HAVING|LIMIT|OFFSET|INSERT|INTO|VALUES|UPDATE|SET|DELETE|CREATE|ALTER|DROP|TABLE|INDEX|VIEW|TRIGGER|FUNCTION|PROCEDURE|BEGIN|END|IF|ELSE|THEN|CASE|WHEN|DECLARE|EXEC|UNION|ALL|DISTINCT|TOP|EXISTS|NULL|IS|ASC|DESC|PRIMARY|KEY|FOREIGN|REFERENCES|CONSTRAINT|DEFAULT|CHECK|UNIQUE|CASCADE|TRUNCATE|COMMIT|ROLLBACK|GRANT|REVOKE)\b/gi,commentType:"both"},lua:{keywords:/\b(and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/g,builtins:/\b(print|type|tostring|tonumber|pairs|ipairs|next|select|unpack|error|pcall|xpcall|assert|require|table|string|math|io|os|coroutine|setmetatable|getmetatable|rawget|rawset)\b/g,commentLine:/(--(?!\[).*$)/gm,commentBlock:/(--\[\[[\s\S]*?\]\])/g},php:{keywords:/\b(function|class|interface|trait|extends|implements|public|private|protected|static|final|abstract|const|var|new|return|if|else|elseif|for|foreach|while|do|switch|case|default|break|continue|try|catch|finally|throw|use|namespace|require|include|require_once|include_once|echo|print|die|exit|null|true|false|array|list|match|fn|yield|from)\b/g,variables:/(\$\w+)/g},swift:{keywords:/\b(func|class|struct|enum|protocol|extension|let|var|guard|if|else|for|while|repeat|switch|case|default|break|continue|return|throw|try|catch|defer|import|typealias|associatedtype|init|deinit|subscript|operator|precedencegroup|self|Self|super|nil|true|false|is|as|in|inout|throws|rethrows|where|some|any|weak|unowned|lazy|mutating|nonmutating|override|final|required|convenience|optional|dynamic|async|await|actor|nonisolated|isolated|sending|consuming|borrowing)\b/g},kt:{keywords:/\b(fun|class|object|interface|val|var|if|else|when|for|while|do|return|break|continue|throw|try|catch|finally|import|package|as|is|in|out|by|init|constructor|companion|data|sealed|enum|abstract|open|override|private|protected|internal|public|inline|reified|suspend|coroutine|null|true|false|this|super|it|typealias|annotation|lateinit|lazy|get|set)\b/g},dart:{keywords:/\b(class|extends|implements|with|mixin|abstract|sealed|base|interface|final|const|var|late|required|dynamic|void|static|return|if|else|for|while|do|switch|case|default|break|continue|try|catch|finally|throw|rethrow|assert|new|this|super|null|true|false|is|as|in|async|await|yield|import|export|library|part|show|hide|deferred|typedef|enum|extension|on)\b/g},r:{keywords:/\b(if|else|for|while|repeat|function|return|break|next|in|TRUE|FALSE|NULL|NA|Inf|NaN|library|require|source|print|cat|paste|paste0|sprintf|stop|warning|message)\b/g,commentType:"hash"},toml:{keys:/([\w.-]+)\s*=/g,sections:/(\[[\w.]+\])/g,commentType:"hash"},proto:{keywords:/\b(syntax|package|import|option|message|enum|service|rpc|returns|repeated|optional|required|map|oneof|reserved|extensions|extend|group|default|packed|deprecated|java_package|java_outer_classname|optimize_for|cc_enable_arenas|objc_class_prefix|csharp_namespace|swift_prefix|php_class_prefix|php_namespace|ruby_package|string|int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|float|double|bool|bytes)\b/g}},Ne={keyword:"hl-kw",builtin:"hl-bi",string:"hl-st",number:"hl-nm",comment:"hl-cm",operator:"hl-op",decorator:"hl-dc",macro:"hl-mc",preprocessor:"hl-pp",attribute:"hl-at",tag:"hl-tg",property:"hl-pr",variable:"hl-vr",heading:"hl-hd",bold:"hl-bd",link:"hl-lk",key:"hl-ky",section:"hl-sc"}});function hh(e,t,s){let n=[],r=0,i=0;if(t!=null){let f=t.split(`
2047
2047
  `);for(let g=0;g<f.length;g++)n.push({type:"addition",oldNum:"",oldText:"",newNum:g+1,newText:f[g]}),r++;return{lines:n,stats:{additions:r,deletions:0},content:t}}if(!e||e.trim()==="")return{lines:[{type:"context",oldNum:"",oldText:s("git.noDiff"),newNum:"",newText:s("git.noDiff")}],stats:{additions:0,deletions:0},content:""};if(e.includes("Binary files")&&e.includes("differ"))return{lines:[{type:"context",oldNum:"",oldText:s("git.binaryFile"),newNum:"",newText:s("git.binaryFile")}],stats:{additions:0,deletions:0},content:e};let o=e.split(`
2048
2048
  `),a=0,l=0,c=!1,d=[],u=[],p=()=>{let f=Math.max(d.length,u.length);for(let g=0;g<f;g++){let v=d[g],m=u[g];v&&m?n.push({type:"modification",oldNum:v.num,oldText:v.text,newNum:m.num,newText:m.text}):v?n.push({type:"deletion",oldNum:v.num,oldText:v.text,newNum:"",newText:""}):m&&n.push({type:"addition",oldNum:"",oldText:"",newNum:m.num,newText:m.text})}d=[],u=[]};for(let f of o){if(f.startsWith("diff --git")||f.startsWith("index ")||f.startsWith("---")||f.startsWith("+++")||f.startsWith("\\"))continue;let g=f.match(/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/);if(g){p(),a=parseInt(g[1]),l=parseInt(g[2]),c=!0,n.push({type:"hunk",oldNum:"\xB7\xB7\xB7",oldText:f,newNum:"\xB7\xB7\xB7",newText:f});continue}if(c)if(f.startsWith("-"))u.length>0&&d.length===0&&p(),d.push({num:a++,text:f.substring(1)}),i++;else if(f.startsWith("+"))u.push({num:l++,text:f.substring(1)}),r++;else{p();let v=f.startsWith(" ")?f.substring(1):f;n.push({type:"context",oldNum:a++,oldText:v,newNum:l++,newText:v})}}return p(),{lines:n,stats:{additions:r,deletions:i},content:e}}var mh=B(()=>{});function vh(e,t){let{effectiveGitWorkDir:s,gitOperating:n,gitOpFeedback:r,commitMessage:i}=t,o=null,a=null,l=(I,y)=>{o&&clearTimeout(o),r.value={ok:I,message:y},o=setTimeout(()=>{r.value=null},4e3)},c=(I,y)=>{e.currentAgent&&(I.value=!0,y.value="",e.sendWsMessage({type:"git_status",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,workDir:s.value,_clientId:e.clientId}))},d=(I,y={})=>{e.currentAgent&&(n.value=!0,a&&clearTimeout(a),a=setTimeout(()=>{n.value&&(n.value=!1,l(!1,"Operation timed out"))},15e3),e.sendWsMessage({type:I,conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,workDir:s.value,_clientId:e.clientId,...y}))};return{showFeedback:l,loadGitStatus:c,gitOp:d,stageFile:I=>d("git_add",{filePath:I}),unstageFile:I=>d("git_reset",{filePath:I}),discardFile:async I=>{await Fe("Discard changes to "+I+"?",{destructive:!0})&&d("git_restore",{filePath:I})},stageAll:()=>d("git_add",{addAll:!0}),unstageAll:()=>d("git_reset",{resetAll:!0}),commitChanges:()=>{let I=i.value.trim();I&&d("git_commit",{commitMessage:I})},pushChanges:()=>d("git_push"),handleGitOpResult:(I,y)=>{n.value=!1,a&&(clearTimeout(a),a=null),I.success?(l(!0,I.message||I.operation+" succeeded"),I.operation==="commit"&&(i.value=""),y()):l(!1,I.error||I.operation+" failed")},cleanup:()=>{o&&clearTimeout(o),a&&clearTimeout(a)}}}var yh=B(()=>{Ct()});function bh(e,t){let s=Vue.ref(!1),n=Vue.ref(""),r=Vue.ref([]),i=Vue.ref(!1),o=Vue.ref(""),a=g=>{i.value=!0,o.value="",e.sendWsMessage({type:"list_directory",conversationId:"_git_folder_picker",agentId:e.currentAgent,dirPath:g,workDir:t.value,_clientId:e.clientId})};return{folderPickerOpen:s,folderPickerPath:n,folderPickerEntries:r,folderPickerLoading:i,folderPickerSelected:o,openFolderPicker:()=>{s.value=!0,o.value="",i.value=!0;let g=t.value||"";n.value=g,r.value=[],e.sendWsMessage({type:"list_directory",conversationId:"_git_folder_picker",agentId:e.currentAgent,dirPath:g,workDir:t.value,_clientId:e.clientId})},folderPickerNavigateUp:()=>{if(!n.value)return;let g=n.value.includes("\\"),v=g?"\\":"/",m=n.value.replace(/[/\\]$/,"").split(/[/\\]/);if(m.pop(),m.length===0)n.value="",a("");else if(g&&m.length===1&&/^[A-Za-z]:$/.test(m[0]))n.value=m[0]+"\\",a(m[0]+"\\");else{let b=m.join(v);n.value=b,a(b)}},folderPickerSelectItem:g=>{o.value=g.name},folderPickerEnter:g=>{let v=n.value.includes("\\")||/^[A-Z]:/.test(g.name)?"\\":"/",m;n.value?m=n.value.replace(/[/\\]$/,"")+v+g.name:m=g.name+(g.name.endsWith("\\")?"":"\\"),n.value=m,a(m)},confirmFolderPicker:(g,v)=>{let m=n.value;if(m){if(o.value){let b=m.includes("\\")?"\\":"/";m=m.replace(/[/\\]$/,"")+b+o.value}g.value=m,s.value=!1,v()}},handleDirectoryListing:g=>g.conversationId!=="_git_folder_picker"?!1:(i.value=!1,r.value=(g.entries||[]).filter(v=>v.type==="directory").sort((v,m)=>v.name.localeCompare(m.name)),g.dirPath!=null&&(n.value=g.dirPath),!0)}}var wh=B(()=>{});var kh,Sh=B(()=>{Rc();gh();mh();yh();wh();ws();kh={name:"GitStatusTab",props:{routeKey:{type:String,required:!0},runtimeProvider:{type:String,required:!0},agentId:{type:String,required:!0},sessionId:{type:String,required:!0},conversationId:{type:String,required:!0},workDir:{type:String,default:""},workspaceGeneration:{type:String,required:!0}},template:`
2049
2049
  <div class="git-status-tab git-three-col">
@@ -2289,7 +2289,7 @@ ${String(e||"").trim()}
2289
2289
  </div>
2290
2290
  </div>
2291
2291
  </div>
2292
- `,setup(e){let t=Xn(Pinia.useChatStore(),e),s=Vue.inject("t"),n=se=>se.split(/[/\\]/).pop()||se,r=se=>{let E=se.split(/[/\\]/);return E.pop(),E.join("/")},i=se=>Zo(n(se)),o=Vue.ref(null),a=Vue.reactive({staged:!1,modified:!1,untracked:!1}),l=se=>{a[se]=!a[se]},c=Vue.ref(!1),d=Vue.ref(""),u=Vue.ref(null),p=Vue.ref([]),f=Vue.computed(()=>t.effectiveWorkDir||""),g=Vue.ref(""),v=Vue.computed(()=>g.value.trim()||f.value),m=Vue.ref(null),b=Vue.ref(!1),h=Vue.ref(!1),w=Vue.ref(""),I=Vue.ref(null),y=Vue.ref([]),k=Vue.ref(null),_=Vue.ref(!0),A=Vue.ref(!1),Q=Vue.ref(""),H=Vue.ref(null),z=Vue.ref(0),$=Vue.ref(0),te=se=>se==null||se===""?"":fh(se,m.value||""),F=Vue.ref(parseInt(localStorage.getItem("gitDiffFontSize"))||12),S=se=>{F.value=Math.max(8,Math.min(24,se)),localStorage.setItem("gitDiffFontSize",F.value.toString())},M=()=>S(F.value+1),L=()=>S(F.value-1),T=se=>{se.deltaY<0?M():se.deltaY>0&&L()},D=Vue.computed(()=>{let se=y.value;if(!se||se.length===0)return[];let E=se.length,ae=[],ue=0;for(;ue<E;){let j=se[ue];if(j.type==="addition"||j.type==="deletion"||j.type==="modification"){let J=j.type==="modification"?"modification":j.type,R=ue;for(;ue<E&&(se[ue].type===J||se[ue].type==="modification"&&J!=="modification");)ue++;let ee=ue-R;ae.push({type:J,top:R/E*100,height:Math.max(ee/E*100,.5)})}else ue++}return ae}),U=se=>{let E=o.value;if(!E)return;let ae=se.currentTarget.getBoundingClientRect(),ue=(se.clientY-ae.top)/ae.height;E.scrollTop=ue*(E.scrollHeight-E.clientHeight)},X=Vue.computed(()=>p.value.filter(se=>se.indexStatus!==" "&&se.indexStatus!=="?")),G=Vue.computed(()=>p.value.filter(se=>se.workTreeStatus==="M"||se.workTreeStatus==="D")),ce=Vue.computed(()=>p.value.filter(se=>se.indexStatus==="?"&&se.workTreeStatus==="?")),be=vh(t,{effectiveGitWorkDir:v,gitOperating:A,gitOpFeedback:H,commitMessage:Q}),N=()=>be.loadGitStatus(c,d),Z=()=>{N()},K=bh(t,v),oe=se=>Jo(se),he=()=>K.confirmFolderPicker(g,N),xe=(se,E)=>{m.value=se.path,b.value=E,h.value=!0,w.value="",I.value=null,y.value=[],k.value=null;let ae=se.indexStatus==="?"&&se.workTreeStatus==="?";t.sendWsMessage({type:"git_diff",conversationId:t.currentConversation||"_explorer",agentId:t.currentAgent,workDir:v.value,filePath:se.path,staged:E,untracked:ae,fullFile:_.value,_clientId:t.clientId})},_e=()=>{if(_.value=!_.value,m.value){let se=p.value.find(E=>E.path===m.value);se&&xe(se,b.value)}},ge=se=>{let E=se.detail;if(!(!E||!Zn(E,e.routeKey,e.workspaceGeneration)))switch(E.type){case"directory_listing":{ss(E,e.routeKey)==="git-folder-picker"&&K.handleDirectoryListing({...E,conversationId:"_git_folder_picker"});break}case"git_status_result":{if(e.routeKey&&ss(E,e.routeKey)!=="main")return;if(c.value=!1,E.error){d.value=E.error,u.value=null,p.value=[];return}if(d.value="",u.value=E.branch||"HEAD",p.value=E.files||[],z.value=E.ahead||0,$.value=E.behind||0,m.value){let ae=p.value.find(ue=>ue.path===m.value);if(ae){let ue=ae.indexStatus!==" "&&ae.indexStatus!=="?";b.value=ue}else m.value=null,I.value=null,y.value=[],k.value=null}break}case"git_diff_result":{if(e.routeKey&&ss(E,e.routeKey)!=="main")return;if(h.value=!1,E.error){w.value=E.error;return}w.value="";let ae=hh(E.diff,E.newFileContent,s);k.value=ae.stats,y.value=ae.lines,I.value=ae.content;break}case"git_op_result":{if(e.routeKey&&ss(E,e.routeKey)!=="main")return;be.handleGitOpResult(E,N);break}}};Vue.watch(()=>t.currentAgent,()=>{u.value=null,p.value=[],d.value="",m.value=null,I.value=null,t.currentAgent&&Vue.nextTick(()=>N())}),Vue.watch(()=>t.currentConversation,()=>{t.currentAgent&&(m.value=null,I.value=null,y.value=[],k.value=null,Vue.nextTick(()=>N()))});let ne=()=>N();return Vue.onMounted(()=>{window.addEventListener("workbench-message",ge),t.currentAgent&&N()}),Vue.onUnmounted(()=>{window.removeEventListener("workbench-message",ge),be.cleanup()}),{store:t,getFileName:n,getDirName:r,getFileIconHtml:i,hlLine:te,collapsedGroups:a,toggleGroup:l,gitLoading:c,gitError:d,gitBranch:u,gitFiles:p,gitWorkDir:g,defaultWorkDir:f,changeGitWorkDir:Z,stagedFiles:X,modifiedFiles:G,untrackedFiles:ce,selectedGitFile:m,selectedStaged:b,diffLoading:h,diffError:w,diffContent:I,diffLines:y,diffStats:k,diffFullFile:_,toggleDiffMode:_e,scrollMarkers:D,diffScrollContainer:o,onMarkerClick:U,fontSize:F,zoomIn:M,zoomOut:L,onWheel:T,gitOperating:A,commitMessage:Q,gitOpFeedback:H,gitAhead:z,gitBehind:$,stageFile:be.stageFile,unstageFile:be.unstageFile,discardFile:be.discardFile,stageAll:be.stageAll,unstageAll:be.unstageAll,commitChanges:be.commitChanges,pushChanges:be.pushChanges,selectGitFile:xe,refresh:ne,folderPickerOpen:K.folderPickerOpen,folderPickerPath:K.folderPickerPath,folderPickerEntries:K.folderPickerEntries,folderPickerLoading:K.folderPickerLoading,folderPickerSelected:K.folderPickerSelected,getFolderIcon:oe,openFolderPicker:K.openFolderPicker,folderPickerNavigateUp:K.folderPickerNavigateUp,folderPickerSelectItem:K.folderPickerSelectItem,folderPickerEnter:K.folderPickerEnter,confirmFolderPicker:he}}}});function Ih(e){let t=Vue.ref(!1),s=Vue.ref(!1),n=Vue.ref(""),r=Vue.ref(""),i=Vue.ref(!1),o=Vue.ref(!1),a=Vue.ref(0),l=Vue.ref(-1),c=Vue.ref(null),d=Vue.ref(null),u=[],p=[],f=()=>{let H=e.value?.cmInstance;if(!H)return;let $=H.getWrapperElement().querySelector(".cm-find-scrollbar-annotations");$&&$.remove()},g=()=>{let H=e.value?.cmInstance;if(!H||p.length===0)return;f();let z=H.getWrapperElement();if(!z.querySelector(".CodeMirror-vscrollbar"))return;let te=H.lineCount();if(te===0)return;let F=document.createElement("div");F.className="cm-find-scrollbar-annotations";for(let S of p){let M=S.from.line/te*100,L=document.createElement("div");L.className="cm-find-scrollbar-tick",L.style.top=M+"%",F.appendChild(L)}z.appendChild(F)},v=()=>{for(let H of u)try{H.clear()}catch{}u=[],p=[],a.value=0,l.value=-1,f()},m=H=>{let z=e.value?.cmInstance;if(!z||!p[H])return;for(let te=0;te<u.length;te++){if(!u[te])continue;let F=u[te].find();F&&(u[te].clear(),u[te]=z.markText(F.from,F.to,{className:"cm-find-highlight"}))}let $=p[H];if(u[H]){let te=u[H].find();te&&(u[H].clear(),u[H]=z.markText(te.from,te.to,{className:"cm-find-highlight cm-find-current"}))}setTimeout(()=>{z.scrollIntoView({from:$.from,to:$.to},100)},0)},b=()=>{v();let H=e.value?.cmInstance;if(!H||!n.value)return;let z=n.value;if(z.length<3)return;let $=H.getValue(),te=i.value,F=o.value,S=[];try{if(F){let M=te?"g":"gi",L=new RegExp(z,M),T;for(;(T=L.exec($))!==null;){if(T[0].length===0){L.lastIndex++;continue}let D=H.posFromIndex(T.index),U=H.posFromIndex(T.index+T[0].length);if(S.push({from:D,to:U}),S.length>1e4)break}}else{let M=te?z:z.toLowerCase(),L=te?$:$.toLowerCase(),T=0;for(;(T=L.indexOf(M,T))!==-1;){let D=H.posFromIndex(T),U=H.posFromIndex(T+z.length);if(S.push({from:D,to:U}),T+=z.length,S.length>1e4)break}}}catch{return}p=S,a.value=S.length;for(let M of S)u.push(H.markText(M.from,M.to,{className:"cm-find-highlight"}));if(S.length>0){let M=H.getCursor(),L=0;for(let T=0;T<S.length;T++){if(CodeMirror.cmpPos(S[T].from,M)>=0){L=T;break}T===S.length-1&&(L=0)}l.value=L,m(L)}g()};return{findBarVisible:t,replaceBarVisible:s,findQuery:n,replaceQuery:r,findCaseSensitive:i,findUseRegex:o,findMatchCount:a,findMatchIndex:l,findInputRef:c,replaceInputRef:d,clearFindMarkers:v,performFind:b,onFindInput:()=>{b()},findNext:()=>{if(p.length===0)return;let H=(l.value+1)%p.length;l.value=H,m(H)},findPrev:()=>{if(p.length===0)return;let H=(l.value-1+p.length)%p.length;l.value=H,m(H)},openFindBar:(H=!1)=>{t.value=!0,s.value=H;let z=e.value?.cmInstance;if(z){let $=z.getSelection();$&&(n.value=$)}Vue.nextTick(()=>{c.value?.focus(),c.value?.select(),n.value&&b()})},closeFindBar:()=>{v(),t.value=!1,s.value=!1;let H=e.value?.cmInstance;H&&H.focus()},toggleReplaceBar:()=>{s.value=!s.value,s.value&&Vue.nextTick(()=>d.value?.focus())},replaceOne:()=>{let H=e.value?.cmInstance;if(!H||p.length===0||l.value<0)return;let z=p[l.value];H.replaceRange(r.value,z.from,z.to),b()},replaceAll:()=>{let H=e.value?.cmInstance;!H||p.length===0||(H.operation(()=>{for(let z=p.length-1;z>=0;z--)H.replaceRange(r.value,p[z].from,p[z].to)}),b())}}}var Ch=B(()=>{});function Gs(e){let t=e.lastIndexOf(".");if(t<0)return"text";let s=e.substring(t).toLowerCase();return Ak.has(s)?"office":xk.has(s)?"pdf":Tk.has(s)?"image":Mk.has(s)?"video":"text"}function Rs(e){let t=e.lastIndexOf(".");return t<0?!1:Pk.has(e.substring(t).toLowerCase())}function Rk(e){let t=e.split(".").pop()?.toLowerCase();return{js:"javascript",mjs:"javascript",jsx:"javascript",ts:{name:"javascript",typescript:!0},tsx:{name:"javascript",typescript:!0},json:{name:"javascript",json:!0},py:"python",html:"htmlmixed",htm:"htmlmixed",vue:"htmlmixed",xml:"xml",svg:"xml",css:"css",scss:"css",less:"css",sh:"shell",bash:"shell",zsh:"shell",c:"text/x-csrc",h:"text/x-csrc",cpp:"text/x-c++src",hpp:"text/x-c++src",cs:"text/x-csharp",java:"text/x-java",md:"markdown",markdown:"markdown"}[t]||"text/plain"}function Ah(e,{activeFile:t,editorContainer:s,fontSize:n,clearFindMarkers:r,openFindBar:i,saveFile:o}){let a=Vue.ref(""),l=Vue.reactive({}),c=()=>{},d=()=>{},u=({openQuickOpen:h,openGoToLine:w})=>{c=h,d=w},p=(h,w=0)=>{if(!s.value){w<20&&setTimeout(()=>p(h,w+1),100);return}if(!h)return;if(s.value.innerHTML="",typeof CodeMirror>"u"){let k=document.createElement("textarea");k.value=h.content||"",k.style.cssText="width:100%;height:100%;border:none;outline:none;resize:none;padding:12px;font-family:monospace;font-size:12px;background:var(--bg-main);color:var(--text-main);white-space:pre;tab-size:4;",k.spellcheck=!1,k.addEventListener("input",()=>{h.content=k.value,h.isDirty=k.value!==h.originalContent}),k.addEventListener("keydown",_=>{(_.ctrlKey||_.metaKey)&&_.key==="s"&&(_.preventDefault(),o())}),s.value.appendChild(k),a.value="";return}let y=document.documentElement.getAttribute("data-theme")==="dark"?"material-darker":"default";try{let k=CodeMirror(s.value,{value:h.content||"",mode:Rk(h.name),theme:y,lineNumbers:!0,tabSize:4,indentWithTabs:!1,lineWrapping:!1,readOnly:!1,extraKeys:{"Ctrl-S":()=>o(),"Cmd-S":()=>o(),"Ctrl-P":()=>c(),"Cmd-P":()=>c(),"Ctrl-G":()=>d(),"Cmd-G":()=>d(),"Ctrl-F":()=>i(!1),"Cmd-F":()=>i(!1),"Ctrl-R":()=>i(!0),"Cmd-R":()=>i(!0),"Ctrl-H":()=>i(!0),"Cmd-H":()=>i(!0)}});k.on("change",()=>{let A=k.getValue();h.content=A,h.isDirty=A!==h.originalContent}),h.cmInstance=k,k.getWrapperElement().style.fontSize=n.value+"px";let _=e.currentConversation;_&&l[_]?.[h.path]&&k.setHistory(l[_][h.path]),Vue.nextTick(()=>{k.refresh(),setTimeout(()=>k.refresh(),200)}),a.value=""}catch(k){a.value=`Editor error: ${k.message}`}};return{debugStatus:a,undoHistoryMap:l,createEditor:p,destroyEditor:()=>{r();let h=t.value;h?.cmInstance&&(h.cmInstance.toTextArea&&h.cmInstance.toTextArea(),h.cmInstance=null),s.value&&(s.value.innerHTML="")},setKeyBindings:u,saveCurrentUndoHistory:()=>{let h=e.currentConversation;if(!h)return;let w=t.value;w?.cmInstance&&(l[h]||(l[h]={}),l[h][w.path]=w.cmInstance.getHistory())},saveAllUndoHistory:h=>{if(!h)return;let w=t.value;w?.cmInstance&&(l[h]||(l[h]={}),l[h][w.path]=w.cmInstance.getHistory())},cleanupUndoHistory:(h,w)=>{h&&l[h]&&delete l[h][w]},deleteConversationHistory:h=>{delete l[h]}}}var Ak,xk,Tk,Mk,Pk,ur=B(()=>{Ak=new Set([".docx",".xlsx",".xls",".pptx",".ppt"]),xk=new Set([".pdf"]),Tk=new Set([".png",".jpg",".jpeg",".gif",".webp",".bmp",".ico"]),Mk=new Set([".mp4",".m4v",".webm",".ogv",".ogg",".mov"]),Pk=new Set([".md",".markdown",".mdx"])});function xh(e,t){let{getEffectiveWorkDir:s,treePath:n}=t,r=Vue.reactive(new Set),i=Vue.ref(-1),o=Vue.ref(!1),a=Vue.ref(null),l=null,c=null,d=Vue.ref(!1),u=Vue.ref(""),p=Vue.ref("file"),f=Vue.ref(null),g=Vue.ref(!1),v=Vue.ref(""),m=Vue.ref(null),b=Vue.reactive({visible:!1,x:0,y:0,entry:null}),h=Vue.ref(!1),w=Vue.ref(""),I=Vue.ref(null),y=new Map,k=Vue.reactive({dragging:null,dropTarget:null}),_=Vue.ref(!1),A=(j,J)=>{l&&clearTimeout(l),a.value={ok:j,message:J},l=setTimeout(()=>{a.value=null},4e3)},Q=()=>{o.value=!0,c&&clearTimeout(c),c=setTimeout(()=>{o.value&&(o.value=!1,A(!1,"Operation timed out"))},15e3)},H=j=>{r.has(j)?r.delete(j):r.add(j)},z=()=>{r.clear(),i.value=-1},$=j=>{p.value=j,u.value="",d.value=!0,Vue.nextTick(()=>f.value?.focus())},te=()=>{let j=u.value.trim();if(!j)return;d.value=!1;let J=n.value||s();if(!J)return;let R=J.includes("\\")?"\\":"/",ee=J.replace(/[/\\]$/,"")+R+j;Q(),e.sendWsMessage({type:"create_file",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,filePath:ee,isDirectory:p.value==="directory",workDir:s(),_clientId:e.clientId})},F=async(j,J)=>{let R=j.path.split("/").pop();await Fe(J("files.deleteConfirm",{name:R})+(j.type==="directory"?J("files.deleteDirHint"):""),{destructive:!0})&&(Q(),e.sendWsMessage({type:"delete_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[j.path],workDir:s(),_clientId:e.clientId}))},S=async j=>{let J=r.size;J!==0&&await Fe(j("files.deleteSelectedConfirm",{count:J}),{destructive:!0})&&(Q(),e.sendWsMessage({type:"delete_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[...r],workDir:s(),_clientId:e.clientId}))},M=()=>{v.value=n.value||s()||"",g.value=!0,Vue.nextTick(()=>m.value?.focus())},L=()=>{let j=v.value.trim();!j||r.size===0||(g.value=!1,Q(),e.sendWsMessage({type:"move_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[...r],destination:j,workDir:s(),_clientId:e.clientId}))},T=(j,J)=>{let V=j.clientX,P=j.clientY;V+180>window.innerWidth&&(V=window.innerWidth-180),P+240>window.innerHeight&&(P=window.innerHeight-240),b.entry=J,b.x=V,b.y=P,b.visible=!0},D=()=>{b.visible=!1},U=()=>{let j=b.entry;D(),j&&(w.value=j.name,h.value=!0,Vue.nextTick(()=>{let J=I.value;if(J)if(J.focus(),j.type==="file"){let R=j.name.lastIndexOf(".");R>0?J.setSelectionRange(0,R):J.select()}else J.select()}))},X=()=>{let j=b.entry,J=w.value.trim();if(!J||!j||J===j.name){h.value=!1;return}h.value=!1;let R=j.path.replace(/\/$/,"").split("/");R.pop();let ee=R.join("/")||"/";Q(),e.sendWsMessage({type:"move_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[j.path],destination:ee,newName:J,workDir:s(),_clientId:e.clientId})},G=()=>{let j=b.entry;if(D(),!j)return;let J=j.path.replace(/\/$/,"").split("/");J.pop();let R=J.join("/")||"/";Q(),e.sendWsMessage({type:"copy_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[j.path],destination:R,workDir:s(),_clientId:e.clientId})},ce=()=>{let j=b.entry;D(),j&&(r.clear(),r.add(j.path),M())},be=j=>{let J=b.entry;D(),J&&F(J,j)},N=j=>{if(!j?.path)return;let J=`file-download-${Date.now()}-${Math.random().toString(36).slice(2)}`;y.set(J,j.path),e.sendWsMessage({type:Gs(j.path)==="video"?"video_metadata":"read_file",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,requestId:J,download:!0,filePath:j.path,workDir:s(),_clientId:e.clientId})};return{selectedPaths:r,lastClickedIndex:i,fileOperating:o,fileOpFeedback:a,newFileDialogVisible:d,newFileName:u,newFileType:p,newFileInput:f,moveDialogVisible:g,moveDestination:v,moveDestInput:m,contextMenu:b,renameDialogVisible:h,renameNewName:w,renameInput:I,dragState:k,externalDropActive:_,showFileOpFeedback:A,toggleSelection:H,clearSelection:z,showNewFileDialog:$,confirmNewFile:te,deleteSingleFile:F,deleteSelected:S,openMoveDialog:M,confirmMove:L,showContextMenu:T,hideContextMenu:D,ctxRename:U,confirmRename:X,ctxCopy:G,ctxMoveTo:ce,ctxDelete:be,ctxDownload:()=>{let j=b.entry;D(),!(!j||j.type!=="file")&&N(j)},downloadFile:N,onDragStart:(j,J)=>{k.dragging=J,j.dataTransfer.setData("text/plain",J.path),j.dataTransfer.effectAllowed="move"},onDragOver:(j,J)=>{if(!k.dragging&&j.dataTransfer.types.includes("Files")){J.type==="directory"&&(j.dataTransfer.dropEffect="copy",k.dropTarget=J.path);return}!k.dragging||J.type!=="directory"||J.path!==k.dragging.path&&(J.path.startsWith(k.dragging.path+"/")||(j.dataTransfer.dropEffect="move",k.dropTarget=J.path))},onDragLeave:j=>{let J=j.relatedTarget;J&&j.currentTarget.contains(J)||(k.dropTarget=null)},onDrop:(j,J,R)=>{if(k.dropTarget=null,!k.dragging&&j.dataTransfer.files.length>0&&J.type==="directory"){R(j.dataTransfer.files,J.path);return}if(!k.dragging||J.type!=="directory"){k.dragging=null;return}if(J.path===k.dragging.path){k.dragging=null;return}Q(),e.sendWsMessage({type:"move_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[k.dragging.path],destination:J.path,workDir:s(),_clientId:e.clientId}),k.dragging=null},onTreeDragOver:j=>{k.dragging||j.dataTransfer.types.includes("Files")&&(j.dataTransfer.dropEffect="copy",_.value=!0)},onTreeDragLeave:j=>{let J=j.relatedTarget;J&&j.currentTarget.contains(J)||(_.value=!1)},onTreeDrop:(j,J,R)=>{if(_.value=!1,!k.dragging&&j.dataTransfer.files.length>0){let ee=n.value||J||s();R(j.dataTransfer.files,ee)}},handleExternalFileDrop:async(j,J)=>{if(!J)return;let R=[],ee=[];for(let V of j)ee.push(new Promise(P=>{let re=new FileReader;re.onload=()=>{let we=btoa(new Uint8Array(re.result).reduce((Ve,Be)=>Ve+String.fromCharCode(Be),""));R.push({name:V.name,data:we}),P()},re.onerror=()=>P(),re.readAsArrayBuffer(V)}));await Promise.all(ee),R.length!==0&&(o.value=!0,c&&clearTimeout(c),c=setTimeout(()=>{o.value&&(o.value=!1,A(!1,"Upload timed out"))},3e4),e.sendWsMessage({type:"upload_to_dir",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,files:R,dirPath:J,workDir:s(),_clientId:e.clientId}))},handleFileOpResult:(j,J,R)=>{o.value=!1,c&&(clearTimeout(c),c=null),A(j.success,j.success?j.message:j.error||"Operation failed"),j.success&&(R&&J(R),(j.operation==="delete"||j.operation==="move")&&(r.clear(),i.value=-1))},takePendingDownload:j=>{if(!j||!y.has(j))return null;let J=y.get(j);return y.delete(j),J},cleanup:()=>{l&&clearTimeout(l),c&&clearTimeout(c),y.clear()}}}var Th=B(()=>{Ct();ur()});function Mh(e,{getEffectiveWorkDir:t,normalizePath:s,selectedPaths:n,lastClickedIndex:r,openFileInTab:i,clearSelection:o}){let a=Vue.ref(""),l=Vue.ref(""),c=Vue.reactive({}),d=new Map,u=0,p=S=>{let M=`files-tree-${++u}`;return d.set(S,M),M},f=Vue.ref(!1),g=Vue.ref(null),v=Vue.computed(()=>{if(!l.value)return"EXPLORER";let S=l.value.replace(/[\\/]+$/,"").split(/[\\/]/);return(S[S.length-1]||l.value).toUpperCase()}),m=()=>{f.value=!0,Vue.nextTick(()=>g.value?.focus())},b=()=>{f.value=!1,y()},h=()=>{f.value=!1},w=Vue.computed(()=>{let S=[],M=(L,T)=>{let D=c[L];if(!(!D||!D.entries))for(let U of D.entries)S.push({...U,depth:T}),U.type==="directory"&&c[U.path]?.expanded&&M(U.path,T+1)};return l.value&&c[l.value]?.expanded&&M(l.value,0),S}),I=S=>{let M=s(S);c[M]?c[M].loading=!0:c[M]={entries:[],expanded:!0,loaded:!1,loading:!0},e.sendWsMessage({type:"list_directory",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,requestId:p(M),dirPath:S,workDir:t(),_clientId:e.clientId})},y=()=>{let S=a.value.trim();if(!S)return;let M=s(S);l.value=M,Object.keys(c).forEach(L=>delete c[L]),d.clear(),c[M]={entries:[],expanded:!0,loaded:!1,loading:!0},e.sendWsMessage({type:"list_directory",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,requestId:p(M),dirPath:S,workDir:t(),_clientId:e.clientId})},k=S=>{let M=s(S),L=c[M];L?L.loaded?L.expanded=!L.expanded:(L.expanded=!0,I(S)):(c[M]={entries:[],expanded:!0,loaded:!1,loading:!1},I(S))},_=(S,M)=>{let L=w.value,T=L.findIndex(D=>D.path===S.path);if(M&&(M.shiftKey||M.ctrlKey||M.metaKey)){if(M.shiftKey&&r.value>=0&&T>=0){let D=Math.min(r.value,T),U=Math.max(r.value,T);!M.ctrlKey&&!M.metaKey&&n.clear();for(let X=D;X<=U;X++)n.add(L[X].path)}else n.has(S.path)?n.delete(S.path):n.add(S.path);r.value=T;return}n.size>0&&(n.clear(),r.value=-1),S.type==="directory"?k(S.path):i(S.path,S.name),r.value=T},A=S=>{let M=`${S.replace(/\/$/,"")}/`;for(let L of Object.keys(c))(L===S||L.startsWith(M))&&delete c[L];for(let L of d.keys())(L===S||L.startsWith(M))&&d.delete(L);for(let L of Object.values(c))L?.entries&&(L.entries=L.entries.filter(T=>T.path!==S))},Q=S=>typeof S=="string"&&/(?:ENOENT|not\s+(?:exist|found)|no such file)/i.test(S),H=S=>S===l.value?!0:Object.values(c).some(M=>M?.entries?.some(L=>L.type==="directory"&&L.path===S)),z=S=>{let M=s(S.dirPath),L=d.get(M);if(L&&S.requestId!==L||!L&&S.requestId)return;if(L&&d.delete(M),!H(M)){A(M);return}if(S.error){if(Q(S.error))if(M===l.value){for(let G of c[M]?.entries||[])G.type==="directory"&&A(G.path);c[M]&&(c[M].entries=[],c[M].loaded=!0,c[M].loading=!1)}else A(M);else c[M]&&(c[M].loading=!1);return}let T=(S.entries||[]).sort((G,ce)=>G.type===ce.type?G.name.localeCompare(ce.name):G.type==="directory"?-1:1),D=M.replace(/\/$/,""),U=T.map(G=>({...G,path:D+"/"+G.name})),X=new Set(U.filter(G=>G.type==="directory").map(G=>G.path));for(let G of c[M]?.entries||[])G.type==="directory"&&!X.has(G.path)&&A(G.path);c[M]?(c[M].entries=U,c[M].loaded=!0,c[M].loading=!1):c[M]={entries:U,expanded:!0,loaded:!0,loading:!1},M===l.value&&(a.value=S.dirPath)},$=()=>{Object.keys(c).forEach(S=>delete c[S]),d.clear()};return{treePath:a,treeRootPath:l,treeNodes:c,flattenedTree:w,editingTreePath:f,treePathInputRef:g,rootFolderName:v,startTreePathEdit:m,confirmTreePath:b,cancelTreePathEdit:h,loadTreeDirectory:I,loadRootDirectory:y,toggleDirectory:k,onTreeItemClick:_,handleDirectoryListing:z,clearTreeNodes:$,initFileBrowser:()=>{let S=t();if(S){let M=s(S);a.value=S,l.value=M,$(),I(S)}},refresh:()=>{if(!l.value)return;let S=Object.entries(c).filter(([,M])=>M?.expanded).map(([M])=>M);S.includes(l.value)||S.unshift(l.value);for(let M of S)I(M)}}}var Ph=B(()=>{});function Rh(e,{editorContainer:t,createEditor:s,t:n}){let r=Vue.ref(!0),i=Vue.ref(null),o=Vue.ref(null),a=Vue.computed(()=>{let m=e.value;return!!(m&&Rs(m.name))}),l=Vue.computed(()=>{let m=e.value;if(!m||!Rs(m.name)||m.content==null)return"";try{if(typeof marked<"u")return marked.parse(m.content)}catch{}return"<pre>"+(m.content||"")+"</pre>"});function c(){Ht(i.value)}async function d(){await Ht(i.value)}function u(){r.value=!1,Vue.nextTick(()=>{let m=e.value;m&&t.value&&s(m)})}let p=0,f=new WeakMap,g=(m,b)=>m===b||typeof Vue.toRaw=="function"&&Vue.toRaw(m)===Vue.toRaw(b);return{mdPreviewMode:r,mdPreviewRef:i,officePreviewContainer:o,isActiveMarkdown:a,mdRenderedHtml:l,initMermaid:c,renderMermaidBlocks:d,switchToMdEdit:u,renderOfficeLocal:async m=>{let b=o.value;if(!b||!m._arrayBuffer)return!1;let h=++p;f.set(m,h),m.previewLoading=!0;let w=b.ownerDocument||globalThis.document,I=w?.createElement?w.createElement("div"):{innerHTML:""},y=("."+m.name.split(".").pop()).toLowerCase(),k=null,_=()=>f.get(m)===h,A=()=>h===p&&_()&&g(e.value,m)&&o.value===b;try{if(y===".docx"&&window.docx)await window.docx.renderAsync(m._arrayBuffer,I,null,{className:"docx-preview-content",inWrapper:!0,ignoreWidth:!1,ignoreHeight:!0});else if(y===".xlsx"||y===".xls"){k=XLSX.read(m._arrayBuffer,{type:"array"});let Q=k.SheetNames[0],H=XLSX.utils.sheet_to_html(k.Sheets[Q],{editable:!1});I.innerHTML='<div class="xlsx-sheet-tabs">'+k.SheetNames.map((z,$)=>`<button class="xlsx-sheet-tab${$===0?" active":""}" data-idx="${$}">${z}</button>`).join("")+'</div><div class="xlsx-table-wrap">'+H+"</div>"}else(y===".pptx"||y===".ppt")&&(I.innerHTML='<div class="preview-unsupported">'+(n?n("files.pptxNotSupported"):"PowerPoint preview not supported")+"</div>");return A()?(typeof b.replaceChildren=="function"&&I.childNodes?b.replaceChildren(...I.childNodes):b.innerHTML=I.innerHTML,k&&b.querySelectorAll(".xlsx-sheet-tab").forEach(Q=>{Q.addEventListener("click",()=>{let H=parseInt(Q.dataset.idx),z=k.SheetNames[H],$=XLSX.utils.sheet_to_html(k.Sheets[z],{editable:!1});b.querySelector(".xlsx-table-wrap").innerHTML=$,b.querySelectorAll(".xlsx-sheet-tab").forEach(te=>te.classList.remove("active")),Q.classList.add("active")})}),!0):!1}catch(Q){return _()&&(m.previewError=Q.message),!1}finally{_()&&(m.previewLoading=!1)}}}}var _h=B(()=>{oi();ur()});function Eh(e,{getEffectiveWorkDir:t,treePath:s,openFileInTab:n,normalizePath:r,treeRootPath:i,treeNodes:o,loadTreeDirectory:a}){let l=Vue.ref(""),c=Vue.ref([]),d=Vue.ref(!1),u=null,p=Vue.ref(!1),f=Vue.ref(""),g=Vue.ref([]),v=Vue.ref(0),m=Vue.ref(!1),b=Vue.ref(null),h=null,w=Vue.ref(!1),I=Vue.ref(""),y=Vue.ref(null),k=X=>{!e.currentAgent||!X.trim()||e.sendWsMessage({type:"file_search",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,query:X.trim(),dirPath:s.value||t()||"",_clientId:e.clientId})},_=()=>{if(u&&clearTimeout(u),!l.value.trim()){c.value=[],d.value=!1;return}d.value=!0,u=setTimeout(()=>{k(l.value)},300)},A=()=>{l.value="",c.value=[],d.value=!1},Q=X=>{if(X.type==="directory"){let G=r(X.fullPath);i.value=G,s.value=X.fullPath,Object.keys(o).forEach(ce=>delete o[ce]),a(X.fullPath),A()}else n(X.fullPath,X.name),A()},H=()=>{p.value=!0,f.value="",g.value=[],v.value=0,m.value=!1,Vue.nextTick(()=>b.value?.focus())},z=()=>{p.value=!1,f.value="",g.value=[]},$=()=>{if(h&&clearTimeout(h),!f.value.trim()){g.value=[],m.value=!1;return}m.value=!0,v.value=0,h=setTimeout(()=>{k(f.value)},200)},te=()=>{g.value.length>0&&(v.value=(v.value+1)%g.value.length)},F=()=>{g.value.length>0&&(v.value=(v.value-1+g.value.length)%g.value.length)},S=X=>{X.type!=="directory"&&n(X.fullPath,X.name),z()},M=()=>{let X=g.value[v.value];X&&S(X)},L=()=>{w.value=!0,I.value="",Vue.nextTick(()=>y.value?.focus())},T=()=>{w.value=!1,I.value=""};return{searchQuery:l,searchResults:c,searchLoading:d,onSearchInput:_,clearSearch:A,onSearchResultClick:Q,quickOpenVisible:p,quickOpenQuery:f,quickOpenResults:g,quickOpenSelectedIndex:v,quickOpenLoading:m,quickOpenInput:b,openQuickOpen:H,closeQuickOpen:z,onQuickOpenInput:$,quickOpenSelectNext:te,quickOpenSelectPrev:F,quickOpenConfirm:M,quickOpenOpenFile:S,goToLineVisible:w,goToLineValue:I,goToLineInput:y,openGoToLine:L,closeGoToLine:T,goToLineConfirm:X=>{let G=parseInt(I.value);if(isNaN(G)||G<1)return;let ce=X.value;if(ce?.cmInstance){let be=ce.cmInstance,N=Math.min(G-1,be.lineCount()-1);be.setCursor({line:N,ch:0}),be.scrollIntoView({line:N,ch:0},100),be.focus()}T()},handleFileSearchResult:X=>{let G=X.results||[];p.value?X.query&&X.query.trim()===f.value.trim()&&(g.value=G,m.value=!1,v.value=0):X.query&&X.query.trim()===l.value.trim()&&(c.value=G,d.value=!1)}}}var Dh=B(()=>{});function $h(e,{getEffectiveWorkDir:t,treePath:s,treeRootPath:n,treeNodes:r,normalizePath:i,loadTreeDirectory:o}){let a=Vue.ref(!1),l=Vue.ref(""),c=Vue.ref([]),d=Vue.ref(!1),u=Vue.ref(""),p=()=>{a.value=!0,u.value="",d.value=!0;let w=s.value||t()||"";l.value=w,c.value=[],e.sendWsMessage({type:"list_directory",conversationId:"_folder_picker",agentId:e.currentAgent,dirPath:w,workDir:t(),_clientId:e.clientId})},f=w=>{d.value=!0,u.value="",e.sendWsMessage({type:"list_directory",conversationId:"_folder_picker",agentId:e.currentAgent,dirPath:w,workDir:t(),_clientId:e.clientId})};return{folderPickerOpen:a,folderPickerPath:l,folderPickerEntries:c,folderPickerLoading:d,folderPickerSelected:u,openFolderPicker:p,folderPickerNavigateUp:()=>{if(!l.value)return;let w=l.value.includes("\\"),I=w?"\\":"/",y=l.value.replace(/[/\\]$/,"").split(/[/\\]/);if(y.pop(),y.length===0)l.value="",f("");else if(w&&y.length===1&&/^[A-Za-z]:$/.test(y[0]))l.value=y[0]+"\\",f(y[0]+"\\");else{let k=y.join(I);l.value=k,f(k)}},folderPickerSelectItem:w=>{u.value=w.name},folderPickerEnter:w=>{let I;if(!l.value)I=w.name+(w.name.endsWith("\\")?"":"\\");else{let y=l.value.includes("\\")||/^[A-Z]:/.test(w.name)?"\\":"/";I=l.value.replace(/[/\\]$/,"")+y+w.name}l.value=I,f(I)},confirmFolderPicker:()=>{let w=l.value;if(!w)return;if(u.value){let y=w.includes("\\")?"\\":"/";w=w.replace(/[/\\]$/,"")+y+u.value}s.value=w,a.value=!1;let I=i(w);n.value=I,Object.keys(r).forEach(y=>delete r[y]),r[I]={entries:[],expanded:!0,loaded:!1,loading:!0},e.sendWsMessage({type:"list_directory",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,dirPath:w,workDir:t(),_clientId:e.clientId})},handleFolderPickerListing:w=>{d.value=!1,c.value=(w.entries||[]).filter(I=>I.type==="directory").sort((I,y)=>I.name.localeCompare(y.name)),w.dirPath!=null&&(l.value=w.dirPath)}}}var Lh=B(()=>{});function Oh(e,{normalizePath:t,getEffectiveWorkDir:s,editorContainer:n,createEditor:r,destroyEditor:i,clearFindMarkers:o,saveCurrentUndoHistory:a,saveAllUndoHistory:l,cleanupUndoHistory:c,deleteConversationHistory:d,mdPreviewMode:u,renderOfficeLocal:p,performFind:f,findBarVisible:g,findQuery:v,t:m}){let b=Vue.reactive({}),h=Vue.ref([]),w=Vue.ref(-1),I=Vue.ref(!1),y=Vue.ref(0),k=()=>{y.value+=1},_=0,A=null,Q=()=>{let K=`file-tabs-${Date.now()}-${++_}`;return A={requestId:K,tabRevision:y.value},K},H=K=>{let oe=A;return!oe||K!==oe.requestId?!1:(A=null,y.value===oe.tabRevision)},z=Vue.computed(()=>w.value>=0&&w.value<h.value.length?h.value[w.value]:null),$=Vue.computed(()=>!!z.value?.loading),te=null,F=()=>{te&&clearTimeout(te),te=setTimeout(()=>{e.sendWsMessage({type:"update_file_tabs",openFiles:h.value.map(K=>({path:K.path})),activeIndex:w.value})},500)},S=K=>{K&&(l(K),h.value.length>0?b[K]={files:h.value.map(oe=>({path:oe.path,name:oe.name,content:oe.content,originalContent:oe.originalContent,isDirty:oe.isDirty,fileType:oe.fileType,agentId:oe.agentId,conversationId:oe.conversationId,workDir:oe.workDir})),activeIndex:w.value}:delete b[K],F())},M=K=>{if(i(),!K||!b[K]){h.value.length>0&&k(),h.value=[],w.value=-1;return}let oe=b[K];h.value=oe.files.map(he=>({...he,isDirty:he.isDirty||!1,originalContent:he.originalContent||he.content,cmInstance:null,fileType:he.fileType||Gs(he.name||""),blobUrl:null,previewUrl:null,previewLoading:!1,localPreviewReady:!1,previewError:null,loading:!1,loadError:null})),k(),w.value=oe.activeIndex,Vue.nextTick(()=>{let he=z.value;he&&(!he.fileType||he.fileType==="text")&&n.value&&r(he)})};function L(K,oe,he={}){let xe=t(K),_e=he.agentId||e.currentAgent||null,ge=he.conversationId||e.currentConversation||"_explorer",ne=he.workDir||s(),se=h.value.findIndex(J=>J.path===xe&&(!J.agentId||J.agentId===_e)&&(!J.conversationId||J.conversationId===ge));if(se>=0){w.value!==se&&(o(),a(),w.value=se,Vue.nextTick(()=>{let J=h.value[se];J&&J.content!=null&&(!J.fileType||J.fileType==="text")&&r(J)})),S(e.currentConversation);return}a();let E=oe||xe.split(/[/\\]/).pop(),ae=Gs(E);h.value.push({path:xe,name:E,agentId:_e,conversationId:ge,workDir:ne,content:null,originalContent:null,isDirty:!1,cmInstance:null,fileType:ae,blobUrl:null,previewUrl:null,previewLoading:ae!=="text",localPreviewReady:!1,previewError:null,loading:!0,loadError:null}),k(),w.value=h.value.length-1,ae==="text"&&i(),S(e.currentConversation);let ue=he.requestId||`file-${Date.now()}-${Math.random().toString(36).slice(2)}`,j=h.value[w.value];j&&(j.requestId=ue),e.sendWsMessage({type:ae==="video"?"video_metadata":"read_file",conversationId:ge,agentId:_e,requestId:ue,filePath:K,workDir:ne,_clientId:e.clientId})}let T=K=>{K!==w.value&&(o(),a(),w.value=K,S(e.currentConversation),Vue.nextTick(()=>{let oe=h.value[K];oe&&(!oe.fileType||oe.fileType==="text"?Rs(oe.name)?u.value=!0:oe.content!=null&&n.value&&(r(oe),g.value&&v.value&&Vue.nextTick(()=>f())):oe.fileType==="office"&&oe.localPreviewReady&&Vue.nextTick(()=>p(oe)))}))},D=async(K,{canCommit:oe=()=>!0}={})=>{let he=[...new Set(K)].filter(E=>Number.isInteger(E)&&E>=0&&E<h.value.length).sort((E,ae)=>E-ae);if(he.length===0)return!1;let xe=he.map(E=>h.value[E]),_e=y.value,ge=xe.filter(E=>E?.isDirty);if(ge.length>0){let E=ge.length===1?m("files.unsavedConfirm",{name:ge[0].name}):m("files.unsavedBatchConfirm",{count:ge.length});if(!await Fe(E,{destructive:!0}))return!1}if(y.value!==_e||!oe()||xe.some(E=>!h.value.includes(E)))return!1;let ne=z.value,se=ne;if(xe.includes(ne)){let E=h.value.indexOf(ne);se=h.value.slice(E+1).find(ae=>!xe.includes(ae))||h.value.slice(0,E).reverse().find(ae=>!xe.includes(ae))||null}for(let E of xe)c(E.conversationId||e.currentConversation,E.path),E.blobUrl?.startsWith?.("blob:")&&URL.revokeObjectURL(E.blobUrl);for(let E of xe){let ae=h.value.indexOf(E);ae>=0&&h.value.splice(ae,1)}return k(),h.value.length===0?(w.value=-1,i()):w.value=Math.max(0,h.value.indexOf(se)),S(e.currentConversation),ne!==z.value&&z.value&&Vue.nextTick(()=>{let E=z.value;E&&(!E.fileType||E.fileType==="text")&&E.content!=null&&n.value&&r(E)}),!0},U=(K,oe)=>D([K],oe),X=(K,oe)=>D(h.value.map((he,xe)=>xe).filter(he=>he<K),oe),G=(K,oe)=>D(h.value.map((he,xe)=>xe).filter(he=>he>K),oe),ce=(K,oe)=>D(h.value.map((he,xe)=>xe).filter(he=>he!==K),oe),be=K=>D(h.value.map((oe,he)=>he),K);function N(){let K=z.value;if(!K||!K.isDirty||K.pendingSaveRequestId)return;I.value=!0;let oe=`file-save-${Date.now()}-${Math.random().toString(36).slice(2)}`;K.pendingSaveRequestId=oe,K.pendingSaveContent=K.content,e.sendWsMessage({type:"write_file",conversationId:K.conversationId||e.currentConversation||"_explorer",agentId:K.agentId||e.currentAgent,requestId:oe,filePath:K.path,content:K.content,workDir:K.workDir||s(),_clientId:e.clientId})}return{fileTabsMap:b,openFiles:h,activeFileIndex:w,activeFile:z,fileLoading:$,fileSaving:I,tabRevision:y,bumpTabRevision:k,beginTabsRestoreRequest:Q,acceptTabsRestoreRequest:H,saveTabsState:S,restoreTabsState:M,openFileInTab:L,switchToTab:T,closeFileTab:U,closeFileTabs:D,closeTabsToLeft:X,closeTabsToRight:G,closeOtherTabs:ce,closeAllTabs:be,saveFile:N,handleConversationDeleted:K=>{let{conversationId:oe}=K.detail;oe&&(delete b[oe],d(oe))}}}var Vh=B(()=>{Ct();ur()});function qh({store:e,normalizePath:t,getEffectiveWorkDir:s,openFiles:n,activeFileIndex:r,activeFile:i,fileSaving:o,saveTabsState:a,createEditor:l,openFileInTab:c,bumpTabRevision:d=()=>{},acceptTabsRestoreRequest:u=()=>!1,tree:p,setTreeVisible:f,fp:g,qo:v,ops:m,mdPreviewMode:b,renderOfficeLocal:h,editorContainer:w,t:I=_=>_,routeKey:y="",workspaceGeneration:k=""}){let _=new Map,A=(z,$)=>{if(!z||!Number.isFinite($)||$<=0)return;let te=Math.max(0,Math.floor($)-1),F=()=>{let S=z.cmInstance;return S?(S.setCursor({line:te,ch:0}),S.scrollIntoView({line:te,ch:0},80),S.focus(),!0):!1};Vue.nextTick(()=>{F()||setTimeout(F,180)})};return{handleWorkbenchMessage:z=>{let $=z.detail;if(!$||!Zn($,y,k))return;let te=ss($,y);switch($.type){case"video_metadata":{let F=t($.requestedFilePath||$.filePath),S=m.takePendingDownload($.requestId);if(S){if($.error||!$.videoStream||!$.previewUrl){m.showFileOpFeedback?.(!1,$.error||I("files.videoStreamUnavailable"));return}let L=t(S).split("/").pop()||"video",T=document.createElement("a"),D=new URL($.previewUrl,`${location.protocol}//${location.host}`);D.searchParams.set("download","1"),T.href=D.href,T.download=L,document.body.appendChild(T),T.click(),document.body.removeChild(T);return}let M=n.value.find(L=>L.path===F&&(!L.agentId||!$.agentId||L.agentId===$.agentId)&&(!L.conversationId||!$.conversationId||L.conversationId===$.conversationId));if(!M||M.requestId&&$.requestId&&$.requestId!==M.requestId)return;if(M.loading=!1,$.error){M.loadError=$.error,M.previewLoading=!1,M.previewError=$.error;return}if(!$.videoStream||!$.previewUrl){M.loadError=I("files.videoStreamUnavailable"),M.previewLoading=!1,M.previewError=M.loadError;return}M.fileType="video",M.blobUrl=new URL($.previewUrl,`${location.protocol}//${location.host}`).href,M.previewLoading=!0,M.previewError=null,a(e.currentConversation);break}case"directory_listing":{if(te==="files-folder-picker"){g.handleFolderPickerListing($);return}if(y&&te!=="main")return;p.handleDirectoryListing($);break}case"file_content":{let F=t($.requestedFilePath||$.filePath),S=m.takePendingDownload($.requestId);if(S){if($.error){m.showFileOpFeedback?.(!1,$.error);return}try{let T=t(S).split("/").pop()||"download";if($.binary){let D=`${location.protocol}//${location.host}/api/preview/${$.fileId}?token=${$.previewToken}&download=1`,U=document.createElement("a");U.href=D,U.download=T,document.body.appendChild(U),U.click(),document.body.removeChild(U)}else{let D=new Blob([$.content||""],{type:"application/octet-stream"}),U=URL.createObjectURL(D),X=document.createElement("a");X.href=U,X.download=T,document.body.appendChild(X),X.click(),document.body.removeChild(X),URL.revokeObjectURL(U)}}catch{}return}let M=n.value.find(T=>T.path===F&&(!T.agentId||!$.agentId||T.agentId===$.agentId)&&(!T.conversationId||!$.conversationId||T.conversationId===$.conversationId));if(!M||M.requestId&&$.requestId&&$.requestId!==M.requestId)return;if(M.loading=!1,$.error){let T=$.errorCode==="FILE_PREVIEW_TOO_LARGE"?I("files.previewTooLarge",{size:(($.errorDetails?.sizeBytes||0)/1024/1024).toFixed(1),limit:(($.errorDetails?.limitBytes||20971520)/1024/1024).toFixed(0)}):$.error;M.loadError=T,M.previewLoading=!1,M.previewError=T;return}let L=n.value.indexOf(M);if(L>=0){let T=M;if(T.loadError=null,$.binary){let D=`${location.protocol}//${location.host}`,U=$.previewUrl?new URL($.previewUrl,D).href:`${D}/api/preview/${$.fileId}?token=${$.previewToken}`,X=T.fileType||Gs(T.name);T.fileType=X,X==="pdf"||X==="image"?(T.blobUrl=U,T.previewError=null,T.previewLoading=X==="image"):X==="office"?(localStorage.getItem("officePreviewMode")||"local")==="online"?(T.previewUrl="https://view.officeapps.live.com/op/embed.aspx?src="+encodeURIComponent(U),T.previewLoading=!1):fetch(U).then(ce=>{if(!ce.ok)throw new Error(`Preview request failed (${ce.status})`);return ce.arrayBuffer()}).then(ce=>{T._arrayBuffer=ce,T.localPreviewReady=!0,L===r.value?Vue.nextTick(()=>{L===r.value?h(T):T.previewLoading=!1}):T.previewLoading=!1}).catch(ce=>{T.previewError=ce.message,T.previewLoading=!1}):T.previewLoading=!1,a(e.currentConversation);return}if(T.content=$.content||"",T.originalContent=$.content||"",T.isDirty=!1,a(e.currentConversation),L===r.value){Rs(T.name)&&b.value||Vue.nextTick(()=>{setTimeout(()=>l(T),100)});let D=_.get(F);_.delete(F),A(T,D)}}break}case"file_saved":{let F=t($.requestedFilePath||$.filePath),S=n.value.find(L=>L.path===F&&(!L.agentId||!$.agentId||L.agentId===$.agentId)&&(!L.conversationId||!$.conversationId||L.conversationId===$.conversationId));if(!S?.pendingSaveRequestId||$.requestId&&$.requestId!==S.pendingSaveRequestId)return;o.value=!1;let M=S.pendingSaveContent;if(delete S.pendingSaveRequestId,delete S.pendingSaveContent,$.error)return;S.originalContent=M??S.content,S.isDirty=S.content!==S.originalContent,a(S.conversationId||e.currentConversation);break}case"file_search_result":{v.handleFileSearchResult($);break}case"file_op_result":{m.handleFileOpResult($,p.loadTreeDirectory,p.treeRootPath.value);break}case"file_tabs_restored":{if(!u($.restoreRequestId))return;if($.openFiles?.length>0&&n.value.length===0){let F=$.activeIndex||0,S=$.openFiles.length;d();for(let M of $.openFiles){let L=t(M.path),T=L.split("/").pop(),D=Gs(T),U=e.currentAgent||null,X=e.currentConversation||"_explorer",G=s(),ce=`file-${Date.now()}-${Math.random().toString(36).slice(2)}`;n.value.push({path:L,name:T,agentId:U,conversationId:X,workDir:G,requestId:ce,content:null,originalContent:null,isDirty:!1,cmInstance:null,fileType:D,blobUrl:null,previewUrl:null,previewLoading:D!=="text",localPreviewReady:!1,previewError:null,loading:!0,loadError:null}),e.sendWsMessage({type:D==="video"?"video_metadata":"read_file",conversationId:X,agentId:U,requestId:ce,filePath:M.path,workDir:G,_clientId:e.clientId})}r.value=F>=0&&F<S?F:0}break}}},handleOpenFile:z=>{let{filePath:$,agentId:te=e.currentAgent,conversationId:F=e.currentConversation,workDir:S=s(),workbenchRouteKey:M=y,workspaceGeneration:L=k,hideTree:T=!1,line:D=null}=z.detail||{},U=t($);!U||!te||!F||y&&M!==y||k&&L!==k||(T&&typeof f=="function"&&f(!1),Number.isFinite(D)&&D>0&&_.set(U,D),c(U,U.split("/").pop(),{agentId:te,conversationId:F,workDir:S}),A(i.value,D))}}}var Fh=B(()=>{ur();ws()});function ea(e,t,s=""){let n=t?.currentTarget?.src||t?.target?.src;if(!e?.blobUrl||!n)return!1;let r=e.blobUrl;try{r=new URL(e.blobUrl,`${location.protocol}//${location.host}`).href}catch{}return n!==r?!1:(e.previewLoading=!1,e.previewError=s||null,!0)}function _k({liveStore:e,props:t,tabs:s,isDisposed:n}){let r=d=>d.detail?.routeKey===t.routeKey&&d.detail?.workspaceGeneration===t.workspaceGeneration,i=(d,u)=>{let p=dt(e.activeSessionRoute),f=bn(p,e.effectiveWorkDir);return!n()&&t.routeKey===d&&t.workspaceGeneration===u&&p===d&&f===u};return{isCurrentEvent:r,handleSelectFileItem:d=>{if(!r(d))return;let u=s.openFiles.value.findIndex(p=>p.path===d.detail.path);u>=0&&s.switchToTab(u)},handleCloseFileItem:async d=>{if(!r(d))return;let u=d.detail.routeKey,p=d.detail.workspaceGeneration,f=s.tabRevision.value,g=s.openFiles.value.find(b=>b.path===d.detail.path);if(!g)return;let v=()=>i(u,p)&&s.tabRevision.value===f&&s.openFiles.value.includes(g),m=s.openFiles.value.indexOf(g);m>=0&&await s.closeFileTab(m,{canCommit:v})},handleCloseFileItems:async d=>{if(!r(d)||typeof d.detail.resolve!="function")return;let u=d.detail.routeKey,p=d.detail.workspaceGeneration,f=s.tabRevision.value,g=new Set(Array.isArray(d.detail.paths)?d.detail.paths:[]),v=s.openFiles.value.filter(w=>g.has(w.path)),m=()=>i(u,p)&&s.tabRevision.value===f&&v.every(w=>s.openFiles.value.includes(w)),b=v.map(w=>s.openFiles.value.indexOf(w)).filter(w=>w>=0),h=b.length===0?m():await s.closeFileTabs(b,{canCommit:m});d.detail.resolve(h&&m())},handleCloseFilesCapability:async d=>{if(!r(d)||typeof d.detail.resolve!="function")return;let u=d.detail.routeKey,p=d.detail.workspaceGeneration,f=s.tabRevision.value,g=()=>i(u,p)&&s.tabRevision.value===f,v=s.openFiles.value.length===0?g():await s.closeAllTabs({canCommit:g});d.detail.resolve(v&&g()&&s.openFiles.value.length===0)}}}var Hh,Bh=B(()=>{Rc();Ch();Th();Ph();ur();_h();Dh();Lh();Vh();Fh();ni();ws();Hh={name:"FilesTab",props:{treeInitiallyVisible:{type:Boolean,default:!0},routeKey:{type:String,required:!0},runtimeProvider:{type:String,required:!0},agentId:{type:String,required:!0},sessionId:{type:String,required:!0},conversationId:{type:String,required:!0},workDir:{type:String,default:""},workspaceGeneration:{type:String,required:!0}},template:`
2292
+ `,setup(e){let t=Xn(Pinia.useChatStore(),e),s=Vue.inject("t"),n=se=>se.split(/[/\\]/).pop()||se,r=se=>{let E=se.split(/[/\\]/);return E.pop(),E.join("/")},i=se=>Zo(n(se)),o=Vue.ref(null),a=Vue.reactive({staged:!1,modified:!1,untracked:!1}),l=se=>{a[se]=!a[se]},c=Vue.ref(!1),d=Vue.ref(""),u=Vue.ref(null),p=Vue.ref([]),f=Vue.computed(()=>t.effectiveWorkDir||""),g=Vue.ref(""),v=Vue.computed(()=>g.value.trim()||f.value),m=Vue.ref(null),b=Vue.ref(!1),h=Vue.ref(!1),w=Vue.ref(""),I=Vue.ref(null),y=Vue.ref([]),k=Vue.ref(null),_=Vue.ref(!0),A=Vue.ref(!1),Q=Vue.ref(""),H=Vue.ref(null),z=Vue.ref(0),$=Vue.ref(0),te=se=>se==null||se===""?"":fh(se,m.value||""),F=Vue.ref(parseInt(localStorage.getItem("gitDiffFontSize"))||12),S=se=>{F.value=Math.max(8,Math.min(24,se)),localStorage.setItem("gitDiffFontSize",F.value.toString())},M=()=>S(F.value+1),L=()=>S(F.value-1),T=se=>{se.deltaY<0?M():se.deltaY>0&&L()},D=Vue.computed(()=>{let se=y.value;if(!se||se.length===0)return[];let E=se.length,ae=[],pe=0;for(;pe<E;){let U=se[pe];if(U.type==="addition"||U.type==="deletion"||U.type==="modification"){let J=U.type==="modification"?"modification":U.type,R=pe;for(;pe<E&&(se[pe].type===J||se[pe].type==="modification"&&J!=="modification");)pe++;let ee=pe-R;ae.push({type:J,top:R/E*100,height:Math.max(ee/E*100,.5)})}else pe++}return ae}),j=se=>{let E=o.value;if(!E)return;let ae=se.currentTarget.getBoundingClientRect(),pe=(se.clientY-ae.top)/ae.height;E.scrollTop=pe*(E.scrollHeight-E.clientHeight)},X=Vue.computed(()=>p.value.filter(se=>se.indexStatus!==" "&&se.indexStatus!=="?")),G=Vue.computed(()=>p.value.filter(se=>se.workTreeStatus==="M"||se.workTreeStatus==="D")),ce=Vue.computed(()=>p.value.filter(se=>se.indexStatus==="?"&&se.workTreeStatus==="?")),be=vh(t,{effectiveGitWorkDir:v,gitOperating:A,gitOpFeedback:H,commitMessage:Q}),N=()=>be.loadGitStatus(c,d),Z=()=>{N()},K=bh(t,v),oe=se=>Jo(se),he=()=>K.confirmFolderPicker(g,N),xe=(se,E)=>{m.value=se.path,b.value=E,h.value=!0,w.value="",I.value=null,y.value=[],k.value=null;let ae=se.indexStatus==="?"&&se.workTreeStatus==="?";t.sendWsMessage({type:"git_diff",conversationId:t.currentConversation||"_explorer",agentId:t.currentAgent,workDir:v.value,filePath:se.path,staged:E,untracked:ae,fullFile:_.value,_clientId:t.clientId})},_e=()=>{if(_.value=!_.value,m.value){let se=p.value.find(E=>E.path===m.value);se&&xe(se,b.value)}},ge=se=>{let E=se.detail;if(!(!E||!Zn(E,e.routeKey,e.workspaceGeneration)))switch(E.type){case"directory_listing":{ss(E,e.routeKey)==="git-folder-picker"&&K.handleDirectoryListing({...E,conversationId:"_git_folder_picker"});break}case"git_status_result":{if(e.routeKey&&ss(E,e.routeKey)!=="main")return;if(c.value=!1,E.error){d.value=E.error,u.value=null,p.value=[];return}if(d.value="",u.value=E.branch||"HEAD",p.value=E.files||[],z.value=E.ahead||0,$.value=E.behind||0,m.value){let ae=p.value.find(pe=>pe.path===m.value);if(ae){let pe=ae.indexStatus!==" "&&ae.indexStatus!=="?";b.value=pe}else m.value=null,I.value=null,y.value=[],k.value=null}break}case"git_diff_result":{if(e.routeKey&&ss(E,e.routeKey)!=="main")return;if(h.value=!1,E.error){w.value=E.error;return}w.value="";let ae=hh(E.diff,E.newFileContent,s);k.value=ae.stats,y.value=ae.lines,I.value=ae.content;break}case"git_op_result":{if(e.routeKey&&ss(E,e.routeKey)!=="main")return;be.handleGitOpResult(E,N);break}}};Vue.watch(()=>t.currentAgent,()=>{u.value=null,p.value=[],d.value="",m.value=null,I.value=null,t.currentAgent&&Vue.nextTick(()=>N())}),Vue.watch(()=>t.currentConversation,()=>{t.currentAgent&&(m.value=null,I.value=null,y.value=[],k.value=null,Vue.nextTick(()=>N()))});let ne=()=>N();return Vue.onMounted(()=>{window.addEventListener("workbench-message",ge),t.currentAgent&&N()}),Vue.onUnmounted(()=>{window.removeEventListener("workbench-message",ge),be.cleanup()}),{store:t,getFileName:n,getDirName:r,getFileIconHtml:i,hlLine:te,collapsedGroups:a,toggleGroup:l,gitLoading:c,gitError:d,gitBranch:u,gitFiles:p,gitWorkDir:g,defaultWorkDir:f,changeGitWorkDir:Z,stagedFiles:X,modifiedFiles:G,untrackedFiles:ce,selectedGitFile:m,selectedStaged:b,diffLoading:h,diffError:w,diffContent:I,diffLines:y,diffStats:k,diffFullFile:_,toggleDiffMode:_e,scrollMarkers:D,diffScrollContainer:o,onMarkerClick:j,fontSize:F,zoomIn:M,zoomOut:L,onWheel:T,gitOperating:A,commitMessage:Q,gitOpFeedback:H,gitAhead:z,gitBehind:$,stageFile:be.stageFile,unstageFile:be.unstageFile,discardFile:be.discardFile,stageAll:be.stageAll,unstageAll:be.unstageAll,commitChanges:be.commitChanges,pushChanges:be.pushChanges,selectGitFile:xe,refresh:ne,folderPickerOpen:K.folderPickerOpen,folderPickerPath:K.folderPickerPath,folderPickerEntries:K.folderPickerEntries,folderPickerLoading:K.folderPickerLoading,folderPickerSelected:K.folderPickerSelected,getFolderIcon:oe,openFolderPicker:K.openFolderPicker,folderPickerNavigateUp:K.folderPickerNavigateUp,folderPickerSelectItem:K.folderPickerSelectItem,folderPickerEnter:K.folderPickerEnter,confirmFolderPicker:he}}}});function Ih(e){let t=Vue.ref(!1),s=Vue.ref(!1),n=Vue.ref(""),r=Vue.ref(""),i=Vue.ref(!1),o=Vue.ref(!1),a=Vue.ref(0),l=Vue.ref(-1),c=Vue.ref(null),d=Vue.ref(null),u=[],p=[],f=()=>{let H=e.value?.cmInstance;if(!H)return;let $=H.getWrapperElement().querySelector(".cm-find-scrollbar-annotations");$&&$.remove()},g=()=>{let H=e.value?.cmInstance;if(!H||p.length===0)return;f();let z=H.getWrapperElement();if(!z.querySelector(".CodeMirror-vscrollbar"))return;let te=H.lineCount();if(te===0)return;let F=document.createElement("div");F.className="cm-find-scrollbar-annotations";for(let S of p){let M=S.from.line/te*100,L=document.createElement("div");L.className="cm-find-scrollbar-tick",L.style.top=M+"%",F.appendChild(L)}z.appendChild(F)},v=()=>{for(let H of u)try{H.clear()}catch{}u=[],p=[],a.value=0,l.value=-1,f()},m=H=>{let z=e.value?.cmInstance;if(!z||!p[H])return;for(let te=0;te<u.length;te++){if(!u[te])continue;let F=u[te].find();F&&(u[te].clear(),u[te]=z.markText(F.from,F.to,{className:"cm-find-highlight"}))}let $=p[H];if(u[H]){let te=u[H].find();te&&(u[H].clear(),u[H]=z.markText(te.from,te.to,{className:"cm-find-highlight cm-find-current"}))}setTimeout(()=>{z.scrollIntoView({from:$.from,to:$.to},100)},0)},b=()=>{v();let H=e.value?.cmInstance;if(!H||!n.value)return;let z=n.value;if(z.length<3)return;let $=H.getValue(),te=i.value,F=o.value,S=[];try{if(F){let M=te?"g":"gi",L=new RegExp(z,M),T;for(;(T=L.exec($))!==null;){if(T[0].length===0){L.lastIndex++;continue}let D=H.posFromIndex(T.index),j=H.posFromIndex(T.index+T[0].length);if(S.push({from:D,to:j}),S.length>1e4)break}}else{let M=te?z:z.toLowerCase(),L=te?$:$.toLowerCase(),T=0;for(;(T=L.indexOf(M,T))!==-1;){let D=H.posFromIndex(T),j=H.posFromIndex(T+z.length);if(S.push({from:D,to:j}),T+=z.length,S.length>1e4)break}}}catch{return}p=S,a.value=S.length;for(let M of S)u.push(H.markText(M.from,M.to,{className:"cm-find-highlight"}));if(S.length>0){let M=H.getCursor(),L=0;for(let T=0;T<S.length;T++){if(CodeMirror.cmpPos(S[T].from,M)>=0){L=T;break}T===S.length-1&&(L=0)}l.value=L,m(L)}g()};return{findBarVisible:t,replaceBarVisible:s,findQuery:n,replaceQuery:r,findCaseSensitive:i,findUseRegex:o,findMatchCount:a,findMatchIndex:l,findInputRef:c,replaceInputRef:d,clearFindMarkers:v,performFind:b,onFindInput:()=>{b()},findNext:()=>{if(p.length===0)return;let H=(l.value+1)%p.length;l.value=H,m(H)},findPrev:()=>{if(p.length===0)return;let H=(l.value-1+p.length)%p.length;l.value=H,m(H)},openFindBar:(H=!1)=>{t.value=!0,s.value=H;let z=e.value?.cmInstance;if(z){let $=z.getSelection();$&&(n.value=$)}Vue.nextTick(()=>{c.value?.focus(),c.value?.select(),n.value&&b()})},closeFindBar:()=>{v(),t.value=!1,s.value=!1;let H=e.value?.cmInstance;H&&H.focus()},toggleReplaceBar:()=>{s.value=!s.value,s.value&&Vue.nextTick(()=>d.value?.focus())},replaceOne:()=>{let H=e.value?.cmInstance;if(!H||p.length===0||l.value<0)return;let z=p[l.value];H.replaceRange(r.value,z.from,z.to),b()},replaceAll:()=>{let H=e.value?.cmInstance;!H||p.length===0||(H.operation(()=>{for(let z=p.length-1;z>=0;z--)H.replaceRange(r.value,p[z].from,p[z].to)}),b())}}}var Ch=B(()=>{});function Gs(e){let t=e.lastIndexOf(".");if(t<0)return"text";let s=e.substring(t).toLowerCase();return Ak.has(s)?"office":xk.has(s)?"pdf":Tk.has(s)?"image":Mk.has(s)?"video":"text"}function Rs(e){let t=e.lastIndexOf(".");return t<0?!1:Pk.has(e.substring(t).toLowerCase())}function Rk(e){let t=e.split(".").pop()?.toLowerCase();return{js:"javascript",mjs:"javascript",jsx:"javascript",ts:{name:"javascript",typescript:!0},tsx:{name:"javascript",typescript:!0},json:{name:"javascript",json:!0},py:"python",html:"htmlmixed",htm:"htmlmixed",vue:"htmlmixed",xml:"xml",svg:"xml",css:"css",scss:"css",less:"css",sh:"shell",bash:"shell",zsh:"shell",c:"text/x-csrc",h:"text/x-csrc",cpp:"text/x-c++src",hpp:"text/x-c++src",cs:"text/x-csharp",java:"text/x-java",md:"markdown",markdown:"markdown"}[t]||"text/plain"}function Ah(e,{activeFile:t,editorContainer:s,fontSize:n,clearFindMarkers:r,openFindBar:i,saveFile:o}){let a=Vue.ref(""),l=Vue.reactive({}),c=()=>{},d=()=>{},u=({openQuickOpen:h,openGoToLine:w})=>{c=h,d=w},p=(h,w=0)=>{if(!s.value){w<20&&setTimeout(()=>p(h,w+1),100);return}if(!h)return;if(s.value.innerHTML="",typeof CodeMirror>"u"){let k=document.createElement("textarea");k.value=h.content||"",k.style.cssText="width:100%;height:100%;border:none;outline:none;resize:none;padding:12px;font-family:monospace;font-size:12px;background:var(--bg-main);color:var(--text-main);white-space:pre;tab-size:4;",k.spellcheck=!1,k.addEventListener("input",()=>{h.content=k.value,h.isDirty=k.value!==h.originalContent}),k.addEventListener("keydown",_=>{(_.ctrlKey||_.metaKey)&&_.key==="s"&&(_.preventDefault(),o())}),s.value.appendChild(k),a.value="";return}let y=document.documentElement.getAttribute("data-theme")==="dark"?"material-darker":"default";try{let k=CodeMirror(s.value,{value:h.content||"",mode:Rk(h.name),theme:y,lineNumbers:!0,tabSize:4,indentWithTabs:!1,lineWrapping:!1,readOnly:!1,extraKeys:{"Ctrl-S":()=>o(),"Cmd-S":()=>o(),"Ctrl-P":()=>c(),"Cmd-P":()=>c(),"Ctrl-G":()=>d(),"Cmd-G":()=>d(),"Ctrl-F":()=>i(!1),"Cmd-F":()=>i(!1),"Ctrl-R":()=>i(!0),"Cmd-R":()=>i(!0),"Ctrl-H":()=>i(!0),"Cmd-H":()=>i(!0)}});k.on("change",()=>{let A=k.getValue();h.content=A,h.isDirty=A!==h.originalContent}),h.cmInstance=k,k.getWrapperElement().style.fontSize=n.value+"px";let _=e.currentConversation;_&&l[_]?.[h.path]&&k.setHistory(l[_][h.path]),Vue.nextTick(()=>{k.refresh(),setTimeout(()=>k.refresh(),200)}),a.value=""}catch(k){a.value=`Editor error: ${k.message}`}};return{debugStatus:a,undoHistoryMap:l,createEditor:p,destroyEditor:()=>{r();let h=t.value;h?.cmInstance&&(h.cmInstance.toTextArea&&h.cmInstance.toTextArea(),h.cmInstance=null),s.value&&(s.value.innerHTML="")},setKeyBindings:u,saveCurrentUndoHistory:()=>{let h=e.currentConversation;if(!h)return;let w=t.value;w?.cmInstance&&(l[h]||(l[h]={}),l[h][w.path]=w.cmInstance.getHistory())},saveAllUndoHistory:h=>{if(!h)return;let w=t.value;w?.cmInstance&&(l[h]||(l[h]={}),l[h][w.path]=w.cmInstance.getHistory())},cleanupUndoHistory:(h,w)=>{h&&l[h]&&delete l[h][w]},deleteConversationHistory:h=>{delete l[h]}}}var Ak,xk,Tk,Mk,Pk,ur=B(()=>{Ak=new Set([".docx",".xlsx",".xls",".pptx",".ppt"]),xk=new Set([".pdf"]),Tk=new Set([".png",".jpg",".jpeg",".gif",".webp",".bmp",".ico"]),Mk=new Set([".mp4",".m4v",".webm",".ogv",".ogg",".mov"]),Pk=new Set([".md",".markdown",".mdx"])});function xh(e,t){let{getEffectiveWorkDir:s,treePath:n}=t,r=Vue.reactive(new Set),i=Vue.ref(-1),o=Vue.ref(!1),a=Vue.ref(null),l=null,c=null,d=Vue.ref(!1),u=Vue.ref(""),p=Vue.ref("file"),f=Vue.ref(null),g=Vue.ref(!1),v=Vue.ref(""),m=Vue.ref(null),b=Vue.reactive({visible:!1,x:0,y:0,entry:null}),h=Vue.ref(!1),w=Vue.ref(""),I=Vue.ref(null),y=new Map,k=Vue.reactive({dragging:null,dropTarget:null}),_=Vue.ref(!1),A=(U,J)=>{l&&clearTimeout(l),a.value={ok:U,message:J},l=setTimeout(()=>{a.value=null},4e3)},Q=()=>{o.value=!0,c&&clearTimeout(c),c=setTimeout(()=>{o.value&&(o.value=!1,A(!1,"Operation timed out"))},15e3)},H=U=>{r.has(U)?r.delete(U):r.add(U)},z=()=>{r.clear(),i.value=-1},$=U=>{p.value=U,u.value="",d.value=!0,Vue.nextTick(()=>f.value?.focus())},te=()=>{let U=u.value.trim();if(!U)return;d.value=!1;let J=n.value||s();if(!J)return;let R=J.includes("\\")?"\\":"/",ee=J.replace(/[/\\]$/,"")+R+U;Q(),e.sendWsMessage({type:"create_file",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,filePath:ee,isDirectory:p.value==="directory",workDir:s(),_clientId:e.clientId})},F=async(U,J)=>{let R=U.path.split("/").pop();await Fe(J("files.deleteConfirm",{name:R})+(U.type==="directory"?J("files.deleteDirHint"):""),{destructive:!0})&&(Q(),e.sendWsMessage({type:"delete_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[U.path],workDir:s(),_clientId:e.clientId}))},S=async U=>{let J=r.size;J!==0&&await Fe(U("files.deleteSelectedConfirm",{count:J}),{destructive:!0})&&(Q(),e.sendWsMessage({type:"delete_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[...r],workDir:s(),_clientId:e.clientId}))},M=()=>{v.value=n.value||s()||"",g.value=!0,Vue.nextTick(()=>m.value?.focus())},L=()=>{let U=v.value.trim();!U||r.size===0||(g.value=!1,Q(),e.sendWsMessage({type:"move_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[...r],destination:U,workDir:s(),_clientId:e.clientId}))},T=(U,J)=>{let V=U.clientX,P=U.clientY;V+180>window.innerWidth&&(V=window.innerWidth-180),P+240>window.innerHeight&&(P=window.innerHeight-240),b.entry=J,b.x=V,b.y=P,b.visible=!0},D=()=>{b.visible=!1},j=()=>{let U=b.entry;D(),U&&(w.value=U.name,h.value=!0,Vue.nextTick(()=>{let J=I.value;if(J)if(J.focus(),U.type==="file"){let R=U.name.lastIndexOf(".");R>0?J.setSelectionRange(0,R):J.select()}else J.select()}))},X=()=>{let U=b.entry,J=w.value.trim();if(!J||!U||J===U.name){h.value=!1;return}h.value=!1;let R=U.path.replace(/\/$/,"").split("/");R.pop();let ee=R.join("/")||"/";Q(),e.sendWsMessage({type:"move_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[U.path],destination:ee,newName:J,workDir:s(),_clientId:e.clientId})},G=()=>{let U=b.entry;if(D(),!U)return;let J=U.path.replace(/\/$/,"").split("/");J.pop();let R=J.join("/")||"/";Q(),e.sendWsMessage({type:"copy_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[U.path],destination:R,workDir:s(),_clientId:e.clientId})},ce=()=>{let U=b.entry;D(),U&&(r.clear(),r.add(U.path),M())},be=U=>{let J=b.entry;D(),J&&F(J,U)},N=U=>{if(!U?.path)return;let J=`file-download-${Date.now()}-${Math.random().toString(36).slice(2)}`;y.set(J,U.path),e.sendWsMessage({type:Gs(U.path)==="video"?"video_metadata":"read_file",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,requestId:J,download:!0,filePath:U.path,workDir:s(),_clientId:e.clientId})};return{selectedPaths:r,lastClickedIndex:i,fileOperating:o,fileOpFeedback:a,newFileDialogVisible:d,newFileName:u,newFileType:p,newFileInput:f,moveDialogVisible:g,moveDestination:v,moveDestInput:m,contextMenu:b,renameDialogVisible:h,renameNewName:w,renameInput:I,dragState:k,externalDropActive:_,showFileOpFeedback:A,toggleSelection:H,clearSelection:z,showNewFileDialog:$,confirmNewFile:te,deleteSingleFile:F,deleteSelected:S,openMoveDialog:M,confirmMove:L,showContextMenu:T,hideContextMenu:D,ctxRename:j,confirmRename:X,ctxCopy:G,ctxMoveTo:ce,ctxDelete:be,ctxDownload:()=>{let U=b.entry;D(),!(!U||U.type!=="file")&&N(U)},downloadFile:N,onDragStart:(U,J)=>{k.dragging=J,U.dataTransfer.setData("text/plain",J.path),U.dataTransfer.effectAllowed="move"},onDragOver:(U,J)=>{if(!k.dragging&&U.dataTransfer.types.includes("Files")){J.type==="directory"&&(U.dataTransfer.dropEffect="copy",k.dropTarget=J.path);return}!k.dragging||J.type!=="directory"||J.path!==k.dragging.path&&(J.path.startsWith(k.dragging.path+"/")||(U.dataTransfer.dropEffect="move",k.dropTarget=J.path))},onDragLeave:U=>{let J=U.relatedTarget;J&&U.currentTarget.contains(J)||(k.dropTarget=null)},onDrop:(U,J,R)=>{if(k.dropTarget=null,!k.dragging&&U.dataTransfer.files.length>0&&J.type==="directory"){R(U.dataTransfer.files,J.path);return}if(!k.dragging||J.type!=="directory"){k.dragging=null;return}if(J.path===k.dragging.path){k.dragging=null;return}Q(),e.sendWsMessage({type:"move_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[k.dragging.path],destination:J.path,workDir:s(),_clientId:e.clientId}),k.dragging=null},onTreeDragOver:U=>{k.dragging||U.dataTransfer.types.includes("Files")&&(U.dataTransfer.dropEffect="copy",_.value=!0)},onTreeDragLeave:U=>{let J=U.relatedTarget;J&&U.currentTarget.contains(J)||(_.value=!1)},onTreeDrop:(U,J,R)=>{if(_.value=!1,!k.dragging&&U.dataTransfer.files.length>0){let ee=n.value||J||s();R(U.dataTransfer.files,ee)}},handleExternalFileDrop:async(U,J)=>{if(!J)return;let R=[],ee=[];for(let V of U)ee.push(new Promise(P=>{let re=new FileReader;re.onload=()=>{let we=btoa(new Uint8Array(re.result).reduce((Ve,Be)=>Ve+String.fromCharCode(Be),""));R.push({name:V.name,data:we}),P()},re.onerror=()=>P(),re.readAsArrayBuffer(V)}));await Promise.all(ee),R.length!==0&&(o.value=!0,c&&clearTimeout(c),c=setTimeout(()=>{o.value&&(o.value=!1,A(!1,"Upload timed out"))},3e4),e.sendWsMessage({type:"upload_to_dir",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,files:R,dirPath:J,workDir:s(),_clientId:e.clientId}))},handleFileOpResult:(U,J,R)=>{o.value=!1,c&&(clearTimeout(c),c=null),A(U.success,U.success?U.message:U.error||"Operation failed"),U.success&&(R&&J(R),(U.operation==="delete"||U.operation==="move")&&(r.clear(),i.value=-1))},takePendingDownload:U=>{if(!U||!y.has(U))return null;let J=y.get(U);return y.delete(U),J},cleanup:()=>{l&&clearTimeout(l),c&&clearTimeout(c),y.clear()}}}var Th=B(()=>{Ct();ur()});function Mh(e,{getEffectiveWorkDir:t,normalizePath:s,selectedPaths:n,lastClickedIndex:r,openFileInTab:i,clearSelection:o}){let a=Vue.ref(""),l=Vue.ref(""),c=Vue.reactive({}),d=new Map,u=0,p=S=>{let M=`files-tree-${++u}`;return d.set(S,M),M},f=Vue.ref(!1),g=Vue.ref(null),v=Vue.computed(()=>{if(!l.value)return"EXPLORER";let S=l.value.replace(/[\\/]+$/,"").split(/[\\/]/);return(S[S.length-1]||l.value).toUpperCase()}),m=()=>{f.value=!0,Vue.nextTick(()=>g.value?.focus())},b=()=>{f.value=!1,y()},h=()=>{f.value=!1},w=Vue.computed(()=>{let S=[],M=(L,T)=>{let D=c[L];if(!(!D||!D.entries))for(let j of D.entries)S.push({...j,depth:T}),j.type==="directory"&&c[j.path]?.expanded&&M(j.path,T+1)};return l.value&&c[l.value]?.expanded&&M(l.value,0),S}),I=S=>{let M=s(S);c[M]?c[M].loading=!0:c[M]={entries:[],expanded:!0,loaded:!1,loading:!0},e.sendWsMessage({type:"list_directory",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,requestId:p(M),dirPath:S,workDir:t(),_clientId:e.clientId})},y=()=>{let S=a.value.trim();if(!S)return;let M=s(S);l.value=M,Object.keys(c).forEach(L=>delete c[L]),d.clear(),c[M]={entries:[],expanded:!0,loaded:!1,loading:!0},e.sendWsMessage({type:"list_directory",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,requestId:p(M),dirPath:S,workDir:t(),_clientId:e.clientId})},k=S=>{let M=s(S),L=c[M];L?L.loaded?L.expanded=!L.expanded:(L.expanded=!0,I(S)):(c[M]={entries:[],expanded:!0,loaded:!1,loading:!1},I(S))},_=(S,M)=>{let L=w.value,T=L.findIndex(D=>D.path===S.path);if(M&&(M.shiftKey||M.ctrlKey||M.metaKey)){if(M.shiftKey&&r.value>=0&&T>=0){let D=Math.min(r.value,T),j=Math.max(r.value,T);!M.ctrlKey&&!M.metaKey&&n.clear();for(let X=D;X<=j;X++)n.add(L[X].path)}else n.has(S.path)?n.delete(S.path):n.add(S.path);r.value=T;return}n.size>0&&(n.clear(),r.value=-1),S.type==="directory"?k(S.path):i(S.path,S.name),r.value=T},A=S=>{let M=`${S.replace(/\/$/,"")}/`;for(let L of Object.keys(c))(L===S||L.startsWith(M))&&delete c[L];for(let L of d.keys())(L===S||L.startsWith(M))&&d.delete(L);for(let L of Object.values(c))L?.entries&&(L.entries=L.entries.filter(T=>T.path!==S))},Q=S=>typeof S=="string"&&/(?:ENOENT|not\s+(?:exist|found)|no such file)/i.test(S),H=S=>S===l.value?!0:Object.values(c).some(M=>M?.entries?.some(L=>L.type==="directory"&&L.path===S)),z=S=>{let M=s(S.dirPath),L=d.get(M);if(L&&S.requestId!==L||!L&&S.requestId)return;if(L&&d.delete(M),!H(M)){A(M);return}if(S.error){if(Q(S.error))if(M===l.value){for(let G of c[M]?.entries||[])G.type==="directory"&&A(G.path);c[M]&&(c[M].entries=[],c[M].loaded=!0,c[M].loading=!1)}else A(M);else c[M]&&(c[M].loading=!1);return}let T=(S.entries||[]).sort((G,ce)=>G.type===ce.type?G.name.localeCompare(ce.name):G.type==="directory"?-1:1),D=M.replace(/\/$/,""),j=T.map(G=>({...G,path:D+"/"+G.name})),X=new Set(j.filter(G=>G.type==="directory").map(G=>G.path));for(let G of c[M]?.entries||[])G.type==="directory"&&!X.has(G.path)&&A(G.path);c[M]?(c[M].entries=j,c[M].loaded=!0,c[M].loading=!1):c[M]={entries:j,expanded:!0,loaded:!0,loading:!1},M===l.value&&(a.value=S.dirPath)},$=()=>{Object.keys(c).forEach(S=>delete c[S]),d.clear()};return{treePath:a,treeRootPath:l,treeNodes:c,flattenedTree:w,editingTreePath:f,treePathInputRef:g,rootFolderName:v,startTreePathEdit:m,confirmTreePath:b,cancelTreePathEdit:h,loadTreeDirectory:I,loadRootDirectory:y,toggleDirectory:k,onTreeItemClick:_,handleDirectoryListing:z,clearTreeNodes:$,initFileBrowser:()=>{let S=t();if(S){let M=s(S);a.value=S,l.value=M,$(),I(S)}},refresh:()=>{if(!l.value)return;let S=Object.entries(c).filter(([,M])=>M?.expanded).map(([M])=>M);S.includes(l.value)||S.unshift(l.value);for(let M of S)I(M)}}}var Ph=B(()=>{});function Rh(e,{editorContainer:t,createEditor:s,t:n}){let r=Vue.ref(!0),i=Vue.ref(null),o=Vue.ref(null),a=Vue.computed(()=>{let m=e.value;return!!(m&&Rs(m.name))}),l=Vue.computed(()=>{let m=e.value;if(!m||!Rs(m.name)||m.content==null)return"";try{if(typeof marked<"u")return marked.parse(m.content)}catch{}return"<pre>"+(m.content||"")+"</pre>"});function c(){Ht(i.value)}async function d(){await Ht(i.value)}function u(){r.value=!1,Vue.nextTick(()=>{let m=e.value;m&&t.value&&s(m)})}let p=0,f=new WeakMap,g=(m,b)=>m===b||typeof Vue.toRaw=="function"&&Vue.toRaw(m)===Vue.toRaw(b);return{mdPreviewMode:r,mdPreviewRef:i,officePreviewContainer:o,isActiveMarkdown:a,mdRenderedHtml:l,initMermaid:c,renderMermaidBlocks:d,switchToMdEdit:u,renderOfficeLocal:async m=>{let b=o.value;if(!b||!m._arrayBuffer)return!1;let h=++p;f.set(m,h),m.previewLoading=!0;let w=b.ownerDocument||globalThis.document,I=w?.createElement?w.createElement("div"):{innerHTML:""},y=("."+m.name.split(".").pop()).toLowerCase(),k=null,_=()=>f.get(m)===h,A=()=>h===p&&_()&&g(e.value,m)&&o.value===b;try{if(y===".docx"&&window.docx)await window.docx.renderAsync(m._arrayBuffer,I,null,{className:"docx-preview-content",inWrapper:!0,ignoreWidth:!1,ignoreHeight:!0});else if(y===".xlsx"||y===".xls"){k=XLSX.read(m._arrayBuffer,{type:"array"});let Q=k.SheetNames[0],H=XLSX.utils.sheet_to_html(k.Sheets[Q],{editable:!1});I.innerHTML='<div class="xlsx-sheet-tabs">'+k.SheetNames.map((z,$)=>`<button class="xlsx-sheet-tab${$===0?" active":""}" data-idx="${$}">${z}</button>`).join("")+'</div><div class="xlsx-table-wrap">'+H+"</div>"}else(y===".pptx"||y===".ppt")&&(I.innerHTML='<div class="preview-unsupported">'+(n?n("files.pptxNotSupported"):"PowerPoint preview not supported")+"</div>");return A()?(typeof b.replaceChildren=="function"&&I.childNodes?b.replaceChildren(...I.childNodes):b.innerHTML=I.innerHTML,k&&b.querySelectorAll(".xlsx-sheet-tab").forEach(Q=>{Q.addEventListener("click",()=>{let H=parseInt(Q.dataset.idx),z=k.SheetNames[H],$=XLSX.utils.sheet_to_html(k.Sheets[z],{editable:!1});b.querySelector(".xlsx-table-wrap").innerHTML=$,b.querySelectorAll(".xlsx-sheet-tab").forEach(te=>te.classList.remove("active")),Q.classList.add("active")})}),!0):!1}catch(Q){return _()&&(m.previewError=Q.message),!1}finally{_()&&(m.previewLoading=!1)}}}}var _h=B(()=>{oi();ur()});function Eh(e,{getEffectiveWorkDir:t,treePath:s,openFileInTab:n,normalizePath:r,treeRootPath:i,treeNodes:o,loadTreeDirectory:a}){let l=Vue.ref(""),c=Vue.ref([]),d=Vue.ref(!1),u=null,p=Vue.ref(!1),f=Vue.ref(""),g=Vue.ref([]),v=Vue.ref(0),m=Vue.ref(!1),b=Vue.ref(null),h=null,w=Vue.ref(!1),I=Vue.ref(""),y=Vue.ref(null),k=X=>{!e.currentAgent||!X.trim()||e.sendWsMessage({type:"file_search",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,query:X.trim(),dirPath:s.value||t()||"",_clientId:e.clientId})},_=()=>{if(u&&clearTimeout(u),!l.value.trim()){c.value=[],d.value=!1;return}d.value=!0,u=setTimeout(()=>{k(l.value)},300)},A=()=>{l.value="",c.value=[],d.value=!1},Q=X=>{if(X.type==="directory"){let G=r(X.fullPath);i.value=G,s.value=X.fullPath,Object.keys(o).forEach(ce=>delete o[ce]),a(X.fullPath),A()}else n(X.fullPath,X.name),A()},H=()=>{p.value=!0,f.value="",g.value=[],v.value=0,m.value=!1,Vue.nextTick(()=>b.value?.focus())},z=()=>{p.value=!1,f.value="",g.value=[]},$=()=>{if(h&&clearTimeout(h),!f.value.trim()){g.value=[],m.value=!1;return}m.value=!0,v.value=0,h=setTimeout(()=>{k(f.value)},200)},te=()=>{g.value.length>0&&(v.value=(v.value+1)%g.value.length)},F=()=>{g.value.length>0&&(v.value=(v.value-1+g.value.length)%g.value.length)},S=X=>{X.type!=="directory"&&n(X.fullPath,X.name),z()},M=()=>{let X=g.value[v.value];X&&S(X)},L=()=>{w.value=!0,I.value="",Vue.nextTick(()=>y.value?.focus())},T=()=>{w.value=!1,I.value=""};return{searchQuery:l,searchResults:c,searchLoading:d,onSearchInput:_,clearSearch:A,onSearchResultClick:Q,quickOpenVisible:p,quickOpenQuery:f,quickOpenResults:g,quickOpenSelectedIndex:v,quickOpenLoading:m,quickOpenInput:b,openQuickOpen:H,closeQuickOpen:z,onQuickOpenInput:$,quickOpenSelectNext:te,quickOpenSelectPrev:F,quickOpenConfirm:M,quickOpenOpenFile:S,goToLineVisible:w,goToLineValue:I,goToLineInput:y,openGoToLine:L,closeGoToLine:T,goToLineConfirm:X=>{let G=parseInt(I.value);if(isNaN(G)||G<1)return;let ce=X.value;if(ce?.cmInstance){let be=ce.cmInstance,N=Math.min(G-1,be.lineCount()-1);be.setCursor({line:N,ch:0}),be.scrollIntoView({line:N,ch:0},100),be.focus()}T()},handleFileSearchResult:X=>{let G=X.results||[];p.value?X.query&&X.query.trim()===f.value.trim()&&(g.value=G,m.value=!1,v.value=0):X.query&&X.query.trim()===l.value.trim()&&(c.value=G,d.value=!1)}}}var Dh=B(()=>{});function $h(e,{getEffectiveWorkDir:t,treePath:s,treeRootPath:n,treeNodes:r,normalizePath:i,loadTreeDirectory:o}){let a=Vue.ref(!1),l=Vue.ref(""),c=Vue.ref([]),d=Vue.ref(!1),u=Vue.ref(""),p=()=>{a.value=!0,u.value="",d.value=!0;let w=s.value||t()||"";l.value=w,c.value=[],e.sendWsMessage({type:"list_directory",conversationId:"_folder_picker",agentId:e.currentAgent,dirPath:w,workDir:t(),_clientId:e.clientId})},f=w=>{d.value=!0,u.value="",e.sendWsMessage({type:"list_directory",conversationId:"_folder_picker",agentId:e.currentAgent,dirPath:w,workDir:t(),_clientId:e.clientId})};return{folderPickerOpen:a,folderPickerPath:l,folderPickerEntries:c,folderPickerLoading:d,folderPickerSelected:u,openFolderPicker:p,folderPickerNavigateUp:()=>{if(!l.value)return;let w=l.value.includes("\\"),I=w?"\\":"/",y=l.value.replace(/[/\\]$/,"").split(/[/\\]/);if(y.pop(),y.length===0)l.value="",f("");else if(w&&y.length===1&&/^[A-Za-z]:$/.test(y[0]))l.value=y[0]+"\\",f(y[0]+"\\");else{let k=y.join(I);l.value=k,f(k)}},folderPickerSelectItem:w=>{u.value=w.name},folderPickerEnter:w=>{let I;if(!l.value)I=w.name+(w.name.endsWith("\\")?"":"\\");else{let y=l.value.includes("\\")||/^[A-Z]:/.test(w.name)?"\\":"/";I=l.value.replace(/[/\\]$/,"")+y+w.name}l.value=I,f(I)},confirmFolderPicker:()=>{let w=l.value;if(!w)return;if(u.value){let y=w.includes("\\")?"\\":"/";w=w.replace(/[/\\]$/,"")+y+u.value}s.value=w,a.value=!1;let I=i(w);n.value=I,Object.keys(r).forEach(y=>delete r[y]),r[I]={entries:[],expanded:!0,loaded:!1,loading:!0},e.sendWsMessage({type:"list_directory",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,dirPath:w,workDir:t(),_clientId:e.clientId})},handleFolderPickerListing:w=>{d.value=!1,c.value=(w.entries||[]).filter(I=>I.type==="directory").sort((I,y)=>I.name.localeCompare(y.name)),w.dirPath!=null&&(l.value=w.dirPath)}}}var Lh=B(()=>{});function Oh(e,{normalizePath:t,getEffectiveWorkDir:s,editorContainer:n,createEditor:r,destroyEditor:i,clearFindMarkers:o,saveCurrentUndoHistory:a,saveAllUndoHistory:l,cleanupUndoHistory:c,deleteConversationHistory:d,mdPreviewMode:u,renderOfficeLocal:p,performFind:f,findBarVisible:g,findQuery:v,t:m}){let b=Vue.reactive({}),h=Vue.ref([]),w=Vue.ref(-1),I=Vue.ref(!1),y=Vue.ref(0),k=()=>{y.value+=1},_=0,A=null,Q=()=>{let K=`file-tabs-${Date.now()}-${++_}`;return A={requestId:K,tabRevision:y.value},K},H=K=>{let oe=A;return!oe||K!==oe.requestId?!1:(A=null,y.value===oe.tabRevision)},z=Vue.computed(()=>w.value>=0&&w.value<h.value.length?h.value[w.value]:null),$=Vue.computed(()=>!!z.value?.loading),te=null,F=()=>{te&&clearTimeout(te),te=setTimeout(()=>{e.sendWsMessage({type:"update_file_tabs",openFiles:h.value.map(K=>({path:K.path})),activeIndex:w.value})},500)},S=K=>{K&&(l(K),h.value.length>0?b[K]={files:h.value.map(oe=>({path:oe.path,name:oe.name,content:oe.content,originalContent:oe.originalContent,isDirty:oe.isDirty,fileType:oe.fileType,agentId:oe.agentId,conversationId:oe.conversationId,workDir:oe.workDir})),activeIndex:w.value}:delete b[K],F())},M=K=>{if(i(),!K||!b[K]){h.value.length>0&&k(),h.value=[],w.value=-1;return}let oe=b[K];h.value=oe.files.map(he=>({...he,isDirty:he.isDirty||!1,originalContent:he.originalContent||he.content,cmInstance:null,fileType:he.fileType||Gs(he.name||""),blobUrl:null,previewUrl:null,previewLoading:!1,localPreviewReady:!1,previewError:null,loading:!1,loadError:null})),k(),w.value=oe.activeIndex,Vue.nextTick(()=>{let he=z.value;he&&(!he.fileType||he.fileType==="text")&&n.value&&r(he)})};function L(K,oe,he={}){let xe=t(K),_e=he.agentId||e.currentAgent||null,ge=he.conversationId||e.currentConversation||"_explorer",ne=he.workDir||s(),se=h.value.findIndex(J=>J.path===xe&&(!J.agentId||J.agentId===_e)&&(!J.conversationId||J.conversationId===ge));if(se>=0){w.value!==se&&(o(),a(),w.value=se,Vue.nextTick(()=>{let J=h.value[se];J&&J.content!=null&&(!J.fileType||J.fileType==="text")&&r(J)})),S(e.currentConversation);return}a();let E=oe||xe.split(/[/\\]/).pop(),ae=Gs(E);h.value.push({path:xe,name:E,agentId:_e,conversationId:ge,workDir:ne,content:null,originalContent:null,isDirty:!1,cmInstance:null,fileType:ae,blobUrl:null,previewUrl:null,previewLoading:ae!=="text",localPreviewReady:!1,previewError:null,loading:!0,loadError:null}),k(),w.value=h.value.length-1,ae==="text"&&i(),S(e.currentConversation);let pe=he.requestId||`file-${Date.now()}-${Math.random().toString(36).slice(2)}`,U=h.value[w.value];U&&(U.requestId=pe),e.sendWsMessage({type:ae==="video"?"video_metadata":"read_file",conversationId:ge,agentId:_e,requestId:pe,filePath:K,workDir:ne,_clientId:e.clientId})}let T=K=>{K!==w.value&&(o(),a(),w.value=K,S(e.currentConversation),Vue.nextTick(()=>{let oe=h.value[K];oe&&(!oe.fileType||oe.fileType==="text"?Rs(oe.name)?u.value=!0:oe.content!=null&&n.value&&(r(oe),g.value&&v.value&&Vue.nextTick(()=>f())):oe.fileType==="office"&&oe.localPreviewReady&&Vue.nextTick(()=>p(oe)))}))},D=async(K,{canCommit:oe=()=>!0}={})=>{let he=[...new Set(K)].filter(E=>Number.isInteger(E)&&E>=0&&E<h.value.length).sort((E,ae)=>E-ae);if(he.length===0)return!1;let xe=he.map(E=>h.value[E]),_e=y.value,ge=xe.filter(E=>E?.isDirty);if(ge.length>0){let E=ge.length===1?m("files.unsavedConfirm",{name:ge[0].name}):m("files.unsavedBatchConfirm",{count:ge.length});if(!await Fe(E,{destructive:!0}))return!1}if(y.value!==_e||!oe()||xe.some(E=>!h.value.includes(E)))return!1;let ne=z.value,se=ne;if(xe.includes(ne)){let E=h.value.indexOf(ne);se=h.value.slice(E+1).find(ae=>!xe.includes(ae))||h.value.slice(0,E).reverse().find(ae=>!xe.includes(ae))||null}for(let E of xe)c(E.conversationId||e.currentConversation,E.path),E.blobUrl?.startsWith?.("blob:")&&URL.revokeObjectURL(E.blobUrl);for(let E of xe){let ae=h.value.indexOf(E);ae>=0&&h.value.splice(ae,1)}return k(),h.value.length===0?(w.value=-1,i()):w.value=Math.max(0,h.value.indexOf(se)),S(e.currentConversation),ne!==z.value&&z.value&&Vue.nextTick(()=>{let E=z.value;E&&(!E.fileType||E.fileType==="text")&&E.content!=null&&n.value&&r(E)}),!0},j=(K,oe)=>D([K],oe),X=(K,oe)=>D(h.value.map((he,xe)=>xe).filter(he=>he<K),oe),G=(K,oe)=>D(h.value.map((he,xe)=>xe).filter(he=>he>K),oe),ce=(K,oe)=>D(h.value.map((he,xe)=>xe).filter(he=>he!==K),oe),be=K=>D(h.value.map((oe,he)=>he),K);function N(){let K=z.value;if(!K||!K.isDirty||K.pendingSaveRequestId)return;I.value=!0;let oe=`file-save-${Date.now()}-${Math.random().toString(36).slice(2)}`;K.pendingSaveRequestId=oe,K.pendingSaveContent=K.content,e.sendWsMessage({type:"write_file",conversationId:K.conversationId||e.currentConversation||"_explorer",agentId:K.agentId||e.currentAgent,requestId:oe,filePath:K.path,content:K.content,workDir:K.workDir||s(),_clientId:e.clientId})}return{fileTabsMap:b,openFiles:h,activeFileIndex:w,activeFile:z,fileLoading:$,fileSaving:I,tabRevision:y,bumpTabRevision:k,beginTabsRestoreRequest:Q,acceptTabsRestoreRequest:H,saveTabsState:S,restoreTabsState:M,openFileInTab:L,switchToTab:T,closeFileTab:j,closeFileTabs:D,closeTabsToLeft:X,closeTabsToRight:G,closeOtherTabs:ce,closeAllTabs:be,saveFile:N,handleConversationDeleted:K=>{let{conversationId:oe}=K.detail;oe&&(delete b[oe],d(oe))}}}var Vh=B(()=>{Ct();ur()});function qh({store:e,normalizePath:t,getEffectiveWorkDir:s,openFiles:n,activeFileIndex:r,activeFile:i,fileSaving:o,saveTabsState:a,createEditor:l,openFileInTab:c,bumpTabRevision:d=()=>{},acceptTabsRestoreRequest:u=()=>!1,tree:p,setTreeVisible:f,fp:g,qo:v,ops:m,mdPreviewMode:b,renderOfficeLocal:h,editorContainer:w,t:I=_=>_,routeKey:y="",workspaceGeneration:k=""}){let _=new Map,A=(z,$)=>{if(!z||!Number.isFinite($)||$<=0)return;let te=Math.max(0,Math.floor($)-1),F=()=>{let S=z.cmInstance;return S?(S.setCursor({line:te,ch:0}),S.scrollIntoView({line:te,ch:0},80),S.focus(),!0):!1};Vue.nextTick(()=>{F()||setTimeout(F,180)})};return{handleWorkbenchMessage:z=>{let $=z.detail;if(!$||!Zn($,y,k))return;let te=ss($,y);switch($.type){case"video_metadata":{let F=t($.requestedFilePath||$.filePath),S=m.takePendingDownload($.requestId);if(S){if($.error||!$.videoStream||!$.previewUrl){m.showFileOpFeedback?.(!1,$.error||I("files.videoStreamUnavailable"));return}let L=t(S).split("/").pop()||"video",T=document.createElement("a"),D=new URL($.previewUrl,`${location.protocol}//${location.host}`);D.searchParams.set("download","1"),T.href=D.href,T.download=L,document.body.appendChild(T),T.click(),document.body.removeChild(T);return}let M=n.value.find(L=>L.path===F&&(!L.agentId||!$.agentId||L.agentId===$.agentId)&&(!L.conversationId||!$.conversationId||L.conversationId===$.conversationId));if(!M||M.requestId&&$.requestId&&$.requestId!==M.requestId)return;if(M.loading=!1,$.error){M.loadError=$.error,M.previewLoading=!1,M.previewError=$.error;return}if(!$.videoStream||!$.previewUrl){M.loadError=I("files.videoStreamUnavailable"),M.previewLoading=!1,M.previewError=M.loadError;return}M.fileType="video",M.blobUrl=new URL($.previewUrl,`${location.protocol}//${location.host}`).href,M.previewLoading=!0,M.previewError=null,a(e.currentConversation);break}case"directory_listing":{if(te==="files-folder-picker"){g.handleFolderPickerListing($);return}if(y&&te!=="main")return;p.handleDirectoryListing($);break}case"file_content":{let F=t($.requestedFilePath||$.filePath),S=m.takePendingDownload($.requestId);if(S){if($.error){m.showFileOpFeedback?.(!1,$.error);return}try{let T=t(S).split("/").pop()||"download";if($.binary){let D=`${location.protocol}//${location.host}/api/preview/${$.fileId}?token=${$.previewToken}&download=1`,j=document.createElement("a");j.href=D,j.download=T,document.body.appendChild(j),j.click(),document.body.removeChild(j)}else{let D=new Blob([$.content||""],{type:"application/octet-stream"}),j=URL.createObjectURL(D),X=document.createElement("a");X.href=j,X.download=T,document.body.appendChild(X),X.click(),document.body.removeChild(X),URL.revokeObjectURL(j)}}catch{}return}let M=n.value.find(T=>T.path===F&&(!T.agentId||!$.agentId||T.agentId===$.agentId)&&(!T.conversationId||!$.conversationId||T.conversationId===$.conversationId));if(!M||M.requestId&&$.requestId&&$.requestId!==M.requestId)return;if(M.loading=!1,$.error){let T=$.errorCode==="FILE_PREVIEW_TOO_LARGE"?I("files.previewTooLarge",{size:(($.errorDetails?.sizeBytes||0)/1024/1024).toFixed(1),limit:(($.errorDetails?.limitBytes||20971520)/1024/1024).toFixed(0)}):$.error;M.loadError=T,M.previewLoading=!1,M.previewError=T;return}let L=n.value.indexOf(M);if(L>=0){let T=M;if(T.loadError=null,$.binary){let D=`${location.protocol}//${location.host}`,j=$.previewUrl?new URL($.previewUrl,D).href:`${D}/api/preview/${$.fileId}?token=${$.previewToken}`,X=T.fileType||Gs(T.name);T.fileType=X,X==="pdf"||X==="image"?(T.blobUrl=j,T.previewError=null,T.previewLoading=X==="image"):X==="office"?(localStorage.getItem("officePreviewMode")||"local")==="online"?(T.previewUrl="https://view.officeapps.live.com/op/embed.aspx?src="+encodeURIComponent(j),T.previewLoading=!1):fetch(j).then(ce=>{if(!ce.ok)throw new Error(`Preview request failed (${ce.status})`);return ce.arrayBuffer()}).then(ce=>{T._arrayBuffer=ce,T.localPreviewReady=!0,L===r.value?Vue.nextTick(()=>{L===r.value?h(T):T.previewLoading=!1}):T.previewLoading=!1}).catch(ce=>{T.previewError=ce.message,T.previewLoading=!1}):T.previewLoading=!1,a(e.currentConversation);return}if(T.content=$.content||"",T.originalContent=$.content||"",T.isDirty=!1,a(e.currentConversation),L===r.value){Rs(T.name)&&b.value||Vue.nextTick(()=>{setTimeout(()=>l(T),100)});let D=_.get(F);_.delete(F),A(T,D)}}break}case"file_saved":{let F=t($.requestedFilePath||$.filePath),S=n.value.find(L=>L.path===F&&(!L.agentId||!$.agentId||L.agentId===$.agentId)&&(!L.conversationId||!$.conversationId||L.conversationId===$.conversationId));if(!S?.pendingSaveRequestId||$.requestId&&$.requestId!==S.pendingSaveRequestId)return;o.value=!1;let M=S.pendingSaveContent;if(delete S.pendingSaveRequestId,delete S.pendingSaveContent,$.error)return;S.originalContent=M??S.content,S.isDirty=S.content!==S.originalContent,a(S.conversationId||e.currentConversation);break}case"file_search_result":{v.handleFileSearchResult($);break}case"file_op_result":{m.handleFileOpResult($,p.loadTreeDirectory,p.treeRootPath.value);break}case"file_tabs_restored":{if(!u($.restoreRequestId))return;if($.openFiles?.length>0&&n.value.length===0){let F=$.activeIndex||0,S=$.openFiles.length;d();for(let M of $.openFiles){let L=t(M.path),T=L.split("/").pop(),D=Gs(T),j=e.currentAgent||null,X=e.currentConversation||"_explorer",G=s(),ce=`file-${Date.now()}-${Math.random().toString(36).slice(2)}`;n.value.push({path:L,name:T,agentId:j,conversationId:X,workDir:G,requestId:ce,content:null,originalContent:null,isDirty:!1,cmInstance:null,fileType:D,blobUrl:null,previewUrl:null,previewLoading:D!=="text",localPreviewReady:!1,previewError:null,loading:!0,loadError:null}),e.sendWsMessage({type:D==="video"?"video_metadata":"read_file",conversationId:X,agentId:j,requestId:ce,filePath:M.path,workDir:G,_clientId:e.clientId})}r.value=F>=0&&F<S?F:0}break}}},handleOpenFile:z=>{let{filePath:$,agentId:te=e.currentAgent,conversationId:F=e.currentConversation,workDir:S=s(),workbenchRouteKey:M=y,workspaceGeneration:L=k,hideTree:T=!1,line:D=null}=z.detail||{},j=t($);!j||!te||!F||y&&M!==y||k&&L!==k||(T&&typeof f=="function"&&f(!1),Number.isFinite(D)&&D>0&&_.set(j,D),c(j,j.split("/").pop(),{agentId:te,conversationId:F,workDir:S}),A(i.value,D))}}}var Fh=B(()=>{ur();ws()});function ea(e,t,s=""){let n=t?.currentTarget?.src||t?.target?.src;if(!e?.blobUrl||!n)return!1;let r=e.blobUrl;try{r=new URL(e.blobUrl,`${location.protocol}//${location.host}`).href}catch{}return n!==r?!1:(e.previewLoading=!1,e.previewError=s||null,!0)}function _k({liveStore:e,props:t,tabs:s,isDisposed:n}){let r=d=>d.detail?.routeKey===t.routeKey&&d.detail?.workspaceGeneration===t.workspaceGeneration,i=(d,u)=>{let p=dt(e.activeSessionRoute),f=bn(p,e.effectiveWorkDir);return!n()&&t.routeKey===d&&t.workspaceGeneration===u&&p===d&&f===u};return{isCurrentEvent:r,handleSelectFileItem:d=>{if(!r(d))return;let u=s.openFiles.value.findIndex(p=>p.path===d.detail.path);u>=0&&s.switchToTab(u)},handleCloseFileItem:async d=>{if(!r(d))return;let u=d.detail.routeKey,p=d.detail.workspaceGeneration,f=s.tabRevision.value,g=s.openFiles.value.find(b=>b.path===d.detail.path);if(!g)return;let v=()=>i(u,p)&&s.tabRevision.value===f&&s.openFiles.value.includes(g),m=s.openFiles.value.indexOf(g);m>=0&&await s.closeFileTab(m,{canCommit:v})},handleCloseFileItems:async d=>{if(!r(d)||typeof d.detail.resolve!="function")return;let u=d.detail.routeKey,p=d.detail.workspaceGeneration,f=s.tabRevision.value,g=new Set(Array.isArray(d.detail.paths)?d.detail.paths:[]),v=s.openFiles.value.filter(w=>g.has(w.path)),m=()=>i(u,p)&&s.tabRevision.value===f&&v.every(w=>s.openFiles.value.includes(w)),b=v.map(w=>s.openFiles.value.indexOf(w)).filter(w=>w>=0),h=b.length===0?m():await s.closeFileTabs(b,{canCommit:m});d.detail.resolve(h&&m())},handleCloseFilesCapability:async d=>{if(!r(d)||typeof d.detail.resolve!="function")return;let u=d.detail.routeKey,p=d.detail.workspaceGeneration,f=s.tabRevision.value,g=()=>i(u,p)&&s.tabRevision.value===f,v=s.openFiles.value.length===0?g():await s.closeAllTabs({canCommit:g});d.detail.resolve(v&&g()&&s.openFiles.value.length===0)}}}var Hh,Bh=B(()=>{Rc();Ch();Th();Ph();ur();_h();Dh();Lh();Vh();Fh();ni();ws();Hh={name:"FilesTab",props:{treeInitiallyVisible:{type:Boolean,default:!0},routeKey:{type:String,required:!0},runtimeProvider:{type:String,required:!0},agentId:{type:String,required:!0},sessionId:{type:String,required:!0},conversationId:{type:String,required:!0},workDir:{type:String,default:""},workspaceGeneration:{type:String,required:!0}},template:`
2293
2293
  <div class="files-tab file-two-col" :class="{ 'mobile-editor-view': isMobile && mobileView === 'editor', 'tree-collapsed': !treeVisible }" ref="rootEl">
2294
2294
  <div class="file-tree-collapsed-rail" v-if="!treeVisible">
2295
2295
  <button
@@ -2781,7 +2781,7 @@ ${String(e||"").trim()}
2781
2781
  </template>
2782
2782
  </div>
2783
2783
  </div>
2784
- `,setup(e){let t=Pinia.useChatStore(),s=Xn(t,e),n=Vue.inject("t"),r=Vue.ref(!0),i=!1,o=Vue.ref(e.treeInitiallyVisible),a=()=>s.effectiveWorkDir||"",l=P=>P?P.replace(/\\/g,"/"):"",c=P=>Zo(P),d=P=>Jo(P),u=P=>P==null?"":P<1024?P+" B":P<1024*1024?(P/1024).toFixed(1)+" KB":(P/(1024*1024)).toFixed(1)+" MB",p=(P,re)=>ea(P,re),f=(P,re)=>ea(P,re,n("files.previewLoadFailed")),g=(P,re)=>ea(P,re),v=(P,re)=>ea(P,re,n("files.videoPreviewLoadFailed")),m=P=>{let re=S.activeFile.value;re?.blobUrl&&As(re.blobUrl,{alt:re.name||n("message.imagePreview"),closeLabel:n("common.close"),zoomOutLabel:n("message.zoomOut"),zoomInLabel:n("message.zoomIn"),resetZoomLabel:n("message.resetZoom"),trigger:P})},b=Vue.ref(null),h=Vue.ref(null),w=Vue.ref(window.innerWidth<=768),I=Vue.ref("tree"),y=()=>{I.value="tree"},k=Vue.ref(parseInt(localStorage.getItem("filesFontSize"))||15),_=P=>{k.value=Math.max(8,Math.min(24,P)),localStorage.setItem("filesFontSize",k.value.toString());let re=S.activeFile.value;re?.cmInstance&&(re.cmInstance.getWrapperElement().style.fontSize=k.value+"px",re.cmInstance.refresh())},A=()=>_(k.value+1),Q=()=>_(k.value-1),H=Vue.computed(()=>{let P=S?.activeFile.value;return!!P&&(!P.fileType||P.fileType==="text")}),z=P=>{H.value&&(P.preventDefault(),P.deltaY<0?A():Q())},$=Vue.ref(parseInt(localStorage.getItem("filePanelWidth"))||220),te=Vue.ref(!1),F=P=>{P.preventDefault();let re=P.type==="touchstart";te.value=!0;let we=re?P.touches[0].clientX:P.clientX,Ve=$.value;document.body.style.cursor="col-resize",document.body.style.userSelect="none";let Be=P.target.closest(".file-two-col"),rt=Be?Be.offsetWidth*.5:400,st=Rt=>{let Bt=re?Rt.touches[0].clientX:Rt.clientX;$.value=Math.max(120,Math.min(rt,Ve-(Bt-we)))},Je=()=>{te.value=!1,document.body.style.cursor="",document.body.style.userSelect="",localStorage.setItem("filePanelWidth",$.value.toString()),document.removeEventListener("mousemove",st),document.removeEventListener("mouseup",Je),document.removeEventListener("touchmove",st),document.removeEventListener("touchend",Je)};document.addEventListener(re?"touchmove":"mousemove",st),document.addEventListener(re?"touchend":"mouseup",Je)},S,M,L=Vue.computed(()=>S?S.activeFile.value:null),T=Vue.computed(()=>M?M.treePath.value:""),D=Ih(L),U=Ah(s,{activeFile:L,editorContainer:h,fontSize:k,clearFindMarkers:D.clearFindMarkers,openFindBar:D.openFindBar,saveFile:()=>S.saveFile()}),X=Rh(L,{editorContainer:h,createEditor:U.createEditor,t:n}),G=xh(s,{getEffectiveWorkDir:a,treePath:T});S=Oh(s,{normalizePath:l,getEffectiveWorkDir:a,editorContainer:h,createEditor:U.createEditor,destroyEditor:U.destroyEditor,clearFindMarkers:D.clearFindMarkers,saveCurrentUndoHistory:U.saveCurrentUndoHistory,saveAllUndoHistory:U.saveAllUndoHistory,cleanupUndoHistory:U.cleanupUndoHistory,deleteConversationHistory:U.deleteConversationHistory,mdPreviewMode:X.mdPreviewMode,renderOfficeLocal:X.renderOfficeLocal,performFind:D.performFind,findBarVisible:D.findBarVisible,findQuery:D.findQuery,t:n}),M=Mh(s,{getEffectiveWorkDir:a,normalizePath:l,selectedPaths:G.selectedPaths,lastClickedIndex:G.lastClickedIndex,openFileInTab:(...P)=>S.openFileInTab(...P),clearSelection:G.clearSelection});let ce=Eh(s,{getEffectiveWorkDir:a,treePath:M.treePath,openFileInTab:(...P)=>S.openFileInTab(...P),normalizePath:l,treeRootPath:M.treeRootPath,treeNodes:M.treeNodes,loadTreeDirectory:M.loadTreeDirectory});U.setKeyBindings({openQuickOpen:ce.openQuickOpen,openGoToLine:ce.openGoToLine});let be=$h(s,{getEffectiveWorkDir:a,treePath:M.treePath,treeRootPath:M.treeRootPath,treeNodes:M.treeNodes,normalizePath:l,loadTreeDirectory:M.loadTreeDirectory}),N=qh({store:s,normalizePath:l,getEffectiveWorkDir:a,openFiles:S.openFiles,activeFileIndex:S.activeFileIndex,setTreeVisible:P=>{o.value=!!P},activeFile:S.activeFile,fileSaving:S.fileSaving,saveTabsState:S.saveTabsState,createEditor:U.createEditor,openFileInTab:S.openFileInTab,bumpTabRevision:S.bumpTabRevision,acceptTabsRestoreRequest:S.acceptTabsRestoreRequest,tree:M,fp:be,qo:ce,ops:G,mdPreviewMode:X.mdPreviewMode,renderOfficeLocal:X.renderOfficeLocal,editorContainer:h,t:n,routeKey:e.routeKey,workspaceGeneration:e.workspaceGeneration}),Z=P=>G.deleteSingleFile(P,n),K=()=>G.deleteSelected(n),oe=()=>G.ctxDelete(n),he=(P,re)=>G.onDrop(P,re,G.handleExternalFileDrop),xe=P=>G.onTreeDrop(P,M.treeRootPath.value,G.handleExternalFileDrop),_e=()=>ce.goToLineConfirm(S.activeFile),ge=()=>{let P=S.activeFile.value;P&&G.downloadFile({path:P.path,type:"file"})};Vue.watch(()=>s.currentAgent,()=>{S.saveTabsState(s.currentConversation),U.destroyEditor(),M.clearTreeNodes(),S.openFiles.value.length>0&&S.bumpTabRevision(),S.openFiles.value=[],S.activeFileIndex.value=-1,s.currentAgent&&Vue.nextTick(()=>M.initFileBrowser())});let ne=s.currentConversation;Vue.watch(()=>s.currentConversation,P=>{S.saveTabsState(ne),ne=P,S.restoreTabsState(P);let re=a(),we=l(re);re&&we!==M.treeRootPath.value&&(M.treePath.value=re,M.treeRootPath.value=we,M.clearTreeNodes(),M.loadTreeDirectory(re))}),Vue.watch(()=>s.theme,P=>{let re=S.activeFile.value;re?.cmInstance&&re.cmInstance.setOption("theme",P==="dark"?"material-darker":"default")}),Vue.watch(()=>a(),P=>{if(P&&!M.treeRootPath.value){let re=l(P);M.treePath.value=P,M.treeRootPath.value=re,M.clearTreeNodes(),M.loadTreeDirectory(P)}}),Vue.watch(()=>S.activeFile.value?.content,(P,re)=>{let we=S.activeFile.value;if(we&&P!=null&&re==null&&!we.cmInstance&&(!we.fileType||we.fileType==="text")){if(Rs(we.name)&&X.mdPreviewMode.value)return;Vue.nextTick(()=>{setTimeout(()=>{we.cmInstance||U.createEditor(we)},150)})}}),Vue.watch([X.mdRenderedHtml,X.mdPreviewMode],([P,re])=>{P&&re&&Vue.nextTick(()=>{setTimeout(()=>X.renderMermaidBlocks(),50)})});let se=P=>{!r.value||!(b.value&&b.value.offsetParent!==null)&&!ce.quickOpenVisible.value&&!ce.goToLineVisible.value&&!D.findBarVisible.value||((P.ctrlKey||P.metaKey)&&P.key==="p"?(P.preventDefault(),ce.quickOpenVisible.value?ce.closeQuickOpen():ce.openQuickOpen()):(P.ctrlKey||P.metaKey)&&P.key==="g"?(P.preventDefault(),ce.goToLineVisible.value?ce.closeGoToLine():ce.openGoToLine()):(P.ctrlKey||P.metaKey)&&P.key==="f"?S.activeFile.value&&(P.preventDefault(),D.openFindBar(!1)):(P.ctrlKey||P.metaKey)&&(P.key==="r"||P.key==="h")?S.activeFile.value&&(P.preventDefault(),D.openFindBar(!0)):P.key==="Escape"&&(D.findBarVisible.value&&D.closeFindBar(),G.selectedPaths.size>0&&G.clearSelection(),ce.quickOpenVisible.value&&ce.closeQuickOpen(),ce.goToLineVisible.value&&ce.closeGoToLine()))},E=()=>{G.hideContextMenu()},ae=()=>{w.value=window.innerWidth<=768};Vue.watch(()=>S.activeFileIndex.value,(P,re)=>{w.value&&P>=0&&P!==re&&(I.value="editor")}),Vue.watch(()=>S.openFiles.value.length,P=>{w.value&&P===0&&(I.value="tree")});let ue=Vue.computed(()=>{let P=S.activeFile.value?.path||"",re=Math.max(P.lastIndexOf("/"),P.lastIndexOf("\\"));return re>0?P.slice(0,re):a()}),j=()=>{window.dispatchEvent(new CustomEvent("workbench-file-items-changed",{detail:{routeKey:e.routeKey,workspaceGeneration:e.workspaceGeneration,files:S.openFiles.value.map(P=>({path:P.path,name:P.name,isDirty:!!P.isDirty})),activePath:S.activeFile.value?.path||""}}))},{handleSelectFileItem:J,handleCloseFileItem:R,handleCloseFileItems:ee,handleCloseFilesCapability:V}=_k({liveStore:t,props:e,tabs:S,isDisposed:()=>i});return Vue.watch([S.openFiles,S.activeFileIndex],j,{deep:!0,flush:"post"}),Vue.onMounted(()=>{window.addEventListener("workbench-message",N.handleWorkbenchMessage),window.addEventListener("workbench-open-file-in-active-view",N.handleOpenFile),window.addEventListener("workbench-select-file-item",J),window.addEventListener("workbench-close-file-item",R),window.addEventListener("workbench-close-file-items",ee),window.addEventListener("workbench-close-files-capability",V),window.addEventListener("conversation-deleted",S.handleConversationDeleted),window.addEventListener("keydown",se),document.addEventListener("click",E),window.addEventListener("resize",ae),X.initMermaid(),s.currentAgent&&(M.initFileBrowser(),s.sendWsMessage({type:"restore_file_tabs",restoreRequestId:S.beginTabsRestoreRequest()}))}),Vue.onActivated(()=>{r.value=!0,j()}),Vue.onDeactivated(()=>{r.value=!1,ce.closeQuickOpen(),ce.closeGoToLine(),D.closeFindBar(),G.hideContextMenu()}),Vue.onUnmounted(()=>{i=!0,S.saveTabsState(s.currentConversation),window.removeEventListener("workbench-message",N.handleWorkbenchMessage),window.removeEventListener("workbench-open-file-in-active-view",N.handleOpenFile),window.removeEventListener("workbench-select-file-item",J),window.removeEventListener("workbench-close-file-item",R),window.removeEventListener("workbench-close-file-items",ee),window.removeEventListener("workbench-close-files-capability",V),window.removeEventListener("conversation-deleted",S.handleConversationDeleted),window.removeEventListener("keydown",se),document.removeEventListener("click",E),window.removeEventListener("resize",ae),U.destroyEditor(),G.cleanup()}),{store:s,debugStatus:U.debugStatus,rootEl:b,treeVisible:o,isMobile:w,mobileView:I,mobileGoBack:y,fontSize:k,zoomIn:A,zoomOut:Q,isTextZoomAvailable:H,onWheel:z,openActiveImagePreview:m,treePath:M.treePath,treeRootPath:M.treeRootPath,treeNodes:M.treeNodes,flattenedTree:M.flattenedTree,editingTreePath:M.editingTreePath,treePathInputRef:M.treePathInputRef,rootFolderName:M.rootFolderName,startTreePathEdit:M.startTreePathEdit,confirmTreePath:M.confirmTreePath,cancelTreePathEdit:M.cancelTreePathEdit,treePanelWidth:$,isTreeResizing:te,startTreeResize:F,openFiles:S.openFiles,activeFileIndex:S.activeFileIndex,activeFile:S.activeFile,activeFileFolder:ue,fileLoading:S.fileLoading,fileSaving:S.fileSaving,editorContainer:h,officePreviewContainer:X.officePreviewContainer,mdPreviewRef:X.mdPreviewRef,isActiveMarkdown:X.isActiveMarkdown,mdPreviewMode:X.mdPreviewMode,mdRenderedHtml:X.mdRenderedHtml,switchToMdEdit:X.switchToMdEdit,folderPickerOpen:be.folderPickerOpen,folderPickerPath:be.folderPickerPath,folderPickerEntries:be.folderPickerEntries,folderPickerLoading:be.folderPickerLoading,folderPickerSelected:be.folderPickerSelected,searchQuery:ce.searchQuery,searchResults:ce.searchResults,searchLoading:ce.searchLoading,onSearchInput:ce.onSearchInput,clearSearch:ce.clearSearch,onSearchResultClick:ce.onSearchResultClick,quickOpenVisible:ce.quickOpenVisible,quickOpenQuery:ce.quickOpenQuery,quickOpenResults:ce.quickOpenResults,quickOpenSelectedIndex:ce.quickOpenSelectedIndex,quickOpenLoading:ce.quickOpenLoading,quickOpenInput:ce.quickOpenInput,openQuickOpen:ce.openQuickOpen,closeQuickOpen:ce.closeQuickOpen,onQuickOpenInput:ce.onQuickOpenInput,quickOpenSelectNext:ce.quickOpenSelectNext,quickOpenSelectPrev:ce.quickOpenSelectPrev,quickOpenConfirm:ce.quickOpenConfirm,quickOpenOpenFile:ce.quickOpenOpenFile,goToLineVisible:ce.goToLineVisible,goToLineValue:ce.goToLineValue,goToLineInput:ce.goToLineInput,openGoToLine:ce.openGoToLine,closeGoToLine:ce.closeGoToLine,goToLineConfirm:_e,findBarVisible:D.findBarVisible,replaceBarVisible:D.replaceBarVisible,findQuery:D.findQuery,replaceQuery:D.replaceQuery,findCaseSensitive:D.findCaseSensitive,findUseRegex:D.findUseRegex,findMatchCount:D.findMatchCount,findMatchIndex:D.findMatchIndex,findInputRef:D.findInputRef,replaceInputRef:D.replaceInputRef,onFindInput:D.onFindInput,findNext:D.findNext,findPrev:D.findPrev,openFindBar:D.openFindBar,closeFindBar:D.closeFindBar,toggleReplaceBar:D.toggleReplaceBar,replaceOne:D.replaceOne,replaceAll:D.replaceAll,selectedPaths:G.selectedPaths,fileOperating:G.fileOperating,fileOpFeedback:G.fileOpFeedback,newFileDialogVisible:G.newFileDialogVisible,newFileName:G.newFileName,newFileType:G.newFileType,newFileInput:G.newFileInput,moveDialogVisible:G.moveDialogVisible,moveDestination:G.moveDestination,moveDestInput:G.moveDestInput,toggleSelection:G.toggleSelection,clearSelection:G.clearSelection,showNewFileDialog:G.showNewFileDialog,confirmNewFile:G.confirmNewFile,deleteSingleFile:Z,deleteSelected:K,openMoveDialog:G.openMoveDialog,confirmMove:G.confirmMove,contextMenu:G.contextMenu,showContextMenu:G.showContextMenu,hideContextMenu:G.hideContextMenu,ctxRename:G.ctxRename,ctxCopy:G.ctxCopy,ctxMoveTo:G.ctxMoveTo,ctxDelete:oe,ctxDownload:G.ctxDownload,downloadActiveFile:ge,renameDialogVisible:G.renameDialogVisible,renameNewName:G.renameNewName,renameInput:G.renameInput,confirmRename:G.confirmRename,dragState:G.dragState,externalDropActive:G.externalDropActive,onDragStart:G.onDragStart,onDragOver:G.onDragOver,onDragLeave:G.onDragLeave,onDrop:he,onTreeDragOver:G.onTreeDragOver,onTreeDragLeave:G.onTreeDragLeave,onTreeDrop:xe,loadRootDirectory:M.loadRootDirectory,onTreeItemClick:M.onTreeItemClick,openFileInTab:S.openFileInTab,switchToTab:S.switchToTab,closeFileTab:S.closeFileTab,saveFile:S.saveFile,openFolderPicker:be.openFolderPicker,folderPickerNavigateUp:be.folderPickerNavigateUp,folderPickerSelectItem:be.folderPickerSelectItem,folderPickerEnter:be.folderPickerEnter,confirmFolderPicker:be.confirmFolderPicker,getFileIcon:()=>"",getFileIconHtml:c,getFolderIcon:d,formatSize:u,onImagePreviewLoad:p,onImagePreviewError:f,onVideoPreviewLoad:g,onVideoPreviewError:v,refresh:M.refresh,placeholderPath:Vue.computed(()=>{let P=a();return P?n("files.workDir",{dir:P}):n("files.enterDirPath")})}}}});var Ek,Nh,Wh=B(()=>{dh();Sh();Bh();Ek=Object.freeze({terminal:"TerminalTab",git:"GitStatusTab",files:"FilesTab"}),Nh={name:"WorkbenchCapabilityHost",components:{TerminalTab:ch,GitStatusTab:kh,FilesTab:Hh},props:{activeCapability:{type:String,default:null},retainedCapabilities:{type:Array,default:()=>[]},routeProps:{type:Object,required:!0}},template:`
2784
+ `,setup(e){let t=Pinia.useChatStore(),s=Xn(t,e),n=Vue.inject("t"),r=Vue.ref(!0),i=!1,o=Vue.ref(e.treeInitiallyVisible),a=()=>s.effectiveWorkDir||"",l=P=>P?P.replace(/\\/g,"/"):"",c=P=>Zo(P),d=P=>Jo(P),u=P=>P==null?"":P<1024?P+" B":P<1024*1024?(P/1024).toFixed(1)+" KB":(P/(1024*1024)).toFixed(1)+" MB",p=(P,re)=>ea(P,re),f=(P,re)=>ea(P,re,n("files.previewLoadFailed")),g=(P,re)=>ea(P,re),v=(P,re)=>ea(P,re,n("files.videoPreviewLoadFailed")),m=P=>{let re=S.activeFile.value;re?.blobUrl&&As(re.blobUrl,{alt:re.name||n("message.imagePreview"),closeLabel:n("common.close"),zoomOutLabel:n("message.zoomOut"),zoomInLabel:n("message.zoomIn"),resetZoomLabel:n("message.resetZoom"),trigger:P})},b=Vue.ref(null),h=Vue.ref(null),w=Vue.ref(window.innerWidth<=768),I=Vue.ref("tree"),y=()=>{I.value="tree"},k=Vue.ref(parseInt(localStorage.getItem("filesFontSize"))||15),_=P=>{k.value=Math.max(8,Math.min(24,P)),localStorage.setItem("filesFontSize",k.value.toString());let re=S.activeFile.value;re?.cmInstance&&(re.cmInstance.getWrapperElement().style.fontSize=k.value+"px",re.cmInstance.refresh())},A=()=>_(k.value+1),Q=()=>_(k.value-1),H=Vue.computed(()=>{let P=S?.activeFile.value;return!!P&&(!P.fileType||P.fileType==="text")}),z=P=>{H.value&&(P.preventDefault(),P.deltaY<0?A():Q())},$=Vue.ref(parseInt(localStorage.getItem("filePanelWidth"))||220),te=Vue.ref(!1),F=P=>{P.preventDefault();let re=P.type==="touchstart";te.value=!0;let we=re?P.touches[0].clientX:P.clientX,Ve=$.value;document.body.style.cursor="col-resize",document.body.style.userSelect="none";let Be=P.target.closest(".file-two-col"),rt=Be?Be.offsetWidth*.5:400,st=Rt=>{let Bt=re?Rt.touches[0].clientX:Rt.clientX;$.value=Math.max(120,Math.min(rt,Ve-(Bt-we)))},Je=()=>{te.value=!1,document.body.style.cursor="",document.body.style.userSelect="",localStorage.setItem("filePanelWidth",$.value.toString()),document.removeEventListener("mousemove",st),document.removeEventListener("mouseup",Je),document.removeEventListener("touchmove",st),document.removeEventListener("touchend",Je)};document.addEventListener(re?"touchmove":"mousemove",st),document.addEventListener(re?"touchend":"mouseup",Je)},S,M,L=Vue.computed(()=>S?S.activeFile.value:null),T=Vue.computed(()=>M?M.treePath.value:""),D=Ih(L),j=Ah(s,{activeFile:L,editorContainer:h,fontSize:k,clearFindMarkers:D.clearFindMarkers,openFindBar:D.openFindBar,saveFile:()=>S.saveFile()}),X=Rh(L,{editorContainer:h,createEditor:j.createEditor,t:n}),G=xh(s,{getEffectiveWorkDir:a,treePath:T});S=Oh(s,{normalizePath:l,getEffectiveWorkDir:a,editorContainer:h,createEditor:j.createEditor,destroyEditor:j.destroyEditor,clearFindMarkers:D.clearFindMarkers,saveCurrentUndoHistory:j.saveCurrentUndoHistory,saveAllUndoHistory:j.saveAllUndoHistory,cleanupUndoHistory:j.cleanupUndoHistory,deleteConversationHistory:j.deleteConversationHistory,mdPreviewMode:X.mdPreviewMode,renderOfficeLocal:X.renderOfficeLocal,performFind:D.performFind,findBarVisible:D.findBarVisible,findQuery:D.findQuery,t:n}),M=Mh(s,{getEffectiveWorkDir:a,normalizePath:l,selectedPaths:G.selectedPaths,lastClickedIndex:G.lastClickedIndex,openFileInTab:(...P)=>S.openFileInTab(...P),clearSelection:G.clearSelection});let ce=Eh(s,{getEffectiveWorkDir:a,treePath:M.treePath,openFileInTab:(...P)=>S.openFileInTab(...P),normalizePath:l,treeRootPath:M.treeRootPath,treeNodes:M.treeNodes,loadTreeDirectory:M.loadTreeDirectory});j.setKeyBindings({openQuickOpen:ce.openQuickOpen,openGoToLine:ce.openGoToLine});let be=$h(s,{getEffectiveWorkDir:a,treePath:M.treePath,treeRootPath:M.treeRootPath,treeNodes:M.treeNodes,normalizePath:l,loadTreeDirectory:M.loadTreeDirectory}),N=qh({store:s,normalizePath:l,getEffectiveWorkDir:a,openFiles:S.openFiles,activeFileIndex:S.activeFileIndex,setTreeVisible:P=>{o.value=!!P},activeFile:S.activeFile,fileSaving:S.fileSaving,saveTabsState:S.saveTabsState,createEditor:j.createEditor,openFileInTab:S.openFileInTab,bumpTabRevision:S.bumpTabRevision,acceptTabsRestoreRequest:S.acceptTabsRestoreRequest,tree:M,fp:be,qo:ce,ops:G,mdPreviewMode:X.mdPreviewMode,renderOfficeLocal:X.renderOfficeLocal,editorContainer:h,t:n,routeKey:e.routeKey,workspaceGeneration:e.workspaceGeneration}),Z=P=>G.deleteSingleFile(P,n),K=()=>G.deleteSelected(n),oe=()=>G.ctxDelete(n),he=(P,re)=>G.onDrop(P,re,G.handleExternalFileDrop),xe=P=>G.onTreeDrop(P,M.treeRootPath.value,G.handleExternalFileDrop),_e=()=>ce.goToLineConfirm(S.activeFile),ge=()=>{let P=S.activeFile.value;P&&G.downloadFile({path:P.path,type:"file"})};Vue.watch(()=>s.currentAgent,()=>{S.saveTabsState(s.currentConversation),j.destroyEditor(),M.clearTreeNodes(),S.openFiles.value.length>0&&S.bumpTabRevision(),S.openFiles.value=[],S.activeFileIndex.value=-1,s.currentAgent&&Vue.nextTick(()=>M.initFileBrowser())});let ne=s.currentConversation;Vue.watch(()=>s.currentConversation,P=>{S.saveTabsState(ne),ne=P,S.restoreTabsState(P);let re=a(),we=l(re);re&&we!==M.treeRootPath.value&&(M.treePath.value=re,M.treeRootPath.value=we,M.clearTreeNodes(),M.loadTreeDirectory(re))}),Vue.watch(()=>s.theme,P=>{let re=S.activeFile.value;re?.cmInstance&&re.cmInstance.setOption("theme",P==="dark"?"material-darker":"default")}),Vue.watch(()=>a(),P=>{if(P&&!M.treeRootPath.value){let re=l(P);M.treePath.value=P,M.treeRootPath.value=re,M.clearTreeNodes(),M.loadTreeDirectory(P)}}),Vue.watch(()=>S.activeFile.value?.content,(P,re)=>{let we=S.activeFile.value;if(we&&P!=null&&re==null&&!we.cmInstance&&(!we.fileType||we.fileType==="text")){if(Rs(we.name)&&X.mdPreviewMode.value)return;Vue.nextTick(()=>{setTimeout(()=>{we.cmInstance||j.createEditor(we)},150)})}}),Vue.watch([X.mdRenderedHtml,X.mdPreviewMode],([P,re])=>{P&&re&&Vue.nextTick(()=>{setTimeout(()=>X.renderMermaidBlocks(),50)})});let se=P=>{!r.value||!(b.value&&b.value.offsetParent!==null)&&!ce.quickOpenVisible.value&&!ce.goToLineVisible.value&&!D.findBarVisible.value||((P.ctrlKey||P.metaKey)&&P.key==="p"?(P.preventDefault(),ce.quickOpenVisible.value?ce.closeQuickOpen():ce.openQuickOpen()):(P.ctrlKey||P.metaKey)&&P.key==="g"?(P.preventDefault(),ce.goToLineVisible.value?ce.closeGoToLine():ce.openGoToLine()):(P.ctrlKey||P.metaKey)&&P.key==="f"?S.activeFile.value&&(P.preventDefault(),D.openFindBar(!1)):(P.ctrlKey||P.metaKey)&&(P.key==="r"||P.key==="h")?S.activeFile.value&&(P.preventDefault(),D.openFindBar(!0)):P.key==="Escape"&&(D.findBarVisible.value&&D.closeFindBar(),G.selectedPaths.size>0&&G.clearSelection(),ce.quickOpenVisible.value&&ce.closeQuickOpen(),ce.goToLineVisible.value&&ce.closeGoToLine()))},E=()=>{G.hideContextMenu()},ae=()=>{w.value=window.innerWidth<=768};Vue.watch(()=>S.activeFileIndex.value,(P,re)=>{w.value&&P>=0&&P!==re&&(I.value="editor")}),Vue.watch(()=>S.openFiles.value.length,P=>{w.value&&P===0&&(I.value="tree")});let pe=Vue.computed(()=>{let P=S.activeFile.value?.path||"",re=Math.max(P.lastIndexOf("/"),P.lastIndexOf("\\"));return re>0?P.slice(0,re):a()}),U=()=>{window.dispatchEvent(new CustomEvent("workbench-file-items-changed",{detail:{routeKey:e.routeKey,workspaceGeneration:e.workspaceGeneration,files:S.openFiles.value.map(P=>({path:P.path,name:P.name,isDirty:!!P.isDirty})),activePath:S.activeFile.value?.path||""}}))},{handleSelectFileItem:J,handleCloseFileItem:R,handleCloseFileItems:ee,handleCloseFilesCapability:V}=_k({liveStore:t,props:e,tabs:S,isDisposed:()=>i});return Vue.watch([S.openFiles,S.activeFileIndex],U,{deep:!0,flush:"post"}),Vue.onMounted(()=>{window.addEventListener("workbench-message",N.handleWorkbenchMessage),window.addEventListener("workbench-open-file-in-active-view",N.handleOpenFile),window.addEventListener("workbench-select-file-item",J),window.addEventListener("workbench-close-file-item",R),window.addEventListener("workbench-close-file-items",ee),window.addEventListener("workbench-close-files-capability",V),window.addEventListener("conversation-deleted",S.handleConversationDeleted),window.addEventListener("keydown",se),document.addEventListener("click",E),window.addEventListener("resize",ae),X.initMermaid(),s.currentAgent&&(M.initFileBrowser(),s.sendWsMessage({type:"restore_file_tabs",restoreRequestId:S.beginTabsRestoreRequest()}))}),Vue.onActivated(()=>{r.value=!0,U()}),Vue.onDeactivated(()=>{r.value=!1,ce.closeQuickOpen(),ce.closeGoToLine(),D.closeFindBar(),G.hideContextMenu()}),Vue.onUnmounted(()=>{i=!0,S.saveTabsState(s.currentConversation),window.removeEventListener("workbench-message",N.handleWorkbenchMessage),window.removeEventListener("workbench-open-file-in-active-view",N.handleOpenFile),window.removeEventListener("workbench-select-file-item",J),window.removeEventListener("workbench-close-file-item",R),window.removeEventListener("workbench-close-file-items",ee),window.removeEventListener("workbench-close-files-capability",V),window.removeEventListener("conversation-deleted",S.handleConversationDeleted),window.removeEventListener("keydown",se),document.removeEventListener("click",E),window.removeEventListener("resize",ae),j.destroyEditor(),G.cleanup()}),{store:s,debugStatus:j.debugStatus,rootEl:b,treeVisible:o,isMobile:w,mobileView:I,mobileGoBack:y,fontSize:k,zoomIn:A,zoomOut:Q,isTextZoomAvailable:H,onWheel:z,openActiveImagePreview:m,treePath:M.treePath,treeRootPath:M.treeRootPath,treeNodes:M.treeNodes,flattenedTree:M.flattenedTree,editingTreePath:M.editingTreePath,treePathInputRef:M.treePathInputRef,rootFolderName:M.rootFolderName,startTreePathEdit:M.startTreePathEdit,confirmTreePath:M.confirmTreePath,cancelTreePathEdit:M.cancelTreePathEdit,treePanelWidth:$,isTreeResizing:te,startTreeResize:F,openFiles:S.openFiles,activeFileIndex:S.activeFileIndex,activeFile:S.activeFile,activeFileFolder:pe,fileLoading:S.fileLoading,fileSaving:S.fileSaving,editorContainer:h,officePreviewContainer:X.officePreviewContainer,mdPreviewRef:X.mdPreviewRef,isActiveMarkdown:X.isActiveMarkdown,mdPreviewMode:X.mdPreviewMode,mdRenderedHtml:X.mdRenderedHtml,switchToMdEdit:X.switchToMdEdit,folderPickerOpen:be.folderPickerOpen,folderPickerPath:be.folderPickerPath,folderPickerEntries:be.folderPickerEntries,folderPickerLoading:be.folderPickerLoading,folderPickerSelected:be.folderPickerSelected,searchQuery:ce.searchQuery,searchResults:ce.searchResults,searchLoading:ce.searchLoading,onSearchInput:ce.onSearchInput,clearSearch:ce.clearSearch,onSearchResultClick:ce.onSearchResultClick,quickOpenVisible:ce.quickOpenVisible,quickOpenQuery:ce.quickOpenQuery,quickOpenResults:ce.quickOpenResults,quickOpenSelectedIndex:ce.quickOpenSelectedIndex,quickOpenLoading:ce.quickOpenLoading,quickOpenInput:ce.quickOpenInput,openQuickOpen:ce.openQuickOpen,closeQuickOpen:ce.closeQuickOpen,onQuickOpenInput:ce.onQuickOpenInput,quickOpenSelectNext:ce.quickOpenSelectNext,quickOpenSelectPrev:ce.quickOpenSelectPrev,quickOpenConfirm:ce.quickOpenConfirm,quickOpenOpenFile:ce.quickOpenOpenFile,goToLineVisible:ce.goToLineVisible,goToLineValue:ce.goToLineValue,goToLineInput:ce.goToLineInput,openGoToLine:ce.openGoToLine,closeGoToLine:ce.closeGoToLine,goToLineConfirm:_e,findBarVisible:D.findBarVisible,replaceBarVisible:D.replaceBarVisible,findQuery:D.findQuery,replaceQuery:D.replaceQuery,findCaseSensitive:D.findCaseSensitive,findUseRegex:D.findUseRegex,findMatchCount:D.findMatchCount,findMatchIndex:D.findMatchIndex,findInputRef:D.findInputRef,replaceInputRef:D.replaceInputRef,onFindInput:D.onFindInput,findNext:D.findNext,findPrev:D.findPrev,openFindBar:D.openFindBar,closeFindBar:D.closeFindBar,toggleReplaceBar:D.toggleReplaceBar,replaceOne:D.replaceOne,replaceAll:D.replaceAll,selectedPaths:G.selectedPaths,fileOperating:G.fileOperating,fileOpFeedback:G.fileOpFeedback,newFileDialogVisible:G.newFileDialogVisible,newFileName:G.newFileName,newFileType:G.newFileType,newFileInput:G.newFileInput,moveDialogVisible:G.moveDialogVisible,moveDestination:G.moveDestination,moveDestInput:G.moveDestInput,toggleSelection:G.toggleSelection,clearSelection:G.clearSelection,showNewFileDialog:G.showNewFileDialog,confirmNewFile:G.confirmNewFile,deleteSingleFile:Z,deleteSelected:K,openMoveDialog:G.openMoveDialog,confirmMove:G.confirmMove,contextMenu:G.contextMenu,showContextMenu:G.showContextMenu,hideContextMenu:G.hideContextMenu,ctxRename:G.ctxRename,ctxCopy:G.ctxCopy,ctxMoveTo:G.ctxMoveTo,ctxDelete:oe,ctxDownload:G.ctxDownload,downloadActiveFile:ge,renameDialogVisible:G.renameDialogVisible,renameNewName:G.renameNewName,renameInput:G.renameInput,confirmRename:G.confirmRename,dragState:G.dragState,externalDropActive:G.externalDropActive,onDragStart:G.onDragStart,onDragOver:G.onDragOver,onDragLeave:G.onDragLeave,onDrop:he,onTreeDragOver:G.onTreeDragOver,onTreeDragLeave:G.onTreeDragLeave,onTreeDrop:xe,loadRootDirectory:M.loadRootDirectory,onTreeItemClick:M.onTreeItemClick,openFileInTab:S.openFileInTab,switchToTab:S.switchToTab,closeFileTab:S.closeFileTab,saveFile:S.saveFile,openFolderPicker:be.openFolderPicker,folderPickerNavigateUp:be.folderPickerNavigateUp,folderPickerSelectItem:be.folderPickerSelectItem,folderPickerEnter:be.folderPickerEnter,confirmFolderPicker:be.confirmFolderPicker,getFileIcon:()=>"",getFileIconHtml:c,getFolderIcon:d,formatSize:u,onImagePreviewLoad:p,onImagePreviewError:f,onVideoPreviewLoad:g,onVideoPreviewError:v,refresh:M.refresh,placeholderPath:Vue.computed(()=>{let P=a();return P?n("files.workDir",{dir:P}):n("files.enterDirPath")})}}}});var Ek,Nh,Wh=B(()=>{dh();Sh();Bh();Ek=Object.freeze({terminal:"TerminalTab",git:"GitStatusTab",files:"FilesTab"}),Nh={name:"WorkbenchCapabilityHost",components:{TerminalTab:ch,GitStatusTab:kh,FilesTab:Hh},props:{activeCapability:{type:String,default:null},retainedCapabilities:{type:Array,default:()=>[]},routeProps:{type:Object,required:!0}},template:`
2785
2785
  <div class="workbench-capability-host" :class="activeCapability ? 'capability-' + activeCapability : ''">
2786
2786
  <component
2787
2787
  v-for="capability in mountedCapabilities"
@@ -2967,7 +2967,7 @@ ${String(e||"").trim()}
2967
2967
  </div>
2968
2968
  </div>
2969
2969
  </section>
2970
- `,setup(e){let t=vo(),s=Vue.ref(null),n=Vue.ref(null),r=Vue.ref(!1),i=Vue.ref(!1),o=Vue.ref(!1),a=Vue.ref(!1),l=Vue.ref(!1),c=Vue.ref(!1),d=Vue.ref(""),u=Vue.ref(""),p=Vue.ref(""),f=Vue.ref(null),g=null,v=!1,m=Lk(V=>t.sendControl(e.agentId,f.value,V)),b=Ok(m);t.installMessageListener();let h=Vue.computed(()=>t.runtimeStatus[e.agentId]||(e.runtimeReady?{supported:!0,installed:!0,enabled:!0,ready:!0,state:"ready"}:null)),w=Vue.computed(()=>t.installProgress[e.agentId]||null),I=Vue.computed(()=>i.value||h.value?.state==="installing"),y=Vue.computed(()=>I.value||o.value||h.value?.state==="probing"),k=Vue.computed(()=>_c(h.value?.downloadBytes)),_=Vue.computed(()=>{let V=Number(w.value?.downloadedBytes??h.value?.downloadedBytes)||0,P=Number(w.value?.totalBytes??h.value?.totalBytes??h.value?.downloadBytes)||0;return P<=0?0:Math.min(100,Math.max(0,Math.round(V*100/P)))}),A=Vue.computed(()=>{let V=Number(w.value?.downloadedBytes??h.value?.downloadedBytes)||0,P=Number(w.value?.totalBytes??h.value?.totalBytes??h.value?.downloadBytes)||0;return De("workbench.browserInstallProgress",{downloaded:_c(V),total:_c(P)})}),Q=Vue.computed(()=>`${e.agentId||""}\0${f.value||""}`),H=Vue.computed(()=>f.value&&t.sessions[Q.value]||null),z=Vue.computed(()=>f.value&&t.peers[Q.value]||null),$=Vue.computed(()=>z.value?.state==="connected"),te=Vue.computed(()=>{let V=t.errorCodes[Q.value];return V==="browser_ice_servers_missing"?De("workbench.browserIceServersMissing"):V==="browser_ice_connection_failed"?De("workbench.browserIceConnectionFailed"):V==="browser_peer_attach_timeout"?De("workbench.browserPeerAttachTimeout"):t.errors[Q.value]||""}),F=Vue.computed(()=>{let V=t.peerDiagnostics[Q.value];if(!V||$.value||!H.value)return"";let P=V.iceConnectionState||V.connectionState||"new",re=Number(V.candidateErrors)||0;return re>0?`${P} \xB7 ICE ${re}`:P}),S=Vue.computed(()=>p.value||te.value),M=Vue.computed(()=>$.value?"connected":S.value||u.value||h.value?.safeError?"failed":"connecting"),L=Vue.computed(()=>H.value?.activeUrl||""),T=Vue.computed(()=>I.value?De("workbench.browserStatusInstalling"):o.value||h.value?.state==="probing"?De("workbench.browserStatusProbing"):S.value?S.value:$.value?f.value?"WebRTC":"":H.value?De("workbench.browserStatusConnecting"):""),D=()=>e.runtimeProvider==="yeaft"&&e.sessionId?{kind:"yeaft-session",sessionId:e.sessionId}:e.sessionId?{kind:"chat-conversation",conversationId:e.sessionId}:null,U=()=>{clearTimeout(g),g=null},X=()=>{U(),!(v||i.value||!["installing","probing"].includes(h.value?.state))&&(g=setTimeout(()=>{ue({startWhenReady:!0})},2e3))},G=async()=>{!f.value||!s.value||(t.detach(e.agentId,f.value,{notify:!0}),await t.attach({agentId:e.agentId,browserSessionId:f.value,videoElement:s.value}))},ce=async(V=null)=>{if(!(a.value||!e.agentId||h.value?.ready!==!0)){a.value=!0,p.value="";try{let P=D(),we=(await t.listSessions(e.agentId)).find(Ve=>Ve.state==="ready"&&Vk(Ve,P))||null;if(we||(we=await t.createSession({agentId:e.agentId,sourceRef:P,initialUrl:V||"about:blank",locale:document.documentElement.lang||"en-US",viewport:{width:1280,height:720,deviceScaleFactor:1}})),f.value=we.browserSessionId,d.value=V||(we.activeUrl==="about:blank"?"":we.activeUrl),a.value=!1,await Vue.nextTick(),await G(),V&&we.activeUrl!==V){let Ve=Date.now()+1e4;for(;!t.interactiveReady(e.agentId,we.browserSessionId);){if(Date.now()>=Ve)throw new Error(De("workbench.browserInteractionUnavailable"));await new Promise(Be=>setTimeout(Be,50))}t.sendControl(e.agentId,we.browserSessionId,{type:"navigate",url:V})}}catch(P){p.value=P?.message||String(P)}finally{a.value=!1}}},be=async()=>{let V=Dk(d.value);if(!V){p.value=De("workbench.browserAddressInvalid");return}if(p.value="",!H.value){await ce(V);return}c.value=!0;try{if(!t.sendControl(e.agentId,f.value,{type:"navigate",url:V}))throw new Error(De("workbench.browserInteractionUnavailable"));d.value=V}catch(P){p.value=P?.message||String(P)}finally{c.value=!1}},N=V=>$k(V,s.value,H.value?.viewport),Z=V=>{let P=N(V);P&&t.sendPointer(e.agentId,f.value,{type:"pointerMove",...P})},K=V=>["left","middle","right"][V]||"left",oe=V=>{let P=N(V);P&&(n.value?.focus?.({preventScroll:!0}),s.value?.setPointerCapture?.(V.pointerId),m.pointerDown(K(V.button),P))},he=V=>{m.pointerUp(K(V.button),N(V))},xe=V=>t.sendControl(e.agentId,f.value,{type:"wheel",deltaX:V.deltaX,deltaY:V.deltaY}),_e=V=>{m.keyDown(V)&&V.preventDefault()},ge=V=>{m.keyUp(V.key)&&V.preventDefault()},ne=b.compositionstart,se=b.compositionend,E=b.input,ae=()=>m.reset(),ue=async({startWhenReady:V=!1,preserveError:P=!1}={})=>{if(!(r.value||!e.agentId||t.protocolSupported!==!0)){r.value=!0,P||(u.value="");try{let re=await t.getRuntimeStatus(e.agentId);if(v)return;["installing","probing"].includes(re.state)?X():U(),V&&re.ready===!0&&H.value&&await G()}catch(re){(!P||!u.value)&&(u.value=re?.message||String(re))}finally{r.value=!1}}},j=async()=>{let V=h.value;if(y.value||!V)return;!V.installed?i.value=!0:o.value=!0,u.value="",U();try{await t.setupRuntime(e.agentId,V)}catch(re){u.value=re?.message||String(re),await ue({preserveError:!0})}finally{i.value=!1,o.value=!1,X()}},J=async()=>{if(!H.value||l.value)return;l.value=!0,p.value="";let V=f.value;try{t.detach(e.agentId,V,{notify:!1}),await t.closeSession(e.agentId,V,H.value.revision),f.value=null}catch(P){p.value=P?.message||String(P)}finally{l.value=!1}},R=()=>ae(),ee=()=>{document.visibilityState==="hidden"&&ae()};return Vue.onMounted(()=>{window.addEventListener("blur",R),document.addEventListener("visibilitychange",ee),t.protocolSupported===!0&&ue()}),Vue.watch(()=>t.protocolSupported,(V,P)=>{V===!0&&P!==!0&&ue(),V===!1&&(u.value=De("workbench.browserProtocolUnavailable"))}),Vue.watch(()=>e.runtimeReady,(V,P)=>{!V||P===!0||v||(delete t.runtimeStatus[e.agentId],ue())}),Vue.watch(()=>h.value?.state,V=>{["installing","probing"].includes(V)?X():U()}),Vue.watch(L,V=>{V&&V!=="about:blank"&&document.activeElement?.closest?.(".browser-location")==null&&(d.value=V)}),Vue.onUnmounted(()=>{v=!0,U(),window.removeEventListener("blur",R),document.removeEventListener("visibilitychange",ee),ae(),f.value&&t.detach(e.agentId,f.value,{notify:!0})}),{video:s,inputSink:n,runtimeLoading:r,installing:i,enabling:o,viewerLoading:a,closing:l,navigating:c,address:d,setupError:u,displayError:S,peerDiagnosticText:F,runtimeStatus:h,runtimeInstalling:I,setupInProgress:y,downloadSize:k,progressPercent:_,progressText:A,snapshot:H,connected:$,connectionClass:M,displayUrl:L,statusText:T,refreshRuntime:ue,setupRuntime:j,attach:G,startViewer:ce,navigate:be,onPointerMove:Z,onPointerDown:oe,onPointerUp:he,onWheel:xe,onKeyDown:_e,onKeyUp:ge,onCompositionStart:ne,onCompositionEnd:se,onTextInput:E,releaseInput:ae,closeBrowser:J}}}});var ta,Ec=B(()=>{Wh();Uh();ws();ta={name:"WorkbenchPanel",components:{WorkbenchCapabilityHost:Nh,BrowserPanel:jh},template:`
2970
+ `,setup(e){let t=vo(),s=Vue.ref(null),n=Vue.ref(null),r=Vue.ref(!1),i=Vue.ref(!1),o=Vue.ref(!1),a=Vue.ref(!1),l=Vue.ref(!1),c=Vue.ref(!1),d=Vue.ref(""),u=Vue.ref(""),p=Vue.ref(""),f=Vue.ref(null),g=null,v=!1,m=Lk(V=>t.sendControl(e.agentId,f.value,V)),b=Ok(m);t.installMessageListener();let h=Vue.computed(()=>t.runtimeStatus[e.agentId]||(e.runtimeReady?{supported:!0,installed:!0,enabled:!0,ready:!0,state:"ready"}:null)),w=Vue.computed(()=>t.installProgress[e.agentId]||null),I=Vue.computed(()=>i.value||h.value?.state==="installing"),y=Vue.computed(()=>I.value||o.value||h.value?.state==="probing"),k=Vue.computed(()=>_c(h.value?.downloadBytes)),_=Vue.computed(()=>{let V=Number(w.value?.downloadedBytes??h.value?.downloadedBytes)||0,P=Number(w.value?.totalBytes??h.value?.totalBytes??h.value?.downloadBytes)||0;return P<=0?0:Math.min(100,Math.max(0,Math.round(V*100/P)))}),A=Vue.computed(()=>{let V=Number(w.value?.downloadedBytes??h.value?.downloadedBytes)||0,P=Number(w.value?.totalBytes??h.value?.totalBytes??h.value?.downloadBytes)||0;return De("workbench.browserInstallProgress",{downloaded:_c(V),total:_c(P)})}),Q=Vue.computed(()=>`${e.agentId||""}\0${f.value||""}`),H=Vue.computed(()=>f.value&&t.sessions[Q.value]||null),z=Vue.computed(()=>f.value&&t.peers[Q.value]||null),$=Vue.computed(()=>z.value?.state==="connected"),te=Vue.computed(()=>{let V=t.errorCodes[Q.value];return V==="browser_ice_servers_missing"?De("workbench.browserIceServersMissing"):V==="browser_ice_connection_failed"?De("workbench.browserIceConnectionFailed"):V==="browser_peer_attach_timeout"?De("workbench.browserPeerAttachTimeout"):t.errors[Q.value]||""}),F=Vue.computed(()=>{let V=t.peerDiagnostics[Q.value];if(!V||$.value||!H.value)return"";let P=V.iceConnectionState||V.connectionState||"new",re=Number(V.candidateErrors)||0;return re>0?`${P} \xB7 ICE ${re}`:P}),S=Vue.computed(()=>p.value||te.value),M=Vue.computed(()=>$.value?"connected":S.value||u.value||h.value?.safeError?"failed":"connecting"),L=Vue.computed(()=>H.value?.activeUrl||""),T=Vue.computed(()=>I.value?De("workbench.browserStatusInstalling"):o.value||h.value?.state==="probing"?De("workbench.browserStatusProbing"):S.value?S.value:$.value?f.value?"WebRTC":"":H.value?De("workbench.browserStatusConnecting"):""),D=()=>e.runtimeProvider==="yeaft"&&e.sessionId?{kind:"yeaft-session",sessionId:e.sessionId}:e.sessionId?{kind:"chat-conversation",conversationId:e.sessionId}:null,j=()=>{clearTimeout(g),g=null},X=()=>{j(),!(v||i.value||!["installing","probing"].includes(h.value?.state))&&(g=setTimeout(()=>{pe({startWhenReady:!0})},2e3))},G=async()=>{!f.value||!s.value||(t.detach(e.agentId,f.value,{notify:!0}),await t.attach({agentId:e.agentId,browserSessionId:f.value,videoElement:s.value}))},ce=async(V=null)=>{if(!(a.value||!e.agentId||h.value?.ready!==!0)){a.value=!0,p.value="";try{let P=D(),we=(await t.listSessions(e.agentId)).find(Ve=>Ve.state==="ready"&&Vk(Ve,P))||null;if(we||(we=await t.createSession({agentId:e.agentId,sourceRef:P,initialUrl:V||"about:blank",locale:document.documentElement.lang||"en-US",viewport:{width:1280,height:720,deviceScaleFactor:1}})),f.value=we.browserSessionId,d.value=V||(we.activeUrl==="about:blank"?"":we.activeUrl),a.value=!1,await Vue.nextTick(),await G(),V&&we.activeUrl!==V){let Ve=Date.now()+1e4;for(;!t.interactiveReady(e.agentId,we.browserSessionId);){if(Date.now()>=Ve)throw new Error(De("workbench.browserInteractionUnavailable"));await new Promise(Be=>setTimeout(Be,50))}t.sendControl(e.agentId,we.browserSessionId,{type:"navigate",url:V})}}catch(P){p.value=P?.message||String(P)}finally{a.value=!1}}},be=async()=>{let V=Dk(d.value);if(!V){p.value=De("workbench.browserAddressInvalid");return}if(p.value="",!H.value){await ce(V);return}c.value=!0;try{if(!t.sendControl(e.agentId,f.value,{type:"navigate",url:V}))throw new Error(De("workbench.browserInteractionUnavailable"));d.value=V}catch(P){p.value=P?.message||String(P)}finally{c.value=!1}},N=V=>$k(V,s.value,H.value?.viewport),Z=V=>{let P=N(V);P&&t.sendPointer(e.agentId,f.value,{type:"pointerMove",...P})},K=V=>["left","middle","right"][V]||"left",oe=V=>{let P=N(V);P&&(n.value?.focus?.({preventScroll:!0}),s.value?.setPointerCapture?.(V.pointerId),m.pointerDown(K(V.button),P))},he=V=>{m.pointerUp(K(V.button),N(V))},xe=V=>t.sendControl(e.agentId,f.value,{type:"wheel",deltaX:V.deltaX,deltaY:V.deltaY}),_e=V=>{m.keyDown(V)&&V.preventDefault()},ge=V=>{m.keyUp(V.key)&&V.preventDefault()},ne=b.compositionstart,se=b.compositionend,E=b.input,ae=()=>m.reset(),pe=async({startWhenReady:V=!1,preserveError:P=!1}={})=>{if(!(r.value||!e.agentId||t.protocolSupported!==!0)){r.value=!0,P||(u.value="");try{let re=await t.getRuntimeStatus(e.agentId);if(v)return;["installing","probing"].includes(re.state)?X():j(),V&&re.ready===!0&&H.value&&await G()}catch(re){(!P||!u.value)&&(u.value=re?.message||String(re))}finally{r.value=!1}}},U=async()=>{let V=h.value;if(y.value||!V)return;!V.installed?i.value=!0:o.value=!0,u.value="",j();try{await t.setupRuntime(e.agentId,V)}catch(re){u.value=re?.message||String(re),await pe({preserveError:!0})}finally{i.value=!1,o.value=!1,X()}},J=async()=>{if(!H.value||l.value)return;l.value=!0,p.value="";let V=f.value;try{t.detach(e.agentId,V,{notify:!1}),await t.closeSession(e.agentId,V,H.value.revision),f.value=null}catch(P){p.value=P?.message||String(P)}finally{l.value=!1}},R=()=>ae(),ee=()=>{document.visibilityState==="hidden"&&ae()};return Vue.onMounted(()=>{window.addEventListener("blur",R),document.addEventListener("visibilitychange",ee),t.protocolSupported===!0&&pe()}),Vue.watch(()=>t.protocolSupported,(V,P)=>{V===!0&&P!==!0&&pe(),V===!1&&(u.value=De("workbench.browserProtocolUnavailable"))}),Vue.watch(()=>e.runtimeReady,(V,P)=>{!V||P===!0||v||(delete t.runtimeStatus[e.agentId],pe())}),Vue.watch(()=>h.value?.state,V=>{["installing","probing"].includes(V)?X():j()}),Vue.watch(L,V=>{V&&V!=="about:blank"&&document.activeElement?.closest?.(".browser-location")==null&&(d.value=V)}),Vue.onUnmounted(()=>{v=!0,j(),window.removeEventListener("blur",R),document.removeEventListener("visibilitychange",ee),ae(),f.value&&t.detach(e.agentId,f.value,{notify:!0})}),{video:s,inputSink:n,runtimeLoading:r,installing:i,enabling:o,viewerLoading:a,closing:l,navigating:c,address:d,setupError:u,displayError:S,peerDiagnosticText:F,runtimeStatus:h,runtimeInstalling:I,setupInProgress:y,downloadSize:k,progressPercent:_,progressText:A,snapshot:H,connected:$,connectionClass:M,displayUrl:L,statusText:T,refreshRuntime:pe,setupRuntime:U,attach:G,startViewer:ce,navigate:be,onPointerMove:Z,onPointerDown:oe,onPointerUp:he,onWheel:xe,onKeyDown:_e,onKeyUp:ge,onCompositionStart:ne,onCompositionEnd:se,onTextInput:E,releaseInput:ae,closeBrowser:J}}}});var ta,Ec=B(()=>{Wh();Uh();ws();ta={name:"WorkbenchPanel",components:{WorkbenchCapabilityHost:Nh,BrowserPanel:jh},template:`
2971
2971
  <div ref="panelRoot" class="workbench-panel" :class="{ expanded: store.workbenchExpanded, maximized: store.workbenchMaximized }" :style="panelStyle">
2972
2972
  <div class="workbench-content" v-show="store.workbenchExpanded">
2973
2973
  <header class="workbench-header">
@@ -3183,7 +3183,7 @@ ${String(e||"").trim()}
3183
3183
 
3184
3184
  <div class="resize-handle" @mousedown="startResize" @touchstart.prevent="startResize" v-if="store.workbenchExpanded"></div>
3185
3185
  </div>
3186
- `,setup(){let e=Pinia.useChatStore(),t=Vue.ref(null),s=Vue.ref(null),n=Vue.ref(null),r=Vue.ref(null),i=Vue.ref(!1),o=Vue.ref(null),a=Vue.ref(null),l=Vue.ref(null),c=Vue.ref(null),d=Vue.ref(null),u=Vue.reactive({visible:!1,x:0,y:0}),p=Vue.reactive({visible:!1,x:0,y:0,itemId:"",index:-1}),f=Vue.ref([]),g=new Map,v=!1,m=Vue.getCurrentInstance(),b=(q,ie)=>m?.proxy?.$t?.(q,ie)||q,h=Vue.computed(()=>e.activeSessionRoute||null),w=Vue.computed(()=>dt(h.value)),I=Vue.computed(()=>e.effectiveWorkDir||""),y=Vue.computed(()=>bn(w.value,I.value)),k=Vue.computed(()=>`${w.value}\0${y.value}`),_=Vue.computed(()=>({routeKey:w.value,runtimeProvider:h.value?.runtimeProvider||"",agentId:h.value?.agentId||"",sessionId:h.value?.sessionId||"",conversationId:Gr(w.value),workDir:I.value,workspaceGeneration:y.value})),A=Vue.computed(()=>e.workbenchRouteProtocolSupported===!0&&e.hasCapability("workbench_session_routes")),Q=Vue.computed(()=>A.value&&e.hasCapability("terminal")),H=Vue.computed(()=>A.value&&e.hasCapability("file_editor")),z=Vue.computed(()=>e.browserRuntimeServerEnabled===!0&&e.browserRuntimeProtocolSupported===!0&&e.browserRuntimeSetupProtocolSupported===!0&&e.hasCapability("browser_runtime_setup")),$=Vue.computed(()=>e.browserRuntimeServerEnabled===!0&&e.browserRuntimeProtocolSupported===!0&&e.hasCapability("browser_runtime")&&e.hasCapability("browser_webrtc")&&(e.hasCapability("browser_capture_tab")||e.hasCapability("browser_capture_cdp"))),te=Vue.computed(()=>$.value||z.value),F=(q,ie,ve,Te,$e=Te)=>({id:q,titleKey:ie,descriptionKey:ve,available:Te,ready:$e,statusKey:Te?$e?"workbench.available":"workbench.enableRequired":"workbench.unavailable"}),S=Vue.computed(()=>[F("terminal","workbench.terminal","workbench.terminalDescription",Q.value),F("git","workbench.git","workbench.gitDescription",H.value),F("files","workbench.files","workbench.filesDescription",H.value),F("browser","workbench.browser","workbench.browserDescription",te.value,$.value)]),M=Vue.ref(null),L=Vue.reactive(new Set),T=Vue.reactive([]),D=Vue.ref([]),U=Vue.ref(""),X=new Map,G=Vue.computed(()=>S.value.find(q=>q.id===M.value)||null),ce=Vue.computed(()=>G.value?.titleKey||"workbench.title"),be=Vue.computed(()=>G.value?.available===!1),N=Vue.computed(()=>G.value?.available&&["terminal","git","files"].includes(M.value)&&oe(M.value)?M.value:null),Z=Vue.computed(()=>({openCapabilities:T.filter(q=>S.value.find(ve=>ve.id===q)?.available&&["terminal","git","files"].includes(q)),routeProps:{..._.value}})),K=q=>`${k.value}\0${q}`,oe=q=>L.has(K(q)),he=q=>{T.includes(q)||T.push(q)},xe=q=>{let ie=S.value.find(ve=>ve.id===q);return ie?b(ie.titleKey):q},_e=q=>`file:${q}`,ge=Vue.computed(()=>{let q=[];for(let ie of T){if(ie==="files"){for(let ve of D.value)q.push({id:_e(ve.path),capabilityId:"files",path:ve.path,label:ve.name,title:ve.path,dirty:ve.isDirty});D.value.length===0&&q.push({id:"files",capabilityId:"files",label:xe("files")});continue}q.push({id:ie,capabilityId:ie,label:xe(ie)})}return q}),ne=Vue.computed(()=>M.value==="files"&&U.value?_e(U.value):M.value),se=Vue.computed(()=>new Set(f.value)),E=Vue.computed(()=>ge.value.filter(q=>q.id===ne.value||!se.value.has(q.id))),ae=Vue.computed(()=>ge.value.filter(q=>q.id!==ne.value&&se.value.has(q.id))),ue=()=>{k.value&&X.set(k.value,{activeCapability:M.value,openCapabilities:[...T]})},j=()=>{let q=X.get(k.value);T.splice(0,T.length,...q?.openCapabilities||[]);let ie=q?.activeCapability||T[0]||null;if(!ie||!S.value.some(ve=>ve.id===ie)){M.value=null;return}L.add(K(ie)),M.value=ie},J=()=>[...a.value?.querySelectorAll(".workbench-add-menu-item")||[]],R=(q=0)=>Vue.nextTick(()=>{let ie=J();ie[Math.max(0,Math.min(q,ie.length-1))]?.focus()}),ee=async()=>{await Vue.nextTick();let q=o.value?.getBoundingClientRect(),ie=a.value;if(!q||!ie)return;let ve=8,Te=Math.min(ie.getBoundingClientRect().width,window.innerWidth-ve*2),$e=Math.max(ve,Math.min(q.left,window.innerWidth-Te-ve));ie.style.left=`${$e}px`,ie.style.top=`${q.bottom+4}px`},V=(q=0)=>{i.value=!0,ee(),R(q)},P=(q=!1)=>{i.value=!1,q&&Vue.nextTick(()=>o.value?.focus())},re=()=>{i.value?P():V()},we=q=>{q.key==="ArrowDown"?(q.preventDefault(),V(0)):q.key==="ArrowUp"?(q.preventDefault(),V(S.value.length-1)):q.key==="Escape"&&i.value&&(q.preventDefault(),P(!0))},Ve=q=>{let ie=J(),ve=ie.indexOf(document.activeElement),Te=ve;if(q.key==="ArrowDown")Te=(ve+1)%ie.length;else if(q.key==="ArrowUp")Te=(ve-1+ie.length)%ie.length;else if(q.key==="Home")Te=0;else if(q.key==="End")Te=ie.length-1;else if(q.key==="Escape"){q.preventDefault(),P(!0);return}else if(q.key==="Tab"){P();return}else return;q.preventDefault(),ie[Te]?.focus()},Be=q=>!S.value.some(ie=>ie.id===q)||["terminal","git","files"].includes(q)&&!w.value?!1:(he(q),L.add(K(q)),M.value=q,P(),ue(),!0),rt=q=>{let ie=q.detail;!ie||ie.routeKey!==w.value||!["terminal","files","git"].includes(ie.capabilityId)||!S.value.some(ve=>ve.id===ie.capabilityId&&ve.available)||Be(ie.capabilityId)&&(e.openWorkbench(),ie.accepted=!0)},st=({routeKey:q,workspaceGeneration:ie})=>new Promise(ve=>{window.dispatchEvent(new CustomEvent("workbench-close-files-capability",{detail:{routeKey:q,workspaceGeneration:ie,resolve:ve}}))}),Je=q=>{let ie=T.indexOf(q);return ie<0?!1:(M.value===q&&(M.value=T[ie+1]||T[ie-1]||null),T.splice(ie,1),L.delete(K(q)),q==="files"&&(D.value=[],U.value=""),ue(),!0)},Rt=async q=>{let ie=q||M.value,ve=k.value;return!T.includes(ie)||ie==="files"&&H.value&&oe(ie)&&(!await st({routeKey:w.value,workspaceGeneration:y.value})||k.value!==ve)?!1:Je(ie)},Bt=q=>{Be(q.capabilityId),q.path&&window.dispatchEvent(new CustomEvent("workbench-select-file-item",{detail:{routeKey:w.value,workspaceGeneration:y.value,path:q.path}}))},Nt=q=>{if(q.path){window.dispatchEvent(new CustomEvent("workbench-close-file-item",{detail:{routeKey:w.value,workspaceGeneration:y.value,path:q.path}}));return}Rt(q.capabilityId)},At=(q,ie)=>{let Te=q?.offsetWidth||220,$e=q?.offsetHeight||200;return{x:Math.max(8,Math.min(ie.left,window.innerWidth-Te-8)),y:Math.max(8,Math.min(ie.bottom+4,window.innerHeight-$e-8))}},at=()=>{u.visible=!1,p.visible=!1},it=()=>[...c.value?.querySelectorAll(".ctx-menu-item:not(:disabled)")||[]],ds=(q=0)=>Vue.nextTick(()=>{let ie=it();if(!ie.length)return;let ve=Math.max(0,Math.min(q,ie.length-1));ie[ve]?.focus()}),et=async(q=0)=>{p.visible=!1,u.visible=!0,await Vue.nextTick();let ie=l.value?.getBoundingClientRect();ie&&Object.assign(u,At(c.value,ie)),ds(q)},ut=(q=!1)=>{u.visible=!1,q&&Vue.nextTick(()=>l.value?.focus())},xt=()=>{u.visible?ut():et()},us=q=>{q.key==="ArrowDown"?(q.preventDefault(),et(0)):q.key==="ArrowUp"?(q.preventDefault(),et(ae.value.length-1)):q.key==="Escape"&&u.visible&&(q.preventDefault(),ut(!0))},pt=q=>{let ie=it(),ve=ie.indexOf(document.activeElement),Te=ve;if(q.key==="ArrowDown")Te=(ve+1)%ie.length;else if(q.key==="ArrowUp")Te=(ve-1+ie.length)%ie.length;else if(q.key==="Home")Te=0;else if(q.key==="End")Te=ie.length-1;else if(q.key==="Escape"){q.preventDefault(),ut(!0);return}else if(q.key==="Tab"){q.preventDefault();let $e=q.shiftKey?l.value:t.value?.querySelector(".workbench-maximize-btn:not(:disabled)");ut(),Vue.nextTick(()=>$e?.focus());return}else return;q.preventDefault(),ie[Te]?.focus()},O=q=>{Bt(q),at()},le=async(q,ie)=>{P(),u.visible=!1;let ve=ge.value.findIndex(Ke=>Ke.id===ie.id);Object.assign(p,{visible:!0,x:q.clientX,y:q.clientY,itemId:ie.id,index:ve}),await Vue.nextTick();let Te=d.value?.offsetWidth||180,$e=d.value?.offsetHeight||220;p.x=Math.max(8,Math.min(q.clientX,window.innerWidth-Te-8)),p.y=Math.max(8,Math.min(q.clientY,window.innerHeight-$e-8))},me=q=>new Promise(ie=>{window.dispatchEvent(new CustomEvent("workbench-close-file-items",{detail:{routeKey:w.value,workspaceGeneration:y.value,paths:q,resolve:ie}}))}),Ae=async q=>{let ie=[...ge.value],ve=ie.findIndex(Ye=>Ye.id===p.itemId);if(ve<0){at();return}let Te=[];q==="current"?Te=[ie[ve]]:q==="others"?Te=ie.filter((Ye,wt)=>wt!==ve):q==="left"?Te=ie.slice(0,ve):q==="right"?Te=ie.slice(ve+1):q==="all"&&(Te=ie),at();let $e=Te.filter(Ye=>Ye.path).map(Ye=>Ye.path),Ke=$e.length>0&&$e.length===D.value.length&&D.value.every(Ye=>$e.includes(Ye.path));if(!($e.length&&!await me($e))){Ke&&Je("files");for(let Ye of Te.filter(wt=>!wt.path))if(!await Rt(Ye.capabilityId))break}},Ie=q=>Vue.nextTick(()=>{[...n.value?.querySelectorAll(".workbench-item-tab")||[]].find(ve=>ve.dataset.workbenchItemId===q)?.querySelector(".workbench-item-select")?.focus()}),Oe=(q,ie)=>{let ve=ge.value,Te=ve.findIndex(Ye=>Ye.id===ie.id),$e=Te;if(q.key==="ArrowLeft")$e=Math.max(0,Te-1);else if(q.key==="ArrowRight")$e=Math.min(ve.length-1,Te+1);else if(q.key==="Home")$e=0;else if(q.key==="End")$e=ve.length-1;else return;q.preventDefault();let Ke=ve[$e];Ke&&(Bt(Ke),Ie(Ke.id))},He=Vue.ref(0),Ue=Vue.ref(!1),_t=Vue.ref(!1),ft=null,bt=null,Js=()=>{bt?.cleanup()};Vue.watch(k,(q,ie)=>{if(q===ie)return;Js(),ie&&(X.set(ie,{activeCapability:M.value,openCapabilities:[...T]}),e.rememberWorkbenchPanelState(ie.split("\0",1)[0],_t.value?He.value:void 0)),e.restoreWorkbenchPanelState(h.value);let ve=e.workbenchPanelWidthForRoute(h.value);_t.value=ve!==null,He.value=ve||0,D.value=[],U.value="",j()},{flush:"sync",immediate:!0});let An=()=>Math.round(t.value?.getBoundingClientRect?.().width||0),xn=()=>{let q=Math.floor(s.value?.clientWidth||s.value?.getBoundingClientRect?.().width||0);if(q<=0)return;let ie=new Set(ge.value.map(Ee=>Ee.id));for(let Ee of g.keys())ie.has(Ee)||g.delete(Ee);for(let Ee of n.value?.querySelectorAll(".workbench-item-tab")||[]){let ht=Math.ceil(Ee.getBoundingClientRect?.().width||Ee.offsetWidth||0);Ee.dataset.workbenchItemId&&ht>0&&g.set(Ee.dataset.workbenchItemId,ht)}let ve=Math.ceil(r.value?.getBoundingClientRect?.().width||r.value?.offsetWidth||32),Te=Ee=>g.get(Ee.id)||96,$e=Math.ceil(l.value?.getBoundingClientRect?.().width||l.value?.offsetWidth||32)+6,Ke=q+(l.value?$e:0);if(ge.value.reduce((Ee,ht)=>Ee+Te(ht),0)+ve<=Ke){f.value=[],u.visible=!1;return}let wt=Math.max(0,Ke-ve-$e),Yt=ne.value,Et=new Set,kt=wt,St=ge.value.find(Ee=>Ee.id===Yt);St&&(Et.add(St.id),kt-=Te(St));for(let Ee of ge.value){if(Et.has(Ee.id))continue;let ht=Te(Ee);ht<=kt&&(Et.add(Ee.id),kt-=ht)}let gt=ge.value.filter(Ee=>!Et.has(Ee.id)).map(Ee=>Ee.id);gt.length===f.value.length&&gt.every((Ee,ht)=>Ee===f.value[ht])||(f.value=gt,gt.length===0&&(u.visible=!1),Vue.nextTick(zt))},zt=()=>{v||(v=!0,Vue.nextTick(()=>{v=!1,xn()}))},en=()=>{window.dispatchEvent(new CustomEvent("workbench-panel-resize",{detail:{width:An()}}))},yr=()=>{f.value=f.value.filter(q=>q!==ne.value),zt()},br=Vue.computed(()=>{if(!e.workbenchExpanded)return{};if(e.workbenchMaximized)return{};if(window.innerWidth<=768)return{};if(!_t.value)return Ue.value?{transition:"none"}:{};let q={width:He.value+"px"};return Ue.value&&(q.transition="none"),q}),wr=q=>{q.preventDefault(),Js();let ie=q.type==="touchstart",ve=ie?q.touches[0].clientX:q.clientX,Te=k.value,$e={...h.value};Ue.value=!0;let Ke=An()||He.value;He.value=Ke,_t.value=!0,document.body.style.cursor="col-resize",document.body.style.userSelect="none";let Ye=null,wt=()=>{document.removeEventListener("mousemove",Et),document.removeEventListener("mouseup",kt),document.removeEventListener("touchmove",Et),document.removeEventListener("touchend",kt),document.removeEventListener("touchcancel",kt),bt===Ye&&(bt=null,Ue.value=!1,document.body.style.cursor="",document.body.style.userSelect="")},Yt=()=>bt===Ye&&k.value===Te,Et=St=>{if(!Yt())return;let gt=ie?St.touches[0]?.clientX:St.clientX;if(!Number.isFinite(gt))return;let Ee=ve-gt,ht=Math.max(900,window.innerWidth-100);He.value=Math.max(280,Math.min(ht,Ke+Ee)),en()},kt=()=>{if(!Yt()){wt();return}e.rememberWorkbenchPanelState($e,He.value),en(),wt()};Ye={cleanup:wt},bt=Ye,document.addEventListener(ie?"touchmove":"mousemove",Et),document.addEventListener(ie?"touchend":"mouseup",kt),ie&&document.addEventListener("touchcancel",kt)},Tn=q=>{if(!H.value||!w.value)return;let ie={...q.detail||{}},ve=ie.workbenchRouteKey||(ie.workbenchRoute?dt(ie.workbenchRoute):""),Te=ie.workspaceGeneration||"";if(!ve||!Te||ve!==w.value||Te!==y.value)return;let $e=k.value,Ke={..._.value};Be("files")&&Vue.nextTick(()=>{k.value===$e&&window.dispatchEvent(new CustomEvent("workbench-open-file-in-active-view",{detail:{...ie,agentId:Ke.agentId,conversationId:Ke.conversationId,workDir:Ke.workDir,workbenchRouteKey:Ke.routeKey,workspaceGeneration:Ke.workspaceGeneration}}))})},Es=q=>{q.detail?.routeKey!==w.value||q.detail?.workspaceGeneration!==y.value||(D.value=Array.isArray(q.detail.files)?q.detail.files:[],U.value=q.detail.activePath||"",D.value.length>0&&he("files"))},lt=q=>{i.value&&!r.value?.contains(q.target)&&!a.value?.contains(q.target)&&P(),u.visible&&!l.value?.contains(q.target)&&!c.value?.contains(q.target)&&(u.visible=!1),p.visible&&!d.value?.contains(q.target)&&(p.visible=!1)};return Vue.onMounted(()=>{window.addEventListener("open-file-in-explorer",Tn),window.addEventListener("workbench-open-capability",rt),window.addEventListener("workbench-file-items-changed",Es),document.addEventListener("click",lt),typeof ResizeObserver<"u"&&t.value&&(ft=new ResizeObserver(()=>{zt(),en()}),ft.observe(t.value)),window.addEventListener("resize",zt),zt()}),Vue.watch([ne,ge],()=>Vue.nextTick(yr),{flush:"post"}),Vue.onUnmounted(()=>{Js(),window.removeEventListener("open-file-in-explorer",Tn),window.removeEventListener("workbench-open-capability",rt),window.removeEventListener("workbench-file-items-changed",Es),document.removeEventListener("click",lt),window.removeEventListener("resize",zt),ft?.disconnect(),ft=null}),{store:e,panelRoot:t,tabRail:s,tabList:n,launcherRoot:r,launcherTrigger:o,launcherMenu:a,launcherOpen:i,openItemsTrigger:l,openItemsMenuElement:c,openItemsMenu:u,tabContextMenuElement:d,tabContextMenu:p,activeCapability:M,activeCapabilityTitleKey:ce,activeCapabilityUnavailable:be,activeToolCapability:N,routeHostState:Z,openCapabilities:T,activeWorkbenchItemId:ne,workbenchItems:ge,visibleWorkbenchItems:E,hiddenWorkbenchItems:ae,capabilityCards:S,routeProps:_,activeRouteKey:w,workbenchContextKey:k,openCapability:Be,closeCapability:Rt,toggleLauncher:re,handleLauncherButtonKeydown:we,handleLauncherMenuKeydown:Ve,closeWorkbenchItem:Nt,selectWorkbenchItem:Bt,selectItemFromMenu:O,toggleOpenItemsMenu:xt,handleOpenItemsButtonKeydown:us,handleOpenItemsMenuKeydown:pt,showTabContextMenu:le,runTabContextAction:Ae,handleWorkbenchTabKeydown:Oe,isCapabilityActivated:oe,hasTerminal:Q,hasExplorer:H,canOpenBrowser:te,hasBrowser:$,panelStyle:br,startResize:wr}}}});function os(e){let t=e?.currentTarget;t&&wi.set(t,{startedOnOverlay:e.target===t,endedOnOverlay:!1})}function as(e){let t=e?.currentTarget,s=t&&wi.get(t);s&&(s.endedOnOverlay=e.target===t)}function ls(e){let t=e?.currentTarget;t&&wi.delete(t)}function _s(e){let t=e?.currentTarget;if(!t)return!1;let s=wi.get(t),n=e.target===t&&s?.startedOnOverlay===!0&&s.endedOnOverlay===!0;return wi.delete(t),n}var wi,pr=B(()=>{wi=new WeakMap});var Qs,Kh,zh=B(()=>{Ot();Qs=20,Kh={name:"DashboardTab",template:`
3186
+ `,setup(){let e=Pinia.useChatStore(),t=Vue.ref(null),s=Vue.ref(null),n=Vue.ref(null),r=Vue.ref(null),i=Vue.ref(!1),o=Vue.ref(null),a=Vue.ref(null),l=Vue.ref(null),c=Vue.ref(null),d=Vue.ref(null),u=Vue.reactive({visible:!1,x:0,y:0}),p=Vue.reactive({visible:!1,x:0,y:0,itemId:"",index:-1}),f=Vue.ref([]),g=new Map,v=!1,m=Vue.getCurrentInstance(),b=(q,ie)=>m?.proxy?.$t?.(q,ie)||q,h=Vue.computed(()=>e.activeSessionRoute||null),w=Vue.computed(()=>dt(h.value)),I=Vue.computed(()=>e.effectiveWorkDir||""),y=Vue.computed(()=>bn(w.value,I.value)),k=Vue.computed(()=>`${w.value}\0${y.value}`),_=Vue.computed(()=>({routeKey:w.value,runtimeProvider:h.value?.runtimeProvider||"",agentId:h.value?.agentId||"",sessionId:h.value?.sessionId||"",conversationId:Gr(w.value),workDir:I.value,workspaceGeneration:y.value})),A=Vue.computed(()=>e.workbenchRouteProtocolSupported===!0&&e.hasCapability("workbench_session_routes")),Q=Vue.computed(()=>A.value&&e.hasCapability("terminal")),H=Vue.computed(()=>A.value&&e.hasCapability("file_editor")),z=Vue.computed(()=>e.browserRuntimeServerEnabled===!0&&e.browserRuntimeProtocolSupported===!0&&e.browserRuntimeSetupProtocolSupported===!0&&e.hasCapability("browser_runtime_setup")),$=Vue.computed(()=>e.browserRuntimeServerEnabled===!0&&e.browserRuntimeProtocolSupported===!0&&e.hasCapability("browser_runtime")&&e.hasCapability("browser_webrtc")&&(e.hasCapability("browser_capture_tab")||e.hasCapability("browser_capture_cdp"))),te=Vue.computed(()=>$.value||z.value),F=(q,ie,ve,Te,$e=Te)=>({id:q,titleKey:ie,descriptionKey:ve,available:Te,ready:$e,statusKey:Te?$e?"workbench.available":"workbench.enableRequired":"workbench.unavailable"}),S=Vue.computed(()=>[F("terminal","workbench.terminal","workbench.terminalDescription",Q.value),F("git","workbench.git","workbench.gitDescription",H.value),F("files","workbench.files","workbench.filesDescription",H.value),F("browser","workbench.browser","workbench.browserDescription",te.value,$.value)]),M=Vue.ref(null),L=Vue.reactive(new Set),T=Vue.reactive([]),D=Vue.ref([]),j=Vue.ref(""),X=new Map,G=Vue.computed(()=>S.value.find(q=>q.id===M.value)||null),ce=Vue.computed(()=>G.value?.titleKey||"workbench.title"),be=Vue.computed(()=>G.value?.available===!1),N=Vue.computed(()=>G.value?.available&&["terminal","git","files"].includes(M.value)&&oe(M.value)?M.value:null),Z=Vue.computed(()=>({openCapabilities:T.filter(q=>S.value.find(ve=>ve.id===q)?.available&&["terminal","git","files"].includes(q)),routeProps:{..._.value}})),K=q=>`${k.value}\0${q}`,oe=q=>L.has(K(q)),he=q=>{T.includes(q)||T.push(q)},xe=q=>{let ie=S.value.find(ve=>ve.id===q);return ie?b(ie.titleKey):q},_e=q=>`file:${q}`,ge=Vue.computed(()=>{let q=[];for(let ie of T){if(ie==="files"){for(let ve of D.value)q.push({id:_e(ve.path),capabilityId:"files",path:ve.path,label:ve.name,title:ve.path,dirty:ve.isDirty});D.value.length===0&&q.push({id:"files",capabilityId:"files",label:xe("files")});continue}q.push({id:ie,capabilityId:ie,label:xe(ie)})}return q}),ne=Vue.computed(()=>M.value==="files"&&j.value?_e(j.value):M.value),se=Vue.computed(()=>new Set(f.value)),E=Vue.computed(()=>ge.value.filter(q=>q.id===ne.value||!se.value.has(q.id))),ae=Vue.computed(()=>ge.value.filter(q=>q.id!==ne.value&&se.value.has(q.id))),pe=()=>{k.value&&X.set(k.value,{activeCapability:M.value,openCapabilities:[...T]})},U=()=>{let q=X.get(k.value);T.splice(0,T.length,...q?.openCapabilities||[]);let ie=q?.activeCapability||T[0]||null;if(!ie||!S.value.some(ve=>ve.id===ie)){M.value=null;return}L.add(K(ie)),M.value=ie},J=()=>[...a.value?.querySelectorAll(".workbench-add-menu-item")||[]],R=(q=0)=>Vue.nextTick(()=>{let ie=J();ie[Math.max(0,Math.min(q,ie.length-1))]?.focus()}),ee=async()=>{await Vue.nextTick();let q=o.value?.getBoundingClientRect(),ie=a.value;if(!q||!ie)return;let ve=8,Te=Math.min(ie.getBoundingClientRect().width,window.innerWidth-ve*2),$e=Math.max(ve,Math.min(q.left,window.innerWidth-Te-ve));ie.style.left=`${$e}px`,ie.style.top=`${q.bottom+4}px`},V=(q=0)=>{i.value=!0,ee(),R(q)},P=(q=!1)=>{i.value=!1,q&&Vue.nextTick(()=>o.value?.focus())},re=()=>{i.value?P():V()},we=q=>{q.key==="ArrowDown"?(q.preventDefault(),V(0)):q.key==="ArrowUp"?(q.preventDefault(),V(S.value.length-1)):q.key==="Escape"&&i.value&&(q.preventDefault(),P(!0))},Ve=q=>{let ie=J(),ve=ie.indexOf(document.activeElement),Te=ve;if(q.key==="ArrowDown")Te=(ve+1)%ie.length;else if(q.key==="ArrowUp")Te=(ve-1+ie.length)%ie.length;else if(q.key==="Home")Te=0;else if(q.key==="End")Te=ie.length-1;else if(q.key==="Escape"){q.preventDefault(),P(!0);return}else if(q.key==="Tab"){P();return}else return;q.preventDefault(),ie[Te]?.focus()},Be=q=>!S.value.some(ie=>ie.id===q)||["terminal","git","files"].includes(q)&&!w.value?!1:(he(q),L.add(K(q)),M.value=q,P(),pe(),!0),rt=q=>{let ie=q.detail;!ie||ie.routeKey!==w.value||!["terminal","files","git"].includes(ie.capabilityId)||!S.value.some(ve=>ve.id===ie.capabilityId&&ve.available)||Be(ie.capabilityId)&&(e.openWorkbench(),ie.accepted=!0)},st=({routeKey:q,workspaceGeneration:ie})=>new Promise(ve=>{window.dispatchEvent(new CustomEvent("workbench-close-files-capability",{detail:{routeKey:q,workspaceGeneration:ie,resolve:ve}}))}),Je=q=>{let ie=T.indexOf(q);return ie<0?!1:(M.value===q&&(M.value=T[ie+1]||T[ie-1]||null),T.splice(ie,1),L.delete(K(q)),q==="files"&&(D.value=[],j.value=""),pe(),!0)},Rt=async q=>{let ie=q||M.value,ve=k.value;return!T.includes(ie)||ie==="files"&&H.value&&oe(ie)&&(!await st({routeKey:w.value,workspaceGeneration:y.value})||k.value!==ve)?!1:Je(ie)},Bt=q=>{Be(q.capabilityId),q.path&&window.dispatchEvent(new CustomEvent("workbench-select-file-item",{detail:{routeKey:w.value,workspaceGeneration:y.value,path:q.path}}))},Nt=q=>{if(q.path){window.dispatchEvent(new CustomEvent("workbench-close-file-item",{detail:{routeKey:w.value,workspaceGeneration:y.value,path:q.path}}));return}Rt(q.capabilityId)},At=(q,ie)=>{let Te=q?.offsetWidth||220,$e=q?.offsetHeight||200;return{x:Math.max(8,Math.min(ie.left,window.innerWidth-Te-8)),y:Math.max(8,Math.min(ie.bottom+4,window.innerHeight-$e-8))}},at=()=>{u.visible=!1,p.visible=!1},it=()=>[...c.value?.querySelectorAll(".ctx-menu-item:not(:disabled)")||[]],ds=(q=0)=>Vue.nextTick(()=>{let ie=it();if(!ie.length)return;let ve=Math.max(0,Math.min(q,ie.length-1));ie[ve]?.focus()}),et=async(q=0)=>{p.visible=!1,u.visible=!0,await Vue.nextTick();let ie=l.value?.getBoundingClientRect();ie&&Object.assign(u,At(c.value,ie)),ds(q)},ut=(q=!1)=>{u.visible=!1,q&&Vue.nextTick(()=>l.value?.focus())},xt=()=>{u.visible?ut():et()},us=q=>{q.key==="ArrowDown"?(q.preventDefault(),et(0)):q.key==="ArrowUp"?(q.preventDefault(),et(ae.value.length-1)):q.key==="Escape"&&u.visible&&(q.preventDefault(),ut(!0))},pt=q=>{let ie=it(),ve=ie.indexOf(document.activeElement),Te=ve;if(q.key==="ArrowDown")Te=(ve+1)%ie.length;else if(q.key==="ArrowUp")Te=(ve-1+ie.length)%ie.length;else if(q.key==="Home")Te=0;else if(q.key==="End")Te=ie.length-1;else if(q.key==="Escape"){q.preventDefault(),ut(!0);return}else if(q.key==="Tab"){q.preventDefault();let $e=q.shiftKey?l.value:t.value?.querySelector(".workbench-maximize-btn:not(:disabled)");ut(),Vue.nextTick(()=>$e?.focus());return}else return;q.preventDefault(),ie[Te]?.focus()},O=q=>{Bt(q),at()},le=async(q,ie)=>{P(),u.visible=!1;let ve=ge.value.findIndex(Ke=>Ke.id===ie.id);Object.assign(p,{visible:!0,x:q.clientX,y:q.clientY,itemId:ie.id,index:ve}),await Vue.nextTick();let Te=d.value?.offsetWidth||180,$e=d.value?.offsetHeight||220;p.x=Math.max(8,Math.min(q.clientX,window.innerWidth-Te-8)),p.y=Math.max(8,Math.min(q.clientY,window.innerHeight-$e-8))},me=q=>new Promise(ie=>{window.dispatchEvent(new CustomEvent("workbench-close-file-items",{detail:{routeKey:w.value,workspaceGeneration:y.value,paths:q,resolve:ie}}))}),Ie=async q=>{let ie=[...ge.value],ve=ie.findIndex(Ye=>Ye.id===p.itemId);if(ve<0){at();return}let Te=[];q==="current"?Te=[ie[ve]]:q==="others"?Te=ie.filter((Ye,wt)=>wt!==ve):q==="left"?Te=ie.slice(0,ve):q==="right"?Te=ie.slice(ve+1):q==="all"&&(Te=ie),at();let $e=Te.filter(Ye=>Ye.path).map(Ye=>Ye.path),Ke=$e.length>0&&$e.length===D.value.length&&D.value.every(Ye=>$e.includes(Ye.path));if(!($e.length&&!await me($e))){Ke&&Je("files");for(let Ye of Te.filter(wt=>!wt.path))if(!await Rt(Ye.capabilityId))break}},Ae=q=>Vue.nextTick(()=>{[...n.value?.querySelectorAll(".workbench-item-tab")||[]].find(ve=>ve.dataset.workbenchItemId===q)?.querySelector(".workbench-item-select")?.focus()}),Oe=(q,ie)=>{let ve=ge.value,Te=ve.findIndex(Ye=>Ye.id===ie.id),$e=Te;if(q.key==="ArrowLeft")$e=Math.max(0,Te-1);else if(q.key==="ArrowRight")$e=Math.min(ve.length-1,Te+1);else if(q.key==="Home")$e=0;else if(q.key==="End")$e=ve.length-1;else return;q.preventDefault();let Ke=ve[$e];Ke&&(Bt(Ke),Ae(Ke.id))},He=Vue.ref(0),Ue=Vue.ref(!1),_t=Vue.ref(!1),ft=null,bt=null,Js=()=>{bt?.cleanup()};Vue.watch(k,(q,ie)=>{if(q===ie)return;Js(),ie&&(X.set(ie,{activeCapability:M.value,openCapabilities:[...T]}),e.rememberWorkbenchPanelState(ie.split("\0",1)[0],_t.value?He.value:void 0)),e.restoreWorkbenchPanelState(h.value);let ve=e.workbenchPanelWidthForRoute(h.value);_t.value=ve!==null,He.value=ve||0,D.value=[],j.value="",U()},{flush:"sync",immediate:!0});let An=()=>Math.round(t.value?.getBoundingClientRect?.().width||0),xn=()=>{let q=Math.floor(s.value?.clientWidth||s.value?.getBoundingClientRect?.().width||0);if(q<=0)return;let ie=new Set(ge.value.map(Ee=>Ee.id));for(let Ee of g.keys())ie.has(Ee)||g.delete(Ee);for(let Ee of n.value?.querySelectorAll(".workbench-item-tab")||[]){let ht=Math.ceil(Ee.getBoundingClientRect?.().width||Ee.offsetWidth||0);Ee.dataset.workbenchItemId&&ht>0&&g.set(Ee.dataset.workbenchItemId,ht)}let ve=Math.ceil(r.value?.getBoundingClientRect?.().width||r.value?.offsetWidth||32),Te=Ee=>g.get(Ee.id)||96,$e=Math.ceil(l.value?.getBoundingClientRect?.().width||l.value?.offsetWidth||32)+6,Ke=q+(l.value?$e:0);if(ge.value.reduce((Ee,ht)=>Ee+Te(ht),0)+ve<=Ke){f.value=[],u.visible=!1;return}let wt=Math.max(0,Ke-ve-$e),Yt=ne.value,Et=new Set,kt=wt,St=ge.value.find(Ee=>Ee.id===Yt);St&&(Et.add(St.id),kt-=Te(St));for(let Ee of ge.value){if(Et.has(Ee.id))continue;let ht=Te(Ee);ht<=kt&&(Et.add(Ee.id),kt-=ht)}let gt=ge.value.filter(Ee=>!Et.has(Ee.id)).map(Ee=>Ee.id);gt.length===f.value.length&&gt.every((Ee,ht)=>Ee===f.value[ht])||(f.value=gt,gt.length===0&&(u.visible=!1),Vue.nextTick(zt))},zt=()=>{v||(v=!0,Vue.nextTick(()=>{v=!1,xn()}))},en=()=>{window.dispatchEvent(new CustomEvent("workbench-panel-resize",{detail:{width:An()}}))},yr=()=>{f.value=f.value.filter(q=>q!==ne.value),zt()},br=Vue.computed(()=>{if(!e.workbenchExpanded)return{};if(e.workbenchMaximized)return{};if(window.innerWidth<=768)return{};if(!_t.value)return Ue.value?{transition:"none"}:{};let q={width:He.value+"px"};return Ue.value&&(q.transition="none"),q}),wr=q=>{q.preventDefault(),Js();let ie=q.type==="touchstart",ve=ie?q.touches[0].clientX:q.clientX,Te=k.value,$e={...h.value};Ue.value=!0;let Ke=An()||He.value;He.value=Ke,_t.value=!0,document.body.style.cursor="col-resize",document.body.style.userSelect="none";let Ye=null,wt=()=>{document.removeEventListener("mousemove",Et),document.removeEventListener("mouseup",kt),document.removeEventListener("touchmove",Et),document.removeEventListener("touchend",kt),document.removeEventListener("touchcancel",kt),bt===Ye&&(bt=null,Ue.value=!1,document.body.style.cursor="",document.body.style.userSelect="")},Yt=()=>bt===Ye&&k.value===Te,Et=St=>{if(!Yt())return;let gt=ie?St.touches[0]?.clientX:St.clientX;if(!Number.isFinite(gt))return;let Ee=ve-gt,ht=Math.max(900,window.innerWidth-100);He.value=Math.max(280,Math.min(ht,Ke+Ee)),en()},kt=()=>{if(!Yt()){wt();return}e.rememberWorkbenchPanelState($e,He.value),en(),wt()};Ye={cleanup:wt},bt=Ye,document.addEventListener(ie?"touchmove":"mousemove",Et),document.addEventListener(ie?"touchend":"mouseup",kt),ie&&document.addEventListener("touchcancel",kt)},Tn=q=>{if(!H.value||!w.value)return;let ie={...q.detail||{}},ve=ie.workbenchRouteKey||(ie.workbenchRoute?dt(ie.workbenchRoute):""),Te=ie.workspaceGeneration||"";if(!ve||!Te||ve!==w.value||Te!==y.value)return;let $e=k.value,Ke={..._.value};Be("files")&&Vue.nextTick(()=>{k.value===$e&&window.dispatchEvent(new CustomEvent("workbench-open-file-in-active-view",{detail:{...ie,agentId:Ke.agentId,conversationId:Ke.conversationId,workDir:Ke.workDir,workbenchRouteKey:Ke.routeKey,workspaceGeneration:Ke.workspaceGeneration}}))})},Es=q=>{q.detail?.routeKey!==w.value||q.detail?.workspaceGeneration!==y.value||(D.value=Array.isArray(q.detail.files)?q.detail.files:[],j.value=q.detail.activePath||"",D.value.length>0&&he("files"))},lt=q=>{i.value&&!r.value?.contains(q.target)&&!a.value?.contains(q.target)&&P(),u.visible&&!l.value?.contains(q.target)&&!c.value?.contains(q.target)&&(u.visible=!1),p.visible&&!d.value?.contains(q.target)&&(p.visible=!1)};return Vue.onMounted(()=>{window.addEventListener("open-file-in-explorer",Tn),window.addEventListener("workbench-open-capability",rt),window.addEventListener("workbench-file-items-changed",Es),document.addEventListener("click",lt),typeof ResizeObserver<"u"&&t.value&&(ft=new ResizeObserver(()=>{zt(),en()}),ft.observe(t.value)),window.addEventListener("resize",zt),zt()}),Vue.watch([ne,ge],()=>Vue.nextTick(yr),{flush:"post"}),Vue.onUnmounted(()=>{Js(),window.removeEventListener("open-file-in-explorer",Tn),window.removeEventListener("workbench-open-capability",rt),window.removeEventListener("workbench-file-items-changed",Es),document.removeEventListener("click",lt),window.removeEventListener("resize",zt),ft?.disconnect(),ft=null}),{store:e,panelRoot:t,tabRail:s,tabList:n,launcherRoot:r,launcherTrigger:o,launcherMenu:a,launcherOpen:i,openItemsTrigger:l,openItemsMenuElement:c,openItemsMenu:u,tabContextMenuElement:d,tabContextMenu:p,activeCapability:M,activeCapabilityTitleKey:ce,activeCapabilityUnavailable:be,activeToolCapability:N,routeHostState:Z,openCapabilities:T,activeWorkbenchItemId:ne,workbenchItems:ge,visibleWorkbenchItems:E,hiddenWorkbenchItems:ae,capabilityCards:S,routeProps:_,activeRouteKey:w,workbenchContextKey:k,openCapability:Be,closeCapability:Rt,toggleLauncher:re,handleLauncherButtonKeydown:we,handleLauncherMenuKeydown:Ve,closeWorkbenchItem:Nt,selectWorkbenchItem:Bt,selectItemFromMenu:O,toggleOpenItemsMenu:xt,handleOpenItemsButtonKeydown:us,handleOpenItemsMenuKeydown:pt,showTabContextMenu:le,runTabContextAction:Ie,handleWorkbenchTabKeydown:Oe,isCapabilityActivated:oe,hasTerminal:Q,hasExplorer:H,canOpenBrowser:te,hasBrowser:$,panelStyle:br,startResize:wr}}}});function os(e){let t=e?.currentTarget;t&&wi.set(t,{startedOnOverlay:e.target===t,endedOnOverlay:!1})}function as(e){let t=e?.currentTarget,s=t&&wi.get(t);s&&(s.endedOnOverlay=e.target===t)}function ls(e){let t=e?.currentTarget;t&&wi.delete(t)}function _s(e){let t=e?.currentTarget;if(!t)return!1;let s=wi.get(t),n=e.target===t&&s?.startedOnOverlay===!0&&s.endedOnOverlay===!0;return wi.delete(t),n}var wi,pr=B(()=>{wi=new WeakMap});var Qs,Kh,zh=B(()=>{Ot();Qs=20,Kh={name:"DashboardTab",template:`
3187
3187
  <div class="db-container">
3188
3188
  <div v-if="loading && !loaded" class="db-loading">{{ $t('settings.dashboard.loading') }}</div>
3189
3189
  <div v-else-if="error" class="db-empty">{{ $t('settings.dashboard.error') }}</div>
@@ -3909,11 +3909,6 @@ ${String(e||"").trim()}
3909
3909
  <section class="user-shortcuts-settings" aria-labelledby="user-shortcuts-title">
3910
3910
  <h3 id="user-shortcuts-title">{{ $t('userShortcuts.title') }}</h3>
3911
3911
  <p class="sp-desc">{{ $t('userShortcuts.scope') }}</p>
3912
- <label class="user-shortcuts-toggle">
3913
- <input type="checkbox" :checked="preferences.showQuickSends" :disabled="!ownerId"
3914
- @change="persist({ showQuickSends: $event.target.checked })" />
3915
- <span>{{ $t('userShortcuts.showQuickSends') }}</span>
3916
- </label>
3917
3912
  <p class="sp-desc">{{ $t('userShortcuts.quickSendHelp') }}</p>
3918
3913
  <p class="sp-desc" id="user-shortcuts-help">{{ $t('userShortcuts.help') }}</p>
3919
3914
  <div v-for="action in actions" :key="action" class="user-shortcuts-row">
@@ -4723,7 +4718,7 @@ ${String(e||"").trim()}
4723
4718
  </div>
4724
4719
  </div>
4725
4720
  </div>
4726
- `,directives:{"click-outside":{mounted(e,t){e._clickOutside=s=>{e.contains(s.target)||t.value()},document.addEventListener("click",e._clickOutside)},unmounted(e){document.removeEventListener("click",e._clickOutside)}}},data(){return{loading:!1,loadError:null,localProviders:[],providerModelsText:[],localPrimaryModel:null,localFastModel:null,localDebug:!1,isDirty:!1,saving:!1,openDropdown:null,showApiKey:{},showPresetPicker:!1,discoveringModels:!1,modelDiscoveryWarning:null,modelDiscoveryError:null,saveRefreshWarning:null}},computed:{chatStore(){return Pinia.useChatStore()},effectiveAgentId(){return this.agentId||this.chatStore.currentAgent},agentOnline(){let e=this.effectiveAgentId;if(!e)return!1;if(this.context==="yeaft")return!0;let t=this.chatStore.agents.find(s=>s.id===e);return t?t.online:!1},currentConfig(){let e=this.effectiveAgentId;return e&&this.chatStore.llmConfig[e]||null},editableProviders(){return this.localProviders},allModelRefs(){let e=this.localProviders,t=[];for(let s of e){if(!s.name)continue;let n=this.parseModelsFromProvider(s);for(let r of n)t.push(`${s.name}/${r}`)}return t}},watch:{effectiveAgentId:{handler(e,t){e!==t&&(this.cancelPendingDiscovery(),this.cancelPendingSave(),this._loadTimeout&&(clearTimeout(this._loadTimeout),this._loadTimeout=null),this.loading=!1,this.loadError=null,this.localProviders=[],this.providerModelsText=[],this.localPrimaryModel=null,this.localFastModel=null,this.localDebug=!1,this.isDirty=!1,this.modelDiscoveryWarning=null,this.modelDiscoveryError=null,this.saveRefreshWarning=null),e&&this.requestConfig()},immediate:!0},agentOnline(e){e&&!this.currentConfig&&this.effectiveAgentId&&this.requestConfig()},currentConfig:{handler(e){e&&e.loaded&&this.loadFromConfig(e)},deep:!0}},methods:{async copyText(e){try{await navigator.clipboard.writeText(e),this.$emit("message",this.$t("settings.msg.copiedClipboard"),!1)}catch{this.$emit("message",this.$t("settings.msg.copyFailed"),!0)}},async useGitHubCopilotPreset(){let e=this.effectiveAgentId;if(!e||!this.agentOnline)return;this.cancelPendingDiscovery(),this.discoveringModels=!0,this.modelDiscoveryWarning=null,this.modelDiscoveryError=null;let t=`llm-discovery-${Date.now()}-${Math.random().toString(36).slice(2)}`;this._pendingDiscovery={agentId:e,requestId:t},this.chatStore.sendWsMessage({type:"discover_llm_models",agentId:e,requestId:t,providerType:"github-copilot"});let s=await this.waitForModelDiscovery(e,t);if(!(this._pendingDiscovery?.agentId!==e||this._pendingDiscovery?.requestId!==t||this.effectiveAgentId!==e)){if(this._pendingDiscovery=null,this.discoveringModels=!1,s.error){this.modelDiscoveryError=s.error;return}this.applyDiscoveredProvider(s),this.modelDiscoveryWarning=s.warning||null}},waitForModelDiscovery(e,t){return new Promise(s=>{let n=Date.now(),r=i=>{this._discoveryTimer&&clearInterval(this._discoveryTimer),this._discoveryTimer=null,this._resolvePendingDiscovery=null,s(i)};this._resolvePendingDiscovery=r,this._discoveryTimer=setInterval(()=>{let i=this.chatStore.llmModelDiscovery?.[e];if(i?.requestId===t){r(i);return}Date.now()-n>1e4&&r({error:"Timed out while refreshing provider models."})},100)})},cancelPendingDiscovery(){let e=this._resolvePendingDiscovery;this._discoveryTimer&&clearInterval(this._discoveryTimer),this._discoveryTimer=null,this._resolvePendingDiscovery=null,this._pendingDiscovery=null,this.discoveringModels=!1,e&&e({cancelled:!0})},cancelPendingSave(){this._saveTimeout&&(clearTimeout(this._saveTimeout),this._saveTimeout=null),this._saveUnwatch&&(this._saveUnwatch(),this._saveUnwatch=null),this._pendingSave=null,this.saving=!1},applyDiscoveredProvider(e){let t={name:e.provider?.name||"github-copilot",credentialProvider:e.provider?.credentialProvider||"github-copilot",managed:e.provider?.managed||"github-copilot",models:Array.isArray(e.providerModels)&&e.providerModels.length?e.providerModels:e.models||[]},s=[...this.localProviders],n=s.findIndex(o=>o?.name===t.name);n>=0?s[n]=t:s.push(t),this.localProviders=s,this.refreshProviderModelsText();let r=new Set(this.parseModelsFromProvider(t).map(o=>`${t.name}/${o}`)),i=r.values().next().value||null;i&&!r.has(this.localPrimaryModel)&&(this.localPrimaryModel=i),i&&this.localFastModel?.startsWith(`${t.name}/`)&&!r.has(this.localFastModel)&&(this.localFastModel=i),this.markDirty()},requestConfig(){let e=this.effectiveAgentId;if(e){if(!this.agentOnline){this.loading=!1,this.loadError=null;return}this.loading=!0,this.loadError=null,this.chatStore.sendWsMessage({type:"get_llm_config",agentId:e}),this._loadTimeout=setTimeout(()=>{this.loading&&(this.loading=!1,this.loadError="Timeout")},5e3)}},loadFromConfig(e){if(this._loadTimeout&&(clearTimeout(this._loadTimeout),this._loadTimeout=null),this.loading=!1,e.error){this.loadError=e.error;return}this.loadError=null,this.localProviders=(e.agentConfig?.providers||e.providers||[]).map(t=>this.cloneProvider(t)),this.refreshProviderModelsText(),this.localPrimaryModel=e.agentConfig?.primaryModel||e.primaryModel||null,this.localFastModel=e.agentConfig?.fastModel||e.fastModel||null,this.localDebug=e.agentConfig?.debug===!0,this.isDirty=!1,this.showApiKey={}},cloneProvider(e){return{type:e.type||"api-key",scope:"agent",name:e.originalName||e.name||"",baseUrl:e.baseUrl||"",apiKey:e.apiKey||"",githubToken:e.githubToken||"",protocol:e.protocol||"openai-responses",credentialProvider:e.credentialProvider||null,models:Array.isArray(e.models)?e.models.map(t=>t&&typeof t=="object"?{...t}:t):[]}},refreshProviderModelsText(){this.providerModelsText=this.editableProviders.map(e=>(e.models||[]).map(t=>this._modelId(t)).join(", "))},parseModelsFromProvider(e){return this.isManagedProvider(e)&&(!Array.isArray(e.models)||e.models.length===0)?this.fallbackCopilotModels():Array.isArray(e.models)?e.models.map(t=>this._modelId(t)).filter(t=>t):[]},_modelId(e){return typeof e=="string"?e:e&&typeof e=="object"&&typeof e.id=="string"?e.id:""},isManagedProvider(e){return e?.managed==="github-copilot"||e?.credentialProvider==="github-copilot"||e?.name==="github-copilot"},fallbackCopilotModels(){return["gpt-5.5","gpt-5.4","gpt-5.4-mini","gpt-5-mini","gpt-5.3-codex","gpt-5.2-codex","gpt-4.1","gpt-4o","gpt-4o-mini","claude-opus-4.8","claude-opus-4.7","claude-opus-4.6","claude-sonnet-4.6","claude-sonnet-4.5","claude-haiku-4.5","gemini-2.5-pro"]},addProvider(){this.editableProviders.push({name:"",baseUrl:"",apiKey:"",protocol:"openai",credentialProvider:null,models:[]}),this.providerModelsText.push(""),this.markDirty()},onPresetPick(e){if(this.showPresetPicker=!1,!e||!e.name)return;let t=new Set(this.editableProviders.map(i=>(i.name||"").trim())),s=e.name,n=2;for(;t.has(s);)s=`${e.name}-${n++}`;let r=Array.isArray(e.models)?e.models.filter(Boolean):[];this.editableProviders.push({name:s,baseUrl:e.baseUrl||"",apiKey:"",protocol:e.protocol||"openai",credentialProvider:null,models:r}),this.providerModelsText.push(r.join(", ")),this.markDirty()},removeProvider(e){this.editableProviders.splice(e,1),this.providerModelsText.splice(e,1);let t={};for(let s=0;s<this.editableProviders.length;s++)s<e?t[s]=this.showApiKey[s]:t[s]=this.showApiKey[s+1];this.showApiKey=t,this.markDirty()},onModelsTextChange(e,t){let s=t.target.value;this.providerModelsText[e]=s;let n=Array.isArray(this.editableProviders[e].models)?this.editableProviders[e].models:[],r=new Map;for(let i of n){let o=this._modelId(i);o&&r.set(o,i)}this.editableProviders[e].models=s.split(/[\n,]+/).map(i=>i.trim()).filter(i=>i).map(i=>r.has(i)?r.get(i):i),this.markDirty()},setProtocol(e,t){let s=this.editableProviders[e].protocol;if(this.editableProviders[e].protocol=t,this.markDirty(),(this.editableProviders[e].models||[]).filter(r=>r).length===0&&t!==s){let r=this._getModelPresets(t);r.length>0&&(this.editableProviders[e].models=[...r],this.providerModelsText[e]=r.join(", "))}},protocolLabel(e){return e==="anthropic"?this.$t("settings.llm.protocolAnthropic"):e==="openai-responses"?this.$t("settings.llm.protocolOpenAIResponses"):this.$t("settings.llm.protocolOpenAI")},protocolHint(e){return e==="anthropic"?this.$t("settings.llm.protocolHint.anthropic"):e==="openai-responses"?this.$t("settings.llm.protocolHint.openaiResponses"):this.$t("settings.llm.protocolHint.openai")},_getModelPresets(e){return $c[e]||$c.openai},toggleApiKeyVisibility(e){this.showApiKey={...this.showApiKey,[e]:!this.showApiKey[e]}},toggleDropdown(e){this.openDropdown=this.openDropdown===e?null:e},closeDropdown(e){this.openDropdown===e&&(this.openDropdown=null)},markDirty(){this.isDirty=!0},saveConfig(){let e=this.effectiveAgentId;if(!e||this.saving)return;this.saving=!0,this.saveRefreshWarning=null;let s={providers:this.editableProviders.filter(r=>r.name&&(this.isManagedProvider(r)||r.baseUrl)).map(r=>{if(this.isManagedProvider(r))return{name:r.name.trim()||"github-copilot",credentialProvider:"github-copilot",managed:r.managed||"github-copilot",models:(r.models||[]).filter(o=>this._modelId(o))};let i={type:r.type||"api-key",name:r.name.trim(),baseUrl:r.baseUrl.trim(),apiKey:r.apiKey||"",githubToken:r.githubToken||"",models:(r.models||[]).filter(o=>this._modelId(o))};return r.protocol&&r.protocol!=="openai"&&(i.protocol=r.protocol),r.credentialProvider&&(i.credentialProvider=r.credentialProvider,i.apiKey=""),i}),primaryModel:this.localPrimaryModel||null,debug:this.localDebug===!0};this.context!=="yeaft"&&(s.fastModel=this.localFastModel||null);let n=`llm-save-${Date.now()}-${Math.random().toString(36).slice(2)}`;this.cancelPendingSave(),this.saving=!0,this._pendingSave={agentId:e,requestId:n},this.chatStore.sendWsMessage({type:"update_llm_config",agentId:e,requestId:n,config:s}),this._saveTimeout=setTimeout(()=>{this._pendingSave?.agentId!==e||this._pendingSave?.requestId!==n||(this.cancelPendingSave(),this.$emit("message",this.$t("settings.llm.saveFailed"),!0))},1e4),this._saveUnwatch=this.$watch("currentConfig",r=>{if(!(!r?.loaded||r.requestId!==n||this.effectiveAgentId!==e||this._pendingSave?.agentId!==e||this._pendingSave?.requestId!==n)){if(this.cancelPendingSave(),r.error){this.$emit("message",r.error,!0);return}this.isDirty=!1,this.saveRefreshWarning=r.statusRefreshError?this.$t("settings.llm.savedRefreshWarning",{error:r.statusRefreshError}):null,this.$emit("message",this.saveRefreshWarning||this.$t("settings.llm.saved"),!!r.statusRefreshError),this.$emit("saved",{warning:this.saveRefreshWarning})}},{deep:!0})}},beforeUnmount(){this._loadTimeout&&clearTimeout(this._loadTimeout),this.cancelPendingDiscovery(),this.cancelPendingSave()}}});var jk,cs,gr=B(()=>{jk=0,cs={name:"ModernSelect",props:{modelValue:{type:[String,Number],default:null},options:{type:Array,default:()=>[]},placeholder:{type:String,default:""},searchable:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},emptyText:{type:String,default:"\u2014"},ariaLabel:{type:String,default:""},menuMinWidth:{type:Number,default:0},menuClass:{type:String,default:""}},emits:["update:modelValue","change"],setup(e,{emit:t}){let s=Vue.ref(!1),n=Vue.ref(""),r=Vue.ref(null),i=Vue.ref(null),o=Vue.ref(null),a=Vue.ref(null),l=Vue.ref(-1),c=`modern-select-${++jk}`,d=`${c}-menu`,u=Vue.ref({}),p=Vue.computed(()=>e.options.find(A=>A.value===e.modelValue)||null),f=Vue.computed(()=>{if(!e.searchable||!n.value.trim())return e.options;let A=n.value.trim().toLowerCase();return e.options.filter(Q=>String(Q.label||"").toLowerCase().includes(A)||String(Q.sublabel||"").toLowerCase().includes(A)||String(Q.value||"").toLowerCase().includes(A))}),g=A=>`${c}-option-${A}`,v=Vue.computed(()=>s.value&&l.value>=0&&l.value<f.value.length?g(l.value):void 0);function m(){let A=r.value,Q=i.value,H=o.value;if(!A||!Q||!H)return;let z=6,$=8,te=A.getBoundingClientRect(),F=document.documentElement.clientWidth||window.innerWidth,S=document.documentElement.clientHeight||window.innerHeight,M=Math.min(Math.max(te.width,e.menuMinWidth),Math.max(0,F-$*2)),L=e.searchable?58:12,T=Math.min(H.scrollHeight+L,304),D=Math.max(0,S-te.bottom-z-$),U=Math.max(0,te.top-z-$),X=D<T&&U>D,G=Math.max(48,Math.min(T,X?U:D)),ce=te.right-M,be=Math.min(Math.max($,ce),Math.max($,F-$-M));u.value={top:`${X?te.top-z-G:te.bottom+z}px`,left:`${be}px`,width:`${M}px`,maxHeight:`${G}px`,"--modern-select-list-max-height":`${Math.max(36,G-(e.searchable?58:12))}px`}}function b(){e.disabled||(s.value=!s.value,s.value&&(n.value="",l.value=f.value.findIndex(A=>A.value===e.modelValue),Vue.nextTick(()=>{m(),e.searchable&&a.value?.focus&&a.value.focus();let A=i.value?.querySelector(".modern-select-option.is-active");A?.scrollIntoView&&A.scrollIntoView({block:"nearest"})})))}function h(){s.value=!1}function w(A){!A||A.disabled||(t("update:modelValue",A.value),t("change",A.value),h())}function I(A){if(!f.value.length)return;let Q=l.value;for(let H=0;H<f.value.length;H+=1)if(Q=(Q+A+f.value.length)%f.value.length,!f.value[Q]?.disabled){l.value=Q;return}}function y(A){if(!s.value){(A.key==="Enter"||A.key===" "||A.key==="ArrowDown")&&(A.preventDefault(),b());return}if(A.key==="Escape"){A.preventDefault(),h();return}if(A.key==="ArrowDown")A.preventDefault(),I(1);else if(A.key==="ArrowUp")A.preventDefault(),I(-1);else if(A.key==="Enter"){A.preventDefault();let Q=f.value[l.value];Q&&w(Q)}}function k(A){s.value&&(r.value?.contains(A.target)||i.value?.contains(A.target)||h())}let _=()=>{s.value&&m()};return Vue.onMounted(()=>{document.addEventListener("mousedown",k),window.addEventListener("resize",_),window.addEventListener("scroll",_,!0)}),Vue.onBeforeUnmount(()=>{document.removeEventListener("mousedown",k),window.removeEventListener("resize",_),window.removeEventListener("scroll",_,!0)}),Vue.watch(()=>e.modelValue,()=>{}),{open:s,search:n,triggerEl:r,menuEl:i,searchEl:a,activeIdx:l,selected:p,filtered:f,menuId:d,menuStyle:u,listEl:o,optionId:g,activeOptionId:v,toggle:b,close:h,pick:w,onKey:y}},template:`
4721
+ `,directives:{"click-outside":{mounted(e,t){e._clickOutside=s=>{e.contains(s.target)||t.value()},document.addEventListener("click",e._clickOutside)},unmounted(e){document.removeEventListener("click",e._clickOutside)}}},data(){return{loading:!1,loadError:null,localProviders:[],providerModelsText:[],localPrimaryModel:null,localFastModel:null,localDebug:!1,isDirty:!1,saving:!1,openDropdown:null,showApiKey:{},showPresetPicker:!1,discoveringModels:!1,modelDiscoveryWarning:null,modelDiscoveryError:null,saveRefreshWarning:null}},computed:{chatStore(){return Pinia.useChatStore()},effectiveAgentId(){return this.agentId||this.chatStore.currentAgent},agentOnline(){let e=this.effectiveAgentId;if(!e)return!1;if(this.context==="yeaft")return!0;let t=this.chatStore.agents.find(s=>s.id===e);return t?t.online:!1},currentConfig(){let e=this.effectiveAgentId;return e&&this.chatStore.llmConfig[e]||null},editableProviders(){return this.localProviders},allModelRefs(){let e=this.localProviders,t=[];for(let s of e){if(!s.name)continue;let n=this.parseModelsFromProvider(s);for(let r of n)t.push(`${s.name}/${r}`)}return t}},watch:{effectiveAgentId:{handler(e,t){e!==t&&(this.cancelPendingDiscovery(),this.cancelPendingSave(),this._loadTimeout&&(clearTimeout(this._loadTimeout),this._loadTimeout=null),this.loading=!1,this.loadError=null,this.localProviders=[],this.providerModelsText=[],this.localPrimaryModel=null,this.localFastModel=null,this.localDebug=!1,this.isDirty=!1,this.modelDiscoveryWarning=null,this.modelDiscoveryError=null,this.saveRefreshWarning=null),e&&this.requestConfig()},immediate:!0},agentOnline(e){e&&!this.currentConfig&&this.effectiveAgentId&&this.requestConfig()},currentConfig:{handler(e){e&&e.loaded&&this.loadFromConfig(e)},deep:!0}},methods:{async copyText(e){try{await navigator.clipboard.writeText(e),this.$emit("message",this.$t("settings.msg.copiedClipboard"),!1)}catch{this.$emit("message",this.$t("settings.msg.copyFailed"),!0)}},async useGitHubCopilotPreset(){let e=this.effectiveAgentId;if(!e||!this.agentOnline)return;this.cancelPendingDiscovery(),this.discoveringModels=!0,this.modelDiscoveryWarning=null,this.modelDiscoveryError=null;let t=`llm-discovery-${Date.now()}-${Math.random().toString(36).slice(2)}`;this._pendingDiscovery={agentId:e,requestId:t},this.chatStore.sendWsMessage({type:"discover_llm_models",agentId:e,requestId:t,providerType:"github-copilot"});let s=await this.waitForModelDiscovery(e,t);if(!(this._pendingDiscovery?.agentId!==e||this._pendingDiscovery?.requestId!==t||this.effectiveAgentId!==e)){if(this._pendingDiscovery=null,this.discoveringModels=!1,s.error){this.modelDiscoveryError=s.error;return}this.applyDiscoveredProvider(s),this.modelDiscoveryWarning=s.warning||null}},waitForModelDiscovery(e,t){return new Promise(s=>{let n=Date.now(),r=i=>{this._discoveryTimer&&clearInterval(this._discoveryTimer),this._discoveryTimer=null,this._resolvePendingDiscovery=null,s(i)};this._resolvePendingDiscovery=r,this._discoveryTimer=setInterval(()=>{let i=this.chatStore.llmModelDiscovery?.[e];if(i?.requestId===t){r(i);return}Date.now()-n>1e4&&r({error:"Timed out while refreshing provider models."})},100)})},cancelPendingDiscovery(){let e=this._resolvePendingDiscovery;this._discoveryTimer&&clearInterval(this._discoveryTimer),this._discoveryTimer=null,this._resolvePendingDiscovery=null,this._pendingDiscovery=null,this.discoveringModels=!1,e&&e({cancelled:!0})},cancelPendingSave(){this._saveTimeout&&(clearTimeout(this._saveTimeout),this._saveTimeout=null),this._saveUnwatch&&(this._saveUnwatch(),this._saveUnwatch=null),this._pendingSave=null,this.saving=!1},applyDiscoveredProvider(e){let t={name:e.provider?.name||"github-copilot",credentialProvider:e.provider?.credentialProvider||"github-copilot",managed:e.provider?.managed||"github-copilot",models:Array.isArray(e.providerModels)&&e.providerModels.length?e.providerModels:e.models||[]},s=[...this.localProviders],n=s.findIndex(o=>o?.name===t.name);n>=0?s[n]=t:s.push(t),this.localProviders=s,this.refreshProviderModelsText();let r=new Set(this.parseModelsFromProvider(t).map(o=>`${t.name}/${o}`)),i=r.values().next().value||null;i&&!r.has(this.localPrimaryModel)&&(this.localPrimaryModel=i),i&&this.localFastModel?.startsWith(`${t.name}/`)&&!r.has(this.localFastModel)&&(this.localFastModel=i),this.markDirty()},requestConfig(){let e=this.effectiveAgentId;if(e){if(!this.agentOnline){this.loading=!1,this.loadError=null;return}this.loading=!0,this.loadError=null,this.chatStore.sendWsMessage({type:"get_llm_config",agentId:e}),this._loadTimeout=setTimeout(()=>{this.loading&&(this.loading=!1,this.loadError="Timeout")},5e3)}},loadFromConfig(e){if(this._loadTimeout&&(clearTimeout(this._loadTimeout),this._loadTimeout=null),this.loading=!1,e.error){this.loadError=e.error;return}this.loadError=null,this.localProviders=(e.agentConfig?.providers||e.providers||[]).map(t=>this.cloneProvider(t)),this.refreshProviderModelsText(),this.localPrimaryModel=e.agentConfig?.primaryModel||e.primaryModel||null,this.localFastModel=e.agentConfig?.fastModel||e.fastModel||null,this.localDebug=e.agentConfig?.debug===!0,this.isDirty=!1,this.showApiKey={}},cloneProvider(e){return{type:e.type||"api-key",scope:"agent",name:e.originalName||e.name||"",baseUrl:e.baseUrl||"",apiKey:e.apiKey||"",githubToken:e.githubToken||"",protocol:e.protocol||"openai-responses",credentialProvider:e.credentialProvider||null,models:Array.isArray(e.models)?e.models.map(t=>t&&typeof t=="object"?{...t}:t):[]}},refreshProviderModelsText(){this.providerModelsText=this.editableProviders.map(e=>(e.models||[]).map(t=>this._modelId(t)).join(", "))},parseModelsFromProvider(e){return this.isManagedProvider(e)&&(!Array.isArray(e.models)||e.models.length===0)?this.fallbackCopilotModels():Array.isArray(e.models)?e.models.map(t=>this._modelId(t)).filter(t=>t):[]},_modelId(e){return typeof e=="string"?e:e&&typeof e=="object"&&typeof e.id=="string"?e.id:""},isManagedProvider(e){return e?.managed==="github-copilot"||e?.credentialProvider==="github-copilot"||e?.name==="github-copilot"},fallbackCopilotModels(){return["gpt-5.5","gpt-5.4","gpt-5.4-mini","gpt-5-mini","gpt-5.3-codex","gpt-5.2-codex","gpt-4.1","gpt-4o","gpt-4o-mini","claude-opus-4.8","claude-opus-4.7","claude-opus-4.6","claude-sonnet-4.6","claude-sonnet-4.5","claude-haiku-4.5","gemini-2.5-pro"]},addProvider(){this.editableProviders.push({name:"",baseUrl:"",apiKey:"",protocol:"openai",credentialProvider:null,models:[]}),this.providerModelsText.push(""),this.markDirty()},onPresetPick(e){if(this.showPresetPicker=!1,!e||!e.name)return;let t=new Set(this.editableProviders.map(i=>(i.name||"").trim())),s=e.name,n=2;for(;t.has(s);)s=`${e.name}-${n++}`;let r=Array.isArray(e.models)?e.models.filter(Boolean):[];this.editableProviders.push({name:s,baseUrl:e.baseUrl||"",apiKey:"",protocol:e.protocol||"openai",credentialProvider:null,models:r}),this.providerModelsText.push(r.join(", ")),this.markDirty()},removeProvider(e){this.editableProviders.splice(e,1),this.providerModelsText.splice(e,1);let t={};for(let s=0;s<this.editableProviders.length;s++)s<e?t[s]=this.showApiKey[s]:t[s]=this.showApiKey[s+1];this.showApiKey=t,this.markDirty()},onModelsTextChange(e,t){let s=t.target.value;this.providerModelsText[e]=s;let n=Array.isArray(this.editableProviders[e].models)?this.editableProviders[e].models:[],r=new Map;for(let i of n){let o=this._modelId(i);o&&r.set(o,i)}this.editableProviders[e].models=s.split(/[\n,]+/).map(i=>i.trim()).filter(i=>i).map(i=>r.has(i)?r.get(i):i),this.markDirty()},setProtocol(e,t){let s=this.editableProviders[e].protocol;if(this.editableProviders[e].protocol=t,this.markDirty(),(this.editableProviders[e].models||[]).filter(r=>r).length===0&&t!==s){let r=this._getModelPresets(t);r.length>0&&(this.editableProviders[e].models=[...r],this.providerModelsText[e]=r.join(", "))}},protocolLabel(e){return e==="anthropic"?this.$t("settings.llm.protocolAnthropic"):e==="openai-responses"?this.$t("settings.llm.protocolOpenAIResponses"):this.$t("settings.llm.protocolOpenAI")},protocolHint(e){return e==="anthropic"?this.$t("settings.llm.protocolHint.anthropic"):e==="openai-responses"?this.$t("settings.llm.protocolHint.openaiResponses"):this.$t("settings.llm.protocolHint.openai")},_getModelPresets(e){return $c[e]||$c.openai},toggleApiKeyVisibility(e){this.showApiKey={...this.showApiKey,[e]:!this.showApiKey[e]}},toggleDropdown(e){this.openDropdown=this.openDropdown===e?null:e},closeDropdown(e){this.openDropdown===e&&(this.openDropdown=null)},markDirty(){this.isDirty=!0},saveConfig(){let e=this.effectiveAgentId;if(!e||this.saving)return;this.saving=!0,this.saveRefreshWarning=null;let s={providers:this.editableProviders.filter(r=>r.name&&(this.isManagedProvider(r)||r.baseUrl)).map(r=>{if(this.isManagedProvider(r))return{name:r.name.trim()||"github-copilot",credentialProvider:"github-copilot",managed:r.managed||"github-copilot",models:(r.models||[]).filter(o=>this._modelId(o))};let i={type:r.type||"api-key",name:r.name.trim(),baseUrl:r.baseUrl.trim(),apiKey:r.apiKey||"",githubToken:r.githubToken||"",models:(r.models||[]).filter(o=>this._modelId(o))};return r.protocol&&r.protocol!=="openai"&&(i.protocol=r.protocol),r.credentialProvider&&(i.credentialProvider=r.credentialProvider,i.apiKey=""),i}),primaryModel:this.localPrimaryModel||null,debug:this.localDebug===!0};this.context!=="yeaft"&&(s.fastModel=this.localFastModel||null);let n=`llm-save-${Date.now()}-${Math.random().toString(36).slice(2)}`;this.cancelPendingSave(),this.saving=!0,this._pendingSave={agentId:e,requestId:n},this.chatStore.sendWsMessage({type:"update_llm_config",agentId:e,requestId:n,config:s}),this._saveTimeout=setTimeout(()=>{this._pendingSave?.agentId!==e||this._pendingSave?.requestId!==n||(this.cancelPendingSave(),this.$emit("message",this.$t("settings.llm.saveFailed"),!0))},1e4),this._saveUnwatch=this.$watch("currentConfig",r=>{if(!(!r?.loaded||r.requestId!==n||this.effectiveAgentId!==e||this._pendingSave?.agentId!==e||this._pendingSave?.requestId!==n)){if(this.cancelPendingSave(),r.error){this.$emit("message",r.error,!0);return}this.isDirty=!1,this.saveRefreshWarning=r.statusRefreshError?this.$t("settings.llm.savedRefreshWarning",{error:r.statusRefreshError}):null,this.$emit("message",this.saveRefreshWarning||this.$t("settings.llm.saved"),!!r.statusRefreshError),this.$emit("saved",{warning:this.saveRefreshWarning})}},{deep:!0})}},beforeUnmount(){this._loadTimeout&&clearTimeout(this._loadTimeout),this.cancelPendingDiscovery(),this.cancelPendingSave()}}});var jk,cs,gr=B(()=>{jk=0,cs={name:"ModernSelect",props:{modelValue:{type:[String,Number],default:null},options:{type:Array,default:()=>[]},placeholder:{type:String,default:""},searchable:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},emptyText:{type:String,default:"\u2014"},ariaLabel:{type:String,default:""},menuMinWidth:{type:Number,default:0},menuClass:{type:String,default:""}},emits:["update:modelValue","change"],setup(e,{emit:t}){let s=Vue.ref(!1),n=Vue.ref(""),r=Vue.ref(null),i=Vue.ref(null),o=Vue.ref(null),a=Vue.ref(null),l=Vue.ref(-1),c=`modern-select-${++jk}`,d=`${c}-menu`,u=Vue.ref({}),p=Vue.computed(()=>e.options.find(A=>A.value===e.modelValue)||null),f=Vue.computed(()=>{if(!e.searchable||!n.value.trim())return e.options;let A=n.value.trim().toLowerCase();return e.options.filter(Q=>String(Q.label||"").toLowerCase().includes(A)||String(Q.sublabel||"").toLowerCase().includes(A)||String(Q.value||"").toLowerCase().includes(A))}),g=A=>`${c}-option-${A}`,v=Vue.computed(()=>s.value&&l.value>=0&&l.value<f.value.length?g(l.value):void 0);function m(){let A=r.value,Q=i.value,H=o.value;if(!A||!Q||!H)return;let z=6,$=8,te=A.getBoundingClientRect(),F=document.documentElement.clientWidth||window.innerWidth,S=document.documentElement.clientHeight||window.innerHeight,M=Math.min(Math.max(te.width,e.menuMinWidth),Math.max(0,F-$*2)),L=e.searchable?58:12,T=Math.min(H.scrollHeight+L,304),D=Math.max(0,S-te.bottom-z-$),j=Math.max(0,te.top-z-$),X=D<T&&j>D,G=Math.max(48,Math.min(T,X?j:D)),ce=te.right-M,be=Math.min(Math.max($,ce),Math.max($,F-$-M));u.value={top:`${X?te.top-z-G:te.bottom+z}px`,left:`${be}px`,width:`${M}px`,maxHeight:`${G}px`,"--modern-select-list-max-height":`${Math.max(36,G-(e.searchable?58:12))}px`}}function b(){e.disabled||(s.value=!s.value,s.value&&(n.value="",l.value=f.value.findIndex(A=>A.value===e.modelValue),Vue.nextTick(()=>{m(),e.searchable&&a.value?.focus&&a.value.focus();let A=i.value?.querySelector(".modern-select-option.is-active");A?.scrollIntoView&&A.scrollIntoView({block:"nearest"})})))}function h(){s.value=!1}function w(A){!A||A.disabled||(t("update:modelValue",A.value),t("change",A.value),h())}function I(A){if(!f.value.length)return;let Q=l.value;for(let H=0;H<f.value.length;H+=1)if(Q=(Q+A+f.value.length)%f.value.length,!f.value[Q]?.disabled){l.value=Q;return}}function y(A){if(!s.value){(A.key==="Enter"||A.key===" "||A.key==="ArrowDown")&&(A.preventDefault(),b());return}if(A.key==="Escape"){A.preventDefault(),h();return}if(A.key==="ArrowDown")A.preventDefault(),I(1);else if(A.key==="ArrowUp")A.preventDefault(),I(-1);else if(A.key==="Enter"){A.preventDefault();let Q=f.value[l.value];Q&&w(Q)}}function k(A){s.value&&(r.value?.contains(A.target)||i.value?.contains(A.target)||h())}let _=()=>{s.value&&m()};return Vue.onMounted(()=>{document.addEventListener("mousedown",k),window.addEventListener("resize",_),window.addEventListener("scroll",_,!0)}),Vue.onBeforeUnmount(()=>{document.removeEventListener("mousedown",k),window.removeEventListener("resize",_),window.removeEventListener("scroll",_,!0)}),Vue.watch(()=>e.modelValue,()=>{}),{open:s,search:n,triggerEl:r,menuEl:i,searchEl:a,activeIdx:l,selected:p,filtered:f,menuId:d,menuStyle:u,listEl:o,optionId:g,activeOptionId:v,toggle:b,close:h,pick:w,onKey:y}},template:`
4727
4722
  <div class="modern-select" :class="{ 'is-open': open, 'is-disabled': disabled }">
4728
4723
  <button
4729
4724
  type="button"
@@ -5594,7 +5589,7 @@ ${String(e||"").trim()}
5594
5589
  <p class="pane-empty-text">{{ $t('splitScreen.selectFromSidebar') }}</p>
5595
5590
  </div>
5596
5591
  </div>
5597
- `,setup(e){let t=Pinia.useChatStore(),s=Vue.ref(null),n=Vue.computed(()=>t.activePanelId===e.paneId),r=Vue.computed(()=>t.panels.find(se=>se.id===e.paneId)?.conversationId||null),i=Vue.computed(()=>r.value?t.messagesMap[r.value]||[]:[]),o=Vue.computed(()=>r.value?!!t.processingConversations[r.value]:!1),a=Vue.computed(()=>i.value.some(ne=>ne.isStreaming)),l=Vue.computed(()=>o.value&&!a.value),c=Vue.ref(0),d=Vue.ref(Date.now()),u=Vue.ref(null),p=Vue.ref(null),f=null,g=Vue.ref("cat"),v=new URLSearchParams(window.location.search).get("preview"),m=Vue.ref(5),b=Vue.ref(95),h=Vue.ref("bark-both"),w=Vue.ref(1),I=Vue.ref(-1),y=null;function k(){if(!c.value)return;let ne=u.value,se=p.value;if(ne&&se){let E=ne.parentElement,ae=Math.max(0,(E?.clientWidth||0)-80);Oo(ne,se,Lo(Date.now()-c.value,ae))}}let _=Vo({onFrame:k});function A(){if(!c.value||g.value!=="dog")return;d.value=Date.now();let ne=(d.value-c.value)%18e3;if(ne<2e3)m.value=5,b.value=95,h.value="bark-both",w.value=1,I.value=-1;else if(ne<5e3){let se=(ne-2e3)/3e3;m.value=5+se*25,b.value=95,h.value="left-approach",w.value=1,I.value=-1}else if(ne<8e3){let se=(ne-5e3)/3e3;m.value=30,b.value=95-se*25,h.value="right-approach",w.value=1,I.value=-1}else if(ne<1e4){let se=(ne-8e3)/2e3;m.value=30+se*13,b.value=70-se*13,h.value="both-approach",w.value=1,I.value=-1}else if(ne<11e3)m.value=43,b.value=57,h.value="snap",w.value=1,I.value=-1;else if(ne<12500)m.value=43,b.value=57,h.value="stunned",w.value=1,I.value=-1;else if(ne<15e3){let se=(ne-12500)/2500;m.value=43-se*38,b.value=57+se*38,h.value="retreat",w.value=-1,I.value=1}else ne<17e3?(m.value=5,b.value=95,h.value="rehang",w.value=-1,I.value=1):(m.value=5,b.value=95,h.value="reset",w.value=1,I.value=-1);y=requestAnimationFrame(A)}let Q=Vue.computed(()=>{let ne=m.value*1.2;return w.value<0?`translate(${ne+13.5}, 0) scale(-1, 1)`:`translate(${ne-13.5}, 0)`}),H=Vue.computed(()=>{let ne=b.value*1.2;return I.value>0?`translate(${ne-10.5}, 2)`:`translate(${ne+10.5}, 2) scale(-1, 1)`}),z=Vue.computed(()=>{let ne=h.value;return ne==="bark-both"||ne==="left-approach"||ne==="right-approach"||ne==="both-approach"||ne==="reset"}),$=Vue.computed(()=>{let ne=m.value*1.2,se=10;if(z.value){let ue=Math.max(0,(ne-3)*.12);return`M3,18 Q${(3+ne)/2},${18+ue} ${ne},${se}`}if(h.value==="rehang")return`M${ne},${se} Q${ne-3},20 3,18`;let E=w.value<0?1:-1,ae=ne+E*8;return`M${ne},${se} Q${ne},18 ${ae},22`}),te=Vue.computed(()=>{let ne=b.value*1.2,se=10;if(z.value){let ue=Math.max(0,(118-ne)*.12);return`M118,18 Q${(118+ne)/2},${18+ue} ${ne},${se}`}if(h.value==="rehang")return`M${ne},${se} Q${ne+3},20 118,18`;let E=I.value>0?-1:1,ae=ne+E*8;return`M${ne},${se} Q${ne},18 ${ae},22`}),F=Vue.computed(()=>h.value==="snap"?.2:.4),S=Vue.computed(()=>h.value==="snap"?.2:.4),M=Vue.computed(()=>m.value*1.2),L=Vue.computed(()=>b.value*1.2),T=Vue.computed(()=>v==="cat"||v==="dog"||v==="animation"?!0:l.value);Vue.watch(l,ne=>{ne?(c.value=Date.now(),d.value=Date.now(),f||(f=setInterval(()=>{d.value=Date.now()},1e3)),g.value="cat",m.value=5,b.value=95,h.value="bark-both",w.value=1,I.value=-1,g.value==="cat"?_.start():y=requestAnimationFrame(A)):(c.value=0,f&&(clearInterval(f),f=null),_.stop(),y&&(cancelAnimationFrame(y),y=null))},{immediate:!0}),(v==="cat"||v==="dog"||v==="animation")&&(c.value=Date.now(),d.value=Date.now(),v==="dog"?g.value="dog":g.value="cat",g.value==="cat"?_.start():(m.value=5,b.value=95,h.value="bark-both",w.value=1,I.value=-1,y=requestAnimationFrame(A))),Vue.onUnmounted(()=>{f&&(clearInterval(f),f=null),_.stop(),y&&(cancelAnimationFrame(y),y=null)});let D=Vue.computed(()=>{if(!o.value)return null;if(t.connectionState!=="connected")return"disconnected";let ne=r.value;if(t.compactStatus?.conversationId===ne&&t.compactStatus?.status==="compacting")return"compacting";let se=t.sessionHealth?.[ne];return se?se.status:c.value&&d.value-c.value>8e3?"thinking":null});function U(){let ne=r.value;if(!ne)return;let se=t.conversations.find(E=>E.id===ne);t.sendWsMessage({type:"refresh_conversation",conversationId:ne,agentId:se?.agentId})}let X=Vue.computed(()=>{let ne=i.value,se=[],E=null,ae=0,ue=()=>{E&&(E.isActive=E.isStreaming===!0,io(E),(E.textContent||E.toolMsgs.length>0||E.todoMsg||E.askMsg)&&se.push(E),E=null)},j=()=>{ae++,E={type:"assistant-turn",id:"turn_"+ae,textContent:"",textSegments:[],isStreaming:!1,isActive:!1,isHistory:!1,todoMsg:null,toolMsgs:[],askMsg:null,messages:[]}};for(let J=0;J<ne.length;J++){let R=ne[J];if(R.type==="user"){if(!R.content||!R.content.trim())continue;ue(),se.push({type:"user",id:R.id||"u_"+J,message:R});continue}if(R.type==="system"||R.type==="error"){ue(),se.push({type:R.type,id:R.id||"s_"+J,message:R});continue}if(!(R.type==="tool-result"||R.type==="tool_result")){if(R.type==="assistant"){E||j(),ro(E,R),R.isStreaming&&(E.isStreaming=!0),R.isHistory&&(E.isHistory=!0),E.messages.push(R);continue}if(R.type==="tool-use"){E||j();let ee=ne[J+1],V=ee&&(ee.type==="tool-result"||ee.type==="tool_result"),P={...R,hasResult:V||R.hasResult||!1,toolResult:R.toolResult||null};R.toolName==="TodoWrite"?E.todoMsg=P:R.toolName==="AskUserQuestion"?E.askMsg=P:E.toolMsgs.push(P),E.messages.push(R);continue}ue(),se.push({type:R.type||"unknown",id:R.id||"x_"+J,message:R})}}return ue(),se}),G=(ne,se)=>{if(!r.value)return;let E=se||[];t.sendMessageToConversation(r.value,ne,E)},ce=()=>{r.value&&t.cancelExecutionForConversation(r.value)};function be(){t.setActivePanel(e.paneId)}function N(){t.removePanel(e.paneId)}let Z=Vue.computed(()=>t.getPaneRightPanel(e.paneId));function K(){t.setPaneRightPanel(e.paneId,null)}let oe=Vue.ref(!0),he=50,xe=()=>{if(!s.value)return!0;let{scrollTop:ne,scrollHeight:se,clientHeight:E}=s.value;return se-ne-E<=he},_e=()=>{s.value&&(s.value.scrollTop=s.value.scrollHeight)},ge=()=>{oe.value=xe()};return Vue.watch(()=>i.value.length,()=>{oe.value&&Vue.nextTick(_e)}),Vue.watch(()=>{let ne=i.value,se=ne[ne.length-1];return se?.isStreaming?se.content?.length:0},()=>{oe.value&&Vue.nextTick(_e)}),Vue.watch(r,()=>{s.value&&s.value.removeEventListener("scroll",ge),oe.value=!0,Vue.nextTick(()=>{s.value&&(s.value.addEventListener("scroll",ge),_e())})}),Vue.onMounted(()=>{s.value&&(s.value.addEventListener("scroll",ge),_e())}),Vue.onUnmounted(()=>{s.value&&s.value.removeEventListener("scroll",ge)}),{store:t,containerRef:s,isActivePanel:n,conversationId:r,messages:i,isProcessing:o,showTypingDots:l,previewShowTypingDots:T,waitingStatus:D,animationType:g,catWalkRef:u,catSpriteRef:p,dogPhase:h,spikeTransform:Q,teddyTransform:H,leashPathL:$,leashPathR:te,leashOpacityL:F,leashOpacityR:S,questionLX:M,questionRX:L,refreshSession:U,turnGroups:X,sendFn:G,cancelFn:ce,setActive:be,closePane:N,paneRightPanel:Z,closePanePanel:K}}}});var la,Bc=B(()=>{la={name:"SidebarModeToggle",props:{view:{type:String,required:!0},disabled:{type:Boolean,default:!1}},emits:["flip"],computed:{isYeaft(){return this.view==="yeaft"},chatLabel(){return this.$t("sidebar.toggle.chat")},yeaftLabel(){return this.$t("sidebar.toggle.yeaft")},titleText(){return this.isYeaft?this.chatLabel:this.yeaftLabel}},methods:{onClick(){this.disabled||this.$emit("flip",this.isYeaft?"chat":"yeaft")},onKeydown(e){this.disabled||(e.key==="Enter"||e.key===" "?(e.preventDefault(),this.onClick()):e.key==="ArrowLeft"&&this.isYeaft?(e.preventDefault(),this.$emit("flip","chat")):e.key==="ArrowRight"&&!this.isYeaft&&(e.preventDefault(),this.$emit("flip","yeaft")))}},template:`
5592
+ `,setup(e){let t=Pinia.useChatStore(),s=Vue.ref(null),n=Vue.computed(()=>t.activePanelId===e.paneId),r=Vue.computed(()=>t.panels.find(se=>se.id===e.paneId)?.conversationId||null),i=Vue.computed(()=>r.value?t.messagesMap[r.value]||[]:[]),o=Vue.computed(()=>r.value?!!t.processingConversations[r.value]:!1),a=Vue.computed(()=>i.value.some(ne=>ne.isStreaming)),l=Vue.computed(()=>o.value&&!a.value),c=Vue.ref(0),d=Vue.ref(Date.now()),u=Vue.ref(null),p=Vue.ref(null),f=null,g=Vue.ref("cat"),v=new URLSearchParams(window.location.search).get("preview"),m=Vue.ref(5),b=Vue.ref(95),h=Vue.ref("bark-both"),w=Vue.ref(1),I=Vue.ref(-1),y=null;function k(){if(!c.value)return;let ne=u.value,se=p.value;if(ne&&se){let E=ne.parentElement,ae=Math.max(0,(E?.clientWidth||0)-80);Oo(ne,se,Lo(Date.now()-c.value,ae))}}let _=Vo({onFrame:k});function A(){if(!c.value||g.value!=="dog")return;d.value=Date.now();let ne=(d.value-c.value)%18e3;if(ne<2e3)m.value=5,b.value=95,h.value="bark-both",w.value=1,I.value=-1;else if(ne<5e3){let se=(ne-2e3)/3e3;m.value=5+se*25,b.value=95,h.value="left-approach",w.value=1,I.value=-1}else if(ne<8e3){let se=(ne-5e3)/3e3;m.value=30,b.value=95-se*25,h.value="right-approach",w.value=1,I.value=-1}else if(ne<1e4){let se=(ne-8e3)/2e3;m.value=30+se*13,b.value=70-se*13,h.value="both-approach",w.value=1,I.value=-1}else if(ne<11e3)m.value=43,b.value=57,h.value="snap",w.value=1,I.value=-1;else if(ne<12500)m.value=43,b.value=57,h.value="stunned",w.value=1,I.value=-1;else if(ne<15e3){let se=(ne-12500)/2500;m.value=43-se*38,b.value=57+se*38,h.value="retreat",w.value=-1,I.value=1}else ne<17e3?(m.value=5,b.value=95,h.value="rehang",w.value=-1,I.value=1):(m.value=5,b.value=95,h.value="reset",w.value=1,I.value=-1);y=requestAnimationFrame(A)}let Q=Vue.computed(()=>{let ne=m.value*1.2;return w.value<0?`translate(${ne+13.5}, 0) scale(-1, 1)`:`translate(${ne-13.5}, 0)`}),H=Vue.computed(()=>{let ne=b.value*1.2;return I.value>0?`translate(${ne-10.5}, 2)`:`translate(${ne+10.5}, 2) scale(-1, 1)`}),z=Vue.computed(()=>{let ne=h.value;return ne==="bark-both"||ne==="left-approach"||ne==="right-approach"||ne==="both-approach"||ne==="reset"}),$=Vue.computed(()=>{let ne=m.value*1.2,se=10;if(z.value){let pe=Math.max(0,(ne-3)*.12);return`M3,18 Q${(3+ne)/2},${18+pe} ${ne},${se}`}if(h.value==="rehang")return`M${ne},${se} Q${ne-3},20 3,18`;let E=w.value<0?1:-1,ae=ne+E*8;return`M${ne},${se} Q${ne},18 ${ae},22`}),te=Vue.computed(()=>{let ne=b.value*1.2,se=10;if(z.value){let pe=Math.max(0,(118-ne)*.12);return`M118,18 Q${(118+ne)/2},${18+pe} ${ne},${se}`}if(h.value==="rehang")return`M${ne},${se} Q${ne+3},20 118,18`;let E=I.value>0?-1:1,ae=ne+E*8;return`M${ne},${se} Q${ne},18 ${ae},22`}),F=Vue.computed(()=>h.value==="snap"?.2:.4),S=Vue.computed(()=>h.value==="snap"?.2:.4),M=Vue.computed(()=>m.value*1.2),L=Vue.computed(()=>b.value*1.2),T=Vue.computed(()=>v==="cat"||v==="dog"||v==="animation"?!0:l.value);Vue.watch(l,ne=>{ne?(c.value=Date.now(),d.value=Date.now(),f||(f=setInterval(()=>{d.value=Date.now()},1e3)),g.value="cat",m.value=5,b.value=95,h.value="bark-both",w.value=1,I.value=-1,g.value==="cat"?_.start():y=requestAnimationFrame(A)):(c.value=0,f&&(clearInterval(f),f=null),_.stop(),y&&(cancelAnimationFrame(y),y=null))},{immediate:!0}),(v==="cat"||v==="dog"||v==="animation")&&(c.value=Date.now(),d.value=Date.now(),v==="dog"?g.value="dog":g.value="cat",g.value==="cat"?_.start():(m.value=5,b.value=95,h.value="bark-both",w.value=1,I.value=-1,y=requestAnimationFrame(A))),Vue.onUnmounted(()=>{f&&(clearInterval(f),f=null),_.stop(),y&&(cancelAnimationFrame(y),y=null)});let D=Vue.computed(()=>{if(!o.value)return null;if(t.connectionState!=="connected")return"disconnected";let ne=r.value;if(t.compactStatus?.conversationId===ne&&t.compactStatus?.status==="compacting")return"compacting";let se=t.sessionHealth?.[ne];return se?se.status:c.value&&d.value-c.value>8e3?"thinking":null});function j(){let ne=r.value;if(!ne)return;let se=t.conversations.find(E=>E.id===ne);t.sendWsMessage({type:"refresh_conversation",conversationId:ne,agentId:se?.agentId})}let X=Vue.computed(()=>{let ne=i.value,se=[],E=null,ae=0,pe=()=>{E&&(E.isActive=E.isStreaming===!0,io(E),(E.textContent||E.toolMsgs.length>0||E.todoMsg||E.askMsg)&&se.push(E),E=null)},U=()=>{ae++,E={type:"assistant-turn",id:"turn_"+ae,textContent:"",textSegments:[],isStreaming:!1,isActive:!1,isHistory:!1,todoMsg:null,toolMsgs:[],askMsg:null,messages:[]}};for(let J=0;J<ne.length;J++){let R=ne[J];if(R.type==="user"){if(!R.content||!R.content.trim())continue;pe(),se.push({type:"user",id:R.id||"u_"+J,message:R});continue}if(R.type==="system"||R.type==="error"){pe(),se.push({type:R.type,id:R.id||"s_"+J,message:R});continue}if(!(R.type==="tool-result"||R.type==="tool_result")){if(R.type==="assistant"){E||U(),ro(E,R),R.isStreaming&&(E.isStreaming=!0),R.isHistory&&(E.isHistory=!0),E.messages.push(R);continue}if(R.type==="tool-use"){E||U();let ee=ne[J+1],V=ee&&(ee.type==="tool-result"||ee.type==="tool_result"),P={...R,hasResult:V||R.hasResult||!1,toolResult:R.toolResult||null};R.toolName==="TodoWrite"?E.todoMsg=P:R.toolName==="AskUserQuestion"?E.askMsg=P:E.toolMsgs.push(P),E.messages.push(R);continue}pe(),se.push({type:R.type||"unknown",id:R.id||"x_"+J,message:R})}}return pe(),se}),G=(ne,se)=>{if(!r.value)return;let E=se||[];t.sendMessageToConversation(r.value,ne,E)},ce=()=>{r.value&&t.cancelExecutionForConversation(r.value)};function be(){t.setActivePanel(e.paneId)}function N(){t.removePanel(e.paneId)}let Z=Vue.computed(()=>t.getPaneRightPanel(e.paneId));function K(){t.setPaneRightPanel(e.paneId,null)}let oe=Vue.ref(!0),he=50,xe=()=>{if(!s.value)return!0;let{scrollTop:ne,scrollHeight:se,clientHeight:E}=s.value;return se-ne-E<=he},_e=()=>{s.value&&(s.value.scrollTop=s.value.scrollHeight)},ge=()=>{oe.value=xe()};return Vue.watch(()=>i.value.length,()=>{oe.value&&Vue.nextTick(_e)}),Vue.watch(()=>{let ne=i.value,se=ne[ne.length-1];return se?.isStreaming?se.content?.length:0},()=>{oe.value&&Vue.nextTick(_e)}),Vue.watch(r,()=>{s.value&&s.value.removeEventListener("scroll",ge),oe.value=!0,Vue.nextTick(()=>{s.value&&(s.value.addEventListener("scroll",ge),_e())})}),Vue.onMounted(()=>{s.value&&(s.value.addEventListener("scroll",ge),_e())}),Vue.onUnmounted(()=>{s.value&&s.value.removeEventListener("scroll",ge)}),{store:t,containerRef:s,isActivePanel:n,conversationId:r,messages:i,isProcessing:o,showTypingDots:l,previewShowTypingDots:T,waitingStatus:D,animationType:g,catWalkRef:u,catSpriteRef:p,dogPhase:h,spikeTransform:Q,teddyTransform:H,leashPathL:$,leashPathR:te,leashOpacityL:F,leashOpacityR:S,questionLX:M,questionRX:L,refreshSession:j,turnGroups:X,sendFn:G,cancelFn:ce,setActive:be,closePane:N,paneRightPanel:Z,closePanePanel:K}}}});var la,Bc=B(()=>{la={name:"SidebarModeToggle",props:{view:{type:String,required:!0},disabled:{type:Boolean,default:!1}},emits:["flip"],computed:{isYeaft(){return this.view==="yeaft"},chatLabel(){return this.$t("sidebar.toggle.chat")},yeaftLabel(){return this.$t("sidebar.toggle.yeaft")},titleText(){return this.isYeaft?this.chatLabel:this.yeaftLabel}},methods:{onClick(){this.disabled||this.$emit("flip",this.isYeaft?"chat":"yeaft")},onKeydown(e){this.disabled||(e.key==="Enter"||e.key===" "?(e.preventDefault(),this.onClick()):e.key==="ArrowLeft"&&this.isYeaft?(e.preventDefault(),this.$emit("flip","chat")):e.key==="ArrowRight"&&!this.isYeaft&&(e.preventDefault(),this.$emit("flip","yeaft")))}},template:`
5598
5593
  <button
5599
5594
  type="button"
5600
5595
  class="mode-toggle"
@@ -9407,7 +9402,7 @@ ${String(e||"").trim()}
9407
9402
  @open-vp-library="openVpLibraryFromGroupSettings"
9408
9403
  />
9409
9404
  </div>
9410
- `,setup(){let e=Pinia.useChatStore(),t=Pinia.useAuthStore(),s=Pinia.useVpStore(),n=Vue.getCurrentInstance(),r=n&&n.appContext.config.globalProperties.$t||(x=>x),i=Vue.computed(()=>!!(e.yeaftDebugPanel&&e.yeaftDebugPanel.open)),o=Vue.ref(null),a=Vue.ref(!1),l=Vue.ref(!1),c=Vue.ref(null),d=Vue.ref("operations"),u=Vue.ref(!1),p=Vue.ref(""),f=Vue.ref(""),g=Vue.ref(!1),v=Vue.ref(""),m=null,b=Vue.ref("vp"),h=Vue.ref(null),w=Vue.ref(null),I=Vue.ref(null),y=Vue.ref(null),k=Vue.ref(null),_=Vue.ref(null),A=Vue.ref(!1),Q=Vue.ref(null),H=Vue.computed(()=>e.getYeaftHistoryOutlineState()),z=Vue.ref(e.yeaftHistorySearchState?.query||""),$=null,te=()=>{try{return window.Pinia?.useSessionsStore?.()||null}catch{return null}},F=()=>{let x=te();return{agentId:e.currentAgent||null,sessionId:e.yeaftActiveSessionFilter||x?.activeSessionId||null}},S=()=>Rv,M=(x="")=>{let{agentId:pe,sessionId:ke}=F();e.yeaftHistorySearchState={requestId:null,agentId:pe,sessionId:ke,query:"",senderKey:x,loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,error:null}},L=Vue.computed(()=>{let x=e.currentAgent||"agent",pe=te(),ke=e.yeaftActiveSessionFilter||pe?.activeSessionId||"session";return`yeaft:${x}:${ke}`});Vue.watch(L,()=>{I.value=null});let T=null,D=null,U=x=>{if(!x)return!1;let pe=String(x.tagName||"").toLowerCase();return pe==="textarea"||pe==="input"||x.isContentEditable===!0},X=({recoverScroll:x=!1}={})=>{let pe=y.value;if(!pe)return;if(!it.value){pe.style.removeProperty("--yeaft-visual-viewport-height");return}let ke=window.visualViewport,Ze=Math.max(1,Math.round(ke?.height||window.innerHeight||1));pe.style.setProperty("--yeaft-visual-viewport-height",`${Ze}px`),!(!x||ke&&window.innerHeight&&ke.height<window.innerHeight*.85||U(document.activeElement))&&window.scrollTo(0,0)},G=(x={})=>{T!=null&&cancelAnimationFrame(T),T=requestAnimationFrame(()=>{T=null,X(x)})},ce=()=>{G({recoverScroll:!0}),D&&clearTimeout(D),D=setTimeout(()=>{D=null,G({recoverScroll:!0})},260)},be=Vue.computed(()=>e.hasCapability("terminal")||e.hasCapability("file_editor")||e.hasCapability("browser_runtime")&&e.hasCapability("browser_webrtc")&&(e.hasCapability("browser_capture_tab")||e.hasCapability("browser_capture_cdp"))),N=Vue.computed(()=>!0),Z=x=>{let pe=x&&x.id?x.id:null;pe&&(it.value&&re(),e.setActiveSessionFilter(pe,{agentId:x.agentId||null}),it.value&&e.closeSessionSidebar())},K=x=>{},oe=Vue.ref(null),he=Vue.ref(!1),xe=320,_e=Math.max(xe,Math.round(window.innerWidth*.25)),ge=localStorage.getItem("yeaft-debug-width"),ne=Vue.ref(ge?parseInt(ge,10):_e),se=Vue.computed(()=>({"--yeaft-detail-width":ne.value+"px"})),E=x=>{he.value=!0;let pe=x.clientX,ke=ne.value,Ze=window.innerWidth*.6,We=Os=>{let nn=pe-Os.clientX,fs=Math.min(Ze,Math.max(xe,ke+nn));ne.value=fs},mt=()=>{he.value=!1,document.removeEventListener("mousemove",We),document.removeEventListener("mouseup",mt),localStorage.setItem("yeaft-debug-width",String(ne.value))};document.addEventListener("mousemove",We),document.addEventListener("mouseup",mt)},ae="yeaft-session-status-visible",ue="(max-width: 768px)",j="(max-width: 1024px)",J=()=>{if(typeof window>"u")return!1;try{return typeof window.matchMedia=="function"?window.matchMedia(ue).matches:Number(window.innerWidth)<=768}catch{return!1}},R=()=>{if(J())return!1;try{let x=localStorage.getItem(ae);return!(x==="0"||x==="false")}catch{return!0}},ee=Vue.ref(R()),V=x=>{if(ee.value=!!x,!J())try{localStorage.setItem(ae,ee.value?"1":"0")}catch{}},P=()=>{let x=!ee.value;x&&(e.workbenchExpanded&&e.toggleWorkbench(),e.closeYeaftDebugPanel()),V(x)},re=()=>V(!1),we=()=>{e.workbenchExpanded||re(),e.toggleWorkbench()};Vue.watch(i,x=>{x&&re()},{flush:"sync"}),Vue.watch(()=>e.workbenchExpanded,x=>{x&&re()},{flush:"sync"});let Ve=220,Be=280,rt=(()=>{try{return localStorage.getItem("yeaft-vp-timeline-width")}catch{return null}})(),st=rt?parseInt(rt,10):NaN,Je=Vue.ref(Number.isFinite(st)&&st>=Ve?st:Be),Rt=Vue.computed(()=>({"--yeaft-vp-timeline-width":Je.value+"px"})),Bt=x=>{let pe=x.clientX,ke=Je.value,Ze=Math.max(Ve,Math.floor(window.innerWidth*.4)),We=Os=>{let nn=pe-Os.clientX,fs=Math.min(Ze,Math.max(Ve,ke+nn));Je.value=fs},mt=()=>{document.removeEventListener("mousemove",We),document.removeEventListener("mouseup",mt);try{localStorage.setItem("yeaft-vp-timeline-width",String(Je.value))}catch{}};document.addEventListener("mousemove",We),document.addEventListener("mouseup",mt)},Nt=typeof window.matchMedia=="function"?window.matchMedia(ue):null,At=typeof window.matchMedia=="function"?window.matchMedia(j):null,at=(x,pe)=>x?x.matches:window.innerWidth<=pe,it=Vue.ref(at(Nt,768)),ds=Vue.ref(at(At,1024)),et=Vue.computed(()=>it.value?!e.sessionSidebarOpen:e.sidebarCollapsed),ut=()=>{let x=it.value;it.value=at(Nt,768),ds.value=at(At,1024),it.value&&!x&&re()},xt=()=>{ut(),ce()},us=x=>{x&&(typeof x.addEventListener=="function"?x.addEventListener("change",xt):typeof x.addListener=="function"&&x.addListener(xt))},pt=x=>{x&&(typeof x.removeEventListener=="function"?x.removeEventListener("change",xt):typeof x.removeListener=="function"&&x.removeListener(xt))},O=()=>{$&&(clearTimeout($),$=null),z.value="",M(S()),A.value=!1,Q.value=null},le=()=>{let x=S();z.value="",M(x),A.value=!0,e.searchYeaftHistory("",{senderKey:x}),Vue.nextTick(()=>_.value?.focus?.())},me=()=>{A.value?O():le()},Ae=x=>{let pe=typeof x.composedPath=="function"?x.composedPath():[];A.value&&Fg(x.target,pe)&&O()},Ie=x=>{z.value=x,$&&clearTimeout($),Q.value=null,$=setTimeout(()=>{$=null,e.searchYeaftHistory(z.value,{senderKey:e.yeaftHistorySearchState.senderKey})},220)},Oe=x=>{if(!e.searchYeaftHistory("",{append:!0,senderKey:Rv}))return;let pe=Vue.watch(()=>H.value.loading,ke=>{ke||(pe(),_.value?.restoreOlderScroll?.(x))})},He=()=>e.searchYeaftHistory(e.yeaftHistorySearchState.query,{append:!0,senderKey:e.yeaftHistorySearchState.senderKey}),Ue=x=>{e.hasCapability("session_history_window_prefetch")&&e.loadYeaftHistoryWindow(x)},_t=x=>{let pe=e.beginYeaftHistoryReveal?.(x)||null;return Hg({result:x,revealWindow:ke=>e.revealYeaftHistoryResult(ke,pe),nextTick:()=>Vue.nextTick(),revealMessage:ke=>k.value?.revealMessage?.(ke),isMobile:it.value,closeOutline:O}).finally(()=>e.finishYeaftHistoryReveal?.(pe))},ft=x=>{if((x.metaKey||x.ctrlKey)&&String(x.key).toLowerCase()==="f"){x.preventDefault(),le();return}if(x.key==="Escape"){if(A.value){O();return}if(o.value){Ee();return}}};Vue.onMounted(()=>{ut(),window.addEventListener("resize",xt),us(Nt),us(At),window.visualViewport?.addEventListener("resize",ce),window.visualViewport?.addEventListener("scroll",ce),document.addEventListener("click",Pn),document.addEventListener("click",Ae),document.addEventListener("keydown",ft),G()}),Vue.onUnmounted(()=>{window.removeEventListener("resize",xt),pt(Nt),pt(At),window.visualViewport?.removeEventListener("resize",ce),window.visualViewport?.removeEventListener("scroll",ce),document.removeEventListener("click",Pn),document.removeEventListener("click",Ae),document.removeEventListener("keydown",ft),T!=null&&cancelAnimationFrame(T),D&&clearTimeout(D),$&&clearTimeout($)}),Vue.watch(()=>e.yeaftConversationId,x=>{x&&e.activeConversations[0]!==x&&(e.activeConversations=[x])}),Vue.watch(()=>[e.currentAgent,e.yeaftActiveSessionFilter],()=>{it.value&&re(),O(),M(S())});let bt=()=>{e.leaveYeaft()},Js=(x,pe,ke,Ze=null)=>{let We=te();if(We&&We.activeNeedsInvite){let fs=We.activeSession;return fs&&Ds.delete(fs.id),!1}let mt=e.yeaftActiveSessionFilter||We&&We.activeSessionId||"grp_default",Os=Wo(x).mentions,nn=Array.isArray(pe)?pe:void 0;return e.sendYeaftSessionMessage({groupId:mt,text:x,mentions:Os,attachments:nn,quote:ke,...Ze?{quickSend:Ze}:{}})},An=x=>{x&&(I.value=x,w.value?.focusInput?.())},xn=x=>{I.value=null,w.value?.replaceDraft?.(x||"")},zt=()=>{let x=te(),pe=e.yeaftActiveSessionFilter||x?.activeSessionId||null;pe&&e.cancelYeaftSession(pe)},en=()=>{if(it.value){e.toggleSessionSidebar();return}e.toggleSidebar()},yr=()=>{e.closeYeaftDebugPanel()},br=()=>{e.reloadYeaftMessages()},wr=()=>{if(typeof e.requestYeaftSessionInventory=="function"){e.requestYeaftSessionInventory();return}e._hasHandledAgentList=!1,e._hasHandledYeaftSessionHydrate=!1,e.yeaftSessionHydrateError=null,e.sendWsMessage({type:"get_agents"})},Tn=()=>{window.location.reload()},Es=Vue.computed(()=>{let x=te(),pe=e.yeaftActiveSessionFilter||x?.activeSessionId||null;return pe?e.isYeaftSessionProcessing(pe,e.currentAgent||null):!1}),lt=Vue.computed(()=>{let x=te();if(!x||!x.sessions)return null;let pe=e.yeaftActiveSessionFilter||null;if(pe&&typeof x.sessionById=="function"){let ke=x.sessionById(pe,e.currentAgent||null);if(ke)return ke}if(x.activeSessionId&&typeof x.sessionById=="function"){let ke=x.sessionById(x.activeSessionId,e.currentAgent||null);if(ke)return ke}return typeof x.sessionById=="function"?x.sessionById("grp_default",e.currentAgent||null):null}),q=()=>Tv({activeSessionFilter:e.yeaftActiveSessionFilter,sessionsStore:te(),topbarGroup:lt.value}),ie=Vue.computed(()=>{let x=lt.value||{},pe=typeof x.id=="string"?x.id.trim():"",ke=[x.title,x.name,x.config?.title,x.config?.name];for(let Ze of ke){let We=typeof Ze=="string"?Ze.trim():"";if(We&&!(pe&&We===pe)&&!/^(sessions?|groups?)\//i.test(We)&&!/^session_[A-Za-z0-9_-]+$/.test(We)&&!(x.workDir&&We===x.workDir))return We}return""}),ve=Vue.computed(()=>{let x=lt.value?.workDir;return typeof x=="string"?x.trim():""}),Te=Vue.computed(()=>lt.value&&typeof lt.value.announcement=="string"?lt.value.announcement:""),$e=Vue.computed(()=>gm(lt.value,e.yeaftModel||"")),Ke=Vue.computed(()=>{let x=$e.value;return x&&e.yeaftAvailableModels.find(pe=>ki(pe,x))||null}),Ye=Vue.computed(()=>Ke.value?.label||Ke.value?.id||$e.value),wt=x=>Lc(x?.effortOptions),Yt=Vue.computed(()=>mm(lt.value,e.yeaftModelEffort||"")),Et=Vue.computed(()=>{let x=Array.isArray(Ke.value?.effortOptions)?Ke.value.effortOptions.filter(Boolean):[];return x.length?x.includes(Yt.value)?Yt.value:Oc(x):null}),kt=Vue.computed(()=>vm(e.yeaftAvailableModels)),St=Vue.computed(()=>wt(Ke.value)),gt=x=>{x==="model"&&!kt.value.length||x==="effort"&&!St.value.length||(o.value=o.value===x?null:x)},Ee=(x=null)=>{(!x||o.value===x)&&(o.value=null)},ht=(x,pe)=>{let ke=x.currentTarget;if(x.relatedTarget){ke?.contains(x.relatedTarget)||Ee(pe);return}setTimeout(()=>{ke?.contains(document.activeElement)||Ee(pe)},0)},ka=(x,pe=null)=>{if(!x)return;let ke=lt.value?.id||null;e.switchYeaftModel(x,ke,pe),Ee()},Ci=x=>{if(!St.value.includes(x)||!$e.value)return;let pe=lt.value?.id||null;e.switchYeaftModel($e.value,pe,x),Ee()},Mn=x=>!x||!Number.isFinite(x)||x<=0?"":x>=1e6?`${Math.round(x/1e5)/10}m`:x>=1e3?`${Math.round(x/1e3)}k`:String(x),ps=x=>{let pe=Mn(x?.contextWindow),ke=Mn(x?.maxOutput);return pe&&ke?`${pe} \xB7 ${ke} out`:pe},Pn=x=>{if(!o.value)return;x.target.closest(".yeaft-composer-choice")||Ee()},Dt=(x,pe="operations")=>{c.value=x||null,d.value=["operations","trace","llm"].includes(pe)?pe:"operations",l.value=!0},Rn=()=>{a.value||(b.value="vp",h.value=null),a.value=!a.value},Ai=({initialTab:x="vp",editVpId:pe=null}={})=>{b.value=["vp","search","mcp"].includes(x)?x:"vp",h.value=b.value==="vp"&&pe||null,a.value=!0},kr=()=>{Ee(),Dt(e.currentAgent||null,"llm")},_n=async()=>{if(!(f.value||g.value)){g.value=!0,v.value="";try{let x={"Content-Type":"application/json"};t.token&&(x.Authorization=`Bearer ${t.token}`);let pe=await fetch("/api/user/agent-secret",{headers:x});if(!pe.ok){let We=r("yeaft.onboarding.secretError");try{let mt=await pe.json();mt?.error&&(We=mt.error)}catch{}throw new Error(We)}let ke=await pe.json(),Ze=ke?.agentSecret||ke?.agent_secret||"";if(f.value=String(Ze||"").trim(),!f.value)throw new Error(r("yeaft.onboarding.secretError"))}catch(x){v.value=x?.message||r("yeaft.onboarding.secretError")}finally{g.value=!1}}},En=()=>{u.value=!0},xi=x=>{u.value=!1},Dn=async(x,pe)=>{if(pe&&!(typeof navigator>"u"||!navigator.clipboard?.writeText))try{let ke=typeof pe=="string"?pe:pe?.value||"";if(!ke)return;await navigator.clipboard.writeText(ke),p.value=x||"",m&&clearTimeout(m),m=setTimeout(()=>{p.value="",m=null},1800)}catch{}},Ds=Vue.reactive(new Set),$s=Vue.computed(()=>{let x=te();return x?x.activeSession:null}),$n=x=>{if(!x)return"";if(x.id==="grp_default"&&(x.name==="Default"||!x.name))try{let pe=typeof window<"u"?window.i18n:null;if(pe&&pe.global&&typeof pe.global.t=="function")return pe.global.t("yeaft.session.defaultName")}catch{}return x.name||x.id||""},Sa=Vue.computed(()=>$n($s.value)),Ti=Vue.computed(()=>{let x=te();if(!x||!x.activeNeedsInvite)return!1;let pe=x.activeSession;return pe?!Ds.has(pe.id):!1}),Mi=Vue.computed(()=>{let x=te();return!!(x&&x.activeNeedsInvite)}),Ia=Vue.computed(()=>{let x=te();return e._hasHandledAgentList===!0&&e._hasHandledYeaftSessionHydrate===!0&&!!(x&&x.hasLoadedSnapshot)}),tn=Vue.computed(()=>{let x=te();return Av({agentInventoryReady:e._hasHandledAgentList===!0,hasYeaftAgent:Mv(e),sessionsReady:e._hasHandledYeaftSessionHydrate===!0&&!!(x&&x.hasLoadedSnapshot),sessionsEmpty:!!(x&&x.isEmpty)})});Vue.watch(tn,x=>{x&&_n()},{immediate:!0});let Pi="npm install -g @yeaft/webchat-agent",nd=Vue.computed(()=>{let pe=(typeof window<"u"&&window.location?.origin?window.location.origin:"http://localhost:3456").replace(/^http:/,"ws:").replace(/^https:/,"wss:"),ke=f.value||r("yeaft.onboarding.secretPending");return`yeaft-agent install --server ${pe} --name yeaft-agent --secret ${ke}`}),C="gh auth login && yeaft-agent llm use github-copilot --model gpt-5.5",W=()=>{let x=$s.value;x&&Ds.add(x.id),Ri(x?x.id:null)},Y=()=>{let x=$s.value;x&&Ds.add(x.id)},Se=Vue.ref(!1),Re=Vue.ref(null),Ce=Vue.ref(null),nt=Vue.ref("session"),Le=Vue.ref(""),ye=(x={})=>{let pe=x&&(x.sessionId||x.groupId)||null,ke=x&&x.editVpId||"",Ze=ke?"members":x&&x.section||"session";pe&&(Re.value=pe,Ce.value=x&&x.agentId||null,nt.value=Ze,Le.value=ke,Se.value=!0)},$t=()=>{let x=q();x&&ye({sessionId:x,section:"session"})},Lt=()=>{Se.value=!1,Re.value=null,Ce.value=null,Le.value=""},sn=()=>{Lt(),Ai({initialTab:"vp"})},Ri=x=>{x&&ye({sessionId:x,section:"members"})};Vue.watch(()=>{let x=$s.value;return x?x.id+":"+(Array.isArray(x.roster)?x.roster.length:0)+":"+(x.defaultVpId||""):""},(x,pe)=>{let ke=$s.value;ke&&x!==pe&&Array.isArray(ke.roster)&&ke.roster.length>0&&Ds.delete(ke.id)}),typeof Vue.onBeforeUnmount=="function"&&Vue.onBeforeUnmount(()=>{m&&clearTimeout(m),m=null});let Ge=()=>{a.value=!1},Ls=Vue.computed(()=>!a.value&&!tn.value&&ee.value),_i=Vue.computed(()=>{let x=te(),pe=e.yeaftActiveSessionFilter||x?.activeSessionId||null;if(!pe)return[];let Ze=(typeof x?.sessionById=="function"?x.sessionById(pe,e.currentAgent||null):null)?.agentId||e.currentAgent||null,We=Ze?`${Ze}${pe}`:pe,mt=e.yeaftActiveTasksBySession?.[We]||{};return bS(mt)}),jv=Vue.computed(()=>{if(!e.yeaftConversationId)return[];let pe=te(),ke=e.yeaftActiveSessionFilter||pe?.activeSessionId||null;if(!ke)return[];let Ze=Sv(pe,ke,e.currentAgent||null),We=Ze&&Array.isArray(Ze.roster)?Ze.roster:[];if(We.length===0)return[];let mt=new Set(We),Os=kv(We,s.vpList||[]),nn=e.vpStatuses||{},fs={},Ei=e.currentAgent||null;for(let tt of Object.values(nn)){if(!tt||!tt.vpId)continue;let Di=tt.sessionId??tt.groupId;Di&&Di!==ke||Ei&&tt.agentId&&tt.agentId!==Ei||mt.has(tt.vpId)&&(fs[tt.vpId]=tt)}let rd={};for(let tt of Object.values(e.activeVpTurns||{}))!tt?.turnId||!tt?.sessionId||tt.sessionId!==ke||Ei&&tt.agentId&&tt.agentId!==Ei||Object.entries(e.stoppingVpTurnIds||{}).some(([Di])=>e.activeVpTurns?.[Di]===tt)&&(rd[tt.turnId]=!0);return Iv({vpList:Os,vpStatuses:fs,stoppingVpTurnIds:rd,connectionState:e.connectionState,vpLabelOf:tt=>s.vpLabel(tt),vpDescriptionOf:tt=>s.vpDescription(tt)})});return{store:e,pageRef:y,effectiveSidebarCollapsed:et,debugMode:i,composerMenuOpen:o,topbarGroup:lt,topbarSessionTitle:ie,topbarFolderPath:ve,topbarModel:$e,topbarModelLabel:Ye,topbarEffort:Et,topbarModelRows:kt,topbarEffortOptions:St,selectableEffortsForModel:wt,modelOptionMatchesRef:ki,showSettings:a,showAgentSettings:l,agentSettingsAgentId:c,agentSettingsInitialCategory:d,sessionCreateOpen:u,settingsInitialTab:b,settingsInitialEditVpId:h,chatInputRef:w,messageQuote:I,messageListRef:k,historySearchRef:_,historySearchOpen:A,historySearchActiveMessageId:Q,historyOutlineState:H,toggleHistorySearch:me,closeHistorySearch:O,onHistorySearchQuery:Ie,loadOlderHistoryOutline:Oe,loadMoreHistorySearchResults:He,previewHistorySearchResult:Ue,selectHistorySearchResult:_t,yeaftInputDraftKey:L,openSettings:Ai,isMobile:it,isNarrowDetail:ds,detailPanel:oe,isResizingDetail:he,detailWidthStyle:se,startDetailResize:E,isProcessing:Es,goBack:bt,sendMessage:Js,setMessageQuote:An,editMessageAsNew:xn,cancelYeaft:zt,toggleSidebar:en,closeDebug:yr,reloadMessages:br,retryConversationInventory:wr,reloadPage:Tn,toggleComposerMenu:gt,closeComposerMenu:Ee,onComposerMenuFocusout:ht,selectModel:ka,selectEffort:Ci,openLlmConfig:kr,trackOverlayPointerDown:os,trackOverlayPointerUp:as,clearOverlayPointerGesture:ls,openSessionCreate:En,onSessionCreated:xi,copyOnboardingCommand:Dn,copiedOnboardingCommand:p,formatTokens:Mn,formatModelCtx:ps,toggleSettings:Rn,openAgentSettings:Dt,onSettingsSaved:Ge,sidebarV2Enabled:N,onSelectGroupV2:Z,onSelectChat:K,canUseWorkbench:be,shouldShowInviteModal:Ti,inviteGroupName:Sa,onInviteOpenLibrary:W,onInviteDismiss:Y,isActiveGroupEmpty:Mi,conversationInventoryReady:Ia,showOnboardingGuide:tn,installAgentCommand:Pi,connectAgentCommand:nd,copilotCommand:C,agentSecret:f,agentSecretLoading:g,agentSecretError:v,groupSettingsOpen:Se,groupSettingsId:Re,groupSettingsAgentId:Ce,groupSettingsSection:nt,groupSettingsEditVpId:Le,openSessionSettings:ye,openAnnouncementSettings:$t,closeGroupSettings:Lt,openVpLibraryFromGroupSettings:sn,openMemberEditor:Ri,showVpTimeline:Ls,vpTimelineRows:jv,sessionStatusTasksForActiveSession:_i,sessionStatusAnnouncementText:Te,sessionStatusVisible:ee,toggleSessionStatus:P,closeSessionStatus:re,toggleWorkbench:we,timelineWidthStyle:Rt,startTimelineResize:Bt,onEditVpFromTimeline:x=>{if(!x)return;let pe=q();pe&&ye({sessionId:pe,section:"members",editVpId:x})},onMentionVpFromTimeline:x=>{if(!x)return;let pe=w.value;pe&&typeof pe.appendMention=="function"&&pe.appendMention(x)},onCancelVpFromTimeline:x=>{if(!x)return;let pe=te(),ke=e.yeaftActiveSessionFilter||pe?.activeSessionId||null;ke&&typeof e.cancelVpTurnForSession=="function"&&e.cancelVpTurnForSession(x,ke)},onCancelTaskFromTimeline:x=>!x?.id||!x.sessionId||typeof e.cancelYeaftTask!="function"?!1:e.cancelYeaftTask({agentId:x.agentId,sessionId:x.sessionId,taskId:x.id})}}}});var wS,$v,Lv=B(()=>{Ct();wS=["button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","a[href]",'[tabindex]:not([tabindex="-1"])'].join(","),$v={name:"AppDialog",setup(){let e=Ef(),t=Vue.ref(null),s=Vue.ref(null),n=null,r=[],i=p=>{if(p){r=Array.from(document.body.children).filter(f=>f!==t.value?.closest(".app-dialog-overlay")&&!f.classList.contains("app-dialog-overlay")),r.forEach(f=>{f.inert=!0});return}r.forEach(f=>{f.inert=!1}),r=[]},o=()=>{Vue.nextTick(()=>{e.type==="prompt"?s.value?.focus?.():t.value?.querySelector(".app-dialog-confirm")?.focus?.()})};Vue.watch(()=>e.open,(p,f)=>{p&&!f?(n=document.activeElement,Vue.nextTick(()=>i(!0))):!p&&f&&(i(!1),Vue.nextTick(()=>{n?.isConnected&&n.focus?.(),n=null}))}),Vue.watch(()=>e.id,o);let a=()=>{e.type==="alert"?ko(!0):ko(!1)},l=()=>ko(!0,e.value),c=p=>{let f=Array.from(t.value?.querySelectorAll(wS)||[]);if(f.length===0){p.preventDefault(),t.value?.focus?.();return}let g=f[0],v=f[f.length-1];p.shiftKey&&document.activeElement===g?(p.preventDefault(),v.focus()):!p.shiftKey&&document.activeElement===v&&(p.preventDefault(),g.focus())},d=p=>{p.key==="Escape"?(p.preventDefault(),a()):p.key==="Tab"&&c(p)},u=p=>{e.open&&d(p)};return Vue.onMounted(()=>document.addEventListener("keydown",u)),Vue.onBeforeUnmount(()=>{document.removeEventListener("keydown",u),i(!1)}),{state:e,dialog:t,input:s,cancel:a,confirm:l,onKeydown:d}},template:`
9405
+ `,setup(){let e=Pinia.useChatStore(),t=Pinia.useAuthStore(),s=Pinia.useVpStore(),n=Vue.getCurrentInstance(),r=n&&n.appContext.config.globalProperties.$t||(x=>x),i=Vue.computed(()=>!!(e.yeaftDebugPanel&&e.yeaftDebugPanel.open)),o=Vue.ref(null),a=Vue.ref(!1),l=Vue.ref(!1),c=Vue.ref(null),d=Vue.ref("operations"),u=Vue.ref(!1),p=Vue.ref(""),f=Vue.ref(""),g=Vue.ref(!1),v=Vue.ref(""),m=null,b=Vue.ref("vp"),h=Vue.ref(null),w=Vue.ref(null),I=Vue.ref(null),y=Vue.ref(null),k=Vue.ref(null),_=Vue.ref(null),A=Vue.ref(!1),Q=Vue.ref(null),H=Vue.computed(()=>e.getYeaftHistoryOutlineState()),z=Vue.ref(e.yeaftHistorySearchState?.query||""),$=null,te=()=>{try{return window.Pinia?.useSessionsStore?.()||null}catch{return null}},F=()=>{let x=te();return{agentId:e.currentAgent||null,sessionId:e.yeaftActiveSessionFilter||x?.activeSessionId||null}},S=()=>Rv,M=(x="")=>{let{agentId:ue,sessionId:ke}=F();e.yeaftHistorySearchState={requestId:null,agentId:ue,sessionId:ke,query:"",senderKey:x,loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,error:null}},L=Vue.computed(()=>{let x=e.currentAgent||"agent",ue=te(),ke=e.yeaftActiveSessionFilter||ue?.activeSessionId||"session";return`yeaft:${x}:${ke}`});Vue.watch(L,()=>{I.value=null});let T=null,D=null,j=x=>{if(!x)return!1;let ue=String(x.tagName||"").toLowerCase();return ue==="textarea"||ue==="input"||x.isContentEditable===!0},X=({recoverScroll:x=!1}={})=>{let ue=y.value;if(!ue)return;if(!it.value){ue.style.removeProperty("--yeaft-visual-viewport-height");return}let ke=window.visualViewport,Ze=Math.max(1,Math.round(ke?.height||window.innerHeight||1));ue.style.setProperty("--yeaft-visual-viewport-height",`${Ze}px`),!(!x||ke&&window.innerHeight&&ke.height<window.innerHeight*.85||j(document.activeElement))&&window.scrollTo(0,0)},G=(x={})=>{T!=null&&cancelAnimationFrame(T),T=requestAnimationFrame(()=>{T=null,X(x)})},ce=()=>{G({recoverScroll:!0}),D&&clearTimeout(D),D=setTimeout(()=>{D=null,G({recoverScroll:!0})},260)},be=Vue.computed(()=>e.hasCapability("terminal")||e.hasCapability("file_editor")||e.hasCapability("browser_runtime")&&e.hasCapability("browser_webrtc")&&(e.hasCapability("browser_capture_tab")||e.hasCapability("browser_capture_cdp"))),N=Vue.computed(()=>!0),Z=x=>{let ue=x&&x.id?x.id:null;ue&&(it.value&&re(),e.setActiveSessionFilter(ue,{agentId:x.agentId||null}),it.value&&e.closeSessionSidebar())},K=x=>{},oe=Vue.ref(null),he=Vue.ref(!1),xe=320,_e=Math.max(xe,Math.round(window.innerWidth*.25)),ge=localStorage.getItem("yeaft-debug-width"),ne=Vue.ref(ge?parseInt(ge,10):_e),se=Vue.computed(()=>({"--yeaft-detail-width":ne.value+"px"})),E=x=>{he.value=!0;let ue=x.clientX,ke=ne.value,Ze=window.innerWidth*.6,We=Os=>{let nn=ue-Os.clientX,fs=Math.min(Ze,Math.max(xe,ke+nn));ne.value=fs},mt=()=>{he.value=!1,document.removeEventListener("mousemove",We),document.removeEventListener("mouseup",mt),localStorage.setItem("yeaft-debug-width",String(ne.value))};document.addEventListener("mousemove",We),document.addEventListener("mouseup",mt)},ae="yeaft-session-status-visible",pe="(max-width: 768px)",U="(max-width: 1024px)",J=()=>{if(typeof window>"u")return!1;try{return typeof window.matchMedia=="function"?window.matchMedia(pe).matches:Number(window.innerWidth)<=768}catch{return!1}},R=()=>{if(J())return!1;try{let x=localStorage.getItem(ae);return!(x==="0"||x==="false")}catch{return!0}},ee=Vue.ref(R()),V=x=>{if(ee.value=!!x,!J())try{localStorage.setItem(ae,ee.value?"1":"0")}catch{}},P=()=>{let x=!ee.value;x&&(e.workbenchExpanded&&e.toggleWorkbench(),e.closeYeaftDebugPanel()),V(x)},re=()=>V(!1),we=()=>{e.workbenchExpanded||re(),e.toggleWorkbench()};Vue.watch(i,x=>{x&&re()},{flush:"sync"}),Vue.watch(()=>e.workbenchExpanded,x=>{x&&re()},{flush:"sync"});let Ve=220,Be=280,rt=(()=>{try{return localStorage.getItem("yeaft-vp-timeline-width")}catch{return null}})(),st=rt?parseInt(rt,10):NaN,Je=Vue.ref(Number.isFinite(st)&&st>=Ve?st:Be),Rt=Vue.computed(()=>({"--yeaft-vp-timeline-width":Je.value+"px"})),Bt=x=>{let ue=x.clientX,ke=Je.value,Ze=Math.max(Ve,Math.floor(window.innerWidth*.4)),We=Os=>{let nn=ue-Os.clientX,fs=Math.min(Ze,Math.max(Ve,ke+nn));Je.value=fs},mt=()=>{document.removeEventListener("mousemove",We),document.removeEventListener("mouseup",mt);try{localStorage.setItem("yeaft-vp-timeline-width",String(Je.value))}catch{}};document.addEventListener("mousemove",We),document.addEventListener("mouseup",mt)},Nt=typeof window.matchMedia=="function"?window.matchMedia(pe):null,At=typeof window.matchMedia=="function"?window.matchMedia(U):null,at=(x,ue)=>x?x.matches:window.innerWidth<=ue,it=Vue.ref(at(Nt,768)),ds=Vue.ref(at(At,1024)),et=Vue.computed(()=>it.value?!e.sessionSidebarOpen:e.sidebarCollapsed),ut=()=>{let x=it.value;it.value=at(Nt,768),ds.value=at(At,1024),it.value&&!x&&re()},xt=()=>{ut(),ce()},us=x=>{x&&(typeof x.addEventListener=="function"?x.addEventListener("change",xt):typeof x.addListener=="function"&&x.addListener(xt))},pt=x=>{x&&(typeof x.removeEventListener=="function"?x.removeEventListener("change",xt):typeof x.removeListener=="function"&&x.removeListener(xt))},O=()=>{$&&(clearTimeout($),$=null),z.value="",M(S()),A.value=!1,Q.value=null},le=()=>{let x=S();z.value="",M(x),A.value=!0,e.searchYeaftHistory("",{senderKey:x}),Vue.nextTick(()=>_.value?.focus?.())},me=()=>{A.value?O():le()},Ie=x=>{let ue=typeof x.composedPath=="function"?x.composedPath():[];A.value&&Fg(x.target,ue)&&O()},Ae=x=>{z.value=x,$&&clearTimeout($),Q.value=null,$=setTimeout(()=>{$=null,e.searchYeaftHistory(z.value,{senderKey:e.yeaftHistorySearchState.senderKey})},220)},Oe=x=>{if(!e.searchYeaftHistory("",{append:!0,senderKey:Rv}))return;let ue=Vue.watch(()=>H.value.loading,ke=>{ke||(ue(),_.value?.restoreOlderScroll?.(x))})},He=()=>e.searchYeaftHistory(e.yeaftHistorySearchState.query,{append:!0,senderKey:e.yeaftHistorySearchState.senderKey}),Ue=x=>{e.hasCapability("session_history_window_prefetch")&&e.loadYeaftHistoryWindow(x)},_t=x=>{let ue=e.beginYeaftHistoryReveal?.(x)||null;return Hg({result:x,revealWindow:ke=>e.revealYeaftHistoryResult(ke,ue),nextTick:()=>Vue.nextTick(),revealMessage:ke=>k.value?.revealMessage?.(ke),isMobile:it.value,closeOutline:O}).finally(()=>e.finishYeaftHistoryReveal?.(ue))},ft=x=>{if((x.metaKey||x.ctrlKey)&&String(x.key).toLowerCase()==="f"){x.preventDefault(),le();return}if(x.key==="Escape"){if(A.value){O();return}if(o.value){Ee();return}}};Vue.onMounted(()=>{ut(),window.addEventListener("resize",xt),us(Nt),us(At),window.visualViewport?.addEventListener("resize",ce),window.visualViewport?.addEventListener("scroll",ce),document.addEventListener("click",Pn),document.addEventListener("click",Ie),document.addEventListener("keydown",ft),G()}),Vue.onUnmounted(()=>{window.removeEventListener("resize",xt),pt(Nt),pt(At),window.visualViewport?.removeEventListener("resize",ce),window.visualViewport?.removeEventListener("scroll",ce),document.removeEventListener("click",Pn),document.removeEventListener("click",Ie),document.removeEventListener("keydown",ft),T!=null&&cancelAnimationFrame(T),D&&clearTimeout(D),$&&clearTimeout($)}),Vue.watch(()=>e.yeaftConversationId,x=>{x&&e.activeConversations[0]!==x&&(e.activeConversations=[x])}),Vue.watch(()=>[e.currentAgent,e.yeaftActiveSessionFilter],()=>{it.value&&re(),O(),M(S())});let bt=()=>{e.leaveYeaft()},Js=(x,ue,ke,Ze=null)=>{let We=te();if(We&&We.activeNeedsInvite){let fs=We.activeSession;return fs&&Ds.delete(fs.id),!1}let mt=e.yeaftActiveSessionFilter||We&&We.activeSessionId||"grp_default",Os=Wo(x).mentions,nn=Array.isArray(ue)?ue:void 0;return e.sendYeaftSessionMessage({groupId:mt,text:x,mentions:Os,attachments:nn,quote:ke,...Ze?{quickSend:Ze}:{}})},An=x=>{x&&(I.value=x,w.value?.focusInput?.())},xn=x=>{I.value=null,w.value?.replaceDraft?.(x||"")},zt=()=>{let x=te(),ue=e.yeaftActiveSessionFilter||x?.activeSessionId||null;ue&&e.cancelYeaftSession(ue)},en=()=>{if(it.value){e.toggleSessionSidebar();return}e.toggleSidebar()},yr=()=>{e.closeYeaftDebugPanel()},br=()=>{e.reloadYeaftMessages()},wr=()=>{if(typeof e.requestYeaftSessionInventory=="function"){e.requestYeaftSessionInventory();return}e._hasHandledAgentList=!1,e._hasHandledYeaftSessionHydrate=!1,e.yeaftSessionHydrateError=null,e.sendWsMessage({type:"get_agents"})},Tn=()=>{window.location.reload()},Es=Vue.computed(()=>{let x=te(),ue=e.yeaftActiveSessionFilter||x?.activeSessionId||null;return ue?e.isYeaftSessionProcessing(ue,e.currentAgent||null):!1}),lt=Vue.computed(()=>{let x=te();if(!x||!x.sessions)return null;let ue=e.yeaftActiveSessionFilter||null;if(ue&&typeof x.sessionById=="function"){let ke=x.sessionById(ue,e.currentAgent||null);if(ke)return ke}if(x.activeSessionId&&typeof x.sessionById=="function"){let ke=x.sessionById(x.activeSessionId,e.currentAgent||null);if(ke)return ke}return typeof x.sessionById=="function"?x.sessionById("grp_default",e.currentAgent||null):null}),q=()=>Tv({activeSessionFilter:e.yeaftActiveSessionFilter,sessionsStore:te(),topbarGroup:lt.value}),ie=Vue.computed(()=>{let x=lt.value||{},ue=typeof x.id=="string"?x.id.trim():"",ke=[x.title,x.name,x.config?.title,x.config?.name];for(let Ze of ke){let We=typeof Ze=="string"?Ze.trim():"";if(We&&!(ue&&We===ue)&&!/^(sessions?|groups?)\//i.test(We)&&!/^session_[A-Za-z0-9_-]+$/.test(We)&&!(x.workDir&&We===x.workDir))return We}return""}),ve=Vue.computed(()=>{let x=lt.value?.workDir;return typeof x=="string"?x.trim():""}),Te=Vue.computed(()=>lt.value&&typeof lt.value.announcement=="string"?lt.value.announcement:""),$e=Vue.computed(()=>gm(lt.value,e.yeaftModel||"")),Ke=Vue.computed(()=>{let x=$e.value;return x&&e.yeaftAvailableModels.find(ue=>ki(ue,x))||null}),Ye=Vue.computed(()=>Ke.value?.label||Ke.value?.id||$e.value),wt=x=>Lc(x?.effortOptions),Yt=Vue.computed(()=>mm(lt.value,e.yeaftModelEffort||"")),Et=Vue.computed(()=>{let x=Array.isArray(Ke.value?.effortOptions)?Ke.value.effortOptions.filter(Boolean):[];return x.length?x.includes(Yt.value)?Yt.value:Oc(x):null}),kt=Vue.computed(()=>vm(e.yeaftAvailableModels)),St=Vue.computed(()=>wt(Ke.value)),gt=x=>{x==="model"&&!kt.value.length||x==="effort"&&!St.value.length||(o.value=o.value===x?null:x)},Ee=(x=null)=>{(!x||o.value===x)&&(o.value=null)},ht=(x,ue)=>{let ke=x.currentTarget;if(x.relatedTarget){ke?.contains(x.relatedTarget)||Ee(ue);return}setTimeout(()=>{ke?.contains(document.activeElement)||Ee(ue)},0)},ka=(x,ue=null)=>{if(!x)return;let ke=lt.value?.id||null;e.switchYeaftModel(x,ke,ue),Ee()},Ci=x=>{if(!St.value.includes(x)||!$e.value)return;let ue=lt.value?.id||null;e.switchYeaftModel($e.value,ue,x),Ee()},Mn=x=>!x||!Number.isFinite(x)||x<=0?"":x>=1e6?`${Math.round(x/1e5)/10}m`:x>=1e3?`${Math.round(x/1e3)}k`:String(x),ps=x=>{let ue=Mn(x?.contextWindow),ke=Mn(x?.maxOutput);return ue&&ke?`${ue} \xB7 ${ke} out`:ue},Pn=x=>{if(!o.value)return;x.target.closest(".yeaft-composer-choice")||Ee()},Dt=(x,ue="operations")=>{c.value=x||null,d.value=["operations","trace","llm"].includes(ue)?ue:"operations",l.value=!0},Rn=()=>{a.value||(b.value="vp",h.value=null),a.value=!a.value},Ai=({initialTab:x="vp",editVpId:ue=null}={})=>{b.value=["vp","search","mcp"].includes(x)?x:"vp",h.value=b.value==="vp"&&ue||null,a.value=!0},kr=()=>{Ee(),Dt(e.currentAgent||null,"llm")},_n=async()=>{if(!(f.value||g.value)){g.value=!0,v.value="";try{let x={"Content-Type":"application/json"};t.token&&(x.Authorization=`Bearer ${t.token}`);let ue=await fetch("/api/user/agent-secret",{headers:x});if(!ue.ok){let We=r("yeaft.onboarding.secretError");try{let mt=await ue.json();mt?.error&&(We=mt.error)}catch{}throw new Error(We)}let ke=await ue.json(),Ze=ke?.agentSecret||ke?.agent_secret||"";if(f.value=String(Ze||"").trim(),!f.value)throw new Error(r("yeaft.onboarding.secretError"))}catch(x){v.value=x?.message||r("yeaft.onboarding.secretError")}finally{g.value=!1}}},En=()=>{u.value=!0},xi=x=>{u.value=!1},Dn=async(x,ue)=>{if(ue&&!(typeof navigator>"u"||!navigator.clipboard?.writeText))try{let ke=typeof ue=="string"?ue:ue?.value||"";if(!ke)return;await navigator.clipboard.writeText(ke),p.value=x||"",m&&clearTimeout(m),m=setTimeout(()=>{p.value="",m=null},1800)}catch{}},Ds=Vue.reactive(new Set),$s=Vue.computed(()=>{let x=te();return x?x.activeSession:null}),$n=x=>{if(!x)return"";if(x.id==="grp_default"&&(x.name==="Default"||!x.name))try{let ue=typeof window<"u"?window.i18n:null;if(ue&&ue.global&&typeof ue.global.t=="function")return ue.global.t("yeaft.session.defaultName")}catch{}return x.name||x.id||""},Sa=Vue.computed(()=>$n($s.value)),Ti=Vue.computed(()=>{let x=te();if(!x||!x.activeNeedsInvite)return!1;let ue=x.activeSession;return ue?!Ds.has(ue.id):!1}),Mi=Vue.computed(()=>{let x=te();return!!(x&&x.activeNeedsInvite)}),Ia=Vue.computed(()=>{let x=te();return e._hasHandledAgentList===!0&&e._hasHandledYeaftSessionHydrate===!0&&!!(x&&x.hasLoadedSnapshot)}),tn=Vue.computed(()=>{let x=te();return Av({agentInventoryReady:e._hasHandledAgentList===!0,hasYeaftAgent:Mv(e),sessionsReady:e._hasHandledYeaftSessionHydrate===!0&&!!(x&&x.hasLoadedSnapshot),sessionsEmpty:!!(x&&x.isEmpty)})});Vue.watch(tn,x=>{x&&_n()},{immediate:!0});let Pi="npm install -g @yeaft/webchat-agent",nd=Vue.computed(()=>{let ue=(typeof window<"u"&&window.location?.origin?window.location.origin:"http://localhost:3456").replace(/^http:/,"ws:").replace(/^https:/,"wss:"),ke=f.value||r("yeaft.onboarding.secretPending");return`yeaft-agent install --server ${ue} --name yeaft-agent --secret ${ke}`}),C="gh auth login && yeaft-agent llm use github-copilot --model gpt-5.5",W=()=>{let x=$s.value;x&&Ds.add(x.id),Ri(x?x.id:null)},Y=()=>{let x=$s.value;x&&Ds.add(x.id)},Se=Vue.ref(!1),Re=Vue.ref(null),Ce=Vue.ref(null),nt=Vue.ref("session"),Le=Vue.ref(""),ye=(x={})=>{let ue=x&&(x.sessionId||x.groupId)||null,ke=x&&x.editVpId||"",Ze=ke?"members":x&&x.section||"session";ue&&(Re.value=ue,Ce.value=x&&x.agentId||null,nt.value=Ze,Le.value=ke,Se.value=!0)},$t=()=>{let x=q();x&&ye({sessionId:x,section:"session"})},Lt=()=>{Se.value=!1,Re.value=null,Ce.value=null,Le.value=""},sn=()=>{Lt(),Ai({initialTab:"vp"})},Ri=x=>{x&&ye({sessionId:x,section:"members"})};Vue.watch(()=>{let x=$s.value;return x?x.id+":"+(Array.isArray(x.roster)?x.roster.length:0)+":"+(x.defaultVpId||""):""},(x,ue)=>{let ke=$s.value;ke&&x!==ue&&Array.isArray(ke.roster)&&ke.roster.length>0&&Ds.delete(ke.id)}),typeof Vue.onBeforeUnmount=="function"&&Vue.onBeforeUnmount(()=>{m&&clearTimeout(m),m=null});let Ge=()=>{a.value=!1},Ls=Vue.computed(()=>!a.value&&!tn.value&&ee.value),_i=Vue.computed(()=>{let x=te(),ue=e.yeaftActiveSessionFilter||x?.activeSessionId||null;if(!ue)return[];let Ze=(typeof x?.sessionById=="function"?x.sessionById(ue,e.currentAgent||null):null)?.agentId||e.currentAgent||null,We=Ze?`${Ze}${ue}`:ue,mt=e.yeaftActiveTasksBySession?.[We]||{};return bS(mt)}),jv=Vue.computed(()=>{if(!e.yeaftConversationId)return[];let ue=te(),ke=e.yeaftActiveSessionFilter||ue?.activeSessionId||null;if(!ke)return[];let Ze=Sv(ue,ke,e.currentAgent||null),We=Ze&&Array.isArray(Ze.roster)?Ze.roster:[];if(We.length===0)return[];let mt=new Set(We),Os=kv(We,s.vpList||[]),nn=e.vpStatuses||{},fs={},Ei=e.currentAgent||null;for(let tt of Object.values(nn)){if(!tt||!tt.vpId)continue;let Di=tt.sessionId??tt.groupId;Di&&Di!==ke||Ei&&tt.agentId&&tt.agentId!==Ei||mt.has(tt.vpId)&&(fs[tt.vpId]=tt)}let rd={};for(let tt of Object.values(e.activeVpTurns||{}))!tt?.turnId||!tt?.sessionId||tt.sessionId!==ke||Ei&&tt.agentId&&tt.agentId!==Ei||Object.entries(e.stoppingVpTurnIds||{}).some(([Di])=>e.activeVpTurns?.[Di]===tt)&&(rd[tt.turnId]=!0);return Iv({vpList:Os,vpStatuses:fs,stoppingVpTurnIds:rd,connectionState:e.connectionState,vpLabelOf:tt=>s.vpLabel(tt),vpDescriptionOf:tt=>s.vpDescription(tt)})});return{store:e,pageRef:y,effectiveSidebarCollapsed:et,debugMode:i,composerMenuOpen:o,topbarGroup:lt,topbarSessionTitle:ie,topbarFolderPath:ve,topbarModel:$e,topbarModelLabel:Ye,topbarEffort:Et,topbarModelRows:kt,topbarEffortOptions:St,selectableEffortsForModel:wt,modelOptionMatchesRef:ki,showSettings:a,showAgentSettings:l,agentSettingsAgentId:c,agentSettingsInitialCategory:d,sessionCreateOpen:u,settingsInitialTab:b,settingsInitialEditVpId:h,chatInputRef:w,messageQuote:I,messageListRef:k,historySearchRef:_,historySearchOpen:A,historySearchActiveMessageId:Q,historyOutlineState:H,toggleHistorySearch:me,closeHistorySearch:O,onHistorySearchQuery:Ae,loadOlderHistoryOutline:Oe,loadMoreHistorySearchResults:He,previewHistorySearchResult:Ue,selectHistorySearchResult:_t,yeaftInputDraftKey:L,openSettings:Ai,isMobile:it,isNarrowDetail:ds,detailPanel:oe,isResizingDetail:he,detailWidthStyle:se,startDetailResize:E,isProcessing:Es,goBack:bt,sendMessage:Js,setMessageQuote:An,editMessageAsNew:xn,cancelYeaft:zt,toggleSidebar:en,closeDebug:yr,reloadMessages:br,retryConversationInventory:wr,reloadPage:Tn,toggleComposerMenu:gt,closeComposerMenu:Ee,onComposerMenuFocusout:ht,selectModel:ka,selectEffort:Ci,openLlmConfig:kr,trackOverlayPointerDown:os,trackOverlayPointerUp:as,clearOverlayPointerGesture:ls,openSessionCreate:En,onSessionCreated:xi,copyOnboardingCommand:Dn,copiedOnboardingCommand:p,formatTokens:Mn,formatModelCtx:ps,toggleSettings:Rn,openAgentSettings:Dt,onSettingsSaved:Ge,sidebarV2Enabled:N,onSelectGroupV2:Z,onSelectChat:K,canUseWorkbench:be,shouldShowInviteModal:Ti,inviteGroupName:Sa,onInviteOpenLibrary:W,onInviteDismiss:Y,isActiveGroupEmpty:Mi,conversationInventoryReady:Ia,showOnboardingGuide:tn,installAgentCommand:Pi,connectAgentCommand:nd,copilotCommand:C,agentSecret:f,agentSecretLoading:g,agentSecretError:v,groupSettingsOpen:Se,groupSettingsId:Re,groupSettingsAgentId:Ce,groupSettingsSection:nt,groupSettingsEditVpId:Le,openSessionSettings:ye,openAnnouncementSettings:$t,closeGroupSettings:Lt,openVpLibraryFromGroupSettings:sn,openMemberEditor:Ri,showVpTimeline:Ls,vpTimelineRows:jv,sessionStatusTasksForActiveSession:_i,sessionStatusAnnouncementText:Te,sessionStatusVisible:ee,toggleSessionStatus:P,closeSessionStatus:re,toggleWorkbench:we,timelineWidthStyle:Rt,startTimelineResize:Bt,onEditVpFromTimeline:x=>{if(!x)return;let ue=q();ue&&ye({sessionId:ue,section:"members",editVpId:x})},onMentionVpFromTimeline:x=>{if(!x)return;let ue=w.value;ue&&typeof ue.appendMention=="function"&&ue.appendMention(x)},onCancelVpFromTimeline:x=>{if(!x)return;let ue=te(),ke=e.yeaftActiveSessionFilter||ue?.activeSessionId||null;ke&&typeof e.cancelVpTurnForSession=="function"&&e.cancelVpTurnForSession(x,ke)},onCancelTaskFromTimeline:x=>!x?.id||!x.sessionId||typeof e.cancelYeaftTask!="function"?!1:e.cancelYeaftTask({agentId:x.agentId,sessionId:x.sessionId,taskId:x.id})}}}});var wS,$v,Lv=B(()=>{Ct();wS=["button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","a[href]",'[tabindex]:not([tabindex="-1"])'].join(","),$v={name:"AppDialog",setup(){let e=Ef(),t=Vue.ref(null),s=Vue.ref(null),n=null,r=[],i=p=>{if(p){r=Array.from(document.body.children).filter(f=>f!==t.value?.closest(".app-dialog-overlay")&&!f.classList.contains("app-dialog-overlay")),r.forEach(f=>{f.inert=!0});return}r.forEach(f=>{f.inert=!1}),r=[]},o=()=>{Vue.nextTick(()=>{e.type==="prompt"?s.value?.focus?.():t.value?.querySelector(".app-dialog-confirm")?.focus?.()})};Vue.watch(()=>e.open,(p,f)=>{p&&!f?(n=document.activeElement,Vue.nextTick(()=>i(!0))):!p&&f&&(i(!1),Vue.nextTick(()=>{n?.isConnected&&n.focus?.(),n=null}))}),Vue.watch(()=>e.id,o);let a=()=>{e.type==="alert"?ko(!0):ko(!1)},l=()=>ko(!0,e.value),c=p=>{let f=Array.from(t.value?.querySelectorAll(wS)||[]);if(f.length===0){p.preventDefault(),t.value?.focus?.();return}let g=f[0],v=f[f.length-1];p.shiftKey&&document.activeElement===g?(p.preventDefault(),v.focus()):!p.shiftKey&&document.activeElement===v&&(p.preventDefault(),g.focus())},d=p=>{p.key==="Escape"?(p.preventDefault(),a()):p.key==="Tab"&&c(p)},u=p=>{e.open&&d(p)};return Vue.onMounted(()=>document.addEventListener("keydown",u)),Vue.onBeforeUnmount(()=>{document.removeEventListener("keydown",u),i(!1)}),{state:e,dialog:t,input:s,cancel:a,confirm:l,onKeydown:d}},template:`
9411
9406
  <Teleport to="body">
9412
9407
  <div v-if="state.open" class="modal-overlay app-dialog-overlay" @click.self="cancel">
9413
9408
  <section ref="dialog" class="modal app-dialog" role="dialog" aria-modal="true" tabindex="-1" :aria-labelledby="'app-dialog-title-' + state.id" :aria-describedby="'app-dialog-message-' + state.id">