@yeaft/webchat-agent 1.0.224 → 1.0.227
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.
- package/local-runtime/server/handlers/agent-file-terminal.js +11 -2
- package/local-runtime/server/handlers/client-workbench.js +6 -1
- package/local-runtime/server/ws-agent.js +2 -1
- package/local-runtime/version.json +1 -1
- package/local-runtime/web/app.bundle.js +3 -3
- package/local-runtime/web/app.bundle.js.gz +0 -0
- package/local-runtime/web/index.html +2 -2
- package/local-runtime/web/style.bundle.css +1 -1
- package/local-runtime/web/style.bundle.css.gz +0 -0
- package/package.json +1 -1
- package/terminal.js +24 -8
- package/yeaft/conversation/internal-control.js +10 -0
- package/yeaft/conversation/persist.js +14 -6
- package/yeaft/engine.js +8 -2
- package/yeaft/router/continuity.js +3 -2
- package/yeaft/web-bridge.js +9 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
var O=(e,t,s)=>()=>{if(s)throw s[0];try{return e&&(t=e(e=0)),t}catch(n){throw s=[n],n}};var tf=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(s){throw t=0,s}};function Wo(e,t){let s=nacl.randomBytes(24),n=JSON.stringify(e),i,r=!1;n.length>512?(i=pako.gzip(n),r=!0):i=nacl.util.decodeUTF8(n);let o=nacl.secretbox(i,s,t),a={n:nacl.util.encodeBase64(s),c:nacl.util.encodeBase64(o)};return r&&(a.z=!0),a}function Uo(e,t){try{let s=nacl.util.decodeBase64(e.n),n=nacl.util.decodeBase64(e.c),i=nacl.secretbox.open(n,s,t);if(!i)return null;if(e.z){let r=pako.ungzip(i,{to:"string"});return JSON.parse(r)}else return JSON.parse(nacl.util.encodeUTF8(i))}catch{return null}}function zo(e){return e&&typeof e=="object"&&typeof e.n=="string"&&typeof e.c=="string"}function lt(e){return nacl.util.decodeBase64(e)}var Cn=O(()=>{});var sf,nf,Ae,ct=O(()=>{Cn();({defineStore:sf}=Pinia),nf=1800*1e3,Ae=sf("auth",{state:()=>({skipAuth:!1,emailVerification:!1,passwordResetEnabled:!1,totpEnabled:!1,registrationEnabled:!1,aadEnabled:!1,aadClientId:null,aadTenantId:null,ssoProviders:{github:!1,google:!1,wechat:!1,alipay:!1},linkedIdentities:[],hasPassword:!1,identitiesLoading:!1,identitiesError:null,initialized:!1,authGeneration:0,isAuthenticated:!1,token:null,sessionKey:null,role:null,loginStep:"credentials",tempToken:null,emailHint:null,setupToken:null,totpSecret:null,qrCode:null,error:null,loading:!1,qrPanel:null,_qrPollTimer:null,_sessionRefreshTimer:null,_sessionRefreshVisibilityHandler:null}),actions:{async initialize(){if(this.initialized)return this.isAuthenticated;try{if(await this.checkAuthMode(),this.skipAuth&&this.isAuthenticated)return!0;let e=!1;return typeof window<"u"&&typeof this.consumeSsoRedirect=="function"&&(e=this.consumeSsoRedirect()),!this.isAuthenticated&&!e&&await this.restoreSession(),this.isAuthenticated}finally{this.initialized=!0}},async checkAuthMode(){try{let t=await(await fetch("/api/auth/mode")).json();this.skipAuth=t.skipAuth,this.emailVerification=t.emailVerification,this.passwordResetEnabled=!!t.passwordResetEnabled,this.totpEnabled=t.totpEnabled,this.registrationEnabled=t.registrationEnabled||!1,this.aadEnabled=t.aadEnabled||!1,this.aadClientId=t.aadClientId||null,this.aadTenantId=t.aadTenantId||null,this.ssoProviders=Object.assign({github:!1,google:!1,wechat:!1,alipay:!1},t.ssoProviders||{}),this.skipAuth&&(this.authGeneration+=1,this.isAuthenticated=!0,this.loginStep="authenticated")}catch{}},async login(e,t){this.loading=!0,this.error=null;try{let n=await(await fetch("/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e,password:t})})).json();return n.success?n.needTotpSetup?(this.setupToken=n.setupToken,this.totpSecret=n.totpSecret,this.qrCode=n.qrCode,this.loginStep="totp-setup",!0):n.needTotpCode?(this.tempToken=n.tempToken,this.loginStep="totp",!0):n.needEmailCode?(this.tempToken=n.tempToken,this.emailHint=n.emailHint,this.loginStep="verification",!0):(this.token=n.token,this.sessionKey=n.sessionKey?lt(n.sessionKey):null,this.role=n.role||"pro",this.authGeneration+=1,this.isAuthenticated=!0,this.loginStep="authenticated",localStorage.setItem("authToken",n.token),this.startSessionRefresh(),!0):(this.error=n.error||"Login failed",!1)}catch(s){return this.error=s.message||"Network error",!1}finally{this.loading=!1}},async loginWithMicrosoft(){if(!this.aadEnabled||!this.aadClientId||!this.aadTenantId)return this.error="Microsoft login is not configured",!1;if(typeof msal>"u"||!msal.PublicClientApplication)return this.error="Microsoft authentication library not loaded",!1;this.loading=!0,this.error=null;try{let e={auth:{clientId:this.aadClientId,authority:`https://login.microsoftonline.com/${this.aadTenantId}`,redirectUri:window.location.origin+"/auth/callback"},cache:{cacheLocation:"sessionStorage",storeAuthStateInCookie:!1}},t=new msal.PublicClientApplication(e);await t.initialize();let s=await t.loginPopup({scopes:["openid","profile","email"]});if(!s||!s.idToken)return this.error="Microsoft login failed: no token received",!1;let i=await(await fetch("/api/auth/aad",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({idToken:s.idToken})})).json();return i.success?(this.token=i.token,this.sessionKey=i.sessionKey?lt(i.sessionKey):null,this.role=i.role||"pro",this.authGeneration+=1,this.isAuthenticated=!0,this.loginStep="authenticated",localStorage.setItem("authToken",i.token),this.startSessionRefresh(),!0):(this.error=i.error||"Microsoft login failed",!1)}catch(e){return e.errorCode==="user_cancelled"||e.name==="BrowserAuthError"?(this.error=null,!1):(this.error=e.message||"Microsoft login failed",!1)}finally{this.loading=!1}},async verifyTotpCode(e){this.loading=!0,this.error=null;try{let s=await(await fetch("/api/auth/verify-totp",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tempToken:this.tempToken,totpCode:e})})).json();return s.success?s.needEmailCode?(this.tempToken=s.tempToken,this.emailHint=s.emailHint,this.loginStep="verification",!0):(this.token=s.token,this.sessionKey=s.sessionKey?lt(s.sessionKey):null,this.role=s.role||"pro",this.authGeneration+=1,this.isAuthenticated=!0,this.loginStep="authenticated",this.tempToken=null,localStorage.setItem("authToken",s.token),this.startSessionRefresh(),!0):(this.error=s.error||"TOTP verification failed",!1)}catch(t){return this.error=t.message||"Network error",!1}finally{this.loading=!1}},async completeTotpSetup(e){this.loading=!0,this.error=null;try{let s=await(await fetch("/api/auth/setup-totp",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({setupToken:this.setupToken,totpCode:e})})).json();return s.success?(this.setupToken=null,this.totpSecret=null,this.qrCode=null,s.needEmailCode?(this.tempToken=s.tempToken,this.emailHint=s.emailHint,this.loginStep="verification",!0):(this.token=s.token,this.sessionKey=s.sessionKey?lt(s.sessionKey):null,this.role=s.role||"pro",this.authGeneration+=1,this.isAuthenticated=!0,this.loginStep="authenticated",localStorage.setItem("authToken",s.token),this.startSessionRefresh(),!0)):(this.error=s.error||"TOTP setup failed",!1)}catch(t){return this.error=t.message||"Network error",!1}finally{this.loading=!1}},async verifyCode(e){this.loading=!0,this.error=null;try{let s=await(await fetch("/api/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tempToken:this.tempToken,code:e})})).json();return s.success?(this.token=s.token,this.sessionKey=s.sessionKey?lt(s.sessionKey):null,this.role=s.role||"pro",this.authGeneration+=1,this.isAuthenticated=!0,this.loginStep="authenticated",this.tempToken=null,this.emailHint=null,localStorage.setItem("authToken",s.token),this.startSessionRefresh(),!0):(this.error=s.error||"Verification failed",!1)}catch(t){return this.error=t.message||"Network error",!1}finally{this.loading=!1}},async register(e,t,s,n){this.loading=!0,this.error=null;try{let r=await(await fetch("/api/auth/register",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e,password:t,email:s||void 0,invitationCode:n})})).json();return r.success?!0:(this.error=r.error||"Registration failed",!1)}catch(i){return this.error=i.message||"Network error",!1}finally{this.loading=!1}},showRegister(){this.loginStep="register",this.error=null},loginWithSso(e){window.location.href=`/api/auth/sso/${encodeURIComponent(e)}/start`},async loginWithAlipayMobile({intent:e="login"}={}){if(!await this.startSsoQr("alipay",{intent:e}))return!1;let s=this.qrPanel?.authorizeUrl;if(!s)return!1;let n=`alipays://platformapi/startapp?appId=20000067&url=${encodeURIComponent(s)}`;return this.qrPanel={...this.qrPanel,mobileDeepLink:!0},window.location.href=n,!0},async startSsoQr(e,{intent:t="login"}={}){this.cancelSsoQr(),this.error=null;try{let s=new URLSearchParams;if(t==="bind"){if(!this.isAuthenticated)return this.error="You must be logged in to bind an identity",!1;s.set("intent","bind")}let n=s.toString(),i=`/api/auth/sso/${encodeURIComponent(e)}/start-qr${n?"?"+n:""}`,r=await fetch(i),o=await r.json();return!r.ok||!o.success?(this.error=o.error||"Failed to start QR login",!1):(this.qrPanel={provider:e,intent:t,authorizeUrl:o.authorizeUrl,state:o.state,status:"pending",error:null},this._startQrPoll(),!0)}catch(s){return this.error=s.message||"Network error",!1}},_startQrPoll(){this._stopQrPollTimer();let e=async()=>{if(!this.qrPanel)return;let t=this.qrPanel.state;try{let n=await(await fetch(`/api/auth/sso/poll/${encodeURIComponent(t)}`)).json();if(!this.qrPanel||this.qrPanel.state!==t||n.status==="pending")return;if(n.status==="login"){this.token=n.token,this.sessionKey=n.sessionKey?lt(n.sessionKey):null,this.role=n.role||"pro",this.authGeneration+=1,this.isAuthenticated=!0,this.loginStep="authenticated",localStorage.setItem("authToken",n.token),this.startSessionRefresh(),this.cancelSsoQr();return}if(n.status==="bind"){this.qrPanel={...this.qrPanel,status:"bound"},this._stopQrPollTimer();return}this.qrPanel={...this.qrPanel,status:"error",error:n.error||"SSO failed"},this._stopQrPollTimer()}catch{}};this._qrPollTick=e,this._qrPollTimer=setInterval(e,2e3),typeof document<"u"&&!this._qrVisHandler&&(this._qrVisHandler=()=>{typeof document<"u"&&document.visibilityState&&document.visibilityState!=="visible"||!this.qrPanel||!this._qrPollTick||(this._qrPollTick(),this._qrPollTimer&&clearInterval(this._qrPollTimer),this._qrPollTimer=setInterval(this._qrPollTick,2e3))},document.addEventListener("visibilitychange",this._qrVisHandler),typeof window<"u"&&window.addEventListener("pageshow",this._qrVisHandler))},_stopQrPollTimer(){this._qrPollTimer&&(clearInterval(this._qrPollTimer),this._qrPollTimer=null),this._qrVisHandler&&(typeof document<"u"&&document.removeEventListener("visibilitychange",this._qrVisHandler),typeof window<"u"&&window.removeEventListener("pageshow",this._qrVisHandler),this._qrVisHandler=null),this._qrPollTick=null},cancelSsoQr(){this._stopQrPollTimer(),this.qrPanel=null},bindSso(e){if(!this.isAuthenticated){this.error="You must be logged in to bind an identity";return}let t=new URLSearchParams({intent:"bind"});window.location.href=`/api/auth/sso/${encodeURIComponent(e)}/start?${t.toString()}`},consumeSsoRedirect(){let e=window.location.hash||"",t=e.indexOf("?");if(!e.startsWith("#/sso-complete")||t<0)return!1;let s=new URLSearchParams(e.slice(t+1)),n=s.get("token"),i=s.get("sessionKey"),r=s.get("role");if(!n)return!1;this.token=n,this.sessionKey=i?lt(i):null,this.role=r||"pro",this.authGeneration+=1,this.isAuthenticated=!0,this.loginStep="authenticated",localStorage.setItem("authToken",n),this.startSessionRefresh();try{history.replaceState(null,"",window.location.pathname+window.location.search)}catch{}return!0},async loadIdentities(){if(this.isAuthenticated){this.identitiesLoading=!0,this.identitiesError=null;try{let e=await fetch("/api/auth/identities"),t=await e.json();if(!e.ok||!t.success){this.identitiesError=t.error||"Failed to load identities";return}this.linkedIdentities=t.identities||[],this.hasPassword=!!t.hasPassword}catch(e){this.identitiesError=e.message||"Network error"}finally{this.identitiesLoading=!1}}},async unbindIdentity(e){if(!this.isAuthenticated)return!1;this.identitiesError=null;try{let t=await fetch(`/api/auth/identities/${encodeURIComponent(e)}`,{method:"DELETE"}),s=await t.json();return!t.ok||!s.success?(this.identitiesError=s.error||"Failed to unbind",!1):(this.linkedIdentities=this.linkedIdentities.filter(n=>n.provider!==e),!0)}catch(t){return this.identitiesError=t.message||"Network error",!1}},async refreshSession(){let e=this.token,t=this.authGeneration,s=this.isAuthenticated;try{let n=await fetch("/api/user/profile",{headers:e?{Authorization:`Bearer ${e}`}:{}});if(this.handleAuthResponse(n,e,t,s)||!n.ok)return!1;let i=await n.json().catch(()=>({})),r=n.headers?.get?.("X-New-Token"),o=localStorage.getItem("authToken");return r&&this.token===e&&(!o||o===e)&&(this.token=r,localStorage.setItem("authToken",r)),i?.role&&(this.role=i.role),!0}catch{return!1}},startSessionRefresh(){if(this.stopSessionRefresh(),!this.isAuthenticated||this.skipAuth)return;let e=()=>{typeof document<"u"&&document.visibilityState&&document.visibilityState!=="visible"||this.refreshSession()};this._sessionRefreshTimer=setInterval(e,nf),this._sessionRefreshVisibilityHandler=e,typeof document<"u"&&document.addEventListener("visibilitychange",e),typeof window<"u"&&window.addEventListener("pageshow",e)},stopSessionRefresh(){this._sessionRefreshTimer&&(clearInterval(this._sessionRefreshTimer),this._sessionRefreshTimer=null),this._sessionRefreshVisibilityHandler&&(typeof document<"u"&&document.removeEventListener("visibilitychange",this._sessionRefreshVisibilityHandler),typeof window<"u"&&window.removeEventListener("pageshow",this._sessionRefreshVisibilityHandler),this._sessionRefreshVisibilityHandler=null)},async logout(){try{let e={"Content-Type":"application/json"};this.token&&(e.Authorization=`Bearer ${this.token}`),await fetch("/api/auth/logout",{method:"POST",headers:e})}catch{}this.clearStoredSession()},clearStoredSession(e=null){this.reset(),localStorage.removeItem("authToken"),e&&(this.error=e)},getActiveToken(){if(this.token)return this.token;let e=localStorage.getItem("authToken");return e&&(this.token=e),this.token},handleAuthResponse(e,t=null,s=this.authGeneration,n=this.isAuthenticated,i=void 0){if(!e||e.status!==401||!n||s!==this.authGeneration)return!1;let r=this.token||localStorage.getItem("authToken")||null;return t!==r?!1:(this.handleAuthFailure(i,t,s),!0)},handleAuthFailure(e="Session expired. Please log in again.",t=null,s=this.authGeneration){if(s!==this.authGeneration)return!1;let n=this.token||localStorage.getItem("authToken")||null;return t!==n||this.clearStoredSession(e),!1},async restoreSession(){let e=localStorage.getItem("authToken"),t=this.authGeneration,s=this.isAuthenticated||!!e;try{let n=await fetch("/api/user/profile",{headers:e?{Authorization:`Bearer ${e}`}:{}});if(this.handleAuthResponse(n,e,t,s))return!1;if(!n.ok)return this.error="Failed to restore session",!1;let i=await n.json();if(t!==this.authGeneration)return this.isAuthenticated;let r=n.headers?.get?.("X-New-Token"),o=this.getActiveToken(),a=r&&(!o||o===e)?r:o||e;return this.token=a,a&&a!==e&&localStorage.setItem("authToken",a),this.role=i?.role||"pro",this.authGeneration+=1,this.isAuthenticated=!0,this.loginStep="authenticated",this.startSessionRefresh(),!0}catch(n){return this.error=n.message||"Failed to restore session",!1}},setSessionKey(e){e&&(this.sessionKey=lt(e))},backToCredentials(){this.loginStep="credentials",this.tempToken=null,this.emailHint=null,this.setupToken=null,this.totpSecret=null,this.qrCode=null,this.error=null},async requestPasswordReset(e){this.error=null;try{let s=await(await fetch("/api/auth/password-reset/request",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e})})).json();return s.success?s.resetToken||null:(this.error=s.error||"Failed to request password reset",null)}catch(t){return this.error=t.message||"Network error",null}},async verifyPasswordReset(e,t,s){this.error=null;try{let i=await(await fetch("/api/auth/password-reset/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({resetToken:e,code:t,newPassword:s})})).json();return i.success?!0:(this.error=i.error||"Failed to reset password",!1)}catch(n){return this.error=n.message||"Network error",!1}},async deleteAccount({currentPassword:e,confirm:t}={}){if(!this.isAuthenticated)return{success:!1,error:"Not authenticated"};try{let s=await fetch("/api/user/me",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({currentPassword:e,confirm:t})}),n=await s.json();return!s.ok||!n.success?{success:!1,error:n.error||"Failed to delete account"}:(this.clearStoredSession(),{success:!0})}catch(s){return{success:!1,error:s.message||"Network error"}}},reset(){this.authGeneration+=1,this.stopSessionRefresh(),this.isAuthenticated=!1,this.token=null,this.sessionKey=null,this.role=null,this.loginStep="credentials",this.tempToken=null,this.emailHint=null,this.setupToken=null,this.totpSecret=null,this.qrCode=null,this.error=null,this.loading=!1}}})});function xe(e,t){let s=yt?.value||"zh-CN",i=(ls[s]||ls["zh-CN"]||{})[e];if(i===void 0&&s!=="zh-CN"&&(i=(ls["zh-CN"]||{})[e]),i===void 0)return e;if(t)for(let[r,o]of Object.entries(t))i=i.replace(new RegExp(`\\{${r}\\}`,"g"),o);return i}function rf(){return yt?.value||"zh-CN"}function Os(e){ls[e]&&(yt&&(yt.value=e),localStorage.setItem("locale",e),document.documentElement.setAttribute("lang",e))}function of(){let e=localStorage.getItem("locale");return e&&ls[e]?e:(navigator.language||navigator.userLanguage||"").startsWith("en")?"en":"zh-CN"}function jo(e,t){return ls=t,yt=Vue.ref(of()),document.documentElement.setAttribute("lang",yt.value),e.config.globalProperties.$t=xe,e.config.globalProperties.$locale=yt,e.provide("t",xe),e.provide("locale",yt),{t:xe,setLocale:Os,getLocale:rf,locale:yt}}var yt,ls,bt=O(()=>{yt=null,ls={}});function cs(e,t,s=""){Hs&&(clearTimeout(Hs),Hs=null),e.sessionLoading=t,e.sessionLoadingText=s,t&&(Hs=setTimeout(()=>{e.sessionLoading&&(e.sessionLoading=!1,e.sessionLoadingText=""),Hs=null},af))}function pt(e){cs(e,!1)}function Ko(e){if(e.currentConversation){e.pendingRecovery=null;return}let t=e.lastUsedSession,s=e.lastUsedAgent;if(t&&t.sessionId&&s){let n=e.agents.find(i=>i.id===s&&i.online);n&&(e.pendingRecovery={agentId:s,agentName:n.name,sessionId:t.sessionId,workDir:t.workDir},e.recoveryDismissed=!1)}}function Go(e){if(!e.pendingRecovery)return;let{agentId:t,sessionId:s,workDir:n}=e.pendingRecovery;e.selectAgent(t),setTimeout(()=>{e.resumeConversation(s,n,t),e.pendingRecovery=null,e.recoveryDismissed=!1},500)}function Yo(e){e.recoveryDismissed=!0,e.pendingRecovery=null}function Qo(e,t){let s=e.conversations.find(n=>n.id===t);s&&(e.activeConversations=[t],e.currentWorkDir=s.workDir,e.messagesMap[t]?.length>0||(s.claudeSessionId?(e.messagesMap[t]=[],cs(e,!0,xe("chat.session.loadingHistory")),e.sendWsMessage({type:"resume_conversation",agentId:s.agentId||e.currentAgent,claudeSessionId:s.claudeSessionId,workDir:s.workDir,conversationId:t})):(e.messagesMap[t]=[],e.sendWsMessage({type:"sync_messages",conversationId:t,turns:5}))),e.sendWsMessage({type:"select_conversation",conversationId:t}))}function Xo(e){if(e.panels.length>0)return;let t=localStorage.getItem("panels");if(!t)return;let s;try{s=JSON.parse(t)}catch{localStorage.removeItem("panels");return}if(!Array.isArray(s)||s.length<2){localStorage.removeItem("panels");return}let n=new Set(e.conversations.map(r=>r.id)),i=s.filter(r=>r&&typeof r.id=="string").map(r=>({id:r.id,conversationId:r.conversationId&&n.has(r.conversationId)?r.conversationId:null,activeRightPanel:r.activeRightPanel||null}));if(i.length<2){localStorage.removeItem("panels");return}e.panels=i,e.activePanelId=i[0]?.id||null;for(let r of i)r.conversationId&&(e.activeConversations.includes(r.conversationId)||e.activeConversations.push(r.conversationId),e.messagesMap[r.conversationId]||(e.messagesMap[r.conversationId]=[]),e.messagesMap[r.conversationId].length||e.sendWsMessage({type:"sync_messages",conversationId:r.conversationId,turns:5}))}function ds(e){if(e.currentAgent){if(localStorage.setItem("lastUsedAgent",e.currentAgent),localStorage.setItem("lastViewedConversation",e.currentConversation||""),e.lastViewedConversation=e.currentConversation,e.currentConversation){let t=e.conversations.find(s=>s.id===e.currentConversation);t?.claudeSessionId&&t?.workDir&&(localStorage.setItem("lastUsedSession",JSON.stringify({sessionId:t.claudeSessionId,workDir:t.workDir,agentId:e.currentAgent})),e.lastUsedSession={sessionId:t.claudeSessionId,workDir:t.workDir,agentId:e.currentAgent})}e.lastUsedAgent=e.currentAgent,e.panels.length>0?localStorage.setItem("panels",JSON.stringify(e.panels)):localStorage.removeItem("panels")}}function Zo(e){return e.lastUsedSession}function Jo(e){localStorage.removeItem("lastUsedAgent"),localStorage.removeItem("lastUsedSession"),localStorage.removeItem("lastViewedConversation"),localStorage.removeItem("panels"),localStorage.removeItem("splitPanesSaved"),e.lastUsedAgent=null,e.lastUsedSession=null,e.lastViewedConversation=null}function ea(e,t,s){if(!e.currentAgent){e.historySessionsLoading=!1;return}if(!t){e.historySessions=[],e.historySessionsLoading=!1;return}let n=Date.now().toString();e._historySessionsRequestId=n,e.historySessionsLoading=!0,e.historySessions=[],e.sendWsMessage({type:"list_history_sessions",workDir:t,provider:s||"claude-code",requestId:n})}function ta(e,t){if(!e.currentAgent)return e.foldersLoading=!1,Promise.resolve();e.foldersLoading=!0,e.folders=[];let s=Date.now().toString();return e._foldersRequestId=s,new Promise(n=>{e._foldersResolve&&e._foldersResolve(),e._foldersResolve=n,e.sendWsMessage({type:"list_folders",provider:t||"claude-code",requestId:s}),setTimeout(()=>{e._foldersResolve===n&&(e._foldersResolve(),e._foldersResolve=null,e.foldersLoading=!1)},1e4)})}function sa(e,t,s){if(!t)return e.foldersLoading=!1,Promise.resolve();e.foldersLoading=!0,e.folders=[];let n=Date.now().toString();return e._foldersRequestId=n,new Promise(i=>{e._foldersResolve&&e._foldersResolve(),e._foldersResolve=i,e.sendWsMessage({type:"list_folders",agentId:t,provider:s||"claude-code",requestId:n}),setTimeout(()=>{e._foldersResolve===i&&(e._foldersResolve(),e._foldersResolve=null,e.foldersLoading=!1)},1e4)})}function na(e,t,s){if(!t)return Promise.resolve([]);let n=`models-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return e._modelsRequestId=n,e.providerModelsLoading=!0,new Promise(i=>{e._modelsResolve&&e._modelsResolve([]),e._modelsTimeout&&clearTimeout(e._modelsTimeout),e._modelsResolve=i,e.sendWsMessage({type:"list_models",agentId:t,provider:s||"claude-code",requestId:n}),e._modelsTimeout=setTimeout(()=>{e._modelsResolve===i&&(e._modelsResolve([]),e._modelsResolve=null,e.providerModelsLoading=!1),e._modelsTimeout=null},1e4)})}function ia(e,t,s,n){if(!t){e.historySessionsLoading=!1;return}if(!s){e.historySessions=[],e.historySessionsLoading=!1;return}let i=Date.now().toString();e._historySessionsRequestId=i,e.historySessionsLoading=!0,e.historySessions=[],e.sendWsMessage({type:"list_history_sessions",agentId:t,workDir:s,provider:n||"claude-code",requestId:i})}async function ra(e,t=20){if(Ae().isAuthenticated){e.globalSessionsLoading=!0;try{let n=await fetch(`/api/sessions?limit=${t}`);if(n.ok){let i=await n.json();e.globalSessions=i.sessions||[]}}catch{}finally{e.globalSessionsLoading=!1}}}async function oa(e,t){if(!Ae().isAuthenticated)return!1;try{if((await fetch(`/api/sessions/${t}`,{method:"DELETE"})).ok)return e.globalSessions=e.globalSessions.filter(i=>i.id!==t),!0}catch{}return!1}function Xi(e,t){return t.agentId?e.agents.find(s=>s.id===t.agentId):t.agentName?e.agents.find(s=>s.name===t.agentName):null}function aa(e,t){let s=Xi(e,t);return s&&s.online}var af,Hs,Ot=O(()=>{ct();bt();af=3e4,Hs=null});function la(e){return e?.code===1008&&String(e.reason||"").toLowerCase().includes("authentication")}function ca(e){let t=Ns;Ns=[];for(let{resolve:s,reject:n,timer:i}of t)clearTimeout(i),e?s():n(new Error("WebSocket reconnect failed"))}function da(e,t){if(!e.ws||e.ws.readyState!==WebSocket.OPEN)return!1;if(e.currentView==="yeaft"&&cf.has(t.type)){let s=t.conversationId;if(!s||typeof s=="string"&&s.startsWith("yeaft-")||s===e.yeaftConversationId)return!1}try{if(e.serverEncryptionRequired&&e.sessionKey){let s=Wo(t,e.sessionKey);e.ws.send(JSON.stringify(s))}else e.ws.send(JSON.stringify(t));return!0}catch{return!1}}function Bs(e,t=1e4){return e.ws&&e.ws.readyState===WebSocket.OPEN?Promise.resolve():new Promise((s,n)=>{let i=setTimeout(()=>{Ns=Ns.filter(r=>r.resolve!==s),n(new Error("WebSocket reconnect timeout"))},t);Ns.push({resolve:s,reject:n,timer:i}),(!e.ws||e.ws.readyState!==WebSocket.CONNECTING)&&(e.reconnectAttempts=0,e.connect())})}function ua(e,t){try{let s=JSON.parse(t);return e.sessionKey&&zo(s)?Uo(s,e.sessionKey):s}catch{return null}}function pa(e){let t=Ae(),s=location.protocol==="https:"?"wss:":"ws:";e.reconnectTimer&&(clearTimeout(e.reconnectTimer),e.reconnectTimer=null);let n=t.getActiveToken?.()||t.token||null,i=t.authGeneration;if(e.ws&&e.ws.readyState===WebSocket.CONNECTING&&e._wsAuthToken===n&&e._wsAuthGeneration===i)return;e.ws&&(e.ws.onopen=null,e.ws.onmessage=null,e.ws.onclose=null,e.ws.close(),e.ws=null),e.connectionState=e.reconnectAttempts>0?"reconnecting":"connecting",e._wsAuthToken=n,e._wsAuthGeneration=i;let r=`${s}//${location.host}?type=web`;n&&(r+=`&token=${encodeURIComponent(n)}`);let o=new WebSocket(r);e.ws=o,o.onopen=()=>{if(o===e.ws){e.connectionState="connected",e.reconnectAttempts=0,e.startHeartbeat();try{o.send(JSON.stringify({type:"client_hello",plaintextOk:!0}))}catch{}ca(!0)}},o.onmessage=a=>{if(o!==e.ws)return;let l=e.parseWsMessage(a.data);l&&(l.type,e.handleMessage({...l,_wsAuthToken:n,_wsAuthGeneration:i}))},o.onclose=a=>{if(o!==e.ws){la(a)&&t.handleAuthFailure?.(void 0,n,i);return}e.authenticated=!1;let l=e.connectionState==="updating";if(e.connectionState=l?"updating":"disconnected",e.stopHeartbeat(),pt(e),la(a)){t.handleAuthFailure?.(void 0,n,i),e.reconnectAttempts=0,ca(!1);return}if(e._yeaftReconnectCatchUpPending=!0,l){e.reconnectAttempts=0,e.reconnectTimer=setTimeout(()=>{e.connect()},2e3);return}e.scheduleReconnect()},e.ws.onerror=a=>{}}function fa(e){if(e.reconnectAttempts>=e.maxReconnectAttempts){e.connectionState="disconnected";return}let t=Math.min(1e3*Math.pow(2,e.reconnectAttempts),3e4);e.reconnectAttempts++,e.connectionState="reconnecting",e.reconnectTimer=setTimeout(()=>{e.connect()},t)}function ga(e){e.reconnectAttempts=0,e.connect()}function ma(e){e.stopHeartbeat(),e._lastPongAt=Date.now(),e.heartbeatTimer=setInterval(()=>{if(e.ws&&e.ws.readyState===WebSocket.OPEN){if(Date.now()-e._lastPongAt>45e3){e.ws.close(4e3,"Heartbeat timeout");return}try{e.sendWsMessage({type:"ping"})}catch{}}},25e3)}function ha(e){e.heartbeatTimer&&(clearInterval(e.heartbeatTimer),e.heartbeatTimer=null)}function va(e){e._visibilityHandlerInstalled||(e._visibilityHandlerInstalled=!0,document.addEventListener("visibilitychange",()=>{if(document.visibilityState==="visible")if(!e.ws||e.ws.readyState!==WebSocket.OPEN)e.reconnectAttempts=0,e.connect();else try{e.sendWsMessage({type:"ping"});let t=e._lastPongAt;setTimeout(()=>{e._lastPongAt===t&&e.ws&&e.ws.close(4001,"Visibility resume timeout")},3e3)}catch{e.reconnectAttempts=0,e.connect()}}))}var Ns,cf,Zi=O(()=>{ct();Cn();Ot();Ns=[];cf=new Set(["sync_messages","refresh_conversation","select_conversation","cancel_execution","update_conversation_settings","ask_user_answer"])});function pf(e){return e?.type==="tool-use"}function Ji(e){return e?.type==="tool-summary"}function er(e){return pf(e)&&!uf.has(e.toolName)}function wa(e,t,s,n=s){let i=t==="history"&&(n?.dbMessageId||n?.id)||null;return{...i?{id:`tool_summary_${t}_${i}`,dbMessageId:n?.dbMessageId||null}:{},type:"tool-summary",count:e,omittedCount:e,source:t,isHistory:t!=="live",timestamp:s?.timestamp||s?.startTime||n?.timestamp||n?.startTime||null,sessionId:s?.sessionId??s?.groupId??null,turnId:s?.turnId||null,vpId:s?.vpId||null,speakerVpId:s?.speakerVpId||null}}function ff(e,t){return!Ji(e)||!Ji(t)?!1:(e.turnId||null)===(t.turnId||null)&&(e.sessionId||null)===(t.sessionId||null)&&(e.speakerVpId||e.vpId||null)===(t.speakerVpId||t.vpId||null)&&(e.source||null)===(t.source||null)}function gf(e,t){let s=(Number(e.count)||0)+(Number(t.count)||0);return e.count=s,e.omittedCount=s,!e.timestamp&&t.timestamp&&(e.timestamp=t.timestamp),Number(t.dbMessageId||0)>Number(e.dbMessageId||0)&&(e.dbMessageId=t.dbMessageId,t.id&&(e.id=t.id)),e}function ya(e){return[e?.sessionId||"",e?.turnId||"",e?.speakerVpId||e?.vpId||""].join("")}function ba(e,t,s,n,i=n){if(!t)return;let r=wa(t,s,n,i),o=e[e.length-1];ff(o,r)?gf(o,r):e.push(r)}function tr(e=[]){let t=[],s=0,n=null,i=null;for(let r of e){if(er(r)&&r.isHistory){s+=1,n||(n=r),i=r;continue}ba(t,s,"history",n,i),s=0,n=null,i=null,t.push(r)}return ba(t,s,"history",n,i),t}function ka(e=[],t={}){let s=Number.isFinite(t.maxDetailed)?Math.max(1,t.maxDetailed):100;if(!Array.isArray(e)||e.length<=s)return e;let n=e.length;for(let f=e.length-1;f>=0;f-=1){let g=e[f];if(g?.type==="user"||g?.type==="system"||g?.type==="error")break;n=f}let i=e.slice(n),r=new Map;for(let f of i){if(!er(f)||f.isHistory)continue;let g=ya(f);r.set(g,(r.get(g)||0)+1)}let o=new Map;for(let[f,g]of r)g>s&&o.set(f,g-s);if(o.size===0)return e;let a=new Map,l=new Map,c=new Set,d=[],u=(f,g,v)=>{a.set(f,(a.get(f)||0)+g),!l.has(f)&&v&&l.set(f,v)},p=(f,g)=>{if(c.has(f))return;let v=a.get(f)||0;v<=0||(d.push(wa(v,"live",l.get(f)||g)),c.add(f))};for(let f of i){let g=ya(f);if(Ji(f)&&f.source==="live"&&o.has(g)){u(g,Number(f.count)||0,f);continue}if(er(f)&&!f.isHistory&&o.has(g)){let v=o.get(g)||0;if(v>0){o.set(g,v-1),u(g,1,f);continue}}p(g,f),d.push(f)}for(let f of a.keys())p(f,l.get(f));return e.splice(n,e.length-n,...d),e}var uf,sr=O(()=>{uf=new Set(["TodoWrite","AskUserQuestion"])});function nr(e,t){return t?t===e.yeaftConversationId?!0:Object.values(e.yeaftConversationIdsByAgent||{}).includes(t):!1}function qs(e,t,s){s&&(s.type!=="assistant"&&s.type!=="tool-use"||nr(e,t)&&(!s.vpId&&e._currentYeaftVpId&&(s.vpId=e._currentYeaftVpId),!s.turnId&&e._currentYeaftTurnId&&(s.turnId=e._currentYeaftTurnId),!s.speakerVpId&&s.vpId&&(s.speakerVpId=s.vpId)))}function hf(e){let t=[e?.timestamp,e?.createdAt,e?.ts,e?.time,e?.created_at];for(let s of t){if(typeof s=="number"&&Number.isFinite(s)&&s>0)return s;if(typeof s=="string"&&s.trim()){let n=Date.parse(s);if(Number.isFinite(n))return n;let i=Number(s);if(Number.isFinite(i)&&i>0)return i}}return Date.now()}function In(e){let t=e?.messageId??e?.dbMessageId??e?.id;return t==null||t===""?null:String(t)}function ir(e,t){if(!e||!t)return e;let s=e.type==="user"&&typeof e.id=="string"&&e.id===e.clientMessageId;for(let[n,i]of Object.entries(t))if(i!=null){if(n==="isStreaming"){e.isStreaming&&i===!1&&(e.isStreaming=!1);continue}if(n==="id"||n==="messageId"){if(s&&t.clientMessageId===e.clientMessageId&&t.messageId&&t.messageId!==e.clientMessageId)continue;(e[n]===void 0||e[n]===null||e[n]==="")&&(e[n]=i);continue}if(!(n==="turnId"&&s&&e.turnId===e.clientMessageId)){if(n==="content"&&typeof i=="string"){e.content||(e.content=i);continue}if(n==="attachments"&&Array.isArray(i)){(!Array.isArray(e.attachments)||e.attachments.length===0)&&(e.attachments=i);continue}(e[n]===void 0||e[n]===null||e[n]==="")&&(e[n]=i)}}return e}function rr(e=[],t=[]){let s=[],n=new Map,i=new Map;for(let r of[...e,...t]){if(!r)continue;let o=In(r),a=r.type==="user"&&r.clientMessageId?String(r.clientMessageId):null;if(o&&n.has(o)){ir(n.get(o),r);continue}if(a&&i.has(a)){let l=i.get(a);ir(l,r),o&&!n.has(o)&&n.set(o,l);continue}s.push(r),o&&n.set(o,r),a&&i.set(a,r)}return s}function Sa(e,t,s){return!e||e!==t?!1:!s?.loaded&&!s?.loading}function Ca(e,t){return!!t&&!!e?.loaded&&!e?.loading&&Number.isFinite(e?.latestSeq)}function or({sessionState:e,hasCachedSessionRows:t,force:s=!1}={}){return e?.loading?!1:s?!e?.loaded:e?.loaded?!1:!t}function vf(e,t,s,n){let i=s?.id?String(s.id):null;if(!i)return!1;let o=(e.messagesMap[t]||[]).find(a=>a?.type==="assistant"&&In(a)===i);return o?(o.id||(o.id=i),o.messageId||(o.messageId=i),s.ts&&!o.ts&&(o.ts=s.ts),s.timestamp&&!o.timestamp&&(o.timestamp=s.timestamp),s.sessionId&&!o.sessionId&&(o.sessionId=s.sessionId),s.vpId&&!o.vpId&&(o.vpId=s.vpId),s.turnId&&!o.turnId&&(o.turnId=s.turnId),s.threadId&&!o.threadId&&(o.threadId=s.threadId),o.content?typeof o.content=="string"&&(n.startsWith(o.content)?o.content=n:o.content.endsWith(n)||(o.content+=n)):o.content=n,qs(e,t,o),!0):!1}function An(e,t,s){if(!t)return;let n={...s,id:s.dbMessageId||s.id||Date.now().toString()+Math.random().toString(36).substr(2,9),timestamp:hf(s)};nr(e,t)&&!n.sessionId&&(n.sessionId=e._currentYeaftSessionId||e.yeaftActiveSessionFilter||mf),nr(e,t)&&(!n.vpId&&e._currentYeaftVpId&&(n.vpId=e._currentYeaftVpId),!n.turnId&&e._currentYeaftTurnId&&(n.turnId=e._currentYeaftTurnId),qs(e,t,n)),e.messagesMap[t]||(e.messagesMap[t]=[]);let i=In(s);if(i){let r=e.messagesMap[t].find(o=>In(o)===i);if(r)return ir(r,n),t===e.yeaftConversationId&&e.messagesMap[t].sort((o,a)=>o.timestamp-a.timestamp),r}return e.messagesMap[t].push(n),ka(e.messagesMap[t]),t===e.yeaftConversationId&&e.messagesMap[t].sort((r,o)=>r.timestamp-o.timestamp),n}function Ia(e,t,s,n={}){if(!t||!s)return;e.messagesMap[t]||(e.messagesMap[t]=[]);let i=e.messagesMap[t];if(vf(e,t,n,s))return;let r=e._currentYeaftTurnId;if(r){for(let a=i.length-1;a>=0;a--)if(i[a].turnId===r&&i[a].type==="assistant"&&i[a].isStreaming){if(qs(e,t,i[a]),n.id&&!i[a].id&&(i[a].id=n.id),n.id&&!i[a].messageId&&(i[a].messageId=n.id),i[a].content.endsWith(s))return;i[a].content+=s;return}An(e,t,{...n.id?{id:n.id,messageId:n.id}:{},...n.ts?{ts:n.ts}:{},...n.timestamp?{timestamp:n.timestamp}:{},...n.sessionId?{sessionId:n.sessionId}:{},...n.vpId?{vpId:n.vpId}:{},...n.turnId?{turnId:n.turnId}:{},...n.threadId?{threadId:n.threadId}:{},type:"assistant",content:s,isStreaming:!0,status:"pending",turnStartAt:n.timestamp||Date.now()});return}let o=i[i.length-1];if(o&&o.type==="assistant"&&o.isStreaming){if(qs(e,t,o),n.id&&!o.id&&(o.id=n.id),n.id&&!o.messageId&&(o.messageId=n.id),o.content.endsWith(s))return;o.content+=s}else An(e,t,{...n.id?{id:n.id,messageId:n.id}:{},...n.ts?{ts:n.ts}:{},...n.timestamp?{timestamp:n.timestamp}:{},...n.sessionId?{sessionId:n.sessionId}:{},...n.vpId?{vpId:n.vpId}:{},...n.turnId?{turnId:n.turnId}:{},...n.threadId?{threadId:n.threadId}:{},type:"assistant",content:s,isStreaming:!0,status:"pending",turnStartAt:n.timestamp||Date.now()})}function Aa(e,t){if(!t)return;let s=e.messagesMap[t];if(!s||s.length===0)return;let n=e._currentYeaftTurnId||null;for(let i=s.length-1;i>=0;i--){let r=s[i];if(n&&r.turnId&&r.turnId!==n){if(r.type==="user")break;continue}if(r.isStreaming&&(r.isStreaming=!1,r.status==="pending"&&(r.status="completed",r.turnEndAt=Date.now())),qs(e,t,r),r.type==="user")break}}function xa(e,t){if(!t||e.processingConversations&&e.processingConversations[t]||e.activeVpTurns&&Object.keys(e.activeVpTurns).length>0)return;let s=e.messagesMap&&e.messagesMap[t];if(!(!s||s.length===0))for(let n of s)n&&n.isStreaming&&(n.isStreaming=!1)}function Ta(e,t){let s=e.currentConversation;if(!s)return;e.messagesMap[s]||(e.messagesMap[s]=[]);let n=e.messagesMap[s],i=null;for(let r of t)if(r.type==="user"){let o=r.message?.content;if(o){let a=typeof o=="string"?o:Array.isArray(o)?o.map(l=>l.text||"").join(""):"";a&&(i=a,e.addMessage({type:"user",content:a,isHistory:!0}))}}else if(r.type==="assistant"){let o=r.message?.content;if(o&&Array.isArray(o)){for(let a of o)if(a.type==="text"&&a.text)e.addMessage({type:"assistant",content:a.text,isHistory:!0});else if(a.type==="tool_use")e.addMessage({type:"tool-use",toolName:a.name,toolInput:a.input,isHistory:!0});else if(a.type==="tool_result"){for(let l=n.length-1;l>=0;l--)if(n[l].type==="tool-use"&&!n[l].hasResult){n[l].hasResult=!0,n[l].toolResult=a.content;break}}}}if(i&&s&&!e.conversationTitles[s]){let r=i.trim().substring(0,100);e.conversationTitles[s]=r}}function Ws(e){if(!Array.isArray(e))return null;let t=null;for(let s of e)typeof s?.dbMessageId=="number"&&s.dbMessageId>0&&(t===null||s.dbMessageId>t)&&(t=s.dbMessageId);return t}function Ma(e){return{id:e.id,dbMessageId:e.id,timestamp:e.created_at}}function Pa(e){return e?e.message_type==="tool_use"&&!yf.has(e.tool_name)?{...Ma(e),type:"tool-use",toolName:e.tool_name||"unknown",hasResult:!0,isHistory:!0,startTime:e.created_at||0}:ar(e):null}function ar(e){if(!e)return null;let t=Ma(e);if(e.message_type==="tool_use"){let n={...t,type:"tool-use",toolName:e.tool_name||"unknown",toolInput:(()=>{try{return JSON.parse(e.tool_input||e.content||"{}")}catch{return{}}})(),hasResult:!0,isHistory:!0,startTime:e.created_at||0};if(e.metadata)try{let i=JSON.parse(e.metadata);i.askRequestId&&(n.askRequestId=i.askRequestId,n.askQuestions=i.askQuestions,n.askAnswered=!!i.askAnswered,n.selectedAnswers=i.selectedAnswers||null,i.askAnswered||(n.isHistory=!1))}catch{}return n}let s=n=>{if(!n)return"";if(typeof n!="string")return String(n);if(n.startsWith("["))try{let i=JSON.parse(n);if(Array.isArray(i))return i.filter(r=>r.type==="text"&&r.text).map(r=>r.text).join("")}catch{}return n};if(e.role==="user"){let n=null;if(e.metadata)try{let i=JSON.parse(e.metadata);i&&typeof i.clientMessageId=="string"&&(n=i.clientMessageId)}catch{}return{...t,type:"user",content:typeof e.content=="string"?e.content:String(e.content||""),...n?{clientMessageId:n}:{}}}else if(e.role==="assistant"){let n=s(e.content),i=(()=>{if(!e.content||typeof e.content!="string"||!e.content.startsWith("["))return[];try{let r=JSON.parse(e.content);return Array.isArray(r)?r.filter(o=>o.type==="tool_use"&&o.name):[]}catch{return[]}})();if(!n&&i.length===0)return null;if(i.length>0){let r=[];n&&r.push({...t,type:"assistant",content:n});for(let o=0;o<i.length;o++){let a=i[o];r.push({id:e.id+"_tool_"+o,dbMessageId:e.id,timestamp:e.created_at,type:"tool-use",toolName:a.name,toolInput:a.input||{},hasResult:!0,isHistory:!0,startTime:e.created_at||0})}return r}return{...t,type:"assistant",content:n}}else if(e.role==="tool"||e.message_type==="tool_result")return{...t,type:"tool_result",tool:e.tool_name||"unknown",content:typeof e.content=="string"?e.content:String(e.content||"")};return null}var mf,yf,xn=O(()=>{sr();mf="grp_default";yf=new Set(["TodoWrite","AskUserQuestion"])});function Ht(e,t){return e._closedAt?.[t]?Date.now()-e._closedAt[t]<3e4:!1}function us(e,t){ke(e,t),e._processingWatchdogs||(e._processingWatchdogs={});let s=()=>{if(!e.processingConversations[t])return;let i=e.conversations.find(o=>o.id===t);e.sendWsMessage({type:"ping_session",conversationId:t,agentId:i?.agentId});let r=setTimeout(()=>{e.processingConversations[t]&&(e.sessionHealth||(e.sessionHealth={}),e.sessionHealth[t]={status:"agent-offline"})},1e4);e._pongTimeouts||(e._pongTimeouts={}),e._pongTimeouts[t]=r},n=setTimeout(()=>{e.processingConversations[t]&&(s(),e._processingWatchdogs[t]=setInterval(()=>{if(!e.processingConversations[t]){ke(e,t);return}s()},3e4))},45e3);e._processingWatchdogs[t]=n}function Tn(e,t){e.processingConversations[t]&&e._processingWatchdogs?.[t]&&(e._pongTimeouts?.[t]&&(clearTimeout(e._pongTimeouts[t]),delete e._pongTimeouts[t]),e.sessionHealth?.[t]&&delete e.sessionHealth[t],e._yeaftWatchdogConvs?.has(t)?lr(e,t):us(e,t))}function ke(e,t){e._processingWatchdogs?.[t]&&(clearTimeout(e._processingWatchdogs[t]),clearInterval(e._processingWatchdogs[t]),delete e._processingWatchdogs[t]),e._pongTimeouts?.[t]&&(clearTimeout(e._pongTimeouts[t]),delete e._pongTimeouts[t]),e.sessionHealth?.[t]&&delete e.sessionHealth[t],e._autoRefreshed?.[t]&&delete e._autoRefreshed[t],e._yeaftWatchdogConvs?.delete(t)}function Da(e,t){ke(e,t),e._processingWatchdogs||(e._processingWatchdogs={}),e._processingWatchdogs[t]=setTimeout(()=>{if(e.processingConversations[t]){let s=e.conversations.find(n=>n.id===t);e.sendWsMessage({type:"refresh_conversation",conversationId:t,agentId:s?.agentId}),e._processingWatchdogs[t]=setTimeout(()=>{if(e.processingConversations[t]){delete e.processingConversations[t];let n=e.executionStatusMap[t];n&&(n.currentTool=null),e.finishStreamingForConversation(t)}delete e._processingWatchdogs[t]},1e4)}},9e4)}function lr(e,t){ke(e,t),e._processingWatchdogs||(e._processingWatchdogs={}),e._yeaftWatchdogConvs||(e._yeaftWatchdogConvs=new Set),e._yeaftWatchdogConvs.add(t),e._processingWatchdogs[t]=setTimeout(()=>{if(e.processingConversations[t]){delete e.processingConversations[t];let s=e.executionStatusMap[t];s&&(s.currentTool=null),e.finishStreamingForConversation(t)}delete e._processingWatchdogs[t]},15e4)}var Nt=O(()=>{});function Mn(e,t){return!e||!t||e.type!=="user"||t.type!=="user"?!1:e.clientMessageId&&t.clientMessageId?e.clientMessageId===t.clientMessageId:e.clientMessageId||t.clientMessageId?!1:e.content===t.content}var cr=O(()=>{});function dr(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}function kf(){return Date.now()}function Sf(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?`pt_${crypto.randomUUID()}`:`pt_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`}function Cf(e,t=160){return typeof e!="string"?e:e.length>t?`${e.slice(0,t)}...[truncated]`:e}function If(e){if(!e||typeof e!="object")return e||null;let t={};for(let[s,n]of Object.entries(e))s==="text"||s==="prompt"||s==="content"||s==="data"||(t[s]=typeof n=="string"?Cf(n):n);return t}function Us(){return Sf()}function Qe(e,t={}){!e||!t.traceId||(Array.isArray(e._perfTraceQueue)||(e._perfTraceQueue=[]),e._perfTraceQueue.push({traceId:t.traceId,source:"web",phase:t.phase||"unknown",at:kf(),monotonicMs:dr(),durationMs:Number.isFinite(t.durationMs)?t.durationMs:null,agentId:t.agentId||null,sessionId:t.sessionId||null,vpId:t.vpId||null,turnId:t.turnId||null,threadId:t.threadId||null,messageType:t.messageType||null,bytes:Number.isFinite(t.bytes)?t.bytes:null,ok:typeof t.ok=="boolean"?t.ok:null,detail:If(t.detail)}),e._perfTraceQueue.length>200&&e._perfTraceQueue.splice(0,e._perfTraceQueue.length-200),Af(e))}function Af(e){!e||e._perfTraceFlushTimer||(e._perfTraceFlushTimer=setTimeout(()=>xf(e),250))}function xf(e){if(!e||!Array.isArray(e._perfTraceQueue)||e._perfTraceQueue.length===0){e&&(e._perfTraceFlushTimer=null);return}let t=e._perfTraceQueue.splice(0,e._perfTraceQueue.length);e._perfTraceFlushTimer=null,typeof e.sendWsMessage=="function"&&e.sendWsMessage({type:"perf_trace_events",events:t})}function Pn(e,t={}){if(typeof requestAnimationFrame!="function")return;let s=dr();requestAnimationFrame(()=>{requestAnimationFrame(()=>{Qe(e,{...t,phase:t.phase||"render.next_paint",durationMs:dr()-s})})})}var ur=O(()=>{});function qe(e,t){let s=t==null?"__all__":String(t);return e?`${e}${s}`:s}var pr=O(()=>{});function La(e){return e.filter(t=>!(t.type==="user"&&(!t.content||!t.content.trim())))}function _a(e){let t=[e?.timestamp,e?.createdAt,e?.ts,e?.time,e?.created_at];for(let s of t){if(typeof s=="number"&&Number.isFinite(s)&&s>0)return s;if(typeof s=="string"&&s.trim()){let n=Date.parse(s);if(Number.isFinite(n))return n;let i=Number(s);if(Number.isFinite(i)&&i>0)return i}}return null}function Tf(e){if(!e||typeof window>"u")return null;try{let t=window.Pinia||null,s=t&&typeof t.useSessionsStore=="function"?t.useSessionsStore():null;if(!s)return null;let n=typeof t.useChatStore=="function"?t.useChatStore():null,i=typeof s.sessionById=="function"?s.sessionById(e,n?.currentAgent||null):s.sessions&&s.sessions[e];return(i&&typeof i.defaultVpId=="string"?i.defaultVpId.trim():"")||null}catch{return null}}function Mf(e,t){return e.speakerVpId||e.vpId||e.vp_id||e.authorVpId||e.authorVP||Tf(t)}function Dn(e){return e&&(e.messageId||e.id)?e.messageId||e.id:null}function Pf(e){e.sort((t,s)=>(t.timestamp||0)-(s.timestamp||0))}function Df(e,t){if(!e||!t||e.type!=="assistant"||t.type!=="assistant"||(e.sessionId??null)!==(t.sessionId??null))return!1;let s=e.speakerVpId||e.vpId||"",n=t.speakerVpId||t.vpId||"";if(s&&n&&s!==n)return!1;let i=e.threadId||"",r=t.threadId||"";if(i&&r&&i!==r||!(e.isStreaming||e.isHistory!==!0)||t._hasPersistedTurnId!==!0)return!1;let a=e.turnId||"",l=t.turnId||"";if(!a||!l||a!==l)return!1;let c=typeof e.content=="string"?e.content:"",d=typeof t.content=="string"?t.content:"";return!!c&&!!d&&(d.startsWith(c)||c.startsWith(d))}function fr(e,t){let s=new Map,n=new Map;e.forEach((r,o)=>{let a=Dn(r);a&&s.set(a,o),r?.type==="user"&&r.clientMessageId&&n.set(r.clientMessageId,o)});let i=0;for(let r of t){let o=Dn(r),a=o&&s.has(o)?s.get(o):null;if(a===null&&r?.type==="user"&&r.clientMessageId&&n.has(r.clientMessageId)&&(a=n.get(r.clientMessageId)),a===null&&r?.type==="assistant"&&(a=e.findIndex(l=>Df(l,r))),a!==null&&a>=0){let l=Dn(e[a]);e[a]={...e[a],...r},o&&s.set(o,a),l&&l!==o&&s.get(l)===a&&s.delete(l),r?.type==="user"&&r.clientMessageId&&n.set(r.clientMessageId,a)}else o&&s.set(o,e.length),r?.type==="user"&&r.clientMessageId&&n.set(r.clientMessageId,e.length),e.push(r),i+=1}return Pf(e),i}function gr(e){return e?e.sessionId??e.groupId??null:null}function _f(e){return!e||e.type!=="user"||!e.clientMessageId?!1:Dn(e)===e.clientMessageId}function Ef(e,t,s){let n=t.reduce((r,o)=>Math.max(r,o?.timestamp||0),0),i=e.filter(r=>r?s!=null&&gr(r)!==s||r.isStreaming||r.type==="tool-use"&&r.toolName==="AskUserQuestion"&&(r.askAnswered||r.askPending||r.askExpired)||_f(r)?!0:n>0&&(r.timestamp||0)>n:!1);return e.splice(0,e.length,...i),fr(e,t),t.length}function Rf(e){if(typeof e!="string")return!1;let t=e.trimStart();return t.startsWith("<task-result ")||/^\[system note\] You have called \S+ with the same arguments \d+ times\./.test(t)}function xt(e,t){let s=e.messagesMap[t]||[];for(let n of s)n.type==="tool-use"&&!n.hasResult&&(n.hasResult=!0,n.toolName==="AskUserQuestion"&&!n.askAnswered&&!n.selectedAnswers&&(n.isHistory=!0,n.askRequestId=null))}function $a(e,t){pt(e);let s=e.agents.find(i=>i.id===t.agentId);e.conversations=e.conversations.filter(i=>i.id!==t.conversationId);let n=t.provider||"claude-code";if(e.conversations.push({id:t.conversationId,agentId:t.agentId,agentName:s?.name||t.agentId,workDir:t.workDir,claudeSessionId:null,createdAt:Date.now(),processing:!1,connecting:n!=="claude-code",type:"chat",provider:n,capabilities:t.capabilities||null,disallowedTools:t.disallowedTools??null}),e.currentAgent=t.agentId,e.currentAgentInfo=s,e.panels.length>1){let i=e._pendingPaneId;if(e._pendingPaneId=null,i){let r=e.panels.find(o=>o.id===i);r&&(r.conversationId=t.conversationId)}else{let r=e.panels.find(o=>!o.conversationId);r&&(r.conversationId=t.conversationId)}e.activeConversations.includes(t.conversationId)||e.activeConversations.push(t.conversationId)}else e.activeConversations=[t.conversationId];e.currentWorkDir=t.workDir,e.messagesMap[t.conversationId]=[],e.sendWsMessage({type:"select_conversation",conversationId:t.conversationId}),e.addMessage({type:"system",content:xe("store.convCreated",{agent:s?.name||t.agentId,workDir:t.workDir})}),e.saveOpenSessions()}function Va(e,t){pt(e);let s=e.agents.find(n=>n.id===t.agentId);if(e.conversations=e.conversations.filter(n=>n.id!==t.conversationId&&!(n.claudeSessionId&&n.claudeSessionId===t.claudeSessionId)),e.conversations.push({id:t.conversationId,agentId:t.agentId,agentName:s?.name||t.agentId,workDir:t.workDir,claudeSessionId:t.claudeSessionId,createdAt:Date.now(),processing:!1,connecting:(t.provider||"claude-code")!=="claude-code",type:"chat",provider:t.provider||"claude-code",capabilities:t.capabilities||null,disallowedTools:t.disallowedTools??null}),e.currentAgent=t.agentId,e.currentAgentInfo=s,e.panels.length>1){let n=e._pendingPaneId;if(e._pendingPaneId=null,n){let i=e.panels.find(r=>r.id===n);i&&(i.conversationId=t.conversationId)}else{let i=e.panels.find(r=>!r.conversationId);i&&(i.conversationId=t.conversationId)}e.activeConversations.includes(t.conversationId)||e.activeConversations.push(t.conversationId)}else e.activeConversations=[t.conversationId];if(e.currentWorkDir=t.workDir,e.messagesMap[t.conversationId]=[],e._pendingSessionTitle&&(e.conversationTitles[t.conversationId]=e._pendingSessionTitle,e._pendingSessionTitle=null),e.sendWsMessage({type:"select_conversation",conversationId:t.conversationId}),e.addMessage({type:"system",content:xe("store.convResumed",{agent:s?.name||t.agentId,sessionId:t.claudeSessionId?t.claudeSessionId.slice(0,8)+"...":""})}),t.dbMessages&&t.dbMessages.length>0){let n=La(t.dbMessages.map(o=>e.formatDbMessageForHistoryHydration(o)).flat().filter(Boolean)),i=tr(n),r=e.messagesMap[t.conversationId]||[];for(let o of i)r.push(o)}e.hasMoreMessages=!!t.hasMoreMessages,e.chatSessionState[t.conversationId]={lastSeenDbId:Ws(e.messagesMap[t.conversationId]),hasMoreOlder:!!t.hasMoreMessages},e.saveOpenSessions()}function Fa(e,t){e.conversations=e.conversations.filter(n=>n.id!==t.conversationId),delete e.messagesMap[t.conversationId],delete e.chatSessionState[t.conversationId],delete e.conversationTitles[t.conversationId],delete e.customConversationTitles[t.conversationId],delete e.processingConversations[t.conversationId],e._closedAt&&delete e._closedAt[t.conversationId],ke(e,t.conversationId),delete e.executionStatusMap[t.conversationId],delete e.subagents[t.conversationId],window.dispatchEvent(new CustomEvent("conversation-deleted",{detail:{conversationId:t.conversationId}}));let s=e.activeConversations.indexOf(t.conversationId);s>=0&&(e.activeConversations.splice(s,1),e.activeConversations.length===0&&e.addMessage({type:"system",content:xe("chat.session.closed")}));for(let n of e.panels)n.conversationId===t.conversationId&&(n.conversationId=null);e.saveOpenSessions()}function Oa(e,t){let s=t.conversationId;if(s){delete e.processingConversations[s],ke(e,s),e._closedAt||(e._closedAt={}),e._closedAt[s]=Date.now(),e._turnCompletedConvs||(e._turnCompletedConvs=new Set),e._turnCompletedConvs.add(s);let n=e.executionStatusMap[s];n&&(n.currentTool=null),e.finishStreamingForConversation(s),xt(e,s);let i=e.conversations.find(r=>r.id===s);i&&(t.claudeSessionId&&(i.claudeSessionId=t.claudeSessionId),t.workDir&&(i.workDir=t.workDir)),e.clearStatus?.conversationId===s&&e.clearStatus?.status==="clearing"&&(e.clearStatus={conversationId:s,status:"completed"},setTimeout(()=>{e.clearStatus?.conversationId===s&&e.clearStatus?.status==="completed"&&(e.clearStatus=null)},3e3)),e.saveOpenSessions()}}function Ha(e,t){let s=t.conversationId;if(s){delete e.processingConversations[s],ke(e,s),e._closedAt||(e._closedAt={}),e._closedAt[s]=Date.now(),e._turnCompletedConvs||(e._turnCompletedConvs=new Set),e._turnCompletedConvs.add(s);let n=e.executionStatusMap[s];n&&(n.currentTool=null),e.finishStreamingForConversation(s),xt(e,s);let i=e.conversations.find(r=>r.id===s);i&&(t.claudeSessionId&&(i.claudeSessionId=t.claudeSessionId),t.workDir&&(i.workDir=t.workDir)),e.saveOpenSessions()}}function Na(e,t){if(t.conversationId){if(t.isProcessing&&!Ht(e,t.conversationId)&&!e._turnCompletedConvs?.has(t.conversationId))e.processingConversations[t.conversationId]=!0;else if(e.processingConversations[t.conversationId]){delete e.processingConversations[t.conversationId],ke(e,t.conversationId);let s=e.executionStatusMap[t.conversationId];s&&(s.currentTool=null),e.finishStreamingForConversation(t.conversationId)}}}function Ba(e,t){let s=t.conversationId||e.currentConversation;if(s){delete e.processingConversations[s],ke(e,s),e._closedAt||(e._closedAt={}),e._closedAt[s]=Date.now(),e._turnCompletedConvs||(e._turnCompletedConvs=new Set),e._turnCompletedConvs.add(s);let n=e.executionStatusMap[s];n&&(n.currentTool=null),e.finishStreamingForConversation(s),xt(e,s)}}function qa(e,t){e.messagesMap[t.conversationId]||(e.messagesMap[t.conversationId]=[]);let s=e.messagesMap[t.conversationId],n=typeof t.afterMessageId=="number"&&t.afterMessageId>0;if(t.conversationId&&e.activeConversations.includes(t.conversationId)){let i=tr(La((t.messages||[]).map(o=>e.formatDbMessageForHistoryHydration(o)).flat().filter(Boolean)));if(i.length>0){let o=s.find(a=>a.dbMessageId);if(o&&i[0].dbMessageId&&i[i.length-1].dbMessageId<o.dbMessageId){let a=s.indexOf(o);e.debug,s.splice(a,0,...i)}else{e.debug;for(let a of i)if(!(a.dbMessageId&&s.some(l=>l.dbMessageId===a.dbMessageId))){if(a.dbMessageId&&(a.type==="assistant"||a.type==="user")){let l=null;if(a.type==="user"?l=s.find(c=>!c.dbMessageId&&!c.isStreaming&&Mn(c,a)):l=s.find(c=>!c.dbMessageId&&!c.isStreaming&&c.type==="assistant"&&c.content===a.content),l){l.dbMessageId=a.dbMessageId,l.id=a.id,a.timestamp&&(l.timestamp=a.timestamp),a.clientMessageId&&!l.clientMessageId&&(l.clientMessageId=a.clientMessageId);continue}}s.push(a)}}}n||(e.hasMoreMessages=t.hasMore??!1),pt(e);let r=e.chatSessionState[t.conversationId]?.hasMoreOlder;e.chatSessionState[t.conversationId]={lastSeenDbId:Ws(e.messagesMap[t.conversationId]),hasMoreOlder:n?!!r:!!t.hasMore}}e.loadingMoreMessages=!1,e.setRefreshingSession(t.conversationId,!1)}function Wa(e,t){let s=t.sessionId??null,n=t.agentId||s&&e.yeaftSessionAgentById?.[s]||null,i=t.conversationId||n&&e.yeaftConversationIdsByAgent?.[n]||e.yeaftConversationId;if(!i||!s||!Array.isArray(t.messages))return null;e.messagesMap[i]||(e.messagesMap[i]=[]);let{formatted:r}=Ua(t.messages,s,"window",e.messagesMap[i]);return fr(e.messagesMap[i],r),i}function Ea(e){return e?.toolId?[gr(e)??"",e.vpId||e.speakerVpId||"",e.turnId||"",e.threadId||"main",e.toolId].join("\0"):null}function Ra(e,t,s){return e.toolName="AskUserQuestion",e.toolId=t.toolCallId,e.toolInput={questions:s},e.askQuestions=s,e.askRequestId=null,e.askPending=!1,e.pendingAnswers=null,e.askSubmitGeneration=null,e.hasResult=!0,e.isHistory=!0,t.status==="answered"?(e.askAnswered=!0,e.selectedAnswers=t.answers,e.askExpired=!1):(e.askAnswered=!1,e.selectedAnswers=null,e.askExpired=!0),e}function Lf(e,t){return(e||[]).find(s=>s?.type==="tool-use"&&(s.toolName==="AskUser"||s.toolName==="AskUserQuestion")&&s.toolId===t.toolCallId&&gr(s)===t.sessionId&&(s.vpId||s.speakerVpId||"")===(t.vpId||"")&&(s.turnId||"")===(t.turnId||"")&&(s.threadId||"main")===(t.threadId||"main"))||null}function Ua(e,t,s,n){let i=new Set((n||[]).map(l=>l&&(l.messageId||l.id)).filter(Boolean)),r=new Set,o=[],a=0;for(let l of e){if(!l||l._reflection||l.internal||l.systemOnly||l.systemOnlyMessage||Rf(l.content))continue;let c=l.id||l.messageId||null,d=l.clientMessageId||null;if(!(c&&r.has(c))&&!(c&&s!=="recent"&&i.has(c))){if(c&&r.add(c),l.role==="user"){a+=1;let u=c||l.messageId||l.turnId||null,p=l.sessionId??l.groupId??t??null;o.push({...c?{id:c,messageId:c}:{},type:"user",content:l.content,timestamp:_a(l),sessionId:p,turnId:l.turnId||u,...d?{clientMessageId:d}:{},...Array.isArray(l.attachments)&&l.attachments.length>0?{attachments:l.attachments}:{},isStreaming:!1})}else if(l.role==="assistant"){a+=1;let u=c||l.messageId||l.turnId||null,p=l.sessionId??l.groupId??t??null,f=Mf(l,p),g=_a(l),v=!!l.turnId,y=l.turnId||u,A=typeof l.content=="string"?l.content:l.content||"";(typeof A!="string"||A.trim())&&o.push({...c?{id:c,messageId:c}:{},type:"assistant",content:A,timestamp:g,sessionId:p,turnId:y,_hasPersistedTurnId:v,...f?{vpId:f,speakerVpId:f}:{},isStreaming:!1,isHistory:!0});for(let k of Array.isArray(l.images)?l.images:[])k?.assetId&&o.push({id:`${c||u||y}:image:${k.assetId}`,messageId:`${c||u||y}:image:${k.assetId}`,type:"chat-image",...k,timestamp:g,sessionId:p,turnId:y,...f?{vpId:f,speakerVpId:f}:{},isStreaming:!1,isHistory:!0});for(let k of Array.isArray(l.askUserResults)?l.askUserResults:[]){if(!k?.toolCallId||k.status!=="answered"&&k.status!=="expired")continue;let b=[{question:typeof k.question=="string"?k.question:"",options:(Array.isArray(k.options)?k.options:[]).filter(q=>typeof q=="string").map(q=>({label:q,description:""})),multiSelect:!1}],m={toolCallId:k.toolCallId,sessionId:p,vpId:f||"",turnId:y||"",threadId:l.threadId||"main"},w=Lf(n,m);if(w){Ra(w,k,b);continue}let E=Ra({id:`${c||u||y}:ask:${k.toolCallId}`,messageId:`${c||u||y}:ask:${k.toolCallId}`,type:"tool-use",timestamp:g,sessionId:p,turnId:y,threadId:m.threadId,...f?{vpId:f,speakerVpId:f}:{},isStreaming:!1},k,b),R=Ea(E);(!R||!o.some(q=>Ea(q)===R))&&o.push(E)}let x=Number(l.toolSummaryCount||l.toolCalls?.length||0)||0;x>0&&o.push({...c?{id:`${c}:tool-summary`,messageId:`${c}:tool-summary`,persistedMessageId:c}:{},type:"tool-summary",count:x,omittedCount:x,source:"history",timestamp:g,sessionId:p,turnId:y,...f?{vpId:f,speakerVpId:f}:{},isStreaming:!1,isHistory:!0})}}}return{formatted:o,acceptedHistoryMessages:a}}function za(e,t){let s=t.sessionId!=null?t.sessionId:t.groupId,n=t.mode==="recent"||t.mode==="delta"?t.mode:"older",i=Array.isArray(t.messages)?t.messages:[];t.perfTraceId&&Qe(e,{traceId:t.perfTraceId,phase:"history.chunk_received",agentId:t.agentId||null,sessionId:s||null,messageType:t.type,bytes:(()=>{try{return JSON.stringify(t).length}catch{return null}})(),detail:{mode:n,rawCount:i.length}});let r=t.agentId||(s&&e.yeaftSessionAgentById?e.yeaftSessionAgentById[s]:null),o=r&&e.yeaftConversationIdsByAgent?e.yeaftConversationIdsByAgent[r]:null,a=t.conversationId||o||e.yeaftConversationId;if(!a){e.yeaftLoadingMoreHistory=!1;return}e.messagesMap[a]||(e.messagesMap[a]=[]);let{formatted:l,acceptedHistoryMessages:c}=Ua(i,s,n,e.messagesMap[a]),d=0;if(n==="recent")d=Ef(e.messagesMap[a],l,s??null);else if(l.length>0)if(n==="older"){if(e.messagesMap[a].splice(0,0,...l),d=l.length,typeof e.expandYeaftMessageWindow=="function"){let A=e.yeaftActiveSessionFilter?s??null:null;e.expandYeaftMessageWindow(A,t.turns||10)}}else d=fr(e.messagesMap[a],l);let u=qe(t.agentId||null,s),p=e.yeaftSessionHistoryState?.[u]||{},f=typeof t.latestSeq=="number"?t.latestSeq:p.latestSeq??null,g=n==="delta"?{...p,loaded:!0,loading:!1,latestSeq:f,syncingAfterSeq:null,count:(p.count||0)+d}:{loaded:!0,loading:!1,hasMore:!!t.hasMore,oldestSeq:typeof t.oldestSeq=="number"?t.oldestSeq:e.yeaftOldestLoadedSeq,count:n==="older"?(p.count||0)+d:c,latestSeq:f,syncingAfterSeq:null};e.yeaftSessionHistoryState&&(e.yeaftSessionHistoryState={...e.yeaftSessionHistoryState,[u]:g});let v=e.yeaftActiveSessionFilter??null,y=qe(t.agentId?e.currentAgent:null,v);if(t.perfTraceId&&(Qe(e,{traceId:t.perfTraceId,phase:"history.chunk_applied",agentId:t.agentId||null,sessionId:s||null,messageType:t.type,detail:{mode:n,formattedCount:l.length,insertedRows:d,acceptedHistoryMessages:c}}),Pn(e,{traceId:t.perfTraceId,phase:"history.next_paint",agentId:t.agentId||null,sessionId:s||null,messageType:t.type,detail:{mode:n,insertedRows:d}})),u===y)e.yeaftHasMoreHistory=g.hasMore,typeof t.oldestSeq=="number"&&(e.yeaftOldestLoadedSeq=t.oldestSeq),e.yeaftLoadingMoreHistory=!1;else if(e.yeaftLoadingMoreHistory&&u!==y){let A=e.yeaftSessionHistoryState?.[y]||null;e.yeaftLoadingMoreHistory=!!A?.loading}}var _n=O(()=>{Nt();Ot();cr();xn();sr();bt();ur();pr()});function ja(e,t){if(e.promoteYeaftHistoryOutlineRow?.(t))return;let s=t?.sessionId??t?.groupId??e._currentYeaftSessionId??null;s&&e.invalidateYeaftHistoryOutline?.(s)}function $f(e){let t=e;if(typeof t=="string"){let s=t.trim();if(s.startsWith("[")&&s.endsWith("]")||s.startsWith("{")&&s.endsWith("}"))try{t=JSON.parse(s)}catch{t=e}}return Array.isArray(t)?t.map(s=>typeof s=="string"?s:!s||typeof s!="object"?"":s.type==="text"&&typeof s.text=="string"||s.type==="input_text"&&typeof s.text=="string"?s.text:"").join("").replace(/\n\n\[Uploaded files\][\s\S]*$/m,"").trim():t&&typeof t=="object"?typeof t.text=="string"?t.text.trim():typeof t.content=="string"?t.content.trim():"":typeof t=="string"?t.replace(/\n\n\[Uploaded files\][\s\S]*$/m,"").trim():""}function mr(e,t){return e.executionStatusMap[t]||(e.executionStatusMap[t]={currentTool:null,toolHistory:[],lastActivity:null}),e.executionStatusMap[t]}function Ka(e,t,s){if(!t)return;let n=mr(e,t);if(n.lastActivity=Date.now(),Tn(e,t),s.type==="system"){if(s.subtype==="init"){let i=e.conversations.find(r=>r.id===t);i&&i.connecting&&(i.connecting=!1);return}s.message&&e.addMessageToConversation(t,{type:"system",content:typeof s.message=="string"?s.message:JSON.stringify(s.message,null,2)});return}if(s.type==="assistant"){let i=s.message?.content;if(!i)return;let r=e.messagesMap[t]||[];for(let o of r)o.type==="tool-use"&&!o.hasResult&&(o.hasResult=!0);for(let o of n.toolHistory)o.status==="running"&&(o.status="done");if(n.currentTool=null,typeof i=="string"){e.appendToAssistantMessageForConversation(t,i,{id:s.message?.id||s.message?.messageId||null,ts:s.ts||s.message?.ts||s.message?.time||null,sessionId:e._currentYeaftSessionId||null,vpId:e._currentYeaftVpId||null,turnId:e._currentYeaftTurnId||null,threadId:e._currentYeaftThreadId||null});return}if(!Array.isArray(i))return;if(i.length===0){e.finishStreamingForConversation(t);return}for(let o of i)o.type==="text"?e.appendToAssistantMessageForConversation(t,o.text,{id:s.message?.id||s.message?.messageId||null,ts:s.ts||s.message?.ts||s.message?.time||null,sessionId:e._currentYeaftSessionId||null,vpId:e._currentYeaftVpId||null,turnId:e._currentYeaftTurnId||null,threadId:e._currentYeaftThreadId||null}):o.type==="image_asset"&&o.image?e.addMessageToConversation(t,{type:"chat-image",...o.image,sessionId:e._currentYeaftSessionId||null,vpId:e._currentYeaftVpId||null,speakerVpId:e._currentYeaftVpId||null,turnId:e._currentYeaftTurnId||null,threadId:e._currentYeaftThreadId||null}):o.type==="tool_summary"?e.addMessageToConversation(t,{type:"tool-summary",count:Number(o.count||o.omittedCount||0)||0,omittedCount:Number(o.omittedCount||o.count||0)||0,source:o.source||"history",isHistory:o.source!=="live",sessionId:e._currentYeaftSessionId||null,vpId:e._currentYeaftVpId||null,turnId:e._currentYeaftTurnId||null,threadId:e._currentYeaftThreadId||null}):o.type==="tool_use"&&(e.finishStreamingForConversation(t),n.currentTool={name:o.name,input:o.input,startTime:Date.now()},n.toolHistory.unshift({name:o.name,input:o.input,timestamp:Date.now(),status:"running"}),n.toolHistory.length>20&&n.toolHistory.pop(),e.addMessageToConversation(t,{type:"tool-use",toolId:o.id||o.tool_use_id||null,toolName:o.name,toolInput:o.input,startTime:Date.now(),sessionId:e._currentYeaftSessionId||null,vpId:e._currentYeaftVpId||null,turnId:e._currentYeaftTurnId||null,threadId:e._currentYeaftThreadId||null}))}else if(s.type==="user"){let i=s.message?.content,r=$f(i);if(typeof r=="string"&&(r.includes("<local-command-caveat>")||r.includes("<command-name>")))return;if(typeof r=="string"&&r.includes("<local-command-stdout>")){let a=r.match(/<local-command-stdout>([\s\S]*?)<\/local-command-stdout>/);if(a){e.appendToAssistantMessageForConversation(t,a[1].trim()),e.finishStreamingForConversation(t);return}}let o=[];if(s.tool_use_result)o=Array.isArray(s.tool_use_result)?s.tool_use_result:[s.tool_use_result];else if(s.message?.content){let a=s.message.content;o=(Array.isArray(a)?a:[]).filter(c=>c.type==="tool_result")}if(o.length>0){let a=e.messagesMap[t]||[];for(let l of o){if(n.toolHistory.length>0){let p=n.toolHistory.findIndex(f=>f.status==="running");p>=0&&(n.toolHistory[p].status="done")}let c=l.tool_use_id||l.toolUseId||l.tool_call_id||l.toolCallId||null,d=l.content||l,u=!1;if(c){for(let p=a.length-1;p>=0;p--)if(a[p].type==="tool-use"&&a[p].toolId===c){a[p].hasResult=!0,a[p].toolResult=l.is_update&&a[p].toolResult?`${a[p].toolResult}
|
|
1
|
+
var O=(e,t,s)=>()=>{if(s)throw s[0];try{return e&&(t=e(e=0)),t}catch(n){throw s=[n],n}};var tf=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(s){throw t=0,s}};function Wo(e,t){let s=nacl.randomBytes(24),n=JSON.stringify(e),i,r=!1;n.length>512?(i=pako.gzip(n),r=!0):i=nacl.util.decodeUTF8(n);let o=nacl.secretbox(i,s,t),a={n:nacl.util.encodeBase64(s),c:nacl.util.encodeBase64(o)};return r&&(a.z=!0),a}function Uo(e,t){try{let s=nacl.util.decodeBase64(e.n),n=nacl.util.decodeBase64(e.c),i=nacl.secretbox.open(n,s,t);if(!i)return null;if(e.z){let r=pako.ungzip(i,{to:"string"});return JSON.parse(r)}else return JSON.parse(nacl.util.encodeUTF8(i))}catch{return null}}function zo(e){return e&&typeof e=="object"&&typeof e.n=="string"&&typeof e.c=="string"}function lt(e){return nacl.util.decodeBase64(e)}var Cn=O(()=>{});var sf,nf,Ae,ct=O(()=>{Cn();({defineStore:sf}=Pinia),nf=1800*1e3,Ae=sf("auth",{state:()=>({skipAuth:!1,emailVerification:!1,passwordResetEnabled:!1,totpEnabled:!1,registrationEnabled:!1,aadEnabled:!1,aadClientId:null,aadTenantId:null,ssoProviders:{github:!1,google:!1,wechat:!1,alipay:!1},linkedIdentities:[],hasPassword:!1,identitiesLoading:!1,identitiesError:null,initialized:!1,authGeneration:0,isAuthenticated:!1,token:null,sessionKey:null,role:null,loginStep:"credentials",tempToken:null,emailHint:null,setupToken:null,totpSecret:null,qrCode:null,error:null,loading:!1,qrPanel:null,_qrPollTimer:null,_sessionRefreshTimer:null,_sessionRefreshVisibilityHandler:null}),actions:{async initialize(){if(this.initialized)return this.isAuthenticated;try{if(await this.checkAuthMode(),this.skipAuth&&this.isAuthenticated)return!0;let e=!1;return typeof window<"u"&&typeof this.consumeSsoRedirect=="function"&&(e=this.consumeSsoRedirect()),!this.isAuthenticated&&!e&&await this.restoreSession(),this.isAuthenticated}finally{this.initialized=!0}},async checkAuthMode(){try{let t=await(await fetch("/api/auth/mode")).json();this.skipAuth=t.skipAuth,this.emailVerification=t.emailVerification,this.passwordResetEnabled=!!t.passwordResetEnabled,this.totpEnabled=t.totpEnabled,this.registrationEnabled=t.registrationEnabled||!1,this.aadEnabled=t.aadEnabled||!1,this.aadClientId=t.aadClientId||null,this.aadTenantId=t.aadTenantId||null,this.ssoProviders=Object.assign({github:!1,google:!1,wechat:!1,alipay:!1},t.ssoProviders||{}),this.skipAuth&&(this.authGeneration+=1,this.isAuthenticated=!0,this.loginStep="authenticated")}catch{}},async login(e,t){this.loading=!0,this.error=null;try{let n=await(await fetch("/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e,password:t})})).json();return n.success?n.needTotpSetup?(this.setupToken=n.setupToken,this.totpSecret=n.totpSecret,this.qrCode=n.qrCode,this.loginStep="totp-setup",!0):n.needTotpCode?(this.tempToken=n.tempToken,this.loginStep="totp",!0):n.needEmailCode?(this.tempToken=n.tempToken,this.emailHint=n.emailHint,this.loginStep="verification",!0):(this.token=n.token,this.sessionKey=n.sessionKey?lt(n.sessionKey):null,this.role=n.role||"pro",this.authGeneration+=1,this.isAuthenticated=!0,this.loginStep="authenticated",localStorage.setItem("authToken",n.token),this.startSessionRefresh(),!0):(this.error=n.error||"Login failed",!1)}catch(s){return this.error=s.message||"Network error",!1}finally{this.loading=!1}},async loginWithMicrosoft(){if(!this.aadEnabled||!this.aadClientId||!this.aadTenantId)return this.error="Microsoft login is not configured",!1;if(typeof msal>"u"||!msal.PublicClientApplication)return this.error="Microsoft authentication library not loaded",!1;this.loading=!0,this.error=null;try{let e={auth:{clientId:this.aadClientId,authority:`https://login.microsoftonline.com/${this.aadTenantId}`,redirectUri:window.location.origin+"/auth/callback"},cache:{cacheLocation:"sessionStorage",storeAuthStateInCookie:!1}},t=new msal.PublicClientApplication(e);await t.initialize();let s=await t.loginPopup({scopes:["openid","profile","email"]});if(!s||!s.idToken)return this.error="Microsoft login failed: no token received",!1;let i=await(await fetch("/api/auth/aad",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({idToken:s.idToken})})).json();return i.success?(this.token=i.token,this.sessionKey=i.sessionKey?lt(i.sessionKey):null,this.role=i.role||"pro",this.authGeneration+=1,this.isAuthenticated=!0,this.loginStep="authenticated",localStorage.setItem("authToken",i.token),this.startSessionRefresh(),!0):(this.error=i.error||"Microsoft login failed",!1)}catch(e){return e.errorCode==="user_cancelled"||e.name==="BrowserAuthError"?(this.error=null,!1):(this.error=e.message||"Microsoft login failed",!1)}finally{this.loading=!1}},async verifyTotpCode(e){this.loading=!0,this.error=null;try{let s=await(await fetch("/api/auth/verify-totp",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tempToken:this.tempToken,totpCode:e})})).json();return s.success?s.needEmailCode?(this.tempToken=s.tempToken,this.emailHint=s.emailHint,this.loginStep="verification",!0):(this.token=s.token,this.sessionKey=s.sessionKey?lt(s.sessionKey):null,this.role=s.role||"pro",this.authGeneration+=1,this.isAuthenticated=!0,this.loginStep="authenticated",this.tempToken=null,localStorage.setItem("authToken",s.token),this.startSessionRefresh(),!0):(this.error=s.error||"TOTP verification failed",!1)}catch(t){return this.error=t.message||"Network error",!1}finally{this.loading=!1}},async completeTotpSetup(e){this.loading=!0,this.error=null;try{let s=await(await fetch("/api/auth/setup-totp",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({setupToken:this.setupToken,totpCode:e})})).json();return s.success?(this.setupToken=null,this.totpSecret=null,this.qrCode=null,s.needEmailCode?(this.tempToken=s.tempToken,this.emailHint=s.emailHint,this.loginStep="verification",!0):(this.token=s.token,this.sessionKey=s.sessionKey?lt(s.sessionKey):null,this.role=s.role||"pro",this.authGeneration+=1,this.isAuthenticated=!0,this.loginStep="authenticated",localStorage.setItem("authToken",s.token),this.startSessionRefresh(),!0)):(this.error=s.error||"TOTP setup failed",!1)}catch(t){return this.error=t.message||"Network error",!1}finally{this.loading=!1}},async verifyCode(e){this.loading=!0,this.error=null;try{let s=await(await fetch("/api/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tempToken:this.tempToken,code:e})})).json();return s.success?(this.token=s.token,this.sessionKey=s.sessionKey?lt(s.sessionKey):null,this.role=s.role||"pro",this.authGeneration+=1,this.isAuthenticated=!0,this.loginStep="authenticated",this.tempToken=null,this.emailHint=null,localStorage.setItem("authToken",s.token),this.startSessionRefresh(),!0):(this.error=s.error||"Verification failed",!1)}catch(t){return this.error=t.message||"Network error",!1}finally{this.loading=!1}},async register(e,t,s,n){this.loading=!0,this.error=null;try{let r=await(await fetch("/api/auth/register",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e,password:t,email:s||void 0,invitationCode:n})})).json();return r.success?!0:(this.error=r.error||"Registration failed",!1)}catch(i){return this.error=i.message||"Network error",!1}finally{this.loading=!1}},showRegister(){this.loginStep="register",this.error=null},loginWithSso(e){window.location.href=`/api/auth/sso/${encodeURIComponent(e)}/start`},async loginWithAlipayMobile({intent:e="login"}={}){if(!await this.startSsoQr("alipay",{intent:e}))return!1;let s=this.qrPanel?.authorizeUrl;if(!s)return!1;let n=`alipays://platformapi/startapp?appId=20000067&url=${encodeURIComponent(s)}`;return this.qrPanel={...this.qrPanel,mobileDeepLink:!0},window.location.href=n,!0},async startSsoQr(e,{intent:t="login"}={}){this.cancelSsoQr(),this.error=null;try{let s=new URLSearchParams;if(t==="bind"){if(!this.isAuthenticated)return this.error="You must be logged in to bind an identity",!1;s.set("intent","bind")}let n=s.toString(),i=`/api/auth/sso/${encodeURIComponent(e)}/start-qr${n?"?"+n:""}`,r=await fetch(i),o=await r.json();return!r.ok||!o.success?(this.error=o.error||"Failed to start QR login",!1):(this.qrPanel={provider:e,intent:t,authorizeUrl:o.authorizeUrl,state:o.state,status:"pending",error:null},this._startQrPoll(),!0)}catch(s){return this.error=s.message||"Network error",!1}},_startQrPoll(){this._stopQrPollTimer();let e=async()=>{if(!this.qrPanel)return;let t=this.qrPanel.state;try{let n=await(await fetch(`/api/auth/sso/poll/${encodeURIComponent(t)}`)).json();if(!this.qrPanel||this.qrPanel.state!==t||n.status==="pending")return;if(n.status==="login"){this.token=n.token,this.sessionKey=n.sessionKey?lt(n.sessionKey):null,this.role=n.role||"pro",this.authGeneration+=1,this.isAuthenticated=!0,this.loginStep="authenticated",localStorage.setItem("authToken",n.token),this.startSessionRefresh(),this.cancelSsoQr();return}if(n.status==="bind"){this.qrPanel={...this.qrPanel,status:"bound"},this._stopQrPollTimer();return}this.qrPanel={...this.qrPanel,status:"error",error:n.error||"SSO failed"},this._stopQrPollTimer()}catch{}};this._qrPollTick=e,this._qrPollTimer=setInterval(e,2e3),typeof document<"u"&&!this._qrVisHandler&&(this._qrVisHandler=()=>{typeof document<"u"&&document.visibilityState&&document.visibilityState!=="visible"||!this.qrPanel||!this._qrPollTick||(this._qrPollTick(),this._qrPollTimer&&clearInterval(this._qrPollTimer),this._qrPollTimer=setInterval(this._qrPollTick,2e3))},document.addEventListener("visibilitychange",this._qrVisHandler),typeof window<"u"&&window.addEventListener("pageshow",this._qrVisHandler))},_stopQrPollTimer(){this._qrPollTimer&&(clearInterval(this._qrPollTimer),this._qrPollTimer=null),this._qrVisHandler&&(typeof document<"u"&&document.removeEventListener("visibilitychange",this._qrVisHandler),typeof window<"u"&&window.removeEventListener("pageshow",this._qrVisHandler),this._qrVisHandler=null),this._qrPollTick=null},cancelSsoQr(){this._stopQrPollTimer(),this.qrPanel=null},bindSso(e){if(!this.isAuthenticated){this.error="You must be logged in to bind an identity";return}let t=new URLSearchParams({intent:"bind"});window.location.href=`/api/auth/sso/${encodeURIComponent(e)}/start?${t.toString()}`},consumeSsoRedirect(){let e=window.location.hash||"",t=e.indexOf("?");if(!e.startsWith("#/sso-complete")||t<0)return!1;let s=new URLSearchParams(e.slice(t+1)),n=s.get("token"),i=s.get("sessionKey"),r=s.get("role");if(!n)return!1;this.token=n,this.sessionKey=i?lt(i):null,this.role=r||"pro",this.authGeneration+=1,this.isAuthenticated=!0,this.loginStep="authenticated",localStorage.setItem("authToken",n),this.startSessionRefresh();try{history.replaceState(null,"",window.location.pathname+window.location.search)}catch{}return!0},async loadIdentities(){if(this.isAuthenticated){this.identitiesLoading=!0,this.identitiesError=null;try{let e=await fetch("/api/auth/identities"),t=await e.json();if(!e.ok||!t.success){this.identitiesError=t.error||"Failed to load identities";return}this.linkedIdentities=t.identities||[],this.hasPassword=!!t.hasPassword}catch(e){this.identitiesError=e.message||"Network error"}finally{this.identitiesLoading=!1}}},async unbindIdentity(e){if(!this.isAuthenticated)return!1;this.identitiesError=null;try{let t=await fetch(`/api/auth/identities/${encodeURIComponent(e)}`,{method:"DELETE"}),s=await t.json();return!t.ok||!s.success?(this.identitiesError=s.error||"Failed to unbind",!1):(this.linkedIdentities=this.linkedIdentities.filter(n=>n.provider!==e),!0)}catch(t){return this.identitiesError=t.message||"Network error",!1}},async refreshSession(){let e=this.token,t=this.authGeneration,s=this.isAuthenticated;try{let n=await fetch("/api/user/profile",{headers:e?{Authorization:`Bearer ${e}`}:{}});if(this.handleAuthResponse(n,e,t,s)||!n.ok)return!1;let i=await n.json().catch(()=>({})),r=n.headers?.get?.("X-New-Token"),o=localStorage.getItem("authToken");return r&&this.token===e&&(!o||o===e)&&(this.token=r,localStorage.setItem("authToken",r)),i?.role&&(this.role=i.role),!0}catch{return!1}},startSessionRefresh(){if(this.stopSessionRefresh(),!this.isAuthenticated||this.skipAuth)return;let e=()=>{typeof document<"u"&&document.visibilityState&&document.visibilityState!=="visible"||this.refreshSession()};this._sessionRefreshTimer=setInterval(e,nf),this._sessionRefreshVisibilityHandler=e,typeof document<"u"&&document.addEventListener("visibilitychange",e),typeof window<"u"&&window.addEventListener("pageshow",e)},stopSessionRefresh(){this._sessionRefreshTimer&&(clearInterval(this._sessionRefreshTimer),this._sessionRefreshTimer=null),this._sessionRefreshVisibilityHandler&&(typeof document<"u"&&document.removeEventListener("visibilitychange",this._sessionRefreshVisibilityHandler),typeof window<"u"&&window.removeEventListener("pageshow",this._sessionRefreshVisibilityHandler),this._sessionRefreshVisibilityHandler=null)},async logout(){try{let e={"Content-Type":"application/json"};this.token&&(e.Authorization=`Bearer ${this.token}`),await fetch("/api/auth/logout",{method:"POST",headers:e})}catch{}this.clearStoredSession()},clearStoredSession(e=null){this.reset(),localStorage.removeItem("authToken"),e&&(this.error=e)},getActiveToken(){if(this.token)return this.token;let e=localStorage.getItem("authToken");return e&&(this.token=e),this.token},handleAuthResponse(e,t=null,s=this.authGeneration,n=this.isAuthenticated,i=void 0){if(!e||e.status!==401||!n||s!==this.authGeneration)return!1;let r=this.token||localStorage.getItem("authToken")||null;return t!==r?!1:(this.handleAuthFailure(i,t,s),!0)},handleAuthFailure(e="Session expired. Please log in again.",t=null,s=this.authGeneration){if(s!==this.authGeneration)return!1;let n=this.token||localStorage.getItem("authToken")||null;return t!==n||this.clearStoredSession(e),!1},async restoreSession(){let e=localStorage.getItem("authToken"),t=this.authGeneration,s=this.isAuthenticated||!!e;try{let n=await fetch("/api/user/profile",{headers:e?{Authorization:`Bearer ${e}`}:{}});if(this.handleAuthResponse(n,e,t,s))return!1;if(!n.ok)return this.error="Failed to restore session",!1;let i=await n.json();if(t!==this.authGeneration)return this.isAuthenticated;let r=n.headers?.get?.("X-New-Token"),o=this.getActiveToken(),a=r&&(!o||o===e)?r:o||e;return this.token=a,a&&a!==e&&localStorage.setItem("authToken",a),this.role=i?.role||"pro",this.authGeneration+=1,this.isAuthenticated=!0,this.loginStep="authenticated",this.startSessionRefresh(),!0}catch(n){return this.error=n.message||"Failed to restore session",!1}},setSessionKey(e){e&&(this.sessionKey=lt(e))},backToCredentials(){this.loginStep="credentials",this.tempToken=null,this.emailHint=null,this.setupToken=null,this.totpSecret=null,this.qrCode=null,this.error=null},async requestPasswordReset(e){this.error=null;try{let s=await(await fetch("/api/auth/password-reset/request",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e})})).json();return s.success?s.resetToken||null:(this.error=s.error||"Failed to request password reset",null)}catch(t){return this.error=t.message||"Network error",null}},async verifyPasswordReset(e,t,s){this.error=null;try{let i=await(await fetch("/api/auth/password-reset/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({resetToken:e,code:t,newPassword:s})})).json();return i.success?!0:(this.error=i.error||"Failed to reset password",!1)}catch(n){return this.error=n.message||"Network error",!1}},async deleteAccount({currentPassword:e,confirm:t}={}){if(!this.isAuthenticated)return{success:!1,error:"Not authenticated"};try{let s=await fetch("/api/user/me",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({currentPassword:e,confirm:t})}),n=await s.json();return!s.ok||!n.success?{success:!1,error:n.error||"Failed to delete account"}:(this.clearStoredSession(),{success:!0})}catch(s){return{success:!1,error:s.message||"Network error"}}},reset(){this.authGeneration+=1,this.stopSessionRefresh(),this.isAuthenticated=!1,this.token=null,this.sessionKey=null,this.role=null,this.loginStep="credentials",this.tempToken=null,this.emailHint=null,this.setupToken=null,this.totpSecret=null,this.qrCode=null,this.error=null,this.loading=!1}}})});function xe(e,t){let s=yt?.value||"zh-CN",i=(ls[s]||ls["zh-CN"]||{})[e];if(i===void 0&&s!=="zh-CN"&&(i=(ls["zh-CN"]||{})[e]),i===void 0)return e;if(t)for(let[r,o]of Object.entries(t))i=i.replace(new RegExp(`\\{${r}\\}`,"g"),o);return i}function rf(){return yt?.value||"zh-CN"}function Os(e){ls[e]&&(yt&&(yt.value=e),localStorage.setItem("locale",e),document.documentElement.setAttribute("lang",e))}function of(){let e=localStorage.getItem("locale");return e&&ls[e]?e:(navigator.language||navigator.userLanguage||"").startsWith("en")?"en":"zh-CN"}function jo(e,t){return ls=t,yt=Vue.ref(of()),document.documentElement.setAttribute("lang",yt.value),e.config.globalProperties.$t=xe,e.config.globalProperties.$locale=yt,e.provide("t",xe),e.provide("locale",yt),{t:xe,setLocale:Os,getLocale:rf,locale:yt}}var yt,ls,bt=O(()=>{yt=null,ls={}});function cs(e,t,s=""){Hs&&(clearTimeout(Hs),Hs=null),e.sessionLoading=t,e.sessionLoadingText=s,t&&(Hs=setTimeout(()=>{e.sessionLoading&&(e.sessionLoading=!1,e.sessionLoadingText=""),Hs=null},af))}function pt(e){cs(e,!1)}function Ko(e){if(e.currentConversation){e.pendingRecovery=null;return}let t=e.lastUsedSession,s=e.lastUsedAgent;if(t&&t.sessionId&&s){let n=e.agents.find(i=>i.id===s&&i.online);n&&(e.pendingRecovery={agentId:s,agentName:n.name,sessionId:t.sessionId,workDir:t.workDir},e.recoveryDismissed=!1)}}function Go(e){if(!e.pendingRecovery)return;let{agentId:t,sessionId:s,workDir:n}=e.pendingRecovery;e.selectAgent(t),setTimeout(()=>{e.resumeConversation(s,n,t),e.pendingRecovery=null,e.recoveryDismissed=!1},500)}function Yo(e){e.recoveryDismissed=!0,e.pendingRecovery=null}function Qo(e,t){let s=e.conversations.find(n=>n.id===t);s&&(e.activeConversations=[t],e.currentWorkDir=s.workDir,e.messagesMap[t]?.length>0||(s.claudeSessionId?(e.messagesMap[t]=[],cs(e,!0,xe("chat.session.loadingHistory")),e.sendWsMessage({type:"resume_conversation",agentId:s.agentId||e.currentAgent,claudeSessionId:s.claudeSessionId,workDir:s.workDir,conversationId:t})):(e.messagesMap[t]=[],e.sendWsMessage({type:"sync_messages",conversationId:t,turns:5}))),e.sendWsMessage({type:"select_conversation",conversationId:t}))}function Xo(e){if(e.panels.length>0)return;let t=localStorage.getItem("panels");if(!t)return;let s;try{s=JSON.parse(t)}catch{localStorage.removeItem("panels");return}if(!Array.isArray(s)||s.length<2){localStorage.removeItem("panels");return}let n=new Set(e.conversations.map(r=>r.id)),i=s.filter(r=>r&&typeof r.id=="string").map(r=>({id:r.id,conversationId:r.conversationId&&n.has(r.conversationId)?r.conversationId:null,activeRightPanel:r.activeRightPanel||null}));if(i.length<2){localStorage.removeItem("panels");return}e.panels=i,e.activePanelId=i[0]?.id||null;for(let r of i)r.conversationId&&(e.activeConversations.includes(r.conversationId)||e.activeConversations.push(r.conversationId),e.messagesMap[r.conversationId]||(e.messagesMap[r.conversationId]=[]),e.messagesMap[r.conversationId].length||e.sendWsMessage({type:"sync_messages",conversationId:r.conversationId,turns:5}))}function ds(e){if(e.currentAgent){if(localStorage.setItem("lastUsedAgent",e.currentAgent),localStorage.setItem("lastViewedConversation",e.currentConversation||""),e.lastViewedConversation=e.currentConversation,e.currentConversation){let t=e.conversations.find(s=>s.id===e.currentConversation);t?.claudeSessionId&&t?.workDir&&(localStorage.setItem("lastUsedSession",JSON.stringify({sessionId:t.claudeSessionId,workDir:t.workDir,agentId:e.currentAgent})),e.lastUsedSession={sessionId:t.claudeSessionId,workDir:t.workDir,agentId:e.currentAgent})}e.lastUsedAgent=e.currentAgent,e.panels.length>0?localStorage.setItem("panels",JSON.stringify(e.panels)):localStorage.removeItem("panels")}}function Zo(e){return e.lastUsedSession}function Jo(e){localStorage.removeItem("lastUsedAgent"),localStorage.removeItem("lastUsedSession"),localStorage.removeItem("lastViewedConversation"),localStorage.removeItem("panels"),localStorage.removeItem("splitPanesSaved"),e.lastUsedAgent=null,e.lastUsedSession=null,e.lastViewedConversation=null}function ea(e,t,s){if(!e.currentAgent){e.historySessionsLoading=!1;return}if(!t){e.historySessions=[],e.historySessionsLoading=!1;return}let n=Date.now().toString();e._historySessionsRequestId=n,e.historySessionsLoading=!0,e.historySessions=[],e.sendWsMessage({type:"list_history_sessions",workDir:t,provider:s||"claude-code",requestId:n})}function ta(e,t){if(!e.currentAgent)return e.foldersLoading=!1,Promise.resolve();e.foldersLoading=!0,e.folders=[];let s=Date.now().toString();return e._foldersRequestId=s,new Promise(n=>{e._foldersResolve&&e._foldersResolve(),e._foldersResolve=n,e.sendWsMessage({type:"list_folders",provider:t||"claude-code",requestId:s}),setTimeout(()=>{e._foldersResolve===n&&(e._foldersResolve(),e._foldersResolve=null,e.foldersLoading=!1)},1e4)})}function sa(e,t,s){if(!t)return e.foldersLoading=!1,Promise.resolve();e.foldersLoading=!0,e.folders=[];let n=Date.now().toString();return e._foldersRequestId=n,new Promise(i=>{e._foldersResolve&&e._foldersResolve(),e._foldersResolve=i,e.sendWsMessage({type:"list_folders",agentId:t,provider:s||"claude-code",requestId:n}),setTimeout(()=>{e._foldersResolve===i&&(e._foldersResolve(),e._foldersResolve=null,e.foldersLoading=!1)},1e4)})}function na(e,t,s){if(!t)return Promise.resolve([]);let n=`models-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return e._modelsRequestId=n,e.providerModelsLoading=!0,new Promise(i=>{e._modelsResolve&&e._modelsResolve([]),e._modelsTimeout&&clearTimeout(e._modelsTimeout),e._modelsResolve=i,e.sendWsMessage({type:"list_models",agentId:t,provider:s||"claude-code",requestId:n}),e._modelsTimeout=setTimeout(()=>{e._modelsResolve===i&&(e._modelsResolve([]),e._modelsResolve=null,e.providerModelsLoading=!1),e._modelsTimeout=null},1e4)})}function ia(e,t,s,n){if(!t){e.historySessionsLoading=!1;return}if(!s){e.historySessions=[],e.historySessionsLoading=!1;return}let i=Date.now().toString();e._historySessionsRequestId=i,e.historySessionsLoading=!0,e.historySessions=[],e.sendWsMessage({type:"list_history_sessions",agentId:t,workDir:s,provider:n||"claude-code",requestId:i})}async function ra(e,t=20){if(Ae().isAuthenticated){e.globalSessionsLoading=!0;try{let n=await fetch(`/api/sessions?limit=${t}`);if(n.ok){let i=await n.json();e.globalSessions=i.sessions||[]}}catch{}finally{e.globalSessionsLoading=!1}}}async function oa(e,t){if(!Ae().isAuthenticated)return!1;try{if((await fetch(`/api/sessions/${t}`,{method:"DELETE"})).ok)return e.globalSessions=e.globalSessions.filter(i=>i.id!==t),!0}catch{}return!1}function Xi(e,t){return t.agentId?e.agents.find(s=>s.id===t.agentId):t.agentName?e.agents.find(s=>s.name===t.agentName):null}function aa(e,t){let s=Xi(e,t);return s&&s.online}var af,Hs,Ot=O(()=>{ct();bt();af=3e4,Hs=null});function la(e){return e?.code===1008&&String(e.reason||"").toLowerCase().includes("authentication")}function ca(e){let t=Ns;Ns=[];for(let{resolve:s,reject:n,timer:i}of t)clearTimeout(i),e?s():n(new Error("WebSocket reconnect failed"))}function da(e,t){if(!e.ws||e.ws.readyState!==WebSocket.OPEN)return!1;if(e.currentView==="yeaft"&&cf.has(t.type)){let s=t.conversationId;if(!s||typeof s=="string"&&s.startsWith("yeaft-")||s===e.yeaftConversationId)return!1}try{if(e.serverEncryptionRequired&&e.sessionKey){let s=Wo(t,e.sessionKey);e.ws.send(JSON.stringify(s))}else e.ws.send(JSON.stringify(t));return!0}catch{return!1}}function Bs(e,t=1e4){return e.ws&&e.ws.readyState===WebSocket.OPEN?Promise.resolve():new Promise((s,n)=>{let i=setTimeout(()=>{Ns=Ns.filter(r=>r.resolve!==s),n(new Error("WebSocket reconnect timeout"))},t);Ns.push({resolve:s,reject:n,timer:i}),(!e.ws||e.ws.readyState!==WebSocket.CONNECTING)&&(e.reconnectAttempts=0,e.connect())})}function ua(e,t){try{let s=JSON.parse(t);return e.sessionKey&&zo(s)?Uo(s,e.sessionKey):s}catch{return null}}function pa(e){let t=Ae(),s=location.protocol==="https:"?"wss:":"ws:";e.reconnectTimer&&(clearTimeout(e.reconnectTimer),e.reconnectTimer=null);let n=t.getActiveToken?.()||t.token||null,i=t.authGeneration;if(e.ws&&e.ws.readyState===WebSocket.CONNECTING&&e._wsAuthToken===n&&e._wsAuthGeneration===i)return;e.ws&&(e.ws.onopen=null,e.ws.onmessage=null,e.ws.onclose=null,e.ws.close(),e.ws=null),e.connectionState=e.reconnectAttempts>0?"reconnecting":"connecting",e._wsAuthToken=n,e._wsAuthGeneration=i;let r=`${s}//${location.host}?type=web`;n&&(r+=`&token=${encodeURIComponent(n)}`);let o=new WebSocket(r);e.ws=o,o.onopen=()=>{if(o===e.ws){e.connectionState="connected",e.reconnectAttempts=0,e.startHeartbeat();try{o.send(JSON.stringify({type:"client_hello",plaintextOk:!0}))}catch{}ca(!0)}},o.onmessage=a=>{if(o!==e.ws)return;let l=e.parseWsMessage(a.data);l&&(l.type,e.handleMessage({...l,_wsAuthToken:n,_wsAuthGeneration:i}))},o.onclose=a=>{if(o!==e.ws){la(a)&&t.handleAuthFailure?.(void 0,n,i);return}e.authenticated=!1;let l=e.connectionState==="updating";if(e.connectionState=l?"updating":"disconnected",e.stopHeartbeat(),pt(e),la(a)){t.handleAuthFailure?.(void 0,n,i),e.reconnectAttempts=0,ca(!1);return}if(e._yeaftReconnectCatchUpPending=!0,l){e.reconnectAttempts=0,e.reconnectTimer=setTimeout(()=>{e.connect()},2e3);return}e.scheduleReconnect()},e.ws.onerror=a=>{}}function fa(e){if(e.reconnectAttempts>=e.maxReconnectAttempts){e.connectionState="disconnected";return}let t=Math.min(1e3*Math.pow(2,e.reconnectAttempts),3e4);e.reconnectAttempts++,e.connectionState="reconnecting",e.reconnectTimer=setTimeout(()=>{e.connect()},t)}function ga(e){e.reconnectAttempts=0,e.connect()}function ma(e){e.stopHeartbeat(),e._lastPongAt=Date.now(),e.heartbeatTimer=setInterval(()=>{if(e.ws&&e.ws.readyState===WebSocket.OPEN){if(Date.now()-e._lastPongAt>45e3){e.ws.close(4e3,"Heartbeat timeout");return}try{e.sendWsMessage({type:"ping"})}catch{}}},25e3)}function ha(e){e.heartbeatTimer&&(clearInterval(e.heartbeatTimer),e.heartbeatTimer=null)}function va(e){e._visibilityHandlerInstalled||(e._visibilityHandlerInstalled=!0,document.addEventListener("visibilitychange",()=>{if(document.visibilityState==="visible")if(!e.ws||e.ws.readyState!==WebSocket.OPEN)e.reconnectAttempts=0,e.connect();else try{e.sendWsMessage({type:"ping"});let t=e._lastPongAt;setTimeout(()=>{e._lastPongAt===t&&e.ws&&e.ws.close(4001,"Visibility resume timeout")},3e3)}catch{e.reconnectAttempts=0,e.connect()}}))}var Ns,cf,Zi=O(()=>{ct();Cn();Ot();Ns=[];cf=new Set(["sync_messages","refresh_conversation","select_conversation","cancel_execution","update_conversation_settings","ask_user_answer"])});function pf(e){return e?.type==="tool-use"}function Ji(e){return e?.type==="tool-summary"}function er(e){return pf(e)&&!uf.has(e.toolName)}function wa(e,t,s,n=s){let i=t==="history"&&(n?.dbMessageId||n?.id)||null;return{...i?{id:`tool_summary_${t}_${i}`,dbMessageId:n?.dbMessageId||null}:{},type:"tool-summary",count:e,omittedCount:e,source:t,isHistory:t!=="live",timestamp:s?.timestamp||s?.startTime||n?.timestamp||n?.startTime||null,sessionId:s?.sessionId??s?.groupId??null,turnId:s?.turnId||null,vpId:s?.vpId||null,speakerVpId:s?.speakerVpId||null}}function ff(e,t){return!Ji(e)||!Ji(t)?!1:(e.turnId||null)===(t.turnId||null)&&(e.sessionId||null)===(t.sessionId||null)&&(e.speakerVpId||e.vpId||null)===(t.speakerVpId||t.vpId||null)&&(e.source||null)===(t.source||null)}function gf(e,t){let s=(Number(e.count)||0)+(Number(t.count)||0);return e.count=s,e.omittedCount=s,!e.timestamp&&t.timestamp&&(e.timestamp=t.timestamp),Number(t.dbMessageId||0)>Number(e.dbMessageId||0)&&(e.dbMessageId=t.dbMessageId,t.id&&(e.id=t.id)),e}function ya(e){return[e?.sessionId||"",e?.turnId||"",e?.speakerVpId||e?.vpId||""].join("")}function ba(e,t,s,n,i=n){if(!t)return;let r=wa(t,s,n,i),o=e[e.length-1];ff(o,r)?gf(o,r):e.push(r)}function tr(e=[]){let t=[],s=0,n=null,i=null;for(let r of e){if(er(r)&&r.isHistory){s+=1,n||(n=r),i=r;continue}ba(t,s,"history",n,i),s=0,n=null,i=null,t.push(r)}return ba(t,s,"history",n,i),t}function ka(e=[],t={}){let s=Number.isFinite(t.maxDetailed)?Math.max(1,t.maxDetailed):100;if(!Array.isArray(e)||e.length<=s)return e;let n=e.length;for(let f=e.length-1;f>=0;f-=1){let g=e[f];if(g?.type==="user"||g?.type==="system"||g?.type==="error")break;n=f}let i=e.slice(n),r=new Map;for(let f of i){if(!er(f)||f.isHistory)continue;let g=ya(f);r.set(g,(r.get(g)||0)+1)}let o=new Map;for(let[f,g]of r)g>s&&o.set(f,g-s);if(o.size===0)return e;let a=new Map,l=new Map,c=new Set,d=[],u=(f,g,v)=>{a.set(f,(a.get(f)||0)+g),!l.has(f)&&v&&l.set(f,v)},p=(f,g)=>{if(c.has(f))return;let v=a.get(f)||0;v<=0||(d.push(wa(v,"live",l.get(f)||g)),c.add(f))};for(let f of i){let g=ya(f);if(Ji(f)&&f.source==="live"&&o.has(g)){u(g,Number(f.count)||0,f);continue}if(er(f)&&!f.isHistory&&o.has(g)){let v=o.get(g)||0;if(v>0){o.set(g,v-1),u(g,1,f);continue}}p(g,f),d.push(f)}for(let f of a.keys())p(f,l.get(f));return e.splice(n,e.length-n,...d),e}var uf,sr=O(()=>{uf=new Set(["TodoWrite","AskUserQuestion"])});function nr(e,t){return t?t===e.yeaftConversationId?!0:Object.values(e.yeaftConversationIdsByAgent||{}).includes(t):!1}function qs(e,t,s){s&&(s.type!=="assistant"&&s.type!=="tool-use"||nr(e,t)&&(!s.vpId&&e._currentYeaftVpId&&(s.vpId=e._currentYeaftVpId),!s.turnId&&e._currentYeaftTurnId&&(s.turnId=e._currentYeaftTurnId),!s.speakerVpId&&s.vpId&&(s.speakerVpId=s.vpId)))}function hf(e){let t=[e?.timestamp,e?.createdAt,e?.ts,e?.time,e?.created_at];for(let s of t){if(typeof s=="number"&&Number.isFinite(s)&&s>0)return s;if(typeof s=="string"&&s.trim()){let n=Date.parse(s);if(Number.isFinite(n))return n;let i=Number(s);if(Number.isFinite(i)&&i>0)return i}}return Date.now()}function In(e){let t=e?.messageId??e?.dbMessageId??e?.id;return t==null||t===""?null:String(t)}function ir(e,t){if(!e||!t)return e;let s=e.type==="user"&&typeof e.id=="string"&&e.id===e.clientMessageId;for(let[n,i]of Object.entries(t))if(i!=null){if(n==="isStreaming"){e.isStreaming&&i===!1&&(e.isStreaming=!1);continue}if(n==="id"||n==="messageId"){if(s&&t.clientMessageId===e.clientMessageId&&t.messageId&&t.messageId!==e.clientMessageId)continue;(e[n]===void 0||e[n]===null||e[n]==="")&&(e[n]=i);continue}if(!(n==="turnId"&&s&&e.turnId===e.clientMessageId)){if(n==="content"&&typeof i=="string"){e.content||(e.content=i);continue}if(n==="attachments"&&Array.isArray(i)){(!Array.isArray(e.attachments)||e.attachments.length===0)&&(e.attachments=i);continue}(e[n]===void 0||e[n]===null||e[n]==="")&&(e[n]=i)}}return e}function rr(e=[],t=[]){let s=[],n=new Map,i=new Map;for(let r of[...e,...t]){if(!r)continue;let o=In(r),a=r.type==="user"&&r.clientMessageId?String(r.clientMessageId):null;if(o&&n.has(o)){ir(n.get(o),r);continue}if(a&&i.has(a)){let l=i.get(a);ir(l,r),o&&!n.has(o)&&n.set(o,l);continue}s.push(r),o&&n.set(o,r),a&&i.set(a,r)}return s}function Sa(e,t,s){return!e||e!==t?!1:!s?.loaded&&!s?.loading}function Ca(e,t){return!!t&&!!e?.loaded&&!e?.loading&&Number.isFinite(e?.latestSeq)}function or({sessionState:e,hasCachedSessionRows:t,force:s=!1}={}){return e?.loading?!1:s?!e?.loaded:e?.loaded?!1:!t}function vf(e,t,s,n){let i=s?.id?String(s.id):null;if(!i)return!1;let o=(e.messagesMap[t]||[]).find(a=>a?.type==="assistant"&&In(a)===i);return o?(o.id||(o.id=i),o.messageId||(o.messageId=i),s.ts&&!o.ts&&(o.ts=s.ts),s.timestamp&&!o.timestamp&&(o.timestamp=s.timestamp),s.sessionId&&!o.sessionId&&(o.sessionId=s.sessionId),s.vpId&&!o.vpId&&(o.vpId=s.vpId),s.turnId&&!o.turnId&&(o.turnId=s.turnId),s.threadId&&!o.threadId&&(o.threadId=s.threadId),o.content?typeof o.content=="string"&&(n.startsWith(o.content)?o.content=n:o.content.endsWith(n)||(o.content+=n)):o.content=n,qs(e,t,o),!0):!1}function An(e,t,s){if(!t)return;let n={...s,id:s.dbMessageId||s.id||Date.now().toString()+Math.random().toString(36).substr(2,9),timestamp:hf(s)};nr(e,t)&&!n.sessionId&&(n.sessionId=e._currentYeaftSessionId||e.yeaftActiveSessionFilter||mf),nr(e,t)&&(!n.vpId&&e._currentYeaftVpId&&(n.vpId=e._currentYeaftVpId),!n.turnId&&e._currentYeaftTurnId&&(n.turnId=e._currentYeaftTurnId),qs(e,t,n)),e.messagesMap[t]||(e.messagesMap[t]=[]);let i=In(s);if(i){let r=e.messagesMap[t].find(o=>In(o)===i);if(r)return ir(r,n),t===e.yeaftConversationId&&e.messagesMap[t].sort((o,a)=>o.timestamp-a.timestamp),r}return e.messagesMap[t].push(n),ka(e.messagesMap[t]),t===e.yeaftConversationId&&e.messagesMap[t].sort((r,o)=>r.timestamp-o.timestamp),n}function Ia(e,t,s,n={}){if(!t||!s)return;e.messagesMap[t]||(e.messagesMap[t]=[]);let i=e.messagesMap[t];if(vf(e,t,n,s))return;let r=e._currentYeaftTurnId;if(r){for(let a=i.length-1;a>=0;a--)if(i[a].turnId===r&&i[a].type==="assistant"&&i[a].isStreaming){if(qs(e,t,i[a]),n.id&&!i[a].id&&(i[a].id=n.id),n.id&&!i[a].messageId&&(i[a].messageId=n.id),i[a].content.endsWith(s))return;i[a].content+=s;return}An(e,t,{...n.id?{id:n.id,messageId:n.id}:{},...n.ts?{ts:n.ts}:{},...n.timestamp?{timestamp:n.timestamp}:{},...n.sessionId?{sessionId:n.sessionId}:{},...n.vpId?{vpId:n.vpId}:{},...n.turnId?{turnId:n.turnId}:{},...n.threadId?{threadId:n.threadId}:{},type:"assistant",content:s,isStreaming:!0,status:"pending",turnStartAt:n.timestamp||Date.now()});return}let o=i[i.length-1];if(o&&o.type==="assistant"&&o.isStreaming){if(qs(e,t,o),n.id&&!o.id&&(o.id=n.id),n.id&&!o.messageId&&(o.messageId=n.id),o.content.endsWith(s))return;o.content+=s}else An(e,t,{...n.id?{id:n.id,messageId:n.id}:{},...n.ts?{ts:n.ts}:{},...n.timestamp?{timestamp:n.timestamp}:{},...n.sessionId?{sessionId:n.sessionId}:{},...n.vpId?{vpId:n.vpId}:{},...n.turnId?{turnId:n.turnId}:{},...n.threadId?{threadId:n.threadId}:{},type:"assistant",content:s,isStreaming:!0,status:"pending",turnStartAt:n.timestamp||Date.now()})}function Aa(e,t){if(!t)return;let s=e.messagesMap[t];if(!s||s.length===0)return;let n=e._currentYeaftTurnId||null;for(let i=s.length-1;i>=0;i--){let r=s[i];if(n&&r.turnId&&r.turnId!==n){if(r.type==="user")break;continue}if(r.isStreaming&&(r.isStreaming=!1,r.status==="pending"&&(r.status="completed",r.turnEndAt=Date.now())),qs(e,t,r),r.type==="user")break}}function xa(e,t){if(!t||e.processingConversations&&e.processingConversations[t]||e.activeVpTurns&&Object.keys(e.activeVpTurns).length>0)return;let s=e.messagesMap&&e.messagesMap[t];if(!(!s||s.length===0))for(let n of s)n&&n.isStreaming&&(n.isStreaming=!1)}function Ta(e,t){let s=e.currentConversation;if(!s)return;e.messagesMap[s]||(e.messagesMap[s]=[]);let n=e.messagesMap[s],i=null;for(let r of t)if(r.type==="user"){let o=r.message?.content;if(o){let a=typeof o=="string"?o:Array.isArray(o)?o.map(l=>l.text||"").join(""):"";a&&(i=a,e.addMessage({type:"user",content:a,isHistory:!0}))}}else if(r.type==="assistant"){let o=r.message?.content;if(o&&Array.isArray(o)){for(let a of o)if(a.type==="text"&&a.text)e.addMessage({type:"assistant",content:a.text,isHistory:!0});else if(a.type==="tool_use")e.addMessage({type:"tool-use",toolName:a.name,toolInput:a.input,isHistory:!0});else if(a.type==="tool_result"){for(let l=n.length-1;l>=0;l--)if(n[l].type==="tool-use"&&!n[l].hasResult){n[l].hasResult=!0,n[l].toolResult=a.content;break}}}}if(i&&s&&!e.conversationTitles[s]){let r=i.trim().substring(0,100);e.conversationTitles[s]=r}}function Ws(e){if(!Array.isArray(e))return null;let t=null;for(let s of e)typeof s?.dbMessageId=="number"&&s.dbMessageId>0&&(t===null||s.dbMessageId>t)&&(t=s.dbMessageId);return t}function Ma(e){return{id:e.id,dbMessageId:e.id,timestamp:e.created_at}}function Pa(e){return e?e.message_type==="tool_use"&&!yf.has(e.tool_name)?{...Ma(e),type:"tool-use",toolName:e.tool_name||"unknown",hasResult:!0,isHistory:!0,startTime:e.created_at||0}:ar(e):null}function ar(e){if(!e)return null;let t=Ma(e);if(e.message_type==="tool_use"){let n={...t,type:"tool-use",toolName:e.tool_name||"unknown",toolInput:(()=>{try{return JSON.parse(e.tool_input||e.content||"{}")}catch{return{}}})(),hasResult:!0,isHistory:!0,startTime:e.created_at||0};if(e.metadata)try{let i=JSON.parse(e.metadata);i.askRequestId&&(n.askRequestId=i.askRequestId,n.askQuestions=i.askQuestions,n.askAnswered=!!i.askAnswered,n.selectedAnswers=i.selectedAnswers||null,i.askAnswered||(n.isHistory=!1))}catch{}return n}let s=n=>{if(!n)return"";if(typeof n!="string")return String(n);if(n.startsWith("["))try{let i=JSON.parse(n);if(Array.isArray(i))return i.filter(r=>r.type==="text"&&r.text).map(r=>r.text).join("")}catch{}return n};if(e.role==="user"){let n=null;if(e.metadata)try{let i=JSON.parse(e.metadata);i&&typeof i.clientMessageId=="string"&&(n=i.clientMessageId)}catch{}return{...t,type:"user",content:typeof e.content=="string"?e.content:String(e.content||""),...n?{clientMessageId:n}:{}}}else if(e.role==="assistant"){let n=s(e.content),i=(()=>{if(!e.content||typeof e.content!="string"||!e.content.startsWith("["))return[];try{let r=JSON.parse(e.content);return Array.isArray(r)?r.filter(o=>o.type==="tool_use"&&o.name):[]}catch{return[]}})();if(!n&&i.length===0)return null;if(i.length>0){let r=[];n&&r.push({...t,type:"assistant",content:n});for(let o=0;o<i.length;o++){let a=i[o];r.push({id:e.id+"_tool_"+o,dbMessageId:e.id,timestamp:e.created_at,type:"tool-use",toolName:a.name,toolInput:a.input||{},hasResult:!0,isHistory:!0,startTime:e.created_at||0})}return r}return{...t,type:"assistant",content:n}}else if(e.role==="tool"||e.message_type==="tool_result")return{...t,type:"tool_result",tool:e.tool_name||"unknown",content:typeof e.content=="string"?e.content:String(e.content||"")};return null}var mf,yf,xn=O(()=>{sr();mf="grp_default";yf=new Set(["TodoWrite","AskUserQuestion"])});function Ht(e,t){return e._closedAt?.[t]?Date.now()-e._closedAt[t]<3e4:!1}function us(e,t){ke(e,t),e._processingWatchdogs||(e._processingWatchdogs={});let s=()=>{if(!e.processingConversations[t])return;let i=e.conversations.find(o=>o.id===t);e.sendWsMessage({type:"ping_session",conversationId:t,agentId:i?.agentId});let r=setTimeout(()=>{e.processingConversations[t]&&(e.sessionHealth||(e.sessionHealth={}),e.sessionHealth[t]={status:"agent-offline"})},1e4);e._pongTimeouts||(e._pongTimeouts={}),e._pongTimeouts[t]=r},n=setTimeout(()=>{e.processingConversations[t]&&(s(),e._processingWatchdogs[t]=setInterval(()=>{if(!e.processingConversations[t]){ke(e,t);return}s()},3e4))},45e3);e._processingWatchdogs[t]=n}function Tn(e,t){e.processingConversations[t]&&e._processingWatchdogs?.[t]&&(e._pongTimeouts?.[t]&&(clearTimeout(e._pongTimeouts[t]),delete e._pongTimeouts[t]),e.sessionHealth?.[t]&&delete e.sessionHealth[t],e._yeaftWatchdogConvs?.has(t)?lr(e,t):us(e,t))}function ke(e,t){e._processingWatchdogs?.[t]&&(clearTimeout(e._processingWatchdogs[t]),clearInterval(e._processingWatchdogs[t]),delete e._processingWatchdogs[t]),e._pongTimeouts?.[t]&&(clearTimeout(e._pongTimeouts[t]),delete e._pongTimeouts[t]),e.sessionHealth?.[t]&&delete e.sessionHealth[t],e._autoRefreshed?.[t]&&delete e._autoRefreshed[t],e._yeaftWatchdogConvs?.delete(t)}function Da(e,t){ke(e,t),e._processingWatchdogs||(e._processingWatchdogs={}),e._processingWatchdogs[t]=setTimeout(()=>{if(e.processingConversations[t]){let s=e.conversations.find(n=>n.id===t);e.sendWsMessage({type:"refresh_conversation",conversationId:t,agentId:s?.agentId}),e._processingWatchdogs[t]=setTimeout(()=>{if(e.processingConversations[t]){delete e.processingConversations[t];let n=e.executionStatusMap[t];n&&(n.currentTool=null),e.finishStreamingForConversation(t)}delete e._processingWatchdogs[t]},1e4)}},9e4)}function lr(e,t){ke(e,t),e._processingWatchdogs||(e._processingWatchdogs={}),e._yeaftWatchdogConvs||(e._yeaftWatchdogConvs=new Set),e._yeaftWatchdogConvs.add(t),e._processingWatchdogs[t]=setTimeout(()=>{if(e.processingConversations[t]){delete e.processingConversations[t];let s=e.executionStatusMap[t];s&&(s.currentTool=null),e.finishStreamingForConversation(t)}delete e._processingWatchdogs[t]},15e4)}var Nt=O(()=>{});function Mn(e,t){return!e||!t||e.type!=="user"||t.type!=="user"?!1:e.clientMessageId&&t.clientMessageId?e.clientMessageId===t.clientMessageId:e.clientMessageId||t.clientMessageId?!1:e.content===t.content}var cr=O(()=>{});function dr(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}function kf(){return Date.now()}function Sf(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?`pt_${crypto.randomUUID()}`:`pt_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`}function Cf(e,t=160){return typeof e!="string"?e:e.length>t?`${e.slice(0,t)}...[truncated]`:e}function If(e){if(!e||typeof e!="object")return e||null;let t={};for(let[s,n]of Object.entries(e))s==="text"||s==="prompt"||s==="content"||s==="data"||(t[s]=typeof n=="string"?Cf(n):n);return t}function Us(){return Sf()}function Qe(e,t={}){!e||!t.traceId||(Array.isArray(e._perfTraceQueue)||(e._perfTraceQueue=[]),e._perfTraceQueue.push({traceId:t.traceId,source:"web",phase:t.phase||"unknown",at:kf(),monotonicMs:dr(),durationMs:Number.isFinite(t.durationMs)?t.durationMs:null,agentId:t.agentId||null,sessionId:t.sessionId||null,vpId:t.vpId||null,turnId:t.turnId||null,threadId:t.threadId||null,messageType:t.messageType||null,bytes:Number.isFinite(t.bytes)?t.bytes:null,ok:typeof t.ok=="boolean"?t.ok:null,detail:If(t.detail)}),e._perfTraceQueue.length>200&&e._perfTraceQueue.splice(0,e._perfTraceQueue.length-200),Af(e))}function Af(e){!e||e._perfTraceFlushTimer||(e._perfTraceFlushTimer=setTimeout(()=>xf(e),250))}function xf(e){if(!e||!Array.isArray(e._perfTraceQueue)||e._perfTraceQueue.length===0){e&&(e._perfTraceFlushTimer=null);return}let t=e._perfTraceQueue.splice(0,e._perfTraceQueue.length);e._perfTraceFlushTimer=null,typeof e.sendWsMessage=="function"&&e.sendWsMessage({type:"perf_trace_events",events:t})}function Pn(e,t={}){if(typeof requestAnimationFrame!="function")return;let s=dr();requestAnimationFrame(()=>{requestAnimationFrame(()=>{Qe(e,{...t,phase:t.phase||"render.next_paint",durationMs:dr()-s})})})}var ur=O(()=>{});function qe(e,t){let s=t==null?"__all__":String(t);return e?`${e}${s}`:s}var pr=O(()=>{});function La(e){return e.filter(t=>!(t.type==="user"&&(!t.content||!t.content.trim())))}function _a(e){let t=[e?.timestamp,e?.createdAt,e?.ts,e?.time,e?.created_at];for(let s of t){if(typeof s=="number"&&Number.isFinite(s)&&s>0)return s;if(typeof s=="string"&&s.trim()){let n=Date.parse(s);if(Number.isFinite(n))return n;let i=Number(s);if(Number.isFinite(i)&&i>0)return i}}return null}function Tf(e){if(!e||typeof window>"u")return null;try{let t=window.Pinia||null,s=t&&typeof t.useSessionsStore=="function"?t.useSessionsStore():null;if(!s)return null;let n=typeof t.useChatStore=="function"?t.useChatStore():null,i=typeof s.sessionById=="function"?s.sessionById(e,n?.currentAgent||null):s.sessions&&s.sessions[e];return(i&&typeof i.defaultVpId=="string"?i.defaultVpId.trim():"")||null}catch{return null}}function Mf(e,t){return e.speakerVpId||e.vpId||e.vp_id||e.authorVpId||e.authorVP||Tf(t)}function Dn(e){return e&&(e.messageId||e.id)?e.messageId||e.id:null}function Pf(e){e.sort((t,s)=>(t.timestamp||0)-(s.timestamp||0))}function Df(e,t){if(!e||!t||e.type!=="assistant"||t.type!=="assistant"||(e.sessionId??null)!==(t.sessionId??null))return!1;let s=e.speakerVpId||e.vpId||"",n=t.speakerVpId||t.vpId||"";if(s&&n&&s!==n)return!1;let i=e.threadId||"",r=t.threadId||"";if(i&&r&&i!==r||!(e.isStreaming||e.isHistory!==!0)||t._hasPersistedTurnId!==!0)return!1;let a=e.turnId||"",l=t.turnId||"";if(!a||!l||a!==l)return!1;let c=typeof e.content=="string"?e.content:"",d=typeof t.content=="string"?t.content:"";return!!c&&!!d&&(d.startsWith(c)||c.startsWith(d))}function fr(e,t){let s=new Map,n=new Map;e.forEach((r,o)=>{let a=Dn(r);a&&s.set(a,o),r?.type==="user"&&r.clientMessageId&&n.set(r.clientMessageId,o)});let i=0;for(let r of t){let o=Dn(r),a=o&&s.has(o)?s.get(o):null;if(a===null&&r?.type==="user"&&r.clientMessageId&&n.has(r.clientMessageId)&&(a=n.get(r.clientMessageId)),a===null&&r?.type==="assistant"&&(a=e.findIndex(l=>Df(l,r))),a!==null&&a>=0){let l=Dn(e[a]);e[a]={...e[a],...r},o&&s.set(o,a),l&&l!==o&&s.get(l)===a&&s.delete(l),r?.type==="user"&&r.clientMessageId&&n.set(r.clientMessageId,a)}else o&&s.set(o,e.length),r?.type==="user"&&r.clientMessageId&&n.set(r.clientMessageId,e.length),e.push(r),i+=1}return Pf(e),i}function gr(e){return e?e.sessionId??e.groupId??null:null}function _f(e){return!e||e.type!=="user"||!e.clientMessageId?!1:Dn(e)===e.clientMessageId}function Ef(e,t,s){let n=t.reduce((r,o)=>Math.max(r,o?.timestamp||0),0),i=e.filter(r=>r?s!=null&&gr(r)!==s||r.isStreaming||r.type==="tool-use"&&r.toolName==="AskUserQuestion"&&(r.askAnswered||r.askPending||r.askExpired)||_f(r)?!0:n>0&&(r.timestamp||0)>n:!1);return e.splice(0,e.length,...i),fr(e,t),t.length}function Rf(e){if(typeof e!="string")return!1;let t=e.trimStart();return t.startsWith("<task-result ")||/^\[system note\] You have called \S+ with the same arguments \d+ times\./.test(t)}function xt(e,t){let s=e.messagesMap[t]||[];for(let n of s)n.type==="tool-use"&&!n.hasResult&&(n.hasResult=!0,n.toolName==="AskUserQuestion"&&!n.askAnswered&&!n.selectedAnswers&&(n.isHistory=!0,n.askRequestId=null))}function $a(e,t){pt(e);let s=e.agents.find(i=>i.id===t.agentId);e.conversations=e.conversations.filter(i=>i.id!==t.conversationId);let n=t.provider||"claude-code";if(e.conversations.push({id:t.conversationId,agentId:t.agentId,agentName:s?.name||t.agentId,workDir:t.workDir,claudeSessionId:null,createdAt:Date.now(),processing:!1,connecting:n!=="claude-code",type:"chat",provider:n,capabilities:t.capabilities||null,disallowedTools:t.disallowedTools??null}),e.currentAgent=t.agentId,e.currentAgentInfo=s,e.panels.length>1){let i=e._pendingPaneId;if(e._pendingPaneId=null,i){let r=e.panels.find(o=>o.id===i);r&&(r.conversationId=t.conversationId)}else{let r=e.panels.find(o=>!o.conversationId);r&&(r.conversationId=t.conversationId)}e.activeConversations.includes(t.conversationId)||e.activeConversations.push(t.conversationId)}else e.activeConversations=[t.conversationId];e.currentWorkDir=t.workDir,e.messagesMap[t.conversationId]=[],e.sendWsMessage({type:"select_conversation",conversationId:t.conversationId}),e.addMessage({type:"system",content:xe("store.convCreated",{agent:s?.name||t.agentId,workDir:t.workDir})}),e.saveOpenSessions()}function Va(e,t){pt(e);let s=e.agents.find(n=>n.id===t.agentId);if(e.conversations=e.conversations.filter(n=>n.id!==t.conversationId&&!(n.claudeSessionId&&n.claudeSessionId===t.claudeSessionId)),e.conversations.push({id:t.conversationId,agentId:t.agentId,agentName:s?.name||t.agentId,workDir:t.workDir,claudeSessionId:t.claudeSessionId,createdAt:Date.now(),processing:!1,connecting:(t.provider||"claude-code")!=="claude-code",type:"chat",provider:t.provider||"claude-code",capabilities:t.capabilities||null,disallowedTools:t.disallowedTools??null}),e.currentAgent=t.agentId,e.currentAgentInfo=s,e.panels.length>1){let n=e._pendingPaneId;if(e._pendingPaneId=null,n){let i=e.panels.find(r=>r.id===n);i&&(i.conversationId=t.conversationId)}else{let i=e.panels.find(r=>!r.conversationId);i&&(i.conversationId=t.conversationId)}e.activeConversations.includes(t.conversationId)||e.activeConversations.push(t.conversationId)}else e.activeConversations=[t.conversationId];if(e.currentWorkDir=t.workDir,e.messagesMap[t.conversationId]=[],e._pendingSessionTitle&&(e.conversationTitles[t.conversationId]=e._pendingSessionTitle,e._pendingSessionTitle=null),e.sendWsMessage({type:"select_conversation",conversationId:t.conversationId}),e.addMessage({type:"system",content:xe("store.convResumed",{agent:s?.name||t.agentId,sessionId:t.claudeSessionId?t.claudeSessionId.slice(0,8)+"...":""})}),t.dbMessages&&t.dbMessages.length>0){let n=La(t.dbMessages.map(o=>e.formatDbMessageForHistoryHydration(o)).flat().filter(Boolean)),i=tr(n),r=e.messagesMap[t.conversationId]||[];for(let o of i)r.push(o)}e.hasMoreMessages=!!t.hasMoreMessages,e.chatSessionState[t.conversationId]={lastSeenDbId:Ws(e.messagesMap[t.conversationId]),hasMoreOlder:!!t.hasMoreMessages},e.saveOpenSessions()}function Fa(e,t){e.conversations=e.conversations.filter(n=>n.id!==t.conversationId),delete e.messagesMap[t.conversationId],delete e.chatSessionState[t.conversationId],delete e.conversationTitles[t.conversationId],delete e.customConversationTitles[t.conversationId],delete e.processingConversations[t.conversationId],e._closedAt&&delete e._closedAt[t.conversationId],ke(e,t.conversationId),delete e.executionStatusMap[t.conversationId],delete e.subagents[t.conversationId],window.dispatchEvent(new CustomEvent("conversation-deleted",{detail:{conversationId:t.conversationId}}));let s=e.activeConversations.indexOf(t.conversationId);s>=0&&(e.activeConversations.splice(s,1),e.activeConversations.length===0&&e.addMessage({type:"system",content:xe("chat.session.closed")}));for(let n of e.panels)n.conversationId===t.conversationId&&(n.conversationId=null);e.saveOpenSessions()}function Oa(e,t){let s=t.conversationId;if(s){delete e.processingConversations[s],ke(e,s),e._closedAt||(e._closedAt={}),e._closedAt[s]=Date.now(),e._turnCompletedConvs||(e._turnCompletedConvs=new Set),e._turnCompletedConvs.add(s);let n=e.executionStatusMap[s];n&&(n.currentTool=null),e.finishStreamingForConversation(s),xt(e,s);let i=e.conversations.find(r=>r.id===s);i&&(t.claudeSessionId&&(i.claudeSessionId=t.claudeSessionId),t.workDir&&(i.workDir=t.workDir)),e.clearStatus?.conversationId===s&&e.clearStatus?.status==="clearing"&&(e.clearStatus={conversationId:s,status:"completed"},setTimeout(()=>{e.clearStatus?.conversationId===s&&e.clearStatus?.status==="completed"&&(e.clearStatus=null)},3e3)),e.saveOpenSessions()}}function Ha(e,t){let s=t.conversationId;if(s){delete e.processingConversations[s],ke(e,s),e._closedAt||(e._closedAt={}),e._closedAt[s]=Date.now(),e._turnCompletedConvs||(e._turnCompletedConvs=new Set),e._turnCompletedConvs.add(s);let n=e.executionStatusMap[s];n&&(n.currentTool=null),e.finishStreamingForConversation(s),xt(e,s);let i=e.conversations.find(r=>r.id===s);i&&(t.claudeSessionId&&(i.claudeSessionId=t.claudeSessionId),t.workDir&&(i.workDir=t.workDir)),e.saveOpenSessions()}}function Na(e,t){if(t.conversationId){if(t.isProcessing&&!Ht(e,t.conversationId)&&!e._turnCompletedConvs?.has(t.conversationId))e.processingConversations[t.conversationId]=!0;else if(e.processingConversations[t.conversationId]){delete e.processingConversations[t.conversationId],ke(e,t.conversationId);let s=e.executionStatusMap[t.conversationId];s&&(s.currentTool=null),e.finishStreamingForConversation(t.conversationId)}}}function Ba(e,t){let s=t.conversationId||e.currentConversation;if(s){delete e.processingConversations[s],ke(e,s),e._closedAt||(e._closedAt={}),e._closedAt[s]=Date.now(),e._turnCompletedConvs||(e._turnCompletedConvs=new Set),e._turnCompletedConvs.add(s);let n=e.executionStatusMap[s];n&&(n.currentTool=null),e.finishStreamingForConversation(s),xt(e,s)}}function qa(e,t){e.messagesMap[t.conversationId]||(e.messagesMap[t.conversationId]=[]);let s=e.messagesMap[t.conversationId],n=typeof t.afterMessageId=="number"&&t.afterMessageId>0;if(t.conversationId&&e.activeConversations.includes(t.conversationId)){let i=tr(La((t.messages||[]).map(o=>e.formatDbMessageForHistoryHydration(o)).flat().filter(Boolean)));if(i.length>0){let o=s.find(a=>a.dbMessageId);if(o&&i[0].dbMessageId&&i[i.length-1].dbMessageId<o.dbMessageId){let a=s.indexOf(o);e.debug,s.splice(a,0,...i)}else{e.debug;for(let a of i)if(!(a.dbMessageId&&s.some(l=>l.dbMessageId===a.dbMessageId))){if(a.dbMessageId&&(a.type==="assistant"||a.type==="user")){let l=null;if(a.type==="user"?l=s.find(c=>!c.dbMessageId&&!c.isStreaming&&Mn(c,a)):l=s.find(c=>!c.dbMessageId&&!c.isStreaming&&c.type==="assistant"&&c.content===a.content),l){l.dbMessageId=a.dbMessageId,l.id=a.id,a.timestamp&&(l.timestamp=a.timestamp),a.clientMessageId&&!l.clientMessageId&&(l.clientMessageId=a.clientMessageId);continue}}s.push(a)}}}n||(e.hasMoreMessages=t.hasMore??!1),pt(e);let r=e.chatSessionState[t.conversationId]?.hasMoreOlder;e.chatSessionState[t.conversationId]={lastSeenDbId:Ws(e.messagesMap[t.conversationId]),hasMoreOlder:n?!!r:!!t.hasMore}}e.loadingMoreMessages=!1,e.setRefreshingSession(t.conversationId,!1)}function Wa(e,t){let s=t.sessionId??null,n=t.agentId||s&&e.yeaftSessionAgentById?.[s]||null,i=t.conversationId||n&&e.yeaftConversationIdsByAgent?.[n]||e.yeaftConversationId;if(!i||!s||!Array.isArray(t.messages))return null;e.messagesMap[i]||(e.messagesMap[i]=[]);let{formatted:r}=Ua(t.messages,s,"window",e.messagesMap[i]);return fr(e.messagesMap[i],r),i}function Ea(e){return e?.toolId?[gr(e)??"",e.vpId||e.speakerVpId||"",e.turnId||"",e.threadId||"main",e.toolId].join("\0"):null}function Ra(e,t,s){return e.toolName="AskUserQuestion",e.toolId=t.toolCallId,e.toolInput={questions:s},e.askQuestions=s,e.askRequestId=null,e.askPending=!1,e.pendingAnswers=null,e.askSubmitGeneration=null,e.hasResult=!0,e.isHistory=!0,t.status==="answered"?(e.askAnswered=!0,e.selectedAnswers=t.answers,e.askExpired=!1):(e.askAnswered=!1,e.selectedAnswers=null,e.askExpired=!0),e}function Lf(e,t){return(e||[]).find(s=>s?.type==="tool-use"&&(s.toolName==="AskUser"||s.toolName==="AskUserQuestion")&&s.toolId===t.toolCallId&&gr(s)===t.sessionId&&(s.vpId||s.speakerVpId||"")===(t.vpId||"")&&(s.turnId||"")===(t.turnId||"")&&(s.threadId||"main")===(t.threadId||"main"))||null}function Ua(e,t,s,n){let i=new Set((n||[]).map(l=>l&&(l.messageId||l.id)).filter(Boolean)),r=new Set,o=[],a=0;for(let l of e){if(!l||l._reflection||l.internal||l.systemOnly||l.systemOnlyMessage||Rf(l.content))continue;let c=l.id||l.messageId||null,d=l.clientMessageId||null;if(!(c&&r.has(c))&&!(c&&s!=="recent"&&i.has(c))){if(c&&r.add(c),l.role==="user"){a+=1;let u=c||l.messageId||l.turnId||null,p=l.sessionId??l.groupId??t??null;o.push({...c?{id:c,messageId:c}:{},type:"user",content:l.content,timestamp:_a(l),sessionId:p,turnId:l.turnId||u,...d?{clientMessageId:d}:{},...Array.isArray(l.attachments)&&l.attachments.length>0?{attachments:l.attachments}:{},isStreaming:!1})}else if(l.role==="assistant"){a+=1;let u=c||l.messageId||l.turnId||null,p=l.sessionId??l.groupId??t??null,f=Mf(l,p),g=_a(l),v=!!l.turnId,y=l.turnId||u,A=typeof l.content=="string"?l.content:l.content||"";(typeof A!="string"||A.trim())&&o.push({...c?{id:c,messageId:c}:{},type:"assistant",content:A,timestamp:g,sessionId:p,turnId:y,_hasPersistedTurnId:v,...f?{vpId:f,speakerVpId:f}:{},isStreaming:!1,isHistory:!0});for(let k of Array.isArray(l.images)?l.images:[])k?.assetId&&o.push({id:`${c||u||y}:image:${k.assetId}`,messageId:`${c||u||y}:image:${k.assetId}`,type:"chat-image",...k,timestamp:g,sessionId:p,turnId:y,...f?{vpId:f,speakerVpId:f}:{},isStreaming:!1,isHistory:!0});for(let k of Array.isArray(l.askUserResults)?l.askUserResults:[]){if(!k?.toolCallId||k.status!=="answered"&&k.status!=="expired")continue;let b=[{question:typeof k.question=="string"?k.question:"",options:(Array.isArray(k.options)?k.options:[]).filter(q=>typeof q=="string").map(q=>({label:q,description:""})),multiSelect:!1}],m={toolCallId:k.toolCallId,sessionId:p,vpId:f||"",turnId:y||"",threadId:l.threadId||"main"},w=Lf(n,m);if(w){Ra(w,k,b);continue}let E=Ra({id:`${c||u||y}:ask:${k.toolCallId}`,messageId:`${c||u||y}:ask:${k.toolCallId}`,type:"tool-use",timestamp:g,sessionId:p,turnId:y,threadId:m.threadId,...f?{vpId:f,speakerVpId:f}:{},isStreaming:!1},k,b),R=Ea(E);(!R||!o.some(q=>Ea(q)===R))&&o.push(E)}let x=Number(l.toolSummaryCount||l.toolCalls?.length||0)||0;x>0&&o.push({...c?{id:`${c}:tool-summary`,messageId:`${c}:tool-summary`,persistedMessageId:c}:{},type:"tool-summary",count:x,omittedCount:x,source:"history",timestamp:g,sessionId:p,turnId:y,...f?{vpId:f,speakerVpId:f}:{},isStreaming:!1,isHistory:!0})}}}return{formatted:o,acceptedHistoryMessages:a}}function za(e,t){let s=t.sessionId!=null?t.sessionId:t.groupId,n=t.mode==="recent"||t.mode==="delta"?t.mode:"older",i=Array.isArray(t.messages)?t.messages:[];t.perfTraceId&&Qe(e,{traceId:t.perfTraceId,phase:"history.chunk_received",agentId:t.agentId||null,sessionId:s||null,messageType:t.type,bytes:(()=>{try{return JSON.stringify(t).length}catch{return null}})(),detail:{mode:n,rawCount:i.length}});let r=t.agentId||(s&&e.yeaftSessionAgentById?e.yeaftSessionAgentById[s]:null),o=r&&e.yeaftConversationIdsByAgent?e.yeaftConversationIdsByAgent[r]:null,a=t.conversationId||o||e.yeaftConversationId;if(!a){e.yeaftLoadingMoreHistory=!1;return}e.messagesMap[a]||(e.messagesMap[a]=[]);let{formatted:l,acceptedHistoryMessages:c}=Ua(i,s,n,e.messagesMap[a]),d=0;if(n==="recent")d=Ef(e.messagesMap[a],l,s??null);else if(l.length>0)if(n==="older"){if(e.messagesMap[a].splice(0,0,...l),d=l.length,typeof e.expandYeaftMessageWindow=="function"){let A=e.yeaftActiveSessionFilter?s??null:null;e.expandYeaftMessageWindow(A,t.turns||10)}}else d=fr(e.messagesMap[a],l);let u=qe(t.agentId||null,s),p=e.yeaftSessionHistoryState?.[u]||{},f=typeof t.latestSeq=="number"?t.latestSeq:p.latestSeq??null,g=n==="delta"?{...p,loaded:!0,loading:!1,latestSeq:f,syncingAfterSeq:null,count:(p.count||0)+d}:{loaded:!0,loading:!1,hasMore:!!t.hasMore,oldestSeq:typeof t.oldestSeq=="number"?t.oldestSeq:e.yeaftOldestLoadedSeq,count:n==="older"?(p.count||0)+d:c,latestSeq:f,syncingAfterSeq:null};e.yeaftSessionHistoryState&&(e.yeaftSessionHistoryState={...e.yeaftSessionHistoryState,[u]:g});let v=e.yeaftActiveSessionFilter??null,y=qe(t.agentId?e.currentAgent:null,v);if(t.perfTraceId&&(Qe(e,{traceId:t.perfTraceId,phase:"history.chunk_applied",agentId:t.agentId||null,sessionId:s||null,messageType:t.type,detail:{mode:n,formattedCount:l.length,insertedRows:d,acceptedHistoryMessages:c}}),Pn(e,{traceId:t.perfTraceId,phase:"history.next_paint",agentId:t.agentId||null,sessionId:s||null,messageType:t.type,detail:{mode:n,insertedRows:d}})),u===y)e.yeaftHasMoreHistory=g.hasMore,typeof t.oldestSeq=="number"&&(e.yeaftOldestLoadedSeq=t.oldestSeq),e.yeaftLoadingMoreHistory=!1;else if(e.yeaftLoadingMoreHistory&&u!==y){let A=e.yeaftSessionHistoryState?.[y]||null;e.yeaftLoadingMoreHistory=!!A?.loading}}var _n=O(()=>{Nt();Ot();cr();xn();sr();bt();ur();pr()});function ja(e,t){if(e.promoteYeaftHistoryOutlineRow?.(t))return;let s=t?.sessionId??t?.groupId??e._currentYeaftSessionId??null;s&&e.invalidateYeaftHistoryOutline?.(s)}function $f(e){let t=e;if(typeof t=="string"){let s=t.trim();if(s.startsWith("[")&&s.endsWith("]")||s.startsWith("{")&&s.endsWith("}"))try{t=JSON.parse(s)}catch{t=e}}return Array.isArray(t)?t.map(s=>typeof s=="string"?s:!s||typeof s!="object"?"":s.type==="text"&&typeof s.text=="string"||s.type==="input_text"&&typeof s.text=="string"?s.text:"").join("").replace(/\n\n\[Uploaded files\][\s\S]*$/m,"").trim():t&&typeof t=="object"?typeof t.text=="string"?t.text.trim():typeof t.content=="string"?t.content.trim():"":typeof t=="string"?t.replace(/\n\n\[Uploaded files\][\s\S]*$/m,"").trim():""}function mr(e,t){return e.executionStatusMap[t]||(e.executionStatusMap[t]={currentTool:null,toolHistory:[],lastActivity:null}),e.executionStatusMap[t]}function Ka(e,t,s){if(!t)return;let n=mr(e,t);if(n.lastActivity=Date.now(),Tn(e,t),s.type==="system"){if(s.subtype==="init"){let i=e.conversations.find(r=>r.id===t);i&&i.connecting&&(i.connecting=!1);return}s.message&&e.addMessageToConversation(t,{type:"system",content:typeof s.message=="string"?s.message:JSON.stringify(s.message,null,2)});return}if(s.type==="assistant"){let i=s.message?.content;if(!i)return;let r=e.messagesMap[t]||[];for(let o of r)o.type==="tool-use"&&!o.hasResult&&(o.hasResult=!0);for(let o of n.toolHistory)o.status==="running"&&(o.status="done");if(n.currentTool=null,typeof i=="string"){e.appendToAssistantMessageForConversation(t,i,{id:s.message?.id||s.message?.messageId||null,ts:s.ts||s.message?.ts||s.message?.time||null,sessionId:e._currentYeaftSessionId||null,vpId:e._currentYeaftVpId||null,turnId:e._currentYeaftTurnId||null,threadId:e._currentYeaftThreadId||null});return}if(!Array.isArray(i))return;if(i.length===0){e.finishStreamingForConversation(t);return}for(let o of i)o.type==="text"?e.appendToAssistantMessageForConversation(t,o.text,{id:s.message?.id||s.message?.messageId||null,ts:s.ts||s.message?.ts||s.message?.time||null,sessionId:e._currentYeaftSessionId||null,vpId:e._currentYeaftVpId||null,turnId:e._currentYeaftTurnId||null,threadId:e._currentYeaftThreadId||null}):o.type==="image_asset"&&o.image?e.addMessageToConversation(t,{type:"chat-image",...o.image,sessionId:e._currentYeaftSessionId||null,vpId:e._currentYeaftVpId||null,speakerVpId:e._currentYeaftVpId||null,turnId:e._currentYeaftTurnId||null,threadId:e._currentYeaftThreadId||null}):o.type==="tool_summary"?e.addMessageToConversation(t,{type:"tool-summary",count:Number(o.count||o.omittedCount||0)||0,omittedCount:Number(o.omittedCount||o.count||0)||0,source:o.source||"history",isHistory:o.source!=="live",sessionId:e._currentYeaftSessionId||null,vpId:e._currentYeaftVpId||null,turnId:e._currentYeaftTurnId||null,threadId:e._currentYeaftThreadId||null}):o.type==="tool_use"&&(e.finishStreamingForConversation(t),n.currentTool={name:o.name,input:o.input,startTime:Date.now()},n.toolHistory.unshift({name:o.name,input:o.input,timestamp:Date.now(),status:"running"}),n.toolHistory.length>20&&n.toolHistory.pop(),e.addMessageToConversation(t,{type:"tool-use",toolId:o.id||o.tool_use_id||null,toolName:o.name,toolInput:o.input,startTime:Date.now(),sessionId:e._currentYeaftSessionId||null,vpId:e._currentYeaftVpId||null,turnId:e._currentYeaftTurnId||null,threadId:e._currentYeaftThreadId||null}))}else if(s.type==="user"){let i=s.internal===!0||s.message?.internal===!0||s.userAuthored===!1||s.message?.userAuthored===!1,r=s.message?.content,o=$f(r);if(typeof o=="string"&&(o.includes("<local-command-caveat>")||o.includes("<command-name>")))return;if(typeof o=="string"&&o.includes("<local-command-stdout>")){let l=o.match(/<local-command-stdout>([\s\S]*?)<\/local-command-stdout>/);if(l){e.appendToAssistantMessageForConversation(t,l[1].trim()),e.finishStreamingForConversation(t);return}}let a=[];if(s.tool_use_result)a=Array.isArray(s.tool_use_result)?s.tool_use_result:[s.tool_use_result];else if(s.message?.content){let l=s.message.content;a=(Array.isArray(l)?l:[]).filter(d=>d.type==="tool_result")}if(a.length>0){let l=e.messagesMap[t]||[];for(let c of a){if(n.toolHistory.length>0){let f=n.toolHistory.findIndex(g=>g.status==="running");f>=0&&(n.toolHistory[f].status="done")}let d=c.tool_use_id||c.toolUseId||c.tool_call_id||c.toolCallId||null,u=c.content||c,p=!1;if(d){for(let f=l.length-1;f>=0;f--)if(l[f].type==="tool-use"&&l[f].toolId===d){l[f].hasResult=!0,l[f].toolResult=c.is_update&&l[f].toolResult?`${l[f].toolResult}
|
|
2
2
|
|
|
3
|
-
${d}`:d,u=!0;break}}if(!u){for(let p=a.length-1;p>=0;p--)if(a[p].type==="tool-use"&&!a[p].hasResult){a[p].hasResult=!0,a[p].toolResult=d;break}}}n.currentTool=null}else if(typeof r=="string"&&r.trim()||Array.isArray(s.message?.attachments)&&s.message.attachments.length>0){let a=s.message?.clientMessageId||s.clientMessageId||null,l={type:"user",content:r,clientMessageId:a},c=e.messagesMap[t]||[];if(c.some(u=>Mn(u,l))){if(a){for(let u=c.length-1;u>=0;u--)if(c[u].type==="user"&&c[u].clientMessageId===a){s.dbMessageId&&!c[u].dbMessageId&&(c[u].dbMessageId=s.dbMessageId),s.message?.id&&!c[u].messageId&&(c[u].id=s.message.id,c[u].messageId=s.message.id),s.ts&&!c[u].ts&&(c[u].ts=s.ts),ja(e,c[u]);break}}}else{let u=e.addMessageToConversation(t,{...s.message?.id?{id:s.message.id,messageId:s.message.id}:{},...s.ts?{ts:s.ts}:{},type:"user",content:r,...s.message?.attachments?{attachments:s.message.attachments}:{},...a?{clientMessageId:a}:{}});ja(e,u)}}}else if(s.type==="result"){delete e.processingConversations[t],ke(e,t);let i=e.conversations.find(c=>c.id===t);i&&i.connecting&&(i.connecting=!1);let r=e._currentYeaftSessionId||null;if(e._currentYeaftTurnId&&e.activeVpTurns[e._currentYeaftTurnId]){let{[e._currentYeaftTurnId]:c,...d}=e.activeVpTurns;!r&&c?.sessionId&&(r=c.sessionId),e.activeVpTurns=d}if(r&&e._currentYeaftVpId&&e.vpStatuses){let c=e._currentYeaftTurnId||null,d={...e.vpStatuses||{}},u=!1;for(let[p,f]of Object.entries(d))!f||f.vpId!==e._currentYeaftVpId||(f.sessionId||f.groupId||null)!==r||c&&f.turnId&&f.turnId!==c||(d[p]={...f,state:"idle",turnId:null,since:Date.now()},u=!0);u&&(e.vpStatuses=d)}r&&typeof e.clearYeaftSessionProcessingIfIdle=="function"&&e.clearYeaftSessionProcessingIfIdle(r),e._closedAt||(e._closedAt={}),e._closedAt[t]=Date.now(),e._turnCompletedConvs||(e._turnCompletedConvs=new Set),e._turnCompletedConvs.add(t),n.currentTool=null,xt(e,t);let o=e.messagesMap[t]||[],a=s.result_text||"";if(typeof a=="string"&&a.trim()){let c=!1;for(let d=o.length-1;d>=0;d--){if(o[d].type==="assistant"){c=!0;break}if(o[d].type==="user")break}c||e.appendToAssistantMessageForConversation(t,a.trim())}e.finishStreamingForConversation(t),!e.promoteCompletedYeaftHistoryOutline?.(t,e._currentYeaftTurnId||null)&&r&&e.invalidateYeaftHistoryOutline?.(r),e.sweepStaleStreamingForConversation(t)}}var Ga=O(()=>{Nt();_n();cr()});function Bt(e){if(e==null)return e;try{return JSON.parse(JSON.stringify(e))}catch{return e}}function En(e,t){if(!t)return e??null;if(Object.prototype.hasOwnProperty.call(t,"base"))return Bt(t.base)??null;if(Object.prototype.hasOwnProperty.call(t,"replacement"))return Bt(t.replacement)??null;let s=e&&typeof e=="object"&&!Array.isArray(e)?Bt(e):{};if(t.set&&typeof t.set=="object")for(let[n,i]of Object.entries(t.set))s[n]=Bt(i);if(t.body&&typeof t.body=="object"){let n=s.body&&typeof s.body=="object"&&!Array.isArray(s.body)?{...s.body}:{};for(let[r,o]of Object.entries(t.body))r==="messages"||r==="messagesFrom"||r==="messagesAppend"||r==="messagesKey"||(n[r]=Bt(o));let i=t.body.messagesKey==="messages"||t.body.messagesKey==="input"?t.body.messagesKey:Array.isArray(n.messages)||Object.prototype.hasOwnProperty.call(t.body,"messages")?"messages":"input";if(Array.isArray(t.body.messages))n[i]=Bt(t.body.messages)||[];else if(Array.isArray(t.body.messagesAppend)){let r=Array.isArray(n[i])?n[i]:[],o=Number.isFinite(Number(t.body.messagesFrom))?Number(t.body.messagesFrom):r.length;n[i]=r.slice(0,o).concat(Bt(t.body.messagesAppend)||[])}s.body=n}return s}function Ya(e,t){return!t||!Object.prototype.hasOwnProperty.call(t,"rawRequestDelta")?e??null:En(e??null,t.rawRequestDelta)}function zs(e){if(!e)return 0;let t=typeof e=="string"?e:String(e),s=0,n=0;for(let i of t){let r=i.codePointAt(0)||0;r>=19968&&r<=40959||r>=12352&&r<=12447||r>=12448&&r<=12543||r>=44032&&r<=55215?s+=1:n+=1}return Math.ceil(s+n/4)}function Ff(e){let t=[],s=[];if(!e)return{messageText:t,toolText:s};let n=e.content;if(typeof n=="string")e.role==="tool"?s.push(n):t.push(n);else if(Array.isArray(n))for(let i of n){if(!i||typeof i!="object")continue;let r=i.type;if(r==="text"&&typeof i.text=="string")t.push(i.text);else if(r==="tool_use"){if(s.push(String(i.name||"")),i.input!==void 0)try{s.push(JSON.stringify(i.input))}catch{}}else if(r==="tool_result"){let o=i.content;if(typeof o=="string")s.push(o);else if(Array.isArray(o)){for(let a of o)if(a)if(typeof a=="string")s.push(a);else if(typeof a=="object"&&typeof a.text=="string")s.push(a.text);else try{s.push(JSON.stringify(a))}catch{}}else if(o!==void 0)try{s.push(JSON.stringify(o))}catch{}}else try{t.push(JSON.stringify(i))}catch{}}if(Array.isArray(e.toolCalls)){for(let i of e.toolCalls)if(i&&(s.push(String(i.name||"")),i.input!==void 0))try{s.push(JSON.stringify(i.input))}catch{}}return{messageText:t,toolText:s}}function Qa(e){let t=0,s=0;if(e&&Array.isArray(e.messages))for(let r of e.messages){let{messageText:o,toolText:a}=Ff(r);for(let l of o)t+=zs(l);for(let l of a)s+=zs(l)}let n=0,i=0;if(e&&typeof e.response=="string"&&(n+=zs(e.response)),e&&Array.isArray(e.toolCalls)){for(let r of e.toolCalls)if(r&&(i+=zs(String(r.name||"")),r.input!==void 0))try{i+=zs(JSON.stringify(r.input))}catch{}}return{inputMessageTokens:t,inputToolTokens:s,outputMessageTokens:n,outputToolTokens:i,inputTotalEstimated:t+s,outputTotalEstimated:n+i}}function hr(e,t,s){let n=Math.max(0,Math.floor(Number(e)||0)),i=Math.max(0,Number(t)||0),r=Math.max(0,Number(s)||0),o=i+r;if(n===0)return{message:0,tool:0};if(o===0)return{message:n,tool:0};let a=Math.round(i/o*n),l=Math.min(n,Math.max(0,a));return{message:l,tool:n-l}}function Xa(e){if(e==null||e==="")return"";let t;if(typeof e=="number")t=e;else if(typeof e=="string"){let o=Date.parse(e);if(Number.isNaN(o)){let a=Number(e);if(!Number.isFinite(a))return"";t=a}else t=o}else return"";if(!Number.isFinite(t))return"";let s=new Date(t),n=String(s.getHours()).padStart(2,"0"),i=String(s.getMinutes()).padStart(2,"0"),r=String(s.getSeconds()).padStart(2,"0");return`${n}:${i}:${r}`}var vr=O(()=>{});function Of(e,t){if(!e||!!!t?.online)return!1;let n=!e.online,i=e.online&&e.version!=null&&t.version!=null&&e.version!==t.version;return n||i}function Za(e,t){let s=e.lastViewedConversation||localStorage.getItem("lastViewedConversation");if(!s)return!1;let n=e.conversations.find(r=>r.id===s);if(!n)return!1;let i=t?.agentId||e.currentAgent;return t&&(e.currentAgent=t.agentId,e.currentAgentInfo=t.agentInfo,e.sendWsMessage({type:"select_agent",agentId:t.agentId,silent:!0})),e.activeConversations=[s],e.currentWorkDir=n.workDir,e.messagesMap[s]=[],e.sendWsMessage({type:"select_conversation",conversationId:s}),e.sendWsMessage({type:"sync_messages",conversationId:s,turns:5}),e.sendWsMessage({type:"refresh_conversation",conversationId:s}),!0}function Ja(e,t){let s=Array.isArray(e.agents)?e.agents:[],n=e._hasHandledAgentList===!0,i=e.currentAgent||null,r=!!(i&&s.some(a=>a&&a.id===i&&a.online));e.agents=t.agents,e._hasHandledAgentList=!0;let o=e.currentAgent||null;if(o){let a=e._yeaftAgentSeen&&e._yeaftAgentSeen.id===o?e._yeaftAgentSeen:null,l=t.agents.find(c=>c.id===o)||null;e.currentView==="yeaft"&&Of(a,l)&&(e._yeaftReconnectCatchUpPending=!0),l?e._yeaftAgentSeen={id:o,online:!!l.online,version:l.version!=null?l.version:null}:a?a.online&&(e._yeaftAgentSeen={id:o,online:!1,version:a.version}):e._yeaftAgentSeen={id:o,online:!1,version:null}}{let a=new Set(t.agents.map(l=>l.id));for(let l of t.agents)e.proxyPorts[l.id]=l.proxyPorts||[],l.yeaftStatus&&typeof e.cacheYeaftAgentStatus=="function"&&e.cacheYeaftAgentStatus(l.id,l.yeaftStatus);for(let l of Object.keys(e.proxyPorts))a.has(l)||delete e.proxyPorts[l]}if(e.currentAgent){let a=t.agents.find(l=>l.id===e.currentAgent);a&&(e.currentAgentInfo=a)}if(e.currentView==="yeaft"&&!e.currentAgent){let a=t.agents.find(l=>l.online);a&&(e.currentAgent=a.id,e.currentAgentInfo=a)}if(e.currentView==="yeaft"&&typeof e.loadOpenedYeaftSessionsForConnectedAgents=="function"){let a=t.agents.filter(l=>l&&l.online&&l.id).map(l=>l.id);e.loadOpenedYeaftSessionsForConnectedAgents(a)}{let a=[],l=new Set;for(let d of t.agents)for(let u of d.conversations||[])l.has(u.id)||(l.add(u.id),a.push({...u,type:u.type,agentId:d.id,agentName:d.name}),u.title&&(u.customTitle&&(e.customConversationTitles[u.id]=u.title),e.conversationTitles[u.id]||(e.conversationTitles[u.id]=u.title)));for(let d of a){d.agentOnline=!0;let u=e.conversations.find(p=>p.id===d.id);if(u)u.claudeSessionId=d.claudeSessionId||u.claudeSessionId,u.processing=d.processing,u.userId=d.userId,u.username=d.username,u.agentId=d.agentId,u.agentName=d.agentName,u.agentOnline=!0,d.type&&(u.type=d.type),d.name!==void 0&&(u.name=d.name);else{let p=e._recentlyDeletedSessions?.[d.id];if(p&&Date.now()-p<15e3)continue;e.conversations.push(d)}d.pinned&&!e.pinnedSessions.includes(d.id)&&e.pinnedSessions.push(d.id)}let c=new Set(t.agents.map(d=>d.id));e.conversations=e.conversations.filter(d=>{if(l.has(d.id)||e.activeConversations.includes(d.id))return!0;if(d.agentId&&c.has(d.agentId)){let u=e._recentlyDeletedSessions?.[d.id];return u&&Date.now()-u<15e3||(delete e.messagesMap[d.id],delete e.processingConversations[d.id],ke(e,d.id),delete e.executionStatusMap[d.id]),!1}return d.agentId&&!c.has(d.agentId)&&(d.agentOnline=!1),!0});for(let d of a)if(d.processing&&!Ht(e,d.id)&&!e._turnCompletedConvs?.has(d.id))e.processingConversations[d.id]=!0;else if(e.processingConversations[d.id]){delete e.processingConversations[d.id],ke(e,d.id);let u=e.executionStatusMap[d.id];u&&(u.currentTool=null),e.finishStreamingForConversation(d.id)}for(let d of Object.keys(e.processingConversations))if(!l.has(d)){if(d.startsWith("yeaft-"))continue;delete e.processingConversations[d],ke(e,d);let u=e.executionStatusMap[d];u&&(u.currentTool=null),e.finishStreamingForConversation(d)}}if(localStorage.setItem("pinned-sessions",JSON.stringify(e.pinnedSessions)),e._closedAt){let a=Date.now();for(let l of Object.keys(e._closedAt))a-e._closedAt[l]>3e4&&(delete e._closedAt[l],e._turnCompletedConvs?.delete(l))}if(e.currentAgent){let a=t.agents.find(l=>l.id===e.currentAgent&&l.online);if(a){let l=!!e._yeaftReconnectCatchUpPending,d=l||n&&!r;if(e.currentAgentInfo=a,d&&(e._offlineConversationRestoreKey=null,e.sendWsMessage({type:"select_agent",agentId:e.currentAgent,silent:!0})),e.currentView==="yeaft"&&typeof e.requestYeaftSessionBootstrap=="function"){e._yeaftReconnectCatchUpPending=!1;let u=l||!e.yeaftSessionReady||!e.yeaftModel||!e.yeaftStatus;(u||l)&&e.requestYeaftSessionBootstrap({forceSessionReady:u,catchUpHistory:l})}if(!d)return;if(e.currentConversation){let u=e.conversations.find(f=>f.id===e.currentConversation);e.sendWsMessage({type:"select_conversation",conversationId:e.currentConversation});let p=e.messagesMap[e.currentConversation]||[];if(p.length>0){let f=p[p.length-1]?.id;e.sendWsMessage({type:"sync_messages",conversationId:e.currentConversation,afterMessageId:f})}else e.sendWsMessage({type:"sync_messages",conversationId:e.currentConversation,turns:5});e.sendWsMessage({type:"refresh_conversation",conversationId:e.currentConversation})}else e.recoveryDismissed||Za(e);return}else{let l=`${e.currentAgent||""}:${e.currentConversation||""}`;e.currentConversation&&(!n||r||e._offlineConversationRestoreKey!==l)&&(e._offlineConversationRestoreKey=l,e.sendWsMessage({type:"select_conversation",conversationId:e.currentConversation}));return}}if(!e.currentConversation&&!e.currentAgent&&!e.recoveryDismissed){let a=e.lastViewedConversation||localStorage.getItem("lastViewedConversation"),l=e.lastUsedAgent;if(a){let c=e.conversations.find(d=>d.id===a);if(c){let d=t.agents.find(u=>u.id===c.agentId&&u.online);if(d){Za(e,{agentId:c.agentId,agentInfo:d});return}}}l&&(e.agents.find(d=>d.id===l&&d.online)?e.selectAgent(l):e.checkPendingRecovery())}}function el(e,t){e.agentSwitching=!1;let s=e.currentAgent===t.agentId,n={id:t.agentId,name:t.agentName,workDir:t.workDir,capabilities:t.capabilities||["terminal","file_editor","background_tasks"],version:t.version||null};if(typeof e.activateYeaftAgent=="function"?e.activateYeaftAgent(t.agentId,n):(e.currentAgent=t.agentId,e.currentAgentInfo=n),Array.isArray(t.slashCommands)){let d=[...new Set(t.slashCommands)];e.slashCommandsMap[`agent:${t.agentId}`]=d}t.slashCommandDescriptions&&(e.slashCommandDescriptions={...e.slashCommandDescriptions,...t.slashCommandDescriptions});let i=t.conversations||[],r=new Set,o=i.filter(d=>r.has(d.id)?!1:(r.add(d.id),!0)).map(d=>({...d,agentId:t.agentId,agentName:t.agentName}));if(s&&e.currentConversation){let d=i.find(u=>u.id===e.currentConversation);d&&!o.find(u=>u.id===d.id)&&o.push({...d,agentId:t.agentId,agentName:t.agentName})}let a=new Set(o.map(d=>d.id)),l=e.conversations.filter(d=>!a.has(d.id));e.conversations=[...l,...o];for(let d of i)d.title&&(d.customTitle&&(e.customConversationTitles[d.id]=d.title),e.conversationTitles[d.id]||(e.conversationTitles[d.id]=d.title));let c=new Set(i.map(d=>d.id));for(let d of i)if(d.processing&&!Ht(e,d.id)&&!e._turnCompletedConvs?.has(d.id))e.processingConversations[d.id]=!0;else if(e.processingConversations[d.id]){delete e.processingConversations[d.id],ke(e,d.id);let u=e.executionStatusMap[d.id];u&&(u.currentTool=null),e.finishStreamingForConversation(d.id)}for(let d of Object.keys(e.processingConversations))if(!c.has(d)){if(d.startsWith("yeaft-"))continue;if(!l.some(p=>p.id===d)){delete e.processingConversations[d],ke(e,d);let p=e.executionStatusMap[d];p&&(p.currentTool=null),e.finishStreamingForConversation(d)}}if(s&&e.currentConversation){let d=e.conversations.find(u=>u.id===e.currentConversation);e.currentWorkDir=d?.workDir||e.currentWorkDir||t.workDir,pt(e),e.sendWsMessage({type:"select_conversation",conversationId:e.currentConversation})}else{e.activeConversations=[],e.currentWorkDir=t.workDir;let d=e.lastViewedConversation||localStorage.getItem("lastViewedConversation");d&&e.conversations.find(u=>u.id===d)&&(e.autoRestoreConversation(d),e.pendingRecovery=null)}Xo(e)}var tl=O(()=>{Nt();Ot()});function Hf(e={}){return{providers:e.providers||[],primaryModel:e.primaryModel||null,fastModel:e.fastModel||null,language:e.language||"en"}}function qf(e,t={}){let s=e||{systemPrompt:"",messages:[],rawRequest:null},n={systemPrompt:s.systemPrompt||"",messages:Array.isArray(s.messages)?[...s.messages]:[],rawRequest:s.rawRequest??null};if(t?.base){let i={systemPrompt:t.systemPrompt||"",messages:Array.isArray(t.messages)?t.messages:[],rawRequest:null};return Object.prototype.hasOwnProperty.call(t,"rawRequestDelta")&&(i.rawRequest=En(null,t.rawRequestDelta)),i}if(typeof t?.systemPrompt=="string"&&(n.systemPrompt=t.systemPrompt),Array.isArray(t?.messages))n.messages=t.messages;else if(Array.isArray(t?.messagesAppend)){let i=Number.isFinite(Number(t.messagesFrom))?Number(t.messagesFrom):n.messages.length;n.messages=n.messages.slice(0,i).concat(t.messagesAppend)}return Object.prototype.hasOwnProperty.call(t||{},"rawRequestDelta")&&(n.rawRequest=En(n.rawRequest,t.rawRequestDelta)),n}function Wf(e=[]){let t=new Map;return e.map(s=>{if(!s||!s.requestDelta)return s;let n=s.turnId||"__unknown__",i=t.get(n)||s.requestBase||null,r=i?.rawRequest??null,o=qf(i,s.requestDelta);return t.set(n,o),{...s,systemPrompt:typeof s.systemPrompt=="string"&&s.systemPrompt?s.systemPrompt:o.systemPrompt,messages:Array.isArray(s.messages)&&s.messages.length>0?s.messages:o.messages,rawRequest:s.rawRequest??null,rawRequestBase:r}})}function sl(e,t){let s=Ae();switch(e._lastPongAt=Date.now(),t.type){case"work_center_response":{let n=t.requestId?e.workCenterPending[t.requestId]:null;if(!n)break;clearTimeout(n.timer),delete e.workCenterPending[t.requestId],t.ok?n.resolve(t.data):n.reject(new Error(t.error||"Work Center request failed"));break}case"work_center_event":e.applyWorkCenterEvent(t.agentId,t.event);break;case"auth_result":if(t.success){e.authenticated=!0,t.sessionKey&&(e.sessionKey=lt(t.sessionKey),s.setSessionKey(t.sessionKey)),t.acceptPlaintext===!0&&(e.serverEncryptionRequired=!1),t.role&&(s.role=t.role);let n=e.conversations.map(i=>i.id).filter(Boolean);e.sendWsMessage({type:"get_agents",conversationIds:n.length>0?n:void 0}),e.checkPendingRecovery()}else e.addMessage({type:"error",content:t.error||xe("login.error.loginFailed")}),s.handleAuthFailure?.(void 0,t._wsAuthToken,t._wsAuthGeneration);break;case"agent_list":Ja(e,t),e.workCenterOpen&&e.workCenterAgentId&&e.listWorkItems(e.workCenterAgentId).catch(()=>{});break;case"yeaft_session_hydrate":{let n=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();n&&n.applySnapshot(t.sessions||[],t.agentId||null);break}case"agent_selected":el(e,t),e.workCenterOpen&&e.workCenterAgentId&&e.listWorkItems(e.workCenterAgentId).catch(()=>{});break;case"conversation_created":$a(e,t);break;case"conversation_resumed":Va(e,t);break;case"conversation_selected":if(e.currentConversation===t.conversationId)return;e.activeConversations=[t.conversationId];{let n=e.conversations.find(i=>i.id===t.conversationId);n&&(e.currentWorkDir=n.workDir)}e.messagesMap[t.conversationId]=[],e.saveOpenSessions();break;case"conversation_settings_updated":{let n=e.conversations.find(r=>r.id===t.conversationId);n&&t.disallowedTools!==void 0&&(n.disallowedTools=t.disallowedTools);let i=e.conversationMcpServers[t.conversationId];if(i&&t.disallowedTools){let r=new Set(t.disallowedTools),o=e.conversationMcpServerTools[t.conversationId]||{};for(let a of i){let l=o[a.name];l&&l.length>0?a.enabled=!l.some(c=>r.has(c)):a.enabled=!r.has(`mcp__${a.name}`)}}t.needRestart&&n&&(n.needRestart=!0);break}case"sync_messages_result":qa(e,t);break;case"conversation_deleted":Fa(e,t);break;case"turn_completed":Oa(e,t);break;case"conversation_closed":Ha(e,t);break;case"claude_output":e.handleAssistantOutputFrame(t.conversationId,t.data);break;case"yeaft_output":case"yeaft_session_output":case"session_output":e.handleYeaftOutput(t);break;case"yeaft_asset_ready":{let n=t.conversationId||e.yeaftConversationId;if(!n||!t.image)break;e.messagesMap[n]||(e.messagesMap[n]=[]),e.messagesMap[n].some(r=>r?.type==="chat-image"&&r.assetId===t.image.assetId&&r.sessionId===t.sessionId&&r.turnId===t.turnId)||e.addMessageToConversation(n,{type:"chat-image",...t.image,sessionId:t.sessionId||null,vpId:t.vpId||null,speakerVpId:t.vpId||null,turnId:t.turnId||null,threadId:t.threadId||null});break}case"yeaft_history_chunk":za(e,t);break;case"yeaft_history_outline":e.handleYeaftHistoryOutline(t);break;case"yeaft_history_search_result":e.handleYeaftHistorySearchResult(t);break;case"yeaft_history_window":{let n=Wa(e,t);e.handleYeaftHistoryWindow(t,n);break}case"yeaft_tool_stats":{e._fetchYeaftToolStatsTimer&&(clearTimeout(e._fetchYeaftToolStatsTimer),e._fetchYeaftToolStatsTimer=null);let n=t?.snapshot,i=n&&typeof n=="object"&&!Array.isArray(n)?n:{};e.yeaftToolStats={snapshot:i,registered:Array.isArray(t?.registered)?t.registered:[],unused:Array.isArray(t?.unused)?t.unused:[],error:typeof t?.error=="string"?t.error:null,notice:typeof t?.notice=="string"?t.notice:null,fetchedAt:Date.now()},e.yeaftToolStatsLoading=!1;break}case"yeaft_debug_history":{let n=typeof t?.requestId=="string"?t.requestId:"",i=typeof t?.detailTurnId=="string"&&t.detailTurnId;if(n&&!i&&n!==e._yeaftDebugHistoryLatestListRequestId)break;e._fetchYeaftDebugHistoryTimer&&(clearTimeout(e._fetchYeaftDebugHistoryTimer),e._fetchYeaftDebugHistoryTimer=null),e._yeaftDebugHistoryInFlightKey=null;let r=Array.isArray(t?.turns)?t.turns:[],o=t?.search?Bf:Nf,a=i?r:r.slice(-o),l=new Set(a.map(m=>m?.turnId).filter(Boolean)),c=Wf(Array.isArray(t?.loops)?t.loops:[]),d=i?c:c.filter(m=>!m?.turnId||l.has(m.turnId)),u=Array.isArray(t?.dreamEvents)?t.dreamEvents:[];e.yeaftDebugHistoryHasMore=!!t?.hasMore||!i&&r.length>a.length,!t?.detailTurnId&&Number.isFinite(t?.limit)&&t.limit>0&&(e.yeaftDebugHistoryLimit=Math.min(o,t.limit)),(!e.yeaftDebugTurnsById||typeof e.yeaftDebugTurnsById!="object")&&(e.yeaftDebugTurnsById={}),Array.isArray(e.yeaftDebugLoops)||(e.yeaftDebugLoops=[]),Array.isArray(e.yeaftDebugTurnOrder)||(e.yeaftDebugTurnOrder=[]);let p=i?{...e.yeaftDebugTurnsById}:{};for(let m of a){let w=m?.turnId;if(!w)continue;let E=p[w];if(E){let R=m?.detailsLoaded?{...E,...m}:{...m,...E};R.memoryLoaded==null&&E.memoryLoaded!=null&&(R.memoryLoaded=E.memoryLoaded),R.memoryAdjust==null&&E.memoryAdjust!=null&&(R.memoryAdjust=E.memoryAdjust),p[w]=R}else p[w]=m}e.yeaftDebugTurnsById=p;let f=m=>m?.loopInstanceId||`${m?.turnId||""}#${m?.loopNumber||0}`,g=e.yeaftDebugLoops,v=new Map;for(let m of g)m&&v.set(f(m),m);let y=new Set,A=[];for(let m of d){if(!m)continue;let w=f(m);y.add(w),A.push(v.get(w)||m)}if(i)for(let m of g)!m||y.has(f(m))||A.push(m);e.yeaftDebugLoops=A;let x=new Set,k=[],b=m=>{!m||x.has(m)||(x.add(m),k.push(m))};if(i){for(let m of e.yeaftDebugTurnOrder)b(m);for(let m of a)b(m?.turnId)}else for(let m of a)b(m?.turnId);e.yeaftDebugTurnOrder=i?k:k.slice(-o);for(let m of u){if(!m)continue;let w=null,E=m.sessionId||m.groupId;typeof m.target=="string"&&m.target.includes("/")?w=m.target:typeof E=="string"&&E?w=`group/${E}`:w="*",typeof e._appendDreamEvent=="function"&&e._appendDreamEvent(w,m),m.type==="dream_progress"&&typeof e.handleYeaftOutput=="function"&&e.handleYeaftOutput({event:m})}e.yeaftDebugHistoryLoading=!1,e.yeaftDebugHistoryError=typeof t?.error=="string"?t.error:null,e.yeaftDebugHistoryFetchedAt=Date.now();break}case"chat_image":t.conversationId&&t.fileId&&e.addMessageToConversation(t.conversationId,{type:"chat-image",fileId:t.fileId,previewToken:t.previewToken,mimeType:t.mimeType});break;case"error":{let n=t.conversationId||e.currentConversation,i=["Permission denied","Agent not found","No conversation selected","Agent is still syncing","No agent available","Agent access denied"].some(c=>t.message?.includes(c));if((t.message?.includes("Agent is still syncing")||t.message?.includes("Agent not found"))&&pt(e),["No conversation selected","Agent is still syncing","No agent available"].some(c=>t.message?.includes(c))&&n&&(delete e.processingConversations[n],ke(e,n),e.finishStreamingForConversation(n)),i&&n){let c=e.messagesMap[n];if(c&&c.length>0)for(let d=c.length-1;d>=0&&d>=c.length-5;d--){let u=c[d];if(u&&u.type==="error"&&u._sysErrBaseContent!==void 0){if(u._sysErrBaseContent===t.message&&Date.now()-(u._sysErrFirstAt||0)<=3e3){u._sysErrCount=(u._sysErrCount||1)+1,u.content=`${u._sysErrBaseContent} (\xD7${u._sysErrCount})`,u._sysErrRemoveTimer&&(clearTimeout(u._sysErrRemoveTimer),u._sysErrRemoveTimer=setTimeout(()=>{let p=e.messagesMap[n];if(p){let f=p.findIndex(g=>g.id===u.id);f>=0&&p.splice(f,1)}},5e3));return}break}}}let o=Date.now().toString()+Math.random().toString(36).substr(2,9),a={type:"error",content:t.message,transient:i,dbMessageId:i?"err_"+o:void 0};i&&(a._sysErrBaseContent=t.message,a._sysErrCount=1,a._sysErrFirstAt=Date.now()),e.addMessageToConversation(n,a);let l=null;if(i&&n){let c=e.messagesMap[n];c&&c.length>0&&(l=c[c.length-1])}if(i&&n&&l){let c=n,d="err_"+o;l._sysErrRemoveTimer=setTimeout(()=>{let u=e.messagesMap[c];if(u){let p=u.findIndex(f=>f.id===d);p>=0&&u.splice(p,1)}},5e3)}!i&&n&&(delete e.processingConversations[n],ke(e,n),e.finishStreamingForConversation(n));break}case"history_sessions_list":if(t.requestId&&e._historySessionsRequestId&&t.requestId!==e._historySessionsRequestId)break;e.historySessions=t.sessions||[],e.historySessionsLoading=!1;break;case"folders_list":if(t.requestId&&e._foldersRequestId&&t.requestId!==e._foldersRequestId)break;e.folders=t.folders||[],e.foldersLoading=!1,e._foldersResolve&&(e._foldersResolve(),e._foldersResolve=null);break;case"models_list":if(t.requestId&&e._modelsRequestId&&t.requestId!==e._modelsRequestId)break;e.providerModels=t.models||[],e.providerModelsLoading=!1,e._modelsTimeout&&(clearTimeout(e._modelsTimeout),e._modelsTimeout=null),e._modelsResolve&&(e._modelsResolve(e.providerModels),e._modelsResolve=null);break;case"conversation_refresh":Na(e,t);break;case"session_pinned":if(t.conversationId){let n=t.agentId?{agentId:t.agentId}:{};if(typeof e.setSessionPinned=="function")e.setSessionPinned(t.conversationId,!!t.pinned,n);else try{let i=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();i&&typeof i.applyPinState=="function"&&i.applyPinState(t.conversationId,!!t.pinned,t.agentId||e.yeaftSessionAgentById?.[t.conversationId]||e.currentAgent||null)}catch{}}break;case"execution_cancelled":Ba(e,t);break;case"slash_commands_update":if(Array.isArray(t.slashCommands)){let n=[...new Set(t.slashCommands)];if(t.commandSet==="yeaft"){let i=t.conversationId&&t.conversationId!=="__preload__"?t.conversationId:null,r=t.agentId&&e.yeaftConversationIdsByAgent?.[t.agentId]||null,o=i||r;o&&(e.slashCommandsMap[o]=n);let a=e.yeaftConversationId||null,l=t.agentId?e.currentAgent===t.agentId&&(r===a||i===a):i===a;a&&l&&(e.slashCommandsMap[a]=n)}else t.conversationId&&(e.slashCommandsMap[t.conversationId]=n),t.agentId&&(e.slashCommandsMap[`agent:${t.agentId}`]=n)}t.slashCommandDescriptions&&(e.slashCommandDescriptions={...e.slashCommandDescriptions,...t.slashCommandDescriptions});break;case"compact_status":{let n=t.conversationId;e.compactStatus={conversationId:n,status:t.status,message:t.message},t.status==="completed"?setTimeout(()=>{e.compactStatus?.conversationId===n&&e.compactStatus?.status==="completed"&&(e.compactStatus=null)},3e3):t.status==="compacting"&&setTimeout(()=>{e.compactStatus?.conversationId===n&&e.compactStatus?.status==="compacting"&&(e.compactStatus=null)},3e4)}break;case"pong_session":{let n=t.conversationId;if(!n)break;if(e._pongTimeouts?.[n]&&(clearTimeout(e._pongTimeouts[n]),delete e._pongTimeouts[n]),t.status==="unsupported"){ke(e,n),Da(e,n);break}if(t.status==="ok")e.sessionHealth?.[n]&&delete e.sessionHealth[n],!t.isProcessing&&e.processingConversations[n]&&(delete e.processingConversations[n],ke(e,n),e.finishStreamingForConversation(n));else if(e.sessionHealth||(e.sessionHealth={}),e.sessionHealth[n]={status:t.status},t.status==="session-lost"||t.status==="cli-exited"){if(e._autoRefreshed||(e._autoRefreshed={}),!e._autoRefreshed[n]){e._autoRefreshed[n]=!0;let i=e.conversations.find(r=>r.id===n);e.sendWsMessage({type:"refresh_conversation",conversationId:n,agentId:i?.agentId})}delete e.processingConversations[n],ke(e,n),e.finishStreamingForConversation(n)}break}case"ask_user_question":if(t.conversationId){let n=()=>{let i=e.messagesMap[t.conversationId]||[];for(let r=i.length-1;r>=0;r--)if(i[r].type==="tool-use"&&i[r].toolName==="AskUserQuestion"&&!i[r].askRequestId)return i[r].askRequestId=t.requestId,i[r].askQuestions=t.questions,!0;return!1};if(!n()){let i=0,r=setInterval(()=>{i++,(n()||i>=10)&&clearInterval(r)},200)}}break;case"restart_agent_ack":window.dispatchEvent(new CustomEvent("agent-restart-ack",{detail:{agentId:t.agentId}}));break;case"upgrade_agent_ack":window.dispatchEvent(new CustomEvent("agent-upgrade-ack",{detail:{agentId:t.agentId,success:t.success,error:t.error,alreadyLatest:t.alreadyLatest,version:t.version,reason:t.reason,currentNode:t.currentNode,requiredNode:t.requiredNode}}));break;case"terminal_created":case"terminal_output":case"terminal_closed":case"terminal_error":case"file_content":case"file_saved":case"directory_listing":case"git_status_result":case"git_diff_result":case"git_op_result":case"file_op_result":case"file_search_result":t.type,t.type,window.dispatchEvent(new CustomEvent("workbench-message",{detail:t}));break;case"server_updating":e.connectionState="updating";break;case"context_usage":e.contextUsage={inputTokens:t.inputTokens,maxTokens:t.maxTokens,percentage:t.percentage,conversationId:t.conversationId};break;case"mcp_servers_list":case"mcp_config_updated":t.agentId&&t.servers&&(e.mcpServers[t.agentId]=t.servers);break;case"expert_roles_list":t.roles&&(e.expertRoleDefinitions=t.roles);break;case"llm_models_discovered":t.agentId&&(e.llmModelDiscovery=e.llmModelDiscovery||{},e.llmModelDiscovery[t.agentId]=t);break;case"llm_config":case"llm_config_updated":if(t.agentId){let n=t.agentConfig||Hf(t),i=t.effectiveConfig||n;e.llmConfig[t.agentId]={providers:t.providers||i.providers||[],primaryModel:t.primaryModel||i.primaryModel||null,fastModel:t.fastModel||i.fastModel||null,language:t.language||n.language||i.language||"en",needsSetup:t.needsSetup??i.needsSetup??!1,agentConfig:n,effectiveConfig:i,requestId:t.requestId||null,statusRefreshError:t.statusRefreshError||null,error:t.error||null,loaded:!0}}break;case"models_dev_registry":if(e.modelsDevRegistry={registry:t.registry||{},fetchedAt:t.fetchedAt||Date.now(),error:t.error||null,loaded:!0},e._modelsDevPending){let n=e._modelsDevPending;e._modelsDevPending=null,n.timer&&clearTimeout(n.timer);for(let i of n.resolvers)i(e.modelsDevRegistry)}break;case"yeaft_settings":case"yeaft_settings_updated":t.agentId&&(e.yeaftSettings[t.agentId]={maxConcurrentThreads:t.maxConcurrentThreads??6,autoArchiveIdleDays:t.autoArchiveIdleDays??30,error:t.error||null,loaded:!0,at:Date.now()});break;case"search_settings":case"search_settings_updated":{let n={backend:t.backend||"tavily",tavilyKeyConfigured:!!t.tavilyKeyConfigured,tavilyKeyMasked:t.tavilyKeyMasked||null,disableHtmlFallback:!!t.disableHtmlFallback,error:t.error||null,loaded:!0,at:Date.now()};e.searchSettings=n;let i=e._searchPending,r=t.type==="search_settings"?"load":"update";i&&i[r]&&(i[r](n),delete i[r]);break}case"tavily_usage":{let n=t.error?{error:t.error}:{plan:t.plan,used:t.used,limit:t.limit,paygoUsed:t.paygoUsed,paygoLimit:t.paygoLimit};e.tavilyUsage=n,e.tavilyUsageLoading=!1;let i=e._searchPending;i&&i.usage&&(i.usage(n),delete i.usage);break}case"yeaft_mcp_list_result":case"yeaft_mcp_add_result":case"yeaft_mcp_remove_result":case"yeaft_mcp_reload_result":case"yeaft_mcp_updated":{if(Array.isArray(t.servers)&&(e.yeaftMcpServers=t.servers),t.runtime&&typeof t.runtime=="object"&&(e.yeaftMcpRuntime={connected:!!t.runtime.connected,toolCount:t.runtime.toolCount||0,perServer:Array.isArray(t.runtime.perServer)?t.runtime.perServer:[]}),e.yeaftMcpLoading=!1,e.yeaftMcpError=t.error||null,t.requestId){let n=e._mcpPending;n&&n[t.requestId]&&(n[t.requestId](t),delete n[t.requestId])}break}case"conversation_mcp_update":t.conversationId&&t.servers&&(e.conversationMcpServers[t.conversationId]=t.servers),t.conversationId&&t.serverTools&&(e.conversationMcpServerTools[t.conversationId]=t.serverTools);break;case"btw_stream":e.appendBtwDelta(t.delta);break;case"btw_done":e.btwLoading=!1,t.btwSessionId&&(e.btwSessionId=t.btwSessionId);break;case"btw_error":{let n=e.btwMessages[e.btwMessages.length-1];n&&n.role==="assistant"&&(n.content="Error: "+t.error),e.btwLoading=!1;break}case"background_task_started":case"background_task_output":break;case"subagent_started":t.conversationId&&t.subagentId&&e.addSubagent(t.conversationId,{id:t.subagentId,slug:t.slug,type:t.subagentType,description:t.description,parentToolUseId:t.parentToolUseId});break;case"subagent_message":t.conversationId&&t.subagentId&&t.message&&e.appendSubagentMessage(t.conversationId,t.subagentId,t.message);break;case"subagent_completed":t.conversationId&&t.subagentId&&e.completeSubagent(t.conversationId,t.subagentId);break}}var Nf,Bf,nl=O(()=>{ct();Cn();bt();Nt();Ot();vr();tl();_n();Nf=1,Bf=5});function rl(){return Object.values(il).sort((t,s)=>t.order-s.order).map(t=>({teamId:t.id,team:t,roles:Object.values(dt).filter(s=>s.group===t.id)}))}function ol(e){let t=[];for(let s of Object.values(dt)){t.push({roleId:s.id,roleName:s.name,roleTitle:s.title,actionId:null,actionName:null,searchText:`${s.name} ${s.fullName} ${s.title} ${s.titleEn}`.toLowerCase(),displayText:s.name,group:s.group});for(let n of s.actions)t.push({roleId:s.id,roleName:s.name,roleTitle:s.title,actionId:n.id,actionName:n.name,searchText:`${s.name} ${s.fullName} ${s.title} ${n.name} ${n.nameEn}`.toLowerCase(),displayText:`${s.name}\xB7${n.name}`,group:s.group})}if(e&&e.length>0){for(let s of e)if(t.push({roleId:s.id,roleName:s.name,roleTitle:s.title,actionId:null,actionName:null,searchText:`${s.name} ${s.fullName||""} ${s.title} ${s.titleEn||""}`.toLowerCase(),displayText:s.name,group:"custom"}),s.actions)for(let n of s.actions)t.push({roleId:s.id,roleName:s.name,roleTitle:s.title,actionId:n.id,actionName:n.name,searchText:`${s.name} ${s.fullName||""} ${s.title} ${n.name} ${n.nameEn||""}`.toLowerCase(),displayText:`${s.name}\xB7${n.name}`,group:"custom"})}return t}function qt(e,t){let s=dt[e.role];if(s){if(e.action){let n=s.actions.find(i=>i.id===e.action);return n?`${s.name}\xB7${n.name}`:s.name}return s.name}if(t){let n=t.find(i=>i.id===e.role);if(n){if(e.action){let i=n.actions?.find(r=>r.id===e.action);return i?`${n.name}\xB7${i.name}`:n.name}return n.name}}return e.role}function yr(e,t,s,n="zh-CN"){if(!e||e.length===0||!t||t.length===0)return null;let i=n==="zh-CN";if(!e.some(l=>!dt[l.role]&&t.some(c=>c.id===l.role)))return null;if(e.length===1){let{role:l,action:c}=e[0],d=t.find(p=>p.id===l);if(!d)return null;let u;if(c&&d.actions){let p=d.actions.find(f=>f.id===c);p?s?(u=(i?p.messageTemplate:p.messageTemplateEn)||"",u+=s):u=(i?p.defaultMessage:p.defaultMessageEn)||"":u=((i?d.messagePrefix:d.messagePrefixEn)||"")+(s||"")}else u=((i?d.messagePrefix:d.messagePrefixEn)||"")+(s||"");return{effectivePrompt:u}}let o=[];for(let{role:l,action:c}of e){let d=t.find(p=>p.id===l),u=dt[l];if(d)if(c){let p=d.actions?.find(f=>f.id===c);p&&o.push((i?p.messageTemplate:p.messageTemplateEn)||"")}else o.push((i?d.messagePrefix:d.messagePrefixEn)||"");else if(u)return null}return o.length===0?null:{effectivePrompt:o.join(`
|
|
3
|
+
${u}`:u,p=!0;break}}if(!p){for(let f=l.length-1;f>=0;f--)if(l[f].type==="tool-use"&&!l[f].hasResult){l[f].hasResult=!0,l[f].toolResult=u;break}}}n.currentTool=null}else if(!i&&(typeof o=="string"&&o.trim()||Array.isArray(s.message?.attachments)&&s.message.attachments.length>0)){let l=s.message?.clientMessageId||s.clientMessageId||null,c={type:"user",content:o,clientMessageId:l},d=e.messagesMap[t]||[];if(d.some(p=>Mn(p,c))){if(l){for(let p=d.length-1;p>=0;p--)if(d[p].type==="user"&&d[p].clientMessageId===l){s.dbMessageId&&!d[p].dbMessageId&&(d[p].dbMessageId=s.dbMessageId),s.message?.id&&!d[p].messageId&&(d[p].id=s.message.id,d[p].messageId=s.message.id),s.ts&&!d[p].ts&&(d[p].ts=s.ts),ja(e,d[p]);break}}}else{let p=e.addMessageToConversation(t,{...s.message?.id?{id:s.message.id,messageId:s.message.id}:{},...s.ts?{ts:s.ts}:{},type:"user",content:o,...s.message?.attachments?{attachments:s.message.attachments}:{},...l?{clientMessageId:l}:{}});ja(e,p)}}}else if(s.type==="result"){delete e.processingConversations[t],ke(e,t);let i=e.conversations.find(c=>c.id===t);i&&i.connecting&&(i.connecting=!1);let r=e._currentYeaftSessionId||null;if(e._currentYeaftTurnId&&e.activeVpTurns[e._currentYeaftTurnId]){let{[e._currentYeaftTurnId]:c,...d}=e.activeVpTurns;!r&&c?.sessionId&&(r=c.sessionId),e.activeVpTurns=d}if(r&&e._currentYeaftVpId&&e.vpStatuses){let c=e._currentYeaftTurnId||null,d={...e.vpStatuses||{}},u=!1;for(let[p,f]of Object.entries(d))!f||f.vpId!==e._currentYeaftVpId||(f.sessionId||f.groupId||null)!==r||c&&f.turnId&&f.turnId!==c||(d[p]={...f,state:"idle",turnId:null,since:Date.now()},u=!0);u&&(e.vpStatuses=d)}r&&typeof e.clearYeaftSessionProcessingIfIdle=="function"&&e.clearYeaftSessionProcessingIfIdle(r),e._closedAt||(e._closedAt={}),e._closedAt[t]=Date.now(),e._turnCompletedConvs||(e._turnCompletedConvs=new Set),e._turnCompletedConvs.add(t),n.currentTool=null,xt(e,t);let o=e.messagesMap[t]||[],a=s.result_text||"";if(typeof a=="string"&&a.trim()){let c=!1;for(let d=o.length-1;d>=0;d--){if(o[d].type==="assistant"){c=!0;break}if(o[d].type==="user")break}c||e.appendToAssistantMessageForConversation(t,a.trim())}e.finishStreamingForConversation(t),!e.promoteCompletedYeaftHistoryOutline?.(t,e._currentYeaftTurnId||null)&&r&&e.invalidateYeaftHistoryOutline?.(r),e.sweepStaleStreamingForConversation(t)}}var Ga=O(()=>{Nt();_n();cr()});function Bt(e){if(e==null)return e;try{return JSON.parse(JSON.stringify(e))}catch{return e}}function En(e,t){if(!t)return e??null;if(Object.prototype.hasOwnProperty.call(t,"base"))return Bt(t.base)??null;if(Object.prototype.hasOwnProperty.call(t,"replacement"))return Bt(t.replacement)??null;let s=e&&typeof e=="object"&&!Array.isArray(e)?Bt(e):{};if(t.set&&typeof t.set=="object")for(let[n,i]of Object.entries(t.set))s[n]=Bt(i);if(t.body&&typeof t.body=="object"){let n=s.body&&typeof s.body=="object"&&!Array.isArray(s.body)?{...s.body}:{};for(let[r,o]of Object.entries(t.body))r==="messages"||r==="messagesFrom"||r==="messagesAppend"||r==="messagesKey"||(n[r]=Bt(o));let i=t.body.messagesKey==="messages"||t.body.messagesKey==="input"?t.body.messagesKey:Array.isArray(n.messages)||Object.prototype.hasOwnProperty.call(t.body,"messages")?"messages":"input";if(Array.isArray(t.body.messages))n[i]=Bt(t.body.messages)||[];else if(Array.isArray(t.body.messagesAppend)){let r=Array.isArray(n[i])?n[i]:[],o=Number.isFinite(Number(t.body.messagesFrom))?Number(t.body.messagesFrom):r.length;n[i]=r.slice(0,o).concat(Bt(t.body.messagesAppend)||[])}s.body=n}return s}function Ya(e,t){return!t||!Object.prototype.hasOwnProperty.call(t,"rawRequestDelta")?e??null:En(e??null,t.rawRequestDelta)}function zs(e){if(!e)return 0;let t=typeof e=="string"?e:String(e),s=0,n=0;for(let i of t){let r=i.codePointAt(0)||0;r>=19968&&r<=40959||r>=12352&&r<=12447||r>=12448&&r<=12543||r>=44032&&r<=55215?s+=1:n+=1}return Math.ceil(s+n/4)}function Ff(e){let t=[],s=[];if(!e)return{messageText:t,toolText:s};let n=e.content;if(typeof n=="string")e.role==="tool"?s.push(n):t.push(n);else if(Array.isArray(n))for(let i of n){if(!i||typeof i!="object")continue;let r=i.type;if(r==="text"&&typeof i.text=="string")t.push(i.text);else if(r==="tool_use"){if(s.push(String(i.name||"")),i.input!==void 0)try{s.push(JSON.stringify(i.input))}catch{}}else if(r==="tool_result"){let o=i.content;if(typeof o=="string")s.push(o);else if(Array.isArray(o)){for(let a of o)if(a)if(typeof a=="string")s.push(a);else if(typeof a=="object"&&typeof a.text=="string")s.push(a.text);else try{s.push(JSON.stringify(a))}catch{}}else if(o!==void 0)try{s.push(JSON.stringify(o))}catch{}}else try{t.push(JSON.stringify(i))}catch{}}if(Array.isArray(e.toolCalls)){for(let i of e.toolCalls)if(i&&(s.push(String(i.name||"")),i.input!==void 0))try{s.push(JSON.stringify(i.input))}catch{}}return{messageText:t,toolText:s}}function Qa(e){let t=0,s=0;if(e&&Array.isArray(e.messages))for(let r of e.messages){let{messageText:o,toolText:a}=Ff(r);for(let l of o)t+=zs(l);for(let l of a)s+=zs(l)}let n=0,i=0;if(e&&typeof e.response=="string"&&(n+=zs(e.response)),e&&Array.isArray(e.toolCalls)){for(let r of e.toolCalls)if(r&&(i+=zs(String(r.name||"")),r.input!==void 0))try{i+=zs(JSON.stringify(r.input))}catch{}}return{inputMessageTokens:t,inputToolTokens:s,outputMessageTokens:n,outputToolTokens:i,inputTotalEstimated:t+s,outputTotalEstimated:n+i}}function hr(e,t,s){let n=Math.max(0,Math.floor(Number(e)||0)),i=Math.max(0,Number(t)||0),r=Math.max(0,Number(s)||0),o=i+r;if(n===0)return{message:0,tool:0};if(o===0)return{message:n,tool:0};let a=Math.round(i/o*n),l=Math.min(n,Math.max(0,a));return{message:l,tool:n-l}}function Xa(e){if(e==null||e==="")return"";let t;if(typeof e=="number")t=e;else if(typeof e=="string"){let o=Date.parse(e);if(Number.isNaN(o)){let a=Number(e);if(!Number.isFinite(a))return"";t=a}else t=o}else return"";if(!Number.isFinite(t))return"";let s=new Date(t),n=String(s.getHours()).padStart(2,"0"),i=String(s.getMinutes()).padStart(2,"0"),r=String(s.getSeconds()).padStart(2,"0");return`${n}:${i}:${r}`}var vr=O(()=>{});function Of(e,t){if(!e||!!!t?.online)return!1;let n=!e.online,i=e.online&&e.version!=null&&t.version!=null&&e.version!==t.version;return n||i}function Za(e,t){let s=e.lastViewedConversation||localStorage.getItem("lastViewedConversation");if(!s)return!1;let n=e.conversations.find(r=>r.id===s);if(!n)return!1;let i=t?.agentId||e.currentAgent;return t&&(e.currentAgent=t.agentId,e.currentAgentInfo=t.agentInfo,e.sendWsMessage({type:"select_agent",agentId:t.agentId,silent:!0})),e.activeConversations=[s],e.currentWorkDir=n.workDir,e.messagesMap[s]=[],e.sendWsMessage({type:"select_conversation",conversationId:s}),e.sendWsMessage({type:"sync_messages",conversationId:s,turns:5}),e.sendWsMessage({type:"refresh_conversation",conversationId:s}),!0}function Ja(e,t){let s=Array.isArray(e.agents)?e.agents:[],n=e._hasHandledAgentList===!0,i=e.currentAgent||null,r=!!(i&&s.some(a=>a&&a.id===i&&a.online));e.agents=t.agents,e._hasHandledAgentList=!0;let o=e.currentAgent||null;if(o){let a=e._yeaftAgentSeen&&e._yeaftAgentSeen.id===o?e._yeaftAgentSeen:null,l=t.agents.find(c=>c.id===o)||null;e.currentView==="yeaft"&&Of(a,l)&&(e._yeaftReconnectCatchUpPending=!0),l?e._yeaftAgentSeen={id:o,online:!!l.online,version:l.version!=null?l.version:null}:a?a.online&&(e._yeaftAgentSeen={id:o,online:!1,version:a.version}):e._yeaftAgentSeen={id:o,online:!1,version:null}}{let a=new Set(t.agents.map(l=>l.id));for(let l of t.agents)e.proxyPorts[l.id]=l.proxyPorts||[],l.yeaftStatus&&typeof e.cacheYeaftAgentStatus=="function"&&e.cacheYeaftAgentStatus(l.id,l.yeaftStatus);for(let l of Object.keys(e.proxyPorts))a.has(l)||delete e.proxyPorts[l]}if(e.currentAgent){let a=t.agents.find(l=>l.id===e.currentAgent);a&&(e.currentAgentInfo=a)}if(e.currentView==="yeaft"&&!e.currentAgent){let a=t.agents.find(l=>l.online);a&&(e.currentAgent=a.id,e.currentAgentInfo=a)}if(e.currentView==="yeaft"&&typeof e.loadOpenedYeaftSessionsForConnectedAgents=="function"){let a=t.agents.filter(l=>l&&l.online&&l.id).map(l=>l.id);e.loadOpenedYeaftSessionsForConnectedAgents(a)}{let a=[],l=new Set;for(let d of t.agents)for(let u of d.conversations||[])l.has(u.id)||(l.add(u.id),a.push({...u,type:u.type,agentId:d.id,agentName:d.name}),u.title&&(u.customTitle&&(e.customConversationTitles[u.id]=u.title),e.conversationTitles[u.id]||(e.conversationTitles[u.id]=u.title)));for(let d of a){d.agentOnline=!0;let u=e.conversations.find(p=>p.id===d.id);if(u)u.claudeSessionId=d.claudeSessionId||u.claudeSessionId,u.processing=d.processing,u.userId=d.userId,u.username=d.username,u.agentId=d.agentId,u.agentName=d.agentName,u.agentOnline=!0,d.type&&(u.type=d.type),d.name!==void 0&&(u.name=d.name);else{let p=e._recentlyDeletedSessions?.[d.id];if(p&&Date.now()-p<15e3)continue;e.conversations.push(d)}d.pinned&&!e.pinnedSessions.includes(d.id)&&e.pinnedSessions.push(d.id)}let c=new Set(t.agents.map(d=>d.id));e.conversations=e.conversations.filter(d=>{if(l.has(d.id)||e.activeConversations.includes(d.id))return!0;if(d.agentId&&c.has(d.agentId)){let u=e._recentlyDeletedSessions?.[d.id];return u&&Date.now()-u<15e3||(delete e.messagesMap[d.id],delete e.processingConversations[d.id],ke(e,d.id),delete e.executionStatusMap[d.id]),!1}return d.agentId&&!c.has(d.agentId)&&(d.agentOnline=!1),!0});for(let d of a)if(d.processing&&!Ht(e,d.id)&&!e._turnCompletedConvs?.has(d.id))e.processingConversations[d.id]=!0;else if(e.processingConversations[d.id]){delete e.processingConversations[d.id],ke(e,d.id);let u=e.executionStatusMap[d.id];u&&(u.currentTool=null),e.finishStreamingForConversation(d.id)}for(let d of Object.keys(e.processingConversations))if(!l.has(d)){if(d.startsWith("yeaft-"))continue;delete e.processingConversations[d],ke(e,d);let u=e.executionStatusMap[d];u&&(u.currentTool=null),e.finishStreamingForConversation(d)}}if(localStorage.setItem("pinned-sessions",JSON.stringify(e.pinnedSessions)),e._closedAt){let a=Date.now();for(let l of Object.keys(e._closedAt))a-e._closedAt[l]>3e4&&(delete e._closedAt[l],e._turnCompletedConvs?.delete(l))}if(e.currentAgent){let a=t.agents.find(l=>l.id===e.currentAgent&&l.online);if(a){let l=!!e._yeaftReconnectCatchUpPending,d=l||n&&!r;if(e.currentAgentInfo=a,d&&(e._offlineConversationRestoreKey=null,e.sendWsMessage({type:"select_agent",agentId:e.currentAgent,silent:!0})),e.currentView==="yeaft"&&typeof e.requestYeaftSessionBootstrap=="function"){e._yeaftReconnectCatchUpPending=!1;let u=l||!e.yeaftSessionReady||!e.yeaftModel||!e.yeaftStatus;(u||l)&&e.requestYeaftSessionBootstrap({forceSessionReady:u,catchUpHistory:l})}if(!d)return;if(e.currentConversation){let u=e.conversations.find(f=>f.id===e.currentConversation);e.sendWsMessage({type:"select_conversation",conversationId:e.currentConversation});let p=e.messagesMap[e.currentConversation]||[];if(p.length>0){let f=p[p.length-1]?.id;e.sendWsMessage({type:"sync_messages",conversationId:e.currentConversation,afterMessageId:f})}else e.sendWsMessage({type:"sync_messages",conversationId:e.currentConversation,turns:5});e.sendWsMessage({type:"refresh_conversation",conversationId:e.currentConversation})}else e.recoveryDismissed||Za(e);return}else{let l=`${e.currentAgent||""}:${e.currentConversation||""}`;e.currentConversation&&(!n||r||e._offlineConversationRestoreKey!==l)&&(e._offlineConversationRestoreKey=l,e.sendWsMessage({type:"select_conversation",conversationId:e.currentConversation}));return}}if(!e.currentConversation&&!e.currentAgent&&!e.recoveryDismissed){let a=e.lastViewedConversation||localStorage.getItem("lastViewedConversation"),l=e.lastUsedAgent;if(a){let c=e.conversations.find(d=>d.id===a);if(c){let d=t.agents.find(u=>u.id===c.agentId&&u.online);if(d){Za(e,{agentId:c.agentId,agentInfo:d});return}}}l&&(e.agents.find(d=>d.id===l&&d.online)?e.selectAgent(l):e.checkPendingRecovery())}}function el(e,t){e.agentSwitching=!1;let s=e.currentAgent===t.agentId,n={id:t.agentId,name:t.agentName,workDir:t.workDir,capabilities:t.capabilities||["terminal","file_editor","background_tasks"],version:t.version||null};if(typeof e.activateYeaftAgent=="function"?e.activateYeaftAgent(t.agentId,n):(e.currentAgent=t.agentId,e.currentAgentInfo=n),Array.isArray(t.slashCommands)){let d=[...new Set(t.slashCommands)];e.slashCommandsMap[`agent:${t.agentId}`]=d}t.slashCommandDescriptions&&(e.slashCommandDescriptions={...e.slashCommandDescriptions,...t.slashCommandDescriptions});let i=t.conversations||[],r=new Set,o=i.filter(d=>r.has(d.id)?!1:(r.add(d.id),!0)).map(d=>({...d,agentId:t.agentId,agentName:t.agentName}));if(s&&e.currentConversation){let d=i.find(u=>u.id===e.currentConversation);d&&!o.find(u=>u.id===d.id)&&o.push({...d,agentId:t.agentId,agentName:t.agentName})}let a=new Set(o.map(d=>d.id)),l=e.conversations.filter(d=>!a.has(d.id));e.conversations=[...l,...o];for(let d of i)d.title&&(d.customTitle&&(e.customConversationTitles[d.id]=d.title),e.conversationTitles[d.id]||(e.conversationTitles[d.id]=d.title));let c=new Set(i.map(d=>d.id));for(let d of i)if(d.processing&&!Ht(e,d.id)&&!e._turnCompletedConvs?.has(d.id))e.processingConversations[d.id]=!0;else if(e.processingConversations[d.id]){delete e.processingConversations[d.id],ke(e,d.id);let u=e.executionStatusMap[d.id];u&&(u.currentTool=null),e.finishStreamingForConversation(d.id)}for(let d of Object.keys(e.processingConversations))if(!c.has(d)){if(d.startsWith("yeaft-"))continue;if(!l.some(p=>p.id===d)){delete e.processingConversations[d],ke(e,d);let p=e.executionStatusMap[d];p&&(p.currentTool=null),e.finishStreamingForConversation(d)}}if(s&&e.currentConversation){let d=e.conversations.find(u=>u.id===e.currentConversation);e.currentWorkDir=d?.workDir||e.currentWorkDir||t.workDir,pt(e),e.sendWsMessage({type:"select_conversation",conversationId:e.currentConversation})}else{e.activeConversations=[],e.currentWorkDir=t.workDir;let d=e.lastViewedConversation||localStorage.getItem("lastViewedConversation");d&&e.conversations.find(u=>u.id===d)&&(e.autoRestoreConversation(d),e.pendingRecovery=null)}Xo(e)}var tl=O(()=>{Nt();Ot()});function Hf(e={}){return{providers:e.providers||[],primaryModel:e.primaryModel||null,fastModel:e.fastModel||null,language:e.language||"en"}}function qf(e,t={}){let s=e||{systemPrompt:"",messages:[],rawRequest:null},n={systemPrompt:s.systemPrompt||"",messages:Array.isArray(s.messages)?[...s.messages]:[],rawRequest:s.rawRequest??null};if(t?.base){let i={systemPrompt:t.systemPrompt||"",messages:Array.isArray(t.messages)?t.messages:[],rawRequest:null};return Object.prototype.hasOwnProperty.call(t,"rawRequestDelta")&&(i.rawRequest=En(null,t.rawRequestDelta)),i}if(typeof t?.systemPrompt=="string"&&(n.systemPrompt=t.systemPrompt),Array.isArray(t?.messages))n.messages=t.messages;else if(Array.isArray(t?.messagesAppend)){let i=Number.isFinite(Number(t.messagesFrom))?Number(t.messagesFrom):n.messages.length;n.messages=n.messages.slice(0,i).concat(t.messagesAppend)}return Object.prototype.hasOwnProperty.call(t||{},"rawRequestDelta")&&(n.rawRequest=En(n.rawRequest,t.rawRequestDelta)),n}function Wf(e=[]){let t=new Map;return e.map(s=>{if(!s||!s.requestDelta)return s;let n=s.turnId||"__unknown__",i=t.get(n)||s.requestBase||null,r=i?.rawRequest??null,o=qf(i,s.requestDelta);return t.set(n,o),{...s,systemPrompt:typeof s.systemPrompt=="string"&&s.systemPrompt?s.systemPrompt:o.systemPrompt,messages:Array.isArray(s.messages)&&s.messages.length>0?s.messages:o.messages,rawRequest:s.rawRequest??null,rawRequestBase:r}})}function sl(e,t){let s=Ae();switch(e._lastPongAt=Date.now(),t.type){case"work_center_response":{let n=t.requestId?e.workCenterPending[t.requestId]:null;if(!n)break;clearTimeout(n.timer),delete e.workCenterPending[t.requestId],t.ok?n.resolve(t.data):n.reject(new Error(t.error||"Work Center request failed"));break}case"work_center_event":e.applyWorkCenterEvent(t.agentId,t.event);break;case"auth_result":if(t.success){e.authenticated=!0,t.sessionKey&&(e.sessionKey=lt(t.sessionKey),s.setSessionKey(t.sessionKey)),t.acceptPlaintext===!0&&(e.serverEncryptionRequired=!1),t.role&&(s.role=t.role);let n=e.conversations.map(i=>i.id).filter(Boolean);e.sendWsMessage({type:"get_agents",conversationIds:n.length>0?n:void 0}),e.checkPendingRecovery()}else e.addMessage({type:"error",content:t.error||xe("login.error.loginFailed")}),s.handleAuthFailure?.(void 0,t._wsAuthToken,t._wsAuthGeneration);break;case"agent_list":Ja(e,t),e.workCenterOpen&&e.workCenterAgentId&&e.listWorkItems(e.workCenterAgentId).catch(()=>{});break;case"yeaft_session_hydrate":{let n=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();n&&n.applySnapshot(t.sessions||[],t.agentId||null);break}case"agent_selected":el(e,t),e.workCenterOpen&&e.workCenterAgentId&&e.listWorkItems(e.workCenterAgentId).catch(()=>{});break;case"conversation_created":$a(e,t);break;case"conversation_resumed":Va(e,t);break;case"conversation_selected":if(e.currentConversation===t.conversationId)return;e.activeConversations=[t.conversationId];{let n=e.conversations.find(i=>i.id===t.conversationId);n&&(e.currentWorkDir=n.workDir)}e.messagesMap[t.conversationId]=[],e.saveOpenSessions();break;case"conversation_settings_updated":{let n=e.conversations.find(r=>r.id===t.conversationId);n&&t.disallowedTools!==void 0&&(n.disallowedTools=t.disallowedTools);let i=e.conversationMcpServers[t.conversationId];if(i&&t.disallowedTools){let r=new Set(t.disallowedTools),o=e.conversationMcpServerTools[t.conversationId]||{};for(let a of i){let l=o[a.name];l&&l.length>0?a.enabled=!l.some(c=>r.has(c)):a.enabled=!r.has(`mcp__${a.name}`)}}t.needRestart&&n&&(n.needRestart=!0);break}case"sync_messages_result":qa(e,t);break;case"conversation_deleted":Fa(e,t);break;case"turn_completed":Oa(e,t);break;case"conversation_closed":Ha(e,t);break;case"claude_output":e.handleAssistantOutputFrame(t.conversationId,t.data);break;case"yeaft_output":case"yeaft_session_output":case"session_output":e.handleYeaftOutput(t);break;case"yeaft_asset_ready":{let n=t.conversationId||e.yeaftConversationId;if(!n||!t.image)break;e.messagesMap[n]||(e.messagesMap[n]=[]),e.messagesMap[n].some(r=>r?.type==="chat-image"&&r.assetId===t.image.assetId&&r.sessionId===t.sessionId&&r.turnId===t.turnId)||e.addMessageToConversation(n,{type:"chat-image",...t.image,sessionId:t.sessionId||null,vpId:t.vpId||null,speakerVpId:t.vpId||null,turnId:t.turnId||null,threadId:t.threadId||null});break}case"yeaft_history_chunk":za(e,t);break;case"yeaft_history_outline":e.handleYeaftHistoryOutline(t);break;case"yeaft_history_search_result":e.handleYeaftHistorySearchResult(t);break;case"yeaft_history_window":{let n=Wa(e,t);e.handleYeaftHistoryWindow(t,n);break}case"yeaft_tool_stats":{e._fetchYeaftToolStatsTimer&&(clearTimeout(e._fetchYeaftToolStatsTimer),e._fetchYeaftToolStatsTimer=null);let n=t?.snapshot,i=n&&typeof n=="object"&&!Array.isArray(n)?n:{};e.yeaftToolStats={snapshot:i,registered:Array.isArray(t?.registered)?t.registered:[],unused:Array.isArray(t?.unused)?t.unused:[],error:typeof t?.error=="string"?t.error:null,notice:typeof t?.notice=="string"?t.notice:null,fetchedAt:Date.now()},e.yeaftToolStatsLoading=!1;break}case"yeaft_debug_history":{let n=typeof t?.requestId=="string"?t.requestId:"",i=typeof t?.detailTurnId=="string"&&t.detailTurnId;if(n&&!i&&n!==e._yeaftDebugHistoryLatestListRequestId)break;e._fetchYeaftDebugHistoryTimer&&(clearTimeout(e._fetchYeaftDebugHistoryTimer),e._fetchYeaftDebugHistoryTimer=null),e._yeaftDebugHistoryInFlightKey=null;let r=Array.isArray(t?.turns)?t.turns:[],o=t?.search?Bf:Nf,a=i?r:r.slice(-o),l=new Set(a.map(m=>m?.turnId).filter(Boolean)),c=Wf(Array.isArray(t?.loops)?t.loops:[]),d=i?c:c.filter(m=>!m?.turnId||l.has(m.turnId)),u=Array.isArray(t?.dreamEvents)?t.dreamEvents:[];e.yeaftDebugHistoryHasMore=!!t?.hasMore||!i&&r.length>a.length,!t?.detailTurnId&&Number.isFinite(t?.limit)&&t.limit>0&&(e.yeaftDebugHistoryLimit=Math.min(o,t.limit)),(!e.yeaftDebugTurnsById||typeof e.yeaftDebugTurnsById!="object")&&(e.yeaftDebugTurnsById={}),Array.isArray(e.yeaftDebugLoops)||(e.yeaftDebugLoops=[]),Array.isArray(e.yeaftDebugTurnOrder)||(e.yeaftDebugTurnOrder=[]);let p=i?{...e.yeaftDebugTurnsById}:{};for(let m of a){let w=m?.turnId;if(!w)continue;let E=p[w];if(E){let R=m?.detailsLoaded?{...E,...m}:{...m,...E};R.memoryLoaded==null&&E.memoryLoaded!=null&&(R.memoryLoaded=E.memoryLoaded),R.memoryAdjust==null&&E.memoryAdjust!=null&&(R.memoryAdjust=E.memoryAdjust),p[w]=R}else p[w]=m}e.yeaftDebugTurnsById=p;let f=m=>m?.loopInstanceId||`${m?.turnId||""}#${m?.loopNumber||0}`,g=e.yeaftDebugLoops,v=new Map;for(let m of g)m&&v.set(f(m),m);let y=new Set,A=[];for(let m of d){if(!m)continue;let w=f(m);y.add(w),A.push(v.get(w)||m)}if(i)for(let m of g)!m||y.has(f(m))||A.push(m);e.yeaftDebugLoops=A;let x=new Set,k=[],b=m=>{!m||x.has(m)||(x.add(m),k.push(m))};if(i){for(let m of e.yeaftDebugTurnOrder)b(m);for(let m of a)b(m?.turnId)}else for(let m of a)b(m?.turnId);e.yeaftDebugTurnOrder=i?k:k.slice(-o);for(let m of u){if(!m)continue;let w=null,E=m.sessionId||m.groupId;typeof m.target=="string"&&m.target.includes("/")?w=m.target:typeof E=="string"&&E?w=`group/${E}`:w="*",typeof e._appendDreamEvent=="function"&&e._appendDreamEvent(w,m),m.type==="dream_progress"&&typeof e.handleYeaftOutput=="function"&&e.handleYeaftOutput({event:m})}e.yeaftDebugHistoryLoading=!1,e.yeaftDebugHistoryError=typeof t?.error=="string"?t.error:null,e.yeaftDebugHistoryFetchedAt=Date.now();break}case"chat_image":t.conversationId&&t.fileId&&e.addMessageToConversation(t.conversationId,{type:"chat-image",fileId:t.fileId,previewToken:t.previewToken,mimeType:t.mimeType});break;case"error":{let n=t.conversationId||e.currentConversation,i=["Permission denied","Agent not found","No conversation selected","Agent is still syncing","No agent available","Agent access denied"].some(c=>t.message?.includes(c));if((t.message?.includes("Agent is still syncing")||t.message?.includes("Agent not found"))&&pt(e),["No conversation selected","Agent is still syncing","No agent available"].some(c=>t.message?.includes(c))&&n&&(delete e.processingConversations[n],ke(e,n),e.finishStreamingForConversation(n)),i&&n){let c=e.messagesMap[n];if(c&&c.length>0)for(let d=c.length-1;d>=0&&d>=c.length-5;d--){let u=c[d];if(u&&u.type==="error"&&u._sysErrBaseContent!==void 0){if(u._sysErrBaseContent===t.message&&Date.now()-(u._sysErrFirstAt||0)<=3e3){u._sysErrCount=(u._sysErrCount||1)+1,u.content=`${u._sysErrBaseContent} (\xD7${u._sysErrCount})`,u._sysErrRemoveTimer&&(clearTimeout(u._sysErrRemoveTimer),u._sysErrRemoveTimer=setTimeout(()=>{let p=e.messagesMap[n];if(p){let f=p.findIndex(g=>g.id===u.id);f>=0&&p.splice(f,1)}},5e3));return}break}}}let o=Date.now().toString()+Math.random().toString(36).substr(2,9),a={type:"error",content:t.message,transient:i,dbMessageId:i?"err_"+o:void 0};i&&(a._sysErrBaseContent=t.message,a._sysErrCount=1,a._sysErrFirstAt=Date.now()),e.addMessageToConversation(n,a);let l=null;if(i&&n){let c=e.messagesMap[n];c&&c.length>0&&(l=c[c.length-1])}if(i&&n&&l){let c=n,d="err_"+o;l._sysErrRemoveTimer=setTimeout(()=>{let u=e.messagesMap[c];if(u){let p=u.findIndex(f=>f.id===d);p>=0&&u.splice(p,1)}},5e3)}!i&&n&&(delete e.processingConversations[n],ke(e,n),e.finishStreamingForConversation(n));break}case"history_sessions_list":if(t.requestId&&e._historySessionsRequestId&&t.requestId!==e._historySessionsRequestId)break;e.historySessions=t.sessions||[],e.historySessionsLoading=!1;break;case"folders_list":if(t.requestId&&e._foldersRequestId&&t.requestId!==e._foldersRequestId)break;e.folders=t.folders||[],e.foldersLoading=!1,e._foldersResolve&&(e._foldersResolve(),e._foldersResolve=null);break;case"models_list":if(t.requestId&&e._modelsRequestId&&t.requestId!==e._modelsRequestId)break;e.providerModels=t.models||[],e.providerModelsLoading=!1,e._modelsTimeout&&(clearTimeout(e._modelsTimeout),e._modelsTimeout=null),e._modelsResolve&&(e._modelsResolve(e.providerModels),e._modelsResolve=null);break;case"conversation_refresh":Na(e,t);break;case"session_pinned":if(t.conversationId){let n=t.agentId?{agentId:t.agentId}:{};if(typeof e.setSessionPinned=="function")e.setSessionPinned(t.conversationId,!!t.pinned,n);else try{let i=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();i&&typeof i.applyPinState=="function"&&i.applyPinState(t.conversationId,!!t.pinned,t.agentId||e.yeaftSessionAgentById?.[t.conversationId]||e.currentAgent||null)}catch{}}break;case"execution_cancelled":Ba(e,t);break;case"slash_commands_update":if(Array.isArray(t.slashCommands)){let n=[...new Set(t.slashCommands)];if(t.commandSet==="yeaft"){let i=t.conversationId&&t.conversationId!=="__preload__"?t.conversationId:null,r=t.agentId&&e.yeaftConversationIdsByAgent?.[t.agentId]||null,o=i||r;o&&(e.slashCommandsMap[o]=n);let a=e.yeaftConversationId||null,l=t.agentId?e.currentAgent===t.agentId&&(r===a||i===a):i===a;a&&l&&(e.slashCommandsMap[a]=n)}else t.conversationId&&(e.slashCommandsMap[t.conversationId]=n),t.agentId&&(e.slashCommandsMap[`agent:${t.agentId}`]=n)}t.slashCommandDescriptions&&(e.slashCommandDescriptions={...e.slashCommandDescriptions,...t.slashCommandDescriptions});break;case"compact_status":{let n=t.conversationId;e.compactStatus={conversationId:n,status:t.status,message:t.message},t.status==="completed"?setTimeout(()=>{e.compactStatus?.conversationId===n&&e.compactStatus?.status==="completed"&&(e.compactStatus=null)},3e3):t.status==="compacting"&&setTimeout(()=>{e.compactStatus?.conversationId===n&&e.compactStatus?.status==="compacting"&&(e.compactStatus=null)},3e4)}break;case"pong_session":{let n=t.conversationId;if(!n)break;if(e._pongTimeouts?.[n]&&(clearTimeout(e._pongTimeouts[n]),delete e._pongTimeouts[n]),t.status==="unsupported"){ke(e,n),Da(e,n);break}if(t.status==="ok")e.sessionHealth?.[n]&&delete e.sessionHealth[n],!t.isProcessing&&e.processingConversations[n]&&(delete e.processingConversations[n],ke(e,n),e.finishStreamingForConversation(n));else if(e.sessionHealth||(e.sessionHealth={}),e.sessionHealth[n]={status:t.status},t.status==="session-lost"||t.status==="cli-exited"){if(e._autoRefreshed||(e._autoRefreshed={}),!e._autoRefreshed[n]){e._autoRefreshed[n]=!0;let i=e.conversations.find(r=>r.id===n);e.sendWsMessage({type:"refresh_conversation",conversationId:n,agentId:i?.agentId})}delete e.processingConversations[n],ke(e,n),e.finishStreamingForConversation(n)}break}case"ask_user_question":if(t.conversationId){let n=()=>{let i=e.messagesMap[t.conversationId]||[];for(let r=i.length-1;r>=0;r--)if(i[r].type==="tool-use"&&i[r].toolName==="AskUserQuestion"&&!i[r].askRequestId)return i[r].askRequestId=t.requestId,i[r].askQuestions=t.questions,!0;return!1};if(!n()){let i=0,r=setInterval(()=>{i++,(n()||i>=10)&&clearInterval(r)},200)}}break;case"restart_agent_ack":window.dispatchEvent(new CustomEvent("agent-restart-ack",{detail:{agentId:t.agentId}}));break;case"upgrade_agent_ack":window.dispatchEvent(new CustomEvent("agent-upgrade-ack",{detail:{agentId:t.agentId,success:t.success,error:t.error,alreadyLatest:t.alreadyLatest,version:t.version,reason:t.reason,currentNode:t.currentNode,requiredNode:t.requiredNode}}));break;case"terminal_created":case"terminal_output":case"terminal_closed":case"terminal_error":case"file_content":case"file_saved":case"directory_listing":case"git_status_result":case"git_diff_result":case"git_op_result":case"file_op_result":case"file_search_result":t.type,t.type,window.dispatchEvent(new CustomEvent("workbench-message",{detail:t}));break;case"server_updating":e.connectionState="updating";break;case"context_usage":e.contextUsage={inputTokens:t.inputTokens,maxTokens:t.maxTokens,percentage:t.percentage,conversationId:t.conversationId};break;case"mcp_servers_list":case"mcp_config_updated":t.agentId&&t.servers&&(e.mcpServers[t.agentId]=t.servers);break;case"expert_roles_list":t.roles&&(e.expertRoleDefinitions=t.roles);break;case"llm_models_discovered":t.agentId&&(e.llmModelDiscovery=e.llmModelDiscovery||{},e.llmModelDiscovery[t.agentId]=t);break;case"llm_config":case"llm_config_updated":if(t.agentId){let n=t.agentConfig||Hf(t),i=t.effectiveConfig||n;e.llmConfig[t.agentId]={providers:t.providers||i.providers||[],primaryModel:t.primaryModel||i.primaryModel||null,fastModel:t.fastModel||i.fastModel||null,language:t.language||n.language||i.language||"en",needsSetup:t.needsSetup??i.needsSetup??!1,agentConfig:n,effectiveConfig:i,requestId:t.requestId||null,statusRefreshError:t.statusRefreshError||null,error:t.error||null,loaded:!0}}break;case"models_dev_registry":if(e.modelsDevRegistry={registry:t.registry||{},fetchedAt:t.fetchedAt||Date.now(),error:t.error||null,loaded:!0},e._modelsDevPending){let n=e._modelsDevPending;e._modelsDevPending=null,n.timer&&clearTimeout(n.timer);for(let i of n.resolvers)i(e.modelsDevRegistry)}break;case"yeaft_settings":case"yeaft_settings_updated":t.agentId&&(e.yeaftSettings[t.agentId]={maxConcurrentThreads:t.maxConcurrentThreads??6,autoArchiveIdleDays:t.autoArchiveIdleDays??30,error:t.error||null,loaded:!0,at:Date.now()});break;case"search_settings":case"search_settings_updated":{let n={backend:t.backend||"tavily",tavilyKeyConfigured:!!t.tavilyKeyConfigured,tavilyKeyMasked:t.tavilyKeyMasked||null,disableHtmlFallback:!!t.disableHtmlFallback,error:t.error||null,loaded:!0,at:Date.now()};e.searchSettings=n;let i=e._searchPending,r=t.type==="search_settings"?"load":"update";i&&i[r]&&(i[r](n),delete i[r]);break}case"tavily_usage":{let n=t.error?{error:t.error}:{plan:t.plan,used:t.used,limit:t.limit,paygoUsed:t.paygoUsed,paygoLimit:t.paygoLimit};e.tavilyUsage=n,e.tavilyUsageLoading=!1;let i=e._searchPending;i&&i.usage&&(i.usage(n),delete i.usage);break}case"yeaft_mcp_list_result":case"yeaft_mcp_add_result":case"yeaft_mcp_remove_result":case"yeaft_mcp_reload_result":case"yeaft_mcp_updated":{if(Array.isArray(t.servers)&&(e.yeaftMcpServers=t.servers),t.runtime&&typeof t.runtime=="object"&&(e.yeaftMcpRuntime={connected:!!t.runtime.connected,toolCount:t.runtime.toolCount||0,perServer:Array.isArray(t.runtime.perServer)?t.runtime.perServer:[]}),e.yeaftMcpLoading=!1,e.yeaftMcpError=t.error||null,t.requestId){let n=e._mcpPending;n&&n[t.requestId]&&(n[t.requestId](t),delete n[t.requestId])}break}case"conversation_mcp_update":t.conversationId&&t.servers&&(e.conversationMcpServers[t.conversationId]=t.servers),t.conversationId&&t.serverTools&&(e.conversationMcpServerTools[t.conversationId]=t.serverTools);break;case"btw_stream":e.appendBtwDelta(t.delta);break;case"btw_done":e.btwLoading=!1,t.btwSessionId&&(e.btwSessionId=t.btwSessionId);break;case"btw_error":{let n=e.btwMessages[e.btwMessages.length-1];n&&n.role==="assistant"&&(n.content="Error: "+t.error),e.btwLoading=!1;break}case"background_task_started":case"background_task_output":break;case"subagent_started":t.conversationId&&t.subagentId&&e.addSubagent(t.conversationId,{id:t.subagentId,slug:t.slug,type:t.subagentType,description:t.description,parentToolUseId:t.parentToolUseId});break;case"subagent_message":t.conversationId&&t.subagentId&&t.message&&e.appendSubagentMessage(t.conversationId,t.subagentId,t.message);break;case"subagent_completed":t.conversationId&&t.subagentId&&e.completeSubagent(t.conversationId,t.subagentId);break}}var Nf,Bf,nl=O(()=>{ct();Cn();bt();Nt();Ot();vr();tl();_n();Nf=1,Bf=5});function rl(){return Object.values(il).sort((t,s)=>t.order-s.order).map(t=>({teamId:t.id,team:t,roles:Object.values(dt).filter(s=>s.group===t.id)}))}function ol(e){let t=[];for(let s of Object.values(dt)){t.push({roleId:s.id,roleName:s.name,roleTitle:s.title,actionId:null,actionName:null,searchText:`${s.name} ${s.fullName} ${s.title} ${s.titleEn}`.toLowerCase(),displayText:s.name,group:s.group});for(let n of s.actions)t.push({roleId:s.id,roleName:s.name,roleTitle:s.title,actionId:n.id,actionName:n.name,searchText:`${s.name} ${s.fullName} ${s.title} ${n.name} ${n.nameEn}`.toLowerCase(),displayText:`${s.name}\xB7${n.name}`,group:s.group})}if(e&&e.length>0){for(let s of e)if(t.push({roleId:s.id,roleName:s.name,roleTitle:s.title,actionId:null,actionName:null,searchText:`${s.name} ${s.fullName||""} ${s.title} ${s.titleEn||""}`.toLowerCase(),displayText:s.name,group:"custom"}),s.actions)for(let n of s.actions)t.push({roleId:s.id,roleName:s.name,roleTitle:s.title,actionId:n.id,actionName:n.name,searchText:`${s.name} ${s.fullName||""} ${s.title} ${n.name} ${n.nameEn||""}`.toLowerCase(),displayText:`${s.name}\xB7${n.name}`,group:"custom"})}return t}function qt(e,t){let s=dt[e.role];if(s){if(e.action){let n=s.actions.find(i=>i.id===e.action);return n?`${s.name}\xB7${n.name}`:s.name}return s.name}if(t){let n=t.find(i=>i.id===e.role);if(n){if(e.action){let i=n.actions?.find(r=>r.id===e.action);return i?`${n.name}\xB7${i.name}`:n.name}return n.name}}return e.role}function yr(e,t,s,n="zh-CN"){if(!e||e.length===0||!t||t.length===0)return null;let i=n==="zh-CN";if(!e.some(l=>!dt[l.role]&&t.some(c=>c.id===l.role)))return null;if(e.length===1){let{role:l,action:c}=e[0],d=t.find(p=>p.id===l);if(!d)return null;let u;if(c&&d.actions){let p=d.actions.find(f=>f.id===c);p?s?(u=(i?p.messageTemplate:p.messageTemplateEn)||"",u+=s):u=(i?p.defaultMessage:p.defaultMessageEn)||"":u=((i?d.messagePrefix:d.messagePrefixEn)||"")+(s||"")}else u=((i?d.messagePrefix:d.messagePrefixEn)||"")+(s||"");return{effectivePrompt:u}}let o=[];for(let{role:l,action:c}of e){let d=t.find(p=>p.id===l),u=dt[l];if(d)if(c){let p=d.actions?.find(f=>f.id===c);p&&o.push((i?p.messageTemplate:p.messageTemplateEn)||"")}else o.push((i?d.messagePrefix:d.messagePrefixEn)||"");else if(u)return null}return o.length===0?null:{effectivePrompt:o.join(`
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
`)+(s||"")}}function ll(e){return Object.values(il).filter(t=>e||!t.adminOnly).sort((t,s)=>t.order-s.order)}var il,dt,al,Wt,js=O(()=>{il={dev:{id:"dev",name:"\u8F6F\u4EF6\u5F00\u53D1",nameEn:"Software Dev",icon:"\u{1F5A5}\uFE0F",order:0},trading:{id:"trading",name:"\u4EA4\u6613",nameEn:"Trading",icon:"\u{1F4C8}",order:1,adminOnly:!0},writing:{id:"writing",name:"\u5199\u4F5C",nameEn:"Writing",icon:"\u270D\uFE0F",order:2,adminOnly:!0},video:{id:"video",name:"\u89C6\u9891",nameEn:"Video",icon:"\u{1F3AC}",order:3,adminOnly:!0}},dt={jobs:{id:"jobs",name:"Jobs",fullName:"Steve Jobs",title:"\u4EA7\u54C1\u7ECF\u7406",titleEn:"Product Manager",group:"dev",actions:[{id:"product-analysis",name:"\u4EA7\u54C1\u5206\u6790",nameEn:"Product Analysis"},{id:"design-review",name:"\u8BBE\u8BA1\u5BA1\u67E5",nameEn:"Design Review"},{id:"requirements",name:"\u9700\u6C42\u62C6\u89E3",nameEn:"Requirements"}]},fowler:{id:"fowler",name:"Fowler",fullName:"Martin Fowler",title:"\u8F6F\u4EF6\u67B6\u6784\u5E08",titleEn:"Software Architect",group:"dev",actions:[{id:"architecture",name:"\u67B6\u6784\u5BA1\u67E5",nameEn:"Architecture Review"},{id:"refactoring",name:"\u91CD\u6784\u5206\u6790",nameEn:"Refactoring"},{id:"code-review",name:"\u4EE3\u7801\u5BA1\u67E5",nameEn:"Code Review"}]},torvalds:{id:"torvalds",name:"Torvalds",fullName:"Linus Torvalds",title:"\u7CFB\u7EDF\u5F00\u53D1\u5DE5\u7A0B\u5E08",titleEn:"Systems Engineer",group:"dev",actions:[{id:"system-design",name:"\u7CFB\u7EDF\u8BBE\u8BA1",nameEn:"System Design"},{id:"performance",name:"\u6027\u80FD\u4F18\u5316",nameEn:"Performance"},{id:"code-style",name:"\u4EE3\u7801\u98CE\u683C",nameEn:"Code Style"},{id:"implementation",name:"\u4EE3\u7801\u5B9E\u73B0",nameEn:"Implementation"}]},beck:{id:"beck",name:"Beck",fullName:"Kent Beck",title:"\u6D4B\u8BD5\u5DE5\u7A0B\u5E08",titleEn:"Test Engineer",group:"dev",actions:[{id:"test-strategy",name:"\u6D4B\u8BD5\u7B56\u7565",nameEn:"Test Strategy"},{id:"tdd-guide",name:"TDD \u6307\u5BFC",nameEn:"TDD Guide"},{id:"quality-check",name:"\u8D28\u91CF\u8BC4\u4F30",nameEn:"Quality Check"}]},schneier:{id:"schneier",name:"Schneier",fullName:"Bruce Schneier",title:"\u5B89\u5168\u5DE5\u7A0B\u5E08",titleEn:"Security Engineer",group:"dev",actions:[{id:"security-audit",name:"\u5B89\u5168\u5BA1\u8BA1",nameEn:"Security Audit"},{id:"threat-model",name:"\u5A01\u80C1\u5EFA\u6A21",nameEn:"Threat Model"},{id:"auth-review",name:"\u8BA4\u8BC1\u5BA1\u67E5",nameEn:"Auth Review"}]},rams:{id:"rams",name:"Rams",fullName:"Dieter Rams",title:"UI/UX \u8BBE\u8BA1\u5E08",titleEn:"UI/UX Designer",group:"dev",actions:[{id:"ui-review",name:"\u754C\u9762\u5BA1\u67E5",nameEn:"UI Review"},{id:"interaction",name:"\u4EA4\u4E92\u8BBE\u8BA1",nameEn:"Interaction Design"},{id:"layout",name:"\u5E03\u5C40\u4F18\u5316",nameEn:"Layout Optimization"}]},graham:{id:"graham",name:"Graham",fullName:"Paul Graham",title:"\u6280\u672F\u5199\u4F5C / \u65B9\u6848\u8BC4\u4F30\u5E08",titleEn:"Tech Writer / Evaluator",group:"dev",actions:[{id:"writing",name:"\u6280\u672F\u5199\u4F5C",nameEn:"Tech Writing"},{id:"proposal-review",name:"\u65B9\u6848\u8BC4\u4F30",nameEn:"Proposal Review"},{id:"explain",name:"\u6982\u5FF5\u89E3\u91CA",nameEn:"Explain"}]},hightower:{id:"hightower",name:"Hightower",fullName:"Kelsey Hightower",title:"DevOps / \u8FD0\u7EF4\u5DE5\u7A0B\u5E08",titleEn:"DevOps Engineer",group:"dev",actions:[{id:"deployment",name:"\u90E8\u7F72\u5BA1\u67E5",nameEn:"Deployment Review"},{id:"cicd",name:"CI/CD \u8BC4\u4F30",nameEn:"CI/CD Review"},{id:"infra",name:"\u57FA\u7840\u8BBE\u65BD",nameEn:"Infrastructure"}]},gregg:{id:"gregg",name:"Gregg",fullName:"Brendan Gregg",title:"\u6027\u80FD\u5DE5\u7A0B\u5E08",titleEn:"Performance Engineer",group:"dev",actions:[{id:"perf-analysis",name:"\u6027\u80FD\u5206\u6790",nameEn:"Perf Analysis"},{id:"tuning",name:"\u7CFB\u7EDF\u8C03\u4F18",nameEn:"Tuning"},{id:"benchmark",name:"\u57FA\u51C6\u6D4B\u8BD5",nameEn:"Benchmark"}]},codd:{id:"codd",name:"Codd",fullName:"Edgar Codd",title:"\u6570\u636E\u5E93 / SQL \u4E13\u5BB6",titleEn:"Database / SQL Expert",group:"dev",actions:[{id:"sql-optimization",name:"SQL \u4F18\u5316",nameEn:"SQL Optimization"},{id:"schema-design",name:"Schema \u8BBE\u8BA1",nameEn:"Schema Design"},{id:"data-modeling",name:"\u6570\u636E\u5EFA\u6A21",nameEn:"Data Modeling"}]},knuth:{id:"knuth",name:"Knuth",fullName:"Donald Knuth",title:"\u7B97\u6CD5 / \u6570\u636E\u5904\u7406\u4E13\u5BB6",titleEn:"Algorithm Expert",group:"dev",actions:[{id:"algorithm-design",name:"\u7B97\u6CD5\u8BBE\u8BA1",nameEn:"Algorithm Design"},{id:"data-processing",name:"\u6570\u636E\u5904\u7406",nameEn:"Data Processing"},{id:"optimization",name:"\u4F18\u5316",nameEn:"Optimization"}]},thomas:{id:"thomas",name:"Thomas",fullName:"Dave Thomas",title:"\u6280\u672F\u6587\u6863\u5DE5\u7A0B\u5E08",titleEn:"Tech Doc Engineer",group:"dev",actions:[{id:"api-docs",name:"API \u6587\u6863",nameEn:"API Docs"},{id:"readme",name:"README",nameEn:"README"},{id:"comment-review",name:"\u6CE8\u91CA\u5BA1\u67E5",nameEn:"Comment Review"}]},soros:{id:"soros",name:"Soros",fullName:"George Soros",title:"\u5B8F\u89C2\u7B56\u7565\u5E08",titleEn:"Macro Strategist",group:"trading",actions:[{id:"macro-analysis",name:"\u5B8F\u89C2\u5206\u6790",nameEn:"Macro Analysis"},{id:"risk-assessment",name:"\u98CE\u9669\u8BC4\u4F30",nameEn:"Risk Assessment"},{id:"thesis-review",name:"\u8BBA\u70B9\u5BA1\u67E5",nameEn:"Thesis Review"}]},livermore:{id:"livermore",name:"Livermore",fullName:"Jesse Livermore",title:"\u6280\u672F\u5206\u6790\u5E08",titleEn:"Technical Analyst",group:"trading",actions:[{id:"price-action",name:"\u4EF7\u683C\u884C\u4E3A",nameEn:"Price Action"},{id:"pattern-recognition",name:"\u56FE\u5F62\u8BC6\u522B",nameEn:"Pattern Recognition"},{id:"trade-plan",name:"\u4EA4\u6613\u8BA1\u5212",nameEn:"Trade Plan"}]},dalio:{id:"dalio",name:"Dalio",fullName:"Ray Dalio",title:"\u7814\u7A76\u5458 / \u7ECF\u6D4E\u5206\u6790\u5E08",titleEn:"Research / Economist",group:"trading",actions:[{id:"economic-analysis",name:"\u7ECF\u6D4E\u5206\u6790",nameEn:"Economic Analysis"},{id:"portfolio-review",name:"\u7EC4\u5408\u5BA1\u67E5",nameEn:"Portfolio Review"},{id:"research-report",name:"\u7814\u7A76\u62A5\u544A",nameEn:"Research Report"}]},taleb:{id:"taleb",name:"Taleb",fullName:"Nassim Taleb",title:"\u98CE\u63A7\u5B98",titleEn:"Risk Manager",group:"trading",actions:[{id:"risk-audit",name:"\u98CE\u9669\u5BA1\u8BA1",nameEn:"Risk Audit"},{id:"antifragile",name:"\u53CD\u8106\u5F31\u8BC4\u4F30",nameEn:"Antifragile Assessment"},{id:"stress-test",name:"\u538B\u529B\u6D4B\u8BD5",nameEn:"Stress Test"}]},jones:{id:"jones",name:"Jones",fullName:"Paul Tudor Jones",title:"\u4EA4\u6613\u6267\u884C\u5458",titleEn:"Trade Executor",group:"trading",actions:[{id:"execution",name:"\u6267\u884C\u8BA1\u5212",nameEn:"Execution Plan"},{id:"position-sizing",name:"\u4ED3\u4F4D\u8BA1\u7B97",nameEn:"Position Sizing"},{id:"trade-review",name:"\u4EA4\u6613\u590D\u76D8",nameEn:"Trade Review"}]},simons:{id:"simons",name:"Simons",fullName:"Jim Simons",title:"\u91CF\u5316\u5206\u6790\u5E08",titleEn:"Quant Analyst",group:"trading",actions:[{id:"quant-signal",name:"\u91CF\u5316\u4FE1\u53F7",nameEn:"Quant Signal"},{id:"backtest-review",name:"\u56DE\u6D4B\u5BA1\u67E5",nameEn:"Backtest Review"},{id:"model-design",name:"\u6A21\u578B\u8BBE\u8BA1",nameEn:"Model Design"}]},jinyong:{id:"jinyong",name:"\u91D1\u5EB8",fullName:"\u91D1\u5EB8\uFF08Louis Cha\uFF09",title:"\u6B66\u4FA0\u5927\u5E08",titleEn:"Wuxia Master",group:"writing",actions:[{id:"world-building",name:"\u6B66\u4FA0\u4E16\u754C\u89C2",nameEn:"Wuxia World Building"},{id:"character-design",name:"\u4EBA\u7269\u5851\u9020",nameEn:"Character Design"},{id:"plot-design",name:"\u60C5\u8282\u7F16\u6392",nameEn:"Plot Design"}]},zhouzi:{id:"zhouzi",name:"\u8098\u5B50",fullName:"\u4F1A\u8BF4\u8BDD\u7684\u8098\u5B50",title:"\u7F51\u6587\u5929\u738B",titleEn:"Web Novel King",group:"writing",actions:[{id:"cool-factor",name:"\u723D\u611F\u8BBE\u8BA1",nameEn:"Cool Factor Design"},{id:"pacing",name:"\u8282\u594F\u628A\u63A7",nameEn:"Pacing Control"},{id:"cheat-design",name:"\u91D1\u624B\u6307\u8BBE\u8BA1",nameEn:"Cheat System Design"}]},qiongyao:{id:"qiongyao",name:"\u743C\u7476",fullName:"\u743C\u7476\uFF08Chiung Yao\uFF09",title:"\u8A00\u60C5\u5B97\u5E08",titleEn:"Romance Master",group:"writing",actions:[{id:"emotion-writing",name:"\u60C5\u611F\u63CF\u5199",nameEn:"Emotion Writing"},{id:"dialogue-design",name:"\u5BF9\u8BDD\u8BBE\u8BA1",nameEn:"Dialogue Design"},{id:"romance-arc",name:"\u8650\u604B\u67B6\u6784",nameEn:"Romance Arc"}]},luxun:{id:"luxun",name:"\u9C81\u8FC5",fullName:"\u9C81\u8FC5\uFF08Lu Xun\uFF09",title:"\u6587\u5B66\u5DE8\u5320",titleEn:"Literary Giant",group:"writing",actions:[{id:"satire",name:"\u8BBD\u523A\u5199\u4F5C",nameEn:"Satirical Writing"},{id:"character-sketch",name:"\u4EBA\u7269\u523B\u753B",nameEn:"Character Sketch"},{id:"prose-craft",name:"\u6587\u7B14\u9524\u70BC",nameEn:"Prose Craft"}]},kubrick:{id:"kubrick",name:"Kubrick",fullName:"Stanley Kubrick",title:"\u5BFC\u6F14 / \u89C6\u89C9\u603B\u76D1",titleEn:"Director / Visual Director",group:"video",actions:[{id:"narrative-pacing",name:"\u53D9\u4E8B\u8282\u594F",nameEn:"Narrative Pacing"},{id:"visual-concept",name:"\u89C6\u89C9\u6982\u5FF5",nameEn:"Visual Concept"},{id:"scene-breakdown",name:"\u573A\u666F\u62C6\u89E3",nameEn:"Scene Breakdown"}]},kaufman:{id:"kaufman",name:"Kaufman",fullName:"Charlie Kaufman",title:"\u7F16\u5267",titleEn:"Screenwriter",group:"video",actions:[{id:"script-writing",name:"\u811A\u672C\u5199\u4F5C",nameEn:"Script Writing"},{id:"character-design",name:"\u89D2\u8272\u8BBE\u8BA1",nameEn:"Character Design"},{id:"narrative-structure",name:"\u53D9\u4E8B\u7ED3\u6784",nameEn:"Narrative Structure"}]},spielberg:{id:"spielberg",name:"Spielberg",fullName:"Steven Spielberg",title:"\u5206\u955C / \u89C6\u89C9\u53D9\u4E8B\u5E08",titleEn:"Storyboard / Visual Storyteller",group:"video",actions:[{id:"storyboard",name:"\u5206\u955C\u8BBE\u8BA1",nameEn:"Storyboard"},{id:"shot-design",name:"\u955C\u5934\u65B9\u6848",nameEn:"Shot Design"},{id:"visual-storytelling",name:"\u89C6\u89C9\u53D9\u4E8B",nameEn:"Visual Storytelling"}]},schoonmaker:{id:"schoonmaker",name:"Schoonmaker",fullName:"Thelma Schoonmaker",title:"\u526A\u8F91\u5E08",titleEn:"Editor",group:"video",actions:[{id:"editing-rhythm",name:"\u526A\u8F91\u8282\u594F",nameEn:"Editing Rhythm"},{id:"sequence-design",name:"\u5E8F\u5217\u8BBE\u8BA1",nameEn:"Sequence Design"},{id:"final-cut",name:"\u6700\u7EC8\u5BA1\u7247",nameEn:"Final Cut"}]}};al="dev",Wt=3});function Kf(e,t){return!t||!e?.yeaftConversationIdsByAgent?[]:Object.entries(e.yeaftConversationIdsByAgent).filter(([,s])=>s===t).map(([s])=>s).filter(Boolean)}function cl(){return`cm_${crypto.randomUUID()}`}function dl(e,t){t!==e.currentAgent&&(e.agentSwitching=!0,e.sendWsMessage({type:"select_agent",agentId:t}))}function ul(e,t,s=null,n=null,i={}){let r=s||e.currentAgent;if(!r){e.addMessage({type:"error",content:xe("chat.agent.selectFirst")});return}cs(e,!0,xe("chat.session.creating"));let o={type:"create_conversation",agentId:r,workDir:t||e.currentAgentWorkDir};n!==null&&(o.disallowedTools=n),i&&typeof i.provider=="string"&&(o.provider=i.provider),i&&i.providerOptions&&typeof i.providerOptions=="object"&&(o.providerOptions=i.providerOptions),e.sendWsMessage(o)}function pl(e,t,s,n=null,i=null,r=null){let o=n||e.currentAgent;if(!o){e.addMessage({type:"error",content:xe("chat.agent.selectFirst")});return}let a=null,l={};i&&typeof i=="object"&&!Array.isArray(i)?l=i:(a=i,r&&typeof r=="object"&&(l=r)),cs(e,!0,xe("chat.session.loadingHistory"));let c={type:"resume_conversation",agentId:o,claudeSessionId:t,workDir:s||e.currentAgentWorkDir};a!==null&&(c.disallowedTools=a),typeof l.provider=="string"&&(c.provider=l.provider),l.providerOptions&&typeof l.providerOptions=="object"&&(c.providerOptions=l.providerOptions),e.sendWsMessage(c)}function fl(e,t,s){if(e.panels.length>1){let a=e.activePanelId||e.panels[0]?.id;a&&e.setPanelConversation(a,t);return}if(t===e.currentConversation)return;let n=e.conversations.find(a=>a.id===t&&a.type!=="yeaft");if(n&&n.agentId&&n.agentId!==e.currentAgent){let a=e.agents.find(l=>l.id===n.agentId);a&&(e.currentAgent=n.agentId,e.currentAgentInfo=a,e.sendWsMessage({type:"select_agent",agentId:n.agentId,silent:!0}))}e.sendWsMessage({type:"select_conversation",conversationId:t}),e.panels.length>1?e.activeConversations.includes(t)||e.activeConversations.push(t):e.activeConversations=[t],n&&(e.currentWorkDir=n.workDir);let i=e.messagesMap[t],r=Ws(i);r!==null?e.sendWsMessage({type:"sync_messages",conversationId:t,afterMessageId:r}):((!i||i.length===0)&&(e.messagesMap[t]=[],cs(e,!0,xe("chat.session.loadingHistory"))),e.sendWsMessage({type:"sync_messages",conversationId:t,turns:5})),e.loadingMoreMessages=!1;let o=e.chatSessionState[t];e.hasMoreMessages=!!o?.hasMoreOlder,ds(e)}function br(e,t,s){t&&e.sendWsMessage({type:"update_conversation_settings",conversationId:t,...s})}function gl(e,t,s){let n=e.currentConversation;if(!n)return;let i=e.conversationMcpServers[n];if(i){let p=i.find(f=>f.name===t);p&&(p.enabled=s)}let r=e.conversationMcpServers[n]||[],o=e.conversationMcpServerTools[n]||{},a=[];for(let p of r)if(!p.enabled){let f=o[p.name];f&&f.length>0?a.push(...f):a.push(`mcp__${p.name}`)}let u=[...(e.conversations.find(p=>p.id===n)?.disallowedTools||[]).filter(p=>!p.startsWith("mcp__")),...a];br(e,n,{disallowedTools:u})}function ml(e,t,s){let n=e.conversations.find(o=>o.id===t);e._recentlyDeletedSessions||(e._recentlyDeletedSessions={}),e._recentlyDeletedSessions[t]=Date.now(),e.conversations=e.conversations.filter(o=>o.id!==t),delete e.messagesMap[t],delete e.chatSessionState[t],delete e.processingConversations[t],ke(e,t),delete e.executionStatusMap[t];let i=e.activeConversations.indexOf(t);i>=0&&(e.activeConversations.splice(i,1),e.activeConversations.length===0&&(localStorage.removeItem("lastViewedConversation"),e.lastViewedConversation=null));for(let o of e.panels)o.conversationId===t&&(o.conversationId=null);let r=e.pinnedSessions.indexOf(t);r>=0&&(e.pinnedSessions.splice(r,1),localStorage.setItem("pinned-sessions",JSON.stringify(e.pinnedSessions))),s&&s!==e.currentAgent?(e.sendWsMessage({type:"select_agent",agentId:s,silent:!0}),e.sendWsMessage({type:"delete_conversation",conversationId:t}),e.sendWsMessage({type:"select_agent",agentId:e.currentAgent,silent:!0})):e.sendWsMessage({type:"delete_conversation",conversationId:t}),e.saveOpenSessions()}function hl(e,t,s){e._recentlyDeletedSessions||(e._recentlyDeletedSessions={}),e._recentlyDeletedSessions[t]=Date.now(),e.conversations=e.conversations.filter(r=>r.id!==t);let n=e.activeConversations.indexOf(t);n>=0&&(e.activeConversations.splice(n,1),e.activeConversations.length===0&&(localStorage.removeItem("lastViewedConversation"),e.lastViewedConversation=null));for(let r of e.panels)r.conversationId===t&&(r.conversationId=null);let i=e.pinnedSessions.indexOf(t);i>=0&&(e.pinnedSessions.splice(i,1),localStorage.setItem("pinned-sessions",JSON.stringify(e.pinnedSessions))),s&&s!==e.currentAgent?(e.sendWsMessage({type:"select_agent",agentId:s,silent:!0}),e.sendWsMessage({type:"delete_conversation",conversationId:t}),e.sendWsMessage({type:"select_agent",agentId:e.currentAgent,silent:!0})):e.sendWsMessage({type:"delete_conversation",conversationId:t})}function vl(e,t,s=[],n={}){let i=n.expertSelections&&n.expertSelections.length>0;if(!t.trim()&&s.length===0&&!i||!e.currentAgent||!e.currentConversation)return;let r=cl();if(e.addMessage({type:"user",content:t,clientMessageId:r,attachments:s.length>0?s:void 0,expertSelections:i?n.expertSelections:void 0}),t.trim()){let c=t.trim().substring(0,100);e.conversationTitles[e.currentConversation]=c}else if(i){let c=n.expertSelections[0],d=`@${c.role}${c.action?"\xB7"+c.action:""}`;e.conversationTitles[e.currentConversation]=d}let o=e.conversations.find(c=>c.id===e.currentConversation);o&&(o.lastMessageAt=Date.now()),e.processingConversations[e.currentConversation]||(e.processingConversations[e.currentConversation]=!0,e._closedAt?.[e.currentConversation]&&delete e._closedAt[e.currentConversation],e._turnCompletedConvs?.delete(e.currentConversation),e.getOrCreateExecutionStatus(e.currentConversation),us(e,e.currentConversation));let a=s.map(c=>c.fileId),l={type:"chat",conversationId:e.currentConversation,prompt:t,fileIds:a,workDir:e.currentWorkDir,clientMessageId:r};if(n.targetRole&&(l.targetRole=n.targetRole),i){l.expertSelections=n.expertSelections;let c=yr(n.expertSelections,e.customExpertRoles,t,e.language||"zh-CN");c&&(l.expertMessage=c.effectivePrompt)}e.sendWsMessage(l)||Bs(e).then(()=>{e.sendWsMessage(l)}).catch(()=>{e.addMessage({type:"system",content:xe("chat.connection.reconnectFailed")}),delete e.processingConversations[e.currentConversation],ke(e,e.currentConversation)})}function yl(e){if(!e.currentConversation||!e.processingConversations[e.currentConversation])return;let t=e.currentConversation;e.sendWsMessage({type:"cancel_execution",conversationId:t}),delete e.processingConversations[t],ke(e,t),e._closedAt||(e._closedAt={}),e._closedAt[t]=Date.now();let s=e.executionStatusMap[t];s&&(s.currentTool=null),e.finishStreamingForConversation(t),xt(e,t),e.addMessage({type:"system",content:xe("chat.execution.cancelled")})}function bl(e,t,s,n){let i=n||e.currentConversation,o=(e.messagesMap[i]||[]).find(g=>g.type==="tool-use"&&g.toolName==="AskUserQuestion"&&g.askRequestId===t),a=e.currentView==="yeaft"||!!o?.sessionId;if(a&&o?.askPending)return;let l=o?.sessionId||e.yeaftActiveSessionFilter||null,c=typeof o?.agentId=="string"&&o.agentId?o.agentId:null,d=a?Kf(e,i):[],u=d.length===1?d[0]:null;if(c&&u&&c!==u)return!1;let p=a&&!c&&!u&&typeof e.agentIdForSession=="function"?e.agentIdForSession(l):null,f=e.sendWsMessage(a?{type:"yeaft_ask_user_answer",agentId:c||u||p||e.yeaftAgentId||e.currentAgent||null,conversationId:i,requestId:t,toolCallId:o?.toolId||null,answers:s,sessionId:l,vpId:o?.vpId||o?.speakerVpId||null,turnId:o?.turnId||null,threadId:o?.threadId||"main"}:{type:"ask_user_answer",conversationId:i,requestId:t,answers:s});if(o&&!a)o.askAnswered=!0,o.selectedAnswers=s;else if(o&&f!==!1){let g=++jf;o.askPending=!0,o.pendingAnswers=s,o.askSubmitGeneration=g;let v=setTimeout(()=>{o.askSubmitGeneration!==g||o.askPending!==!0||(o.askPending=!1,o.pendingAnswers=null,o.askSubmitGeneration=null)},zf);typeof v?.unref=="function"&&v.unref()}f!==!1&&i&&!e.processingConversations[i]&&(e.processingConversations[i]=!0,e._closedAt?.[i]&&delete e._closedAt[i],e.getOrCreateExecutionStatus(i))}function wl(e,t){t&&(e.activeConversations.includes(t)||e.activeConversations.length>=3||(e.activeConversations.push(t),e.messagesMap[t]||(e.messagesMap[t]=[],e.sendWsMessage({type:"sync_messages",conversationId:t,turns:5})),ds(e)))}function kl(e,t){let s=e.activeConversations.indexOf(t);s<0||(e.activeConversations.splice(s,1),e.activeConversations.length===0&&(localStorage.removeItem("lastViewedConversation"),e.lastViewedConversation=null),ds(e))}function Sl(e,t,s,n=[],i={}){let r=i.expertSelections&&i.expertSelections.length>0;if(!s.trim()&&n.length===0&&!r||!e.currentAgent||!t)return;let o=cl();if(e.addMessageToConversation(t,{type:"user",content:s,clientMessageId:o,attachments:n.length>0?n:void 0,expertSelections:r?i.expertSelections:void 0}),s.trim()){let d=s.trim().substring(0,100);e.conversationTitles[t]=d}else if(r){let d=i.expertSelections[0],u=`@${d.role}${d.action?"\xB7"+d.action:""}`;e.conversationTitles[t]=u}let a=e.conversations.find(d=>d.id===t);a&&(a.lastMessageAt=Date.now()),e.processingConversations[t]||(e.processingConversations[t]=!0,e._closedAt?.[t]&&delete e._closedAt[t],e._turnCompletedConvs?.delete(t),e.getOrCreateExecutionStatus(t),us(e,t));let l=n.map(d=>d.fileId),c={type:"chat",conversationId:t,prompt:s,fileIds:l,workDir:a?.workDir||e.currentWorkDir,clientMessageId:o};if(i.targetRole&&(c.targetRole=i.targetRole),r){c.expertSelections=i.expertSelections;let d=yr(i.expertSelections,e.customExpertRoles,s,e.language||"zh-CN");d&&(c.expertMessage=d.effectivePrompt)}e.sendWsMessage(c)||Bs(e).then(()=>{e.sendWsMessage(c)}).catch(()=>{e.addMessageToConversation(t,{type:"system",content:xe("chat.connection.reconnectFailed")}),delete e.processingConversations[t],ke(e,t)})}function Cl(e,t){if(!t||!e.processingConversations[t])return;e.sendWsMessage({type:"cancel_execution",conversationId:t}),delete e.processingConversations[t],ke(e,t),e._closedAt||(e._closedAt={}),e._closedAt[t]=Date.now();let s=e.executionStatusMap[t];s&&(s.currentTool=null),e.finishStreamingForConversation(t),xt(e,t),e.addMessageToConversation(t,{type:"system",content:xe("chat.execution.cancelled")})}function Il(e){e.ws&&e.ws.readyState===WebSocket.OPEN&&e.sendWsMessage({type:"get_agents"})}function Al(e){!e.currentAgent||!e.currentConversation||e.sendWsMessage({type:"refresh_conversation",conversationId:e.currentConversation})}function xl(e,t){t&&e.sendWsMessage({type:"restart_agent",agentId:t})}function Tl(e,t){t&&e.sendWsMessage({type:"upgrade_agent",agentId:t})}var zf,jf,Ml=O(()=>{Nt();Ot();Zi();_n();xn();bt();js();zf=1e4,jf=0});function Yf(e=globalThis.localStorage){try{return e?.getItem(Dl)==="yeaft"?"yeaft":Pl}catch{return Pl}}function wr(e,t=globalThis.localStorage){if(e!=="chat"&&e!=="yeaft")return!1;try{return t?.setItem(Dl,e),!!t}catch{return!1}}function _l(e=globalThis.localStorage){let t=Yf(e);if(t!=="yeaft")return{currentView:t,_yeaftTransitionActive:!1,_savedActiveConversations:null,_pendingChatRestoreConversationId:null};let s=null;try{s=e?.getItem("lastViewedConversation")||null}catch{}let n=s&&!s.startsWith("yeaft-")?s:null;return{currentView:t,_yeaftTransitionActive:!0,_savedActiveConversations:null,_pendingChatRestoreConversationId:n}}function El(e){let t=!e._yeaftTransitionActive;return t&&(e._savedActiveConversations=[...e.activeConversations],e._yeaftTransitionActive=!0),e.activeConversations=[e.yeaftConversationId],t}function Rl(e){e._yeaftTransitionActive&&(e.activeConversations=e._savedActiveConversations||[],e._savedActiveConversations=null,e._yeaftTransitionActive=!1)}var Dl,Pl,Ll=O(()=>{Dl="yeaft-preferred-conversation-view",Pl="chat"});function $l(e,t,s){let n={...e||{}},i={...n[t]||{}};return i[s]=(i[s]||0)+1,n[t]=i,n}function Vl(e,t,s){let n={...e||{}},i={...n[t]||{}},r=(i[s]||0)-1;return r<=0?delete i[s]:i[s]=r,Object.keys(i).length===0?delete n[t]:n[t]=i,n}var Fl=O(()=>{});function Ol(e){return e.currentView==="yeaft"?e.yeaftConversationId||null:e.activeConversations[0]||null}var Hl=O(()=>{});function Nl({loops:e,turnsById:t,turnOrder:s,maxLoops:n}){if(!Array.isArray(e)||e.length<=n)return{loops:e,turnsById:t,turnOrder:s};let i=e.length-n,r=e.slice(i),o=new Set;for(let c of r)c&&c.turnId&&o.add(c.turnId);for(let c of s){let d=t[c];d&&d.closedAt==null&&o.add(c)}let a={};for(let c of Object.keys(t))o.has(c)&&(a[c]=t[c]);let l=s.filter(c=>o.has(c));return{loops:r,turnsById:a,turnOrder:l}}var Bl=O(()=>{});function $e(e){let t=Number(e);return Number.isFinite(t)?t:null}function ql(e){return Zf.has(e)?1:0}function Jf(e,t){if(!e)return t||null;if(!t)return e;let s=$e(e.progressRevision),n=$e(t.progressRevision);if(s!=null||n!=null){if(s==null)return t;if(n==null)return e;if(s!==n)return n>s?t:e}let i=ql(e.status),r=ql(t.status);if(i!==r)return r>i?t:e;let o=$e(e.updatedAt)??$e(e.createdAt)??0;return($e(t.updatedAt)??$e(t.createdAt)??0)>o?t:e}function Rn(...e){let t=new Map;for(let s of e){let n=Array.isArray(s)?s:[s];for(let i of n)i?.id&&t.set(i.id,Jf(t.get(i.id),i))}return[...t.values()].sort((s,n)=>Number(s.createdAt||0)-Number(n.createdAt||0)||String(s.id||"").localeCompare(String(n.id||"")))}function Ln(e,t){if(!e||!t||e.id!==t.id)return!1;let s=$e(e.revision),n=$e(t.revision);if(s!=null&&n!=null&&s!==n)return s<n;let i=$e(e.updatedAt),r=$e(t.updatedAt);return i!=null&&r!=null&&i<r}function Wl(e,t){if(Ln(e,t))return!0;if(!e||!t||e.id!==t.id)return!1;let s=$e(e.revision),n=$e(t.revision);return e.currentActionId!==t.currentActionId&&s!=null&&n!=null&&s<=n}function Ul(e,t){let s=$e(e?.progressRevision),n=$e(t?.progressRevision);return s!=null&&n!=null&&n<s}function zl(e,t){return!e||e.id!==t?.id||!t.currentActionId?!1:!Array.isArray(e.actions)||!e.actions.some(s=>s?.id===t.currentActionId)}function jl(e,t){if(!e||e.id!==t?.id||Ln(t,e))return e;let s={...e},n=!Array.isArray(e.actions)||!Array.isArray(t.actionStats);if(Array.isArray(e.actions)&&Array.isArray(t.actionStats)){let i=new Map(t.actionStats.map(o=>[o?.id,o])),r=!1;n=!0,s.actions=e.actions.map(o=>{let a=i.get(o?.id);if(!a)return o;if(r=!0,$e(a?.progressRevision)==null){let{response:c,messages:d,...u}=a;return{...o,...u}}return Ul(o,a)?(n=!1,o):{...o,...a}}),r||(n=!1)}for(let i of Xf)!n&&eg.has(i)||Object.prototype.hasOwnProperty.call(t,i)&&(s[i]=t[i]);return s}function Kl(e,t){if(!Array.isArray(e)||!Array.isArray(t))return!1;let s=new Map(e.map(n=>[n?.id,n]));return t.some(n=>{let i=s.get(n?.id);return i?Ul(i,n):!1})}function Gl(e,t){return $e(e?.revision)===$e(t?.revision)&&$e(e?.updatedAt)===$e(t?.updatedAt)}function Yl(e,t){return!e||!t||e.id!==t.id?!1:Ln(e,t)?!0:Gl(t,e)&&Kl(t.actions,e.actions)}function Ks(e,t){let s=Array.isArray(e)?e:[],n=s.find(r=>r.id===t?.id)||null,i=n&&Ln(t,n)?n:t;return n&&i===t&&Gl(n,t)&&Kl(n.actionStats,t.actionStats)&&(i={...t,status:n.status,currentActionId:n.currentActionId,currentAction:n.currentAction,executionStats:n.executionStats,failureReason:n.failureReason,actionStats:n.actionStats}),i?.id?[i,...s.filter(r=>r.id!==i.id)].sort((r,o)=>Number(o.updatedAt||0)-Number(r.updatedAt||0)):s}var Xf,Zf,eg,kr=O(()=>{Xf=Object.freeze(["revision","title","goal","workItemType","planningMode","status","lifecycle","attentionState","activeActionIds","attentionActionIds","currentActionId","currentAction","executionStats","failureReason","origin","linkedSessionIds","createdAt","updatedAt"]);Zf=new Set(["completed","failed","cancelled","superseded","interrupted"]);eg=new Set(["status","lifecycle","attentionState","activeActionIds","attentionActionIds","currentActionId","currentAction","executionStats","failureReason"])});function Sr(e){return e?.type==="user"&&typeof e.content=="string"&&e.content.trim()}function Cr(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 Ir(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 i=e.speakerVpId||"",r=t?.speakerVpId||t?.vpId||"";return!!(i&&r&&i!==r)}function Ql(e=[]){let t=[],s=null,n=i=>{s&&(t.push({start:s.start,end:i,kind:s.kind}),s=null)};for(let i=0;i<e.length;i++){let r=e[i];if(r){if(Sr(r)||r.type==="system"||r.type==="error"){n(i),s={start:i,kind:r.type};continue}if(!Cr(r)){s||(s={start:i,kind:"other"});continue}(!s||s.kind==="assistant"&&Ir(s,r))&&(n(i),s={start:i,kind:"assistant",turnId:r.turnId||"",speakerVpId:r.speakerVpId||r.vpId||""}),s.lastTurnId=r.turnId||s.lastTurnId||"",s.speakerVpId=s.speakerVpId||r.speakerVpId||r.vpId||""}}return n(e.length),t}function Xl(e,t){return t?e&&(e.sessionId??e.groupId)===t:!0}function Ar(e=[],t=null,s=5){let n=Math.max(1,Number.isFinite(s)?Math.floor(s):5),i=[],r=[],o=null,a=c=>{o&&(r.push({start:o.start,end:c,kind:o.kind}),o=null)};for(let c of e){if(!Xl(c,t))continue;let d=i.length;if(i.push(c),Sr(c)||c.type==="system"||c.type==="error"){a(d),o={start:d,kind:c.type};continue}if(!Cr(c)){o||(o={start:d,kind:"other"});continue}(!o||o.kind==="assistant"&&Ir(o,c))&&(a(d),o={start:d,kind:"assistant",turnId:c.turnId||"",speakerVpId:c.speakerVpId||c.vpId||""}),o.lastTurnId=c.turnId||o.lastTurnId||"",o.speakerVpId=o.speakerVpId||c.speakerVpId||c.vpId||""}if(a(i.length),r.length<=n)return i;let l=r[r.length-n];return i.slice(l.start)}function Zl(e=[],t=null,s=5){let n=Math.max(1,s||5),i=0,r=null,o=()=>r?(r=null,i+=1,i>n):!1;for(let a of e)if(Xl(a,t)){if(Sr(a)||a.type==="system"||a.type==="error"){if(o())return!0;r={kind:a.type};continue}if(!Cr(a)){r||(r={kind:"other"});continue}if(!r||r.kind==="assistant"&&Ir(r,a)){if(o())return!0;r={kind:"assistant",turnId:a.turnId||"",speakerVpId:a.speakerVpId||a.vpId||""}}r.lastTurnId=a.turnId||r.lastTurnId||"",r.speakerVpId=r.speakerVpId||a.speakerVpId||a.vpId||""}return o(),i>n}function Ut(){return 5}function xr(){return 5}var Jl=O(()=>{});function tc(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 sc(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 rg(e,t){return Dr.every(s=>!t[s]||e[s]===t[s])}function fc(e,t){return Dr.every(s=>!e[s]||!t[s]||e[s]===t[s])}function nc(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)),i=n.filter(o=>rg(sc(o,s),t));if(i.length===1)return i[0];let r=n.filter(o=>fc(sc(o,s),t));return r.length===1?r[0]:null}function gc(e){return Dr.map(t=>e[t]||"").join("\0")}function og(e,t,s){let n=gc(t),i={...e._yeaftAskTerminalEvents||{},[n]:{identity:t,event:s,receivedAt:Date.now()}},r=Object.keys(i);if(r.length>ec){r.sort((o,a)=>i[o].receivedAt-i[a].receivedAt);for(let o of r.slice(0,r.length-ec))delete i[o]}e._yeaftAskTerminalEvents=i}function ic(e,t){let s=e._yeaftAskTerminalEvents||{},n=gc(t),i=s[n]?n:null;if(!i){let l=Object.entries(s).filter(([,c])=>fc(c.identity||{},t));l.length===1&&(i=l[0][0])}if(!i)return null;let r=s[i],{[i]:o,...a}=s;return e._yeaftAskTerminalEvents=a,r?.event||null}function ag(e,t,s){return(e.messagesMap?.[t]||[]).some(n=>n?.type==="tool-use"&&n.sessionId===s&&n.hasResult===!1)}function Tr(e,t){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 lg(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 cg(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 Gs(e){return e?.role==="assistant"&&e?.turnId?`response:${e.turnId}:${e.speakerVpId||e.vpId||""}`:e?.clientMessageId?`client:${e.clientMessageId}`:`message:${e?.messageId||""}`}function rc(e){let t=e?.updatedAt||e?.endedAt||e?.createdAt,s=t?Date.parse(t):NaN;return Number.isFinite(s)?s:0}function Mr(e,t){return`${e||""}::${t||""}`}function oc(e){let t=Object.entries(e||{}),s=t.filter(([,i])=>i?.status==="running"),n=t.filter(([,i])=>i&&i.status!=="running"&&pc.has(i.status)).sort((i,r)=>rc(r[1])-rc(i[1])).slice(0,sg);return Object.fromEntries([...s,...n])}function fs(){try{return typeof window>"u"?null:window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore()||null}catch{return null}}function Ee(e,t,s=null){if(s)return s;if(t){let n=fs(),i=n&&typeof n.sessionById=="function"?n.sessionById(t,e?.currentAgent||null):null;if(i&&i.agentId)return i.agentId;let r=e?.yeaftSessionAgentById?e.yeaftSessionAgentById[t]:null;if(r)return r}return e?.currentAgent||null}function dg(e,t){let s=r=>String(r||"").replace(/^v/,"").split(".").slice(0,3).map(o=>Number.parseInt(o,10)),n=s(e),i=s(t);if(n.length<3||i.length<3||[...n,...i].some(r=>!Number.isFinite(r)))return!1;for(let r=0;r<3;r+=1)if(n[r]!==i[r])return n[r]>i[r];return!0}function ac(e,t,s){if(!t||!s)return!1;let n=Array.isArray(e?.agents)?e.agents.find(o=>o?.id===t):null,i=e?.currentAgentInfo?.id===t?e.currentAgentInfo:null;return(n?.capabilities||i?.capabilities||[]).includes(s)?!0:s==="session_history_search"&&dg(n?.version||i?.version,"1.0.166")}function Ys(e,{fallbackDefault:t=!1}={}){if(e?.yeaftActiveSessionFilter)return e.yeaftActiveSessionFilter;let s=fs();return s?.activeSessionId?s.activeSessionId:t?"grp_default":null}function On(e){let t=e.yeaftDebugSessionFilter;if(t==="__all__")return null;if(t)return t;let s=Ys(e);return s||(fs()?.sessions?.grp_default?"grp_default":null)}function ps(e,t=null){let s=t||e?.yeaftActiveSessionFilter||null,n=Ee(e,s);return(n&&e?.yeaftConversationIdsByAgent?e.yeaftConversationIdsByAgent[n]:null)||e?.yeaftConversationId||null}function lc(e,t,s){if(e?.currentView!=="yeaft")return!1;let n=e?.yeaftActiveSessionFilter||null;if(n&&t!==n)return!1;let i=Ee(e,n);return!i||!s||i===s}var tg,Me,$n,Vn,sg,pc,Fn,ng,ig,ec,Dr,cc,Pr,dc,uc,zt,Hn=O(()=>{ct();bt();Zi();xn();Ga();nl();Ml();Ot();Nt();Ll();Fl();Hl();Bl();kr();ur();pr();Jl();({defineStore:tg}=Pinia),Me=Object.freeze([]),$n=(e,t)=>`${e||""}::${t}`,Vn=5,sg=8,pc=new Set(["succeeded","failed","cancelled","orphaned"]),Fn=new Set(["typing","thinking","streaming","tool"]),ng=Object.freeze(["model","availableModels","refreshedAt","catalogRefreshedAt","catalogEpoch","catalogRevision","catalogDigest","refreshStartedAt","refreshReason","refreshError","refreshing"]),ig=8,ec=64;Dr=Object.freeze(["conversationId","agentId","requestId","toolCallId","sessionId","vpId","turnId","threadId"]);cc=1e3,Pr=1,dc=5,uc=200,zt=tg("chat",{state:()=>({ws:null,authenticated:!1,sessionKey:null,serverEncryptionRequired:!0,connectionState:"disconnected",reconnectAttempts:0,maxReconnectAttempts:10,reconnectTimer:null,agents:[],currentAgent:null,currentAgentInfo:null,conversations:[],activeConversations:[],currentWorkDir:null,messagesMap:{},chatSessionState:{},panels:[],activePanelId:null,_pendingPaneId:null,conversationTitles:{},customConversationTitles:{},processingConversations:{},yeaftProcessingSessions:{},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,_pendingSessionTitle:null,workbenchExpanded:!1,workbenchMaximized:!1,sidebarCollapsed:!1,sessionSidebarOpen:!1,compactStatus:null,clearStatus:null,refreshingSession:!1,refreshingSessionMap:{},proxyPorts:{},hasMoreMessages:!1,loadingMoreMessages:!1,yeaftHasMoreHistory:!1,yeaftLoadingMoreHistory:!1,yeaftOldestLoadedSeq:null,yeaftSessionHistoryState:{},yeaftMessageWindowState:{},yeaftBootstrapMetaLoadingKey:null,yeaftHistoryPerfTraceBySession:{},yeaftHistorySearchState:{requestId:null,agentId:null,sessionId:null,query:"",loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,error:null},yeaftHistoryOutlineBySession:{},_yeaftHistoryOutlineTimeouts:{},_yeaftHistorySearchTimeout:null,_yeaftHistoryWindowPending:null,_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,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")||"[]"),..._l(),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:{},_workCenterActionRequestsGeneration:{},_workCenterActionRequestDetailsGeneration:{},workCenterPending:{},workCenterCreateDraft:null,yeaftConversationId:null,yeaftConversationIdsByAgent:{},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,yeaftDebugHistoryLimit:Pr,yeaftDebugHistoryHasMore:!1,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=>Ol(e),messages(e){let t=this.activeConversationId,s=t&&e.messagesMap[t]||Me;if(e.currentView==="yeaft"){let n=e.yeaftActiveSessionFilter||"__all__",i=e.yeaftMessageWindowState[n]?.visibleTurns||Ut();return Ar(s,e.yeaftActiveSessionFilter||null,i)}return s},yeaftAllMessages:e=>{let t=ps(e);return t&&e.messagesMap[t]||Me},yeaftVisibleMessages(e){let t=ps(e),s=t&&e.messagesMap[t]||Me,n=e.yeaftActiveSessionFilter||"__all__",i=e.yeaftMessageWindowState[n]?.visibleTurns||Ut();return Ar(s,e.yeaftActiveSessionFilter||null,i)},hasHiddenYeaftMessages(e){if(e.currentView!=="yeaft")return!1;let t=ps(e),s=t&&e.messagesMap[t]||Me,n=e.yeaftActiveSessionFilter||"__all__",i=e.yeaftMessageWindowState[n]?.visibleTurns||Ut();return Zl(s,e.yeaftActiveSessionFilter||null,i)},vpsTypingInCurrentConv(e){let t=this.activeConversationId;if(!t)return Me;let s=(e.yeaftVpTyping||{})[t];if(!s)return Me;let n=Object.keys(s).filter(i=>(s[i]||0)>0);return n.length===0?Me: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=On(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamLatest?.[s]||null},yeaftDreamSnapshotForActiveSession(e){let t=On(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamSnapshots?.[s]||null},yeaftDreamPromptLoadForActiveSession(e){let t=On(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamPromptLoads?.[s]||null},yeaftDreamEventsForActiveSession(e){let t=On(e);if(!t)return[];let s=`sessions/${t}`,n=Array.isArray(e.yeaftDreamEvents?.[s])?e.yeaftDreamEvents[s]:[],i=Array.isArray(e.yeaftDreamEvents?.["*"])?e.yeaftDreamEvents["*"]:[];return i.length===0?n:n.length===0?i:[...n,...i].sort((r,o)=>(r.at||0)-(o.at||0))},yeaftDebugTurnsForActiveSession:e=>{let t=e.yeaftDebugTurnOrder||Me,s=e.yeaftDebugTurnsById||{},n=e.yeaftDebugLoops||Me,i=e.yeaftReflectionCards||{},r=e.yeaftDebugSessionFilter,o;r==="__all__"?o=null:r?o=r: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(i)){let u=i[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]||Me,g=l[u]||Me,v=f.length,y=0,A=0;for(let b of f){let m=b&&b.usage;m&&Number.isFinite(m.totalTokens)?y+=m.totalTokens:m&&(y+=(m.totalInputTokens||(m.inputTokens||0)+(m.cacheReadTokens||0)+(m.cacheWriteTokens||0))+(m.outputTokens||0)),b&&Number.isFinite(b.latencyMs)&&(A+=b.latencyMs)}let x=!p.closedAt,k={...p,loopCount:x||!p.loopCount?v:p.loopCount,totalTokens:x||!p.totalTokens?y:p.totalTokens,totalMs:x||!p.totalMs?A:p.totalMs,loops:f,reflections:g};c.push(k)}return c},yeaftDebugAvailableSessions:e=>{let t=new Set;for(let s of e.yeaftDebugTurnOrder||Me){let n=e.yeaftDebugTurnsById[s];n&&n.sessionId&&t.add(n.sessionId)}return Array.from(t).sort()},yeaftDebugTurnTotal:e=>(e.yeaftDebugTurnOrder||Me).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=Ys(e);if(!t)return!1;if(e.yeaftProcessingSessions?.[t])return!0;for(let s of Object.values(e.activeVpTurns||{}))if(s?.sessionId===t)return!0;for(let s of Object.values(e.vpStatuses||{}))if((s?.sessionId||s?.groupId||null)===t&&Fn.has(s?.state))return!0;return!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"?fs()?.activeSession?.workDir||e.yeaftYeaftDir||e.currentAgentInfo?.workDir||"":e.currentWorkDir||e.currentAgentInfo?.workDir||"",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=>{if(!t)return!1;if(e.yeaftProcessingSessions?.[t])return!0;for(let s of Object.values(e.activeVpTurns||{}))if(s?.sessionId===t)return!0;for(let s of Object.values(e.vpStatuses||{}))if((s?.sessionId||s?.groupId||null)===t&&Fn.has(s?.state))return!0;return!1},showRecoveryBanner:e=>e.pendingRecovery&&!e.recoveryDismissed&&!e.currentConversation,currentSubagents:e=>{if(!e.currentConversation)return Me;let t=e.subagents[e.currentConversation];return t?Object.values(t):Me},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 Me;let t=e.subagents[e.currentConversation];if(!t)return Me;let s=t[e.activeSubagentId];return(Array.isArray(s?.messages)?s.messages:Me).filter(i=>i?.type==="text")},selectedTaskInfo:()=>null,currentMcpServers:e=>e.currentConversation&&e.conversationMcpServers[e.currentConversation]||Me},actions:{activateChatView({persistPreference:e=!1}={}){let t=this._pendingChatRestoreConversationId;this._pendingChatRestoreConversationId=null,this.currentView="chat",e&&wr("chat"),Rl(this),t&&this.conversations.some(s=>s.id===t)&&(this.autoRestoreConversation(t),this.sendWsMessage({type:"refresh_conversation",conversationId:t}))},enterWorkCenter(e=null){let t=e||this.currentAgent||this.agents.find(s=>s.online)?.id||null;if(t){if(this.currentAgent!==t){this.selectAgent(t),this.currentAgent=t;let s=this.agents.find(n=>n.id===t);s&&(this.currentAgentInfo=s)}this.workCenterAgentId=t,this.workCenterOpen=!0,this.listWorkItems(t).catch(()=>{})}},leaveWorkCenter(){this.workCenterOpen=!1},enterWorkCenterFromSession(e,t=""){if(!e?.id)return;let s=e.agentId||Ee(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)},workCenterRequest(e,t={},s=null){let n=s||this.workCenterAgentId||this.currentAgent;if(!n)return Promise.reject(new Error("No Agent selected"));let i=`work-center-${Date.now()}-${Math.random().toString(36).slice(2)}`;return new Promise((r,o)=>{let a=setTimeout(()=>{delete this.workCenterPending[i],o(new Error("Work Center request timed out"))},3e4);this.workCenterPending[i]={resolve:r,reject:o,timer:a,agentId:n,op:e},this.sendWsMessage({type:"work_center_request",agentId:n,requestId:i,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)},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)},i=JSON.stringify(n),r=Number(this._workCenterListGenerationByAgent[s]||0)+1,o=Number(this._workCenterListEventGenerationByAgent[s]||0);this._workCenterListGenerationByAgent={...this._workCenterListGenerationByAgent,[s]:r},this._workCenterListQueryByAgent={...this._workCenterListQueryByAgent,[s]:i},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]===r&&this._workCenterListQueryByAgent[s]===i&&this.workCenterAgentId===s){let d=l,u=this._workCenterListEventsByAgent[s]||{};for(let p of Object.values(u))Number(p?.generation)<=o||p?.queryKey!==i||(d=p.matches?Ks(d,p.summary):d.filter(f=>f.id!==p.summary?.id));this.workCenterItemsByAgent={...this.workCenterItemsByAgent,[s]:d},this.workCenterListPageByAgent={...this.workCenterListPageByAgent,[s]:{nextCursor:a?.nextCursor||null,queryKey:i}},this.workCenterWatcherByAgent={...this.workCenterWatcherByAgent,[s]:a?.watcher||null},this.workCenterLoadedByAgent={...this.workCenterLoadedByAgent,[s]:!0}}return l}catch(a){throw this._workCenterListGenerationByAgent[s]===r&&this._workCenterListQueryByAgent[s]===i&&(this.workCenterErrorByAgent={...this.workCenterErrorByAgent,[s]:a?.message||String(a)}),a}finally{this._workCenterListGenerationByAgent[s]===r&&this._workCenterListQueryByAgent[s]===i&&(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 i=s.queryKey,r=this._workCenterListGenerationByAgent[t],o=Number(this._workCenterListEventGenerationByAgent[t]||0),a=s.nextCursor,l=`${r}:${i}:${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]!==r||this._workCenterListQueryByAgent[t]!==i||u?.queryKey!==i||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(y=>y.id===g.id);v<0?p.push(g):p[v]=Ks([p[v]],g)[0]}let f=this._workCenterListEventsByAgent[t]||{};for(let g of Object.values(f))Number(g?.generation)<=o||g?.queryKey!==i||(p=g.matches?Ks(p,g.summary):p.filter(v=>v.id!==g.summary?.id));return this.workCenterItemsByAgent={...this.workCenterItemsByAgent,[t]:p},this.workCenterListPageByAgent={...this.workCenterListPageByAgent,[t]:{nextCursor:d?.nextCursor||null,queryKey:i}},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","_workCenterActionRequestsGeneration","_workCenterActionRequestDetailsGeneration"]){let i={};for(let[r,o]of Object.entries(this[n]||{}))r.startsWith(s)||(i[r]=o);this[n]=i}},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&&Yl(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),i=await this.workCenterRequest("get",{id:e},s);return this.commitWorkCenterDetail(s,i,n),this.workCenterDetailByAgent[s]||i},async loadWorkItemActionMessages(e,t,s,n=null){let i=n||this.workCenterAgentId||this.currentAgent,r=`${i}:${e}:${t}`,o=`${r}:${s==null?"latest":String(s)}`;if(this._workCenterActionMessageRequests[o])return this._workCenterActionMessageRequests[o];this.workCenterActionMessagesLoading={...this.workCenterActionMessagesLoading,[r]:!0},this.workCenterActionMessagesError={...this.workCenterActionMessagesError,[r]:null};let a=(async()=>{try{let l=await this.workCenterRequest("get_action_messages",{id:e,actionId:t,cursor:s,limit:20},i);if(this.workItemDeleted(i,e))return l;let c=this.workCenterActionMessages[r]?.messages||[],d=Rn(c,l?.messages||[]),u=this.workCenterActionMessages[r],p=u?.nextCursor,f=s==null?null:Number(s),g=p==null?null:Number(p),v=!u||f==null||g!=null&&f===g;return this.workCenterActionMessages={...this.workCenterActionMessages,[r]:{messages:d,nextCursor:v?l?.nextCursor??null:p,total:Math.max(Number(l?.total)||0,Number(u?.total)||0,d.length)}},l}catch(l){throw this.workCenterActionMessagesError={...this.workCenterActionMessagesError,[r]:l?.message||String(l)},l}finally{let l={...this._workCenterActionMessageRequests};delete l[o],this._workCenterActionMessageRequests=l;let c=Object.keys(l).some(d=>d.startsWith(`${r}:`));this.workCenterActionMessagesLoading={...this.workCenterActionMessagesLoading,[r]:c}}})();return this._workCenterActionMessageRequests={...this._workCenterActionMessageRequests,[o]:a},a},async loadWorkItemActionRequests(e,t,s=null){let n=s||this.workCenterAgentId||this.currentAgent,i=`${n}:${e}:${t}`,r=Number(this._workCenterActionRequestsGeneration[i]||0)+1;this._workCenterActionRequestsGeneration={...this._workCenterActionRequestsGeneration,[i]:r},this.workCenterActionRequestsLoading={...this.workCenterActionRequestsLoading,[i]:!0},this.workCenterActionRequestsError={...this.workCenterActionRequestsError,[i]:null};try{let o=await this.workCenterRequest("get_action_requests",{id:e,actionId:t},n);return!this.workItemDeleted(n,e)&&this._workCenterActionRequestsGeneration[i]===r&&(this.workCenterActionRequests={...this.workCenterActionRequests,[i]:o?.requests||[]}),o?.requests||[]}catch(o){throw this._workCenterActionRequestsGeneration[i]===r&&(this.workCenterActionRequestsError={...this.workCenterActionRequestsError,[i]:o?.message||String(o)}),o}finally{this._workCenterActionRequestsGeneration[i]===r&&(this.workCenterActionRequestsLoading={...this.workCenterActionRequestsLoading,[i]:!1})}},async loadWorkItemActionRequest(e,t,s,n,i=null){let r=i||this.workCenterAgentId||this.currentAgent,o=`${r}:${e}:${t}:${s}:${n}`,a=Number(this._workCenterActionRequestDetailsGeneration[o]||0)+1;this._workCenterActionRequestDetailsGeneration={...this._workCenterActionRequestDetailsGeneration,[o]:a},this.workCenterActionRequestDetailsLoading={...this.workCenterActionRequestDetailsLoading,[o]:!0},this.workCenterActionRequestDetailsError={...this.workCenterActionRequestDetailsError,[o]:null};try{let l=await this.workCenterRequest("get_action_request",{id:e,actionId:t,runId:s,requestId:n},r);return!this.workItemDeleted(r,e)&&this._workCenterActionRequestDetailsGeneration[o]===a&&(this.workCenterActionRequestDetails={...this.workCenterActionRequestDetails,[o]:l?.request||null}),l?.request||null}catch(l){throw this._workCenterActionRequestDetailsGeneration[o]===a&&(this.workCenterActionRequestDetailsError={...this.workCenterActionRequestDetailsError,[o]:l?.message||String(l)}),l}finally{this._workCenterActionRequestDetailsGeneration[o]===a&&(this.workCenterActionRequestDetailsLoading={...this.workCenterActionRequestDetailsLoading,[o]:!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 i=await this.workCenterRequest("update_settings",{settings:e},s);return this._workCenterSettingsGenerationByAgent[s]===n&&(this.workCenterSettingsByAgent={...this.workCenterSettingsByAgent,[s]:i?.settings||null},this.workCenterRuntimeByAgent={...this.workCenterRuntimeByAgent,[s]:i?.runtime||null},this.workCenterSettingsErrorByAgent={...this.workCenterSettingsErrorByAgent,[s]:null}),i},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),i=await this.workCenterRequest("create",e,s);return await this.listWorkItems(s,this._workCenterListFiltersByAgent[s]||{}),this.commitWorkCenterDetail(s,i,n),i},async updateWorkItem(e,t,s=null){let n=s||this.workCenterAgentId||this.currentAgent,i=this.beginWorkCenterDetailWrite(n),r=await this.workCenterRequest("update",{id:e,patch:t},n);return await this.listWorkItems(n,this._workCenterListFiltersByAgent[n]||{}),this.commitWorkCenterDetail(n,r,i),r},async startWorkItem(e,t=null){let s=t||this.workCenterAgentId||this.currentAgent,n=this.beginWorkCenterDetailWrite(s),i=await this.workCenterRequest("start",{id:e},s);return await this.listWorkItems(s,this._workCenterListFiltersByAgent[s]||{}),this.commitWorkCenterDetail(s,i,n),i},async cancelWorkItem(e,t=null){let s=t||this.workCenterAgentId||this.currentAgent,n=this.beginWorkCenterDetailWrite(s),i=await this.workCenterRequest("cancel",{id:e},s);return await this.listWorkItems(s,this._workCenterListFiltersByAgent[s]||{}),this.commitWorkCenterDetail(s,i,n),i},async deleteWorkItem(e,t,s=null){let n=s||this.workCenterAgentId||this.currentAgent,i=await this.workCenterRequest("delete",{id:e,revision:t},n);return this.removeWorkItemState(n,e),i},async sendWorkItemMessage(e,t,s,n=null){let i=n||this.workCenterAgentId||this.currentAgent,r=this.beginWorkCenterDetailWrite(i),o=await this.workCenterRequest("work_item_message",{id:e,text:t,revision:s},i);return await this.listWorkItems(i,this._workCenterListFiltersByAgent[i]||{}),this.commitWorkCenterDetail(i,o,r),o},async retryWorkItemAction(e,t,s,n,i=null){let r=i||this.workCenterAgentId||this.currentAgent,o=this.beginWorkCenterDetailWrite(r),a=await this.workCenterRequest("retry_action",{id:e,actionId:t,revision:s,generation:n},r);return await this.listWorkItems(r,this._workCenterListFiltersByAgent[r]||{}),this.commitWorkCenterDetail(r,a,o),a},async sendWorkItemActionInput(e,t,s,n,i,r=[],o=null){let a=o||this.workCenterAgentId||this.currentAgent,l=Number(this._workCenterActionInputGenerationByAgent[a]||0)+1;this._workCenterActionInputGenerationByAgent={...this._workCenterActionInputGenerationByAgent,[a]:l};let c=await this.workCenterRequest("action_input",{id:e,text:t,actionId:s,revision:n,generation:i,attachments:r},a);await this.listWorkItems(a,this._workCenterListFiltersByAgent[a]||{});let d=this.workCenterDetailByAgent[a],u=d?.actions?.find(f=>f?.id===s),p=d?.id===e&&Number(d.revision)===Number(n)&&u&&Number(u.generation)===Number(i);return this._workCenterActionInputGenerationByAgent[a]===l&&p&&!Wl(c,d)?(this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[a]:c},c):d?.id===e?d:c},async guideWorkItemAction(e,t,s,n,i,r=[],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:i,attachments:r},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,n=this.workCenterItemsByAgent[e]||[];if(t.type==="work_item.deleted"){this.removeWorkItemState(e,s.id);return}if(this.workItemDeleted(e,s.id))return;let i=this._workCenterListFiltersByAgent[e]||{},r=this.workItemMatchesBoardQuery(s,i),o=Number(this._workCenterListEventGenerationByAgent[e]||0)+1;this._workCenterListEventGenerationByAgent={...this._workCenterListEventGenerationByAgent,[e]:o},this._workCenterListEventsByAgent={...this._workCenterListEventsByAgent,[e]:{...this._workCenterListEventsByAgent[e]||{},[s.id]:{generation:o,queryKey:this._workCenterListQueryByAgent[e]||null,summary:s,matches:r}}};let a=r?Ks(n,s):n.filter(c=>c.id!==s.id);this.workCenterItemsByAgent={...this.workCenterItemsByAgent,[e]:a};let l=this.workCenterDetailByAgent[e];if(l?.id===s.id){let c=zl(l,s);this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[e]:jl(l,s)},c&&this.refreshWorkItemDetailAfterActionChange(e,s)}},async refreshWorkItemDetailAfterActionChange(e,t){let s=`${t.id}:${t.currentActionId}`;if(this._workCenterDetailEventRefreshByAgent[e]===s)return;let n=Number(this._workCenterDetailRequestGenerationByAgent[e]||0);this._workCenterDetailEventRefreshByAgent={...this._workCenterDetailEventRefreshByAgent,[e]:s};try{let i=await this.workCenterRequest("get",{id:t.id},e),r=this.workCenterDetailByAgent[e];r?.id===t.id&&r.currentActionId===t.currentActionId&&i?.currentActionId===t.currentActionId&&this.commitWorkCenterDetail(e,i,n)}catch{}finally{if(this._workCenterDetailEventRefreshByAgent[e]===s){let i={...this._workCenterDetailEventRefreshByAgent};delete i[e],this._workCenterDetailEventRefreshByAgent=i}}},cacheYeaftAgentStatus(e,t,{allowBootstrapCatalog:s=!1}={}){if(!e||!t)return;let n=this.yeaftStatusByAgent[e]||{},i=Number(n.catalogRevision)||0,r=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&&(r>0||c>0),p=Array.isArray(this._yeaftRetiredCatalogEpochsByAgent?.[e])?this._yeaftRetiredCatalogEpochsByAgent[e]:[],f=!!a&&p.includes(a),g=!!a&&a===o,v=r>0?g&&r===i:c>0&&c===l,y=r>0?!!a&&(a!==o||r>i):i===0&&c>l,A=r>0?!!t.catalogDigest&&!!n.catalogDigest&&t.catalogDigest===n.catalogDigest:t.catalogDigest===n.catalogDigest,x=u&&!f&&(y||v&&A),b=x||s&&i===0&&l===0&&!u&&d,m={...t};if(!b)for(let E of ng)delete m[E];let w={...n,...m};if(b){if(x&&o&&a&&o!==a){let E=[...p.filter(R=>R!==o),o].slice(-ig);this._yeaftRetiredCatalogEpochsByAgent={...this._yeaftRetiredCatalogEpochsByAgent||{},[e]:E}}w.availableModels=t.availableModels,w.catalogRefreshedAt=x?c:null,w.catalogEpoch=x&&a||null,w.catalogRevision=x&&r||null,w.catalogDigest=x&&t.catalogDigest||null}this.yeaftStatusByAgent={...this.yeaftStatusByAgent,[e]:w},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)},enterYeaft(e=null){let t=this.currentAgent,s=e||this.currentAgent||null;if(!s){let i=this.agents.find(r=>r.online);i&&(s=i.id)}if(s&&this.currentAgent!==s){this.selectAgent(s),this.currentAgent=s;let i=this.agents.find(r=>r.id===s);i&&(this.currentAgentInfo=i)}if(!this.applyCachedYeaftStatus(s)&&t&&t!==s&&(this.yeaftAvailableModels=[],this.yeaftStatus=null,this.yeaftModelsRefreshing=!0,this.yeaftModelRefreshError=null),s){let i=this.yeaftConversationIdsByAgent?.[s]||null;i||(i=`yeaft-local-${s}-${Date.now()}`,this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[s]:i}),this.yeaftConversationId=i}else this.yeaftConversationId||(this.yeaftConversationId=`yeaft-local-${Date.now()}`);this.messagesMap[this.yeaftConversationId]||(this.messagesMap[this.yeaftConversationId]=[]),El(this),this.currentView="yeaft",wr("yeaft"),this.hasMoreMessages=!1,this.loadingMoreMessages=!1,this.yeaftHasMoreHistory=!1,this.yeaftLoadingMoreHistory=!1,this.yeaftOldestLoadedSeq=null,this._yeaftReconnectCatchUpPending=!1,this.loadOpenedYeaftSessionsForConnectedAgents(null,{force:!0}),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(r=>r&&r.online&&r.id).map(r=>r.id):[],n=[...new Set(s)];(!this._yeaftOpenedSessionsLoadedAgents||typeof this._yeaftOpenedSessionsLoadedAgents!="object")&&(this._yeaftOpenedSessionsLoadedAgents={});let i=[];for(let r of n)!t&&this._yeaftOpenedSessionsLoadedAgents[r]||(this._yeaftOpenedSessionsLoadedAgents[r]=Date.now(),i.push(r),this.sessionCrudRequest("list",{},{agentId:r}).catch(o=>{delete this._yeaftOpenedSessionsLoadedAgents[r]}));return i},requestYeaftSessionBootstrap({forceSessionReady:e=!1,catchUpHistory:t=!1,forceHistoryReplay:s=!1}={}){if(!this.currentAgent)return;let n=Ys(this),i=n?Ee(this,n):this.currentAgent,r=qe(i,n),o=n?this.yeaftSessionHistoryState[r]: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(A=>A&&(A.sessionId??A.groupId??null)===n),d=!!n&&or({sessionState:o,hasCachedSessionRows:c,force:!!s}),u=!!n&&!d&&Ca(o,t);if(!a&&!d&&!u)return!1;let p=`${i}:${n||"__none__"}`,f=a&&!d&&!u;if(f&&this.yeaftBootstrapMetaLoadingKey===p)return!1;f&&(this.yeaftBootstrapMetaLoadingKey=p),n&&d?(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[r]:{loaded:!1,loading:!0,hasMore:!1,oldestSeq:null,count:0}},this.yeaftLoadingMoreHistory=!0):n&&c&&!o?.loaded?(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[r]:{...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&&(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[r]:{...o,loaded:!0,loading:!0,latestSeq:l}},this.yeaftLoadingMoreHistory=!0);let g={type:"yeaft_load_history",agentId:i,sessionId:n};u?g.afterSeq=l:g.limit=d?Vn:0;let v=Us();g.perfTraceId=v;let y=u?"delta":d?"recent":"metadata";return n&&(this.yeaftHistoryPerfTraceBySession={...this.yeaftHistoryPerfTraceBySession||{},[r]:v}),Qe(this,{traceId:v,phase:"history.request_send",agentId:i,sessionId:n,messageType:g.type,bytes:JSON.stringify(g).length,detail:{mode:y,limit:g.limit??null,afterSeq:g.afterSeq??null,hasCachedSessionRows:c,needSessionReady:a}}),this.sendWsMessage(g),!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:i=null,search:r=void 0}={}){if(!this.currentAgent)return;let o=typeof r=="string"?r.trim():(this.yeaftDebugSearch||"").trim(),a=typeof i=="string"&&i,l=o&&!a?dc:Pr,c=Number.isFinite(t)&&t>0?t:this.yeaftDebugHistoryLimit||l,d=Math.max(1,Math.min(l,c)),u=a?"detail":"list",p=`dbg_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`,f=JSON.stringify({agentId:this.currentAgent,groupId:e||null,limit:d,dreamLimit:Number.isFinite(s)&&s>0?s:5,indexOnly:!!n,detailTurnId:i||null,search:a?"":o});if(this._yeaftDebugHistoryInFlightKey===f)return;this._yeaftDebugHistoryInFlightKey=f,a||(this._yeaftDebugHistoryLatestListRequestId=p),this.yeaftDebugHistoryLimit=d,this.yeaftDebugHistoryLoading=!0,this.yeaftDebugHistoryError=null;let g={type:"yeaft_fetch_debug_history",agentId:this.currentAgent,requestId:p,requestKind:u,limit:d,dreamLimit:Number.isFinite(s)&&s>0?s:5};n&&(g.indexOnly=!0),typeof i=="string"&&i?g.detailTurnId=i:o&&(g.search=o),typeof e=="string"&&e&&(g.sessionId=e),this.sendWsMessage(g),this._fetchYeaftDebugHistoryTimer&&clearTimeout(this._fetchYeaftDebugHistoryTimer),this._fetchYeaftDebugHistoryTimer=setTimeout(()=>{this.yeaftDebugHistoryLoading&&(this.yeaftDebugHistoryLoading=!1,this.yeaftDebugHistoryError="Debug history is unavailable right now. Try again after the agent reconnects."),this._yeaftDebugHistoryInFlightKey=null,this._fetchYeaftDebugHistoryTimer=null},1e4)},agentIdForSession(e){return Ee(this,e)},sendYeaftSessionMessage({groupId:e,text:t,mentions:s,attachments:n}){let i=Ee(this,e);if(!e||!i)return;let r=Array.isArray(n)?n.filter(p=>p&&p.fileId):[],o=r.length>0;if(!t?.trim()&&!o)return;let a=t?.trim()?t:"(attached files)",l=`u_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`,c=Us();this.yeaftPerfTraceByMessageId={...this.yeaftPerfTraceByMessageId||{},[l]:c},Qe(this,{traceId:c,phase:"send.prepare",agentId:i,sessionId:e,turnId:l,messageType:"yeaft_session_send",detail:{mentionCount:Array.isArray(s)?s.length:0,attachmentCount:r.length}});let d=ps(this,e);if(d){let p={id:l,messageId:l,clientMessageId:l,type:"user",content:a,sessionId:e,turnId:l};r.length>0&&(p.attachments=r.map(f=>({fileId:f.fileId,name:f.name,preview:f.preview,isImage:!!f.isImage,mimeType:f.mimeType||""}))),this.addMessageToConversation(d,p),this.processingConversations[d]=!0,e&&(this.yeaftProcessingSessions={...this.yeaftProcessingSessions,[e]:!0}),this._turnCompletedConvs?.delete(d),this._closedAt?.[d]&&delete this._closedAt[d],this.getOrCreateExecutionStatus(d),lr(this,d)}let u={type:"yeaft_session_send",agentId:i,id:l,sessionId:e,text:a,mentions:Array.isArray(s)?s:[],perfTraceId:c};r.length>0&&(u.attachments=r.map(p=>({fileId:p.fileId,isImage:!!p.isImage}))),Qe(this,{traceId:c,phase:"send.websocket_send",agentId:i,sessionId:e,turnId:l,messageType:u.type,bytes:JSON.stringify(u).length}),this.sendWsMessage(u)},cancelYeaftTask({sessionId:e,taskId:t}){let s=typeof e=="string"?e.trim():"",n=typeof t=="string"?t.trim():"",i=Ee(this,s);return!i||!s||!n?!1:(this.yeaftStoppingTasksById={...this.yeaftStoppingTasksById,[Mr(s,n)]:!0},this.sendWsMessage({type:"yeaft_task_cancel",agentId:i,sessionId:s,taskId:n,clientRequestId:`task_cancel_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}),!0)},getYeaftMessageWindowKey(e=null){return e||this.yeaftActiveSessionFilter||"__all__"},pruneYeaftMessageWindow(e=null){if(this.currentView!=="yeaft")return;let t=this.getYeaftMessageWindowKey(e);this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[t]:{visibleTurns:Ut()}}},expandYeaftMessageWindow(e=null,t=xr()){if(this.currentView!=="yeaft")return;let s=this.getYeaftMessageWindowKey(e),i=(this.yeaftMessageWindowState[s]?.visibleTurns||Ut())+Math.max(1,Number.isFinite(t)?Math.floor(t):xr());this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[s]:{visibleTurns:i}}},revealYeaftMessage(e,t,s=null){let n=e||this.yeaftActiveSessionFilter||null,i=s||ps(this,n);if(!i||!t)return!1;let r=(this.messagesMap[i]||[]).filter(u=>n?(u?.sessionId??u?.groupId??null)===n:!0),o=r.findIndex(u=>(u?.id||u?.messageId)===t||u?.persistedMessageId===t);if(o<0)return!1;let a=Ql(r),l=a.findIndex(u=>o>=u.start&&o<u.end);if(l<0)return!1;let c=Math.max(Ut(),a.length-l),d=this.getYeaftMessageWindowKey(n);return this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[d]:{visibleTurns:c}},!0},getYeaftHistoryOutlineState(e=null,t=null){let s=e||this.yeaftActiveSessionFilter||null,n=Ee(this,s,t),i=qe(n,s),r=this.yeaftHistoryOutlineBySession[i]||{requestId:null,agentId:n,sessionId:s,loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,totalCount:null,loaded:!1,error:null},o=ps(this,s),a=o?this.messagesMap[o]||[]:[],l=new Map((r.results||[]).map(p=>[Gs(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 y=p.type,A=p.turnId||p.threadId||f,x=p.speakerVpId||p.vpId||null,k=Gs({role:y,messageId:f,clientMessageId:p.clientMessageId,turnId:A,speakerVpId:x}),b=l.get(k),w=(typeof p.content=="string"?p.content:"").replace(/\s+/g," ").trim();l.set(k,{...b,messageId:Number.isFinite(b?.seq)?b.messageId:f,...p.clientMessageId?{clientMessageId:p.clientMessageId}:{},turnId:A,role:y,speakerVpId:x||b?.speakerVpId||null,timestamp:p.timestamp||p.ts||b?.timestamp||null,snippet:w.length>180?`${w.slice(0,180).trimEnd()}\u2026`:w||b?.snippet||""}),b||(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{...r,results:u,totalCount:Number.isFinite(r.totalCount)?r.totalCount+c:r.totalCount}},promoteYeaftHistoryOutlineRow(e){let t=e?.sessionId??e?.groupId??null,s=Ee(this,t),n=qe(s,t),i=this.yeaftHistoryOutlineBySession[n];if(!t||!s||!i?.loaded||i.loading)return!1;let r=e?.type;if(r!=="user"&&r!=="assistant")return!1;let o=e.dbMessageId||e.messageId||e.id||null,a=cg(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=Gs({role:r,messageId:o,clientMessageId:e.clientMessageId,turnId:l,speakerVpId:c}),f=new Map((i.results||[]).map(k=>[Gs(k),k])),g=f.get(p);f.set(p,{...g,messageId:o,...e.clientMessageId?{clientMessageId:e.clientMessageId}:{},turnId:l,seq:a,role:r,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,y=Array.from(f.values()).sort((k,b)=>(k.seq||0)-(b.seq||0)),A=y.length>v,x=y.slice(-v);return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[n]:{...i,results:x,hasMore:i.hasMore||A,nextBeforeSeq:A&&Number.isFinite(x[0]?.seq)?x[0].seq:i.nextBeforeSeq,totalCount:Number.isFinite(i.totalCount)&&!g?i.totalCount+1:i.totalCount}},!0},promoteCompletedYeaftHistoryOutline(e,t=null){let s=this.messagesMap[e]||[],n=null,i=[];for(let r=s.length-1;r>=0;r--){let o=s[r];if(o?.type==="user")break;if(t&&o?.turnId&&o.turnId!==t||o?.type!=="assistant")continue;let a=typeof o.content=="string"?o.content.replace(/\s+/g," ").trim():"";n?!String(n.content||"").trim()&&a&&(n=o):n=o,a&&i.unshift(a)}return n?this.promoteYeaftHistoryOutlineRow({...n,content:i.join(" ")}):!1},invalidateYeaftHistoryOutline(e){let t=Ee(this,e),s=qe(t,e),n=this.yeaftHistoryOutlineBySession[s];return!e||!t||!n?!1:n.loading?(this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[s]:{...n,refreshPending:!0}},!0):(this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[s]:{...n,loaded:!1,refreshPending:!1}},this.currentView==="yeaft"&&this.yeaftActiveSessionFilter===e?this.loadYeaftHistoryOutline({force:!0}):!0)},loadYeaftHistoryOutline({append:e=!1,force:t=!1,targetSessionId:s=null,targetAgentId:n=null}={}){if(this.currentView!=="yeaft"&&!s)return!1;let i=s||this.yeaftActiveSessionFilter||null,r=n||Ee(this,i);if(!i||!r)return!1;let o=qe(r,i),a=this.getYeaftHistoryOutlineState(i,r);if(!e&&a.loaded&&!t)return!0;if(e&&(!a.hasMore||!Number.isFinite(a.nextBeforeSeq))||a.loading)return!1;if(!ac(this,r,"session_history_outline"))return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[o]:{...a,error:"unsupported",loading:!1}},!1;let l=`history_outline_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,c={...a,requestId:l,agentId:r,sessionId:i,loading:!0,requestAppend:e,refreshPending:!1,error:null};this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[o]:c};let d=this._yeaftHistoryOutlineTimeouts[o];d&&clearTimeout(d);let u=setTimeout(()=>{let p=this.yeaftHistoryOutlineBySession[o];if(p?.requestId!==l)return;let f={...this._yeaftHistoryOutlineTimeouts};delete f[o],this._yeaftHistoryOutlineTimeouts=f;let g=p.refreshPending===!0;this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[o]:{...p,requestId:null,loading:!1,requestAppend:!1,loaded:g?!1:p.loaded,refreshPending:!1,error:g?null:"timeout"}},g&&this.loadYeaftHistoryOutline({force:!0,targetSessionId:i,targetAgentId:r})},1e4);return this._yeaftHistoryOutlineTimeouts={...this._yeaftHistoryOutlineTimeouts,[o]:u},this.sendWsMessage({type:"yeaft_load_history_outline",agentId:r,sessionId:i,requestId:l,limit:50,...e&&Number.isFinite(a.nextBeforeSeq)?{beforeSeq:a.nextBeforeSeq}:{},includeTotal:!a.loaded}),!0},handleYeaftHistoryOutline(e){if(!e?.agentId||!e?.sessionId)return!1;let t=qe(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 i={...this._yeaftHistoryOutlineTimeouts};delete i[t],this._yeaftHistoryOutlineTimeouts=i;let r=Array.isArray(e.results)?e.results:[],o=s.requestAppend?[...s.results||[],...r]:r,a=new Map(o.filter(d=>d?.messageId).map(d=>[Gs(d),d])),l=Array.from(a.values()).sort((d,u)=>(d.seq||0)-(u.seq||0)),c=s.refreshPending===!0;return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[t]:{...s,requestId:null,loading:!1,requestAppend:!1,refreshPending:!1,loaded:c?!1:!e.error,results:l,hasMore:!!e.hasMore,nextBeforeSeq:Number.isFinite(e.nextBeforeSeq)?e.nextBeforeSeq:null,totalCount:Number.isFinite(e.totalCount)?e.totalCount:s.totalCount,error:c?null:e.error||null}},c&&this.loadYeaftHistoryOutline({force:!0,targetSessionId:e.sessionId,targetAgentId:e.agentId}),!0},searchYeaftHistory(e,{append:t=!1}={}){if(this.currentView!=="yeaft")return!1;let s=typeof e=="string"?e.trim():"",n=this.yeaftActiveSessionFilter||null,i=Ee(this,n);if(this._yeaftHistorySearchTimeout&&(clearTimeout(this._yeaftHistorySearchTimeout),this._yeaftHistorySearchTimeout=null),!n||!i||s.length<2)return this.yeaftHistorySearchState={requestId:null,agentId:i,sessionId:n,query:s,loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,error:null},!1;let r=this.yeaftHistorySearchState||{};if(!ac(this,i,"session_history_search"))return this.yeaftHistorySearchState={requestId:null,agentId:i,sessionId:n,query:s,loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,error:"unsupported"},!1;let o=`history_search_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return this.yeaftHistorySearchState={requestId:o,agentId:i,sessionId:n,query:s,loading:!0,results:t&&r.query===s?r.results:[],hasMore:!1,nextBeforeSeq:t&&r.query===s?r.nextBeforeSeq:null,error:null},this._yeaftHistorySearchTimeout=setTimeout(()=>{this.yeaftHistorySearchState?.requestId===o&&(this._yeaftHistorySearchTimeout=null,this.yeaftHistorySearchState={...this.yeaftHistorySearchState,loading:!1,error:"timeout"})},1e4),this.sendWsMessage({type:"yeaft_search_history",agentId:i,sessionId:n,requestId:o,query:s,limit:20,...t&&Number.isFinite(r.nextBeforeSeq)?{beforeSeq:r.nextBeforeSeq}:{}}),!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)return!1;this._yeaftHistorySearchTimeout&&(clearTimeout(this._yeaftHistorySearchTimeout),this._yeaftHistorySearchTimeout=null);let s=Array.isArray(e.results)?e.results:[],n=new Map((t.results||[]).map(i=>[i.messageId,i]));for(let i of s)i?.messageId&&n.set(i.messageId,i);return this.yeaftHistorySearchState={...t,loading:!1,results:Array.from(n.values()),hasMore:!!e.hasMore,nextBeforeSeq:Number.isFinite(e.nextBeforeSeq)?e.nextBeforeSeq:null,error:e.error||null},!0},loadYeaftHistoryWindow(e){let t=this.yeaftActiveSessionFilter||null,s=Ee(this,t);if(!t||!s||!e?.messageId||!Number.isFinite(e.seq))return Promise.resolve(!1);if(this.revealYeaftMessage(t,e.messageId))return Promise.resolve(!0);let n=`history_window_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,i=this._yeaftHistoryWindowPending;return i&&(clearTimeout(i.timeout),i.resolve(!1),this._yeaftHistoryWindowPending=null),new Promise(r=>{let o=setTimeout(()=>{this._yeaftHistoryWindowPending?.requestId===n&&(this._yeaftHistoryWindowPending=null),r(!1)},1e4);this._yeaftHistoryWindowPending={requestId:n,agentId:s,sessionId:t,messageId:e.messageId,resolve:r,timeout:o},this.sendWsMessage({type:"yeaft_load_history_window",agentId:s,sessionId:t,requestId:n,anchorMessageId:e.messageId,anchorSeq:e.seq,beforeTurns:3,afterTurns:3})})},handleYeaftHistoryWindow(e,t=null){let s=this._yeaftHistoryWindowPending;if(!s||e?.requestId!==s.requestId||e.agentId!==s.agentId||e.sessionId!==s.sessionId)return!1;clearTimeout(s.timeout),this._yeaftHistoryWindowPending=null;let n=!e.error&&!!t&&this.revealYeaftMessage(s.sessionId,s.messageId,t);return s.resolve(!!n),!!n},createYeaftSession({displayName:e,vpIds:t,defaultVpId:s,workDir:n,agentId:i}={}){let r=Array.isArray(t)?t.slice():[],o=s&&r.includes(s)?s:r[0]||null,a=(e||"").trim(),l=(n||"").trim(),c={roster:r,defaultVpId:o};return a&&(c.name=a),l&&(c.workDir=l),this.sessionCrudRequest("create",c,{agentId:i})},handleYeaftOutput(e){if(!e)return;if(e.perfTraceId&&(Qe(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 s=e.conversationId||this.yeaftConversationId;if(s){let n=e.agentId||this.yeaftAgentId||this.currentAgent||null,i=e.sessionId??e.groupId??null,r=lc(this,i,n),o=n&&this.yeaftConversationIdsByAgent?this.yeaftConversationIdsByAgent[n]:null,a=!r&&o===this.yeaftConversationId;if(this.currentView==="yeaft"&&n&&o&&o!==s){let p=this.messagesMap[o]||[],f=this.messagesMap[s]||[];this.messagesMap[s]=rr(f,p).sort((g,v)=>(g.timestamp||0)-(v.timestamp||0)),!a&&String(o).startsWith("yeaft-local-")&&delete this.messagesMap[o]}n&&(this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[n]:s}),(r||!this.yeaftConversationId)&&(this.yeaftConversationId=s),r&&(this.activeConversations=[s]),this.messagesMap[s]||(this.messagesMap[s]=[]),this.currentView==="yeaft"&&(e.data?.type==="user"||e.data?.type==="text_delta")&&this.pruneYeaftMessageWindow(this.yeaftActiveSessionFilter&&e.sessionId||null);let l=this._currentYeaftSessionId,c=this._currentYeaftVpId,d=this._currentYeaftTurnId,u=this._currentYeaftThreadId;i!=null&&(this._currentYeaftSessionId=i),e.vpId&&(this._currentYeaftVpId=e.vpId),e.turnId&&(this._currentYeaftTurnId=e.turnId),e.threadId&&(this._currentYeaftThreadId=e.threadId);try{this.currentView==="yeaft"&&i&&(!this.yeaftActiveSessionFilter||i===this.yeaftActiveSessionFilter)&&this.pruneYeaftMessageWindow(this.yeaftActiveSessionFilter?i:null);let f=typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();if(this.handleAssistantOutputFrame(s,e.data),e.perfTraceId){let b=typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();Qe(this,{traceId:e.perfTraceId,phase:"store.apply_output",agentId:e.agentId||null,sessionId:i||null,vpId:e.vpId||null,turnId:e.turnId||null,threadId:e.threadId||null,messageType:e.data?.type||null,durationMs:b-f}),Pn(this,{traceId:e.perfTraceId,agentId:e.agentId||null,sessionId:i||null,vpId:e.vpId||null,turnId:e.turnId||null,threadId:e.threadId||null,messageType:e.data?.type||null})}let g=e.data,v=g?.message?.id||g?.id||null,y=lg(v),A=Array.isArray(g?.message?.content)?g.message.content:[],x=A.some(b=>b?.type==="tool_use"),k=!!g?.tool_use_result||A.some(b=>b?.type==="tool_result");if(i){let b=!k&&!ag(this,s,i)&&(g?.type==="user"||g?.type==="assistant"&&!x)?y:null,m=qe(e.agentId||null,i),w=this.yeaftSessionHistoryState[m]||{},E=Number.isFinite(w.latestSeq)?w.latestSeq:-1;b!==null&&b>E&&(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[m]:{...w,latestSeq:b}})}}finally{this._currentYeaftSessionId=l,this._currentYeaftVpId=c,this._currentYeaftTurnId=d,this._currentYeaftThreadId=u}}return}let t=e.event;if(t)switch(t.type){case"ask_user_question":{let s=e.conversationId||this.yeaftConversationId;if(!s||!t.requestId)break;let n=tc(e,t,s),i=()=>{let r=this.messagesMap[s]||[],o=nc(r,n,s);if(o){if(o.askAnswered||o.askExpired)return!0;o.toolName="AskUserQuestion",t.toolCallId&&!o.toolId&&(o.toolId=t.toolCallId),o.agentId=n.agentId||o.agentId||null,o.askRequestId=t.requestId,o.askQuestions=t.questions||[],o.askCreatedAt=t.createdAt||null,o.askExpiresAt=t.expiresAt||null,t.replay&&(o.askPending=!1,o.pendingAnswers=null,o.askSubmitGeneration=null),o.isHistory=!1;let c=ic(this,n);return c&&Tr(o,c),this.messagesMap={...this.messagesMap,[s]:r.slice()},!0}if(!t.replay)return!1;let a={id:`ask-card-${t.requestId}`,type:"tool-use",toolName:"AskUserQuestion",toolId:t.toolCallId||null,toolInput:{questions:t.questions||[]},askRequestId:t.requestId,askQuestions:t.questions||[],askCreatedAt:t.createdAt||null,askExpiresAt:t.expiresAt||null,agentId:n.agentId,sessionId:n.sessionId,vpId:n.vpId,speakerVpId:n.vpId,turnId:n.turnId,threadId:n.threadId||"main",hasResult:!1,isHistory:!1,timestamp:t.createdAt||Date.now()},l=ic(this,n);return l&&Tr(a,l),r.push(a),this.messagesMap={...this.messagesMap,[s]:r.slice()},!0};if(!i()){let r=0,o=setInterval(()=>{r+=1,(i()||r>=10)&&clearInterval(o)},200)}break}case"ask_user_answered":case"ask_user_expired":{let s=e.conversationId||this.yeaftConversationId;if(!s||!t.requestId)break;let n=this.messagesMap[s]||[],i=tc(e,t,s),r=nc(n,i,s);if(!r){og(this,i,t);break}Tr(r,t),this.messagesMap={...this.messagesMap,[s]:n.slice()};break}case"session_ready":{let s=t.conversationId,n=e.agentId||this.currentAgent,i=n&&this.yeaftConversationIdsByAgent?this.yeaftConversationIdsByAgent[n]:null,r=this.yeaftConversationId?String(this.yeaftConversationId):"",o=r.startsWith("yeaft-local-")&&(!n||r.startsWith(`yeaft-local-${n}-`)||/^yeaft-local-\d/.test(r))?this.yeaftConversationId:null,a=i||o,l=t.sessionId||e.sessionId||null,c=lc(this,l,n),d=!c&&a===this.yeaftConversationId;if(a&&a!==s){let v=this.messagesMap[a]||[],y=this.messagesMap[s]||[];this.messagesMap[s]=rr(y,v).sort((A,x)=>(A.timestamp||0)-(x.timestamp||0)),!d&&a.startsWith("yeaft-local-")&&delete this.messagesMap[a],this.processingConversations[a]&&(this.processingConversations[s]=!0,d||delete this.processingConversations[a]),this.executionStatusMap[a]&&(this.executionStatusMap[s]=this.executionStatusMap[a],d||delete this.executionStatusMap[a])}else this.messagesMap[s]||(this.messagesMap[s]=[]);n&&(this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[n]:s},this.cacheYeaftAgentStatus(n,t,{allowBootstrapCatalog:c})),c&&(this.yeaftModel=t.model,this.yeaftModelEffort=t.modelEffort||null,this.yeaftSessionReady=!0,this.yeaftBootstrapMetaLoadingKey=null,n?this.applyCachedYeaftStatus(n):this.yeaftAvailableModels=t.availableModels||[]);let u=Array.isArray(t.tasks)?t.tasks:[],p={};for(let v of u)!v?.id||!v.sessionId||v.status!=="running"||(p[v.sessionId]={...p[v.sessionId]||{},[v.id]:v});this.yeaftActiveTasksBySession=p,c&&(t.yeaftDir&&(this.yeaftYeaftDir=t.yeaftDir),this.yeaftStatus={skills:t.skills,mcpServers:t.mcpServers,tools:t.tools,multiVp:!!t.multiVp}),(c||!this.yeaftConversationId)&&(this.yeaftConversationId=s),c&&(this.activeConversations=[s]);let f=e.agentId||this.currentAgent||null,g=f||"__current__";this._yeaftVpSubscribedAgentKey!==g&&(this._yeaftVpSubscribedAgentKey=g,this.sendWsMessage(f?{type:"yeaft_vp_subscribe",agentId:f}:{type:"yeaft_vp_subscribe"}));break}case"yeaft_status":{let s=e.agentId||this.currentAgent;s&&this.cacheYeaftAgentStatus(s,t);break}case"context_usage":break;case"turn_open":{if(!t.turnId)break;let s={turnId:t.turnId,userPrompt:t.userPrompt||"",vpId:t.vpId||e.vpId||null,sessionId:t.sessionId||e.sessionId||null,openedAt:t.at||Date.now(),closedAt:null,totalMs:0,totalTokens:0,loopCount:0,memoryLoaded:null,memoryAdjust:null,tools:[],detailsLoaded:!0};this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[t.turnId]:s},this.yeaftDebugTurnOrder.includes(t.turnId)||(this.yeaftDebugTurnOrder=[...this.yeaftDebugTurnOrder,t.turnId]);break}case"turn_close":{if(!t.turnId)break;let s=this.yeaftDebugTurnsById[t.turnId];if(!s)break;this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[t.turnId]:{...s,closedAt:Date.now(),totalMs:t.totalMs||0,totalTokens:t.totalTokens||0,loopCount:t.loopCount||s.loopCount||0}};break}case"memory_used":{if(!t.turnId)break;let s=this.yeaftDebugTurnsById[t.turnId];if(!s)break;this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[t.turnId]:{...s,memoryLoaded:Array.isArray(t.loaded)?t.loaded:[]}};break}case"dream_memory_loaded":{let s=Array.isArray(t.resident)?t.resident:[];if(t.turnId){let i=this.yeaftDebugTurnsById[t.turnId];i&&(this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[t.turnId]:{...i,dreamMemoryLoaded:s,dreamMemoryLoadedInto:t.loadedInto||"system_prompt.memory"}})}let n={};for(let i of s){let r=i&&typeof i.scope=="string"?i.scope:null,o=r&&/^sessions\/[^/]+$/.test(r)?r:r&&/^group\/[^/]+$/.test(r)?`sessions/${r.slice(6)}`:null;o&&(n[o]={scope:o,sourceScope:r,sessionId:o.slice(9),turnId:t.turnId||null,vpId:t.vpId||null,loadedInto:t.loadedInto||"system_prompt.memory",summary:i.summary||"",truncated:!!i.truncated,receivedAt:Date.now()})}Object.keys(n).length>0&&(this.yeaftDreamPromptLoads={...this.yeaftDreamPromptLoads,...n});break}case"memory_adjust":{if(!t.turnId)break;let s=this.yeaftDebugTurnsById[t.turnId];if(!s)break;this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[t.turnId]:{...s,memoryAdjust:{sessionKey:t.sessionKey||null,added:t.added||0,evicted:t.evicted||0,skipped:t.skipped||0,reason:t.reason||""}}};break}case"tool_exec":{if(!t.turnId)break;let s=this.yeaftDebugTurnsById[t.turnId];if(!s)break;let n=[...s.tools||[],{loopNumber:t.loopNumber||0,callId:t.callId||null,name:t.name||"?",durationMs:t.durationMs||0,isError:!!t.isError,toolOutput:t.toolOutput==null?null:String(t.toolOutput)}];this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[t.turnId]:{...s,tools:n}};break}case"loop":{if(this.yeaftDebugLoops.push({turnId:t.turnId||null,loopNumber:t.loopNumber||0,model:t.model,systemPrompt:t.systemPrompt,messages:t.messages,response:t.response,toolCalls:t.toolCalls,usage:t.usage||{inputTokens:0,outputTokens:0,totalTokens:0},latencyMs:t.latencyMs,ttfbMs:t.ttfbMs,stopReason:t.stopReason,at:typeof t.at=="number"?t.at:null,rawRequest:t.rawRequest||null,rawResponse:t.rawResponse||null,sessionId:e.sessionId||null,vpId:e.vpId||t.vpId||null}),this.yeaftDebugLoops.length>cc){let s=Nl({loops:this.yeaftDebugLoops,turnsById:this.yeaftDebugTurnsById,turnOrder:this.yeaftDebugTurnOrder,maxLoops:Math.max(cc,this.yeaftDebugHistoryLimit||0)});this.yeaftDebugLoops=s.loops,this.yeaftDebugTurnsById=s.turnsById,this.yeaftDebugTurnOrder=s.turnOrder}break}case"recall":case"consolidate":case"fallback":case"thinking_delta":break;case"reflection":{let s=e.conversationId||this.yeaftConversationId||"unknown",n=Array.isArray(t.loopRange)?t.loopRange:[0,0],i=`${s}:${t.trigger}:${n[0]}-${n[1]}`,r=this.yeaftReflectionCards[i],o=this.messagesMap[s]||[],a=r?r.anchorMsgId:o.length>0&&o[o.length-1].id||null,l=r?r.anchorOrder:o.length;this.yeaftReflectionCards={...this.yeaftReflectionCards,[i]:{key:i,conversationId:s,turnId:t.turnId||r&&r.turnId||null,loopNumber:t.loopNumber||r&&r.loopNumber||null,trigger:t.trigger,status:t.status,loopRange:n,toolCount:t.toolCount||0,content:t.content||"",durationMs:t.durationMs||0,error:t.error||null,sessionId:e.sessionId||null,anchorMsgId:a,anchorOrder:l,updatedAt:Date.now()}};break}case"model_switched":this.yeaftModel=t.model,this.yeaftModelEffort=t.modelEffort||null;break;case"yeaft_task_event":{let s=t.task;if(!s?.id||!s.sessionId)break;let n={...this.yeaftActiveTasksBySession},i={...n[s.sessionId]||{}};s.status==="running"||pc.has(s.status)?i[s.id]=s:delete i[s.id];let r=oc(i);if(Object.keys(r).length>0?n[s.sessionId]=r:delete n[s.sessionId],this.yeaftActiveTasksBySession=n,s.status!=="running"){let{[Mr(s.sessionId,s.id)]:o,...a}=this.yeaftStoppingTasksById||{};this.yeaftStoppingTasksById=a}break}case"yeaft_task_cancel_result":{let s=t.taskId||t.task?.id||null,n=t.task?.sessionId||t.sessionId||e.sessionId||null;if(s&&n&&t.success===!1){let{[Mr(n,s)]:r,...o}=this.yeaftStoppingTasksById||{};this.yeaftStoppingTasksById=o}let i=t.task;if(i?.id&&i.sessionId){let r={...this.yeaftActiveTasksBySession},o={...r[i.sessionId]||{}};o[i.id]=i;let a=oc(o);Object.keys(a).length>0?r[i.sessionId]=a:delete r[i.sessionId],this.yeaftActiveTasksBySession=r}break}case"sub_agent_event":{let s=e.conversationId||this.yeaftConversationId||"unknown",n=t.agentId;if(!n)break;let i=t.payload||{},r=`${s}:${n}`,o=this.yeaftSubAgentCards[r],a=this.messagesMap[s]||[],l=o?o.anchorMsgId:a.length>0&&a[a.length-1].id||null,c=o?o.anchorOrder:a.length,d=o?{...o}:{key:r,conversationId:s,agentId:n,agentName:i.agentName||"sub-agent",status:"running",text:"",toolCallCount:0,turns:0,error:null,expanded:!1,anchorMsgId:l,anchorOrder:c,updatedAt:Date.now(),sessionId:e.sessionId||null};switch(i.agentName&&!d.agentName&&(d.agentName=i.agentName),i.type){case"sub_agent_status":d.status=i.status||d.status,i.error&&(d.error=i.error);break;case"text_delta":break;case"tool_use":case"tool_call":d.toolCallCount=Number(d.toolCallCount||0)+1;break;case"tool_start":break;case"tool_result":case"tool_end":break;case"sub_agent_turn_end":{d.turns+=1;let u=typeof i.content=="string"?i.content.trim():"";u&&(d.text=d.text?`${d.text}
|
|
@@ -1826,7 +1826,7 @@ ${String(e||"").trim()}
|
|
|
1826
1826
|
<div class="placeholder-text">{{ $t('terminal.autoCreate') }}</div>
|
|
1827
1827
|
</div>
|
|
1828
1828
|
</div>
|
|
1829
|
-
`,setup(){let e=Pinia.useChatStore(),t=Vue.inject("t"),s=Vue.reactive({}),n=Vue.reactive({}),i=Vue.reactive({}),r=Vue.ref(""),o={},a=!1,l=Vue.computed(()=>{let M=e.currentConversation;return M&&n[M]||null}),c=Vue.computed(()=>{let M=e.currentConversation;return M&&i[M]||""}),d=Vue.computed(()=>!!c.value),u=(M,C)=>{if(C){let T=o[M];if(o[M]=C,T&&T!==C){let N=s[M];N?.terminal?.element&&(C.innerHTML="",C.appendChild(N.terminal.element),Vue.nextTick(()=>{try{N.fitAddon?.fit()}catch{}}))}}},p=M=>{let C=e.currentConversation;C&&(i[C]=M)};async function f(){if(a)return!0;let M=typeof Terminal<"u"?Terminal.Terminal||Terminal:null,C=typeof FitAddon<"u"?FitAddon.FitAddon||FitAddon:null;if(!M||!C)try{await fo("vendor/xterm.min.js"),await fo("vendor/xterm-addon-fit.min.js"),M=typeof Terminal<"u"?Terminal.Terminal||Terminal:null,C=typeof FitAddon<"u"?FitAddon.FitAddon||FitAddon:null}catch{}return!M||!C?(r.value=t("terminal.xtermNotLoaded"),!1):(a=!0,!0)}function g(){let M=document.documentElement.getAttribute("data-theme")==="dark",T=getComputedStyle(document.documentElement).getPropertyValue("--bg-main").trim()||(M?"#212121":"#ffffff");return M?{background:T,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:T,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 v(M){if(!M||!e.currentAgent||!await f())return null;let C=Wd(M),T=Terminal.Terminal||Terminal,N=FitAddon.FitAddon||FitAddon,H=new T({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:g(),allowProposedApi:!0}),U=new N;return H.loadAddon(U),H.attachCustomKeyEventHandler(ie=>!((ie.ctrlKey||ie.metaKey)&&ie.key==="v"||(ie.ctrlKey||ie.metaKey)&&ie.key==="c"&&H.hasSelection())),s[C]={created:!0,connected:!1,terminal:H,fitAddon:U},H.onData(ie=>{e.sendWsMessage({type:"terminal_input",conversationId:M,terminalId:C,data:ie,_clientId:e.clientId})}),C}async function y(M,C){let T=s[C];if(!T)return!1;let N=null;for(let H=0;H<10&&(await Vue.nextTick(),N=o[C],!(N||H>=2&&(await new Promise(U=>setTimeout(U,50)),N=o[C],N)));H++);return N?(T.terminal.open(N),T.fitAddon.fit(),e.sendWsMessage({type:"terminal_create",conversationId:M,terminalId:C,cols:T.terminal.cols,rows:T.terminal.rows,_clientId:e.clientId}),!0):(r.value=t("terminal.mountFailed"),T.terminal.dispose(),delete s[C],!1)}let A=!1;async function x(){let M=e.currentConversation;if(!M||!e.currentAgent||n[M]||A)return;A=!0,r.value="";let C=await v(M);if(!C){A=!1;return}n[M]=Vue.reactive({type:"pane",terminalId:C}),i[M]=C,await y(M,C)||(delete n[M],delete i[M]),A=!1}async function k(M){let C=e.currentConversation;if(!C||!i[C])return;let T=i[C],N=await v(C);if(!N)return;let H=Vue.reactive({type:"split",direction:M,ratio:.5,first:{type:"pane",terminalId:T},second:{type:"pane",terminalId:N}}),U=fi(n[C],T,H);if(n[C]=Vue.reactive(U),i[C]=N,!await y(C,N)){let Y=Dt(n[C],N);Y&&(n[C]=Vue.reactive(Y)),i[C]=T;return}await Vue.nextTick(),w(C)}function b(M){let C=e.currentConversation;if(!C)return;let T=s[M];T&&(e.sendWsMessage({type:"terminal_close",conversationId:C,terminalId:M,_clientId:e.clientId}),T.terminal?.dispose(),delete s[M],delete o[M]);let N=Dt(n[C],M);N?(n[C]=Vue.reactive(N),i[C]===M&&(i[C]=gi(n[C])||""),Vue.nextTick(()=>w(C))):(delete n[C],delete i[C],Vue.nextTick(()=>x()))}function m(){let M=e.currentConversation;!M||!i[M]||b(i[M])}function w(M){if(M||(M=e.currentConversation),!M||!n[M])return;let C=an(n[M]);for(let T of C){let N=s[T];if(N?.fitAddon&&N.connected)try{N.fitAddon.fit(),e.sendWsMessage({type:"terminal_resize",conversationId:M,terminalId:T,cols:N.terminal.cols,rows:N.terminal.rows,_clientId:e.clientId})}catch{}}}function E(M){let C=M.detail;if(C)switch(C.type){case"terminal_created":{let T=C.terminalId||C.conversationId,N=s[T];if(N)if(C.success)N.connected=!0,r.value="";else{r.value=C.error||t("terminal.createFailed"),N.terminal?.dispose(),delete s[T];let H=C.conversationId;if(H&&n[H]){let U=Dt(n[H],T);U?n[H]=Vue.reactive(U):(delete n[H],delete i[H])}}break}case"terminal_output":{let T=C.terminalId||C.conversationId,N=s[T];N?.terminal&&N.terminal.write(C.data);break}case"terminal_closed":{let T=C.terminalId||C.conversationId,N=s[T];if(N){N.terminal?.dispose(),delete s[T],delete o[T];let H=C.conversationId;if(H&&n[H]){let U=Dt(n[H],T);U?(n[H]=Vue.reactive(U),i[H]===T&&(i[H]=gi(n[H])||"")):(delete n[H],delete i[H])}}break}case"terminal_error":{r.value=C.message||t("terminal.error");let T=C.terminalId;if(T&&s[T]&&!s[T].connected){s[T].terminal?.dispose(),delete s[T];let N=C.conversationId;if(N&&n[N]){let H=Dt(n[N],T);H?n[N]=Vue.reactive(H):(delete n[N],delete i[N])}}break}}}let R=null;function q(){clearTimeout(R),R=setTimeout(()=>w(),100)}function $(){w()}function P(M){let{conversationId:C}=M.detail;if(C&&n[C]){let T=an(n[C]);for(let N of T){let H=s[N];H&&(H.terminal?.dispose(),delete s[N],delete o[N])}delete n[C],delete i[C]}}Vue.onMounted(()=>{window.addEventListener("workbench-message",E),window.addEventListener("resize",q),window.addEventListener("terminal-fit-all",$),window.addEventListener("conversation-deleted",P)}),Vue.onUnmounted(()=>{window.removeEventListener("workbench-message",E),window.removeEventListener("resize",q),window.removeEventListener("terminal-fit-all",$),window.removeEventListener("conversation-deleted",P),clearTimeout(R);for(let M of Object.keys(s))s[M]?.terminal?.dispose()}),Vue.watch(()=>[e.currentConversation,e.workbenchExpanded],()=>{Vue.nextTick(()=>{if(!e.currentConversation||!e.workbenchExpanded)return;let C=document.querySelector(".terminal-tab");C&&C.offsetParent!==null&&x()})},{immediate:!0}),Vue.watch(()=>e.connectionState,(M,C)=>{if(M==="connected"&&C&&C!=="connected"){for(let T of Object.keys(s))s[T]?.terminal?.dispose(),delete s[T],delete o[T];for(let T of Object.keys(n))delete n[T],delete i[T];Vue.nextTick(()=>x())}}),Vue.watch(()=>e.currentConversation,()=>{Vue.nextTick(()=>w())});let D=null;return Vue.onMounted(()=>{let M=()=>{let T=document.querySelector(".terminal-tab");T&&T.offsetParent!==null&&(x(),w())};D=new MutationObserver(()=>{setTimeout(M,50)});let C=document.querySelector(".workbench-tab-content");C&&D.observe(C,{attributes:!0,subtree:!0,attributeFilter:["style"]})}),Vue.onUnmounted(()=>{D&&D.disconnect()}),{store:e,terminals:s,currentTree:l,currentActivePane:c,hasActivePane:d,terminalError:r,setMountRef:u,activatePane:p,splitPane:k,closeActivePane:m,closePane:b}}}});function mi(e){if(!e)return ln(K.default);let t=e.toLowerCase();if(go[t])return go[t]();let s=t.lastIndexOf(".");if(s>=0){let n=t.slice(s+1);if(Yd[n])return Yd[n]();let i=t;for(let[r,o]of Object.entries(go))if(i===r||i.endsWith("/"+r))return o()}return ln(K.default)}function hi(e=!1){return km(K.folder,e)}var K,ln,km,z,Yd,go,mo=O(()=>{K={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",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"},ln=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>`,km=(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>`,z=(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>`,Yd={js:()=>z(K.js,"JS"),mjs:()=>z(K.js,"JS"),cjs:()=>z(K.js,"JS"),ts:()=>z(K.ts,"TS"),mts:()=>z(K.ts,"TS"),jsx:()=>z(K.jsx,"JSX"),tsx:()=>z(K.tsx,"TSX"),html:()=>z(K.html,"</>"),htm:()=>z(K.html,"</>"),css:()=>z(K.css,"CSS"),scss:()=>z(K.scss,"SC"),sass:()=>z(K.scss,"SA"),less:()=>z(K.less,"LS"),vue:()=>z(K.vue,"V"),svelte:()=>z(K.svelte,"SV"),json:()=>z(K.json,"{ }"),yaml:()=>z(K.yaml,"YML"),yml:()=>z(K.yaml,"YML"),toml:()=>z(K.config,"TML"),xml:()=>z(K.xml,"</>"),csv:()=>z(K.config,"CSV"),md:()=>z(K.md,"MD"),markdown:()=>z(K.md,"MD"),txt:()=>ln(K.txt),log:()=>ln(K.log),pdf:()=>z("#E53935","PDF"),py:()=>z(K.py,"PY"),rb:()=>z(K.rb,"RB"),go:()=>z(K.go,"GO"),rs:()=>z(K.rs,"RS"),java:()=>z(K.java,"JA"),cs:()=>z(K.cs,"C#"),cpp:()=>z(K.cpp,"C+"),cc:()=>z(K.cpp,"C+"),c:()=>z(K.c,"C"),h:()=>z(K.c,"H"),hpp:()=>z(K.cpp,"H+"),swift:()=>z(K.swift,"SW"),kt:()=>z(K.kt,"KT"),php:()=>z(K.php,"PHP"),lua:()=>z(K.lua,"LUA"),r:()=>z(K.r,"R"),dart:()=>z(K.dart,"DA"),sh:()=>z(K.sh,">_"),bash:()=>z(K.sh,">_"),zsh:()=>z(K.sh,">_"),fish:()=>z(K.sh,">_"),ps1:()=>z(K.ps1,"PS"),bat:()=>z(K.ps1,"BAT"),cmd:()=>z(K.ps1,"CMD"),sql:()=>z(K.sql,"SQL"),db:()=>z(K.sql,"DB"),sqlite:()=>z(K.sql,"DB"),svg:()=>z(K.svg,"SVG"),png:()=>z(K.img,"PNG"),jpg:()=>z(K.img,"JPG"),jpeg:()=>z(K.img,"JPG"),gif:()=>z(K.img,"GIF"),ico:()=>z(K.img,"ICO"),webp:()=>z(K.img,"WP"),lock:()=>ln(K.lock),env:()=>z(K.env,"ENV"),ini:()=>z(K.config,"INI"),cfg:()=>z(K.config,"CFG"),conf:()=>z(K.config,"CNF"),liquid:()=>z(K.liquid,"LQ"),ejs:()=>z(K.html,"EJS"),hbs:()=>z(K.html,"HBS"),pug:()=>z(K.html,"PUG"),wasm:()=>z("#654FF0","WA"),proto:()=>z(K.config,"PB"),graphql:()=>z("#E535AB","GQL"),gql:()=>z("#E535AB","GQL")},go={dockerfile:()=>z(K.docker,"DK"),"docker-compose.yml":()=>z(K.docker,"DC"),"docker-compose.yaml":()=>z(K.docker,"DC"),".gitignore":()=>z(K.git,"GI"),".gitattributes":()=>z(K.git,"GA"),".gitmodules":()=>z(K.git,"GM"),".env":()=>z(K.env,"ENV"),".env.local":()=>z(K.env,"ENV"),".env.development":()=>z(K.env,"ENV"),".env.production":()=>z(K.env,"ENV"),"package.json":()=>z("#CB3837","NPM"),"package-lock.json":()=>z("#CB3837","NPM"),"tsconfig.json":()=>z(K.ts,"TSC"),eslintrc:()=>z("#4B32C3","ESL"),".eslintrc.js":()=>z("#4B32C3","ESL"),".eslintrc.json":()=>z("#4B32C3","ESL"),".prettierrc":()=>z("#F7B93E","PR"),makefile:()=>z(K.config,"MK"),"cmakelists.txt":()=>z("#064F8C","CM"),"readme.md":()=>z(K.md,"RM"),license:()=>z("#F5C518","LIC"),"license.md":()=>z("#F5C518","LIC"),"cargo.toml":()=>z(K.rs,"CG"),"go.mod":()=>z(K.go,"MOD"),"go.sum":()=>z(K.go,"SUM"),gemfile:()=>z(K.rb,"GEM"),rakefile:()=>z(K.rb,"RK"),"requirements.txt":()=>z(K.py,"REQ"),pipfile:()=>z(K.py,"PIP"),csproj:()=>z(K.cs,"CSP"),".sln":()=>z(K.cs,"SLN"),slnx:()=>z(K.cs,"SLN")}});function Gt(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function Sm(e,t){if(!e||!t)return Gt(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}},i=t.commentType||"slash";if((i==="slash"||i==="both")&&(n(Ss.comment1,Ie.comment),n(Ss.commentBlock,Ie.comment)),(i==="hash"||i==="both")&&n(Ss.commentHash,Ie.comment),i==="html"&&n(t.commentHtml,Ie.comment),t.commentLine&&n(t.commentLine,Ie.comment),t.commentBlock&&n(t.commentBlock,Ie.comment),n(Ss.string,Ie.string),n(Ss.number,Ie.number),t.keywords&&n(t.keywords,Ie.keyword),t.builtins&&n(t.builtins,Ie.builtin),t.operators&&n(t.operators,Ie.operator),t.decorators&&n(t.decorators,Ie.decorator),t.macros&&n(t.macros,Ie.macro),t.preprocessor&&n(t.preprocessor,Ie.preprocessor),t.attributes&&n(t.attributes,Ie.attribute),t.tags&&n(t.tags,Ie.tag),t.properties&&n(t.properties,Ie.property),t.variables&&n(t.variables,Ie.variable),t.headings&&n(t.headings,Ie.heading),t.bold&&n(t.bold,Ie.bold),t.links&&n(t.links,Ie.link),t.keys&&n(t.keys,Ie.key),t.sections&&n(t.sections,Ie.section),t.selectors&&n(t.selectors,Ie.keyword),t.values&&n(t.values,Ie.number),t.code&&n(t.code,Ie.string),t.italic&&n(t.italic,Ie.builtin),t.attrs&&n(t.attrs,Ie.attribute),s.length===0)return Gt(e);s.sort((a,l)=>a.start-l.start||l.end-l.start-(a.end-a.start));let r="",o=0;for(let a of s)a.start<o||(a.start>o&&(r+=Gt(e.slice(o,a.start))),r+=`<span class="${a.cls}">${Gt(e.slice(a.start,a.end))}</span>`,o=a.end);return o<e.length&&(r+=Gt(e.slice(o))),r}function Cm(e){if(!e)return null;let t=e.split(".").pop()?.toLowerCase();if(!t)return null;let s=Qd[t];return typeof s=="string"&&(s=Qd[s]),s||null}function Xd(e,t){if(!e)return Gt(e||"");let s=Cm(t);return s?Sm(e,s):Gt(e)}var Ss,Qd,Ie,Zd=O(()=>{Ss={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},Qd={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}},Ie={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 Jd(e,t,s){let n=[],i=0,r=0;if(t!=null){let f=t.split(`
|
|
1829
|
+
`,setup(){let e=Pinia.useChatStore(),t=Vue.inject("t"),s=Vue.reactive({}),n=Vue.reactive({}),i=Vue.reactive({}),r=Vue.ref(""),o={},a=!1,l=Vue.computed(()=>{let M=e.currentConversation;return M&&n[M]||null}),c=Vue.computed(()=>{let M=e.currentConversation;return M&&i[M]||""}),d=Vue.computed(()=>!!c.value),u=(M,C)=>{if(C){let T=o[M];if(o[M]=C,T&&T!==C){let N=s[M];N?.terminal?.element&&(C.innerHTML="",C.appendChild(N.terminal.element),Vue.nextTick(()=>{try{N.fitAddon?.fit()}catch{}}))}}},p=M=>{let C=e.currentConversation;C&&(i[C]=M)};async function f(){if(a)return!0;let M=typeof Terminal<"u"?Terminal.Terminal||Terminal:null,C=typeof FitAddon<"u"?FitAddon.FitAddon||FitAddon:null;if(!M||!C)try{await fo("vendor/xterm.min.js"),await fo("vendor/xterm-addon-fit.min.js"),M=typeof Terminal<"u"?Terminal.Terminal||Terminal:null,C=typeof FitAddon<"u"?FitAddon.FitAddon||FitAddon:null}catch{}return!M||!C?(r.value=t("terminal.xtermNotLoaded"),!1):(a=!0,!0)}function g(){let M=document.documentElement.getAttribute("data-theme")==="dark",T=getComputedStyle(document.documentElement).getPropertyValue("--bg-main").trim()||(M?"#212121":"#ffffff");return M?{background:T,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:T,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 v(M){if(!M||!e.currentAgent||!await f())return null;let C=Wd(M),T=Terminal.Terminal||Terminal,N=FitAddon.FitAddon||FitAddon,H=new T({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:g(),allowProposedApi:!0}),U=new N;return H.loadAddon(U),H.attachCustomKeyEventHandler(ie=>!((ie.ctrlKey||ie.metaKey)&&ie.key==="v"||(ie.ctrlKey||ie.metaKey)&&ie.key==="c"&&H.hasSelection())),s[C]={created:!0,connected:!1,terminal:H,fitAddon:U},H.onData(ie=>{e.sendWsMessage({type:"terminal_input",agentId:e.currentAgent,conversationId:M,terminalId:C,data:ie,_clientId:e.clientId})}),C}async function y(M,C){let T=s[C];if(!T)return!1;let N=null;for(let H=0;H<10&&(await Vue.nextTick(),N=o[C],!(N||H>=2&&(await new Promise(U=>setTimeout(U,50)),N=o[C],N)));H++);return N?(T.terminal.open(N),T.fitAddon.fit(),e.sendWsMessage({type:"terminal_create",agentId:e.currentAgent,conversationId:M,terminalId:C,cols:T.terminal.cols,rows:T.terminal.rows,_clientId:e.clientId}),!0):(r.value=t("terminal.mountFailed"),T.terminal.dispose(),delete s[C],!1)}let A=!1;async function x(){let M=e.currentConversation;if(!M||!e.currentAgent||n[M]||A)return;A=!0,r.value="";let C=await v(M);if(!C){A=!1;return}n[M]=Vue.reactive({type:"pane",terminalId:C}),i[M]=C,await y(M,C)||(delete n[M],delete i[M]),A=!1}async function k(M){let C=e.currentConversation;if(!C||!i[C])return;let T=i[C],N=await v(C);if(!N)return;let H=Vue.reactive({type:"split",direction:M,ratio:.5,first:{type:"pane",terminalId:T},second:{type:"pane",terminalId:N}}),U=fi(n[C],T,H);if(n[C]=Vue.reactive(U),i[C]=N,!await y(C,N)){let Y=Dt(n[C],N);Y&&(n[C]=Vue.reactive(Y)),i[C]=T;return}await Vue.nextTick(),w(C)}function b(M){let C=e.currentConversation;if(!C)return;let T=s[M];T&&(e.sendWsMessage({type:"terminal_close",agentId:e.currentAgent,conversationId:C,terminalId:M,_clientId:e.clientId}),T.terminal?.dispose(),delete s[M],delete o[M]);let N=Dt(n[C],M);N?(n[C]=Vue.reactive(N),i[C]===M&&(i[C]=gi(n[C])||""),Vue.nextTick(()=>w(C))):(delete n[C],delete i[C],Vue.nextTick(()=>x()))}function m(){let M=e.currentConversation;!M||!i[M]||b(i[M])}function w(M){if(M||(M=e.currentConversation),!M||!n[M])return;let C=an(n[M]);for(let T of C){let N=s[T];if(N?.fitAddon&&N.connected)try{N.fitAddon.fit(),e.sendWsMessage({type:"terminal_resize",agentId:e.currentAgent,conversationId:M,terminalId:T,cols:N.terminal.cols,rows:N.terminal.rows,_clientId:e.clientId})}catch{}}}function E(M){let C=M.detail;if(C)switch(C.type){case"terminal_created":{let T=C.terminalId||C.conversationId,N=s[T];if(N)if(C.success)N.connected=!0,r.value="";else{r.value=C.error||t("terminal.createFailed"),N.terminal?.dispose(),delete s[T];let H=C.conversationId;if(H&&n[H]){let U=Dt(n[H],T);U?n[H]=Vue.reactive(U):(delete n[H],delete i[H])}}break}case"terminal_output":{let T=C.terminalId||C.conversationId,N=s[T];N?.terminal&&N.terminal.write(C.data);break}case"terminal_closed":{let T=C.terminalId||C.conversationId,N=s[T];if(N){N.terminal?.dispose(),delete s[T],delete o[T];let H=C.conversationId;if(H&&n[H]){let U=Dt(n[H],T);U?(n[H]=Vue.reactive(U),i[H]===T&&(i[H]=gi(n[H])||"")):(delete n[H],delete i[H])}}break}case"terminal_error":{r.value=C.message||t("terminal.error");let T=C.terminalId;if(T&&s[T]&&!s[T].connected){s[T].terminal?.dispose(),delete s[T];let N=C.conversationId;if(N&&n[N]){let H=Dt(n[N],T);H?n[N]=Vue.reactive(H):(delete n[N],delete i[N])}}break}}}let R=null;function q(){clearTimeout(R),R=setTimeout(()=>w(),100)}function $(){w()}function P(M){let{conversationId:C}=M.detail;if(C&&n[C]){let T=an(n[C]);for(let N of T){let H=s[N];H&&(H.terminal?.dispose(),delete s[N],delete o[N])}delete n[C],delete i[C]}}Vue.onMounted(()=>{window.addEventListener("workbench-message",E),window.addEventListener("resize",q),window.addEventListener("terminal-fit-all",$),window.addEventListener("conversation-deleted",P)}),Vue.onUnmounted(()=>{window.removeEventListener("workbench-message",E),window.removeEventListener("resize",q),window.removeEventListener("terminal-fit-all",$),window.removeEventListener("conversation-deleted",P),clearTimeout(R);for(let M of Object.keys(s))s[M]?.terminal?.dispose()}),Vue.watch(()=>[e.currentConversation,e.workbenchExpanded],()=>{Vue.nextTick(()=>{if(!e.currentConversation||!e.workbenchExpanded)return;let C=document.querySelector(".terminal-tab");C&&C.offsetParent!==null&&x()})},{immediate:!0}),Vue.watch(()=>e.connectionState,(M,C)=>{if(M==="connected"&&C&&C!=="connected"){for(let T of Object.keys(s))s[T]?.terminal?.dispose(),delete s[T],delete o[T];for(let T of Object.keys(n))delete n[T],delete i[T];Vue.nextTick(()=>x())}}),Vue.watch(()=>e.currentConversation,()=>{Vue.nextTick(()=>w())});let D=null;return Vue.onMounted(()=>{let M=()=>{let T=document.querySelector(".terminal-tab");T&&T.offsetParent!==null&&(x(),w())};D=new MutationObserver(()=>{setTimeout(M,50)});let C=document.querySelector(".workbench-tab-content");C&&D.observe(C,{attributes:!0,subtree:!0,attributeFilter:["style"]})}),Vue.onUnmounted(()=>{D&&D.disconnect()}),{store:e,terminals:s,currentTree:l,currentActivePane:c,hasActivePane:d,terminalError:r,setMountRef:u,activatePane:p,splitPane:k,closeActivePane:m,closePane:b}}}});function mi(e){if(!e)return ln(K.default);let t=e.toLowerCase();if(go[t])return go[t]();let s=t.lastIndexOf(".");if(s>=0){let n=t.slice(s+1);if(Yd[n])return Yd[n]();let i=t;for(let[r,o]of Object.entries(go))if(i===r||i.endsWith("/"+r))return o()}return ln(K.default)}function hi(e=!1){return km(K.folder,e)}var K,ln,km,z,Yd,go,mo=O(()=>{K={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",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"},ln=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>`,km=(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>`,z=(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>`,Yd={js:()=>z(K.js,"JS"),mjs:()=>z(K.js,"JS"),cjs:()=>z(K.js,"JS"),ts:()=>z(K.ts,"TS"),mts:()=>z(K.ts,"TS"),jsx:()=>z(K.jsx,"JSX"),tsx:()=>z(K.tsx,"TSX"),html:()=>z(K.html,"</>"),htm:()=>z(K.html,"</>"),css:()=>z(K.css,"CSS"),scss:()=>z(K.scss,"SC"),sass:()=>z(K.scss,"SA"),less:()=>z(K.less,"LS"),vue:()=>z(K.vue,"V"),svelte:()=>z(K.svelte,"SV"),json:()=>z(K.json,"{ }"),yaml:()=>z(K.yaml,"YML"),yml:()=>z(K.yaml,"YML"),toml:()=>z(K.config,"TML"),xml:()=>z(K.xml,"</>"),csv:()=>z(K.config,"CSV"),md:()=>z(K.md,"MD"),markdown:()=>z(K.md,"MD"),txt:()=>ln(K.txt),log:()=>ln(K.log),pdf:()=>z("#E53935","PDF"),py:()=>z(K.py,"PY"),rb:()=>z(K.rb,"RB"),go:()=>z(K.go,"GO"),rs:()=>z(K.rs,"RS"),java:()=>z(K.java,"JA"),cs:()=>z(K.cs,"C#"),cpp:()=>z(K.cpp,"C+"),cc:()=>z(K.cpp,"C+"),c:()=>z(K.c,"C"),h:()=>z(K.c,"H"),hpp:()=>z(K.cpp,"H+"),swift:()=>z(K.swift,"SW"),kt:()=>z(K.kt,"KT"),php:()=>z(K.php,"PHP"),lua:()=>z(K.lua,"LUA"),r:()=>z(K.r,"R"),dart:()=>z(K.dart,"DA"),sh:()=>z(K.sh,">_"),bash:()=>z(K.sh,">_"),zsh:()=>z(K.sh,">_"),fish:()=>z(K.sh,">_"),ps1:()=>z(K.ps1,"PS"),bat:()=>z(K.ps1,"BAT"),cmd:()=>z(K.ps1,"CMD"),sql:()=>z(K.sql,"SQL"),db:()=>z(K.sql,"DB"),sqlite:()=>z(K.sql,"DB"),svg:()=>z(K.svg,"SVG"),png:()=>z(K.img,"PNG"),jpg:()=>z(K.img,"JPG"),jpeg:()=>z(K.img,"JPG"),gif:()=>z(K.img,"GIF"),ico:()=>z(K.img,"ICO"),webp:()=>z(K.img,"WP"),lock:()=>ln(K.lock),env:()=>z(K.env,"ENV"),ini:()=>z(K.config,"INI"),cfg:()=>z(K.config,"CFG"),conf:()=>z(K.config,"CNF"),liquid:()=>z(K.liquid,"LQ"),ejs:()=>z(K.html,"EJS"),hbs:()=>z(K.html,"HBS"),pug:()=>z(K.html,"PUG"),wasm:()=>z("#654FF0","WA"),proto:()=>z(K.config,"PB"),graphql:()=>z("#E535AB","GQL"),gql:()=>z("#E535AB","GQL")},go={dockerfile:()=>z(K.docker,"DK"),"docker-compose.yml":()=>z(K.docker,"DC"),"docker-compose.yaml":()=>z(K.docker,"DC"),".gitignore":()=>z(K.git,"GI"),".gitattributes":()=>z(K.git,"GA"),".gitmodules":()=>z(K.git,"GM"),".env":()=>z(K.env,"ENV"),".env.local":()=>z(K.env,"ENV"),".env.development":()=>z(K.env,"ENV"),".env.production":()=>z(K.env,"ENV"),"package.json":()=>z("#CB3837","NPM"),"package-lock.json":()=>z("#CB3837","NPM"),"tsconfig.json":()=>z(K.ts,"TSC"),eslintrc:()=>z("#4B32C3","ESL"),".eslintrc.js":()=>z("#4B32C3","ESL"),".eslintrc.json":()=>z("#4B32C3","ESL"),".prettierrc":()=>z("#F7B93E","PR"),makefile:()=>z(K.config,"MK"),"cmakelists.txt":()=>z("#064F8C","CM"),"readme.md":()=>z(K.md,"RM"),license:()=>z("#F5C518","LIC"),"license.md":()=>z("#F5C518","LIC"),"cargo.toml":()=>z(K.rs,"CG"),"go.mod":()=>z(K.go,"MOD"),"go.sum":()=>z(K.go,"SUM"),gemfile:()=>z(K.rb,"GEM"),rakefile:()=>z(K.rb,"RK"),"requirements.txt":()=>z(K.py,"REQ"),pipfile:()=>z(K.py,"PIP"),csproj:()=>z(K.cs,"CSP"),".sln":()=>z(K.cs,"SLN"),slnx:()=>z(K.cs,"SLN")}});function Gt(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function Sm(e,t){if(!e||!t)return Gt(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}},i=t.commentType||"slash";if((i==="slash"||i==="both")&&(n(Ss.comment1,Ie.comment),n(Ss.commentBlock,Ie.comment)),(i==="hash"||i==="both")&&n(Ss.commentHash,Ie.comment),i==="html"&&n(t.commentHtml,Ie.comment),t.commentLine&&n(t.commentLine,Ie.comment),t.commentBlock&&n(t.commentBlock,Ie.comment),n(Ss.string,Ie.string),n(Ss.number,Ie.number),t.keywords&&n(t.keywords,Ie.keyword),t.builtins&&n(t.builtins,Ie.builtin),t.operators&&n(t.operators,Ie.operator),t.decorators&&n(t.decorators,Ie.decorator),t.macros&&n(t.macros,Ie.macro),t.preprocessor&&n(t.preprocessor,Ie.preprocessor),t.attributes&&n(t.attributes,Ie.attribute),t.tags&&n(t.tags,Ie.tag),t.properties&&n(t.properties,Ie.property),t.variables&&n(t.variables,Ie.variable),t.headings&&n(t.headings,Ie.heading),t.bold&&n(t.bold,Ie.bold),t.links&&n(t.links,Ie.link),t.keys&&n(t.keys,Ie.key),t.sections&&n(t.sections,Ie.section),t.selectors&&n(t.selectors,Ie.keyword),t.values&&n(t.values,Ie.number),t.code&&n(t.code,Ie.string),t.italic&&n(t.italic,Ie.builtin),t.attrs&&n(t.attrs,Ie.attribute),s.length===0)return Gt(e);s.sort((a,l)=>a.start-l.start||l.end-l.start-(a.end-a.start));let r="",o=0;for(let a of s)a.start<o||(a.start>o&&(r+=Gt(e.slice(o,a.start))),r+=`<span class="${a.cls}">${Gt(e.slice(a.start,a.end))}</span>`,o=a.end);return o<e.length&&(r+=Gt(e.slice(o))),r}function Cm(e){if(!e)return null;let t=e.split(".").pop()?.toLowerCase();if(!t)return null;let s=Qd[t];return typeof s=="string"&&(s=Qd[s]),s||null}function Xd(e,t){if(!e)return Gt(e||"");let s=Cm(t);return s?Sm(e,s):Gt(e)}var Ss,Qd,Ie,Zd=O(()=>{Ss={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},Qd={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}},Ie={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 Jd(e,t,s){let n=[],i=0,r=0;if(t!=null){let f=t.split(`
|
|
1830
1830
|
`);for(let g=0;g<f.length;g++)n.push({type:"addition",oldNum:"",oldText:"",newNum:g+1,newText:f[g]}),i++;return{lines:n,stats:{additions:i,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(`
|
|
1831
1831
|
`),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],y=u[g];v&&y?n.push({type:"modification",oldNum:v.num,oldText:v.text,newNum:y.num,newText:y.text}):v?n.push({type:"deletion",oldNum:v.num,oldText:v.text,newNum:"",newText:""}):y&&n.push({type:"addition",oldNum:"",oldText:"",newNum:y.num,newText:y.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)}),r++;else if(f.startsWith("+"))u.push({num:l++,text:f.substring(1)}),i++;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:i,deletions:r},content:e}}var eu=O(()=>{});function tu(e,t){let{effectiveGitWorkDir:s,gitOperating:n,gitOpFeedback:i,commitMessage:r}=t,o=null,a=null,l=(b,m)=>{o&&clearTimeout(o),i.value={ok:b,message:m},o=setTimeout(()=>{i.value=null},4e3)},c=(b,m)=>{e.currentAgent&&(b.value=!0,m.value="",e.sendWsMessage({type:"git_status",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,workDir:s.value,_clientId:e.clientId}))},d=(b,m={})=>{e.currentAgent&&(n.value=!0,a&&clearTimeout(a),a=setTimeout(()=>{n.value&&(n.value=!1,l(!1,"Operation timed out"))},15e3),e.sendWsMessage({type:b,conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,workDir:s.value,_clientId:e.clientId,...m}))};return{showFeedback:l,loadGitStatus:c,gitOp:d,stageFile:b=>d("git_add",{filePath:b}),unstageFile:b=>d("git_reset",{filePath:b}),discardFile:b=>{confirm("Discard changes to "+b+"?")&&d("git_restore",{filePath:b})},stageAll:()=>d("git_add",{addAll:!0}),unstageAll:()=>d("git_reset",{resetAll:!0}),commitChanges:()=>{let b=r.value.trim();b&&d("git_commit",{commitMessage:b})},pushChanges:()=>d("git_push"),handleGitOpResult:(b,m)=>{n.value=!1,a&&(clearTimeout(a),a=null),b.success?(l(!0,b.message||b.operation+" succeeded"),b.operation==="commit"&&(r.value=""),m()):l(!1,b.error||b.operation+" failed")},cleanup:()=>{o&&clearTimeout(o),a&&clearTimeout(a)}}}var su=O(()=>{});function nu(e,t){let s=Vue.ref(!1),n=Vue.ref(""),i=Vue.ref([]),r=Vue.ref(!1),o=Vue.ref(""),a=g=>{r.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:i,folderPickerLoading:r,folderPickerSelected:o,openFolderPicker:()=>{s.value=!0,o.value="",r.value=!0;let g=t.value||"";n.value=g,i.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?"\\":"/",y=n.value.replace(/[/\\]$/,"").split(/[/\\]/);if(y.pop(),y.length===0)n.value="",a("");else if(g&&y.length===1&&/^[A-Za-z]:$/.test(y[0]))n.value=y[0]+"\\",a(y[0]+"\\");else{let A=y.join(v);n.value=A,a(A)}},folderPickerSelectItem:g=>{o.value=g.name},folderPickerEnter:g=>{let v=n.value.includes("\\")||/^[A-Z]:/.test(g.name)?"\\":"/",y;n.value?y=n.value.replace(/[/\\]$/,"")+v+g.name:y=g.name+(g.name.endsWith("\\")?"":"\\"),n.value=y,a(y)},confirmFolderPicker:(g,v)=>{let y=n.value;if(y){if(o.value){let A=y.includes("\\")?"\\":"/";y=y.replace(/[/\\]$/,"")+A+o.value}g.value=y,s.value=!1,v()}},handleDirectoryListing:g=>g.conversationId!=="_git_folder_picker"?!1:(r.value=!1,i.value=(g.entries||[]).filter(v=>v.type==="directory").sort((v,y)=>v.name.localeCompare(y.name)),g.dirPath!=null&&(n.value=g.dirPath),!0)}}var iu=O(()=>{});var ru,ou=O(()=>{mo();Zd();eu();su();iu();ru={name:"GitStatusTab",template:`
|
|
1832
1832
|
<div class="git-status-tab git-three-col">
|