@yeaft/webchat-agent 1.0.372 → 1.0.374

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.
Files changed (34) hide show
  1. package/cli.js +8 -0
  2. package/connection/index.js +11 -1
  3. package/index.js +4 -0
  4. package/local-runtime/server/api.js +2 -0
  5. package/local-runtime/server/auth/login.js +1 -0
  6. package/local-runtime/server/auth/oauth-flow.js +2 -2
  7. package/local-runtime/server/auth/token.js +4 -0
  8. package/local-runtime/server/config.js +47 -1
  9. package/local-runtime/server/database.js +1 -0
  10. package/local-runtime/server/db/connection.js +346 -4
  11. package/local-runtime/server/db/sandbox-db.js +673 -0
  12. package/local-runtime/server/db/user-db.js +137 -7
  13. package/local-runtime/server/index.js +60 -2
  14. package/local-runtime/server/routes/sandbox-routes.js +124 -0
  15. package/local-runtime/server/routes/user-routes.js +30 -15
  16. package/local-runtime/server/sandbox-agent-auth.js +66 -0
  17. package/local-runtime/server/sandbox-attestation-listener.js +128 -0
  18. package/local-runtime/server/sandbox-config.js +42 -0
  19. package/local-runtime/server/sandbox-host-attestation.js +175 -0
  20. package/local-runtime/server/sandbox-reconciler.js +355 -0
  21. package/local-runtime/server/ws-agent.js +34 -11
  22. package/local-runtime/server/ws-client.js +18 -5
  23. package/local-runtime/version.json +1 -1
  24. package/local-runtime/web/app.bundle.js +90 -29
  25. package/local-runtime/web/app.bundle.js.gz +0 -0
  26. package/local-runtime/web/index.html +2 -2
  27. package/local-runtime/web/style.bundle.css +1 -1
  28. package/local-runtime/web/style.bundle.css.gz +0 -0
  29. package/managed-sandbox/agent-runtime.js +73 -0
  30. package/managed-sandbox/controller.js +118 -0
  31. package/managed-sandbox/helper.js +437 -0
  32. package/managed-sandbox/identity-store.js +9 -0
  33. package/managed-sandbox/runtime-executor.js +387 -0
  34. package/package.json +1 -1
@@ -1,17 +1,17 @@
1
- var N=(e,t,s)=>()=>{if(s)throw s[0];try{return e&&(t=e(e=0)),t}catch(n){throw s=[n],n}};var Mh=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(s){throw t=0,s}};function hc(e,t){let s=nacl.randomBytes(24),n=JSON.stringify(e),r,i=!1;n.length>512?(r=pako.gzip(n),i=!0):r=nacl.util.decodeUTF8(n);let o=nacl.secretbox(r,s,t),a={n:nacl.util.encodeBase64(s),c:nacl.util.encodeBase64(o)};return i&&(a.z=!0),a}function vc(e,t){try{let s=nacl.util.decodeBase64(e.n),n=nacl.util.decodeBase64(e.c),r=nacl.secretbox.open(n,s,t);if(!r)return null;if(e.z){let i=pako.ungzip(r,{to:"string"});return JSON.parse(i)}else return JSON.parse(nacl.util.encodeUTF8(r))}catch{return null}}function yc(e){return e&&typeof e=="object"&&typeof e.n=="string"&&typeof e.c=="string"}function bt(e){return nacl.util.decodeBase64(e)}var ei=N(()=>{});function Ht(){return globalThis.localStorage||null}function wc(){let e=si();for(let t of Ko)try{t(e)}catch{}}function Ph(){try{Ht()?.removeItem(Fn),Ht()?.removeItem(Bn)}catch{}}function Rh(e){return String(e||"").trim()||null}function bc(e,t){if(!Nn(t))return{};try{let s=JSON.parse(Ht()?.getItem(e)||"null");return!s||typeof s!="object"||Array.isArray(s)||s.ownerId!==t.ownerId||!s.records||typeof s.records!="object"||Array.isArray(s.records)?(Ht()?.removeItem(e),{}):s.records}catch{try{Ht()?.removeItem(e)}catch{}return{}}}function kc(e,t,s){if(!Nn(s))return!1;try{return Ht()?.setItem(e,JSON.stringify({ownerId:s.ownerId,records:t||{}})),!0}catch{return!1}}function wt(e){let t=Rh(e);if(!t)return zo(),null;if(ws!==t){ws=t,ti+=1;for(let s of[Fn,Bn])try{let n=JSON.parse(Ht()?.getItem(s)||"null");(!n||n.ownerId!==t)&&Ht()?.removeItem(s)}catch{try{Ht()?.removeItem(s)}catch{}}wc()}return si()}function zo(){ws=null,ti+=1,Ph(),wc()}function si(){return ws?{ownerId:ws,epoch:ti}:null}function Nn(e){return!!e&&!!ws&&e.ownerId===ws&&e.epoch===ti}function Sc(e){return{drafts:bc(Fn,e),outbox:bc(Bn,e)}}function Yo(e,t){return kc(Fn,e,t)}function qn(e,t){return kc(Bn,e,t)}function Ic(e){return typeof e!="function"?()=>{}:(Ko.add(e),()=>Ko.delete(e))}var Fn,Bn,ws,ti,Ko,Kw,Go=N(()=>{Fn="yeaft-work-center-composer-drafts-v1",Bn="yeaft-work-center-message-outbox-v1",ws=null,ti=0,Ko=new Set;Kw=Object.freeze({drafts:Fn,outbox:Bn})});function he(e,t){let s=t==null?"__all__":String(t);return e?`${e}${s}`:s}function Wn(e){return typeof e?.entryId=="string"&&e.entryId?`entry:${e.entryId}`:e?.role==="assistant"&&e?.turnId?`live-response:${e.turnId}:${e.speakerVpId||e.vpId||""}`:typeof e?.clientMessageId=="string"&&e.clientMessageId?`client:${e.clientMessageId}`:`message:${e?.messageId||""}`}function jn(e,t,s){return typeof s!="string"||!s?null:`${he(e,t)}message:${s}`}function ns(e,t,s){return typeof s!="string"||!s?null:`${he(e,t)}client:${s}`}var sn=N(()=>{});function Qo(e){return typeof e=="string"&&e?e:null}function nn(e,t){return e?.yeaftSessionHistoryState?.[t]||null}function Ot(e){let t=e?.yeaftActiveSessionFilter||null;if(!t)try{t=(typeof window<"u"&&window.Pinia?.useSessionsStore?.())?.activeSessionId||null}catch{}if(!t)return{agentId:e?.currentAgent||null,sessionId:null,sessionKey:""};let s=(()=>{try{let n=typeof window<"u"&&window.Pinia?.useSessionsStore?.(),r=n?.activeSessionKey?n.sessions?.[n.activeSessionKey]:null;if(r?.id===t&&r.agentId)return r.agentId}catch{}return typeof e?.resolveYeaftSessionAgentId=="function"?e.resolveYeaftSessionAgentId(t):e?.currentAgent||null})();return{agentId:s,sessionId:t,sessionKey:he(s,t)}}function Ac(e,{agentId:t,sessionId:s,mode:n="recent",preserveLoaded:r=!1,latestSeq:i=null}={}){if(!t||!s)return null;let o=he(t,s),a=nn(e,o)||{},l=Number(a.generation||0)+1,c=`yeaft_history_${l}_${crypto.randomUUID()}`,d={...a,loaded:!!a.loaded,loading:!0,error:null,requestId:c,generation:l,mode:n,requestedAt:Date.now(),latestSeq:Number.isFinite(i)?i:a.latestSeq??null};return delete d.completionSeen,r||(d.syncingAfterSeq=null,a.loaded||(d.hasMore=!1,d.oldestSeq=null,d.serverOldestFetchedSeq=null,d.serverHasMore=!1,d.gapQueue=[],d.requestedBeforeSeqs=[],d.count=0)),e.yeaftSessionHistoryState={...e.yeaftSessionHistoryState||{},[o]:d},ks(e),{sessionKey:o,requestId:c,generation:l,state:d}}function Zo(e,t={}){let s=t.sessionId??t.groupId??null;if(!s)return!1;let n=t.agentId||e?.yeaftSessionAgentById?.[s]||null,r=he(n,s),i=nn(e,r),o=Qo(t.requestId);if(!i)return o===null;let a=Qo(i.requestId);return o?o===a:a===null}function xc(e,t={},s={},n="chunk"){if(!Zo(e,t))return null;let r=t.sessionId??t.groupId??null,i=t.agentId||e?.yeaftSessionAgentById?.[r]||null,o=he(i,r),a=nn(e,o)||{},l=Qo(t.requestId),c=l!==null&&n==="completion",d={...a,...c?{}:s,...c?{completionSeen:!0}:{},error:null};return c?(d.loading=!0,d.requestId=l):(d.loading=!1,d.requestId=null,d.completedAt=Date.now(),delete d.completionSeen),e.yeaftSessionHistoryState={...e.yeaftSessionHistoryState||{},[o]:d},ks(e),d}function Un(e,{agentId:t,sessionId:s,requestId:n,error:r="history_load_failed"}={}){if(!t||!s||!n)return!1;let i=he(t,s),o=nn(e,i);return!o||o.requestId!==n||!o.loading?!1:(e.yeaftSessionHistoryState={...e.yeaftSessionHistoryState||{},[i]:{...o,loading:!1,error:r,requestId:null,completedAt:Date.now()}},ks(e),!0)}function ks(e){let{sessionKey:t}=Ot(e),s=t?nn(e,t):null;return e.yeaftLoadingMoreHistory=!!s?.loading,e.yeaftHistoryLoadError=s?.error||null,e.yeaftHasMoreHistory=!!s?.hasMore,e.yeaftOldestLoadedSeq=Number.isFinite(s?.serverOldestFetchedSeq)?s.serverOldestFetchedSeq:Number.isFinite(s?.oldestSeq)?s.oldestSeq:null,s}function Xo(e){let{sessionKey:t}=Ot(e);return t?nn(e,t):null}var Cc,ni=N(()=>{sn();Cc=15e3});function ri(e){return e?.sessionId??e?.groupId??null}function Jo(e){for(let t of[e?.persistedMessageId,e?.messageId,e?.id]){if(typeof t!="string")continue;let s=t.match(/^(m\d+)/);if(s)return s[1]}return null}function kt(e){return e?.isStreaming||e?.status==="pending"?!1:Number.isFinite(e?.seq)||!!Jo(e)||e?.isHistory===!0&&!e?.clientMessageId}function ea(e){if(Number.isFinite(e?.seq))return Number(e.seq);let s=Jo(e)?.match(/^m(\d+)$/);if(s)return Number(s[1]);let n=typeof e?.id=="string"?e.id.match(/^(\d+)/):null;return n?Number(n[1]):null}function ta(e){try{return new TextEncoder().encode(JSON.stringify(e)).length}catch{return 0}}function _h(e){return e?e.isStreaming||e.status==="pending"||e.type==="tool-use"&&(e.askPending||!e.hasResult&&(e.toolName==="AskUser"||e.toolName==="AskUserQuestion"))?!0:e.type!=="user"||!e.clientMessageId?!1:!e.dbMessageId&&!Jo(e):!1}function Eh(e){let t=[],s=null;for(let n of e)(n?.type==="user"||!s)&&(s={rows:[],bytes:0,protected:!1},t.push(s)),s.rows.push(n),s.bytes+=ta(n),_h(n)&&(s.protected=!0);return t}function Mc(e,{conversationId:t,agentId:s=null,sessionId:n=null,limits:r=Tc}={}){let i=e?.messagesMap?.[t];if(!Array.isArray(i)||i.length===0||!s||!n)return{evictedRows:0,keptRows:0};let o=h=>ri(h)===n,a=i.filter(o),l=Eh(a);if(l.length===0)return{evictedRows:0,keptRows:0};let c=new Set(l.filter(h=>h.protected)),d=l.filter(h=>c.has(h)).reduce((h,y)=>h+y.rows.length,0),u=l.filter(h=>c.has(h)).reduce((h,y)=>h+y.bytes,0),f=!1;for(let h=l.length-1;h>=0;h-=1){let y=l[h];if(c.has(y))continue;let b=d+y.rows.length>r.maxRowsPerSession||u+y.bytes>r.maxBytesPerSession,M=d<r.recentRowsFloor;f&&b&&!M||(c.add(y),f=!0,d+=y.rows.length,u+=y.bytes)}let p=new Set(l.filter(h=>c.has(h)).flatMap(h=>h.rows)),g=a.filter(h=>!p.has(h));if(g.length===0)return{evictedRows:0,keptRows:p.size,keptBytes:u};e.messagesMap[t]=i.filter(h=>!o(h)||p.has(h));let m=he(s,n),v=e.yeaftHistoryCacheState?.[m]||null,k=Pc(a.filter(h=>p.has(h))),I=JSON.stringify(v?.ranges||[])===JSON.stringify(k.ranges)?Number(v?.rangeEpoch)||0:(Number(v?.rangeEpoch)||0)+1;if(e.yeaftHistoryCacheState={...e.yeaftHistoryCacheState||{},[m]:{...v||{},agentId:s,sessionId:n,conversationId:t,lastAccessed:Date.now(),rangeEpoch:I,...k}},g.some(kt)){let h=k.ranges[0]?.startSeq??null,y=e.yeaftSessionHistoryState?.[m]||{};e.yeaftSessionHistoryState={...e.yeaftSessionHistoryState||{},[m]:{...y,serverOldestFetchedSeq:h,oldestSeq:h,serverHasMore:h!==null,hasMore:h!==null,gapTraversalInitialized:!1,gapQueue:[],requestedBeforeSeqs:[],completedHistoryWorkKeys:[],pendingPageKind:null,pendingPageBeforeSeq:null,pendingGapStopAtSeq:null,pendingCacheEpoch:null,pendingHistoryWorkKey:null,paginationError:null,count:k.rowCount}};let b=Ot(e);b.agentId===s&&b.sessionId===n&&ks(e)}return{evictedRows:g.length,keptRows:p.size,keptBytes:u}}function Kn(e){if(e?.historyEntryId)return`entry:${e.historyEntryId}`;let t=ea(e);return Number.isFinite(t)?`seq:${t}`:e?.stableKey||e?.uiKey||e?.id||e?.messageId||"legacy"}function Dh(e){let t=new Map;for(let s of e){if(!kt(s))continue;let n=Kn(s),r=t.get(n)||{key:n,rows:[],seq:ea(s),bytes:0,touchedAt:0};r.rows.push(s),r.bytes+=ta(s),r.touchedAt=Math.max(r.touchedAt,Number(s?._historyCacheTouchedAt)||0),t.set(n,r)}return Array.from(t.values())}function Lh(e,t,s=new Set){let n=e.slice().sort((u,f)=>(f.seq||-1)-(u.seq||-1)),r=new Set,i=0,o=0;for(let u of e)s.has(u.key)&&(r.add(u.key),i+=u.rows.length,o+=u.bytes);for(let u of n){if(r.has(u.key))continue;if(i>=t.recentRowsFloor)break;let f=i+u.rows.length,p=o+u.bytes;if(r.size>0&&(f>t.maxRowsPerSession||p>t.maxBytesPerSession))break;r.add(u.key),i=f,o=p}let a=e.slice().sort((u,f)=>f.touchedAt-u.touchedAt||(f.seq||-1)-(u.seq||-1)),l=new Set(r),c=e.filter(u=>r.has(u.key)).reduce((u,f)=>u+f.rows.length,0),d=e.filter(u=>r.has(u.key)).reduce((u,f)=>u+f.bytes,0);for(let u of a){if(l.has(u.key))continue;let f=c+u.rows.length,p=d+u.bytes;l.size>0&&(f>t.maxRowsPerSession||p>t.maxBytesPerSession)||(l.add(u.key),c=f,d=p)}return l}function $h(e){let t=Array.from(new Set(e.map(ea).filter(Number.isFinite))).sort((n,r)=>n-r),s=[];for(let n of t){let r=s.at(-1);r&&n<=r.endSeq+1?r.endSeq=n:s.push({startSeq:n,endSeq:n})}return s}function Pc(e){let t=e.filter(kt);return{rowCount:t.length,byteCount:t.reduce((s,n)=>s+ta(n),0),ranges:$h(t)}}function Vh(e,t,s){let n=new Set((t||[]).map(r=>r?.stableKey).filter(Boolean));if(n.size!==0)for(let r of e)r?.stableKey&&n.has(r.stableKey)&&(r._historyCacheTouchedAt=s)}function Hh(e,{conversationId:t,agentId:s,sessionId:n,incomingRows:r,now:i,limits:o}){let a=e.messagesMap?.[t]||[],l=a.filter(I=>ri(I)===n);Vh(l,r,i);let c=new Set((r||[]).filter(I=>I?.historyEntryId).map(Kn)),d=Dh(l),u=Lh(d,o,c),f=l.filter(I=>!kt(I)||u.has(Kn(I))),p=new Set(f);e.messagesMap[t]=a.filter(I=>ri(I)!==n||p.has(I));let g=Pc(f),m=he(s,n),v=e.yeaftHistoryCacheState?.[m]||null,w=JSON.stringify(v?.ranges||[])===JSON.stringify(g.ranges)?Number(v?.rangeEpoch)||0:(Number(v?.rangeEpoch)||0)+1;e.yeaftHistoryCacheState={...e.yeaftHistoryCacheState||{},[m]:{agentId:s,sessionId:n,conversationId:t,lastAccessed:i,rangeEpoch:w,...g}}}function Oh(e,t){let s=e.messagesMap?.[t.conversationId]||[];e.messagesMap[t.conversationId]=s.filter(n=>ri(n)!==t.sessionId||!kt(n))}function Fh(e,t,s){let n={...e.yeaftHistoryCacheState||{}},r=Object.entries(n).filter(([,a])=>a?.rowCount>0),i=()=>Object.values(n).reduce((a,l)=>({rows:a.rows+(Number(l?.rowCount)||0),bytes:a.bytes+(Number(l?.byteCount)||0),sessions:a.sessions+((Number(l?.rowCount)||0)>0?1:0)}),{rows:0,bytes:0,sessions:0}),o=r.filter(([a])=>a!==t).sort((a,l)=>(Number(a[1]?.lastAccessed)||0)-(Number(l[1]?.lastAccessed)||0));for(let[a,l]of o){let c=i();if(c.sessions<=s.maxSessions&&c.rows<=s.maxRowsTotal&&c.bytes<=s.maxBytesTotal)break;Oh(e,l),n[a]={...l,rowCount:0,byteCount:0,ranges:[]}}e.yeaftHistoryCacheState=n}function Rc(e,t,s,n=Date.now()){if(!t||!s)return;let r=he(t,s),i=e.yeaftHistoryCacheState?.[r];i&&(e.yeaftHistoryCacheState={...e.yeaftHistoryCacheState||{},[r]:{...i,lastAccessed:n}})}function zn(e,{conversationId:t,agentId:s,sessionId:n,incomingRows:r=[],activeAgentId:i=null,activeSessionId:o=null,now:a=Date.now(),limits:l=Tc}={}){if(!e||!t||!s||!n)return;Hh(e,{conversationId:t,agentId:s,sessionId:n,incomingRows:r,now:a,limits:l});let c=i&&o?he(i,o):null;Fh(e,c,l)}var Tc,ii=N(()=>{sn();ni();Tc=Object.freeze({maxSessions:8,maxRowsPerSession:600,maxBytesPerSession:4*1024*1024,maxRowsTotal:2400,maxBytesTotal:16*1024*1024,recentRowsFloor:100})});function Cs(e){return String(e||"").trim()||null}function na(e,t,s){return[e,t,s].map(n=>String(n||"")).join("")}function Ec(){return globalThis.indexedDB||null}function qh(){let e=Ec();return!!e&&typeof e.open=="function"}function Wh(){return typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`}function As(e){return new Promise((t,s)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>s(e.error||new Error("IndexedDB request failed"))})}function Ft(e){return new Promise((t,s)=>{e.oncomplete=()=>t(),e.onerror=()=>s(e.error||new Error("IndexedDB transaction failed")),e.onabort=()=>s(e.error||new Error("IndexedDB transaction aborted"))})}async function Xn(){return qh()?Yn||(Yn=new Promise((e,t)=>{let s=Ec().open(Bh,Nh);s.onupgradeneeded=()=>{let n=s.result;n.objectStoreNames.contains(tt)?s.transaction.objectStore(tt).clear():n.createObjectStore(tt,{keyPath:"key"}).createIndex("ownerAccess",["ownerId","lastAccessed"]),n.objectStoreNames.contains(ct)||n.createObjectStore(ct,{keyPath:"key"})},s.onsuccess=()=>{s.result.onversionchange=()=>s.result.close(),e(s.result)},s.onerror=()=>t(s.error||new Error("Failed to open history cache")),s.onblocked=()=>t(new Error("History cache upgrade is blocked"))}).catch(e=>{throw Yn=null,e}),Yn):null}function rs(e){return!!e&&!!Qn&&e.ownerId===Qn&&e===Zn}function oi(e,t){return!!e&&!!t&&e.key===Is&&e.ownerId===t.ownerId&&e.generation===t.generation}function jh(e){try{return JSON.parse(JSON.stringify(e))}catch{return null}}function Uh(e){try{return new TextEncoder().encode(JSON.stringify(e)).length}catch{return 0}}function Kh(e){let t=e?.stableKey||e?.uiKey;if(t)return String(t);let s=Kn(e),n=[e?.type||"",e?.toolName||"",e?.toolCallId||"",e?.speakerVpId||e?.vpId||"",e?.id||e?.messageId||""].join(":");return`${s}:projection:${n}`}function zh(e,t){let s=[],n=null;for(let[d,u]of(Array.isArray(e)?e:[]).entries()){let f=jh(u);if(!kt(f)||(f.type==="user"&&(n={firstIndex:d,entries:[],rowsByKey:new Map},s.push(n)),!n))continue;let p=Kh(f),g=n.rowsByKey.get(p);g?n.entries[g.entryIndex]={row:f,index:d}:(n.rowsByKey.set(p,{entryIndex:n.entries.length}),n.entries.push({row:f,index:d}))}let r=s.slice().reverse().map(d=>({...d,rowCount:d.entries.length,bytes:d.entries.reduce((u,f)=>u+Uh(f.row),0)})),i=[],o=0,a=0,l=Number.isFinite(t.maxTurnsPerSession)?Math.max(0,Math.floor(t.maxTurnsPerSession)):sa.maxTurnsPerSession;for(let d of r){let u=i.length>=l,f=o+d.rowCount>t.maxRowsPerSession||a+d.bytes>t.maxBytesPerSession;if(u||i.length>0&&f)break;i.push(d),o+=d.rowCount,a+=d.bytes}return{rows:i.flatMap(d=>d.entries).sort((d,u)=>d.index-u.index).map(d=>d.row),bytes:a,turns:i.length}}async function Yh(e){let t=await Xn(),s=Wh();if(!t)return e.generation=s,!0;let n=t.transaction([ct,tt],"readwrite"),r=n.objectStore(ct),i=n.objectStore(tt),o=await As(r.get(Is)),a=!Gn&&!!e.ownerId&&o?.ownerId===e.ownerId&&typeof o?.generation=="string",l=a?o.generation:s;return a||i.clear(),r.put({key:Is,ownerId:e.ownerId,generation:l}),await Ft(n),e.generation=l,!0}function Dc(e){return Ss=Ss.catch(()=>{if(!Gn)throw new Error("Browser history owner cleanup failed")}).then(()=>Yh(e)).then(s=>(Gn=!1,s),s=>{throw Gn=!0,s}),Ss.catch(()=>{}),Ss}async function Gh(e,t){let s=await Xn();if(!s)return;let n=s.transaction([ct,tt],"readwrite"),r=await As(n.objectStore(ct).get(Is)),i=n.objectStore(tt);if(!oi(r,e)){await Ft(n);return}let o=(await As(i.getAll())).filter(l=>l?.ownerId===e.ownerId).sort((l,c)=>(Number(c.lastAccessed)||0)-(Number(l.lastAccessed)||0)),a=Date.now()-t.maxAgeMs;o.forEach((l,c)=>{(c>=t.maxSessionsPerOwner||(Number(l.lastAccessed)||0)<a)&&i.delete(l.key)}),await Ft(n)}function Lc(e){let t=Cs(e);return t?((Qn!==t||Gn)&&(Qn=t,Zn={ownerId:t,generation:null},Dc(Zn)),is()):(ra(),null)}function ra(){return Qn=null,Zn=null,Dc({ownerId:null,generation:null})}function is(){return Zn}async function $c({fence:e,agentId:t,sessionId:s,limits:n=sa}={}){let r=Cs(t),i=Cs(s);if(!rs(e)||!r||!i)return null;try{await Ss;let o=await Xn();if(!o||!rs(e))return null;let a=na(e.ownerId,r,i),l=o.transaction([ct,tt],"readwrite"),c=await As(l.objectStore(ct).get(Is)),d=l.objectStore(tt);if(!oi(c,e))return await Ft(l),null;let u=await As(d.get(a)),f=Date.now()-n.maxAgeMs,p=!!u&&(Number(u.lastAccessed)||0)<f;return p&&d.delete(a),await Ft(l),p||!rs(e)||u?.schemaVersion!==_c||u.ownerId!==e.ownerId||u.agentId!==r||u.sessionId!==i||!Array.isArray(u.rows)?null:u}catch{return null}}async function Vc({fence:e,agentId:t,sessionId:s,rows:n,historyState:r=null,limits:i=sa}={}){let o=Cs(t),a=Cs(s);if(!rs(e)||!o||!a)return!1;let l=zh(n,i);if(l.rows.length===0)return!1;try{await Ss;let c=await Xn();if(!c||!rs(e))return!1;let d=Date.now(),u=c.transaction([ct,tt],"readwrite"),f=await As(u.objectStore(ct).get(Is));return oi(f,e)?(u.objectStore(tt).put({key:na(e.ownerId,o,a),schemaVersion:_c,ownerId:e.ownerId,agentId:o,sessionId:a,rows:l.rows,turnCount:l.turns,rowCount:l.rows.length,byteCount:l.bytes,latestSeq:Number.isFinite(r?.latestSeq)?r.latestSeq:null,streamId:typeof r?.streamId=="string"?r.streamId:null,revision:Number.isFinite(r?.revision)?r.revision:null,oldestSeq:Number.isFinite(r?.oldestSeq)?r.oldestSeq:null,hasMore:!!r?.hasMore,lastAccessed:d}),await Ft(u),rs(e)?(Gh(e,i).catch(()=>{}),!0):!1):(await Ft(u),!1)}catch{return!1}}async function ia({fence:e,agentId:t,sessionId:s}={}){let n=Cs(t),r=Cs(s);if(!rs(e)||!n||!r)return!1;await Ss;let i=await Xn();if(!i)return!0;if(!rs(e))return!1;let o=i.transaction([ct,tt],"readwrite"),a=await As(o.objectStore(ct).get(Is));return oi(a,e)?(o.objectStore(tt).delete(na(e.ownerId,n,r)),await Ft(o),!0):(await Ft(o),!0)}var Bh,Nh,tt,ct,Is,_c,sa,Qn,Zn,Yn,Ss,Gn,oa=N(()=>{ii();Bh="yeaft-history-cache",Nh=4,tt="sessions",ct="metadata",Is="active-owner",_c=3,sa=Object.freeze({maxSessionsPerOwner:12,maxTurnsPerSession:500,maxRowsPerSession:600,maxBytesPerSession:4*1024*1024,maxAgeMs:720*60*60*1e3}),Qn=null,Zn=null,Yn=null,Ss=Promise.resolve(!0),Gn=!1});function Zh(){try{globalThis.Pinia?.useChatStore?.()?.clearYeaftHistoryMemory?.()}catch{}}function Hc(e){return String(e||"").trim()||null}function Oc(e,t){let s=Hc(is()?.ownerId),n=Hc(e);return s!==n&&Zh(),t(n)}function At(e){return Oc(e,Lc)}function Xh(){return Oc(null,()=>ra())}var Qh,Jh,De,St=N(()=>{ei();Go();oa();({defineStore:Qh}=Pinia);Jh=1800*1e3,De=Qh("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,userId: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.userId="skip-auth",wt(this.userId),At(this.userId),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?bt(n.sessionKey):null,this.role=n.role||"pro",this.userId=n.userId||null,wt(this.userId),At(this.userId),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 r=await(await fetch("/api/auth/aad",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({idToken:s.idToken})})).json();return r.success?(this.token=r.token,this.sessionKey=r.sessionKey?bt(r.sessionKey):null,this.role=r.role||"pro",this.userId=r.userId||null,wt(this.userId),At(this.userId),this.authGeneration+=1,this.isAuthenticated=!0,this.loginStep="authenticated",localStorage.setItem("authToken",r.token),this.startSessionRefresh(),!0):(this.error=r.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?bt(s.sessionKey):null,this.role=s.role||"pro",this.userId=s.userId||null,wt(this.userId),At(this.userId),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?bt(s.sessionKey):null,this.role=s.role||"pro",this.userId=s.userId||null,wt(this.userId),At(this.userId),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?bt(s.sessionKey):null,this.role=s.role||"pro",this.userId=s.userId||null,wt(this.userId),At(this.userId),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 i=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 i.success?!0:(this.error=i.error||"Registration failed",!1)}catch(r){return this.error=r.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(),r=`/api/auth/sso/${encodeURIComponent(e)}/start-qr${n?"?"+n:""}`,i=await fetch(r),o=await i.json();return!i.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?bt(n.sessionKey):null,this.role=n.role||"pro",this.userId=n.userId||null,wt(this.userId),At(this.userId),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"),r=s.get("sessionKey"),i=s.get("role"),o=s.get("userId");if(!n)return!1;this.token=n,this.sessionKey=r?bt(r):null,this.role=i||"pro",this.userId=o||null,wt(this.userId),At(this.userId),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 r=await n.json().catch(()=>({}));if(t!==this.authGeneration||this.token!==e)return this.isAuthenticated;let i=n.headers?.get?.("X-New-Token"),o=localStorage.getItem("authToken");return i&&this.token===e&&(!o||o===e)&&(this.token=i,localStorage.setItem("authToken",i)),r?.role&&(this.role=r.role),this.userId=r?.userId||null,wt(this.userId),At(this.userId),!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,Jh),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{}await this.clearStoredSession()},clearStoredSession(e=null){let t=this.reset();return localStorage.removeItem("authToken"),e&&(this.error=e),t},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,r=void 0){if(!e||e.status!==401||!n||s!==this.authGeneration)return!1;let i=this.token||localStorage.getItem("authToken")||null;return t!==i?!1:(this.handleAuthFailure(r,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).catch(r=>{}),!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 r=await n.json();if(t!==this.authGeneration)return this.isAuthenticated;let i=n.headers?.get?.("X-New-Token"),o=this.getActiveToken();if(o!==e)return this.isAuthenticated;let a=i&&(!o||o===e)?i:o||e;return this.token=a,a&&a!==e&&localStorage.setItem("authToken",a),this.role=r?.role||"pro",this.userId=r?.userId||null,wt(this.userId),At(this.userId),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=bt(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 r=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 r.success?!0:(this.error=r.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"}:(await this.clearStoredSession(),{success:!0})}catch(s){return{success:!1,error:s.message||"Network error"}}},reset(){zo();let e=Xh();return this.authGeneration+=1,this.stopSessionRefresh(),this.isAuthenticated=!1,this.token=null,this.sessionKey=null,this.userId=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,e}}})});function Le(e,t){let s=Bt?.value||"zh-CN",r=(rn[s]||rn["zh-CN"]||{})[e];if(r===void 0&&s!=="zh-CN"&&(r=(rn["zh-CN"]||{})[e]),r===void 0)return e;if(t)for(let[i,o]of Object.entries(t))r=r.replace(new RegExp(`\\{${i}\\}`,"g"),o);return r}function ev(){return Bt?.value||"zh-CN"}function Jn(e){rn[e]&&(Bt&&(Bt.value=e),localStorage.setItem("locale",e),document.documentElement.setAttribute("lang",e))}function tv(){let e=localStorage.getItem("locale");return e&&rn[e]?e:(navigator.language||navigator.userLanguage||"").startsWith("en")?"en":"zh-CN"}function Fc(e,t){return rn=t,Bt=Vue.ref(tv()),document.documentElement.setAttribute("lang",Bt.value),e.config.globalProperties.$t=Le,e.config.globalProperties.$locale=Bt,e.provide("t",Le),e.provide("locale",Bt),{t:Le,setLocale:Jn,getLocale:ev,locale:Bt}}var Bt,rn,Nt=N(()=>{Bt=null,rn={}});function ai(e){if(e==null||e==="")return"claude-code";if(sv.has(e))return e;throw new Error(`Unknown Chat runtime provider: ${e}`)}function os(e){if(typeof e!="string"||!e)throw new Error("Chat catalog key requires conversationId");return`chat:${e}`}function li(e,t){if(typeof e!="string"||!e||typeof t!="string"||!t)throw new Error("Yeaft catalog key requires agentId and sessionId");return`yeaft:${e}:${t}`}function er(e,t,s={}){let n=e.sessionCatalog.map(i=>({...i})),r=Array.isArray(e.hiddenSessionCatalog)?e.hiddenSessionCatalog.map(i=>({...i})):null;return e.sessionCatalogMutationRequests[t]={previousCatalog:n,previousHiddenCatalog:r,...s},n}function Bc(e,t){let s=t?.requestId?e.sessionCatalogMutationRequests[t.requestId]:null;return s?(delete e.sessionCatalogMutationRequests[t.requestId],t.ok!==!0&&(e.sessionCatalog=s.previousCatalog,Array.isArray(s.previousHiddenCatalog)&&(e.hiddenSessionCatalog=s.previousHiddenCatalog)),!0):!1}function Nc(e,t,s="recent",n=null){let r=os(t),i=e.chatHistoryRequests[r]||{},o=Number(i.generation||0)+1,a=`chat_history_${o}_${crypto.randomUUID()}`;return e.chatHistoryRequests[r]={requestId:a,catalogKey:r,generation:o,mode:s,cursor:n,connectionGeneration:Number(e.chatHistoryConnectionGeneration||0),loading:!0,cancelled:!1,error:null},a}function aa(e,t,s,n){let r=e.chatHistoryRequests[t];return r?.requestId!==s?!1:(e.chatHistoryRequests[t]={...r,loading:!1,cancelled:!0,error:n},!0)}var sv,la=N(()=>{sv=new Set(["claude-code","copilot"])});function on(e,t,s=""){tr&&(clearTimeout(tr),tr=null),e.sessionLoading=t,e.sessionLoadingText=s,t&&(tr=setTimeout(()=>{e.sessionLoading&&(e.sessionLoading=!1,e.sessionLoadingText=""),tr=null},nv))}function xt(e){on(e,!1)}function qc(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(r=>r.id===s&&r.online);n&&(e.pendingRecovery={agentId:s,agentName:n.name,sessionId:t.sessionId,workDir:t.workDir,provider:ai(t.provider),catalogKey:t.catalogKey||null},e.recoveryDismissed=!1)}}function Wc(e){if(!e.pendingRecovery)return;let{agentId:t,sessionId:s,workDir:n,provider:r}=e.pendingRecovery;e.selectAgent(t),setTimeout(()=>{e.resumeConversation(s,n,t,{provider:ai(r)}),e.pendingRecovery=null,e.recoveryDismissed=!1},500)}function jc(e){e.recoveryDismissed=!0,e.pendingRecovery=null}function Uc(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]=[],on(e,!0,Le("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.requestChatHistory?.(t,{mode:"recent",turns:5}))),e.sendWsMessage({type:"select_conversation",conversationId:t}))}function Kc(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(i=>i.id)),r=s.filter(i=>i&&typeof i.id=="string").map(i=>({id:i.id,conversationId:i.conversationId&&n.has(i.conversationId)?i.conversationId:null,activeRightPanel:i.activeRightPanel||null}));if(r.length<2){localStorage.removeItem("panels");return}e.panels=r,e.activePanelId=r[0]?.id||null;for(let i of r)i.conversationId&&(e.activeConversations.includes(i.conversationId)||e.activeConversations.push(i.conversationId),e.messagesMap[i.conversationId]||(e.messagesMap[i.conversationId]=[]),e.messagesMap[i.conversationId].length||e.requestChatHistory?.(i.conversationId,{mode:"recent",turns:5}))}function xs(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);if(t?.claudeSessionId&&t?.workDir){let s=ai(t.provider),n={sessionId:t.claudeSessionId,workDir:t.workDir,agentId:t.agentId||e.currentAgent,provider:s,catalogKey:os(t.id),version:2};localStorage.setItem("lastUsedSession",JSON.stringify(n)),localStorage.setItem("lastViewedSessionRef",JSON.stringify(n)),e.lastUsedSession=n}}e.lastUsedAgent=e.currentAgent,e.panels.length>0?localStorage.setItem("panels",JSON.stringify(e.panels)):localStorage.removeItem("panels")}}function zc(e){return e.lastUsedSession}function Yc(e){localStorage.removeItem("lastUsedAgent"),localStorage.removeItem("lastUsedSession"),localStorage.removeItem("lastViewedSessionRef"),localStorage.removeItem("lastViewedConversation"),localStorage.removeItem("panels"),localStorage.removeItem("splitPanesSaved"),e.lastUsedAgent=null,e.lastUsedSession=null,e.lastViewedConversation=null}function Gc(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 Qc(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 Zc(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(r=>{e._foldersResolve&&e._foldersResolve(),e._foldersResolve=r,e.sendWsMessage({type:"list_folders",agentId:t,provider:s||"claude-code",requestId:n}),setTimeout(()=>{e._foldersResolve===r&&(e._foldersResolve(),e._foldersResolve=null,e.foldersLoading=!1)},1e4)})}function Xc(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(r=>{e._modelsResolve&&e._modelsResolve([]),e._modelsTimeout&&clearTimeout(e._modelsTimeout),e._modelsResolve=r,e.sendWsMessage({type:"list_models",agentId:t,provider:s||"claude-code",requestId:n}),e._modelsTimeout=setTimeout(()=>{e._modelsResolve===r&&(e._modelsResolve([]),e._modelsResolve=null,e.providerModelsLoading=!1),e._modelsTimeout=null},1e4)})}function Jc(e,t,s,n){if(!t){e.historySessionsLoading=!1;return}if(!s){e.historySessions=[],e.historySessionsLoading=!1;return}let r=Date.now().toString();e._historySessionsRequestId=r,e.historySessionsLoading=!0,e.historySessions=[],e.sendWsMessage({type:"list_history_sessions",agentId:t,workDir:s,provider:n||"claude-code",requestId:r})}async function ed(e,t=20){if(De().isAuthenticated){e.globalSessionsLoading=!0;try{let n=await fetch(`/api/sessions?limit=${t}`);if(n.ok){let r=await n.json();e.globalSessions=r.sessions||[]}}catch{}finally{e.globalSessionsLoading=!1}}}async function td(e,t){if(!De().isAuthenticated)return!1;try{if((await fetch(`/api/sessions/${t}`,{method:"DELETE"})).ok)return e.globalSessions=e.globalSessions.filter(r=>r.id!==t),!0}catch{}return!1}function ca(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 sd(e,t){let s=ca(e,t);return s&&s.online}var nv,tr,Ts=N(()=>{St();Nt();la();nv=3e4,tr=null});function nd(e){return e?.code===1008&&String(e.reason||"").toLowerCase().includes("authentication")}function rd(e){let t=sr;sr=[];for(let{resolve:s,reject:n,timer:r}of t)clearTimeout(r),e?s():n(new Error("WebSocket reconnect failed"))}function id(e,t){if(!e.ws||e.ws.readyState!==WebSocket.OPEN)return!1;if(e.currentView==="yeaft"&&iv.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=hc(t,e.sessionKey);e.ws.send(JSON.stringify(s))}else e.ws.send(JSON.stringify(t));return!0}catch{return!1}}function nr(e,t=1e4){return e.ws&&e.ws.readyState===WebSocket.OPEN?Promise.resolve():new Promise((s,n)=>{let r=setTimeout(()=>{sr=sr.filter(i=>i.resolve!==s),n(new Error("WebSocket reconnect timeout"))},t);sr.push({resolve:s,reject:n,timer:r}),(!e.ws||e.ws.readyState!==WebSocket.CONNECTING)&&(e.reconnectAttempts=0,e.connect())})}function od(e,t){try{let s=JSON.parse(t);return e.sessionKey&&yc(s)?vc(s,e.sessionKey):s}catch{return null}}function ad(e){let t=De(),s=location.protocol==="https:"?"wss:":"ws:";e.reconnectTimer&&(clearTimeout(e.reconnectTimer),e.reconnectTimer=null);let n=t.getActiveToken?.()||t.token||null,r=t.authGeneration;if(e.ws&&e.ws.readyState===WebSocket.CONNECTING&&e._wsAuthToken===n&&e._wsAuthGeneration===r)return;clearTimeout(e._legacyYeaftSessionHydrateTimer),e._legacyYeaftSessionHydrateTimer=null,e._hasHandledAgentList=!1,e._hasHandledYeaftSessionHydrate=!1,e.yeaftSessionInventoryCompleteSupported=null,e.yeaftSessionHydrateRequestId=null,e.yeaftSessionHydrateSlices=[],e.yeaftSessionHydrateError=null,e._yeaftSessionInventorySocketQuarantined=!1,e.pendingAgentSelection=null,e.agentSwitching=!1,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.serverEncryptionRequired=!0,e.chatHistoryRequestIdSupported=null,e.chatHistoryConnectionGeneration=Number(e.chatHistoryConnectionGeneration||0)+1;for(let[l,c]of Object.entries(e.projectMutationRequests||{}))c?.resolve?.({ok:!1,requestId:l,error:{code:"connection_changed"}});e.projectMutationRequests={},e.sessionProjects=[];for(let[l,c]of Object.entries(e.chatHistoryRequests||{}))c?.loading&&(e.chatHistoryRequests[l]={...c,loading:!1,cancelled:!0,error:"connection_changed"});let i=Object.values(e.sessionCatalogMutationRequests||{});i.length>0&&(e.sessionCatalog=i[0].previousCatalog,Array.isArray(i[0].previousHiddenCatalog)&&(e.hiddenSessionCatalog=i[0].previousHiddenCatalog),e.sessionCatalogMutationRequests={}),e.sessionCatalogLoaded=!1,e.sessionCatalog=[],e.hiddenSessionCatalog=[],e.activeCatalogKey=null,e._wsAuthToken=n,e._wsAuthGeneration=r;let o=`${s}//${location.host}?type=web`;n&&(o+=`&token=${encodeURIComponent(n)}`);let a=new WebSocket(o);e.ws=a,a.onopen=()=>{if(a===e.ws){e.connectionState="connected",e.reconnectAttempts=0,e.startHeartbeat();try{a.send(JSON.stringify({type:"client_hello",plaintextOk:!0}))}catch{}rd(!0)}},a.onmessage=l=>{if(a!==e.ws)return;let c=e.parseWsMessage(l.data);c&&(c.type,e.handleMessage({...c,_wsAuthToken:n,_wsAuthGeneration:r}))},a.onclose=l=>{if(a!==e.ws){nd(l)&&t.handleAuthFailure?.(void 0,n,r);return}e.authenticated=!1,clearTimeout(e._legacyYeaftSessionHydrateTimer),e._legacyYeaftSessionHydrateTimer=null,e._hasHandledAgentList=!1,e._hasHandledYeaftSessionHydrate=!1,e.yeaftSessionInventoryCompleteSupported=null,e.yeaftSessionHydrateRequestId=null,e.yeaftSessionHydrateSlices=[],e.yeaftSessionHydrateError=null,e.pendingAgentSelection=null,e.agentSwitching=!1;let c=e.connectionState==="updating";if(e.connectionState=c?"updating":"disconnected",e.stopHeartbeat(),xt(e),nd(l)){t.handleAuthFailure?.(void 0,n,r),e.reconnectAttempts=0,rd(!1);return}if(e._yeaftReconnectCatchUpPending=!0,c){e.reconnectAttempts=0,e.reconnectTimer=setTimeout(()=>{e.connect()},2e3);return}e.scheduleReconnect()},e.ws.onerror=l=>{}}function ld(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 cd(e){e.reconnectAttempts=0,e.connect()}function dd(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 ud(e){e.heartbeatTimer&&(clearInterval(e.heartbeatTimer),e.heartbeatTimer=null)}function pd(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 sr,iv,da=N(()=>{St();ei();Ts();sr=[];iv=new Set(["sync_messages","refresh_conversation","select_conversation","cancel_execution","update_conversation_settings","ask_user_answer"])});function lv(e){return e?.type==="tool-use"}function ua(e){return e?.type==="tool-summary"}function pa(e){return lv(e)&&!av.has(e.toolName)}function md(e,t,s,n=s){let r=t==="history"&&(n?.dbMessageId||n?.id)||null;return{...r?{id:`tool_summary_${t}_${r}`,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 cv(e,t){return!ua(e)||!ua(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 dv(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 fd(e){return[e?.sessionId||"",e?.turnId||"",e?.speakerVpId||e?.vpId||""].join("")}function gd(e,t,s,n,r=n){if(!t)return;let i=md(t,s,n,r),o=e[e.length-1];cv(o,i)?dv(o,i):e.push(i)}function fa(e=[]){let t=[],s=0,n=null,r=null;for(let i of e){if(pa(i)&&i.isHistory){s+=1,n||(n=i),r=i;continue}gd(t,s,"history",n,r),s=0,n=null,r=null,t.push(i)}return gd(t,s,"history",n,r),t}function hd(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 p=e.length-1;p>=0;p-=1){let g=e[p];if(g?.type==="user"||g?.type==="system"||g?.type==="error")break;n=p}let r=e.slice(n),i=new Map;for(let p of r){if(!pa(p)||p.isHistory)continue;let g=fd(p);i.set(g,(i.get(g)||0)+1)}let o=new Map;for(let[p,g]of i)g>s&&o.set(p,g-s);if(o.size===0)return e;let a=new Map,l=new Map,c=new Set,d=[],u=(p,g,m)=>{a.set(p,(a.get(p)||0)+g),!l.has(p)&&m&&l.set(p,m)},f=(p,g)=>{if(c.has(p))return;let m=a.get(p)||0;m<=0||(d.push(md(m,"live",l.get(p)||g)),c.add(p))};for(let p of r){let g=fd(p);if(ua(p)&&p.source==="live"&&o.has(g)){u(g,Number(p.count)||0,p);continue}if(pa(p)&&!p.isHistory&&o.has(g)){let m=o.get(g)||0;if(m>0){o.set(g,m-1),u(g,1,p);continue}}f(g,p),d.push(p)}for(let p of a.keys())f(p,l.get(p));return e.splice(n,e.length-n,...d),e}var av,ga=N(()=>{av=new Set(["TodoWrite","AskUserQuestion"])});function ma(e,t){return t?t===e.yeaftConversationId?!0:Object.values(e.yeaftConversationIdsByAgent||{}).includes(t):!1}function rr(e,t,s){s&&(s.type!=="assistant"&&s.type!=="tool-use"||ma(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 pv(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 r=Number(s);if(Number.isFinite(r)&&r>0)return r}}return Date.now()}function ci(e){let t=e?.stableKey??e?.messageId??e?.dbMessageId??e?.id;return t==null||t===""?null:String(t)}function ha(e,t,s){if(!s||typeof s!="object")return null;if(typeof s.uiKey=="string"&&s.uiKey)return s.uiKey;let n=s.entryId||s.stableKey||s.atMessageId||s.messageId||s.dbMessageId||s.id||null;if(n!=null&&n!=="")return s.uiKey=String(n),s.uiKey;let r=`legacy:${t||"conversation"}:`,i=new Set((e?.messagesMap?.[t]||[]).map(a=>a?.uiKey).filter(a=>typeof a=="string"&&a)),o=Number(e?._messageUiKeySequence)||0;do o+=1;while(i.has(`${r}${o}`));return e&&(e._messageUiKeySequence=o),s.uiKey=`${r}${o}`,s.uiKey}function Ms(e,t,s){for(let n of Array.isArray(s)?s:[])ha(e,t,n);return s}function va(e,t){if(!e||!t)return e;let s=e.type==="user"&&typeof e.id=="string"&&e.id===e.clientMessageId;for(let[n,r]of Object.entries(t))if(r!=null){if(n==="isStreaming"){e.isStreaming&&r===!1&&(e.isStreaming=!1);continue}if(!(n==="uiKey"&&e.uiKey)){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]=r);continue}if(!(n==="turnId"&&s&&e.turnId===e.clientMessageId)){if(n==="content"&&typeof r=="string"){e.content||(e.content=r);continue}if(n==="responseKind"&&(r==="progress"||r==="result")){e.responseKind=r;continue}if(n==="attachments"&&Array.isArray(r)){(!Array.isArray(e.attachments)||e.attachments.length===0)&&(e.attachments=r);continue}(e[n]===void 0||e[n]===null||e[n]==="")&&(e[n]=r)}}}return e}function ui(e=[],t=[]){let s=[],n=new Map,r=new Map;for(let i of[...e,...t]){if(!i)continue;let o=ci(i),a=i.type==="user"&&i.clientMessageId?String(i.clientMessageId):null;if(o&&n.has(o)){va(n.get(o),i);continue}if(a&&r.has(a)){let l=r.get(a);va(l,i),o&&!n.has(o)&&n.set(o,l);continue}s.push(i),o&&n.set(o,i),a&&r.set(a,i)}return s}function vd(e,t,s){return!e||e!==t?!1:!s?.loaded&&!s?.loading}function yd(e,t){return!!t&&!!e?.loaded&&!e?.loading&&Number.isFinite(e?.latestSeq)}function bd({sessionState:e,hasCachedSessionRows:t,force:s=!1}={}){return e?.loading?!1:s?!e?.loaded:e?.loaded?!1:!t}function fv(e,t,s,n){let r=s?.id?String(s.id):null;if(!r)return!1;let o=(e.messagesMap[t]||[]).find(a=>a?.type==="assistant"&&ci(a)===r);return o?(o.id||(o.id=r),o.messageId||(o.messageId=r),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,rr(e,t,o),!0):!1}function di(e,t,s){if(!t)return;let n={...s};ha(e,t,n);let r={...n,id:s.dbMessageId||s.id||Date.now().toString()+Math.random().toString(36).substr(2,9),timestamp:pv(s)};if(ma(e,t)&&!r.sessionId&&(r.sessionId=e._currentYeaftSessionId||e.yeaftActiveSessionFilter||uv),ma(e,t)){let o=e._currentYeaftAgentId||Object.entries(e.yeaftConversationIdsByAgent||{}).find(([,c])=>c===t)?.[0]||e.currentAgent||null,a=typeof r.messageId=="string"&&/^m\d+$/.test(r.messageId)?r.messageId:typeof r.id=="string"&&/^m\d+$/.test(r.id)?r.id:null,l=typeof r.clientMessageId=="string"?r.clientMessageId:null;r.stableKey||(r.stableKey=a?jn(o,r.sessionId,a):ns(o,r.sessionId,l)),r.uiKey||(r.uiKey=r.stableKey||null),!r.vpId&&e._currentYeaftVpId&&(r.vpId=e._currentYeaftVpId),!r.turnId&&e._currentYeaftTurnId&&(r.turnId=e._currentYeaftTurnId),rr(e,t,r)}e.messagesMap[t]||(e.messagesMap[t]=[]),ha(e,t,r);let i=ci(s);if(i){let o=e.messagesMap[t].find(a=>ci(a)===i);if(o)return va(o,r),t===e.yeaftConversationId&&e.messagesMap[t].sort((a,l)=>a.timestamp-l.timestamp),o}return e.messagesMap[t].push(r),hd(e.messagesMap[t]),t===e.yeaftConversationId&&e.messagesMap[t].sort((o,a)=>o.timestamp-a.timestamp),r}function wd(e,t,s,n={}){if(!t||!s)return;e.messagesMap[t]||(e.messagesMap[t]=[]);let r=e.messagesMap[t];if(fv(e,t,n,s))return;let i=e._currentYeaftTurnId;if(i){for(let a=r.length-1;a>=0;a--)if(r[a].turnId===i&&r[a].type==="assistant"&&r[a].isStreaming){if(rr(e,t,r[a]),n.id&&!r[a].id&&(r[a].id=n.id),n.id&&!r[a].messageId&&(r[a].messageId=n.id),r[a].content.endsWith(s))return;r[a].content+=s;return}di(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=r[r.length-1];if(o&&o.type==="assistant"&&o.isStreaming){if(rr(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 di(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 kd(e,t,{completeLifecycle:s=!0}={}){if(!t)return;let n=e.messagesMap[t];if(!n||n.length===0)return;let r=e._currentYeaftTurnId||null;for(let i=n.length-1;i>=0;i--){let o=n[i];if(r&&o.turnId&&o.turnId!==r){if(o.type==="user")break;continue}if(o.isStreaming&&(o.isStreaming=!1,s&&o.status==="pending"&&(o.status="completed",o.turnEndAt=Date.now())),rr(e,t,o),o.type==="user")break}}function Sd(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 Id(e,t){let s=e.currentConversation;if(!s)return;e.messagesMap[s]||(e.messagesMap[s]=[]);let n=e.messagesMap[s],r=null;for(let i of t)if(i.type==="user"){let o=i.message?.content;if(o){let a=typeof o=="string"?o:Array.isArray(o)?o.map(l=>l.text||"").join(""):"";a&&(r=a,e.addMessage({type:"user",content:a,isHistory:!0}))}}else if(i.type==="assistant"){let o=i.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(r&&s&&!e.conversationTitles[s]){let i=r.trim().substring(0,100);e.conversationTitles[s]=i}}function Ps(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 Cd(e){return{id:e.id,dbMessageId:e.id,timestamp:e.created_at}}function Ad(e){return e?e.message_type==="tool_use"&&!gv.has(e.tool_name)?{...Cd(e),type:"tool-use",toolName:e.tool_name||"unknown",hasResult:!0,isHistory:!0,startTime:e.created_at||0}:ya(e):null}function ya(e){if(!e)return null;let t=Cd(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 r=JSON.parse(e.metadata);r.askRequestId&&(n.askRequestId=r.askRequestId,n.askQuestions=r.askQuestions,n.askAnswered=!!r.askAnswered,n.selectedAnswers=r.selectedAnswers||null,r.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 r=JSON.parse(n);if(Array.isArray(r))return r.filter(i=>i.type==="text"&&i.text).map(i=>i.text).join("")}catch{}return n};if(e.role==="user"){let n=null;if(e.metadata)try{let r=JSON.parse(e.metadata);r&&typeof r.clientMessageId=="string"&&(n=r.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),r=(()=>{if(!e.content||typeof e.content!="string"||!e.content.startsWith("["))return[];try{let i=JSON.parse(e.content);return Array.isArray(i)?i.filter(o=>o.type==="tool_use"&&o.name):[]}catch{return[]}})();if(!n&&r.length===0)return null;if(r.length>0){let i=[];n&&i.push({...t,type:"assistant",content:n});for(let o=0;o<r.length;o++){let a=r[o];i.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 i}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 uv,gv,ir=N(()=>{ga();sn();uv="grp_default";gv=new Set(["TodoWrite","AskUserQuestion"])});function Rs(e,t){return e._closedAt?.[t]?Date.now()-e._closedAt[t]<3e4:!1}function an(e,t){Ce(e,t),e._processingWatchdogs||(e._processingWatchdogs={});let s=()=>{if(!e.processingConversations[t])return;let r=e.conversations.find(o=>o.id===t);e.sendWsMessage({type:"ping_session",conversationId:t,agentId:r?.agentId});let i=setTimeout(()=>{e.processingConversations[t]&&(e.sessionHealth||(e.sessionHealth={}),e.sessionHealth[t]={status:"agent-offline"})},1e4);e._pongTimeouts||(e._pongTimeouts={}),e._pongTimeouts[t]=i},n=setTimeout(()=>{e.processingConversations[t]&&(s(),e._processingWatchdogs[t]=setInterval(()=>{if(!e.processingConversations[t]){Ce(e,t);return}s()},3e4))},45e3);e._processingWatchdogs[t]=n}function pi(e,t){e._yeaftWatchdogPauseReasons?.[t]?.size||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)?cn(e,t):an(e,t))}function Ce(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),e._yeaftWatchdogPauseReasons&&delete e._yeaftWatchdogPauseReasons[t]}function or(e,t,s="phase"){if(!t||!e.processingConversations[t])return;e._yeaftWatchdogPauseReasons||(e._yeaftWatchdogPauseReasons={});let n=e._yeaftWatchdogPauseReasons[t]||new Set;n.add(s),e._yeaftWatchdogPauseReasons[t]=n,e._processingWatchdogs?.[t]&&(clearTimeout(e._processingWatchdogs[t]),clearInterval(e._processingWatchdogs[t]),delete e._processingWatchdogs[t])}function ln(e,t,s=null){if(!t)return;let n=e._yeaftWatchdogPauseReasons?.[t];n&&(s?n.delete(s):n.clear(),!n.size&&(delete e._yeaftWatchdogPauseReasons[t],e.processingConversations[t]&&cn(e,t)))}function xd(e,t){Ce(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 cn(e,t){let s=e._yeaftWatchdogPauseReasons?.[t];if(Ce(e,t),e._processingWatchdogs||(e._processingWatchdogs={}),s?.size){e._yeaftWatchdogConvs||(e._yeaftWatchdogConvs=new Set),e._yeaftWatchdogPauseReasons||(e._yeaftWatchdogPauseReasons={}),e._yeaftWatchdogConvs.add(t),e._yeaftWatchdogPauseReasons[t]=new Set(s);return}e._yeaftWatchdogConvs||(e._yeaftWatchdogConvs=new Set),e._yeaftWatchdogConvs.add(t),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]},15e4)}var as=N(()=>{});function ba(e,t){return t&&Array.isArray(e?._yeaftRetiredConversationIdsByAgent?.[t])?e._yeaftRetiredConversationIdsByAgent[t]:[]}function dn(e,t,s){return!t||!s?!1:ba(e,t).includes(s)}function wa(e,t){let s=e?._yeaftRetiredConversationTargetsByAgent?.[t];return s&&typeof s=="object"?s:{}}function Td(e,t,s){if(!t||!s)return null;let n=wa(e,t),r=s,i=new Set;for(let o=0;o<8;o++){if(i.has(r))return null;i.add(r);let a=n[r];if(!a||a===r)return r===s?null:r;r=a}return null}function ar(e,t,s,n=null){if(!t||!s)return;let r=ba(e,t).filter(a=>a!==s).concat(s).slice(-8);e._yeaftRetiredConversationIdsByAgent={...e._yeaftRetiredConversationIdsByAgent||{},[t]:r};let i=wa(e,t),o={};for(let a of r){let l=i[a];l&&(o[a]=l===s&&n?n:l)}n&&n!==s&&(o[s]=n),e._yeaftRetiredConversationTargetsByAgent={...e._yeaftRetiredConversationTargetsByAgent||{},[t]:o}}function ka(e,t,s){if(!t||!s||!e?._yeaftRetiredConversationIdsByAgent)return;let n=ba(e,t).filter(i=>i!==s);e._yeaftRetiredConversationIdsByAgent={...e._yeaftRetiredConversationIdsByAgent,[t]:n};let r={...wa(e,t)};delete r[s],e._yeaftRetiredConversationTargetsByAgent={...e._yeaftRetiredConversationTargetsByAgent||{},[t]:r}}var fi=N(()=>{});function vv(e,t,s){let n=e.messagesMap?.[t]||[],r=e.messagesMap?.[s]||[];e.messagesMap||(e.messagesMap={}),Ms(e,t,n),Ms(e,s,r),e.messagesMap[s]=ui(r,n).sort((i,o)=>{let a=Number.isFinite(i?.seq)?i.seq:null,l=Number.isFinite(o?.seq)?o.seq:null;return a!==null&&l!==null&&a!==l?a-l:a!==null&&l===null?-1:a===null&&l!==null?1:(i?.timestamp||0)-(o?.timestamp||0)})}function yv(e){if(!e||typeof e!="object")return e;if(typeof structuredClone=="function")try{return structuredClone(e)}catch{}return Array.isArray(e)?e.slice():{...e}}function gi(e,t){return!!e&&Object.prototype.hasOwnProperty.call(e,t)}function un(e,t,s,{removeSource:n}){gi(e,t)&&(gi(e,s)||(e[s]=n?e[t]:yv(e[t])),n&&delete e[t])}function Tt(e,t,s=null){if(!t)return null;let n=e?._yeaftPendingConversationPromotions?.[t]||null;return!n?.sourceConversationId||!n.targetConversationId||s&&n.targetConversationId!==s?null:n}function mi(e,t,s,n){return!t||!s||!n||s===n?!1:(e._yeaftPendingConversationPromotions={...e._yeaftPendingConversationPromotions||{},[t]:{sourceConversationId:s,targetConversationId:n}},!0)}function lr(e,t,s=null){let n=Tt(e,t,s);if(!n)return null;let r={...e._yeaftPendingConversationPromotions||{}};return delete r[t],e._yeaftPendingConversationPromotions=r,n}function cr(e,t,s){let n=Tt(e,t);return!n||!s||n.targetConversationId===s?null:(Mt(e,n.targetConversationId,s,{removeSource:!0}),ar(e,t,n.targetConversationId,s),mi(e,t,n.sourceConversationId,s),n)}function Mt(e,t,s,{removeSource:n=!0}={}){if(!t||!s||t===s)return!1;vv(e,t,s),e.yeaftHistoryCacheState&&(e.yeaftHistoryCacheState=Object.fromEntries(Object.entries(e.yeaftHistoryCacheState).map(([c,d])=>[c,d?.conversationId===t?{...d,conversationId:s}:d]))),un(e.processingConversations,t,s,{removeSource:n}),un(e.executionStatusMap,t,s,{removeSource:n}),un(e.refreshingSessionMap,t,s,{removeSource:n}),un(e._closedAt,t,s,{removeSource:n}),un(e._autoRefreshed,t,s,{removeSource:n}),un(e.sessionHealth,t,s,{removeSource:n}),e._turnCompletedConvs?.has(t)&&(e._turnCompletedConvs.add(s),n&&e._turnCompletedConvs.delete(t));let r=!!e._yeaftWatchdogConvs?.has(t),i=e._yeaftWatchdogPauseReasons?.[t],o=!!i?.size,a=!!e._processingWatchdogs?.[t];if(o&&(e._yeaftWatchdogPauseReasons||(e._yeaftWatchdogPauseReasons={}),e._yeaftWatchdogPauseReasons[s]=new Set(i)),n&&(a||o)&&Ce(e,t),n&&e._pongTimeouts?.[t]&&(clearTimeout(e._pongTimeouts[t]),delete e._pongTimeouts[t]),n&&(a||r||o)&&!!e.processingConversations?.[s])if(e._processingWatchdogs?.[s])e._yeaftWatchdogConvs?.add(s);else{let c=gi(e.sessionHealth,s),d=e.sessionHealth?.[s],u=gi(e._autoRefreshed,s),f=e._autoRefreshed?.[s];cn(e,s),c&&(e.sessionHealth||(e.sessionHealth={}),e.sessionHealth[s]=d),u&&(e._autoRefreshed||(e._autoRefreshed={}),e._autoRefreshed[s]=f)}return n&&e.messagesMap&&delete e.messagesMap[t],!0}var Sa=N(()=>{ir();fi();as()});function hi(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 Ia=N(()=>{});function Ca(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}function bv(){return Date.now()}function wv(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?`pt_${crypto.randomUUID()}`:`pt_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`}function kv(e,t=160){return typeof e!="string"?e:e.length>t?`${e.slice(0,t)}...[truncated]`:e}function Sv(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"?kv(n):n);return t}function _s(){return wv()}function Ge(e,t={}){!e||!t.traceId||(Array.isArray(e._perfTraceQueue)||(e._perfTraceQueue=[]),e._perfTraceQueue.push({traceId:t.traceId,source:"web",phase:t.phase||"unknown",at:bv(),monotonicMs:Ca(),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:Sv(t.detail)}),e._perfTraceQueue.length>200&&e._perfTraceQueue.splice(0,e._perfTraceQueue.length-200),Iv(e))}function Iv(e){!e||e._perfTraceFlushTimer||(e._perfTraceFlushTimer=setTimeout(()=>Cv(e),250))}function Cv(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 vi(e,t={}){if(typeof requestAnimationFrame!="function")return;let s=Ca();requestAnimationFrame(()=>{requestAnimationFrame(()=>{Ge(e,{...t,phase:t.phase||"render.next_paint",durationMs:Ca()-s})})})}var Aa=N(()=>{});function Pt(e){return Number.isFinite(e)?Number(e):null}function Av(e){return(Array.isArray(e)?e:[]).map(t=>({startSeq:Pt(t?.startSeq),endSeq:Pt(t?.endSeq)})).filter(t=>t.startSeq!==null&&t.endSeq!==null&&t.startSeq<=t.endSeq).sort((t,s)=>t.startSeq-s.startSeq)}function dr(e){return Number.isFinite(e)&&e>=0?Math.floor(e):0}function Es(e){let t=Pt(e?.beforeSeq);if(t===null)return null;if(e?.kind==="gap"){let s=Pt(e.stopAtSeq);return s===null?null:`gap:${dr(e.cacheEpoch)}:${s}:${t}`}return`server:${t}`}function ur(e){let t=new Set((Array.isArray(e?.completedHistoryWorkKeys)?e.completedHistoryWorkKeys:[]).filter(s=>typeof s=="string"&&s));for(let s of Array.isArray(e?.requestedBeforeSeqs)?e.requestedBeforeSeqs:[])Number.isFinite(s)&&t.add(`server:${s}`);return t}function xv(e,t){let s=Es(t);if(!s)return e.completedHistoryWorkKeys||[];let n=ur(e);return n.add(s),Array.from(n).slice(-256)}function Tv(e,t){if(!Number.isFinite(t))return e.requestedBeforeSeqs||[];let s=new Set((Array.isArray(e?.requestedBeforeSeqs)?e.requestedBeforeSeqs:[]).filter(Number.isFinite));return s.add(t),Array.from(s).sort((n,r)=>r-n).slice(-256)}function Mv(e,t={},s=0){let n=Av(e),r=dr(s),i=ur(t),o=[];for(let a=1;a<n.length;a+=1){let l=n[a-1],c=n[a];if(l.endSeq+1>=c.startSeq)continue;let d={kind:"gap",beforeSeq:c.startSeq,stopAtSeq:l.endSeq+1,cacheEpoch:r};d.workKey=Es(d),i.has(d.workKey)||o.push(d)}return o.sort((a,l)=>l.beforeSeq-a.beforeSeq)}function Md(e,t,s){let n=Mv(e,t,s),r=Pt(t.serverOldestFetchedSeq??t.oldestSeq),i=n[0]||null;if(!i||r===null||i.beforeSeq<=r)return[];let o={kind:"gap",beforeSeq:i.beforeSeq,stopAtSeq:r,cacheEpoch:i.cacheEpoch};return o.workKey=Es(o),ur(t).has(o.workKey)?[]:[o]}function Pd(e={},t=[],s=0){let n=dr(s),r=ur(e),i=e.serverHasMore!==!1,o=Pt(e.serverOldestFetchedSeq??e.oldestSeq),a=e.gapTraversalInitialized===!0,l=Array.isArray(e.gapQueue)?e.gapQueue.slice():[],c=null,d=null;if(i&&o!==null){let u={kind:"server",beforeSeq:o,stopAtSeq:null,cacheEpoch:n};u.workKey=Es(u),r.has(u.workKey)?(i=!1,d="history_cursor_repeated"):c=u}return!c&&!i&&(a||(l=Md(t,e,n),a=!0),c=l[0]||null),c?{request:c,state:{...e,serverHasMore:i,gapTraversalInitialized:a,gapQueue:l,pendingPageKind:c.kind,pendingPageBeforeSeq:c.beforeSeq,pendingGapStopAtSeq:c.stopAtSeq,pendingCacheEpoch:c.cacheEpoch,pendingHistoryWorkKey:c.workKey,hasMore:!0,paginationError:null}}:{request:null,state:{...e,serverHasMore:i,gapTraversalInitialized:a,gapQueue:l,hasMore:!1,paginationError:d}}}function Rd(e={},{mode:t,oldestSeq:s,hasMore:n,ranges:r=[],pageKind:i=null,stopAtSeq:o=null,cacheEpoch:a=0}={}){if(t==="delta")return e;let l=dr(a),c=Pt(s),d=Pt(e.pendingPageBeforeSeq),u=i||e.pendingPageKind||(t==="older"?"server":null),f=Pt(o??e.pendingGapStopAtSeq),p=dr(e.pendingCacheEpoch??l),g={kind:u,beforeSeq:d,stopAtSeq:f,cacheEpoch:p},m=Pt(e.serverOldestFetchedSeq??e.oldestSeq),v=e.serverHasMore!==!1,k=Number(e.noProgressCount)||0,w=null,I=e.requestedBeforeSeqs||[],h=e.completedHistoryWorkKeys||[],y=e.gapTraversalInitialized===!0,b=Array.isArray(e.gapQueue)?e.gapQueue.slice():[];if(t==="recent")m=c,v=!!n,k=0,I=[],h=[],y=!1,b=[];else if(d===null)c!==null&&(m=m===null?c:Math.min(m,c)),v=!!n,k=0;else{I=Tv(e,d),h=xv(e,g);let x=c!==null&&c<d;if(u==="server")x?(m=m===null?c:Math.min(m,c),v=!!n,k=0):(v=!1,k+=1,w="history_cursor_no_progress");else if(u==="gap"){let D=Es(g);b=b.filter(E=>Es(E)!==D);let V=f!==null&&c!==null&&c<=f;if(x||V||n===!1){if(k=0,!V&&n!==!1&&c!==null&&f!==null){let E={kind:"gap",beforeSeq:c,stopAtSeq:f,cacheEpoch:p};E.workKey=Es(E),ur({completedHistoryWorkKeys:h}).has(E.workKey)||b.unshift(E)}}else k+=1,w="history_cursor_no_progress"}}t==="older"&&!v&&!y&&(b=Md(r,{...e,serverOldestFetchedSeq:m,completedHistoryWorkKeys:h},l),y=!0);let M={...e,serverOldestFetchedSeq:m,serverHasMore:v,requestedBeforeSeqs:I,completedHistoryWorkKeys:h,gapTraversalInitialized:y,gapQueue:b,noProgressCount:k,oldestSeq:m,paginationError:w};return delete M.pendingPageKind,delete M.pendingPageBeforeSeq,delete M.pendingGapStopAtSeq,delete M.pendingCacheEpoch,delete M.pendingHistoryWorkKey,{...M,hasMore:v||b.length>0}}var xa=N(()=>{});function $d(e){return e.filter(t=>!(t.type==="user"&&(!t.content||!t.content.trim())))}function Ds(e){let t=typeof e=="string"?e.match(/^m(\d+)$/):null,s=t?Number(t[1]):null;return Number.isFinite(s)?s:null}function _d(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 r=Number(s);if(Number.isFinite(r)&&r>0)return r}}return null}function Pv(e){if(!Array.isArray(e))return null;for(let t=e.length-1;t>=0;t-=1){let s=e[t];if(s?.name==="TodoWrite"&&Array.isArray(s?.input?.todos))return s.input.todos}return null}function Rv(e){return Array.isArray(e?.toolCalls)?e.toolCalls.filter(t=>t?.name!=="TodoWrite").length:Number(e?.toolSummaryCount||0)||0}function _v(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,r=typeof s.sessionById=="function"?s.sessionById(e,n?.currentAgent||null):s.sessions&&s.sessions[e];return(r&&typeof r.defaultVpId=="string"?r.defaultVpId.trim():"")||null}catch{return null}}function Ev(e,t){return e.speakerVpId||e.vpId||e.vp_id||e.authorVpId||e.authorVP||_v(t)}function yi(e){return e?.stableKey||(e&&(e.messageId||e.id)?e.messageId||e.id:null)}function Dv(e,t=null){if(!e||e.stableKey)return e;let s=pr(e),n=e.messageId||e.id||null,r=e.type==="user"&&e.clientMessageId||null;return e.stableKey=r&&n===r?ns(t,s,r):jn(t,s,n),Number.isFinite(e.seq)||(e.seq=Ds(n)),e.uiKey||(e.uiKey=e.stableKey||null),e}function Lv(e){return!e||e.isHistory===!0?!1:e.isStreaming||Vd(e)?!0:!Number.isFinite(e.seq)&&Number.isFinite(e.timestamp)}function Ed(e){let t=Lv(e),s=Number.isFinite(e?.seq)?e.seq:null,n=Number.isFinite(e?.timestamp)?e.timestamp:0;return t?[2,n,s??0]:[1,n,s??-1]}function $v(e){e.sort((t,s)=>{let n=Ed(t),r=Ed(s);for(let i=0;i<n.length;i+=1)if(n[i]!==r[i])return n[i]-r[i];return 0})}function Vv(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 r=e.threadId||"",i=t.threadId||"";if(r&&i&&r!==i||!(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 Ta(e,t){let s=new Map,n=new Map;e.forEach((i,o)=>{let a=yi(i);a&&s.set(a,o),i?.type==="user"&&i.clientMessageId&&n.set(i.clientMessageId,o)});let r=0;for(let i of t){let o=yi(i),a=o&&s.has(o)?s.get(o):null;if(a===null&&i?.type==="user"&&i.clientMessageId&&n.has(i.clientMessageId)&&(a=n.get(i.clientMessageId)),a===null&&i?.type==="assistant"&&(a=e.findIndex(l=>Vv(l,i))),a!==null&&a>=0){let l=yi(e[a]),c=e[a]?.uiKey||null;e[a]={...e[a],...i,...c?{uiKey:c}:{}},o&&s.set(o,a),l&&l!==o&&s.get(l)===a&&s.delete(l),i?.type==="user"&&i.clientMessageId&&n.set(i.clientMessageId,a)}else o&&s.set(o,e.length),i?.type==="user"&&i.clientMessageId&&n.set(i.clientMessageId,e.length),e.push(i),r+=1}return $v(e),r}function pr(e){return e?e.sessionId??e.groupId??null:null}function Vd(e){return!e||e.type!=="user"||!e.clientMessageId?!1:(e.messageId||e.id||null)===e.clientMessageId}function Hv(e,t,s){let n=e.some(a=>a&&(s==null||pr(a)===s));if(t.length===0&&n)return{insertedRows:0,preservedEmpty:!0};let r=t.reduce((a,l)=>Math.max(a,l?.timestamp||0),0),i=e.filter(a=>a?s!=null&&pr(a)!==s||kt(a)||a.isStreaming||a.type==="tool-use"&&a.toolName==="AskUserQuestion"&&(a.askAnswered||a.askPending||a.askExpired)||Vd(a)?!0:r>0&&(a.timestamp||0)>r:!1);return e.splice(0,e.length,...i),{insertedRows:Ta(e,t),preservedEmpty:!1}}function Ov(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 Fv(e,t){let s=typeof e.yeaftConversationId=="string"?e.yeaftConversationId:"";return s.startsWith(`yeaft-local-${t}-`)||/^yeaft-local-\d/.test(s)?s:null}function Bv(e,t,s,n){let r=t.agentId||s&&e.yeaftSessionAgentById?.[s]||null;if(!r||!n||e.currentView!=="yeaft")return;let i=Ot(e);if(i.sessionId!==(s||null)||i.agentId&&i.agentId!==r)return;let o=e.yeaftConversationId||null;if(dn(e,r,n)){let d=e.yeaftConversationIdsByAgent?.[r]||null;d&&d!==n&&Mt(e,n,d,{removeSource:n!==e.yeaftConversationId});return}let a=Tt(e,r);a&&a.targetConversationId!==n&&cr(e,r,n);let l=Tt(e,r,n);if(l&&(Mt(e,l.sourceConversationId,n,{removeSource:!0}),lr(e,r,n),e.yeaftConversationId=n),o===n||l){e.messagesMap[n]||(e.messagesMap[n]=[]),e.yeaftConversationIdsByAgent={...e.yeaftConversationIdsByAgent||{},[r]:n},e.activeConversations=[n];return}let c=Fv(e,r);c&&(Mt(e,c,n,{removeSource:!0}),e.yeaftConversationIdsByAgent={...e.yeaftConversationIdsByAgent||{},[r]:n},e.yeaftConversationId=n,e.activeConversations=[n])}function ls(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 Hd(e,t){xt(e);let s=e.agents.find(r=>r.id===t.agentId);e.conversations=e.conversations.filter(r=>r.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 r=e._pendingPaneId;if(e._pendingPaneId=null,r){let i=e.panels.find(o=>o.id===r);i&&(i.conversationId=t.conversationId)}else{let i=e.panels.find(o=>!o.conversationId);i&&(i.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:Le("store.convCreated",{agent:s?.name||t.agentId,workDir:t.workDir})}),e.saveOpenSessions()}function Od(e,t){xt(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 r=e.panels.find(i=>i.id===n);r&&(r.conversationId=t.conversationId)}else{let r=e.panels.find(i=>!i.conversationId);r&&(r.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:Le("store.convResumed",{agent:s?.name||t.agentId,sessionId:t.claudeSessionId?t.claudeSessionId.slice(0,8)+"...":""})}),t.dbMessages&&t.dbMessages.length>0){let n=$d(t.dbMessages.map(o=>e.formatDbMessageForHistoryHydration(o)).flat().filter(Boolean)),r=fa(n),i=e.messagesMap[t.conversationId]||[];for(let o of r)i.push(o)}e.hasMoreMessages=!!t.hasMoreMessages,e.chatSessionState[t.conversationId]={lastSeenDbId:Ps(e.messagesMap[t.conversationId]),hasMoreOlder:!!t.hasMoreMessages},e.saveOpenSessions()}function Ma(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],Ce(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:Le("chat.session.closed")}));for(let n of e.panels)n.conversationId===t.conversationId&&(n.conversationId=null);e.saveOpenSessions()}function Fd(e,t){let s=t.conversationId;if(s){delete e.processingConversations[s],Ce(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),ls(e,s);let r=e.conversations.find(i=>i.id===s);r&&(t.claudeSessionId&&(r.claudeSessionId=t.claudeSessionId),t.workDir&&(r.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 Bd(e,t){let s=t.conversationId;if(s){delete e.processingConversations[s],Ce(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),ls(e,s);let r=e.conversations.find(i=>i.id===s);r&&(t.claudeSessionId&&(r.claudeSessionId=t.claudeSessionId),t.workDir&&(r.workDir=t.workDir)),e.saveOpenSessions()}}function Nd(e,t){if(t.conversationId){if(t.isProcessing&&!Rs(e,t.conversationId)&&!e._turnCompletedConvs?.has(t.conversationId))e.processingConversations[t.conversationId]=!0;else if(e.processingConversations[t.conversationId]){delete e.processingConversations[t.conversationId],Ce(e,t.conversationId);let s=e.executionStatusMap[t.conversationId];s&&(s.currentTool=null),e.finishStreamingForConversation(t.conversationId)}}}function qd(e,t){let s=t.conversationId||e.currentConversation;if(s){delete e.processingConversations[s],Ce(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),ls(e,s)}}function Wd(e,t){if(!!t.requestId){if(e.chatHistoryRequestIdSupported=!0,!e.isCurrentChatHistoryResponse?.(t))return!1}else{let i=`chat:${t.conversationId}`,o=e.chatHistoryRequests?.[i];if(e.chatHistoryRequestIdSupported===!0||!o?.loading)return!1;t={...t,requestId:o.requestId,catalogKey:i,mode:o.mode||t.mode,...o.mode==="delta"?{afterMessageId:o.cursor}:{}}}e.messagesMap[t.conversationId]||(e.messagesMap[t.conversationId]=[]);let n=e.messagesMap[t.conversationId],r=t.mode==="delta"||typeof t.afterMessageId=="number"&&t.afterMessageId>0;if(t.conversationId&&e.activeConversations.includes(t.conversationId)){let i=fa($d((t.messages||[]).map(a=>e.formatDbMessageForHistoryHydration(a)).flat().filter(Boolean)));if(i.length>0){let a=n.find(l=>l.dbMessageId);if(a&&i[0].dbMessageId&&i[i.length-1].dbMessageId<a.dbMessageId){let l=n.indexOf(a);e.debug,n.splice(l,0,...i)}else{e.debug;for(let l of i)if(!(l.dbMessageId&&n.some(c=>c.dbMessageId===l.dbMessageId))){if(l.dbMessageId&&(l.type==="assistant"||l.type==="user")){let c=null;if(l.type==="user"?c=n.find(d=>!d.dbMessageId&&!d.isStreaming&&hi(d,l)):c=n.find(d=>!d.dbMessageId&&!d.isStreaming&&d.type==="assistant"&&d.content===l.content),c){c.dbMessageId=l.dbMessageId,c.id=l.id,l.timestamp&&(c.timestamp=l.timestamp),l.clientMessageId&&!c.clientMessageId&&(c.clientMessageId=l.clientMessageId);continue}}n.push(l)}}}r||(e.hasMoreMessages=t.hasMore??!1),xt(e);let o=e.chatSessionState[t.conversationId]?.hasMoreOlder;e.chatSessionState[t.conversationId]={lastSeenDbId:Ps(e.messagesMap[t.conversationId]),hasMoreOlder:r?!!o:!!t.hasMore}}return e.finishChatHistoryRequest?.(t)&&(e.currentConversation===t.conversationId&&(e.loadingMoreMessages=!1),e.setRefreshingSession(t.conversationId,!1)),!0}function jd(e,t){let s=t.sessionId??null,n=t.agentId||s&&e.yeaftSessionAgentById?.[s]||null,r=t.conversationId||n&&e.yeaftConversationIdsByAgent?.[n]||e.yeaftConversationId;if(!r||!s||!Array.isArray(t.messages))return null;e.messagesMap[r]||(e.messagesMap[r]=[]);let i=new Set(Array.isArray(t.sourceMessageIds)?t.sourceMessageIds:[]);for(let c of e.messagesMap[r]){let d=c?.persistedMessageId||c?.messageId||c?.id||null;!t.entryId||!i.has(d)||(c.historyEntryId=t.entryId,Number.isFinite(t.indexGeneration)&&(c.historyIndexGeneration=t.indexGeneration))}let o=t.messages.map(c=>t.entryId&&i.has(c?.id)?{...c,historyEntryId:t.entryId,...t.prefetch===!0?{_historyWindowPrefetched:!0}:{},...Number.isFinite(t.indexGeneration)?{historyIndexGeneration:t.indexGeneration}:{}}:c),{formatted:a}=Ud(o,s,"window",e.messagesMap[r],n);if(t.prefetch===!0)for(let c of a)c._historyWindowPrefetched=!0;Ta(e.messagesMap[r],a);let l=Ot(e);return zn(e,{conversationId:r,agentId:n,sessionId:s,incomingRows:a,activeAgentId:l.agentId,activeSessionId:l.sessionId}),r}function Dd(e){return e?.toolId?[pr(e)??"",e.vpId||e.speakerVpId||"",e.turnId||"",e.threadId||"main",e.toolId].join("\0"):null}function Ld(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 Nv(e,t){return(e||[]).find(s=>s?.type==="tool-use"&&(s.toolName==="AskUser"||s.toolName==="AskUserQuestion")&&s.toolId===t.toolCallId&&pr(s)===t.sessionId&&(s.vpId||s.speakerVpId||"")===(t.vpId||"")&&(s.turnId||"")===(t.turnId||"")&&(s.threadId||"main")===(t.threadId||"main"))||null}function Ud(e,t,s,n,r=null){let i=new Set((n||[]).map(c=>yi(Dv(c,r))).filter(Boolean)),o=new Set,a=[],l=0;for(let c of e){if(!c||c._reflection||c.internal||c.systemOnly||c.systemOnlyMessage||Ov(c.content))continue;let d=c.id||c.messageId||null,u=c.clientMessageId||null,f=c.sessionId??c.groupId??t??null,p=jn(r,f,d),g=u?ns(r,f,u):p,m=c.historyEntryId?{historyEntryId:c.historyEntryId,...Number.isFinite(c.historyIndexGeneration)?{historyIndexGeneration:c.historyIndexGeneration}:{}}:{};if(!(p&&o.has(p))&&!(p&&s!=="recent"&&i.has(p))){if(p&&o.add(p),c.role==="user"){l+=1;let v=d||c.messageId||c.turnId||null;a.push({...d?{id:d,messageId:d}:{},...p?{stableKey:p}:{},...g?{uiKey:g}:{},...m,seq:Number.isFinite(c.seq)?c.seq:Ds(d),type:"user",content:c.content,timestamp:_d(c),sessionId:f,turnId:c.turnId||v,...u?{clientMessageId:u}:{},...Array.isArray(c.attachments)&&c.attachments.length>0?{attachments:c.attachments}:{},...c.quote?{quote:c.quote}:{},isStreaming:!1,isHistory:!0})}else if(c.role==="assistant"){l+=1;let v=d||c.messageId||c.turnId||null,k=Ev(c,f),w=_d(c),I=!!c.turnId,h=c.turnId||v,y=typeof c.content=="string"?c.content:c.content||"",b=Array.isArray(c.todos)?c.todos:Pv(c.toolCalls),M=c.executionOrigin==="route_forward"?{executionOrigin:"route_forward"}:{};(typeof y!="string"||y.trim())&&a.push({...d?{id:d,messageId:d}:{},...p?{stableKey:p}:{},...g?{uiKey:g}:{},...m,seq:Number.isFinite(c.seq)?c.seq:Ds(d),...c.entryId?{entryId:c.entryId}:{},...Array.isArray(c.sourceMessageIds)?{sourceMessageIds:c.sourceMessageIds}:{},type:"assistant",content:y,timestamp:w,sessionId:f,turnId:h,_hasPersistedTurnId:I,...M,...k?{vpId:k,speakerVpId:k}:{},...c.responseKind==="progress"||c.responseKind==="result"?{responseKind:c.responseKind}:{},...c.incomplete===!0?{incomplete:!0}:{},...typeof c.stopReason=="string"&&c.stopReason?{stopReason:c.stopReason}:{},isStreaming:!1,isHistory:!0}),Array.isArray(b)&&b.length>0&&a.push({...d?{id:`${d}:todos`,messageId:`${d}:todos`}:{},...p?{stableKey:`${p}:todos`}:{},...m,seq:Number.isFinite(c.seq)?c.seq:Ds(d),type:"tool-use",toolName:"TodoWrite",toolInput:{todos:b},timestamp:w,sessionId:f,turnId:h,...M,...k?{vpId:k,speakerVpId:k}:{},isStreaming:!1,isHistory:!0,hasResult:!0});for(let D of Array.isArray(c.images)?c.images:[])D?.assetId&&a.push({id:`${d||v||h}:image:${D.assetId}`,messageId:`${d||v||h}:image:${D.assetId}`,...p?{stableKey:`${p}:image:${D.assetId}`}:{},...m,seq:Number.isFinite(c.seq)?c.seq:Ds(d),type:"chat-image",...D,timestamp:w,sessionId:f,turnId:h,...M,...k?{vpId:k,speakerVpId:k}:{},isStreaming:!1,isHistory:!0});for(let D of Array.isArray(c.askUserResults)?c.askUserResults:[]){if(!D?.toolCallId||D.status!=="answered"&&D.status!=="expired")continue;let V=[{question:typeof D.question=="string"?D.question:"",options:(Array.isArray(D.options)?D.options:[]).filter(R=>typeof R=="string").map(R=>({label:R,description:""})),multiSelect:!1}],E={toolCallId:D.toolCallId,sessionId:f,vpId:k||"",turnId:h||"",threadId:c.threadId||"main"},_=Nv(n,E);if(_){Object.assign(_,m),Ld(_,D,V);continue}let T=Ld({id:`${d||v||h}:ask:${D.toolCallId}`,messageId:`${d||v||h}:ask:${D.toolCallId}`,...p?{stableKey:`${p}:ask:${D.toolCallId}`}:{},...m,seq:Number.isFinite(c.seq)?c.seq:Ds(d),type:"tool-use",timestamp:w,sessionId:f,turnId:h,threadId:E.threadId,...M,...k?{vpId:k,speakerVpId:k}:{},isStreaming:!1},D,V),A=Dd(T);(!A||!a.some(R=>Dd(R)===A))&&a.push(T)}let x=Rv(c);x>0&&a.push({...d?{id:`${d}:tool-summary`,messageId:`${d}:tool-summary`,persistedMessageId:d}:{},...p?{stableKey:`${p}:tool-summary`}:{},...m,seq:Number.isFinite(c.seq)?c.seq:Ds(d),type:"tool-summary",count:x,omittedCount:x,source:"history",timestamp:w,sessionId:f,turnId:h,...M,...k?{vpId:k,speakerVpId:k}:{},isStreaming:!1,isHistory:!0})}}}return{formatted:a,acceptedHistoryMessages:l}}function Kd(e,t){let s=t.sessionId!=null?t.sessionId:t.groupId,n=t.agentId||s&&e.yeaftSessionAgentById?.[s]||null;if(dn(e,n,t.conversationId)){let F=e.yeaftConversationIdsByAgent?.[n]||null;if(!F||F===t.conversationId)return;Mt(e,t.conversationId,F,{removeSource:t.conversationId!==e.yeaftConversationId}),t={...t,conversationId:F}}if(t.requestId&&typeof e.isCurrentYeaftHistoryResponse=="function"&&!e.isCurrentYeaftHistoryResponse(t))return;let r=t.mode==="recent"||t.mode==="delta"?t.mode:"older",i=Array.isArray(t.messages)?t.messages:[],o=t.agentId||s&&e.yeaftSessionAgentById?.[s]||null,a=he(o,s),l=e.yeaftSessionHistoryState?.[a]||null;typeof t.streamId=="string"&&typeof l?.streamId=="string"&&(t.streamId!==l.streamId||Number.isFinite(t.revision)&&Number.isFinite(l.revision)&&t.revision!==l.revision)&&(r="recent",typeof e.clearYeaftHistoryMemory=="function"&&e.clearYeaftHistoryMemory({agentId:o,sessionId:s,preserveLiveRows:!0,preserveSessionOwner:!0}),typeof e.removeYeaftHistoryBrowserCache=="function"&&e.removeYeaftHistoryBrowserCache(o,s)),t.perfTraceId&&Ge(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:r,rawCount:i.length}});let d=t.agentId||(s&&e.yeaftSessionAgentById?e.yeaftSessionAgentById[s]:null),u=d&&e.yeaftConversationIdsByAgent?e.yeaftConversationIdsByAgent[d]:null,f=t.conversationId||u||e.yeaftConversationId;if(!f){e.yeaftLoadingMoreHistory=!1;return}Bv(e,t,s,f),e.messagesMap[f]||(e.messagesMap[f]=[]);let{formatted:p,acceptedHistoryMessages:g}=Ud(i,s,r,e.messagesMap[f],d);Ms(e,f,p);let m=0,v=!1;if(r==="recent"){let F=Hv(e.messagesMap[f],p,s??null);m=F.insertedRows,v=F.preservedEmpty}else if(p.length>0)if(r==="older"){if(e.messagesMap[f].splice(0,0,...p),m=p.length,typeof e.expandYeaftMessageWindow=="function"){let F=e.yeaftActiveSessionFilter?s??null:null;e.expandYeaftMessageWindow(F,t.turns||10,d)}}else m=Ta(e.messagesMap[f],p);let k=Ot(e);zn(e,{conversationId:f,agentId:d,sessionId:s,incomingRows:p,activeAgentId:k.agentId,activeSessionId:k.sessionId});let w=he(t.agentId||null,s),I=e.yeaftHistoryCacheState?.[w]||null,h=e.yeaftSessionHistoryState?.[w]||{},y=Number.isFinite(h.serverOldestFetchedSeq)?h.serverOldestFetchedSeq:Number.isFinite(h.oldestSeq)?h.oldestSeq:null,b=Number.isFinite(t.nextBeforeSeq)?t.nextBeforeSeq:Number.isFinite(t.oldestSeq)?t.oldestSeq:v?y:null,M=v&&!Number.isFinite(t.nextBeforeSeq)&&!Number.isFinite(t.oldestSeq)?h.serverHasMore??h.hasMore??!1:t.hasMore,x=r==="delta"?h:Rd(h,{mode:r,oldestSeq:b,hasMore:M,ranges:I?.ranges||[],pageKind:t.pageKind,stopAtSeq:t.gapStopAtSeq,cacheEpoch:I?.rangeEpoch??t.cacheEpoch??0}),D=typeof t.latestSeq=="number"?t.latestSeq:h.latestSeq??null,V={streamId:typeof t.streamId=="string"?t.streamId:h.streamId??null,revision:Number.isFinite(t.revision)?t.revision:h.revision??null},E=r==="delta"?{...h,...V,loaded:!0,loading:!1,latestSeq:D,syncingAfterSeq:null,count:(h.count||0)+m}:{...x,...V,loaded:!0,loading:!1,count:I?I.rowCount:r==="older"?(h.count||0)+m:v?h.count||0:g,latestSeq:v&&!Number.isFinite(t.latestSeq)?h.latestSeq??null:D,syncingAfterSeq:null};t.requestId&&typeof e.finishYeaftHistoryLoad=="function"?e.finishYeaftHistoryLoad(t,E,"chunk"):e.yeaftSessionHistoryState&&(e.yeaftSessionHistoryState={...e.yeaftSessionHistoryState,[w]:E}),typeof e.persistYeaftHistoryBrowserCache=="function"&&e.persistYeaftHistoryBrowserCache(s,d,f),r==="delta"&&t.hasMoreAfter===!0&&Number.isFinite(E.latestSeq)&&E.latestSeq>Number(t.afterSeq??-1)&&typeof e.continueYeaftHistoryDelta=="function"&&queueMicrotask(()=>e.continueYeaftHistoryDelta(s,d,E.latestSeq));let _=Ot(e),T=_.sessionId===(s||null),A=!t.agentId||!_.agentId||t.agentId===_.agentId,R=T&&A,j=he(null,_.sessionId);if(t.perfTraceId&&(Ge(e,{traceId:t.perfTraceId,phase:"history.chunk_applied",agentId:t.agentId||null,sessionId:s||null,messageType:t.type,detail:{mode:r,formattedCount:p.length,insertedRows:m,acceptedHistoryMessages:g,preservedEmptyRecent:v}}),vi(e,{traceId:t.perfTraceId,phase:"history.next_paint",agentId:t.agentId||null,sessionId:s||null,messageType:t.type,detail:{mode:r,insertedRows:m}})),R)e.yeaftHasMoreHistory=E.hasMore,e.yeaftOldestLoadedSeq=Number.isFinite(E.serverOldestFetchedSeq)?E.serverOldestFetchedSeq:Number.isFinite(E.oldestSeq)?E.oldestSeq:e.yeaftOldestLoadedSeq,e.yeaftLoadingMoreHistory=!1;else if(e.yeaftLoadingMoreHistory){let F=e.yeaftSessionHistoryState?.[_.sessionKey]||e.yeaftSessionHistoryState?.[j]||null;e.yeaftLoadingMoreHistory=!!F?.loading}}var bi=N(()=>{as();Sa();fi();Ts();Ia();ir();ga();Nt();Aa();ni();sn();ii();xa()});function zd(e,t,s=null){if(!s)return!1;if(e.promoteYeaftHistoryOutlineRow?.(t,s))return!0;let n=t?.sessionId??t?.groupId??e._currentYeaftSessionId??null;return n?!!e.invalidateYeaftHistoryOutline?.(n,s):!1}function qv(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 Pa(e,t){return e.executionStatusMap[t]||(e.executionStatusMap[t]={currentTool:null,toolHistory:[],lastActivity:null}),e.executionStatusMap[t]}function Yd(e,t,s,n=null){if(!t)return;let r=Pa(e,t);if(r.lastActivity=Date.now(),pi(e,t),s.type==="system"){if(s.subtype==="init"){let i=e.conversations.find(o=>o.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 o=e.messagesMap[t]||[];for(let a of o)a.type==="tool-use"&&!a.hasResult&&(a.hasResult=!0);for(let a of r.toolHistory)a.status==="running"&&(a.status="done");if(r.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 a of i)a.type==="text"?e.appendToAssistantMessageForConversation(t,a.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}):a.type==="image_asset"&&a.image?e.addMessageToConversation(t,{type:"chat-image",...a.image,sessionId:e._currentYeaftSessionId||null,vpId:e._currentYeaftVpId||null,speakerVpId:e._currentYeaftVpId||null,turnId:e._currentYeaftTurnId||null,threadId:e._currentYeaftThreadId||null}):a.type==="tool_summary"?e.addMessageToConversation(t,{type:"tool-summary",count:Number(a.count||a.omittedCount||0)||0,omittedCount:Number(a.omittedCount||a.count||0)||0,source:a.source||"history",isHistory:a.source!=="live",sessionId:e._currentYeaftSessionId||null,vpId:e._currentYeaftVpId||null,turnId:e._currentYeaftTurnId||null,threadId:e._currentYeaftThreadId||null}):a.type==="tool_use"&&(e.finishStreamingForConversation(t,{completeLifecycle:!1}),r.currentTool={name:a.name,input:a.input,startTime:Date.now()},r.toolHistory.unshift({name:a.name,input:a.input,timestamp:Date.now(),status:"running"}),r.toolHistory.length>20&&r.toolHistory.pop(),e.addMessageToConversation(t,{type:"tool-use",toolId:a.id||a.tool_use_id||null,toolName:a.name,toolInput:a.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,o=s.message?.content,a=qv(o);if(typeof a=="string"&&(a.includes("<local-command-caveat>")||a.includes("<command-name>")))return;if(typeof a=="string"&&a.includes("<local-command-stdout>")){let c=a.match(/<local-command-stdout>([\s\S]*?)<\/local-command-stdout>/);if(c){e.appendToAssistantMessageForConversation(t,c[1].trim()),e.finishStreamingForConversation(t);return}}let l=[];if(s.tool_use_result)l=Array.isArray(s.tool_use_result)?s.tool_use_result:[s.tool_use_result];else if(s.message?.content){let c=s.message.content;l=(Array.isArray(c)?c:[]).filter(u=>u.type==="tool_result")}if(l.length>0){let c=e.messagesMap[t]||[];for(let d of l){if(r.toolHistory.length>0){let g=r.toolHistory.findIndex(m=>m.status==="running");g>=0&&(r.toolHistory[g].status="done")}let u=d.tool_use_id||d.toolUseId||d.tool_call_id||d.toolCallId||null,f=d.content||d,p=!1;if(u){for(let g=c.length-1;g>=0;g--)if(c[g].type==="tool-use"&&c[g].toolId===u){c[g].hasResult=!0,c[g].toolResult=d.is_update&&c[g].toolResult?`${c[g].toolResult}
1
+ var N=(e,t,s)=>()=>{if(s)throw s[0];try{return e&&(t=e(e=0)),t}catch(n){throw s=[n],n}};var Mh=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(s){throw t=0,s}};function hc(e,t){let s=nacl.randomBytes(24),n=JSON.stringify(e),r,i=!1;n.length>512?(r=pako.gzip(n),i=!0):r=nacl.util.decodeUTF8(n);let o=nacl.secretbox(r,s,t),a={n:nacl.util.encodeBase64(s),c:nacl.util.encodeBase64(o)};return i&&(a.z=!0),a}function vc(e,t){try{let s=nacl.util.decodeBase64(e.n),n=nacl.util.decodeBase64(e.c),r=nacl.secretbox.open(n,s,t);if(!r)return null;if(e.z){let i=pako.ungzip(r,{to:"string"});return JSON.parse(i)}else return JSON.parse(nacl.util.encodeUTF8(r))}catch{return null}}function yc(e){return e&&typeof e=="object"&&typeof e.n=="string"&&typeof e.c=="string"}function bt(e){return nacl.util.decodeBase64(e)}var ei=N(()=>{});function Ht(){return globalThis.localStorage||null}function wc(){let e=si();for(let t of Ko)try{t(e)}catch{}}function Ph(){try{Ht()?.removeItem(Fn),Ht()?.removeItem(Bn)}catch{}}function Rh(e){return String(e||"").trim()||null}function bc(e,t){if(!Nn(t))return{};try{let s=JSON.parse(Ht()?.getItem(e)||"null");return!s||typeof s!="object"||Array.isArray(s)||s.ownerId!==t.ownerId||!s.records||typeof s.records!="object"||Array.isArray(s.records)?(Ht()?.removeItem(e),{}):s.records}catch{try{Ht()?.removeItem(e)}catch{}return{}}}function kc(e,t,s){if(!Nn(s))return!1;try{return Ht()?.setItem(e,JSON.stringify({ownerId:s.ownerId,records:t||{}})),!0}catch{return!1}}function wt(e){let t=Rh(e);if(!t)return zo(),null;if(ws!==t){ws=t,ti+=1;for(let s of[Fn,Bn])try{let n=JSON.parse(Ht()?.getItem(s)||"null");(!n||n.ownerId!==t)&&Ht()?.removeItem(s)}catch{try{Ht()?.removeItem(s)}catch{}}wc()}return si()}function zo(){ws=null,ti+=1,Ph(),wc()}function si(){return ws?{ownerId:ws,epoch:ti}:null}function Nn(e){return!!e&&!!ws&&e.ownerId===ws&&e.epoch===ti}function Sc(e){return{drafts:bc(Fn,e),outbox:bc(Bn,e)}}function Yo(e,t){return kc(Fn,e,t)}function qn(e,t){return kc(Bn,e,t)}function Ic(e){return typeof e!="function"?()=>{}:(Ko.add(e),()=>Ko.delete(e))}var Fn,Bn,ws,ti,Ko,Kw,Go=N(()=>{Fn="yeaft-work-center-composer-drafts-v1",Bn="yeaft-work-center-message-outbox-v1",ws=null,ti=0,Ko=new Set;Kw=Object.freeze({drafts:Fn,outbox:Bn})});function he(e,t){let s=t==null?"__all__":String(t);return e?`${e}${s}`:s}function Wn(e){return typeof e?.entryId=="string"&&e.entryId?`entry:${e.entryId}`:e?.role==="assistant"&&e?.turnId?`live-response:${e.turnId}:${e.speakerVpId||e.vpId||""}`:typeof e?.clientMessageId=="string"&&e.clientMessageId?`client:${e.clientMessageId}`:`message:${e?.messageId||""}`}function jn(e,t,s){return typeof s!="string"||!s?null:`${he(e,t)}message:${s}`}function ns(e,t,s){return typeof s!="string"||!s?null:`${he(e,t)}client:${s}`}var sn=N(()=>{});function Qo(e){return typeof e=="string"&&e?e:null}function nn(e,t){return e?.yeaftSessionHistoryState?.[t]||null}function Ot(e){let t=e?.yeaftActiveSessionFilter||null;if(!t)try{t=(typeof window<"u"&&window.Pinia?.useSessionsStore?.())?.activeSessionId||null}catch{}if(!t)return{agentId:e?.currentAgent||null,sessionId:null,sessionKey:""};let s=(()=>{try{let n=typeof window<"u"&&window.Pinia?.useSessionsStore?.(),r=n?.activeSessionKey?n.sessions?.[n.activeSessionKey]:null;if(r?.id===t&&r.agentId)return r.agentId}catch{}return typeof e?.resolveYeaftSessionAgentId=="function"?e.resolveYeaftSessionAgentId(t):e?.currentAgent||null})();return{agentId:s,sessionId:t,sessionKey:he(s,t)}}function Ac(e,{agentId:t,sessionId:s,mode:n="recent",preserveLoaded:r=!1,latestSeq:i=null}={}){if(!t||!s)return null;let o=he(t,s),a=nn(e,o)||{},l=Number(a.generation||0)+1,c=`yeaft_history_${l}_${crypto.randomUUID()}`,d={...a,loaded:!!a.loaded,loading:!0,error:null,requestId:c,generation:l,mode:n,requestedAt:Date.now(),latestSeq:Number.isFinite(i)?i:a.latestSeq??null};return delete d.completionSeen,r||(d.syncingAfterSeq=null,a.loaded||(d.hasMore=!1,d.oldestSeq=null,d.serverOldestFetchedSeq=null,d.serverHasMore=!1,d.gapQueue=[],d.requestedBeforeSeqs=[],d.count=0)),e.yeaftSessionHistoryState={...e.yeaftSessionHistoryState||{},[o]:d},ks(e),{sessionKey:o,requestId:c,generation:l,state:d}}function Xo(e,t={}){let s=t.sessionId??t.groupId??null;if(!s)return!1;let n=t.agentId||e?.yeaftSessionAgentById?.[s]||null,r=he(n,s),i=nn(e,r),o=Qo(t.requestId);if(!i)return o===null;let a=Qo(i.requestId);return o?o===a:a===null}function xc(e,t={},s={},n="chunk"){if(!Xo(e,t))return null;let r=t.sessionId??t.groupId??null,i=t.agentId||e?.yeaftSessionAgentById?.[r]||null,o=he(i,r),a=nn(e,o)||{},l=Qo(t.requestId),c=l!==null&&n==="completion",d={...a,...c?{}:s,...c?{completionSeen:!0}:{},error:null};return c?(d.loading=!0,d.requestId=l):(d.loading=!1,d.requestId=null,d.completedAt=Date.now(),delete d.completionSeen),e.yeaftSessionHistoryState={...e.yeaftSessionHistoryState||{},[o]:d},ks(e),d}function Un(e,{agentId:t,sessionId:s,requestId:n,error:r="history_load_failed"}={}){if(!t||!s||!n)return!1;let i=he(t,s),o=nn(e,i);return!o||o.requestId!==n||!o.loading?!1:(e.yeaftSessionHistoryState={...e.yeaftSessionHistoryState||{},[i]:{...o,loading:!1,error:r,requestId:null,completedAt:Date.now()}},ks(e),!0)}function ks(e){let{sessionKey:t}=Ot(e),s=t?nn(e,t):null;return e.yeaftLoadingMoreHistory=!!s?.loading,e.yeaftHistoryLoadError=s?.error||null,e.yeaftHasMoreHistory=!!s?.hasMore,e.yeaftOldestLoadedSeq=Number.isFinite(s?.serverOldestFetchedSeq)?s.serverOldestFetchedSeq:Number.isFinite(s?.oldestSeq)?s.oldestSeq:null,s}function Zo(e){let{sessionKey:t}=Ot(e);return t?nn(e,t):null}var Cc,ni=N(()=>{sn();Cc=15e3});function ri(e){return e?.sessionId??e?.groupId??null}function Jo(e){for(let t of[e?.persistedMessageId,e?.messageId,e?.id]){if(typeof t!="string")continue;let s=t.match(/^(m\d+)/);if(s)return s[1]}return null}function kt(e){return e?.isStreaming||e?.status==="pending"?!1:Number.isFinite(e?.seq)||!!Jo(e)||e?.isHistory===!0&&!e?.clientMessageId}function ea(e){if(Number.isFinite(e?.seq))return Number(e.seq);let s=Jo(e)?.match(/^m(\d+)$/);if(s)return Number(s[1]);let n=typeof e?.id=="string"?e.id.match(/^(\d+)/):null;return n?Number(n[1]):null}function ta(e){try{return new TextEncoder().encode(JSON.stringify(e)).length}catch{return 0}}function _h(e){return e?e.isStreaming||e.status==="pending"||e.type==="tool-use"&&(e.askPending||!e.hasResult&&(e.toolName==="AskUser"||e.toolName==="AskUserQuestion"))?!0:e.type!=="user"||!e.clientMessageId?!1:!e.dbMessageId&&!Jo(e):!1}function Eh(e){let t=[],s=null;for(let n of e)(n?.type==="user"||!s)&&(s={rows:[],bytes:0,protected:!1},t.push(s)),s.rows.push(n),s.bytes+=ta(n),_h(n)&&(s.protected=!0);return t}function Mc(e,{conversationId:t,agentId:s=null,sessionId:n=null,limits:r=Tc}={}){let i=e?.messagesMap?.[t];if(!Array.isArray(i)||i.length===0||!s||!n)return{evictedRows:0,keptRows:0};let o=h=>ri(h)===n,a=i.filter(o),l=Eh(a);if(l.length===0)return{evictedRows:0,keptRows:0};let c=new Set(l.filter(h=>h.protected)),d=l.filter(h=>c.has(h)).reduce((h,y)=>h+y.rows.length,0),u=l.filter(h=>c.has(h)).reduce((h,y)=>h+y.bytes,0),f=!1;for(let h=l.length-1;h>=0;h-=1){let y=l[h];if(c.has(y))continue;let b=d+y.rows.length>r.maxRowsPerSession||u+y.bytes>r.maxBytesPerSession,M=d<r.recentRowsFloor;f&&b&&!M||(c.add(y),f=!0,d+=y.rows.length,u+=y.bytes)}let p=new Set(l.filter(h=>c.has(h)).flatMap(h=>h.rows)),g=a.filter(h=>!p.has(h));if(g.length===0)return{evictedRows:0,keptRows:p.size,keptBytes:u};e.messagesMap[t]=i.filter(h=>!o(h)||p.has(h));let m=he(s,n),v=e.yeaftHistoryCacheState?.[m]||null,k=Pc(a.filter(h=>p.has(h))),I=JSON.stringify(v?.ranges||[])===JSON.stringify(k.ranges)?Number(v?.rangeEpoch)||0:(Number(v?.rangeEpoch)||0)+1;if(e.yeaftHistoryCacheState={...e.yeaftHistoryCacheState||{},[m]:{...v||{},agentId:s,sessionId:n,conversationId:t,lastAccessed:Date.now(),rangeEpoch:I,...k}},g.some(kt)){let h=k.ranges[0]?.startSeq??null,y=e.yeaftSessionHistoryState?.[m]||{};e.yeaftSessionHistoryState={...e.yeaftSessionHistoryState||{},[m]:{...y,serverOldestFetchedSeq:h,oldestSeq:h,serverHasMore:h!==null,hasMore:h!==null,gapTraversalInitialized:!1,gapQueue:[],requestedBeforeSeqs:[],completedHistoryWorkKeys:[],pendingPageKind:null,pendingPageBeforeSeq:null,pendingGapStopAtSeq:null,pendingCacheEpoch:null,pendingHistoryWorkKey:null,paginationError:null,count:k.rowCount}};let b=Ot(e);b.agentId===s&&b.sessionId===n&&ks(e)}return{evictedRows:g.length,keptRows:p.size,keptBytes:u}}function Kn(e){if(e?.historyEntryId)return`entry:${e.historyEntryId}`;let t=ea(e);return Number.isFinite(t)?`seq:${t}`:e?.stableKey||e?.uiKey||e?.id||e?.messageId||"legacy"}function Dh(e){let t=new Map;for(let s of e){if(!kt(s))continue;let n=Kn(s),r=t.get(n)||{key:n,rows:[],seq:ea(s),bytes:0,touchedAt:0};r.rows.push(s),r.bytes+=ta(s),r.touchedAt=Math.max(r.touchedAt,Number(s?._historyCacheTouchedAt)||0),t.set(n,r)}return Array.from(t.values())}function Lh(e,t,s=new Set){let n=e.slice().sort((u,f)=>(f.seq||-1)-(u.seq||-1)),r=new Set,i=0,o=0;for(let u of e)s.has(u.key)&&(r.add(u.key),i+=u.rows.length,o+=u.bytes);for(let u of n){if(r.has(u.key))continue;if(i>=t.recentRowsFloor)break;let f=i+u.rows.length,p=o+u.bytes;if(r.size>0&&(f>t.maxRowsPerSession||p>t.maxBytesPerSession))break;r.add(u.key),i=f,o=p}let a=e.slice().sort((u,f)=>f.touchedAt-u.touchedAt||(f.seq||-1)-(u.seq||-1)),l=new Set(r),c=e.filter(u=>r.has(u.key)).reduce((u,f)=>u+f.rows.length,0),d=e.filter(u=>r.has(u.key)).reduce((u,f)=>u+f.bytes,0);for(let u of a){if(l.has(u.key))continue;let f=c+u.rows.length,p=d+u.bytes;l.size>0&&(f>t.maxRowsPerSession||p>t.maxBytesPerSession)||(l.add(u.key),c=f,d=p)}return l}function $h(e){let t=Array.from(new Set(e.map(ea).filter(Number.isFinite))).sort((n,r)=>n-r),s=[];for(let n of t){let r=s.at(-1);r&&n<=r.endSeq+1?r.endSeq=n:s.push({startSeq:n,endSeq:n})}return s}function Pc(e){let t=e.filter(kt);return{rowCount:t.length,byteCount:t.reduce((s,n)=>s+ta(n),0),ranges:$h(t)}}function Vh(e,t,s){let n=new Set((t||[]).map(r=>r?.stableKey).filter(Boolean));if(n.size!==0)for(let r of e)r?.stableKey&&n.has(r.stableKey)&&(r._historyCacheTouchedAt=s)}function Hh(e,{conversationId:t,agentId:s,sessionId:n,incomingRows:r,now:i,limits:o}){let a=e.messagesMap?.[t]||[],l=a.filter(I=>ri(I)===n);Vh(l,r,i);let c=new Set((r||[]).filter(I=>I?.historyEntryId).map(Kn)),d=Dh(l),u=Lh(d,o,c),f=l.filter(I=>!kt(I)||u.has(Kn(I))),p=new Set(f);e.messagesMap[t]=a.filter(I=>ri(I)!==n||p.has(I));let g=Pc(f),m=he(s,n),v=e.yeaftHistoryCacheState?.[m]||null,w=JSON.stringify(v?.ranges||[])===JSON.stringify(g.ranges)?Number(v?.rangeEpoch)||0:(Number(v?.rangeEpoch)||0)+1;e.yeaftHistoryCacheState={...e.yeaftHistoryCacheState||{},[m]:{agentId:s,sessionId:n,conversationId:t,lastAccessed:i,rangeEpoch:w,...g}}}function Oh(e,t){let s=e.messagesMap?.[t.conversationId]||[];e.messagesMap[t.conversationId]=s.filter(n=>ri(n)!==t.sessionId||!kt(n))}function Fh(e,t,s){let n={...e.yeaftHistoryCacheState||{}},r=Object.entries(n).filter(([,a])=>a?.rowCount>0),i=()=>Object.values(n).reduce((a,l)=>({rows:a.rows+(Number(l?.rowCount)||0),bytes:a.bytes+(Number(l?.byteCount)||0),sessions:a.sessions+((Number(l?.rowCount)||0)>0?1:0)}),{rows:0,bytes:0,sessions:0}),o=r.filter(([a])=>a!==t).sort((a,l)=>(Number(a[1]?.lastAccessed)||0)-(Number(l[1]?.lastAccessed)||0));for(let[a,l]of o){let c=i();if(c.sessions<=s.maxSessions&&c.rows<=s.maxRowsTotal&&c.bytes<=s.maxBytesTotal)break;Oh(e,l),n[a]={...l,rowCount:0,byteCount:0,ranges:[]}}e.yeaftHistoryCacheState=n}function Rc(e,t,s,n=Date.now()){if(!t||!s)return;let r=he(t,s),i=e.yeaftHistoryCacheState?.[r];i&&(e.yeaftHistoryCacheState={...e.yeaftHistoryCacheState||{},[r]:{...i,lastAccessed:n}})}function zn(e,{conversationId:t,agentId:s,sessionId:n,incomingRows:r=[],activeAgentId:i=null,activeSessionId:o=null,now:a=Date.now(),limits:l=Tc}={}){if(!e||!t||!s||!n)return;Hh(e,{conversationId:t,agentId:s,sessionId:n,incomingRows:r,now:a,limits:l});let c=i&&o?he(i,o):null;Fh(e,c,l)}var Tc,ii=N(()=>{sn();ni();Tc=Object.freeze({maxSessions:8,maxRowsPerSession:600,maxBytesPerSession:4*1024*1024,maxRowsTotal:2400,maxBytesTotal:16*1024*1024,recentRowsFloor:100})});function Cs(e){return String(e||"").trim()||null}function na(e,t,s){return[e,t,s].map(n=>String(n||"")).join("")}function Ec(){return globalThis.indexedDB||null}function qh(){let e=Ec();return!!e&&typeof e.open=="function"}function Wh(){return typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`}function As(e){return new Promise((t,s)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>s(e.error||new Error("IndexedDB request failed"))})}function Ft(e){return new Promise((t,s)=>{e.oncomplete=()=>t(),e.onerror=()=>s(e.error||new Error("IndexedDB transaction failed")),e.onabort=()=>s(e.error||new Error("IndexedDB transaction aborted"))})}async function Zn(){return qh()?Yn||(Yn=new Promise((e,t)=>{let s=Ec().open(Bh,Nh);s.onupgradeneeded=()=>{let n=s.result;n.objectStoreNames.contains(tt)?s.transaction.objectStore(tt).clear():n.createObjectStore(tt,{keyPath:"key"}).createIndex("ownerAccess",["ownerId","lastAccessed"]),n.objectStoreNames.contains(ct)||n.createObjectStore(ct,{keyPath:"key"})},s.onsuccess=()=>{s.result.onversionchange=()=>s.result.close(),e(s.result)},s.onerror=()=>t(s.error||new Error("Failed to open history cache")),s.onblocked=()=>t(new Error("History cache upgrade is blocked"))}).catch(e=>{throw Yn=null,e}),Yn):null}function rs(e){return!!e&&!!Qn&&e.ownerId===Qn&&e===Xn}function oi(e,t){return!!e&&!!t&&e.key===Is&&e.ownerId===t.ownerId&&e.generation===t.generation}function jh(e){try{return JSON.parse(JSON.stringify(e))}catch{return null}}function Uh(e){try{return new TextEncoder().encode(JSON.stringify(e)).length}catch{return 0}}function Kh(e){let t=e?.stableKey||e?.uiKey;if(t)return String(t);let s=Kn(e),n=[e?.type||"",e?.toolName||"",e?.toolCallId||"",e?.speakerVpId||e?.vpId||"",e?.id||e?.messageId||""].join(":");return`${s}:projection:${n}`}function zh(e,t){let s=[],n=null;for(let[d,u]of(Array.isArray(e)?e:[]).entries()){let f=jh(u);if(!kt(f)||(f.type==="user"&&(n={firstIndex:d,entries:[],rowsByKey:new Map},s.push(n)),!n))continue;let p=Kh(f),g=n.rowsByKey.get(p);g?n.entries[g.entryIndex]={row:f,index:d}:(n.rowsByKey.set(p,{entryIndex:n.entries.length}),n.entries.push({row:f,index:d}))}let r=s.slice().reverse().map(d=>({...d,rowCount:d.entries.length,bytes:d.entries.reduce((u,f)=>u+Uh(f.row),0)})),i=[],o=0,a=0,l=Number.isFinite(t.maxTurnsPerSession)?Math.max(0,Math.floor(t.maxTurnsPerSession)):sa.maxTurnsPerSession;for(let d of r){let u=i.length>=l,f=o+d.rowCount>t.maxRowsPerSession||a+d.bytes>t.maxBytesPerSession;if(u||i.length>0&&f)break;i.push(d),o+=d.rowCount,a+=d.bytes}return{rows:i.flatMap(d=>d.entries).sort((d,u)=>d.index-u.index).map(d=>d.row),bytes:a,turns:i.length}}async function Yh(e){let t=await Zn(),s=Wh();if(!t)return e.generation=s,!0;let n=t.transaction([ct,tt],"readwrite"),r=n.objectStore(ct),i=n.objectStore(tt),o=await As(r.get(Is)),a=!Gn&&!!e.ownerId&&o?.ownerId===e.ownerId&&typeof o?.generation=="string",l=a?o.generation:s;return a||i.clear(),r.put({key:Is,ownerId:e.ownerId,generation:l}),await Ft(n),e.generation=l,!0}function Dc(e){return Ss=Ss.catch(()=>{if(!Gn)throw new Error("Browser history owner cleanup failed")}).then(()=>Yh(e)).then(s=>(Gn=!1,s),s=>{throw Gn=!0,s}),Ss.catch(()=>{}),Ss}async function Gh(e,t){let s=await Zn();if(!s)return;let n=s.transaction([ct,tt],"readwrite"),r=await As(n.objectStore(ct).get(Is)),i=n.objectStore(tt);if(!oi(r,e)){await Ft(n);return}let o=(await As(i.getAll())).filter(l=>l?.ownerId===e.ownerId).sort((l,c)=>(Number(c.lastAccessed)||0)-(Number(l.lastAccessed)||0)),a=Date.now()-t.maxAgeMs;o.forEach((l,c)=>{(c>=t.maxSessionsPerOwner||(Number(l.lastAccessed)||0)<a)&&i.delete(l.key)}),await Ft(n)}function Lc(e){let t=Cs(e);return t?((Qn!==t||Gn)&&(Qn=t,Xn={ownerId:t,generation:null},Dc(Xn)),is()):(ra(),null)}function ra(){return Qn=null,Xn=null,Dc({ownerId:null,generation:null})}function is(){return Xn}async function $c({fence:e,agentId:t,sessionId:s,limits:n=sa}={}){let r=Cs(t),i=Cs(s);if(!rs(e)||!r||!i)return null;try{await Ss;let o=await Zn();if(!o||!rs(e))return null;let a=na(e.ownerId,r,i),l=o.transaction([ct,tt],"readwrite"),c=await As(l.objectStore(ct).get(Is)),d=l.objectStore(tt);if(!oi(c,e))return await Ft(l),null;let u=await As(d.get(a)),f=Date.now()-n.maxAgeMs,p=!!u&&(Number(u.lastAccessed)||0)<f;return p&&d.delete(a),await Ft(l),p||!rs(e)||u?.schemaVersion!==_c||u.ownerId!==e.ownerId||u.agentId!==r||u.sessionId!==i||!Array.isArray(u.rows)?null:u}catch{return null}}async function Vc({fence:e,agentId:t,sessionId:s,rows:n,historyState:r=null,limits:i=sa}={}){let o=Cs(t),a=Cs(s);if(!rs(e)||!o||!a)return!1;let l=zh(n,i);if(l.rows.length===0)return!1;try{await Ss;let c=await Zn();if(!c||!rs(e))return!1;let d=Date.now(),u=c.transaction([ct,tt],"readwrite"),f=await As(u.objectStore(ct).get(Is));return oi(f,e)?(u.objectStore(tt).put({key:na(e.ownerId,o,a),schemaVersion:_c,ownerId:e.ownerId,agentId:o,sessionId:a,rows:l.rows,turnCount:l.turns,rowCount:l.rows.length,byteCount:l.bytes,latestSeq:Number.isFinite(r?.latestSeq)?r.latestSeq:null,streamId:typeof r?.streamId=="string"?r.streamId:null,revision:Number.isFinite(r?.revision)?r.revision:null,oldestSeq:Number.isFinite(r?.oldestSeq)?r.oldestSeq:null,hasMore:!!r?.hasMore,lastAccessed:d}),await Ft(u),rs(e)?(Gh(e,i).catch(()=>{}),!0):!1):(await Ft(u),!1)}catch{return!1}}async function ia({fence:e,agentId:t,sessionId:s}={}){let n=Cs(t),r=Cs(s);if(!rs(e)||!n||!r)return!1;await Ss;let i=await Zn();if(!i)return!0;if(!rs(e))return!1;let o=i.transaction([ct,tt],"readwrite"),a=await As(o.objectStore(ct).get(Is));return oi(a,e)?(o.objectStore(tt).delete(na(e.ownerId,n,r)),await Ft(o),!0):(await Ft(o),!0)}var Bh,Nh,tt,ct,Is,_c,sa,Qn,Xn,Yn,Ss,Gn,oa=N(()=>{ii();Bh="yeaft-history-cache",Nh=4,tt="sessions",ct="metadata",Is="active-owner",_c=3,sa=Object.freeze({maxSessionsPerOwner:12,maxTurnsPerSession:500,maxRowsPerSession:600,maxBytesPerSession:4*1024*1024,maxAgeMs:720*60*60*1e3}),Qn=null,Xn=null,Yn=null,Ss=Promise.resolve(!0),Gn=!1});function Xh(){try{globalThis.Pinia?.useChatStore?.()?.clearYeaftHistoryMemory?.()}catch{}}function Hc(e){return String(e||"").trim()||null}function Oc(e,t){let s=Hc(is()?.ownerId),n=Hc(e);return s!==n&&Xh(),t(n)}function At(e){return Oc(e,Lc)}function Zh(){return Oc(null,()=>ra())}var Qh,Jh,De,St=N(()=>{ei();Go();oa();({defineStore:Qh}=Pinia);Jh=1800*1e3,De=Qh("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,userId: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.userId="skip-auth",wt(this.userId),At(this.userId),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?bt(n.sessionKey):null,this.role=n.role||"pro",this.userId=n.userId||null,wt(this.userId),At(this.userId),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 r=await(await fetch("/api/auth/aad",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({idToken:s.idToken})})).json();return r.success?(this.token=r.token,this.sessionKey=r.sessionKey?bt(r.sessionKey):null,this.role=r.role||"pro",this.userId=r.userId||null,wt(this.userId),At(this.userId),this.authGeneration+=1,this.isAuthenticated=!0,this.loginStep="authenticated",localStorage.setItem("authToken",r.token),this.startSessionRefresh(),!0):(this.error=r.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?bt(s.sessionKey):null,this.role=s.role||"pro",this.userId=s.userId||null,wt(this.userId),At(this.userId),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?bt(s.sessionKey):null,this.role=s.role||"pro",this.userId=s.userId||null,wt(this.userId),At(this.userId),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?bt(s.sessionKey):null,this.role=s.role||"pro",this.userId=s.userId||null,wt(this.userId),At(this.userId),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 i=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 i.success?!0:(this.error=i.error||"Registration failed",!1)}catch(r){return this.error=r.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(),r=`/api/auth/sso/${encodeURIComponent(e)}/start-qr${n?"?"+n:""}`,i=await fetch(r),o=await i.json();return!i.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?bt(n.sessionKey):null,this.role=n.role||"pro",this.userId=n.userId||null,wt(this.userId),At(this.userId),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"),r=s.get("sessionKey"),i=s.get("role"),o=s.get("userId");if(!n)return!1;this.token=n,this.sessionKey=r?bt(r):null,this.role=i||"pro",this.userId=o||null,wt(this.userId),At(this.userId),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 r=await n.json().catch(()=>({}));if(t!==this.authGeneration||this.token!==e)return this.isAuthenticated;let i=n.headers?.get?.("X-New-Token"),o=localStorage.getItem("authToken");return i&&this.token===e&&(!o||o===e)&&(this.token=i,localStorage.setItem("authToken",i)),r?.role&&(this.role=r.role),this.userId=r?.userId||null,wt(this.userId),At(this.userId),!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,Jh),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{}await this.clearStoredSession()},clearStoredSession(e=null){let t=this.reset();return localStorage.removeItem("authToken"),e&&(this.error=e),t},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,r=void 0){if(!e||e.status!==401||!n||s!==this.authGeneration)return!1;let i=this.token||localStorage.getItem("authToken")||null;return t!==i?!1:(this.handleAuthFailure(r,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).catch(r=>{}),!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 r=await n.json();if(t!==this.authGeneration)return this.isAuthenticated;let i=n.headers?.get?.("X-New-Token"),o=this.getActiveToken();if(o!==e)return this.isAuthenticated;let a=i&&(!o||o===e)?i:o||e;return this.token=a,a&&a!==e&&localStorage.setItem("authToken",a),this.role=r?.role||"pro",this.userId=r?.userId||null,wt(this.userId),At(this.userId),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=bt(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 r=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 r.success?!0:(this.error=r.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"}:(await this.clearStoredSession(),{success:!0})}catch(s){return{success:!1,error:s.message||"Network error"}}},reset(){zo();let e=Zh();return this.authGeneration+=1,this.stopSessionRefresh(),this.isAuthenticated=!1,this.token=null,this.sessionKey=null,this.userId=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,e}}})});function Le(e,t){let s=Bt?.value||"zh-CN",r=(rn[s]||rn["zh-CN"]||{})[e];if(r===void 0&&s!=="zh-CN"&&(r=(rn["zh-CN"]||{})[e]),r===void 0)return e;if(t)for(let[i,o]of Object.entries(t))r=r.replace(new RegExp(`\\{${i}\\}`,"g"),o);return r}function ev(){return Bt?.value||"zh-CN"}function Jn(e){rn[e]&&(Bt&&(Bt.value=e),localStorage.setItem("locale",e),document.documentElement.setAttribute("lang",e))}function tv(){let e=localStorage.getItem("locale");return e&&rn[e]?e:(navigator.language||navigator.userLanguage||"").startsWith("en")?"en":"zh-CN"}function Fc(e,t){return rn=t,Bt=Vue.ref(tv()),document.documentElement.setAttribute("lang",Bt.value),e.config.globalProperties.$t=Le,e.config.globalProperties.$locale=Bt,e.provide("t",Le),e.provide("locale",Bt),{t:Le,setLocale:Jn,getLocale:ev,locale:Bt}}var Bt,rn,Nt=N(()=>{Bt=null,rn={}});function ai(e){if(e==null||e==="")return"claude-code";if(sv.has(e))return e;throw new Error(`Unknown Chat runtime provider: ${e}`)}function os(e){if(typeof e!="string"||!e)throw new Error("Chat catalog key requires conversationId");return`chat:${e}`}function li(e,t){if(typeof e!="string"||!e||typeof t!="string"||!t)throw new Error("Yeaft catalog key requires agentId and sessionId");return`yeaft:${e}:${t}`}function er(e,t,s={}){let n=e.sessionCatalog.map(i=>({...i})),r=Array.isArray(e.hiddenSessionCatalog)?e.hiddenSessionCatalog.map(i=>({...i})):null;return e.sessionCatalogMutationRequests[t]={previousCatalog:n,previousHiddenCatalog:r,...s},n}function Bc(e,t){let s=t?.requestId?e.sessionCatalogMutationRequests[t.requestId]:null;return s?(delete e.sessionCatalogMutationRequests[t.requestId],t.ok!==!0&&(e.sessionCatalog=s.previousCatalog,Array.isArray(s.previousHiddenCatalog)&&(e.hiddenSessionCatalog=s.previousHiddenCatalog)),!0):!1}function Nc(e,t,s="recent",n=null){let r=os(t),i=e.chatHistoryRequests[r]||{},o=Number(i.generation||0)+1,a=`chat_history_${o}_${crypto.randomUUID()}`;return e.chatHistoryRequests[r]={requestId:a,catalogKey:r,generation:o,mode:s,cursor:n,connectionGeneration:Number(e.chatHistoryConnectionGeneration||0),loading:!0,cancelled:!1,error:null},a}function aa(e,t,s,n){let r=e.chatHistoryRequests[t];return r?.requestId!==s?!1:(e.chatHistoryRequests[t]={...r,loading:!1,cancelled:!0,error:n},!0)}var sv,la=N(()=>{sv=new Set(["claude-code","copilot"])});function on(e,t,s=""){tr&&(clearTimeout(tr),tr=null),e.sessionLoading=t,e.sessionLoadingText=s,t&&(tr=setTimeout(()=>{e.sessionLoading&&(e.sessionLoading=!1,e.sessionLoadingText=""),tr=null},nv))}function xt(e){on(e,!1)}function qc(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(r=>r.id===s&&r.online);n&&(e.pendingRecovery={agentId:s,agentName:n.name,sessionId:t.sessionId,workDir:t.workDir,provider:ai(t.provider),catalogKey:t.catalogKey||null},e.recoveryDismissed=!1)}}function Wc(e){if(!e.pendingRecovery)return;let{agentId:t,sessionId:s,workDir:n,provider:r}=e.pendingRecovery;e.selectAgent(t),setTimeout(()=>{e.resumeConversation(s,n,t,{provider:ai(r)}),e.pendingRecovery=null,e.recoveryDismissed=!1},500)}function jc(e){e.recoveryDismissed=!0,e.pendingRecovery=null}function Uc(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]=[],on(e,!0,Le("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.requestChatHistory?.(t,{mode:"recent",turns:5}))),e.sendWsMessage({type:"select_conversation",conversationId:t}))}function Kc(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(i=>i.id)),r=s.filter(i=>i&&typeof i.id=="string").map(i=>({id:i.id,conversationId:i.conversationId&&n.has(i.conversationId)?i.conversationId:null,activeRightPanel:i.activeRightPanel||null}));if(r.length<2){localStorage.removeItem("panels");return}e.panels=r,e.activePanelId=r[0]?.id||null;for(let i of r)i.conversationId&&(e.activeConversations.includes(i.conversationId)||e.activeConversations.push(i.conversationId),e.messagesMap[i.conversationId]||(e.messagesMap[i.conversationId]=[]),e.messagesMap[i.conversationId].length||e.requestChatHistory?.(i.conversationId,{mode:"recent",turns:5}))}function xs(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);if(t?.claudeSessionId&&t?.workDir){let s=ai(t.provider),n={sessionId:t.claudeSessionId,workDir:t.workDir,agentId:t.agentId||e.currentAgent,provider:s,catalogKey:os(t.id),version:2};localStorage.setItem("lastUsedSession",JSON.stringify(n)),localStorage.setItem("lastViewedSessionRef",JSON.stringify(n)),e.lastUsedSession=n}}e.lastUsedAgent=e.currentAgent,e.panels.length>0?localStorage.setItem("panels",JSON.stringify(e.panels)):localStorage.removeItem("panels")}}function zc(e){return e.lastUsedSession}function Yc(e){localStorage.removeItem("lastUsedAgent"),localStorage.removeItem("lastUsedSession"),localStorage.removeItem("lastViewedSessionRef"),localStorage.removeItem("lastViewedConversation"),localStorage.removeItem("panels"),localStorage.removeItem("splitPanesSaved"),e.lastUsedAgent=null,e.lastUsedSession=null,e.lastViewedConversation=null}function Gc(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 Qc(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 Xc(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(r=>{e._foldersResolve&&e._foldersResolve(),e._foldersResolve=r,e.sendWsMessage({type:"list_folders",agentId:t,provider:s||"claude-code",requestId:n}),setTimeout(()=>{e._foldersResolve===r&&(e._foldersResolve(),e._foldersResolve=null,e.foldersLoading=!1)},1e4)})}function Zc(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(r=>{e._modelsResolve&&e._modelsResolve([]),e._modelsTimeout&&clearTimeout(e._modelsTimeout),e._modelsResolve=r,e.sendWsMessage({type:"list_models",agentId:t,provider:s||"claude-code",requestId:n}),e._modelsTimeout=setTimeout(()=>{e._modelsResolve===r&&(e._modelsResolve([]),e._modelsResolve=null,e.providerModelsLoading=!1),e._modelsTimeout=null},1e4)})}function Jc(e,t,s,n){if(!t){e.historySessionsLoading=!1;return}if(!s){e.historySessions=[],e.historySessionsLoading=!1;return}let r=Date.now().toString();e._historySessionsRequestId=r,e.historySessionsLoading=!0,e.historySessions=[],e.sendWsMessage({type:"list_history_sessions",agentId:t,workDir:s,provider:n||"claude-code",requestId:r})}async function ed(e,t=20){if(De().isAuthenticated){e.globalSessionsLoading=!0;try{let n=await fetch(`/api/sessions?limit=${t}`);if(n.ok){let r=await n.json();e.globalSessions=r.sessions||[]}}catch{}finally{e.globalSessionsLoading=!1}}}async function td(e,t){if(!De().isAuthenticated)return!1;try{if((await fetch(`/api/sessions/${t}`,{method:"DELETE"})).ok)return e.globalSessions=e.globalSessions.filter(r=>r.id!==t),!0}catch{}return!1}function ca(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 sd(e,t){let s=ca(e,t);return s&&s.online}var nv,tr,Ts=N(()=>{St();Nt();la();nv=3e4,tr=null});function nd(e){return e?.code===1008&&String(e.reason||"").toLowerCase().includes("authentication")}function rd(e){let t=sr;sr=[];for(let{resolve:s,reject:n,timer:r}of t)clearTimeout(r),e?s():n(new Error("WebSocket reconnect failed"))}function id(e,t){if(!e.ws||e.ws.readyState!==WebSocket.OPEN)return!1;if(e.currentView==="yeaft"&&iv.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=hc(t,e.sessionKey);e.ws.send(JSON.stringify(s))}else e.ws.send(JSON.stringify(t));return!0}catch{return!1}}function nr(e,t=1e4){return e.ws&&e.ws.readyState===WebSocket.OPEN?Promise.resolve():new Promise((s,n)=>{let r=setTimeout(()=>{sr=sr.filter(i=>i.resolve!==s),n(new Error("WebSocket reconnect timeout"))},t);sr.push({resolve:s,reject:n,timer:r}),(!e.ws||e.ws.readyState!==WebSocket.CONNECTING)&&(e.reconnectAttempts=0,e.connect())})}function od(e,t){try{let s=JSON.parse(t);return e.sessionKey&&yc(s)?vc(s,e.sessionKey):s}catch{return null}}function ad(e){let t=De(),s=location.protocol==="https:"?"wss:":"ws:";e.reconnectTimer&&(clearTimeout(e.reconnectTimer),e.reconnectTimer=null);let n=t.getActiveToken?.()||t.token||null,r=t.authGeneration;if(e.ws&&e.ws.readyState===WebSocket.CONNECTING&&e._wsAuthToken===n&&e._wsAuthGeneration===r)return;clearTimeout(e._legacyYeaftSessionHydrateTimer),e._legacyYeaftSessionHydrateTimer=null,e._hasHandledAgentList=!1,e._hasHandledYeaftSessionHydrate=!1,e.yeaftSessionInventoryCompleteSupported=null,e.yeaftSessionHydrateRequestId=null,e.yeaftSessionHydrateSlices=[],e.yeaftSessionHydrateError=null,e._yeaftSessionInventorySocketQuarantined=!1,e.pendingAgentSelection=null,e.agentSwitching=!1,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.serverEncryptionRequired=!0,e.chatHistoryRequestIdSupported=null,e.chatHistoryConnectionGeneration=Number(e.chatHistoryConnectionGeneration||0)+1;for(let[l,c]of Object.entries(e.projectMutationRequests||{}))c?.resolve?.({ok:!1,requestId:l,error:{code:"connection_changed"}});e.projectMutationRequests={},e.sessionProjects=[];for(let[l,c]of Object.entries(e.chatHistoryRequests||{}))c?.loading&&(e.chatHistoryRequests[l]={...c,loading:!1,cancelled:!0,error:"connection_changed"});let i=Object.values(e.sessionCatalogMutationRequests||{});i.length>0&&(e.sessionCatalog=i[0].previousCatalog,Array.isArray(i[0].previousHiddenCatalog)&&(e.hiddenSessionCatalog=i[0].previousHiddenCatalog),e.sessionCatalogMutationRequests={}),e.sessionCatalogLoaded=!1,e.sessionCatalog=[],e.hiddenSessionCatalog=[],e.activeCatalogKey=null,e._wsAuthToken=n,e._wsAuthGeneration=r;let o=`${s}//${location.host}?type=web`;n&&(o+=`&token=${encodeURIComponent(n)}`);let a=new WebSocket(o);e.ws=a,a.onopen=()=>{if(a===e.ws){e.connectionState="connected",e.reconnectAttempts=0,e.startHeartbeat();try{a.send(JSON.stringify({type:"client_hello",plaintextOk:!0}))}catch{}rd(!0)}},a.onmessage=l=>{if(a!==e.ws)return;let c=e.parseWsMessage(l.data);c&&(c.type,e.handleMessage({...c,_wsAuthToken:n,_wsAuthGeneration:r}))},a.onclose=l=>{if(a!==e.ws){nd(l)&&t.handleAuthFailure?.(void 0,n,r);return}e.authenticated=!1,clearTimeout(e._legacyYeaftSessionHydrateTimer),e._legacyYeaftSessionHydrateTimer=null,e._hasHandledAgentList=!1,e._hasHandledYeaftSessionHydrate=!1,e.yeaftSessionInventoryCompleteSupported=null,e.yeaftSessionHydrateRequestId=null,e.yeaftSessionHydrateSlices=[],e.yeaftSessionHydrateError=null,e.pendingAgentSelection=null,e.agentSwitching=!1;let c=e.connectionState==="updating";if(e.connectionState=c?"updating":"disconnected",e.stopHeartbeat(),xt(e),nd(l)){t.handleAuthFailure?.(void 0,n,r),e.reconnectAttempts=0,rd(!1);return}if(e._yeaftReconnectCatchUpPending=!0,c){e.reconnectAttempts=0,e.reconnectTimer=setTimeout(()=>{e.connect()},2e3);return}e.scheduleReconnect()},e.ws.onerror=l=>{}}function ld(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 cd(e){e.reconnectAttempts=0,e.connect()}function dd(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 ud(e){e.heartbeatTimer&&(clearInterval(e.heartbeatTimer),e.heartbeatTimer=null)}function pd(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 sr,iv,da=N(()=>{St();ei();Ts();sr=[];iv=new Set(["sync_messages","refresh_conversation","select_conversation","cancel_execution","update_conversation_settings","ask_user_answer"])});function lv(e){return e?.type==="tool-use"}function ua(e){return e?.type==="tool-summary"}function pa(e){return lv(e)&&!av.has(e.toolName)}function md(e,t,s,n=s){let r=t==="history"&&(n?.dbMessageId||n?.id)||null;return{...r?{id:`tool_summary_${t}_${r}`,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 cv(e,t){return!ua(e)||!ua(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 dv(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 fd(e){return[e?.sessionId||"",e?.turnId||"",e?.speakerVpId||e?.vpId||""].join("")}function gd(e,t,s,n,r=n){if(!t)return;let i=md(t,s,n,r),o=e[e.length-1];cv(o,i)?dv(o,i):e.push(i)}function fa(e=[]){let t=[],s=0,n=null,r=null;for(let i of e){if(pa(i)&&i.isHistory){s+=1,n||(n=i),r=i;continue}gd(t,s,"history",n,r),s=0,n=null,r=null,t.push(i)}return gd(t,s,"history",n,r),t}function hd(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 p=e.length-1;p>=0;p-=1){let g=e[p];if(g?.type==="user"||g?.type==="system"||g?.type==="error")break;n=p}let r=e.slice(n),i=new Map;for(let p of r){if(!pa(p)||p.isHistory)continue;let g=fd(p);i.set(g,(i.get(g)||0)+1)}let o=new Map;for(let[p,g]of i)g>s&&o.set(p,g-s);if(o.size===0)return e;let a=new Map,l=new Map,c=new Set,d=[],u=(p,g,m)=>{a.set(p,(a.get(p)||0)+g),!l.has(p)&&m&&l.set(p,m)},f=(p,g)=>{if(c.has(p))return;let m=a.get(p)||0;m<=0||(d.push(md(m,"live",l.get(p)||g)),c.add(p))};for(let p of r){let g=fd(p);if(ua(p)&&p.source==="live"&&o.has(g)){u(g,Number(p.count)||0,p);continue}if(pa(p)&&!p.isHistory&&o.has(g)){let m=o.get(g)||0;if(m>0){o.set(g,m-1),u(g,1,p);continue}}f(g,p),d.push(p)}for(let p of a.keys())f(p,l.get(p));return e.splice(n,e.length-n,...d),e}var av,ga=N(()=>{av=new Set(["TodoWrite","AskUserQuestion"])});function ma(e,t){return t?t===e.yeaftConversationId?!0:Object.values(e.yeaftConversationIdsByAgent||{}).includes(t):!1}function rr(e,t,s){s&&(s.type!=="assistant"&&s.type!=="tool-use"||ma(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 pv(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 r=Number(s);if(Number.isFinite(r)&&r>0)return r}}return Date.now()}function ci(e){let t=e?.stableKey??e?.messageId??e?.dbMessageId??e?.id;return t==null||t===""?null:String(t)}function ha(e,t,s){if(!s||typeof s!="object")return null;if(typeof s.uiKey=="string"&&s.uiKey)return s.uiKey;let n=s.entryId||s.stableKey||s.atMessageId||s.messageId||s.dbMessageId||s.id||null;if(n!=null&&n!=="")return s.uiKey=String(n),s.uiKey;let r=`legacy:${t||"conversation"}:`,i=new Set((e?.messagesMap?.[t]||[]).map(a=>a?.uiKey).filter(a=>typeof a=="string"&&a)),o=Number(e?._messageUiKeySequence)||0;do o+=1;while(i.has(`${r}${o}`));return e&&(e._messageUiKeySequence=o),s.uiKey=`${r}${o}`,s.uiKey}function Ms(e,t,s){for(let n of Array.isArray(s)?s:[])ha(e,t,n);return s}function va(e,t){if(!e||!t)return e;let s=e.type==="user"&&typeof e.id=="string"&&e.id===e.clientMessageId;for(let[n,r]of Object.entries(t))if(r!=null){if(n==="isStreaming"){e.isStreaming&&r===!1&&(e.isStreaming=!1);continue}if(!(n==="uiKey"&&e.uiKey)){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]=r);continue}if(!(n==="turnId"&&s&&e.turnId===e.clientMessageId)){if(n==="content"&&typeof r=="string"){e.content||(e.content=r);continue}if(n==="responseKind"&&(r==="progress"||r==="result")){e.responseKind=r;continue}if(n==="attachments"&&Array.isArray(r)){(!Array.isArray(e.attachments)||e.attachments.length===0)&&(e.attachments=r);continue}(e[n]===void 0||e[n]===null||e[n]==="")&&(e[n]=r)}}}return e}function ui(e=[],t=[]){let s=[],n=new Map,r=new Map;for(let i of[...e,...t]){if(!i)continue;let o=ci(i),a=i.type==="user"&&i.clientMessageId?String(i.clientMessageId):null;if(o&&n.has(o)){va(n.get(o),i);continue}if(a&&r.has(a)){let l=r.get(a);va(l,i),o&&!n.has(o)&&n.set(o,l);continue}s.push(i),o&&n.set(o,i),a&&r.set(a,i)}return s}function vd(e,t,s){return!e||e!==t?!1:!s?.loaded&&!s?.loading}function yd(e,t){return!!t&&!!e?.loaded&&!e?.loading&&Number.isFinite(e?.latestSeq)}function bd({sessionState:e,hasCachedSessionRows:t,force:s=!1}={}){return e?.loading?!1:s?!e?.loaded:e?.loaded?!1:!t}function fv(e,t,s,n){let r=s?.id?String(s.id):null;if(!r)return!1;let o=(e.messagesMap[t]||[]).find(a=>a?.type==="assistant"&&ci(a)===r);return o?(o.id||(o.id=r),o.messageId||(o.messageId=r),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,rr(e,t,o),!0):!1}function di(e,t,s){if(!t)return;let n={...s};ha(e,t,n);let r={...n,id:s.dbMessageId||s.id||Date.now().toString()+Math.random().toString(36).substr(2,9),timestamp:pv(s)};if(ma(e,t)&&!r.sessionId&&(r.sessionId=e._currentYeaftSessionId||e.yeaftActiveSessionFilter||uv),ma(e,t)){let o=e._currentYeaftAgentId||Object.entries(e.yeaftConversationIdsByAgent||{}).find(([,c])=>c===t)?.[0]||e.currentAgent||null,a=typeof r.messageId=="string"&&/^m\d+$/.test(r.messageId)?r.messageId:typeof r.id=="string"&&/^m\d+$/.test(r.id)?r.id:null,l=typeof r.clientMessageId=="string"?r.clientMessageId:null;r.stableKey||(r.stableKey=a?jn(o,r.sessionId,a):ns(o,r.sessionId,l)),r.uiKey||(r.uiKey=r.stableKey||null),!r.vpId&&e._currentYeaftVpId&&(r.vpId=e._currentYeaftVpId),!r.turnId&&e._currentYeaftTurnId&&(r.turnId=e._currentYeaftTurnId),rr(e,t,r)}e.messagesMap[t]||(e.messagesMap[t]=[]),ha(e,t,r);let i=ci(s);if(i){let o=e.messagesMap[t].find(a=>ci(a)===i);if(o)return va(o,r),t===e.yeaftConversationId&&e.messagesMap[t].sort((a,l)=>a.timestamp-l.timestamp),o}return e.messagesMap[t].push(r),hd(e.messagesMap[t]),t===e.yeaftConversationId&&e.messagesMap[t].sort((o,a)=>o.timestamp-a.timestamp),r}function wd(e,t,s,n={}){if(!t||!s)return;e.messagesMap[t]||(e.messagesMap[t]=[]);let r=e.messagesMap[t];if(fv(e,t,n,s))return;let i=e._currentYeaftTurnId;if(i){for(let a=r.length-1;a>=0;a--)if(r[a].turnId===i&&r[a].type==="assistant"&&r[a].isStreaming){if(rr(e,t,r[a]),n.id&&!r[a].id&&(r[a].id=n.id),n.id&&!r[a].messageId&&(r[a].messageId=n.id),r[a].content.endsWith(s))return;r[a].content+=s;return}di(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=r[r.length-1];if(o&&o.type==="assistant"&&o.isStreaming){if(rr(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 di(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 kd(e,t,{completeLifecycle:s=!0}={}){if(!t)return;let n=e.messagesMap[t];if(!n||n.length===0)return;let r=e._currentYeaftTurnId||null;for(let i=n.length-1;i>=0;i--){let o=n[i];if(r&&o.turnId&&o.turnId!==r){if(o.type==="user")break;continue}if(o.isStreaming&&(o.isStreaming=!1,s&&o.status==="pending"&&(o.status="completed",o.turnEndAt=Date.now())),rr(e,t,o),o.type==="user")break}}function Sd(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 Id(e,t){let s=e.currentConversation;if(!s)return;e.messagesMap[s]||(e.messagesMap[s]=[]);let n=e.messagesMap[s],r=null;for(let i of t)if(i.type==="user"){let o=i.message?.content;if(o){let a=typeof o=="string"?o:Array.isArray(o)?o.map(l=>l.text||"").join(""):"";a&&(r=a,e.addMessage({type:"user",content:a,isHistory:!0}))}}else if(i.type==="assistant"){let o=i.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(r&&s&&!e.conversationTitles[s]){let i=r.trim().substring(0,100);e.conversationTitles[s]=i}}function Ps(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 Cd(e){return{id:e.id,dbMessageId:e.id,timestamp:e.created_at}}function Ad(e){return e?e.message_type==="tool_use"&&!gv.has(e.tool_name)?{...Cd(e),type:"tool-use",toolName:e.tool_name||"unknown",hasResult:!0,isHistory:!0,startTime:e.created_at||0}:ya(e):null}function ya(e){if(!e)return null;let t=Cd(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 r=JSON.parse(e.metadata);r.askRequestId&&(n.askRequestId=r.askRequestId,n.askQuestions=r.askQuestions,n.askAnswered=!!r.askAnswered,n.selectedAnswers=r.selectedAnswers||null,r.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 r=JSON.parse(n);if(Array.isArray(r))return r.filter(i=>i.type==="text"&&i.text).map(i=>i.text).join("")}catch{}return n};if(e.role==="user"){let n=null;if(e.metadata)try{let r=JSON.parse(e.metadata);r&&typeof r.clientMessageId=="string"&&(n=r.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),r=(()=>{if(!e.content||typeof e.content!="string"||!e.content.startsWith("["))return[];try{let i=JSON.parse(e.content);return Array.isArray(i)?i.filter(o=>o.type==="tool_use"&&o.name):[]}catch{return[]}})();if(!n&&r.length===0)return null;if(r.length>0){let i=[];n&&i.push({...t,type:"assistant",content:n});for(let o=0;o<r.length;o++){let a=r[o];i.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 i}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 uv,gv,ir=N(()=>{ga();sn();uv="grp_default";gv=new Set(["TodoWrite","AskUserQuestion"])});function Rs(e,t){return e._closedAt?.[t]?Date.now()-e._closedAt[t]<3e4:!1}function an(e,t){Ce(e,t),e._processingWatchdogs||(e._processingWatchdogs={});let s=()=>{if(!e.processingConversations[t])return;let r=e.conversations.find(o=>o.id===t);e.sendWsMessage({type:"ping_session",conversationId:t,agentId:r?.agentId});let i=setTimeout(()=>{e.processingConversations[t]&&(e.sessionHealth||(e.sessionHealth={}),e.sessionHealth[t]={status:"agent-offline"})},1e4);e._pongTimeouts||(e._pongTimeouts={}),e._pongTimeouts[t]=i},n=setTimeout(()=>{e.processingConversations[t]&&(s(),e._processingWatchdogs[t]=setInterval(()=>{if(!e.processingConversations[t]){Ce(e,t);return}s()},3e4))},45e3);e._processingWatchdogs[t]=n}function pi(e,t){e._yeaftWatchdogPauseReasons?.[t]?.size||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)?cn(e,t):an(e,t))}function Ce(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),e._yeaftWatchdogPauseReasons&&delete e._yeaftWatchdogPauseReasons[t]}function or(e,t,s="phase"){if(!t||!e.processingConversations[t])return;e._yeaftWatchdogPauseReasons||(e._yeaftWatchdogPauseReasons={});let n=e._yeaftWatchdogPauseReasons[t]||new Set;n.add(s),e._yeaftWatchdogPauseReasons[t]=n,e._processingWatchdogs?.[t]&&(clearTimeout(e._processingWatchdogs[t]),clearInterval(e._processingWatchdogs[t]),delete e._processingWatchdogs[t])}function ln(e,t,s=null){if(!t)return;let n=e._yeaftWatchdogPauseReasons?.[t];n&&(s?n.delete(s):n.clear(),!n.size&&(delete e._yeaftWatchdogPauseReasons[t],e.processingConversations[t]&&cn(e,t)))}function xd(e,t){Ce(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 cn(e,t){let s=e._yeaftWatchdogPauseReasons?.[t];if(Ce(e,t),e._processingWatchdogs||(e._processingWatchdogs={}),s?.size){e._yeaftWatchdogConvs||(e._yeaftWatchdogConvs=new Set),e._yeaftWatchdogPauseReasons||(e._yeaftWatchdogPauseReasons={}),e._yeaftWatchdogConvs.add(t),e._yeaftWatchdogPauseReasons[t]=new Set(s);return}e._yeaftWatchdogConvs||(e._yeaftWatchdogConvs=new Set),e._yeaftWatchdogConvs.add(t),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]},15e4)}var as=N(()=>{});function ba(e,t){return t&&Array.isArray(e?._yeaftRetiredConversationIdsByAgent?.[t])?e._yeaftRetiredConversationIdsByAgent[t]:[]}function dn(e,t,s){return!t||!s?!1:ba(e,t).includes(s)}function wa(e,t){let s=e?._yeaftRetiredConversationTargetsByAgent?.[t];return s&&typeof s=="object"?s:{}}function Td(e,t,s){if(!t||!s)return null;let n=wa(e,t),r=s,i=new Set;for(let o=0;o<8;o++){if(i.has(r))return null;i.add(r);let a=n[r];if(!a||a===r)return r===s?null:r;r=a}return null}function ar(e,t,s,n=null){if(!t||!s)return;let r=ba(e,t).filter(a=>a!==s).concat(s).slice(-8);e._yeaftRetiredConversationIdsByAgent={...e._yeaftRetiredConversationIdsByAgent||{},[t]:r};let i=wa(e,t),o={};for(let a of r){let l=i[a];l&&(o[a]=l===s&&n?n:l)}n&&n!==s&&(o[s]=n),e._yeaftRetiredConversationTargetsByAgent={...e._yeaftRetiredConversationTargetsByAgent||{},[t]:o}}function ka(e,t,s){if(!t||!s||!e?._yeaftRetiredConversationIdsByAgent)return;let n=ba(e,t).filter(i=>i!==s);e._yeaftRetiredConversationIdsByAgent={...e._yeaftRetiredConversationIdsByAgent,[t]:n};let r={...wa(e,t)};delete r[s],e._yeaftRetiredConversationTargetsByAgent={...e._yeaftRetiredConversationTargetsByAgent||{},[t]:r}}var fi=N(()=>{});function vv(e,t,s){let n=e.messagesMap?.[t]||[],r=e.messagesMap?.[s]||[];e.messagesMap||(e.messagesMap={}),Ms(e,t,n),Ms(e,s,r),e.messagesMap[s]=ui(r,n).sort((i,o)=>{let a=Number.isFinite(i?.seq)?i.seq:null,l=Number.isFinite(o?.seq)?o.seq:null;return a!==null&&l!==null&&a!==l?a-l:a!==null&&l===null?-1:a===null&&l!==null?1:(i?.timestamp||0)-(o?.timestamp||0)})}function yv(e){if(!e||typeof e!="object")return e;if(typeof structuredClone=="function")try{return structuredClone(e)}catch{}return Array.isArray(e)?e.slice():{...e}}function gi(e,t){return!!e&&Object.prototype.hasOwnProperty.call(e,t)}function un(e,t,s,{removeSource:n}){gi(e,t)&&(gi(e,s)||(e[s]=n?e[t]:yv(e[t])),n&&delete e[t])}function Tt(e,t,s=null){if(!t)return null;let n=e?._yeaftPendingConversationPromotions?.[t]||null;return!n?.sourceConversationId||!n.targetConversationId||s&&n.targetConversationId!==s?null:n}function mi(e,t,s,n){return!t||!s||!n||s===n?!1:(e._yeaftPendingConversationPromotions={...e._yeaftPendingConversationPromotions||{},[t]:{sourceConversationId:s,targetConversationId:n}},!0)}function lr(e,t,s=null){let n=Tt(e,t,s);if(!n)return null;let r={...e._yeaftPendingConversationPromotions||{}};return delete r[t],e._yeaftPendingConversationPromotions=r,n}function cr(e,t,s){let n=Tt(e,t);return!n||!s||n.targetConversationId===s?null:(Mt(e,n.targetConversationId,s,{removeSource:!0}),ar(e,t,n.targetConversationId,s),mi(e,t,n.sourceConversationId,s),n)}function Mt(e,t,s,{removeSource:n=!0}={}){if(!t||!s||t===s)return!1;vv(e,t,s),e.yeaftHistoryCacheState&&(e.yeaftHistoryCacheState=Object.fromEntries(Object.entries(e.yeaftHistoryCacheState).map(([c,d])=>[c,d?.conversationId===t?{...d,conversationId:s}:d]))),un(e.processingConversations,t,s,{removeSource:n}),un(e.executionStatusMap,t,s,{removeSource:n}),un(e.refreshingSessionMap,t,s,{removeSource:n}),un(e._closedAt,t,s,{removeSource:n}),un(e._autoRefreshed,t,s,{removeSource:n}),un(e.sessionHealth,t,s,{removeSource:n}),e._turnCompletedConvs?.has(t)&&(e._turnCompletedConvs.add(s),n&&e._turnCompletedConvs.delete(t));let r=!!e._yeaftWatchdogConvs?.has(t),i=e._yeaftWatchdogPauseReasons?.[t],o=!!i?.size,a=!!e._processingWatchdogs?.[t];if(o&&(e._yeaftWatchdogPauseReasons||(e._yeaftWatchdogPauseReasons={}),e._yeaftWatchdogPauseReasons[s]=new Set(i)),n&&(a||o)&&Ce(e,t),n&&e._pongTimeouts?.[t]&&(clearTimeout(e._pongTimeouts[t]),delete e._pongTimeouts[t]),n&&(a||r||o)&&!!e.processingConversations?.[s])if(e._processingWatchdogs?.[s])e._yeaftWatchdogConvs?.add(s);else{let c=gi(e.sessionHealth,s),d=e.sessionHealth?.[s],u=gi(e._autoRefreshed,s),f=e._autoRefreshed?.[s];cn(e,s),c&&(e.sessionHealth||(e.sessionHealth={}),e.sessionHealth[s]=d),u&&(e._autoRefreshed||(e._autoRefreshed={}),e._autoRefreshed[s]=f)}return n&&e.messagesMap&&delete e.messagesMap[t],!0}var Sa=N(()=>{ir();fi();as()});function hi(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 Ia=N(()=>{});function Ca(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}function bv(){return Date.now()}function wv(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?`pt_${crypto.randomUUID()}`:`pt_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`}function kv(e,t=160){return typeof e!="string"?e:e.length>t?`${e.slice(0,t)}...[truncated]`:e}function Sv(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"?kv(n):n);return t}function _s(){return wv()}function Ge(e,t={}){!e||!t.traceId||(Array.isArray(e._perfTraceQueue)||(e._perfTraceQueue=[]),e._perfTraceQueue.push({traceId:t.traceId,source:"web",phase:t.phase||"unknown",at:bv(),monotonicMs:Ca(),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:Sv(t.detail)}),e._perfTraceQueue.length>200&&e._perfTraceQueue.splice(0,e._perfTraceQueue.length-200),Iv(e))}function Iv(e){!e||e._perfTraceFlushTimer||(e._perfTraceFlushTimer=setTimeout(()=>Cv(e),250))}function Cv(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 vi(e,t={}){if(typeof requestAnimationFrame!="function")return;let s=Ca();requestAnimationFrame(()=>{requestAnimationFrame(()=>{Ge(e,{...t,phase:t.phase||"render.next_paint",durationMs:Ca()-s})})})}var Aa=N(()=>{});function Pt(e){return Number.isFinite(e)?Number(e):null}function Av(e){return(Array.isArray(e)?e:[]).map(t=>({startSeq:Pt(t?.startSeq),endSeq:Pt(t?.endSeq)})).filter(t=>t.startSeq!==null&&t.endSeq!==null&&t.startSeq<=t.endSeq).sort((t,s)=>t.startSeq-s.startSeq)}function dr(e){return Number.isFinite(e)&&e>=0?Math.floor(e):0}function Es(e){let t=Pt(e?.beforeSeq);if(t===null)return null;if(e?.kind==="gap"){let s=Pt(e.stopAtSeq);return s===null?null:`gap:${dr(e.cacheEpoch)}:${s}:${t}`}return`server:${t}`}function ur(e){let t=new Set((Array.isArray(e?.completedHistoryWorkKeys)?e.completedHistoryWorkKeys:[]).filter(s=>typeof s=="string"&&s));for(let s of Array.isArray(e?.requestedBeforeSeqs)?e.requestedBeforeSeqs:[])Number.isFinite(s)&&t.add(`server:${s}`);return t}function xv(e,t){let s=Es(t);if(!s)return e.completedHistoryWorkKeys||[];let n=ur(e);return n.add(s),Array.from(n).slice(-256)}function Tv(e,t){if(!Number.isFinite(t))return e.requestedBeforeSeqs||[];let s=new Set((Array.isArray(e?.requestedBeforeSeqs)?e.requestedBeforeSeqs:[]).filter(Number.isFinite));return s.add(t),Array.from(s).sort((n,r)=>r-n).slice(-256)}function Mv(e,t={},s=0){let n=Av(e),r=dr(s),i=ur(t),o=[];for(let a=1;a<n.length;a+=1){let l=n[a-1],c=n[a];if(l.endSeq+1>=c.startSeq)continue;let d={kind:"gap",beforeSeq:c.startSeq,stopAtSeq:l.endSeq+1,cacheEpoch:r};d.workKey=Es(d),i.has(d.workKey)||o.push(d)}return o.sort((a,l)=>l.beforeSeq-a.beforeSeq)}function Md(e,t,s){let n=Mv(e,t,s),r=Pt(t.serverOldestFetchedSeq??t.oldestSeq),i=n[0]||null;if(!i||r===null||i.beforeSeq<=r)return[];let o={kind:"gap",beforeSeq:i.beforeSeq,stopAtSeq:r,cacheEpoch:i.cacheEpoch};return o.workKey=Es(o),ur(t).has(o.workKey)?[]:[o]}function Pd(e={},t=[],s=0){let n=dr(s),r=ur(e),i=e.serverHasMore!==!1,o=Pt(e.serverOldestFetchedSeq??e.oldestSeq),a=e.gapTraversalInitialized===!0,l=Array.isArray(e.gapQueue)?e.gapQueue.slice():[],c=null,d=null;if(i&&o!==null){let u={kind:"server",beforeSeq:o,stopAtSeq:null,cacheEpoch:n};u.workKey=Es(u),r.has(u.workKey)?(i=!1,d="history_cursor_repeated"):c=u}return!c&&!i&&(a||(l=Md(t,e,n),a=!0),c=l[0]||null),c?{request:c,state:{...e,serverHasMore:i,gapTraversalInitialized:a,gapQueue:l,pendingPageKind:c.kind,pendingPageBeforeSeq:c.beforeSeq,pendingGapStopAtSeq:c.stopAtSeq,pendingCacheEpoch:c.cacheEpoch,pendingHistoryWorkKey:c.workKey,hasMore:!0,paginationError:null}}:{request:null,state:{...e,serverHasMore:i,gapTraversalInitialized:a,gapQueue:l,hasMore:!1,paginationError:d}}}function Rd(e={},{mode:t,oldestSeq:s,hasMore:n,ranges:r=[],pageKind:i=null,stopAtSeq:o=null,cacheEpoch:a=0}={}){if(t==="delta")return e;let l=dr(a),c=Pt(s),d=Pt(e.pendingPageBeforeSeq),u=i||e.pendingPageKind||(t==="older"?"server":null),f=Pt(o??e.pendingGapStopAtSeq),p=dr(e.pendingCacheEpoch??l),g={kind:u,beforeSeq:d,stopAtSeq:f,cacheEpoch:p},m=Pt(e.serverOldestFetchedSeq??e.oldestSeq),v=e.serverHasMore!==!1,k=Number(e.noProgressCount)||0,w=null,I=e.requestedBeforeSeqs||[],h=e.completedHistoryWorkKeys||[],y=e.gapTraversalInitialized===!0,b=Array.isArray(e.gapQueue)?e.gapQueue.slice():[];if(t==="recent")m=c,v=!!n,k=0,I=[],h=[],y=!1,b=[];else if(d===null)c!==null&&(m=m===null?c:Math.min(m,c)),v=!!n,k=0;else{I=Tv(e,d),h=xv(e,g);let x=c!==null&&c<d;if(u==="server")x?(m=m===null?c:Math.min(m,c),v=!!n,k=0):(v=!1,k+=1,w="history_cursor_no_progress");else if(u==="gap"){let D=Es(g);b=b.filter(E=>Es(E)!==D);let V=f!==null&&c!==null&&c<=f;if(x||V||n===!1){if(k=0,!V&&n!==!1&&c!==null&&f!==null){let E={kind:"gap",beforeSeq:c,stopAtSeq:f,cacheEpoch:p};E.workKey=Es(E),ur({completedHistoryWorkKeys:h}).has(E.workKey)||b.unshift(E)}}else k+=1,w="history_cursor_no_progress"}}t==="older"&&!v&&!y&&(b=Md(r,{...e,serverOldestFetchedSeq:m,completedHistoryWorkKeys:h},l),y=!0);let M={...e,serverOldestFetchedSeq:m,serverHasMore:v,requestedBeforeSeqs:I,completedHistoryWorkKeys:h,gapTraversalInitialized:y,gapQueue:b,noProgressCount:k,oldestSeq:m,paginationError:w};return delete M.pendingPageKind,delete M.pendingPageBeforeSeq,delete M.pendingGapStopAtSeq,delete M.pendingCacheEpoch,delete M.pendingHistoryWorkKey,{...M,hasMore:v||b.length>0}}var xa=N(()=>{});function $d(e){return e.filter(t=>!(t.type==="user"&&(!t.content||!t.content.trim())))}function Ds(e){let t=typeof e=="string"?e.match(/^m(\d+)$/):null,s=t?Number(t[1]):null;return Number.isFinite(s)?s:null}function _d(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 r=Number(s);if(Number.isFinite(r)&&r>0)return r}}return null}function Pv(e){if(!Array.isArray(e))return null;for(let t=e.length-1;t>=0;t-=1){let s=e[t];if(s?.name==="TodoWrite"&&Array.isArray(s?.input?.todos))return s.input.todos}return null}function Rv(e){return Array.isArray(e?.toolCalls)?e.toolCalls.filter(t=>t?.name!=="TodoWrite").length:Number(e?.toolSummaryCount||0)||0}function _v(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,r=typeof s.sessionById=="function"?s.sessionById(e,n?.currentAgent||null):s.sessions&&s.sessions[e];return(r&&typeof r.defaultVpId=="string"?r.defaultVpId.trim():"")||null}catch{return null}}function Ev(e,t){return e.speakerVpId||e.vpId||e.vp_id||e.authorVpId||e.authorVP||_v(t)}function yi(e){return e?.stableKey||(e&&(e.messageId||e.id)?e.messageId||e.id:null)}function Dv(e,t=null){if(!e||e.stableKey)return e;let s=pr(e),n=e.messageId||e.id||null,r=e.type==="user"&&e.clientMessageId||null;return e.stableKey=r&&n===r?ns(t,s,r):jn(t,s,n),Number.isFinite(e.seq)||(e.seq=Ds(n)),e.uiKey||(e.uiKey=e.stableKey||null),e}function Lv(e){return!e||e.isHistory===!0?!1:e.isStreaming||Vd(e)?!0:!Number.isFinite(e.seq)&&Number.isFinite(e.timestamp)}function Ed(e){let t=Lv(e),s=Number.isFinite(e?.seq)?e.seq:null,n=Number.isFinite(e?.timestamp)?e.timestamp:0;return t?[2,n,s??0]:[1,n,s??-1]}function $v(e){e.sort((t,s)=>{let n=Ed(t),r=Ed(s);for(let i=0;i<n.length;i+=1)if(n[i]!==r[i])return n[i]-r[i];return 0})}function Vv(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 r=e.threadId||"",i=t.threadId||"";if(r&&i&&r!==i||!(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 Ta(e,t){let s=new Map,n=new Map;e.forEach((i,o)=>{let a=yi(i);a&&s.set(a,o),i?.type==="user"&&i.clientMessageId&&n.set(i.clientMessageId,o)});let r=0;for(let i of t){let o=yi(i),a=o&&s.has(o)?s.get(o):null;if(a===null&&i?.type==="user"&&i.clientMessageId&&n.has(i.clientMessageId)&&(a=n.get(i.clientMessageId)),a===null&&i?.type==="assistant"&&(a=e.findIndex(l=>Vv(l,i))),a!==null&&a>=0){let l=yi(e[a]),c=e[a]?.uiKey||null;e[a]={...e[a],...i,...c?{uiKey:c}:{}},o&&s.set(o,a),l&&l!==o&&s.get(l)===a&&s.delete(l),i?.type==="user"&&i.clientMessageId&&n.set(i.clientMessageId,a)}else o&&s.set(o,e.length),i?.type==="user"&&i.clientMessageId&&n.set(i.clientMessageId,e.length),e.push(i),r+=1}return $v(e),r}function pr(e){return e?e.sessionId??e.groupId??null:null}function Vd(e){return!e||e.type!=="user"||!e.clientMessageId?!1:(e.messageId||e.id||null)===e.clientMessageId}function Hv(e,t,s){let n=e.some(a=>a&&(s==null||pr(a)===s));if(t.length===0&&n)return{insertedRows:0,preservedEmpty:!0};let r=t.reduce((a,l)=>Math.max(a,l?.timestamp||0),0),i=e.filter(a=>a?s!=null&&pr(a)!==s||kt(a)||a.isStreaming||a.type==="tool-use"&&a.toolName==="AskUserQuestion"&&(a.askAnswered||a.askPending||a.askExpired)||Vd(a)?!0:r>0&&(a.timestamp||0)>r:!1);return e.splice(0,e.length,...i),{insertedRows:Ta(e,t),preservedEmpty:!1}}function Ov(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 Fv(e,t){let s=typeof e.yeaftConversationId=="string"?e.yeaftConversationId:"";return s.startsWith(`yeaft-local-${t}-`)||/^yeaft-local-\d/.test(s)?s:null}function Bv(e,t,s,n){let r=t.agentId||s&&e.yeaftSessionAgentById?.[s]||null;if(!r||!n||e.currentView!=="yeaft")return;let i=Ot(e);if(i.sessionId!==(s||null)||i.agentId&&i.agentId!==r)return;let o=e.yeaftConversationId||null;if(dn(e,r,n)){let d=e.yeaftConversationIdsByAgent?.[r]||null;d&&d!==n&&Mt(e,n,d,{removeSource:n!==e.yeaftConversationId});return}let a=Tt(e,r);a&&a.targetConversationId!==n&&cr(e,r,n);let l=Tt(e,r,n);if(l&&(Mt(e,l.sourceConversationId,n,{removeSource:!0}),lr(e,r,n),e.yeaftConversationId=n),o===n||l){e.messagesMap[n]||(e.messagesMap[n]=[]),e.yeaftConversationIdsByAgent={...e.yeaftConversationIdsByAgent||{},[r]:n},e.activeConversations=[n];return}let c=Fv(e,r);c&&(Mt(e,c,n,{removeSource:!0}),e.yeaftConversationIdsByAgent={...e.yeaftConversationIdsByAgent||{},[r]:n},e.yeaftConversationId=n,e.activeConversations=[n])}function ls(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 Hd(e,t){xt(e);let s=e.agents.find(r=>r.id===t.agentId);e.conversations=e.conversations.filter(r=>r.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 r=e._pendingPaneId;if(e._pendingPaneId=null,r){let i=e.panels.find(o=>o.id===r);i&&(i.conversationId=t.conversationId)}else{let i=e.panels.find(o=>!o.conversationId);i&&(i.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:Le("store.convCreated",{agent:s?.name||t.agentId,workDir:t.workDir})}),e.saveOpenSessions()}function Od(e,t){xt(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 r=e.panels.find(i=>i.id===n);r&&(r.conversationId=t.conversationId)}else{let r=e.panels.find(i=>!i.conversationId);r&&(r.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:Le("store.convResumed",{agent:s?.name||t.agentId,sessionId:t.claudeSessionId?t.claudeSessionId.slice(0,8)+"...":""})}),t.dbMessages&&t.dbMessages.length>0){let n=$d(t.dbMessages.map(o=>e.formatDbMessageForHistoryHydration(o)).flat().filter(Boolean)),r=fa(n),i=e.messagesMap[t.conversationId]||[];for(let o of r)i.push(o)}e.hasMoreMessages=!!t.hasMoreMessages,e.chatSessionState[t.conversationId]={lastSeenDbId:Ps(e.messagesMap[t.conversationId]),hasMoreOlder:!!t.hasMoreMessages},e.saveOpenSessions()}function Ma(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],Ce(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:Le("chat.session.closed")}));for(let n of e.panels)n.conversationId===t.conversationId&&(n.conversationId=null);e.saveOpenSessions()}function Fd(e,t){let s=t.conversationId;if(s){delete e.processingConversations[s],Ce(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),ls(e,s);let r=e.conversations.find(i=>i.id===s);r&&(t.claudeSessionId&&(r.claudeSessionId=t.claudeSessionId),t.workDir&&(r.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 Bd(e,t){let s=t.conversationId;if(s){delete e.processingConversations[s],Ce(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),ls(e,s);let r=e.conversations.find(i=>i.id===s);r&&(t.claudeSessionId&&(r.claudeSessionId=t.claudeSessionId),t.workDir&&(r.workDir=t.workDir)),e.saveOpenSessions()}}function Nd(e,t){if(t.conversationId){if(t.isProcessing&&!Rs(e,t.conversationId)&&!e._turnCompletedConvs?.has(t.conversationId))e.processingConversations[t.conversationId]=!0;else if(e.processingConversations[t.conversationId]){delete e.processingConversations[t.conversationId],Ce(e,t.conversationId);let s=e.executionStatusMap[t.conversationId];s&&(s.currentTool=null),e.finishStreamingForConversation(t.conversationId)}}}function qd(e,t){let s=t.conversationId||e.currentConversation;if(s){delete e.processingConversations[s],Ce(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),ls(e,s)}}function Wd(e,t){if(!!t.requestId){if(e.chatHistoryRequestIdSupported=!0,!e.isCurrentChatHistoryResponse?.(t))return!1}else{let i=`chat:${t.conversationId}`,o=e.chatHistoryRequests?.[i];if(e.chatHistoryRequestIdSupported===!0||!o?.loading)return!1;t={...t,requestId:o.requestId,catalogKey:i,mode:o.mode||t.mode,...o.mode==="delta"?{afterMessageId:o.cursor}:{}}}e.messagesMap[t.conversationId]||(e.messagesMap[t.conversationId]=[]);let n=e.messagesMap[t.conversationId],r=t.mode==="delta"||typeof t.afterMessageId=="number"&&t.afterMessageId>0;if(t.conversationId&&e.activeConversations.includes(t.conversationId)){let i=fa($d((t.messages||[]).map(a=>e.formatDbMessageForHistoryHydration(a)).flat().filter(Boolean)));if(i.length>0){let a=n.find(l=>l.dbMessageId);if(a&&i[0].dbMessageId&&i[i.length-1].dbMessageId<a.dbMessageId){let l=n.indexOf(a);e.debug,n.splice(l,0,...i)}else{e.debug;for(let l of i)if(!(l.dbMessageId&&n.some(c=>c.dbMessageId===l.dbMessageId))){if(l.dbMessageId&&(l.type==="assistant"||l.type==="user")){let c=null;if(l.type==="user"?c=n.find(d=>!d.dbMessageId&&!d.isStreaming&&hi(d,l)):c=n.find(d=>!d.dbMessageId&&!d.isStreaming&&d.type==="assistant"&&d.content===l.content),c){c.dbMessageId=l.dbMessageId,c.id=l.id,l.timestamp&&(c.timestamp=l.timestamp),l.clientMessageId&&!c.clientMessageId&&(c.clientMessageId=l.clientMessageId);continue}}n.push(l)}}}r||(e.hasMoreMessages=t.hasMore??!1),xt(e);let o=e.chatSessionState[t.conversationId]?.hasMoreOlder;e.chatSessionState[t.conversationId]={lastSeenDbId:Ps(e.messagesMap[t.conversationId]),hasMoreOlder:r?!!o:!!t.hasMore}}return e.finishChatHistoryRequest?.(t)&&(e.currentConversation===t.conversationId&&(e.loadingMoreMessages=!1),e.setRefreshingSession(t.conversationId,!1)),!0}function jd(e,t){let s=t.sessionId??null,n=t.agentId||s&&e.yeaftSessionAgentById?.[s]||null,r=t.conversationId||n&&e.yeaftConversationIdsByAgent?.[n]||e.yeaftConversationId;if(!r||!s||!Array.isArray(t.messages))return null;e.messagesMap[r]||(e.messagesMap[r]=[]);let i=new Set(Array.isArray(t.sourceMessageIds)?t.sourceMessageIds:[]);for(let c of e.messagesMap[r]){let d=c?.persistedMessageId||c?.messageId||c?.id||null;!t.entryId||!i.has(d)||(c.historyEntryId=t.entryId,Number.isFinite(t.indexGeneration)&&(c.historyIndexGeneration=t.indexGeneration))}let o=t.messages.map(c=>t.entryId&&i.has(c?.id)?{...c,historyEntryId:t.entryId,...t.prefetch===!0?{_historyWindowPrefetched:!0}:{},...Number.isFinite(t.indexGeneration)?{historyIndexGeneration:t.indexGeneration}:{}}:c),{formatted:a}=Ud(o,s,"window",e.messagesMap[r],n);if(t.prefetch===!0)for(let c of a)c._historyWindowPrefetched=!0;Ta(e.messagesMap[r],a);let l=Ot(e);return zn(e,{conversationId:r,agentId:n,sessionId:s,incomingRows:a,activeAgentId:l.agentId,activeSessionId:l.sessionId}),r}function Dd(e){return e?.toolId?[pr(e)??"",e.vpId||e.speakerVpId||"",e.turnId||"",e.threadId||"main",e.toolId].join("\0"):null}function Ld(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 Nv(e,t){return(e||[]).find(s=>s?.type==="tool-use"&&(s.toolName==="AskUser"||s.toolName==="AskUserQuestion")&&s.toolId===t.toolCallId&&pr(s)===t.sessionId&&(s.vpId||s.speakerVpId||"")===(t.vpId||"")&&(s.turnId||"")===(t.turnId||"")&&(s.threadId||"main")===(t.threadId||"main"))||null}function Ud(e,t,s,n,r=null){let i=new Set((n||[]).map(c=>yi(Dv(c,r))).filter(Boolean)),o=new Set,a=[],l=0;for(let c of e){if(!c||c._reflection||c.internal||c.systemOnly||c.systemOnlyMessage||Ov(c.content))continue;let d=c.id||c.messageId||null,u=c.clientMessageId||null,f=c.sessionId??c.groupId??t??null,p=jn(r,f,d),g=u?ns(r,f,u):p,m=c.historyEntryId?{historyEntryId:c.historyEntryId,...Number.isFinite(c.historyIndexGeneration)?{historyIndexGeneration:c.historyIndexGeneration}:{}}:{};if(!(p&&o.has(p))&&!(p&&s!=="recent"&&i.has(p))){if(p&&o.add(p),c.role==="user"){l+=1;let v=d||c.messageId||c.turnId||null;a.push({...d?{id:d,messageId:d}:{},...p?{stableKey:p}:{},...g?{uiKey:g}:{},...m,seq:Number.isFinite(c.seq)?c.seq:Ds(d),type:"user",content:c.content,timestamp:_d(c),sessionId:f,turnId:c.turnId||v,...u?{clientMessageId:u}:{},...Array.isArray(c.attachments)&&c.attachments.length>0?{attachments:c.attachments}:{},...c.quote?{quote:c.quote}:{},isStreaming:!1,isHistory:!0})}else if(c.role==="assistant"){l+=1;let v=d||c.messageId||c.turnId||null,k=Ev(c,f),w=_d(c),I=!!c.turnId,h=c.turnId||v,y=typeof c.content=="string"?c.content:c.content||"",b=Array.isArray(c.todos)?c.todos:Pv(c.toolCalls),M=c.executionOrigin==="route_forward"?{executionOrigin:"route_forward"}:{};(typeof y!="string"||y.trim())&&a.push({...d?{id:d,messageId:d}:{},...p?{stableKey:p}:{},...g?{uiKey:g}:{},...m,seq:Number.isFinite(c.seq)?c.seq:Ds(d),...c.entryId?{entryId:c.entryId}:{},...Array.isArray(c.sourceMessageIds)?{sourceMessageIds:c.sourceMessageIds}:{},type:"assistant",content:y,timestamp:w,sessionId:f,turnId:h,_hasPersistedTurnId:I,...M,...k?{vpId:k,speakerVpId:k}:{},...c.responseKind==="progress"||c.responseKind==="result"?{responseKind:c.responseKind}:{},...c.incomplete===!0?{incomplete:!0}:{},...typeof c.stopReason=="string"&&c.stopReason?{stopReason:c.stopReason}:{},isStreaming:!1,isHistory:!0}),Array.isArray(b)&&b.length>0&&a.push({...d?{id:`${d}:todos`,messageId:`${d}:todos`}:{},...p?{stableKey:`${p}:todos`}:{},...m,seq:Number.isFinite(c.seq)?c.seq:Ds(d),type:"tool-use",toolName:"TodoWrite",toolInput:{todos:b},timestamp:w,sessionId:f,turnId:h,...M,...k?{vpId:k,speakerVpId:k}:{},isStreaming:!1,isHistory:!0,hasResult:!0});for(let D of Array.isArray(c.images)?c.images:[])D?.assetId&&a.push({id:`${d||v||h}:image:${D.assetId}`,messageId:`${d||v||h}:image:${D.assetId}`,...p?{stableKey:`${p}:image:${D.assetId}`}:{},...m,seq:Number.isFinite(c.seq)?c.seq:Ds(d),type:"chat-image",...D,timestamp:w,sessionId:f,turnId:h,...M,...k?{vpId:k,speakerVpId:k}:{},isStreaming:!1,isHistory:!0});for(let D of Array.isArray(c.askUserResults)?c.askUserResults:[]){if(!D?.toolCallId||D.status!=="answered"&&D.status!=="expired")continue;let V=[{question:typeof D.question=="string"?D.question:"",options:(Array.isArray(D.options)?D.options:[]).filter(R=>typeof R=="string").map(R=>({label:R,description:""})),multiSelect:!1}],E={toolCallId:D.toolCallId,sessionId:f,vpId:k||"",turnId:h||"",threadId:c.threadId||"main"},_=Nv(n,E);if(_){Object.assign(_,m),Ld(_,D,V);continue}let T=Ld({id:`${d||v||h}:ask:${D.toolCallId}`,messageId:`${d||v||h}:ask:${D.toolCallId}`,...p?{stableKey:`${p}:ask:${D.toolCallId}`}:{},...m,seq:Number.isFinite(c.seq)?c.seq:Ds(d),type:"tool-use",timestamp:w,sessionId:f,turnId:h,threadId:E.threadId,...M,...k?{vpId:k,speakerVpId:k}:{},isStreaming:!1},D,V),A=Dd(T);(!A||!a.some(R=>Dd(R)===A))&&a.push(T)}let x=Rv(c);x>0&&a.push({...d?{id:`${d}:tool-summary`,messageId:`${d}:tool-summary`,persistedMessageId:d}:{},...p?{stableKey:`${p}:tool-summary`}:{},...m,seq:Number.isFinite(c.seq)?c.seq:Ds(d),type:"tool-summary",count:x,omittedCount:x,source:"history",timestamp:w,sessionId:f,turnId:h,...M,...k?{vpId:k,speakerVpId:k}:{},isStreaming:!1,isHistory:!0})}}}return{formatted:a,acceptedHistoryMessages:l}}function Kd(e,t){let s=t.sessionId!=null?t.sessionId:t.groupId,n=t.agentId||s&&e.yeaftSessionAgentById?.[s]||null;if(dn(e,n,t.conversationId)){let F=e.yeaftConversationIdsByAgent?.[n]||null;if(!F||F===t.conversationId)return;Mt(e,t.conversationId,F,{removeSource:t.conversationId!==e.yeaftConversationId}),t={...t,conversationId:F}}if(t.requestId&&typeof e.isCurrentYeaftHistoryResponse=="function"&&!e.isCurrentYeaftHistoryResponse(t))return;let r=t.mode==="recent"||t.mode==="delta"?t.mode:"older",i=Array.isArray(t.messages)?t.messages:[],o=t.agentId||s&&e.yeaftSessionAgentById?.[s]||null,a=he(o,s),l=e.yeaftSessionHistoryState?.[a]||null;typeof t.streamId=="string"&&typeof l?.streamId=="string"&&(t.streamId!==l.streamId||Number.isFinite(t.revision)&&Number.isFinite(l.revision)&&t.revision!==l.revision)&&(r="recent",typeof e.clearYeaftHistoryMemory=="function"&&e.clearYeaftHistoryMemory({agentId:o,sessionId:s,preserveLiveRows:!0,preserveSessionOwner:!0}),typeof e.removeYeaftHistoryBrowserCache=="function"&&e.removeYeaftHistoryBrowserCache(o,s)),t.perfTraceId&&Ge(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:r,rawCount:i.length}});let d=t.agentId||(s&&e.yeaftSessionAgentById?e.yeaftSessionAgentById[s]:null),u=d&&e.yeaftConversationIdsByAgent?e.yeaftConversationIdsByAgent[d]:null,f=t.conversationId||u||e.yeaftConversationId;if(!f){e.yeaftLoadingMoreHistory=!1;return}Bv(e,t,s,f),e.messagesMap[f]||(e.messagesMap[f]=[]);let{formatted:p,acceptedHistoryMessages:g}=Ud(i,s,r,e.messagesMap[f],d);Ms(e,f,p);let m=0,v=!1;if(r==="recent"){let F=Hv(e.messagesMap[f],p,s??null);m=F.insertedRows,v=F.preservedEmpty}else if(p.length>0)if(r==="older"){if(e.messagesMap[f].splice(0,0,...p),m=p.length,typeof e.expandYeaftMessageWindow=="function"){let F=e.yeaftActiveSessionFilter?s??null:null;e.expandYeaftMessageWindow(F,t.turns||10,d)}}else m=Ta(e.messagesMap[f],p);let k=Ot(e);zn(e,{conversationId:f,agentId:d,sessionId:s,incomingRows:p,activeAgentId:k.agentId,activeSessionId:k.sessionId});let w=he(t.agentId||null,s),I=e.yeaftHistoryCacheState?.[w]||null,h=e.yeaftSessionHistoryState?.[w]||{},y=Number.isFinite(h.serverOldestFetchedSeq)?h.serverOldestFetchedSeq:Number.isFinite(h.oldestSeq)?h.oldestSeq:null,b=Number.isFinite(t.nextBeforeSeq)?t.nextBeforeSeq:Number.isFinite(t.oldestSeq)?t.oldestSeq:v?y:null,M=v&&!Number.isFinite(t.nextBeforeSeq)&&!Number.isFinite(t.oldestSeq)?h.serverHasMore??h.hasMore??!1:t.hasMore,x=r==="delta"?h:Rd(h,{mode:r,oldestSeq:b,hasMore:M,ranges:I?.ranges||[],pageKind:t.pageKind,stopAtSeq:t.gapStopAtSeq,cacheEpoch:I?.rangeEpoch??t.cacheEpoch??0}),D=typeof t.latestSeq=="number"?t.latestSeq:h.latestSeq??null,V={streamId:typeof t.streamId=="string"?t.streamId:h.streamId??null,revision:Number.isFinite(t.revision)?t.revision:h.revision??null},E=r==="delta"?{...h,...V,loaded:!0,loading:!1,latestSeq:D,syncingAfterSeq:null,count:(h.count||0)+m}:{...x,...V,loaded:!0,loading:!1,count:I?I.rowCount:r==="older"?(h.count||0)+m:v?h.count||0:g,latestSeq:v&&!Number.isFinite(t.latestSeq)?h.latestSeq??null:D,syncingAfterSeq:null};t.requestId&&typeof e.finishYeaftHistoryLoad=="function"?e.finishYeaftHistoryLoad(t,E,"chunk"):e.yeaftSessionHistoryState&&(e.yeaftSessionHistoryState={...e.yeaftSessionHistoryState,[w]:E}),typeof e.persistYeaftHistoryBrowserCache=="function"&&e.persistYeaftHistoryBrowserCache(s,d,f),r==="delta"&&t.hasMoreAfter===!0&&Number.isFinite(E.latestSeq)&&E.latestSeq>Number(t.afterSeq??-1)&&typeof e.continueYeaftHistoryDelta=="function"&&queueMicrotask(()=>e.continueYeaftHistoryDelta(s,d,E.latestSeq));let _=Ot(e),T=_.sessionId===(s||null),A=!t.agentId||!_.agentId||t.agentId===_.agentId,R=T&&A,j=he(null,_.sessionId);if(t.perfTraceId&&(Ge(e,{traceId:t.perfTraceId,phase:"history.chunk_applied",agentId:t.agentId||null,sessionId:s||null,messageType:t.type,detail:{mode:r,formattedCount:p.length,insertedRows:m,acceptedHistoryMessages:g,preservedEmptyRecent:v}}),vi(e,{traceId:t.perfTraceId,phase:"history.next_paint",agentId:t.agentId||null,sessionId:s||null,messageType:t.type,detail:{mode:r,insertedRows:m}})),R)e.yeaftHasMoreHistory=E.hasMore,e.yeaftOldestLoadedSeq=Number.isFinite(E.serverOldestFetchedSeq)?E.serverOldestFetchedSeq:Number.isFinite(E.oldestSeq)?E.oldestSeq:e.yeaftOldestLoadedSeq,e.yeaftLoadingMoreHistory=!1;else if(e.yeaftLoadingMoreHistory){let F=e.yeaftSessionHistoryState?.[_.sessionKey]||e.yeaftSessionHistoryState?.[j]||null;e.yeaftLoadingMoreHistory=!!F?.loading}}var bi=N(()=>{as();Sa();fi();Ts();Ia();ir();ga();Nt();Aa();ni();sn();ii();xa()});function zd(e,t,s=null){if(!s)return!1;if(e.promoteYeaftHistoryOutlineRow?.(t,s))return!0;let n=t?.sessionId??t?.groupId??e._currentYeaftSessionId??null;return n?!!e.invalidateYeaftHistoryOutline?.(n,s):!1}function qv(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 Pa(e,t){return e.executionStatusMap[t]||(e.executionStatusMap[t]={currentTool:null,toolHistory:[],lastActivity:null}),e.executionStatusMap[t]}function Yd(e,t,s,n=null){if(!t)return;let r=Pa(e,t);if(r.lastActivity=Date.now(),pi(e,t),s.type==="system"){if(s.subtype==="init"){let i=e.conversations.find(o=>o.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 o=e.messagesMap[t]||[];for(let a of o)a.type==="tool-use"&&!a.hasResult&&(a.hasResult=!0);for(let a of r.toolHistory)a.status==="running"&&(a.status="done");if(r.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 a of i)a.type==="text"?e.appendToAssistantMessageForConversation(t,a.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}):a.type==="image_asset"&&a.image?e.addMessageToConversation(t,{type:"chat-image",...a.image,sessionId:e._currentYeaftSessionId||null,vpId:e._currentYeaftVpId||null,speakerVpId:e._currentYeaftVpId||null,turnId:e._currentYeaftTurnId||null,threadId:e._currentYeaftThreadId||null}):a.type==="tool_summary"?e.addMessageToConversation(t,{type:"tool-summary",count:Number(a.count||a.omittedCount||0)||0,omittedCount:Number(a.omittedCount||a.count||0)||0,source:a.source||"history",isHistory:a.source!=="live",sessionId:e._currentYeaftSessionId||null,vpId:e._currentYeaftVpId||null,turnId:e._currentYeaftTurnId||null,threadId:e._currentYeaftThreadId||null}):a.type==="tool_use"&&(e.finishStreamingForConversation(t,{completeLifecycle:!1}),r.currentTool={name:a.name,input:a.input,startTime:Date.now()},r.toolHistory.unshift({name:a.name,input:a.input,timestamp:Date.now(),status:"running"}),r.toolHistory.length>20&&r.toolHistory.pop(),e.addMessageToConversation(t,{type:"tool-use",toolId:a.id||a.tool_use_id||null,toolName:a.name,toolInput:a.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,o=s.message?.content,a=qv(o);if(typeof a=="string"&&(a.includes("<local-command-caveat>")||a.includes("<command-name>")))return;if(typeof a=="string"&&a.includes("<local-command-stdout>")){let c=a.match(/<local-command-stdout>([\s\S]*?)<\/local-command-stdout>/);if(c){e.appendToAssistantMessageForConversation(t,c[1].trim()),e.finishStreamingForConversation(t);return}}let l=[];if(s.tool_use_result)l=Array.isArray(s.tool_use_result)?s.tool_use_result:[s.tool_use_result];else if(s.message?.content){let c=s.message.content;l=(Array.isArray(c)?c:[]).filter(u=>u.type==="tool_result")}if(l.length>0){let c=e.messagesMap[t]||[];for(let d of l){if(r.toolHistory.length>0){let g=r.toolHistory.findIndex(m=>m.status==="running");g>=0&&(r.toolHistory[g].status="done")}let u=d.tool_use_id||d.toolUseId||d.tool_call_id||d.toolCallId||null,f=d.content||d,p=!1;if(u){for(let g=c.length-1;g>=0;g--)if(c[g].type==="tool-use"&&c[g].toolId===u){c[g].hasResult=!0,c[g].toolResult=d.is_update&&c[g].toolResult?`${c[g].toolResult}
2
2
 
3
- ${f}`:f,p=!0;break}}if(!p){for(let g=c.length-1;g>=0;g--)if(c[g].type==="tool-use"&&!c[g].hasResult){c[g].hasResult=!0,c[g].toolResult=f;break}}}r.currentTool=null}else if(!i&&(typeof a=="string"&&a.trim()||Array.isArray(s.message?.attachments)&&s.message.attachments.length>0)){let c=s.message?.clientMessageId||s.clientMessageId||null,d={type:"user",content:a,clientMessageId:c},u=e.messagesMap[t]||[];if(u.some(p=>hi(p,d))){if(c){for(let p=u.length-1;p>=0;p--)if(u[p].type==="user"&&u[p].clientMessageId===c){s.dbMessageId&&!u[p].dbMessageId&&(u[p].dbMessageId=s.dbMessageId),s.message?.id&&!u[p].messageId&&(u[p].id=s.message.id,u[p].messageId=s.message.id),s.ts&&!u[p].ts&&(u[p].ts=s.ts),zd(e,u[p],n);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:a,...s.message?.attachments?{attachments:s.message.attachments}:{},...s.message?.quote?{quote:s.message.quote}:{},...c?{clientMessageId:c}:{}});zd(e,p,n)}}}else if(s.type==="result"){delete e.processingConversations[t],Ce(e,t);let i=e.conversations.find(d=>d.id===t);i&&i.connecting&&(i.connecting=!1);let o=e._currentYeaftSessionId||null;if(e._currentYeaftTurnId){let d=Object.entries(e.activeVpTurns||{}).find(([,u])=>(u?.turnId===e._currentYeaftTurnId||!u?.turnId&&u===e.activeVpTurns[e._currentYeaftTurnId])&&(!e._currentYeaftAgentId||!u?.agentId||u.agentId===e._currentYeaftAgentId));if(d){let[u,f]=d,{[u]:p,...g}=e.activeVpTurns;!o&&f?.sessionId&&(o=f.sessionId),e.activeVpTurns=g}}if(o&&e._currentYeaftVpId&&e.vpStatuses){let d=e._currentYeaftTurnId||null,u={...e.vpStatuses||{}},f=!1;for(let[p,g]of Object.entries(u))!g||g.vpId!==e._currentYeaftVpId||e._currentYeaftAgentId&&g.agentId&&g.agentId!==e._currentYeaftAgentId||(g.sessionId||g.groupId||null)!==o||d&&g.turnId&&g.turnId!==d||(u[p]={...g,state:"idle",turnId:null,since:Date.now()},f=!0);f&&(e.vpStatuses=u)}o&&typeof e.clearYeaftSessionProcessingIfIdle=="function"&&e.clearYeaftSessionProcessingIfIdle(o,{agentId:e._currentYeaftAgentId||null}),e._closedAt||(e._closedAt={}),e._closedAt[t]=Date.now(),e._turnCompletedConvs||(e._turnCompletedConvs=new Set),e._turnCompletedConvs.add(t),r.currentTool=null,ls(e,t);let a=e.messagesMap[t]||[],l=s.result_text||"";if(typeof l=="string"&&l.trim()){let d=!1;for(let u=a.length-1;u>=0;u--){if(a[u].type==="assistant"){d=!0;break}if(a[u].type==="user")break}d||e.appendToAssistantMessageForConversation(t,l.trim())}e.finishStreamingForConversation(t),!(n&&e.promoteCompletedYeaftHistoryOutline?.(t,e._currentYeaftTurnId||null,n))&&o&&n&&e.invalidateYeaftHistoryOutline?.(o,n),e.sweepStaleStreamingForConversation(t),o&&n&&e.pruneConversationMessageRetention?.(t,o,n)}}var Gd=N(()=>{as();bi();Ia()});function Ls(e){if(e==null)return e;try{return JSON.parse(JSON.stringify(e))}catch{return e}}function wi(e,t){if(!t)return e??null;if(Object.prototype.hasOwnProperty.call(t,"base"))return Ls(t.base)??null;if(Object.prototype.hasOwnProperty.call(t,"replacement"))return Ls(t.replacement)??null;let s=e&&typeof e=="object"&&!Array.isArray(e)?Ls(e):{};if(t.set&&typeof t.set=="object")for(let[n,r]of Object.entries(t.set))s[n]=Ls(r);if(t.body&&typeof t.body=="object"){let n=s.body&&typeof s.body=="object"&&!Array.isArray(s.body)?{...s.body}:{};for(let[i,o]of Object.entries(t.body))i==="messages"||i==="messagesFrom"||i==="messagesAppend"||i==="messagesKey"||(n[i]=Ls(o));let r=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[r]=Ls(t.body.messages)||[];else if(Array.isArray(t.body.messagesAppend)){let i=Array.isArray(n[r])?n[r]:[],o=Number.isFinite(Number(t.body.messagesFrom))?Number(t.body.messagesFrom):i.length;n[r]=i.slice(0,o).concat(Ls(t.body.messagesAppend)||[])}s.body=n}return s}function Qd(e,t){return!t||!Object.prototype.hasOwnProperty.call(t,"rawRequestDelta")?e??null:wi(e??null,t.rawRequestDelta)}function fr(e){if(!e)return 0;let t=typeof e=="string"?e:String(e),s=0,n=0;for(let r of t){let i=r.codePointAt(0)||0;i>=19968&&i<=40959||i>=12352&&i<=12447||i>=12448&&i<=12543||i>=44032&&i<=55215?s+=1:n+=1}return Math.ceil(s+n/4)}function jv(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 r of n){if(!r||typeof r!="object")continue;let i=r.type;if(i==="text"&&typeof r.text=="string")t.push(r.text);else if(i==="tool_use"){if(s.push(String(r.name||"")),r.input!==void 0)try{s.push(JSON.stringify(r.input))}catch{}}else if(i==="tool_result"){let o=r.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(r))}catch{}}if(Array.isArray(e.toolCalls)){for(let r of e.toolCalls)if(r&&(s.push(String(r.name||"")),r.input!==void 0))try{s.push(JSON.stringify(r.input))}catch{}}return{messageText:t,toolText:s}}function Zd(e){let t=0,s=0;if(e&&Array.isArray(e.messages))for(let i of e.messages){let{messageText:o,toolText:a}=jv(i);for(let l of o)t+=fr(l);for(let l of a)s+=fr(l)}let n=0,r=0;if(e&&typeof e.response=="string"&&(n+=fr(e.response)),e&&Array.isArray(e.toolCalls)){for(let i of e.toolCalls)if(i&&(r+=fr(String(i.name||"")),i.input!==void 0))try{r+=fr(JSON.stringify(i.input))}catch{}}return{inputMessageTokens:t,inputToolTokens:s,outputMessageTokens:n,outputToolTokens:r,inputTotalEstimated:t+s,outputTotalEstimated:n+r}}function Ra(e,t,s){let n=Math.max(0,Math.floor(Number(e)||0)),r=Math.max(0,Number(t)||0),i=Math.max(0,Number(s)||0),o=r+i;if(n===0)return{message:0,tool:0};if(o===0)return{message:n,tool:0};let a=Math.round(r/o*n),l=Math.min(n,Math.max(0,a));return{message:l,tool:n-l}}function Xd(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"),r=String(s.getMinutes()).padStart(2,"0"),i=String(s.getSeconds()).padStart(2,"0");return`${n}:${r}:${i}`}var _a=N(()=>{});function It(e,t){return!e||!t?"":`${e}${t}`}function gr(e){let t=typeof e=="string"?e:String(e||"");if(!t)return{agentId:null,sessionId:null};let s=t.indexOf("");if(s<0)return{agentId:null,sessionId:t};let n=t.slice(0,s)||null,r=t.slice(s+1)||null;return{agentId:n,sessionId:r}}function Ea(e){return e?`${e}`:""}function Da(e,t){return!e||!t?"":`${e}${t}`}var mr=N(()=>{});function Uv(e,t){if(!e||!!!t?.online)return!1;let n=!e.online,r=e.online&&e.version!=null&&t.version!=null&&e.version!==t.version;return n||r}function Jd(e,t){let s=e.lastViewedConversation||localStorage.getItem("lastViewedConversation");if(!s)return!1;let n=e.conversations.find(i=>i.id===s);if(!n)return!1;let r=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.requestChatHistory?.(s,{mode:"recent",turns:5}),e.sendWsMessage({type:"refresh_conversation",conversationId:s}),!0}function eu(e,t){let s=Array.isArray(e.agents)?e.agents:[],n=e._hasHandledAgentList===!0,r=e.currentAgent||null,i=!!(r&&s.some(a=>a&&a.id===r&&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(d=>d.id===o)||null;(e.currentView==="yeaft"||e.workCenterOpen&&e.workCenterAgentId===o)&&Uv(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(f=>f.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 f=e._recentlyDeletedSessions?.[d.id];if(f&&Date.now()-f<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],Ce(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&&!Rs(e,d.id)&&!e._turnCompletedConvs?.has(d.id))e.processingConversations[d.id]=!0;else if(e.processingConversations[d.id]){delete e.processingConversations[d.id],Ce(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],Ce(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&&!i;if(e.currentAgentInfo=a,d&&(e._offlineConversationRestoreKey=null,e.sendWsMessage({type:"select_agent",agentId:e.currentAgent,silent:!0})),d&&e.workCenterOpen&&e.workCenterAgentId===e.currentAgent&&typeof e.listWorkItems=="function"){let u=e._workCenterListFiltersByAgent?.[e.workCenterAgentId]||{};e.listWorkItems(e.workCenterAgentId,u).catch(()=>{})}if(e._yeaftReconnectCatchUpPending=!1,e.currentView==="yeaft"&&typeof e.requestYeaftSessionBootstrap=="function"){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(g=>g.id===e.currentConversation);e.sendWsMessage({type:"select_conversation",conversationId:e.currentConversation});let f=e.messagesMap[e.currentConversation]||[],p=Ps(f);p!=null?e.requestChatHistory?.(e.currentConversation,{mode:"delta",afterMessageId:p}):e.requestChatHistory?.(e.currentConversation,{mode:"recent",turns:5}),e.sendWsMessage({type:"refresh_conversation",conversationId:e.currentConversation})}else e.recoveryDismissed||Jd(e);return}else{let l=`${e.currentAgent||""}:${e.currentConversation||""}`;e.currentConversation&&(!n||i||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){Jd(e,{agentId:c.agentId,agentInfo:d});return}}}l&&(e.agents.find(d=>d.id===l&&d.online)?e.selectAgent(l):e.checkPendingRecovery())}}function tu(e,t){let s=e.pendingAgentSelection||null;if(s){if(!(typeof t.requestId=="string"&&t.requestId?t.requestId===s.requestId:t.agentId===s.agentId))return!1;if(e.pendingAgentSelection=null,t.ok===!1)return e.agentSwitching=!1,!1}else{if(t.requestId)return!1;if(e.currentAgent&&t.agentId!==e.currentAgent)return!1}e.agentSwitching=!1;let n=e.currentAgent===t.agentId,r={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,r):(e.currentAgent=t.agentId,e.currentAgentInfo=r),Array.isArray(t.slashCommands)){let u=[...new Set(t.slashCommands)];e.slashCommandsMap[`agent:${t.agentId}`]=u}t.slashCommandDescriptions&&(e.slashCommandDescriptions={...e.slashCommandDescriptions,...t.slashCommandDescriptions});let i=t.conversations||[],o=new Set,a=i.filter(u=>o.has(u.id)?!1:(o.add(u.id),!0)).map(u=>({...u,agentId:t.agentId,agentName:t.agentName}));if(n&&e.currentConversation){let u=i.find(f=>f.id===e.currentConversation);u&&!a.find(f=>f.id===u.id)&&a.push({...u,agentId:t.agentId,agentName:t.agentName})}let l=new Set(a.map(u=>u.id)),c=e.conversations.filter(u=>!l.has(u.id));e.conversations=[...c,...a];for(let u of i)u.title&&(u.customTitle&&(e.customConversationTitles[u.id]=u.title),e.conversationTitles[u.id]||(e.conversationTitles[u.id]=u.title));let d=new Set(i.map(u=>u.id));for(let u of i)if(u.processing&&!Rs(e,u.id)&&!e._turnCompletedConvs?.has(u.id))e.processingConversations[u.id]=!0;else if(e.processingConversations[u.id]){delete e.processingConversations[u.id],Ce(e,u.id);let f=e.executionStatusMap[u.id];f&&(f.currentTool=null),e.finishStreamingForConversation(u.id)}for(let u of Object.keys(e.processingConversations))if(!d.has(u)){if(u.startsWith("yeaft-"))continue;if(!c.some(p=>p.id===u)){delete e.processingConversations[u],Ce(e,u);let p=e.executionStatusMap[u];p&&(p.currentTool=null),e.finishStreamingForConversation(u)}}if(e.currentView!=="yeaft"){if(n&&e.currentConversation){let u=e.conversations.find(f=>f.id===e.currentConversation);e.currentWorkDir=u?.workDir||e.currentWorkDir||t.workDir,xt(e),e.sendWsMessage({type:"select_conversation",conversationId:e.currentConversation})}else{e.activeConversations=[],e.currentWorkDir=t.workDir;let u=e.lastViewedConversation||localStorage.getItem("lastViewedConversation");u&&e.conversations.find(f=>f.id===u)&&(e.autoRestoreConversation(u),e.pendingRecovery=null)}Kc(e)}return!0}var su=N(()=>{as();Ts();ir()});function Kv(e={}){return{providers:e.providers||[],primaryModel:e.primaryModel||null,fastModel:e.fastModel||null,language:e.language||"en"}}function nu(){return window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore()}function Qv(e,t){let s=t.agentId||null,n=Array.isArray(e.yeaftSessionHydrateSlices)?e.yeaftSessionHydrateSlices.filter(r=>r.agentId!==s):[];e.yeaftSessionHydrateSlices=[...n,{agentId:s,sessions:Array.isArray(t.sessions)?t.sessions:[]}]}function Zv(e){let t=nu(),s=null;try{s=localStorage.getItem("lastViewedYeaftSession")||null}catch{}let n=gr(s),r=e.yeaftActiveSessionFilter||t?.activeSessionId||null;if(r){let i=t?.activeSessionKey?t.sessions?.[t.activeSessionKey]:null;return i?.id===r&&i.agentId?{sessionId:r,agentId:i.agentId}:n.sessionId===r&&n.agentId?n:{sessionId:r,agentId:null}}return n}function ru(e){let t=nu(),s=Zv(e);typeof t?.beginInventoryCommit=="function"?t.beginInventoryCommit(s.sessionId,s.agentId):typeof t?.resetInventory=="function"&&t.resetInventory();let n=Array.isArray(e.yeaftSessionHydrateSlices)?e.yeaftSessionHydrateSlices:[],r=s.agentId?[...n.filter(i=>i.agentId===s.agentId),...n.filter(i=>i.agentId!==s.agentId)]:n;r.length===0&&t?.applySnapshot?.([],null),r.forEach((i,o)=>{t?.applySnapshot?.(i.sessions||[],i.agentId||null,{deferActivation:o<r.length-1})}),e.yeaftSessionHydrateSlices=[]}function Xv(e){let t=e.yeaftSessionHydrateRequestId||null;e.yeaftSessionInventoryCompleteSupported!==!1||!t||(clearTimeout(e._legacyYeaftSessionHydrateTimer),e._legacyYeaftSessionHydrateTimer=setTimeout(()=>{e.yeaftSessionHydrateRequestId===t&&(e._legacyYeaftSessionHydrateTimer=null,ru(e),e._hasHandledYeaftSessionHydrate=!0,e.yeaftSessionHydrateRequestId=null,e.yeaftSessionHydrateError=null,e._yeaftSessionInventorySocketQuarantined=!0)},Gv))}function Jv(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 r={systemPrompt:t.systemPrompt||"",messages:Array.isArray(t.messages)?t.messages:[],rawRequest:null};return Object.prototype.hasOwnProperty.call(t,"rawRequestDelta")&&(r.rawRequest=wi(null,t.rawRequestDelta)),r}if(typeof t?.systemPrompt=="string"&&(n.systemPrompt=t.systemPrompt),Array.isArray(t?.messages))n.messages=t.messages;else if(Array.isArray(t?.messagesAppend)){let r=Number.isFinite(Number(t.messagesFrom))?Number(t.messagesFrom):n.messages.length;n.messages=n.messages.slice(0,r).concat(t.messagesAppend)}return Object.prototype.hasOwnProperty.call(t||{},"rawRequestDelta")&&(n.rawRequest=wi(n.rawRequest,t.rawRequestDelta)),n}function ey(e=[]){let t=new Map;return e.map(s=>{if(!s||!s.requestDelta)return s;let n=s.turnId||"__unknown__",r=t.get(n)||s.requestBase||null,i=r?.rawRequest??null,o=Jv(r,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:i}})}function iu(e,t){let s=De();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){if(e.authenticated=!0,t.sessionKey&&(e.sessionKey=bt(t.sessionKey),s.setSessionKey(t.sessionKey)),t.acceptPlaintext===!0&&(e.serverEncryptionRequired=!1),e.yeaftSessionInventoryCompleteSupported=t.yeaftSessionInventoryComplete===!0,e.yeaftSessionHydrateSlices=[],e._hasHandledYeaftSessionHydrate=!1,e.yeaftSessionHydrateError=null,t.role&&(s.role=t.role),typeof e.requestYeaftSessionInventory=="function")e.requestYeaftSessionInventory();else{let n=e.conversations.map(r=>r.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||Le("login.error.loginFailed")}),s.handleAuthFailure?.(void 0,t._wsAuthToken,t._wsAuthGeneration);break;case"agent_list":eu(e,t);break;case"yeaft_session_hydrate":{if(e.yeaftSessionInventoryCompleteSupported===!0&&(!t.requestId||t.requestId!==e.yeaftSessionHydrateRequestId)||e.yeaftSessionInventoryCompleteSupported!==!0&&!e.yeaftSessionHydrateRequestId||t.requestId&&e.yeaftSessionHydrateRequestId&&t.requestId!==e.yeaftSessionHydrateRequestId)break;Qv(e,t),e.yeaftSessionInventoryCompleteSupported!==!0&&Xv(e);break}case"yeaft_session_hydrate_complete":if(e.yeaftSessionInventoryCompleteSupported===!0&&(!t.requestId||t.requestId!==e.yeaftSessionHydrateRequestId)||e.yeaftSessionHydrateRequestId&&!t.requestId||t.requestId&&e.yeaftSessionHydrateRequestId&&t.requestId!==e.yeaftSessionHydrateRequestId)break;clearTimeout(e._legacyYeaftSessionHydrateTimer),e._legacyYeaftSessionHydrateTimer=null,t.ok!==!1?ru(e):e.yeaftSessionHydrateSlices=[],e.yeaftSessionHydrateRequestId=null,e._hasHandledYeaftSessionHydrate=t.ok!==!1,e.yeaftSessionHydrateError=t.ok===!1?t.error||"session_inventory_failed":null;break;case"session_catalog_snapshot":e.applySessionCatalogSnapshot(t.catalog,t.projectsAuthoritative===!0?t.projects:null,t.hiddenCatalog);break;case"session_ui_metadata_updated":e.finishSessionCatalogMutation?.(t);break;case"session_catalog_reorder_result":e.finishSessionCatalogMutation?.(t);break;case"agent_selected":if(!tu(e,t))break;e.workCenterOpen&&e.workCenterAgentId&&e.listWorkItems(e.workCenterAgentId).catch(()=>{});break;case"conversation_created":Hd(e,t);break;case"conversation_resumed":Od(e,t);break;case"conversation_selected":if(e.currentConversation===t.conversationId)return;e.activeConversations=[t.conversationId];{let n=e.conversations.find(r=>r.id===t.conversationId);n&&(e.currentWorkDir=n.workDir)}e.messagesMap[t.conversationId]=[],e.saveOpenSessions();break;case"conversation_settings_updated":{let n=e.conversations.find(i=>i.id===t.conversationId);n&&t.disallowedTools!==void 0&&(n.disallowedTools=t.disallowedTools);let r=e.conversationMcpServers[t.conversationId];if(r&&t.disallowedTools){let i=new Set(t.disallowedTools),o=e.conversationMcpServerTools[t.conversationId]||{};for(let a of r){let l=o[a.name];l&&l.length>0?a.enabled=!l.some(c=>i.has(c)):a.enabled=!i.has(`mcp__${a.name}`)}}t.needRestart&&n&&(n.needRestart=!0);break}case"sync_messages_result":Wd(e,t);break;case"conversation_deleted":Ma(e,t);break;case"conversation_delete_result":t.ok&&Ma(e,t);break;case"turn_completed":Fd(e,t);break;case"conversation_closed":Bd(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.yeaftConversationIdsByAgent?.[t.agentId]||e.yeaftConversationId;if(!n||!t.image)break;e.messagesMap[n]||(e.messagesMap[n]=[]),e.messagesMap[n].some(i=>i?.type==="chat-image"&&i.assetId===t.image.assetId&&i.sessionId===t.sessionId&&i.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":Kd(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=e.pendingYeaftHistoryWindow?.(t);if(!n||(n.pending?.prefetch===!0&&(t.prefetch=!0),e.pendingYeaftHistoryWindow?.(t)?.pending!==n.pending))break;let r=t.error?null:jd(e,t);e.handleYeaftHistoryWindow(t,r);break}case"yeaft_tool_stats":{e._fetchYeaftToolStatsTimer&&(clearTimeout(e._fetchYeaftToolStatsTimer),e._fetchYeaftToolStatsTimer=null);let n=t?.snapshot,r=n&&typeof n=="object"&&!Array.isArray(n)?n:{};e.yeaftToolStats={snapshot:r,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:"",r=typeof t?.detailTurnId=="string"&&t.detailTurnId,i=r?e._yeaftDebugHistoryLatestDetailRequestId:e._yeaftDebugHistoryLatestListRequestId;if(i&&n!==i||!i&&n)break;e._fetchYeaftDebugHistoryTimer&&(clearTimeout(e._fetchYeaftDebugHistoryTimer),e._fetchYeaftDebugHistoryTimer=null),e._yeaftDebugHistoryInFlightKey=null;let o=Array.isArray(t?.turns)?t.turns:[],a=t?.search?Yv:zv,l=r?o:o.slice(-a),c=new Set(l.map(b=>b?.turnId).filter(Boolean)),d=ey(Array.isArray(t?.loops)?t.loops:[]),u=r?d:d.filter(b=>!b?.turnId||c.has(b.turnId)),f=Array.isArray(t?.dreamEvents)?t.dreamEvents:[];e.yeaftDebugHistoryHasMore=!!t?.hasMore||!r&&o.length>l.length,!t?.detailTurnId&&Number.isFinite(t?.limit)&&t.limit>0&&(e.yeaftDebugHistoryLimit=Math.min(a,t.limit)),(!e.yeaftDebugTurnsById||typeof e.yeaftDebugTurnsById!="object")&&(e.yeaftDebugTurnsById={}),Array.isArray(e.yeaftDebugLoops)||(e.yeaftDebugLoops=[]),Array.isArray(e.yeaftDebugTurnOrder)||(e.yeaftDebugTurnOrder=[]);let p=r?{...e.yeaftDebugTurnsById}:{};for(let b of l){let M=b?.turnId;if(!M)continue;let x=p[M];if(x){let D=b?.detailsLoaded?{...x,...b}:{...b,...x};D.memoryLoaded==null&&x.memoryLoaded!=null&&(D.memoryLoaded=x.memoryLoaded),D.memoryAdjust==null&&x.memoryAdjust!=null&&(D.memoryAdjust=x.memoryAdjust),p[M]=D}else p[M]=b}e.yeaftDebugTurnsById=p;let g=b=>b?.loopInstanceId||`${b?.turnId||""}#${b?.loopNumber||0}`,m=e.yeaftDebugLoops,v=new Map;for(let b of m)b&&v.set(g(b),b);let k=new Set,w=[];for(let b of u){if(!b)continue;let M=g(b);k.add(M);let x=v.get(M);w.push(r?{...x||{},...b}:x||b)}if(r)for(let b of m)!b||k.has(g(b))||w.push(b);e.yeaftDebugLoops=w;let I=new Set,h=[],y=b=>{!b||I.has(b)||(I.add(b),h.push(b))};if(r){for(let b of e.yeaftDebugTurnOrder)y(b);for(let b of l)y(b?.turnId)}else for(let b of l)y(b?.turnId);e.yeaftDebugTurnOrder=r?h:h.slice(-a);for(let b of f){if(!b)continue;let M=null,x=b.sessionId||b.groupId;typeof b.target=="string"&&b.target.includes("/")?M=b.target:typeof x=="string"&&x?M=`group/${x}`:M="*",typeof e._appendDreamEvent=="function"&&e._appendDreamEvent(M,b),b.type==="dream_progress"&&typeof e.handleYeaftOutput=="function"&&e.handleYeaftOutput({event:b})}e.yeaftDebugHistoryLoading=!1,e.yeaftDebugHistoryError=typeof t?.error=="string"?t.error:null,e.yeaftDebugHistoryFetchedAt=Date.now(),r&&e.yeaftDebugPanel&&e.yeaftDebugPanel.turnId===t.detailTurnId&&(e.yeaftDebugPanel={...e.yeaftDebugPanel,status:e.yeaftDebugHistoryError?"error":"ready",error:e.yeaftDebugHistoryError});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,r=["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"))&&xt(e),["No conversation selected","Agent is still syncing","No agent available"].some(c=>t.message?.includes(c))&&n&&(delete e.processingConversations[n],Ce(e,n),e.finishStreamingForConversation(n)),r&&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 f=e.messagesMap[n];if(f){let p=f.findIndex(g=>g.id===u.id);p>=0&&f.splice(p,1)}},5e3));return}break}}}let o=Date.now().toString()+Math.random().toString(36).substr(2,9),a={type:"error",content:t.message,transient:r,dbMessageId:r?"err_"+o:void 0};r&&(a._sysErrBaseContent=t.message,a._sysErrCount=1,a._sysErrFirstAt=Date.now()),e.addMessageToConversation(n,a);let l=null;if(r&&n){let c=e.messagesMap[n];c&&c.length>0&&(l=c[c.length-1])}if(r&&n&&l){let c=n,d="err_"+o;l._sysErrRemoveTimer=setTimeout(()=>{let u=e.messagesMap[c];if(u){let f=u.findIndex(p=>p.id===d);f>=0&&u.splice(f,1)}},5e3)}!r&&n&&(delete e.processingConversations[n],Ce(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":Nd(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 r=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();r&&typeof r.applyPinState=="function"&&r.applyPinState(t.conversationId,!!t.pinned,t.agentId||e.yeaftSessionAgentById?.[t.conversationId]||e.currentAgent||null)}catch{}}break;case"execution_cancelled":qd(e,t);break;case"slash_commands_update":if(Array.isArray(t.slashCommands)){let n=[...new Set(t.slashCommands)];if(t.commandSet==="yeaft"){let r=t.conversationId&&t.conversationId!=="__preload__"?t.conversationId:null,i=t.agentId&&e.yeaftConversationIdsByAgent?.[t.agentId]||null,o=r||i;o&&(e.slashCommandsMap[o]=n);let a=e.yeaftConversationId||null,l=t.agentId?e.currentAgent===t.agentId&&(i===a||r===a):r===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"){Ce(e,n),xd(e,n);break}if(t.status==="ok")e.sessionHealth?.[n]&&delete e.sessionHealth[n],!t.isProcessing&&e.processingConversations[n]&&(delete e.processingConversations[n],Ce(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 r=e.conversations.find(i=>i.id===n);e.sendWsMessage({type:"refresh_conversation",conversationId:n,agentId:r?.agentId})}delete e.processingConversations[n],Ce(e,n),e.finishStreamingForConversation(n)}break}case"ask_user_question":if(t.conversationId){let n=()=>{let r=e.messagesMap[t.conversationId]||[];for(let i=r.length-1;i>=0;i--)if(r[i].type==="tool-use"&&r[i].toolName==="AskUserQuestion"&&!r[i].askRequestId)return r[i].askRequestId=t.requestId,r[i].askQuestions=t.questions,!0;return!1};if(!n()){let r=0,i=setInterval(()=>{r++,(n()||r>=10)&&clearInterval(i)},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,minimumVersion:t.minimumVersion}}));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||Kv(t),r=t.effectiveConfig||n;e.llmConfig[t.agentId]={providers:t.providers||r.providers||[],primaryModel:t.primaryModel||r.primaryModel||null,fastModel:t.fastModel||r.fastModel||null,language:t.language||n.language||r.language||"en",needsSetup:t.needsSetup??r.needsSetup??!1,agentConfig:n,effectiveConfig:r,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 r of n.resolvers)r(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"telemetry_settings":case"telemetry_settings_updated":{let n={enabled:t.enabled!==!1,retentionDays:t.retentionDays??3,flushIntervalMs:t.flushIntervalMs??1e3,maxQueueSize:t.maxQueueSize??5e3,rawExchangeMaxBytes:t.rawExchangeMaxBytes??524288,traceTextMaxBytes:t.traceTextMaxBytes??262144,error:t.error||null,loaded:!0,at:Date.now()};e.telemetrySettings=n;let r=e._telemetryPending,i=t.type==="telemetry_settings"?"load":"update";r&&r[i]&&(r[i](n),delete r[i]);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 r=e._searchPending,i=t.type==="search_settings"?"load":"update";r&&r[i]&&(r[i](n),delete r[i]);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 r=e._searchPending;r&&r.usage&&(r.usage(n),delete r.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 zv,Yv,Gv,ou=N(()=>{St();ei();Nt();as();Ts();_a();mr();su();bi();zv=1,Yv=5,Gv=500});function lu(){return Object.values(au).sort((t,s)=>t.order-s.order).map(t=>({teamId:t.id,team:t,roles:Object.values(Ct).filter(s=>s.group===t.id)}))}function cu(e){let t=[];for(let s of Object.values(Ct)){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 $s(e,t){let s=Ct[e.role];if(s){if(e.action){let n=s.actions.find(r=>r.id===e.action);return n?`${s.name}\xB7${n.name}`:s.name}return s.name}if(t){let n=t.find(r=>r.id===e.role);if(n){if(e.action){let r=n.actions?.find(i=>i.id===e.action);return r?`${n.name}\xB7${r.name}`:n.name}return n.name}}return e.role}function La(e,t,s,n="zh-CN"){if(!e||e.length===0||!t||t.length===0)return null;let r=n==="zh-CN";if(!e.some(l=>!Ct[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(f=>f.id===l);if(!d)return null;let u;if(c&&d.actions){let f=d.actions.find(p=>p.id===c);f?s?(u=(r?f.messageTemplate:f.messageTemplateEn)||"",u+=s):u=(r?f.defaultMessage:f.defaultMessageEn)||"":u=((r?d.messagePrefix:d.messagePrefixEn)||"")+(s||"")}else u=((r?d.messagePrefix:d.messagePrefixEn)||"")+(s||"");return{effectivePrompt:u}}let o=[];for(let{role:l,action:c}of e){let d=t.find(f=>f.id===l),u=Ct[l];if(d)if(c){let f=d.actions?.find(p=>p.id===c);f&&o.push((r?f.messageTemplate:f.messageTemplateEn)||"")}else o.push((r?d.messagePrefix:d.messagePrefixEn)||"");else if(u)return null}return o.length===0?null:{effectivePrompt:o.join(`
3
+ ${f}`:f,p=!0;break}}if(!p){for(let g=c.length-1;g>=0;g--)if(c[g].type==="tool-use"&&!c[g].hasResult){c[g].hasResult=!0,c[g].toolResult=f;break}}}r.currentTool=null}else if(!i&&(typeof a=="string"&&a.trim()||Array.isArray(s.message?.attachments)&&s.message.attachments.length>0)){let c=s.message?.clientMessageId||s.clientMessageId||null,d={type:"user",content:a,clientMessageId:c},u=e.messagesMap[t]||[];if(u.some(p=>hi(p,d))){if(c){for(let p=u.length-1;p>=0;p--)if(u[p].type==="user"&&u[p].clientMessageId===c){s.dbMessageId&&!u[p].dbMessageId&&(u[p].dbMessageId=s.dbMessageId),s.message?.id&&!u[p].messageId&&(u[p].id=s.message.id,u[p].messageId=s.message.id),s.ts&&!u[p].ts&&(u[p].ts=s.ts),zd(e,u[p],n);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:a,...s.message?.attachments?{attachments:s.message.attachments}:{},...s.message?.quote?{quote:s.message.quote}:{},...c?{clientMessageId:c}:{}});zd(e,p,n)}}}else if(s.type==="result"){delete e.processingConversations[t],Ce(e,t);let i=e.conversations.find(d=>d.id===t);i&&i.connecting&&(i.connecting=!1);let o=e._currentYeaftSessionId||null;if(e._currentYeaftTurnId){let d=Object.entries(e.activeVpTurns||{}).find(([,u])=>(u?.turnId===e._currentYeaftTurnId||!u?.turnId&&u===e.activeVpTurns[e._currentYeaftTurnId])&&(!e._currentYeaftAgentId||!u?.agentId||u.agentId===e._currentYeaftAgentId));if(d){let[u,f]=d,{[u]:p,...g}=e.activeVpTurns;!o&&f?.sessionId&&(o=f.sessionId),e.activeVpTurns=g}}if(o&&e._currentYeaftVpId&&e.vpStatuses){let d=e._currentYeaftTurnId||null,u={...e.vpStatuses||{}},f=!1;for(let[p,g]of Object.entries(u))!g||g.vpId!==e._currentYeaftVpId||e._currentYeaftAgentId&&g.agentId&&g.agentId!==e._currentYeaftAgentId||(g.sessionId||g.groupId||null)!==o||d&&g.turnId&&g.turnId!==d||(u[p]={...g,state:"idle",turnId:null,since:Date.now()},f=!0);f&&(e.vpStatuses=u)}o&&typeof e.clearYeaftSessionProcessingIfIdle=="function"&&e.clearYeaftSessionProcessingIfIdle(o,{agentId:e._currentYeaftAgentId||null}),e._closedAt||(e._closedAt={}),e._closedAt[t]=Date.now(),e._turnCompletedConvs||(e._turnCompletedConvs=new Set),e._turnCompletedConvs.add(t),r.currentTool=null,ls(e,t);let a=e.messagesMap[t]||[],l=s.result_text||"";if(typeof l=="string"&&l.trim()){let d=!1;for(let u=a.length-1;u>=0;u--){if(a[u].type==="assistant"){d=!0;break}if(a[u].type==="user")break}d||e.appendToAssistantMessageForConversation(t,l.trim())}e.finishStreamingForConversation(t),!(n&&e.promoteCompletedYeaftHistoryOutline?.(t,e._currentYeaftTurnId||null,n))&&o&&n&&e.invalidateYeaftHistoryOutline?.(o,n),e.sweepStaleStreamingForConversation(t),o&&n&&e.pruneConversationMessageRetention?.(t,o,n)}}var Gd=N(()=>{as();bi();Ia()});function Ls(e){if(e==null)return e;try{return JSON.parse(JSON.stringify(e))}catch{return e}}function wi(e,t){if(!t)return e??null;if(Object.prototype.hasOwnProperty.call(t,"base"))return Ls(t.base)??null;if(Object.prototype.hasOwnProperty.call(t,"replacement"))return Ls(t.replacement)??null;let s=e&&typeof e=="object"&&!Array.isArray(e)?Ls(e):{};if(t.set&&typeof t.set=="object")for(let[n,r]of Object.entries(t.set))s[n]=Ls(r);if(t.body&&typeof t.body=="object"){let n=s.body&&typeof s.body=="object"&&!Array.isArray(s.body)?{...s.body}:{};for(let[i,o]of Object.entries(t.body))i==="messages"||i==="messagesFrom"||i==="messagesAppend"||i==="messagesKey"||(n[i]=Ls(o));let r=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[r]=Ls(t.body.messages)||[];else if(Array.isArray(t.body.messagesAppend)){let i=Array.isArray(n[r])?n[r]:[],o=Number.isFinite(Number(t.body.messagesFrom))?Number(t.body.messagesFrom):i.length;n[r]=i.slice(0,o).concat(Ls(t.body.messagesAppend)||[])}s.body=n}return s}function Qd(e,t){return!t||!Object.prototype.hasOwnProperty.call(t,"rawRequestDelta")?e??null:wi(e??null,t.rawRequestDelta)}function fr(e){if(!e)return 0;let t=typeof e=="string"?e:String(e),s=0,n=0;for(let r of t){let i=r.codePointAt(0)||0;i>=19968&&i<=40959||i>=12352&&i<=12447||i>=12448&&i<=12543||i>=44032&&i<=55215?s+=1:n+=1}return Math.ceil(s+n/4)}function jv(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 r of n){if(!r||typeof r!="object")continue;let i=r.type;if(i==="text"&&typeof r.text=="string")t.push(r.text);else if(i==="tool_use"){if(s.push(String(r.name||"")),r.input!==void 0)try{s.push(JSON.stringify(r.input))}catch{}}else if(i==="tool_result"){let o=r.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(r))}catch{}}if(Array.isArray(e.toolCalls)){for(let r of e.toolCalls)if(r&&(s.push(String(r.name||"")),r.input!==void 0))try{s.push(JSON.stringify(r.input))}catch{}}return{messageText:t,toolText:s}}function Xd(e){let t=0,s=0;if(e&&Array.isArray(e.messages))for(let i of e.messages){let{messageText:o,toolText:a}=jv(i);for(let l of o)t+=fr(l);for(let l of a)s+=fr(l)}let n=0,r=0;if(e&&typeof e.response=="string"&&(n+=fr(e.response)),e&&Array.isArray(e.toolCalls)){for(let i of e.toolCalls)if(i&&(r+=fr(String(i.name||"")),i.input!==void 0))try{r+=fr(JSON.stringify(i.input))}catch{}}return{inputMessageTokens:t,inputToolTokens:s,outputMessageTokens:n,outputToolTokens:r,inputTotalEstimated:t+s,outputTotalEstimated:n+r}}function Ra(e,t,s){let n=Math.max(0,Math.floor(Number(e)||0)),r=Math.max(0,Number(t)||0),i=Math.max(0,Number(s)||0),o=r+i;if(n===0)return{message:0,tool:0};if(o===0)return{message:n,tool:0};let a=Math.round(r/o*n),l=Math.min(n,Math.max(0,a));return{message:l,tool:n-l}}function Zd(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"),r=String(s.getMinutes()).padStart(2,"0"),i=String(s.getSeconds()).padStart(2,"0");return`${n}:${r}:${i}`}var _a=N(()=>{});function It(e,t){return!e||!t?"":`${e}${t}`}function gr(e){let t=typeof e=="string"?e:String(e||"");if(!t)return{agentId:null,sessionId:null};let s=t.indexOf("");if(s<0)return{agentId:null,sessionId:t};let n=t.slice(0,s)||null,r=t.slice(s+1)||null;return{agentId:n,sessionId:r}}function Ea(e){return e?`${e}`:""}function Da(e,t){return!e||!t?"":`${e}${t}`}var mr=N(()=>{});function Uv(e,t){if(!e||!!!t?.online)return!1;let n=!e.online,r=e.online&&e.version!=null&&t.version!=null&&e.version!==t.version;return n||r}function Jd(e,t){let s=e.lastViewedConversation||localStorage.getItem("lastViewedConversation");if(!s)return!1;let n=e.conversations.find(i=>i.id===s);if(!n)return!1;let r=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.requestChatHistory?.(s,{mode:"recent",turns:5}),e.sendWsMessage({type:"refresh_conversation",conversationId:s}),!0}function eu(e,t){let s=Array.isArray(e.agents)?e.agents:[],n=e._hasHandledAgentList===!0,r=e.currentAgent||null,i=!!(r&&s.some(a=>a&&a.id===r&&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(d=>d.id===o)||null;(e.currentView==="yeaft"||e.workCenterOpen&&e.workCenterAgentId===o)&&Uv(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(f=>f.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 f=e._recentlyDeletedSessions?.[d.id];if(f&&Date.now()-f<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],Ce(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&&!Rs(e,d.id)&&!e._turnCompletedConvs?.has(d.id))e.processingConversations[d.id]=!0;else if(e.processingConversations[d.id]){delete e.processingConversations[d.id],Ce(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],Ce(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&&!i;if(e.currentAgentInfo=a,d&&(e._offlineConversationRestoreKey=null,e.sendWsMessage({type:"select_agent",agentId:e.currentAgent,silent:!0})),d&&e.workCenterOpen&&e.workCenterAgentId===e.currentAgent&&typeof e.listWorkItems=="function"){let u=e._workCenterListFiltersByAgent?.[e.workCenterAgentId]||{};e.listWorkItems(e.workCenterAgentId,u).catch(()=>{})}if(e._yeaftReconnectCatchUpPending=!1,e.currentView==="yeaft"&&typeof e.requestYeaftSessionBootstrap=="function"){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(g=>g.id===e.currentConversation);e.sendWsMessage({type:"select_conversation",conversationId:e.currentConversation});let f=e.messagesMap[e.currentConversation]||[],p=Ps(f);p!=null?e.requestChatHistory?.(e.currentConversation,{mode:"delta",afterMessageId:p}):e.requestChatHistory?.(e.currentConversation,{mode:"recent",turns:5}),e.sendWsMessage({type:"refresh_conversation",conversationId:e.currentConversation})}else e.recoveryDismissed||Jd(e);return}else{let l=`${e.currentAgent||""}:${e.currentConversation||""}`;e.currentConversation&&(!n||i||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){Jd(e,{agentId:c.agentId,agentInfo:d});return}}}l&&(e.agents.find(d=>d.id===l&&d.online)?e.selectAgent(l):e.checkPendingRecovery())}}function tu(e,t){let s=e.pendingAgentSelection||null;if(s){if(!(typeof t.requestId=="string"&&t.requestId?t.requestId===s.requestId:t.agentId===s.agentId))return!1;if(e.pendingAgentSelection=null,t.ok===!1)return e.agentSwitching=!1,!1}else{if(t.requestId)return!1;if(e.currentAgent&&t.agentId!==e.currentAgent)return!1}e.agentSwitching=!1;let n=e.currentAgent===t.agentId,r={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,r):(e.currentAgent=t.agentId,e.currentAgentInfo=r),Array.isArray(t.slashCommands)){let u=[...new Set(t.slashCommands)];e.slashCommandsMap[`agent:${t.agentId}`]=u}t.slashCommandDescriptions&&(e.slashCommandDescriptions={...e.slashCommandDescriptions,...t.slashCommandDescriptions});let i=t.conversations||[],o=new Set,a=i.filter(u=>o.has(u.id)?!1:(o.add(u.id),!0)).map(u=>({...u,agentId:t.agentId,agentName:t.agentName}));if(n&&e.currentConversation){let u=i.find(f=>f.id===e.currentConversation);u&&!a.find(f=>f.id===u.id)&&a.push({...u,agentId:t.agentId,agentName:t.agentName})}let l=new Set(a.map(u=>u.id)),c=e.conversations.filter(u=>!l.has(u.id));e.conversations=[...c,...a];for(let u of i)u.title&&(u.customTitle&&(e.customConversationTitles[u.id]=u.title),e.conversationTitles[u.id]||(e.conversationTitles[u.id]=u.title));let d=new Set(i.map(u=>u.id));for(let u of i)if(u.processing&&!Rs(e,u.id)&&!e._turnCompletedConvs?.has(u.id))e.processingConversations[u.id]=!0;else if(e.processingConversations[u.id]){delete e.processingConversations[u.id],Ce(e,u.id);let f=e.executionStatusMap[u.id];f&&(f.currentTool=null),e.finishStreamingForConversation(u.id)}for(let u of Object.keys(e.processingConversations))if(!d.has(u)){if(u.startsWith("yeaft-"))continue;if(!c.some(p=>p.id===u)){delete e.processingConversations[u],Ce(e,u);let p=e.executionStatusMap[u];p&&(p.currentTool=null),e.finishStreamingForConversation(u)}}if(e.currentView!=="yeaft"){if(n&&e.currentConversation){let u=e.conversations.find(f=>f.id===e.currentConversation);e.currentWorkDir=u?.workDir||e.currentWorkDir||t.workDir,xt(e),e.sendWsMessage({type:"select_conversation",conversationId:e.currentConversation})}else{e.activeConversations=[],e.currentWorkDir=t.workDir;let u=e.lastViewedConversation||localStorage.getItem("lastViewedConversation");u&&e.conversations.find(f=>f.id===u)&&(e.autoRestoreConversation(u),e.pendingRecovery=null)}Kc(e)}return!0}var su=N(()=>{as();Ts();ir()});function Kv(e={}){return{providers:e.providers||[],primaryModel:e.primaryModel||null,fastModel:e.fastModel||null,language:e.language||"en"}}function nu(){return window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore()}function Qv(e,t){let s=t.agentId||null,n=Array.isArray(e.yeaftSessionHydrateSlices)?e.yeaftSessionHydrateSlices.filter(r=>r.agentId!==s):[];e.yeaftSessionHydrateSlices=[...n,{agentId:s,sessions:Array.isArray(t.sessions)?t.sessions:[]}]}function Xv(e){let t=nu(),s=null;try{s=localStorage.getItem("lastViewedYeaftSession")||null}catch{}let n=gr(s),r=e.yeaftActiveSessionFilter||t?.activeSessionId||null;if(r){let i=t?.activeSessionKey?t.sessions?.[t.activeSessionKey]:null;return i?.id===r&&i.agentId?{sessionId:r,agentId:i.agentId}:n.sessionId===r&&n.agentId?n:{sessionId:r,agentId:null}}return n}function ru(e){let t=nu(),s=Xv(e);typeof t?.beginInventoryCommit=="function"?t.beginInventoryCommit(s.sessionId,s.agentId):typeof t?.resetInventory=="function"&&t.resetInventory();let n=Array.isArray(e.yeaftSessionHydrateSlices)?e.yeaftSessionHydrateSlices:[],r=s.agentId?[...n.filter(i=>i.agentId===s.agentId),...n.filter(i=>i.agentId!==s.agentId)]:n;r.length===0&&t?.applySnapshot?.([],null),r.forEach((i,o)=>{t?.applySnapshot?.(i.sessions||[],i.agentId||null,{deferActivation:o<r.length-1})}),e.yeaftSessionHydrateSlices=[]}function Zv(e){let t=e.yeaftSessionHydrateRequestId||null;e.yeaftSessionInventoryCompleteSupported!==!1||!t||(clearTimeout(e._legacyYeaftSessionHydrateTimer),e._legacyYeaftSessionHydrateTimer=setTimeout(()=>{e.yeaftSessionHydrateRequestId===t&&(e._legacyYeaftSessionHydrateTimer=null,ru(e),e._hasHandledYeaftSessionHydrate=!0,e.yeaftSessionHydrateRequestId=null,e.yeaftSessionHydrateError=null,e._yeaftSessionInventorySocketQuarantined=!0)},Gv))}function Jv(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 r={systemPrompt:t.systemPrompt||"",messages:Array.isArray(t.messages)?t.messages:[],rawRequest:null};return Object.prototype.hasOwnProperty.call(t,"rawRequestDelta")&&(r.rawRequest=wi(null,t.rawRequestDelta)),r}if(typeof t?.systemPrompt=="string"&&(n.systemPrompt=t.systemPrompt),Array.isArray(t?.messages))n.messages=t.messages;else if(Array.isArray(t?.messagesAppend)){let r=Number.isFinite(Number(t.messagesFrom))?Number(t.messagesFrom):n.messages.length;n.messages=n.messages.slice(0,r).concat(t.messagesAppend)}return Object.prototype.hasOwnProperty.call(t||{},"rawRequestDelta")&&(n.rawRequest=wi(n.rawRequest,t.rawRequestDelta)),n}function ey(e=[]){let t=new Map;return e.map(s=>{if(!s||!s.requestDelta)return s;let n=s.turnId||"__unknown__",r=t.get(n)||s.requestBase||null,i=r?.rawRequest??null,o=Jv(r,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:i}})}function iu(e,t){let s=De();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){if(e.authenticated=!0,t.sessionKey&&(e.sessionKey=bt(t.sessionKey),s.setSessionKey(t.sessionKey)),t.acceptPlaintext===!0&&(e.serverEncryptionRequired=!1),e.yeaftSessionInventoryCompleteSupported=t.yeaftSessionInventoryComplete===!0,e.yeaftSessionHydrateSlices=[],e._hasHandledYeaftSessionHydrate=!1,e.yeaftSessionHydrateError=null,t.role&&(s.role=t.role),typeof e.requestYeaftSessionInventory=="function")e.requestYeaftSessionInventory();else{let n=e.conversations.map(r=>r.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||Le("login.error.loginFailed")}),s.handleAuthFailure?.(void 0,t._wsAuthToken,t._wsAuthGeneration);break;case"agent_list":eu(e,t);break;case"yeaft_session_hydrate":{if(e.yeaftSessionInventoryCompleteSupported===!0&&(!t.requestId||t.requestId!==e.yeaftSessionHydrateRequestId)||e.yeaftSessionInventoryCompleteSupported!==!0&&!e.yeaftSessionHydrateRequestId||t.requestId&&e.yeaftSessionHydrateRequestId&&t.requestId!==e.yeaftSessionHydrateRequestId)break;Qv(e,t),e.yeaftSessionInventoryCompleteSupported!==!0&&Zv(e);break}case"yeaft_session_hydrate_complete":if(e.yeaftSessionInventoryCompleteSupported===!0&&(!t.requestId||t.requestId!==e.yeaftSessionHydrateRequestId)||e.yeaftSessionHydrateRequestId&&!t.requestId||t.requestId&&e.yeaftSessionHydrateRequestId&&t.requestId!==e.yeaftSessionHydrateRequestId)break;clearTimeout(e._legacyYeaftSessionHydrateTimer),e._legacyYeaftSessionHydrateTimer=null,t.ok!==!1?ru(e):e.yeaftSessionHydrateSlices=[],e.yeaftSessionHydrateRequestId=null,e._hasHandledYeaftSessionHydrate=t.ok!==!1,e.yeaftSessionHydrateError=t.ok===!1?t.error||"session_inventory_failed":null;break;case"session_catalog_snapshot":e.applySessionCatalogSnapshot(t.catalog,t.projectsAuthoritative===!0?t.projects:null,t.hiddenCatalog);break;case"session_ui_metadata_updated":e.finishSessionCatalogMutation?.(t);break;case"session_catalog_reorder_result":e.finishSessionCatalogMutation?.(t);break;case"agent_selected":if(!tu(e,t))break;e.workCenterOpen&&e.workCenterAgentId&&e.listWorkItems(e.workCenterAgentId).catch(()=>{});break;case"conversation_created":Hd(e,t);break;case"conversation_resumed":Od(e,t);break;case"conversation_selected":if(e.currentConversation===t.conversationId)return;e.activeConversations=[t.conversationId];{let n=e.conversations.find(r=>r.id===t.conversationId);n&&(e.currentWorkDir=n.workDir)}e.messagesMap[t.conversationId]=[],e.saveOpenSessions();break;case"conversation_settings_updated":{let n=e.conversations.find(i=>i.id===t.conversationId);n&&t.disallowedTools!==void 0&&(n.disallowedTools=t.disallowedTools);let r=e.conversationMcpServers[t.conversationId];if(r&&t.disallowedTools){let i=new Set(t.disallowedTools),o=e.conversationMcpServerTools[t.conversationId]||{};for(let a of r){let l=o[a.name];l&&l.length>0?a.enabled=!l.some(c=>i.has(c)):a.enabled=!i.has(`mcp__${a.name}`)}}t.needRestart&&n&&(n.needRestart=!0);break}case"sync_messages_result":Wd(e,t);break;case"conversation_deleted":Ma(e,t);break;case"conversation_delete_result":t.ok&&Ma(e,t);break;case"turn_completed":Fd(e,t);break;case"conversation_closed":Bd(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.yeaftConversationIdsByAgent?.[t.agentId]||e.yeaftConversationId;if(!n||!t.image)break;e.messagesMap[n]||(e.messagesMap[n]=[]),e.messagesMap[n].some(i=>i?.type==="chat-image"&&i.assetId===t.image.assetId&&i.sessionId===t.sessionId&&i.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":Kd(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=e.pendingYeaftHistoryWindow?.(t);if(!n||(n.pending?.prefetch===!0&&(t.prefetch=!0),e.pendingYeaftHistoryWindow?.(t)?.pending!==n.pending))break;let r=t.error?null:jd(e,t);e.handleYeaftHistoryWindow(t,r);break}case"yeaft_tool_stats":{e._fetchYeaftToolStatsTimer&&(clearTimeout(e._fetchYeaftToolStatsTimer),e._fetchYeaftToolStatsTimer=null);let n=t?.snapshot,r=n&&typeof n=="object"&&!Array.isArray(n)?n:{};e.yeaftToolStats={snapshot:r,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:"",r=typeof t?.detailTurnId=="string"&&t.detailTurnId,i=r?e._yeaftDebugHistoryLatestDetailRequestId:e._yeaftDebugHistoryLatestListRequestId;if(i&&n!==i||!i&&n)break;e._fetchYeaftDebugHistoryTimer&&(clearTimeout(e._fetchYeaftDebugHistoryTimer),e._fetchYeaftDebugHistoryTimer=null),e._yeaftDebugHistoryInFlightKey=null;let o=Array.isArray(t?.turns)?t.turns:[],a=t?.search?Yv:zv,l=r?o:o.slice(-a),c=new Set(l.map(b=>b?.turnId).filter(Boolean)),d=ey(Array.isArray(t?.loops)?t.loops:[]),u=r?d:d.filter(b=>!b?.turnId||c.has(b.turnId)),f=Array.isArray(t?.dreamEvents)?t.dreamEvents:[];e.yeaftDebugHistoryHasMore=!!t?.hasMore||!r&&o.length>l.length,!t?.detailTurnId&&Number.isFinite(t?.limit)&&t.limit>0&&(e.yeaftDebugHistoryLimit=Math.min(a,t.limit)),(!e.yeaftDebugTurnsById||typeof e.yeaftDebugTurnsById!="object")&&(e.yeaftDebugTurnsById={}),Array.isArray(e.yeaftDebugLoops)||(e.yeaftDebugLoops=[]),Array.isArray(e.yeaftDebugTurnOrder)||(e.yeaftDebugTurnOrder=[]);let p=r?{...e.yeaftDebugTurnsById}:{};for(let b of l){let M=b?.turnId;if(!M)continue;let x=p[M];if(x){let D=b?.detailsLoaded?{...x,...b}:{...b,...x};D.memoryLoaded==null&&x.memoryLoaded!=null&&(D.memoryLoaded=x.memoryLoaded),D.memoryAdjust==null&&x.memoryAdjust!=null&&(D.memoryAdjust=x.memoryAdjust),p[M]=D}else p[M]=b}e.yeaftDebugTurnsById=p;let g=b=>b?.loopInstanceId||`${b?.turnId||""}#${b?.loopNumber||0}`,m=e.yeaftDebugLoops,v=new Map;for(let b of m)b&&v.set(g(b),b);let k=new Set,w=[];for(let b of u){if(!b)continue;let M=g(b);k.add(M);let x=v.get(M);w.push(r?{...x||{},...b}:x||b)}if(r)for(let b of m)!b||k.has(g(b))||w.push(b);e.yeaftDebugLoops=w;let I=new Set,h=[],y=b=>{!b||I.has(b)||(I.add(b),h.push(b))};if(r){for(let b of e.yeaftDebugTurnOrder)y(b);for(let b of l)y(b?.turnId)}else for(let b of l)y(b?.turnId);e.yeaftDebugTurnOrder=r?h:h.slice(-a);for(let b of f){if(!b)continue;let M=null,x=b.sessionId||b.groupId;typeof b.target=="string"&&b.target.includes("/")?M=b.target:typeof x=="string"&&x?M=`group/${x}`:M="*",typeof e._appendDreamEvent=="function"&&e._appendDreamEvent(M,b),b.type==="dream_progress"&&typeof e.handleYeaftOutput=="function"&&e.handleYeaftOutput({event:b})}e.yeaftDebugHistoryLoading=!1,e.yeaftDebugHistoryError=typeof t?.error=="string"?t.error:null,e.yeaftDebugHistoryFetchedAt=Date.now(),r&&e.yeaftDebugPanel&&e.yeaftDebugPanel.turnId===t.detailTurnId&&(e.yeaftDebugPanel={...e.yeaftDebugPanel,status:e.yeaftDebugHistoryError?"error":"ready",error:e.yeaftDebugHistoryError});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,r=["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"))&&xt(e),["No conversation selected","Agent is still syncing","No agent available"].some(c=>t.message?.includes(c))&&n&&(delete e.processingConversations[n],Ce(e,n),e.finishStreamingForConversation(n)),r&&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 f=e.messagesMap[n];if(f){let p=f.findIndex(g=>g.id===u.id);p>=0&&f.splice(p,1)}},5e3));return}break}}}let o=Date.now().toString()+Math.random().toString(36).substr(2,9),a={type:"error",content:t.message,transient:r,dbMessageId:r?"err_"+o:void 0};r&&(a._sysErrBaseContent=t.message,a._sysErrCount=1,a._sysErrFirstAt=Date.now()),e.addMessageToConversation(n,a);let l=null;if(r&&n){let c=e.messagesMap[n];c&&c.length>0&&(l=c[c.length-1])}if(r&&n&&l){let c=n,d="err_"+o;l._sysErrRemoveTimer=setTimeout(()=>{let u=e.messagesMap[c];if(u){let f=u.findIndex(p=>p.id===d);f>=0&&u.splice(f,1)}},5e3)}!r&&n&&(delete e.processingConversations[n],Ce(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":Nd(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 r=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();r&&typeof r.applyPinState=="function"&&r.applyPinState(t.conversationId,!!t.pinned,t.agentId||e.yeaftSessionAgentById?.[t.conversationId]||e.currentAgent||null)}catch{}}break;case"execution_cancelled":qd(e,t);break;case"slash_commands_update":if(Array.isArray(t.slashCommands)){let n=[...new Set(t.slashCommands)];if(t.commandSet==="yeaft"){let r=t.conversationId&&t.conversationId!=="__preload__"?t.conversationId:null,i=t.agentId&&e.yeaftConversationIdsByAgent?.[t.agentId]||null,o=r||i;o&&(e.slashCommandsMap[o]=n);let a=e.yeaftConversationId||null,l=t.agentId?e.currentAgent===t.agentId&&(i===a||r===a):r===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"){Ce(e,n),xd(e,n);break}if(t.status==="ok")e.sessionHealth?.[n]&&delete e.sessionHealth[n],!t.isProcessing&&e.processingConversations[n]&&(delete e.processingConversations[n],Ce(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 r=e.conversations.find(i=>i.id===n);e.sendWsMessage({type:"refresh_conversation",conversationId:n,agentId:r?.agentId})}delete e.processingConversations[n],Ce(e,n),e.finishStreamingForConversation(n)}break}case"ask_user_question":if(t.conversationId){let n=()=>{let r=e.messagesMap[t.conversationId]||[];for(let i=r.length-1;i>=0;i--)if(r[i].type==="tool-use"&&r[i].toolName==="AskUserQuestion"&&!r[i].askRequestId)return r[i].askRequestId=t.requestId,r[i].askQuestions=t.questions,!0;return!1};if(!n()){let r=0,i=setInterval(()=>{r++,(n()||r>=10)&&clearInterval(i)},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,minimumVersion:t.minimumVersion}}));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||Kv(t),r=t.effectiveConfig||n;e.llmConfig[t.agentId]={providers:t.providers||r.providers||[],primaryModel:t.primaryModel||r.primaryModel||null,fastModel:t.fastModel||r.fastModel||null,language:t.language||n.language||r.language||"en",needsSetup:t.needsSetup??r.needsSetup??!1,agentConfig:n,effectiveConfig:r,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 r of n.resolvers)r(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"telemetry_settings":case"telemetry_settings_updated":{let n={enabled:t.enabled!==!1,retentionDays:t.retentionDays??3,flushIntervalMs:t.flushIntervalMs??1e3,maxQueueSize:t.maxQueueSize??5e3,rawExchangeMaxBytes:t.rawExchangeMaxBytes??524288,traceTextMaxBytes:t.traceTextMaxBytes??262144,error:t.error||null,loaded:!0,at:Date.now()};e.telemetrySettings=n;let r=e._telemetryPending,i=t.type==="telemetry_settings"?"load":"update";r&&r[i]&&(r[i](n),delete r[i]);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 r=e._searchPending,i=t.type==="search_settings"?"load":"update";r&&r[i]&&(r[i](n),delete r[i]);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 r=e._searchPending;r&&r.usage&&(r.usage(n),delete r.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 zv,Yv,Gv,ou=N(()=>{St();ei();Nt();as();Ts();_a();mr();su();bi();zv=1,Yv=5,Gv=500});function lu(){return Object.values(au).sort((t,s)=>t.order-s.order).map(t=>({teamId:t.id,team:t,roles:Object.values(Ct).filter(s=>s.group===t.id)}))}function cu(e){let t=[];for(let s of Object.values(Ct)){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 $s(e,t){let s=Ct[e.role];if(s){if(e.action){let n=s.actions.find(r=>r.id===e.action);return n?`${s.name}\xB7${n.name}`:s.name}return s.name}if(t){let n=t.find(r=>r.id===e.role);if(n){if(e.action){let r=n.actions?.find(i=>i.id===e.action);return r?`${n.name}\xB7${r.name}`:n.name}return n.name}}return e.role}function La(e,t,s,n="zh-CN"){if(!e||e.length===0||!t||t.length===0)return null;let r=n==="zh-CN";if(!e.some(l=>!Ct[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(f=>f.id===l);if(!d)return null;let u;if(c&&d.actions){let f=d.actions.find(p=>p.id===c);f?s?(u=(r?f.messageTemplate:f.messageTemplateEn)||"",u+=s):u=(r?f.defaultMessage:f.defaultMessageEn)||"":u=((r?d.messagePrefix:d.messagePrefixEn)||"")+(s||"")}else u=((r?d.messagePrefix:d.messagePrefixEn)||"")+(s||"");return{effectivePrompt:u}}let o=[];for(let{role:l,action:c}of e){let d=t.find(f=>f.id===l),u=Ct[l];if(d)if(c){let f=d.actions?.find(p=>p.id===c);f&&o.push((r?f.messageTemplate:f.messageTemplateEn)||"")}else o.push((r?d.messagePrefix:d.messagePrefixEn)||"");else if(u)return null}return o.length===0?null:{effectivePrompt:o.join(`
4
4
  ---
5
5
 
6
- `)+(s||"")}}function uu(e){return Object.values(au).filter(t=>e||!t.adminOnly).sort((t,s)=>t.order-s.order)}var au,Ct,du,Vs,hr=N(()=>{au={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}},Ct={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"}]}};du="dev",Vs=3});function ry(e,t){return!t||!e?.yeaftConversationIdsByAgent?[]:Object.entries(e.yeaftConversationIdsByAgent).filter(([,s])=>s===t).map(([s])=>s).filter(Boolean)}function pu(){return`cm_${crypto.randomUUID()}`}function fu(e,t){if(t===e.currentAgent&&!e.pendingAgentSelection)return;let s=`agent_select_${crypto.randomUUID()}`;return e.agentSwitching=!0,e.pendingAgentSelection={agentId:t,requestId:s},e.sendWsMessage({type:"select_agent",agentId:t,requestId:s})===!1?(e.pendingAgentSelection=null,e.agentSwitching=!1,null):s}function gu(e,t,s=null,n=null,r={}){let i=s||e.currentAgent;if(!i){e.addMessage({type:"error",content:Le("chat.agent.selectFirst")});return}on(e,!0,Le("chat.session.creating"));let o={type:"create_conversation",agentId:i,workDir:t||e.currentAgentWorkDir};n!==null&&(o.disallowedTools=n),r&&typeof r.provider=="string"&&(o.provider=r.provider),r&&r.providerOptions&&typeof r.providerOptions=="object"&&(o.providerOptions=r.providerOptions),e.sendWsMessage(o)}function mu(e,t,s,n=null,r=null,i=null){let o=n||e.currentAgent;if(!o){e.addMessage({type:"error",content:Le("chat.agent.selectFirst")});return}let a=null,l={};r&&typeof r=="object"&&!Array.isArray(r)?l=r:(a=r,i&&typeof i=="object"&&(l=i)),on(e,!0,Le("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 hu(e,t,s,{refresh:n=!1}={}){if(e.panels.length>1){let a=e.activePanelId||e.panels[0]?.id;a&&e.setPanelConversation(a,t,{refresh:n});return}if(t===e.currentConversation){n&&(e.syncChatConversationHistory?.(t),xs(e));return}let r=e.conversations.find(a=>a.id===t&&a.type!=="yeaft");if(r&&r.agentId&&r.agentId!==e.currentAgent){let a=e.agents.find(l=>l.id===r.agentId);a&&(e.currentAgent=r.agentId,e.currentAgentInfo=a,e.sendWsMessage({type:"select_agent",agentId:r.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],r&&(e.currentWorkDir=r.workDir);let i=e.messagesMap[t];(!i||i.length===0)&&(e.messagesMap[t]=[],on(e,!0,Le("chat.session.loadingHistory"))),e.syncChatConversationHistory?.(t),e.loadingMoreMessages=!1;let o=e.chatSessionState[t];e.hasMoreMessages=!!o?.hasMoreOlder,xs(e)}function $a(e,t,s){t&&e.sendWsMessage({type:"update_conversation_settings",conversationId:t,...s})}function vu(e,t,s){let n=e.currentConversation;if(!n)return;let r=e.conversationMcpServers[n];if(r){let f=r.find(p=>p.name===t);f&&(f.enabled=s)}let i=e.conversationMcpServers[n]||[],o=e.conversationMcpServerTools[n]||{},a=[];for(let f of i)if(!f.enabled){let p=o[f.name];p&&p.length>0?a.push(...p):a.push(`mcp__${f.name}`)}let u=[...(e.conversations.find(f=>f.id===n)?.disallowedTools||[]).filter(f=>!f.startsWith("mcp__")),...a];$a(e,n,{disallowedTools:u})}function yu(e,t,s){return t?e.sendWsMessage({type:"delete_conversation",requestId:`delete_${crypto.randomUUID()}`,conversationId:t,...s?{agentId:s}:{}}):!1}function bu(e,t,s){e._recentlyDeletedSessions||(e._recentlyDeletedSessions={}),e._recentlyDeletedSessions[t]=Date.now(),e.conversations=e.conversations.filter(i=>i.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 i of e.panels)i.conversationId===t&&(i.conversationId=null);let r=e.pinnedSessions.indexOf(t);r>=0&&(e.pinnedSessions.splice(r,1),localStorage.setItem("pinned-sessions",JSON.stringify(e.pinnedSessions))),e.sendWsMessage({type:"delete_conversation",requestId:`delete_${crypto.randomUUID()}`,conversationId:t,...s?{agentId:s}:{}})}function wu(e,t,s=[],n={}){let r=n.expertSelections&&n.expertSelections.length>0;if(!t.trim()&&s.length===0&&!r||!e.currentAgent||!e.currentConversation)return;let i=pu();if(e.addMessage({type:"user",content:t,clientMessageId:i,attachments:s.length>0?s:void 0,expertSelections:r?n.expertSelections:void 0}),t.trim()){let c=t.trim().substring(0,100);e.conversationTitles[e.currentConversation]=c}else if(r){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),an(e,e.currentConversation));let a=s.map(c=>c.fileId),l={type:"chat",conversationId:e.currentConversation,prompt:t,fileIds:a,workDir:e.currentWorkDir,clientMessageId:i};if(n.targetRole&&(l.targetRole=n.targetRole),r){l.expertSelections=n.expertSelections;let c=La(n.expertSelections,e.customExpertRoles,t,e.language||"zh-CN");c&&(l.expertMessage=c.effectivePrompt)}e.sendWsMessage(l)||nr(e).then(()=>{e.sendWsMessage(l)}).catch(()=>{e.addMessage({type:"system",content:Le("chat.connection.reconnectFailed")}),delete e.processingConversations[e.currentConversation],Ce(e,e.currentConversation)})}function ku(e){if(!e.currentConversation||!e.processingConversations[e.currentConversation])return;let t=e.currentConversation;e.sendWsMessage({type:"cancel_execution",conversationId:t}),delete e.processingConversations[t],Ce(e,t),e._closedAt||(e._closedAt={}),e._closedAt[t]=Date.now();let s=e.executionStatusMap[t];s&&(s.currentTool=null),e.finishStreamingForConversation(t),ls(e,t),e.addMessage({type:"system",content:Le("chat.execution.cancelled")})}function Su(e,t,s,n){let r=n||e.currentConversation,o=(e.messagesMap[r]||[]).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?ry(e,r):[],u=d.length===1?d[0]:null;if(c&&u&&c!==u)return!1;let f=a&&!c&&!u&&typeof e.agentIdForSession=="function"?e.agentIdForSession(l):null,p=e.sendWsMessage(a?{type:"yeaft_ask_user_answer",agentId:c||u||f||e.yeaftAgentId||e.currentAgent||null,conversationId:r,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:r,requestId:t,answers:s});if(o&&!a)o.askAnswered=!0,o.selectedAnswers=s;else if(o&&p!==!1){let g=++ny;o.askPending=!0,o.pendingAnswers=s,o.askSubmitGeneration=g;let m=setTimeout(()=>{o.askSubmitGeneration!==g||o.askPending!==!0||(o.askPending=!1,o.pendingAnswers=null,o.askSubmitGeneration=null)},sy);typeof m?.unref=="function"&&m.unref()}p!==!1&&r&&!e.processingConversations[r]&&(e.processingConversations[r]=!0,e._closedAt?.[r]&&delete e._closedAt[r],e.getOrCreateExecutionStatus(r))}function Iu(e,t){t&&(e.activeConversations.includes(t)||e.activeConversations.length>=3||(e.activeConversations.push(t),e.messagesMap[t]||(e.messagesMap[t]=[],e.requestChatHistory?.(t,{mode:"recent",turns:5})),xs(e)))}function Cu(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),xs(e))}function Au(e,t,s,n=[],r={}){let i=r.expertSelections&&r.expertSelections.length>0;if(!s.trim()&&n.length===0&&!i||!e.currentAgent||!t)return;let o=pu();if(e.addMessageToConversation(t,{type:"user",content:s,clientMessageId:o,attachments:n.length>0?n:void 0,expertSelections:i?r.expertSelections:void 0}),s.trim()){let d=s.trim().substring(0,100);e.conversationTitles[t]=d}else if(i){let d=r.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),an(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(r.targetRole&&(c.targetRole=r.targetRole),i){c.expertSelections=r.expertSelections;let d=La(r.expertSelections,e.customExpertRoles,s,e.language||"zh-CN");d&&(c.expertMessage=d.effectivePrompt)}e.sendWsMessage(c)||nr(e).then(()=>{e.sendWsMessage(c)}).catch(()=>{e.addMessageToConversation(t,{type:"system",content:Le("chat.connection.reconnectFailed")}),delete e.processingConversations[t],Ce(e,t)})}function xu(e,t){if(!t||!e.processingConversations[t])return;e.sendWsMessage({type:"cancel_execution",conversationId:t}),delete e.processingConversations[t],Ce(e,t),e._closedAt||(e._closedAt={}),e._closedAt[t]=Date.now();let s=e.executionStatusMap[t];s&&(s.currentTool=null),e.finishStreamingForConversation(t),ls(e,t),e.addMessageToConversation(t,{type:"system",content:Le("chat.execution.cancelled")})}function Tu(e){e.ws&&e.ws.readyState===WebSocket.OPEN&&(typeof e.requestYeaftSessionInventory=="function"?e.requestYeaftSessionInventory():e.sendWsMessage({type:"get_agents"}))}function Mu(e){!e.currentAgent||!e.currentConversation||e.sendWsMessage({type:"refresh_conversation",conversationId:e.currentConversation})}function Pu(e,t){t&&e.sendWsMessage({type:"restart_agent",agentId:t})}function Ru(e,t){t&&e.sendWsMessage({type:"upgrade_agent",agentId:t})}var sy,ny,_u=N(()=>{as();Ts();da();bi();Nt();hr();sy=1e4,ny=0});function oy(e=globalThis.localStorage){try{return e?.getItem(Du)==="yeaft"?"yeaft":Eu}catch{return Eu}}function Va(e,t=globalThis.localStorage){if(e!=="chat"&&e!=="yeaft")return!1;try{return t?.setItem(Du,e),!!t}catch{return!1}}function Lu(e=globalThis.localStorage){let t=oy(e);if(t!=="yeaft")return{currentView:t,_yeaftTransitionActive:!1,_savedActiveConversations:null,_savedChatIdentity: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,_savedChatIdentity:null,_pendingChatRestoreConversationId:n}}function Ha(e){return e._yeaftTransitionActive?!1:(e._savedActiveConversations=[...e.activeConversations],e._savedChatIdentity={agentId:e.currentAgent||null,agentInfo:e.currentAgentInfo?{...e.currentAgentInfo}:null,workDir:e.currentWorkDir||null},e._yeaftTransitionActive=!0,!0)}function $u(e){let t=Ha(e);return e.activeConversations=[e.yeaftConversationId],t}function Vu(e){if(!e._yeaftTransitionActive)return null;let t=e._savedChatIdentity||null;return e.activeConversations=e._savedActiveConversations||[],t&&(e.currentAgent=t.agentId,e.currentAgentInfo=t.agentInfo,e.currentWorkDir=t.workDir),e._savedActiveConversations=null,e._savedChatIdentity=null,e._yeaftTransitionActive=!1,t}var Du,Eu,Hu=N(()=>{Du="yeaft-preferred-conversation-view",Eu="chat"});function Ou(e,t,s){let n={...e||{}},r={...n[t]||{}};return r[s]=(r[s]||0)+1,n[t]=r,n}function Fu(e,t,s){let n={...e||{}},r={...n[t]||{}},i=(r[s]||0)-1;return i<=0?delete r[s]:r[s]=i,Object.keys(r).length===0?delete n[t]:n[t]=r,n}var Bu=N(()=>{});function Oa(e){return e.currentView==="yeaft"?e.yeaftConversationId||null:e.activeConversations[0]||null}var Nu=N(()=>{});function qu({loops:e,turnsById:t,turnOrder:s,maxLoops:n}){if(!Array.isArray(e)||e.length<=n)return{loops:e,turnsById:t,turnOrder:s};let r=e.length-n,i=e.slice(r),o=new Set;for(let c of i)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:i,turnsById:a,turnOrder:l}}var Wu=N(()=>{});function Ee(e){let t=Number(e);return Number.isFinite(t)?t:null}function fn(e){let t=Ee(e);return Number.isInteger(t)&&t>0?t:null}function Fa(e){let t=Ee(e);return Number.isInteger(t)&&t>=0?t:null}function ju(e){return cy.has(e)?1:0}function dy(e,t){if(!e)return t||null;if(!t)return e;let s=Ee(e.progressRevision),n=Ee(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 r=ju(e.status),i=ju(t.status);if(r!==i)return i>r?t:e;let o=Ee(e.updatedAt)??Ee(e.createdAt)??0;return(Ee(t.updatedAt)??Ee(t.createdAt)??0)>o?t:e}function pn(e){return Math.max(0,Number(e)||0)}function Uu(e){return typeof e?.id=="string"&&e.id.startsWith("event:")?e.id.slice(6):null}function uy(e,t){if(/^\d+$/.test(e)&&/^\d+$/.test(t)){let s=BigInt(e),n=BigInt(t);return s<n?-1:s>n?1:0}return e.localeCompare(t)}function py(e,t){let s=pn(e?.createdAt)-pn(t?.createdAt);if(s)return s;let n=Uu(e),r=Uu(t);if(n!=null&&r!=null)return uy(n,r);let i=e?.role==="user"?0:1,o=t?.role==="user"?0:1;if(i!==o)return i-o;let a=pn(e?.generation)-pn(t?.generation);return a||pn(e?.attempt)-pn(t?.attempt)||String(e?.id||"").localeCompare(String(t?.id||""))}function vr(...e){let t=new Map;for(let s of e){let n=Array.isArray(s)?s:[s];for(let r of n)r?.id&&t.set(r.id,dy(t.get(r.id),r))}return[...t.values()].sort(py)}function dt(e){let t=Number(e);return Number.isInteger(t)&&t>0?t:1}function gn(e,t,s,n){return`${e}:${t}:${s}:${dt(n)}`}function Ba(e,t,s,n){return`${e}:${t}:${s}:${dt(n)}`}function mn(e,t){if(!e||!t||e.id!==t.id)return!1;let s=Ee(e.revision),n=Ee(t.revision);if(s!=null&&n!=null&&s!==n)return s<n;let r=Ee(e.coordinatorRevision),i=Ee(t.coordinatorRevision);if(r!=null&&i!=null&&r!==i)return r<i;let o=Ee(e.updatedAt),a=Ee(t.updatedAt);return o!=null&&a!=null&&o<a}function Ku(e,t){if(mn(e,t))return!0;if(!e||!t||e.id!==t.id)return!1;let s=Ee(e.revision),n=Ee(t.revision);return e.currentActionId!==t.currentActionId&&s!=null&&n!=null&&s<=n}function Na(e,t){let s=fn(e?.generation),n=fn(t?.generation);if(s!=null&&n!=null&&s!==n)return n<s;let r=Fa(e?.attempt),i=Fa(t?.attempt);if(r!=null&&i!=null&&r!==i)return i<r;let o=Ee(e?.progressRevision),a=Ee(t?.progressRevision);return o!=null&&a!=null&&a<o}function qa(e,t){if(!e||e.id!==t?.id||mn(t,e))return null;let s=Array.isArray(e.actions)?e.actions:[],n=Array.isArray(t.actionStats)?t.actionStats:[],r=e.currentActionId||null,i=Object.prototype.hasOwnProperty.call(t,"currentActionId")?t.currentActionId||null:r,o=typeof t.eventActionId=="string"&&n.some(g=>g?.id===t.eventActionId)?t.eventActionId:null,a=o||r!==i&&r||i;if(!a)return null;let l=s.find(g=>g?.id===a)||null,c=n.find(g=>g?.id===a)||(t.currentAction?.id===a?t.currentAction:null);if(l&&c&&Na(l,c))return null;let d=fn(l?.generation),u=fn(c?.generation),f=Fa(c?.attempt),p={actionId:a,generation:u||d||1,...f==null?{}:{attempt:f}};return o||r!==i||!l||d!=null&&u!=null&&u>d||l?.status==="running"&&c?.status&&c.status!=="running"?p:null}function zu(e,t){if(!e||e.id!==t?.id||mn(t,e))return!1;let s=Ee(t.coordinatorRevision),n=Ee(e.coordinatorRevision)??0;return s!=null&&s>n?!0:qa(e,t)!=null}function Yu(e,t){if(!e||e.id!==t?.id||mn(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 r=new Map(t.actionStats.map(o=>[o?.id,o])),i=!1;n=!0,s.actions=e.actions.map(o=>{let a=r.get(o?.id);if(!a)return o;if(i=!0,Na(o,a))return n=!1,o;if(Ee(a?.progressRevision)==null){let{response:u,messages:f,...p}=a;return{...o,...p}}let c=fn(o?.generation),d=fn(a?.generation);if(c!=null&&d!=null&&d>c){let{messages:u,thread:f,liveMessage:p,response:g,failure:m,messageCursor:v,messageCount:k,failureReason:w,...I}=o;return{...I,...a}}return{...o,...a}}),i||(n=!1)}for(let r of ly)!n&&fy.has(r)||Object.prototype.hasOwnProperty.call(t,r)&&(s[r]=t[r]);return s}function Gu(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 r=s.get(n?.id);return r?Na(r,n):!1})}function Qu(e,t){return Ee(e?.revision)===Ee(t?.revision)&&Ee(e?.coordinatorRevision)===Ee(t?.coordinatorRevision)&&Ee(e?.updatedAt)===Ee(t?.updatedAt)}function Zu(e,t){return!e||!t||e.id!==t.id?!1:mn(e,t)?!0:Qu(t,e)&&Gu(t.actions,e.actions)}function ki(e,t){let s=Array.isArray(e)?e:[],n=s.find(i=>i.id===t?.id)||null,r=n&&mn(t,n)?n:t;return n&&r===t&&Qu(n,t)&&Gu(n.actionStats,t.actionStats)&&(r=n),r?.id?[r,...s.filter(i=>i.id!==r.id)].sort((i,o)=>Number(o.updatedAt||0)-Number(i.updatedAt||0)):s}var ly,cy,fy,Wa=N(()=>{ly=Object.freeze(["revision","planRevision","ledgerRevision","coordinatorRevision","title","goal","workItemType","planningMode","status","lifecycle","attentionState","activeActionIds","attentionActionIds","currentActionId","currentAction","executionStats","failureReason","origin","linkedSessionIds","createdAt","updatedAt"]);cy=new Set(["completed","failed","cancelled","superseded","interrupted"]);fy=new Set(["status","lifecycle","attentionState","activeActionIds","attentionActionIds","currentActionId","currentAction","executionStats","failureReason"])});function Hs(e){return typeof e=="string"?e.trim():""}function Xu(e){if(typeof e=="number"&&Number.isFinite(e)&&e>0)return e;if(typeof e=="string"&&e.trim()){let t=Date.parse(e);if(Number.isFinite(t))return t}return null}function Rt(e){let t=Xu(e);if(!t)return"";try{return new Intl.DateTimeFormat(void 0,{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(new Date(t))}catch{return""}}function gy(e){return Array.isArray(e)?e.slice(0,100).map(t=>({content:Hs(t?.content).slice(0,2e3),status:["pending","in_progress","completed"].includes(t?.status)?t.status:"pending",...Hs(t?.activeForm)?{activeForm:Hs(t.activeForm).slice(0,2e3)}:{}})).filter(t=>t.content):[]}function Qe(e){if(!e||typeof e!="object")return null;let t=Hs(e.content).slice(0,1e5),s=gy(e.todos);if(!t&&s.length===0)return null;let n=e.role==="assistant"?"assistant":"user",r=Xu(e.timestamp);return{id:Hs(e.id).slice(0,256)||null,role:n,author:Hs(e.author).slice(0,256)||(n==="assistant"?"Assistant":"User"),content:t,...r?{timestamp:r}:{},...s.length>0?{todos:s}:{}}}function Ju(e,t){return Qe({id:e?.messageId||e?.id||null,role:"user",author:t,content:e?.content||"",timestamp:e?.timestamp||e?.createdAt||e?.ts||e?.time||null})}function ep(e,t){let s=e?.todoMsg?.toolInput?.todos,n=Array.isArray(e?.toolMsgs)?e.toolMsgs.map(o=>Hs(o?.toolName)).filter(Boolean):[],r=Number(e?.toolSummaryCount||0)||0,i=n.length>0?`Tool actions: ${n.join(", ")}`:r>0?`Tool actions: ${r}`:"";return Qe({id:e?.atMessageId||e?.messageId||e?.id||e?.turnId||null,role:"assistant",author:t,content:e?.textContent||i,timestamp:e?.timestamp||e?.createdAt||e?.speakerTimestamp||null,todos:s})}var cs=N(()=>{});function tp(e){return typeof e=="string"?e:Array.isArray(e)?e.map(t=>typeof t=="string"?t:t?.type==="text"&&typeof t.text=="string"?t.text:"").join(""):e==null?"":String(e)}function my(e,t){if(!e||e.type!=="assistant")return!1;let s=e.sessionId??e.groupId??null,n=e.speakerVpId||e.vpId||null;return!(t.sessionId&&s!==t.sessionId||t.vpId&&n!==t.vpId||t.turnId&&e.turnId!==t.turnId)}function sp(e,t={}){if(!Array.isArray(e)||!t.turnId)return!1;let s=e.filter(n=>my(n,t));if(s.length===0)return!1;for(let n of s)n.responseKind="progress";if(t.reason==="end_turn"){for(let n=s.length-1;n>=0;n-=1)if(tp(s[n].content).trim()){s[n].responseKind="result";break}}return!0}function Si(e,t){if(!e||!t)return;let s=tp(t.content);s&&(Array.isArray(e.textSegments)||(e.textSegments=[]),e.textSegments.push({key:t.messageId||t.id||`response-${e.textSegments.length}`,content:s,kind:t.responseKind==="result"?"result":"progress",explicitKind:t.responseKind==="progress"||t.responseKind==="result",isStreaming:t.isStreaming===!0}),e.textContent=e.textSegments.map(n=>n.content).join(`
6
+ `)+(s||"")}}function uu(e){return Object.values(au).filter(t=>e||!t.adminOnly).sort((t,s)=>t.order-s.order)}var au,Ct,du,Vs,hr=N(()=>{au={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}},Ct={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"}]}};du="dev",Vs=3});function ry(e,t){return!t||!e?.yeaftConversationIdsByAgent?[]:Object.entries(e.yeaftConversationIdsByAgent).filter(([,s])=>s===t).map(([s])=>s).filter(Boolean)}function pu(){return`cm_${crypto.randomUUID()}`}function fu(e,t){if(t===e.currentAgent&&!e.pendingAgentSelection)return;let s=`agent_select_${crypto.randomUUID()}`;return e.agentSwitching=!0,e.pendingAgentSelection={agentId:t,requestId:s},e.sendWsMessage({type:"select_agent",agentId:t,requestId:s})===!1?(e.pendingAgentSelection=null,e.agentSwitching=!1,null):s}function gu(e,t,s=null,n=null,r={}){let i=s||e.currentAgent;if(!i){e.addMessage({type:"error",content:Le("chat.agent.selectFirst")});return}on(e,!0,Le("chat.session.creating"));let o={type:"create_conversation",agentId:i,workDir:t||e.currentAgentWorkDir};n!==null&&(o.disallowedTools=n),r&&typeof r.provider=="string"&&(o.provider=r.provider),r&&r.providerOptions&&typeof r.providerOptions=="object"&&(o.providerOptions=r.providerOptions),e.sendWsMessage(o)}function mu(e,t,s,n=null,r=null,i=null){let o=n||e.currentAgent;if(!o){e.addMessage({type:"error",content:Le("chat.agent.selectFirst")});return}let a=null,l={};r&&typeof r=="object"&&!Array.isArray(r)?l=r:(a=r,i&&typeof i=="object"&&(l=i)),on(e,!0,Le("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 hu(e,t,s,{refresh:n=!1}={}){if(e.panels.length>1){let a=e.activePanelId||e.panels[0]?.id;a&&e.setPanelConversation(a,t,{refresh:n});return}if(t===e.currentConversation){n&&(e.syncChatConversationHistory?.(t),xs(e));return}let r=e.conversations.find(a=>a.id===t&&a.type!=="yeaft");if(r&&r.agentId&&r.agentId!==e.currentAgent){let a=e.agents.find(l=>l.id===r.agentId);a&&(e.currentAgent=r.agentId,e.currentAgentInfo=a,e.sendWsMessage({type:"select_agent",agentId:r.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],r&&(e.currentWorkDir=r.workDir);let i=e.messagesMap[t];(!i||i.length===0)&&(e.messagesMap[t]=[],on(e,!0,Le("chat.session.loadingHistory"))),e.syncChatConversationHistory?.(t),e.loadingMoreMessages=!1;let o=e.chatSessionState[t];e.hasMoreMessages=!!o?.hasMoreOlder,xs(e)}function $a(e,t,s){t&&e.sendWsMessage({type:"update_conversation_settings",conversationId:t,...s})}function vu(e,t,s){let n=e.currentConversation;if(!n)return;let r=e.conversationMcpServers[n];if(r){let f=r.find(p=>p.name===t);f&&(f.enabled=s)}let i=e.conversationMcpServers[n]||[],o=e.conversationMcpServerTools[n]||{},a=[];for(let f of i)if(!f.enabled){let p=o[f.name];p&&p.length>0?a.push(...p):a.push(`mcp__${f.name}`)}let u=[...(e.conversations.find(f=>f.id===n)?.disallowedTools||[]).filter(f=>!f.startsWith("mcp__")),...a];$a(e,n,{disallowedTools:u})}function yu(e,t,s){return t?e.sendWsMessage({type:"delete_conversation",requestId:`delete_${crypto.randomUUID()}`,conversationId:t,...s?{agentId:s}:{}}):!1}function bu(e,t,s){e._recentlyDeletedSessions||(e._recentlyDeletedSessions={}),e._recentlyDeletedSessions[t]=Date.now(),e.conversations=e.conversations.filter(i=>i.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 i of e.panels)i.conversationId===t&&(i.conversationId=null);let r=e.pinnedSessions.indexOf(t);r>=0&&(e.pinnedSessions.splice(r,1),localStorage.setItem("pinned-sessions",JSON.stringify(e.pinnedSessions))),e.sendWsMessage({type:"delete_conversation",requestId:`delete_${crypto.randomUUID()}`,conversationId:t,...s?{agentId:s}:{}})}function wu(e,t,s=[],n={}){let r=n.expertSelections&&n.expertSelections.length>0;if(!t.trim()&&s.length===0&&!r||!e.currentAgent||!e.currentConversation)return;let i=pu();if(e.addMessage({type:"user",content:t,clientMessageId:i,attachments:s.length>0?s:void 0,expertSelections:r?n.expertSelections:void 0}),t.trim()){let c=t.trim().substring(0,100);e.conversationTitles[e.currentConversation]=c}else if(r){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),an(e,e.currentConversation));let a=s.map(c=>c.fileId),l={type:"chat",conversationId:e.currentConversation,prompt:t,fileIds:a,workDir:e.currentWorkDir,clientMessageId:i};if(n.targetRole&&(l.targetRole=n.targetRole),r){l.expertSelections=n.expertSelections;let c=La(n.expertSelections,e.customExpertRoles,t,e.language||"zh-CN");c&&(l.expertMessage=c.effectivePrompt)}e.sendWsMessage(l)||nr(e).then(()=>{e.sendWsMessage(l)}).catch(()=>{e.addMessage({type:"system",content:Le("chat.connection.reconnectFailed")}),delete e.processingConversations[e.currentConversation],Ce(e,e.currentConversation)})}function ku(e){if(!e.currentConversation||!e.processingConversations[e.currentConversation])return;let t=e.currentConversation;e.sendWsMessage({type:"cancel_execution",conversationId:t}),delete e.processingConversations[t],Ce(e,t),e._closedAt||(e._closedAt={}),e._closedAt[t]=Date.now();let s=e.executionStatusMap[t];s&&(s.currentTool=null),e.finishStreamingForConversation(t),ls(e,t),e.addMessage({type:"system",content:Le("chat.execution.cancelled")})}function Su(e,t,s,n){let r=n||e.currentConversation,o=(e.messagesMap[r]||[]).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?ry(e,r):[],u=d.length===1?d[0]:null;if(c&&u&&c!==u)return!1;let f=a&&!c&&!u&&typeof e.agentIdForSession=="function"?e.agentIdForSession(l):null,p=e.sendWsMessage(a?{type:"yeaft_ask_user_answer",agentId:c||u||f||e.yeaftAgentId||e.currentAgent||null,conversationId:r,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:r,requestId:t,answers:s});if(o&&!a)o.askAnswered=!0,o.selectedAnswers=s;else if(o&&p!==!1){let g=++ny;o.askPending=!0,o.pendingAnswers=s,o.askSubmitGeneration=g;let m=setTimeout(()=>{o.askSubmitGeneration!==g||o.askPending!==!0||(o.askPending=!1,o.pendingAnswers=null,o.askSubmitGeneration=null)},sy);typeof m?.unref=="function"&&m.unref()}p!==!1&&r&&!e.processingConversations[r]&&(e.processingConversations[r]=!0,e._closedAt?.[r]&&delete e._closedAt[r],e.getOrCreateExecutionStatus(r))}function Iu(e,t){t&&(e.activeConversations.includes(t)||e.activeConversations.length>=3||(e.activeConversations.push(t),e.messagesMap[t]||(e.messagesMap[t]=[],e.requestChatHistory?.(t,{mode:"recent",turns:5})),xs(e)))}function Cu(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),xs(e))}function Au(e,t,s,n=[],r={}){let i=r.expertSelections&&r.expertSelections.length>0;if(!s.trim()&&n.length===0&&!i||!e.currentAgent||!t)return;let o=pu();if(e.addMessageToConversation(t,{type:"user",content:s,clientMessageId:o,attachments:n.length>0?n:void 0,expertSelections:i?r.expertSelections:void 0}),s.trim()){let d=s.trim().substring(0,100);e.conversationTitles[t]=d}else if(i){let d=r.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),an(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(r.targetRole&&(c.targetRole=r.targetRole),i){c.expertSelections=r.expertSelections;let d=La(r.expertSelections,e.customExpertRoles,s,e.language||"zh-CN");d&&(c.expertMessage=d.effectivePrompt)}e.sendWsMessage(c)||nr(e).then(()=>{e.sendWsMessage(c)}).catch(()=>{e.addMessageToConversation(t,{type:"system",content:Le("chat.connection.reconnectFailed")}),delete e.processingConversations[t],Ce(e,t)})}function xu(e,t){if(!t||!e.processingConversations[t])return;e.sendWsMessage({type:"cancel_execution",conversationId:t}),delete e.processingConversations[t],Ce(e,t),e._closedAt||(e._closedAt={}),e._closedAt[t]=Date.now();let s=e.executionStatusMap[t];s&&(s.currentTool=null),e.finishStreamingForConversation(t),ls(e,t),e.addMessageToConversation(t,{type:"system",content:Le("chat.execution.cancelled")})}function Tu(e){e.ws&&e.ws.readyState===WebSocket.OPEN&&(typeof e.requestYeaftSessionInventory=="function"?e.requestYeaftSessionInventory():e.sendWsMessage({type:"get_agents"}))}function Mu(e){!e.currentAgent||!e.currentConversation||e.sendWsMessage({type:"refresh_conversation",conversationId:e.currentConversation})}function Pu(e,t){t&&e.sendWsMessage({type:"restart_agent",agentId:t})}function Ru(e,t){t&&e.sendWsMessage({type:"upgrade_agent",agentId:t})}var sy,ny,_u=N(()=>{as();Ts();da();bi();Nt();hr();sy=1e4,ny=0});function oy(e=globalThis.localStorage){try{return e?.getItem(Du)==="yeaft"?"yeaft":Eu}catch{return Eu}}function Va(e,t=globalThis.localStorage){if(e!=="chat"&&e!=="yeaft")return!1;try{return t?.setItem(Du,e),!!t}catch{return!1}}function Lu(e=globalThis.localStorage){let t=oy(e);if(t!=="yeaft")return{currentView:t,_yeaftTransitionActive:!1,_savedActiveConversations:null,_savedChatIdentity: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,_savedChatIdentity:null,_pendingChatRestoreConversationId:n}}function Ha(e){return e._yeaftTransitionActive?!1:(e._savedActiveConversations=[...e.activeConversations],e._savedChatIdentity={agentId:e.currentAgent||null,agentInfo:e.currentAgentInfo?{...e.currentAgentInfo}:null,workDir:e.currentWorkDir||null},e._yeaftTransitionActive=!0,!0)}function $u(e){let t=Ha(e);return e.activeConversations=[e.yeaftConversationId],t}function Vu(e){if(!e._yeaftTransitionActive)return null;let t=e._savedChatIdentity||null;return e.activeConversations=e._savedActiveConversations||[],t&&(e.currentAgent=t.agentId,e.currentAgentInfo=t.agentInfo,e.currentWorkDir=t.workDir),e._savedActiveConversations=null,e._savedChatIdentity=null,e._yeaftTransitionActive=!1,t}var Du,Eu,Hu=N(()=>{Du="yeaft-preferred-conversation-view",Eu="chat"});function Ou(e,t,s){let n={...e||{}},r={...n[t]||{}};return r[s]=(r[s]||0)+1,n[t]=r,n}function Fu(e,t,s){let n={...e||{}},r={...n[t]||{}},i=(r[s]||0)-1;return i<=0?delete r[s]:r[s]=i,Object.keys(r).length===0?delete n[t]:n[t]=r,n}var Bu=N(()=>{});function Oa(e){return e.currentView==="yeaft"?e.yeaftConversationId||null:e.activeConversations[0]||null}var Nu=N(()=>{});function qu({loops:e,turnsById:t,turnOrder:s,maxLoops:n}){if(!Array.isArray(e)||e.length<=n)return{loops:e,turnsById:t,turnOrder:s};let r=e.length-n,i=e.slice(r),o=new Set;for(let c of i)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:i,turnsById:a,turnOrder:l}}var Wu=N(()=>{});function Ee(e){let t=Number(e);return Number.isFinite(t)?t:null}function fn(e){let t=Ee(e);return Number.isInteger(t)&&t>0?t:null}function Fa(e){let t=Ee(e);return Number.isInteger(t)&&t>=0?t:null}function ju(e){return cy.has(e)?1:0}function dy(e,t){if(!e)return t||null;if(!t)return e;let s=Ee(e.progressRevision),n=Ee(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 r=ju(e.status),i=ju(t.status);if(r!==i)return i>r?t:e;let o=Ee(e.updatedAt)??Ee(e.createdAt)??0;return(Ee(t.updatedAt)??Ee(t.createdAt)??0)>o?t:e}function pn(e){return Math.max(0,Number(e)||0)}function Uu(e){return typeof e?.id=="string"&&e.id.startsWith("event:")?e.id.slice(6):null}function uy(e,t){if(/^\d+$/.test(e)&&/^\d+$/.test(t)){let s=BigInt(e),n=BigInt(t);return s<n?-1:s>n?1:0}return e.localeCompare(t)}function py(e,t){let s=pn(e?.createdAt)-pn(t?.createdAt);if(s)return s;let n=Uu(e),r=Uu(t);if(n!=null&&r!=null)return uy(n,r);let i=e?.role==="user"?0:1,o=t?.role==="user"?0:1;if(i!==o)return i-o;let a=pn(e?.generation)-pn(t?.generation);return a||pn(e?.attempt)-pn(t?.attempt)||String(e?.id||"").localeCompare(String(t?.id||""))}function vr(...e){let t=new Map;for(let s of e){let n=Array.isArray(s)?s:[s];for(let r of n)r?.id&&t.set(r.id,dy(t.get(r.id),r))}return[...t.values()].sort(py)}function dt(e){let t=Number(e);return Number.isInteger(t)&&t>0?t:1}function gn(e,t,s,n){return`${e}:${t}:${s}:${dt(n)}`}function Ba(e,t,s,n){return`${e}:${t}:${s}:${dt(n)}`}function mn(e,t){if(!e||!t||e.id!==t.id)return!1;let s=Ee(e.revision),n=Ee(t.revision);if(s!=null&&n!=null&&s!==n)return s<n;let r=Ee(e.coordinatorRevision),i=Ee(t.coordinatorRevision);if(r!=null&&i!=null&&r!==i)return r<i;let o=Ee(e.updatedAt),a=Ee(t.updatedAt);return o!=null&&a!=null&&o<a}function Ku(e,t){if(mn(e,t))return!0;if(!e||!t||e.id!==t.id)return!1;let s=Ee(e.revision),n=Ee(t.revision);return e.currentActionId!==t.currentActionId&&s!=null&&n!=null&&s<=n}function Na(e,t){let s=fn(e?.generation),n=fn(t?.generation);if(s!=null&&n!=null&&s!==n)return n<s;let r=Fa(e?.attempt),i=Fa(t?.attempt);if(r!=null&&i!=null&&r!==i)return i<r;let o=Ee(e?.progressRevision),a=Ee(t?.progressRevision);return o!=null&&a!=null&&a<o}function qa(e,t){if(!e||e.id!==t?.id||mn(t,e))return null;let s=Array.isArray(e.actions)?e.actions:[],n=Array.isArray(t.actionStats)?t.actionStats:[],r=e.currentActionId||null,i=Object.prototype.hasOwnProperty.call(t,"currentActionId")?t.currentActionId||null:r,o=typeof t.eventActionId=="string"&&n.some(g=>g?.id===t.eventActionId)?t.eventActionId:null,a=o||r!==i&&r||i;if(!a)return null;let l=s.find(g=>g?.id===a)||null,c=n.find(g=>g?.id===a)||(t.currentAction?.id===a?t.currentAction:null);if(l&&c&&Na(l,c))return null;let d=fn(l?.generation),u=fn(c?.generation),f=Fa(c?.attempt),p={actionId:a,generation:u||d||1,...f==null?{}:{attempt:f}};return o||r!==i||!l||d!=null&&u!=null&&u>d||l?.status==="running"&&c?.status&&c.status!=="running"?p:null}function zu(e,t){if(!e||e.id!==t?.id||mn(t,e))return!1;let s=Ee(t.coordinatorRevision),n=Ee(e.coordinatorRevision)??0;return s!=null&&s>n?!0:qa(e,t)!=null}function Yu(e,t){if(!e||e.id!==t?.id||mn(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 r=new Map(t.actionStats.map(o=>[o?.id,o])),i=!1;n=!0,s.actions=e.actions.map(o=>{let a=r.get(o?.id);if(!a)return o;if(i=!0,Na(o,a))return n=!1,o;if(Ee(a?.progressRevision)==null){let{response:u,messages:f,...p}=a;return{...o,...p}}let c=fn(o?.generation),d=fn(a?.generation);if(c!=null&&d!=null&&d>c){let{messages:u,thread:f,liveMessage:p,response:g,failure:m,messageCursor:v,messageCount:k,failureReason:w,...I}=o;return{...I,...a}}return{...o,...a}}),i||(n=!1)}for(let r of ly)!n&&fy.has(r)||Object.prototype.hasOwnProperty.call(t,r)&&(s[r]=t[r]);return s}function Gu(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 r=s.get(n?.id);return r?Na(r,n):!1})}function Qu(e,t){return Ee(e?.revision)===Ee(t?.revision)&&Ee(e?.coordinatorRevision)===Ee(t?.coordinatorRevision)&&Ee(e?.updatedAt)===Ee(t?.updatedAt)}function Xu(e,t){return!e||!t||e.id!==t.id?!1:mn(e,t)?!0:Qu(t,e)&&Gu(t.actions,e.actions)}function ki(e,t){let s=Array.isArray(e)?e:[],n=s.find(i=>i.id===t?.id)||null,r=n&&mn(t,n)?n:t;return n&&r===t&&Qu(n,t)&&Gu(n.actionStats,t.actionStats)&&(r=n),r?.id?[r,...s.filter(i=>i.id!==r.id)].sort((i,o)=>Number(o.updatedAt||0)-Number(i.updatedAt||0)):s}var ly,cy,fy,Wa=N(()=>{ly=Object.freeze(["revision","planRevision","ledgerRevision","coordinatorRevision","title","goal","workItemType","planningMode","status","lifecycle","attentionState","activeActionIds","attentionActionIds","currentActionId","currentAction","executionStats","failureReason","origin","linkedSessionIds","createdAt","updatedAt"]);cy=new Set(["completed","failed","cancelled","superseded","interrupted"]);fy=new Set(["status","lifecycle","attentionState","activeActionIds","attentionActionIds","currentActionId","currentAction","executionStats","failureReason"])});function Hs(e){return typeof e=="string"?e.trim():""}function Zu(e){if(typeof e=="number"&&Number.isFinite(e)&&e>0)return e;if(typeof e=="string"&&e.trim()){let t=Date.parse(e);if(Number.isFinite(t))return t}return null}function Rt(e){let t=Zu(e);if(!t)return"";try{return new Intl.DateTimeFormat(void 0,{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(new Date(t))}catch{return""}}function gy(e){return Array.isArray(e)?e.slice(0,100).map(t=>({content:Hs(t?.content).slice(0,2e3),status:["pending","in_progress","completed"].includes(t?.status)?t.status:"pending",...Hs(t?.activeForm)?{activeForm:Hs(t.activeForm).slice(0,2e3)}:{}})).filter(t=>t.content):[]}function Qe(e){if(!e||typeof e!="object")return null;let t=Hs(e.content).slice(0,1e5),s=gy(e.todos);if(!t&&s.length===0)return null;let n=e.role==="assistant"?"assistant":"user",r=Zu(e.timestamp);return{id:Hs(e.id).slice(0,256)||null,role:n,author:Hs(e.author).slice(0,256)||(n==="assistant"?"Assistant":"User"),content:t,...r?{timestamp:r}:{},...s.length>0?{todos:s}:{}}}function Ju(e,t){return Qe({id:e?.messageId||e?.id||null,role:"user",author:t,content:e?.content||"",timestamp:e?.timestamp||e?.createdAt||e?.ts||e?.time||null})}function ep(e,t){let s=e?.todoMsg?.toolInput?.todos,n=Array.isArray(e?.toolMsgs)?e.toolMsgs.map(o=>Hs(o?.toolName)).filter(Boolean):[],r=Number(e?.toolSummaryCount||0)||0,i=n.length>0?`Tool actions: ${n.join(", ")}`:r>0?`Tool actions: ${r}`:"";return Qe({id:e?.atMessageId||e?.messageId||e?.id||e?.turnId||null,role:"assistant",author:t,content:e?.textContent||i,timestamp:e?.timestamp||e?.createdAt||e?.speakerTimestamp||null,todos:s})}var cs=N(()=>{});function tp(e){return typeof e=="string"?e:Array.isArray(e)?e.map(t=>typeof t=="string"?t:t?.type==="text"&&typeof t.text=="string"?t.text:"").join(""):e==null?"":String(e)}function my(e,t){if(!e||e.type!=="assistant")return!1;let s=e.sessionId??e.groupId??null,n=e.speakerVpId||e.vpId||null;return!(t.sessionId&&s!==t.sessionId||t.vpId&&n!==t.vpId||t.turnId&&e.turnId!==t.turnId)}function sp(e,t={}){if(!Array.isArray(e)||!t.turnId)return!1;let s=e.filter(n=>my(n,t));if(s.length===0)return!1;for(let n of s)n.responseKind="progress";if(t.reason==="end_turn"){for(let n=s.length-1;n>=0;n-=1)if(tp(s[n].content).trim()){s[n].responseKind="result";break}}return!0}function Si(e,t){if(!e||!t)return;let s=tp(t.content);s&&(Array.isArray(e.textSegments)||(e.textSegments=[]),e.textSegments.push({key:t.messageId||t.id||`response-${e.textSegments.length}`,content:s,kind:t.responseKind==="result"?"result":"progress",explicitKind:t.responseKind==="progress"||t.responseKind==="result",isStreaming:t.isStreaming===!0}),e.textContent=e.textSegments.map(n=>n.content).join(`
7
7
 
8
- `))}function Ii(e){let t=Array.isArray(e?.textSegments)?e.textSegments:[];if(t.length===0)return;let s=Array.isArray(e?.messages)?e.messages:[],n=e?.isActive===!0||e?.isStreaming===!0||t.some(l=>l.isStreaming===!0)||s.some(l=>l?.isStreaming===!0||l?.status==="pending"),r=s.some(l=>l?.incomplete===!0||ja.has(l?.status)||ja.has(l?.turnEndReason)||ja.has(l?.stopReason));if(n||r){for(let l of t)l.kind="progress";return}if(t.some(l=>l.kind==="result"))return;let i=s.some(l=>l?.turnEndReason==="end_turn"),o=t.some(l=>l.explicitKind),a=t.length===1&&!o;(i||a||e.isHistory&&!o)&&(t[t.length-1].kind="result")}var ja,Ci=N(()=>{ja=new Set(["aborted","errored","error","cancelled","canceled"])});function Ua(e){return e?.type==="user"&&typeof e.content=="string"&&e.content.trim()}function Ka(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 za(e,t){if(!e||e.kind!=="assistant")return!0;let s=e.turnId||e.lastTurnId||"",n=t?.turnId||"";if(s&&n&&s!==n)return!0;let r=e.speakerVpId||"",i=t?.speakerVpId||t?.vpId||"";return!!(r&&i&&r!==i)}function np(e=[]){let t=[],s=null,n=r=>{s&&(t.push({start:s.start,end:r,kind:s.kind}),s=null)};for(let r=0;r<e.length;r++){let i=e[r];if(i){if(Ua(i)||i.type==="system"||i.type==="error"){n(r),s={start:r,kind:i.type};continue}if(!Ka(i)){s||(s={start:r,kind:"other"});continue}(!s||s.kind==="assistant"&&za(s,i))&&(n(r),s={start:r,kind:"assistant",turnId:i.turnId||"",speakerVpId:i.speakerVpId||i.vpId||""}),s.lastTurnId=i.turnId||s.lastTurnId||"",s.speakerVpId=s.speakerVpId||i.speakerVpId||i.vpId||""}}return n(e.length),t}function rp(e,t){return!e||e._historyWindowPrefetched===!0?!1:t?(e.sessionId??e.groupId)===t:!0}function Ya(e=[],t=null,s=yr){let n=Math.max(1,Number.isFinite(s)?Math.floor(s):yr),r=[],i=[],o=null,a=c=>{o&&(i.push({start:o.start,end:c,kind:o.kind}),o=null)};for(let c of e){if(!rp(c,t))continue;let d=r.length;if(r.push(c),Ua(c)||c.type==="system"||c.type==="error"){a(d),o={start:d,kind:c.type};continue}if(!Ka(c)){o||(o={start:d,kind:"other"});continue}(!o||o.kind==="assistant"&&za(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(r.length),i.length<=n)return r;let l=i[i.length-n];return r.slice(l.start)}function ip(e=[],t=null,s=yr){let n=Math.max(1,s||yr),r=0,i=null,o=()=>i?(i=null,r+=1,r>n):!1;for(let a of e)if(rp(a,t)){if(Ua(a)||a.type==="system"||a.type==="error"){if(o())return!0;i={kind:a.type};continue}if(!Ka(a)){i||(i={kind:"other"});continue}if(!i||i.kind==="assistant"&&za(i,a)){if(o())return!0;i={kind:"assistant",turnId:a.turnId||"",speakerVpId:a.speakerVpId||a.vpId||""}}i.lastTurnId=a.turnId||i.lastTurnId||"",i.speakerVpId=i.speakerVpId||a.speakerVpId||a.vpId||""}return o(),r>n}function Os(){return yr}function br(){return hy}var yr,hy,op=N(()=>{yr=Number.POSITIVE_INFINITY,hy=20});function yy(e,t){let s=new Set;if(!t)return s;for(let n of e?.sessionCatalog||[])n?.runtimeProvider!=="yeaft"||n?.routeRef?.sessionId!==t||n.routeRef.agentId&&s.add(n.routeRef.agentId);if(s.size===0){let n=ds();for(let r of n?.sessionList||[])r?.id===t&&r?.agentId&&s.add(r.agentId)}return s}function Ip(e,t){let s=yy(e,t);return s.size===1?s.values().next().value:null}function Mi(e,t,s){return!!s&&Ip(e,t)===s}function nt(e,t,s){return!e||e.sessionId!==t?!1:s?e.agentId===s:!e.agentId}function ap(e,t,s=null){if(!t)return!1;let n=s||be(e,t),r=It(n,t);if(r&&e.yeaftProcessingSessions?.[r]||e.yeaftProcessingSessions?.[t]&&Mi(e,t,n))return!0;for(let i of Object.values(e.activeVpTurns||{}))if(nt(i,t,n))return!0;for(let i of Object.values(e.vpStatuses||{}))if(nt(i,t,n)&&kr.has(i?.state))return!0;return!1}function by(e,t,s,n=null){let r={...e.yeaftProcessingSessions||{}};if(t){let i=Ea(t);if(r=Object.fromEntries(Object.entries(r).filter(([o])=>n?o!==It(t,n):!o.startsWith(i))),n)Mi(e,n,t)&&delete r[n];else for(let o of Object.keys(r))Mi(e,o,t)&&delete r[o]}else n?delete r[n]:r={};for(let i of s||[]){let o=i?.sessionId||i?.groupId||null;if(!o||!kr.has(i?.state))continue;let a=It(t,o)||o;r[a]=!0}return r}function hn(e,t,s){let n=Da(t,s);return n&&e?.activeVpTurns?.[n]?n:e?.activeVpTurns?.[s]&&(!t||!e.activeVpTurns[s]?.agentId||e.activeVpTurns[s].agentId===t)?s:n||s||""}function lp(e,t){if(!t){e.activeVpTurns={},e.stoppingVpTurnIds={},e.vpStatuses={},e.yeaftProcessingSessions={};return}e.activeVpTurns=Object.fromEntries(Object.entries(e.activeVpTurns||{}).filter(([,n])=>n?.agentId&&n.agentId!==t)),e.stoppingVpTurnIds=Object.fromEntries(Object.entries(e.stoppingVpTurnIds||{}).filter(([n])=>e.activeVpTurns?.[n])),e.vpStatuses=Object.fromEntries(Object.entries(e.vpStatuses||{}).filter(([,n])=>n?.agentId&&n.agentId!==t));let s=Ea(t);e.yeaftProcessingSessions=Object.fromEntries(Object.entries(e.yeaftProcessingSessions||{}).filter(([n])=>!n.startsWith(s)))}function qt(e,t){return`${e||""}:${t||""}`}function Cy(e){return e?.kind==="action"&&typeof e.actionId=="string"&&Number.isInteger(Number(e.generation))&&Number(e.generation)>0?{kind:"action",actionId:e.actionId,generation:Number(e.generation)}:{kind:"coordinator"}}function Ay(e){return typeof e=="string"?e:e?.kind==="action"&&typeof e.actionId=="string"?{kind:"action",actionId:e.actionId,generation:Number.isInteger(Number(e.generation))?Number(e.generation):0}:{kind:"coordinator"}}function xy(e={}){let t=Qe(e.quote);return{agentId:e.agentId||"",workItemId:e.workItemId||"",target:Cy(e.target),text:String(e.text||""),...t?{quote:t}:{},attachments:Array.isArray(e.attachments)?e.attachments.map(s=>({fileId:s?.fileId||"",name:s?.name||"",mimeType:s?.mimeType||"",size:Math.max(0,Number(s?.size)||0)})):[],revision:Number(e.revision)||0,planRevision:Number(e.planRevision)||0,ledgerRevision:Number(e.ledgerRevision)||0,coordinatorRevision:Number(e.coordinatorRevision)||0}}function fp(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 gp(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 Ty(e,t){return el.every(s=>!t[s]||e[s]===t[s])}function Cp(e,t){return el.every(s=>!e[s]||!t[s]||e[s]===t[s])}function mp(e,t,s){let n=(e||[]).filter(o=>o?.type==="tool-use"&&(o.toolName==="AskUser"||o.toolName==="AskUserQuestion")&&(!t.requestId||!o.askRequestId||o.askRequestId===t.requestId)&&(!t.toolCallId||!o.toolId||o.toolId===t.toolCallId)),r=n.filter(o=>Ty(gp(o,s),t));if(r.length===1)return r[0];let i=n.filter(o=>Cp(gp(o,s),t));return i.length===1?i[0]:null}function Ap(e){return el.map(t=>e[t]||"").join("\0")}function My(e,t,s){let n=Ap(t),r={...e._yeaftAskTerminalEvents||{},[n]:{identity:t,event:s,receivedAt:Date.now()}},i=Object.keys(r);if(i.length>pp){i.sort((o,a)=>r[o].receivedAt-r[a].receivedAt);for(let o of i.slice(0,i.length-pp))delete r[o]}e._yeaftAskTerminalEvents=r}function hp(e,t){let s=e._yeaftAskTerminalEvents||{},n=Ap(t),r=s[n]?n:null;if(!r){let l=Object.entries(s).filter(([,c])=>Cp(c.identity||{},t));l.length===1&&(r=l[0][0])}if(!r)return null;let i=s[r],{[r]:o,...a}=s;return e._yeaftAskTerminalEvents=a,i?.event||null}function Py(e,t,s){return(e.messagesMap?.[t]||[]).some(n=>n?.type==="tool-use"&&n.sessionId===s&&n.hasResult===!1)}function Ga(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 Ry(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 _y(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 wr(e){return Wn(e)}function Qa(e,t,s){return`${It(e,t)}::${s||""}`}function Za(e){return Object.fromEntries(Object.entries(e||{}).filter(([,t])=>t?.status==="running"))}function ds(){try{return typeof window>"u"?null:window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore()||null}catch{return null}}function vp(e){let t=ds();if(!t?.reorderSessionsGlobally)return;let s=(Array.isArray(e)?e:[]).filter(n=>n?.runtimeProvider==="yeaft").map(n=>`${n.routeRef?.agentId||""}${n.routeRef?.sessionId||""}`).filter(n=>!n.startsWith(""));t.reorderSessionsGlobally(s)}function be(e,t,s=null){if(s)return s;if(t){let n=ds(),r=n?.activeSessionKey?n.sessions?.[n.activeSessionKey]:null;if(r?.id===t&&r.agentId)return r.agentId;let i=n&&typeof n.sessionById=="function"?n.sessionById(t,e?.currentAgent||null):null;if(i&&i.agentId)return i.agentId;let o=e?.yeaftSessionAgentById?e.yeaftSessionAgentById[t]:null;if(o)return o}return e?.currentAgent||null}function Ey(e,t){let s=i=>String(i||"").replace(/^v/,"").split(".").slice(0,3).map(o=>Number.parseInt(o,10)),n=s(e),r=s(t);if(n.length<3||r.length<3||[...n,...r].some(i=>!Number.isFinite(i)))return!1;for(let i=0;i<3;i+=1)if(n[i]!==r[i])return n[i]>r[i];return!0}function yp(e,t,s){if(!t||!s)return!1;let n=Array.isArray(e?.agents)?e.agents.find(o=>o?.id===t):null,r=e?.currentAgentInfo?.id===t?e.currentAgentInfo:null;return(n?.capabilities||r?.capabilities||[]).includes(s)?!0:s==="session_history_search"&&Ey(n?.version||r?.version,"1.0.166")}function Fs(e,{fallbackDefault:t=!1}={}){if(e?.yeaftActiveSessionFilter)return e.yeaftActiveSessionFilter;let s=ds();return s?.activeSessionId?s.activeSessionId:t?"grp_default":null}function Ti(e){let t=e.yeaftDebugSessionFilter;if(t==="__all__")return null;if(t)return t;let s=Fs(e);return s||(ds()?.sessions?.grp_default?"grp_default":null)}function Xa(e,t="session"){return[e?.vpId||e?.ownerVpId||"vp",e?.threadId||"thread",e?.turnId||t].join(":")}function Wt(e,t,s=null){return s||t&&e?.yeaftConversationIdsByAgent?.[t]||e?.yeaftConversationId||null}function st(e,t=null,s=null){let n=t||e?.yeaftActiveSessionFilter||null,r=s||be(e,n);return(r&&e?.yeaftConversationIdsByAgent?e.yeaftConversationIdsByAgent[r]:null)||e?.yeaftConversationId||null}function bp(e,t,s){if(e?.currentView!=="yeaft")return!1;let n=e?.yeaftActiveSessionFilter||null;if(n&&t!==n)return!1;let r=be(e,n);return!r||!s||r===s}var vy,Ve,Ai,xi,cp,dp,wy,up,ky,kr,Sy,Iy,pp,el,wp,Ja,kp,Sp,Bs,Pi=N(()=>{St();Go();Nt();da();ir();Gd();ou();_u();Ts();as();Hu();Sa();fi();Bu();Nu();Wu();la();Wa();Aa();cs();Ci();sn();ni();mr();op();ii();oa();xa();({defineStore:vy}=Pinia),Ve=Object.freeze([]),Ai=(e,t,s)=>`${e||""}::${t||""}::${s}`;xi=5,cp=100,dp=512*1024,wy=15e3,up=Object.freeze([150,300,600,1e3]),ky=new Set(["index_building","stale_result"]),kr=new Set(["typing","thinking","retrying","streaming","tool"]),Sy=Object.freeze(["model","availableModels","refreshedAt","catalogRefreshedAt","catalogEpoch","catalogRevision","catalogDigest","refreshStartedAt","refreshReason","refreshError","refreshing"]),Iy=8,pp=64;el=Object.freeze(["conversationId","agentId","requestId","toolCallId","sessionId","vpId","turnId","threadId"]);wp=1e3,Ja=1,kp=5,Sp=200,Bs=vy("chat",{state:()=>({ws:null,authenticated:!1,_hasHandledAgentList:!1,_hasHandledYeaftSessionHydrate:!1,yeaftSessionInventoryCompleteSupported:null,yeaftSessionHydrateRequestId:null,yeaftSessionHydrateSlices:[],yeaftSessionHydrateError:null,_yeaftSessionInventorySocketQuarantined:!1,sessionKey:null,serverEncryptionRequired:!0,connectionState:"disconnected",reconnectAttempts:0,maxReconnectAttempts:10,reconnectTimer:null,agents:[],currentAgent:null,currentAgentInfo:null,conversations:[],activeConversations:[],currentWorkDir:null,messagesMap:{},_messageUiKeySequence:0,chatSessionState:{},panels:[],activePanelId:null,_pendingPaneId:null,conversationTitles:{},customConversationTitles:{},processingConversations:{},yeaftProcessingSessions:{},yeaftUnreadSessionKeys:{},theme:localStorage.getItem("theme")||(typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),themeFollowSystem:!localStorage.getItem("theme"),locale:localStorage.getItem("locale")||"zh-CN",executionStatusMap:{},sessionHealth:{},historySessions:[],historySessionsLoading:!1,folders:[],foldersLoading:!1,providerModels:[],providerModelsLoading:!1,contextUsage:null,lastUsedAgent:localStorage.getItem("lastUsedAgent")||null,lastUsedSession:JSON.parse(localStorage.getItem("lastUsedSession")||"null"),lastViewedConversation:localStorage.getItem("lastViewedConversation")||null,pendingRecovery:null,recoveryDismissed:!1,sessionLoading:!1,sessionLoadingText:"",agentSwitching:!1,pendingAgentSelection:null,_pendingSessionTitle:null,workbenchExpanded:!1,workbenchMaximized:!1,sidebarCollapsed:!1,sessionSidebarOpen:!1,compactStatus:null,clearStatus:null,refreshingSession:!1,refreshingSessionMap:{},proxyPorts:{},hasMoreMessages:!1,loadingMoreMessages:!1,chatHistoryRequests:{},chatHistoryRequestIdSupported:null,chatHistoryConnectionGeneration:0,sessionCatalog:[],hiddenSessionCatalog:[],sessionProjects:[],sessionCatalogLoaded:!1,sessionCatalogMutationRequests:{},projectMutationRequests:{},activeCatalogKey:null,openUnifiedSessionCreate:!1,openUnifiedChatCreate:!1,pendingUnifiedSessionSettings:null,yeaftHasMoreHistory:!1,yeaftLoadingMoreHistory:!1,yeaftOldestLoadedSeq:null,yeaftHistoryLoadError:null,yeaftSessionHistoryState:{},yeaftMessageWindowState:{},yeaftHistoryCacheState:{},_yeaftHistoryBrowserHydrationBySession:{},yeaftBootstrapMetaLoadingKey:null,yeaftHistoryPerfTraceBySession:{},yeaftHistorySearchState:{requestId:null,agentId:null,sessionId:null,query:"",senderKey:"",loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,nextCursor:null,error:null},yeaftHistoryOutlineBySession:{},_yeaftHistoryOutlineTimeouts:{},_yeaftHistorySearchTimeout:null,_yeaftHistoryWindowPendingByKey:{},_yeaftHistoryRevealLeases:{},_yeaftHistoryRevealSequence:0,_yeaftReconnectCatchUpPending:!1,_yeaftOpenedSessionsLoadedAgents:{},_yeaftAgentSeen:null,slashCommandsMap:{},slashCommandDescriptions:{},inputDrafts:{},mcpServers:{},expertRoleDefinitions:null,llmConfig:{},llmModelDiscovery:{},llmGithubDevice:null,modelsDevRegistry:{registry:{},fetchedAt:0,error:null,loaded:!1},_modelsDevPending:null,yeaftSettings:{},searchSettings:null,telemetrySettings:null,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")||"[]"),...Lu(),workCenterOpen:!1,workCenterAgentId:null,workCenterItemsByAgent:{},workCenterListPageByAgent:{},workCenterListMoreLoadingByAgent:{},_workCenterListGenerationByAgent:{},_workCenterListQueryByAgent:{},_workCenterListFiltersByAgent:{},_workCenterListMoreRequestsByAgent:{},_workCenterListEventGenerationByAgent:{},_workCenterListEventsByAgent:{},_workCenterDeletedIdsByAgent:{},workCenterDetailByAgent:{},workCenterActionMessages:{},workCenterActionMessagesLoading:{},workCenterActionMessagesError:{},workCenterActionRequests:{},workCenterActionRequestDetails:{},workCenterActionRequestsLoading:{},workCenterActionRequestsError:{},workCenterActionRequestDetailsLoading:{},workCenterActionRequestDetailsError:{},workCenterLoadedByAgent:{},workCenterLoadingByAgent:{},workCenterErrorByAgent:{},workCenterWatcherByAgent:{},workCenterSettingsByAgent:{},workCenterRuntimeByAgent:{},workCenterSettingsLoadingByAgent:{},workCenterSettingsErrorByAgent:{},_workCenterSettingsGenerationByAgent:{},_workCenterDetailRequestGenerationByAgent:{},_workCenterDetailEventRefreshByAgent:{},_workCenterActionInputGenerationByAgent:{},_workCenterActionMessageRequests:{},_workCenterActionMessageGenerationByKey:{},_workCenterActionRequestsGeneration:{},_workCenterActionRequestDetailsGeneration:{},workCenterPending:{},workCenterComposerDrafts:{},workCenterMessageOutbox:{},_workCenterBrowserFence:null,_workCenterBrowserUnsubscribe:null,workCenterCreateDraft:null,yeaftConversationId:null,yeaftConversationIdsByAgent:{},_yeaftPendingConversationPromotions:{},_yeaftRetiredConversationIdsByAgent:{},_yeaftRetiredConversationTargetsByAgent:{},yeaftSessionAgentById:{},yeaftModel:null,yeaftModelEffort:null,yeaftSessionReady:!1,yeaftStatus:null,yeaftAvailableModels:[],yeaftStatusByAgent:{},_yeaftRetiredCatalogEpochsByAgent:{},yeaftModelsRefreshing:!1,yeaftModelRefreshError:null,yeaftYeaftDir:null,yeaftActiveTasksBySession:{},yeaftStoppingTasksById:{},yeaftToolStats:null,yeaftToolStatsLoading:!1,yeaftDebugLoops:[],yeaftDebugTurnsById:{},yeaftDebugTurnOrder:[],yeaftDebugHistoryLoading:!1,yeaftDebugHistoryError:null,yeaftDebugHistoryFetchedAt:0,yeaftDebugHistoryLimit:Ja,yeaftDebugHistoryHasMore:!1,yeaftDebugPanel:{open:!1,status:"idle",requestId:null,agentId:null,sessionId:null,turnId:null,error:null},yeaftDebugSearch:"",yeaftDebugSessionFilter:null,yeaftDreamLatest:{},yeaftDreamSnapshots:{},yeaftDreamPromptLoads:{},yeaftDreamEvents:{},yeaftReflectionCards:{},yeaftSubAgentCards:{},yeaftSidebarV2Enabled:!0,yeaftActiveSessionFilter:null,_currentYeaftSessionId:null,_currentYeaftVpId:null,_currentYeaftTurnId:null,_currentYeaftThreadId:null,_yeaftAskTerminalEvents:{},activeVpTurns:{},vpStatuses:{},stoppingVpTurnIds:{},yeaftVpTyping:{},_vpCrudPending:null}),getters:{currentConversation:e=>e.activeConversations[0]||null,activeConversationId:e=>Oa(e),activeSessionRoute(e){if(e.currentView==="yeaft"){let n=Fs(e);return n?{runtimeProvider:"yeaft",agentId:be(e,n),sessionId:n}:null}let t=Oa(e);if(!t)return null;let s=e.conversations.find(n=>n?.id===t&&n.type!=="yeaft");return s?{runtimeProvider:s.provider==="copilot"?"copilot":"claude-code",agentId:s.agentId||e.currentAgent||null,sessionId:t}:null},messages(e){let t=this.activeConversationId,s=t&&e.messagesMap[t]||Ve;if(e.currentView==="yeaft"){let n=e.yeaftActiveSessionFilter||null,r=he(be(e,n),n),i=e.yeaftMessageWindowState[r]?.visibleTurns||Os();return Ya(s,e.yeaftActiveSessionFilter||null,i)}return s},yeaftAllMessages:e=>{let t=st(e);return t&&e.messagesMap[t]||Ve},yeaftVisibleMessages(e){let t=st(e),s=t&&e.messagesMap[t]||Ve,n=e.yeaftActiveSessionFilter||null,r=he(be(e,n),n),i=e.yeaftMessageWindowState[r]?.visibleTurns||Os();return Ya(s,e.yeaftActiveSessionFilter||null,i)},hasHiddenYeaftMessages(e){if(e.currentView!=="yeaft")return!1;let t=st(e),s=t&&e.messagesMap[t]||Ve,n=e.yeaftActiveSessionFilter||null,r=he(be(e,n),n),i=e.yeaftMessageWindowState[r]?.visibleTurns||Os();return ip(s,e.yeaftActiveSessionFilter||null,i)},activeYeaftHistoryState(e){return Xo(e)},yeaftInitialHistoryLoading(e){let t=Xo(e);return e.currentView==="yeaft"&&!!e.yeaftActiveSessionFilter&&!!t?.loading&&!t?.loaded&&this.yeaftVisibleMessages.length===0},vpsTypingInCurrentConv(e){let t=this.activeConversationId;if(!t)return Ve;let s=(e.yeaftVpTyping||{})[t];if(!s)return Ve;let n=Object.keys(s).filter(r=>(s[r]||0)>0);return n.length===0?Ve: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=Ti(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamLatest?.[s]||null},yeaftDreamSnapshotForActiveSession(e){let t=Ti(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamSnapshots?.[s]||null},yeaftDreamPromptLoadForActiveSession(e){let t=Ti(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamPromptLoads?.[s]||null},yeaftDreamEventsForActiveSession(e){let t=Ti(e);if(!t)return[];let s=`sessions/${t}`,n=Array.isArray(e.yeaftDreamEvents?.[s])?e.yeaftDreamEvents[s]:[],r=Array.isArray(e.yeaftDreamEvents?.["*"])?e.yeaftDreamEvents["*"]:[];return r.length===0?n:n.length===0?r:[...n,...r].sort((i,o)=>(i.at||0)-(o.at||0))},yeaftDebugTurnsForActiveSession:e=>{let t=e.yeaftDebugTurnOrder||Ve,s=e.yeaftDebugTurnsById||{},n=e.yeaftDebugLoops||Ve,r=e.yeaftReflectionCards||{},i=e.yeaftDebugSessionFilter,o;i==="__all__"?o=null:i?o=i:o=null;let a={};for(let d of n)!d||!d.turnId||(a[d.turnId]||(a[d.turnId]=[]),a[d.turnId].push(d));let l={};for(let d of Object.keys(r)){let u=r[d];!u||!u.turnId||(l[u.turnId]||(l[u.turnId]=[]),l[u.turnId].push(u))}let c=[];for(let d=t.length-1;d>=0;d--){let u=t[d],f=s[u];if(!f||o&&f.sessionId&&f.sessionId!==o)continue;let p=a[u]||Ve,g=l[u]||Ve,m=p.length,v=0,k=0;for(let h of p){let y=h&&h.usage;y&&Number.isFinite(y.totalTokens)?v+=y.totalTokens:y&&(v+=(y.totalInputTokens||(y.inputTokens||0)+(y.cacheReadTokens||0)+(y.cacheWriteTokens||0))+(y.outputTokens||0)),h&&Number.isFinite(h.latencyMs)&&(k+=h.latencyMs)}let w=!f.closedAt,I={...f,loopCount:w||!f.loopCount?m:f.loopCount,totalTokens:w||!f.totalTokens?v:f.totalTokens,totalMs:w||!f.totalMs?k:f.totalMs,loops:p,reflections:g};c.push(I)}return c},yeaftDebugAvailableSessions:e=>{let t=new Set;for(let s of e.yeaftDebugTurnOrder||Ve){let n=e.yeaftDebugTurnsById[s];n&&n.sessionId&&t.add(n.sessionId)}return Array.from(t).sort()},yeaftDebugTurnTotal:e=>(e.yeaftDebugTurnOrder||Ve).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=Fs(e);return t?ap(e,t,be(e,t)):!1}return e.currentConversation?!!e.processingConversations[e.currentConversation]:!1},canSend:e=>!(!e.currentAgent||!e.currentConversation),currentAgentName:e=>e.currentAgentInfo?.name||"\u9009\u62E9 Agent",currentAgentWorkDir:e=>e.currentAgentInfo?.workDir||"",effectiveWorkDir:e=>e.currentView==="yeaft"?ds()?.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,s=null)=>ap(e,t,s),isSessionHistorySyncing:e=>t=>{let s=t?.sessionId||null;return s?t.runtimeProvider==="yeaft"?!!e.yeaftSessionHistoryState?.[he(t.agentId||null,s)]?.loading:!!e.chatHistoryRequests?.[os(s)]?.loading:!1},isYeaftSessionUnread:e=>(t,s=null)=>{if(!t)return!1;let n=be(e,t,s);return n?!!e.yeaftUnreadSessionKeys?.[li(n,t)]:!1},showRecoveryBanner:e=>e.pendingRecovery&&!e.recoveryDismissed&&!e.currentConversation,currentSubagents:e=>{if(!e.currentConversation)return Ve;let t=e.subagents[e.currentConversation];return t?Object.values(t):Ve},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 Ve;let t=e.subagents[e.currentConversation];if(!t)return Ve;let s=t[e.activeSubagentId];return(Array.isArray(s?.messages)?s.messages:Ve).filter(r=>r?.type==="text")},selectedTaskInfo:()=>null,currentMcpServers:e=>e.currentConversation&&e.conversationMcpServers[e.currentConversation]||Ve},actions:{activateChatView({persistPreference:e=!1}={}){let t=this._pendingChatRestoreConversationId;this._pendingChatRestoreConversationId=null;let s=t?this.conversations.find(o=>o.id===t):null,n=s?.agentId?this.agents.find(o=>o.id===s.agentId&&o.online):null;!this._savedChatIdentity&&s&&n&&(this._savedChatIdentity={agentId:n.id,agentInfo:{...n},workDir:s.workDir||n.workDir||null}),this.currentView="chat",e&&Va("chat");let r=this._savedChatIdentity||null,i=this.pendingAgentSelection&&this.pendingAgentSelection.agentId!==r?.agentId;r?.agentId&&(this.currentAgent!==r.agentId||i)&&this.selectAgent(r.agentId),Vu(this),t&&s&&n&&(this.autoRestoreConversation(t),this.sendWsMessage({type:"refresh_conversation",conversationId:t}))},enterWorkCenter(e=null){if(!this.hydrateWorkCenterBrowserState())return!1;let t=this.agents.filter(n=>n?.online&&Array.isArray(n.capabilities)&&n.capabilities.includes("work_center")),s=t.some(n=>n.id===e)?e:t[0]?.id||null;if(!s)return this.workCenterOpen=!1,this.workCenterAgentId=null,!1;if(this.currentAgent!==s){this.selectAgent(s),this.currentAgent=s;let n=this.agents.find(r=>r.id===s);n&&(this.currentAgentInfo=n)}return this.workCenterAgentId=s,this.workCenterOpen=!0,this.listWorkItems(s).catch(()=>{}),!0},leaveWorkCenter(){this.workCenterOpen=!1},enterWorkCenterFromSession(e,t=""){if(!e?.id)return;let s=e.agentId||be(this,e.id),n=String(t||e.title||e.name||"").trim();this.workCenterCreateDraft={sourceAgentId:s,requirement:n,workDir:String(e.workDir||"").trim(),origin:{sessionId:e.id,messageId:null,createdBy:"user"},linkedSessionIds:[e.id]},this.enterWorkCenter(s)},hydrateWorkCenterBrowserState(){this._workCenterBrowserUnsubscribe||(this._workCenterBrowserUnsubscribe=Ic(()=>{Nn(this._workCenterBrowserFence)||this.clearWorkCenterBrowserState()}));let e=si();if(!e)return this._workCenterBrowserFence=null,this.workCenterComposerDrafts={},this.workCenterMessageOutbox={},!1;if(!Nn(this._workCenterBrowserFence)){let t=Sc(e);this._workCenterBrowserFence=e,this.workCenterComposerDrafts=t.drafts,this.workCenterMessageOutbox=t.outbox}return!0},clearWorkCenterBrowserState(){this._workCenterBrowserFence=null,this.workCenterComposerDrafts={},this.workCenterMessageOutbox={}},workCenterComposerKey(e,t){return qt(e,t)},saveWorkCenterComposerDraft(e,t,s={}){let n=qt(e,t);if(!e||!t)return;let r=Qe(s.quote),i={...this.workCenterComposerDrafts||{},[n]:{text:String(s.text||""),...r?{quote:r}:{},attachments:Array.isArray(s.attachments)?s.attachments:[],target:Ay(s.target),error:String(s.error||"")}};return Yo(i,this._workCenterBrowserFence)?(this.workCenterComposerDrafts=i,!0):!1},loadWorkCenterComposerDraft(e,t){return this.workCenterComposerDrafts?.[qt(e,t)]||null},removeWorkCenterComposerDraft(e,t){let s=qt(e,t),n={...this.workCenterComposerDrafts||{}};return delete n[s],Yo(n,this._workCenterBrowserFence)?(this.workCenterComposerDrafts=n,!0):!1},prepareWorkCenterMessageEnvelope(e={}){let t=xy(e),s=qt(t.agentId,t.workItemId),n=this.workCenterMessageOutbox?.[s]||null;if(n)return n;let r={...t,clientMessageId:globalThis.crypto?.randomUUID?.()||`${Date.now()}-${Math.random()}`,createdAt:Date.now()},i={...this.workCenterMessageOutbox||{},[s]:r};return qn(i,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=i,r):null},loadWorkCenterMessageEnvelope(e,t){return this.workCenterMessageOutbox?.[qt(e,t)]||null},replaceWorkCenterMessageEnvelopeAttachments(e,t,s=[]){let n=qt(e,t),r=this.workCenterMessageOutbox?.[n];if(!r)return null;let i={...r,attachments:Array.isArray(s)?s.map(a=>({fileId:a?.fileId||"",name:a?.name||"",mimeType:a?.mimeType||"",size:Math.max(0,Number(a?.size)||0)})):[]},o={...this.workCenterMessageOutbox||{},[n]:i};return qn(o,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=o,i):null},discardWorkCenterMessageEnvelope(e,t){let s=qt(e,t),n={...this.workCenterMessageOutbox||{}};return delete n[s],qn(n,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=n,!0):!1},confirmWorkCenterMessageEnvelope(e,t,s){let n=qt(e,t),r=this.workCenterMessageOutbox?.[n];if(!r||r.clientMessageId!==s)return!1;let i={...this.workCenterMessageOutbox||{}};return delete i[n],qn(i,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=i,this.removeWorkCenterComposerDraft(e,t),!0):!1},workCenterRequest(e,t={},s=null){let n=s||this.workCenterAgentId||this.currentAgent;if(!n)return Promise.reject(new Error("No Agent selected"));let r=`work-center-${Date.now()}-${Math.random().toString(36).slice(2)}`;return new Promise((i,o)=>{let a=setTimeout(()=>{delete this.workCenterPending[r],o(new Error("Work Center request timed out"))},3e4);this.workCenterPending[r]={resolve:i,reject:o,timer:a,agentId:n,op:e,clientMessageId:typeof t.clientMessageId=="string"?t.clientMessageId:null},this.sendWsMessage({type:"work_center_request",agentId:n,requestId:r,op:e,payload:t})})},workItemMatchesBoardQuery(e,t={}){if(!e||t.lane&&e.boardLane!==t.lane||t.vpId&&!(e.executors||[]).some(n=>n?.id===t.vpId)||t.workItemType&&e.workItemType!==t.workItemType||t.updatedFrom&&Number(e.updatedAt)<Number(t.updatedFrom)||t.updatedTo&&Number(e.updatedAt)>Number(t.updatedTo))return!1;let s=String(t.keyword||"").trim().toLowerCase();return!s||String(e.title||"").toLowerCase().includes(s)||String(e.goal||"").toLowerCase().includes(s)},applyWorkItemBoardSummary(e,t,s={}){let n=ki(e,t),r=n.find(i=>i?.id===t?.id)||null;return!r||this.workItemMatchesBoardQuery(r,s)?n:n.filter(i=>i.id!==r.id)},async listWorkItems(e=null,t={}){let s=e||this.workCenterAgentId||this.currentAgent;if(!s)return[];let n={lane:["needs_attention","active","closed"].includes(t.lane)?t.lane:null,keyword:String(t.keyword||t.search||"").trim(),vpId:String(t.vpId||"").trim(),workItemType:String(t.workItemType||"").trim(),createdFrom:Number(t.createdFrom)||null,createdTo:Number(t.createdTo)||null,updatedFrom:Number(t.updatedFrom)||null,updatedTo:Number(t.updatedTo)||null,limit:Math.min(Math.max(Number(t.limit)||100,1),200)},r=JSON.stringify(n),i=Number(this._workCenterListGenerationByAgent[s]||0)+1,o=Number(this._workCenterListEventGenerationByAgent[s]||0);this._workCenterListGenerationByAgent={...this._workCenterListGenerationByAgent,[s]:i},this._workCenterListQueryByAgent={...this._workCenterListQueryByAgent,[s]:r},this._workCenterListFiltersByAgent={...this._workCenterListFiltersByAgent,[s]:n},this.workCenterLoadingByAgent={...this.workCenterLoadingByAgent,[s]:!0},this.workCenterErrorByAgent={...this.workCenterErrorByAgent,[s]:null};try{let a=await this.workCenterRequest("list",n,s),l=(Array.isArray(a?.items)?a.items:[]).filter(d=>!this.workItemDeleted(s,d?.id));if(this._workCenterListGenerationByAgent[s]===i&&this._workCenterListQueryByAgent[s]===r&&this.workCenterAgentId===s){let d=l,u=this._workCenterListEventsByAgent[s]||{};for(let f of Object.values(u))Number(f?.generation)<=o||f?.queryKey!==r||(d=this.applyWorkItemBoardSummary(d,f.summary,n));this.workCenterItemsByAgent={...this.workCenterItemsByAgent,[s]:d},this.workCenterListPageByAgent={...this.workCenterListPageByAgent,[s]:{nextCursor:a?.nextCursor||null,queryKey:r}},this.workCenterWatcherByAgent={...this.workCenterWatcherByAgent,[s]:a?.watcher||null},this.workCenterLoadedByAgent={...this.workCenterLoadedByAgent,[s]:!0}}return l}catch(a){throw this._workCenterListGenerationByAgent[s]===i&&this._workCenterListQueryByAgent[s]===r&&(this.workCenterErrorByAgent={...this.workCenterErrorByAgent,[s]:a?.message||String(a)}),a}finally{this._workCenterListGenerationByAgent[s]===i&&this._workCenterListQueryByAgent[s]===r&&(this.workCenterLoadingByAgent={...this.workCenterLoadingByAgent,[s]:!1})}},async loadMoreWorkItems(e=null){let t=e||this.workCenterAgentId||this.currentAgent,s=this.workCenterListPageByAgent[t],n=this._workCenterListFiltersByAgent[t];if(!t||!s?.nextCursor||!n)return[];let r=s.queryKey,i=this._workCenterListGenerationByAgent[t],o=Number(this._workCenterListEventGenerationByAgent[t]||0),a=s.nextCursor,l=`${i}:${r}:${a}`;if(this._workCenterListMoreRequestsByAgent[t]?.key===l)return this._workCenterListMoreRequestsByAgent[t].request;this.workCenterListMoreLoadingByAgent={...this.workCenterListMoreLoadingByAgent,[t]:!0};let c=(async()=>{try{let d=await this.workCenterRequest("list",{...n,cursor:a},t),u=this.workCenterListPageByAgent[t];if(this._workCenterListGenerationByAgent[t]!==i||this._workCenterListQueryByAgent[t]!==r||u?.queryKey!==r||u?.nextCursor!==a||this.workCenterAgentId!==t)return[];let f=[...this.workCenterItemsByAgent[t]||[]];for(let g of Array.isArray(d?.items)?d.items:[]){if(this.workItemDeleted(t,g?.id))continue;let m=f.findIndex(v=>v.id===g.id);m<0?f.push(g):f[m]=ki([f[m]],g)[0]}let p=this._workCenterListEventsByAgent[t]||{};for(let g of Object.values(p))Number(g?.generation)<=o||g?.queryKey!==r||(f=this.applyWorkItemBoardSummary(f,g.summary,n));return this.workCenterItemsByAgent={...this.workCenterItemsByAgent,[t]:f},this.workCenterListPageByAgent={...this.workCenterListPageByAgent,[t]:{nextCursor:d?.nextCursor||null,queryKey:r}},d?.items||[]}finally{if(this._workCenterListMoreRequestsByAgent[t]?.key===l){let d={...this._workCenterListMoreRequestsByAgent};delete d[t],this._workCenterListMoreRequestsByAgent=d,this.workCenterListMoreLoadingByAgent={...this.workCenterListMoreLoadingByAgent,[t]:!1}}}})();return this._workCenterListMoreRequestsByAgent={...this._workCenterListMoreRequestsByAgent,[t]:{key:l,request:c}},c},workItemDeleted(e,t){return!!this._workCenterDeletedIdsByAgent[e]?.[t]},removeWorkItemState(e,t){this._workCenterDeletedIdsByAgent={...this._workCenterDeletedIdsByAgent,[e]:{...this._workCenterDeletedIdsByAgent[e]||{},[t]:!0}},this.beginWorkCenterDetailWrite(e),this.workCenterItemsByAgent={...this.workCenterItemsByAgent,[e]:(this.workCenterItemsByAgent[e]||[]).filter(n=>n.id!==t)},this.workCenterDetailByAgent[e]?.id===t&&(this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[e]:null});let s=`${e}:${t}:`;for(let n of["workCenterActionMessages","workCenterActionMessagesLoading","workCenterActionMessagesError","workCenterActionRequests","workCenterActionRequestsLoading","workCenterActionRequestsError","workCenterActionRequestDetails","workCenterActionRequestDetailsLoading","workCenterActionRequestDetailsError","_workCenterActionMessageRequests","_workCenterActionMessageGenerationByKey","_workCenterActionRequestsGeneration","_workCenterActionRequestDetailsGeneration"]){let r={};for(let[i,o]of Object.entries(this[n]||{}))i.startsWith(s)||(r[i]=o);this[n]=r}},beginWorkCenterDetailWrite(e){let t=Number(this._workCenterDetailRequestGenerationByAgent[e]||0)+1;return this._workCenterDetailRequestGenerationByAgent={...this._workCenterDetailRequestGenerationByAgent,[e]:t},t},commitWorkCenterDetail(e,t,s){if(t?.id&&this.workItemDeleted(e,t.id)||s!=null&&Number(this._workCenterDetailRequestGenerationByAgent[e]||0)!==s)return!1;let n=this.workCenterDetailByAgent[e];return n?.id===t?.id&&Zu(t,n)?!1:(this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[e]:t},!0)},async getWorkItem(e,t=null){let s=t||this.workCenterAgentId||this.currentAgent,n=this.beginWorkCenterDetailWrite(s),r=await this.workCenterRequest("get",{id:e},s);return this.commitWorkCenterDetail(s,r,n),this.workCenterDetailByAgent[s]||r},invalidateWorkItemActionMessages(e,t,s,n){if(!e||!t||!s)return null;let r=dt(n),i=gn(e,t,s,r);this._workCenterActionMessageGenerationByKey={...this._workCenterActionMessageGenerationByKey,[i]:Number(this._workCenterActionMessageGenerationByKey[i]||0)+1};for(let a of["workCenterActionMessages","workCenterActionMessagesLoading","workCenterActionMessagesError"]){let l={...this[a]};delete l[i],this[a]=l}let o={...this._workCenterActionMessageRequests};for(let a of Object.keys(o))a.startsWith(`${i}:`)&&delete o[a];return this._workCenterActionMessageRequests=o,i},async loadWorkItemActionMessages(e,t,s,n,r=null){let i=r||this.workCenterAgentId||this.currentAgent,o=dt(s),a=gn(i,e,t,o),l=Number(this._workCenterActionMessageGenerationByKey[a]||0),c=`${a}:${n==null?"latest":String(n)}`;if(this._workCenterActionMessageRequests[c])return this._workCenterActionMessageRequests[c];this.workCenterActionMessagesLoading={...this.workCenterActionMessagesLoading,[a]:!0},this.workCenterActionMessagesError={...this.workCenterActionMessagesError,[a]:null};let d=(async()=>{try{let u=await this.workCenterRequest("get_action_messages",{id:e,actionId:t,generation:o,cursor:n,limit:20},i);if(this.workItemDeleted(i,e)||dt(u?.generation)!==o||Number(this._workCenterActionMessageGenerationByKey[a]||0)!==l)return u;let f=this.workCenterActionMessages[a]?.messages||[],p=vr(f,u?.messages||[]),g=this.workCenterActionMessages[a],m=g?.nextCursor,v=n==null?null:Number(n),k=m==null?null:Number(m),w=!g||v==null||k!=null&&v===k;return this.workCenterActionMessages={...this.workCenterActionMessages,[a]:{generation:o,messages:p,nextCursor:w?u?.nextCursor??null:m,total:Math.max(Number(u?.total)||0,Number(g?.total)||0,p.length)}},u}catch(u){throw Number(this._workCenterActionMessageGenerationByKey[a]||0)===l&&(this.workCenterActionMessagesError={...this.workCenterActionMessagesError,[a]:u?.message||String(u)}),u}finally{if(this._workCenterActionMessageRequests[c]===d){let u={...this._workCenterActionMessageRequests};delete u[c],this._workCenterActionMessageRequests=u;let f=Object.keys(u).some(p=>p.startsWith(`${a}:`));this.workCenterActionMessagesLoading={...this.workCenterActionMessagesLoading,[a]:f}}}})();return this._workCenterActionMessageRequests={...this._workCenterActionMessageRequests,[c]:d},d},async loadWorkItemActionRequests(e,t,s,n=null){let r=n||this.workCenterAgentId||this.currentAgent,i=dt(s),o=Ba(r,e,t,i),a=Number(this._workCenterActionRequestsGeneration[o]||0)+1;this._workCenterActionRequestsGeneration={...this._workCenterActionRequestsGeneration,[o]:a},this.workCenterActionRequestsLoading={...this.workCenterActionRequestsLoading,[o]:!0},this.workCenterActionRequestsError={...this.workCenterActionRequestsError,[o]:null};try{let l=await this.workCenterRequest("get_action_requests",{id:e,actionId:t,generation:i},r),c=!this.workItemDeleted(r,e)&&dt(l?.generation)===i&&this._workCenterActionRequestsGeneration[o]===a;return c&&(this.workCenterActionRequests={...this.workCenterActionRequests,[o]:l?.requests||[]}),c?l?.requests||[]:this.workCenterActionRequests[o]||[]}catch(l){throw this._workCenterActionRequestsGeneration[o]===a&&(this.workCenterActionRequestsError={...this.workCenterActionRequestsError,[o]:l?.message||String(l)}),l}finally{this._workCenterActionRequestsGeneration[o]===a&&(this.workCenterActionRequestsLoading={...this.workCenterActionRequestsLoading,[o]:!1})}},async loadWorkItemActionRequest(e,t,s,n,r,i=null){let o=i||this.workCenterAgentId||this.currentAgent,a=dt(s),c=`${Ba(o,e,t,a)}:${n}:${r}`,d=Number(this._workCenterActionRequestDetailsGeneration[c]||0)+1;this._workCenterActionRequestDetailsGeneration={...this._workCenterActionRequestDetailsGeneration,[c]:d},this.workCenterActionRequestDetailsLoading={...this.workCenterActionRequestDetailsLoading,[c]:!0},this.workCenterActionRequestDetailsError={...this.workCenterActionRequestDetailsError,[c]:null};try{let u=await this.workCenterRequest("get_action_request",{id:e,actionId:t,generation:a,runId:n,requestId:r},o),f=!this.workItemDeleted(o,e)&&dt(u?.generation)===a&&this._workCenterActionRequestDetailsGeneration[c]===d;return f&&(this.workCenterActionRequestDetails={...this.workCenterActionRequestDetails,[c]:u?.request||null}),f?u?.request||null:this.workCenterActionRequestDetails[c]||null}catch(u){throw this._workCenterActionRequestDetailsGeneration[c]===d&&(this.workCenterActionRequestDetailsError={...this.workCenterActionRequestDetailsError,[c]:u?.message||String(u)}),u}finally{this._workCenterActionRequestDetailsGeneration[c]===d&&(this.workCenterActionRequestDetailsLoading={...this.workCenterActionRequestDetailsLoading,[c]:!1})}},async loadWorkCenterSettings(e=null){let t=e||this.workCenterAgentId||this.currentAgent;if(!t)throw new Error("No Agent selected");let s=Number(this._workCenterSettingsGenerationByAgent[t]||0)+1;this._workCenterSettingsGenerationByAgent={...this._workCenterSettingsGenerationByAgent,[t]:s},this.workCenterSettingsLoadingByAgent={...this.workCenterSettingsLoadingByAgent,[t]:!0},this.workCenterSettingsErrorByAgent={...this.workCenterSettingsErrorByAgent,[t]:null};try{let n=await this.workCenterRequest("get_settings",{},t);return this._workCenterSettingsGenerationByAgent[t]===s&&(this.workCenterSettingsByAgent={...this.workCenterSettingsByAgent,[t]:n?.settings||null},this.workCenterRuntimeByAgent={...this.workCenterRuntimeByAgent,[t]:n?.runtime||null}),n}catch(n){throw this._workCenterSettingsGenerationByAgent[t]===s&&(this.workCenterSettingsErrorByAgent={...this.workCenterSettingsErrorByAgent,[t]:n?.message||String(n)}),n}finally{this._workCenterSettingsGenerationByAgent[t]===s&&(this.workCenterSettingsLoadingByAgent={...this.workCenterSettingsLoadingByAgent,[t]:!1})}},async refreshWorkCenterRuntime(e=null){let t=e||this.workCenterAgentId||this.currentAgent;if(!t)throw new Error("No Agent selected");let s=Number(this._workCenterSettingsGenerationByAgent[t]||0)+1;this._workCenterSettingsGenerationByAgent={...this._workCenterSettingsGenerationByAgent,[t]:s},this.workCenterSettingsLoadingByAgent={...this.workCenterSettingsLoadingByAgent,[t]:!0},this.workCenterSettingsErrorByAgent={...this.workCenterSettingsErrorByAgent,[t]:null};try{let n=await this.workCenterRequest("refresh_runtime",{},t);return this._workCenterSettingsGenerationByAgent[t]===s&&(this.workCenterSettingsByAgent={...this.workCenterSettingsByAgent,[t]:n?.settings||null},this.workCenterRuntimeByAgent={...this.workCenterRuntimeByAgent,[t]:n?.runtime||null}),n}catch(n){throw this._workCenterSettingsGenerationByAgent[t]===s&&(this.workCenterSettingsErrorByAgent={...this.workCenterSettingsErrorByAgent,[t]:n?.message||String(n)}),n}finally{this._workCenterSettingsGenerationByAgent[t]===s&&(this.workCenterSettingsLoadingByAgent={...this.workCenterSettingsLoadingByAgent,[t]:!1})}},async saveWorkCenterSettings(e,t=null){let s=t||this.workCenterAgentId||this.currentAgent;if(!s)throw new Error("No Agent selected");let n=Number(this._workCenterSettingsGenerationByAgent[s]||0)+1;this._workCenterSettingsGenerationByAgent={...this._workCenterSettingsGenerationByAgent,[s]:n};let r=await this.workCenterRequest("update_settings",{settings:e},s);return this._workCenterSettingsGenerationByAgent[s]===n&&(this.workCenterSettingsByAgent={...this.workCenterSettingsByAgent,[s]:r?.settings||null},this.workCenterRuntimeByAgent={...this.workCenterRuntimeByAgent,[s]:r?.runtime||null},this.workCenterSettingsErrorByAgent={...this.workCenterSettingsErrorByAgent,[s]:null}),r},previewWorkCenterPlan(e={},t=null){let s=t||this.workCenterAgentId||this.currentAgent;return this.workCenterRequest("preview",e,s)},async createWorkItem(e,t=null){let s=t||this.workCenterAgentId||this.currentAgent,n=this.beginWorkCenterDetailWrite(s),r=await this.workCenterRequest("create",e,s);return await this.listWorkItems(s,this._workCenterListFiltersByAgent[s]||{}),this.commitWorkCenterDetail(s,r,n),r},async updateWorkItem(e,t,s=null){let n=s||this.workCenterAgentId||this.currentAgent,r=this.beginWorkCenterDetailWrite(n),i=await this.workCenterRequest("update",{id:e,patch:t},n);return await this.listWorkItems(n,this._workCenterListFiltersByAgent[n]||{}),this.commitWorkCenterDetail(n,i,r),i},async startWorkItem(e,t=null){let s=t||this.workCenterAgentId||this.currentAgent,n=this.beginWorkCenterDetailWrite(s),r=await this.workCenterRequest("start",{id:e},s);return await this.listWorkItems(s,this._workCenterListFiltersByAgent[s]||{}),this.commitWorkCenterDetail(s,r,n),r},async cancelWorkItem(e,t=null){let s=t||this.workCenterAgentId||this.currentAgent,n=this.beginWorkCenterDetailWrite(s),r=await this.workCenterRequest("cancel",{id:e},s);return await this.listWorkItems(s,this._workCenterListFiltersByAgent[s]||{}),this.commitWorkCenterDetail(s,r,n),r},async resumeWorkItem(e,t,s=null){let n=s||this.workCenterAgentId||this.currentAgent,r=this.beginWorkCenterDetailWrite(n),i=await this.workCenterRequest("resume",{id:e,revision:t},n);return await this.listWorkItems(n,this._workCenterListFiltersByAgent[n]||{}),this.commitWorkCenterDetail(n,i,r),i},async deleteWorkItem(e,t,s=null){let n=s||this.workCenterAgentId||this.currentAgent,r=await this.workCenterRequest("delete",{id:e,revision:t},n);return this.removeWorkItemState(n,e),r},async postWorkItemMessage(e,t,s,n,r=[],i=null,o={},a=null){if(!this.hydrateWorkCenterBrowserState())throw new Error("Work Center browser owner is unavailable; sign in again and retry");let l=i||this.workCenterAgentId||this.currentAgent,c=this.prepareWorkCenterMessageEnvelope({agentId:l,workItemId:e,target:s,text:t,quote:a,attachments:r,revision:n,planRevision:o.planRevision,ledgerRevision:o.ledgerRevision,coordinatorRevision:o.coordinatorRevision});if(!c)throw new Error("Work Center browser owner changed; reopen Work Center and try again");let d=c.clientMessageId,u=this.workCenterDetailByAgent[l]?.id===e?this.workCenterDetailByAgent[l]:null,f=await this.workCenterRequest("post_work_item_message",{id:c.workItemId,clientMessageId:d,text:c.text,target:c.target,revision:c.revision,planRevision:c.planRevision||Number(u?.planRevision)||0,ledgerRevision:c.ledgerRevision||Number(u?.ledgerRevision)||0,coordinatorRevision:Number.isInteger(Number(c.coordinatorRevision))?Number(c.coordinatorRevision):Number(u?.coordinatorRevision)||0,...c.quote?{quote:c.quote}:{},attachments:c.attachments},l);if(c.target.kind==="coordinator"){if(!f?.accepted)throw new Error("Work Center Coordinator did not accept the message");return this.confirmWorkCenterMessageEnvelope(l,e,d),f}return await this.listWorkItems(l,this._workCenterListFiltersByAgent[l]||{}),this.confirmWorkCenterMessageEnvelope(l,e,d),f},async sendWorkItemMessage(e,t,s,n=[],r=null,i={},o=null){let a=r||this.workCenterAgentId||this.currentAgent,l=this.workCenterDetailByAgent[a]?.id===e?this.workCenterDetailByAgent[a]:null,c=await this.workCenterRequest("work_item_message",{id:e,text:t,revision:s,planRevision:Number.isInteger(Number(i.planRevision))?Number(i.planRevision):Number(l?.planRevision)||0,ledgerRevision:Number.isInteger(Number(i.ledgerRevision))?Number(i.ledgerRevision):Number(l?.ledgerRevision)||0,coordinatorRevision:Number.isInteger(Number(i.coordinatorRevision))?Number(i.coordinatorRevision):Number(l?.coordinatorRevision)||0,...Qe(o)?{quote:Qe(o)}:{},attachments:Array.isArray(n)?n:[]},a);if(!c?.accepted)throw new Error("Work Center Coordinator did not accept the message");return c},async retryWorkItemAction(e,t,s,n,r=null){let i=r||this.workCenterAgentId||this.currentAgent,o=this.beginWorkCenterDetailWrite(i),a=await this.workCenterRequest("retry_action",{id:e,actionId:t,revision:s,generation:n},i);return await this.listWorkItems(i,this._workCenterListFiltersByAgent[i]||{}),this.commitWorkCenterDetail(i,a,o),a},async sendWorkItemActionInput(e,t,s,n,r,i=[],o=null,a=null){let l=o||this.workCenterAgentId||this.currentAgent,c=Number(this._workCenterActionInputGenerationByAgent[l]||0)+1;this._workCenterActionInputGenerationByAgent={...this._workCenterActionInputGenerationByAgent,[l]:c};let d=Qe(a),u=await this.workCenterRequest("action_input",{id:e,text:t,actionId:s,revision:n,generation:r,attachments:i,...d?{quote:d}:{}},l);await this.listWorkItems(l,this._workCenterListFiltersByAgent[l]||{});let f=this.workCenterDetailByAgent[l],p=f?.actions?.find(m=>m?.id===s),g=f?.id===e&&Number(f.revision)===Number(n)&&p&&Number(p.generation)===Number(r);return this._workCenterActionInputGenerationByAgent[l]===c&&g&&!Ku(u,f)?(this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[l]:u},u):f?.id===e?f:u},async guideWorkItemAction(e,t,s,n,r,i=[],o=null){let a=o||this.workCenterAgentId||this.currentAgent,l=this.beginWorkCenterDetailWrite(a),c=await this.workCenterRequest("guide",{id:e,guidance:t,actionId:s,revision:n,generation:r,attachments:i},a);return await this.listWorkItems(a,this._workCenterListFiltersByAgent[a]||{}),this.commitWorkCenterDetail(a,c,l),c},previewWorkItemAttachment(e,t,s=null){let n=s||this.workCenterAgentId||this.currentAgent;return this.workCenterRequest("preview_attachment",{id:e,attachmentId:t},n)},applyWorkCenterEvent(e,t){if(!e||!t?.workItem)return;let s=t.workItem;if(t.clientMessageId){this.confirmWorkCenterMessageEnvelope(e,s.id,t.clientMessageId);let u=Object.entries(this.workCenterPending||{}).find(([,f])=>f?.agentId===e&&f.clientMessageId===t.clientMessageId);if(u){let[f,p]=u;clearTimeout(p.timer),delete this.workCenterPending[f],p.resolve(t.type==="coordinator.turn_started"?{accepted:!0,turnId:null,receipt:!0}:t.workItem)}}let n=this.workCenterItemsByAgent[e]||[];if(t.type==="work_item.deleted"){this.removeWorkItemState(e,s.id);return}if(this.workItemDeleted(e,s.id))return;let r=this._workCenterListFiltersByAgent[e]||{},i=this._workCenterListEventsByAgent[e]?.[s.id]?.summary||null,o=n.some(u=>u?.id===s.id)?n:i?[i]:[],a=ki(o,s).find(u=>u?.id===s.id)||s,l=Number(this._workCenterListEventGenerationByAgent[e]||0)+1;this._workCenterListEventGenerationByAgent={...this._workCenterListEventGenerationByAgent,[e]:l},this._workCenterListEventsByAgent={...this._workCenterListEventsByAgent,[e]:{...this._workCenterListEventsByAgent[e]||{},[s.id]:{generation:l,queryKey:this._workCenterListQueryByAgent[e]||null,summary:a}}};let c=this.applyWorkItemBoardSummary(n,a,r);this.workCenterItemsByAgent={...this.workCenterItemsByAgent,[e]:c};let d=this.workCenterDetailByAgent[e];if(d?.id===s.id){let u=t.type==="run.finished"&&t.actionId&&Array.isArray(s.actionStats)&&s.actionStats.some(k=>k?.id===t.actionId)?{...s,eventActionId:t.actionId}:s,f=qa(d,u),p=Number(s.coordinatorRevision),g=Number(d.coordinatorRevision)||0,m=Number.isInteger(p)&&p>g,v=zu(d,u);this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[e]:Yu(d,s)},v&&this.refreshWorkItemDetailAfterActionChange(e,s,m?null:f)}},async refreshWorkItemDetailAfterActionChange(e,t,s=null){let n=s?(Array.isArray(t.actionStats)?t.actionStats:[]).find(m=>m?.id===s.actionId):(Array.isArray(t.actionStats)?t.actionStats:[]).find(m=>m?.id===t.currentActionId)||t.currentAction,r=s?.actionId||t.currentActionId||null,i=Number(s?.generation??n?.generation),o=Number.isInteger(i)&&i>0?i:null,a=Number(t.coordinatorRevision),l=!s&&Number.isInteger(a)&&a>=0?a:null,c=Number(s?.attempt),d=Number.isInteger(c)&&c>=0?c:null,u=l!=null?`${t.id}:coordinator:${l}`:`${t.id}:${r}${o==null?"":`:${o}`}${d==null?"":`:${d}`}`;if(this._workCenterDetailEventRefreshByAgent[e]?.key===u)return;let f=this.beginWorkCenterDetailWrite(e),p={key:u,generation:f};this._workCenterDetailEventRefreshByAgent={...this._workCenterDetailEventRefreshByAgent,[e]:p},s&&this.invalidateWorkItemActionMessages(e,t.id,s.actionId,s.generation);let g=r&&o!=null?this.loadWorkItemActionMessages(t.id,r,o,null,e).catch(()=>null):null;try{let m=await this.workCenterRequest("get",{id:t.id},e),v=this.workCenterDetailByAgent[e],k=v?.actions?.find(M=>M?.id===r),w=m?.actions?.find(M=>M?.id===r),I=o==null||dt(k?.generation)===o,h=o==null||dt(w?.generation)>=o,y=l==null||Number(m?.coordinatorRevision)===l,b=l!=null||I&&h&&(t.currentActionId==null?m?.currentActionId==null:v?.currentActionId===t.currentActionId&&m?.currentActionId===t.currentActionId);v?.id===t.id&&y&&b&&this.commitWorkCenterDetail(e,m,f)&&g&&await g}catch{}finally{if(this._workCenterDetailEventRefreshByAgent[e]===p){let m={...this._workCenterDetailEventRefreshByAgent};delete m[e],this._workCenterDetailEventRefreshByAgent=m}}},cacheYeaftAgentStatus(e,t,{allowBootstrapCatalog:s=!1}={}){if(!e||!t)return;let n=this.yeaftStatusByAgent[e]||{},r=Number(n.catalogRevision)||0,i=Number(t.catalogRevision)||0,o=typeof n.catalogEpoch=="string"?n.catalogEpoch:"",a=typeof t.catalogEpoch=="string"?t.catalogEpoch:"",l=Number(n.catalogRefreshedAt)||0,c=Number(t.catalogRefreshedAt)||0,d=Array.isArray(t.availableModels),u=t.type==="yeaft_status"&&d&&(i>0||c>0),f=Array.isArray(this._yeaftRetiredCatalogEpochsByAgent?.[e])?this._yeaftRetiredCatalogEpochsByAgent[e]:[],p=!!a&&f.includes(a),g=!!a&&a===o,m=i>0?g&&i===r:c>0&&c===l,v=i>0?!!a&&(a!==o||i>r):r===0&&c>l,k=i>0?!!t.catalogDigest&&!!n.catalogDigest&&t.catalogDigest===n.catalogDigest:t.catalogDigest===n.catalogDigest,w=u&&!p&&(v||m&&k),h=w||s&&r===0&&l===0&&!u&&d,y={...t};if(!h)for(let M of Sy)delete y[M];let b={...n,...y};if(h){if(w&&o&&a&&o!==a){let M=[...f.filter(x=>x!==o),o].slice(-Iy);this._yeaftRetiredCatalogEpochsByAgent={...this._yeaftRetiredCatalogEpochsByAgent||{},[e]:M}}b.availableModels=t.availableModels,b.catalogRefreshedAt=w?c:null,b.catalogEpoch=w&&a||null,b.catalogRevision=w&&i||null,b.catalogDigest=w&&t.catalogDigest||null}this.yeaftStatusByAgent={...this.yeaftStatusByAgent,[e]:b},this.currentAgent===e&&this.applyCachedYeaftStatus(e)},applyCachedYeaftStatus(e=this.currentAgent){let t=e?this.yeaftStatusByAgent[e]:null;return t?(this.yeaftModel=t.model||null,this.yeaftModelEffort=t.modelEffort||null,this.yeaftAvailableModels=Array.isArray(t.availableModels)?t.availableModels:[],this.yeaftModelsRefreshing=!!t.refreshing,this.yeaftModelRefreshError=t.refreshError||null,this.yeaftYeaftDir=t.yeaftDir||null,this.yeaftStatus={skills:t.skills,mcpServers:t.mcpServers,tools:t.tools,multiVp:!!t.multiVp},!0):!1},activateYeaftAgentCatalog(e,t=this.currentAgent){let s=e?this.yeaftStatusByAgent[e]:null;return s&&this.applyCachedYeaftStatus(e),Array.isArray(s?.availableModels)?!0:(this.yeaftModel=null,this.yeaftModelEffort=null,this.yeaftAvailableModels=[],s||(this.yeaftStatus=null),this.yeaftModelsRefreshing=!!e&&!s?.refreshError,this.yeaftModelRefreshError=s?.refreshError||null,t!==e&&(this.yeaftYeaftDir=null),!1)},activateYeaftAgent(e,t=null){if(!e)return!1;let s=this.currentAgent;return this.currentAgent=e,t&&(this.currentAgentInfo=t),this.activateYeaftAgentCatalog(e,s)},resolveYeaftSessionAgentId(e){return be(this,e)},requestYeaftSessionInventory(){if(this.yeaftSessionInventoryCompleteSupported===!1&&this.yeaftSessionHydrateRequestId)return this.yeaftSessionHydrateRequestId;if(this._yeaftSessionInventorySocketQuarantined)return this.manualReconnect(),null;clearTimeout(this._legacyYeaftSessionHydrateTimer),this._legacyYeaftSessionHydrateTimer=null;let e=`session_inventory_${crypto.randomUUID()}`;this.yeaftSessionHydrateRequestId=e,this.yeaftSessionHydrateSlices=[],this._hasHandledAgentList=!1,this._hasHandledYeaftSessionHydrate=!1,this.yeaftSessionHydrateError=null;let t=this.conversations.map(n=>n.id).filter(Boolean);return this.sendWsMessage({type:"get_agents",requestId:e,conversationIds:t.length>0?t:void 0})?(setTimeout(()=>{this.yeaftSessionHydrateRequestId===e&&(this.yeaftSessionHydrateRequestId=null,this.yeaftSessionHydrateSlices=[],this.yeaftSessionHydrateError="session_inventory_timeout",this.yeaftSessionInventoryCompleteSupported!==!0&&(this._yeaftSessionInventorySocketQuarantined=!0))},wy),e):(this.yeaftSessionHydrateRequestId=null,this.yeaftSessionHydrateSlices=[],this.yeaftSessionHydrateError="session_inventory_send_failed",null)},beginYeaftHistoryLoad(e){let t=Ac(this,e);if(!t)return null;let{agentId:s,sessionId:n}=e||{};return setTimeout(()=>{Un(this,{agentId:s,sessionId:n,requestId:t.requestId,error:"history_load_timeout"})},Cc),t},finishYeaftHistoryLoad(e,t={},s="chunk"){return xc(this,e,t,s)},isCurrentYeaftHistoryResponse(e){return Zo(this,e)},syncActiveYeaftHistoryLoad(){return ks(this)},enterYeaft(e=null,{deferBootstrap:t=!1}={}){let s=this.currentAgent;Ha(this);let n=Fs(this),r=!e&&n?be(this,n):null,i=e||r||this.currentAgent||null;if(!i){let a=this.agents.find(l=>l.online);a&&(i=a.id)}if(i&&this.currentAgent!==i){this.selectAgent(i),this.currentAgent=i;let a=this.agents.find(l=>l.id===i);a&&(this.currentAgentInfo=a)}if(!this.applyCachedYeaftStatus(i)&&s&&s!==i&&(this.yeaftAvailableModels=[],this.yeaftStatus=null,this.yeaftModelsRefreshing=!0,this.yeaftModelRefreshError=null),i){let a=this.yeaftConversationIdsByAgent?.[i]||null;a||(a=`yeaft-local-${i}-${Date.now()}`,this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[i]:a}),this.yeaftConversationId=a}else this.yeaftConversationId||(this.yeaftConversationId=`yeaft-local-${Date.now()}`);this.messagesMap[this.yeaftConversationId]||(this.messagesMap[this.yeaftConversationId]=[]),$u(this),this.currentView="yeaft",Va("yeaft"),this.hasMoreMessages=!1,this.loadingMoreMessages=!1,this.yeaftHasMoreHistory=!1,this.yeaftLoadingMoreHistory=!1,this.yeaftOldestLoadedSeq=null,this._yeaftReconnectCatchUpPending=!1,this.loadOpenedYeaftSessionsForConnectedAgents(null,{force:!0}),t||this.requestYeaftSessionBootstrap({forceSessionReady:!0,catchUpHistory:!0,forceHistoryReplay:!0})},loadOpenedYeaftSessionsForConnectedAgents(e=null,{force:t=!1}={}){let s=Array.isArray(e)?e.filter(Boolean):Array.isArray(this.agents)?this.agents.filter(i=>i&&i.online&&i.id).map(i=>i.id):[],n=[...new Set(s)];(!this._yeaftOpenedSessionsLoadedAgents||typeof this._yeaftOpenedSessionsLoadedAgents!="object")&&(this._yeaftOpenedSessionsLoadedAgents={});let r=[];for(let i of n)!t&&this._yeaftOpenedSessionsLoadedAgents[i]||(this._yeaftOpenedSessionsLoadedAgents[i]=Date.now(),r.push(i),this.sessionCrudRequest("list",{},{agentId:i}).catch(o=>{delete this._yeaftOpenedSessionsLoadedAgents[i]}));return r},requestYeaftSessionBootstrap({forceSessionReady:e=!1,catchUpHistory:t=!1,forceHistoryReplay:s=!1}={}){if(!this.currentAgent)return;let n=Fs(this),r=n?be(this,n):this.currentAgent,i=he(r,n),o=n?this.yeaftSessionHistoryState[i]:null,a=e||!this.yeaftSessionReady||!this.yeaftModel||!this.yeaftStatus,l=Number.isFinite(o?.latestSeq)?o.latestSeq:null,c=!!n&&!!this.yeaftConversationId&&Array.isArray(this.messagesMap?.[this.yeaftConversationId])&&this.messagesMap[this.yeaftConversationId].some(I=>I&&(I.sessionId??I.groupId??null)===n),d=!!this._yeaftHistoryBrowserHydrationBySession?.[i];n&&r&&!o?.loaded&&!o?.loading&&!c&&!d&&(d=!0,this.hydrateYeaftHistoryBrowserCache(n,r,{revalidate:!0}));let u=!!n&&!d&&bd({sessionState:o,hasCachedSessionRows:c,force:!!s}),f=!!n&&!d&&!u&&yd(o,t);if(!a&&!u&&!f)return!1;let p=`${r}:${n||"__none__"}`,g=a&&!u&&!f;if(g&&this.yeaftBootstrapMetaLoadingKey===p)return!1;g&&(this.yeaftBootstrapMetaLoadingKey=p);let m=null;n&&u?m=this.beginYeaftHistoryLoad({agentId:r,sessionId:n,mode:"recent",preserveLoaded:!1}):n&&c&&!o?.loaded?(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[i]:{...o||{},loaded:!0,loading:!1,hasMore:!!o?.hasMore,oldestSeq:Number.isFinite(o?.oldestSeq)?o.oldestSeq:null,count:o?.count||0,latestSeq:l}},this.yeaftLoadingMoreHistory=!1):n&&f&&(m=this.beginYeaftHistoryLoad({agentId:r,sessionId:n,mode:"delta",preserveLoaded:!0,latestSeq:l}));let v={type:"yeaft_load_history",agentId:r,sessionId:n,...m?{requestId:m.requestId}:{}};f?v.afterSeq=l:v.limit=u?xi:0;let k=_s();v.perfTraceId=k;let w=f?"delta":u?"recent":"metadata";return n&&(this.yeaftHistoryPerfTraceBySession={...this.yeaftHistoryPerfTraceBySession||{},[i]:k}),Ge(this,{traceId:k,phase:"history.request_send",agentId:r,sessionId:n,messageType:v.type,bytes:JSON.stringify(v).length,detail:{mode:w,limit:v.limit??null,afterSeq:v.afterSeq??null,hasCachedSessionRows:c,needSessionReady:a}}),this.sendWsMessage(v),!0},leaveYeaft(){this.activateChatView({persistPreference:!0})},fetchYeaftToolStats(){this.currentAgent&&(this.yeaftToolStatsLoading=!0,this.sendWsMessage({type:"yeaft_fetch_tool_stats",agentId:this.currentAgent}),this._fetchYeaftToolStatsTimer&&clearTimeout(this._fetchYeaftToolStatsTimer),this._fetchYeaftToolStatsTimer=setTimeout(()=>{this.yeaftToolStatsLoading&&(this.yeaftToolStatsLoading=!1,this.yeaftToolStats={...this.yeaftToolStats||{snapshot:{},registered:[],unused:[]},error:null,notice:"Tool stats are unavailable right now. Try again after the agent reconnects.",fetchedAt:Date.now()}),this._fetchYeaftToolStatsTimer=null},1e4))},loadYeaftDebugHistory({groupId:e,limit:t,dreamLimit:s,indexOnly:n=!1,detailTurnId:r=null,search:i=void 0}={}){if(!this.currentAgent)return;let o=typeof i=="string"?i.trim():(this.yeaftDebugSearch||"").trim(),a=typeof r=="string"&&r,l=o&&!a?kp:Ja,c=Number.isFinite(t)&&t>0?t:this.yeaftDebugHistoryLimit||l,d=Math.max(1,Math.min(l,c)),u=a?"detail":"list",f=`dbg_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`,p=JSON.stringify({agentId:this.currentAgent,groupId:e||null,limit:d,dreamLimit:Number.isFinite(s)&&s>0?s:5,indexOnly:!!n,detailTurnId:r||null,search:a?"":o});if(this._yeaftDebugHistoryInFlightKey===p)return;this._yeaftDebugHistoryInFlightKey=p,a?this._yeaftDebugHistoryLatestDetailRequestId=f:this._yeaftDebugHistoryLatestListRequestId=f,this.yeaftDebugHistoryLimit=d,this.yeaftDebugHistoryLoading=!0,this.yeaftDebugHistoryError=null;let g={type:"yeaft_fetch_debug_history",agentId:this.currentAgent,requestId:f,requestKind:u,limit:d,dreamLimit:Number.isFinite(s)&&s>0?s:5};n&&(g.indexOnly=!0),typeof r=="string"&&r?g.detailTurnId=r: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.yeaftDebugPanel?.status==="loading"&&(this.yeaftDebugPanel={...this.yeaftDebugPanel,status:"error",error:this.yeaftDebugHistoryError})),this._yeaftDebugHistoryInFlightKey=null,this._fetchYeaftDebugHistoryTimer=null},1e4)},openYeaftTurnDebug({sessionId:e=null,turnId:t=null}={}){if(!this.currentAgent)return;let s=`dbgpanel_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`,n=t?"loading":"idle";this.yeaftDebugPanel={open:!0,status:n,requestId:s,agentId:this.currentAgent,sessionId:e||null,turnId:t||null,error:null},t&&this.loadYeaftDebugHistory({groupId:e||void 0,limit:1,dreamLimit:5,detailTurnId:t})},closeYeaftDebugPanel(){let t=(this.yeaftDebugPanel||{}).turnId||null;if(this.yeaftDebugPanel={open:!1,status:"idle",requestId:null,agentId:null,sessionId:null,turnId:null,error:null},t&&this.yeaftDebugTurnsById&&this.yeaftDebugTurnsById[t]){let s={...this.yeaftDebugTurnsById};delete s[t],this.yeaftDebugTurnsById=s,this.yeaftDebugTurnOrder=(this.yeaftDebugTurnOrder||[]).filter(n=>n!==t),this.yeaftDebugLoops=(this.yeaftDebugLoops||[]).filter(n=>!n||n.turnId!==t)}},agentIdForSession(e){return be(this,e)},sendYeaftSessionMessage({groupId:e,text:t,mentions:s,attachments:n,quote:r}){let i=be(this,e);if(!e||!i)return;let o=Array.isArray(n)?n.filter(g=>g&&g.fileId):[],a=Qe(r),l=o.length>0;if(!t?.trim()&&!l)return;let c=t?.trim()?t:"(attached files)",d=`u_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`,u=_s();this.yeaftPerfTraceByMessageId={...this.yeaftPerfTraceByMessageId||{},[d]:u},Ge(this,{traceId:u,phase:"send.prepare",agentId:i,sessionId:e,turnId:d,messageType:"yeaft_session_send",detail:{mentionCount:Array.isArray(s)?s.length:0,attachmentCount:o.length,quoted:!!a}});let f=st(this,e);if(f){let g={id:d,messageId:d,clientMessageId:d,stableKey:ns(i,e,d),uiKey:ns(i,e,d),type:"user",content:c,sessionId:e,turnId:d,...a?{quote:a}:{}};if(o.length>0&&(g.attachments=o.map(m=>({fileId:m.fileId,name:m.name,preview:m.preview,isImage:!!m.isImage,mimeType:m.mimeType||""}))),this.addMessageToConversation(f,g),this.processingConversations[f]=!0,e){let m=It(i,e);this.yeaftProcessingSessions={...this.yeaftProcessingSessions,...m?{[m]:!0}:{}}}this._turnCompletedConvs?.delete(f),this._closedAt?.[f]&&delete this._closedAt[f],this.getOrCreateExecutionStatus(f),cn(this,f)}let p={type:"yeaft_session_send",agentId:i,id:d,sessionId:e,text:c,mentions:Array.isArray(s)?s:[],perfTraceId:u,...a?{quote:a}:{}};o.length>0&&(p.attachments=o.map(g=>({fileId:g.fileId,isImage:!!g.isImage}))),Ge(this,{traceId:u,phase:"send.websocket_send",agentId:i,sessionId:e,turnId:d,messageType:p.type,bytes:JSON.stringify(p).length}),this.sendWsMessage(p)},cancelYeaftTask({agentId:e=null,sessionId:t,taskId:s}){let n=typeof t=="string"?t.trim():"",r=typeof s=="string"?s.trim():"",i=be(this,n,e);return!i||!n||!r?!1:(this.yeaftStoppingTasksById={...this.yeaftStoppingTasksById,[Qa(i,n,r)]:!0},this.sendWsMessage({type:"yeaft_task_cancel",agentId:i,sessionId:n,taskId:r,clientRequestId:`task_cancel_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}),!0)},hydrateYeaftHistoryBrowserCache(e,t=null,{revalidate:s=!1}={}){let n=e||null,r=be(this,n,t),i=is();if(!i||!r||!n)return s&&this.revalidateYeaftHistoryBrowserCache(n,r),Promise.resolve(!1);let o=he(r,n),a=`${i.epoch}:${crypto.randomUUID()}`;return this._yeaftHistoryBrowserHydrationBySession={...this._yeaftHistoryBrowserHydrationBySession||{},[o]:a},$c({fence:i,agentId:r,sessionId:n}).then(l=>{if(!l||this._yeaftHistoryBrowserHydrationBySession?.[o]!==a)return!1;let c=st(this,n,r);if(!c)return!1;let d=this.messagesMap[c]||[];Ms(this,c,l.rows),this.messagesMap[c]=ui(d,l.rows).sort((p,g)=>{let m=Number.isFinite(p?.seq)?p.seq:null,v=Number.isFinite(g?.seq)?g.seq:null;return m!==null&&v!==null&&m!==v?m-v:m!==null&&v===null?-1:m===null&&v!==null?1:(p?.timestamp||0)-(g?.timestamp||0)});let u=this.yeaftSessionHistoryState[o]||{},f=Math.max(Number.isFinite(u.latestSeq)?u.latestSeq:-1,Number.isFinite(l.latestSeq)?l.latestSeq:-1);return this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[o]:{...u,loaded:!0,loading:!!u.loading,latestSeq:f>=0?f:null,streamId:l.streamId||null,revision:Number.isFinite(l.revision)?l.revision:null,oldestSeq:Number.isFinite(u.oldestSeq)?u.oldestSeq:l.oldestSeq,hasMore:u.loaded?!!u.hasMore:!!l.hasMore,count:Math.max(Number(u.count)||0,Number(l.rowCount)||0),browserCached:!0}},zn(this,{conversationId:c,agentId:r,sessionId:n,incomingRows:l.rows,activeAgentId:r,activeSessionId:n}),this.syncActiveYeaftHistoryLoad(),s&&this.revalidateYeaftHistoryBrowserCache(n,r),!0}).catch(()=>(s&&this.revalidateYeaftHistoryBrowserCache(n,r),!1)).finally(()=>{if(this._yeaftHistoryBrowserHydrationBySession?.[o]!==a)return;let{[o]:l,...c}=this._yeaftHistoryBrowserHydrationBySession;this._yeaftHistoryBrowserHydrationBySession=c})},revalidateYeaftHistoryBrowserCache(e,t=null){let s=e||null,n=be(this,s,t);if(!n||!s||this.currentView!=="yeaft")return!1;let r=he(n,s),i=this.yeaftSessionHistoryState?.[r]||null;if(i?.loading)return!1;let o=Number.isFinite(i?.latestSeq)?i.latestSeq:null,a=o===null?"recent":"delta",l=this.beginYeaftHistoryLoad({agentId:n,sessionId:s,mode:a,preserveLoaded:o!==null,latestSeq:o});if(!l)return!1;let c={type:"yeaft_load_history",agentId:n,sessionId:s,requestId:l.requestId,...o===null?{limit:xi}:{afterSeq:o,maxRows:cp,maxBytes:dp,...typeof i?.streamId=="string"?{streamId:i.streamId}:{},...Number.isFinite(i?.revision)?{revision:i.revision}:{}}};return o!==null&&(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[r]:{...this.yeaftSessionHistoryState[r],syncingAfterSeq:o}}),this.sendWsMessage(c)?!0:(Un(this,{agentId:n,sessionId:s,requestId:l.requestId,error:"history_load_send_failed"}),!1)},continueYeaftHistoryDelta(e,t=null,s=null){let n=e||null,r=be(this,n,t);if(!r||!n||!Number.isFinite(s))return!1;let i=he(r,n),o=this.yeaftSessionHistoryState?.[i]||null;if(o?.loading)return!1;let a=this.beginYeaftHistoryLoad({agentId:r,sessionId:n,mode:"delta",preserveLoaded:!0,latestSeq:s});if(!a)return!1;this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[i]:{...this.yeaftSessionHistoryState[i],syncingAfterSeq:s}};let l={type:"yeaft_load_history",agentId:r,sessionId:n,requestId:a.requestId,afterSeq:s,maxRows:cp,maxBytes:dp,...typeof o?.streamId=="string"?{streamId:o.streamId}:{},...Number.isFinite(o?.revision)?{revision:o.revision}:{}};return this.sendWsMessage(l)?!0:(Un(this,{agentId:r,sessionId:n,requestId:a.requestId,error:"history_load_send_failed"}),!1)},persistYeaftHistoryBrowserCache(e,t=null,s=null){let n=e||null,r=be(this,n,t),i=is(),o=s||st(this,n,r);if(!i||!r||!n||!o)return Promise.resolve(!1);let a=he(r,n),l=(this.messagesMap[o]||[]).filter(c=>(c?.sessionId??c?.groupId??null)===n);return Vc({fence:i,agentId:r,sessionId:n,rows:l,historyState:this.yeaftSessionHistoryState[a]||null})},removeYeaftHistoryBrowserCache(e,t){let s=is();return!s||!e||!t?Promise.resolve(!0):ia({fence:s,agentId:e,sessionId:t}).catch(()=>!1)},clearYeaftHistoryMemory({agentId:e=null,sessionId:t=null,preserveLiveRows:s=!1,preserveSessionOwner:n=!1}={}){let r=e||null,i=t||null,o=r&&i?he(r,i):null,a={};for(let[p,g]of Object.entries(this._yeaftHistoryWindowPendingByKey||{})){if(!(!o||g?.agentId===r&&g?.sessionId===i)){a[p]=g;continue}clearTimeout(g?.timeout),g?.resolve?.(!1)}this._yeaftHistoryWindowPendingByKey=a;let l=r&&this.yeaftConversationIdsByAgent?.[r]||null,c=o?new Set([l].filter(Boolean)):new Set(Object.values(this.yeaftConversationIdsByAgent||{}).filter(Boolean));!o&&this.yeaftConversationId&&c.add(this.yeaftConversationId);let d={...this.messagesMap||{}};for(let p of c)Array.isArray(d[p])&&(d[p]=o?d[p].filter(g=>(g?.sessionId??g?.groupId??null)!==i?!0:s&&!kt(g)):[]);this.messagesMap=d;let u=p=>{if(!o)return{};let{[o]:g,...m}=p||{};return m};if(this.yeaftSessionHistoryState=u(this.yeaftSessionHistoryState),this.yeaftHistoryCacheState=u(this.yeaftHistoryCacheState),this.yeaftMessageWindowState=u(this.yeaftMessageWindowState),this._yeaftHistoryBrowserHydrationBySession=u(this._yeaftHistoryBrowserHydrationBySession),this.yeaftHistoryOutlineBySession=u(this.yeaftHistoryOutlineBySession),o){let p=this._yeaftHistoryOutlineTimeouts?.[o];p&&clearTimeout(p),this._yeaftHistoryOutlineTimeouts=u(this._yeaftHistoryOutlineTimeouts)}else{for(let p of Object.values(this._yeaftHistoryOutlineTimeouts||{}))p&&clearTimeout(p);this._yeaftHistoryOutlineTimeouts={}}if((!o||this.yeaftHistorySearchState?.agentId===r&&this.yeaftHistorySearchState?.sessionId===i)&&(this._yeaftHistorySearchTimeout&&clearTimeout(this._yeaftHistorySearchTimeout),this._yeaftHistorySearchTimeout=null,this.yeaftHistorySearchState={requestId:null,agentId:null,sessionId:null,query:"",senderKey:"",loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,nextCursor:null,error:null}),this._yeaftHistoryRevealLeases=o?Object.fromEntries(Object.entries(this._yeaftHistoryRevealLeases||{}).filter(([,p])=>p?.sessionKey!==o)):{},o||(this.yeaftHasMoreHistory=!1,this.yeaftLoadingMoreHistory=!1,this.yeaftOldestLoadedSeq=null),!n&&i&&this.yeaftSessionAgentById?.[i]===r){let{[i]:p,...g}=this.yeaftSessionAgentById;this.yeaftSessionAgentById=g}this.syncActiveYeaftHistoryLoad()},getYeaftMessageWindowKey(e=null,t=null){let s=e||this.yeaftActiveSessionFilter||null,n=be(this,s,t);return he(n,s)},pruneYeaftMessageWindow(e=null,t=null){if(this.currentView!=="yeaft")return;let s=this.getYeaftMessageWindowKey(e,t);Object.values(this._yeaftHistoryRevealLeases||{}).some(r=>r?.sessionKey===s)||(this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[s]:{visibleTurns:Os()}})},expandYeaftMessageWindow(e=null,t=br(),s=null){if(this.currentView!=="yeaft")return;let n=this.getYeaftMessageWindowKey(e,s),i=(this.yeaftMessageWindowState[n]?.visibleTurns||Os())+Math.max(1,Number.isFinite(t)?Math.floor(t):br());this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[n]:{visibleTurns:i}}},isYeaftMessageCached(e,t,s=null,n=null){let r=e||this.yeaftActiveSessionFilter||null,i=s||st(this,r,n);return!i||!t?!1:(this.messagesMap[i]||[]).some(o=>(!r||(o?.sessionId??o?.groupId??null)===r)&&((o?.id||o?.messageId)===t||o?.persistedMessageId===t))},revealYeaftMessage(e,t,s=null,n=null){let r=e||this.yeaftActiveSessionFilter||null,i=be(this,r,n),o=s||st(this,r,i);if(!o||!t)return!1;let a=(this.messagesMap[o]||[]).filter(g=>g?._historyWindowPrefetched===!0?!1:r?(g?.sessionId??g?.groupId??null)===r:!0),c=a.findIndex(g=>(g?.id||g?.messageId)===t||g?.persistedMessageId===t);if(c<0){let g=(this.messagesMap[o]||[]).find(m=>m?._historyWindowPrefetched===!0&&(m?.sessionId??m?.groupId??null)===r&&((m?.id||m?.messageId)===t||m?.persistedMessageId===t));if(!g)return!1;g._historyWindowPrefetched=!1,a.push(g),a.sort((m,v)=>{let k=Number.isFinite(m?.seq)?m.seq:null,w=Number.isFinite(v?.seq)?v.seq:null;return k!==null&&w!==null&&k!==w?k-w:k!==null&&w===null?-1:k===null&&w!==null?1:(m?.timestamp||0)-(v?.timestamp||0)}),c=a.indexOf(g)}let d=np(a),u=d.findIndex(g=>c>=g.start&&c<g.end);if(u<0)return!1;a[c]._historyWindowPrefetched=!1;let f=Math.max(Os(),d.length-u),p=this.getYeaftMessageWindowKey(r,i);return this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[p]:{visibleTurns:f}},!0},getYeaftHistoryOutlineState(e=null,t=null){let s=e||this.yeaftActiveSessionFilter||null,n=be(this,s,t),r=he(n,s),i=this.yeaftHistoryOutlineBySession[r]||{requestId:null,agentId:n,sessionId:s,loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,nextCursor:null,totalCount:null,loaded:!1,retryAttempt:0,error:null},o=st(this,s,n),a=o?this.messagesMap[o]||[]:[],l=new Map((i.results||[]).map(f=>[wr(f),f])),c=0;for(let f of a){if((f?.sessionId??f?.groupId??null)!==s)continue;let p=f.messageId||f.id;if(!p)continue;let g=f.type==="user"&&!!f.clientMessageId&&p===f.clientMessageId,m=f.type==="assistant"&&f.isStreaming===!0;if(!g&&!m)continue;let v=f.type,k=f.turnId||f.threadId||p,w=f.speakerVpId||f.vpId||null,I=wr({role:v,messageId:p,clientMessageId:f.clientMessageId,turnId:k,speakerVpId:w}),h=l.get(I),b=(typeof f.content=="string"?f.content:"").replace(/\s+/g," ").trim();l.set(I,{...h,agentId:n,sessionId:s,messageId:Number.isFinite(h?.seq)?h.messageId:p,...f.clientMessageId?{clientMessageId:f.clientMessageId}:{},turnId:k,role:v,speakerVpId:w||h?.speakerVpId||null,timestamp:f.timestamp||f.ts||h?.timestamp||null,snippet:b.length>180?`${b.slice(0,180).trimEnd()}\u2026`:b||h?.snippet||""}),h||(c+=1)}let d=f=>{let p=typeof f=="number"?f:Date.parse(f||"");return Number.isFinite(p)?p:0},u=Array.from(l.values()).sort((f,p)=>Number.isFinite(f.seq)&&Number.isFinite(p.seq)?f.seq-p.seq:d(f.timestamp)-d(p.timestamp));return{...i,results:u,totalCount:Number.isFinite(i.totalCount)?i.totalCount+c:i.totalCount}},promoteYeaftHistoryOutlineRow(e,t=null){let s=e?.sessionId??e?.groupId??null,n=he(t,s),r=this.yeaftHistoryOutlineBySession[n];if(!s||!t||!r?.loaded||r.loading)return!1;let i=e?.type;if(i!=="user"&&i!=="assistant")return!1;let o=e.dbMessageId||e.messageId||e.id||null,a=_y(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(),f=wr({role:i,messageId:o,clientMessageId:e.clientMessageId,turnId:l,speakerVpId:c}),p=new Map((r.results||[]).map(I=>[wr(I),I])),g=p.get(f);p.set(f,{...g,agentId:t,sessionId:s,messageId:o,...e.clientMessageId?{clientMessageId:e.clientMessageId}:{},turnId:l,seq:a,role:i,speakerVpId:c,timestamp:e.timestamp||e.ts||g?.timestamp||null,snippet:u.length>180?`${u.slice(0,180).trimEnd()}\u2026`:u||g?.snippet||""});let m=50,v=Array.from(p.values()).sort((I,h)=>(I.seq||0)-(h.seq||0)),k=v.length>m,w=v.slice(-m);return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[n]:{...r,results:w,hasMore:r.hasMore||k,nextBeforeSeq:k&&Number.isFinite(w[0]?.seq)?w[0].seq:r.nextBeforeSeq,totalCount:Number.isFinite(r.totalCount)&&!g?r.totalCount+1:r.totalCount}},!0},promoteCompletedYeaftHistoryOutline(e,t=null,s=null){let n=this.messagesMap[e]||[],r=null,i=[];for(let o=n.length-1;o>=0;o--){let a=n[o];if(a?.type==="user")break;if(t&&a?.turnId&&a.turnId!==t||a?.type!=="assistant")continue;let l=typeof a.content=="string"?a.content.replace(/\s+/g," ").trim():"";r?!String(r.content||"").trim()&&l&&(r=a):r=a,l&&i.unshift(l)}return r?this.promoteYeaftHistoryOutlineRow({...r,content:i.join(" ")},s):!1},invalidateYeaftHistoryOutline(e,t=null){let s=he(t,e),n=this.yeaftHistoryOutlineBySession[s];if(!e||!t||!n)return!1;if(n.loading)return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[s]:{...n,refreshPending:!0}},!0;this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[s]:{...n,loaded:!1,refreshPending:!1}};let r=be(this,e);return this.currentView==="yeaft"&&this.yeaftActiveSessionFilter===e&&r===t?this.loadYeaftHistoryOutline({force:!0,targetSessionId:e,targetAgentId:t}):!0},loadYeaftHistoryOutline({append:e=!1,force:t=!1,targetSessionId:s=null,targetAgentId:n=null,retryAttempt:r=0}={}){if(this.currentView!=="yeaft"&&!s)return!1;let i=s||this.yeaftActiveSessionFilter||null,o=n||be(this,i);if(!i||!o)return!1;let a=he(o,i),l=this.getYeaftHistoryOutlineState(i,o);if(!e&&l.loaded&&!t)return!0;if(e&&(!l.hasMore||!Number.isFinite(l.nextBeforeSeq))||l.loading)return!1;if(!yp(this,o,"session_history_outline"))return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[a]:{...l,error:"unsupported",loading:!1}},!1;let c=`history_outline_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,d={...l,requestId:c,agentId:o,sessionId:i,loading:!0,requestAppend:e,refreshPending:!1,retryAttempt:r,error:null};this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[a]:d};let u=this._yeaftHistoryOutlineTimeouts[a];u&&clearTimeout(u);let f=setTimeout(()=>{let m=this.yeaftHistoryOutlineBySession[a];if(m?.requestId!==c)return;let v={...this._yeaftHistoryOutlineTimeouts};delete v[a],this._yeaftHistoryOutlineTimeouts=v;let k=m.refreshPending===!0;this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[a]:{...m,requestId:null,loading:!1,requestAppend:!1,loaded:k?!1:m.loaded,refreshPending:!1,error:k?null:"timeout"}},k&&this.loadYeaftHistoryOutline({force:!0,targetSessionId:i,targetAgentId:o})},1e4);this._yeaftHistoryOutlineTimeouts={...this._yeaftHistoryOutlineTimeouts,[a]:f};let p=_s(),g={type:"yeaft_load_history_outline",agentId:o,sessionId:i,requestId:c,perfTraceId:p,limit:50,...e&&l.nextCursor?{cursor:l.nextCursor}:{},...e&&!l.nextCursor&&Number.isFinite(l.nextBeforeSeq)?{beforeSeq:l.nextBeforeSeq}:{}};return Ge(this,{traceId:p,phase:"history_outline.request_send",agentId:o,sessionId:i,messageType:g.type,bytes:JSON.stringify(g).length,detail:{append:e,limit:g.limit}}),this.sendWsMessage(g),!0},handleYeaftHistoryOutline(e){if(!e?.agentId||!e?.sessionId)return!1;let t=he(e.agentId,e.sessionId),s=this.yeaftHistoryOutlineBySession[t];if(!s||e.requestId!==s.requestId)return!1;let n=this._yeaftHistoryOutlineTimeouts[t];n&&clearTimeout(n);let r={...this._yeaftHistoryOutlineTimeouts};delete r[t],this._yeaftHistoryOutlineTimeouts=r;let i=Number.isInteger(s.retryAttempt)?s.retryAttempt:0;if(ky.has(e.error)&&i<up.length){let u=up[i],f=setTimeout(()=>{let p=this.yeaftHistoryOutlineBySession[t];if(p?.requestId!==e.requestId||p.loading!==!0)return;let g={...this._yeaftHistoryOutlineTimeouts};delete g[t],this._yeaftHistoryOutlineTimeouts=g;let m=p.refreshPending===!0;this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[t]:{...p,requestId:null,loading:!1,refreshPending:!1}},this.loadYeaftHistoryOutline({append:m?!1:s.requestAppend===!0,force:!0,targetSessionId:e.sessionId,targetAgentId:e.agentId,retryAttempt:i+1})},u);return this._yeaftHistoryOutlineTimeouts={...this._yeaftHistoryOutlineTimeouts,[t]:f},!0}let o=Array.isArray(e.results)?e.results.map(u=>({...u,agentId:e.agentId,sessionId:e.sessionId})):[],a=s.requestAppend?[...s.results||[],...o]:o,l=new Map(a.filter(u=>u?.messageId).map(u=>[wr(u),u])),c=Array.from(l.values()).sort((u,f)=>(u.seq||0)-(f.seq||0)),d=s.refreshPending===!0;return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[t]:{...s,requestId:null,loading:!1,requestAppend:!1,refreshPending:!1,loaded:d?!1:!e.error,results:c,hasMore:!!e.hasMore,nextBeforeSeq:Number.isFinite(e.nextBeforeSeq)?e.nextBeforeSeq:null,nextCursor:e.nextCursor&&typeof e.nextCursor=="object"?e.nextCursor:null,totalCount:Number.isFinite(e.totalCount)?e.totalCount:s.totalCount,error:d?null:e.error||null}},d&&this.loadYeaftHistoryOutline({force:!0,targetSessionId:e.sessionId,targetAgentId:e.agentId}),!0},searchYeaftHistory(e,{append:t=!1,senderKey:s=""}={}){if(this.currentView!=="yeaft")return!1;let n=typeof e=="string"?e.trim():"",r=typeof s=="string"&&(s==="user"||s.startsWith("vp:"))?s.slice(0,103):"",i=this.yeaftActiveSessionFilter||null,o=be(this,i);if(this._yeaftHistorySearchTimeout&&(clearTimeout(this._yeaftHistorySearchTimeout),this._yeaftHistorySearchTimeout=null),!i||!o||Array.from(n).length<1&&!r)return this.yeaftHistorySearchState={requestId:null,agentId:o,sessionId:i,query:n,senderKey:r,loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,nextCursor:null,error:null},!1;let a=this.yeaftHistorySearchState||{};if(!yp(this,o,"session_history_search"))return this.yeaftHistorySearchState={requestId:null,agentId:o,sessionId:i,query:n,senderKey:r,loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,nextCursor:null,error:"unsupported"},!1;let l=`history_search_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;this.yeaftHistorySearchState={requestId:l,agentId:o,sessionId:i,query:n,senderKey:r,loading:!0,results:t&&a.query===n&&a.senderKey===r?a.results:[],hasMore:!1,nextBeforeSeq:t&&a.query===n&&a.senderKey===r?a.nextBeforeSeq:null,nextCursor:t&&a.query===n&&a.senderKey===r&&a.nextCursor||null,error:null},this._yeaftHistorySearchTimeout=setTimeout(()=>{this.yeaftHistorySearchState?.requestId===l&&(this._yeaftHistorySearchTimeout=null,this.yeaftHistorySearchState={...this.yeaftHistorySearchState,loading:!1,error:"timeout"})},1e4);let c=_s(),d={type:"yeaft_search_history",agentId:o,sessionId:i,requestId:l,perfTraceId:c,query:n,senderKey:r,limit:20,...t&&a.query===n&&a.senderKey===r&&a.nextCursor?{cursor:a.nextCursor}:{},...t&&a.query===n&&a.senderKey===r&&!a.nextCursor&&Number.isFinite(a.nextBeforeSeq)?{beforeSeq:a.nextBeforeSeq}:{}};return Ge(this,{traceId:c,phase:"history_search.request_send",agentId:o,sessionId:i,messageType:d.type,bytes:JSON.stringify(d).length,detail:{append:t,limit:d.limit,queryLength:Array.from(n).length,senderFilter:!!r}}),this.sendWsMessage(d),!0},handleYeaftHistorySearchResult(e){let t=this.yeaftHistorySearchState||{};if(!e||e.requestId!==t.requestId||e.agentId!==t.agentId||e.sessionId!==t.sessionId||e.query!==t.query||(e.senderKey||"")!==t.senderKey)return!1;this._yeaftHistorySearchTimeout&&(clearTimeout(this._yeaftHistorySearchTimeout),this._yeaftHistorySearchTimeout=null);let s=Array.isArray(e.results)?e.results.map(r=>({...r,agentId:e.agentId,sessionId:e.sessionId})):[],n=new Map((t.results||[]).map(r=>[Wn(r),r]));for(let r of s)(r?.entryId||r?.messageId)&&n.set(Wn(r),r);return this.yeaftHistorySearchState={...t,loading:!1,results:Array.from(n.values()),hasMore:!!e.hasMore,nextBeforeSeq:Number.isFinite(e.nextBeforeSeq)?e.nextBeforeSeq:null,nextCursor:e.nextCursor&&typeof e.nextCursor=="object"?e.nextCursor:null,error:e.error||null},!0},loadYeaftHistoryWindow(e,{validateCached:t=!1}={}){let s=e?.sessionId||this.yeaftActiveSessionFilter||null,n=e?.agentId||be(this,s),r=Wn(e);if(!s||!n||!e?.entryId||!Number.isFinite(e.indexGeneration)||!Number.isFinite(e.entryStartSeq)||!e?.messageId||!Number.isFinite(e.seq))return Promise.resolve(!1);let i=st(this,s,n);if((this.messagesMap[i]||[]).some(p=>(p?.sessionId??p?.groupId??null)===s&&p?.historyEntryId===e.entryId&&p?.historyIndexGeneration===e.indexGeneration)&&!t)return Promise.resolve(!0);let a=he(n,`${s}:${r}:generation:${e.indexGeneration}`),l=this._yeaftHistoryWindowPendingByKey||{};if(l[a]?.promise)return l[a].promise;let c=`history_window_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,d=null,u=new Promise(p=>{d=p}),f=setTimeout(()=>{if(this._yeaftHistoryWindowPendingByKey?.[a]?.requestId!==c)return;let{[a]:g,...m}=this._yeaftHistoryWindowPendingByKey;this._yeaftHistoryWindowPendingByKey=m,d(!1)},1e4);return this._yeaftHistoryWindowPendingByKey={...l,[a]:{requestId:c,agentId:n,sessionId:s,entryId:e.entryId||null,indexGeneration:Number.isFinite(e.indexGeneration)?e.indexGeneration:null,entryStartSeq:Number.isFinite(e.entryStartSeq)?e.entryStartSeq:null,resultId:r,messageId:e.messageId,prefetch:!t,resolve:d,timeout:f,promise:u}},this.sendWsMessage({type:"yeaft_load_history_window",agentId:n,sessionId:s,requestId:c,prefetch:!t,...e.entryId?{entryId:e.entryId}:{},...Number.isFinite(e.indexGeneration)?{indexGeneration:e.indexGeneration}:{},...Number.isFinite(e.entryStartSeq)?{entryStartSeq:e.entryStartSeq}:{},anchorMessageId:e.messageId,anchorSeq:e.seq,beforeTurns:5,afterTurns:5,maxRows:200,maxBytes:512*1024}),u},beginYeaftHistoryReveal(e){let t=e?.sessionId||null,s=e?.agentId||null,n=st(this,t,s);if(!t||!s||!n)return null;let r=he(s,t),i=`${r}${n}`,o=++this._yeaftHistoryRevealSequence,a={key:i,token:o,sessionKey:r,agentId:s,sessionId:t,conversationId:n};return this._yeaftHistoryRevealLeases={...this._yeaftHistoryRevealLeases||{},[i]:a},a},finishYeaftHistoryReveal(e){if(!e?.key||!Number.isFinite(e.token)||this._yeaftHistoryRevealLeases?.[e.key]?.token!==e.token)return!1;let{[e.key]:s,...n}=this._yeaftHistoryRevealLeases;return this._yeaftHistoryRevealLeases=n,!0},async revealYeaftHistoryResult(e,t=null){let s=!t,n=t||this.beginYeaftHistoryReveal(e),r=e?.sessionId||null,i=e?.agentId||null,o=st(this,r,i);if(!n||!r||!i||!o||!e?.messageId)return this.finishYeaftHistoryReveal(n),!1;if(!await this.loadYeaftHistoryWindow(e,{validateCached:!0}))return this.finishYeaftHistoryReveal(n),!1;if(this.currentView!=="yeaft"||this.yeaftActiveSessionFilter!==r||be(this,r)!==i||st(this,r,i)!==o)return this.finishYeaftHistoryReveal(n),!1;let l=this.revealYeaftMessage(r,e.messageId,o,i);return(!l||s)&&this.finishYeaftHistoryReveal(n),l},pendingYeaftHistoryWindow(e){let s=Object.entries(this._yeaftHistoryWindowPendingByKey||{}).find(([,i])=>i?.requestId===e?.requestId);if(!s)return null;let[n,r]=s;return e.agentId!==r.agentId||e.sessionId!==r.sessionId||e.entryId&&r.entryId&&e.entryId!==r.entryId||Number.isFinite(e.indexGeneration)&&Number.isFinite(r.indexGeneration)&&e.indexGeneration!==r.indexGeneration?null:{pendingKey:n,pending:r}},handleYeaftHistoryWindow(e,t=null){let s=this.pendingYeaftHistoryWindow(e);if(!s)return!1;let{pendingKey:n,pending:r}=s;r.prefetch===!0&&e.prefetch!==!0&&(e.prefetch=!0),clearTimeout(r.timeout);let{[n]:i,...o}=this._yeaftHistoryWindowPendingByKey;this._yeaftHistoryWindowPendingByKey=o;let a=!e.error&&!!t&&this.isYeaftMessageCached(r.sessionId,r.messageId,t,r.agentId);return r.resolve(!!a),!!a},createYeaftSession({displayName:e,vpIds:t,defaultVpId:s,workDir:n,agentId:r}={}){let i=Array.isArray(t)?t.slice():[],o=s&&i.includes(s)?s:i[0]||null,a=(e||"").trim(),l=(n||"").trim(),c={roster:i,defaultVpId:o};return a&&(c.name=a),l&&(c.workDir=l),this.sessionCrudRequest("create",c,{agentId:r})},handleYeaftOutput(e){if(!e)return;let t=e.agentId||this.yeaftAgentId||this.currentAgent||null,s=e.conversationId||e.event?.conversationId||null,n=dn(this,t,s);if(e.data&&n){if(e.data.type!=="result")return;let a=Td(this,t,s);if(!a)return;let l=e.turnId?hn(this,t,e.turnId):"",c=!!(l&&this.activeVpTurns?.[l])||(this.messagesMap?.[a]||[]).some(d=>d?.turnId===e.turnId&&(d.isStreaming||d.status==="pending"));if(!e.turnId||!c)return;e={...e,conversationId:a}}if(e.perfTraceId&&(Ge(this,{traceId:e.perfTraceId,phase:"receive.yeaft_output",agentId:e.agentId||null,sessionId:e.sessionId||null,vpId:e.vpId||null,turnId:e.turnId||null,threadId:e.threadId||null,messageType:e.data?.type||e.event?.type||e.type}),e.turnId&&(this.yeaftPerfTraceByTurnId={...this.yeaftPerfTraceByTurnId||{},[e.turnId]:e.perfTraceId})),e.data){let a=e.agentId||null,l=Wt(this,a,e.conversationId);if(l){let d=Xa(e,e.turnId||"session");for(let u of["retry","retrying","thinking"])ln(this,l,`${u}:${d}`);e.data?.tool_use_result&&ln(this,l,`tool:${d}`)}let c=e.turnId?hn(this,e.agentId||null,e.turnId):"";if(c&&this.activeVpTurns?.[c]?.retryAttempt){let{retryAttempt:d,retryMax:u,retryDelayMs:f,retryReason:p,retryRecoveryMode:g,...m}=this.activeVpTurns[c];this.activeVpTurns={...this.activeVpTurns,[c]:m}}if(l){let d=e.sessionId??e.groupId??null,u=bp(this,d,a),f=a&&this.yeaftConversationIdsByAgent?this.yeaftConversationIdsByAgent[a]:null,p=Tt(this,a);p&&p.targetConversationId!==l?cr(this,a,l):!p&&f&&f!==l&&!String(f).startsWith("yeaft-local-")&&(Mt(this,f,l,{removeSource:f!==this.yeaftConversationId}),ar(this,a,f,l)),ka(this,a,l);let g=Tt(this,a,l),m=g?.sourceConversationId||f,v=!u&&m===this.yeaftConversationId;if(this.currentView==="yeaft"&&a&&m&&m!==l){let b=!v&&(!!g||String(m).startsWith("yeaft-local-"));Mt(this,m,l,{removeSource:b}),v?mi(this,a,m,l):b&&lr(this,a,l)}a&&(this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[a]:l}),(u||!this.yeaftConversationId)&&(this.yeaftConversationId=l),u&&(this.activeConversations=[l]),this.messagesMap[l]||(this.messagesMap[l]=[]);let k=this._currentYeaftAgentId,w=this._currentYeaftSessionId,I=this._currentYeaftVpId,h=this._currentYeaftTurnId,y=this._currentYeaftThreadId;a&&(this._currentYeaftAgentId=a),d!=null&&(this._currentYeaftSessionId=d),e.vpId&&(this._currentYeaftVpId=e.vpId),e.turnId&&(this._currentYeaftTurnId=e.turnId),e.threadId&&(this._currentYeaftThreadId=e.threadId);try{let b=typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();if(this.handleAssistantOutputFrame(l,e.data,a),e.perfTraceId){let T=typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();Ge(this,{traceId:e.perfTraceId,phase:"store.apply_output",agentId:e.agentId||null,sessionId:d||null,vpId:e.vpId||null,turnId:e.turnId||null,threadId:e.threadId||null,messageType:e.data?.type||null,durationMs:T-b}),vi(this,{traceId:e.perfTraceId,agentId:e.agentId||null,sessionId:d||null,vpId:e.vpId||null,turnId:e.turnId||null,threadId:e.threadId||null,messageType:e.data?.type||null})}let M=e.data,x=M?.message?.id||M?.id||null,D=Ry(x),V=Array.isArray(M?.message?.content)?M.message.content:[],E=V.some(T=>T?.type==="tool_use"),_=!!M?.tool_use_result||V.some(T=>T?.type==="tool_result");if(d){let T=!_&&!Py(this,l,d)&&(M?.type==="user"||M?.type==="assistant"&&!E)?D:null,A=he(e.agentId||null,d),R=this.yeaftSessionHistoryState[A]||{},j=Number.isFinite(R.latestSeq)?R.latestSeq:-1;T!==null&&T>j&&(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[A]:{...R,latestSeq:T}})}}finally{this._currentYeaftAgentId=k,this._currentYeaftSessionId=w,this._currentYeaftVpId=I,this._currentYeaftTurnId=h,this._currentYeaftThreadId=y}}return}let r=e.event;if(!r)return;let i={...r,vpId:r.vpId||e.vpId||null,threadId:r.threadId||e.threadId||null,turnId:r.turnId||e.turnId||null},o=Wt(this,e.agentId||null,e.conversationId);if(o){let a=Xa(i);r.type==="tool_start"?or(this,o,`tool:${a}`):r.type==="tool_end"?ln(this,o,`tool:${a}`):r.type==="llm_retry"?or(this,o,`retry:${a}`):r.type==="vp_async_task_wait_start"?or(this,o,`async-wait:${a}`):r.type==="vp_async_task_wait_end"&&ln(this,o,`async-wait:${a}`)}switch(r.type){case"project_mutation_result":r.projectsAuthoritative===!0?this.finishProjectMutation(r):this.finishLegacyProjectMutation(r,e.agentId||null);break;case"ask_user_question":{let a=Wt(this,e.agentId||null,e.conversationId);if(!a||!r.requestId)break;let l=fp(e,r,a),c=()=>{let d=this.messagesMap[a]||[],u=mp(d,l,a);if(u){if(u.askAnswered||u.askExpired)return!0;u.toolName="AskUserQuestion",r.toolCallId&&!u.toolId&&(u.toolId=r.toolCallId),u.agentId=l.agentId||u.agentId||null,u.askRequestId=r.requestId,u.askQuestions=r.questions||[],u.askCreatedAt=r.createdAt||null,u.askExpiresAt=r.expiresAt||null,r.replay&&(u.askPending=!1,u.pendingAnswers=null,u.askSubmitGeneration=null),u.isHistory=!1;let g=hp(this,l);return g&&Ga(u,g),this.messagesMap={...this.messagesMap,[a]:d.slice()},!0}if(!r.replay)return!1;let f={id:`ask-card-${r.requestId}`,type:"tool-use",toolName:"AskUserQuestion",toolId:r.toolCallId||null,toolInput:{questions:r.questions||[]},askRequestId:r.requestId,askQuestions:r.questions||[],askCreatedAt:r.createdAt||null,askExpiresAt:r.expiresAt||null,agentId:l.agentId,sessionId:l.sessionId,vpId:l.vpId,speakerVpId:l.vpId,turnId:l.turnId,threadId:l.threadId||"main",hasResult:!1,isHistory:!1,timestamp:r.createdAt||Date.now()},p=hp(this,l);return p&&Ga(f,p),d.push(f),this.messagesMap={...this.messagesMap,[a]:d.slice()},!0};if(!c()){let d=0,u=setInterval(()=>{d+=1,(c()||d>=10)&&clearInterval(u)},200)}break}case"ask_user_answered":case"ask_user_expired":{let a=Wt(this,e.agentId||null,e.conversationId);if(!a||!r.requestId)break;let l=this.messagesMap[a]||[],c=fp(e,r,a),d=mp(l,c,a);if(!d){My(this,c,r);break}Ga(d,r),this.messagesMap={...this.messagesMap,[a]:l.slice()};break}case"session_ready":{let a=r.conversationId,l=e.agentId||this.currentAgent;if(dn(this,l,a))break;let c=l&&this.yeaftConversationIdsByAgent?this.yeaftConversationIdsByAgent[l]:null,d=this.yeaftConversationId?String(this.yeaftConversationId):"",u=d.startsWith("yeaft-local-")&&(!l||d.startsWith(`yeaft-local-${l}-`)||/^yeaft-local-\d/.test(d))?this.yeaftConversationId:null,f=c||u,p=r.sessionId||e.sessionId||null,g=bp(this,p,l),m=Tt(this,l);m&&m.targetConversationId!==a?cr(this,l,a):!m&&c&&c!==a&&!String(c).startsWith("yeaft-local-")&&ar(this,l,c,a),ka(this,l,a);let k=Tt(this,l,a)?.sourceConversationId||f,w=!g&&k===this.yeaftConversationId;if(k&&k!==a){let M=!w;Mt(this,k,a,{removeSource:M}),w?mi(this,l,k,a):M&&lr(this,l,a)}else this.messagesMap[a]||(this.messagesMap[a]=[]);l&&(this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[l]:a},this.cacheYeaftAgentStatus(l,r,{allowBootstrapCatalog:g})),g&&(this.yeaftModel=r.model,this.yeaftModelEffort=r.modelEffort||null,this.yeaftSessionReady=!0,this.yeaftBootstrapMetaLoadingKey=null,l?this.applyCachedYeaftStatus(l):this.yeaftAvailableModels=r.availableModels||[]);let I=Array.isArray(r.tasks)?r.tasks:[],h={};for(let[M,x]of Object.entries(this.yeaftActiveTasksBySession||{})){let D=Object.fromEntries(Object.entries(x||{}).filter(([,E])=>E?.id&&E.status==="running"&&E.agentId&&E.agentId!==l)),V=Za(D);Object.keys(V).length>0&&(h[M]=V)}for(let M of I){if(!M?.id||!M.sessionId||M.status!=="running")continue;let x=he(l,M.sessionId);h[x]={...h[x]||{},[M.id]:{...M,agentId:l}}}this.yeaftActiveTasksBySession=h,g&&(r.yeaftDir&&(this.yeaftYeaftDir=r.yeaftDir),this.yeaftStatus={skills:r.skills,mcpServers:r.mcpServers,tools:r.tools,multiVp:!!r.multiVp}),(g||!this.yeaftConversationId)&&(this.yeaftConversationId=a),g&&(this.activeConversations=[a]);let y=e.agentId||this.currentAgent||null,b=y||"__current__";this._yeaftVpSubscribedAgentKey!==b&&(this._yeaftVpSubscribedAgentKey=b,this.sendWsMessage(y?{type:"yeaft_vp_subscribe",agentId:y}:{type:"yeaft_vp_subscribe"}));break}case"yeaft_status":{let a=e.agentId||this.currentAgent;a&&this.cacheYeaftAgentStatus(a,r);break}case"context_usage":break;case"turn_open":{if(!r.turnId)break;let a={turnId:r.turnId,userPrompt:r.userPrompt||"",vpId:r.vpId||e.vpId||null,sessionId:r.sessionId||e.sessionId||null,openedAt:r.at||Date.now(),closedAt:null,totalMs:0,totalTokens:0,loopCount:0,memoryLoaded:null,memoryLoadedMeta:null,memoryAdjust:null,tools:[],detailsLoaded:!0};this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:a},this.yeaftDebugTurnOrder.includes(r.turnId)||(this.yeaftDebugTurnOrder=[...this.yeaftDebugTurnOrder,r.turnId]);break}case"turn_close":{if(!r.turnId)break;let a=this.yeaftDebugTurnsById[r.turnId];if(!a)break;this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...a,closedAt:Date.now(),totalMs:r.totalMs||0,totalTokens:r.totalTokens||0,loopCount:r.loopCount||a.loopCount||0}};break}case"memory_used":{if(!r.turnId)break;let a=this.yeaftDebugTurnsById[r.turnId];if(!a)break;this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...a,memoryLoaded:Array.isArray(r.loaded)?r.loaded:[],memoryLoadedMeta:r.meta||null}};break}case"dream_memory_loaded":{let a=Array.isArray(r.resident)?r.resident:[];if(r.turnId){let c=this.yeaftDebugTurnsById[r.turnId];c&&(this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...c,dreamMemoryLoaded:a,dreamMemoryLoadedInto:r.loadedInto||"system_prompt.memory"}})}let l={};for(let c of a){let d=c&&typeof c.scope=="string"?c.scope:null,u=d&&/^sessions\/[^/]+$/.test(d)?d:d&&/^group\/[^/]+$/.test(d)?`sessions/${d.slice(6)}`:null;u&&(l[u]={scope:u,sourceScope:d,sessionId:u.slice(9),turnId:r.turnId||null,vpId:r.vpId||null,loadedInto:r.loadedInto||"system_prompt.memory",summary:c.summary||"",truncated:!!c.truncated,receivedAt:Date.now()})}Object.keys(l).length>0&&(this.yeaftDreamPromptLoads={...this.yeaftDreamPromptLoads,...l});break}case"memory_adjust":{if(!r.turnId)break;let a=this.yeaftDebugTurnsById[r.turnId];if(!a)break;this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...a,memoryAdjust:{sessionKey:r.sessionKey||null,added:r.added||0,evicted:r.evicted||0,skipped:r.skipped||0,reason:r.reason||""}}};break}case"tool_exec":{if(!r.turnId)break;let a=this.yeaftDebugTurnsById[r.turnId];if(!a)break;let l=[...a.tools||[],{loopNumber:r.loopNumber||0,callId:r.callId||null,name:r.name||"?",durationMs:r.durationMs||0,isError:!!r.isError}];this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...a,tools:l}};break}case"loop":{if(this.yeaftDebugLoops.push({turnId:r.turnId||null,loopNumber:r.loopNumber||0,model:r.model,usage:r.usage||{inputTokens:0,outputTokens:0,totalTokens:0},latencyMs:r.latencyMs,ttfbMs:r.ttfbMs,stopReason:r.stopReason,at:typeof r.at=="number"?r.at:null,sessionId:e.sessionId||null,vpId:e.vpId||r.vpId||null}),this.yeaftDebugLoops.length>wp){let a=qu({loops:this.yeaftDebugLoops,turnsById:this.yeaftDebugTurnsById,turnOrder:this.yeaftDebugTurnOrder,maxLoops:Math.max(wp,this.yeaftDebugHistoryLimit||0)});this.yeaftDebugLoops=a.loops,this.yeaftDebugTurnsById=a.turnsById,this.yeaftDebugTurnOrder=a.turnOrder}break}case"llm_retry":{if(!e.turnId)break;let a=hn(this,e.agentId||null,e.turnId),l=this.activeVpTurns?.[a];if(!l)break;let c=r.reason==="stream_idle_timeout"?"stream_idle_timeout":"transient_error";this.activeVpTurns={...this.activeVpTurns,[a]:{...l,retryAttempt:r.attempt||0,retryMax:r.maxRetries||0,retryDelayMs:r.delayMs||0,retryReason:c,retryRecoveryMode:r.recoveryMode||"restart"}};break}case"recall":case"consolidate":case"fallback":case"thinking_delta":break;case"reflection":{let a=Wt(this,e.agentId||null,e.conversationId)||"unknown",l=Array.isArray(r.loopRange)?r.loopRange:[0,0],c=`${a}:${r.trigger}:${l[0]}-${l[1]}`,d=this.yeaftReflectionCards[c],u=this.messagesMap[a]||[],f=d?d.anchorMsgId:u.length>0&&u[u.length-1].id||null,p=d?d.anchorOrder:u.length;this.yeaftReflectionCards={...this.yeaftReflectionCards,[c]:{key:c,conversationId:a,turnId:r.turnId||d&&d.turnId||null,loopNumber:r.loopNumber||d&&d.loopNumber||null,trigger:r.trigger,status:r.status,loopRange:l,toolCount:r.toolCount||0,content:r.content||"",durationMs:r.durationMs||0,error:r.error||null,sessionId:e.sessionId||null,anchorMsgId:f,anchorOrder:p,updatedAt:Date.now()}};break}case"model_switched":this.yeaftModel=r.model,this.yeaftModelEffort=r.modelEffort||null;break;case"yeaft_task_event":{let a=r.task;if(!a?.id||!a.sessionId)break;let l=e.agentId||be(this,a.sessionId),c=he(l,a.sessionId),d={...a,agentId:l},u={...this.yeaftActiveTasksBySession},f={...u[c]||{}};a.status==="running"?f[a.id]=d:delete f[a.id];let p=Za(f);if(Object.keys(p).length>0?u[c]=p:delete u[c],this.yeaftActiveTasksBySession=u,a.status!=="running"){let{[Qa(l,a.sessionId,a.id)]:g,...m}=this.yeaftStoppingTasksById||{};this.yeaftStoppingTasksById=m}break}case"yeaft_task_cancel_result":{let a=r.taskId||r.task?.id||null,l=r.task?.sessionId||r.sessionId||e.sessionId||null,c=e.agentId||be(this,l);if(a&&l&&r.success===!1){let{[Qa(c,l,a)]:u,...f}=this.yeaftStoppingTasksById||{};this.yeaftStoppingTasksById=f}let d=r.task;if(d?.id&&d.sessionId){let u=he(c,d.sessionId),f={...this.yeaftActiveTasksBySession},p={...f[u]||{}};d.status==="running"?p[d.id]={...d,agentId:c}:delete p[d.id];let g=Za(p);Object.keys(g).length>0?f[u]=g:delete f[u],this.yeaftActiveTasksBySession=f}break}case"sub_agent_event":{let a=Wt(this,e.agentId||null,e.conversationId)||"unknown",l=r.agentId;if(!l)break;let c=r.payload||{},d=`${a}:${l}`,u=this.yeaftSubAgentCards[d],f=this.messagesMap[a]||[],p=u?u.anchorMsgId:f.length>0&&f[f.length-1].id||null,g=u?u.anchorOrder:f.length,m=u?{...u}:{key:d,conversationId:a,agentId:l,agentName:c.agentName||"sub-agent",status:"running",text:"",toolCallCount:0,turns:0,error:null,expanded:!1,anchorMsgId:p,anchorOrder:g,updatedAt:Date.now(),sessionId:e.sessionId||null};switch(c.agentName&&!m.agentName&&(m.agentName=c.agentName),c.type){case"sub_agent_status":m.status=c.status||m.status,c.error&&(m.error=c.error);break;case"text_delta":break;case"tool_use":case"tool_call":m.toolCallCount=Number(m.toolCallCount||0)+1;break;case"tool_start":break;case"tool_result":case"tool_end":break;case"sub_agent_turn_end":{m.turns+=1;let v=typeof c.content=="string"?c.content.trim():"";v&&(m.text=m.text?`${m.text}
8
+ `))}function Ii(e){let t=Array.isArray(e?.textSegments)?e.textSegments:[];if(t.length===0)return;let s=Array.isArray(e?.messages)?e.messages:[],n=e?.isActive===!0||e?.isStreaming===!0||t.some(l=>l.isStreaming===!0)||s.some(l=>l?.isStreaming===!0||l?.status==="pending"),r=s.some(l=>l?.incomplete===!0||ja.has(l?.status)||ja.has(l?.turnEndReason)||ja.has(l?.stopReason));if(n||r){for(let l of t)l.kind="progress";return}if(t.some(l=>l.kind==="result"))return;let i=s.some(l=>l?.turnEndReason==="end_turn"),o=t.some(l=>l.explicitKind),a=t.length===1&&!o;(i||a||e.isHistory&&!o)&&(t[t.length-1].kind="result")}var ja,Ci=N(()=>{ja=new Set(["aborted","errored","error","cancelled","canceled"])});function Ua(e){return e?.type==="user"&&typeof e.content=="string"&&e.content.trim()}function Ka(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 za(e,t){if(!e||e.kind!=="assistant")return!0;let s=e.turnId||e.lastTurnId||"",n=t?.turnId||"";if(s&&n&&s!==n)return!0;let r=e.speakerVpId||"",i=t?.speakerVpId||t?.vpId||"";return!!(r&&i&&r!==i)}function np(e=[]){let t=[],s=null,n=r=>{s&&(t.push({start:s.start,end:r,kind:s.kind}),s=null)};for(let r=0;r<e.length;r++){let i=e[r];if(i){if(Ua(i)||i.type==="system"||i.type==="error"){n(r),s={start:r,kind:i.type};continue}if(!Ka(i)){s||(s={start:r,kind:"other"});continue}(!s||s.kind==="assistant"&&za(s,i))&&(n(r),s={start:r,kind:"assistant",turnId:i.turnId||"",speakerVpId:i.speakerVpId||i.vpId||""}),s.lastTurnId=i.turnId||s.lastTurnId||"",s.speakerVpId=s.speakerVpId||i.speakerVpId||i.vpId||""}}return n(e.length),t}function rp(e,t){return!e||e._historyWindowPrefetched===!0?!1:t?(e.sessionId??e.groupId)===t:!0}function Ya(e=[],t=null,s=yr){let n=Math.max(1,Number.isFinite(s)?Math.floor(s):yr),r=[],i=[],o=null,a=c=>{o&&(i.push({start:o.start,end:c,kind:o.kind}),o=null)};for(let c of e){if(!rp(c,t))continue;let d=r.length;if(r.push(c),Ua(c)||c.type==="system"||c.type==="error"){a(d),o={start:d,kind:c.type};continue}if(!Ka(c)){o||(o={start:d,kind:"other"});continue}(!o||o.kind==="assistant"&&za(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(r.length),i.length<=n)return r;let l=i[i.length-n];return r.slice(l.start)}function ip(e=[],t=null,s=yr){let n=Math.max(1,s||yr),r=0,i=null,o=()=>i?(i=null,r+=1,r>n):!1;for(let a of e)if(rp(a,t)){if(Ua(a)||a.type==="system"||a.type==="error"){if(o())return!0;i={kind:a.type};continue}if(!Ka(a)){i||(i={kind:"other"});continue}if(!i||i.kind==="assistant"&&za(i,a)){if(o())return!0;i={kind:"assistant",turnId:a.turnId||"",speakerVpId:a.speakerVpId||a.vpId||""}}i.lastTurnId=a.turnId||i.lastTurnId||"",i.speakerVpId=i.speakerVpId||a.speakerVpId||a.vpId||""}return o(),r>n}function Os(){return yr}function br(){return hy}var yr,hy,op=N(()=>{yr=Number.POSITIVE_INFINITY,hy=20});function yy(e,t){let s=new Set;if(!t)return s;for(let n of e?.sessionCatalog||[])n?.runtimeProvider!=="yeaft"||n?.routeRef?.sessionId!==t||n.routeRef.agentId&&s.add(n.routeRef.agentId);if(s.size===0){let n=ds();for(let r of n?.sessionList||[])r?.id===t&&r?.agentId&&s.add(r.agentId)}return s}function Ip(e,t){let s=yy(e,t);return s.size===1?s.values().next().value:null}function Mi(e,t,s){return!!s&&Ip(e,t)===s}function nt(e,t,s){return!e||e.sessionId!==t?!1:s?e.agentId===s:!e.agentId}function ap(e,t,s=null){if(!t)return!1;let n=s||be(e,t),r=It(n,t);if(r&&e.yeaftProcessingSessions?.[r]||e.yeaftProcessingSessions?.[t]&&Mi(e,t,n))return!0;for(let i of Object.values(e.activeVpTurns||{}))if(nt(i,t,n))return!0;for(let i of Object.values(e.vpStatuses||{}))if(nt(i,t,n)&&kr.has(i?.state))return!0;return!1}function by(e,t,s,n=null){let r={...e.yeaftProcessingSessions||{}};if(t){let i=Ea(t);if(r=Object.fromEntries(Object.entries(r).filter(([o])=>n?o!==It(t,n):!o.startsWith(i))),n)Mi(e,n,t)&&delete r[n];else for(let o of Object.keys(r))Mi(e,o,t)&&delete r[o]}else n?delete r[n]:r={};for(let i of s||[]){let o=i?.sessionId||i?.groupId||null;if(!o||!kr.has(i?.state))continue;let a=It(t,o)||o;r[a]=!0}return r}function hn(e,t,s){let n=Da(t,s);return n&&e?.activeVpTurns?.[n]?n:e?.activeVpTurns?.[s]&&(!t||!e.activeVpTurns[s]?.agentId||e.activeVpTurns[s].agentId===t)?s:n||s||""}function lp(e,t){if(!t){e.activeVpTurns={},e.stoppingVpTurnIds={},e.vpStatuses={},e.yeaftProcessingSessions={};return}e.activeVpTurns=Object.fromEntries(Object.entries(e.activeVpTurns||{}).filter(([,n])=>n?.agentId&&n.agentId!==t)),e.stoppingVpTurnIds=Object.fromEntries(Object.entries(e.stoppingVpTurnIds||{}).filter(([n])=>e.activeVpTurns?.[n])),e.vpStatuses=Object.fromEntries(Object.entries(e.vpStatuses||{}).filter(([,n])=>n?.agentId&&n.agentId!==t));let s=Ea(t);e.yeaftProcessingSessions=Object.fromEntries(Object.entries(e.yeaftProcessingSessions||{}).filter(([n])=>!n.startsWith(s)))}function qt(e,t){return`${e||""}:${t||""}`}function Cy(e){return e?.kind==="action"&&typeof e.actionId=="string"&&Number.isInteger(Number(e.generation))&&Number(e.generation)>0?{kind:"action",actionId:e.actionId,generation:Number(e.generation)}:{kind:"coordinator"}}function Ay(e){return typeof e=="string"?e:e?.kind==="action"&&typeof e.actionId=="string"?{kind:"action",actionId:e.actionId,generation:Number.isInteger(Number(e.generation))?Number(e.generation):0}:{kind:"coordinator"}}function xy(e={}){let t=Qe(e.quote);return{agentId:e.agentId||"",workItemId:e.workItemId||"",target:Cy(e.target),text:String(e.text||""),...t?{quote:t}:{},attachments:Array.isArray(e.attachments)?e.attachments.map(s=>({fileId:s?.fileId||"",name:s?.name||"",mimeType:s?.mimeType||"",size:Math.max(0,Number(s?.size)||0)})):[],revision:Number(e.revision)||0,planRevision:Number(e.planRevision)||0,ledgerRevision:Number(e.ledgerRevision)||0,coordinatorRevision:Number(e.coordinatorRevision)||0}}function fp(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 gp(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 Ty(e,t){return el.every(s=>!t[s]||e[s]===t[s])}function Cp(e,t){return el.every(s=>!e[s]||!t[s]||e[s]===t[s])}function mp(e,t,s){let n=(e||[]).filter(o=>o?.type==="tool-use"&&(o.toolName==="AskUser"||o.toolName==="AskUserQuestion")&&(!t.requestId||!o.askRequestId||o.askRequestId===t.requestId)&&(!t.toolCallId||!o.toolId||o.toolId===t.toolCallId)),r=n.filter(o=>Ty(gp(o,s),t));if(r.length===1)return r[0];let i=n.filter(o=>Cp(gp(o,s),t));return i.length===1?i[0]:null}function Ap(e){return el.map(t=>e[t]||"").join("\0")}function My(e,t,s){let n=Ap(t),r={...e._yeaftAskTerminalEvents||{},[n]:{identity:t,event:s,receivedAt:Date.now()}},i=Object.keys(r);if(i.length>pp){i.sort((o,a)=>r[o].receivedAt-r[a].receivedAt);for(let o of i.slice(0,i.length-pp))delete r[o]}e._yeaftAskTerminalEvents=r}function hp(e,t){let s=e._yeaftAskTerminalEvents||{},n=Ap(t),r=s[n]?n:null;if(!r){let l=Object.entries(s).filter(([,c])=>Cp(c.identity||{},t));l.length===1&&(r=l[0][0])}if(!r)return null;let i=s[r],{[r]:o,...a}=s;return e._yeaftAskTerminalEvents=a,i?.event||null}function Py(e,t,s){return(e.messagesMap?.[t]||[]).some(n=>n?.type==="tool-use"&&n.sessionId===s&&n.hasResult===!1)}function Ga(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 Ry(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 _y(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 wr(e){return Wn(e)}function Qa(e,t,s){return`${It(e,t)}::${s||""}`}function Xa(e){return Object.fromEntries(Object.entries(e||{}).filter(([,t])=>t?.status==="running"))}function ds(){try{return typeof window>"u"?null:window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore()||null}catch{return null}}function vp(e){let t=ds();if(!t?.reorderSessionsGlobally)return;let s=(Array.isArray(e)?e:[]).filter(n=>n?.runtimeProvider==="yeaft").map(n=>`${n.routeRef?.agentId||""}${n.routeRef?.sessionId||""}`).filter(n=>!n.startsWith(""));t.reorderSessionsGlobally(s)}function be(e,t,s=null){if(s)return s;if(t){let n=ds(),r=n?.activeSessionKey?n.sessions?.[n.activeSessionKey]:null;if(r?.id===t&&r.agentId)return r.agentId;let i=n&&typeof n.sessionById=="function"?n.sessionById(t,e?.currentAgent||null):null;if(i&&i.agentId)return i.agentId;let o=e?.yeaftSessionAgentById?e.yeaftSessionAgentById[t]:null;if(o)return o}return e?.currentAgent||null}function Ey(e,t){let s=i=>String(i||"").replace(/^v/,"").split(".").slice(0,3).map(o=>Number.parseInt(o,10)),n=s(e),r=s(t);if(n.length<3||r.length<3||[...n,...r].some(i=>!Number.isFinite(i)))return!1;for(let i=0;i<3;i+=1)if(n[i]!==r[i])return n[i]>r[i];return!0}function yp(e,t,s){if(!t||!s)return!1;let n=Array.isArray(e?.agents)?e.agents.find(o=>o?.id===t):null,r=e?.currentAgentInfo?.id===t?e.currentAgentInfo:null;return(n?.capabilities||r?.capabilities||[]).includes(s)?!0:s==="session_history_search"&&Ey(n?.version||r?.version,"1.0.166")}function Fs(e,{fallbackDefault:t=!1}={}){if(e?.yeaftActiveSessionFilter)return e.yeaftActiveSessionFilter;let s=ds();return s?.activeSessionId?s.activeSessionId:t?"grp_default":null}function Ti(e){let t=e.yeaftDebugSessionFilter;if(t==="__all__")return null;if(t)return t;let s=Fs(e);return s||(ds()?.sessions?.grp_default?"grp_default":null)}function Za(e,t="session"){return[e?.vpId||e?.ownerVpId||"vp",e?.threadId||"thread",e?.turnId||t].join(":")}function Wt(e,t,s=null){return s||t&&e?.yeaftConversationIdsByAgent?.[t]||e?.yeaftConversationId||null}function st(e,t=null,s=null){let n=t||e?.yeaftActiveSessionFilter||null,r=s||be(e,n);return(r&&e?.yeaftConversationIdsByAgent?e.yeaftConversationIdsByAgent[r]:null)||e?.yeaftConversationId||null}function bp(e,t,s){if(e?.currentView!=="yeaft")return!1;let n=e?.yeaftActiveSessionFilter||null;if(n&&t!==n)return!1;let r=be(e,n);return!r||!s||r===s}var vy,Ve,Ai,xi,cp,dp,wy,up,ky,kr,Sy,Iy,pp,el,wp,Ja,kp,Sp,Bs,Pi=N(()=>{St();Go();Nt();da();ir();Gd();ou();_u();Ts();as();Hu();Sa();fi();Bu();Nu();Wu();la();Wa();Aa();cs();Ci();sn();ni();mr();op();ii();oa();xa();({defineStore:vy}=Pinia),Ve=Object.freeze([]),Ai=(e,t,s)=>`${e||""}::${t||""}::${s}`;xi=5,cp=100,dp=512*1024,wy=15e3,up=Object.freeze([150,300,600,1e3]),ky=new Set(["index_building","stale_result"]),kr=new Set(["typing","thinking","retrying","streaming","tool"]),Sy=Object.freeze(["model","availableModels","refreshedAt","catalogRefreshedAt","catalogEpoch","catalogRevision","catalogDigest","refreshStartedAt","refreshReason","refreshError","refreshing"]),Iy=8,pp=64;el=Object.freeze(["conversationId","agentId","requestId","toolCallId","sessionId","vpId","turnId","threadId"]);wp=1e3,Ja=1,kp=5,Sp=200,Bs=vy("chat",{state:()=>({ws:null,authenticated:!1,_hasHandledAgentList:!1,_hasHandledYeaftSessionHydrate:!1,yeaftSessionInventoryCompleteSupported:null,yeaftSessionHydrateRequestId:null,yeaftSessionHydrateSlices:[],yeaftSessionHydrateError:null,_yeaftSessionInventorySocketQuarantined:!1,sessionKey:null,serverEncryptionRequired:!0,connectionState:"disconnected",reconnectAttempts:0,maxReconnectAttempts:10,reconnectTimer:null,agents:[],currentAgent:null,currentAgentInfo:null,conversations:[],activeConversations:[],currentWorkDir:null,messagesMap:{},_messageUiKeySequence:0,chatSessionState:{},panels:[],activePanelId:null,_pendingPaneId:null,conversationTitles:{},customConversationTitles:{},processingConversations:{},yeaftProcessingSessions:{},yeaftUnreadSessionKeys:{},theme:localStorage.getItem("theme")||(typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),themeFollowSystem:!localStorage.getItem("theme"),locale:localStorage.getItem("locale")||"zh-CN",executionStatusMap:{},sessionHealth:{},historySessions:[],historySessionsLoading:!1,folders:[],foldersLoading:!1,providerModels:[],providerModelsLoading:!1,contextUsage:null,lastUsedAgent:localStorage.getItem("lastUsedAgent")||null,lastUsedSession:JSON.parse(localStorage.getItem("lastUsedSession")||"null"),lastViewedConversation:localStorage.getItem("lastViewedConversation")||null,pendingRecovery:null,recoveryDismissed:!1,sessionLoading:!1,sessionLoadingText:"",agentSwitching:!1,pendingAgentSelection:null,_pendingSessionTitle:null,workbenchExpanded:!1,workbenchMaximized:!1,sidebarCollapsed:!1,sessionSidebarOpen:!1,compactStatus:null,clearStatus:null,refreshingSession:!1,refreshingSessionMap:{},proxyPorts:{},hasMoreMessages:!1,loadingMoreMessages:!1,chatHistoryRequests:{},chatHistoryRequestIdSupported:null,chatHistoryConnectionGeneration:0,sessionCatalog:[],hiddenSessionCatalog:[],sessionProjects:[],sessionCatalogLoaded:!1,sessionCatalogMutationRequests:{},projectMutationRequests:{},activeCatalogKey:null,openUnifiedSessionCreate:!1,openUnifiedChatCreate:!1,pendingUnifiedSessionSettings:null,yeaftHasMoreHistory:!1,yeaftLoadingMoreHistory:!1,yeaftOldestLoadedSeq:null,yeaftHistoryLoadError:null,yeaftSessionHistoryState:{},yeaftMessageWindowState:{},yeaftHistoryCacheState:{},_yeaftHistoryBrowserHydrationBySession:{},yeaftBootstrapMetaLoadingKey:null,yeaftHistoryPerfTraceBySession:{},yeaftHistorySearchState:{requestId:null,agentId:null,sessionId:null,query:"",senderKey:"",loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,nextCursor:null,error:null},yeaftHistoryOutlineBySession:{},_yeaftHistoryOutlineTimeouts:{},_yeaftHistorySearchTimeout:null,_yeaftHistoryWindowPendingByKey:{},_yeaftHistoryRevealLeases:{},_yeaftHistoryRevealSequence:0,_yeaftReconnectCatchUpPending:!1,_yeaftOpenedSessionsLoadedAgents:{},_yeaftAgentSeen:null,slashCommandsMap:{},slashCommandDescriptions:{},inputDrafts:{},mcpServers:{},expertRoleDefinitions:null,llmConfig:{},llmModelDiscovery:{},llmGithubDevice:null,modelsDevRegistry:{registry:{},fetchedAt:0,error:null,loaded:!1},_modelsDevPending:null,yeaftSettings:{},searchSettings:null,telemetrySettings:null,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")||"[]"),...Lu(),workCenterOpen:!1,workCenterAgentId:null,workCenterItemsByAgent:{},workCenterListPageByAgent:{},workCenterListMoreLoadingByAgent:{},_workCenterListGenerationByAgent:{},_workCenterListQueryByAgent:{},_workCenterListFiltersByAgent:{},_workCenterListMoreRequestsByAgent:{},_workCenterListEventGenerationByAgent:{},_workCenterListEventsByAgent:{},_workCenterDeletedIdsByAgent:{},workCenterDetailByAgent:{},workCenterActionMessages:{},workCenterActionMessagesLoading:{},workCenterActionMessagesError:{},workCenterActionRequests:{},workCenterActionRequestDetails:{},workCenterActionRequestsLoading:{},workCenterActionRequestsError:{},workCenterActionRequestDetailsLoading:{},workCenterActionRequestDetailsError:{},workCenterLoadedByAgent:{},workCenterLoadingByAgent:{},workCenterErrorByAgent:{},workCenterWatcherByAgent:{},workCenterSettingsByAgent:{},workCenterRuntimeByAgent:{},workCenterSettingsLoadingByAgent:{},workCenterSettingsErrorByAgent:{},_workCenterSettingsGenerationByAgent:{},_workCenterDetailRequestGenerationByAgent:{},_workCenterDetailEventRefreshByAgent:{},_workCenterActionInputGenerationByAgent:{},_workCenterActionMessageRequests:{},_workCenterActionMessageGenerationByKey:{},_workCenterActionRequestsGeneration:{},_workCenterActionRequestDetailsGeneration:{},workCenterPending:{},workCenterComposerDrafts:{},workCenterMessageOutbox:{},_workCenterBrowserFence:null,_workCenterBrowserUnsubscribe:null,workCenterCreateDraft:null,yeaftConversationId:null,yeaftConversationIdsByAgent:{},_yeaftPendingConversationPromotions:{},_yeaftRetiredConversationIdsByAgent:{},_yeaftRetiredConversationTargetsByAgent:{},yeaftSessionAgentById:{},yeaftModel:null,yeaftModelEffort:null,yeaftSessionReady:!1,yeaftStatus:null,yeaftAvailableModels:[],yeaftStatusByAgent:{},_yeaftRetiredCatalogEpochsByAgent:{},yeaftModelsRefreshing:!1,yeaftModelRefreshError:null,yeaftYeaftDir:null,yeaftActiveTasksBySession:{},yeaftStoppingTasksById:{},yeaftToolStats:null,yeaftToolStatsLoading:!1,yeaftDebugLoops:[],yeaftDebugTurnsById:{},yeaftDebugTurnOrder:[],yeaftDebugHistoryLoading:!1,yeaftDebugHistoryError:null,yeaftDebugHistoryFetchedAt:0,yeaftDebugHistoryLimit:Ja,yeaftDebugHistoryHasMore:!1,yeaftDebugPanel:{open:!1,status:"idle",requestId:null,agentId:null,sessionId:null,turnId:null,error:null},yeaftDebugSearch:"",yeaftDebugSessionFilter:null,yeaftDreamLatest:{},yeaftDreamSnapshots:{},yeaftDreamPromptLoads:{},yeaftDreamEvents:{},yeaftReflectionCards:{},yeaftSubAgentCards:{},yeaftSidebarV2Enabled:!0,yeaftActiveSessionFilter:null,_currentYeaftSessionId:null,_currentYeaftVpId:null,_currentYeaftTurnId:null,_currentYeaftThreadId:null,_yeaftAskTerminalEvents:{},activeVpTurns:{},vpStatuses:{},stoppingVpTurnIds:{},yeaftVpTyping:{},_vpCrudPending:null}),getters:{currentConversation:e=>e.activeConversations[0]||null,activeConversationId:e=>Oa(e),activeSessionRoute(e){if(e.currentView==="yeaft"){let n=Fs(e);return n?{runtimeProvider:"yeaft",agentId:be(e,n),sessionId:n}:null}let t=Oa(e);if(!t)return null;let s=e.conversations.find(n=>n?.id===t&&n.type!=="yeaft");return s?{runtimeProvider:s.provider==="copilot"?"copilot":"claude-code",agentId:s.agentId||e.currentAgent||null,sessionId:t}:null},messages(e){let t=this.activeConversationId,s=t&&e.messagesMap[t]||Ve;if(e.currentView==="yeaft"){let n=e.yeaftActiveSessionFilter||null,r=he(be(e,n),n),i=e.yeaftMessageWindowState[r]?.visibleTurns||Os();return Ya(s,e.yeaftActiveSessionFilter||null,i)}return s},yeaftAllMessages:e=>{let t=st(e);return t&&e.messagesMap[t]||Ve},yeaftVisibleMessages(e){let t=st(e),s=t&&e.messagesMap[t]||Ve,n=e.yeaftActiveSessionFilter||null,r=he(be(e,n),n),i=e.yeaftMessageWindowState[r]?.visibleTurns||Os();return Ya(s,e.yeaftActiveSessionFilter||null,i)},hasHiddenYeaftMessages(e){if(e.currentView!=="yeaft")return!1;let t=st(e),s=t&&e.messagesMap[t]||Ve,n=e.yeaftActiveSessionFilter||null,r=he(be(e,n),n),i=e.yeaftMessageWindowState[r]?.visibleTurns||Os();return ip(s,e.yeaftActiveSessionFilter||null,i)},activeYeaftHistoryState(e){return Zo(e)},yeaftInitialHistoryLoading(e){let t=Zo(e);return e.currentView==="yeaft"&&!!e.yeaftActiveSessionFilter&&!!t?.loading&&!t?.loaded&&this.yeaftVisibleMessages.length===0},vpsTypingInCurrentConv(e){let t=this.activeConversationId;if(!t)return Ve;let s=(e.yeaftVpTyping||{})[t];if(!s)return Ve;let n=Object.keys(s).filter(r=>(s[r]||0)>0);return n.length===0?Ve: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=Ti(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamLatest?.[s]||null},yeaftDreamSnapshotForActiveSession(e){let t=Ti(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamSnapshots?.[s]||null},yeaftDreamPromptLoadForActiveSession(e){let t=Ti(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamPromptLoads?.[s]||null},yeaftDreamEventsForActiveSession(e){let t=Ti(e);if(!t)return[];let s=`sessions/${t}`,n=Array.isArray(e.yeaftDreamEvents?.[s])?e.yeaftDreamEvents[s]:[],r=Array.isArray(e.yeaftDreamEvents?.["*"])?e.yeaftDreamEvents["*"]:[];return r.length===0?n:n.length===0?r:[...n,...r].sort((i,o)=>(i.at||0)-(o.at||0))},yeaftDebugTurnsForActiveSession:e=>{let t=e.yeaftDebugTurnOrder||Ve,s=e.yeaftDebugTurnsById||{},n=e.yeaftDebugLoops||Ve,r=e.yeaftReflectionCards||{},i=e.yeaftDebugSessionFilter,o;i==="__all__"?o=null:i?o=i:o=null;let a={};for(let d of n)!d||!d.turnId||(a[d.turnId]||(a[d.turnId]=[]),a[d.turnId].push(d));let l={};for(let d of Object.keys(r)){let u=r[d];!u||!u.turnId||(l[u.turnId]||(l[u.turnId]=[]),l[u.turnId].push(u))}let c=[];for(let d=t.length-1;d>=0;d--){let u=t[d],f=s[u];if(!f||o&&f.sessionId&&f.sessionId!==o)continue;let p=a[u]||Ve,g=l[u]||Ve,m=p.length,v=0,k=0;for(let h of p){let y=h&&h.usage;y&&Number.isFinite(y.totalTokens)?v+=y.totalTokens:y&&(v+=(y.totalInputTokens||(y.inputTokens||0)+(y.cacheReadTokens||0)+(y.cacheWriteTokens||0))+(y.outputTokens||0)),h&&Number.isFinite(h.latencyMs)&&(k+=h.latencyMs)}let w=!f.closedAt,I={...f,loopCount:w||!f.loopCount?m:f.loopCount,totalTokens:w||!f.totalTokens?v:f.totalTokens,totalMs:w||!f.totalMs?k:f.totalMs,loops:p,reflections:g};c.push(I)}return c},yeaftDebugAvailableSessions:e=>{let t=new Set;for(let s of e.yeaftDebugTurnOrder||Ve){let n=e.yeaftDebugTurnsById[s];n&&n.sessionId&&t.add(n.sessionId)}return Array.from(t).sort()},yeaftDebugTurnTotal:e=>(e.yeaftDebugTurnOrder||Ve).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=Fs(e);return t?ap(e,t,be(e,t)):!1}return e.currentConversation?!!e.processingConversations[e.currentConversation]:!1},canSend:e=>!(!e.currentAgent||!e.currentConversation),currentAgentName:e=>e.currentAgentInfo?.name||"\u9009\u62E9 Agent",currentAgentWorkDir:e=>e.currentAgentInfo?.workDir||"",effectiveWorkDir:e=>e.currentView==="yeaft"?ds()?.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,s=null)=>ap(e,t,s),isSessionHistorySyncing:e=>t=>{let s=t?.sessionId||null;return s?t.runtimeProvider==="yeaft"?!!e.yeaftSessionHistoryState?.[he(t.agentId||null,s)]?.loading:!!e.chatHistoryRequests?.[os(s)]?.loading:!1},isYeaftSessionUnread:e=>(t,s=null)=>{if(!t)return!1;let n=be(e,t,s);return n?!!e.yeaftUnreadSessionKeys?.[li(n,t)]:!1},showRecoveryBanner:e=>e.pendingRecovery&&!e.recoveryDismissed&&!e.currentConversation,currentSubagents:e=>{if(!e.currentConversation)return Ve;let t=e.subagents[e.currentConversation];return t?Object.values(t):Ve},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 Ve;let t=e.subagents[e.currentConversation];if(!t)return Ve;let s=t[e.activeSubagentId];return(Array.isArray(s?.messages)?s.messages:Ve).filter(r=>r?.type==="text")},selectedTaskInfo:()=>null,currentMcpServers:e=>e.currentConversation&&e.conversationMcpServers[e.currentConversation]||Ve},actions:{activateChatView({persistPreference:e=!1}={}){let t=this._pendingChatRestoreConversationId;this._pendingChatRestoreConversationId=null;let s=t?this.conversations.find(o=>o.id===t):null,n=s?.agentId?this.agents.find(o=>o.id===s.agentId&&o.online):null;!this._savedChatIdentity&&s&&n&&(this._savedChatIdentity={agentId:n.id,agentInfo:{...n},workDir:s.workDir||n.workDir||null}),this.currentView="chat",e&&Va("chat");let r=this._savedChatIdentity||null,i=this.pendingAgentSelection&&this.pendingAgentSelection.agentId!==r?.agentId;r?.agentId&&(this.currentAgent!==r.agentId||i)&&this.selectAgent(r.agentId),Vu(this),t&&s&&n&&(this.autoRestoreConversation(t),this.sendWsMessage({type:"refresh_conversation",conversationId:t}))},enterWorkCenter(e=null){if(!this.hydrateWorkCenterBrowserState())return!1;let t=this.agents.filter(n=>n?.online&&Array.isArray(n.capabilities)&&n.capabilities.includes("work_center")),s=t.some(n=>n.id===e)?e:t[0]?.id||null;if(!s)return this.workCenterOpen=!1,this.workCenterAgentId=null,!1;if(this.currentAgent!==s){this.selectAgent(s),this.currentAgent=s;let n=this.agents.find(r=>r.id===s);n&&(this.currentAgentInfo=n)}return this.workCenterAgentId=s,this.workCenterOpen=!0,this.listWorkItems(s).catch(()=>{}),!0},leaveWorkCenter(){this.workCenterOpen=!1},enterWorkCenterFromSession(e,t=""){if(!e?.id)return;let s=e.agentId||be(this,e.id),n=String(t||e.title||e.name||"").trim();this.workCenterCreateDraft={sourceAgentId:s,requirement:n,workDir:String(e.workDir||"").trim(),origin:{sessionId:e.id,messageId:null,createdBy:"user"},linkedSessionIds:[e.id]},this.enterWorkCenter(s)},hydrateWorkCenterBrowserState(){this._workCenterBrowserUnsubscribe||(this._workCenterBrowserUnsubscribe=Ic(()=>{Nn(this._workCenterBrowserFence)||this.clearWorkCenterBrowserState()}));let e=si();if(!e)return this._workCenterBrowserFence=null,this.workCenterComposerDrafts={},this.workCenterMessageOutbox={},!1;if(!Nn(this._workCenterBrowserFence)){let t=Sc(e);this._workCenterBrowserFence=e,this.workCenterComposerDrafts=t.drafts,this.workCenterMessageOutbox=t.outbox}return!0},clearWorkCenterBrowserState(){this._workCenterBrowserFence=null,this.workCenterComposerDrafts={},this.workCenterMessageOutbox={}},workCenterComposerKey(e,t){return qt(e,t)},saveWorkCenterComposerDraft(e,t,s={}){let n=qt(e,t);if(!e||!t)return;let r=Qe(s.quote),i={...this.workCenterComposerDrafts||{},[n]:{text:String(s.text||""),...r?{quote:r}:{},attachments:Array.isArray(s.attachments)?s.attachments:[],target:Ay(s.target),error:String(s.error||"")}};return Yo(i,this._workCenterBrowserFence)?(this.workCenterComposerDrafts=i,!0):!1},loadWorkCenterComposerDraft(e,t){return this.workCenterComposerDrafts?.[qt(e,t)]||null},removeWorkCenterComposerDraft(e,t){let s=qt(e,t),n={...this.workCenterComposerDrafts||{}};return delete n[s],Yo(n,this._workCenterBrowserFence)?(this.workCenterComposerDrafts=n,!0):!1},prepareWorkCenterMessageEnvelope(e={}){let t=xy(e),s=qt(t.agentId,t.workItemId),n=this.workCenterMessageOutbox?.[s]||null;if(n)return n;let r={...t,clientMessageId:globalThis.crypto?.randomUUID?.()||`${Date.now()}-${Math.random()}`,createdAt:Date.now()},i={...this.workCenterMessageOutbox||{},[s]:r};return qn(i,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=i,r):null},loadWorkCenterMessageEnvelope(e,t){return this.workCenterMessageOutbox?.[qt(e,t)]||null},replaceWorkCenterMessageEnvelopeAttachments(e,t,s=[]){let n=qt(e,t),r=this.workCenterMessageOutbox?.[n];if(!r)return null;let i={...r,attachments:Array.isArray(s)?s.map(a=>({fileId:a?.fileId||"",name:a?.name||"",mimeType:a?.mimeType||"",size:Math.max(0,Number(a?.size)||0)})):[]},o={...this.workCenterMessageOutbox||{},[n]:i};return qn(o,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=o,i):null},discardWorkCenterMessageEnvelope(e,t){let s=qt(e,t),n={...this.workCenterMessageOutbox||{}};return delete n[s],qn(n,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=n,!0):!1},confirmWorkCenterMessageEnvelope(e,t,s){let n=qt(e,t),r=this.workCenterMessageOutbox?.[n];if(!r||r.clientMessageId!==s)return!1;let i={...this.workCenterMessageOutbox||{}};return delete i[n],qn(i,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=i,this.removeWorkCenterComposerDraft(e,t),!0):!1},workCenterRequest(e,t={},s=null){let n=s||this.workCenterAgentId||this.currentAgent;if(!n)return Promise.reject(new Error("No Agent selected"));let r=`work-center-${Date.now()}-${Math.random().toString(36).slice(2)}`;return new Promise((i,o)=>{let a=setTimeout(()=>{delete this.workCenterPending[r],o(new Error("Work Center request timed out"))},3e4);this.workCenterPending[r]={resolve:i,reject:o,timer:a,agentId:n,op:e,clientMessageId:typeof t.clientMessageId=="string"?t.clientMessageId:null},this.sendWsMessage({type:"work_center_request",agentId:n,requestId:r,op:e,payload:t})})},workItemMatchesBoardQuery(e,t={}){if(!e||t.lane&&e.boardLane!==t.lane||t.vpId&&!(e.executors||[]).some(n=>n?.id===t.vpId)||t.workItemType&&e.workItemType!==t.workItemType||t.updatedFrom&&Number(e.updatedAt)<Number(t.updatedFrom)||t.updatedTo&&Number(e.updatedAt)>Number(t.updatedTo))return!1;let s=String(t.keyword||"").trim().toLowerCase();return!s||String(e.title||"").toLowerCase().includes(s)||String(e.goal||"").toLowerCase().includes(s)},applyWorkItemBoardSummary(e,t,s={}){let n=ki(e,t),r=n.find(i=>i?.id===t?.id)||null;return!r||this.workItemMatchesBoardQuery(r,s)?n:n.filter(i=>i.id!==r.id)},async listWorkItems(e=null,t={}){let s=e||this.workCenterAgentId||this.currentAgent;if(!s)return[];let n={lane:["needs_attention","active","closed"].includes(t.lane)?t.lane:null,keyword:String(t.keyword||t.search||"").trim(),vpId:String(t.vpId||"").trim(),workItemType:String(t.workItemType||"").trim(),createdFrom:Number(t.createdFrom)||null,createdTo:Number(t.createdTo)||null,updatedFrom:Number(t.updatedFrom)||null,updatedTo:Number(t.updatedTo)||null,limit:Math.min(Math.max(Number(t.limit)||100,1),200)},r=JSON.stringify(n),i=Number(this._workCenterListGenerationByAgent[s]||0)+1,o=Number(this._workCenterListEventGenerationByAgent[s]||0);this._workCenterListGenerationByAgent={...this._workCenterListGenerationByAgent,[s]:i},this._workCenterListQueryByAgent={...this._workCenterListQueryByAgent,[s]:r},this._workCenterListFiltersByAgent={...this._workCenterListFiltersByAgent,[s]:n},this.workCenterLoadingByAgent={...this.workCenterLoadingByAgent,[s]:!0},this.workCenterErrorByAgent={...this.workCenterErrorByAgent,[s]:null};try{let a=await this.workCenterRequest("list",n,s),l=(Array.isArray(a?.items)?a.items:[]).filter(d=>!this.workItemDeleted(s,d?.id));if(this._workCenterListGenerationByAgent[s]===i&&this._workCenterListQueryByAgent[s]===r&&this.workCenterAgentId===s){let d=l,u=this._workCenterListEventsByAgent[s]||{};for(let f of Object.values(u))Number(f?.generation)<=o||f?.queryKey!==r||(d=this.applyWorkItemBoardSummary(d,f.summary,n));this.workCenterItemsByAgent={...this.workCenterItemsByAgent,[s]:d},this.workCenterListPageByAgent={...this.workCenterListPageByAgent,[s]:{nextCursor:a?.nextCursor||null,queryKey:r}},this.workCenterWatcherByAgent={...this.workCenterWatcherByAgent,[s]:a?.watcher||null},this.workCenterLoadedByAgent={...this.workCenterLoadedByAgent,[s]:!0}}return l}catch(a){throw this._workCenterListGenerationByAgent[s]===i&&this._workCenterListQueryByAgent[s]===r&&(this.workCenterErrorByAgent={...this.workCenterErrorByAgent,[s]:a?.message||String(a)}),a}finally{this._workCenterListGenerationByAgent[s]===i&&this._workCenterListQueryByAgent[s]===r&&(this.workCenterLoadingByAgent={...this.workCenterLoadingByAgent,[s]:!1})}},async loadMoreWorkItems(e=null){let t=e||this.workCenterAgentId||this.currentAgent,s=this.workCenterListPageByAgent[t],n=this._workCenterListFiltersByAgent[t];if(!t||!s?.nextCursor||!n)return[];let r=s.queryKey,i=this._workCenterListGenerationByAgent[t],o=Number(this._workCenterListEventGenerationByAgent[t]||0),a=s.nextCursor,l=`${i}:${r}:${a}`;if(this._workCenterListMoreRequestsByAgent[t]?.key===l)return this._workCenterListMoreRequestsByAgent[t].request;this.workCenterListMoreLoadingByAgent={...this.workCenterListMoreLoadingByAgent,[t]:!0};let c=(async()=>{try{let d=await this.workCenterRequest("list",{...n,cursor:a},t),u=this.workCenterListPageByAgent[t];if(this._workCenterListGenerationByAgent[t]!==i||this._workCenterListQueryByAgent[t]!==r||u?.queryKey!==r||u?.nextCursor!==a||this.workCenterAgentId!==t)return[];let f=[...this.workCenterItemsByAgent[t]||[]];for(let g of Array.isArray(d?.items)?d.items:[]){if(this.workItemDeleted(t,g?.id))continue;let m=f.findIndex(v=>v.id===g.id);m<0?f.push(g):f[m]=ki([f[m]],g)[0]}let p=this._workCenterListEventsByAgent[t]||{};for(let g of Object.values(p))Number(g?.generation)<=o||g?.queryKey!==r||(f=this.applyWorkItemBoardSummary(f,g.summary,n));return this.workCenterItemsByAgent={...this.workCenterItemsByAgent,[t]:f},this.workCenterListPageByAgent={...this.workCenterListPageByAgent,[t]:{nextCursor:d?.nextCursor||null,queryKey:r}},d?.items||[]}finally{if(this._workCenterListMoreRequestsByAgent[t]?.key===l){let d={...this._workCenterListMoreRequestsByAgent};delete d[t],this._workCenterListMoreRequestsByAgent=d,this.workCenterListMoreLoadingByAgent={...this.workCenterListMoreLoadingByAgent,[t]:!1}}}})();return this._workCenterListMoreRequestsByAgent={...this._workCenterListMoreRequestsByAgent,[t]:{key:l,request:c}},c},workItemDeleted(e,t){return!!this._workCenterDeletedIdsByAgent[e]?.[t]},removeWorkItemState(e,t){this._workCenterDeletedIdsByAgent={...this._workCenterDeletedIdsByAgent,[e]:{...this._workCenterDeletedIdsByAgent[e]||{},[t]:!0}},this.beginWorkCenterDetailWrite(e),this.workCenterItemsByAgent={...this.workCenterItemsByAgent,[e]:(this.workCenterItemsByAgent[e]||[]).filter(n=>n.id!==t)},this.workCenterDetailByAgent[e]?.id===t&&(this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[e]:null});let s=`${e}:${t}:`;for(let n of["workCenterActionMessages","workCenterActionMessagesLoading","workCenterActionMessagesError","workCenterActionRequests","workCenterActionRequestsLoading","workCenterActionRequestsError","workCenterActionRequestDetails","workCenterActionRequestDetailsLoading","workCenterActionRequestDetailsError","_workCenterActionMessageRequests","_workCenterActionMessageGenerationByKey","_workCenterActionRequestsGeneration","_workCenterActionRequestDetailsGeneration"]){let r={};for(let[i,o]of Object.entries(this[n]||{}))i.startsWith(s)||(r[i]=o);this[n]=r}},beginWorkCenterDetailWrite(e){let t=Number(this._workCenterDetailRequestGenerationByAgent[e]||0)+1;return this._workCenterDetailRequestGenerationByAgent={...this._workCenterDetailRequestGenerationByAgent,[e]:t},t},commitWorkCenterDetail(e,t,s){if(t?.id&&this.workItemDeleted(e,t.id)||s!=null&&Number(this._workCenterDetailRequestGenerationByAgent[e]||0)!==s)return!1;let n=this.workCenterDetailByAgent[e];return n?.id===t?.id&&Xu(t,n)?!1:(this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[e]:t},!0)},async getWorkItem(e,t=null){let s=t||this.workCenterAgentId||this.currentAgent,n=this.beginWorkCenterDetailWrite(s),r=await this.workCenterRequest("get",{id:e},s);return this.commitWorkCenterDetail(s,r,n),this.workCenterDetailByAgent[s]||r},invalidateWorkItemActionMessages(e,t,s,n){if(!e||!t||!s)return null;let r=dt(n),i=gn(e,t,s,r);this._workCenterActionMessageGenerationByKey={...this._workCenterActionMessageGenerationByKey,[i]:Number(this._workCenterActionMessageGenerationByKey[i]||0)+1};for(let a of["workCenterActionMessages","workCenterActionMessagesLoading","workCenterActionMessagesError"]){let l={...this[a]};delete l[i],this[a]=l}let o={...this._workCenterActionMessageRequests};for(let a of Object.keys(o))a.startsWith(`${i}:`)&&delete o[a];return this._workCenterActionMessageRequests=o,i},async loadWorkItemActionMessages(e,t,s,n,r=null){let i=r||this.workCenterAgentId||this.currentAgent,o=dt(s),a=gn(i,e,t,o),l=Number(this._workCenterActionMessageGenerationByKey[a]||0),c=`${a}:${n==null?"latest":String(n)}`;if(this._workCenterActionMessageRequests[c])return this._workCenterActionMessageRequests[c];this.workCenterActionMessagesLoading={...this.workCenterActionMessagesLoading,[a]:!0},this.workCenterActionMessagesError={...this.workCenterActionMessagesError,[a]:null};let d=(async()=>{try{let u=await this.workCenterRequest("get_action_messages",{id:e,actionId:t,generation:o,cursor:n,limit:20},i);if(this.workItemDeleted(i,e)||dt(u?.generation)!==o||Number(this._workCenterActionMessageGenerationByKey[a]||0)!==l)return u;let f=this.workCenterActionMessages[a]?.messages||[],p=vr(f,u?.messages||[]),g=this.workCenterActionMessages[a],m=g?.nextCursor,v=n==null?null:Number(n),k=m==null?null:Number(m),w=!g||v==null||k!=null&&v===k;return this.workCenterActionMessages={...this.workCenterActionMessages,[a]:{generation:o,messages:p,nextCursor:w?u?.nextCursor??null:m,total:Math.max(Number(u?.total)||0,Number(g?.total)||0,p.length)}},u}catch(u){throw Number(this._workCenterActionMessageGenerationByKey[a]||0)===l&&(this.workCenterActionMessagesError={...this.workCenterActionMessagesError,[a]:u?.message||String(u)}),u}finally{if(this._workCenterActionMessageRequests[c]===d){let u={...this._workCenterActionMessageRequests};delete u[c],this._workCenterActionMessageRequests=u;let f=Object.keys(u).some(p=>p.startsWith(`${a}:`));this.workCenterActionMessagesLoading={...this.workCenterActionMessagesLoading,[a]:f}}}})();return this._workCenterActionMessageRequests={...this._workCenterActionMessageRequests,[c]:d},d},async loadWorkItemActionRequests(e,t,s,n=null){let r=n||this.workCenterAgentId||this.currentAgent,i=dt(s),o=Ba(r,e,t,i),a=Number(this._workCenterActionRequestsGeneration[o]||0)+1;this._workCenterActionRequestsGeneration={...this._workCenterActionRequestsGeneration,[o]:a},this.workCenterActionRequestsLoading={...this.workCenterActionRequestsLoading,[o]:!0},this.workCenterActionRequestsError={...this.workCenterActionRequestsError,[o]:null};try{let l=await this.workCenterRequest("get_action_requests",{id:e,actionId:t,generation:i},r),c=!this.workItemDeleted(r,e)&&dt(l?.generation)===i&&this._workCenterActionRequestsGeneration[o]===a;return c&&(this.workCenterActionRequests={...this.workCenterActionRequests,[o]:l?.requests||[]}),c?l?.requests||[]:this.workCenterActionRequests[o]||[]}catch(l){throw this._workCenterActionRequestsGeneration[o]===a&&(this.workCenterActionRequestsError={...this.workCenterActionRequestsError,[o]:l?.message||String(l)}),l}finally{this._workCenterActionRequestsGeneration[o]===a&&(this.workCenterActionRequestsLoading={...this.workCenterActionRequestsLoading,[o]:!1})}},async loadWorkItemActionRequest(e,t,s,n,r,i=null){let o=i||this.workCenterAgentId||this.currentAgent,a=dt(s),c=`${Ba(o,e,t,a)}:${n}:${r}`,d=Number(this._workCenterActionRequestDetailsGeneration[c]||0)+1;this._workCenterActionRequestDetailsGeneration={...this._workCenterActionRequestDetailsGeneration,[c]:d},this.workCenterActionRequestDetailsLoading={...this.workCenterActionRequestDetailsLoading,[c]:!0},this.workCenterActionRequestDetailsError={...this.workCenterActionRequestDetailsError,[c]:null};try{let u=await this.workCenterRequest("get_action_request",{id:e,actionId:t,generation:a,runId:n,requestId:r},o),f=!this.workItemDeleted(o,e)&&dt(u?.generation)===a&&this._workCenterActionRequestDetailsGeneration[c]===d;return f&&(this.workCenterActionRequestDetails={...this.workCenterActionRequestDetails,[c]:u?.request||null}),f?u?.request||null:this.workCenterActionRequestDetails[c]||null}catch(u){throw this._workCenterActionRequestDetailsGeneration[c]===d&&(this.workCenterActionRequestDetailsError={...this.workCenterActionRequestDetailsError,[c]:u?.message||String(u)}),u}finally{this._workCenterActionRequestDetailsGeneration[c]===d&&(this.workCenterActionRequestDetailsLoading={...this.workCenterActionRequestDetailsLoading,[c]:!1})}},async loadWorkCenterSettings(e=null){let t=e||this.workCenterAgentId||this.currentAgent;if(!t)throw new Error("No Agent selected");let s=Number(this._workCenterSettingsGenerationByAgent[t]||0)+1;this._workCenterSettingsGenerationByAgent={...this._workCenterSettingsGenerationByAgent,[t]:s},this.workCenterSettingsLoadingByAgent={...this.workCenterSettingsLoadingByAgent,[t]:!0},this.workCenterSettingsErrorByAgent={...this.workCenterSettingsErrorByAgent,[t]:null};try{let n=await this.workCenterRequest("get_settings",{},t);return this._workCenterSettingsGenerationByAgent[t]===s&&(this.workCenterSettingsByAgent={...this.workCenterSettingsByAgent,[t]:n?.settings||null},this.workCenterRuntimeByAgent={...this.workCenterRuntimeByAgent,[t]:n?.runtime||null}),n}catch(n){throw this._workCenterSettingsGenerationByAgent[t]===s&&(this.workCenterSettingsErrorByAgent={...this.workCenterSettingsErrorByAgent,[t]:n?.message||String(n)}),n}finally{this._workCenterSettingsGenerationByAgent[t]===s&&(this.workCenterSettingsLoadingByAgent={...this.workCenterSettingsLoadingByAgent,[t]:!1})}},async refreshWorkCenterRuntime(e=null){let t=e||this.workCenterAgentId||this.currentAgent;if(!t)throw new Error("No Agent selected");let s=Number(this._workCenterSettingsGenerationByAgent[t]||0)+1;this._workCenterSettingsGenerationByAgent={...this._workCenterSettingsGenerationByAgent,[t]:s},this.workCenterSettingsLoadingByAgent={...this.workCenterSettingsLoadingByAgent,[t]:!0},this.workCenterSettingsErrorByAgent={...this.workCenterSettingsErrorByAgent,[t]:null};try{let n=await this.workCenterRequest("refresh_runtime",{},t);return this._workCenterSettingsGenerationByAgent[t]===s&&(this.workCenterSettingsByAgent={...this.workCenterSettingsByAgent,[t]:n?.settings||null},this.workCenterRuntimeByAgent={...this.workCenterRuntimeByAgent,[t]:n?.runtime||null}),n}catch(n){throw this._workCenterSettingsGenerationByAgent[t]===s&&(this.workCenterSettingsErrorByAgent={...this.workCenterSettingsErrorByAgent,[t]:n?.message||String(n)}),n}finally{this._workCenterSettingsGenerationByAgent[t]===s&&(this.workCenterSettingsLoadingByAgent={...this.workCenterSettingsLoadingByAgent,[t]:!1})}},async saveWorkCenterSettings(e,t=null){let s=t||this.workCenterAgentId||this.currentAgent;if(!s)throw new Error("No Agent selected");let n=Number(this._workCenterSettingsGenerationByAgent[s]||0)+1;this._workCenterSettingsGenerationByAgent={...this._workCenterSettingsGenerationByAgent,[s]:n};let r=await this.workCenterRequest("update_settings",{settings:e},s);return this._workCenterSettingsGenerationByAgent[s]===n&&(this.workCenterSettingsByAgent={...this.workCenterSettingsByAgent,[s]:r?.settings||null},this.workCenterRuntimeByAgent={...this.workCenterRuntimeByAgent,[s]:r?.runtime||null},this.workCenterSettingsErrorByAgent={...this.workCenterSettingsErrorByAgent,[s]:null}),r},previewWorkCenterPlan(e={},t=null){let s=t||this.workCenterAgentId||this.currentAgent;return this.workCenterRequest("preview",e,s)},async createWorkItem(e,t=null){let s=t||this.workCenterAgentId||this.currentAgent,n=this.beginWorkCenterDetailWrite(s),r=await this.workCenterRequest("create",e,s);return await this.listWorkItems(s,this._workCenterListFiltersByAgent[s]||{}),this.commitWorkCenterDetail(s,r,n),r},async updateWorkItem(e,t,s=null){let n=s||this.workCenterAgentId||this.currentAgent,r=this.beginWorkCenterDetailWrite(n),i=await this.workCenterRequest("update",{id:e,patch:t},n);return await this.listWorkItems(n,this._workCenterListFiltersByAgent[n]||{}),this.commitWorkCenterDetail(n,i,r),i},async startWorkItem(e,t=null){let s=t||this.workCenterAgentId||this.currentAgent,n=this.beginWorkCenterDetailWrite(s),r=await this.workCenterRequest("start",{id:e},s);return await this.listWorkItems(s,this._workCenterListFiltersByAgent[s]||{}),this.commitWorkCenterDetail(s,r,n),r},async cancelWorkItem(e,t=null){let s=t||this.workCenterAgentId||this.currentAgent,n=this.beginWorkCenterDetailWrite(s),r=await this.workCenterRequest("cancel",{id:e},s);return await this.listWorkItems(s,this._workCenterListFiltersByAgent[s]||{}),this.commitWorkCenterDetail(s,r,n),r},async resumeWorkItem(e,t,s=null){let n=s||this.workCenterAgentId||this.currentAgent,r=this.beginWorkCenterDetailWrite(n),i=await this.workCenterRequest("resume",{id:e,revision:t},n);return await this.listWorkItems(n,this._workCenterListFiltersByAgent[n]||{}),this.commitWorkCenterDetail(n,i,r),i},async deleteWorkItem(e,t,s=null){let n=s||this.workCenterAgentId||this.currentAgent,r=await this.workCenterRequest("delete",{id:e,revision:t},n);return this.removeWorkItemState(n,e),r},async postWorkItemMessage(e,t,s,n,r=[],i=null,o={},a=null){if(!this.hydrateWorkCenterBrowserState())throw new Error("Work Center browser owner is unavailable; sign in again and retry");let l=i||this.workCenterAgentId||this.currentAgent,c=this.prepareWorkCenterMessageEnvelope({agentId:l,workItemId:e,target:s,text:t,quote:a,attachments:r,revision:n,planRevision:o.planRevision,ledgerRevision:o.ledgerRevision,coordinatorRevision:o.coordinatorRevision});if(!c)throw new Error("Work Center browser owner changed; reopen Work Center and try again");let d=c.clientMessageId,u=this.workCenterDetailByAgent[l]?.id===e?this.workCenterDetailByAgent[l]:null,f=await this.workCenterRequest("post_work_item_message",{id:c.workItemId,clientMessageId:d,text:c.text,target:c.target,revision:c.revision,planRevision:c.planRevision||Number(u?.planRevision)||0,ledgerRevision:c.ledgerRevision||Number(u?.ledgerRevision)||0,coordinatorRevision:Number.isInteger(Number(c.coordinatorRevision))?Number(c.coordinatorRevision):Number(u?.coordinatorRevision)||0,...c.quote?{quote:c.quote}:{},attachments:c.attachments},l);if(c.target.kind==="coordinator"){if(!f?.accepted)throw new Error("Work Center Coordinator did not accept the message");return this.confirmWorkCenterMessageEnvelope(l,e,d),f}return await this.listWorkItems(l,this._workCenterListFiltersByAgent[l]||{}),this.confirmWorkCenterMessageEnvelope(l,e,d),f},async sendWorkItemMessage(e,t,s,n=[],r=null,i={},o=null){let a=r||this.workCenterAgentId||this.currentAgent,l=this.workCenterDetailByAgent[a]?.id===e?this.workCenterDetailByAgent[a]:null,c=await this.workCenterRequest("work_item_message",{id:e,text:t,revision:s,planRevision:Number.isInteger(Number(i.planRevision))?Number(i.planRevision):Number(l?.planRevision)||0,ledgerRevision:Number.isInteger(Number(i.ledgerRevision))?Number(i.ledgerRevision):Number(l?.ledgerRevision)||0,coordinatorRevision:Number.isInteger(Number(i.coordinatorRevision))?Number(i.coordinatorRevision):Number(l?.coordinatorRevision)||0,...Qe(o)?{quote:Qe(o)}:{},attachments:Array.isArray(n)?n:[]},a);if(!c?.accepted)throw new Error("Work Center Coordinator did not accept the message");return c},async retryWorkItemAction(e,t,s,n,r=null){let i=r||this.workCenterAgentId||this.currentAgent,o=this.beginWorkCenterDetailWrite(i),a=await this.workCenterRequest("retry_action",{id:e,actionId:t,revision:s,generation:n},i);return await this.listWorkItems(i,this._workCenterListFiltersByAgent[i]||{}),this.commitWorkCenterDetail(i,a,o),a},async sendWorkItemActionInput(e,t,s,n,r,i=[],o=null,a=null){let l=o||this.workCenterAgentId||this.currentAgent,c=Number(this._workCenterActionInputGenerationByAgent[l]||0)+1;this._workCenterActionInputGenerationByAgent={...this._workCenterActionInputGenerationByAgent,[l]:c};let d=Qe(a),u=await this.workCenterRequest("action_input",{id:e,text:t,actionId:s,revision:n,generation:r,attachments:i,...d?{quote:d}:{}},l);await this.listWorkItems(l,this._workCenterListFiltersByAgent[l]||{});let f=this.workCenterDetailByAgent[l],p=f?.actions?.find(m=>m?.id===s),g=f?.id===e&&Number(f.revision)===Number(n)&&p&&Number(p.generation)===Number(r);return this._workCenterActionInputGenerationByAgent[l]===c&&g&&!Ku(u,f)?(this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[l]:u},u):f?.id===e?f:u},async guideWorkItemAction(e,t,s,n,r,i=[],o=null){let a=o||this.workCenterAgentId||this.currentAgent,l=this.beginWorkCenterDetailWrite(a),c=await this.workCenterRequest("guide",{id:e,guidance:t,actionId:s,revision:n,generation:r,attachments:i},a);return await this.listWorkItems(a,this._workCenterListFiltersByAgent[a]||{}),this.commitWorkCenterDetail(a,c,l),c},previewWorkItemAttachment(e,t,s=null){let n=s||this.workCenterAgentId||this.currentAgent;return this.workCenterRequest("preview_attachment",{id:e,attachmentId:t},n)},applyWorkCenterEvent(e,t){if(!e||!t?.workItem)return;let s=t.workItem;if(t.clientMessageId){this.confirmWorkCenterMessageEnvelope(e,s.id,t.clientMessageId);let u=Object.entries(this.workCenterPending||{}).find(([,f])=>f?.agentId===e&&f.clientMessageId===t.clientMessageId);if(u){let[f,p]=u;clearTimeout(p.timer),delete this.workCenterPending[f],p.resolve(t.type==="coordinator.turn_started"?{accepted:!0,turnId:null,receipt:!0}:t.workItem)}}let n=this.workCenterItemsByAgent[e]||[];if(t.type==="work_item.deleted"){this.removeWorkItemState(e,s.id);return}if(this.workItemDeleted(e,s.id))return;let r=this._workCenterListFiltersByAgent[e]||{},i=this._workCenterListEventsByAgent[e]?.[s.id]?.summary||null,o=n.some(u=>u?.id===s.id)?n:i?[i]:[],a=ki(o,s).find(u=>u?.id===s.id)||s,l=Number(this._workCenterListEventGenerationByAgent[e]||0)+1;this._workCenterListEventGenerationByAgent={...this._workCenterListEventGenerationByAgent,[e]:l},this._workCenterListEventsByAgent={...this._workCenterListEventsByAgent,[e]:{...this._workCenterListEventsByAgent[e]||{},[s.id]:{generation:l,queryKey:this._workCenterListQueryByAgent[e]||null,summary:a}}};let c=this.applyWorkItemBoardSummary(n,a,r);this.workCenterItemsByAgent={...this.workCenterItemsByAgent,[e]:c};let d=this.workCenterDetailByAgent[e];if(d?.id===s.id){let u=t.type==="run.finished"&&t.actionId&&Array.isArray(s.actionStats)&&s.actionStats.some(k=>k?.id===t.actionId)?{...s,eventActionId:t.actionId}:s,f=qa(d,u),p=Number(s.coordinatorRevision),g=Number(d.coordinatorRevision)||0,m=Number.isInteger(p)&&p>g,v=zu(d,u);this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[e]:Yu(d,s)},v&&this.refreshWorkItemDetailAfterActionChange(e,s,m?null:f)}},async refreshWorkItemDetailAfterActionChange(e,t,s=null){let n=s?(Array.isArray(t.actionStats)?t.actionStats:[]).find(m=>m?.id===s.actionId):(Array.isArray(t.actionStats)?t.actionStats:[]).find(m=>m?.id===t.currentActionId)||t.currentAction,r=s?.actionId||t.currentActionId||null,i=Number(s?.generation??n?.generation),o=Number.isInteger(i)&&i>0?i:null,a=Number(t.coordinatorRevision),l=!s&&Number.isInteger(a)&&a>=0?a:null,c=Number(s?.attempt),d=Number.isInteger(c)&&c>=0?c:null,u=l!=null?`${t.id}:coordinator:${l}`:`${t.id}:${r}${o==null?"":`:${o}`}${d==null?"":`:${d}`}`;if(this._workCenterDetailEventRefreshByAgent[e]?.key===u)return;let f=this.beginWorkCenterDetailWrite(e),p={key:u,generation:f};this._workCenterDetailEventRefreshByAgent={...this._workCenterDetailEventRefreshByAgent,[e]:p},s&&this.invalidateWorkItemActionMessages(e,t.id,s.actionId,s.generation);let g=r&&o!=null?this.loadWorkItemActionMessages(t.id,r,o,null,e).catch(()=>null):null;try{let m=await this.workCenterRequest("get",{id:t.id},e),v=this.workCenterDetailByAgent[e],k=v?.actions?.find(M=>M?.id===r),w=m?.actions?.find(M=>M?.id===r),I=o==null||dt(k?.generation)===o,h=o==null||dt(w?.generation)>=o,y=l==null||Number(m?.coordinatorRevision)===l,b=l!=null||I&&h&&(t.currentActionId==null?m?.currentActionId==null:v?.currentActionId===t.currentActionId&&m?.currentActionId===t.currentActionId);v?.id===t.id&&y&&b&&this.commitWorkCenterDetail(e,m,f)&&g&&await g}catch{}finally{if(this._workCenterDetailEventRefreshByAgent[e]===p){let m={...this._workCenterDetailEventRefreshByAgent};delete m[e],this._workCenterDetailEventRefreshByAgent=m}}},cacheYeaftAgentStatus(e,t,{allowBootstrapCatalog:s=!1}={}){if(!e||!t)return;let n=this.yeaftStatusByAgent[e]||{},r=Number(n.catalogRevision)||0,i=Number(t.catalogRevision)||0,o=typeof n.catalogEpoch=="string"?n.catalogEpoch:"",a=typeof t.catalogEpoch=="string"?t.catalogEpoch:"",l=Number(n.catalogRefreshedAt)||0,c=Number(t.catalogRefreshedAt)||0,d=Array.isArray(t.availableModels),u=t.type==="yeaft_status"&&d&&(i>0||c>0),f=Array.isArray(this._yeaftRetiredCatalogEpochsByAgent?.[e])?this._yeaftRetiredCatalogEpochsByAgent[e]:[],p=!!a&&f.includes(a),g=!!a&&a===o,m=i>0?g&&i===r:c>0&&c===l,v=i>0?!!a&&(a!==o||i>r):r===0&&c>l,k=i>0?!!t.catalogDigest&&!!n.catalogDigest&&t.catalogDigest===n.catalogDigest:t.catalogDigest===n.catalogDigest,w=u&&!p&&(v||m&&k),h=w||s&&r===0&&l===0&&!u&&d,y={...t};if(!h)for(let M of Sy)delete y[M];let b={...n,...y};if(h){if(w&&o&&a&&o!==a){let M=[...f.filter(x=>x!==o),o].slice(-Iy);this._yeaftRetiredCatalogEpochsByAgent={...this._yeaftRetiredCatalogEpochsByAgent||{},[e]:M}}b.availableModels=t.availableModels,b.catalogRefreshedAt=w?c:null,b.catalogEpoch=w&&a||null,b.catalogRevision=w&&i||null,b.catalogDigest=w&&t.catalogDigest||null}this.yeaftStatusByAgent={...this.yeaftStatusByAgent,[e]:b},this.currentAgent===e&&this.applyCachedYeaftStatus(e)},applyCachedYeaftStatus(e=this.currentAgent){let t=e?this.yeaftStatusByAgent[e]:null;return t?(this.yeaftModel=t.model||null,this.yeaftModelEffort=t.modelEffort||null,this.yeaftAvailableModels=Array.isArray(t.availableModels)?t.availableModels:[],this.yeaftModelsRefreshing=!!t.refreshing,this.yeaftModelRefreshError=t.refreshError||null,this.yeaftYeaftDir=t.yeaftDir||null,this.yeaftStatus={skills:t.skills,mcpServers:t.mcpServers,tools:t.tools,multiVp:!!t.multiVp},!0):!1},activateYeaftAgentCatalog(e,t=this.currentAgent){let s=e?this.yeaftStatusByAgent[e]:null;return s&&this.applyCachedYeaftStatus(e),Array.isArray(s?.availableModels)?!0:(this.yeaftModel=null,this.yeaftModelEffort=null,this.yeaftAvailableModels=[],s||(this.yeaftStatus=null),this.yeaftModelsRefreshing=!!e&&!s?.refreshError,this.yeaftModelRefreshError=s?.refreshError||null,t!==e&&(this.yeaftYeaftDir=null),!1)},activateYeaftAgent(e,t=null){if(!e)return!1;let s=this.currentAgent;return this.currentAgent=e,t&&(this.currentAgentInfo=t),this.activateYeaftAgentCatalog(e,s)},resolveYeaftSessionAgentId(e){return be(this,e)},requestYeaftSessionInventory(){if(this.yeaftSessionInventoryCompleteSupported===!1&&this.yeaftSessionHydrateRequestId)return this.yeaftSessionHydrateRequestId;if(this._yeaftSessionInventorySocketQuarantined)return this.manualReconnect(),null;clearTimeout(this._legacyYeaftSessionHydrateTimer),this._legacyYeaftSessionHydrateTimer=null;let e=`session_inventory_${crypto.randomUUID()}`;this.yeaftSessionHydrateRequestId=e,this.yeaftSessionHydrateSlices=[],this._hasHandledAgentList=!1,this._hasHandledYeaftSessionHydrate=!1,this.yeaftSessionHydrateError=null;let t=this.conversations.map(n=>n.id).filter(Boolean);return this.sendWsMessage({type:"get_agents",requestId:e,conversationIds:t.length>0?t:void 0})?(setTimeout(()=>{this.yeaftSessionHydrateRequestId===e&&(this.yeaftSessionHydrateRequestId=null,this.yeaftSessionHydrateSlices=[],this.yeaftSessionHydrateError="session_inventory_timeout",this.yeaftSessionInventoryCompleteSupported!==!0&&(this._yeaftSessionInventorySocketQuarantined=!0))},wy),e):(this.yeaftSessionHydrateRequestId=null,this.yeaftSessionHydrateSlices=[],this.yeaftSessionHydrateError="session_inventory_send_failed",null)},beginYeaftHistoryLoad(e){let t=Ac(this,e);if(!t)return null;let{agentId:s,sessionId:n}=e||{};return setTimeout(()=>{Un(this,{agentId:s,sessionId:n,requestId:t.requestId,error:"history_load_timeout"})},Cc),t},finishYeaftHistoryLoad(e,t={},s="chunk"){return xc(this,e,t,s)},isCurrentYeaftHistoryResponse(e){return Xo(this,e)},syncActiveYeaftHistoryLoad(){return ks(this)},enterYeaft(e=null,{deferBootstrap:t=!1}={}){let s=this.currentAgent;Ha(this);let n=Fs(this),r=!e&&n?be(this,n):null,i=e||r||this.currentAgent||null;if(!i){let a=this.agents.find(l=>l.online);a&&(i=a.id)}if(i&&this.currentAgent!==i){this.selectAgent(i),this.currentAgent=i;let a=this.agents.find(l=>l.id===i);a&&(this.currentAgentInfo=a)}if(!this.applyCachedYeaftStatus(i)&&s&&s!==i&&(this.yeaftAvailableModels=[],this.yeaftStatus=null,this.yeaftModelsRefreshing=!0,this.yeaftModelRefreshError=null),i){let a=this.yeaftConversationIdsByAgent?.[i]||null;a||(a=`yeaft-local-${i}-${Date.now()}`,this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[i]:a}),this.yeaftConversationId=a}else this.yeaftConversationId||(this.yeaftConversationId=`yeaft-local-${Date.now()}`);this.messagesMap[this.yeaftConversationId]||(this.messagesMap[this.yeaftConversationId]=[]),$u(this),this.currentView="yeaft",Va("yeaft"),this.hasMoreMessages=!1,this.loadingMoreMessages=!1,this.yeaftHasMoreHistory=!1,this.yeaftLoadingMoreHistory=!1,this.yeaftOldestLoadedSeq=null,this._yeaftReconnectCatchUpPending=!1,this.loadOpenedYeaftSessionsForConnectedAgents(null,{force:!0}),t||this.requestYeaftSessionBootstrap({forceSessionReady:!0,catchUpHistory:!0,forceHistoryReplay:!0})},loadOpenedYeaftSessionsForConnectedAgents(e=null,{force:t=!1}={}){let s=Array.isArray(e)?e.filter(Boolean):Array.isArray(this.agents)?this.agents.filter(i=>i&&i.online&&i.id).map(i=>i.id):[],n=[...new Set(s)];(!this._yeaftOpenedSessionsLoadedAgents||typeof this._yeaftOpenedSessionsLoadedAgents!="object")&&(this._yeaftOpenedSessionsLoadedAgents={});let r=[];for(let i of n)!t&&this._yeaftOpenedSessionsLoadedAgents[i]||(this._yeaftOpenedSessionsLoadedAgents[i]=Date.now(),r.push(i),this.sessionCrudRequest("list",{},{agentId:i}).catch(o=>{delete this._yeaftOpenedSessionsLoadedAgents[i]}));return r},requestYeaftSessionBootstrap({forceSessionReady:e=!1,catchUpHistory:t=!1,forceHistoryReplay:s=!1}={}){if(!this.currentAgent)return;let n=Fs(this),r=n?be(this,n):this.currentAgent,i=he(r,n),o=n?this.yeaftSessionHistoryState[i]:null,a=e||!this.yeaftSessionReady||!this.yeaftModel||!this.yeaftStatus,l=Number.isFinite(o?.latestSeq)?o.latestSeq:null,c=!!n&&!!this.yeaftConversationId&&Array.isArray(this.messagesMap?.[this.yeaftConversationId])&&this.messagesMap[this.yeaftConversationId].some(I=>I&&(I.sessionId??I.groupId??null)===n),d=!!this._yeaftHistoryBrowserHydrationBySession?.[i];n&&r&&!o?.loaded&&!o?.loading&&!c&&!d&&(d=!0,this.hydrateYeaftHistoryBrowserCache(n,r,{revalidate:!0}));let u=!!n&&!d&&bd({sessionState:o,hasCachedSessionRows:c,force:!!s}),f=!!n&&!d&&!u&&yd(o,t);if(!a&&!u&&!f)return!1;let p=`${r}:${n||"__none__"}`,g=a&&!u&&!f;if(g&&this.yeaftBootstrapMetaLoadingKey===p)return!1;g&&(this.yeaftBootstrapMetaLoadingKey=p);let m=null;n&&u?m=this.beginYeaftHistoryLoad({agentId:r,sessionId:n,mode:"recent",preserveLoaded:!1}):n&&c&&!o?.loaded?(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[i]:{...o||{},loaded:!0,loading:!1,hasMore:!!o?.hasMore,oldestSeq:Number.isFinite(o?.oldestSeq)?o.oldestSeq:null,count:o?.count||0,latestSeq:l}},this.yeaftLoadingMoreHistory=!1):n&&f&&(m=this.beginYeaftHistoryLoad({agentId:r,sessionId:n,mode:"delta",preserveLoaded:!0,latestSeq:l}));let v={type:"yeaft_load_history",agentId:r,sessionId:n,...m?{requestId:m.requestId}:{}};f?v.afterSeq=l:v.limit=u?xi:0;let k=_s();v.perfTraceId=k;let w=f?"delta":u?"recent":"metadata";return n&&(this.yeaftHistoryPerfTraceBySession={...this.yeaftHistoryPerfTraceBySession||{},[i]:k}),Ge(this,{traceId:k,phase:"history.request_send",agentId:r,sessionId:n,messageType:v.type,bytes:JSON.stringify(v).length,detail:{mode:w,limit:v.limit??null,afterSeq:v.afterSeq??null,hasCachedSessionRows:c,needSessionReady:a}}),this.sendWsMessage(v),!0},leaveYeaft(){this.activateChatView({persistPreference:!0})},fetchYeaftToolStats(){this.currentAgent&&(this.yeaftToolStatsLoading=!0,this.sendWsMessage({type:"yeaft_fetch_tool_stats",agentId:this.currentAgent}),this._fetchYeaftToolStatsTimer&&clearTimeout(this._fetchYeaftToolStatsTimer),this._fetchYeaftToolStatsTimer=setTimeout(()=>{this.yeaftToolStatsLoading&&(this.yeaftToolStatsLoading=!1,this.yeaftToolStats={...this.yeaftToolStats||{snapshot:{},registered:[],unused:[]},error:null,notice:"Tool stats are unavailable right now. Try again after the agent reconnects.",fetchedAt:Date.now()}),this._fetchYeaftToolStatsTimer=null},1e4))},loadYeaftDebugHistory({groupId:e,limit:t,dreamLimit:s,indexOnly:n=!1,detailTurnId:r=null,search:i=void 0}={}){if(!this.currentAgent)return;let o=typeof i=="string"?i.trim():(this.yeaftDebugSearch||"").trim(),a=typeof r=="string"&&r,l=o&&!a?kp:Ja,c=Number.isFinite(t)&&t>0?t:this.yeaftDebugHistoryLimit||l,d=Math.max(1,Math.min(l,c)),u=a?"detail":"list",f=`dbg_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`,p=JSON.stringify({agentId:this.currentAgent,groupId:e||null,limit:d,dreamLimit:Number.isFinite(s)&&s>0?s:5,indexOnly:!!n,detailTurnId:r||null,search:a?"":o});if(this._yeaftDebugHistoryInFlightKey===p)return;this._yeaftDebugHistoryInFlightKey=p,a?this._yeaftDebugHistoryLatestDetailRequestId=f:this._yeaftDebugHistoryLatestListRequestId=f,this.yeaftDebugHistoryLimit=d,this.yeaftDebugHistoryLoading=!0,this.yeaftDebugHistoryError=null;let g={type:"yeaft_fetch_debug_history",agentId:this.currentAgent,requestId:f,requestKind:u,limit:d,dreamLimit:Number.isFinite(s)&&s>0?s:5};n&&(g.indexOnly=!0),typeof r=="string"&&r?g.detailTurnId=r: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.yeaftDebugPanel?.status==="loading"&&(this.yeaftDebugPanel={...this.yeaftDebugPanel,status:"error",error:this.yeaftDebugHistoryError})),this._yeaftDebugHistoryInFlightKey=null,this._fetchYeaftDebugHistoryTimer=null},1e4)},openYeaftTurnDebug({sessionId:e=null,turnId:t=null}={}){if(!this.currentAgent)return;let s=`dbgpanel_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`,n=t?"loading":"idle";this.yeaftDebugPanel={open:!0,status:n,requestId:s,agentId:this.currentAgent,sessionId:e||null,turnId:t||null,error:null},t&&this.loadYeaftDebugHistory({groupId:e||void 0,limit:1,dreamLimit:5,detailTurnId:t})},closeYeaftDebugPanel(){let t=(this.yeaftDebugPanel||{}).turnId||null;if(this.yeaftDebugPanel={open:!1,status:"idle",requestId:null,agentId:null,sessionId:null,turnId:null,error:null},t&&this.yeaftDebugTurnsById&&this.yeaftDebugTurnsById[t]){let s={...this.yeaftDebugTurnsById};delete s[t],this.yeaftDebugTurnsById=s,this.yeaftDebugTurnOrder=(this.yeaftDebugTurnOrder||[]).filter(n=>n!==t),this.yeaftDebugLoops=(this.yeaftDebugLoops||[]).filter(n=>!n||n.turnId!==t)}},agentIdForSession(e){return be(this,e)},sendYeaftSessionMessage({groupId:e,text:t,mentions:s,attachments:n,quote:r}){let i=be(this,e);if(!e||!i)return;let o=Array.isArray(n)?n.filter(g=>g&&g.fileId):[],a=Qe(r),l=o.length>0;if(!t?.trim()&&!l)return;let c=t?.trim()?t:"(attached files)",d=`u_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`,u=_s();this.yeaftPerfTraceByMessageId={...this.yeaftPerfTraceByMessageId||{},[d]:u},Ge(this,{traceId:u,phase:"send.prepare",agentId:i,sessionId:e,turnId:d,messageType:"yeaft_session_send",detail:{mentionCount:Array.isArray(s)?s.length:0,attachmentCount:o.length,quoted:!!a}});let f=st(this,e);if(f){let g={id:d,messageId:d,clientMessageId:d,stableKey:ns(i,e,d),uiKey:ns(i,e,d),type:"user",content:c,sessionId:e,turnId:d,...a?{quote:a}:{}};if(o.length>0&&(g.attachments=o.map(m=>({fileId:m.fileId,name:m.name,preview:m.preview,isImage:!!m.isImage,mimeType:m.mimeType||""}))),this.addMessageToConversation(f,g),this.processingConversations[f]=!0,e){let m=It(i,e);this.yeaftProcessingSessions={...this.yeaftProcessingSessions,...m?{[m]:!0}:{}}}this._turnCompletedConvs?.delete(f),this._closedAt?.[f]&&delete this._closedAt[f],this.getOrCreateExecutionStatus(f),cn(this,f)}let p={type:"yeaft_session_send",agentId:i,id:d,sessionId:e,text:c,mentions:Array.isArray(s)?s:[],perfTraceId:u,...a?{quote:a}:{}};o.length>0&&(p.attachments=o.map(g=>({fileId:g.fileId,isImage:!!g.isImage}))),Ge(this,{traceId:u,phase:"send.websocket_send",agentId:i,sessionId:e,turnId:d,messageType:p.type,bytes:JSON.stringify(p).length}),this.sendWsMessage(p)},cancelYeaftTask({agentId:e=null,sessionId:t,taskId:s}){let n=typeof t=="string"?t.trim():"",r=typeof s=="string"?s.trim():"",i=be(this,n,e);return!i||!n||!r?!1:(this.yeaftStoppingTasksById={...this.yeaftStoppingTasksById,[Qa(i,n,r)]:!0},this.sendWsMessage({type:"yeaft_task_cancel",agentId:i,sessionId:n,taskId:r,clientRequestId:`task_cancel_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}),!0)},hydrateYeaftHistoryBrowserCache(e,t=null,{revalidate:s=!1}={}){let n=e||null,r=be(this,n,t),i=is();if(!i||!r||!n)return s&&this.revalidateYeaftHistoryBrowserCache(n,r),Promise.resolve(!1);let o=he(r,n),a=`${i.epoch}:${crypto.randomUUID()}`;return this._yeaftHistoryBrowserHydrationBySession={...this._yeaftHistoryBrowserHydrationBySession||{},[o]:a},$c({fence:i,agentId:r,sessionId:n}).then(l=>{if(!l||this._yeaftHistoryBrowserHydrationBySession?.[o]!==a)return!1;let c=st(this,n,r);if(!c)return!1;let d=this.messagesMap[c]||[];Ms(this,c,l.rows),this.messagesMap[c]=ui(d,l.rows).sort((p,g)=>{let m=Number.isFinite(p?.seq)?p.seq:null,v=Number.isFinite(g?.seq)?g.seq:null;return m!==null&&v!==null&&m!==v?m-v:m!==null&&v===null?-1:m===null&&v!==null?1:(p?.timestamp||0)-(g?.timestamp||0)});let u=this.yeaftSessionHistoryState[o]||{},f=Math.max(Number.isFinite(u.latestSeq)?u.latestSeq:-1,Number.isFinite(l.latestSeq)?l.latestSeq:-1);return this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[o]:{...u,loaded:!0,loading:!!u.loading,latestSeq:f>=0?f:null,streamId:l.streamId||null,revision:Number.isFinite(l.revision)?l.revision:null,oldestSeq:Number.isFinite(u.oldestSeq)?u.oldestSeq:l.oldestSeq,hasMore:u.loaded?!!u.hasMore:!!l.hasMore,count:Math.max(Number(u.count)||0,Number(l.rowCount)||0),browserCached:!0}},zn(this,{conversationId:c,agentId:r,sessionId:n,incomingRows:l.rows,activeAgentId:r,activeSessionId:n}),this.syncActiveYeaftHistoryLoad(),s&&this.revalidateYeaftHistoryBrowserCache(n,r),!0}).catch(()=>(s&&this.revalidateYeaftHistoryBrowserCache(n,r),!1)).finally(()=>{if(this._yeaftHistoryBrowserHydrationBySession?.[o]!==a)return;let{[o]:l,...c}=this._yeaftHistoryBrowserHydrationBySession;this._yeaftHistoryBrowserHydrationBySession=c})},revalidateYeaftHistoryBrowserCache(e,t=null){let s=e||null,n=be(this,s,t);if(!n||!s||this.currentView!=="yeaft")return!1;let r=he(n,s),i=this.yeaftSessionHistoryState?.[r]||null;if(i?.loading)return!1;let o=Number.isFinite(i?.latestSeq)?i.latestSeq:null,a=o===null?"recent":"delta",l=this.beginYeaftHistoryLoad({agentId:n,sessionId:s,mode:a,preserveLoaded:o!==null,latestSeq:o});if(!l)return!1;let c={type:"yeaft_load_history",agentId:n,sessionId:s,requestId:l.requestId,...o===null?{limit:xi}:{afterSeq:o,maxRows:cp,maxBytes:dp,...typeof i?.streamId=="string"?{streamId:i.streamId}:{},...Number.isFinite(i?.revision)?{revision:i.revision}:{}}};return o!==null&&(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[r]:{...this.yeaftSessionHistoryState[r],syncingAfterSeq:o}}),this.sendWsMessage(c)?!0:(Un(this,{agentId:n,sessionId:s,requestId:l.requestId,error:"history_load_send_failed"}),!1)},continueYeaftHistoryDelta(e,t=null,s=null){let n=e||null,r=be(this,n,t);if(!r||!n||!Number.isFinite(s))return!1;let i=he(r,n),o=this.yeaftSessionHistoryState?.[i]||null;if(o?.loading)return!1;let a=this.beginYeaftHistoryLoad({agentId:r,sessionId:n,mode:"delta",preserveLoaded:!0,latestSeq:s});if(!a)return!1;this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[i]:{...this.yeaftSessionHistoryState[i],syncingAfterSeq:s}};let l={type:"yeaft_load_history",agentId:r,sessionId:n,requestId:a.requestId,afterSeq:s,maxRows:cp,maxBytes:dp,...typeof o?.streamId=="string"?{streamId:o.streamId}:{},...Number.isFinite(o?.revision)?{revision:o.revision}:{}};return this.sendWsMessage(l)?!0:(Un(this,{agentId:r,sessionId:n,requestId:a.requestId,error:"history_load_send_failed"}),!1)},persistYeaftHistoryBrowserCache(e,t=null,s=null){let n=e||null,r=be(this,n,t),i=is(),o=s||st(this,n,r);if(!i||!r||!n||!o)return Promise.resolve(!1);let a=he(r,n),l=(this.messagesMap[o]||[]).filter(c=>(c?.sessionId??c?.groupId??null)===n);return Vc({fence:i,agentId:r,sessionId:n,rows:l,historyState:this.yeaftSessionHistoryState[a]||null})},removeYeaftHistoryBrowserCache(e,t){let s=is();return!s||!e||!t?Promise.resolve(!0):ia({fence:s,agentId:e,sessionId:t}).catch(()=>!1)},clearYeaftHistoryMemory({agentId:e=null,sessionId:t=null,preserveLiveRows:s=!1,preserveSessionOwner:n=!1}={}){let r=e||null,i=t||null,o=r&&i?he(r,i):null,a={};for(let[p,g]of Object.entries(this._yeaftHistoryWindowPendingByKey||{})){if(!(!o||g?.agentId===r&&g?.sessionId===i)){a[p]=g;continue}clearTimeout(g?.timeout),g?.resolve?.(!1)}this._yeaftHistoryWindowPendingByKey=a;let l=r&&this.yeaftConversationIdsByAgent?.[r]||null,c=o?new Set([l].filter(Boolean)):new Set(Object.values(this.yeaftConversationIdsByAgent||{}).filter(Boolean));!o&&this.yeaftConversationId&&c.add(this.yeaftConversationId);let d={...this.messagesMap||{}};for(let p of c)Array.isArray(d[p])&&(d[p]=o?d[p].filter(g=>(g?.sessionId??g?.groupId??null)!==i?!0:s&&!kt(g)):[]);this.messagesMap=d;let u=p=>{if(!o)return{};let{[o]:g,...m}=p||{};return m};if(this.yeaftSessionHistoryState=u(this.yeaftSessionHistoryState),this.yeaftHistoryCacheState=u(this.yeaftHistoryCacheState),this.yeaftMessageWindowState=u(this.yeaftMessageWindowState),this._yeaftHistoryBrowserHydrationBySession=u(this._yeaftHistoryBrowserHydrationBySession),this.yeaftHistoryOutlineBySession=u(this.yeaftHistoryOutlineBySession),o){let p=this._yeaftHistoryOutlineTimeouts?.[o];p&&clearTimeout(p),this._yeaftHistoryOutlineTimeouts=u(this._yeaftHistoryOutlineTimeouts)}else{for(let p of Object.values(this._yeaftHistoryOutlineTimeouts||{}))p&&clearTimeout(p);this._yeaftHistoryOutlineTimeouts={}}if((!o||this.yeaftHistorySearchState?.agentId===r&&this.yeaftHistorySearchState?.sessionId===i)&&(this._yeaftHistorySearchTimeout&&clearTimeout(this._yeaftHistorySearchTimeout),this._yeaftHistorySearchTimeout=null,this.yeaftHistorySearchState={requestId:null,agentId:null,sessionId:null,query:"",senderKey:"",loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,nextCursor:null,error:null}),this._yeaftHistoryRevealLeases=o?Object.fromEntries(Object.entries(this._yeaftHistoryRevealLeases||{}).filter(([,p])=>p?.sessionKey!==o)):{},o||(this.yeaftHasMoreHistory=!1,this.yeaftLoadingMoreHistory=!1,this.yeaftOldestLoadedSeq=null),!n&&i&&this.yeaftSessionAgentById?.[i]===r){let{[i]:p,...g}=this.yeaftSessionAgentById;this.yeaftSessionAgentById=g}this.syncActiveYeaftHistoryLoad()},getYeaftMessageWindowKey(e=null,t=null){let s=e||this.yeaftActiveSessionFilter||null,n=be(this,s,t);return he(n,s)},pruneYeaftMessageWindow(e=null,t=null){if(this.currentView!=="yeaft")return;let s=this.getYeaftMessageWindowKey(e,t);Object.values(this._yeaftHistoryRevealLeases||{}).some(r=>r?.sessionKey===s)||(this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[s]:{visibleTurns:Os()}})},expandYeaftMessageWindow(e=null,t=br(),s=null){if(this.currentView!=="yeaft")return;let n=this.getYeaftMessageWindowKey(e,s),i=(this.yeaftMessageWindowState[n]?.visibleTurns||Os())+Math.max(1,Number.isFinite(t)?Math.floor(t):br());this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[n]:{visibleTurns:i}}},isYeaftMessageCached(e,t,s=null,n=null){let r=e||this.yeaftActiveSessionFilter||null,i=s||st(this,r,n);return!i||!t?!1:(this.messagesMap[i]||[]).some(o=>(!r||(o?.sessionId??o?.groupId??null)===r)&&((o?.id||o?.messageId)===t||o?.persistedMessageId===t))},revealYeaftMessage(e,t,s=null,n=null){let r=e||this.yeaftActiveSessionFilter||null,i=be(this,r,n),o=s||st(this,r,i);if(!o||!t)return!1;let a=(this.messagesMap[o]||[]).filter(g=>g?._historyWindowPrefetched===!0?!1:r?(g?.sessionId??g?.groupId??null)===r:!0),c=a.findIndex(g=>(g?.id||g?.messageId)===t||g?.persistedMessageId===t);if(c<0){let g=(this.messagesMap[o]||[]).find(m=>m?._historyWindowPrefetched===!0&&(m?.sessionId??m?.groupId??null)===r&&((m?.id||m?.messageId)===t||m?.persistedMessageId===t));if(!g)return!1;g._historyWindowPrefetched=!1,a.push(g),a.sort((m,v)=>{let k=Number.isFinite(m?.seq)?m.seq:null,w=Number.isFinite(v?.seq)?v.seq:null;return k!==null&&w!==null&&k!==w?k-w:k!==null&&w===null?-1:k===null&&w!==null?1:(m?.timestamp||0)-(v?.timestamp||0)}),c=a.indexOf(g)}let d=np(a),u=d.findIndex(g=>c>=g.start&&c<g.end);if(u<0)return!1;a[c]._historyWindowPrefetched=!1;let f=Math.max(Os(),d.length-u),p=this.getYeaftMessageWindowKey(r,i);return this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[p]:{visibleTurns:f}},!0},getYeaftHistoryOutlineState(e=null,t=null){let s=e||this.yeaftActiveSessionFilter||null,n=be(this,s,t),r=he(n,s),i=this.yeaftHistoryOutlineBySession[r]||{requestId:null,agentId:n,sessionId:s,loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,nextCursor:null,totalCount:null,loaded:!1,retryAttempt:0,error:null},o=st(this,s,n),a=o?this.messagesMap[o]||[]:[],l=new Map((i.results||[]).map(f=>[wr(f),f])),c=0;for(let f of a){if((f?.sessionId??f?.groupId??null)!==s)continue;let p=f.messageId||f.id;if(!p)continue;let g=f.type==="user"&&!!f.clientMessageId&&p===f.clientMessageId,m=f.type==="assistant"&&f.isStreaming===!0;if(!g&&!m)continue;let v=f.type,k=f.turnId||f.threadId||p,w=f.speakerVpId||f.vpId||null,I=wr({role:v,messageId:p,clientMessageId:f.clientMessageId,turnId:k,speakerVpId:w}),h=l.get(I),b=(typeof f.content=="string"?f.content:"").replace(/\s+/g," ").trim();l.set(I,{...h,agentId:n,sessionId:s,messageId:Number.isFinite(h?.seq)?h.messageId:p,...f.clientMessageId?{clientMessageId:f.clientMessageId}:{},turnId:k,role:v,speakerVpId:w||h?.speakerVpId||null,timestamp:f.timestamp||f.ts||h?.timestamp||null,snippet:b.length>180?`${b.slice(0,180).trimEnd()}\u2026`:b||h?.snippet||""}),h||(c+=1)}let d=f=>{let p=typeof f=="number"?f:Date.parse(f||"");return Number.isFinite(p)?p:0},u=Array.from(l.values()).sort((f,p)=>Number.isFinite(f.seq)&&Number.isFinite(p.seq)?f.seq-p.seq:d(f.timestamp)-d(p.timestamp));return{...i,results:u,totalCount:Number.isFinite(i.totalCount)?i.totalCount+c:i.totalCount}},promoteYeaftHistoryOutlineRow(e,t=null){let s=e?.sessionId??e?.groupId??null,n=he(t,s),r=this.yeaftHistoryOutlineBySession[n];if(!s||!t||!r?.loaded||r.loading)return!1;let i=e?.type;if(i!=="user"&&i!=="assistant")return!1;let o=e.dbMessageId||e.messageId||e.id||null,a=_y(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(),f=wr({role:i,messageId:o,clientMessageId:e.clientMessageId,turnId:l,speakerVpId:c}),p=new Map((r.results||[]).map(I=>[wr(I),I])),g=p.get(f);p.set(f,{...g,agentId:t,sessionId:s,messageId:o,...e.clientMessageId?{clientMessageId:e.clientMessageId}:{},turnId:l,seq:a,role:i,speakerVpId:c,timestamp:e.timestamp||e.ts||g?.timestamp||null,snippet:u.length>180?`${u.slice(0,180).trimEnd()}\u2026`:u||g?.snippet||""});let m=50,v=Array.from(p.values()).sort((I,h)=>(I.seq||0)-(h.seq||0)),k=v.length>m,w=v.slice(-m);return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[n]:{...r,results:w,hasMore:r.hasMore||k,nextBeforeSeq:k&&Number.isFinite(w[0]?.seq)?w[0].seq:r.nextBeforeSeq,totalCount:Number.isFinite(r.totalCount)&&!g?r.totalCount+1:r.totalCount}},!0},promoteCompletedYeaftHistoryOutline(e,t=null,s=null){let n=this.messagesMap[e]||[],r=null,i=[];for(let o=n.length-1;o>=0;o--){let a=n[o];if(a?.type==="user")break;if(t&&a?.turnId&&a.turnId!==t||a?.type!=="assistant")continue;let l=typeof a.content=="string"?a.content.replace(/\s+/g," ").trim():"";r?!String(r.content||"").trim()&&l&&(r=a):r=a,l&&i.unshift(l)}return r?this.promoteYeaftHistoryOutlineRow({...r,content:i.join(" ")},s):!1},invalidateYeaftHistoryOutline(e,t=null){let s=he(t,e),n=this.yeaftHistoryOutlineBySession[s];if(!e||!t||!n)return!1;if(n.loading)return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[s]:{...n,refreshPending:!0}},!0;this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[s]:{...n,loaded:!1,refreshPending:!1}};let r=be(this,e);return this.currentView==="yeaft"&&this.yeaftActiveSessionFilter===e&&r===t?this.loadYeaftHistoryOutline({force:!0,targetSessionId:e,targetAgentId:t}):!0},loadYeaftHistoryOutline({append:e=!1,force:t=!1,targetSessionId:s=null,targetAgentId:n=null,retryAttempt:r=0}={}){if(this.currentView!=="yeaft"&&!s)return!1;let i=s||this.yeaftActiveSessionFilter||null,o=n||be(this,i);if(!i||!o)return!1;let a=he(o,i),l=this.getYeaftHistoryOutlineState(i,o);if(!e&&l.loaded&&!t)return!0;if(e&&(!l.hasMore||!Number.isFinite(l.nextBeforeSeq))||l.loading)return!1;if(!yp(this,o,"session_history_outline"))return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[a]:{...l,error:"unsupported",loading:!1}},!1;let c=`history_outline_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,d={...l,requestId:c,agentId:o,sessionId:i,loading:!0,requestAppend:e,refreshPending:!1,retryAttempt:r,error:null};this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[a]:d};let u=this._yeaftHistoryOutlineTimeouts[a];u&&clearTimeout(u);let f=setTimeout(()=>{let m=this.yeaftHistoryOutlineBySession[a];if(m?.requestId!==c)return;let v={...this._yeaftHistoryOutlineTimeouts};delete v[a],this._yeaftHistoryOutlineTimeouts=v;let k=m.refreshPending===!0;this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[a]:{...m,requestId:null,loading:!1,requestAppend:!1,loaded:k?!1:m.loaded,refreshPending:!1,error:k?null:"timeout"}},k&&this.loadYeaftHistoryOutline({force:!0,targetSessionId:i,targetAgentId:o})},1e4);this._yeaftHistoryOutlineTimeouts={...this._yeaftHistoryOutlineTimeouts,[a]:f};let p=_s(),g={type:"yeaft_load_history_outline",agentId:o,sessionId:i,requestId:c,perfTraceId:p,limit:50,...e&&l.nextCursor?{cursor:l.nextCursor}:{},...e&&!l.nextCursor&&Number.isFinite(l.nextBeforeSeq)?{beforeSeq:l.nextBeforeSeq}:{}};return Ge(this,{traceId:p,phase:"history_outline.request_send",agentId:o,sessionId:i,messageType:g.type,bytes:JSON.stringify(g).length,detail:{append:e,limit:g.limit}}),this.sendWsMessage(g),!0},handleYeaftHistoryOutline(e){if(!e?.agentId||!e?.sessionId)return!1;let t=he(e.agentId,e.sessionId),s=this.yeaftHistoryOutlineBySession[t];if(!s||e.requestId!==s.requestId)return!1;let n=this._yeaftHistoryOutlineTimeouts[t];n&&clearTimeout(n);let r={...this._yeaftHistoryOutlineTimeouts};delete r[t],this._yeaftHistoryOutlineTimeouts=r;let i=Number.isInteger(s.retryAttempt)?s.retryAttempt:0;if(ky.has(e.error)&&i<up.length){let u=up[i],f=setTimeout(()=>{let p=this.yeaftHistoryOutlineBySession[t];if(p?.requestId!==e.requestId||p.loading!==!0)return;let g={...this._yeaftHistoryOutlineTimeouts};delete g[t],this._yeaftHistoryOutlineTimeouts=g;let m=p.refreshPending===!0;this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[t]:{...p,requestId:null,loading:!1,refreshPending:!1}},this.loadYeaftHistoryOutline({append:m?!1:s.requestAppend===!0,force:!0,targetSessionId:e.sessionId,targetAgentId:e.agentId,retryAttempt:i+1})},u);return this._yeaftHistoryOutlineTimeouts={...this._yeaftHistoryOutlineTimeouts,[t]:f},!0}let o=Array.isArray(e.results)?e.results.map(u=>({...u,agentId:e.agentId,sessionId:e.sessionId})):[],a=s.requestAppend?[...s.results||[],...o]:o,l=new Map(a.filter(u=>u?.messageId).map(u=>[wr(u),u])),c=Array.from(l.values()).sort((u,f)=>(u.seq||0)-(f.seq||0)),d=s.refreshPending===!0;return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[t]:{...s,requestId:null,loading:!1,requestAppend:!1,refreshPending:!1,loaded:d?!1:!e.error,results:c,hasMore:!!e.hasMore,nextBeforeSeq:Number.isFinite(e.nextBeforeSeq)?e.nextBeforeSeq:null,nextCursor:e.nextCursor&&typeof e.nextCursor=="object"?e.nextCursor:null,totalCount:Number.isFinite(e.totalCount)?e.totalCount:s.totalCount,error:d?null:e.error||null}},d&&this.loadYeaftHistoryOutline({force:!0,targetSessionId:e.sessionId,targetAgentId:e.agentId}),!0},searchYeaftHistory(e,{append:t=!1,senderKey:s=""}={}){if(this.currentView!=="yeaft")return!1;let n=typeof e=="string"?e.trim():"",r=typeof s=="string"&&(s==="user"||s.startsWith("vp:"))?s.slice(0,103):"",i=this.yeaftActiveSessionFilter||null,o=be(this,i);if(this._yeaftHistorySearchTimeout&&(clearTimeout(this._yeaftHistorySearchTimeout),this._yeaftHistorySearchTimeout=null),!i||!o||Array.from(n).length<1&&!r)return this.yeaftHistorySearchState={requestId:null,agentId:o,sessionId:i,query:n,senderKey:r,loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,nextCursor:null,error:null},!1;let a=this.yeaftHistorySearchState||{};if(!yp(this,o,"session_history_search"))return this.yeaftHistorySearchState={requestId:null,agentId:o,sessionId:i,query:n,senderKey:r,loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,nextCursor:null,error:"unsupported"},!1;let l=`history_search_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;this.yeaftHistorySearchState={requestId:l,agentId:o,sessionId:i,query:n,senderKey:r,loading:!0,results:t&&a.query===n&&a.senderKey===r?a.results:[],hasMore:!1,nextBeforeSeq:t&&a.query===n&&a.senderKey===r?a.nextBeforeSeq:null,nextCursor:t&&a.query===n&&a.senderKey===r&&a.nextCursor||null,error:null},this._yeaftHistorySearchTimeout=setTimeout(()=>{this.yeaftHistorySearchState?.requestId===l&&(this._yeaftHistorySearchTimeout=null,this.yeaftHistorySearchState={...this.yeaftHistorySearchState,loading:!1,error:"timeout"})},1e4);let c=_s(),d={type:"yeaft_search_history",agentId:o,sessionId:i,requestId:l,perfTraceId:c,query:n,senderKey:r,limit:20,...t&&a.query===n&&a.senderKey===r&&a.nextCursor?{cursor:a.nextCursor}:{},...t&&a.query===n&&a.senderKey===r&&!a.nextCursor&&Number.isFinite(a.nextBeforeSeq)?{beforeSeq:a.nextBeforeSeq}:{}};return Ge(this,{traceId:c,phase:"history_search.request_send",agentId:o,sessionId:i,messageType:d.type,bytes:JSON.stringify(d).length,detail:{append:t,limit:d.limit,queryLength:Array.from(n).length,senderFilter:!!r}}),this.sendWsMessage(d),!0},handleYeaftHistorySearchResult(e){let t=this.yeaftHistorySearchState||{};if(!e||e.requestId!==t.requestId||e.agentId!==t.agentId||e.sessionId!==t.sessionId||e.query!==t.query||(e.senderKey||"")!==t.senderKey)return!1;this._yeaftHistorySearchTimeout&&(clearTimeout(this._yeaftHistorySearchTimeout),this._yeaftHistorySearchTimeout=null);let s=Array.isArray(e.results)?e.results.map(r=>({...r,agentId:e.agentId,sessionId:e.sessionId})):[],n=new Map((t.results||[]).map(r=>[Wn(r),r]));for(let r of s)(r?.entryId||r?.messageId)&&n.set(Wn(r),r);return this.yeaftHistorySearchState={...t,loading:!1,results:Array.from(n.values()),hasMore:!!e.hasMore,nextBeforeSeq:Number.isFinite(e.nextBeforeSeq)?e.nextBeforeSeq:null,nextCursor:e.nextCursor&&typeof e.nextCursor=="object"?e.nextCursor:null,error:e.error||null},!0},loadYeaftHistoryWindow(e,{validateCached:t=!1}={}){let s=e?.sessionId||this.yeaftActiveSessionFilter||null,n=e?.agentId||be(this,s),r=Wn(e);if(!s||!n||!e?.entryId||!Number.isFinite(e.indexGeneration)||!Number.isFinite(e.entryStartSeq)||!e?.messageId||!Number.isFinite(e.seq))return Promise.resolve(!1);let i=st(this,s,n);if((this.messagesMap[i]||[]).some(p=>(p?.sessionId??p?.groupId??null)===s&&p?.historyEntryId===e.entryId&&p?.historyIndexGeneration===e.indexGeneration)&&!t)return Promise.resolve(!0);let a=he(n,`${s}:${r}:generation:${e.indexGeneration}`),l=this._yeaftHistoryWindowPendingByKey||{};if(l[a]?.promise)return l[a].promise;let c=`history_window_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,d=null,u=new Promise(p=>{d=p}),f=setTimeout(()=>{if(this._yeaftHistoryWindowPendingByKey?.[a]?.requestId!==c)return;let{[a]:g,...m}=this._yeaftHistoryWindowPendingByKey;this._yeaftHistoryWindowPendingByKey=m,d(!1)},1e4);return this._yeaftHistoryWindowPendingByKey={...l,[a]:{requestId:c,agentId:n,sessionId:s,entryId:e.entryId||null,indexGeneration:Number.isFinite(e.indexGeneration)?e.indexGeneration:null,entryStartSeq:Number.isFinite(e.entryStartSeq)?e.entryStartSeq:null,resultId:r,messageId:e.messageId,prefetch:!t,resolve:d,timeout:f,promise:u}},this.sendWsMessage({type:"yeaft_load_history_window",agentId:n,sessionId:s,requestId:c,prefetch:!t,...e.entryId?{entryId:e.entryId}:{},...Number.isFinite(e.indexGeneration)?{indexGeneration:e.indexGeneration}:{},...Number.isFinite(e.entryStartSeq)?{entryStartSeq:e.entryStartSeq}:{},anchorMessageId:e.messageId,anchorSeq:e.seq,beforeTurns:5,afterTurns:5,maxRows:200,maxBytes:512*1024}),u},beginYeaftHistoryReveal(e){let t=e?.sessionId||null,s=e?.agentId||null,n=st(this,t,s);if(!t||!s||!n)return null;let r=he(s,t),i=`${r}${n}`,o=++this._yeaftHistoryRevealSequence,a={key:i,token:o,sessionKey:r,agentId:s,sessionId:t,conversationId:n};return this._yeaftHistoryRevealLeases={...this._yeaftHistoryRevealLeases||{},[i]:a},a},finishYeaftHistoryReveal(e){if(!e?.key||!Number.isFinite(e.token)||this._yeaftHistoryRevealLeases?.[e.key]?.token!==e.token)return!1;let{[e.key]:s,...n}=this._yeaftHistoryRevealLeases;return this._yeaftHistoryRevealLeases=n,!0},async revealYeaftHistoryResult(e,t=null){let s=!t,n=t||this.beginYeaftHistoryReveal(e),r=e?.sessionId||null,i=e?.agentId||null,o=st(this,r,i);if(!n||!r||!i||!o||!e?.messageId)return this.finishYeaftHistoryReveal(n),!1;if(!await this.loadYeaftHistoryWindow(e,{validateCached:!0}))return this.finishYeaftHistoryReveal(n),!1;if(this.currentView!=="yeaft"||this.yeaftActiveSessionFilter!==r||be(this,r)!==i||st(this,r,i)!==o)return this.finishYeaftHistoryReveal(n),!1;let l=this.revealYeaftMessage(r,e.messageId,o,i);return(!l||s)&&this.finishYeaftHistoryReveal(n),l},pendingYeaftHistoryWindow(e){let s=Object.entries(this._yeaftHistoryWindowPendingByKey||{}).find(([,i])=>i?.requestId===e?.requestId);if(!s)return null;let[n,r]=s;return e.agentId!==r.agentId||e.sessionId!==r.sessionId||e.entryId&&r.entryId&&e.entryId!==r.entryId||Number.isFinite(e.indexGeneration)&&Number.isFinite(r.indexGeneration)&&e.indexGeneration!==r.indexGeneration?null:{pendingKey:n,pending:r}},handleYeaftHistoryWindow(e,t=null){let s=this.pendingYeaftHistoryWindow(e);if(!s)return!1;let{pendingKey:n,pending:r}=s;r.prefetch===!0&&e.prefetch!==!0&&(e.prefetch=!0),clearTimeout(r.timeout);let{[n]:i,...o}=this._yeaftHistoryWindowPendingByKey;this._yeaftHistoryWindowPendingByKey=o;let a=!e.error&&!!t&&this.isYeaftMessageCached(r.sessionId,r.messageId,t,r.agentId);return r.resolve(!!a),!!a},createYeaftSession({displayName:e,vpIds:t,defaultVpId:s,workDir:n,agentId:r}={}){let i=Array.isArray(t)?t.slice():[],o=s&&i.includes(s)?s:i[0]||null,a=(e||"").trim(),l=(n||"").trim(),c={roster:i,defaultVpId:o};return a&&(c.name=a),l&&(c.workDir=l),this.sessionCrudRequest("create",c,{agentId:r})},handleYeaftOutput(e){if(!e)return;let t=e.agentId||this.yeaftAgentId||this.currentAgent||null,s=e.conversationId||e.event?.conversationId||null,n=dn(this,t,s);if(e.data&&n){if(e.data.type!=="result")return;let a=Td(this,t,s);if(!a)return;let l=e.turnId?hn(this,t,e.turnId):"",c=!!(l&&this.activeVpTurns?.[l])||(this.messagesMap?.[a]||[]).some(d=>d?.turnId===e.turnId&&(d.isStreaming||d.status==="pending"));if(!e.turnId||!c)return;e={...e,conversationId:a}}if(e.perfTraceId&&(Ge(this,{traceId:e.perfTraceId,phase:"receive.yeaft_output",agentId:e.agentId||null,sessionId:e.sessionId||null,vpId:e.vpId||null,turnId:e.turnId||null,threadId:e.threadId||null,messageType:e.data?.type||e.event?.type||e.type}),e.turnId&&(this.yeaftPerfTraceByTurnId={...this.yeaftPerfTraceByTurnId||{},[e.turnId]:e.perfTraceId})),e.data){let a=e.agentId||null,l=Wt(this,a,e.conversationId);if(l){let d=Za(e,e.turnId||"session");for(let u of["retry","retrying","thinking"])ln(this,l,`${u}:${d}`);e.data?.tool_use_result&&ln(this,l,`tool:${d}`)}let c=e.turnId?hn(this,e.agentId||null,e.turnId):"";if(c&&this.activeVpTurns?.[c]?.retryAttempt){let{retryAttempt:d,retryMax:u,retryDelayMs:f,retryReason:p,retryRecoveryMode:g,...m}=this.activeVpTurns[c];this.activeVpTurns={...this.activeVpTurns,[c]:m}}if(l){let d=e.sessionId??e.groupId??null,u=bp(this,d,a),f=a&&this.yeaftConversationIdsByAgent?this.yeaftConversationIdsByAgent[a]:null,p=Tt(this,a);p&&p.targetConversationId!==l?cr(this,a,l):!p&&f&&f!==l&&!String(f).startsWith("yeaft-local-")&&(Mt(this,f,l,{removeSource:f!==this.yeaftConversationId}),ar(this,a,f,l)),ka(this,a,l);let g=Tt(this,a,l),m=g?.sourceConversationId||f,v=!u&&m===this.yeaftConversationId;if(this.currentView==="yeaft"&&a&&m&&m!==l){let b=!v&&(!!g||String(m).startsWith("yeaft-local-"));Mt(this,m,l,{removeSource:b}),v?mi(this,a,m,l):b&&lr(this,a,l)}a&&(this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[a]:l}),(u||!this.yeaftConversationId)&&(this.yeaftConversationId=l),u&&(this.activeConversations=[l]),this.messagesMap[l]||(this.messagesMap[l]=[]);let k=this._currentYeaftAgentId,w=this._currentYeaftSessionId,I=this._currentYeaftVpId,h=this._currentYeaftTurnId,y=this._currentYeaftThreadId;a&&(this._currentYeaftAgentId=a),d!=null&&(this._currentYeaftSessionId=d),e.vpId&&(this._currentYeaftVpId=e.vpId),e.turnId&&(this._currentYeaftTurnId=e.turnId),e.threadId&&(this._currentYeaftThreadId=e.threadId);try{let b=typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();if(this.handleAssistantOutputFrame(l,e.data,a),e.perfTraceId){let T=typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();Ge(this,{traceId:e.perfTraceId,phase:"store.apply_output",agentId:e.agentId||null,sessionId:d||null,vpId:e.vpId||null,turnId:e.turnId||null,threadId:e.threadId||null,messageType:e.data?.type||null,durationMs:T-b}),vi(this,{traceId:e.perfTraceId,agentId:e.agentId||null,sessionId:d||null,vpId:e.vpId||null,turnId:e.turnId||null,threadId:e.threadId||null,messageType:e.data?.type||null})}let M=e.data,x=M?.message?.id||M?.id||null,D=Ry(x),V=Array.isArray(M?.message?.content)?M.message.content:[],E=V.some(T=>T?.type==="tool_use"),_=!!M?.tool_use_result||V.some(T=>T?.type==="tool_result");if(d){let T=!_&&!Py(this,l,d)&&(M?.type==="user"||M?.type==="assistant"&&!E)?D:null,A=he(e.agentId||null,d),R=this.yeaftSessionHistoryState[A]||{},j=Number.isFinite(R.latestSeq)?R.latestSeq:-1;T!==null&&T>j&&(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[A]:{...R,latestSeq:T}})}}finally{this._currentYeaftAgentId=k,this._currentYeaftSessionId=w,this._currentYeaftVpId=I,this._currentYeaftTurnId=h,this._currentYeaftThreadId=y}}return}let r=e.event;if(!r)return;let i={...r,vpId:r.vpId||e.vpId||null,threadId:r.threadId||e.threadId||null,turnId:r.turnId||e.turnId||null},o=Wt(this,e.agentId||null,e.conversationId);if(o){let a=Za(i);r.type==="tool_start"?or(this,o,`tool:${a}`):r.type==="tool_end"?ln(this,o,`tool:${a}`):r.type==="llm_retry"?or(this,o,`retry:${a}`):r.type==="vp_async_task_wait_start"?or(this,o,`async-wait:${a}`):r.type==="vp_async_task_wait_end"&&ln(this,o,`async-wait:${a}`)}switch(r.type){case"project_mutation_result":r.projectsAuthoritative===!0?this.finishProjectMutation(r):this.finishLegacyProjectMutation(r,e.agentId||null);break;case"ask_user_question":{let a=Wt(this,e.agentId||null,e.conversationId);if(!a||!r.requestId)break;let l=fp(e,r,a),c=()=>{let d=this.messagesMap[a]||[],u=mp(d,l,a);if(u){if(u.askAnswered||u.askExpired)return!0;u.toolName="AskUserQuestion",r.toolCallId&&!u.toolId&&(u.toolId=r.toolCallId),u.agentId=l.agentId||u.agentId||null,u.askRequestId=r.requestId,u.askQuestions=r.questions||[],u.askCreatedAt=r.createdAt||null,u.askExpiresAt=r.expiresAt||null,r.replay&&(u.askPending=!1,u.pendingAnswers=null,u.askSubmitGeneration=null),u.isHistory=!1;let g=hp(this,l);return g&&Ga(u,g),this.messagesMap={...this.messagesMap,[a]:d.slice()},!0}if(!r.replay)return!1;let f={id:`ask-card-${r.requestId}`,type:"tool-use",toolName:"AskUserQuestion",toolId:r.toolCallId||null,toolInput:{questions:r.questions||[]},askRequestId:r.requestId,askQuestions:r.questions||[],askCreatedAt:r.createdAt||null,askExpiresAt:r.expiresAt||null,agentId:l.agentId,sessionId:l.sessionId,vpId:l.vpId,speakerVpId:l.vpId,turnId:l.turnId,threadId:l.threadId||"main",hasResult:!1,isHistory:!1,timestamp:r.createdAt||Date.now()},p=hp(this,l);return p&&Ga(f,p),d.push(f),this.messagesMap={...this.messagesMap,[a]:d.slice()},!0};if(!c()){let d=0,u=setInterval(()=>{d+=1,(c()||d>=10)&&clearInterval(u)},200)}break}case"ask_user_answered":case"ask_user_expired":{let a=Wt(this,e.agentId||null,e.conversationId);if(!a||!r.requestId)break;let l=this.messagesMap[a]||[],c=fp(e,r,a),d=mp(l,c,a);if(!d){My(this,c,r);break}Ga(d,r),this.messagesMap={...this.messagesMap,[a]:l.slice()};break}case"session_ready":{let a=r.conversationId,l=e.agentId||this.currentAgent;if(dn(this,l,a))break;let c=l&&this.yeaftConversationIdsByAgent?this.yeaftConversationIdsByAgent[l]:null,d=this.yeaftConversationId?String(this.yeaftConversationId):"",u=d.startsWith("yeaft-local-")&&(!l||d.startsWith(`yeaft-local-${l}-`)||/^yeaft-local-\d/.test(d))?this.yeaftConversationId:null,f=c||u,p=r.sessionId||e.sessionId||null,g=bp(this,p,l),m=Tt(this,l);m&&m.targetConversationId!==a?cr(this,l,a):!m&&c&&c!==a&&!String(c).startsWith("yeaft-local-")&&ar(this,l,c,a),ka(this,l,a);let k=Tt(this,l,a)?.sourceConversationId||f,w=!g&&k===this.yeaftConversationId;if(k&&k!==a){let M=!w;Mt(this,k,a,{removeSource:M}),w?mi(this,l,k,a):M&&lr(this,l,a)}else this.messagesMap[a]||(this.messagesMap[a]=[]);l&&(this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[l]:a},this.cacheYeaftAgentStatus(l,r,{allowBootstrapCatalog:g})),g&&(this.yeaftModel=r.model,this.yeaftModelEffort=r.modelEffort||null,this.yeaftSessionReady=!0,this.yeaftBootstrapMetaLoadingKey=null,l?this.applyCachedYeaftStatus(l):this.yeaftAvailableModels=r.availableModels||[]);let I=Array.isArray(r.tasks)?r.tasks:[],h={};for(let[M,x]of Object.entries(this.yeaftActiveTasksBySession||{})){let D=Object.fromEntries(Object.entries(x||{}).filter(([,E])=>E?.id&&E.status==="running"&&E.agentId&&E.agentId!==l)),V=Xa(D);Object.keys(V).length>0&&(h[M]=V)}for(let M of I){if(!M?.id||!M.sessionId||M.status!=="running")continue;let x=he(l,M.sessionId);h[x]={...h[x]||{},[M.id]:{...M,agentId:l}}}this.yeaftActiveTasksBySession=h,g&&(r.yeaftDir&&(this.yeaftYeaftDir=r.yeaftDir),this.yeaftStatus={skills:r.skills,mcpServers:r.mcpServers,tools:r.tools,multiVp:!!r.multiVp}),(g||!this.yeaftConversationId)&&(this.yeaftConversationId=a),g&&(this.activeConversations=[a]);let y=e.agentId||this.currentAgent||null,b=y||"__current__";this._yeaftVpSubscribedAgentKey!==b&&(this._yeaftVpSubscribedAgentKey=b,this.sendWsMessage(y?{type:"yeaft_vp_subscribe",agentId:y}:{type:"yeaft_vp_subscribe"}));break}case"yeaft_status":{let a=e.agentId||this.currentAgent;a&&this.cacheYeaftAgentStatus(a,r);break}case"context_usage":break;case"turn_open":{if(!r.turnId)break;let a={turnId:r.turnId,userPrompt:r.userPrompt||"",vpId:r.vpId||e.vpId||null,sessionId:r.sessionId||e.sessionId||null,openedAt:r.at||Date.now(),closedAt:null,totalMs:0,totalTokens:0,loopCount:0,memoryLoaded:null,memoryLoadedMeta:null,memoryAdjust:null,tools:[],detailsLoaded:!0};this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:a},this.yeaftDebugTurnOrder.includes(r.turnId)||(this.yeaftDebugTurnOrder=[...this.yeaftDebugTurnOrder,r.turnId]);break}case"turn_close":{if(!r.turnId)break;let a=this.yeaftDebugTurnsById[r.turnId];if(!a)break;this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...a,closedAt:Date.now(),totalMs:r.totalMs||0,totalTokens:r.totalTokens||0,loopCount:r.loopCount||a.loopCount||0}};break}case"memory_used":{if(!r.turnId)break;let a=this.yeaftDebugTurnsById[r.turnId];if(!a)break;this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...a,memoryLoaded:Array.isArray(r.loaded)?r.loaded:[],memoryLoadedMeta:r.meta||null}};break}case"dream_memory_loaded":{let a=Array.isArray(r.resident)?r.resident:[];if(r.turnId){let c=this.yeaftDebugTurnsById[r.turnId];c&&(this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...c,dreamMemoryLoaded:a,dreamMemoryLoadedInto:r.loadedInto||"system_prompt.memory"}})}let l={};for(let c of a){let d=c&&typeof c.scope=="string"?c.scope:null,u=d&&/^sessions\/[^/]+$/.test(d)?d:d&&/^group\/[^/]+$/.test(d)?`sessions/${d.slice(6)}`:null;u&&(l[u]={scope:u,sourceScope:d,sessionId:u.slice(9),turnId:r.turnId||null,vpId:r.vpId||null,loadedInto:r.loadedInto||"system_prompt.memory",summary:c.summary||"",truncated:!!c.truncated,receivedAt:Date.now()})}Object.keys(l).length>0&&(this.yeaftDreamPromptLoads={...this.yeaftDreamPromptLoads,...l});break}case"memory_adjust":{if(!r.turnId)break;let a=this.yeaftDebugTurnsById[r.turnId];if(!a)break;this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...a,memoryAdjust:{sessionKey:r.sessionKey||null,added:r.added||0,evicted:r.evicted||0,skipped:r.skipped||0,reason:r.reason||""}}};break}case"tool_exec":{if(!r.turnId)break;let a=this.yeaftDebugTurnsById[r.turnId];if(!a)break;let l=[...a.tools||[],{loopNumber:r.loopNumber||0,callId:r.callId||null,name:r.name||"?",durationMs:r.durationMs||0,isError:!!r.isError}];this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...a,tools:l}};break}case"loop":{if(this.yeaftDebugLoops.push({turnId:r.turnId||null,loopNumber:r.loopNumber||0,model:r.model,usage:r.usage||{inputTokens:0,outputTokens:0,totalTokens:0},latencyMs:r.latencyMs,ttfbMs:r.ttfbMs,stopReason:r.stopReason,at:typeof r.at=="number"?r.at:null,sessionId:e.sessionId||null,vpId:e.vpId||r.vpId||null}),this.yeaftDebugLoops.length>wp){let a=qu({loops:this.yeaftDebugLoops,turnsById:this.yeaftDebugTurnsById,turnOrder:this.yeaftDebugTurnOrder,maxLoops:Math.max(wp,this.yeaftDebugHistoryLimit||0)});this.yeaftDebugLoops=a.loops,this.yeaftDebugTurnsById=a.turnsById,this.yeaftDebugTurnOrder=a.turnOrder}break}case"llm_retry":{if(!e.turnId)break;let a=hn(this,e.agentId||null,e.turnId),l=this.activeVpTurns?.[a];if(!l)break;let c=r.reason==="stream_idle_timeout"?"stream_idle_timeout":"transient_error";this.activeVpTurns={...this.activeVpTurns,[a]:{...l,retryAttempt:r.attempt||0,retryMax:r.maxRetries||0,retryDelayMs:r.delayMs||0,retryReason:c,retryRecoveryMode:r.recoveryMode||"restart"}};break}case"recall":case"consolidate":case"fallback":case"thinking_delta":break;case"reflection":{let a=Wt(this,e.agentId||null,e.conversationId)||"unknown",l=Array.isArray(r.loopRange)?r.loopRange:[0,0],c=`${a}:${r.trigger}:${l[0]}-${l[1]}`,d=this.yeaftReflectionCards[c],u=this.messagesMap[a]||[],f=d?d.anchorMsgId:u.length>0&&u[u.length-1].id||null,p=d?d.anchorOrder:u.length;this.yeaftReflectionCards={...this.yeaftReflectionCards,[c]:{key:c,conversationId:a,turnId:r.turnId||d&&d.turnId||null,loopNumber:r.loopNumber||d&&d.loopNumber||null,trigger:r.trigger,status:r.status,loopRange:l,toolCount:r.toolCount||0,content:r.content||"",durationMs:r.durationMs||0,error:r.error||null,sessionId:e.sessionId||null,anchorMsgId:f,anchorOrder:p,updatedAt:Date.now()}};break}case"model_switched":this.yeaftModel=r.model,this.yeaftModelEffort=r.modelEffort||null;break;case"yeaft_task_event":{let a=r.task;if(!a?.id||!a.sessionId)break;let l=e.agentId||be(this,a.sessionId),c=he(l,a.sessionId),d={...a,agentId:l},u={...this.yeaftActiveTasksBySession},f={...u[c]||{}};a.status==="running"?f[a.id]=d:delete f[a.id];let p=Xa(f);if(Object.keys(p).length>0?u[c]=p:delete u[c],this.yeaftActiveTasksBySession=u,a.status!=="running"){let{[Qa(l,a.sessionId,a.id)]:g,...m}=this.yeaftStoppingTasksById||{};this.yeaftStoppingTasksById=m}break}case"yeaft_task_cancel_result":{let a=r.taskId||r.task?.id||null,l=r.task?.sessionId||r.sessionId||e.sessionId||null,c=e.agentId||be(this,l);if(a&&l&&r.success===!1){let{[Qa(c,l,a)]:u,...f}=this.yeaftStoppingTasksById||{};this.yeaftStoppingTasksById=f}let d=r.task;if(d?.id&&d.sessionId){let u=he(c,d.sessionId),f={...this.yeaftActiveTasksBySession},p={...f[u]||{}};d.status==="running"?p[d.id]={...d,agentId:c}:delete p[d.id];let g=Xa(p);Object.keys(g).length>0?f[u]=g:delete f[u],this.yeaftActiveTasksBySession=f}break}case"sub_agent_event":{let a=Wt(this,e.agentId||null,e.conversationId)||"unknown",l=r.agentId;if(!l)break;let c=r.payload||{},d=`${a}:${l}`,u=this.yeaftSubAgentCards[d],f=this.messagesMap[a]||[],p=u?u.anchorMsgId:f.length>0&&f[f.length-1].id||null,g=u?u.anchorOrder:f.length,m=u?{...u}:{key:d,conversationId:a,agentId:l,agentName:c.agentName||"sub-agent",status:"running",text:"",toolCallCount:0,turns:0,error:null,expanded:!1,anchorMsgId:p,anchorOrder:g,updatedAt:Date.now(),sessionId:e.sessionId||null};switch(c.agentName&&!m.agentName&&(m.agentName=c.agentName),c.type){case"sub_agent_status":m.status=c.status||m.status,c.error&&(m.error=c.error);break;case"text_delta":break;case"tool_use":case"tool_call":m.toolCallCount=Number(m.toolCallCount||0)+1;break;case"tool_start":break;case"tool_result":case"tool_end":break;case"sub_agent_turn_end":{m.turns+=1;let v=typeof c.content=="string"?c.content.trim():"";v&&(m.text=m.text?`${m.text}
9
9
 
10
- ${v}`:v),m.status!=="failed"&&m.status!=="closed"&&(m.status=c.status||"idle");break}case"error":c.error&&(m.error=c.error.message||String(c.error));break;default:break}m.updatedAt=Date.now(),this.yeaftSubAgentCards={...this.yeaftSubAgentCards,[d]:m};break}case"history_loaded":{let a={...r,agentId:e.agentId||null,requestId:r.requestId||e.requestId||null};if(a.requestId&&!this.isCurrentYeaftHistoryResponse(a))break;let l=e.agentId||null,c=r.sessionId??null,d=he(l,c),u=e.perfTraceId||this.yeaftHistoryPerfTraceBySession?.[d];u&&Ge(this,{traceId:u,phase:"history.loaded_event",agentId:e.agentId||null,sessionId:r.sessionId||null,messageType:r.type,detail:{mode:r.mode||"recent",count:r.count||0,hasMore:!!r.hasMore}});let f=r.mode==="delta"?"delta":"recent",p=this.yeaftSessionHistoryState[d]||{},g=Number.isFinite(r.latestSeq)?r.latestSeq:Number.isFinite(p.latestSeq)?p.latestSeq:null,m=Number.isFinite(r.nextBeforeSeq)?r.nextBeforeSeq:Number.isFinite(r.oldestSeq)?r.oldestSeq:Number.isFinite(p.serverOldestFetchedSeq)?p.serverOldestFetchedSeq:Number.isFinite(p.oldestSeq)?p.oldestSeq:null,v=f==="delta"?{...p,loaded:!0,loading:!1,latestSeq:g,syncingAfterSeq:null,count:(p.count||0)+(r.count||0)}:{...p,loaded:!0,loading:!1,hasMore:!!r.hasMore,serverHasMore:!!r.hasMore,oldestSeq:m,serverOldestFetchedSeq:m,count:typeof r.count=="number"?r.count:0,latestSeq:g,syncingAfterSeq:null},k=a.requestId?this.finishYeaftHistoryLoad(a,v,"completion"):null;k||(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[d]:v});let w=he(l?this.currentAgent:null,this.yeaftActiveSessionFilter??null);if(d===w)f==="recent"&&(this.yeaftHasMoreHistory=v.hasMore,this.yeaftOldestLoadedSeq=v.serverOldestFetchedSeq),this.yeaftLoadingMoreHistory=!!k?.loading;else if(this.yeaftLoadingMoreHistory){let I=this.yeaftSessionHistoryState[w]||null;this.yeaftLoadingMoreHistory=!!I?.loading}}break;case"vp_snapshot":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&a.applySnapshot(r,e.agentId||null,e.requestId||null);break}case"vp_snapshot_error":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&a.failSnapshot(e.agentId||null,e.requestId||null,r.error||r.message||"VP library request failed");break}case"vp_updated":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&r.vp&&a.upsert(r.vp,r.reason,e.agentId||null);break}case"vp_removed":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&r.vpId&&a.remove(r.vpId,r.reason,e.agentId||null);break}case"vp_crud_result":{let a=this._vpCrudPending&&this._vpCrudPending.get(r.requestId);a&&(this._vpCrudPending.delete(r.requestId),a.resolve({ok:!!r.ok,op:r.op,vpId:r.vpId,vp:r.vp,error:r.error||null}));break}case"group_list_updated":case"session_list_updated":case"yeaft_session_hydrate":{let a=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore(),l=r.sessions||[];if(r.projectsAuthoritative===!0&&Array.isArray(r.projects)?this.applySessionCatalogSnapshot(this.sessionCatalog,r.projects):Array.isArray(r.projects)&&e.agentId&&this.applyLegacyProjectSnapshot(r.projects,e.agentId),r.type!=="yeaft_session_hydrate"&&this.yeaftSessionHydrateRequestId&&this.yeaftSessionInventoryCompleteSupported===!0){let p=Array.isArray(this.yeaftSessionHydrateSlices)?this.yeaftSessionHydrateSlices.filter(g=>g.agentId!==(e.agentId||null)):[];this.yeaftSessionHydrateSlices=[...p,{agentId:e.agentId||null,sessions:l}];break}let c=a&&a.activeSessionId||null,d=a?.activeSessionKey&&a.sessions?.[a.activeSessionKey]?.agentId||null;a&&(a.applySnapshot(l,e.agentId||null),this._hasHandledYeaftSessionHydrate=!0,this.yeaftSessionHydrateError=null);let u=a&&a.activeSessionId||null,f=a?.activeSessionKey&&a.sessions?.[a.activeSessionKey]?.agentId||null;if(this.currentView==="yeaft"&&u){let p=f||be(this,u,e.agentId||null),g=he(p,u),m=this.yeaftSessionHistoryState[g]||null;this.setActiveSessionFilter(u,{agentId:p,force:d!==p||vd(u,c,m)})}break}case"group_roster_changed":case"session_roster_changed":{let a=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();a&&a.applyRosterChange(r,e.agentId||null);break}case"group_crud_result":case"session_crud_result":{let a=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();a&&a.applyCrudResult(r,e.agentId||null);let l=Promise.resolve();if(r.ok&&r.op==="delete"&&r.sessionId){let d=is();l=(async()=>{if(!e.agentId)throw new Error("Session delete result is missing its Agent owner");if(d&&!await ia({fence:d,agentId:e.agentId,sessionId:r.sessionId}))throw new Error("Browser history cache was not removed");this.clearYeaftHistoryMemory({agentId:e.agentId,sessionId:r.sessionId})})(),l.catch(u=>{})}let c=this._sessionCrudPending&&this._sessionCrudPending.get(r.requestId);c&&(async()=>{let u=null;try{await l}catch(v){u=v}if(this._sessionCrudPending?.get(r.requestId)!==c)return;this._sessionCrudPending.delete(r.requestId);let f=r.session||r.group||null,p=f&&e.agentId&&!f.agentId?{...f,agentId:e.agentId}:f,g=r.sessionId||null,m=r.sessions||null;c.resolve({ok:!!r.ok&&!u,op:r.op,session:p,sessionId:g,sessions:m,config:r.config||null,error:u?{code:"browser_cache_cleanup_failed",message:u.message}:r.error||null})})();break}case"vp_turn_start":{if(!r.turnId||!r.vpId)break;let a=Da(e.agentId||null,r.turnId)||r.turnId;if(this.activeVpTurns={...this.activeVpTurns,[a]:{agentId:e.agentId||null,turnId:r.turnId,vpId:r.vpId,sessionId:r.sessionId||null,threadId:r.threadId||null,isStreaming:!0,startedAt:r.ts||Date.now()}},r.sessionId){let l=It(e.agentId||null,r.sessionId);this.yeaftProcessingSessions={...this.yeaftProcessingSessions,...l?{[l]:!0}:{[r.sessionId]:!0}}}break}case"vp_turn_end":{if(!r.turnId)break;let a=hn(this,e.agentId||null,r.turnId),l=r.sessionId||this.activeVpTurns?.[a]?.sessionId||null;r.reason==="end_turn"&&l&&this.markYeaftSessionUnread(l,e.agentId||null);let{[a]:c,...d}=this.activeVpTurns;this.activeVpTurns=d;let{[a]:u,...f}=this.stoppingVpTurnIds;this.stoppingVpTurnIds=f;let p=r.sessionId||c?.sessionId||null,g=e.agentId||c?.agentId||null,m=r.vpId||c?.vpId||null;if(!(p&&m?Object.values(this.activeVpTurns||{}).some(y=>y?.vpId===m&&nt(y,p,g)):!1)&&p&&m){let y={...this.vpStatuses||{}},b=!1;for(let[M,x]of Object.entries(y))x?.vpId===m&&nt(x,p,g)&&kr.has(x.state)&&(y[M]={...x,state:"idle",turnId:null,since:r.ts||Date.now()},b=!0);b&&(this.vpStatuses=y)}this.clearYeaftSessionProcessingIfIdle(p,{agentId:g});let w={end_turn:"completed",route_forward:"completed",aborted:"aborted",errored:"errored",error:"errored",cancelled:"cancelled",canceled:"cancelled"}[r.reason]||"completed",I=Date.now(),h=Wt(this,e.agentId||null,e.conversationId);if(h&&Array.isArray(this.messagesMap[h])){let y=this.messagesMap[h],b=sp(y,r);for(let M=0;M<y.length;M++){let x=y[M];if(!x||x.type!=="assistant")continue;let D=x.sessionId??x.groupId;r.sessionId&&D&&D!==r.sessionId||r.vpId&&x.speakerVpId&&x.speakerVpId!==r.vpId||r.turnId&&x.turnId&&x.turnId!==r.turnId||x.status&&x.status!=="pending"||(x.status=w,x.turnEndAt=I,x.turnEndReason=r.reason||null,r.detail&&(x.turnEndDetail=r.detail),Number.isFinite(r.durationMs)&&(x.turnDurationMs=r.durationMs),b=!0)}b&&(this.messagesMap={...this.messagesMap,[h]:y.slice()}),this.pruneConversationMessageRetention(h,p,g)}break}case"yeaft_turn_aborted":{let a=Array.isArray(r.turnIds)?r.turnIds.filter(Boolean):[];r.turnId&&a.push(r.turnId);let l=r.sessionId||null,c=r.vpId||null,d=new Set;for(let g of a){let m=hn(this,e.agentId||null,g),v=this.activeVpTurns?.[m]||null;(!v||nt(v,v.sessionId,e.agentId||null))&&d.add(m)}if(c)for(let[g,m]of Object.entries(this.activeVpTurns||{}))!m||m.vpId!==c||nt(m,l,e.agentId||null)&&d.add(g);if(d.size===0)break;let u=l,f={...this.activeVpTurns||{}},p={...this.stoppingVpTurnIds||{}};for(let g of d){let m=f[g];!u&&m?.sessionId&&(u=m.sessionId),delete f[g],delete p[g]}this.activeVpTurns=f,this.stoppingVpTurnIds=p,this.clearYeaftSessionProcessingIfIdle(u||null,{agentId:e.agentId||null});break}case"yeaft_aborted":{let a=r.sessionId||e.sessionId||null;a?(this.activeVpTurns=Object.fromEntries(Object.entries(this.activeVpTurns||{}).filter(([,l])=>!nt(l,a,e.agentId||null))),this.stoppingVpTurnIds=Object.fromEntries(Object.entries(this.stoppingVpTurnIds||{}).filter(([l])=>this.activeVpTurns?.[l])),this.vpStatuses=Object.fromEntries(Object.entries(this.vpStatuses||{}).filter(([,l])=>!nt(l,a,e.agentId||null))),this.clearYeaftSessionProcessingIfIdle(a,{agentId:e.agentId||null,ignoreStatuses:!0})):r.all&&lp(this,e.agentId||null);break}case"vp_typing_start":{if(!r.vpId)break;let a=Wt(this,e.agentId||null,e.conversationId);if(!a)break;this.yeaftVpTyping=Ou(this.yeaftVpTyping,a,r.vpId);break}case"vp_typing_end":{if(!r.vpId)break;let a=Wt(this,e.agentId||null,e.conversationId);if(!a)break;this.yeaftVpTyping=Fu(this.yeaftVpTyping,a,r.vpId);break}case"vp_status_changed":{if(!r.vpId||!r.state)break;if(o){let u=Xa(i);if(r.state==="thinking"||r.state==="retrying"||r.state==="tool")or(this,o,`${r.state}:${u}`);else if(r.state==="streaming"||r.state==="idle"||r.state==="error")for(let f of["thinking","retrying","tool"])ln(this,o,`${f}:${u}`)}let a=r.sessionId||null,l=e.agentId||null,c=Ai(l,a,r.vpId),d={agentId:l,state:r.state,since:r.since||Date.now(),turnId:r.turnId||null,title:r.title||"",sessionId:a,vpId:r.vpId};if(this.vpStatuses={...this.vpStatuses,[c]:d},a&&kr.has(r.state)){let u=It(l,a);this.yeaftProcessingSessions={...this.yeaftProcessingSessions,...u?{[u]:!0}:{[a]:!0}}}else a&&this.clearYeaftSessionProcessingIfIdle(a,{agentId:l});this.restoreActiveYeaftSessionFromStatuses([d],l);break}case"vp_status_snapshot":{let a=Array.isArray(r.statuses)?r.statuses:[],l=r.sessionId;if(l==null){let c={...this.vpStatuses||{}};if(e.agentId)for(let[d,u]of Object.entries(c))(!u?.agentId||u.agentId===e.agentId)&&delete c[d];else for(let d of Object.keys(c))delete c[d];for(let d of a){if(!d||!d.vpId)continue;let u=d.sessionId||d.groupId||null,f=Ai(e.agentId||null,u,d.vpId);c[f]={agentId:e.agentId||null,state:d.state,since:d.since||Date.now(),turnId:d.turnId||null,title:d.title||"",sessionId:u,vpId:d.vpId}}this.vpStatuses=c}else{let c={...this.vpStatuses};for(let[d,u]of Object.entries(c))u&&u.sessionId===l&&(!e.agentId||!u.agentId||u.agentId===e.agentId)&&delete c[d];for(let d of a){if(!d||!d.vpId)continue;let u=d.sessionId||d.groupId||null,f=Ai(e.agentId||null,u,d.vpId);c[f]={agentId:e.agentId||null,state:d.state,since:d.since||Date.now(),turnId:d.turnId||null,title:d.title||"",sessionId:u,vpId:d.vpId}}this.vpStatuses=c}this.yeaftProcessingSessions=by(this,e.agentId||null,a,l??null),this.restoreActiveYeaftSessionFromStatuses(a,e.agentId||null);break}case"yeaft_dream_snapshot":{let a=r&&r.snapshot,l=a&&typeof a.scope=="string"?a.scope:null;l&&(this.yeaftDreamSnapshots={...this.yeaftDreamSnapshots,[l]:{...a,receivedAt:Date.now()}});break}case"yeaft_dream_status":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&a.applyDreamStatus(r);break}case"yeaft_dream_result":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&a.applyDreamResult(r),r?.snapshot?.scope&&(this.yeaftDreamSnapshots={...this.yeaftDreamSnapshots,[r.snapshot.scope]:{...r.snapshot,receivedAt:Date.now()}});{let l=typeof r?.snapshot?.scope=="string"&&r.snapshot.scope?r.snapshot.scope:typeof r?.sessionId=="string"&&r.sessionId?`sessions/${r.sessionId}`:null;if(!l)break;let c=this.yeaftDreamLatest[l]||null;this.yeaftDreamLatest={...this.yeaftDreamLatest,[l]:{scope:l,phase:"result",status:r.skipped?"skipped":r.success?"success":"error",startedAt:c?.startedAt??null,finishedAt:Date.now(),mergedCount:typeof r.entriesCreated=="number"?r.entriesCreated:c?.mergedCount??null,error:r.skipped||r.success?null:r.error||"unknown",manual:typeof r?.manual=="boolean"?r.manual:c?.manual??null,durationMs:typeof r.durationMs=="number"?r.durationMs:c?.durationMs??null,llmCallCount:typeof r.llmCallCount=="number"?r.llmCallCount:c?.llmCallCount??0,inputTokens:typeof r.inputTokens=="number"?r.inputTokens:c?.inputTokens??0,outputTokens:typeof r.outputTokens=="number"?r.outputTokens:c?.outputTokens??0,totalTokens:typeof r.totalTokens=="number"?r.totalTokens:c?.totalTokens??0,metrics:r.metrics||c?.metrics||null,passBreakdown:r.passBreakdown||r.metrics?.passBreakdown||c?.passBreakdown||null,isRunning:!1}},this._appendDreamEvent(l,{type:"dream_progress",phase:"result",sessionId:r.sessionId,status:r.skipped?"skipped":r.success?"success":"error",success:!!r.success,entriesCreated:typeof r.entriesCreated=="number"?r.entriesCreated:null,trigger:r.trigger||null,error:r.skipped||r.success?null:r.error||null,skipped:!!r.skipped,skippedReason:r.skippedReason||null,durationMs:typeof r.durationMs=="number"?r.durationMs:null,llmCallCount:typeof r.llmCallCount=="number"?r.llmCallCount:0,inputTokens:typeof r.inputTokens=="number"?r.inputTokens:0,outputTokens:typeof r.outputTokens=="number"?r.outputTokens:0,totalTokens:typeof r.totalTokens=="number"?r.totalTokens:0,metrics:r.metrics||null,passBreakdown:r.passBreakdown||r.metrics?.passBreakdown||null,ts:Date.now()})}break}case"dream_progress":{let a=r?.phase||"unknown",l=null;typeof r?.target=="string"&&r.target.includes("/")?l=r.target:typeof r?.sessionId=="string"&&r.sessionId?l=`sessions/${r.sessionId}`:l="*";let c=a==="done",d=a==="error"||r?.status==="error",u=!c&&!d,f=p=>{let g=this.yeaftDreamLatest[p]||null;return{scope:p,phase:a,status:d?"error":c?"success":"running",startedAt:g?.startedAt&&u?g.startedAt:r?.ts||g?.startedAt||Date.now(),finishedAt:c||d?r?.ts||Date.now():null,mergedCount:typeof r?.mergedCount=="number"?r.mergedCount:typeof r?.targets=="number"?r.targets:g?.mergedCount??null,error:d?r?.error||"unknown":null,manual:typeof r?.manual=="boolean"?r.manual:g?.manual??!1,durationMs:typeof r?.duration=="number"?r.duration:typeof r?.durationMs=="number"?r.durationMs:g?.durationMs??null,llmCallCount:typeof r?.llmCallCount=="number"?r.llmCallCount:g?.llmCallCount??0,inputTokens:typeof r?.inputTokens=="number"?r.inputTokens:g?.inputTokens??0,outputTokens:typeof r?.outputTokens=="number"?r.outputTokens:g?.outputTokens??0,totalTokens:typeof r?.totalTokens=="number"?r.totalTokens:g?.totalTokens??0,metrics:r?.metrics||g?.metrics||null,passBreakdown:r?.passBreakdown||r?.metrics?.passBreakdown||g?.passBreakdown||null,isRunning:u}};if(l==="*"){let p={...this.yeaftDreamLatest,"*":f("*")};for(let g of Object.keys(this.yeaftDreamLatest))g!=="*"&&(p[g]=f(g));this.yeaftDreamLatest=p}else this.yeaftDreamLatest={...this.yeaftDreamLatest,[l]:f(l)};this._appendDreamEvent(l,r);break}}},_appendDreamEvent(e,t){if(!e||!t)return;let s=Date.now(),n={...t,at:s},r=Array.isArray(this.yeaftDreamEvents?.[e])?this.yeaftDreamEvents[e]:[],i=l=>[l?.type||"",l?.phase||"",(l?.sessionId??l?.groupId)||"",l?.target||"",l?.ts||l?.at||""].join("|"),o=i(n);if(r.some(l=>i(l)===o))return;let a=[...r,n];a.length>Sp&&a.splice(0,a.length-Sp),this.yeaftDreamEvents={...this.yeaftDreamEvents,[e]:a}},fetchExpertRoleDefinitions(){if(this.expertRoleDefinitions)return;let e=this.currentAgent;e&&this.sendWsMessage({type:"get_expert_roles",agentId:e})},setYeaftSidebarEnabled(e){try{typeof localStorage<"u"&&localStorage.removeItem("yeaft-sidebar-enabled")}catch{}},vpCrudRequest(e,t){(!this._vpCrudPending||typeof this._vpCrudPending.get!="function")&&(this._vpCrudPending=new Map);let s="vpc_"+Date.now().toString(36)+"_"+Math.random().toString(36).slice(2,8),r={create:"yeaft_vp_create",update:"yeaft_vp_update",delete:"yeaft_vp_delete",read:"yeaft_vp_read"}[e];if(!r)return Promise.resolve({ok:!1,op:e,error:{code:"bad_op",message:"unknown op: "+e}});let i={type:r,requestId:s};return e==="create"||e==="update"?i.payload=t||{}:i.vpId=t,new Promise(o=>{let a=setTimeout(()=>{this._vpCrudPending&&this._vpCrudPending.has(s)&&(this._vpCrudPending.delete(s),o({ok:!1,op:e,error:{code:"timeout",message:"vp_crud timeout"}}))},1e4);this._vpCrudPending.set(s,{resolve:l=>{clearTimeout(a),o(l)}}),this.sendWsMessage(i)})},sessionCrudRequest(e,t,s={}){(!this._sessionCrudPending||typeof this._sessionCrudPending.get!="function")&&(this._sessionCrudPending=new Map);let n="grc_"+Date.now().toString(36)+"_"+Math.random().toString(36).slice(2,8),i={list:"yeaft_list_sessions",create:"yeaft_create_session",rename:"yeaft_rename_session",update:"yeaft_update_session",update_config:"yeaft_update_session_config",archive:"yeaft_archive_session",delete:"yeaft_delete_session",add_member:"yeaft_session_add_member",remove_member:"yeaft_session_remove_member",set_default_vp:"yeaft_session_set_default_vp",reorder:"reorder_yeaft_sessions",scan_workdir:"yeaft_scan_workdir_sessions",restore:"yeaft_restore_session"}[e];if(!i)return Promise.resolve({ok:!1,op:e,error:{code:"bad_op",message:"unknown op: "+e}});let o={type:i,requestId:n};e==="create"?o.payload=t||{}:t&&typeof t=="object"&&Object.assign(o,t);let a=s&&s.agentId?s.agentId:null;a&&(o.agentId=a);let l=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();return l&&l.markPending(n,e),new Promise(c=>{let d=setTimeout(()=>{this._sessionCrudPending&&this._sessionCrudPending.has(n)&&(this._sessionCrudPending.delete(n),c({ok:!1,op:e,error:{code:"timeout",message:"group_crud timeout"}}))},1e4);this._sessionCrudPending.set(n,{resolve:u=>{clearTimeout(d),c(u)}}),this.sendWsMessage(o)})},markYeaftSessionUnread(e,t=null){if(!e)return!1;let s=be(this,e,t);if(!s)return!1;let n=li(s,e);return this.currentView==="yeaft"&&this.yeaftActiveSessionFilter===e&&be(this,e)===s||this.yeaftUnreadSessionKeys?.[n]?!1:(this.yeaftUnreadSessionKeys={...this.yeaftUnreadSessionKeys,[n]:!0},!0)},markYeaftSessionRead(e,t=null){if(!e)return!1;let s=be(this,e,t);if(!s)return!1;let n=li(s,e);if(!this.yeaftUnreadSessionKeys?.[n])return!1;let{[n]:r,...i}=this.yeaftUnreadSessionKeys;return this.yeaftUnreadSessionKeys=i,!0},restoreActiveYeaftSessionFromStatuses(e=[],t=null){if(this.yeaftActiveSessionFilter)return null;let n=(Array.isArray(e)?e:[]).filter(o=>o&&(o.sessionId||o.groupId)&&!["idle","offline","completed","failed","aborted"].includes(o.state)).sort((o,a)=>(a.updatedAt||a.since||0)-(o.updatedAt||o.since||0)),r=n[0]?.sessionId||n[0]?.groupId||null;if(!r)return null;let i=t||n[0]?.agentId||Ip(this,r);if(!i)return null;this.setActiveSessionFilter(r,{agentId:i,force:!0});try{let o=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();o&&typeof o.setActive=="function"&&o.setActive(r,i)}catch{}return r},setActiveSessionFilter(e,t={}){let s=this.yeaftActiveSessionFilter||null,n=e||null,r=n?be(this,n,t.agentId||null):this.currentAgent,i=!!n&&n===s&&!!r&&!!this.currentAgent&&r!==this.currentAgent,o=!!t.force||i;if(this.yeaftActiveSessionFilter=n,r&&n&&this.currentAgent!==r){this.selectAgent(r);let l=this.agents.find(c=>c.id===r);this.activateYeaftAgent(r,l||null)}else r&&n&&this.activateYeaftAgent(r);r&&n&&(this.markYeaftSessionRead(n,r),Rc(this,r,n));let a=!o&&n===s;if(r&&n){this.yeaftSessionAgentById={...this.yeaftSessionAgentById||{},[n]:r};let l=this.yeaftConversationIdsByAgent?.[r]||null;l||(l=`yeaft-local-${r}-${Date.now()}`,this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[r]:l}),this.yeaftConversationId=l,this.messagesMap[l]||(this.messagesMap[l]=[]),this.currentView==="yeaft"&&(this.activeConversations=[l])}try{let l=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();l&&typeof l.setActive=="function"&&l.setActive(n,r||null);let c=l?.activeSessionKey||null;c?localStorage.setItem("lastViewedYeaftSession",c):localStorage.removeItem("lastViewedYeaftSession")}catch{}this.syncActiveYeaftHistoryLoad(),this.hydrateYeaftHistoryBrowserCache(n,r,{revalidate:!0})},async switchYeaftModel(e,t=null,s=void 0){if(!e||!this.currentAgent)return;let n=t||null;if(n){let r={model:e};return s!==void 0&&(r.modelEffort=s||null),await this.sessionCrudRequest("update_config",{sessionId:n,config:r},{agentId:be(this,n)})}return this.sendWsMessage({type:"yeaft_model_switch",model:e,modelEffort:s||null,agentId:this.currentAgent}),null},setYeaftDebugSearch(e){this.yeaftDebugSearch=typeof e=="string"?e:"",this._yeaftDebugSearchTimer&&clearTimeout(this._yeaftDebugSearchTimer),this._yeaftDebugSearchTimer=setTimeout(()=>{this._yeaftDebugSearchTimer=null,this.yeaftDebugLoops=[],this.yeaftDebugTurnsById={},this.yeaftDebugTurnOrder=[],this.loadYeaftDebugHistory({limit:this.yeaftDebugSearch.trim()?kp:Ja,dreamLimit:5,indexOnly:!0,search:this.yeaftDebugSearch})},250)},setYeaftDebugSessionFilter(e){e==null?this.yeaftDebugSessionFilter=null:this.yeaftDebugSessionFilter=String(e)},toggleSubAgentCardExpand(e){let t=this.yeaftSubAgentCards?.[e];t&&(this.yeaftSubAgentCards={...this.yeaftSubAgentCards,[e]:{...t,expanded:!t.expanded}})},loadTelemetrySettings(){return this.currentAgent?new Promise(e=>{this._telemetryPending||(this._telemetryPending={}),this._telemetryPending.load=e,this.sendWsMessage({type:"get_telemetry_settings",agentId:this.currentAgent})}):(this.telemetrySettings={enabled:!0,retentionDays:3,flushIntervalMs:1e3,maxQueueSize:5e3,rawExchangeMaxBytes:524288,traceTextMaxBytes:262144,loaded:!0},Promise.resolve(this.telemetrySettings))},updateTelemetrySettings(e){return this.currentAgent?new Promise(t=>{this._telemetryPending||(this._telemetryPending={}),this._telemetryPending.update=t,this.sendWsMessage({type:"update_telemetry_settings",agentId:this.currentAgent,settings:e||{}})}):Promise.resolve({error:"no agent"})},loadSearchSettings(){return this.currentAgent?new Promise(e=>{this._searchPending||(this._searchPending={}),this._searchPending.load=e,this.sendWsMessage({type:"get_search_settings",agentId:this.currentAgent})}):(this.searchSettings={backend:"tavily",tavilyKeyConfigured:!1,tavilyKeyMasked:null,disableHtmlFallback:!1,loaded:!0},Promise.resolve(this.searchSettings))},updateSearchSettings(e){return this.currentAgent?new Promise(t=>{this._searchPending||(this._searchPending={}),this._searchPending.update=t,this.sendWsMessage({type:"update_search_settings",agentId:this.currentAgent,settings:e||{}})}):Promise.resolve({error:"no agent"})},loadTavilyUsage(){return this.currentAgent?(this.tavilyUsageLoading=!0,new Promise(e=>{this._searchPending||(this._searchPending={}),this._searchPending.usage=e,this.sendWsMessage({type:"get_tavily_usage",agentId:this.currentAgent})})):Promise.resolve(null)},loadYeaftMcpServers(){if(!this.currentAgent)return this.yeaftMcpServers=[],this.yeaftMcpRuntime={connected:!1,toolCount:0,perServer:[]},Promise.resolve({servers:[],runtime:this.yeaftMcpRuntime});this.yeaftMcpLoading=!0;let e=`mcp-list-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(t=>{this._mcpPending||(this._mcpPending={}),this._mcpPending[e]=t,this.sendWsMessage({type:"yeaft_mcp_list",agentId:this.currentAgent,requestId:e})})},addYeaftMcpServer(e){if(!this.currentAgent)return Promise.resolve({error:"no agent"});this.yeaftMcpLoading=!0;let t=`mcp-add-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(s=>{this._mcpPending||(this._mcpPending={}),this._mcpPending[t]=s,this.sendWsMessage({type:"yeaft_mcp_add",agentId:this.currentAgent,requestId:t,server:e||{}})})},removeYeaftMcpServer(e){if(!this.currentAgent)return Promise.resolve({error:"no agent"});this.yeaftMcpLoading=!0;let t=`mcp-rem-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(s=>{this._mcpPending||(this._mcpPending={}),this._mcpPending[t]=s,this.sendWsMessage({type:"yeaft_mcp_remove",agentId:this.currentAgent,requestId:t,name:e})})},reloadYeaftMcpServer(e){if(!this.currentAgent)return Promise.resolve({error:"no agent"});this.yeaftMcpLoading=!0;let t=`mcp-rel-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(s=>{this._mcpPending||(this._mcpPending={}),this._mcpPending[t]=s,this.sendWsMessage({type:"yeaft_mcp_reload",agentId:this.currentAgent,requestId:t,name:e||null})})},clearYeaftMessages(){let e=this.yeaftConversationId;e&&(Ce(this,e),delete this.messagesMap[e],delete this.processingConversations[e],delete this.executionStatusMap[e],delete this.refreshingSessionMap[e],this._closedAt&&delete this._closedAt[e],this._turnCompletedConvs?.delete(e)),this.yeaftConversationId=this.currentAgent?`yeaft-local-${this.currentAgent}-${Date.now()}`:`yeaft-local-${Date.now()}`,this.currentAgent&&(this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[this.currentAgent]:this.yeaftConversationId}),this.messagesMap[this.yeaftConversationId]=[],this.activeConversations=[this.yeaftConversationId],this.yeaftSessionReady=!1,this.yeaftModel=null,this.yeaftAvailableModels=[],this.yeaftStatus=null,this._yeaftAskTerminalEvents={},this.yeaftDebugLoops=[],this.yeaftDebugTurnsById={},this.yeaftDebugTurnOrder=[],this.yeaftDebugHistoryLoading=!1,this.yeaftDebugHistoryError=null,this.yeaftDebugHistoryFetchedAt=0,this.yeaftDebugSearch="",this.yeaftDebugSessionFilter=null,this.yeaftDebugPanel={open:!1,status:"idle",requestId:null,agentId:null,sessionId:null,turnId:null,error:null},this._yeaftDebugSearchTimer&&(clearTimeout(this._yeaftDebugSearchTimer),this._yeaftDebugSearchTimer=null),this._fetchYeaftDebugHistoryTimer&&(clearTimeout(this._fetchYeaftDebugHistoryTimer),this._fetchYeaftDebugHistoryTimer=null),this._yeaftDebugHistoryInFlightKey=null,this._yeaftDebugHistoryLatestListRequestId=null,this._yeaftDebugHistoryLatestDetailRequestId=null,this.yeaftReflectionCards={},this.yeaftSubAgentCards={},this.yeaftDreamLatest={},this.yeaftDreamEvents={},this.vpStatuses={},this.currentAgent&&this.sendWsMessage({type:"yeaft_reset",agentId:this.currentAgent})},togglePaneRightPanel(e,t=null){if(t&&this.isSplitMode){let s=this.panels.find(n=>n.id===t);if(s){s.activeRightPanel=s.activeRightPanel===e?null:e;return}}this.activeRightPanel=this.activeRightPanel===e?null:e},getPaneRightPanel(e){if(e&&this.isSplitMode){let t=this.panels.find(s=>s.id===e);if(t)return t.activeRightPanel}return this.activeRightPanel},setPaneRightPanel(e,t){if(e&&this.isSplitMode){let s=this.panels.find(n=>n.id===e);if(s){s.activeRightPanel=t;return}}this.activeRightPanel=t},applySessionCatalogSnapshot(e,t=null,s=null){let n=r=>{let i=new Set;return(Array.isArray(r)?r:[]).filter(o=>!o?.catalogKey||i.has(o.catalogKey)?!1:(i.add(o.catalogKey),!0)).map(o=>({...o}))};if(this.sessionCatalog=n(e),Array.isArray(s)&&(this.hiddenSessionCatalog=n(s)),Array.isArray(t)){this.sessionProjects=t.filter(i=>i?.id).map(i=>({...i,members:Array.isArray(i.members)?i.members.filter(o=>o?.agentId&&o?.sessionId):i.agentId?(i.sessionIds||[]).map(o=>({agentId:i.agentId,sessionId:o})):[]}));let r=new Map;for(let i of this.sessionProjects)for(let o of i.members)r.set(`${o.agentId}${o.sessionId}`,i.id);this.sessionCatalog=this.sessionCatalog.map(i=>i.runtimeProvider==="yeaft"?{...i,projectId:r.get(`${i.routeRef?.agentId}${i.routeRef?.sessionId}`)||null}:i)}this.sessionCatalogLoaded=!0},mutateProject(e,t={},s=null){let n=s||t.agentId||this.currentAgent||null;if(e==="move_session"&&!n)return Promise.resolve({ok:!1,error:{code:"missing_agent"}});let r=`project_${crypto.randomUUID()}`;return new Promise(i=>{let o=setTimeout(()=>{delete this.projectMutationRequests[r],i({ok:!1,error:{code:"timeout"}})},1e4);this.projectMutationRequests[r]={connectionGeneration:Number(this.chatHistoryConnectionGeneration||0),catalogOrder:Array.isArray(t.catalogOrder)?t.catalogOrder:null,resolve:l=>{clearTimeout(o),i(l)}},this.sendWsMessage({type:"yeaft_project_mutation",...n?{agentId:n,targetAgentId:n}:{},requestId:r,op:e,...t})||(clearTimeout(o),delete this.projectMutationRequests[r],i({ok:!1,error:{code:"send_failed"}}))})},applyLegacyProjectSnapshot(e,t){if(!t||!Array.isArray(e))return;let s=this.sessionProjects.filter(r=>r.legacyAgentId!==t),n=e.filter(r=>r?.id).map(r=>({...r,id:`${t}${r.id}`,legacyProjectId:r.id,legacyAgentId:t,members:(r.sessionIds||[]).map(i=>({agentId:t,sessionId:i}))}));this.applySessionCatalogSnapshot(this.sessionCatalog,[...s,...n])},finishLegacyProjectMutation(e,t){if(!e?.requestId)return!1;let s=this.projectMutationRequests[e.requestId]||null;return!s||s.connectionGeneration!==Number(this.chatHistoryConnectionGeneration||0)?!1:(delete this.projectMutationRequests[e.requestId],e.ok&&Array.isArray(e.projects)&&t&&this.applyLegacyProjectSnapshot(e.projects,t),s.resolve(e),!0)},finishProjectMutation(e){if(!e?.requestId)return!1;let t=this.projectMutationRequests[e.requestId]||null;if(!t||t.connectionGeneration!==Number(this.chatHistoryConnectionGeneration||0))return!1;if(delete this.projectMutationRequests[e.requestId],e.ok){if(Array.isArray(t.catalogOrder)){let s=new Map(this.sessionCatalog.map(r=>[r.catalogKey,r])),n=t.catalogOrder.map((r,i)=>{let o=s.get(r?.catalogKey);return o?{...o,sortRank:i}:null}).filter(Boolean);n.length===this.sessionCatalog.length&&(this.sessionCatalog=n,vp(n))}Array.isArray(e.projects)&&this.applySessionCatalogSnapshot(this.sessionCatalog,e.projects)}return t.resolve(e),!0},toggleCatalogSessionPin(e){if(!e?.catalogKey||!e?.routeRef||Object.keys(this.sessionCatalogMutationRequests).length>0)return!1;let t=`session_ui_${crypto.randomUUID()}`,s=er(this,t),n=!e.pinned;return e.pinned=n,this.sendWsMessage({type:"set_session_ui_metadata",requestId:t,catalogKey:e.catalogKey,routeRef:e.routeRef,pinned:n,sortRank:Number.isFinite(e.sortRank)?e.sortRank:null})?!0:(this.sessionCatalog=s,delete this.sessionCatalogMutationRequests[t],!1)},hideCatalogSession(e){if(!e?.catalogKey||!e?.routeRef||Object.keys(this.sessionCatalogMutationRequests).length>0)return!1;let t=`session_hide_${crypto.randomUUID()}`,s=er(this,t);return this.sessionCatalog=this.sessionCatalog.filter(r=>r.catalogKey!==e.catalogKey),this.hiddenSessionCatalog=[...(this.hiddenSessionCatalog||[]).filter(r=>r.catalogKey!==e.catalogKey),{...e,hidden:!0}],this.sendWsMessage({type:"set_session_ui_metadata",requestId:t,catalogKey:e.catalogKey,routeRef:e.routeRef,hidden:!0,...Number.isFinite(e.sortRank)?{sortRank:e.sortRank}:{}})?!0:(this.sessionCatalog=s,this.hiddenSessionCatalog=Array.isArray(this.sessionCatalogMutationRequests[t]?.previousHiddenCatalog)?this.sessionCatalogMutationRequests[t].previousHiddenCatalog:[],delete this.sessionCatalogMutationRequests[t],!1)},restoreCatalogSession(e){if(!e?.catalogKey||!e?.routeRef||Object.keys(this.sessionCatalogMutationRequests).length>0)return!1;let t=`session_restore_${crypto.randomUUID()}`,s=er(this,t);return this.hiddenSessionCatalog=(this.hiddenSessionCatalog||[]).filter(r=>r.catalogKey!==e.catalogKey),this.sessionCatalog=this.sessionCatalog.some(r=>r.catalogKey===e.catalogKey)?this.sessionCatalog:[...this.sessionCatalog,{...e,hidden:!1}],this.sendWsMessage({type:"set_session_ui_metadata",requestId:t,catalogKey:e.catalogKey,routeRef:e.routeRef,hidden:!1,...Number.isFinite(e.sortRank)?{sortRank:e.sortRank}:{}})?!0:(this.sessionCatalog=s,this.hiddenSessionCatalog=Array.isArray(this.sessionCatalogMutationRequests[t]?.previousHiddenCatalog)?this.sessionCatalogMutationRequests[t].previousHiddenCatalog:[],delete this.sessionCatalogMutationRequests[t],!1)},renameCatalogSession({row:e,title:t}={}){if(!e?.routeRef||!t)return!1;let{runtimeProvider:s,agentId:n,sessionId:r}=e.routeRef;if(s==="yeaft")this.sessionCrudRequest("rename",{sessionId:r,name:t},{agentId:n});else if(s==="claude-code"||s==="copilot")this.renameChatSession(r,t,n);else return!1;return!0},reorderCatalogSessions(e){if(!Array.isArray(e)||e.length===0||Object.keys(this.sessionCatalogMutationRequests).length>0)return!1;let t=`session_order_${crypto.randomUUID()}`,s=er(this,t);return this.sessionCatalog=e.map((r,i)=>({...r,sortRank:i})),this.sendWsMessage({type:"reorder_session_catalog",requestId:t,sessions:this.sessionCatalog.map((r,i)=>({catalogKey:r.catalogKey,routeRef:r.routeRef,pinned:!!r.pinned,sortRank:i}))})?!0:(this.sessionCatalog=s,delete this.sessionCatalogMutationRequests[t],!1)},finishSessionCatalogMutation(e){if(!Bc(this,e))return!1;if(e?.ok===!0&&e?.type==="session_ui_metadata_updated"){let s=n=>{n&&(n.pinned=e.pinned===!0,Object.prototype.hasOwnProperty.call(e,"sortRank")&&(n.sortRank=Number.isFinite(e.sortRank)?e.sortRank:null))};s(this.sessionCatalog.find(n=>n.catalogKey===e.catalogKey)),s(this.hiddenSessionCatalog.find(n=>n.catalogKey===e.catalogKey))}return e?.ok===!0&&e?.type==="session_catalog_reorder_result"&&vp(this.sessionCatalog),!0},openCatalogSession(e){if(!e?.catalogKey||!e.routeRef)return!1;let{runtimeProvider:t,agentId:s,sessionId:n}=e.routeRef;if(this.activeCatalogKey=e.catalogKey,t==="yeaft"){let r=this.isSessionHistorySyncing(e.routeRef);return this.enterYeaft(s,{deferBootstrap:!0}),this.setActiveSessionFilter(n,{agentId:s,force:!1}),r||this.reloadYeaftMessages(),!0}return t!=="claude-code"&&t!=="copilot"?!1:(this.currentView==="yeaft"&&this.leaveYeaft(),this.selectConversation(n,s,{refresh:!0}),!0)},syncChatConversationHistory(e){if(!e)return null;let t=os(e);if(this.chatHistoryRequests[t]?.loading)return this.chatHistoryRequests[t].requestId;let s=Ps(this.messagesMap[e]);return this.requestChatHistory(e,s===null?{mode:"recent",turns:5}:{mode:"delta",afterMessageId:s})},requestChatHistory(e,{mode:t="recent",turns:s=null,beforeId:n=null,afterMessageId:r=null}={}){if(!e)return null;let i=os(e);if(this.chatHistoryRequestIdSupported!==!0&&this.chatHistoryRequests[i]?.loading)return null;let o=n??r??null,a=this.beginChatHistoryRequest(e,t,o);return this.sendWsMessage({type:"sync_messages",conversationId:e,...s!=null?{turns:s}:{},...n!=null?{beforeId:n}:{},...r!=null?{afterMessageId:r}:{},requestId:a})?(setTimeout(()=>{aa(this,i,a,"history_load_timeout")},1e4),a):(aa(this,i,a,"send_failed"),null)},beginChatHistoryRequest(e,t="recent",s=null){return Nc(this,e,t,s)},isCurrentChatHistoryResponse(e){if(!e?.conversationId||!e?.requestId||!e?.catalogKey)return!1;let t=os(e.conversationId);if(e.catalogKey!==t)return!1;let s=this.chatHistoryRequests[t];return!!s&&s.loading===!0&&s.requestId===e.requestId&&Number(s.connectionGeneration||0)===Number(this.chatHistoryConnectionGeneration||0)},finishChatHistoryRequest(e){if(!this.isCurrentChatHistoryResponse(e))return!1;let t=this.chatHistoryRequests[e.catalogKey];return this.chatHistoryRequests[e.catalogKey]={...t,loading:!1},!0},isRefreshingSession(e){return e?!!this.refreshingSessionMap[e]:this.refreshingSession},setRefreshingSession(e,t){e&&(this.refreshingSessionMap[e]=t),this.refreshingSession=t},enterBtwMode(){this.btwMode=!0,this.btwMessages=[],this.btwLoading=!1,this.btwSessionId=null},sendBtwQuestion(e){this.currentConversation&&(this.btwMessages.push({role:"user",content:e}),this.btwMessages.push({role:"assistant",content:""}),this.btwLoading=!0,this.sendWsMessage({type:"btw_question",conversationId:this.currentConversation,question:e,btwSessionId:this.btwSessionId}))},closeBtw(){this.btwMode=!1,this.btwMessages=[],this.btwLoading=!1,this.btwSessionId=null},appendBtwDelta(e){let t=this.btwMessages[this.btwMessages.length-1];t&&t.role==="assistant"&&(t.content+=e)},addSubagent(e,t){this.subagents[e]||(this.subagents[e]={}),this.subagents[e][t.id]={id:t.id,slug:t.slug||t.id,type:t.type||"Task",description:t.description||"",parentToolUseId:t.parentToolUseId||null,status:"running",startTime:Date.now(),messages:[],toolCallCount:0},e===this.currentConversation&&this.activeRightPanel!=="subagents"&&(this.activeRightPanel="subagents")},appendSubagentMessage(e,t,s){let n=this.subagents[e];if(!n||!n[t])return;let r=n[t];if(s?.type==="tool"){r.toolCallCount=Number(r.toolCallCount||0)+1;return}s?.type==="text"&&r.messages.push(s)},completeSubagent(e,t){let s=this.subagents[e];!s||!s[t]||(s[t].status="completed")},sendWsMessage(e){return id(this,e)},parseWsMessage(e){return od(this,e)},connect(){ad(this)},ensureConnected(){return nr(this)},scheduleReconnect(){ld(this)},manualReconnect(){cd(this)},startHeartbeat(){dd(this)},stopHeartbeat(){ud(this)},setupVisibilityHandler(){pd(this)},handleMessage(e){iu(this,e)},getOrCreateExecutionStatus(e){return Pa(this,e)},handleAssistantOutputFrame(e,t,s=null){Yd(this,e,t,s)},handleClaudeOutput(e,t){this.handleAssistantOutputFrame(e,t,null)},addMessageToConversation(e,t){return di(this,e,t)},pruneConversationMessageRetention(e,t=null,s=null,n=void 0){return Mc(this,{conversationId:e,sessionId:t,agentId:s,limits:n})},appendToAssistantMessageForConversation(e,t,s){wd(this,e,t,s)},finishStreamingForConversation(e,t){kd(this,e,t)},sweepStaleStreamingForConversation(e){Sd(this,e)},appendToAssistantMessage(e){this.appendToAssistantMessageForConversation(this.currentConversation,e)},finishStreaming(){this.finishStreamingForConversation(this.currentConversation)},addMessage(e){this.addMessageToConversation(this.currentConversation,e)},loadHistoryMessages(e){Id(this,e)},formatDbMessage(e){return ya(e)},formatDbMessageForHistoryHydration(e){return Ad(e)},selectAgent(e){return fu(this,e)},createConversation(e,t=null,s=null,n=void 0){gu(this,e,t,s,n)},resumeConversation(e,t,s=null,n=null,r=null){mu(this,e,t,s,n,r)},selectConversation(e,t,s={}){hu(this,e,t,s)},updateConversationSettings(e,t){$a(this,e,t)},toggleConversationMcp(e,t){vu(this,e,t)},deleteConversation(e,t){bu(this,e,t)},closeSession(e,t){yu(this,e,t)},appendColumn(e){Iu(this,e)},removeColumn(e){Cu(this,e)},sendMessageToConversation(e,t,s=[],n={}){Au(this,e,t,s,n)},cancelExecutionForConversation(e){xu(this,e)},addPanel(){if(this.panels.length>=3)return;let e=(t,s)=>({id:t,conversationId:s,activeRightPanel:null});if(this.panels.length===0){let t=localStorage.getItem("splitPanesSaved");if(t){try{let s=JSON.parse(t);if(Array.isArray(s)&&s.length>=2){let n=new Set(this.conversations.map(i=>i.id)),r=s.filter(i=>i&&typeof i.id=="string").map(i=>({...e(i.id,null),conversationId:i.conversationId&&n.has(i.conversationId)?i.conversationId:null}));if(r.length>=2){this.panels=r,this.activePanelId=r[0].id;for(let i of r)i.conversationId&&!this.activeConversations.includes(i.conversationId)&&this.activeConversations.push(i.conversationId),i.conversationId&&!this.messagesMap[i.conversationId]&&(this.messagesMap[i.conversationId]=[],this.requestChatHistory(i.conversationId,{mode:"recent",turns:5}));localStorage.removeItem("splitPanesSaved"),this.saveOpenSessions();return}}}catch{}localStorage.removeItem("splitPanesSaved")}this.panels=[e("panel-0",this.currentConversation),e("panel-1",null)],this.activePanelId="panel-0"}else{let t="panel-"+Date.now();this.panels.push(e(t,null))}this.saveOpenSessions()},removePanel(e){let t=this.panels.findIndex(s=>s.id===e);if(!(t<0)){if(this.panels.splice(t,1),this.panels.length<=1){let s=this.panels[0];s?.conversationId&&(this.activeConversations=[s.conversationId]),this.panels=[],this.activePanelId=null}else this.activePanelId===e&&(this.activePanelId=this.panels[0]?.id||null);this.saveOpenSessions()}},setPanelConversation(e,t,{refresh:s=!1}={}){let n=this.panels.find(i=>i.id===e);if(!n)return;let r=n.conversationId===t;n.conversationId=t,t&&!this.activeConversations.includes(t)&&this.activeConversations.push(t),t&&!this.messagesMap[t]?(this.messagesMap[t]=[],this.syncChatConversationHistory(t)):t&&(s||!r)&&this.syncChatConversationHistory(t),this.saveOpenSessions()},setActivePanel(e){this.activePanelId=e},splitToPanel(e){if(!e)return;let t=(s,n)=>({id:s,conversationId:n,activeRightPanel:null});if(this.panels.length===0)this.panels=[t("panel-0",this.currentConversation),t("panel-"+Date.now(),e)],this.activePanelId=this.panels[1].id;else if(this.panels.length>=3)this.panels[this.panels.length-1].conversationId=e,this.activePanelId=this.panels[this.panels.length-1].id;else{let s="panel-"+Date.now();this.panels.push(t(s,e)),this.activePanelId=s}this.activeConversations.includes(e)||this.activeConversations.push(e),this.messagesMap[e]||(this.messagesMap[e]=[],this.requestChatHistory(e,{mode:"recent",turns:5})),this.saveOpenSessions()},isInAnyPanel(e){return this.panels.some(t=>t.conversationId===e)},setSessionPinned(e,t,s={}){if(!e)return;let n=s&&s.agentId?s.agentId:null,r=n?!!ds()?.sessionById?.(e,n)?.pinned:this.pinnedSessions.includes(e);if(t&&!r)this.pinnedSessions.unshift(e);else if(!t&&r){let i=this.pinnedSessions.indexOf(e);i>=0&&this.pinnedSessions.splice(i,1)}try{localStorage.setItem("pinned-sessions",JSON.stringify(this.pinnedSessions))}catch{}try{let i=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore(),o=be(this,e,n);i&&typeof i.applyPinState=="function"&&i.applyPinState(e,!!t,o)}catch{}},togglePin(e,t={}){let s=t&&t.agentId?t.agentId:null,n=s?ds()?.sessionById?.(e,s):null,r=t&&Object.prototype.hasOwnProperty.call(t,"pinned"),o=!(n?!!n.pinned:r?!!t.pinned:this.pinnedSessions.includes(e));this.setSessionPinned(e,o,{agentId:s});let a={type:o?"pin_session":"unpin_session",conversationId:e};t&&t.sessionKind==="yeaft"&&(a.sessionKind="yeaft",t.agentId&&(a.agentId=t.agentId),t.sessionName&&(a.sessionName=t.sessionName),t.workDir&&(a.workDir=t.workDir)),this.sendWsMessage(a)},isSessionPinned(e){return this.pinnedSessions.includes(e)},applyServerPinSnapshot(e,t,s){if(!Array.isArray(this.pinnedSessions))return;let n=new Set(this.pinnedSessions),r=[];for(let i of t)n.has(i)||r.push(i);if(r.length>0&&(this.pinnedSessions=[...r,...this.pinnedSessions]),e){let i=this.pinnedSessions.filter(o=>s(o)?t.has(o):!0);i.length!==this.pinnedSessions.length&&(this.pinnedSessions=i)}try{localStorage.setItem("pinned-sessions",JSON.stringify(this.pinnedSessions))}catch{}},clearYeaftSessionProcessingIfIdle(e,{agentId:t=null,ignoreStatuses:s=!1}={}){if(!e)return;let n=t||be(this,e);if(Object.values(this.activeVpTurns||{}).some(a=>nt(a,e,n))||!s&&Object.values(this.vpStatuses||{}).some(l=>nt(l,e,n)&&kr.has(l?.state)))return;let i=It(n,e),o={...this.yeaftProcessingSessions||{}};i&&delete o[i],Mi(this,e,n)&&delete o[e],this.yeaftProcessingSessions=o},sendMessage(e,t=[],s={}){wu(this,e,t,s)},cancelExecution(){ku(this)},cancelYeaft(){if(!this.currentAgent)return;this.sendWsMessage({type:"yeaft_abort_all",agentId:this.currentAgent});let e=this.yeaftConversationIdsByAgent?.[this.currentAgent]||this.yeaftConversationId;e&&delete this.processingConversations[e],lp(this,this.currentAgent)},cancelYeaftSession(e){let t=be(this,e);!t||!e||(this.sendWsMessage({type:"yeaft_abort_all",agentId:t,sessionId:e}),this.activeVpTurns=Object.fromEntries(Object.entries(this.activeVpTurns||{}).filter(([,s])=>!nt(s,e,t))),this.stoppingVpTurnIds=Object.fromEntries(Object.entries(this.stoppingVpTurnIds||{}).filter(([s])=>this.activeVpTurns?.[s])),this.vpStatuses=Object.fromEntries(Object.entries(this.vpStatuses||{}).filter(([,s])=>!nt(s,e,t))),this.clearYeaftSessionProcessingIfIdle(e,{agentId:t,ignoreStatuses:!0}))},cancelVpTurn(e,{sessionId:t=null,vpId:s=null}={}){let n=be(this,t);if(!n||!e)return;let r=hn(this,n,e);this.stoppingVpTurnIds={...this.stoppingVpTurnIds,[r]:Date.now()};let i={type:"yeaft_abort_turn",agentId:n,turnId:e};t&&(i.sessionId=t),s&&(i.vpId=s),this.sendWsMessage(i)},cancelVpTurnForSession(e,t=null){if(!e)return!1;let s=t||this.yeaftActiveSessionFilter||null;if(!s)return!1;let n=be(this,s);if(!n)return!1;let r=this.activeVpTurns||{},i=null,o=-1/0;for(let[a,l]of Object.entries(r)){if(!l||l.vpId!==e||!nt(l,s,n))continue;let c=typeof l.startedAt=="number"?l.startedAt:0;c>=o&&(o=c,i=a)}if(!i){let a=this.vpStatuses?.[Ai(n,s,e)]||null;a?.turnId&&!["idle","offline"].includes(a.state)&&(i=a.turnId)}if(i){let a=r[i]?.turnId||i;return this.cancelVpTurn(a,{sessionId:s,vpId:e}),!0}return this.sendWsMessage({type:"yeaft_abort_turn",agentId:n,sessionId:s,vpId:e}),!0},answerUserQuestion(e,t,s){Su(this,e,t,s)},refreshAgents(){Tu(this)},refreshConversation(){Mu(this)},restartAgent(e){Pu(this,e)},upgradeAgent(e){Ru(this,e)},loadMoreMessages(){if(this.currentView==="yeaft"||this.loadingMoreMessages||!this.hasMoreMessages||!this.currentConversation)return;this.loadingMoreMessages=!0;let e=this._loadMoreGeneration=(this._loadMoreGeneration||0)+1,s=(this.messagesMap[this.currentConversation]||[]).find(i=>i.dbMessageId),n=this.currentConversation,r=s?.dbMessageId??null;this.requestChatHistory(n,{mode:"older",turns:5,beforeId:r}),setTimeout(()=>{this._loadMoreGeneration===e&&this.loadingMoreMessages&&this.currentConversation===n&&(this.loadingMoreMessages=!1)},1e4)},reloadYeaftMessages(){if(this.currentView!=="yeaft")return!1;let e=Fs(this),t=be(this,e);if(!t)return!1;let s=he(t,e),n=this.yeaftConversationId,r=this.yeaftSessionHistoryState?.[s];if(r?.loading)return r.requestId||!1;let i=this.beginYeaftHistoryLoad({agentId:t,sessionId:e,mode:"recent",preserveLoaded:!1});if(!i)return!1;let o=_s();this.yeaftHistoryPerfTraceBySession={...this.yeaftHistoryPerfTraceBySession||{},[s]:o};let a={type:"yeaft_load_history",agentId:t,limit:xi,sessionId:e,requestId:i.requestId,perfTraceId:o};return Ge(this,{traceId:o,phase:"history.request_send",agentId:t,sessionId:e,messageType:a.type,bytes:JSON.stringify(a).length,detail:{mode:"manual-reload",limit:xi}}),this.sendWsMessage(a)?!0:(Un(this,{agentId:t,sessionId:e,requestId:i.requestId,error:"history_load_send_failed"}),!1)},loadMoreYeaftHistory(e=br()){if(this.currentView!=="yeaft"||this.yeaftLoadingMoreHistory||!this.yeaftHasMoreHistory)return;let t=Fs(this),s=be(this,t);if(!s)return;let n=Math.min(50,Math.max(1,Number.isFinite(e)?Math.floor(e):br())),r=he(s,t),i=this.yeaftHistoryCacheState?.[r]?.ranges||[],o=this.yeaftSessionHistoryState?.[r]||{},a=Number(this.yeaftHistoryCacheState?.[r]?.rangeEpoch)||0,l=Pd(o,i,a);if(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState||{},[r]:l.state},!l.request){this.syncActiveYeaftHistoryLoad();return}let c=this.beginYeaftHistoryLoad({agentId:s,sessionId:t,mode:"older",preserveLoaded:!0,latestSeq:this.yeaftSessionHistoryState[r]?.latestSeq??null});if(!c)return;let d=_s();this.yeaftHistoryPerfTraceBySession={...this.yeaftHistoryPerfTraceBySession||{},[r]:d};let u={type:"yeaft_load_more_history",agentId:s,sessionId:t,requestId:c.requestId,beforeSeq:l.request.beforeSeq,pageKind:l.request.kind,gapStopAtSeq:l.request.stopAtSeq,cacheEpoch:l.request.cacheEpoch,turns:n,perfTraceId:d};Ge(this,{traceId:d,phase:"history_more.request_send",agentId:s,sessionId:t,messageType:u.type,bytes:JSON.stringify(u).length,detail:{beforeSeq:u.beforeSeq,turns:u.turns,pageKind:l.request.kind,gapStopAtSeq:l.request.stopAtSeq}}),this.sendWsMessage(u)},checkPendingRecovery(){qc(this)},performRecovery(){Wc(this)},dismissRecovery(){jc(this)},autoRestoreConversation(e){Uc(this,e)},saveOpenSessions(){xs(this)},getLastSession(){return zc(this)},clearLastSession(){Yc(this)},listHistorySessions(e){Gc(this,e)},listFolders(){return Qc(this)},listFoldersForAgent(e,t){return Zc(this,e,t)},listModelsForAgent(e,t){return Xc(this,e,t)},listHistorySessionsForAgent(e,t,s){Jc(this,e,t,s)},async loadGlobalSessions(e=20){return ed(this,e)},async deleteGlobalSession(e){return td(this,e)},findAgentForSession(e){return ca(this,e)},isSessionResumable(e){return sd(this,e)},_isRecentlyClosed(e){return Rs(this,e)},_startProcessingWatchdog(e){an(this,e)},_resetProcessingWatchdog(e){pi(this,e)},_stopProcessingWatchdog(e){Ce(this,e)},startRefreshTimeout(e){let t=e||this.currentConversation;t&&(this._refreshTimeouts||(this._refreshTimeouts={}),this._refreshTimeouts[t]&&clearTimeout(this._refreshTimeouts[t]),this._refreshTimeouts[t]=setTimeout(()=>{this.setRefreshingSession(t,!1),delete this._refreshTimeouts[t]},1e4))},toggleTheme(){this.theme=this.theme==="dark"?"light":"dark",this.themeFollowSystem=!1,localStorage.setItem("theme",this.theme),document.documentElement.setAttribute("data-theme",this.theme),document.documentElement.classList.toggle("light",this.theme==="light")},initTheme(){if(document.documentElement.setAttribute("data-theme",this.theme),document.documentElement.classList.toggle("light",this.theme==="light"),this.themeFollowSystem&&typeof window<"u"&&window.matchMedia){let e=window.matchMedia("(prefers-color-scheme: dark)"),t=s=>{this.themeFollowSystem&&(this.theme=s.matches?"dark":"light",document.documentElement.setAttribute("data-theme",this.theme),document.documentElement.classList.toggle("light",this.theme==="light"))};e.addEventListener?e.addEventListener("change",t):e.addListener&&e.addListener(t)}},loadModelsDevRegistry({forceRefresh:e=!1}={}){let t=this.modelsDevRegistry.loaded&&!this.modelsDevRegistry.error&&Date.now()-this.modelsDevRegistry.fetchedAt<36e5;if(!e&&t)return Promise.resolve(this.modelsDevRegistry);let s=this.currentAgent;if(!s)return Promise.resolve(this.modelsDevRegistry);if(this._modelsDevPending&&(!e||this._modelsDevPending.force))return new Promise(n=>this._modelsDevPending.resolvers.push(n));if(this._modelsDevPending){let n=this._modelsDevPending;this._modelsDevPending=null,n.timer&&clearTimeout(n.timer);for(let r of n.resolvers)r(this.modelsDevRegistry)}return new Promise(n=>{let r={resolvers:[n],force:e,timer:null};this._modelsDevPending=r;try{this.sendWsMessage({type:"get_models_dev_registry",agentId:s,forceRefresh:e})}catch{this._modelsDevPending===r&&(this._modelsDevPending=null),n(this.modelsDevRegistry);return}r.timer=setTimeout(()=>{if(this._modelsDevPending===r){this._modelsDevPending=null;for(let i of r.resolvers)i(this.modelsDevRegistry)}},2e4)})},changeLocale(e){if(this.locale=e,Jn(e),this.currentAgent)try{this.sendWsMessage({type:"update_llm_config",agentId:this.currentAgent,config:{language:e}})}catch{}},async fetchCustomExpertRoles(){let e=De();try{let t={};e.token&&(t.Authorization=`Bearer ${e.token}`);let s=await fetch("/api/expert-roles/custom",{headers:t});if(s.ok){let n=await s.json();this.customExpertRoles=n.roles||[]}}catch{}},async createCustomExpertRole(e){let t=De();try{let s={"Content-Type":"application/json"};t.token&&(s.Authorization=`Bearer ${t.token}`);let n=await fetch("/api/expert-roles/custom",{method:"POST",headers:s,body:JSON.stringify(e)});if(n.ok){let r=await n.json();return this.customExpertRoles.push(r.role),r.role}else{let r=await n.json().catch(()=>({}));throw new Error(r.error||"Failed to create custom expert role")}}catch(s){throw s}},async updateCustomExpertRole(e,t){let s=De();try{let n={"Content-Type":"application/json"};s.token&&(n.Authorization=`Bearer ${s.token}`);let r=await fetch(`/api/expert-roles/custom/${e}`,{method:"PUT",headers:n,body:JSON.stringify(t)});if(r.ok){let i=await r.json(),o=this.customExpertRoles.findIndex(a=>a.id===e);return o!==-1&&(this.customExpertRoles[o]=i.role),i.role}else{let i=await r.json().catch(()=>({}));throw new Error(i.error||"Failed to update custom expert role")}}catch(n){throw n}},async deleteCustomExpertRole(e){let t=De();try{let s={};t.token&&(s.Authorization=`Bearer ${t.token}`);let n=await fetch(`/api/expert-roles/custom/${e}`,{method:"DELETE",headers:s});if(n.ok)return this.customExpertRoles=this.customExpertRoles.filter(r=>r.id!==e),!0;{let r=await n.json().catch(()=>({}));throw new Error(r.error||"Failed to delete custom expert role")}}catch(s){throw s}},toggleWorkbench(){this.workbenchExpanded=!this.workbenchExpanded,this.workbenchExpanded||(this.workbenchMaximized=!1)},toggleSidebar(){this.sidebarCollapsed=!this.sidebarCollapsed},toggleSessionSidebar(){this.sessionSidebarOpen=!this.sessionSidebarOpen},closeSessionSidebar(){this.sessionSidebarOpen=!1},toggleWorkbenchMaximized(){this.workbenchMaximized=!this.workbenchMaximized},renameChatSession(e,t,s=null){let n=t&&t.trim()?t.trim():"";n?this.customConversationTitles[e]=n:delete this.customConversationTitles[e],this.sendWsMessage({type:"update_conversation_settings",conversationId:e,...s?{agentId:s}:{},title:n})},openFileInExplorer(e){this.currentConversation&&(this.workbenchExpanded=!0,window.dispatchEvent(new CustomEvent("open-file-in-explorer",{detail:{filePath:e,conversationId:this.currentConversation}})))},logout(){De().logout(),this.authenticated=!1,this.sessionKey=null,this.agents=[],this.currentAgent=null,this.currentAgentInfo=null,this.yeaftStatusByAgent={},this._yeaftRetiredCatalogEpochsByAgent={},this.conversations=[],this.activeConversations=[],this.messagesMap={},this.conversationTitles={},this.customConversationTitles={},this.processingConversations={},this.executionStatusMap={},this.workbenchExpanded=!1,this.subagents={},this.activeSubagentId=null,this.activeRightPanel=null,this.pinnedSessions=[],this.clearWorkCenterBrowserState(),this.ws&&this.ws.close()}}})});function tl(e,t){!e||typeof e.handleYeaftOutput!="function"||!t||e.handleYeaftOutput({event:t})}function $y(e){let t=String(e||""),s=2166136261;for(let n=0;n<t.length;n++)s^=t.charCodeAt(n),s=Math.imul(s,16777619)>>>0;return s>>>0}function nl(e){if(!e)return us[0];let t=String(e).toLowerCase();return Ly[t]||us[$y(t)%us.length]}function Vy(e){return nl(e).background}function Hy(e){return nl(e).foreground}function sl(){let e=typeof window<"u"&&window.Pinia&&window.Pinia.useChatStore?window.Pinia.useChatStore():null;return e&&typeof e.locale=="string"?e.locale:typeof localStorage<"u"&&localStorage.getItem("locale")||""}function Oy(e,t=""){return e?String(t||"").startsWith("zh")?e.descriptionZh||e.roleZh||e.description||e.role||"":e.description||e.role||e.descriptionZh||e.roleZh||"":""}var Dy,us,Ly,NS,_t,vn=N(()=>{({defineStore:Dy}=Pinia);us=[{key:"rat",label:"Rat",glyph:"R",background:"var(--vp-avatar-rat-bg)",foreground:"var(--vp-avatar-rat-fg)"},{key:"ox",label:"Ox",glyph:"O",background:"var(--vp-avatar-ox-bg)",foreground:"var(--vp-avatar-ox-fg)"},{key:"tiger",label:"Tiger",glyph:"T",background:"var(--vp-avatar-tiger-bg)",foreground:"var(--vp-avatar-tiger-fg)"},{key:"rabbit",label:"Rabbit",glyph:"B",background:"var(--vp-avatar-rabbit-bg)",foreground:"var(--vp-avatar-rabbit-fg)"},{key:"dragon",label:"Dragon",glyph:"D",background:"var(--vp-avatar-dragon-bg)",foreground:"var(--vp-avatar-dragon-fg)"},{key:"snake",label:"Snake",glyph:"S",background:"var(--vp-avatar-snake-bg)",foreground:"var(--vp-avatar-snake-fg)"},{key:"horse",label:"Horse",glyph:"H",background:"var(--vp-avatar-horse-bg)",foreground:"var(--vp-avatar-horse-fg)"},{key:"goat",label:"Goat",glyph:"G",background:"var(--vp-avatar-goat-bg)",foreground:"var(--vp-avatar-goat-fg)"},{key:"monkey",label:"Monkey",glyph:"M",background:"var(--vp-avatar-monkey-bg)",foreground:"var(--vp-avatar-monkey-fg)"},{key:"rooster",label:"Rooster",glyph:"K",background:"var(--vp-avatar-rooster-bg)",foreground:"var(--vp-avatar-rooster-fg)"},{key:"dog",label:"Dog",glyph:"D",background:"var(--vp-avatar-dog-bg)",foreground:"var(--vp-avatar-dog-fg)"},{key:"pig",label:"Pig",glyph:"P",background:"var(--vp-avatar-pig-bg)",foreground:"var(--vp-avatar-pig-fg)"}],Ly=Object.freeze({steve:us[8],ada:us[3],linus:us[0],martin:us[4]}),NS=us.map(e=>e.background);_t=Dy("vp",{state:()=>({vps:{},vpOrder:[],emptyLibrary:!1,lastSnapshotAt:0,snapshotStatus:"idle",snapshotAgentId:null,snapshotRequestId:null,snapshotError:"",lastVpSnapshotAgentId:null,lastChange:null,dreamStatus:{},groupDreamStatus:{}}),getters:{vpList(e){return e.vpOrder.map(t=>e.vps[t]).filter(Boolean)},vpCount(e){return e.vpOrder.length},vpById:e=>t=>e.vps[t]||null,vpLabel:e=>t=>{let s=e.vps[t];return s?sl().startsWith("zh")&&s.displayNameZh?s.displayNameZh:s.displayName||s.vpId||t:t},vpDescription:e=>t=>Oy(e.vps[t],sl()),vpInitial:e=>t=>{let s=e.vps[t],n=sl().startsWith("zh"),r=s&&(s.avatar||n&&s.displayNameZh||s.displayName||s.vpId)||t||"?";return String(r).charAt(0).toUpperCase()||"?"},vpColor:e=>t=>{let s=e.vps[t];return s&&s.color?s.color:Vy(t)},vpTextColor:()=>e=>Hy(e),vpAvatarMotif:()=>e=>nl(e),dreamStatusFor:e=>t=>e.dreamStatus[t]||{status:"idle",lastRunAt:null,lastResult:null,lastError:null},groupDreamStatusFor:e=>t=>e.groupDreamStatus[t]||{status:"idle",lastRunAt:null,lastResult:null,lastError:null}},actions:{applySnapshot(e,t=null,s=null){let n=this.snapshotAgentId||null;if(n&&t&&t!==n||s&&this.snapshotRequestId&&s!==this.snapshotRequestId)return!1;let r=e&&Array.isArray(e.vps)?e.vps:[];return this._setActiveSnapshot({vps:r,emptyLibrary:!!(e&&e.emptyLibrary),agentId:t||n||null,requestId:s||this.snapshotRequestId||null,receivedAt:Date.now()}),!0},beginSnapshot(e,t){this.vps={},this.vpOrder=[],this.emptyLibrary=!1,this.lastVpSnapshotAgentId=null,this.snapshotStatus="loading",this.snapshotAgentId=e||null,this.snapshotRequestId=t||null,this.snapshotError=""},failSnapshot(e,t,s=""){return!this.snapshotRequestId||!t||t!==this.snapshotRequestId||e&&this.snapshotAgentId&&e!==this.snapshotAgentId?!1:(this.snapshotStatus="error",this.snapshotAgentId=e||this.snapshotAgentId||null,this.snapshotRequestId=t||this.snapshotRequestId||null,this.snapshotError=String(s||"VP library request failed"),!0)},_setActiveSnapshot({vps:e,emptyLibrary:t,agentId:s,requestId:n,receivedAt:r}){this.vps={},this.vpOrder=[];for(let i of e||[])this._upsertInternal(i);this.emptyLibrary=!!t,this.lastSnapshotAt=r||Date.now(),this.lastVpSnapshotAgentId=s||null,this.snapshotStatus="ready",this.snapshotAgentId=s||null,this.snapshotRequestId=n||null,this.snapshotError=""},upsert(e,t=null,s=null){return s&&this.snapshotAgentId&&s!==this.snapshotAgentId?!1:(this._upsertInternal(e),e&&e.vpId&&(this.lastChange={vpId:e.vpId,kind:"updated",reason:t||null,at:Date.now()}),!0)},remove(e,t=null,s=null){return s&&this.snapshotAgentId&&s!==this.snapshotAgentId||!e?!1:(delete this.vps[e],this.vpOrder=this.vpOrder.filter(n=>n!==e),this.lastChange={vpId:e,kind:"removed",reason:t||"file.removed",at:Date.now()},!0)},_upsertInternal(e){if(!e||!e.vpId)return;let t=!!this.vps[e.vpId];this.vps[e.vpId]={...this.vps[e.vpId]||{},...e},t||this.vpOrder.push(e.vpId),this.emptyLibrary&&(this.emptyLibrary=!1)},triggerDream(e){if(!e)return;this.dreamStatus={...this.dreamStatus,[e]:{...this.dreamStatus[e]||{},status:"running",lastError:null}};let t=window.Pinia&&window.Pinia.useChatStore?window.Pinia.useChatStore():null;t&&typeof t.sendWsMessage=="function"&&t.sendWsMessage({type:"yeaft_dream_trigger",vpId:e})},triggerGroupDream(e,t={}){if(!e)return;this.groupDreamStatus={...this.groupDreamStatus,[e]:{...this.groupDreamStatus[e]||{},status:"running",lastError:null}};let s=window.Pinia&&window.Pinia.useChatStore?window.Pinia.useChatStore():null,n=Date.now();if(tl(s,{type:"dream_progress",phase:"start",groupId:e,manual:!0,trigger:"manual",source:"header-button",ts:n}),!s||typeof s.sendWsMessage!="function"){tl(s,{type:"yeaft_dream_result",groupId:e,success:!1,skipped:!0,skippedReason:"chat-store-unavailable",trigger:"manual",error:null});return}let r={type:"yeaft_dream_trigger",sessionId:e},i=t&&t.agentId?t.agentId:typeof s.agentIdForSession=="function"?s.agentIdForSession(e):s.currentAgent;i&&(r.agentId=i),s.sendWsMessage(r)===!1&&tl(s,{type:"yeaft_dream_result",groupId:e,success:!1,skipped:!0,skippedReason:"websocket-not-open",trigger:"manual",error:null})},applyDreamStatus(e){if(!e)return;let t=e.sessionId;if(t){this.groupDreamStatus={...this.groupDreamStatus,[t]:{...this.groupDreamStatus[t]||{},status:e.status==="running"?"running":e.status||"idle"}};return}if(!e.vpId)return;let s=e.vpId;this.dreamStatus={...this.dreamStatus,[s]:{...this.dreamStatus[s]||{},status:e.status==="running"?"running":e.status||"idle"}}},applyDreamResult(e){if(!e)return;let t=!!e.success,s=!!e.skipped,n={mergedCount:e.mergedCount??null,extractedCount:e.extractedCount??null,entriesCreated:typeof e.entriesCreated=="number"?e.entriesCreated:e.mergedCount??e.extractedCount??0,skipped:s,skippedReason:e.skippedReason||null,sessionsProcessed:typeof e.sessionsProcessed=="number"?e.sessionsProcessed:null,sessionsSkipped:typeof e.sessionsSkipped=="number"?e.sessionsSkipped:null,targetsApplied:typeof e.targetsApplied=="number"?e.targetsApplied:null,durationMs:typeof e.durationMs=="number"?e.durationMs:null,llmCallCount:typeof e.llmCallCount=="number"?e.llmCallCount:0,inputTokens:typeof e.inputTokens=="number"?e.inputTokens:0,outputTokens:typeof e.outputTokens=="number"?e.outputTokens:0,totalTokens:typeof e.totalTokens=="number"?e.totalTokens:0,metrics:e.metrics||null,passBreakdown:e.passBreakdown||e.metrics?.passBreakdown||null,targetErrors:Array.isArray(e.targetErrors)?e.targetErrors:[]},r=t||s?null:e.error||null,i=s?"skipped":t?"success":"error",o=e.sessionId;if(o){this.groupDreamStatus={...this.groupDreamStatus,[o]:{status:i,lastRunAt:Date.now(),lastResult:n,lastError:r}};return}if(!e.vpId)return;let a=e.vpId;this.dreamStatus={...this.dreamStatus,[a]:{status:i,lastRunAt:Date.now(),lastResult:n,lastError:r}}}}})});function rl(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"&&e){let t=Date.parse(e);if(Number.isFinite(t))return t}return 0}function Ri(e){return!e||typeof e!="object"?0:rl(e.lastMessageAt)||rl(e.updatedAt)||rl(e.createdAt)||0}function il(e,t){let s=Ri(t)-Ri(e);return s!==0?s:String(e?.id||"").localeCompare(String(t?.id||""))}function xp(e){return[...Array.isArray(e)?e:[]].sort(il)}var _i=N(()=>{});function Tp(){try{if(typeof localStorage>"u")return{};let e=JSON.parse(localStorage.getItem(_p)||"{}");return e&&typeof e=="object"?e:{}}catch{return{}}}function Fy(e){try{typeof localStorage<"u"&&localStorage.setItem(_p,JSON.stringify(e&&typeof e=="object"?e:{}))}catch{}}function Mp(){try{return typeof localStorage>"u"?[]:Sr(JSON.parse(localStorage.getItem(Ep)||"[]"))}catch{return[]}}function By(e){try{typeof localStorage<"u"&&localStorage.setItem(Ep,JSON.stringify(Sr(e)))}catch{}}function Dp(e,t){return`${e||""}${t||""}`}function jt(e){return e&&e.agentId&&e.id?Dp(e.agentId,e.id):""}function Et(e,t){return t?e?Dp(e,t):String(t):""}function Ny(e){return typeof e=="string"?e:String(e||"")}function ut(e,t,s=null){let n=Ny(t);if(!n)return"";let r=Et(s,n),i=r?e.sessions[r]:null;if(i&&(s||i.agentId||e.inventoryIdentityMode==="legacy-bare"))return r;if(s){let c=e.sessions[n];return e.inventoryIdentityMode==="legacy-bare"&&c&&!c.agentId?n:""}let o=e.sessions[n];if(o){if(o.agentId||e.inventoryIdentityMode==="legacy-bare")return n;let c=e.activeSessionKey?e.sessions[e.activeSessionKey]:null;return c?.agentId&&c.id===n?e.activeSessionKey:""}if(e.activeSessionKey&&e.sessions[e.activeSessionKey]?.id===n)return e.activeSessionKey;let a=e.sessionOrder.filter(c=>e.sessions[c]?.id===n),l=Ir();if(l?.currentAgent){let c=a.find(d=>e.sessions[d]?.agentId===l.currentAgent);if(c)return c}return a[0]||""}function ol(e,t,s=null){return ut(e,t,s)||""}function al(e){if(e.inventoryIdentityMode==="legacy-bare"){let t=e.activeSessionKey?e.sessions[e.activeSessionKey]:null,s=t&&!t.agentId?t:e.activeSessionId?e.sessions[e.activeSessionId]:null;e._retiredBareActiveSessionId=s&&!s.agentId&&s.id||null,e.sessionOrder=e.sessionOrder.filter(n=>e.sessions[n]?.agentId),e._retiredBareActiveSessionId&&(e.activeSessionId=null,e.activeSessionKey=null)}e.inventoryIdentityMode="agent-scoped"}function qy(e){let t=e._preferredExactSessionIdentity||null;if(!t)return!1;e._preferredExactSessionIdentity=null;let s=e.sessions[t.key]||null,n=Ir(),r=s?.id===t.sessionId&&s.agentId===t.agentId,i=n?.currentView!=="yeaft"||typeof n.setActiveSessionFilter=="function";if(r&&i){if(e.activeSessionId=t.sessionId,e.activeSessionKey=t.key,n?.currentView==="yeaft")n.setActiveSessionFilter(t.sessionId,{agentId:t.agentId,force:!0});else if(n){n.yeaftActiveSessionFilter=t.sessionId,n.yeaftSessionAgentById={...n.yeaftSessionAgentById||{},[t.sessionId]:t.agentId};try{localStorage.setItem("lastViewedYeaftSession",t.key)}catch{}}return!0}if(e.activeSessionId=null,e.activeSessionKey=null,n?.yeaftActiveSessionFilter===t.sessionId&&(n.yeaftActiveSessionFilter=null),n?.yeaftSessionAgentById?.[t.sessionId]===t.agentId){let o={...n.yeaftSessionAgentById};delete o[t.sessionId],n.yeaftSessionAgentById=o}try{let o=gr(localStorage.getItem("lastViewedYeaftSession")||"");o.agentId===t.agentId&&o.sessionId===t.sessionId&&localStorage.removeItem("lastViewedYeaftSession")}catch{}return!0}function Ei(e){let t=e._retiredBareActiveSessionId||null;if(!t)return!1;let s=Ir();if(e.inventoryIdentityMode==="legacy-bare"){let r=e.sessions[t];return e._retiredBareActiveSessionId=null,!r||r.agentId?!1:(e.activeSessionId=t,e.activeSessionKey=t,s?.currentView==="yeaft"&&typeof s.setActiveSessionFilter=="function"?s.setActiveSessionFilter(t,{force:!0}):s&&(s.yeaftActiveSessionFilter=t),!0)}let n=e.sessionOrder.filter(r=>{let i=e.sessions[r];return i?.agentId&&i.id===t});if(n.length===1){let r=n[0],i=e.activeSessionId===t&&e.activeSessionKey===r,o=e.sessions[r]?.agentId||null;return e.activeSessionId=t,e.activeSessionKey=r,i||(s?.currentView==="yeaft"&&typeof s.setActiveSessionFilter=="function"?(s.setActiveSessionFilter(t,{agentId:o,force:!0}),e._retiredBareActiveSessionId=t):s&&(s.yeaftActiveSessionFilter=t)),!0}e.activeSessionId=null,e.activeSessionKey=null,s?.yeaftActiveSessionFilter===t&&(s.yeaftActiveSessionFilter=null);try{let r=localStorage.getItem("lastViewedYeaftSession")||"";gr(r).sessionId===t&&localStorage.removeItem("lastViewedYeaftSession")}catch{}return!0}function Sr(e){let t=[],s=new Set;for(let n of Array.isArray(e)?e:[]){let r=typeof n=="string"?n:String(n||"");!r||s.has(r)||(s.add(r),t.push(r))}return t}function ll(e,t){let s=Sr(e),n=new Set(s),r=Sr(t).filter(o=>n.has(o)),i=new Set(r);return[...r,...s.filter(o=>!i.has(o))]}function Di(e,t=!1){return!e||typeof e!="object"?!!t:Object.prototype.hasOwnProperty.call(e,"pinned")?e.pinned===!0:Object.prototype.hasOwnProperty.call(e,"isPinned")?e.isPinned===!0:!!t}function Pp(e){return!e||typeof e!="object"?!1:e.running===!0||e.active===!0||e.isActive===!0||e.isRunning===!0}function Rp(e){if(!e||typeof e!="object")return 0;let t=e.latestActivityAt||e.lastActivityAt||e.lastMessageAt||e.updatedAt||0;if(typeof t=="number"&&Number.isFinite(t))return t;if(typeof t=="string"&&t){let s=Date.parse(t);return Number.isFinite(s)?s:0}return 0}function Ir(){try{if(typeof window<"u"&&window.Pinia&&typeof window.Pinia.useChatStore=="function")return window.Pinia.useChatStore()}catch{}return null}var _p,Ep,Wy,Lp,$p=N(()=>{_i();mr();_p="yeaft-session-order-by-agent",Ep="yeaft-session-order-global";({defineStore:Wy}=Pinia);Lp=Wy("sessions",{state:()=>({sessions:{},sessionOrder:[],activeSessionId:null,activeSessionKey:null,inventoryIdentityMode:"empty",_retiredBareActiveSessionId:null,_preferredExactSessionIdentity:null,lastSnapshotAt:0,lastCrudResult:null,pending:{}}),getters:{sessionList(e){let t=e.sessionOrder.map(d=>e.sessions[d]).filter(Boolean),s=Ir(),n=s&&Array.isArray(s.pinnedSessions)?new Set(s.pinnedSessions):new Set;for(let d of t)d&&d.id&&d.pinned&&n.add(d.id);let r=[],i=[];for(let d of t)d.pinned||!d.agentId&&n.has(d.id)?r.push(d):i.push(d);let o=d=>[...d].sort((u,f)=>{let p=Number.isFinite(u?.sortOrder)?u.sortOrder:Number.MAX_SAFE_INTEGER,g=Number.isFinite(f?.sortOrder)?f.sortOrder:Number.MAX_SAFE_INTEGER;return p!==g?p-g:il(u,f)}),a=[...o(r),...o(i)],l=Mp();if(l.length===0)return a;let c=new Map(l.map((d,u)=>[d,u]));return a.sort((d,u)=>{let f=c.has(jt(d))?c.get(jt(d)):Number.MAX_SAFE_INTEGER,p=c.has(jt(u))?c.get(jt(u)):Number.MAX_SAFE_INTEGER;return f!==p?f-p:0})},sessionCount(e){return e.sessionOrder.length},sessionById:e=>(t,s=null)=>{let n=ut(e,t,s);return n&&e.sessions[n]||null},activeSession(e){return e.activeSessionKey&&e.sessions[e.activeSessionKey]||null},hasLoadedSnapshot(e){return e.lastSnapshotAt>0},isEmpty(e){return e.sessionOrder.length===0},activeNeedsInvite(e){let t=e.activeSessionKey?e.sessions[e.activeSessionKey]:null;return t?!t.defaultVpId&&(!Array.isArray(t.roster)||t.roster.length===0):!1}},actions:{applySnapshot(e,t=null,{deferActivation:s=!1}={}){let n=Array.isArray(e)?e:[],r=!1;if(t){al(this);let o={...this.sessions},a=new Set;for(let p of n){if(!p||!p.id)continue;let g=Et(t,p.id);a.add(g),o[g]=this._normalize(p,t,Di(this.sessions[g]))}for(let p of this.sessionOrder){let g=this.sessions[p];g&&g.agentId===t&&!a.has(p)&&delete o[p]}let l=this.sessionOrder.filter(p=>o[p]),c=new Set(l),d=[];for(let p of n){if(!p||!p.id)continue;let g=Et(t,p.id);o[g]&&!c.has(g)&&d.push(g)}this.sessions=o;let u=[...l,...d],f=Mp();if(f.length>0){let p=new Map(u.map(k=>[jt(o[k]),k]).filter(([k])=>k)),g=f.map(k=>p.get(k)).filter(Boolean),m=new Set(g);u=[...g,...u.filter(k=>!m.has(k))];let v=new Map(f.map((k,w)=>[k,w]));for(let k of u){let w=jt(o[k]);w&&v.has(w)&&(o[k]={...o[k],sortOrder:v.get(w)})}}if(t&&f.length===0){let p=Tp(),g=Sr(p[t]);if(g.length>0){let m=g.map(y=>Et(t,y)),v=new Set(m),k=ll(u.filter(y=>o[y]?.agentId===t),m),w=this.sessionOrder.some(y=>o[y]?.agentId===t),I=0;w?u=this.sessionOrder.filter(y=>o[y]).map(y=>o[y]?.agentId===t?k[I++]:y).concat(k.slice(I)):u=u.map(y=>o[y]?.agentId===t?k[I++]:y);let h=new Map(m.map((y,b)=>[y,b]));for(let y of k)o[y]&&v.has(y)&&(o[y]={...o[y],sortOrder:h.get(y)})}}this.sessionOrder=u}else{if(this.inventoryIdentityMode==="agent-scoped")return;if(Object.values(this.sessions).some(c=>c&&c.agentId)){this.inventoryIdentityMode="agent-scoped";return}let a={},l=[];for(let c of n){if(!c||!c.id)continue;let d=Et(null,c.id);a[d]=this._normalize(c,null,Di(this.sessions[d])),l.push(d)}this.sessions=a,this.sessionOrder=l,this.inventoryIdentityMode="legacy-bare"}s||(r=qy(this)||Ei(this)),this.lastSnapshotAt=Date.now();let i=Ir();if(i&&t){let o={...i.yeaftSessionAgentById||{}};for(let a of n)a&&a.id&&!o[a.id]&&(o[a.id]=t);i.yeaftSessionAgentById=o}if(!s&&!r){let o=null;try{o=localStorage.getItem("lastViewedYeaftSession")||null}catch{}let l=(o?this.sessions[o]:null)?o:o?ut(this,o,t):"",c=l?this.sessions[l]:null,d=c&&(!t||c.agentId===t),u=this.sessionOrder.filter(I=>this.sessions[I]&&(!t||this.sessions[I].agentId===t)&&this.sessions[I].running).sort((I,h)=>Rp(this.sessions[h])-Rp(this.sessions[I]))[0]||null,f=u?this.sessions[u]?.id:null,p=this.sessionList[0]||null,g=p?.id||null,m=g?ut(this,g,p?.raw?.agentId||null):"",v=f||(d?c.id:null)||g,k=u||(d?l:"")||m||ol(this,v,t),w=this.activeSessionKey?this.sessions[this.activeSessionKey]?.agentId:null;if(this.activeSessionId&&!ut(this,this.activeSessionId,w)?(this.activeSessionId=v,this.activeSessionKey=k||null):!this.activeSessionId&&this.sessionOrder.length>0&&!this._retiredBareActiveSessionId?(this.activeSessionId=v,this.activeSessionKey=k||null):this.activeSessionId&&(this.activeSessionKey=ol(this,this.activeSessionId,w)||this.activeSessionKey),i&&!this._retiredBareActiveSessionId){let I=this.activeSessionId||v,h=null;if((i.yeaftActiveSessionFilter&&!ut(this,i.yeaftActiveSessionFilter)||!i.yeaftActiveSessionFilter&&I)&&(h=I),h){let y=ol(this,h),b=y&&this.sessions[y]?.agentId||null;i.currentView==="yeaft"&&typeof i.setActiveSessionFilter=="function"?i.setActiveSessionFilter(h,{agentId:b,force:!0}):i.yeaftActiveSessionFilter=h,this.activeSessionKey=y||this.activeSessionKey}}}if(i&&typeof i.applyServerPinSnapshot=="function"){let o=new Set;for(let l of n){if(!l||!l.id)continue;let c=Et(t,l.id),d=this.sessions[c];d&&d.pinned&&o.add(l.id)}let a=l=>{let c=ut(this,l,t),d=c?this.sessions[c]:null;return d?d.agentId===t:!1};i.applyServerPinSnapshot(t,o,a)}},applyRosterChange(e,t=null){if(!e)return;let s=e.sessionId||e.groupId;if(!s)return;let n=t||e.agentId||null;if(n)al(this);else if(this.inventoryIdentityMode!=="legacy-bare")return;let r=ut(this,s,n)||Et(n,s),i=this.sessions[r];if(!i){let o=this._normalize({id:s,name:e.name||s,roster:Array.isArray(e.roster)?e.roster:[],defaultVpId:e.defaultVpId||null},n);this.sessions[r]=o,this.sessionOrder.push(r),Ei(this);return}this.sessions[r]={...i,name:e.name||i.name,roster:Array.isArray(e.roster)?e.roster.slice():i.roster,defaultVpId:e.defaultVpId!=null?e.defaultVpId:i.defaultVpId,announcement:typeof e.announcement=="string"?e.announcement:i.announcement},Ei(this)},applyCrudResult(e,t=null){if(!e)return;this.lastCrudResult={...e,at:Date.now()},e.requestId&&this.pending[e.requestId]&&delete this.pending[e.requestId];let s=e.session||e.group||null,n=t||e.agentId||s?.agentId||null;e.ok&&e.op==="list"&&Array.isArray(e.sessions)&&this.applySnapshot(e.sessions,n),e.ok&&(e.op==="create"||e.op==="restore")&&s&&s.id&&this.applySnapshotUpsert(s,n)&&this.setActive(s.id,n);let r=e.sessionId||e.groupId,i=this.inventoryIdentityMode==="legacy-bare",o=r&&(n||i)?ut(this,r,n):"";if(e.ok&&(e.op==="archive"||e.op==="delete")&&r&&o&&(delete this.sessions[o],this.sessionOrder=this.sessionOrder.filter(a=>a!==o),(this.activeSessionKey===o||i&&this.activeSessionId===r)&&(this.activeSessionKey=this.sessionOrder[0]||null,this.activeSessionId=this.activeSessionKey&&this.sessions[this.activeSessionKey]?.id||null)),e.ok&&e.op==="update_config"&&r){let a=o?this.sessions[o]:null;a&&(this.sessions[o]={...a,config:e.config&&typeof e.config=="object"?{...e.config}:{}})}},applySnapshotUpsert(e,t=null){if(!e||!e.id)return"";let s=t||e.agentId||null;if(s)al(this);else if(this.inventoryIdentityMode!=="legacy-bare")return"";let n=ut(this,e.id,s)||Et(s,e.id),r=!!this.sessions[n],i=this.sessions[n]||{};return this.sessions[n]={...i,...this._normalize(e,s,Di(i))},r||this.sessionOrder.push(n),Ei(this),n},setActive(e,t=null){let s=ut(this,e,t);e&&s&&this.sessions[s]?(this.activeSessionId=e,this.activeSessionKey=s,this._retiredBareActiveSessionId=null):(this.activeSessionId=null,this.activeSessionKey=null)},reorderSessionsForAgent(e,t){if(!e)return[];let s=this.sessionOrder.filter(l=>this.sessions[l]?.agentId===e),n=ll(s,t.map(l=>Et(e,l)));if(n.length===0)return[];let r=new Map(n.map((l,c)=>[l,c])),i=0;this.sessionOrder=this.sessionOrder.map(l=>this.sessions[l]?.agentId===e?n[i++]:l);for(let l of n)this.sessions[l]={...this.sessions[l],sortOrder:r.get(l)};let o=Tp(),a=n.map(l=>this.sessions[l]?.id).filter(Boolean);return o[e]=a,Fy(o),a},reorderSessionsGlobally(e){let t=this.sessionOrder.map(a=>jt(this.sessions[a])).filter(Boolean),s=ll(t,e);if(s.length===0)return[];let n=new Map(this.sessionOrder.map(a=>[jt(this.sessions[a]),a]).filter(([a])=>a)),r=s.map(a=>n.get(a)).filter(Boolean),i=new Set(r);this.sessionOrder=[...r,...this.sessionOrder.filter(a=>!i.has(a))];let o=new Map(s.map((a,l)=>[a,l]));for(let a of this.sessionOrder){let l=jt(this.sessions[a]);l&&o.has(l)&&(this.sessions[a]={...this.sessions[a],sortOrder:o.get(l)})}return By(s),s.map(a=>{let l=n.get(a),c=l?this.sessions[l]:null;return c?{agentId:c.agentId,sessionId:c.id}:null}).filter(Boolean)},applyPinState(e,t,s=null){if(!s&&this.inventoryIdentityMode!=="legacy-bare")return;let n=ut(this,e,s);!e||!n||!this.sessions[n]||(this.sessions[n]={...this.sessions[n],pinned:!!t})},markPending(e,t){e&&(this.pending[e]=t)},clearLastResult(){this.lastCrudResult=null},resetInventory(){this.sessions={},this.sessionOrder=[],this.activeSessionId=null,this.activeSessionKey=null,this.inventoryIdentityMode="empty",this._retiredBareActiveSessionId=null,this._preferredExactSessionIdentity=null,this.lastSnapshotAt=0},beginInventoryCommit(e=null,t=null){if(this.resetInventory(),e&&t){let s=Et(t,e);this.activeSessionId=e,this.activeSessionKey=s,this._preferredExactSessionIdentity={sessionId:e,agentId:t,key:s}}else e&&(this._retiredBareActiveSessionId=e)},_normalize(e,t=null,s=!1){return{id:e.id,name:e.name||e.id,roster:Array.isArray(e.roster)?e.roster.slice():[],defaultVpId:e.defaultVpId||null,announcement:typeof e.announcement=="string"?e.announcement:"",config:e.config&&typeof e.config=="object"?{...e.config}:{},workDir:typeof e.workDir=="string"?e.workDir:"",createdAt:e.createdAt||null,updatedAt:e.updatedAt||null,lastMessageAt:e.lastMessageAt||null,running:Pp(e),active:Pp(e),runningVpCount:Number.isFinite(Number(e.runningVpCount))?Number(e.runningVpCount):0,latestActivityAt:e.latestActivityAt||e.lastActivityAt||e.lastMessageAt||null,agentId:t||e.agentId||null,pinned:Di(e,s),sortOrder:Number.isFinite(e.sortOrder)?e.sortOrder:null}}}})});function Li(){try{if(window.Pinia&&typeof window.Pinia.useAuthStore=="function")return window.Pinia.useAuthStore()}catch{}return null}function cl(){try{return localStorage.getItem("authToken")||null}catch{return null}}function Op(){let e=Li();if(e)try{return e.getActiveToken?.()||e.token||cl()}catch{return e.token||cl()}return cl()}function Uy(e,t){if(!e)return!1;let s=Op();if(s&&s!==t)return!1;try{localStorage.setItem("authToken",e)}catch{}let n=Li();return n&&(n.token=e),!0}function Ky(e){try{let t=typeof e=="string"?e:e?.url;return!t||typeof window>"u"||!window.location?null:new URL(t,window.location.href)}catch{return null}}function Hp(e){return!e||typeof window>"u"||!window.location?!1:e.origin===window.location.origin&&e.pathname.startsWith("/api/")}function zy(e){if(!e)return!1;let t=e.pathname;return!!(jy.has(t)||t.startsWith("/api/auth/sso/poll/")||/^\/api\/auth\/sso\/[^/]+\/start(?:-qr)?$/.test(t))}function Yy(e,t){return t?.headers?new Headers(t.headers):e&&typeof e=="object"&&e.headers?new Headers(e.headers):new Headers}function Gy(e){let t=e.get("Authorization");return!t||!t.startsWith("Bearer ")?null:t.slice(7)}function Qy(e,t){return{...e||{},headers:t}}function Zy(e,t,s,n){let r=Li();r&&typeof r.handleAuthResponse=="function"?r.handleAuthResponse(e,t,s,n):r&&typeof r.handleAuthFailure=="function"&&n&&r.handleAuthFailure(void 0,t,s)}function Fp(){if(Vp||typeof window>"u"||!window.fetch)return;Vp=!0;let e=window.fetch.bind(window);window.fetch=async function(s,n){let r=Ky(s),i=Hp(r)&&!zy(r),o=Hp(r)?{...n||{},credentials:"same-origin"}:n,a=null,l=i?Li():null,c=l?.authGeneration,d=!!l?.isAuthenticated;if(i){let f=Yy(s,n);a=Gy(f),a||(a=Op(),a&&(f.set("Authorization",`Bearer ${a}`),o=Qy(o,f)))}let u=await e(s,o);try{let f=u.headers&&u.headers.get&&u.headers.get("X-New-Token");f&&Uy(f,a),i&&u.status===401&&Zy(u,a,c,d)}catch{}return u}}var Vp,jy,Bp=N(()=>{Vp=!1,jy=new Set(["/api/auth/mode","/api/auth/login","/api/auth/aad","/api/auth/verify","/api/auth/verify-totp","/api/auth/setup-totp","/api/auth/register","/api/auth/password-reset/request","/api/auth/password-reset/verify"])});var Np,qp=N(()=>{Np={"common.loading":"\u52A0\u8F7D\u4E2D...","common.confirm":"\u786E\u5B9A","common.apply":"\u5E94\u7528","common.cancel":"\u53D6\u6D88","common.delete":"\u5220\u9664","common.copy":"\u590D\u5236","common.copied":"\u5DF2\u590D\u5236","common.close":"\u5173\u95ED","common.refresh":"\u5237\u65B0","common.open":"\u6253\u5F00","common.save":"\u4FDD\u5B58","common.search":"\u641C\u7D22","common.back":"\u8FD4\u56DE","common.noSubdirectories":"\u65E0\u5B50\u76EE\u5F55","common.drives":"\u9A71\u52A8\u5668","common.rootDir":"\u6839\u76EE\u5F55","common.comma":"\uFF0C","common.select":"\u9009\u62E9","mermaid.export":"\u5BFC\u51FA","mermaid.exportMd":"\u5BFC\u51FA MD","mermaid.exportPng":"\u5BFC\u51FA PNG","mermaid.exportJpg":"\u5BFC\u51FA JPG","chat.toolActionsOmitted":"\u5DF2\u7701\u7565 {count} \u4E2A\u5386\u53F2\u5DE5\u5177\u52A8\u4F5C","login.subtitle":"Yeaft Web Code Agent","login.username":"\u7528\u6237\u540D","login.password":"\u5BC6\u7801","login.login":"\u767B\u5F55","login.loggingIn":"\u767B\u5F55\u4E2D...","login.enterUsername":"\u8BF7\u8F93\u5165\u7528\u6237\u540D","login.enterPassword":"\u8BF7\u8F93\u5165\u5BC6\u7801","login.noAccount":"\u6CA1\u6709\u8D26\u53F7\uFF1F","login.registerWithCode":"\u6CE8\u518C\u65B0\u8D26\u53F7","login.or":"\u6216","login.usePassword":"\u4F7F\u7528\u8D26\u53F7\u5BC6\u7801\u767B\u5F55","login.useSso":"\u8FD4\u56DE\u5355\u70B9\u767B\u5F55","login.noProviders":"\u7BA1\u7406\u5458\u5C1A\u672A\u542F\u7528\u4EFB\u4F55\u7B2C\u4E09\u65B9\u767B\u5F55\u3002","login.microsoft":"\u4F7F\u7528 Microsoft \u8D26\u53F7\u767B\u5F55","login.github":"\u4F7F\u7528 GitHub \u8D26\u53F7\u767B\u5F55","login.google":"\u4F7F\u7528 Google \u8D26\u53F7\u767B\u5F55","login.wechat":"\u4F7F\u7528\u5FAE\u4FE1\u626B\u7801\u767B\u5F55","login.alipay":"\u4F7F\u7528\u652F\u4ED8\u5B9D\u8D26\u53F7\u767B\u5F55","login.wechat.mobileUnsupported":"\u5FAE\u4FE1\u767B\u5F55\u6682\u4EC5\u652F\u6301\u7535\u8111\u7AEF\uFF0C\u8BF7\u5728\u7535\u8111\u6D4F\u89C8\u5668\u4E2D\u626B\u7801\u767B\u5F55\u3002","login.alipay.mobileWaiting":"\u6B63\u5728\u7B49\u5F85\u4F60\u5728\u652F\u4ED8\u5B9D\u4E2D\u786E\u8BA4\u2026 \u5B8C\u6210\u540E\u8FD4\u56DE\u672C\u9875\u9762\u5C06\u81EA\u52A8\u767B\u5F55\u3002","login.alipay.relaunch":"\u91CD\u65B0\u6253\u5F00\u652F\u4ED8\u5B9D","login.qr.title":"\u626B\u7801\u767B\u5F55","login.qr.titleAlipay":"\u652F\u4ED8\u5B9D\u626B\u7801\u767B\u5F55","login.qr.titleWechat":"\u5FAE\u4FE1\u626B\u7801\u767B\u5F55","login.qr.hint":"\u8BF7\u4F7F\u7528\u624B\u673A\u626B\u63CF\u4E8C\u7EF4\u7801\u5B8C\u6210\u6388\u6743","login.error.enterUsername":"\u8BF7\u8F93\u5165\u7528\u6237\u540D","login.error.enterPassword":"\u8BF7\u8F93\u5165\u5BC6\u7801","login.error.enter6Digit":"\u8BF7\u8F93\u51656\u4F4D\u9A8C\u8BC1\u7801","login.error.enterInviteCode":"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801","login.error.usernameMinLen":"\u7528\u6237\u540D\u81F3\u5C112\u4E2A\u5B57\u7B26","login.error.passwordMinLen":"\u5BC6\u7801\u81F3\u5C116\u4F4D","login.error.passwordMismatch":"\u4E24\u6B21\u5BC6\u7801\u4E0D\u4E00\u81F4","login.error.enterVerifyCode":"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801","login.error.loginFailed":"\u767B\u5F55\u5931\u8D25","login.forgot.link":"\u5FD8\u8BB0\u5BC6\u7801\uFF1F","login.forgot.title":"\u91CD\u7F6E\u5BC6\u7801","login.forgot.emailHint":"\u8F93\u5165\u8D26\u6237\u7ED1\u5B9A\u7684\u90AE\u7BB1\uFF0C\u6211\u4EEC\u5C06\u53D1\u9001 6 \u4F4D\u91CD\u7F6E\u9A8C\u8BC1\u7801\u3002","login.forgot.sendCode":"\u53D1\u9001\u91CD\u7F6E\u9A8C\u8BC1\u7801","login.forgot.sending":"\u53D1\u9001\u4E2D...","login.forgot.codeSent":"\u5982\u679C\u90AE\u7BB1\u5DF2\u6CE8\u518C\uFF0C\u91CD\u7F6E\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001\u3002\u8BF7\u5728\u4E0B\u65B9\u8F93\u5165\u9A8C\u8BC1\u7801\u4E0E\u65B0\u5BC6\u7801\u3002","login.forgot.resetBtn":"\u91CD\u7F6E\u5BC6\u7801","login.forgot.resetting":"\u91CD\u7F6E\u4E2D...","login.forgot.success":"\u5BC6\u7801\u5DF2\u91CD\u7F6E\uFF0C\u53EF\u4EE5\u4F7F\u7528\u65B0\u5BC6\u7801\u767B\u5F55\u3002","login.forgot.emailInvalid":"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u90AE\u7BB1","login.register.title":"\u65B0\u7528\u6237\u6CE8\u518C","login.register.inviteCode":"\u9080\u8BF7\u7801","login.register.username":"\u7528\u6237\u540D","login.register.password":"\u5BC6\u7801\uFF08\u81F3\u5C116\u4F4D\uFF09","login.register.confirmPassword":"\u786E\u8BA4\u5BC6\u7801","login.register.email":"\u90AE\u7BB1\uFF08\u53EF\u9009\uFF09","login.register.submit":"\u6CE8\u518C","login.register.submitting":"\u6CE8\u518C\u4E2D...","login.register.back":"\u8FD4\u56DE\u767B\u5F55","login.register.success":"\u6CE8\u518C\u6210\u529F\uFF0C\u8BF7\u767B\u5F55","login.register.enterCode":"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801","login.register.usernameMin":"\u7528\u6237\u540D\u81F3\u5C112\u4E2A\u5B57\u7B26","login.register.passwordMin":"\u5BC6\u7801\u81F3\u5C116\u4F4D","login.register.passwordMismatch":"\u4E24\u6B21\u5BC6\u7801\u4E0D\u4E00\u81F4","login.totp.setupTitle":"\u8BBE\u7F6E\u53CC\u56E0\u7D20\u8BA4\u8BC1","login.totp.setupHint":"\u4F7F\u7528 Microsoft Authenticator \u6216 Google Authenticator \u626B\u63CF\u4E0B\u65B9\u4E8C\u7EF4\u7801","login.totp.manualKey":"\u6216\u624B\u52A8\u8F93\u5165\u5BC6\u94A5\uFF1A","login.totp.enterCode":"\u8F93\u51656\u4F4D\u9A8C\u8BC1\u7801","login.totp.complete":"\u5B8C\u6210\u8BBE\u7F6E","login.totp.verifying":"\u9A8C\u8BC1\u4E2D...","login.totp.verify":"\u9A8C\u8BC1","login.totp.prompt":"\u8BF7\u8F93\u5165 Authenticator \u5E94\u7528\u4E2D\u7684\u9A8C\u8BC1\u7801","login.totp.invalidCode":"\u8BF7\u8F93\u51656\u4F4D\u9A8C\u8BC1\u7801","login.email.codeSent":"\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001\u81F3 {email}","login.email.enterCode":"\u8F93\u5165\u9A8C\u8BC1\u7801","login.email.verify":"\u9A8C\u8BC1","login.email.verifying":"\u9A8C\u8BC1\u4E2D...","login.email.enterCodeError":"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801","chat.agent.select":"\u9009\u62E9 Agent","chat.agent.manage":"\u7BA1\u7406 Agent","chat.agent.none":"\u6682\u65E0 Agent","chat.agent.restarting":"\u91CD\u542F\u4E2D","chat.agent.restart":"\u91CD\u542F","chat.agent.restartConfirm":`\u786E\u5B9A\u8981\u91CD\u542F Agent "{name}" \u5417\uFF1F
10
+ ${v}`:v),m.status!=="failed"&&m.status!=="closed"&&(m.status=c.status||"idle");break}case"error":c.error&&(m.error=c.error.message||String(c.error));break;default:break}m.updatedAt=Date.now(),this.yeaftSubAgentCards={...this.yeaftSubAgentCards,[d]:m};break}case"history_loaded":{let a={...r,agentId:e.agentId||null,requestId:r.requestId||e.requestId||null};if(a.requestId&&!this.isCurrentYeaftHistoryResponse(a))break;let l=e.agentId||null,c=r.sessionId??null,d=he(l,c),u=e.perfTraceId||this.yeaftHistoryPerfTraceBySession?.[d];u&&Ge(this,{traceId:u,phase:"history.loaded_event",agentId:e.agentId||null,sessionId:r.sessionId||null,messageType:r.type,detail:{mode:r.mode||"recent",count:r.count||0,hasMore:!!r.hasMore}});let f=r.mode==="delta"?"delta":"recent",p=this.yeaftSessionHistoryState[d]||{},g=Number.isFinite(r.latestSeq)?r.latestSeq:Number.isFinite(p.latestSeq)?p.latestSeq:null,m=Number.isFinite(r.nextBeforeSeq)?r.nextBeforeSeq:Number.isFinite(r.oldestSeq)?r.oldestSeq:Number.isFinite(p.serverOldestFetchedSeq)?p.serverOldestFetchedSeq:Number.isFinite(p.oldestSeq)?p.oldestSeq:null,v=f==="delta"?{...p,loaded:!0,loading:!1,latestSeq:g,syncingAfterSeq:null,count:(p.count||0)+(r.count||0)}:{...p,loaded:!0,loading:!1,hasMore:!!r.hasMore,serverHasMore:!!r.hasMore,oldestSeq:m,serverOldestFetchedSeq:m,count:typeof r.count=="number"?r.count:0,latestSeq:g,syncingAfterSeq:null},k=a.requestId?this.finishYeaftHistoryLoad(a,v,"completion"):null;k||(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[d]:v});let w=he(l?this.currentAgent:null,this.yeaftActiveSessionFilter??null);if(d===w)f==="recent"&&(this.yeaftHasMoreHistory=v.hasMore,this.yeaftOldestLoadedSeq=v.serverOldestFetchedSeq),this.yeaftLoadingMoreHistory=!!k?.loading;else if(this.yeaftLoadingMoreHistory){let I=this.yeaftSessionHistoryState[w]||null;this.yeaftLoadingMoreHistory=!!I?.loading}}break;case"vp_snapshot":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&a.applySnapshot(r,e.agentId||null,e.requestId||null);break}case"vp_snapshot_error":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&a.failSnapshot(e.agentId||null,e.requestId||null,r.error||r.message||"VP library request failed");break}case"vp_updated":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&r.vp&&a.upsert(r.vp,r.reason,e.agentId||null);break}case"vp_removed":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&r.vpId&&a.remove(r.vpId,r.reason,e.agentId||null);break}case"vp_crud_result":{let a=this._vpCrudPending&&this._vpCrudPending.get(r.requestId);a&&(this._vpCrudPending.delete(r.requestId),a.resolve({ok:!!r.ok,op:r.op,vpId:r.vpId,vp:r.vp,error:r.error||null}));break}case"group_list_updated":case"session_list_updated":case"yeaft_session_hydrate":{let a=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore(),l=r.sessions||[];if(r.projectsAuthoritative===!0&&Array.isArray(r.projects)?this.applySessionCatalogSnapshot(this.sessionCatalog,r.projects):Array.isArray(r.projects)&&e.agentId&&this.applyLegacyProjectSnapshot(r.projects,e.agentId),r.type!=="yeaft_session_hydrate"&&this.yeaftSessionHydrateRequestId&&this.yeaftSessionInventoryCompleteSupported===!0){let p=Array.isArray(this.yeaftSessionHydrateSlices)?this.yeaftSessionHydrateSlices.filter(g=>g.agentId!==(e.agentId||null)):[];this.yeaftSessionHydrateSlices=[...p,{agentId:e.agentId||null,sessions:l}];break}let c=a&&a.activeSessionId||null,d=a?.activeSessionKey&&a.sessions?.[a.activeSessionKey]?.agentId||null;a&&(a.applySnapshot(l,e.agentId||null),this._hasHandledYeaftSessionHydrate=!0,this.yeaftSessionHydrateError=null);let u=a&&a.activeSessionId||null,f=a?.activeSessionKey&&a.sessions?.[a.activeSessionKey]?.agentId||null;if(this.currentView==="yeaft"&&u){let p=f||be(this,u,e.agentId||null),g=he(p,u),m=this.yeaftSessionHistoryState[g]||null;this.setActiveSessionFilter(u,{agentId:p,force:d!==p||vd(u,c,m)})}break}case"group_roster_changed":case"session_roster_changed":{let a=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();a&&a.applyRosterChange(r,e.agentId||null);break}case"group_crud_result":case"session_crud_result":{let a=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();a&&a.applyCrudResult(r,e.agentId||null);let l=Promise.resolve();if(r.ok&&r.op==="delete"&&r.sessionId){let d=is();l=(async()=>{if(!e.agentId)throw new Error("Session delete result is missing its Agent owner");if(d&&!await ia({fence:d,agentId:e.agentId,sessionId:r.sessionId}))throw new Error("Browser history cache was not removed");this.clearYeaftHistoryMemory({agentId:e.agentId,sessionId:r.sessionId})})(),l.catch(u=>{})}let c=this._sessionCrudPending&&this._sessionCrudPending.get(r.requestId);c&&(async()=>{let u=null;try{await l}catch(v){u=v}if(this._sessionCrudPending?.get(r.requestId)!==c)return;this._sessionCrudPending.delete(r.requestId);let f=r.session||r.group||null,p=f&&e.agentId&&!f.agentId?{...f,agentId:e.agentId}:f,g=r.sessionId||null,m=r.sessions||null;c.resolve({ok:!!r.ok&&!u,op:r.op,session:p,sessionId:g,sessions:m,config:r.config||null,error:u?{code:"browser_cache_cleanup_failed",message:u.message}:r.error||null})})();break}case"vp_turn_start":{if(!r.turnId||!r.vpId)break;let a=Da(e.agentId||null,r.turnId)||r.turnId;if(this.activeVpTurns={...this.activeVpTurns,[a]:{agentId:e.agentId||null,turnId:r.turnId,vpId:r.vpId,sessionId:r.sessionId||null,threadId:r.threadId||null,isStreaming:!0,startedAt:r.ts||Date.now()}},r.sessionId){let l=It(e.agentId||null,r.sessionId);this.yeaftProcessingSessions={...this.yeaftProcessingSessions,...l?{[l]:!0}:{[r.sessionId]:!0}}}break}case"vp_turn_end":{if(!r.turnId)break;let a=hn(this,e.agentId||null,r.turnId),l=r.sessionId||this.activeVpTurns?.[a]?.sessionId||null;r.reason==="end_turn"&&l&&this.markYeaftSessionUnread(l,e.agentId||null);let{[a]:c,...d}=this.activeVpTurns;this.activeVpTurns=d;let{[a]:u,...f}=this.stoppingVpTurnIds;this.stoppingVpTurnIds=f;let p=r.sessionId||c?.sessionId||null,g=e.agentId||c?.agentId||null,m=r.vpId||c?.vpId||null;if(!(p&&m?Object.values(this.activeVpTurns||{}).some(y=>y?.vpId===m&&nt(y,p,g)):!1)&&p&&m){let y={...this.vpStatuses||{}},b=!1;for(let[M,x]of Object.entries(y))x?.vpId===m&&nt(x,p,g)&&kr.has(x.state)&&(y[M]={...x,state:"idle",turnId:null,since:r.ts||Date.now()},b=!0);b&&(this.vpStatuses=y)}this.clearYeaftSessionProcessingIfIdle(p,{agentId:g});let w={end_turn:"completed",route_forward:"completed",aborted:"aborted",errored:"errored",error:"errored",cancelled:"cancelled",canceled:"cancelled"}[r.reason]||"completed",I=Date.now(),h=Wt(this,e.agentId||null,e.conversationId);if(h&&Array.isArray(this.messagesMap[h])){let y=this.messagesMap[h],b=sp(y,r);for(let M=0;M<y.length;M++){let x=y[M];if(!x||x.type!=="assistant")continue;let D=x.sessionId??x.groupId;r.sessionId&&D&&D!==r.sessionId||r.vpId&&x.speakerVpId&&x.speakerVpId!==r.vpId||r.turnId&&x.turnId&&x.turnId!==r.turnId||x.status&&x.status!=="pending"||(x.status=w,x.turnEndAt=I,x.turnEndReason=r.reason||null,r.detail&&(x.turnEndDetail=r.detail),Number.isFinite(r.durationMs)&&(x.turnDurationMs=r.durationMs),b=!0)}b&&(this.messagesMap={...this.messagesMap,[h]:y.slice()}),this.pruneConversationMessageRetention(h,p,g)}break}case"yeaft_turn_aborted":{let a=Array.isArray(r.turnIds)?r.turnIds.filter(Boolean):[];r.turnId&&a.push(r.turnId);let l=r.sessionId||null,c=r.vpId||null,d=new Set;for(let g of a){let m=hn(this,e.agentId||null,g),v=this.activeVpTurns?.[m]||null;(!v||nt(v,v.sessionId,e.agentId||null))&&d.add(m)}if(c)for(let[g,m]of Object.entries(this.activeVpTurns||{}))!m||m.vpId!==c||nt(m,l,e.agentId||null)&&d.add(g);if(d.size===0)break;let u=l,f={...this.activeVpTurns||{}},p={...this.stoppingVpTurnIds||{}};for(let g of d){let m=f[g];!u&&m?.sessionId&&(u=m.sessionId),delete f[g],delete p[g]}this.activeVpTurns=f,this.stoppingVpTurnIds=p,this.clearYeaftSessionProcessingIfIdle(u||null,{agentId:e.agentId||null});break}case"yeaft_aborted":{let a=r.sessionId||e.sessionId||null;a?(this.activeVpTurns=Object.fromEntries(Object.entries(this.activeVpTurns||{}).filter(([,l])=>!nt(l,a,e.agentId||null))),this.stoppingVpTurnIds=Object.fromEntries(Object.entries(this.stoppingVpTurnIds||{}).filter(([l])=>this.activeVpTurns?.[l])),this.vpStatuses=Object.fromEntries(Object.entries(this.vpStatuses||{}).filter(([,l])=>!nt(l,a,e.agentId||null))),this.clearYeaftSessionProcessingIfIdle(a,{agentId:e.agentId||null,ignoreStatuses:!0})):r.all&&lp(this,e.agentId||null);break}case"vp_typing_start":{if(!r.vpId)break;let a=Wt(this,e.agentId||null,e.conversationId);if(!a)break;this.yeaftVpTyping=Ou(this.yeaftVpTyping,a,r.vpId);break}case"vp_typing_end":{if(!r.vpId)break;let a=Wt(this,e.agentId||null,e.conversationId);if(!a)break;this.yeaftVpTyping=Fu(this.yeaftVpTyping,a,r.vpId);break}case"vp_status_changed":{if(!r.vpId||!r.state)break;if(o){let u=Za(i);if(r.state==="thinking"||r.state==="retrying"||r.state==="tool")or(this,o,`${r.state}:${u}`);else if(r.state==="streaming"||r.state==="idle"||r.state==="error")for(let f of["thinking","retrying","tool"])ln(this,o,`${f}:${u}`)}let a=r.sessionId||null,l=e.agentId||null,c=Ai(l,a,r.vpId),d={agentId:l,state:r.state,since:r.since||Date.now(),turnId:r.turnId||null,title:r.title||"",sessionId:a,vpId:r.vpId};if(this.vpStatuses={...this.vpStatuses,[c]:d},a&&kr.has(r.state)){let u=It(l,a);this.yeaftProcessingSessions={...this.yeaftProcessingSessions,...u?{[u]:!0}:{[a]:!0}}}else a&&this.clearYeaftSessionProcessingIfIdle(a,{agentId:l});this.restoreActiveYeaftSessionFromStatuses([d],l);break}case"vp_status_snapshot":{let a=Array.isArray(r.statuses)?r.statuses:[],l=r.sessionId;if(l==null){let c={...this.vpStatuses||{}};if(e.agentId)for(let[d,u]of Object.entries(c))(!u?.agentId||u.agentId===e.agentId)&&delete c[d];else for(let d of Object.keys(c))delete c[d];for(let d of a){if(!d||!d.vpId)continue;let u=d.sessionId||d.groupId||null,f=Ai(e.agentId||null,u,d.vpId);c[f]={agentId:e.agentId||null,state:d.state,since:d.since||Date.now(),turnId:d.turnId||null,title:d.title||"",sessionId:u,vpId:d.vpId}}this.vpStatuses=c}else{let c={...this.vpStatuses};for(let[d,u]of Object.entries(c))u&&u.sessionId===l&&(!e.agentId||!u.agentId||u.agentId===e.agentId)&&delete c[d];for(let d of a){if(!d||!d.vpId)continue;let u=d.sessionId||d.groupId||null,f=Ai(e.agentId||null,u,d.vpId);c[f]={agentId:e.agentId||null,state:d.state,since:d.since||Date.now(),turnId:d.turnId||null,title:d.title||"",sessionId:u,vpId:d.vpId}}this.vpStatuses=c}this.yeaftProcessingSessions=by(this,e.agentId||null,a,l??null),this.restoreActiveYeaftSessionFromStatuses(a,e.agentId||null);break}case"yeaft_dream_snapshot":{let a=r&&r.snapshot,l=a&&typeof a.scope=="string"?a.scope:null;l&&(this.yeaftDreamSnapshots={...this.yeaftDreamSnapshots,[l]:{...a,receivedAt:Date.now()}});break}case"yeaft_dream_status":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&a.applyDreamStatus(r);break}case"yeaft_dream_result":{let a=window.Pinia?.useVpStore?.()||window.__useVpStore&&window.__useVpStore();a&&a.applyDreamResult(r),r?.snapshot?.scope&&(this.yeaftDreamSnapshots={...this.yeaftDreamSnapshots,[r.snapshot.scope]:{...r.snapshot,receivedAt:Date.now()}});{let l=typeof r?.snapshot?.scope=="string"&&r.snapshot.scope?r.snapshot.scope:typeof r?.sessionId=="string"&&r.sessionId?`sessions/${r.sessionId}`:null;if(!l)break;let c=this.yeaftDreamLatest[l]||null;this.yeaftDreamLatest={...this.yeaftDreamLatest,[l]:{scope:l,phase:"result",status:r.skipped?"skipped":r.success?"success":"error",startedAt:c?.startedAt??null,finishedAt:Date.now(),mergedCount:typeof r.entriesCreated=="number"?r.entriesCreated:c?.mergedCount??null,error:r.skipped||r.success?null:r.error||"unknown",manual:typeof r?.manual=="boolean"?r.manual:c?.manual??null,durationMs:typeof r.durationMs=="number"?r.durationMs:c?.durationMs??null,llmCallCount:typeof r.llmCallCount=="number"?r.llmCallCount:c?.llmCallCount??0,inputTokens:typeof r.inputTokens=="number"?r.inputTokens:c?.inputTokens??0,outputTokens:typeof r.outputTokens=="number"?r.outputTokens:c?.outputTokens??0,totalTokens:typeof r.totalTokens=="number"?r.totalTokens:c?.totalTokens??0,metrics:r.metrics||c?.metrics||null,passBreakdown:r.passBreakdown||r.metrics?.passBreakdown||c?.passBreakdown||null,isRunning:!1}},this._appendDreamEvent(l,{type:"dream_progress",phase:"result",sessionId:r.sessionId,status:r.skipped?"skipped":r.success?"success":"error",success:!!r.success,entriesCreated:typeof r.entriesCreated=="number"?r.entriesCreated:null,trigger:r.trigger||null,error:r.skipped||r.success?null:r.error||null,skipped:!!r.skipped,skippedReason:r.skippedReason||null,durationMs:typeof r.durationMs=="number"?r.durationMs:null,llmCallCount:typeof r.llmCallCount=="number"?r.llmCallCount:0,inputTokens:typeof r.inputTokens=="number"?r.inputTokens:0,outputTokens:typeof r.outputTokens=="number"?r.outputTokens:0,totalTokens:typeof r.totalTokens=="number"?r.totalTokens:0,metrics:r.metrics||null,passBreakdown:r.passBreakdown||r.metrics?.passBreakdown||null,ts:Date.now()})}break}case"dream_progress":{let a=r?.phase||"unknown",l=null;typeof r?.target=="string"&&r.target.includes("/")?l=r.target:typeof r?.sessionId=="string"&&r.sessionId?l=`sessions/${r.sessionId}`:l="*";let c=a==="done",d=a==="error"||r?.status==="error",u=!c&&!d,f=p=>{let g=this.yeaftDreamLatest[p]||null;return{scope:p,phase:a,status:d?"error":c?"success":"running",startedAt:g?.startedAt&&u?g.startedAt:r?.ts||g?.startedAt||Date.now(),finishedAt:c||d?r?.ts||Date.now():null,mergedCount:typeof r?.mergedCount=="number"?r.mergedCount:typeof r?.targets=="number"?r.targets:g?.mergedCount??null,error:d?r?.error||"unknown":null,manual:typeof r?.manual=="boolean"?r.manual:g?.manual??!1,durationMs:typeof r?.duration=="number"?r.duration:typeof r?.durationMs=="number"?r.durationMs:g?.durationMs??null,llmCallCount:typeof r?.llmCallCount=="number"?r.llmCallCount:g?.llmCallCount??0,inputTokens:typeof r?.inputTokens=="number"?r.inputTokens:g?.inputTokens??0,outputTokens:typeof r?.outputTokens=="number"?r.outputTokens:g?.outputTokens??0,totalTokens:typeof r?.totalTokens=="number"?r.totalTokens:g?.totalTokens??0,metrics:r?.metrics||g?.metrics||null,passBreakdown:r?.passBreakdown||r?.metrics?.passBreakdown||g?.passBreakdown||null,isRunning:u}};if(l==="*"){let p={...this.yeaftDreamLatest,"*":f("*")};for(let g of Object.keys(this.yeaftDreamLatest))g!=="*"&&(p[g]=f(g));this.yeaftDreamLatest=p}else this.yeaftDreamLatest={...this.yeaftDreamLatest,[l]:f(l)};this._appendDreamEvent(l,r);break}}},_appendDreamEvent(e,t){if(!e||!t)return;let s=Date.now(),n={...t,at:s},r=Array.isArray(this.yeaftDreamEvents?.[e])?this.yeaftDreamEvents[e]:[],i=l=>[l?.type||"",l?.phase||"",(l?.sessionId??l?.groupId)||"",l?.target||"",l?.ts||l?.at||""].join("|"),o=i(n);if(r.some(l=>i(l)===o))return;let a=[...r,n];a.length>Sp&&a.splice(0,a.length-Sp),this.yeaftDreamEvents={...this.yeaftDreamEvents,[e]:a}},fetchExpertRoleDefinitions(){if(this.expertRoleDefinitions)return;let e=this.currentAgent;e&&this.sendWsMessage({type:"get_expert_roles",agentId:e})},setYeaftSidebarEnabled(e){try{typeof localStorage<"u"&&localStorage.removeItem("yeaft-sidebar-enabled")}catch{}},vpCrudRequest(e,t){(!this._vpCrudPending||typeof this._vpCrudPending.get!="function")&&(this._vpCrudPending=new Map);let s="vpc_"+Date.now().toString(36)+"_"+Math.random().toString(36).slice(2,8),r={create:"yeaft_vp_create",update:"yeaft_vp_update",delete:"yeaft_vp_delete",read:"yeaft_vp_read"}[e];if(!r)return Promise.resolve({ok:!1,op:e,error:{code:"bad_op",message:"unknown op: "+e}});let i={type:r,requestId:s};return e==="create"||e==="update"?i.payload=t||{}:i.vpId=t,new Promise(o=>{let a=setTimeout(()=>{this._vpCrudPending&&this._vpCrudPending.has(s)&&(this._vpCrudPending.delete(s),o({ok:!1,op:e,error:{code:"timeout",message:"vp_crud timeout"}}))},1e4);this._vpCrudPending.set(s,{resolve:l=>{clearTimeout(a),o(l)}}),this.sendWsMessage(i)})},sessionCrudRequest(e,t,s={}){(!this._sessionCrudPending||typeof this._sessionCrudPending.get!="function")&&(this._sessionCrudPending=new Map);let n="grc_"+Date.now().toString(36)+"_"+Math.random().toString(36).slice(2,8),i={list:"yeaft_list_sessions",create:"yeaft_create_session",rename:"yeaft_rename_session",update:"yeaft_update_session",update_config:"yeaft_update_session_config",archive:"yeaft_archive_session",delete:"yeaft_delete_session",add_member:"yeaft_session_add_member",remove_member:"yeaft_session_remove_member",set_default_vp:"yeaft_session_set_default_vp",reorder:"reorder_yeaft_sessions",scan_workdir:"yeaft_scan_workdir_sessions",restore:"yeaft_restore_session"}[e];if(!i)return Promise.resolve({ok:!1,op:e,error:{code:"bad_op",message:"unknown op: "+e}});let o={type:i,requestId:n};e==="create"?o.payload=t||{}:t&&typeof t=="object"&&Object.assign(o,t);let a=s&&s.agentId?s.agentId:null;a&&(o.agentId=a);let l=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();return l&&l.markPending(n,e),new Promise(c=>{let d=setTimeout(()=>{this._sessionCrudPending&&this._sessionCrudPending.has(n)&&(this._sessionCrudPending.delete(n),c({ok:!1,op:e,error:{code:"timeout",message:"group_crud timeout"}}))},1e4);this._sessionCrudPending.set(n,{resolve:u=>{clearTimeout(d),c(u)}}),this.sendWsMessage(o)})},markYeaftSessionUnread(e,t=null){if(!e)return!1;let s=be(this,e,t);if(!s)return!1;let n=li(s,e);return this.currentView==="yeaft"&&this.yeaftActiveSessionFilter===e&&be(this,e)===s||this.yeaftUnreadSessionKeys?.[n]?!1:(this.yeaftUnreadSessionKeys={...this.yeaftUnreadSessionKeys,[n]:!0},!0)},markYeaftSessionRead(e,t=null){if(!e)return!1;let s=be(this,e,t);if(!s)return!1;let n=li(s,e);if(!this.yeaftUnreadSessionKeys?.[n])return!1;let{[n]:r,...i}=this.yeaftUnreadSessionKeys;return this.yeaftUnreadSessionKeys=i,!0},restoreActiveYeaftSessionFromStatuses(e=[],t=null){if(this.yeaftActiveSessionFilter)return null;let n=(Array.isArray(e)?e:[]).filter(o=>o&&(o.sessionId||o.groupId)&&!["idle","offline","completed","failed","aborted"].includes(o.state)).sort((o,a)=>(a.updatedAt||a.since||0)-(o.updatedAt||o.since||0)),r=n[0]?.sessionId||n[0]?.groupId||null;if(!r)return null;let i=t||n[0]?.agentId||Ip(this,r);if(!i)return null;this.setActiveSessionFilter(r,{agentId:i,force:!0});try{let o=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();o&&typeof o.setActive=="function"&&o.setActive(r,i)}catch{}return r},setActiveSessionFilter(e,t={}){let s=this.yeaftActiveSessionFilter||null,n=e||null,r=n?be(this,n,t.agentId||null):this.currentAgent,i=!!n&&n===s&&!!r&&!!this.currentAgent&&r!==this.currentAgent,o=!!t.force||i;if(this.yeaftActiveSessionFilter=n,r&&n&&this.currentAgent!==r){this.selectAgent(r);let l=this.agents.find(c=>c.id===r);this.activateYeaftAgent(r,l||null)}else r&&n&&this.activateYeaftAgent(r);r&&n&&(this.markYeaftSessionRead(n,r),Rc(this,r,n));let a=!o&&n===s;if(r&&n){this.yeaftSessionAgentById={...this.yeaftSessionAgentById||{},[n]:r};let l=this.yeaftConversationIdsByAgent?.[r]||null;l||(l=`yeaft-local-${r}-${Date.now()}`,this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[r]:l}),this.yeaftConversationId=l,this.messagesMap[l]||(this.messagesMap[l]=[]),this.currentView==="yeaft"&&(this.activeConversations=[l])}try{let l=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();l&&typeof l.setActive=="function"&&l.setActive(n,r||null);let c=l?.activeSessionKey||null;c?localStorage.setItem("lastViewedYeaftSession",c):localStorage.removeItem("lastViewedYeaftSession")}catch{}this.syncActiveYeaftHistoryLoad(),this.hydrateYeaftHistoryBrowserCache(n,r,{revalidate:!0})},async switchYeaftModel(e,t=null,s=void 0){if(!e||!this.currentAgent)return;let n=t||null;if(n){let r={model:e};return s!==void 0&&(r.modelEffort=s||null),await this.sessionCrudRequest("update_config",{sessionId:n,config:r},{agentId:be(this,n)})}return this.sendWsMessage({type:"yeaft_model_switch",model:e,modelEffort:s||null,agentId:this.currentAgent}),null},setYeaftDebugSearch(e){this.yeaftDebugSearch=typeof e=="string"?e:"",this._yeaftDebugSearchTimer&&clearTimeout(this._yeaftDebugSearchTimer),this._yeaftDebugSearchTimer=setTimeout(()=>{this._yeaftDebugSearchTimer=null,this.yeaftDebugLoops=[],this.yeaftDebugTurnsById={},this.yeaftDebugTurnOrder=[],this.loadYeaftDebugHistory({limit:this.yeaftDebugSearch.trim()?kp:Ja,dreamLimit:5,indexOnly:!0,search:this.yeaftDebugSearch})},250)},setYeaftDebugSessionFilter(e){e==null?this.yeaftDebugSessionFilter=null:this.yeaftDebugSessionFilter=String(e)},toggleSubAgentCardExpand(e){let t=this.yeaftSubAgentCards?.[e];t&&(this.yeaftSubAgentCards={...this.yeaftSubAgentCards,[e]:{...t,expanded:!t.expanded}})},loadTelemetrySettings(){return this.currentAgent?new Promise(e=>{this._telemetryPending||(this._telemetryPending={}),this._telemetryPending.load=e,this.sendWsMessage({type:"get_telemetry_settings",agentId:this.currentAgent})}):(this.telemetrySettings={enabled:!0,retentionDays:3,flushIntervalMs:1e3,maxQueueSize:5e3,rawExchangeMaxBytes:524288,traceTextMaxBytes:262144,loaded:!0},Promise.resolve(this.telemetrySettings))},updateTelemetrySettings(e){return this.currentAgent?new Promise(t=>{this._telemetryPending||(this._telemetryPending={}),this._telemetryPending.update=t,this.sendWsMessage({type:"update_telemetry_settings",agentId:this.currentAgent,settings:e||{}})}):Promise.resolve({error:"no agent"})},loadSearchSettings(){return this.currentAgent?new Promise(e=>{this._searchPending||(this._searchPending={}),this._searchPending.load=e,this.sendWsMessage({type:"get_search_settings",agentId:this.currentAgent})}):(this.searchSettings={backend:"tavily",tavilyKeyConfigured:!1,tavilyKeyMasked:null,disableHtmlFallback:!1,loaded:!0},Promise.resolve(this.searchSettings))},updateSearchSettings(e){return this.currentAgent?new Promise(t=>{this._searchPending||(this._searchPending={}),this._searchPending.update=t,this.sendWsMessage({type:"update_search_settings",agentId:this.currentAgent,settings:e||{}})}):Promise.resolve({error:"no agent"})},loadTavilyUsage(){return this.currentAgent?(this.tavilyUsageLoading=!0,new Promise(e=>{this._searchPending||(this._searchPending={}),this._searchPending.usage=e,this.sendWsMessage({type:"get_tavily_usage",agentId:this.currentAgent})})):Promise.resolve(null)},loadYeaftMcpServers(){if(!this.currentAgent)return this.yeaftMcpServers=[],this.yeaftMcpRuntime={connected:!1,toolCount:0,perServer:[]},Promise.resolve({servers:[],runtime:this.yeaftMcpRuntime});this.yeaftMcpLoading=!0;let e=`mcp-list-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(t=>{this._mcpPending||(this._mcpPending={}),this._mcpPending[e]=t,this.sendWsMessage({type:"yeaft_mcp_list",agentId:this.currentAgent,requestId:e})})},addYeaftMcpServer(e){if(!this.currentAgent)return Promise.resolve({error:"no agent"});this.yeaftMcpLoading=!0;let t=`mcp-add-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(s=>{this._mcpPending||(this._mcpPending={}),this._mcpPending[t]=s,this.sendWsMessage({type:"yeaft_mcp_add",agentId:this.currentAgent,requestId:t,server:e||{}})})},removeYeaftMcpServer(e){if(!this.currentAgent)return Promise.resolve({error:"no agent"});this.yeaftMcpLoading=!0;let t=`mcp-rem-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(s=>{this._mcpPending||(this._mcpPending={}),this._mcpPending[t]=s,this.sendWsMessage({type:"yeaft_mcp_remove",agentId:this.currentAgent,requestId:t,name:e})})},reloadYeaftMcpServer(e){if(!this.currentAgent)return Promise.resolve({error:"no agent"});this.yeaftMcpLoading=!0;let t=`mcp-rel-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(s=>{this._mcpPending||(this._mcpPending={}),this._mcpPending[t]=s,this.sendWsMessage({type:"yeaft_mcp_reload",agentId:this.currentAgent,requestId:t,name:e||null})})},clearYeaftMessages(){let e=this.yeaftConversationId;e&&(Ce(this,e),delete this.messagesMap[e],delete this.processingConversations[e],delete this.executionStatusMap[e],delete this.refreshingSessionMap[e],this._closedAt&&delete this._closedAt[e],this._turnCompletedConvs?.delete(e)),this.yeaftConversationId=this.currentAgent?`yeaft-local-${this.currentAgent}-${Date.now()}`:`yeaft-local-${Date.now()}`,this.currentAgent&&(this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[this.currentAgent]:this.yeaftConversationId}),this.messagesMap[this.yeaftConversationId]=[],this.activeConversations=[this.yeaftConversationId],this.yeaftSessionReady=!1,this.yeaftModel=null,this.yeaftAvailableModels=[],this.yeaftStatus=null,this._yeaftAskTerminalEvents={},this.yeaftDebugLoops=[],this.yeaftDebugTurnsById={},this.yeaftDebugTurnOrder=[],this.yeaftDebugHistoryLoading=!1,this.yeaftDebugHistoryError=null,this.yeaftDebugHistoryFetchedAt=0,this.yeaftDebugSearch="",this.yeaftDebugSessionFilter=null,this.yeaftDebugPanel={open:!1,status:"idle",requestId:null,agentId:null,sessionId:null,turnId:null,error:null},this._yeaftDebugSearchTimer&&(clearTimeout(this._yeaftDebugSearchTimer),this._yeaftDebugSearchTimer=null),this._fetchYeaftDebugHistoryTimer&&(clearTimeout(this._fetchYeaftDebugHistoryTimer),this._fetchYeaftDebugHistoryTimer=null),this._yeaftDebugHistoryInFlightKey=null,this._yeaftDebugHistoryLatestListRequestId=null,this._yeaftDebugHistoryLatestDetailRequestId=null,this.yeaftReflectionCards={},this.yeaftSubAgentCards={},this.yeaftDreamLatest={},this.yeaftDreamEvents={},this.vpStatuses={},this.currentAgent&&this.sendWsMessage({type:"yeaft_reset",agentId:this.currentAgent})},togglePaneRightPanel(e,t=null){if(t&&this.isSplitMode){let s=this.panels.find(n=>n.id===t);if(s){s.activeRightPanel=s.activeRightPanel===e?null:e;return}}this.activeRightPanel=this.activeRightPanel===e?null:e},getPaneRightPanel(e){if(e&&this.isSplitMode){let t=this.panels.find(s=>s.id===e);if(t)return t.activeRightPanel}return this.activeRightPanel},setPaneRightPanel(e,t){if(e&&this.isSplitMode){let s=this.panels.find(n=>n.id===e);if(s){s.activeRightPanel=t;return}}this.activeRightPanel=t},applySessionCatalogSnapshot(e,t=null,s=null){let n=r=>{let i=new Set;return(Array.isArray(r)?r:[]).filter(o=>!o?.catalogKey||i.has(o.catalogKey)?!1:(i.add(o.catalogKey),!0)).map(o=>({...o}))};if(this.sessionCatalog=n(e),Array.isArray(s)&&(this.hiddenSessionCatalog=n(s)),Array.isArray(t)){this.sessionProjects=t.filter(i=>i?.id).map(i=>({...i,members:Array.isArray(i.members)?i.members.filter(o=>o?.agentId&&o?.sessionId):i.agentId?(i.sessionIds||[]).map(o=>({agentId:i.agentId,sessionId:o})):[]}));let r=new Map;for(let i of this.sessionProjects)for(let o of i.members)r.set(`${o.agentId}${o.sessionId}`,i.id);this.sessionCatalog=this.sessionCatalog.map(i=>i.runtimeProvider==="yeaft"?{...i,projectId:r.get(`${i.routeRef?.agentId}${i.routeRef?.sessionId}`)||null}:i)}this.sessionCatalogLoaded=!0},mutateProject(e,t={},s=null){let n=s||t.agentId||this.currentAgent||null;if(e==="move_session"&&!n)return Promise.resolve({ok:!1,error:{code:"missing_agent"}});let r=`project_${crypto.randomUUID()}`;return new Promise(i=>{let o=setTimeout(()=>{delete this.projectMutationRequests[r],i({ok:!1,error:{code:"timeout"}})},1e4);this.projectMutationRequests[r]={connectionGeneration:Number(this.chatHistoryConnectionGeneration||0),catalogOrder:Array.isArray(t.catalogOrder)?t.catalogOrder:null,resolve:l=>{clearTimeout(o),i(l)}},this.sendWsMessage({type:"yeaft_project_mutation",...n?{agentId:n,targetAgentId:n}:{},requestId:r,op:e,...t})||(clearTimeout(o),delete this.projectMutationRequests[r],i({ok:!1,error:{code:"send_failed"}}))})},applyLegacyProjectSnapshot(e,t){if(!t||!Array.isArray(e))return;let s=this.sessionProjects.filter(r=>r.legacyAgentId!==t),n=e.filter(r=>r?.id).map(r=>({...r,id:`${t}${r.id}`,legacyProjectId:r.id,legacyAgentId:t,members:(r.sessionIds||[]).map(i=>({agentId:t,sessionId:i}))}));this.applySessionCatalogSnapshot(this.sessionCatalog,[...s,...n])},finishLegacyProjectMutation(e,t){if(!e?.requestId)return!1;let s=this.projectMutationRequests[e.requestId]||null;return!s||s.connectionGeneration!==Number(this.chatHistoryConnectionGeneration||0)?!1:(delete this.projectMutationRequests[e.requestId],e.ok&&Array.isArray(e.projects)&&t&&this.applyLegacyProjectSnapshot(e.projects,t),s.resolve(e),!0)},finishProjectMutation(e){if(!e?.requestId)return!1;let t=this.projectMutationRequests[e.requestId]||null;if(!t||t.connectionGeneration!==Number(this.chatHistoryConnectionGeneration||0))return!1;if(delete this.projectMutationRequests[e.requestId],e.ok){if(Array.isArray(t.catalogOrder)){let s=new Map(this.sessionCatalog.map(r=>[r.catalogKey,r])),n=t.catalogOrder.map((r,i)=>{let o=s.get(r?.catalogKey);return o?{...o,sortRank:i}:null}).filter(Boolean);n.length===this.sessionCatalog.length&&(this.sessionCatalog=n,vp(n))}Array.isArray(e.projects)&&this.applySessionCatalogSnapshot(this.sessionCatalog,e.projects)}return t.resolve(e),!0},toggleCatalogSessionPin(e){if(!e?.catalogKey||!e?.routeRef||Object.keys(this.sessionCatalogMutationRequests).length>0)return!1;let t=`session_ui_${crypto.randomUUID()}`,s=er(this,t),n=!e.pinned;return e.pinned=n,this.sendWsMessage({type:"set_session_ui_metadata",requestId:t,catalogKey:e.catalogKey,routeRef:e.routeRef,pinned:n,sortRank:Number.isFinite(e.sortRank)?e.sortRank:null})?!0:(this.sessionCatalog=s,delete this.sessionCatalogMutationRequests[t],!1)},hideCatalogSession(e){if(!e?.catalogKey||!e?.routeRef||Object.keys(this.sessionCatalogMutationRequests).length>0)return!1;let t=`session_hide_${crypto.randomUUID()}`,s=er(this,t);return this.sessionCatalog=this.sessionCatalog.filter(r=>r.catalogKey!==e.catalogKey),this.hiddenSessionCatalog=[...(this.hiddenSessionCatalog||[]).filter(r=>r.catalogKey!==e.catalogKey),{...e,hidden:!0}],this.sendWsMessage({type:"set_session_ui_metadata",requestId:t,catalogKey:e.catalogKey,routeRef:e.routeRef,hidden:!0,...Number.isFinite(e.sortRank)?{sortRank:e.sortRank}:{}})?!0:(this.sessionCatalog=s,this.hiddenSessionCatalog=Array.isArray(this.sessionCatalogMutationRequests[t]?.previousHiddenCatalog)?this.sessionCatalogMutationRequests[t].previousHiddenCatalog:[],delete this.sessionCatalogMutationRequests[t],!1)},restoreCatalogSession(e){if(!e?.catalogKey||!e?.routeRef||Object.keys(this.sessionCatalogMutationRequests).length>0)return!1;let t=`session_restore_${crypto.randomUUID()}`,s=er(this,t);return this.hiddenSessionCatalog=(this.hiddenSessionCatalog||[]).filter(r=>r.catalogKey!==e.catalogKey),this.sessionCatalog=this.sessionCatalog.some(r=>r.catalogKey===e.catalogKey)?this.sessionCatalog:[...this.sessionCatalog,{...e,hidden:!1}],this.sendWsMessage({type:"set_session_ui_metadata",requestId:t,catalogKey:e.catalogKey,routeRef:e.routeRef,hidden:!1,...Number.isFinite(e.sortRank)?{sortRank:e.sortRank}:{}})?!0:(this.sessionCatalog=s,this.hiddenSessionCatalog=Array.isArray(this.sessionCatalogMutationRequests[t]?.previousHiddenCatalog)?this.sessionCatalogMutationRequests[t].previousHiddenCatalog:[],delete this.sessionCatalogMutationRequests[t],!1)},renameCatalogSession({row:e,title:t}={}){if(!e?.routeRef||!t)return!1;let{runtimeProvider:s,agentId:n,sessionId:r}=e.routeRef;if(s==="yeaft")this.sessionCrudRequest("rename",{sessionId:r,name:t},{agentId:n});else if(s==="claude-code"||s==="copilot")this.renameChatSession(r,t,n);else return!1;return!0},reorderCatalogSessions(e){if(!Array.isArray(e)||e.length===0||Object.keys(this.sessionCatalogMutationRequests).length>0)return!1;let t=`session_order_${crypto.randomUUID()}`,s=er(this,t);return this.sessionCatalog=e.map((r,i)=>({...r,sortRank:i})),this.sendWsMessage({type:"reorder_session_catalog",requestId:t,sessions:this.sessionCatalog.map((r,i)=>({catalogKey:r.catalogKey,routeRef:r.routeRef,pinned:!!r.pinned,sortRank:i}))})?!0:(this.sessionCatalog=s,delete this.sessionCatalogMutationRequests[t],!1)},finishSessionCatalogMutation(e){if(!Bc(this,e))return!1;if(e?.ok===!0&&e?.type==="session_ui_metadata_updated"){let s=n=>{n&&(n.pinned=e.pinned===!0,Object.prototype.hasOwnProperty.call(e,"sortRank")&&(n.sortRank=Number.isFinite(e.sortRank)?e.sortRank:null))};s(this.sessionCatalog.find(n=>n.catalogKey===e.catalogKey)),s(this.hiddenSessionCatalog.find(n=>n.catalogKey===e.catalogKey))}return e?.ok===!0&&e?.type==="session_catalog_reorder_result"&&vp(this.sessionCatalog),!0},openCatalogSession(e){if(!e?.catalogKey||!e.routeRef)return!1;let{runtimeProvider:t,agentId:s,sessionId:n}=e.routeRef;if(this.activeCatalogKey=e.catalogKey,t==="yeaft"){let r=this.isSessionHistorySyncing(e.routeRef);return this.enterYeaft(s,{deferBootstrap:!0}),this.setActiveSessionFilter(n,{agentId:s,force:!1}),r||this.reloadYeaftMessages(),!0}return t!=="claude-code"&&t!=="copilot"?!1:(this.currentView==="yeaft"&&this.leaveYeaft(),this.selectConversation(n,s,{refresh:!0}),!0)},syncChatConversationHistory(e){if(!e)return null;let t=os(e);if(this.chatHistoryRequests[t]?.loading)return this.chatHistoryRequests[t].requestId;let s=Ps(this.messagesMap[e]);return this.requestChatHistory(e,s===null?{mode:"recent",turns:5}:{mode:"delta",afterMessageId:s})},requestChatHistory(e,{mode:t="recent",turns:s=null,beforeId:n=null,afterMessageId:r=null}={}){if(!e)return null;let i=os(e);if(this.chatHistoryRequestIdSupported!==!0&&this.chatHistoryRequests[i]?.loading)return null;let o=n??r??null,a=this.beginChatHistoryRequest(e,t,o);return this.sendWsMessage({type:"sync_messages",conversationId:e,...s!=null?{turns:s}:{},...n!=null?{beforeId:n}:{},...r!=null?{afterMessageId:r}:{},requestId:a})?(setTimeout(()=>{aa(this,i,a,"history_load_timeout")},1e4),a):(aa(this,i,a,"send_failed"),null)},beginChatHistoryRequest(e,t="recent",s=null){return Nc(this,e,t,s)},isCurrentChatHistoryResponse(e){if(!e?.conversationId||!e?.requestId||!e?.catalogKey)return!1;let t=os(e.conversationId);if(e.catalogKey!==t)return!1;let s=this.chatHistoryRequests[t];return!!s&&s.loading===!0&&s.requestId===e.requestId&&Number(s.connectionGeneration||0)===Number(this.chatHistoryConnectionGeneration||0)},finishChatHistoryRequest(e){if(!this.isCurrentChatHistoryResponse(e))return!1;let t=this.chatHistoryRequests[e.catalogKey];return this.chatHistoryRequests[e.catalogKey]={...t,loading:!1},!0},isRefreshingSession(e){return e?!!this.refreshingSessionMap[e]:this.refreshingSession},setRefreshingSession(e,t){e&&(this.refreshingSessionMap[e]=t),this.refreshingSession=t},enterBtwMode(){this.btwMode=!0,this.btwMessages=[],this.btwLoading=!1,this.btwSessionId=null},sendBtwQuestion(e){this.currentConversation&&(this.btwMessages.push({role:"user",content:e}),this.btwMessages.push({role:"assistant",content:""}),this.btwLoading=!0,this.sendWsMessage({type:"btw_question",conversationId:this.currentConversation,question:e,btwSessionId:this.btwSessionId}))},closeBtw(){this.btwMode=!1,this.btwMessages=[],this.btwLoading=!1,this.btwSessionId=null},appendBtwDelta(e){let t=this.btwMessages[this.btwMessages.length-1];t&&t.role==="assistant"&&(t.content+=e)},addSubagent(e,t){this.subagents[e]||(this.subagents[e]={}),this.subagents[e][t.id]={id:t.id,slug:t.slug||t.id,type:t.type||"Task",description:t.description||"",parentToolUseId:t.parentToolUseId||null,status:"running",startTime:Date.now(),messages:[],toolCallCount:0},e===this.currentConversation&&this.activeRightPanel!=="subagents"&&(this.activeRightPanel="subagents")},appendSubagentMessage(e,t,s){let n=this.subagents[e];if(!n||!n[t])return;let r=n[t];if(s?.type==="tool"){r.toolCallCount=Number(r.toolCallCount||0)+1;return}s?.type==="text"&&r.messages.push(s)},completeSubagent(e,t){let s=this.subagents[e];!s||!s[t]||(s[t].status="completed")},sendWsMessage(e){return id(this,e)},parseWsMessage(e){return od(this,e)},connect(){ad(this)},ensureConnected(){return nr(this)},scheduleReconnect(){ld(this)},manualReconnect(){cd(this)},startHeartbeat(){dd(this)},stopHeartbeat(){ud(this)},setupVisibilityHandler(){pd(this)},handleMessage(e){iu(this,e)},getOrCreateExecutionStatus(e){return Pa(this,e)},handleAssistantOutputFrame(e,t,s=null){Yd(this,e,t,s)},handleClaudeOutput(e,t){this.handleAssistantOutputFrame(e,t,null)},addMessageToConversation(e,t){return di(this,e,t)},pruneConversationMessageRetention(e,t=null,s=null,n=void 0){return Mc(this,{conversationId:e,sessionId:t,agentId:s,limits:n})},appendToAssistantMessageForConversation(e,t,s){wd(this,e,t,s)},finishStreamingForConversation(e,t){kd(this,e,t)},sweepStaleStreamingForConversation(e){Sd(this,e)},appendToAssistantMessage(e){this.appendToAssistantMessageForConversation(this.currentConversation,e)},finishStreaming(){this.finishStreamingForConversation(this.currentConversation)},addMessage(e){this.addMessageToConversation(this.currentConversation,e)},loadHistoryMessages(e){Id(this,e)},formatDbMessage(e){return ya(e)},formatDbMessageForHistoryHydration(e){return Ad(e)},selectAgent(e){return fu(this,e)},createConversation(e,t=null,s=null,n=void 0){gu(this,e,t,s,n)},resumeConversation(e,t,s=null,n=null,r=null){mu(this,e,t,s,n,r)},selectConversation(e,t,s={}){hu(this,e,t,s)},updateConversationSettings(e,t){$a(this,e,t)},toggleConversationMcp(e,t){vu(this,e,t)},deleteConversation(e,t){bu(this,e,t)},closeSession(e,t){yu(this,e,t)},appendColumn(e){Iu(this,e)},removeColumn(e){Cu(this,e)},sendMessageToConversation(e,t,s=[],n={}){Au(this,e,t,s,n)},cancelExecutionForConversation(e){xu(this,e)},addPanel(){if(this.panels.length>=3)return;let e=(t,s)=>({id:t,conversationId:s,activeRightPanel:null});if(this.panels.length===0){let t=localStorage.getItem("splitPanesSaved");if(t){try{let s=JSON.parse(t);if(Array.isArray(s)&&s.length>=2){let n=new Set(this.conversations.map(i=>i.id)),r=s.filter(i=>i&&typeof i.id=="string").map(i=>({...e(i.id,null),conversationId:i.conversationId&&n.has(i.conversationId)?i.conversationId:null}));if(r.length>=2){this.panels=r,this.activePanelId=r[0].id;for(let i of r)i.conversationId&&!this.activeConversations.includes(i.conversationId)&&this.activeConversations.push(i.conversationId),i.conversationId&&!this.messagesMap[i.conversationId]&&(this.messagesMap[i.conversationId]=[],this.requestChatHistory(i.conversationId,{mode:"recent",turns:5}));localStorage.removeItem("splitPanesSaved"),this.saveOpenSessions();return}}}catch{}localStorage.removeItem("splitPanesSaved")}this.panels=[e("panel-0",this.currentConversation),e("panel-1",null)],this.activePanelId="panel-0"}else{let t="panel-"+Date.now();this.panels.push(e(t,null))}this.saveOpenSessions()},removePanel(e){let t=this.panels.findIndex(s=>s.id===e);if(!(t<0)){if(this.panels.splice(t,1),this.panels.length<=1){let s=this.panels[0];s?.conversationId&&(this.activeConversations=[s.conversationId]),this.panels=[],this.activePanelId=null}else this.activePanelId===e&&(this.activePanelId=this.panels[0]?.id||null);this.saveOpenSessions()}},setPanelConversation(e,t,{refresh:s=!1}={}){let n=this.panels.find(i=>i.id===e);if(!n)return;let r=n.conversationId===t;n.conversationId=t,t&&!this.activeConversations.includes(t)&&this.activeConversations.push(t),t&&!this.messagesMap[t]?(this.messagesMap[t]=[],this.syncChatConversationHistory(t)):t&&(s||!r)&&this.syncChatConversationHistory(t),this.saveOpenSessions()},setActivePanel(e){this.activePanelId=e},splitToPanel(e){if(!e)return;let t=(s,n)=>({id:s,conversationId:n,activeRightPanel:null});if(this.panels.length===0)this.panels=[t("panel-0",this.currentConversation),t("panel-"+Date.now(),e)],this.activePanelId=this.panels[1].id;else if(this.panels.length>=3)this.panels[this.panels.length-1].conversationId=e,this.activePanelId=this.panels[this.panels.length-1].id;else{let s="panel-"+Date.now();this.panels.push(t(s,e)),this.activePanelId=s}this.activeConversations.includes(e)||this.activeConversations.push(e),this.messagesMap[e]||(this.messagesMap[e]=[],this.requestChatHistory(e,{mode:"recent",turns:5})),this.saveOpenSessions()},isInAnyPanel(e){return this.panels.some(t=>t.conversationId===e)},setSessionPinned(e,t,s={}){if(!e)return;let n=s&&s.agentId?s.agentId:null,r=n?!!ds()?.sessionById?.(e,n)?.pinned:this.pinnedSessions.includes(e);if(t&&!r)this.pinnedSessions.unshift(e);else if(!t&&r){let i=this.pinnedSessions.indexOf(e);i>=0&&this.pinnedSessions.splice(i,1)}try{localStorage.setItem("pinned-sessions",JSON.stringify(this.pinnedSessions))}catch{}try{let i=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore(),o=be(this,e,n);i&&typeof i.applyPinState=="function"&&i.applyPinState(e,!!t,o)}catch{}},togglePin(e,t={}){let s=t&&t.agentId?t.agentId:null,n=s?ds()?.sessionById?.(e,s):null,r=t&&Object.prototype.hasOwnProperty.call(t,"pinned"),o=!(n?!!n.pinned:r?!!t.pinned:this.pinnedSessions.includes(e));this.setSessionPinned(e,o,{agentId:s});let a={type:o?"pin_session":"unpin_session",conversationId:e};t&&t.sessionKind==="yeaft"&&(a.sessionKind="yeaft",t.agentId&&(a.agentId=t.agentId),t.sessionName&&(a.sessionName=t.sessionName),t.workDir&&(a.workDir=t.workDir)),this.sendWsMessage(a)},isSessionPinned(e){return this.pinnedSessions.includes(e)},applyServerPinSnapshot(e,t,s){if(!Array.isArray(this.pinnedSessions))return;let n=new Set(this.pinnedSessions),r=[];for(let i of t)n.has(i)||r.push(i);if(r.length>0&&(this.pinnedSessions=[...r,...this.pinnedSessions]),e){let i=this.pinnedSessions.filter(o=>s(o)?t.has(o):!0);i.length!==this.pinnedSessions.length&&(this.pinnedSessions=i)}try{localStorage.setItem("pinned-sessions",JSON.stringify(this.pinnedSessions))}catch{}},clearYeaftSessionProcessingIfIdle(e,{agentId:t=null,ignoreStatuses:s=!1}={}){if(!e)return;let n=t||be(this,e);if(Object.values(this.activeVpTurns||{}).some(a=>nt(a,e,n))||!s&&Object.values(this.vpStatuses||{}).some(l=>nt(l,e,n)&&kr.has(l?.state)))return;let i=It(n,e),o={...this.yeaftProcessingSessions||{}};i&&delete o[i],Mi(this,e,n)&&delete o[e],this.yeaftProcessingSessions=o},sendMessage(e,t=[],s={}){wu(this,e,t,s)},cancelExecution(){ku(this)},cancelYeaft(){if(!this.currentAgent)return;this.sendWsMessage({type:"yeaft_abort_all",agentId:this.currentAgent});let e=this.yeaftConversationIdsByAgent?.[this.currentAgent]||this.yeaftConversationId;e&&delete this.processingConversations[e],lp(this,this.currentAgent)},cancelYeaftSession(e){let t=be(this,e);!t||!e||(this.sendWsMessage({type:"yeaft_abort_all",agentId:t,sessionId:e}),this.activeVpTurns=Object.fromEntries(Object.entries(this.activeVpTurns||{}).filter(([,s])=>!nt(s,e,t))),this.stoppingVpTurnIds=Object.fromEntries(Object.entries(this.stoppingVpTurnIds||{}).filter(([s])=>this.activeVpTurns?.[s])),this.vpStatuses=Object.fromEntries(Object.entries(this.vpStatuses||{}).filter(([,s])=>!nt(s,e,t))),this.clearYeaftSessionProcessingIfIdle(e,{agentId:t,ignoreStatuses:!0}))},cancelVpTurn(e,{sessionId:t=null,vpId:s=null}={}){let n=be(this,t);if(!n||!e)return;let r=hn(this,n,e);this.stoppingVpTurnIds={...this.stoppingVpTurnIds,[r]:Date.now()};let i={type:"yeaft_abort_turn",agentId:n,turnId:e};t&&(i.sessionId=t),s&&(i.vpId=s),this.sendWsMessage(i)},cancelVpTurnForSession(e,t=null){if(!e)return!1;let s=t||this.yeaftActiveSessionFilter||null;if(!s)return!1;let n=be(this,s);if(!n)return!1;let r=this.activeVpTurns||{},i=null,o=-1/0;for(let[a,l]of Object.entries(r)){if(!l||l.vpId!==e||!nt(l,s,n))continue;let c=typeof l.startedAt=="number"?l.startedAt:0;c>=o&&(o=c,i=a)}if(!i){let a=this.vpStatuses?.[Ai(n,s,e)]||null;a?.turnId&&!["idle","offline"].includes(a.state)&&(i=a.turnId)}if(i){let a=r[i]?.turnId||i;return this.cancelVpTurn(a,{sessionId:s,vpId:e}),!0}return this.sendWsMessage({type:"yeaft_abort_turn",agentId:n,sessionId:s,vpId:e}),!0},answerUserQuestion(e,t,s){Su(this,e,t,s)},refreshAgents(){Tu(this)},refreshConversation(){Mu(this)},restartAgent(e){Pu(this,e)},upgradeAgent(e){Ru(this,e)},loadMoreMessages(){if(this.currentView==="yeaft"||this.loadingMoreMessages||!this.hasMoreMessages||!this.currentConversation)return;this.loadingMoreMessages=!0;let e=this._loadMoreGeneration=(this._loadMoreGeneration||0)+1,s=(this.messagesMap[this.currentConversation]||[]).find(i=>i.dbMessageId),n=this.currentConversation,r=s?.dbMessageId??null;this.requestChatHistory(n,{mode:"older",turns:5,beforeId:r}),setTimeout(()=>{this._loadMoreGeneration===e&&this.loadingMoreMessages&&this.currentConversation===n&&(this.loadingMoreMessages=!1)},1e4)},reloadYeaftMessages(){if(this.currentView!=="yeaft")return!1;let e=Fs(this),t=be(this,e);if(!t)return!1;let s=he(t,e),n=this.yeaftConversationId,r=this.yeaftSessionHistoryState?.[s];if(r?.loading)return r.requestId||!1;let i=this.beginYeaftHistoryLoad({agentId:t,sessionId:e,mode:"recent",preserveLoaded:!1});if(!i)return!1;let o=_s();this.yeaftHistoryPerfTraceBySession={...this.yeaftHistoryPerfTraceBySession||{},[s]:o};let a={type:"yeaft_load_history",agentId:t,limit:xi,sessionId:e,requestId:i.requestId,perfTraceId:o};return Ge(this,{traceId:o,phase:"history.request_send",agentId:t,sessionId:e,messageType:a.type,bytes:JSON.stringify(a).length,detail:{mode:"manual-reload",limit:xi}}),this.sendWsMessage(a)?!0:(Un(this,{agentId:t,sessionId:e,requestId:i.requestId,error:"history_load_send_failed"}),!1)},loadMoreYeaftHistory(e=br()){if(this.currentView!=="yeaft"||this.yeaftLoadingMoreHistory||!this.yeaftHasMoreHistory)return;let t=Fs(this),s=be(this,t);if(!s)return;let n=Math.min(50,Math.max(1,Number.isFinite(e)?Math.floor(e):br())),r=he(s,t),i=this.yeaftHistoryCacheState?.[r]?.ranges||[],o=this.yeaftSessionHistoryState?.[r]||{},a=Number(this.yeaftHistoryCacheState?.[r]?.rangeEpoch)||0,l=Pd(o,i,a);if(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState||{},[r]:l.state},!l.request){this.syncActiveYeaftHistoryLoad();return}let c=this.beginYeaftHistoryLoad({agentId:s,sessionId:t,mode:"older",preserveLoaded:!0,latestSeq:this.yeaftSessionHistoryState[r]?.latestSeq??null});if(!c)return;let d=_s();this.yeaftHistoryPerfTraceBySession={...this.yeaftHistoryPerfTraceBySession||{},[r]:d};let u={type:"yeaft_load_more_history",agentId:s,sessionId:t,requestId:c.requestId,beforeSeq:l.request.beforeSeq,pageKind:l.request.kind,gapStopAtSeq:l.request.stopAtSeq,cacheEpoch:l.request.cacheEpoch,turns:n,perfTraceId:d};Ge(this,{traceId:d,phase:"history_more.request_send",agentId:s,sessionId:t,messageType:u.type,bytes:JSON.stringify(u).length,detail:{beforeSeq:u.beforeSeq,turns:u.turns,pageKind:l.request.kind,gapStopAtSeq:l.request.stopAtSeq}}),this.sendWsMessage(u)},checkPendingRecovery(){qc(this)},performRecovery(){Wc(this)},dismissRecovery(){jc(this)},autoRestoreConversation(e){Uc(this,e)},saveOpenSessions(){xs(this)},getLastSession(){return zc(this)},clearLastSession(){Yc(this)},listHistorySessions(e){Gc(this,e)},listFolders(){return Qc(this)},listFoldersForAgent(e,t){return Xc(this,e,t)},listModelsForAgent(e,t){return Zc(this,e,t)},listHistorySessionsForAgent(e,t,s){Jc(this,e,t,s)},async loadGlobalSessions(e=20){return ed(this,e)},async deleteGlobalSession(e){return td(this,e)},findAgentForSession(e){return ca(this,e)},isSessionResumable(e){return sd(this,e)},_isRecentlyClosed(e){return Rs(this,e)},_startProcessingWatchdog(e){an(this,e)},_resetProcessingWatchdog(e){pi(this,e)},_stopProcessingWatchdog(e){Ce(this,e)},startRefreshTimeout(e){let t=e||this.currentConversation;t&&(this._refreshTimeouts||(this._refreshTimeouts={}),this._refreshTimeouts[t]&&clearTimeout(this._refreshTimeouts[t]),this._refreshTimeouts[t]=setTimeout(()=>{this.setRefreshingSession(t,!1),delete this._refreshTimeouts[t]},1e4))},toggleTheme(){this.theme=this.theme==="dark"?"light":"dark",this.themeFollowSystem=!1,localStorage.setItem("theme",this.theme),document.documentElement.setAttribute("data-theme",this.theme),document.documentElement.classList.toggle("light",this.theme==="light")},initTheme(){if(document.documentElement.setAttribute("data-theme",this.theme),document.documentElement.classList.toggle("light",this.theme==="light"),this.themeFollowSystem&&typeof window<"u"&&window.matchMedia){let e=window.matchMedia("(prefers-color-scheme: dark)"),t=s=>{this.themeFollowSystem&&(this.theme=s.matches?"dark":"light",document.documentElement.setAttribute("data-theme",this.theme),document.documentElement.classList.toggle("light",this.theme==="light"))};e.addEventListener?e.addEventListener("change",t):e.addListener&&e.addListener(t)}},loadModelsDevRegistry({forceRefresh:e=!1}={}){let t=this.modelsDevRegistry.loaded&&!this.modelsDevRegistry.error&&Date.now()-this.modelsDevRegistry.fetchedAt<36e5;if(!e&&t)return Promise.resolve(this.modelsDevRegistry);let s=this.currentAgent;if(!s)return Promise.resolve(this.modelsDevRegistry);if(this._modelsDevPending&&(!e||this._modelsDevPending.force))return new Promise(n=>this._modelsDevPending.resolvers.push(n));if(this._modelsDevPending){let n=this._modelsDevPending;this._modelsDevPending=null,n.timer&&clearTimeout(n.timer);for(let r of n.resolvers)r(this.modelsDevRegistry)}return new Promise(n=>{let r={resolvers:[n],force:e,timer:null};this._modelsDevPending=r;try{this.sendWsMessage({type:"get_models_dev_registry",agentId:s,forceRefresh:e})}catch{this._modelsDevPending===r&&(this._modelsDevPending=null),n(this.modelsDevRegistry);return}r.timer=setTimeout(()=>{if(this._modelsDevPending===r){this._modelsDevPending=null;for(let i of r.resolvers)i(this.modelsDevRegistry)}},2e4)})},changeLocale(e){if(this.locale=e,Jn(e),this.currentAgent)try{this.sendWsMessage({type:"update_llm_config",agentId:this.currentAgent,config:{language:e}})}catch{}},async fetchCustomExpertRoles(){let e=De();try{let t={};e.token&&(t.Authorization=`Bearer ${e.token}`);let s=await fetch("/api/expert-roles/custom",{headers:t});if(s.ok){let n=await s.json();this.customExpertRoles=n.roles||[]}}catch{}},async createCustomExpertRole(e){let t=De();try{let s={"Content-Type":"application/json"};t.token&&(s.Authorization=`Bearer ${t.token}`);let n=await fetch("/api/expert-roles/custom",{method:"POST",headers:s,body:JSON.stringify(e)});if(n.ok){let r=await n.json();return this.customExpertRoles.push(r.role),r.role}else{let r=await n.json().catch(()=>({}));throw new Error(r.error||"Failed to create custom expert role")}}catch(s){throw s}},async updateCustomExpertRole(e,t){let s=De();try{let n={"Content-Type":"application/json"};s.token&&(n.Authorization=`Bearer ${s.token}`);let r=await fetch(`/api/expert-roles/custom/${e}`,{method:"PUT",headers:n,body:JSON.stringify(t)});if(r.ok){let i=await r.json(),o=this.customExpertRoles.findIndex(a=>a.id===e);return o!==-1&&(this.customExpertRoles[o]=i.role),i.role}else{let i=await r.json().catch(()=>({}));throw new Error(i.error||"Failed to update custom expert role")}}catch(n){throw n}},async deleteCustomExpertRole(e){let t=De();try{let s={};t.token&&(s.Authorization=`Bearer ${t.token}`);let n=await fetch(`/api/expert-roles/custom/${e}`,{method:"DELETE",headers:s});if(n.ok)return this.customExpertRoles=this.customExpertRoles.filter(r=>r.id!==e),!0;{let r=await n.json().catch(()=>({}));throw new Error(r.error||"Failed to delete custom expert role")}}catch(s){throw s}},toggleWorkbench(){this.workbenchExpanded=!this.workbenchExpanded,this.workbenchExpanded||(this.workbenchMaximized=!1)},toggleSidebar(){this.sidebarCollapsed=!this.sidebarCollapsed},toggleSessionSidebar(){this.sessionSidebarOpen=!this.sessionSidebarOpen},closeSessionSidebar(){this.sessionSidebarOpen=!1},toggleWorkbenchMaximized(){this.workbenchMaximized=!this.workbenchMaximized},renameChatSession(e,t,s=null){let n=t&&t.trim()?t.trim():"";n?this.customConversationTitles[e]=n:delete this.customConversationTitles[e],this.sendWsMessage({type:"update_conversation_settings",conversationId:e,...s?{agentId:s}:{},title:n})},openFileInExplorer(e){this.currentConversation&&(this.workbenchExpanded=!0,window.dispatchEvent(new CustomEvent("open-file-in-explorer",{detail:{filePath:e,conversationId:this.currentConversation}})))},logout(){De().logout(),this.authenticated=!1,this.sessionKey=null,this.agents=[],this.currentAgent=null,this.currentAgentInfo=null,this.yeaftStatusByAgent={},this._yeaftRetiredCatalogEpochsByAgent={},this.conversations=[],this.activeConversations=[],this.messagesMap={},this.conversationTitles={},this.customConversationTitles={},this.processingConversations={},this.executionStatusMap={},this.workbenchExpanded=!1,this.subagents={},this.activeSubagentId=null,this.activeRightPanel=null,this.pinnedSessions=[],this.clearWorkCenterBrowserState(),this.ws&&this.ws.close()}}})});function tl(e,t){!e||typeof e.handleYeaftOutput!="function"||!t||e.handleYeaftOutput({event:t})}function $y(e){let t=String(e||""),s=2166136261;for(let n=0;n<t.length;n++)s^=t.charCodeAt(n),s=Math.imul(s,16777619)>>>0;return s>>>0}function nl(e){if(!e)return us[0];let t=String(e).toLowerCase();return Ly[t]||us[$y(t)%us.length]}function Vy(e){return nl(e).background}function Hy(e){return nl(e).foreground}function sl(){let e=typeof window<"u"&&window.Pinia&&window.Pinia.useChatStore?window.Pinia.useChatStore():null;return e&&typeof e.locale=="string"?e.locale:typeof localStorage<"u"&&localStorage.getItem("locale")||""}function Oy(e,t=""){return e?String(t||"").startsWith("zh")?e.descriptionZh||e.roleZh||e.description||e.role||"":e.description||e.role||e.descriptionZh||e.roleZh||"":""}var Dy,us,Ly,NS,_t,vn=N(()=>{({defineStore:Dy}=Pinia);us=[{key:"rat",label:"Rat",glyph:"R",background:"var(--vp-avatar-rat-bg)",foreground:"var(--vp-avatar-rat-fg)"},{key:"ox",label:"Ox",glyph:"O",background:"var(--vp-avatar-ox-bg)",foreground:"var(--vp-avatar-ox-fg)"},{key:"tiger",label:"Tiger",glyph:"T",background:"var(--vp-avatar-tiger-bg)",foreground:"var(--vp-avatar-tiger-fg)"},{key:"rabbit",label:"Rabbit",glyph:"B",background:"var(--vp-avatar-rabbit-bg)",foreground:"var(--vp-avatar-rabbit-fg)"},{key:"dragon",label:"Dragon",glyph:"D",background:"var(--vp-avatar-dragon-bg)",foreground:"var(--vp-avatar-dragon-fg)"},{key:"snake",label:"Snake",glyph:"S",background:"var(--vp-avatar-snake-bg)",foreground:"var(--vp-avatar-snake-fg)"},{key:"horse",label:"Horse",glyph:"H",background:"var(--vp-avatar-horse-bg)",foreground:"var(--vp-avatar-horse-fg)"},{key:"goat",label:"Goat",glyph:"G",background:"var(--vp-avatar-goat-bg)",foreground:"var(--vp-avatar-goat-fg)"},{key:"monkey",label:"Monkey",glyph:"M",background:"var(--vp-avatar-monkey-bg)",foreground:"var(--vp-avatar-monkey-fg)"},{key:"rooster",label:"Rooster",glyph:"K",background:"var(--vp-avatar-rooster-bg)",foreground:"var(--vp-avatar-rooster-fg)"},{key:"dog",label:"Dog",glyph:"D",background:"var(--vp-avatar-dog-bg)",foreground:"var(--vp-avatar-dog-fg)"},{key:"pig",label:"Pig",glyph:"P",background:"var(--vp-avatar-pig-bg)",foreground:"var(--vp-avatar-pig-fg)"}],Ly=Object.freeze({steve:us[8],ada:us[3],linus:us[0],martin:us[4]}),NS=us.map(e=>e.background);_t=Dy("vp",{state:()=>({vps:{},vpOrder:[],emptyLibrary:!1,lastSnapshotAt:0,snapshotStatus:"idle",snapshotAgentId:null,snapshotRequestId:null,snapshotError:"",lastVpSnapshotAgentId:null,lastChange:null,dreamStatus:{},groupDreamStatus:{}}),getters:{vpList(e){return e.vpOrder.map(t=>e.vps[t]).filter(Boolean)},vpCount(e){return e.vpOrder.length},vpById:e=>t=>e.vps[t]||null,vpLabel:e=>t=>{let s=e.vps[t];return s?sl().startsWith("zh")&&s.displayNameZh?s.displayNameZh:s.displayName||s.vpId||t:t},vpDescription:e=>t=>Oy(e.vps[t],sl()),vpInitial:e=>t=>{let s=e.vps[t],n=sl().startsWith("zh"),r=s&&(s.avatar||n&&s.displayNameZh||s.displayName||s.vpId)||t||"?";return String(r).charAt(0).toUpperCase()||"?"},vpColor:e=>t=>{let s=e.vps[t];return s&&s.color?s.color:Vy(t)},vpTextColor:()=>e=>Hy(e),vpAvatarMotif:()=>e=>nl(e),dreamStatusFor:e=>t=>e.dreamStatus[t]||{status:"idle",lastRunAt:null,lastResult:null,lastError:null},groupDreamStatusFor:e=>t=>e.groupDreamStatus[t]||{status:"idle",lastRunAt:null,lastResult:null,lastError:null}},actions:{applySnapshot(e,t=null,s=null){let n=this.snapshotAgentId||null;if(n&&t&&t!==n||s&&this.snapshotRequestId&&s!==this.snapshotRequestId)return!1;let r=e&&Array.isArray(e.vps)?e.vps:[];return this._setActiveSnapshot({vps:r,emptyLibrary:!!(e&&e.emptyLibrary),agentId:t||n||null,requestId:s||this.snapshotRequestId||null,receivedAt:Date.now()}),!0},beginSnapshot(e,t){this.vps={},this.vpOrder=[],this.emptyLibrary=!1,this.lastVpSnapshotAgentId=null,this.snapshotStatus="loading",this.snapshotAgentId=e||null,this.snapshotRequestId=t||null,this.snapshotError=""},failSnapshot(e,t,s=""){return!this.snapshotRequestId||!t||t!==this.snapshotRequestId||e&&this.snapshotAgentId&&e!==this.snapshotAgentId?!1:(this.snapshotStatus="error",this.snapshotAgentId=e||this.snapshotAgentId||null,this.snapshotRequestId=t||this.snapshotRequestId||null,this.snapshotError=String(s||"VP library request failed"),!0)},_setActiveSnapshot({vps:e,emptyLibrary:t,agentId:s,requestId:n,receivedAt:r}){this.vps={},this.vpOrder=[];for(let i of e||[])this._upsertInternal(i);this.emptyLibrary=!!t,this.lastSnapshotAt=r||Date.now(),this.lastVpSnapshotAgentId=s||null,this.snapshotStatus="ready",this.snapshotAgentId=s||null,this.snapshotRequestId=n||null,this.snapshotError=""},upsert(e,t=null,s=null){return s&&this.snapshotAgentId&&s!==this.snapshotAgentId?!1:(this._upsertInternal(e),e&&e.vpId&&(this.lastChange={vpId:e.vpId,kind:"updated",reason:t||null,at:Date.now()}),!0)},remove(e,t=null,s=null){return s&&this.snapshotAgentId&&s!==this.snapshotAgentId||!e?!1:(delete this.vps[e],this.vpOrder=this.vpOrder.filter(n=>n!==e),this.lastChange={vpId:e,kind:"removed",reason:t||"file.removed",at:Date.now()},!0)},_upsertInternal(e){if(!e||!e.vpId)return;let t=!!this.vps[e.vpId];this.vps[e.vpId]={...this.vps[e.vpId]||{},...e},t||this.vpOrder.push(e.vpId),this.emptyLibrary&&(this.emptyLibrary=!1)},triggerDream(e){if(!e)return;this.dreamStatus={...this.dreamStatus,[e]:{...this.dreamStatus[e]||{},status:"running",lastError:null}};let t=window.Pinia&&window.Pinia.useChatStore?window.Pinia.useChatStore():null;t&&typeof t.sendWsMessage=="function"&&t.sendWsMessage({type:"yeaft_dream_trigger",vpId:e})},triggerGroupDream(e,t={}){if(!e)return;this.groupDreamStatus={...this.groupDreamStatus,[e]:{...this.groupDreamStatus[e]||{},status:"running",lastError:null}};let s=window.Pinia&&window.Pinia.useChatStore?window.Pinia.useChatStore():null,n=Date.now();if(tl(s,{type:"dream_progress",phase:"start",groupId:e,manual:!0,trigger:"manual",source:"header-button",ts:n}),!s||typeof s.sendWsMessage!="function"){tl(s,{type:"yeaft_dream_result",groupId:e,success:!1,skipped:!0,skippedReason:"chat-store-unavailable",trigger:"manual",error:null});return}let r={type:"yeaft_dream_trigger",sessionId:e},i=t&&t.agentId?t.agentId:typeof s.agentIdForSession=="function"?s.agentIdForSession(e):s.currentAgent;i&&(r.agentId=i),s.sendWsMessage(r)===!1&&tl(s,{type:"yeaft_dream_result",groupId:e,success:!1,skipped:!0,skippedReason:"websocket-not-open",trigger:"manual",error:null})},applyDreamStatus(e){if(!e)return;let t=e.sessionId;if(t){this.groupDreamStatus={...this.groupDreamStatus,[t]:{...this.groupDreamStatus[t]||{},status:e.status==="running"?"running":e.status||"idle"}};return}if(!e.vpId)return;let s=e.vpId;this.dreamStatus={...this.dreamStatus,[s]:{...this.dreamStatus[s]||{},status:e.status==="running"?"running":e.status||"idle"}}},applyDreamResult(e){if(!e)return;let t=!!e.success,s=!!e.skipped,n={mergedCount:e.mergedCount??null,extractedCount:e.extractedCount??null,entriesCreated:typeof e.entriesCreated=="number"?e.entriesCreated:e.mergedCount??e.extractedCount??0,skipped:s,skippedReason:e.skippedReason||null,sessionsProcessed:typeof e.sessionsProcessed=="number"?e.sessionsProcessed:null,sessionsSkipped:typeof e.sessionsSkipped=="number"?e.sessionsSkipped:null,targetsApplied:typeof e.targetsApplied=="number"?e.targetsApplied:null,durationMs:typeof e.durationMs=="number"?e.durationMs:null,llmCallCount:typeof e.llmCallCount=="number"?e.llmCallCount:0,inputTokens:typeof e.inputTokens=="number"?e.inputTokens:0,outputTokens:typeof e.outputTokens=="number"?e.outputTokens:0,totalTokens:typeof e.totalTokens=="number"?e.totalTokens:0,metrics:e.metrics||null,passBreakdown:e.passBreakdown||e.metrics?.passBreakdown||null,targetErrors:Array.isArray(e.targetErrors)?e.targetErrors:[]},r=t||s?null:e.error||null,i=s?"skipped":t?"success":"error",o=e.sessionId;if(o){this.groupDreamStatus={...this.groupDreamStatus,[o]:{status:i,lastRunAt:Date.now(),lastResult:n,lastError:r}};return}if(!e.vpId)return;let a=e.vpId;this.dreamStatus={...this.dreamStatus,[a]:{status:i,lastRunAt:Date.now(),lastResult:n,lastError:r}}}}})});function rl(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"&&e){let t=Date.parse(e);if(Number.isFinite(t))return t}return 0}function Ri(e){return!e||typeof e!="object"?0:rl(e.lastMessageAt)||rl(e.updatedAt)||rl(e.createdAt)||0}function il(e,t){let s=Ri(t)-Ri(e);return s!==0?s:String(e?.id||"").localeCompare(String(t?.id||""))}function xp(e){return[...Array.isArray(e)?e:[]].sort(il)}var _i=N(()=>{});function Tp(){try{if(typeof localStorage>"u")return{};let e=JSON.parse(localStorage.getItem(_p)||"{}");return e&&typeof e=="object"?e:{}}catch{return{}}}function Fy(e){try{typeof localStorage<"u"&&localStorage.setItem(_p,JSON.stringify(e&&typeof e=="object"?e:{}))}catch{}}function Mp(){try{return typeof localStorage>"u"?[]:Sr(JSON.parse(localStorage.getItem(Ep)||"[]"))}catch{return[]}}function By(e){try{typeof localStorage<"u"&&localStorage.setItem(Ep,JSON.stringify(Sr(e)))}catch{}}function Dp(e,t){return`${e||""}${t||""}`}function jt(e){return e&&e.agentId&&e.id?Dp(e.agentId,e.id):""}function Et(e,t){return t?e?Dp(e,t):String(t):""}function Ny(e){return typeof e=="string"?e:String(e||"")}function ut(e,t,s=null){let n=Ny(t);if(!n)return"";let r=Et(s,n),i=r?e.sessions[r]:null;if(i&&(s||i.agentId||e.inventoryIdentityMode==="legacy-bare"))return r;if(s){let c=e.sessions[n];return e.inventoryIdentityMode==="legacy-bare"&&c&&!c.agentId?n:""}let o=e.sessions[n];if(o){if(o.agentId||e.inventoryIdentityMode==="legacy-bare")return n;let c=e.activeSessionKey?e.sessions[e.activeSessionKey]:null;return c?.agentId&&c.id===n?e.activeSessionKey:""}if(e.activeSessionKey&&e.sessions[e.activeSessionKey]?.id===n)return e.activeSessionKey;let a=e.sessionOrder.filter(c=>e.sessions[c]?.id===n),l=Ir();if(l?.currentAgent){let c=a.find(d=>e.sessions[d]?.agentId===l.currentAgent);if(c)return c}return a[0]||""}function ol(e,t,s=null){return ut(e,t,s)||""}function al(e){if(e.inventoryIdentityMode==="legacy-bare"){let t=e.activeSessionKey?e.sessions[e.activeSessionKey]:null,s=t&&!t.agentId?t:e.activeSessionId?e.sessions[e.activeSessionId]:null;e._retiredBareActiveSessionId=s&&!s.agentId&&s.id||null,e.sessionOrder=e.sessionOrder.filter(n=>e.sessions[n]?.agentId),e._retiredBareActiveSessionId&&(e.activeSessionId=null,e.activeSessionKey=null)}e.inventoryIdentityMode="agent-scoped"}function qy(e){let t=e._preferredExactSessionIdentity||null;if(!t)return!1;e._preferredExactSessionIdentity=null;let s=e.sessions[t.key]||null,n=Ir(),r=s?.id===t.sessionId&&s.agentId===t.agentId,i=n?.currentView!=="yeaft"||typeof n.setActiveSessionFilter=="function";if(r&&i){if(e.activeSessionId=t.sessionId,e.activeSessionKey=t.key,n?.currentView==="yeaft")n.setActiveSessionFilter(t.sessionId,{agentId:t.agentId,force:!0});else if(n){n.yeaftActiveSessionFilter=t.sessionId,n.yeaftSessionAgentById={...n.yeaftSessionAgentById||{},[t.sessionId]:t.agentId};try{localStorage.setItem("lastViewedYeaftSession",t.key)}catch{}}return!0}if(e.activeSessionId=null,e.activeSessionKey=null,n?.yeaftActiveSessionFilter===t.sessionId&&(n.yeaftActiveSessionFilter=null),n?.yeaftSessionAgentById?.[t.sessionId]===t.agentId){let o={...n.yeaftSessionAgentById};delete o[t.sessionId],n.yeaftSessionAgentById=o}try{let o=gr(localStorage.getItem("lastViewedYeaftSession")||"");o.agentId===t.agentId&&o.sessionId===t.sessionId&&localStorage.removeItem("lastViewedYeaftSession")}catch{}return!0}function Ei(e){let t=e._retiredBareActiveSessionId||null;if(!t)return!1;let s=Ir();if(e.inventoryIdentityMode==="legacy-bare"){let r=e.sessions[t];return e._retiredBareActiveSessionId=null,!r||r.agentId?!1:(e.activeSessionId=t,e.activeSessionKey=t,s?.currentView==="yeaft"&&typeof s.setActiveSessionFilter=="function"?s.setActiveSessionFilter(t,{force:!0}):s&&(s.yeaftActiveSessionFilter=t),!0)}let n=e.sessionOrder.filter(r=>{let i=e.sessions[r];return i?.agentId&&i.id===t});if(n.length===1){let r=n[0],i=e.activeSessionId===t&&e.activeSessionKey===r,o=e.sessions[r]?.agentId||null;return e.activeSessionId=t,e.activeSessionKey=r,i||(s?.currentView==="yeaft"&&typeof s.setActiveSessionFilter=="function"?(s.setActiveSessionFilter(t,{agentId:o,force:!0}),e._retiredBareActiveSessionId=t):s&&(s.yeaftActiveSessionFilter=t)),!0}e.activeSessionId=null,e.activeSessionKey=null,s?.yeaftActiveSessionFilter===t&&(s.yeaftActiveSessionFilter=null);try{let r=localStorage.getItem("lastViewedYeaftSession")||"";gr(r).sessionId===t&&localStorage.removeItem("lastViewedYeaftSession")}catch{}return!0}function Sr(e){let t=[],s=new Set;for(let n of Array.isArray(e)?e:[]){let r=typeof n=="string"?n:String(n||"");!r||s.has(r)||(s.add(r),t.push(r))}return t}function ll(e,t){let s=Sr(e),n=new Set(s),r=Sr(t).filter(o=>n.has(o)),i=new Set(r);return[...r,...s.filter(o=>!i.has(o))]}function Di(e,t=!1){return!e||typeof e!="object"?!!t:Object.prototype.hasOwnProperty.call(e,"pinned")?e.pinned===!0:Object.prototype.hasOwnProperty.call(e,"isPinned")?e.isPinned===!0:!!t}function Pp(e){return!e||typeof e!="object"?!1:e.running===!0||e.active===!0||e.isActive===!0||e.isRunning===!0}function Rp(e){if(!e||typeof e!="object")return 0;let t=e.latestActivityAt||e.lastActivityAt||e.lastMessageAt||e.updatedAt||0;if(typeof t=="number"&&Number.isFinite(t))return t;if(typeof t=="string"&&t){let s=Date.parse(t);return Number.isFinite(s)?s:0}return 0}function Ir(){try{if(typeof window<"u"&&window.Pinia&&typeof window.Pinia.useChatStore=="function")return window.Pinia.useChatStore()}catch{}return null}var _p,Ep,Wy,Lp,$p=N(()=>{_i();mr();_p="yeaft-session-order-by-agent",Ep="yeaft-session-order-global";({defineStore:Wy}=Pinia);Lp=Wy("sessions",{state:()=>({sessions:{},sessionOrder:[],activeSessionId:null,activeSessionKey:null,inventoryIdentityMode:"empty",_retiredBareActiveSessionId:null,_preferredExactSessionIdentity:null,lastSnapshotAt:0,lastCrudResult:null,pending:{}}),getters:{sessionList(e){let t=e.sessionOrder.map(d=>e.sessions[d]).filter(Boolean),s=Ir(),n=s&&Array.isArray(s.pinnedSessions)?new Set(s.pinnedSessions):new Set;for(let d of t)d&&d.id&&d.pinned&&n.add(d.id);let r=[],i=[];for(let d of t)d.pinned||!d.agentId&&n.has(d.id)?r.push(d):i.push(d);let o=d=>[...d].sort((u,f)=>{let p=Number.isFinite(u?.sortOrder)?u.sortOrder:Number.MAX_SAFE_INTEGER,g=Number.isFinite(f?.sortOrder)?f.sortOrder:Number.MAX_SAFE_INTEGER;return p!==g?p-g:il(u,f)}),a=[...o(r),...o(i)],l=Mp();if(l.length===0)return a;let c=new Map(l.map((d,u)=>[d,u]));return a.sort((d,u)=>{let f=c.has(jt(d))?c.get(jt(d)):Number.MAX_SAFE_INTEGER,p=c.has(jt(u))?c.get(jt(u)):Number.MAX_SAFE_INTEGER;return f!==p?f-p:0})},sessionCount(e){return e.sessionOrder.length},sessionById:e=>(t,s=null)=>{let n=ut(e,t,s);return n&&e.sessions[n]||null},activeSession(e){return e.activeSessionKey&&e.sessions[e.activeSessionKey]||null},hasLoadedSnapshot(e){return e.lastSnapshotAt>0},isEmpty(e){return e.sessionOrder.length===0},activeNeedsInvite(e){let t=e.activeSessionKey?e.sessions[e.activeSessionKey]:null;return t?!t.defaultVpId&&(!Array.isArray(t.roster)||t.roster.length===0):!1}},actions:{applySnapshot(e,t=null,{deferActivation:s=!1}={}){let n=Array.isArray(e)?e:[],r=!1;if(t){al(this);let o={...this.sessions},a=new Set;for(let p of n){if(!p||!p.id)continue;let g=Et(t,p.id);a.add(g),o[g]=this._normalize(p,t,Di(this.sessions[g]))}for(let p of this.sessionOrder){let g=this.sessions[p];g&&g.agentId===t&&!a.has(p)&&delete o[p]}let l=this.sessionOrder.filter(p=>o[p]),c=new Set(l),d=[];for(let p of n){if(!p||!p.id)continue;let g=Et(t,p.id);o[g]&&!c.has(g)&&d.push(g)}this.sessions=o;let u=[...l,...d],f=Mp();if(f.length>0){let p=new Map(u.map(k=>[jt(o[k]),k]).filter(([k])=>k)),g=f.map(k=>p.get(k)).filter(Boolean),m=new Set(g);u=[...g,...u.filter(k=>!m.has(k))];let v=new Map(f.map((k,w)=>[k,w]));for(let k of u){let w=jt(o[k]);w&&v.has(w)&&(o[k]={...o[k],sortOrder:v.get(w)})}}if(t&&f.length===0){let p=Tp(),g=Sr(p[t]);if(g.length>0){let m=g.map(y=>Et(t,y)),v=new Set(m),k=ll(u.filter(y=>o[y]?.agentId===t),m),w=this.sessionOrder.some(y=>o[y]?.agentId===t),I=0;w?u=this.sessionOrder.filter(y=>o[y]).map(y=>o[y]?.agentId===t?k[I++]:y).concat(k.slice(I)):u=u.map(y=>o[y]?.agentId===t?k[I++]:y);let h=new Map(m.map((y,b)=>[y,b]));for(let y of k)o[y]&&v.has(y)&&(o[y]={...o[y],sortOrder:h.get(y)})}}this.sessionOrder=u}else{if(this.inventoryIdentityMode==="agent-scoped")return;if(Object.values(this.sessions).some(c=>c&&c.agentId)){this.inventoryIdentityMode="agent-scoped";return}let a={},l=[];for(let c of n){if(!c||!c.id)continue;let d=Et(null,c.id);a[d]=this._normalize(c,null,Di(this.sessions[d])),l.push(d)}this.sessions=a,this.sessionOrder=l,this.inventoryIdentityMode="legacy-bare"}s||(r=qy(this)||Ei(this)),this.lastSnapshotAt=Date.now();let i=Ir();if(i&&t){let o={...i.yeaftSessionAgentById||{}};for(let a of n)a&&a.id&&!o[a.id]&&(o[a.id]=t);i.yeaftSessionAgentById=o}if(!s&&!r){let o=null;try{o=localStorage.getItem("lastViewedYeaftSession")||null}catch{}let l=(o?this.sessions[o]:null)?o:o?ut(this,o,t):"",c=l?this.sessions[l]:null,d=c&&(!t||c.agentId===t),u=this.sessionOrder.filter(I=>this.sessions[I]&&(!t||this.sessions[I].agentId===t)&&this.sessions[I].running).sort((I,h)=>Rp(this.sessions[h])-Rp(this.sessions[I]))[0]||null,f=u?this.sessions[u]?.id:null,p=this.sessionList[0]||null,g=p?.id||null,m=g?ut(this,g,p?.raw?.agentId||null):"",v=f||(d?c.id:null)||g,k=u||(d?l:"")||m||ol(this,v,t),w=this.activeSessionKey?this.sessions[this.activeSessionKey]?.agentId:null;if(this.activeSessionId&&!ut(this,this.activeSessionId,w)?(this.activeSessionId=v,this.activeSessionKey=k||null):!this.activeSessionId&&this.sessionOrder.length>0&&!this._retiredBareActiveSessionId?(this.activeSessionId=v,this.activeSessionKey=k||null):this.activeSessionId&&(this.activeSessionKey=ol(this,this.activeSessionId,w)||this.activeSessionKey),i&&!this._retiredBareActiveSessionId){let I=this.activeSessionId||v,h=null;if((i.yeaftActiveSessionFilter&&!ut(this,i.yeaftActiveSessionFilter)||!i.yeaftActiveSessionFilter&&I)&&(h=I),h){let y=ol(this,h),b=y&&this.sessions[y]?.agentId||null;i.currentView==="yeaft"&&typeof i.setActiveSessionFilter=="function"?i.setActiveSessionFilter(h,{agentId:b,force:!0}):i.yeaftActiveSessionFilter=h,this.activeSessionKey=y||this.activeSessionKey}}}if(i&&typeof i.applyServerPinSnapshot=="function"){let o=new Set;for(let l of n){if(!l||!l.id)continue;let c=Et(t,l.id),d=this.sessions[c];d&&d.pinned&&o.add(l.id)}let a=l=>{let c=ut(this,l,t),d=c?this.sessions[c]:null;return d?d.agentId===t:!1};i.applyServerPinSnapshot(t,o,a)}},applyRosterChange(e,t=null){if(!e)return;let s=e.sessionId||e.groupId;if(!s)return;let n=t||e.agentId||null;if(n)al(this);else if(this.inventoryIdentityMode!=="legacy-bare")return;let r=ut(this,s,n)||Et(n,s),i=this.sessions[r];if(!i){let o=this._normalize({id:s,name:e.name||s,roster:Array.isArray(e.roster)?e.roster:[],defaultVpId:e.defaultVpId||null},n);this.sessions[r]=o,this.sessionOrder.push(r),Ei(this);return}this.sessions[r]={...i,name:e.name||i.name,roster:Array.isArray(e.roster)?e.roster.slice():i.roster,defaultVpId:e.defaultVpId!=null?e.defaultVpId:i.defaultVpId,announcement:typeof e.announcement=="string"?e.announcement:i.announcement},Ei(this)},applyCrudResult(e,t=null){if(!e)return;this.lastCrudResult={...e,at:Date.now()},e.requestId&&this.pending[e.requestId]&&delete this.pending[e.requestId];let s=e.session||e.group||null,n=t||e.agentId||s?.agentId||null;e.ok&&e.op==="list"&&Array.isArray(e.sessions)&&this.applySnapshot(e.sessions,n),e.ok&&(e.op==="create"||e.op==="restore")&&s&&s.id&&this.applySnapshotUpsert(s,n)&&this.setActive(s.id,n);let r=e.sessionId||e.groupId,i=this.inventoryIdentityMode==="legacy-bare",o=r&&(n||i)?ut(this,r,n):"";if(e.ok&&(e.op==="archive"||e.op==="delete")&&r&&o&&(delete this.sessions[o],this.sessionOrder=this.sessionOrder.filter(a=>a!==o),(this.activeSessionKey===o||i&&this.activeSessionId===r)&&(this.activeSessionKey=this.sessionOrder[0]||null,this.activeSessionId=this.activeSessionKey&&this.sessions[this.activeSessionKey]?.id||null)),e.ok&&e.op==="update_config"&&r){let a=o?this.sessions[o]:null;a&&(this.sessions[o]={...a,config:e.config&&typeof e.config=="object"?{...e.config}:{}})}},applySnapshotUpsert(e,t=null){if(!e||!e.id)return"";let s=t||e.agentId||null;if(s)al(this);else if(this.inventoryIdentityMode!=="legacy-bare")return"";let n=ut(this,e.id,s)||Et(s,e.id),r=!!this.sessions[n],i=this.sessions[n]||{};return this.sessions[n]={...i,...this._normalize(e,s,Di(i))},r||this.sessionOrder.push(n),Ei(this),n},setActive(e,t=null){let s=ut(this,e,t);e&&s&&this.sessions[s]?(this.activeSessionId=e,this.activeSessionKey=s,this._retiredBareActiveSessionId=null):(this.activeSessionId=null,this.activeSessionKey=null)},reorderSessionsForAgent(e,t){if(!e)return[];let s=this.sessionOrder.filter(l=>this.sessions[l]?.agentId===e),n=ll(s,t.map(l=>Et(e,l)));if(n.length===0)return[];let r=new Map(n.map((l,c)=>[l,c])),i=0;this.sessionOrder=this.sessionOrder.map(l=>this.sessions[l]?.agentId===e?n[i++]:l);for(let l of n)this.sessions[l]={...this.sessions[l],sortOrder:r.get(l)};let o=Tp(),a=n.map(l=>this.sessions[l]?.id).filter(Boolean);return o[e]=a,Fy(o),a},reorderSessionsGlobally(e){let t=this.sessionOrder.map(a=>jt(this.sessions[a])).filter(Boolean),s=ll(t,e);if(s.length===0)return[];let n=new Map(this.sessionOrder.map(a=>[jt(this.sessions[a]),a]).filter(([a])=>a)),r=s.map(a=>n.get(a)).filter(Boolean),i=new Set(r);this.sessionOrder=[...r,...this.sessionOrder.filter(a=>!i.has(a))];let o=new Map(s.map((a,l)=>[a,l]));for(let a of this.sessionOrder){let l=jt(this.sessions[a]);l&&o.has(l)&&(this.sessions[a]={...this.sessions[a],sortOrder:o.get(l)})}return By(s),s.map(a=>{let l=n.get(a),c=l?this.sessions[l]:null;return c?{agentId:c.agentId,sessionId:c.id}:null}).filter(Boolean)},applyPinState(e,t,s=null){if(!s&&this.inventoryIdentityMode!=="legacy-bare")return;let n=ut(this,e,s);!e||!n||!this.sessions[n]||(this.sessions[n]={...this.sessions[n],pinned:!!t})},markPending(e,t){e&&(this.pending[e]=t)},clearLastResult(){this.lastCrudResult=null},resetInventory(){this.sessions={},this.sessionOrder=[],this.activeSessionId=null,this.activeSessionKey=null,this.inventoryIdentityMode="empty",this._retiredBareActiveSessionId=null,this._preferredExactSessionIdentity=null,this.lastSnapshotAt=0},beginInventoryCommit(e=null,t=null){if(this.resetInventory(),e&&t){let s=Et(t,e);this.activeSessionId=e,this.activeSessionKey=s,this._preferredExactSessionIdentity={sessionId:e,agentId:t,key:s}}else e&&(this._retiredBareActiveSessionId=e)},_normalize(e,t=null,s=!1){return{id:e.id,name:e.name||e.id,roster:Array.isArray(e.roster)?e.roster.slice():[],defaultVpId:e.defaultVpId||null,announcement:typeof e.announcement=="string"?e.announcement:"",config:e.config&&typeof e.config=="object"?{...e.config}:{},workDir:typeof e.workDir=="string"?e.workDir:"",createdAt:e.createdAt||null,updatedAt:e.updatedAt||null,lastMessageAt:e.lastMessageAt||null,running:Pp(e),active:Pp(e),runningVpCount:Number.isFinite(Number(e.runningVpCount))?Number(e.runningVpCount):0,latestActivityAt:e.latestActivityAt||e.lastActivityAt||e.lastMessageAt||null,agentId:t||e.agentId||null,pinned:Di(e,s),sortOrder:Number.isFinite(e.sortOrder)?e.sortOrder:null}}}})});function Li(){try{if(window.Pinia&&typeof window.Pinia.useAuthStore=="function")return window.Pinia.useAuthStore()}catch{}return null}function cl(){try{return localStorage.getItem("authToken")||null}catch{return null}}function Op(){let e=Li();if(e)try{return e.getActiveToken?.()||e.token||cl()}catch{return e.token||cl()}return cl()}function Uy(e,t){if(!e)return!1;let s=Op();if(s&&s!==t)return!1;try{localStorage.setItem("authToken",e)}catch{}let n=Li();return n&&(n.token=e),!0}function Ky(e){try{let t=typeof e=="string"?e:e?.url;return!t||typeof window>"u"||!window.location?null:new URL(t,window.location.href)}catch{return null}}function Hp(e){return!e||typeof window>"u"||!window.location?!1:e.origin===window.location.origin&&e.pathname.startsWith("/api/")}function zy(e){if(!e)return!1;let t=e.pathname;return!!(jy.has(t)||t.startsWith("/api/auth/sso/poll/")||/^\/api\/auth\/sso\/[^/]+\/start(?:-qr)?$/.test(t))}function Yy(e,t){return t?.headers?new Headers(t.headers):e&&typeof e=="object"&&e.headers?new Headers(e.headers):new Headers}function Gy(e){let t=e.get("Authorization");return!t||!t.startsWith("Bearer ")?null:t.slice(7)}function Qy(e,t){return{...e||{},headers:t}}function Xy(e,t,s,n){let r=Li();r&&typeof r.handleAuthResponse=="function"?r.handleAuthResponse(e,t,s,n):r&&typeof r.handleAuthFailure=="function"&&n&&r.handleAuthFailure(void 0,t,s)}function Fp(){if(Vp||typeof window>"u"||!window.fetch)return;Vp=!0;let e=window.fetch.bind(window);window.fetch=async function(s,n){let r=Ky(s),i=Hp(r)&&!zy(r),o=Hp(r)?{...n||{},credentials:"same-origin"}:n,a=null,l=i?Li():null,c=l?.authGeneration,d=!!l?.isAuthenticated;if(i){let f=Yy(s,n);a=Gy(f),a||(a=Op(),a&&(f.set("Authorization",`Bearer ${a}`),o=Qy(o,f)))}let u=await e(s,o);try{let f=u.headers&&u.headers.get&&u.headers.get("X-New-Token");f&&Uy(f,a),i&&u.status===401&&Xy(u,a,c,d)}catch{}return u}}var Vp,jy,Bp=N(()=>{Vp=!1,jy=new Set(["/api/auth/mode","/api/auth/login","/api/auth/aad","/api/auth/verify","/api/auth/verify-totp","/api/auth/setup-totp","/api/auth/register","/api/auth/password-reset/request","/api/auth/password-reset/verify"])});var Np,qp=N(()=>{Np={"common.loading":"\u52A0\u8F7D\u4E2D...","common.confirm":"\u786E\u5B9A","common.apply":"\u5E94\u7528","common.cancel":"\u53D6\u6D88","common.delete":"\u5220\u9664","common.copy":"\u590D\u5236","common.copied":"\u5DF2\u590D\u5236","common.close":"\u5173\u95ED","common.refresh":"\u5237\u65B0","common.open":"\u6253\u5F00","common.save":"\u4FDD\u5B58","common.search":"\u641C\u7D22","common.back":"\u8FD4\u56DE","common.noSubdirectories":"\u65E0\u5B50\u76EE\u5F55","common.drives":"\u9A71\u52A8\u5668","common.rootDir":"\u6839\u76EE\u5F55","common.comma":"\uFF0C","common.select":"\u9009\u62E9","mermaid.export":"\u5BFC\u51FA","mermaid.exportMd":"\u5BFC\u51FA MD","mermaid.exportPng":"\u5BFC\u51FA PNG","mermaid.exportJpg":"\u5BFC\u51FA JPG","chat.toolActionsOmitted":"\u5DF2\u7701\u7565 {count} \u4E2A\u5386\u53F2\u5DE5\u5177\u52A8\u4F5C","login.subtitle":"Yeaft Web Code Agent","login.username":"\u7528\u6237\u540D","login.password":"\u5BC6\u7801","login.login":"\u767B\u5F55","login.loggingIn":"\u767B\u5F55\u4E2D...","login.enterUsername":"\u8BF7\u8F93\u5165\u7528\u6237\u540D","login.enterPassword":"\u8BF7\u8F93\u5165\u5BC6\u7801","login.noAccount":"\u6CA1\u6709\u8D26\u53F7\uFF1F","login.registerWithCode":"\u6CE8\u518C\u65B0\u8D26\u53F7","login.or":"\u6216","login.usePassword":"\u4F7F\u7528\u8D26\u53F7\u5BC6\u7801\u767B\u5F55","login.useSso":"\u8FD4\u56DE\u5355\u70B9\u767B\u5F55","login.noProviders":"\u7BA1\u7406\u5458\u5C1A\u672A\u542F\u7528\u4EFB\u4F55\u7B2C\u4E09\u65B9\u767B\u5F55\u3002","login.microsoft":"\u4F7F\u7528 Microsoft \u8D26\u53F7\u767B\u5F55","login.github":"\u4F7F\u7528 GitHub \u8D26\u53F7\u767B\u5F55","login.google":"\u4F7F\u7528 Google \u8D26\u53F7\u767B\u5F55","login.wechat":"\u4F7F\u7528\u5FAE\u4FE1\u626B\u7801\u767B\u5F55","login.alipay":"\u4F7F\u7528\u652F\u4ED8\u5B9D\u8D26\u53F7\u767B\u5F55","login.wechat.mobileUnsupported":"\u5FAE\u4FE1\u767B\u5F55\u6682\u4EC5\u652F\u6301\u7535\u8111\u7AEF\uFF0C\u8BF7\u5728\u7535\u8111\u6D4F\u89C8\u5668\u4E2D\u626B\u7801\u767B\u5F55\u3002","login.alipay.mobileWaiting":"\u6B63\u5728\u7B49\u5F85\u4F60\u5728\u652F\u4ED8\u5B9D\u4E2D\u786E\u8BA4\u2026 \u5B8C\u6210\u540E\u8FD4\u56DE\u672C\u9875\u9762\u5C06\u81EA\u52A8\u767B\u5F55\u3002","login.alipay.relaunch":"\u91CD\u65B0\u6253\u5F00\u652F\u4ED8\u5B9D","login.qr.title":"\u626B\u7801\u767B\u5F55","login.qr.titleAlipay":"\u652F\u4ED8\u5B9D\u626B\u7801\u767B\u5F55","login.qr.titleWechat":"\u5FAE\u4FE1\u626B\u7801\u767B\u5F55","login.qr.hint":"\u8BF7\u4F7F\u7528\u624B\u673A\u626B\u63CF\u4E8C\u7EF4\u7801\u5B8C\u6210\u6388\u6743","login.error.enterUsername":"\u8BF7\u8F93\u5165\u7528\u6237\u540D","login.error.enterPassword":"\u8BF7\u8F93\u5165\u5BC6\u7801","login.error.enter6Digit":"\u8BF7\u8F93\u51656\u4F4D\u9A8C\u8BC1\u7801","login.error.enterInviteCode":"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801","login.error.usernameMinLen":"\u7528\u6237\u540D\u81F3\u5C112\u4E2A\u5B57\u7B26","login.error.passwordMinLen":"\u5BC6\u7801\u81F3\u5C116\u4F4D","login.error.passwordMismatch":"\u4E24\u6B21\u5BC6\u7801\u4E0D\u4E00\u81F4","login.error.enterVerifyCode":"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801","login.error.loginFailed":"\u767B\u5F55\u5931\u8D25","login.forgot.link":"\u5FD8\u8BB0\u5BC6\u7801\uFF1F","login.forgot.title":"\u91CD\u7F6E\u5BC6\u7801","login.forgot.emailHint":"\u8F93\u5165\u8D26\u6237\u7ED1\u5B9A\u7684\u90AE\u7BB1\uFF0C\u6211\u4EEC\u5C06\u53D1\u9001 6 \u4F4D\u91CD\u7F6E\u9A8C\u8BC1\u7801\u3002","login.forgot.sendCode":"\u53D1\u9001\u91CD\u7F6E\u9A8C\u8BC1\u7801","login.forgot.sending":"\u53D1\u9001\u4E2D...","login.forgot.codeSent":"\u5982\u679C\u90AE\u7BB1\u5DF2\u6CE8\u518C\uFF0C\u91CD\u7F6E\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001\u3002\u8BF7\u5728\u4E0B\u65B9\u8F93\u5165\u9A8C\u8BC1\u7801\u4E0E\u65B0\u5BC6\u7801\u3002","login.forgot.resetBtn":"\u91CD\u7F6E\u5BC6\u7801","login.forgot.resetting":"\u91CD\u7F6E\u4E2D...","login.forgot.success":"\u5BC6\u7801\u5DF2\u91CD\u7F6E\uFF0C\u53EF\u4EE5\u4F7F\u7528\u65B0\u5BC6\u7801\u767B\u5F55\u3002","login.forgot.emailInvalid":"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u90AE\u7BB1","login.register.title":"\u65B0\u7528\u6237\u6CE8\u518C","login.register.inviteCode":"\u9080\u8BF7\u7801","login.register.username":"\u7528\u6237\u540D","login.register.password":"\u5BC6\u7801\uFF08\u81F3\u5C116\u4F4D\uFF09","login.register.confirmPassword":"\u786E\u8BA4\u5BC6\u7801","login.register.email":"\u90AE\u7BB1\uFF08\u53EF\u9009\uFF09","login.register.submit":"\u6CE8\u518C","login.register.submitting":"\u6CE8\u518C\u4E2D...","login.register.back":"\u8FD4\u56DE\u767B\u5F55","login.register.success":"\u6CE8\u518C\u6210\u529F\uFF0C\u8BF7\u767B\u5F55","login.register.enterCode":"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801","login.register.usernameMin":"\u7528\u6237\u540D\u81F3\u5C112\u4E2A\u5B57\u7B26","login.register.passwordMin":"\u5BC6\u7801\u81F3\u5C116\u4F4D","login.register.passwordMismatch":"\u4E24\u6B21\u5BC6\u7801\u4E0D\u4E00\u81F4","login.totp.setupTitle":"\u8BBE\u7F6E\u53CC\u56E0\u7D20\u8BA4\u8BC1","login.totp.setupHint":"\u4F7F\u7528 Microsoft Authenticator \u6216 Google Authenticator \u626B\u63CF\u4E0B\u65B9\u4E8C\u7EF4\u7801","login.totp.manualKey":"\u6216\u624B\u52A8\u8F93\u5165\u5BC6\u94A5\uFF1A","login.totp.enterCode":"\u8F93\u51656\u4F4D\u9A8C\u8BC1\u7801","login.totp.complete":"\u5B8C\u6210\u8BBE\u7F6E","login.totp.verifying":"\u9A8C\u8BC1\u4E2D...","login.totp.verify":"\u9A8C\u8BC1","login.totp.prompt":"\u8BF7\u8F93\u5165 Authenticator \u5E94\u7528\u4E2D\u7684\u9A8C\u8BC1\u7801","login.totp.invalidCode":"\u8BF7\u8F93\u51656\u4F4D\u9A8C\u8BC1\u7801","login.email.codeSent":"\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001\u81F3 {email}","login.email.enterCode":"\u8F93\u5165\u9A8C\u8BC1\u7801","login.email.verify":"\u9A8C\u8BC1","login.email.verifying":"\u9A8C\u8BC1\u4E2D...","login.email.enterCodeError":"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801","chat.agent.select":"\u9009\u62E9 Agent","chat.agent.manage":"\u7BA1\u7406 Agent","chat.agent.none":"\u6682\u65E0 Agent","chat.agent.restarting":"\u91CD\u542F\u4E2D","chat.agent.restart":"\u91CD\u542F","chat.agent.restartConfirm":`\u786E\u5B9A\u8981\u91CD\u542F Agent "{name}" \u5417\uFF1F
11
11
  \u6240\u6709\u6D3B\u8DC3\u7684\u4F1A\u8BDD\u5C06\u88AB\u4E2D\u65AD\u3002`,"chat.agent.upgrade":"\u5347\u7EA7","chat.agent.upgrading":"\u5347\u7EA7\u4E2D","chat.agent.upgradeConfirm":`\u5347\u7EA7 Agent "{name}" \u5230\u6700\u65B0\u7248\u672C\uFF1F
12
- \u5347\u7EA7\u5B8C\u6210\u540E Agent \u4F1A\u81EA\u52A8\u91CD\u542F\u3002`,"chat.agent.alreadyLatest":"Agent \u5DF2\u662F\u6700\u65B0\u7248\u672C (v{version})\uFF0C\u65E0\u9700\u5347\u7EA7\u3002","chat.agent.nodeIncompatible":"Agent \u5347\u7EA7\u4E2D\u6B62\uFF1A\u76EE\u6807\u7248\u672C v{version} \u9700\u8981 Node {required}\uFF0C\u4F46\u5F53\u524D\u673A\u5668\u8FD0\u884C\u7684\u662F Node {current}\u3002\u8BF7\u5148\u5347\u7EA7 Node.js \u518D\u91CD\u8BD5\u3002","chat.agent.manualUpgradeRequired":'Agent v{version} \u65E9\u4E8E\u5B89\u5168\u8FDC\u7A0B\u5347\u7EA7\u7684\u5F15\u5BFC\u57FA\u7EBF\uFF1B\u65E7\u5BA2\u6237\u7AEF\u53C8\u6CA1\u6709\u4E0A\u62A5\u8DB3\u591F\u7684\u5E73\u53F0\u4FE1\u606F\uFF0CServer \u65E0\u6CD5\u8BC1\u660E\u8FD9\u6B21\u5347\u7EA7\u5B89\u5168\u3002\u4E3A\u907F\u514D\u5C06 Agent \u6253\u79BB\u7EBF\uFF0C\u672C\u6B21\u64CD\u4F5C\u5DF2\u88AB\u963B\u6B62\u3002\u8BF7\u5728\u8BE5\u673A\u5668\u4E0A\u624B\u52A8\u6267\u884C\u4E00\u6B21 "npm install -g @yeaft/webchat-agent@latest --registry=https://pkg.yeaft.com/"\uFF0C\u7136\u540E\u91CD\u65B0\u542F\u52A8 Agent\u3002\u81EA v{minimum} \u8D77\u652F\u6301\u5B89\u5168\u81EA\u52A8\u5347\u7EA7\u3002',"chat.agent.online":"{count} \u4E2A Agent \u5728\u7EBF","chat.agent.selectFirst":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A Agent","chat.agent.yeaft":"Yeaft \u5BF9\u8BDD","sidebar.toggle.chat":"\u5207\u6362\u5230 Chat","sidebar.toggle.yeaft":"\u5207\u6362\u5230 Yeaft","sidebar.surface.label":"\u4FA7\u680F\u89C6\u56FE","sidebar.surface.sessions":"\u4F1A\u8BDD","sidebar.provider.label":"\u4F1A\u8BDD Provider","sidebar.provider.claude":"Claude","sidebar.sessions.new":"\u65B0\u5EFA\u4F1A\u8BDD","sidebar.sessions.newChat":"\u65B0\u5EFA\u804A\u5929","sidebar.sessions.emptyProvider":"\u6B64 Provider \u6682\u65E0\u4F1A\u8BDD","sidebar.sessions.menu":"\u4F1A\u8BDD\u83DC\u5355","sidebar.sessions.unread":"\u672A\u8BFB","sidebar.sessions.pinned":"\u5DF2\u7F6E\u9876","sidebar.sessions.processing":"\u6B63\u5728\u56DE\u590D","sidebar.sessions.hidden":"\u5DF2\u9690\u85CF\u7684\u4F1A\u8BDD","sidebar.sessions.remove":"\u4ECE\u4FA7\u680F\u79FB\u9664","sidebar.sessions.agent":"Agent","sidebar.sessions.provider":"Provider","sidebar.projects.title":"\u9879\u76EE","sidebar.projects.menu":"\u9879\u76EE\u83DC\u5355","sidebar.projects.new":"\u65B0\u5EFA\u9879\u76EE","sidebar.projects.newSession":"\u5728{name}\u4E2D\u521B\u5EFA Session","sidebar.projects.assignFailed":"Session \u5DF2\u521B\u5EFA\uFF0C\u4F46\u65E0\u6CD5\u52A0\u5165{name}\u3002\u9519\u8BEF\uFF1A{message}","sidebar.projects.empty":"\u6682\u65E0\u9879\u76EE","sidebar.projects.noSessions":"\u5C06 Yeaft \u804A\u5929\u62D6\u5230\u8FD9\u91CC","sidebar.projects.namePrompt":"\u9879\u76EE\u540D\u79F0","sidebar.projects.renamePrompt":"\u91CD\u547D\u540D\u9879\u76EE","sidebar.projects.rename":"\u91CD\u547D\u540D\u9879\u76EE","sidebar.projects.delete":"\u5220\u9664\u9879\u76EE","sidebar.projects.deleteConfirm":"\u5220\u9664\u9879\u76EE\u201C{name}\u201D\uFF1F\u5176\u4E2D\u804A\u5929\u4F1A\u79FB\u56DE\u6700\u8FD1\u3002","sidebar.projects.remove":"\u79FB\u51FA\u9879\u76EE","sidebar.projects.moveMenu":"\u79FB\u52A8\u5230 Projects","sidebar.projects.moveBack":"\u8FD4\u56DE","sidebar.projects.moveEmpty":"\u6CA1\u6709\u5176\u4ED6 Project","sidebar.projects.moveTo":"\u79FB\u5230 {name}","sidebar.projects.instructions":"Project \u6307\u4EE4","sidebar.projects.instructionsTitle":"{name} \u6307\u4EE4","sidebar.projects.instructionsHint":"\u8FD9\u4E9B\u6307\u4EE4\u4F1A\u52A0\u5165\u6B64 Project \u5185\u6BCF\u4E2A Session \u7684 system prompt\u3002","sidebar.projects.instructionsPlaceholder":"\u8F93\u5165\u5171\u4EAB\u7684\u7F16\u7801\u89C4\u8303\u3001\u7EA6\u675F\u6216\u5DE5\u4F5C\u6D41\u8BF4\u660E\u2026","sidebar.recents.title":"\u6700\u8FD1","sidebar.recents.empty":"\u6682\u65E0\u804A\u5929","yeaft.back":"\u8FD4\u56DE","yeaft.session.people":"\u6210\u5458","yeaft.session.peopleEmpty":"\u6682\u65E0\u6210\u5458","yeaft.session.runningTasks":"\u8FD0\u884C\u4E2D\u7684\u4EFB\u52A1","yeaft.session.tasksEmpty":"\u6682\u65E0\u8FD0\u884C\u4EFB\u52A1","yeaft.session.owner":"\u8D1F\u8D23\u4EBA","yeaft.session.started":"\u5F00\u59CB\u65F6\u95F4","yeaft.breadcrumb.label":"Thread \u8FC7\u6EE4","yeaft.breadcrumb.mainStream":"\u4E3B\u6D41","yeaft.breadcrumb.backHint":"\u8FD4\u56DE\u5168\u6D41 (Esc)","yeaft.featureDetail.ariaLabel":"Task \u8BE6\u60C5","yeaft.featureDetail.replyTo":"\u56DE\u590D\u5230:","yeaft.featureDetail.forkHint":"\u8BE5 task \u6682\u65E0\u6D3B\u8DC3 thread \u2014 \u8BF7 fork \u65B0 thread \u540E\u56DE\u590D\u3002","yeaft.featureDetail.empty":"\u8BE5 task \u6682\u65E0\u6D88\u606F\u3002","yeaft.featureDetail.threadPillHint":"\u6253\u5F00 thread","yeaft.featureDetail.summary.aria":"\u4EFB\u52A1\u6458\u8981\u65F6\u95F4\u7EBF","yeaft.featureDetail.summary.title":"\u6458\u8981\u65F6\u95F4\u7EBF","yeaft.featureDetail.summary.loading":"\u6B63\u5728\u52A0\u8F7D\u6458\u8981\u5386\u53F2\u2026","yeaft.featureDetail.summary.empty":"\u6682\u65E0\u6458\u8981\u3002","yeaft.featureDetail.summary.error":"\u6458\u8981\u52A0\u8F7D\u5931\u8D25\uFF1A{error}","yeaft.featureDetail.summary.showArchived":"\u663E\u793A\u5DF2\u5F52\u6863","yeaft.featureDetail.related.aria":"\u5173\u8054\u4EFB\u52A1","yeaft.featureDetail.related.title":"\u5173\u8054\u4EFB\u52A1","yeaft.featureDetail.related.unlink":"\u53D6\u6D88\u5173\u8054","yeaft.featureDetail.members.aria":"\u4EFB\u52A1\u6210\u5458","yeaft.featureDetail.members.title":"\u6210\u5458","yeaft.featureDetail.members.abort":"\u4E2D\u6B62","yeaft.featureDetail.members.kick":"\u8E22\u51FA","yeaft.model":"\u6A21\u578B","yeaft.placeholder":"\u95EE\u6211\u4EFB\u4F55\u95EE\u9898...","yeaft.inbox":"\u6536\u4EF6\u7BB1","yeaft.inbox.tooltip":"\u4F60\u7684\u9ED8\u8BA4\u5BF9\u8BDD\u7EBF\u7A0B \u2014\u2014 \u4E0E Yeaft \u7684\u4E00\u5BF9\u4E00\u804A\u5929\u3002\u53EF\u4EE5\u4E3A\u5177\u4F53\u8BDD\u9898\u6216\u4EFB\u52A1\u521B\u5EFA\u65B0\u7EBF\u7A0B\u3002","yeaft.sidebar.activeThreads":"\u6D3B\u8DC3","yeaft.sidebar.idleThreads":"\u9759\u9ED8","yeaft.sidebar.archivedThreads":"\u5DF2\u5F52\u6863","yeaft.sidebar.tasks":"\u4EFB\u52A1","yeaft.sidebar.emptyActive":"\u6682\u65E0\u6D3B\u8DC3 thread","yeaft.sidebar.emptyIdle":"\u6682\u65E0\u9759\u9ED8 thread","yeaft.sidebar.emptyArchived":"\u6682\u65E0\u5F52\u6863 thread","yeaft.sidebar.emptyTasks":"\u65E0\u5339\u914D\u4EFB\u52A1","yeaft.sidebar.results":"\u641C\u7D22\u7ED3\u679C","yeaft.sidebar.resultsThreads":"Threads","yeaft.sidebar.kindThread":"thread","yeaft.sidebar.cancel":"\u53D6\u6D88","yeaft.sidebar.mergeInto":"\u5408\u5E76\u5230\u2026","yeaft.sidebar.mergeNoCandidates":"\u6CA1\u6709\u53EF\u5408\u5E76\u7684\u5176\u4ED6\u7EBF\u7A0B","yeaft.sidebar.mergeConfirmTitle":"\u5408\u5E76\u8FD9\u4E2A\u7EBF\u7A0B\uFF1F","yeaft.sidebar.mergeIrreversible":"\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\uFF0C\u6E90\u7EBF\u7A0B\u5C06\u88AB\u5F52\u6863\uFF0C\u5176\u6D88\u606F\u4F1A\u88AB\u79FB\u52A8\u5230\u76EE\u6807\u7EBF\u7A0B\u3002","yeaft.sidebar.mergeConfirm":"\u5408\u5E76","yeaft.settings.sidebarV2":"\u5B9E\u9A8C\u529F\u80FD\uFF1A\u4FA7\u8FB9\u680F V2","yeaft.settings.sidebarV2Hint":"Thread \u5217\u8868 + \u4EFB\u52A1\u6811\uFF08\u9884\u89C8\uFF09\u3002","yeaft.clearConfirm":"\u6E05\u7A7A\u6240\u6709\u6D88\u606F\uFF1F","yeaft.mode":"\u6A21\u5F0F","yeaft.agent":"\u667A\u80FD\u4F53","yeaft.connecting":"\u8FDE\u63A5\u4E2D...","yeaft.ready":"\u5C31\u7EEA","yeaft.tools":"\u4E2A\u5DE5\u5177","yeaft.skills":"\u4E2A\u6280\u80FD","yeaft.mcp":"\u4E2A MCP","yeaft.showSidebar":"\u663E\u793A\u4FA7\u680F","yeaft.hideSidebar":"\u9690\u85CF\u4FA7\u680F","yeaft.debug":"\u8C03\u8BD5","yeaft.debugClose":"\u5173\u95ED\u8C03\u8BD5\u9762\u677F","yeaft.debugTurns":"\u8F6E","yeaft.debugTabToolStats":"\u5DE5\u5177\u7EDF\u8BA1","yeaft.debugTabDream":"Dream","yeaft.debugTabRequestLog":"\u8BF7\u6C42\u65E5\u5FD7","yeaft.debugHistoryLoad":"\u52A0\u8F7D\u8BF7\u6C42\u5386\u53F2","yeaft.debugHistoryLoading":"\u52A0\u8F7D\u4E2D...","yeaft.debugHistoryLoaded":"\u5DF2\u52A0\u8F7D {count} \u6761","yeaft.debugSearchPlaceholder":"\u6B63\u5219\u641C\u7D22\u8BF7\u6C42\u65E5\u5FD7","yeaft.debugSearchHint":"\u9ED8\u8BA4\u663E\u793A\u5168\u5C40\u6700\u8FD1 10 \u6761\uFF1B\u641C\u7D22\u4F1A\u8DE8 Session \u5339\u914D\u8BF7\u6C42\u6458\u8981\u3002","yeaft.debugTurnAction":"\u67E5\u770B\u8BE5\u8F6E\u5BF9\u8BDD\u7684\u8C03\u8BD5\u8F68\u8FF9","yeaft.debugTurnContext":"\u8C03\u8BD5\u8F68\u8FF9","yeaft.debugPanelEmpty":"\u60AC\u505C\u5728 AI \u56DE\u590D\u4E0A\uFF0C\u70B9\u51FB\u8C03\u8BD5\u56FE\u6807\u5373\u53EF\u67E5\u770B\u8BE5\u8F6E\u5BF9\u8BDD\u7684\u8C03\u8BD5\u8F68\u8FF9\u3002","yeaft.dreamDebug.title":"Dream \u751F\u547D\u5468\u671F","yeaft.dreamDebug.trigger":"\u89E6\u53D1","yeaft.dreamDebug.status":"\u72B6\u6001","yeaft.dreamDebug.started":"\u5F00\u59CB","yeaft.dreamDebug.finished":"\u7ED3\u675F","yeaft.dreamDebug.time":"\u65F6\u95F4","yeaft.dreamDebug.phase":"\u9636\u6BB5","yeaft.dreamDebug.call":"\u8C03\u7528","yeaft.dreamDebug.location":"\u751F\u6210\u4F4D\u7F6E","yeaft.dreamDebug.result":"\u7ED3\u679C","yeaft.dreamDebug.noLatest":"\u8FD9\u4E2A\u4F1A\u8BDD\u8FD8\u6CA1\u6709\u8BB0\u5F55\u5230 Dream \u68C0\u67E5\u3002","yeaft.dreamDebug.noEvents":"\u8FD9\u4E2A\u4F1A\u8BDD\u8FD8\u6CA1\u6709 Dream \u4E8B\u4EF6\u3002","yeaft.dreamDebug.outputTitle":"\u672C session \u5DF2\u52A0\u8F7D\u7684 Dream \u8F93\u51FA","yeaft.dreamDebug.scope":"Scope","yeaft.dreamDebug.lastDream":"\u4E0A\u6B21 Dream","yeaft.dreamDebug.messagesCovered":"\u5DF2\u8986\u76D6\u6D88\u606F\u6570","yeaft.dreamDebug.noOutput":"\u8FD9\u4E2A session \u8FD8\u6CA1\u6709\u5199\u5165 Dream \u8F93\u51FA\u3002","yeaft.dreamDebug.promptLoadTitle":"\u5DF2\u52A0\u8F7D\u8FDB system prompt \u7684 Dream \u8BB0\u5FC6","yeaft.dreamDebug.loadedInto":"\u52A0\u8F7D\u4F4D\u7F6E","yeaft.dreamDebug.vp":"VP","yeaft.dreamDebug.summaryToPrompt":"summary.md -> system prompt","yeaft.dreamDebug.itemList":"Dream \u8FD0\u884C\u548C Scope","yeaft.dreamDebug.searchPlaceholder":"\u6309\u6807\u9898\u3001ID \u6216\u6458\u8981\u641C\u7D22 Dream Session...","yeaft.dreamDebug.noSearchResults":"\u6CA1\u6709\u5339\u914D\u7684 Dream Session\u3002","yeaft.dreamDebug.noSummary":"\u6682\u65E0\u6458\u8981","yeaft.dreamDebug.segments":"\u6BB5","yeaft.dreamDebug.lastError":"\u6700\u8FD1\u9519\u8BEF","yeaft.dreamDebug.overview":"\u6982\u89C8","yeaft.dreamDebug.sessionId":"Session ID","yeaft.dreamDebug.loadedAt":"\u52A0\u8F7D\u65F6\u95F4","yeaft.dreamDebug.layers":"\u5C42\u7EA7","yeaft.dreamDebug.summaryLayer":"Resident summary","yeaft.dreamDebug.noPromptLoad":"\u8FD9\u4E2A scope \u6682\u65E0 prompt-load \u8BB0\u5F55\u3002","yeaft.dreamDebug.segmentTitle":"Segments","yeaft.dreamDebug.sourceMessages":"\u6765\u6E90\u6D88\u606F","yeaft.dreamDebug.createdAt":"\u521B\u5EFA\u65F6\u95F4","yeaft.dreamDebug.updatedAt":"\u66F4\u65B0\u65F6\u95F4","yeaft.dreamDebug.noSegments":"\u8FD9\u4E2A scope \u6682\u65E0 memory segments\u3002","yeaft.dreamDebug.requestResponse":"Request / Response","yeaft.dreamDebug.noRequestResponse":"\u8FD9\u4E2A scope \u8FD8\u6CA1\u6709\u6301\u4E45\u5316\u7684 Dream request/response \u65E5\u5FD7\u3002","yeaft.dreamDebug.empty":"\u6682\u65E0 Dream debug \u6570\u636E\u3002","yeaft.debugGroupFollowMain":"\u8DDF\u968F\u4E3B\u9762\u677F","yeaft.debugGroupAll":"\u5168\u90E8\u4F1A\u8BDD","yeaft.debugAssistantResponse":"Assistant \u56DE\u590D","yeaft.debugViewAssistantResponse":"\u67E5\u770B\u56DE\u590D","yeaft.debugToolInput":"\u8F93\u5165","yeaft.debugToolResult":"\u7ED3\u679C","yeaft.debugToolRunning":"\u6267\u884C\u4E2D","yeaft.debugToolRunningNoResult":"\u6267\u884C\u4E2D\uFF0C\u6682\u65E0\u7ED3\u679C","yeaft.debugShowDetails":"\u5C55\u5F00","yeaft.debugHideDetails":"\u6536\u8D77","yeaft.debugTurnStartedAt":"\u56DE\u5408\u5F00\u59CB\u65F6\u95F4","yeaft.debugRequestAt":"\u8BF7\u6C42\u65F6\u95F4","yeaft.debugRequestAtDerived":"\u7531\u56DE\u5408\u5F00\u59CB\u65F6\u95F4\u63A8\u7B97\uFF08\u65E7 loop\uFF09","yeaft.turn":"\u7B2C {n} \u8F6E","yeaft.systemPrompt":"\u7CFB\u7EDF\u63D0\u793A","yeaft.messagesLabel":"\u6D88\u606F","yeaft.response":"\u56DE\u590D","yeaft.toolCalls":"\u5DE5\u5177\u8C03\u7528","yeaft.functionCalls":"\u51FD\u6570\u8C03\u7528","yeaft.request":"\u8BF7\u6C42","yeaft.pending":"(\u7B49\u5F85\u4E2D)","yeaft.inputTokens":"\u8F93\u5165","yeaft.outputTokens":"\u8F93\u51FA","yeaft.duration":"\u8017\u65F6","yeaft.noDebugData":"\u6682\u65E0\u8C03\u8BD5\u6570\u636E","yeaft.showDebug":"\u663E\u793A\u8C03\u8BD5\u9762\u677F","yeaft.hideDebug":"\u9690\u85CF\u8C03\u8BD5\u9762\u677F","yeaft.reloadPage":"\u5237\u65B0\u9875\u9762","yeaft.reloadMessages":"\u91CD\u65B0\u52A0\u8F7D\u6D88\u606F","sidebar.sessions.syncing":"\u6B63\u5728\u540C\u6B65\u6700\u65B0\u6D88\u606F","yeaft.historySearch.label":"\u641C\u7D22 Session \u5386\u53F2\u6D88\u606F","yeaft.historySearch.button":"\u641C\u7D22\u6D88\u606F","yeaft.historySearch.placeholder":"\u641C\u7D22\u5F53\u524D Session \u7684\u6D88\u606F","yeaft.historySearch.searching":"\u6B63\u5728\u641C\u7D22\u2026","yeaft.historySearch.minChars":"\u81F3\u5C11\u8F93\u5165 2 \u4E2A\u5B57\u7B26","yeaft.historySearch.empty":"\u6CA1\u6709\u5339\u914D\u7684\u6D88\u606F","yeaft.historySearch.error":"\u641C\u7D22\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5","yeaft.historySearch.unsupported":"\u8BF7\u5347\u7EA7\u5F53\u524D Agent \u540E\u518D\u641C\u7D22 Session \u5386\u53F2\u6D88\u606F","yeaft.historySearch.more":"\u52A0\u8F7D\u66F4\u591A\u7ED3\u679C","yeaft.historySearch.you":"\u4F60","yeaft.historySearch.assistant":"\u52A9\u624B","yeaft.outline.label":"\u5386\u53F2\u6D88\u606F","yeaft.outline.sender":"\u53D1\u9001\u8005","yeaft.outline.allSenders":"\u5168\u90E8\u53D1\u9001\u8005","yeaft.outline.title":"\u5386\u53F2\u6D88\u606F","yeaft.outline.placeholder":"\u641C\u7D22\u5F53\u524D\u5BF9\u8BDD","yeaft.outline.searching":"\u6B63\u5728\u641C\u7D22\u2026","yeaft.outline.loading":"\u6B63\u5728\u52A0\u8F7D\u2026","yeaft.outline.older":"\u52A0\u8F7D\u66F4\u65E9\u6D88\u606F","yeaft.outline.moreMatches":"\u52A0\u8F7D\u66F4\u591A\u5339\u914D\u9879","yeaft.outline.minChars":"\u81F3\u5C11\u8F93\u5165 2 \u4E2A\u5B57\u7B26","yeaft.outline.empty":"\u6682\u65E0\u6D88\u606F","yeaft.outline.noMatches":"\u6CA1\u6709\u5339\u914D\u7684\u6D88\u606F","yeaft.outline.error":"\u5927\u7EB2\u52A0\u8F7D\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5","yeaft.outline.unsupported":"\u8BF7\u5347\u7EA7\u5F53\u524D Agent \u540E\u518D\u4F7F\u7528\u5BF9\u8BDD\u5927\u7EB2","yeaft.outline.you":"\u4F60","yeaft.outline.assistant":"\u52A9\u624B","yeaft.outline.nonText":"\u975E\u6587\u672C\u56DE\u590D","yeaft.switchModel":"\u5207\u6362\u6A21\u578B","yeaft.modelMenu.title":"\u6A21\u578B\u548C LLM \u8BBE\u7F6E","yeaft.modelMenu.label":"\u6A21\u578B","yeaft.modelMenu.effort":"\u63A8\u7406\u5F3A\u5EA6","yeaft.modelMenu.effort.openaiReasoning":"\u63A8\u7406\u5F3A\u5EA6","yeaft.modelMenu.effort.anthropicBudget":"\u601D\u8003\u9884\u7B97","yeaft.modelMenu.effort.anthropicAdaptive":"\u81EA\u9002\u5E94\u601D\u8003\u5F3A\u5EA6","yeaft.modelMenu.effort.minimal":"\u6700\u5C0F","yeaft.modelMenu.effort.low":"\u4F4E","yeaft.modelMenu.effort.medium":"\u4E2D","yeaft.modelMenu.effort.high":"\u9AD8","yeaft.modelMenu.effort.xhigh":"\u8D85\u9AD8","yeaft.modelMenu.effort.max":"\u6700\u9AD8","yeaft.modelMenu.noEffort":"\u5F53\u524D\u6A21\u578B\u6CA1\u6709\u53EF\u517C\u5BB9\u6620\u5C04\u7684\u63A8\u7406\u5F3A\u5EA6\u63A7\u5236\u3002","yeaft.modelMenu.configureHint":"Provider\u3001\u5BC6\u94A5\u3001\u6A21\u578B\u5217\u8868","yeaft.settings.title":"\u8BBE\u7F6E","yeaft.settings.tabs.vp":"VP \u5E93","yeaft.settings.tabs.search":"\u641C\u7D22","search.settings.backendTitle":"\u641C\u7D22\u540E\u7AEF","search.settings.backendDesc":"\u9009\u62E9 WebSearch \u5DE5\u5177\u9ED8\u8BA4\u4F7F\u7528\u7684\u540E\u7AEF\u3002\u4E3B\u540E\u7AEF\u5931\u8D25\u65F6,\u5F15\u64CE\u4F1A\u81EA\u52A8\u964D\u7EA7\u5230 HTML \u6293\u53D6\u3002","search.settings.backend.tavily":"Tavily","search.settings.backend.tavilyHint":"\u6258\u7BA1\u641C\u7D22 API\u3002\u514D\u8D39\u989D\u5EA6 1000 \u6B21/\u6708\u3002\u63A8\u8350\u3002","search.settings.backend.playwright":"Playwright \u670D\u52A1","search.settings.backend.playwrightHint":"\u81EA\u5EFA\u7684\u6D4F\u89C8\u5668\u5F0F\u641C\u7D22/\u6293\u53D6\u670D\u52A1,\u9002\u5408 IP \u4FE1\u8A89\u5DEE\u88AB bot \u68C0\u6D4B\u7684\u73AF\u5883\u3002\u5C1A\u672A\u4E0A\u7EBF\u3002","search.settings.comingSoon":"\u5373\u5C06\u63A8\u51FA","search.settings.tavilyKeyTitle":"Tavily API key","search.settings.tavilyKeyDesc":"\u4FDD\u5B58\u5728 agent \u7684 ~/.yeaft/config.json \u4E2D\u3002\u514D\u8D39\u7533\u8BF7:","search.settings.tavilyKeyUnchanged":"\u4FDD\u6301\u4E0D\u53D8","search.settings.clearKey":"\u6E05\u9664","search.settings.usageTitle":"\u672C\u6708\u7528\u91CF","search.settings.usageRefresh":"\u5237\u65B0","search.settings.usageLoading":"\u52A0\u8F7D\u4E2D\u2026","search.settings.usagePlan":"\u8BA1\u5212","search.settings.usageUsed":"\u5DF2\u7528","search.settings.usagePaygo":"\u6309\u91CF\u4ED8\u8D39","search.settings.usageError":"\u52A0\u8F7D\u7528\u91CF\u5931\u8D25","search.settings.save":"\u4FDD\u5B58","search.settings.saving":"\u4FDD\u5B58\u4E2D\u2026","search.settings.saveSuccess":"\u5DF2\u4FDD\u5B58","search.settings.cancel":"\u91CD\u7F6E","yeaft.settings.yeaftTitle":"\u7EBF\u7A0B\u5E76\u53D1\u4E0E\u5F52\u6863","yeaft.settings.yeaftDesc":"\u8C03\u6574\u53EF\u540C\u65F6\u8FD0\u884C\u7684\u7EBF\u7A0B\u6570\u91CF\uFF0C\u4EE5\u53CA\u95F2\u7F6E\u7EBF\u7A0B\u7684\u81EA\u52A8\u5F52\u6863\u65F6\u957F\u3002","yeaft.settings.maxConcurrentLabel":"\u6700\u5927\u5E76\u53D1\u7EBF\u7A0B\u6570","yeaft.settings.maxConcurrentHint":"\u540C\u65F6\u5728\u7EBF\u7684\u7EBF\u7A0B\u603B\u6570\u4E0A\u9650\uFF08\u542B\u59CB\u7EC8\u5B58\u5728\u7684 main \u4E3B\u7EBF\u7A0B\uFF09\u3002\u8D85\u8FC7\u6B64\u4E0A\u9650\u7684\u65B0\u7EBF\u7A0B\u5C06\u88AB\u62D2\u7EDD\uFF0C\u76F4\u81F3\u5DF2\u6709\u7EBF\u7A0B\u88AB\u5F52\u6863\u6216\u7EC8\u6B62\u3002\u8303\u56F4\uFF1A1-50\u3002","yeaft.settings.archiveIdleDaysLabel":"\u95F2\u7F6E\u591A\u4E45\u540E\u81EA\u52A8\u5F52\u6863\u7EBF\u7A0B\uFF08\u5929\uFF09","yeaft.settings.archiveIdleDaysHint":"\u65E0\u6D3B\u52A8\u8D85\u8FC7\u6B64\u5929\u6570\u7684\u7EBF\u7A0B\u5C06\u88AB\u5F52\u6863\u3002\u8303\u56F4\uFF1A1-3650\u3002","yeaft.settings.yeaftSaveBtn":"\u4FDD\u5B58","yeaft.settings.yeaftSaving":"\u4FDD\u5B58\u4E2D...","yeaft.settings.yeaftSaved":"\u5DF2\u4FDD\u5B58","yeaft.settings.yeaftLoading":"\u52A0\u8F7D\u4E2D...","yeaft.settings.yeaftLoadError":"\u52A0\u8F7D Yeaft \u8BBE\u7F6E\u5931\u8D25","yeaft.settings.yeaftSaveError":"\u4FDD\u5B58 Yeaft \u8BBE\u7F6E\u5931\u8D25","yeaft.settings.rangeErrorConcurrent":"\u5FC5\u987B\u5728 1 \u5230 50 \u4E4B\u95F4","yeaft.settings.rangeErrorArchive":"\u5FC5\u987B\u5728 1 \u5230 3650 \u4E4B\u95F4","chat.session.creating":"\u6B63\u5728\u521B\u5EFA\u4F1A\u8BDD...","chat.session.loadingHistory":"\u6B63\u5728\u52A0\u8F7D\u4F1A\u8BDD\u5386\u53F2...","yeaft.historyLoad.error":"\u4F1A\u8BDD\u5386\u53F2\u6682\u65F6\u65E0\u6CD5\u52A0\u8F7D\uFF0C\u6D88\u606F\u4ECD\u5B89\u5168\u4FDD\u5B58\u5728 Agent \u4E2D\u3002","yeaft.historyLoad.retry":"\u91CD\u65B0\u52A0\u8F7D","yeaft.sessionInventory.error":"\u6682\u65F6\u65E0\u6CD5\u52A0\u8F7D Session\uFF0C\u4F1A\u8BDD\u4ECD\u5B89\u5168\u4FDD\u5B58\u5728 Agent \u4E2D\u3002","yeaft.sessionInventory.retry":"\u91CD\u65B0\u52A0\u8F7D Session","chat.session.closed":"\u4F1A\u8BDD\u5DF2\u5173\u95ED","chat.session.agentOffline":"Agent \u5DF2\u79BB\u7EBF\uFF0C\u8BE5\u4F1A\u8BDD\u5C06\u5728 Agent \u91CD\u65B0\u4E0A\u7EBF\u540E\u6062\u590D\u3002","chat.execution.cancelled":"\u6267\u884C\u5DF2\u53D6\u6D88","chat.sidebar.expand":"\u5C55\u5F00\u83DC\u5355","chat.sidebar.collapse":"\u6536\u8D77\u4FA7\u8FB9\u680F","chat.sidebar.workbench":"\u5DE5\u5177\u9762\u677F","chat.sidebar.newConv":"\u4F1A\u8BDD","chat.sidebar.recentChats":"\u6700\u8FD1\u4F1A\u8BDD","chat.sidebar.resumeConv":"\u6062\u590D\u4F1A\u8BDD","chat.sidebar.lightMode":"\u6D45\u8272\u6A21\u5F0F","chat.sidebar.darkMode":"\u6DF1\u8272\u6A21\u5F0F","chat.sidebar.settings":"\u8BBE\u7F6E","chat.sidebar.emptyHint":"\u70B9\u51FB\u4E0A\u65B9\u6309\u94AE\u521B\u5EFA\u65B0\u4F1A\u8BDD","chat.sidebar.closeConv":"\u5173\u95ED\u4F1A\u8BDD","chat.sidebar.renameConv":"\u91CD\u547D\u540D","chat.sidebar.pin":"\u7F6E\u9876","chat.sidebar.unpin":"\u53D6\u6D88\u7F6E\u9876","chat.connection.connecting":"\u8FDE\u63A5\u4E2D...","chat.connection.reconnecting":"\u91CD\u8FDE\u4E2D ({current}/{max})...","chat.connection.updating":"\u670D\u52A1\u6B63\u5728\u66F4\u65B0\uFF0C\u8BF7\u7A0D\u5019...","chat.connection.disconnected":"\u8FDE\u63A5\u65AD\u5F00","chat.connection.reconnect":"\u91CD\u8FDE","chat.connection.reconnectFailed":"\u8FDE\u63A5\u65AD\u5F00\uFF0C\u8BF7\u70B9\u51FB\u91CD\u8FDE\u6309\u94AE\u91CD\u8BD5\u3002","chat.time.justNow":"\u521A\u521A","chat.time.minutesAgo":"{count}\u5206\u949F\u524D","chat.time.daysAgo":"{count}\u5929\u524D","chat.time.today":"\u4ECA\u5929","chat.time.yesterday":"\u6628\u5929","chat.delete.confirm":"\u786E\u5B9A\u8981\u5173\u95ED\u8FD9\u4E2A\u4F1A\u8BDD\u5417\uFF1F\u8FD9\u5C06\u7EC8\u6B62\u5BF9\u5E94\u7684 Claude \u8FDB\u7A0B\u3002","chat.delete.enterWorkDir":"\u8BF7\u8F93\u5165\u5DE5\u4F5C\u76EE\u5F55\u8DEF\u5F84","modal.newConv.workDir":"\u5DE5\u4F5C\u76EE\u5F55","modal.newConv.inputOrSelect":"\u8F93\u5165\u6216\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","modal.newConv.browse":"\u6D4F\u89C8\u76EE\u5F55","modal.newConv.noWorkDirs":"\u6682\u65E0\u5DE5\u4F5C\u76EE\u5F55","modal.newConv.selectAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A\u5728\u7EBF\u7684 Agent","modal.newConv.create":"\u521B\u5EFA\u4F1A\u8BDD","modal.newConv.folderLabel":"\u{1F4C1} \u5DE5\u4F5C\u76EE\u5F55","modal.newConv.provider":"\u63D0\u4F9B\u65B9","modal.newConv.model":"\u6A21\u578B","provider.claudeCode":"Claude Code","provider.copilot":"Copilot","modal.resume.workDir":"\u5DE5\u4F5C\u76EE\u5F55","modal.resume.inputOrSelect":"\u8F93\u5165\u6216\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","modal.resume.browse":"\u6D4F\u89C8\u76EE\u5F55","modal.resume.tabFolders":"\u5DE5\u4F5C\u76EE\u5F55","modal.resume.tabSessions":"\u5386\u53F2\u4F1A\u8BDD","modal.resume.noWorkDirs":"\u6682\u65E0\u5DE5\u4F5C\u76EE\u5F55","modal.resume.selectWorkDir":"\u8BF7\u5148\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","modal.resume.noSessions":"\u8BE5\u76EE\u5F55\u4E0B\u6CA1\u6709\u5386\u53F2\u4F1A\u8BDD","modal.resume.untitled":"\u672A\u547D\u540D\u4F1A\u8BDD","modal.resume.folderLabel":"\u{1F4C1} \u5DE5\u4F5C\u76EE\u5F55","modal.resume.sessionLabel":"\u{1F4AC} \u5386\u53F2\u4F1A\u8BDD","modal.resume.selectAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A\u5728\u7EBF\u7684 Agent","modal.folderPicker.title":"\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","modal.folderPicker.parentDir":"\u4E0A\u7EA7\u76EE\u5F55","welcome.subtitle":"\u9762\u5411 Session\u3001\u5DE5\u5177\u548C VP \u534F\u4F5C\u7684 Web Code Agent","welcome.agentOnline":"{count} \u4E2A Agent \u5728\u7EBF","welcome.noAgents":"\u6682\u65E0\u5728\u7EBF Agent","welcome.noAgentsHint":"\u8BF7\u5148\u542F\u52A8 Agent \u7A0B\u5E8F\u8FDE\u63A5\u5230\u670D\u52A1\u5668","welcome.noAgent":"\u6682\u65E0\u5728\u7EBF Agent","welcome.noAgentHint":"\u8BF7\u5148\u542F\u52A8 Agent \u7A0B\u5E8F\u8FDE\u63A5\u5230\u670D\u52A1\u5668","welcome.setupAgent":"\u8BBE\u7F6E Agent","welcome.setupKicker":"Agent \u63A5\u5165","welcome.setupTitle":"\u8FDE\u63A5\u4F60\u7684\u7B2C\u4E00\u4E2A Yeaft Agent","welcome.setupDesc":"\u590D\u5236\u4E24\u6761\u547D\u4EE4\u5373\u53EF\u8FDE\u63A5\u672C\u673A Agent\u3002\u6A21\u578B\u53EF\u7528 GitHub Copilot \u81EA\u52A8\u914D\u7F6E\u3002","welcome.setupInstallTitle":"\u5B89\u88C5 CLI","welcome.setupCopilotTitle":"\u914D\u7F6E\u6A21\u578B","welcome.setupRunTitle":"\u542F\u52A8 Agent","welcome.setupSecretLoading":"\u6B63\u5728\u51C6\u5907 Agent secret...","welcome.setupSecretError":"\u65E0\u6CD5\u51C6\u5907 Agent secret\uFF0C\u8BF7\u6253\u5F00\u5B89\u5168\u8BBE\u7F6E\u91CD\u8BD5\u3002","welcome.openSecuritySettings":"\u6253\u5F00\u5B89\u5168\u8BBE\u7F6E","welcome.newConv":"\u4F1A\u8BDD","welcome.resumeHistory":"\u6062\u590D\u5386\u53F2","messages.loadingMore":"\u52A0\u8F7D\u66F4\u591A\u6D88\u606F...","messages.loadMore":"\u2191 \u70B9\u51FB\u6216\u5411\u4E0A\u6EDA\u52A8\u52A0\u8F7D\u66F4\u591A","message.loadingMore":"\u52A0\u8F7D\u66F4\u591A\u6D88\u606F...","message.loadMore":"\u2191 \u70B9\u51FB\u6216\u5411\u4E0A\u6EDA\u52A8\u52A0\u8F7D\u66F4\u591A","message.scrollToLatest":"\u2193 \u6700\u65B0","message.showResponses":"\u5C55\u5F00 {count} \u6761\u56DE\u590D","message.hideResponses":"\u6298\u53E0\u56DE\u590D","message.assistant":"\u52A9\u624B","chat.waiting.disconnected":"\u8FDE\u63A5\u5DF2\u65AD\u5F00","chat.connecting":"\u6B63\u5728\u8FDE\u63A5 provider \u4F1A\u8BDD...","chat.waiting.compacting":"\u6B63\u5728\u538B\u7F29\u4E0A\u4E0B\u6587...","chat.waiting.agentOffline":"Agent \u5DF2\u79BB\u7EBF","chat.waiting.sessionLost":"Session \u5DF2\u4E22\u5931\uFF0C\u5DF2\u5237\u65B0\uFF0C\u7B49\u5F85\u6700\u65B0\u4FE1\u606F...","chat.waiting.cliExited":"Claude \u8FDB\u7A0B\u5DF2\u9000\u51FA\uFF0C\u5DF2\u5237\u65B0\uFF0C\u7B49\u5F85\u6700\u65B0\u4FE1\u606F...","chat.waiting.refresh":"\u5237\u65B0","chat.waiting.thinking":"AI \u6B63\u5728\u601D\u8003\u4E2D\uFF0C\u8BF7\u7A0D\u5019...","btw.hint":"esc \u9000\u51FA","btw.placeholder":"\u95EE\u4E2A\u987A\u4FBF\u7684\u95EE\u9898...","btw.close":"\u9000\u51FA BTW \u6A21\u5F0F","message.copyContent":"\u590D\u5236\u5185\u5BB9","message.copy":"\u590D\u5236\u5185\u5BB9","message.copied":"\u5DF2\u590D\u5236","message.copyCode":"\u590D\u5236\u4EE3\u7801","message.copyAll":"\u590D\u5236\u5168\u90E8","message.screenshot":"\u622A\u56FE","message.screenshotting":"\u6B63\u5728\u622A\u56FE...","message.exportMd":"\u5BFC\u51FA MD","message.askInput":"\u9700\u8981\u4F60\u7684\u8F93\u5165","message.askAnswered":"\u2713 \u5DF2\u56DE\u7B54","message.askCustom":"\u6216\u8F93\u5165\u81EA\u5B9A\u4E49\u56DE\u7B54...","message.askCustomPlaceholder":"\u6216\u8F93\u5165\u81EA\u5B9A\u4E49\u56DE\u7B54...","message.askSubmit":"\u63D0\u4EA4\u56DE\u7B54","message.askWaiting":"\u7B49\u5F85\u95EE\u9898\u52A0\u8F7D...","message.askExpired":"\u6B64\u95EE\u9898\u5DF2\u5931\u6548\uFF0C\u8BF7\u8BA9\u89D2\u8272\u91CD\u65B0\u63D0\u95EE","message.openInEditor":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00","message.resultDone":"\u5B8C\u6210","message.done":"\u5B8C\u6210","message.resultRead":"\u8BFB\u53D6 {file}","message.readFile":"\u8BFB\u53D6 {name}","message.file":"\u6587\u4EF6","message.attachImages":"{count} \u5F20\u56FE\u7247","message.imageCount":"{count} \u5F20\u56FE\u7247","message.imagePreview":"\u56FE\u7247\u9884\u89C8","message.previousImage":"\u4E0A\u4E00\u5F20\u56FE\u7247","message.nextImage":"\u4E0B\u4E00\u5F20\u56FE\u7247","message.imagePosition":"\u7B2C {current} \u5F20\uFF0C\u5171 {total} \u5F20","message.imageUnavailable":"\u56FE\u7247\u65E0\u6CD5\u52A0\u8F7D","message.attachFiles":"{count} \u4E2A\u6587\u4EF6","message.fileCount":"{count} \u4E2A\u6587\u4EF6","message.quote":"\u5F15\u7528","message.removeQuote":"\u5220\u9664\u5F15\u7528","message.replyingTo":"\u6B63\u5728\u56DE\u590D {author}","message.quotedFrom":"\u5F15\u7528\u81EA {author}","message.editAsNew":"\u7F16\u8F91","message.you":"\u4F60","input.upload":"\u4E0A\u4F20\u6587\u4EF6","input.placeholder":"\u8F93\u5165\u6D88\u606F...","input.send":"\u53D1\u9001","input.stopExecution":"\u505C\u6B62\u6267\u884C","chatInput.upload":"\u4E0A\u4F20\u6587\u4EF6","chatInput.uploading":"\u6B63\u5728\u4E0A\u4F20\u2026","chatInput.uploadFailed":"\u4E0A\u4F20\u5931\u8D25","chatInput.retryUpload":"\u91CD\u8BD5","chatInput.removeAttachment":"\u79FB\u9664\u9644\u4EF6","chatInput.placeholder":"\u8F93\u5165\u6D88\u606F...","chatInput.send":"\u53D1\u9001","chatInput.stop":"\u505C\u6B62\u6267\u884C","tools.thinking":"\u601D\u8003\u4E2D...","tools.read":"\u6B63\u5728\u8BFB\u53D6\u6587\u4EF6","tools.write":"\u6B63\u5728\u5199\u5165\u6587\u4EF6","tools.edit":"\u6B63\u5728\u7F16\u8F91\u6587\u4EF6","tools.bash":"\u6B63\u5728\u6267\u884C\u547D\u4EE4","tools.glob":"\u6B63\u5728\u641C\u7D22\u6587\u4EF6","tools.grep":"\u6B63\u5728\u641C\u7D22\u5185\u5BB9","tools.task":"\u6B63\u5728\u6267\u884C\u4EFB\u52A1","tools.webFetch":"\u6B63\u5728\u83B7\u53D6\u7F51\u9875","tools.webSearch":"\u6B63\u5728\u641C\u7D22\u7F51\u7EDC","tools.todoWrite":"\u6B63\u5728\u66F4\u65B0\u4EFB\u52A1","tools.executing":"\u6B63\u5728\u6267\u884C {name}","status.thinking":"\u601D\u8003\u4E2D...","status.reading":"\u6B63\u5728\u8BFB\u53D6\u6587\u4EF6","status.writing":"\u6B63\u5728\u5199\u5165\u6587\u4EF6","status.editing":"\u6B63\u5728\u7F16\u8F91\u6587\u4EF6","status.executing":"\u6B63\u5728\u6267\u884C\u547D\u4EE4","status.searchingFiles":"\u6B63\u5728\u641C\u7D22\u6587\u4EF6","status.searchingContent":"\u6B63\u5728\u641C\u7D22\u5185\u5BB9","status.executingTask":"\u6B63\u5728\u6267\u884C\u4EFB\u52A1","status.fetching":"\u6B63\u5728\u83B7\u53D6\u7F51\u9875","status.searching":"\u6B63\u5728\u641C\u7D22\u7F51\u7EDC","status.updatingTasks":"\u6B63\u5728\u66F4\u65B0\u4EFB\u52A1","status.executingTool":"\u6B63\u5728\u6267\u884C {name}","header.compacting":"\u6B63\u5728\u538B\u7F29\u4E0A\u4E0B\u6587...","header.compacted":"\u4E0A\u4E0B\u6587\u538B\u7F29\u5B8C\u6210","chatHeader.newConv":"\u4F1A\u8BDD","chatHeader.compacting":"\u6B63\u5728\u538B\u7F29\u4E0A\u4E0B\u6587...","chatHeader.compactDone":"\u4E0A\u4E0B\u6587\u538B\u7F29\u5B8C\u6210","chatHeader.compact":"\u538B\u7F29\u4E0A\u4E0B\u6587","chatHeader.resume":"\u6062\u590D\u4F1A\u8BDD","chatHeader.refresh":"\u5237\u65B0\u6D88\u606F","chatHeader.reloadPage":"\u5237\u65B0\u9875\u9762","chatHeader.clear":"\u6E05\u7A7A\u6D88\u606F","chatHeader.clearing":"\u6B63\u5728\u6E05\u7A7A\u4E0A\u4E0B\u6587...","chatHeader.clearDone":"\u4E0A\u4E0B\u6587\u5DF2\u6E05\u7A7A","chatHeader.confirmClear":"\u786E\u5B9A\u8981\u6E05\u7A7A\u5F53\u524D\u4F1A\u8BDD\u7684\u6240\u6709\u6D88\u606F\u5417\uFF1F","chatHeader.mcpConfig":"MCP \u670D\u52A1\u5668\u914D\u7F6E","chatHeader.mcpNeedRestart":"\u66F4\u6539\u5C06\u5728\u91CD\u542F\u4F1A\u8BDD\u540E\u751F\u6548\u3002","chatHeader.expertPanel":"\u5E2E\u5E2E\u56E2","chatHeader.subAgentPanel":"\u5B50\u4EE3\u7406","settings.close":"\u5173\u95ED\u8BBE\u7F6E","settings.tabs.account":"\u8D26\u53F7","settings.tabs.security":"\u5B89\u5168","settings.tabs.general":"\u901A\u7528","settings.tabs.invitations":"\u9080\u8BF7","auth.sessionExpired":"\u767B\u5F55\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55\u3002","settings.account.username":"\u7528\u6237\u540D","settings.account.role":"\u89D2\u8272","settings.account.email":"\u90AE\u7BB1","settings.account.emailNotSet":"\u672A\u8BBE\u7F6E","settings.account.profileLoadFailed":"\u8D26\u53F7\u8D44\u6599\u52A0\u8F7D\u5931\u8D25","settings.account.logout":"\u9000\u51FA\u767B\u5F55","settings.account.roleAdmin":"\u7BA1\u7406\u5458","settings.account.rolePro":"Pro","settings.account.linkedAccounts":"\u5DF2\u5173\u8054\u8D26\u6237","settings.account.linkedDesc":"\u5173\u8054\u7B2C\u4E09\u65B9\u767B\u5F55\u540E\uFF0C\u4F7F\u7528\u4EFB\u610F\u4E00\u79CD\u65B9\u5F0F\u90FD\u80FD\u767B\u5F55\u6B64\u8D26\u53F7\u3002","settings.account.bind":"\u7ED1\u5B9A","settings.account.unbind":"\u89E3\u7ED1","settings.account.linked":"\u5DF2\u7ED1\u5B9A","settings.account.providerDisabled":"\u672A\u914D\u7F6E","settings.account.cantUnbindLast":"\u4E0D\u80FD\u89E3\u7ED1\u552F\u4E00\u7684\u767B\u5F55\u65B9\u5F0F","settings.account.unbindFailed":"\u89E3\u7ED1\u5931\u8D25\uFF1A{error}","settings.account.bindFailed":"\u7ED1\u5B9A\u5931\u8D25","settings.account.ssoBoundMsg":"\u5DF2\u6210\u529F\u7ED1\u5B9A {provider}\u3002","settings.account.ssoConflictMsg":"\u8BE5 {provider} \u8D26\u53F7\u5DF2\u88AB\u5176\u4ED6\u7528\u6237\u7ED1\u5B9A\u3002","settings.account.providerMicrosoft":"Microsoft","settings.account.providerGithub":"GitHub","settings.account.providerGoogle":"Google","settings.account.providerWechat":"\u5FAE\u4FE1","settings.account.providerAlipay":"\u652F\u4ED8\u5B9D","settings.security.agentKey":"Agent \u5BC6\u94A5","settings.security.agentKeyDesc":"\u7528\u4E8E Agent \u8FDE\u63A5\u8BA4\u8BC1\u7684\u5171\u4EAB\u5BC6\u94A5","settings.security.agentSetupCommands":"Agent \u63A5\u5165\u547D\u4EE4","settings.security.agentCmdInstall":"\u5B89\u88C5 Agent","settings.security.agentCmdService":"\u8FD0\u884C Agent server","settings.security.agentCmdNeedsSecret":"\u8BF7\u5148\u751F\u6210 Agent \u5BC6\u94A5\uFF0C\u4EE5\u521B\u5EFA\u5305\u542B server \u5730\u5740\u548C\u5BC6\u94A5\u7684\u547D\u4EE4\u3002","settings.security.agentCmdLlm":"Copilot \u624B\u52A8\u515C\u5E95","settings.security.agentCmdLlmDesc":"\u5148\u8FD0\u884C\u5B89\u88C5\u547D\u4EE4\uFF1B\u5982\u679C\u672C\u673A\u5DF2\u6709 GitHub Copilot token\uFF0CYeaft \u4F1A\u81EA\u52A8\u914D\u7F6E github-copilot/gpt-5.5\u3002Copilot \u547D\u4EE4\u53EA\u4F5C\u4E3A\u515C\u5E95\u4F7F\u7528\u3002","settings.security.none":"\u65E0","settings.security.show":"\u663E\u793A","settings.security.hide":"\u9690\u85CF","settings.security.generateKey":"\u751F\u6210\u5BC6\u94A5","settings.security.resetKey":"\u91CD\u7F6E\u5BC6\u94A5","settings.security.resetting":"\u91CD\u7F6E\u4E2D...","settings.security.resetWarning":"\u91CD\u7F6E\u540E\u6240\u6709 Agent \u9700\u91CD\u65B0\u914D\u7F6E","settings.security.changePassword":"\u4FEE\u6539\u5BC6\u7801","settings.security.currentPassword":"\u5F53\u524D\u5BC6\u7801","settings.security.newPassword":"\u65B0\u5BC6\u7801\uFF08\u81F3\u5C116\u4F4D\uFF09","settings.security.confirmPassword":"\u786E\u8BA4\u65B0\u5BC6\u7801","settings.security.changeBtn":"\u4FEE\u6539\u5BC6\u7801","settings.security.changing":"\u4FEE\u6539\u4E2D...","settings.security.enterCurrentPwd":"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801","settings.security.newPwdMin":"\u65B0\u5BC6\u7801\u81F3\u5C116\u4F4D","settings.security.pwdMismatch":"\u4E24\u6B21\u5BC6\u7801\u4E0D\u4E00\u81F4","settings.security.pwdChanged":"\u5BC6\u7801\u4FEE\u6539\u6210\u529F","settings.security.setPassword":"\u8BBE\u7F6E\u5BC6\u7801","settings.security.setPasswordDesc":"\u4F60\u76EE\u524D\u901A\u8FC7 SSO \u767B\u5F55\uFF0C\u5C1A\u672A\u8BBE\u7F6E\u5BC6\u7801\u3002\u8BBE\u7F6E\u540E\u5373\u53EF\u4F7F\u7528\u7528\u6237\u540D + \u5BC6\u7801\u767B\u5F55\u3002","settings.security.setBtn":"\u8BBE\u7F6E\u5BC6\u7801","settings.security.pwdSet":"\u5BC6\u7801\u8BBE\u7F6E\u6210\u529F","settings.security.deleteAccount":"\u6CE8\u9500\u8D26\u6237","settings.security.deleteAccountDesc":"\u6C38\u4E45\u5220\u9664\u4F60\u7684\u8D26\u6237\u548C\u6240\u6709\u76F8\u5173\u6570\u636E\u3002\u6B64\u64CD\u4F5C\u4E0D\u53EF\u6062\u590D\u3002","settings.security.deleteBtn":"\u6CE8\u9500\u8D26\u6237","settings.security.deleteConfirmBtn":"\u786E\u8BA4\u5220\u9664","settings.security.deleteConfirmPlaceholder":"\u8F93\u5165 DELETE \u4EE5\u786E\u8BA4","settings.security.deleteConfirmRequired":"\u8BF7\u8F93\u5165 DELETE \u4EE5\u786E\u8BA4\u6CE8\u9500\u8D26\u6237","settings.security.deleteFailed":"\u6CE8\u9500\u8D26\u6237\u5931\u8D25","settings.security.deleting":"\u6CE8\u9500\u4E2D...","settings.general.theme":"\u4E3B\u9898","settings.general.lightTheme":"\u6D45\u8272","settings.general.darkTheme":"\u6DF1\u8272","settings.general.language":"\u8BED\u8A00","settings.general.telemetry":"\u6027\u80FD\u9065\u6D4B","settings.general.telemetryDesc":"\u5728\u672C\u5730\u6279\u91CF\u8BB0\u5F55\u8017\u65F6\u8BCA\u65AD\uFF1Btrace \u5185\u5BB9\u4E0D\u4F1A\u53D1\u9001\u5230\u670D\u52A1\u5668\u3002","settings.general.telemetryOn":"\u5F00\u542F","settings.general.telemetryOff":"\u5173\u95ED","settings.general.telemetryRawLimit":"Provider \u539F\u59CB\u54CD\u5E94\u4E0A\u9650\uFF08\u5B57\u8282\uFF09","settings.invite.create":"\u521B\u5EFA\u9080\u8BF7\u7801","settings.invite.normalUser":"\u666E\u901A\u7528\u6237","settings.invite.proUser":"Pro \u7528\u6237","settings.invite.createBtn":"\u521B\u5EFA\u9080\u8BF7\u7801","settings.invite.creating":"\u521B\u5EFA\u4E2D...","settings.invite.list":"\u9080\u8BF7\u7801\u5217\u8868","settings.invite.used":"\u5DF2\u4F7F\u7528","settings.invite.expired":"\u5DF2\u8FC7\u671F","settings.invite.available":"\u53EF\u7528","settings.invite.usedBy":"\u4F7F\u7528\u8005: {user}","settings.invite.expiredAt":"\u8FC7\u671F\u4E8E: {time}","settings.invite.expiresAt":"\u6709\u6548\u81F3: {time}","settings.invite.noInvites":"\u6682\u65E0\u9080\u8BF7\u7801","settings.msg.copiedClipboard":"\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F","settings.msg.copyFailed":"\u590D\u5236\u5931\u8D25","settings.msg.keyReset":"\u5BC6\u94A5\u5DF2\u91CD\u7F6E","settings.msg.resetFailed":"\u91CD\u7F6E\u5931\u8D25","settings.msg.changeFailed":"\u4FEE\u6539\u5931\u8D25","settings.msg.inviteCreated":"\u9080\u8BF7\u7801\u5DF2\u521B\u5EFA","settings.msg.createFailed":"\u521B\u5EFA\u5931\u8D25","settings.msg.inviteCopied":"\u9080\u8BF7\u7801\u5DF2\u590D\u5236","settings.msg.inviteDeleted":"\u9080\u8BF7\u7801\u5DF2\u5220\u9664","settings.msg.deleteFailed":"\u5220\u9664\u5931\u8D25","settings.tabs.llm":"LLM","settings.tabs.yeaft":"Yeaft","settings.yeaft.tabs.vp":"VP \u5E93","settings.yeaft.tabs.search":"\u641C\u7D22","settings.yeaft.tabs.mcp":"MCP","settings.mcp.title":"MCP \u670D\u52A1\u5668","settings.mcp.description":"\u901A\u8FC7 Model Context Protocol \u7ED9 Yeaft \u63A5\u5165\u66F4\u591A\u5DE5\u5177\u3002\u914D\u7F6E\u5199\u5165 agent \u4E0A\u7684 ~/.yeaft/config.json\uFF0C\u5DE5\u5177\u4F1A\u4EE5 mcp__<server>__<tool> \u7684\u5F62\u5F0F\u51FA\u73B0\u5728 LLM \u5DE5\u5177\u5217\u8868\u91CC\u3002","settings.mcp.reloadAll":"\u5168\u90E8\u91CD\u8FDE","settings.mcp.reloadOne":"\u91CD\u65B0\u8FDE\u63A5\u6B64\u670D\u52A1\u5668","settings.mcp.loading":"\u5904\u7406\u4E2D\u2026","settings.mcp.connected":"\u5DF2\u8FDE\u63A5","settings.mcp.disconnected":"\u672A\u8FDE\u63A5","settings.mcp.tools":"\u4E2A\u5DE5\u5177","settings.mcp.remove":"\u79FB\u9664","settings.mcp.empty":"\u8FD8\u6CA1\u6709\u914D\u7F6E MCP \u670D\u52A1\u5668\uFF0C\u53EF\u4EE5\u5728\u4E0B\u65B9\u6DFB\u52A0\u4E00\u4E2A\u3002","settings.mcp.addServer":"\u6DFB\u52A0\u670D\u52A1\u5668","settings.mcp.addServerDesc":"\u5927\u90E8\u5206 MCP \u670D\u52A1\u5668\u662F\u672C\u5730\u547D\u4EE4 \u2014 Yeaft \u4F1A\u901A\u8FC7 stdio \u542F\u52A8\u5B83\u5E76\u81EA\u52A8\u53D1\u73B0\u53EF\u7528\u5DE5\u5177\u3002","settings.mcp.serverName":"\u540D\u79F0","settings.mcp.command":"\u547D\u4EE4","settings.mcp.args":"\u53C2\u6570","settings.mcp.argsPlaceholder":"\u4F8B\u5982\uFF1A-y @modelcontextprotocol/server-filesystem /tmp","settings.mcp.env":"\u73AF\u5883\u53D8\u91CF","settings.mcp.envPlaceholder":"\u6BCF\u884C\u4E00\u4E2A KEY=value\uFF0C# \u5F00\u5934\u7684\u884C\u4F1A\u88AB\u5FFD\u7565\u3002","settings.mcp.saving":"\u4FDD\u5B58\u4E2D\u2026","settings.mcp.add":"\u6DFB\u52A0","settings.mcp.cancel":"\u6E05\u7A7A","settings.mcp.connectFailed":"\u5DF2\u4FDD\u5B58\u4F46\u8FDE\u63A5\u5931\u8D25","settings.mcp.addSuccess":"\u670D\u52A1\u5668\u5DF2\u6DFB\u52A0","settings.mcp.removeSuccess":"\u670D\u52A1\u5668\u5DF2\u79FB\u9664","settings.mcp.reloadSuccess":"\u5DF2\u8BF7\u6C42\u91CD\u8FDE","settings.mcp.confirmRemove":'\u79FB\u9664 MCP \u670D\u52A1\u5668 "{name}"\uFF1F\u4E0B\u4E00\u4E2A LLM turn \u8D77\u5B83\u7684\u5DE5\u5177\u5C06\u4E0D\u518D\u53EF\u89C1\u3002',"settings.mcp.errors.nameRequired":"\u8BF7\u586B\u5199\u540D\u79F0","settings.mcp.errors.nameFormat":"\u540D\u79F0\u53EA\u80FD\u5305\u542B\u5C0F\u5199\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u77ED\u6A2A\u7EBF\u548C\u4E0B\u5212\u7EBF","settings.mcp.errors.commandRequired":"\u8BF7\u586B\u5199\u547D\u4EE4","settings.mcp.errors.argsParse":"\u53C2\u6570\u89E3\u6790\u5931\u8D25","settings.mcp.errors.envParse":"\u73AF\u5883\u53D8\u91CF\u89E3\u6790\u5931\u8D25","yeaft.session.title":"\u4F1A\u8BDD","yeaft.session.new":"+ \u65B0\u5EFA\u4F1A\u8BDD","yeaft.session.create.title":"\u65B0\u5EFA\u4F1A\u8BDD","yeaft.session.create.subtitle":"\u9009\u62E9\u8FD0\u884C\u4F4D\u7F6E\u548C\u5904\u7406\u4F1A\u8BDD\u7684 Provider\u3002","yeaft.session.create.close":"\u5173\u95ED","yeaft.session.create.nameLabel":"\u540D\u79F0","yeaft.session.create.namePlaceholder":"\u4F1A\u8BDD\u540D\u79F0\uFF08\u53EF\u9009\uFF09","yeaft.session.create.workDirLabel":"\u5DE5\u4F5C\u76EE\u5F55","yeaft.session.create.agentLabel":"Agent","yeaft.session.create.vpPicker":"\u9009\u62E9 VP","yeaft.session.create.vpNone":"\u672A\u9009\u62E9 VP","yeaft.session.create.vpCount":"\u5DF2\u9009 {n} \u4E2A VP","yeaft.session.create.untitled":"\u672A\u547D\u540D\u4F1A\u8BDD","yeaft.session.create.rosterEmpty":"\u6682\u65E0\u53EF\u7528 VP \u2014 \u8BF7\u5148\u5230\u89D2\u8272\u5E93\u521B\u5EFA\u3002","yeaft.session.create.rosterLoading":"VP \u52A0\u8F7D\u4E2D\u2026","yeaft.session.create.rosterError":"\u65E0\u6CD5\u4ECE\u5F53\u524D Agent \u52A0\u8F7D VP\u3002","yeaft.session.create.rosterRetry":"\u91CD\u8BD5","yeaft.vp.domain.general":"\u901A\u7528\u4E0E\u534F\u4F5C","yeaft.vp.domain.productDesign":"\u4EA7\u54C1\u4E0E\u4F53\u9A8C\u8BBE\u8BA1","yeaft.vp.domain.softwareSystems":"\u8F6F\u4EF6\u4E0E\u7CFB\u7EDF","yeaft.vp.domain.securityReliability":"\u5B89\u5168\u4E0E\u53EF\u9760\u6027","yeaft.vp.domain.scienceAnalysis":"\u79D1\u5B66\u4E0E\u5206\u6790","yeaft.vp.domain.philosophyPsychology":"\u54F2\u5B66\u4E0E\u5FC3\u7406","yeaft.vp.domain.strategyHistory":"\u6218\u7565\u4E0E\u5386\u53F2","yeaft.vp.domain.businessManagement":"\u5546\u4E1A\u4E0E\u7BA1\u7406","yeaft.vp.domain.artsCulture":"\u827A\u672F\u4E0E\u6587\u5316","yeaft.vp.domain.other":"\u5176\u4ED6\u9886\u57DF","yeaft.vp.domain.custom":"\u81EA\u5B9A\u4E49 VP","yeaft.session.create.defaultVpHint":"\u5F53\u6CA1\u6709 @ \u63D0\u53CA\u65F6\u9ED8\u8BA4\u56DE\u7B54\u7684 VP\u3002","yeaft.session.create.folderLabel":"\u{1F4C1} \u5DE5\u4F5C\u76EE\u5F55","yeaft.session.create.sessionLabel":"\u{1F4AC} \u6B64\u76EE\u5F55\u4E0B\u7684 session","yeaft.session.create.noWorkDirs":"\u8FD8\u6CA1\u6709\u4EFB\u4F55\u4F1A\u8BDD \u2014 \u5728\u4E0A\u65B9\u9009\u62E9\u6216\u8F93\u5165\u5DE5\u4F5C\u76EE\u5F55\u5F00\u59CB\u3002","yeaft.session.create.back":"\u8FD4\u56DE","yeaft.session.create.creating":"\u521B\u5EFA\u4E2D\u2026","yeaft.session.create.submit":"\u521B\u5EFA","yeaft.onboarding.ariaLabel":"Yeaft \u4E0A\u624B\u8BF4\u660E","yeaft.onboarding.topbarTitle":"\u5F00\u59CB\u4F7F\u7528 Yeaft","yeaft.onboarding.eyebrow":"Yeaft \u4E0A\u624B\u6307\u5357","yeaft.onboarding.title":"\u5148\u8FDE\u63A5 Agent\uFF0C\u518D\u5F00\u59CB\u4F1A\u8BDD","yeaft.onboarding.subtitle":"\u5728\u8D1F\u8D23\u6267\u884C\u5DE5\u5177\u7684\u673A\u5668\u4E0A\u76F4\u63A5\u8FD0\u884C\u4E0B\u9762\u7684\u547D\u4EE4\u3002agent secret \u5982\u679C\u4E0D\u5B58\u5728\uFF0C\u4F1A\u81EA\u52A8\u4E3A\u5F53\u524D\u8D26\u53F7\u751F\u6210\u3002","yeaft.onboarding.createSession":"\u521B\u5EFA\u6216\u6062\u590D Session","yeaft.onboarding.configureLlm":"\u6253\u5F00 LLM \u8BBE\u7F6E","yeaft.onboarding.secretLoading":"\u6B63\u5728\u751F\u6210 agent secret\u2026","yeaft.onboarding.secretError":"\u52A0\u8F7D agent secret \u5931\u8D25\u3002","yeaft.onboarding.secretPending":"<\u6B63\u5728\u52A0\u8F7D-agent-secret>","yeaft.onboarding.installTitle":"\u5B89\u88C5 yeaft-agent","yeaft.onboarding.installDesc":"\u5B89\u88C5\u547D\u4EE4\u884C Agent \u5305\u3002","yeaft.onboarding.connectTitle":"\u8FDE\u63A5\u8FD9\u4E2A Agent","yeaft.onboarding.connectDesc":"\u4E0B\u9762\u7684\u547D\u4EE4\u5DF2\u7ECF\u5E26\u4E0A\u5F53\u524D server URL \u548C\u81EA\u52A8\u751F\u6210\u7684 secret\u3002","yeaft.onboarding.llmTitle":"\u4F7F\u7528 GitHub Copilot","yeaft.onboarding.llmDesc":"\u5148\u767B\u5F55 GitHub CLI\uFF0C\u7136\u540E\u628A gpt-5.5 \u8BBE\u4E3A Yeaft \u9ED8\u8BA4\u6A21\u578B\u3002","yeaft.restore.modal.empty":"\u6B64\u76EE\u5F55\u4E0B\u6CA1\u6709 yeaft session","yeaft.restore.modal.scanError":"\u626B\u63CF\u5931\u8D25: {message}","yeaft.restore.modal.restoreError":"\u6062\u590D\u5931\u8D25: {message}","settings.llm.noAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A Agent \u4EE5\u7BA1\u7406 LLM \u914D\u7F6E\u3002","settings.llm.agentOffline":"Agent \u5F53\u524D\u79BB\u7EBF\uFF0C\u65E0\u6CD5\u52A0\u8F7D LLM \u914D\u7F6E\u3002\u8BF7\u7B49\u5F85 Agent \u4E0A\u7EBF\u540E\u91CD\u8BD5\u3002","settings.llm.loading":"\u6B63\u5728\u52A0\u8F7D\u914D\u7F6E...","settings.llm.loadError":"\u52A0\u8F7D\u914D\u7F6E\u5931\u8D25","settings.llm.configureAgent":"\u914D\u7F6E\u5F53\u524D Agent \u7684 LLM","settings.llm.configureMenu":"\u8BBE\u7F6E LLM","settings.llm.simpleCopilotTitle":"\u63A8\u8350\uFF1AGitHub Copilot","settings.llm.useGitHubCopilot":"\u4F7F\u7528 GitHub Copilot","settings.llm.refreshingModels":"\u6B63\u5728\u5237\u65B0\u6A21\u578B...","settings.llm.managedCopilotTitle":"\u6258\u7BA1\u7684 GitHub Copilot","settings.llm.managedCopilotDesc":"Base URL\u3001\u8BA4\u8BC1\u3001\u6A21\u578B\u76EE\u5F55\u548C\u6BCF\u4E2A\u6A21\u578B\u7684 API \u534F\u8BAE\u90FD\u81EA\u52A8\u7BA1\u7406\u3002Claude \u6A21\u578B\u8D70 Anthropic Messages\uFF1BGPT/o \u6A21\u578B\u8D70 OpenAI Responses\u3002","settings.llm.providersTitle":"\u670D\u52A1\u5546","settings.llm.testFailed":"\u8FDE\u63A5\u6D4B\u8BD5\u5931\u8D25","settings.llm.saveSuccess":"LLM \u8BBE\u7F6E\u5DF2\u4FDD\u5B58","settings.llm.saveFailed":"\u4FDD\u5B58 LLM \u8BBE\u7F6E\u5931\u8D25","settings.llm.presets.title":"\u5FEB\u901F\u914D\u7F6E","settings.llm.providersDesc":"\u9009\u62E9\u4E00\u4E2A\u670D\u52A1\u5546\uFF0C\u4FDD\u5B58\u540E\u5373\u53EF\u5728 Session \u4E2D\u4F7F\u7528\u3002","settings.llm.agentProviders":"\u5F53\u524D agent providers","settings.llm.agentBadge":"\u5F53\u524D agent","settings.llm.addProvider":"\u6DFB\u52A0\u670D\u52A1\u5546","settings.llm.addFromPreset":"\u4ECE\u76EE\u5F55\u6DFB\u52A0","settings.llm.preset.title":"\u670D\u52A1\u5546\u76EE\u5F55\uFF08models.dev\uFF09","settings.llm.preset.refresh":"\u5237\u65B0\u76EE\u5F55","settings.llm.preset.loading":"\u52A0\u8F7D\u76EE\u5F55\u2026","settings.llm.preset.empty":"\u76EE\u5F55\u4E3A\u7A7A\u3002","settings.llm.preset.pickProvider":"\u5728\u5DE6\u4FA7\u9009\u62E9\u4E00\u4E2A\u670D\u52A1\u5546\u4EE5\u67E5\u770B\u6A21\u578B\u3002","settings.llm.preset.filterProviders":"\u8FC7\u6EE4\u670D\u52A1\u5546\u2026","settings.llm.preset.filterModels":"\u8FC7\u6EE4\u6A21\u578B\u2026","settings.llm.preset.selectAll":"\u5168\u9009","settings.llm.preset.selectNone":"\u6E05\u7A7A","settings.llm.preset.cancel":"\u53D6\u6D88","settings.llm.preset.add":"\u6DFB\u52A0\u5230\u670D\u52A1\u5546\u5217\u8868","settings.llm.preset.fetchedAt":"\u76EE\u5F55\u5DF2\u66F4\u65B0 {minutes} \u5206\u949F","settings.llm.addModel":"\u6DFB\u52A0\u6A21\u578B","settings.llm.removeModel":"\u79FB\u9664\u6A21\u578B","settings.llm.providerName":"\u540D\u79F0","settings.llm.providerNamePlaceholder":"\u4F8B\u5982 my-proxy","settings.llm.baseUrl":"Base URL","settings.llm.baseUrlPlaceholder":"\u4F8B\u5982 http://localhost:6628/v1","settings.llm.apiKey":"API Key","settings.llm.apiKeyPlaceholder":"\u8F93\u5165 API Key","settings.llm.protocol":"\u534F\u8BAE","settings.llm.protocolOpenAI":"OpenAI \u517C\u5BB9","settings.llm.protocolOpenAIResponses":"OpenAI Responses (GPT-5)","settings.llm.protocolAnthropic":"Anthropic \u539F\u751F","settings.llm.protocolHint.anthropic":"Claude \u539F\u751F Messages API\u3002","settings.llm.protocolHint.openai":"Chat Completions /v1/chat/completions \u2014 GPT-4 \u53CA\u5927\u591A\u6570\u517C\u5BB9\u4EE3\u7406\u3002","settings.llm.protocolHint.openaiResponses":"Responses API /v1/responses \u2014 GPT-5 \u7CFB\u5217\u5FC5\u987B\u3002","settings.llm.modelCtxPlaceholder":"\u4E0A\u4E0B\u6587","settings.llm.modelMaxPlaceholder":"\u8F93\u51FA","settings.llm.models":"\u5019\u9009\u6A21\u578B ID","settings.llm.modelsPlaceholder":"\u6A21\u578B ID\uFF0C\u9017\u53F7\u6216\u6362\u884C\u5206\u9694\uFF0C\u4F8B\u5982 claude-sonnet-4-20250514, gpt-5","settings.llm.modelsHint":"\u9017\u53F7\u6216\u6362\u884C\u5206\u9694\u3002","settings.llm.removeProvider":"\u79FB\u9664","settings.llm.modelSelectionTitle":"\u6A21\u578B\u9009\u62E9","settings.llm.modelSelectionDesc":"\u9009\u62E9\u9ED8\u8BA4\u6A21\u578B\u3002","settings.llm.primaryModel":"\u4E3B\u6A21\u578B","settings.llm.primaryModelDesc":"\u7528\u4E8E\u7528\u6237\u5BF9\u8BDD","settings.llm.fastModel":"\u5FEB\u901F\u6A21\u578B","settings.llm.fastModelDesc":"\u7528\u4E8E\u5185\u90E8\u4EFB\u52A1\uFF08\u8BB0\u5FC6\u3001\u603B\u7ED3\uFF09","settings.llm.noModels":"\u6682\u65E0\u53EF\u7528\u6A21\u578B\u3002\u8BF7\u5148\u6DFB\u52A0\u670D\u52A1\u5546\u3002","settings.llm.selectModel":"\u9009\u62E9\u6A21\u578B...","settings.llm.debugTitle":"\u8C03\u8BD5\u8F68\u8FF9","settings.llm.debugDesc":"\u6309 Agent \u5F00\u542F\u9010\u8F6E\u8C03\u8BD5\u8F68\u8FF9\u6536\u96C6\uFF08\u7CFB\u7EDF\u63D0\u793A\u8BCD\u3001LLM \u8C03\u7528\u3001\u5DE5\u5177\u8F7D\u8377\uFF09\u3002","settings.llm.enableDebug":"\u542F\u7528\u8C03\u8BD5\u8F68\u8FF9","settings.llm.save":"\u4FDD\u5B58\u66F4\u6539","settings.llm.saving":"\u4FDD\u5B58\u4E2D...","settings.llm.saved":"\u914D\u7F6E\u5DF2\u4FDD\u5B58","settings.llm.savedRefreshWarning":"\u914D\u7F6E\u5DF2\u4FDD\u5B58\uFF0C\u4F46\u5B9E\u65F6\u6A21\u578B\u76EE\u5F55\u5237\u65B0\u5931\u8D25\uFF1A{error}","settings.llm.unsavedChanges":"\u6709\u672A\u4FDD\u5B58\u7684\u66F4\u6539","settings.llm.confirmRemoveProvider":"\u786E\u5B9A\u79FB\u9664\u6B64\u670D\u52A1\u5546\uFF1F","settings.llm.setupTitle":"\u8FDE\u63A5\u6A21\u578B","settings.llm.setupDesc":"\u63A8\u8350\u4F7F\u7528 GitHub Copilot\uFF1B\u4E5F\u53EF\u4EE5\u6DFB\u52A0\u81EA\u5DF1\u7684 API \u670D\u52A1\u5546\u3002","settings.llm.providerSectionHint":"\u53EA\u4FDD\u7559\u8FDE\u63A5\u6A21\u578B\u5FC5\u9700\u7684\u4FE1\u606F\u3002","settings.tabs.dashboard":"\u4EEA\u8868\u677F","settings.dashboard.totalUsers":"\u603B\u7528\u6237\u6570","settings.dashboard.onlineUsers":"\u5728\u7EBF\u7528\u6237","settings.dashboard.onlineAgents":"\u5728\u7EBFAgent","settings.dashboard.totalSessions":"\u603B\u4F1A\u8BDD\u6570","settings.dashboard.todayActive":"\u4ECA\u65E5\u6D3B\u8DC3","settings.dashboard.todayMessages":"\u4ECA\u65E5\u6D88\u606F","settings.dashboard.todayUserTurns":"\u4ECA\u65E5\u7528\u6237 Turn","settings.dashboard.totalTokens":"\u603B Token","settings.dashboard.tokenAccuracy":"\u6765\u81EA\u6A21\u578B\u670D\u52A1\u5546\u8FD4\u56DE\u7684\u5B9E\u9645\u7528\u91CF\uFF1B\u4ECE\u542F\u7528\u6309\u7528\u6237 Token \u7EDF\u8BA1\u7684\u7248\u672C\u5F00\u59CB\u7D2F\u8BA1\uFF0C\u4E14\u4E0D\u5305\u542B\u5FC3\u8DF3\u3002","settings.dashboard.agentTurns":"Agent Turn","settings.dashboard.agentSessions":"Agent Session","settings.dashboard.turns":"Turn","settings.dashboard.tokens":"Token","settings.dashboard.inputTokens":"\u8F93\u5165","settings.dashboard.outputTokens":"\u8F93\u51FA","settings.dashboard.cacheTokens":"\u7F13\u5B58","settings.dashboard.today":"\u4ECA\u5929","settings.dashboard.thisWeek":"\u672C\u5468","settings.dashboard.thisMonth":"\u672C\u6708","settings.dashboard.all":"\u5168\u90E8","settings.dashboard.userUsage":"\u7528\u6237\u7528\u91CF","settings.dashboard.agentList":"Agent \u5217\u8868","settings.dashboard.onlineUserList":"\u5728\u7EBF\u7528\u6237","settings.dashboard.refresh":"\u5237\u65B0","settings.dashboard.name":"\u540D\u79F0","settings.dashboard.messages":"\u6D88\u606F\u6570","settings.dashboard.userTurns":"\u7528\u6237 Turn \u6570","settings.dashboard.sessions":"\u4F1A\u8BDD\u6570","settings.dashboard.requests":"\u8BF7\u6C42\u6570","settings.dashboard.traffic":"\u6D41\u91CF","settings.dashboard.lastLogin":"\u6700\u540E\u767B\u5F55","settings.dashboard.status":"\u72B6\u6001","settings.dashboard.latency":"\u5EF6\u8FDF","settings.dashboard.version":"\u7248\u672C","settings.dashboard.owner":"\u6240\u6709\u8005","settings.dashboard.role":"\u89D2\u8272","settings.dashboard.agent":"Agent","settings.dashboard.online":"\u5728\u7EBF","settings.dashboard.offline":"\u79BB\u7EBF","settings.dashboard.noAgents":"\u6682\u65E0\u6CE8\u518C Agent","settings.dashboard.noUserData":"\u6682\u65E0\u7528\u6237\u6570\u636E","settings.dashboard.noOnlineUsers":"\u6682\u65E0\u5728\u7EBF\u7528\u6237","settings.dashboard.loading":"\u52A0\u8F7D\u4E2D...","settings.dashboard.error":"\u6570\u636E\u52A0\u8F7D\u5931\u8D25","settings.dashboard.ago":"{time}\u524D","settings.dashboard.loadMore":"\u52A0\u8F7D\u66F4\u591A\uFF08\u5269\u4F59 {remaining} \u6761\uFF09","workbench.maximize":"\u6700\u5927\u5316\u9762\u677F","workbench.restore":"\u8FD8\u539F\u9762\u677F","workbench.collapse":"\u6536\u8D77\u9762\u677F","theme.switchToLight":"\u5207\u6362\u5230\u6D45\u8272\u4E3B\u9898","theme.switchToDark":"\u5207\u6362\u5230\u6DF1\u8272\u4E3B\u9898","theme.toLight":"\u5207\u6362\u5230\u6D45\u8272\u4E3B\u9898","theme.toDark":"\u5207\u6362\u5230\u6DF1\u8272\u4E3B\u9898","terminal.splitH":"\u6C34\u5E73\u5206\u5C4F\uFF08\u5DE6\u53F3\uFF09","terminal.splitV":"\u5782\u76F4\u5206\u5C4F\uFF08\u4E0A\u4E0B\uFF09","terminal.close":"\u5173\u95ED\u5F53\u524D\u7EC8\u7AEF","terminal.autoCreate":"\u5207\u6362\u5230 Terminal \u6807\u7B7E\u65F6\u5C06\u81EA\u52A8\u521B\u5EFA\u7EC8\u7AEF","terminal.xtermError":"xterm.js \u672A\u52A0\u8F7D\uFF0C\u8BF7\u5237\u65B0\u9875\u9762","terminal.xtermNotLoaded":"xterm.js \u672A\u52A0\u8F7D\uFF0C\u8BF7\u5237\u65B0\u9875\u9762","terminal.mountError":"\u7EC8\u7AEF\u5BB9\u5668\u6302\u8F7D\u5931\u8D25","terminal.mountFailed":"\u7EC8\u7AEF\u5BB9\u5668\u6302\u8F7D\u5931\u8D25","terminal.createError":"\u7EC8\u7AEF\u521B\u5EFA\u5931\u8D25","terminal.createFailed":"\u7EC8\u7AEF\u521B\u5EFA\u5931\u8D25","terminal.error":"\u7EC8\u7AEF\u9519\u8BEF","git.selectFolder":"\u9009\u62E9\u6587\u4EF6\u5939","git.repoPath":"\u8F93\u5165 Git \u4ED3\u5E93\u8DEF\u5F84...","git.repoPathPlaceholder":"\u8F93\u5165 Git \u4ED3\u5E93\u8DEF\u5F84...","git.workDir":"Git \u5DE5\u4F5C\u76EE\u5F55","git.loadStatus":"\u52A0\u8F7D Git \u72B6\u6001","git.loading":"\u52A0\u8F7D Git \u72B6\u6001...","git.loadingStatus":"\u52A0\u8F7D Git \u72B6\u6001...","git.clean":"\u5DE5\u4F5C\u533A\u5E72\u51C0\uFF0C\u65E0\u53D8\u66F4","git.cleanWorkDir":"\u5DE5\u4F5C\u533A\u5E72\u51C0\uFF0C\u65E0\u53D8\u66F4","git.selectAgent":"\u9009\u62E9 Agent \u540E\u52A0\u8F7D Git \u72B6\u6001","git.selectAgentFirst":"\u9009\u62E9 Agent \u540E\u52A0\u8F7D Git \u72B6\u6001","git.diffOnly":"\u53EA\u770B\u5DEE\u5F02","git.fullFile":"\u770B\u5168\u6587","git.zoomIn":"\u653E\u5927\u5B57\u4F53","git.zoomOut":"\u7F29\u5C0F\u5B57\u4F53","git.loadingDiff":"\u52A0\u8F7D Diff...","git.clickToView":"\u70B9\u51FB\u6587\u4EF6\u67E5\u770B\u5DEE\u5F02","git.clickFileToView":"\u70B9\u51FB\u6587\u4EF6\u67E5\u770B\u5DEE\u5F02","git.selectRepo":"\u9009\u62E9 Git \u4ED3\u5E93","git.noDiff":"(\u65E0\u5DEE\u5F02)","git.binaryFile":"(\u4E8C\u8FDB\u5236\u6587\u4EF6)","files.notLoaded":"\u672A\u52A0\u8F7D","files.newFile":"\u65B0\u5EFA\u6587\u4EF6","files.newFolder":"\u65B0\u5EFA\u6587\u4EF6\u5939","files.collapseAll":"\u6298\u53E0\u6240\u6709","files.openFolder":"\u6253\u5F00\u6587\u4EF6\u5939","files.deleteSelected":"\u5220\u9664\u9009\u4E2D","files.moveSelected":"\u79FB\u52A8\u9009\u4E2D","files.enterPath":"\u8F93\u5165\u8DEF\u5F84...","files.searchFiles":"\u641C\u7D22\u6587\u4EF6... (Ctrl+P)","files.noMatch":"\u65E0\u5339\u914D\u7ED3\u679C","files.searching":"\u641C\u7D22\u4E2D...","files.loadingTree":"\u52A0\u8F7D\u4E2D...","files.emptyDir":"\u7A7A\u76EE\u5F55","files.loadingFile":"\u52A0\u8F7D\u6587\u4EF6...","files.searchPlaceholder":"\u641C\u7D22...","files.replacePlaceholder":"\u66FF\u6362...","files.replace":"\u66FF\u6362","files.replaceAll":"\u5168\u90E8","files.replaceCurrent":"\u66FF\u6362\u5F53\u524D","files.replaceAllTitle":"\u5168\u90E8\u66FF\u6362","files.clickToView":"\u70B9\u51FB\u6587\u4EF6\u67E5\u770B\u5185\u5BB9","files.selectFolder":"\u9009\u62E9\u6587\u4EF6\u5939","files.enterFolderName":"\u8F93\u5165\u6587\u4EF6\u5939\u540D...","files.enterFileName":"\u8F93\u5165\u6587\u4EF6\u540D...","files.moveTarget":"\u8F93\u5165\u76EE\u6807\u76EE\u5F55\u8DEF\u5F84...","files.moveItems":"\u5C06 {count} \u4E2A\u9879\u76EE\u79FB\u52A8\u5230\u6307\u5B9A\u76EE\u5F55","files.workDir":"\u5DE5\u4F5C\u76EE\u5F55: {dir}","files.enterDirPath":"\u8F93\u5165\u76EE\u5F55\u8DEF\u5F84...","files.unsavedConfirm":'"{name}" \u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539\uFF0C\u786E\u5B9A\u5173\u95ED\uFF1F',"files.deleteConfirm":'\u786E\u5B9A\u8981\u5220\u9664 "{name}" \u5417\uFF1F',"files.deleteDirHint":"\uFF08\u5C06\u5220\u9664\u6587\u4EF6\u5939\u53CA\u5176\u6240\u6709\u5185\u5BB9\uFF09","files.deleteSelectedConfirm":"\u786E\u5B9A\u8981\u5220\u9664\u9009\u4E2D\u7684 {count} \u4E2A\u9879\u76EE\u5417\uFF1F\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002","files.findPrev":"\u4E0A\u4E00\u4E2A (Shift+Enter)","files.findNext":"\u4E0B\u4E00\u4E2A (Enter)","files.caseSensitive":"\u533A\u5206\u5927\u5C0F\u5199","files.regex":"\u6B63\u5219\u8868\u8FBE\u5F0F","files.unsaved":"\u672A\u4FDD\u5B58","files.clearSelection":"\u6E05\u9664\u9009\u62E9","files.rename":"\u91CD\u547D\u540D","files.copyHere":"\u590D\u5236","files.moveTo":"\u79FB\u52A8\u5230...","files.download":"\u4E0B\u8F7D","files.enterNewName":"\u8F93\u5165\u65B0\u540D\u79F0...","files.loadingPreview":"\u52A0\u8F7D\u9884\u89C8\u4E2D...","files.preview":"\u9884\u89C8","files.edit":"\u7F16\u8F91","files.pptxNotSupported":"PPTX \u672C\u5730\u9884\u89C8\u6682\u4E0D\u652F\u6301\uFF0C\u8BF7\u5728\u8BBE\u7F6E\u4E2D\u5207\u6362\u4E3A Office Online \u6A21\u5F0F\u3002","files.officePreviewMode":"Office \u9884\u89C8\u6A21\u5F0F","files.officeOnline":"Office Online","files.localRender":"\u672C\u5730\u6E32\u67D3","proxy.port":"\u7AEF\u53E3","proxy.label":"\u6807\u7B7E","proxy.add":"\u6DFB\u52A0\u7AEF\u53E3\u6620\u5C04","proxy.addPort":"\u6DFB\u52A0\u7AEF\u53E3\u6620\u5C04","proxy.enable":"\u70B9\u51FB\u542F\u7528","proxy.clickEnable":"\u70B9\u51FB\u542F\u7528","proxy.disable":"\u70B9\u51FB\u7981\u7528","proxy.clickDisable":"\u70B9\u51FB\u7981\u7528","proxy.openNewTab":"\u5728\u65B0\u6807\u7B7E\u9875\u6253\u5F00","proxy.openInBrowser":"\u5728\u65B0\u6807\u7B7E\u9875\u6253\u5F00","proxy.noMappings":"\u6682\u65E0\u7AEF\u53E3\u6620\u5C04","proxy.noPorts":"\u6682\u65E0\u7AEF\u53E3\u6620\u5C04","proxy.hint":"\u6DFB\u52A0\u7AEF\u53E3\u540E\uFF0C\u53EF\u901A\u8FC7\u4EE3\u7406 URL \u8BBF\u95EE agent \u673A\u5668\u4E0A\u7684\u672C\u5730\u670D\u52A1","proxy.noPortsHint":"\u6DFB\u52A0\u7AEF\u53E3\u540E\uFF0C\u53EF\u901A\u8FC7\u4EE3\u7406 URL \u8BBF\u95EE agent \u673A\u5668\u4E0A\u7684\u672C\u5730\u670D\u52A1","proxy.selectAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A Agent","store.selectAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A Agent","store.creatingConv":"\u6B63\u5728\u521B\u5EFA\u4F1A\u8BDD...","store.loadingHistory":"\u6B63\u5728\u52A0\u8F7D\u4F1A\u8BDD\u5386\u53F2...","store.executionCancelled":"\u6267\u884C\u5DF2\u53D6\u6D88","store.loginFailed":"\u767B\u5F55\u5931\u8D25","store.convClosed":"\u4F1A\u8BDD\u5DF2\u5173\u95ED","store.convCreated":"\u65B0\u4F1A\u8BDD\u5DF2\u521B\u5EFA [{agent}]\uFF0C\u5DE5\u4F5C\u76EE\u5F55: {workDir}","store.convResumed":"\u5DF2\u6062\u590D\u4F1A\u8BDD [{agent}]: {sessionId}","roleplay.creating":"\u6B63\u5728\u521B\u5EFA \u89D2\u8272\u626E\u6F14 \u4F1A\u8BDD...","roleplay.working":"\u5DE5\u4F5C\u4E2D","roleplay.selectTeam":"\u9009\u62E9\u56E2\u961F\u6A21\u677F","roleplay.teamDev":"\u8F6F\u4EF6\u5F00\u53D1","roleplay.teamCustom":"\u81EA\u5B9A\u4E49","roleplay.editRoles":"\u7F16\u8F91\u89D2\u8272","roleplay.roleName":"\u89D2\u8272\u6807\u8BC6","roleplay.roleDisplayName":"\u663E\u793A\u540D\u79F0","roleplay.roleIcon":"\u56FE\u6807","roleplay.roleDesc":"\u89D2\u8272\u63CF\u8FF0","roleplay.rolePrompt":"\u89D2\u8272 Prompt","roleplay.removeRole":"\u79FB\u9664\u89D2\u8272","roleplay.addRole":"\u6DFB\u52A0\u89D2\u8272","roleplay.start":"\u542F\u52A8 \u89D2\u8272\u626E\u6F14","roleplay.sidebarTitle":"\u89D2\u8272\u626E\u6F14","roleplay.configTitle":"\u89D2\u8272\u626E\u6F14","roleplay.newSession":"\u65B0\u5EFA \u89D2\u8272\u626E\u6F14","roleplay.emptyHint":"\u53D1\u9001\u6D88\u606F\u5F00\u59CB\u591A\u89D2\u8272\u534F\u4F5C","roleplay.askingYou":"\u6B63\u5728\u63D0\u95EE","roleplay.language":"\u8BED\u8A00","roleplay.rolePreview":"\u89D2\u8272\u914D\u7F6E","roleplay.noAgents":"\u6CA1\u6709\u5728\u7EBF\u7684 Agent","roleplay.inputPlaceholder":"\u8F93\u5165\u6D88\u606F\u2026 \u4F7F\u7528 @ \u63D0\u53CA\u89D2\u8272","roleplay.existingSessions":"\u5DF2\u6709\u56E2\u961F","roleplay.restore":"\u6062\u590D","roleplay.restoring":"\u6B63\u5728\u6062\u590D \u89D2\u8272\u626E\u6F14 \u4F1A\u8BDD...","roleplay.createNew":"\u521B\u5EFA\u65B0\u56E2\u961F","expertPanel.title":"\u5E2E\u5E2E\u56E2","expertPanel.search":"\u641C\u7D22\u89D2\u8272\u6216 Action...","expertPanel.noResults":"\u6CA1\u6709\u5339\u914D\u7ED3\u679C","expertPanel.clearAll":"\u6E05\u7A7A","expertPanel.persona":"\u89D2\u8272\u4EBA\u8BBE","expertPanel.template":"\u6709\u8F93\u5165\u65F6 \xB7 \u6D88\u606F\u524D\u7F00","expertPanel.templateHint":"\u7528\u6237\u5199\u4E86\u6587\u5B57\u65F6\uFF1A\u6B64\u524D\u7F00 + \u7528\u6237\u6587\u5B57 = \u6700\u7EC8\u53D1\u9001\u5185\u5BB9","expertPanel.defaultMsg":"\u65E0\u8F93\u5165\u65F6 \xB7 \u5B8C\u6574 Prompt","expertPanel.defaultMsgHint":"\u7528\u6237\u4E0D\u5199\u6587\u5B57\u76F4\u63A5\u53D1\u9001\u65F6\uFF0C\u4F7F\u7528\u6B64\u5B8C\u6574 prompt","expertPanel.loading":"\u6B63\u5728\u52A0\u8F7D\u89D2\u8272\u5B9A\u4E49...","expertPanel.viewPrompt":"\u67E5\u770B\u63D0\u793A\u8BCD","expertPanel.customRoles":"\u81EA\u5B9A\u4E49\u89D2\u8272","expertPanel.addRole":"\u6DFB\u52A0\u89D2\u8272","expertPanel.editRole":"\u7F16\u8F91\u89D2\u8272","expertPanel.deleteRole":"\u5220\u9664\u89D2\u8272","expertPanel.noCustomRoles":"\u6682\u65E0\u81EA\u5B9A\u4E49\u89D2\u8272","expertPanel.createFirst":"\u521B\u5EFA\u7B2C\u4E00\u4E2A\u81EA\u5B9A\u4E49\u89D2\u8272","expertPanel.noActions":"\u6682\u65E0 Action","expertPanel.deleteConfirm":'\u786E\u5B9A\u8981\u5220\u9664\u89D2\u8272 "{name}" \u5417\uFF1F\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002',"expertPanel.deleteConfirmBtn":"\u5220\u9664","expertEditor.createTitle":"\u521B\u5EFA\u81EA\u5B9A\u4E49\u89D2\u8272","expertEditor.editTitle":"\u7F16\u8F91\u81EA\u5B9A\u4E49\u89D2\u8272","expertEditor.basicInfo":"\u57FA\u672C\u4FE1\u606F","expertEditor.roleName":"\u89D2\u8272\u540D\u79F0","expertEditor.roleNamePlaceholder":"\u5982\uFF1A\u6570\u636E\u5206\u6790\u5E08","expertEditor.roleTitle":"\u804C\u79F0","expertEditor.roleTitlePlaceholder":"\u5982\uFF1A\u9AD8\u7EA7\u6570\u636E\u5206\u6790\u5E08","expertEditor.fullName":"\u5168\u540D","expertEditor.fullNamePlaceholder":"\u53EF\u9009","expertEditor.titleEn":"\u82F1\u6587\u804C\u79F0","expertEditor.titleEnPlaceholder":"\u53EF\u9009","expertEditor.rolePrompt":"\u89D2\u8272 Prompt","expertEditor.messagePrefix":"\u6D88\u606F\u524D\u7F00\uFF08\u4E2D\u6587\uFF09","expertEditor.messagePrefixPlaceholder":"\u5982\uFF1A\u4F5C\u4E3A\u4E00\u540D\u8D44\u6DF1\u6570\u636E\u5206\u6790\u5E08\uFF0C","expertEditor.messagePrefixEn":"\u6D88\u606F\u524D\u7F00\uFF08\u82F1\u6587\uFF09","expertEditor.messagePrefixEnPlaceholder":"As a senior data analyst, ","expertEditor.actions":"Actions","expertEditor.addAction":"\u6DFB\u52A0 Action","expertEditor.removeAction":"\u79FB\u9664","expertEditor.actionName":"Action \u540D\u79F0","expertEditor.actionNamePlaceholder":"\u5982\uFF1A\u6570\u636E\u5206\u6790","expertEditor.actionNameEn":"\u82F1\u6587\u540D\u79F0","expertEditor.actionNameEnPlaceholder":"\u53EF\u9009","expertEditor.messageTemplate":"\u6709\u8F93\u5165\u65F6 \xB7 \u6D88\u606F\u524D\u7F00\uFF08\u4E2D\u6587\uFF09","expertEditor.messageTemplatePlaceholder":"\u7528\u6237\u5199\u4E86\u6587\u5B57\u65F6\uFF0C\u62FC\u5728\u7528\u6237\u6587\u5B57\u524D\u9762\u53D1\u9001","expertEditor.messageTemplateEn":"\u6709\u8F93\u5165\u65F6 \xB7 \u6D88\u606F\u524D\u7F00\uFF08\u82F1\u6587\uFF09","expertEditor.messageTemplateEnPlaceholder":"Prepended to user text when user types something","expertEditor.defaultMessage":"\u65E0\u8F93\u5165\u65F6 \xB7 \u5B8C\u6574 Prompt\uFF08\u4E2D\u6587\uFF09","expertEditor.defaultMessagePlaceholder":"\u7528\u6237\u4E0D\u5199\u6587\u5B57\u76F4\u63A5\u53D1\u9001\u65F6\uFF0C\u4F7F\u7528\u6B64\u5B8C\u6574\u5185\u5BB9","expertEditor.defaultMessageEn":"\u65E0\u8F93\u5165\u65F6 \xB7 \u5B8C\u6574 Prompt\uFF08\u82F1\u6587\uFF09","expertEditor.defaultMessageEnPlaceholder":"Used as-is when user sends without typing","expertEditor.cancel":"\u53D6\u6D88","expertEditor.save":"\u4FDD\u5B58","expertEditor.saving":"\u4FDD\u5B58\u4E2D...","subAgentPanel.title":"\u5B50\u4EE3\u7406","subAgentPanel.back":"\u8FD4\u56DE\u5217\u8868","subAgentPanel.running":"\u8FD0\u884C\u4E2D","subAgentPanel.completed":"\u5DF2\u5B8C\u6210","subAgentPanel.waitingMessages":"\u7B49\u5F85\u6D88\u606F...","subAgentPanel.toolCount":"{count} \u4E2A\u5DE5\u5177","subAgentPanel.toolSummary":"\u5DF2\u5B8C\u6210 {count} \u6B21\u5DE5\u5177\u8C03\u7528","subAgentPanel.empty":"\u6682\u65E0\u5B50\u4EE3\u7406","subAgentPanel.emptyHint":"\u5F53 Claude \u59D4\u6D3E\u4EFB\u52A1\u65F6\uFF0C\u5B50\u4EE3\u7406\u4F1A\u5728\u8FD9\u91CC\u663E\u793A","splitScreen.split":"\u5206\u5C4F","splitScreen.closePane":"\u5173\u95ED\u6B64\u9762\u677F","splitScreen.newChat":"\u65B0\u5EFA Chat","splitScreen.noSessions":"\u6682\u65E0\u4F1A\u8BDD","splitScreen.splitToPanel":"\u5728\u65B0\u9762\u677F\u4E2D\u6253\u5F00","splitScreen.selectFromSidebar":"\u4ECE\u5DE6\u4FA7\u9009\u62E9\u5BF9\u8BDD","yeaft.vp.library":"\u89D2\u8272\u5E93","yeaft.vp.createFirst":"+ \u521B\u5EFA\u4F60\u7684\u7B2C\u4E00\u4E2A\u89D2\u8272","yeaft.vp.empty.aria":"\u5C1A\u65E0\u89D2\u8272","yeaft.vp.avatar.aria":"{name} \u5934\u50CF","yeaft.vp.speaker.stateCauseAria":"\u72B6\u6001\u53D8\u66F4\uFF1A{cause}","yeaft.vp.status.thinking":"\u6B63\u5728\u601D\u8003\u2026","yeaft.vp.status.tool":"\u6B63\u5728\u4F7F\u7528 {name}","yeaft.vp.status.done":"\u5B8C\u6210 \xB7 {count} \u4E2A\u5DE5\u5177","yeaft.vp.status.aborted":"\u5DF2\u4E2D\u6B62","yeaft.vp.crud.title":"\u89D2\u8272\u5E93","yeaft.vp.crud.close":"\u5173\u95ED","yeaft.vp.crud.addNew":"+ \u65B0\u5EFA\u89D2\u8272","yeaft.vp.crud.empty":"\u8FD8\u6CA1\u6709\u89D2\u8272\u3002\u521B\u5EFA\u7B2C\u4E00\u4E2A\u89D2\u8272\u5F00\u59CB\u534F\u4F5C\u5427\u3002","yeaft.vp.crud.edit":"\u7F16\u8F91","yeaft.vp.crud.delete":"\u5220\u9664","yeaft.vp.crud.deleteConfirm":'\u5220\u9664 "{name}"\uFF1F\u4F1A\u4E00\u5E76\u5220\u9664\u78C1\u76D8\u4E0A\u7684 role.md \u6587\u4EF6\u3002',"yeaft.vp.crud.form.create":"\u521B\u5EFA\u89D2\u8272","yeaft.vp.crud.form.update":"\u7F16\u8F91\u89D2\u8272","yeaft.vp.crud.form.vpId":"\u89D2\u8272 ID","yeaft.vp.crud.form.vpId.tooltip":"\u53EA\u80FD\u7528\u5B57\u6BCD\u3001\u6570\u5B57\u3001- \u548C _\uFF0C\u4E0D\u80FD\u4EE5 _ \u5F00\u5934\uFF0C\u4E0D\u80FD\u662F\u7EAF\u6570\u5B57\uFF0C\u4E0D\u80FD\u7528\u4FDD\u7559\u540D\uFF1Aall / user / system / everyone\u3002","yeaft.vp.crud.form.displayName":"\u663E\u793A\u540D\uFF08\u82F1\u6587\uFF09","yeaft.vp.crud.form.displayNameZh":"\u663E\u793A\u540D\uFF08\u4E2D\u6587\uFF09","yeaft.vp.crud.form.description":"\u80FD\u529B\u63CF\u8FF0\uFF08\u82F1\u6587\uFF09","yeaft.vp.crud.form.descriptionZh":"\u80FD\u529B\u63CF\u8FF0\uFF08\u4E2D\u6587\uFF09","yeaft.vp.crud.form.descriptionPlaceholder":"\u4F8B\u5982\uFF1AAPI design, migration planning, and compatibility reviews","yeaft.vp.crud.form.descriptionZhPlaceholder":"\u4F8B\u5982\uFF1AAPI \u8BBE\u8BA1\u3001\u8FC1\u79FB\u89C4\u5212\u4E0E\u517C\u5BB9\u6027\u8BC4\u5BA1","yeaft.vp.crud.form.role":"\u804C\u4F4D","yeaft.vp.crud.form.rolePlaceholder":"\u4F8B\u5982\uFF1A\u4EA7\u54C1\u7ECF\u7406","yeaft.vp.crud.form.traits":"\u7279\u8D28\u6807\u7B7E","yeaft.vp.crud.form.traitsHint":"\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\u7684\u77ED\u6807\u7B7E\uFF08\u4F8B\u5982\uFF1A\u597D\u5947, \u52A1\u5B9E\uFF09\u3002","yeaft.vp.crud.form.modelHint":"\u6A21\u578B\u504F\u597D","yeaft.vp.crud.form.modelHint.none":"\u2014 \u9ED8\u8BA4 \u2014","yeaft.vp.crud.form.modelHint.primary":"\u4E3B\u6A21\u578B","yeaft.vp.crud.form.modelHint.fast":"\u5FEB\u6A21\u578B","yeaft.vp.crud.form.persona":"\u4EBA\u8BBE\uFF08Markdown\uFF09","yeaft.vp.crud.form.personaPlaceholder":"\u63CF\u8FF0\u8FD9\u4E2A\u89D2\u8272\u5982\u4F55\u601D\u8003\u3001\u8868\u8FBE\u3001\u505A\u51B3\u7B56\u2026\u2026","yeaft.vp.crud.form.submit":"\u4FDD\u5B58","yeaft.vp.crud.form.cancel":"\u53D6\u6D88","yeaft.vp.crud.form.ok":"\u683C\u5F0F\u6B63\u786E","yeaft.vp.crud.form.idLocked":"\u521B\u5EFA\u540E\u89D2\u8272 ID \u4E0D\u53EF\u4FEE\u6539\u3002","yeaft.vp.crud.saving":"\u4FDD\u5B58\u4E2D\u2026\u2026","yeaft.vp.crud.saveFailed":"\u4FDD\u5B58\u5931\u8D25\uFF1A{error}","yeaft.vp.crud.deleteFailed":"\u5220\u9664\u5931\u8D25\uFF1A{error}","yeaft.vp.crud.viewPrompt":"\u67E5\u770B prompt","yeaft.vp.crud.view.title":"VP \u63D0\u793A\u8BCD","yeaft.vp.crud.view.personaEmpty":"\uFF08\u672A\u5B9A\u4E49 persona \u6B63\u6587\uFF0C\u53EA\u6709\u57FA\u7840\u5143\u6570\u636E\uFF09","yeaft.vp.crud.view.back":"\u8FD4\u56DE","yeaft.vp.crud.view.editFromHere":"\u7F16\u8F91\u8BE5 VP","yeaft.vp.crud.view.removed":"\u8BE5 VP \u5DF2\u5728\u522B\u5904\u88AB\u5220\u9664\uFF0C\u8FD4\u56DE\u5217\u8868\u3002","yeaft.vp.crud.stockBadge":"\u9884\u88C5","yeaft.vp.crud.stockReadOnly":"\u9884\u88C5 VP \u968F agent \u51FA\u5382\uFF0C\u4E0D\u80FD\u7F16\u8F91\u6216\u5220\u9664\u3002","yeaft.vp.idError.empty_or_non_string":"\u89D2\u8272 ID \u4E0D\u80FD\u4E3A\u7A7A\u3002","yeaft.vp.idError.too_long":"\u89D2\u8272 ID \u592A\u957F\uFF08\u6700\u591A 40 \u5B57\u7B26\uFF09\u3002","yeaft.vp.idError.illegal_character":'\u53EA\u80FD\u4F7F\u7528\u5B57\u6BCD\u3001\u6570\u5B57\u3001"-" \u548C "_"\u3002',"yeaft.vp.idError.underscore_prefix_reserved":'\u89D2\u8272 ID \u4E0D\u80FD\u4EE5 "_" \u5F00\u5934\uFF08\u9884\u7559\u7ED9\u7CFB\u7EDF\u89D2\u8272\uFF09\u3002',"yeaft.vp.idError.pure_digits":"\u89D2\u8272 ID \u4E0D\u80FD\u662F\u7EAF\u6570\u5B57\u3002","yeaft.vp.idError.reserved":"\u89D2\u8272 ID \u4E0D\u80FD\u7528\u4FDD\u7559\u540D\uFF08all / user / system / everyone\uFF09\u3002","yeaft.vp.idError.duplicate":"\u5DF2\u7ECF\u5B58\u5728\u540C ID \u7684\u89D2\u8272\u3002","yeaft.vp.idError.not_found":"\u8BE5 VP \u4E0D\u5B58\u5728\uFF0C\u53EF\u80FD\u5DF2\u88AB\u5220\u9664\u3002","yeaft.vp.idError.stock_readonly":"\u9884\u88C5 VP \u4E0D\u80FD\u7F16\u8F91\u6216\u5220\u9664\u3002","yeaft.vp.idError.unknown":"\u53D1\u751F\u672A\u77E5\u9519\u8BEF\uFF0C\u8BF7\u91CD\u8BD5\u3002","yeaft.vp.reason.personaEdit":"\u4EBA\u8BBE\u5DF2\u66F4\u65B0","yeaft.vp.reason.traitsEdit":"\u7279\u5F81\u5DF2\u66F4\u65B0","yeaft.vp.reason.manualReload":"\u5DF2\u91CD\u65B0\u8F7D\u5165","yeaft.vp.reason.fileRemoved":"\u5DF2\u79FB\u9664","yeaft.vp.reason.toast.updated":"{name}\uFF1A{reason}","yeaft.vp.reason.toast.removed":"{name} \u5DF2\u88AB\u79FB\u9664","yeaft.message.timeAria":"\u53D1\u9001\u4E8E {time}","yeaft.user.youLabel":"\u6211","yeaft.session.sidebarTitle":"\u4F1A\u8BDD","yeaft.session.sidebarAria":"\u4F1A\u8BDD\u5217\u8868","yeaft.session.newButton":"+ \u65B0\u5EFA\u4F1A\u8BDD","yeaft.session.newButtonAria":"\u521B\u5EFA\u65B0\u4F1A\u8BDD","yeaft.session.empty":"\u6682\u65E0\u4F1A\u8BDD\u3002","yeaft.session.membersCount":"{count} \u4F4D\u6210\u5458","yeaft.session.oneMember":"1 \u4F4D\u6210\u5458","yeaft.session.noMembers":"\u7A7A\u4F1A\u8BDD \u2014 \u8BF7\u9080\u8BF7 VP","yeaft.session.defaultBadge":"\u9ED8\u8BA4","yeaft.session.defaultName":"\u9ED8\u8BA4\u4F1A\u8BDD","yeaft.session.moreActions":"\u66F4\u591A\u64CD\u4F5C","yeaft.session.archive":"\u5F52\u6863","yeaft.session.archiveConfirm":"\u5F52\u6863\u300C{name}\u300D\uFF1F\u7A0D\u540E\u53EF\u4ECE\u78C1\u76D8\u6062\u590D\u3002","yeaft.session.archivingEllipsis":"\u5F52\u6863\u4E2D\u2026","yeaft.session.delete":"\u5220\u9664","yeaft.session.deleteConfirm":"\u5220\u9664\u300C{name}\u300D\uFF1F\u5C06\u6C38\u4E45\u5220\u9664\u8BE5\u4F1A\u8BDD\u53CA\u5176\u6240\u6709\u6570\u636E\uFF0C\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002","yeaft.session.deletingEllipsis":"\u5220\u9664\u4E2D\u2026","yeaft.session.rename":"\u91CD\u547D\u540D","yeaft.session.openSettings":"\u8BBE\u7F6E","yeaft.session.removeFromList":"\u79FB\u9664","yeaft.session.manageMembers":"\u7BA1\u7406\u6210\u5458","yeaft.session.memberCount.one":"1 \u4F4D\u6210\u5458","yeaft.session.memberCount.other":"{count} \u4F4D\u6210\u5458","yeaft.session.renamePrompt":"\u4E3A\u300C{name}\u300D\u8F93\u5165\u65B0\u540D\u79F0\uFF1A","yeaft.session.renamingEllipsis":"\u91CD\u547D\u540D\u4E2D\u2026","yeaft.session.editModal.renameTitle":"\u91CD\u547D\u540D\u4F1A\u8BDD","yeaft.session.editModal.renameBody":"\u4E3A\u300C{name}\u300D\u9009\u62E9\u4E00\u4E2A\u65B0\u540D\u79F0\u3002","yeaft.session.editModal.renameSubmit":"\u4FDD\u5B58","yeaft.session.editModal.archiveTitle":"\u5F52\u6863\u4F1A\u8BDD","yeaft.session.editModal.archiveBody":"\u5F52\u6863\u300C{name}\u300D\uFF1F\u7A0D\u540E\u53EF\u4ECE\u78C1\u76D8\u6062\u590D\u3002","yeaft.session.editModal.archiveSubmit":"\u5F52\u6863","yeaft.session.editModal.deleteTitle":"\u5220\u9664\u4F1A\u8BDD","yeaft.session.editModal.deleteBody":"\u5220\u9664\u300C{name}\u300D\uFF1F\u5C06\u6C38\u4E45\u5220\u9664\u8BE5\u4F1A\u8BDD\u53CA\u5176\u6240\u6709\u6570\u636E\uFF0C\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002","yeaft.session.editModal.deleteSubmit":"\u5220\u9664","yeaft.session.editModal.newNameLabel":"\u65B0\u540D\u79F0","yeaft.session.editModal.cancel":"\u53D6\u6D88","yeaft.session.editModal.close":"\u5173\u95ED","yeaft.session.error.invalid_name":"\u4F1A\u8BDD\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A\u3002","yeaft.session.error.duplicate":"\u8BE5\u4F1A\u8BDD id \u5DF2\u5B58\u5728\u3002","yeaft.session.error.not_found":"\u672A\u627E\u5230\u8BE5\u4F1A\u8BDD\u3002","yeaft.session.error.default_not_in_roster":"\u9ED8\u8BA4 VP \u5FC5\u987B\u5728\u6210\u5458\u5217\u8868\u4E2D\u3002","yeaft.session.error.no_default_vp":"\u8BE5\u4F1A\u8BDD\u6CA1\u6709\u6210\u5458\uFF0C\u8BF7\u4ECE\u89D2\u8272\u5E93\u6DFB\u52A0 VP \u4EE5\u5F00\u59CB\u5BF9\u8BDD\u3002","yeaft.session.error.reserved":"\u6240\u9009 id \u4E2D\u5305\u542B\u4FDD\u7559\u540D\uFF08all / user / system / everyone\uFF09\u3002","yeaft.session.error.unknown":"\u4F1A\u8BDD\u64CD\u4F5C\u5931\u8D25\uFF1A{message}","yeaft.session.error.timeout":"\u4F1A\u8BDD\u64CD\u4F5C\u8D85\u65F6\uFF0C\u8BF7\u91CD\u8BD5\u3002","yeaft.session.invite.title":"\u9080\u8BF7 VP","yeaft.session.invite.body":"\u300C{name}\u300D\u5F53\u524D\u4E3A\u7A7A\uFF0C\u8BF7\u4ECE\u89D2\u8272\u5E93\u6DFB\u52A0\u4E00\u4F4D VP \u4EE5\u5F00\u59CB\u5BF9\u8BDD\u3002","yeaft.session.invite.openLibrary":"\u6253\u5F00\u89D2\u8272\u5E93","yeaft.session.invite.dismiss":"\u6682\u4E0D","yeaft.session.empty.title":"\u7A7A\u4F1A\u8BDD","yeaft.session.empty.hint":"\u300C{name}\u300D\u8FD8\u6CA1\u6709\u6210\u5458\u3002\u6DFB\u52A0\u4E00\u4F4D VP \u5373\u53EF\u5F00\u59CB\u5BF9\u8BDD\u3002","yeaft.session.empty.cta":"\u7BA1\u7406\u6210\u5458","yeaft.session.members.title":"\u7BA1\u7406\u300C{name}\u300D\u7684\u6210\u5458","yeaft.session.members.aria":"\u6210\u5458\u7BA1\u7406","yeaft.session.members.close":"\u5173\u95ED","yeaft.session.members.done":"\u5B8C\u6210","yeaft.session.members.empty":"\u6682\u65E0\u53EF\u7528 VP \u2014 \u8BF7\u5148\u5230\u89D2\u8272\u5E93\u521B\u5EFA\u3002","yeaft.session.members.loading":"VP \u52A0\u8F7D\u4E2D\u2026","yeaft.session.members.defaultHint":"\u9ED8\u8BA4 VP\uFF08@\u63D0\u53CA\u7F3A\u7701\u65F6\u7531\u8BE5 VP \u5E94\u7B54\uFF09","yeaft.session.members.memberCount":"\u5DF2\u9009 {count} \u4F4D","yeaft.session.members.actionFailed":"\u64CD\u4F5C\u5931\u8D25\uFF1A{error}","yeaft.session.members.openLibrary":"\u6253\u5F00 VP \u5E93","yeaft.session.members.openLibraryHint":"\u5728 VP \u5E93\u53EF\u521B\u5EFA\u65B0 VP \u6216\u67E5\u770B VP \u7684 prompt\u3002","yeaft.session.announcement.label":"\u4F1A\u8BDD\u516C\u544A","yeaft.session.announcement.hintEmpty":"\u6682\u65E0\u516C\u544A \u2014 \u70B9\u51FB \u270F\uFE0F \u6DFB\u52A0\u3002","yeaft.session.announcement.emptyBody":"\u672A\u8BBE\u7F6E\u4F1A\u8BDD\u516C\u544A\u3002\u53EF\u4EE5\u5728\u8FD9\u91CC\u5199\u4E00\u6BB5\u7B80\u4ECB\uFF0C\u4F1A\u8BDD\u5185\u6240\u6709 VP \u5728\u6536\u5230\u6D88\u606F\u65F6\u90FD\u4F1A\u5728 system prompt \u9876\u90E8\u770B\u5230 \u2014 \u9002\u5408\u5199\u5171\u540C\u80CC\u666F\u3001\u89C4\u5219\u3001\u6216 CLAUDE.md \u5F0F\u7684\u6307\u5F15\u3002","yeaft.session.announcement.placeholder":"\u4E3A\u8FD9\u4E2A\u4F1A\u8BDD\u91CC\u7684\u6240\u6709 VP \u5199\u4E00\u6BB5\u5171\u4EAB\u7684\u7B80\u4ECB\u2026","yeaft.session.announcement.edit":"\u7F16\u8F91\u516C\u544A","yeaft.session.announcement.editTitle":"\u7F16\u8F91\u4F1A\u8BDD\u516C\u544A","yeaft.session.announcement.saving":"\u4FDD\u5B58\u4E2D\u2026","yeaft.session.announcement.saveFailed":"\u4FDD\u5B58\u5931\u8D25\uFF1A{error}","yeaft.session.announcement.openSettings":"\u6253\u5F00\u4F1A\u8BDD\u8BBE\u7F6E","yeaft.session.settings.title":"{name} \u2014 \u4F1A\u8BDD\u8BBE\u7F6E","yeaft.session.settings.short":"\u4F1A\u8BDD","yeaft.session.settings.close":"\u5173\u95ED","yeaft.session.settings.nav.session":"\u4F1A\u8BDD","yeaft.session.settings.nav.members":"\u6210\u5458","yeaft.session.settings.nav.memory":"\u4F1A\u8BDD\u8BB0\u5FC6","yeaft.session.settings.announcement.heading":"\u4F1A\u8BDD\u516C\u544A","yeaft.session.settings.announcement.help":"\u6CE8\u5165\u5230\u4F1A\u8BDD\u5185\u6BCF\u4E2A VP \u7684 system prompt \u9876\u90E8 \u2014 \u7C7B\u4F3C\u56E2\u961F\u5171\u4EAB\u7684 CLAUDE.md\u3002","yeaft.session.settings.members.heading":"\u6210\u5458","yeaft.session.settings.rename.heading":"\u91CD\u547D\u540D\u4F1A\u8BDD","yeaft.session.settings.rename.label":"\u65B0\u540D\u79F0","yeaft.session.settings.rename.save":"\u4FDD\u5B58\u540D\u79F0","yeaft.session.settings.rename.saving":"\u4FDD\u5B58\u4E2D\u2026","yeaft.session.settings.memory.heading":"\u4F1A\u8BDD\u8BB0\u5FC6","yeaft.session.settings.memory.help":"\u7ACB\u5373\u8FD0\u884C dream \u6574\u7406\uFF1A\u8BFB\u53D6\u4E0A\u6B21\u4EE5\u6765\u7684\u65B0\u6D88\u606F\uFF0C\u63D0\u53D6\u8981\u70B9\u5E76\u5408\u5E76\u8FDB\u4F1A\u8BDD\u7684 summary\uFF0C\u8BA9 Resident \u5C42\u80FD\u53CD\u6620\u6700\u65B0\u7684\u5BF9\u8BDD\u3002","yeaft.session.settings.memory.runNow":"\u7ACB\u5373\u8FD0\u884C dream","yeaft.session.settings.memory.running":"\u8FD0\u884C\u4E2D\u2026","yeaft.session.settings.memory.lastSuccess":"\u4E0A\u6B21\u6210\u529F\uFF1A{time} \u2014 \u66F4\u65B0\u4E86 {count} \u4E2A\u76EE\u6807\u3002","yeaft.session.settings.memory.lastError":"\u4E0A\u6B21\u8FD0\u884C\u5931\u8D25\uFF1A{error}","yeaft.session.settings.danger.heading":"\u5220\u9664\u4F1A\u8BDD","yeaft.session.settings.danger.deleteHelp":"\u8FD9\u4F1A\u6C38\u4E45\u5220\u9664\u8BE5\u4F1A\u8BDD\uFF0C\u79FB\u9664\u78C1\u76D8\u4E0A\u7684 session.json \u548C\u5168\u90E8\u6D88\u606F\u5386\u53F2\uFF0C\u4E0D\u53EF\u6062\u590D\u3002","yeaft.session.settings.danger.deleteBtn":"\u5220\u9664\u4F1A\u8BDD","yeaft.vp.mention.placeholder":"\u6309 id \u6216\u540D\u79F0\u641C\u7D22\u89D2\u8272\u2026","yeaft.vp.mention.noMatch":"\u6CA1\u6709\u5339\u914D\u7684\u89D2\u8272","yeaft.vp.mention.count":"\u5DF2 @{count} \u4EBA","yeaft.feature.reject.missing_group_id":"\u53D1\u9001\u5931\u8D25\uFF1A\u672A\u6307\u5B9A\u4F1A\u8BDD\u3002","yeaft.feature.reject.missing_feature_id":"\u53D1\u9001\u5931\u8D25\uFF1A\u4EFB\u52A1\u4E0A\u4E0B\u6587\u4E22\u5931\u3002","yeaft.feature.reject.missing_vp_id":"\u53D1\u9001\u5931\u8D25\uFF1A\u672A\u8BBE\u7F6E\u53D1\u8A00\u8005\u3002","yeaft.feature.reject.invalid_vp_id":"\u53D1\u9001\u5931\u8D25\uFF1A\u53D1\u8A00\u8005 id \u975E\u6CD5\u3002","yeaft.feature.reject.empty_text":"\u53D1\u9001\u5931\u8D25\uFF1A\u5185\u5BB9\u4E3A\u7A7A\u3002","yeaft.feature.reject.text_too_long":"\u53D1\u9001\u5931\u8D25\uFF1A\u5185\u5BB9\u8FC7\u957F\uFF08\u4E0A\u9650 16 KiB\uFF09\u3002","yeaft.feature.reject.unknown":"\u53D1\u9001\u5931\u8D25\u3002","yeaft.feature.pill.label":"\u4EFB\u52A1","yeaft.feature.messageTime.aria":"\u53D1\u9001\u4E8E {time}","yeaft.vp.turnBlock.elapsedTitle":"\u672C\u8F6E turn \u5F00\u59CB\u81F3\u4ECA\u7684\u65F6\u95F4","yeaft.vp.turnBlock.retryingRequest":"\u54CD\u5E94\u505C\u6EDE\uFF0C\u6B63\u5728\u53D1\u8D77\u5168\u65B0\u8BF7\u6C42\uFF08{attempt}/{max}\uFF09","yeaft.vp.turnBlock.retryingContinue":"\u54CD\u5E94\u505C\u6EDE\uFF0C\u6B63\u5728\u7528\u5168\u65B0\u8BF7\u6C42\u7EED\u5199\uFF08{attempt}/{max}\uFF09","yeaft.sessionStatus.aria":"Session \u72B6\u6001","yeaft.sessionStatus.title":"Session \u72B6\u6001","yeaft.sessionStatus.announcement":"\u516C\u544A","yeaft.sessionStatus.announcementEmpty":"\u6682\u65E0\u516C\u544A","yeaft.sessionStatus.announcementAdd":"\u6DFB\u52A0\u516C\u544A","yeaft.sessionStatus.announcementEdit":"\u7F16\u8F91\u516C\u544A","yeaft.sessionStatus.vps":"VP","yeaft.sessionStatus.backgroundTasks":"\u540E\u53F0\u4EFB\u52A1","yeaft.sessionStatus.noLogPreview":"\u6682\u65E0\u65E5\u5FD7\u8F93\u51FA\u3002","yeaft.sessionStatus.task.subAgentStarted":"{name} \u5DF2\u542F\u52A8","yeaft.sessionStatus.task.subAgentStartedWithMission":"{name} \u5DF2\u542F\u52A8\uFF1A{mission}","yeaft.sessionStatus.task.subAgentStatus":"{name} \u72B6\u6001\uFF1A{status}","yeaft.sessionStatus.task.subAgentStatusUpdated":"{name} \u72B6\u6001\u5DF2\u66F4\u65B0","yeaft.sessionStatus.task.subAgentResult":"{name} \u7ED3\u679C\uFF1A{text}","yeaft.sessionStatus.task.subAgentProducedResult":"{name} \u5DF2\u4EA7\u751F\u7ED3\u679C","yeaft.sessionStatus.task.subAgentUsedTool":"{name} \u8C03\u7528\u4E86 {tool}","yeaft.sessionStatus.task.subAgentFinishedTool":"{name} \u5B8C\u6210\u4E86 {tool}","yeaft.sessionStatus.task.subAgentUsage":"{name} \u4F7F\u7528\u4E86 {tokens} tokens","yeaft.sessionStatus.task.subAgentEvent":"{name}\uFF1A{text}","yeaft.sessionStatus.task.subAgentUserPrompt":"\u4F60\uFF1A{text}","yeaft.sessionStatus.task.subAgentToolSummary":"\u5DF2\u5B8C\u6210 {count} \u6B21\u5DE5\u5177\u8C03\u7528","yeaft.sessionStatus.task.subAgentError":"{name} \u9519\u8BEF\uFF1A{error}","yeaft.sessionStatus.task.subAgentHitError":"{name} \u9047\u5230\u9519\u8BEF","yeaft.sessionStatus.task.subAgentNoReadableEvents":"\u6682\u65E0\u53EF\u8BFB\u7684 sub-agent \u6D3B\u52A8\u3002","yeaft.sessionStatus.task.promptPlaceholder":"\u7ED9\u8FD9\u4E2A sub-agent \u8FFD\u52A0\u60F3\u6CD5\u2026","yeaft.sessionStatus.task.promptSend":"\u53D1\u9001","yeaft.sessionStatus.task.promptSending":"\u53D1\u9001\u4E2D\u2026","yeaft.sessionStatus.task.promptFailed":"\u53D1\u9001\u5931\u8D25\u3002","yeaft.sessionStatus.task.title":"\u4EFB\u52A1","yeaft.sessionStatus.task.command":"\u547D\u4EE4","yeaft.sessionStatus.task.stop":"\u505C\u6B62\u4EFB\u52A1","yeaft.sessionStatus.task.stopping":"\u505C\u6B62\u4E2D\u2026","yeaft.sessionStatus.task.kind.subAgent":"sub-agent","yeaft.sessionStatus.task.kind.shell":"shell","yeaft.sessionStatus.show":"\u663E\u793A Session \u72B6\u6001","yeaft.sessionStatus.hide":"\u9690\u85CF Session \u72B6\u6001","yeaft.sessionStatus.close":"\u5173\u95ED Session \u72B6\u6001","yeaft.vpTimeline.empty":"\u672C Session \u8FD8\u6CA1\u6709 VP\u3002","yeaft.vpTimeline.resizeTitle":"\u62D6\u52A8\u8C03\u6574\u5BBD\u5EA6","yeaft.vpTimeline.status.idle":"\u7A7A\u95F2","yeaft.vpTimeline.status.typing":"\u8F93\u5165\u4E2D\u2026","yeaft.vpTimeline.status.thinking":"\u601D\u8003\u4E2D\u2026","yeaft.vpTimeline.status.retrying":"\u6B63\u5728\u91CD\u8BD5\u8BF7\u6C42\u2026","yeaft.vpTimeline.status.streaming":"\u751F\u6210\u4E2D","yeaft.vpTimeline.status.tool":"\u8C03\u7528\u5DE5\u5177\u4E2D\u2026","yeaft.vpTimeline.status.error":"\u51FA\u9519","yeaft.vpTimeline.status.offline":"\u79BB\u7EBF","yeaft.vpTimeline.abort":"\u4E2D\u6B62","yeaft.vpTimeline.edit":"\u7F16\u8F91 VP","yeaft.vpTimeline.mention":"\u70B9\u51FB @ \u8BE5 VP","yeaft.vpTimeline.expand":"\u5C55\u5F00\u4EFB\u52A1\u8BE6\u60C5","yeaft.toolStats.title":"\u5DE5\u5177\u4F7F\u7528\u7EDF\u8BA1","yeaft.toolStats.refresh":"\u5237\u65B0","yeaft.toolStats.close":"\u5173\u95ED","yeaft.toolStats.tabAll":"\u5168\u90E8\u5DE5\u5177","yeaft.toolStats.tabUnused":"\u672A\u4F7F\u7528","yeaft.toolStats.loading":"\u52A0\u8F7D\u4E2D\u2026","yeaft.toolStats.notLoaded":"\u6682\u65E0\u6570\u636E \u2014 \u70B9\u51FB\u5237\u65B0\u3002","yeaft.toolStats.empty":"\uFF08\u6682\u65E0\u5DE5\u5177\u8C03\u7528\u8BB0\u5F55\uFF09","yeaft.toolStats.noneUnused":"\uFF08\u6BCF\u4E2A\u5DF2\u6CE8\u518C\u5DE5\u5177\u90FD\u81F3\u5C11\u88AB\u8C03\u7528\u8FC7\u4E00\u6B21\uFF09","yeaft.toolStats.fetchedAt":"\u83B7\u53D6\u65F6\u95F4","yeaft.toolStats.col.name":"\u5DE5\u5177","yeaft.toolStats.col.calls":"\u8C03\u7528","yeaft.toolStats.col.errors":"\u9519\u8BEF","yeaft.toolStats.col.errRate":"\u9519\u8BEF\u7387","yeaft.toolStats.col.p50":"p50","yeaft.toolStats.col.p95":"p95","yeaft.toolStats.col.avg":"\u5E73\u5747","yeaft.toolStats.col.last":"\u6700\u8FD1","yeaft.toolStats.buttonLabel":"\u5DE5\u5177\u7EDF\u8BA1","workCenter.title":"\u5DE5\u4F5C\u4E2D\u5FC3","workCenter.subtitle":"\u7531\u5F53\u524D Agent \u6301\u7EED\u63A8\u8FDB\u7684\u6301\u4E45\u5DE5\u4F5C","workCenter.agent":"Agent","workCenter.selectAgent":"\u9009\u62E9 Agent","workCenter.noOnlineAgents":"\u6CA1\u6709\u5728\u7EBF Agent","workCenter.noAvailableAgents":"\u6CA1\u6709\u517C\u5BB9\u5DE5\u4F5C\u4E2D\u5FC3\u7684\u5728\u7EBF Agent","workCenter.new":"\u65B0\u5EFA","workCenter.newWorkItem":"\u65B0\u5EFA\u5DE5\u4F5C\u9879","workCenter.workItem":"\u5DE5\u4F5C\u9879","workCenter.createFirst":"\u521B\u5EFA\u7B2C\u4E00\u4E2A\u5DE5\u4F5C\u9879","workCenter.backToChat":"\u8FD4\u56DE\u5BF9\u8BDD","workCenter.refresh":"\u5237\u65B0","workCenter.search":"\u641C\u7D22\u5DE5\u4F5C\u9879","workCenter.filter":"\u7B5B\u9009","workCenter.filterAttention":"\u9700\u8981\u5904\u7406","workCenter.filterActive":"\u6267\u884C\u4E2D","workCenter.filterAll":"\u5168\u90E8","workCenter.filterDone":"\u5DF2\u5B8C\u6210","workCenter.attentionItems":"\u9700\u8981\u5904\u7406","workCenter.board.active":"\u8FDB\u884C\u4E2D","workCenter.board.needsAttention":"\u9700\u8981\u5904\u7406","workCenter.board.closed":"\u5DF2\u5173\u95ED","workCenter.board.emptyLane":"\u6682\u65E0\u5DE5\u4F5C\u9879","workCenter.board.lanes":"\u5DE5\u4F5C\u9879\u5206\u680F","workCenter.filterVp":"\u6309 VP \u7B5B\u9009","workCenter.filterType":"\u6309\u7C7B\u578B\u7B5B\u9009","workCenter.filterUpdated":"\u6309\u66F4\u65B0\u65F6\u95F4\u7B5B\u9009","workCenter.allVps":"\u5168\u90E8 VP","workCenter.allTypes":"\u5168\u90E8\u7C7B\u578B","workCenter.anyTime":"\u4E0D\u9650\u65F6\u95F4","workCenter.lastDay":"\u6700\u8FD1 24 \u5C0F\u65F6","workCenter.lastWeek":"\u6700\u8FD1 7 \u5929","workCenter.deleteWorkItem":"\u5220\u9664 Work Item","workCenter.deleteConfirm":"\u6C38\u4E45\u5220\u9664\u8FD9\u4E2A Work Item\u3001\u6267\u884C\u5386\u53F2\u548C\u9644\u4EF6\uFF1F","workCenter.deleteRequiresStop":"\u8BF7\u5148\u505C\u6B62\u8FD9\u4E2A Work Item \u518D\u5220\u9664","workCenter.lastMonth":"\u6700\u8FD1 30 \u5929","workCenter.assignment.planned":"\u8BA1\u5212\u5206\u914D","workCenter.created":"\u521B\u5EFA\u4E8E","workCenter.files":"\u4E2A\u6587\u4EF6","workCenter.loadMore":"\u52A0\u8F7D\u66F4\u591A","workCenter.activeItems":"\u6267\u884C\u4E2D\u7684\u5DE5\u4F5C","workCenter.allItems":"\u5168\u90E8\u5DE5\u4F5C\u9879","workCenter.completedItems":"\u5DF2\u5B8C\u6210","workCenter.watcherActive":"Watcher \u8FD0\u884C\u4E2D","workCenter.loading":"\u6B63\u5728\u52A0\u8F7D\u5DE5\u4F5C\u9879\u2026","workCenter.noTimestamp":"\u65E0\u65F6\u95F4\u6233","workCenter.updated":"\u66F4\u65B0\u65F6\u95F4","workCenter.emptyTitle":"\u8FD8\u6CA1\u6709\u5DE5\u4F5C\u9879","workCenter.emptyBody":"\u5F53\u5DE5\u4F5C\u9700\u8981\u8DE8\u8D8A\u4E00\u6B21\u5BF9\u8BDD\u3001\u7B49\u5F85\u6216\u89D2\u8272\u63A5\u529B\u65F6\uFF0C\u628A\u5B83\u521B\u5EFA\u4E3A\u6301\u4E45\u5DE5\u4F5C\u9879\u3002","workCenter.noAttentionTitle":"\u5F53\u524D\u6CA1\u6709\u9700\u8981\u5904\u7406\u7684\u5DE5\u4F5C\u9879","workCenter.noAttentionBody":"\u7B49\u5F85\u4F60\u56DE\u7B54\u6216\u9700\u8981\u6062\u590D\u7684\u5DE5\u4F5C\u9879\u4F1A\u663E\u793A\u5728\u8FD9\u91CC\u3002","workCenter.noActiveTitle":"\u5F53\u524D\u6CA1\u6709\u6267\u884C\u4E2D\u7684\u5DE5\u4F5C\u9879","workCenter.noActiveBody":"\u8349\u7A3F\u3001\u5C31\u7EEA\u548C\u6267\u884C\u4E2D\u7684\u5DE5\u4F5C\u9879\u4F1A\u663E\u793A\u5728\u8FD9\u91CC\u3002","workCenter.noCompletedTitle":"\u8FD8\u6CA1\u6709\u5DF2\u5B8C\u6210\u7684\u5DE5\u4F5C\u9879","workCenter.noCompletedBody":"\u5B8C\u6210\u540E\u7684\u5DE5\u4F5C\u9879\u4F1A\u663E\u793A\u5728\u8FD9\u91CC\u3002","workCenter.noMatchesTitle":"\u6CA1\u6709\u5339\u914D\u7684\u5DE5\u4F5C\u9879","workCenter.noMatchesBody":"\u5C1D\u8BD5\u8C03\u6574\u641C\u7D22\u5185\u5BB9\u6216\u7B5B\u9009\u6761\u4EF6\u3002","workCenter.selectTitle":"\u5DE5\u4F5C\u9879\u8BE6\u60C5","workCenter.detailLoading":"\u6B63\u5728\u52A0\u8F7D\u5B8C\u6574\u8BE6\u60C5\u2026","workCenter.detailLoadFailed":"\u65E0\u6CD5\u52A0\u8F7D\u5B8C\u6574\u8BE6\u60C5","workCenter.start":"\u5F00\u59CB","workCenter.retry":"\u91CD\u8BD5","workCenter.cancel":"\u53D6\u6D88","workCenter.closeWorkItem":"\u5173\u95ED\u8BE6\u60C5","workCenter.cancelWorkItem":"\u505C\u6B62\u5DE5\u4F5C\u9879","workCenter.cancelWorkItemHint":"\u505C\u6B62\u8FD9\u4E2A\u5DE5\u4F5C\u9879\u53CA\u6240\u6709\u5C1A\u672A\u5B8C\u6210\u7684 Actions\u3002","workCenter.cancelConfirm":"\u505C\u6B62\u8FD9\u4E2A\u5DE5\u4F5C\u9879\u53CA\u5176\u5C1A\u672A\u5B8C\u6210\u7684 Actions\uFF1F","workCenter.stopWorkItem":"\u505C\u6B62\u5DE5\u4F5C\u9879","workCenter.resumeWorkItem":"\u6062\u590D\u5DE5\u4F5C\u9879","workCenter.breadcrumbs":"Work Center \u5BFC\u822A","workCenter.actionNumber":"Action {number}","workCenter.actionBreadcrumb":"Action {number}\uFF1A{description}","workCenter.untitledAction":"\u672A\u547D\u540D Action","workCenter.workItems":"\u5DE5\u4F5C\u9879","workCenter.description":"\u9700\u6C42\u63CF\u8FF0","workCenter.goal":"\u76EE\u6807","workCenter.acceptanceCriteria":"\u9A8C\u6536\u6761\u4EF6","workCenter.noCriteria":"\u672A\u63D0\u4F9B\u9A8C\u6536\u6761\u4EF6","workCenter.failureReason":"\u5931\u8D25\u539F\u56E0","workCenter.workflow":"\u4EFB\u52A1\u6D41","workCenter.triageSummary":"Triage \u6458\u8981","workCenter.actionFlow":"Action \u6D41\u7A0B","workCenter.viewActions":"\u67E5\u770B Actions","workCenter.actionsPanel":"Actions","workCenter.closeActions":"\u5173\u95ED Actions","workCenter.actionCount":"{count} \u4E2A Action","workCenter.noActionSummary":"\u6682\u65E0\u6458\u8981","workCenter.actionProgress":"{completed} / {total} \u4E2A Action","workCenter.currentAction":"\u5F53\u524D Action","workCenter.expandActions":"\u5C55\u5F00 Action","workCenter.collapseActions":"\u6536\u8D77","workCenter.actionObjective":"\u8FD9\u6B21\u8981\u505A\u4EC0\u4E48","workCenter.actionApproach":"\u51C6\u5907\u600E\u4E48\u505A","workCenter.actionExpectedOutcome":"\u671F\u5F85\u7684\u7ED3\u679C","workCenter.dependencies":"\u6765\u6E90 Action","workCenter.actionResult":"\u6700\u65B0\u7ED3\u679C","workCenter.currentProgress":"\u5F53\u524D\u8FDB\u5EA6","workCenter.actionMessages":"\u6D88\u606F","workCenter.loops":"\u4E2A Loop","workCenter.tools":"\u6B21\u5DE5\u5177\u8C03\u7528","workCenter.noActionMessages":"\u8FD8\u6CA1\u6709\u6D88\u606F\u3002","workCenter.actionDetails":"Action \u8BE6\u60C5","workCenter.selectAction":"\u9009\u62E9\u4E00\u4E2A Action","workCenter.backToWorkItems":"\u5DE5\u4F5C\u9879","workCenter.backToActions":"\u8FD4\u56DE Actions","workCenter.you":"\u4F60","workCenter.noRequestDetails":"\u8FD9\u4E2A Action \u6682\u65F6\u6CA1\u6709\u53EF\u7528\u7684\u6267\u884C\u8BB0\u5F55\u3002","workCenter.loadingRequests":"\u6B63\u5728\u52A0\u8F7D\u6267\u884C\u8BB0\u5F55\u2026","workCenter.loadingRequestDetail":"\u6B63\u5728\u52A0\u8F7D\u5DE5\u5177\u8BC1\u636E\u2026","workCenter.requestDetailUnavailable":"\u5DE5\u5177\u8BC1\u636E\u6682\u4E0D\u53EF\u7528\uFF0C\u8BF7\u91CD\u8BD5\u3002","workCenter.noRequestLoops":"\u8FD9\u6B21\u6267\u884C\u6CA1\u6709\u4FDD\u7559\u4E0B\u53EF\u5C55\u793A\u7684 Loop\u3002","workCenter.requestDetailTruncated":"\u6267\u884C\u5185\u5BB9\u8F83\u5927\uFF1A{summarized} \u4E2A Loop \u663E\u793A\u6458\u8981\uFF0C\u53E6\u6709 {omitted} \u4E2A\u8F83\u65E9 Loop \u672A\u663E\u793A\u3002","workCenter.loopDetailTruncated":"\u8FD9\u4E2A Loop \u5185\u5BB9\u8F83\u5927\uFF0C\u5F53\u524D\u663E\u793A\u4FDD\u7559\u4E0B\u6765\u7684\u5DE5\u5177\u8BC1\u636E\u3002","workCenter.loadEarlierMessages":"\u52A0\u8F7D\u66F4\u65E9\u6D88\u606F","workCenter.loadingEarlierMessages":"\u6B63\u5728\u52A0\u8F7D\u66F4\u65E9\u6D88\u606F\u2026","workCenter.unknownModel":"\u672A\u77E5\u6A21\u578B","workCenter.loop":"Loop","workCenter.actionBrief":"\u4EFB\u52A1\u8BF4\u660E","workCenter.executionSummary":"\u6267\u884C\u6458\u8981","workCenter.toolParameters":"\u8C03\u7528\u53C2\u6570","workCenter.toolResult":"\u6267\u884C\u7ED3\u679C","workCenter.noToolCalls":"\u8FD9\u4E2A Loop \u6CA1\u6709\u5DE5\u5177\u8C03\u7528\u3002","workCenter.actionInputPlaceholder":"\u8865\u5145\u4E0A\u4E0B\u6587\u3001\u56DE\u7B54\u95EE\u9898\u6216\u8C03\u6574\u8FD9\u4E2A Action","workCenter.actionInputResumeHint":"\u4F60\u7684\u8F93\u5165\u4F1A\u5E26\u7740\u65B0\u589E\u4E0A\u4E0B\u6587\u7EE7\u7EED\u8FD9\u4E2A Action\u3002","workCenter.waitingQuestionTitle":"\u9700\u8981\u4F60\u7684\u56DE\u7B54","workCenter.actionInputRetryHint":"\u8865\u5145\u4FEE\u6B63\u8BF4\u660E\u6216\u6587\u4EF6\u540E\uFF0C\u4F7F\u7528\u65B0\u4E0A\u4E0B\u6587\u91CD\u65B0\u6267\u884C\u8FD9\u4E2A Action\u3002","workCenter.actionInputContinueHint":"\u8FD9\u91CC\u53EA\u76F4\u63A5\u5E72\u9884\u5F53\u524D Action\u3002","workCenter.actionFailedTitle":"\u8FD9\u4E2A Action \u4E3A\u4EC0\u4E48\u5931\u8D25","workCenter.failedAt":"\u5931\u8D25\u65F6\u95F4","workCenter.actionFailureRecovery":"\u5728\u5DE5\u4F5C\u9879\u8F93\u5165\u6846\u4E2D\u9009\u62E9\u6B64 Action\uFF0C\u518D\u53D1\u9001\u4FEE\u6B63\u8BF4\u660E\u3002","workCenter.sendInput":"\u53D1\u9001\u7ED9 Action","workCenter.sendingInput":"\u6B63\u5728\u53D1\u9001\u2026","workCenter.retryAction":"\u91CD\u8BD5 Action","workCenter.sendAndRetryAction":"\u53D1\u9001\u5E76\u91CD\u8BD5 Action","workCenter.coordinatorDecision.guide_actions":"\u5DF2\u66F4\u65B0 Action \u6307\u4EE4","workCenter.coordinatorDecision.replan":"\u5DF2\u66F4\u65B0\u76EE\u6807\u6216\u8BA1\u5212","workCenter.coordinatorDecision.request_human":"\u9700\u8981\u4EBA\u5DE5\u8865\u5145\u4FE1\u606F","workCenter.conversation":"\u5BF9\u8BDD","workCenter.contentPane":"\u5185\u5BB9","workCenter.workItemPanes":"\u5DE5\u4F5C\u9879\u9762\u677F","workCenter.coordinator":"\u534F\u8C03\u8005","workCenter.coordinatorTargetHint":"\u5DE5\u4F5C\u9879\u89C4\u5212\u4E0E\u534F\u8C03","workCenter.composerTarget":"\u6D88\u606F\u76EE\u6807","workCenter.targetUnavailable":"\u6240\u9009 Action \u5DF2\u4E0D\u53EF\u7528","workCenter.targetUnavailableHelp":"\u53D1\u9001\u524D\u8BF7\u9009\u62E9\u5176\u4ED6\u76EE\u6807\uFF1B\u7CFB\u7EDF\u6CA1\u6709\u91CD\u5B9A\u5411\u8FD9\u4EFD\u8349\u7A3F\u3002","workCenter.sendToCoordinatorInstead":"\u6539\u53D1\u7ED9 Coordinator","workCenter.sendToTarget":"\u53D1\u9001\u7ED9 {target}","workCenter.answerWithTarget":"\u5728\u5BF9\u8BDD\u8F93\u5165\u6846\u4E2D\u9009\u62E9\u76F8\u5173\u76EE\u6807\uFF0C\u7136\u540E\u56DE\u590D\u3002","workCenter.conversationThinking":"\u5904\u7406\u4E2D\u2026","workCenter.conversationReadOnly":"\u8FD9\u4E2A\u5DE5\u4F5C\u9879\u5DF2\u5173\u95ED\uFF0C\u5BF9\u8BDD\u8BB0\u5F55\u4ECD\u53EF\u67E5\u770B\u3002","workCenter.conversationPlaceholder":"\u7EE7\u7EED\u8BA8\u8BBA\u8FD9\u4E2A\u5DE5\u4F5C\u9879","workCenter.sendMessage":"\u53D1\u9001\u6D88\u606F","workCenter.messageSpeakerRole":"{name} \xB7 {role}","workCenter.originalRequest":"\u539F\u59CB\u9700\u6C42","workCenter.actionMessageScopeTitle":"\u7ED9\u8FD9\u4E2A Action \u53D1\u6D88\u606F","workCenter.actionMessageScope":"\u6D88\u606F\u53EA\u53D1\u9001\u7ED9\u5F53\u524D Action\u3002","workCenter.actionConversation":"\u5BF9\u8BDD","workCenter.actionConversationWith":"Action \u6267\u884C\u8005","workCenter.actionViews":"Action \u89C6\u56FE","workCenter.actionExecutor":"\u6267\u884C\u8005","workCenter.actionExecutorPending":"\u7B49\u5F85\u5206\u914D\u6267\u884C\u8005","workCenter.actionInformation":"Action \u4FE1\u606F","workCenter.messageExecutor":"\u7ED9 {name} \u53D1\u6D88\u606F","workCenter.actionChatPlaceholder":"\u5728\u5BF9\u8BDD\u8F93\u5165\u6846\u4E2D\u7ED9 {name} \u53D1\u6D88\u606F","workCenter.statusLabel":"\u72B6\u6001","workCenter.llmRequestsLabel":"LLM \u8BF7\u6C42","workCenter.loopsLabel":"Loops","workCenter.toolsLabel":"\u5DE5\u5177","workCenter.tokensLabel":"Tokens","workCenter.workItemMessagePlaceholder":"\u8865\u5145\u6574\u4E2A Work Item \u7684\u65B9\u5411\u6216\u7EA6\u675F","workCenter.sendWorkItemMessage":"\u53D1\u9001\u7ED9 Work Item","workCenter.fromSession":"\u4ECE\u5F53\u524D Session \u521B\u5EFA\u5DE5\u4F5C\u9879","workCenter.llmRequestCount":"{count} \u6B21 LLM \u8BF7\u6C42","workCenter.loopCount":"{count} \u6B21 Loop","workCenter.toolCount":"{count} \u4E2A\u5DE5\u5177","workCenter.tokenCount":"{count} tokens","workCenter.tokenBreakdown":"\u8F93\u5165 {input} / \u8F93\u51FA {output} / \u7F13\u5B58 {cache}","workCenter.guidance":"\u7ED9\u5F53\u524D Action \u8865\u5145\u63D0\u793A","workCenter.guidanceHint":"\u8865\u5145\u7EA6\u675F\uFF0C\u6216\u8C03\u6574\u5F53\u524D Action \u7684\u6267\u884C\u65B9\u5411","workCenter.guidanceRestartHint":"\u53D1\u9001\u540E\u4F1A\u4F7F\u7528\u65B0\u63D0\u793A\u91CD\u542F\u5F53\u524D Action\u3002","workCenter.sendGuidance":"\u53D1\u9001\u63D0\u793A","workCenter.reuseMemory":"\u4F7F\u7528\u76F8\u5173 Agent memory \u548C\u6B64\u9879\u76EE\u7684\u5DF2\u5B8C\u6210\u5DE5\u4F5C","workCenter.reuseMemoryHelp":"\u5305\u62EC\u53D7 scope \u7EA6\u675F\u7684 Agent memory\uFF0C\u4EE5\u53CA canonical \u9879\u76EE\u76EE\u5F55\u76F8\u540C\u7684\u5DF2\u5B8C\u6210 Work Item \u7ED3\u6784\u5316\u6458\u8981\u548C\u8BC1\u636E\uFF1B\u4E0D\u4F1A\u590D\u7528\u539F\u59CB\u5DE5\u5177\u8F93\u51FA\u3002","workCenter.resumeAnswer":"\u56DE\u7B54\u7B49\u5F85\u4E2D\u7684\u95EE\u9898","workCenter.resumeAnswerHint":"\u63D0\u4F9B\u7EE7\u7EED\u6267\u884C\u6240\u9700\u7684\u4FE1\u606F","workCenter.answerInActionDetail":"\u5728\u5BF9\u8BDD\u8F93\u5165\u6846\u4E2D\u5C06\u76EE\u6807\u8BBE\u4E3A\u5F53\u524D Action\uFF0C\u7136\u540E\u56DE\u590D\u3002","workCenter.selectPrompt":"\u9009\u62E9\u4E00\u4E2A\u5DE5\u4F5C\u9879\uFF0C\u67E5\u770B\u5B83\u7684\u6D41\u7A0B\u3002","workCenter.createHint":"\u63CF\u8FF0\u4F60\u9700\u8981\u4EC0\u4E48\uFF0CCoordinator \u4F1A\u6301\u7EED\u521B\u5EFA\u5F53\u524D\u5FC5\u8981\u7684 Actions\uFF0C\u76F4\u5230\u9A8C\u6536\u6761\u4EF6\u5F97\u5230\u9A8C\u8BC1\u3002","workCenter.requirement":"\u9700\u6C42","workCenter.requirementHint":"\u7528\u81EA\u7136\u8BED\u8A00\u63CF\u8FF0\u95EE\u9898\u3001\u671F\u671B\u7ED3\u679C\u548C\u5FC5\u8981\u7EA6\u675F","workCenter.requirementHelp":"Coordinator \u4F1A\u5B8C\u5584\u76EE\u6807\u4E0E\u9A8C\u6536\u6761\u4EF6\uFF0C\u5E76\u968F\u7740\u8BC1\u636E\u4EA7\u751F\u52A8\u6001\u521B\u5EFA Actions\u3002","workCenter.titleField":"\u6807\u9898","workCenter.titleHint":"\u7B80\u77ED\u3001\u660E\u786E\u5730\u63CF\u8FF0\u9884\u671F\u7ED3\u679C","workCenter.goalHint":"\u8BF4\u660E Agent \u5FC5\u987B\u4EA4\u4ED8\u7684\u6700\u7EC8\u7ED3\u679C","workCenter.criteriaHint":"\u6BCF\u884C\u4E00\u6761\u9A8C\u6536\u6761\u4EF6","workCenter.attachments":"\u9644\u4EF6","workCenter.attachmentsHelp":"\u56FE\u7247\u3001PDF \u548C\u6587\u672C\u6587\u4EF6\u4F1A\u6301\u7EED\u7ED1\u5B9A\u5230\u6B64 Work Item\uFF0C\u5E76\u63D0\u4F9B\u7ED9\u6BCF\u4E2A Action\u3002","workCenter.attachmentsUnsupported":"\u6240\u9009 Agent \u4E0D\u652F\u6301 Work Item \u9644\u4EF6\u3002","workCenter.addAttachments":"\u6DFB\u52A0\u6587\u4EF6","workCenter.attachmentsUploading":"\u4E0A\u4F20\u4E2D\u2026","workCenter.attachmentsUploadFailed":"\u9644\u4EF6\u4E0A\u4F20\u5931\u8D25","workCenter.pendingEnvelopeLocked":"\u6709\u4E00\u6761\u672A\u786E\u8BA4\u8BF7\u6C42\u5DF2\u9501\u5B9A\u5230\u539F\u59CB\u8EAB\u4EFD\u3002","workCenter.replacePendingAttachments":"\u66FF\u6362\u9644\u4EF6","workCenter.discardPendingEnvelope":"\u653E\u5F03\u5F85\u786E\u8BA4\u8BF7\u6C42","workCenter.pendingEnvelopeChanged":"\u5F85\u786E\u8BA4\u8BF7\u6C42\u5DF2\u53D8\u5316\uFF0C\u8BF7\u91CD\u65B0\u6253\u5F00\u8BE5\u5DE5\u4F5C\u9879\u540E\u518D\u8BD5\u3002","workCenter.removeAttachment":"\u4ECE\u8349\u7A3F\u4E2D\u79FB\u9664","workCenter.previewAttachment":"\u6253\u5F00\u9644\u4EF6","workCenter.openAttachmentNamed":"\u6253\u5F00\u9644\u4EF6 {name}","workCenter.openingAttachment":"\u6B63\u5728\u6253\u5F00\u9644\u4EF6\u2026","workCenter.attachmentPreviewFailed":"\u65E0\u6CD5\u6253\u5F00\u9644\u4EF6\uFF0C\u8BF7\u91CD\u8BD5\u3002","workCenter.attachmentOpenBlocked":"\u6D4F\u89C8\u5668\u963B\u6B62\u4E86\u9644\u4EF6\u7A97\u53E3\uFF0C\u8BF7\u5141\u8BB8\u5F39\u51FA\u7A97\u53E3\u540E\u91CD\u8BD5\u3002","workCenter.execution":"\u6267\u884C\u65B9\u5F0F","workCenter.executionHint":"\u9009\u62E9\u5DE5\u4F5C\u9879\u5728\u54EA\u91CC\u6267\u884C\uFF0C\u4EE5\u53CA\u521B\u5EFA\u540E\u662F\u5426\u7ACB\u5373\u5F00\u59CB\u3002","workCenter.workDir":"\u5DE5\u4F5C\u76EE\u5F55","workCenter.workDirHint":"\u9009\u62E9\u4E00\u4E2A\u5DF2\u5B58\u5728\u7684\u9879\u76EE\u76EE\u5F55","workCenter.chooseFolder":"\u9009\u62E9\u6587\u4EF6\u5939","workCenter.workDirPickerHelp":"\u4ECE\u5F53\u524D Agent \u7684\u771F\u5B9E\u76EE\u5F55\u4E2D\u9009\u62E9\u5DF2\u5B58\u5728\u7684\u6587\u4EF6\u5939\u3002","workCenter.folderPickerHint":"\u9009\u62E9\u8FD9\u4E2A\u5DE5\u4F5C\u9879\u53EF\u4EE5\u8BFB\u53D6\u548C\u4FEE\u6539\u7684\u9879\u76EE\u76EE\u5F55\u3002","workCenter.folderPickerSelectionHint":"\u53CC\u51FB\u8FDB\u5165\u76EE\u5F55\uFF0C\u6216\u9009\u4E2D\u76EE\u5F55\u540E\u786E\u8BA4\u3002","workCenter.startImmediately":"\u7ACB\u5373\u5F00\u59CB","workCenter.startImmediatelyHint":"\u5173\u95ED\u540E\u5C06\u521B\u5EFA\u4E3A\u8349\u7A3F\uFF0C\u786E\u8BA4\u65E0\u8BEF\u540E\u518D\u5F00\u59CB\u3002","workCenter.creating":"\u521B\u5EFA\u4E2D\u2026","workCenter.create":"\u521B\u5EFA","workCenter.status.draft":"\u8349\u7A3F","workCenter.status.ready":"\u5F85\u6267\u884C","workCenter.status.running":"\u6267\u884C\u4E2D","workCenter.status.waiting":"\u7B49\u5F85\u4E2D","workCenter.status.needs_attention":"\u9700\u8981\u5904\u7406","workCenter.status.done":"\u5DF2\u5B8C\u6210","workCenter.status.cancelled":"\u5DF2\u53D6\u6D88","workCenter.status.completed":"\u5DF2\u5B8C\u6210","workCenter.status.failed":"\u5931\u8D25","workCenter.status.superseded":"\u5DF2\u66FF\u4EE3","workCenter.action.triage":"\u5206\u6790","workCenter.action.implement":"\u5B9E\u73B0","workCenter.action.review":"\u8BC4\u5BA1","workCenter.action.integrate":"\u96C6\u6210","workCenter.action.deliver":"\u4EA4\u4ED8","workCenter.action.test":"\u6D4B\u8BD5","workCenter.action.research":"\u7814\u7A76","workCenter.action.design":"\u8BBE\u8BA1","workCenter.action.diagnose":"\u8BCA\u65AD","workCenter.action.migrate":"\u8FC1\u79FB","workCenter.action.document":"\u6587\u6863","workCenter.action.operate":"\u8FD0\u7EF4","workCenter.action.write":"\u5199\u4F5C","workCenter.action.custom":"\u81EA\u5B9A\u4E49","workCenter.assignment.auto":"\u4F7F\u7528\u4EFB\u52A1\u6D41\u7B56\u7565","workCenter.model.inherit":"\u4F7F\u7528\u4EFB\u52A1\u6D41\u6A21\u578B","workCenter.model.defaultProvider":"\u9ED8\u8BA4 Provider","workCenter.planPreview":"\u6267\u884C\u8BA1\u5212","workCenter.planPreviewHelp":"\u6839\u636E\u5F53\u524D Agent \u7684 VP \u6C60\u548C\u6A21\u578B\u8BBE\u7F6E\u5B9E\u65F6\u89E3\u6790\u3002","workCenter.settings.title":"\u5DE5\u4F5C\u4E2D\u5FC3\u8BBE\u7F6E","workCenter.settings.subtitle":"\u914D\u7F6E Coordinator\uFF0C\u4EE5\u53CA AI \u52A8\u6001\u89C4\u5212\u4F7F\u7528\u7684 Action \u63D0\u793A\u8BCD\u3001\u6A21\u578B\u548C effort\u3002","workCenter.settings.workflow":"\u4EFB\u52A1\u6D41","workCenter.settings.workflowHelp":"Coordinator \u4F1A\u9488\u5BF9\u4EFB\u52A1\u52A8\u6001\u9009\u62E9 Action \u548C\u6267\u884C\u8005\u3002","workCenter.settings.aiWorkflowHelp":"Coordinator \u53EA\u521B\u5EFA\u5F53\u524D\u5FC5\u8981\u7684\u4EFB\u52A1\u4E13\u5C5E Action\u3002\u5185\u7F6E Action \u7B56\u7565\u662F\u53EF\u590D\u7528\u6A21\u677F\uFF1B\u9700\u8981\u65F6 Coordinator \u53EF\u4EE5\u521B\u5EFA\u7CBE\u786E\u7684\u9886\u57DF\u7C7B\u578B\u3002","workCenter.settings.globalInstructions":"Agent \u5168\u5C40\u6307\u4EE4","workCenter.settings.globalInstructionsHint":"\u4F8B\u5982\uFF1A\u9075\u5FAA\u4ED3\u5E93\u53D1\u5E03\u6D41\u7A0B\u3001\u5FC5\u987B\u72EC\u7ACB\u8BC4\u5BA1\uFF0C\u672A\u7ECF\u660E\u786E\u6279\u51C6\u4E0D\u5F97\u521B\u5EFA\u90E8\u7F72 tag\u3002","workCenter.settings.globalInstructionsHelp":"\u4FDD\u5B58\u5728 Agent \u7EA7\uFF0C\u5E76\u51BB\u7ED3\u8FDB\u6BCF\u4E2A\u65B0 Work Item\uFF1B\u5BF9 triage \u548C\u6240\u6709\u751F\u6210\u7684 Action \u751F\u6548\uFF0C\u4F18\u5148\u7EA7\u4F4E\u4E8E Work Item \u5951\u7EA6\u53CA\u7CFB\u7EDF/\u5DE5\u5177\u5B89\u5168\u89C4\u5219\u3002\u5DF2\u6709 Work Item \u4FDD\u7559\u539F\u5FEB\u7167\u3002","workCenter.settings.actionPolicies":"\u5185\u7F6E Action \u7B56\u7565","workCenter.settings.actionPoliciesHelp":"\u8FD9\u4E9B\u662F\u53EF\u590D\u7528\u7684\u6267\u884C\u57FA\u7EBF\uFF0C\u4E0D\u662F\u56FA\u5B9A\u5DE5\u4F5C\u6D41\u3002\u672A\u77E5\u7684\u9886\u57DF Action \u7C7B\u578B\u4F1A\u4F7F\u7528\u201C\u81EA\u5B9A\u4E49\u201D\u7B56\u7565\uFF0C\u5E76\u4FDD\u7559 triage \u751F\u6210\u7684\u7C7B\u578B\u548C\u4EFB\u52A1\u76EE\u6807\u3002","workCenter.settings.dynamicInstructionHelp":"AI \u4F1A\u52A0\u5165 Work Item \u5951\u7EA6\u3001\u5168\u5C40\u6307\u4EE4\u3001\u524D\u5E8F Action \u4E0A\u4E0B\u6587\u3001memory \u548C\u4EFB\u52A1\u4E13\u5C5E\u76EE\u6807\uFF1B\u8FD9\u91CC\u5B9A\u4E49\u8BE5 Action \u7C7B\u578B\u7684\u53EF\u590D\u7528\u884C\u4E3A\u3002","workCenter.settings.models":"\u6A21\u578B","workCenter.settings.modelsHelp":"Provider \u548C\u51ED\u8BC1\u4ECD\u7531 Agent LLM \u8BBE\u7F6E\u7BA1\u7406\uFF1B\u5DE5\u4F5C\u4E2D\u5FC3\u53EA\u9009\u62E9\u53EF\u7528\u6A21\u578B\u3002","workCenter.settings.dynamicModelsHelp":"Coordinator \u4E0E\u5B9E\u9645\u6267\u884C Action \u7684\u6A21\u578B\u53EF\u4EE5\u5206\u522B\u914D\u7F6E\u3002","workCenter.settings.coordinatorModel":"Coordinator","workCenter.settings.coordinatorModelHelp":"\u7528\u4E8E Work Item \u5BF9\u8BDD\u3001\u4FEE\u6539\u76EE\u6807\u548C\u91CD\u65B0\u89C4\u5212\uFF1B\u4E0D\u4F1A\u6267\u884C\u9879\u76EE\u5DE5\u5177\u3002","workCenter.settings.allActions":"\u6240\u6709 Action \u7684\u515C\u5E95\u7B56\u7565","workCenter.settings.maxConcurrentActions":"\u6700\u5927\u5E76\u53D1 Action \u6570","workCenter.settings.maxConcurrentActionsHelp":"\u9ED8\u8BA4 3\u3002\u975E Git\u3001\u810F\u5DE5\u4F5C\u533A\u3001\u5171\u4EAB\u526F\u4F5C\u7528\u548C\u96C6\u6210 Action \u4ECD\u4F1A\u4E32\u884C\u6267\u884C\u3002","workCenter.workItemType":"\u7C7B\u578B","workCenter.typeAuto":"Auto \u2014 \u7531 LLM \u63A8\u65AD","workCenter.typeHelp":"\u53EF\u9009\u62E9\u4EFB\u52A1\u7C7B\u522B\uFF0C\u4E5F\u53EF\u8BA9 AI \u81EA\u52A8\u63A8\u65AD\uFF1B\u5177\u4F53 Actions \u59CB\u7EC8\u7531 AI \u89C4\u5212\u3002","workCenter.planning":"\u89C4\u5212\u4E2D","workCenter.aiPlan":"Coordinator \u9A71\u52A8\u6267\u884C","workCenter.aiPlanHelp":"Coordinator \u4F1A\u4F9D\u636E\u5F53\u524D\u8BC1\u636E\u9009\u62E9\u4E0B\u4E00\u6279 Action \u548C\u6267\u884C\u8005\uFF0C\u4E0D\u518D\u9884\u5148\u751F\u6210\u5DE5\u4F5C\u6D41\u56FE\uFF1B\u6A21\u578B\u4E0E effort \u7531 Work Center \u8BBE\u7F6E\u63A7\u5236\u3002","workCenter.settings.manageProviders":"\u7BA1\u7406 Agent \u6A21\u578B","workCenter.settings.assignment":"VP \u9009\u62E9","workCenter.settings.assignment.auto":"\u4ECE\u5168\u90E8 VP \u81EA\u52A8\u9009\u62E9","workCenter.settings.assignment.pool":"\u5019\u9009\u6C60","workCenter.settings.assignment.fixed":"\u56FA\u5B9A VP","workCenter.settings.capability":"\u6240\u9700\u80FD\u529B","workCenter.settings.vp":"Virtual Person","workCenter.settings.poolMembers":"\u5019\u9009 VP","workCenter.settings.modelPolicy":"\u6A21\u578B\u7B56\u7565","workCenter.settings.model.inherit":"\u7EE7\u627F VP \u504F\u597D","workCenter.settings.model.primary":"Agent \u4E3B\u6A21\u578B","workCenter.settings.model.fast":"Agent \u5FEB\u6A21\u578B","workCenter.settings.model.specific":"\u6307\u5B9A\u6A21\u578B","workCenter.settings.model":"\u6A21\u578B","workCenter.settings.effort":"\u63A8\u7406\u5F3A\u5EA6","workCenter.settings.effortDefault":"\u6A21\u578B\u9ED8\u8BA4\u503C","workCenter.settings.effortHelp":"\u8986\u76D6\u6240\u9009\u6A21\u578B\u7684\u9ED8\u8BA4\u63A8\u7406\u5F3A\u5EA6\uFF0C\u5E76\u7528\u4E8E\u6240\u6709 Work Center Action\u3002","workCenter.settings.effortChooseModelHelp":"\u9009\u62E9 Agent \u4E3B\u6A21\u578B\u3001\u5FEB\u6A21\u578B\u6216\u6307\u5B9A\u6A21\u578B\u540E\u53EF\u914D\u7F6E\u63A8\u7406\u5F3A\u5EA6\uFF1B\u7EE7\u627F VP \u504F\u597D\u65F6\u4F7F\u7528\u5404 VP \u6A21\u578B\u7684\u9ED8\u8BA4\u503C\u3002","workCenter.settings.effortUnsupportedHelp":"\u6240\u9009\u6A21\u578B\u4E0D\u63D0\u4F9B\u53EF\u914D\u7F6E\u7684\u63A8\u7406\u5F3A\u5EA6\uFF0C\u56E0\u6B64\u4F7F\u7528\u6A21\u578B\u9ED8\u8BA4\u503C\u3002","workCenter.settings.saving":"\u4FDD\u5B58\u4E2D\u2026","workCenter.settings.reload":"\u91CD\u65B0\u52A0\u8F7D\u8BBE\u7F6E","workCenter.settings.conflict":"\u8BBE\u7F6E\u5DF2\u5728\u5176\u4ED6\u4F4D\u7F6E\u66F4\u65B0\uFF0C\u8BF7\u91CD\u65B0\u52A0\u8F7D\u540E\u518D\u4FDD\u5B58\u3002","workCenter.settings.upgradeRequired":"\u5F53\u524D Agent \u7248\u672C\u65E0\u6CD5\u4FDD\u5B58\u5DE5\u4F5C\u4E2D\u5FC3\u8BBE\u7F6E\u3002\u8FD9\u91CC\u4EE5\u53EA\u8BFB\u65B9\u5F0F\u663E\u793A\u5F53\u524D\u503C\uFF1B\u5347\u7EA7 Agent \u540E\u5373\u53EF\u7F16\u8F91\u5E76\u4FDD\u5B58\u3002","workCenter.settings.saveNotConfirmed":"Agent \u672A\u786E\u8BA4\u672C\u6B21\u63D0\u4EA4\u7684\u63D0\u793A\u8BCD\u548C\u6A21\u578B\u7B56\u7565\u3002\u8BBE\u7F6E\u7A97\u53E3\u4E0D\u4F1A\u5173\u95ED\uFF1B\u8BF7\u91CD\u65B0\u52A0\u8F7D\u6216\u5347\u7EA7 Agent \u540E\u518D\u8BD5\u3002","workCenter.settings.addWorkflow":"\u590D\u5236\u4EFB\u52A1\u6D41","workCenter.settings.removeWorkflow":"\u5220\u9664","workCenter.settings.newWorkflow":"\u4EFB\u52A1\u6D41 {index}","workCenter.settings.workflowName":"\u4EFB\u52A1\u6D41\u540D\u79F0","workCenter.settings.newStage":"\u65B0\u9636\u6BB5","workCenter.settings.addStage":"\u6DFB\u52A0\u9636\u6BB5","workCenter.settings.removeStage":"\u5220\u9664\u9636\u6BB5","workCenter.settings.moveUp":"\u4E0A\u79FB\u9636\u6BB5","workCenter.settings.moveDown":"\u4E0B\u79FB\u9636\u6BB5","workCenter.settings.stageType":"\u9636\u6BB5\u7C7B\u578B","workCenter.settings.reviewReturnStage":"\u8981\u6C42\u4FEE\u6539\u65F6\u9000\u56DE\u9636\u6BB5","workCenter.settings.instruction":"\u9636\u6BB5 Prompt","workCenter.settings.instructionHint":"\u5B9A\u4E49\u8FD9\u4E2A\u9636\u6BB5\u5177\u4F53\u8981\u505A\u4EC0\u4E48\u3002","workCenter.settings.instructionHelp":"\u8FD0\u884C\u65F6\u4F1A\u81EA\u52A8\u52A0\u5165 Work Item \u7684\u76EE\u6807\u3001\u9A8C\u6536\u6807\u51C6\u548C\u53EF\u590D\u7528\u4E0A\u4E0B\u6587\u3002","workCenter.settings.instructionReset":"\u6062\u590D\u9ED8\u8BA4\u503C"}});var Wp,jp=N(()=>{Wp={"common.loading":"Loading...","common.confirm":"OK","common.apply":"Apply","common.cancel":"Cancel","common.delete":"Delete","common.copy":"Copy","common.copied":"Copied","common.close":"Close","common.refresh":"Refresh","common.open":"Open","common.save":"Save","common.search":"Search","common.back":"Back","common.noSubdirectories":"No subdirectories","common.drives":"Drives","common.rootDir":"Root","common.comma":", ","common.select":"Select","mermaid.export":"Export","mermaid.exportMd":"Export MD","mermaid.exportPng":"Export PNG","mermaid.exportJpg":"Export JPG","chat.toolActionsOmitted":"{count} older tool actions omitted","login.subtitle":"Yeaft Web Code Agent","login.username":"Username","login.password":"Password","login.login":"Login","login.loggingIn":"Logging in...","login.enterUsername":"Please enter your username","login.enterPassword":"Please enter your password","login.noAccount":"Don't have an account?","login.registerWithCode":"Register","login.or":"or","login.usePassword":"Sign in with username & password","login.useSso":"Back to single sign-on","login.noProviders":"No third-party sign-in providers are enabled.","login.microsoft":"Sign in with Microsoft","login.github":"Sign in with GitHub","login.google":"Sign in with Google","login.wechat":"Sign in with WeChat","login.alipay":"Sign in with Alipay","login.wechat.mobileUnsupported":"Sign in with WeChat is only available on PC. Please scan the QR code from a desktop browser.","login.alipay.mobileWaiting":"Waiting for you to confirm in the Alipay app\u2026 Once you finish, return to this page and you will be signed in automatically.","login.alipay.relaunch":"Open Alipay again","login.qr.title":"Scan to sign in","login.qr.titleAlipay":"Sign in with Alipay","login.qr.titleWechat":"Sign in with WeChat","login.qr.hint":"Scan the QR code with your phone to authorize.","login.error.enterUsername":"Please enter your username","login.error.enterPassword":"Please enter your password","login.error.enter6Digit":"Please enter a 6-digit code","login.error.enterInviteCode":"Please enter the invite code","login.error.usernameMinLen":"Username must be at least 2 characters","login.error.passwordMinLen":"Password must be at least 6 characters","login.error.passwordMismatch":"Passwords do not match","login.error.enterVerifyCode":"Please enter the verification code","login.error.loginFailed":"Login failed","login.forgot.link":"Forgot password?","login.forgot.title":"Reset your password","login.forgot.emailHint":"Enter the email address on your account. We will send a 6-digit reset code.","login.forgot.sendCode":"Send Reset Code","login.forgot.sending":"Sending...","login.forgot.codeSent":"If the email is on file, a 6-digit reset code has been sent. Enter it below along with your new password.","login.forgot.resetBtn":"Reset Password","login.forgot.resetting":"Resetting...","login.forgot.success":"Password reset. You can now sign in with your new password.","login.forgot.emailInvalid":"Please enter a valid email","login.register.title":"New User Registration","login.register.inviteCode":"Invite Code","login.register.username":"Username","login.register.password":"Password (min 6 characters)","login.register.confirmPassword":"Confirm Password","login.register.email":"Email (optional)","login.register.submit":"Register","login.register.submitting":"Registering...","login.register.back":"Back to Login","login.register.success":"Registration successful, please login","login.register.enterCode":"Please enter the invite code","login.register.usernameMin":"Username must be at least 2 characters","login.register.passwordMin":"Password must be at least 6 characters","login.register.passwordMismatch":"Passwords do not match","login.totp.setupTitle":"Set Up Two-Factor Authentication","login.totp.setupHint":"Scan the QR code below with Microsoft Authenticator or Google Authenticator","login.totp.manualKey":"Or enter the key manually:","login.totp.enterCode":"Enter 6-digit code","login.totp.complete":"Complete Setup","login.totp.verifying":"Verifying...","login.totp.verify":"Verify","login.totp.prompt":"Enter the code from your Authenticator app","login.totp.invalidCode":"Please enter a 6-digit code","login.email.codeSent":"Verification code sent to {email}","login.email.enterCode":"Enter verification code","login.email.verify":"Verify","login.email.verifying":"Verifying...","login.email.enterCodeError":"Please enter the verification code","chat.agent.select":"Select Agent","chat.agent.manage":"Manage Agents","chat.agent.none":"No Agents","chat.agent.restarting":"Restarting","chat.agent.restart":"Restart","chat.agent.restartConfirm":`Are you sure you want to restart Agent "{name}"?
12
+ \u5347\u7EA7\u5B8C\u6210\u540E Agent \u4F1A\u81EA\u52A8\u91CD\u542F\u3002`,"chat.agent.alreadyLatest":"Agent \u5DF2\u662F\u6700\u65B0\u7248\u672C (v{version})\uFF0C\u65E0\u9700\u5347\u7EA7\u3002","chat.agent.nodeIncompatible":"Agent \u5347\u7EA7\u4E2D\u6B62\uFF1A\u76EE\u6807\u7248\u672C v{version} \u9700\u8981 Node {required}\uFF0C\u4F46\u5F53\u524D\u673A\u5668\u8FD0\u884C\u7684\u662F Node {current}\u3002\u8BF7\u5148\u5347\u7EA7 Node.js \u518D\u91CD\u8BD5\u3002","chat.agent.manualUpgradeRequired":'Agent v{version} \u65E9\u4E8E\u5B89\u5168\u8FDC\u7A0B\u5347\u7EA7\u7684\u5F15\u5BFC\u57FA\u7EBF\uFF1B\u65E7\u5BA2\u6237\u7AEF\u53C8\u6CA1\u6709\u4E0A\u62A5\u8DB3\u591F\u7684\u5E73\u53F0\u4FE1\u606F\uFF0CServer \u65E0\u6CD5\u8BC1\u660E\u8FD9\u6B21\u5347\u7EA7\u5B89\u5168\u3002\u4E3A\u907F\u514D\u5C06 Agent \u6253\u79BB\u7EBF\uFF0C\u672C\u6B21\u64CD\u4F5C\u5DF2\u88AB\u963B\u6B62\u3002\u8BF7\u5728\u8BE5\u673A\u5668\u4E0A\u624B\u52A8\u6267\u884C\u4E00\u6B21 "npm install -g @yeaft/webchat-agent@latest --registry=https://pkg.yeaft.com/"\uFF0C\u7136\u540E\u91CD\u65B0\u542F\u52A8 Agent\u3002\u81EA v{minimum} \u8D77\u652F\u6301\u5B89\u5168\u81EA\u52A8\u5347\u7EA7\u3002',"chat.agent.online":"{count} \u4E2A Agent \u5728\u7EBF","chat.agent.selectFirst":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A Agent","chat.agent.yeaft":"Yeaft \u5BF9\u8BDD","sidebar.toggle.chat":"\u5207\u6362\u5230 Chat","sidebar.toggle.yeaft":"\u5207\u6362\u5230 Yeaft","sidebar.surface.label":"\u4FA7\u680F\u89C6\u56FE","sidebar.surface.sessions":"\u4F1A\u8BDD","sidebar.provider.label":"\u4F1A\u8BDD Provider","sidebar.provider.claude":"Claude","sidebar.sessions.new":"\u65B0\u5EFA\u4F1A\u8BDD","sidebar.sessions.newChat":"\u65B0\u5EFA\u804A\u5929","sidebar.sessions.emptyProvider":"\u6B64 Provider \u6682\u65E0\u4F1A\u8BDD","sidebar.sessions.menu":"\u4F1A\u8BDD\u83DC\u5355","sidebar.sessions.unread":"\u672A\u8BFB","sidebar.sessions.pinned":"\u5DF2\u7F6E\u9876","sidebar.sessions.processing":"\u6B63\u5728\u56DE\u590D","sidebar.sessions.hidden":"\u5DF2\u9690\u85CF\u7684\u4F1A\u8BDD","sidebar.sessions.remove":"\u4ECE\u4FA7\u680F\u79FB\u9664","sidebar.sessions.agent":"Agent","sidebar.sessions.provider":"Provider","sidebar.projects.title":"\u9879\u76EE","sidebar.projects.menu":"\u9879\u76EE\u83DC\u5355","sidebar.projects.new":"\u65B0\u5EFA\u9879\u76EE","sidebar.projects.newSession":"\u5728{name}\u4E2D\u521B\u5EFA Session","sidebar.projects.assignFailed":"Session \u5DF2\u521B\u5EFA\uFF0C\u4F46\u65E0\u6CD5\u52A0\u5165{name}\u3002\u9519\u8BEF\uFF1A{message}","sidebar.projects.empty":"\u6682\u65E0\u9879\u76EE","sidebar.projects.noSessions":"\u5C06 Yeaft \u804A\u5929\u62D6\u5230\u8FD9\u91CC","sidebar.projects.namePrompt":"\u9879\u76EE\u540D\u79F0","sidebar.projects.renamePrompt":"\u91CD\u547D\u540D\u9879\u76EE","sidebar.projects.rename":"\u91CD\u547D\u540D\u9879\u76EE","sidebar.projects.delete":"\u5220\u9664\u9879\u76EE","sidebar.projects.deleteConfirm":"\u5220\u9664\u9879\u76EE\u201C{name}\u201D\uFF1F\u5176\u4E2D\u804A\u5929\u4F1A\u79FB\u56DE\u6700\u8FD1\u3002","sidebar.projects.remove":"\u79FB\u51FA\u9879\u76EE","sidebar.projects.moveMenu":"\u79FB\u52A8\u5230 Projects","sidebar.projects.moveBack":"\u8FD4\u56DE","sidebar.projects.moveEmpty":"\u6CA1\u6709\u5176\u4ED6 Project","sidebar.projects.moveTo":"\u79FB\u5230 {name}","sidebar.projects.instructions":"Project \u6307\u4EE4","sidebar.projects.instructionsTitle":"{name} \u6307\u4EE4","sidebar.projects.instructionsHint":"\u8FD9\u4E9B\u6307\u4EE4\u4F1A\u52A0\u5165\u6B64 Project \u5185\u6BCF\u4E2A Session \u7684 system prompt\u3002","sidebar.projects.instructionsPlaceholder":"\u8F93\u5165\u5171\u4EAB\u7684\u7F16\u7801\u89C4\u8303\u3001\u7EA6\u675F\u6216\u5DE5\u4F5C\u6D41\u8BF4\u660E\u2026","sidebar.recents.title":"\u6700\u8FD1","sidebar.recents.empty":"\u6682\u65E0\u804A\u5929","yeaft.back":"\u8FD4\u56DE","yeaft.session.people":"\u6210\u5458","yeaft.session.peopleEmpty":"\u6682\u65E0\u6210\u5458","yeaft.session.runningTasks":"\u8FD0\u884C\u4E2D\u7684\u4EFB\u52A1","yeaft.session.tasksEmpty":"\u6682\u65E0\u8FD0\u884C\u4EFB\u52A1","yeaft.session.owner":"\u8D1F\u8D23\u4EBA","yeaft.session.started":"\u5F00\u59CB\u65F6\u95F4","yeaft.breadcrumb.label":"Thread \u8FC7\u6EE4","yeaft.breadcrumb.mainStream":"\u4E3B\u6D41","yeaft.breadcrumb.backHint":"\u8FD4\u56DE\u5168\u6D41 (Esc)","yeaft.featureDetail.ariaLabel":"Task \u8BE6\u60C5","yeaft.featureDetail.replyTo":"\u56DE\u590D\u5230:","yeaft.featureDetail.forkHint":"\u8BE5 task \u6682\u65E0\u6D3B\u8DC3 thread \u2014 \u8BF7 fork \u65B0 thread \u540E\u56DE\u590D\u3002","yeaft.featureDetail.empty":"\u8BE5 task \u6682\u65E0\u6D88\u606F\u3002","yeaft.featureDetail.threadPillHint":"\u6253\u5F00 thread","yeaft.featureDetail.summary.aria":"\u4EFB\u52A1\u6458\u8981\u65F6\u95F4\u7EBF","yeaft.featureDetail.summary.title":"\u6458\u8981\u65F6\u95F4\u7EBF","yeaft.featureDetail.summary.loading":"\u6B63\u5728\u52A0\u8F7D\u6458\u8981\u5386\u53F2\u2026","yeaft.featureDetail.summary.empty":"\u6682\u65E0\u6458\u8981\u3002","yeaft.featureDetail.summary.error":"\u6458\u8981\u52A0\u8F7D\u5931\u8D25\uFF1A{error}","yeaft.featureDetail.summary.showArchived":"\u663E\u793A\u5DF2\u5F52\u6863","yeaft.featureDetail.related.aria":"\u5173\u8054\u4EFB\u52A1","yeaft.featureDetail.related.title":"\u5173\u8054\u4EFB\u52A1","yeaft.featureDetail.related.unlink":"\u53D6\u6D88\u5173\u8054","yeaft.featureDetail.members.aria":"\u4EFB\u52A1\u6210\u5458","yeaft.featureDetail.members.title":"\u6210\u5458","yeaft.featureDetail.members.abort":"\u4E2D\u6B62","yeaft.featureDetail.members.kick":"\u8E22\u51FA","yeaft.model":"\u6A21\u578B","yeaft.placeholder":"\u95EE\u6211\u4EFB\u4F55\u95EE\u9898...","yeaft.inbox":"\u6536\u4EF6\u7BB1","yeaft.inbox.tooltip":"\u4F60\u7684\u9ED8\u8BA4\u5BF9\u8BDD\u7EBF\u7A0B \u2014\u2014 \u4E0E Yeaft \u7684\u4E00\u5BF9\u4E00\u804A\u5929\u3002\u53EF\u4EE5\u4E3A\u5177\u4F53\u8BDD\u9898\u6216\u4EFB\u52A1\u521B\u5EFA\u65B0\u7EBF\u7A0B\u3002","yeaft.sidebar.activeThreads":"\u6D3B\u8DC3","yeaft.sidebar.idleThreads":"\u9759\u9ED8","yeaft.sidebar.archivedThreads":"\u5DF2\u5F52\u6863","yeaft.sidebar.tasks":"\u4EFB\u52A1","yeaft.sidebar.emptyActive":"\u6682\u65E0\u6D3B\u8DC3 thread","yeaft.sidebar.emptyIdle":"\u6682\u65E0\u9759\u9ED8 thread","yeaft.sidebar.emptyArchived":"\u6682\u65E0\u5F52\u6863 thread","yeaft.sidebar.emptyTasks":"\u65E0\u5339\u914D\u4EFB\u52A1","yeaft.sidebar.results":"\u641C\u7D22\u7ED3\u679C","yeaft.sidebar.resultsThreads":"Threads","yeaft.sidebar.kindThread":"thread","yeaft.sidebar.cancel":"\u53D6\u6D88","yeaft.sidebar.mergeInto":"\u5408\u5E76\u5230\u2026","yeaft.sidebar.mergeNoCandidates":"\u6CA1\u6709\u53EF\u5408\u5E76\u7684\u5176\u4ED6\u7EBF\u7A0B","yeaft.sidebar.mergeConfirmTitle":"\u5408\u5E76\u8FD9\u4E2A\u7EBF\u7A0B\uFF1F","yeaft.sidebar.mergeIrreversible":"\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\uFF0C\u6E90\u7EBF\u7A0B\u5C06\u88AB\u5F52\u6863\uFF0C\u5176\u6D88\u606F\u4F1A\u88AB\u79FB\u52A8\u5230\u76EE\u6807\u7EBF\u7A0B\u3002","yeaft.sidebar.mergeConfirm":"\u5408\u5E76","yeaft.settings.sidebarV2":"\u5B9E\u9A8C\u529F\u80FD\uFF1A\u4FA7\u8FB9\u680F V2","yeaft.settings.sidebarV2Hint":"Thread \u5217\u8868 + \u4EFB\u52A1\u6811\uFF08\u9884\u89C8\uFF09\u3002","yeaft.clearConfirm":"\u6E05\u7A7A\u6240\u6709\u6D88\u606F\uFF1F","yeaft.mode":"\u6A21\u5F0F","yeaft.agent":"\u667A\u80FD\u4F53","yeaft.connecting":"\u8FDE\u63A5\u4E2D...","yeaft.ready":"\u5C31\u7EEA","yeaft.tools":"\u4E2A\u5DE5\u5177","yeaft.skills":"\u4E2A\u6280\u80FD","yeaft.mcp":"\u4E2A MCP","yeaft.showSidebar":"\u663E\u793A\u4FA7\u680F","yeaft.hideSidebar":"\u9690\u85CF\u4FA7\u680F","yeaft.debug":"\u8C03\u8BD5","yeaft.debugClose":"\u5173\u95ED\u8C03\u8BD5\u9762\u677F","yeaft.debugTurns":"\u8F6E","yeaft.debugTabToolStats":"\u5DE5\u5177\u7EDF\u8BA1","yeaft.debugTabDream":"Dream","yeaft.debugTabRequestLog":"\u8BF7\u6C42\u65E5\u5FD7","yeaft.debugHistoryLoad":"\u52A0\u8F7D\u8BF7\u6C42\u5386\u53F2","yeaft.debugHistoryLoading":"\u52A0\u8F7D\u4E2D...","yeaft.debugHistoryLoaded":"\u5DF2\u52A0\u8F7D {count} \u6761","yeaft.debugSearchPlaceholder":"\u6B63\u5219\u641C\u7D22\u8BF7\u6C42\u65E5\u5FD7","yeaft.debugSearchHint":"\u9ED8\u8BA4\u663E\u793A\u5168\u5C40\u6700\u8FD1 10 \u6761\uFF1B\u641C\u7D22\u4F1A\u8DE8 Session \u5339\u914D\u8BF7\u6C42\u6458\u8981\u3002","yeaft.debugTurnAction":"\u67E5\u770B\u8BE5\u8F6E\u5BF9\u8BDD\u7684\u8C03\u8BD5\u8F68\u8FF9","yeaft.debugTurnContext":"\u8C03\u8BD5\u8F68\u8FF9","yeaft.debugPanelEmpty":"\u60AC\u505C\u5728 AI \u56DE\u590D\u4E0A\uFF0C\u70B9\u51FB\u8C03\u8BD5\u56FE\u6807\u5373\u53EF\u67E5\u770B\u8BE5\u8F6E\u5BF9\u8BDD\u7684\u8C03\u8BD5\u8F68\u8FF9\u3002","yeaft.dreamDebug.title":"Dream \u751F\u547D\u5468\u671F","yeaft.dreamDebug.trigger":"\u89E6\u53D1","yeaft.dreamDebug.status":"\u72B6\u6001","yeaft.dreamDebug.started":"\u5F00\u59CB","yeaft.dreamDebug.finished":"\u7ED3\u675F","yeaft.dreamDebug.time":"\u65F6\u95F4","yeaft.dreamDebug.phase":"\u9636\u6BB5","yeaft.dreamDebug.call":"\u8C03\u7528","yeaft.dreamDebug.location":"\u751F\u6210\u4F4D\u7F6E","yeaft.dreamDebug.result":"\u7ED3\u679C","yeaft.dreamDebug.noLatest":"\u8FD9\u4E2A\u4F1A\u8BDD\u8FD8\u6CA1\u6709\u8BB0\u5F55\u5230 Dream \u68C0\u67E5\u3002","yeaft.dreamDebug.noEvents":"\u8FD9\u4E2A\u4F1A\u8BDD\u8FD8\u6CA1\u6709 Dream \u4E8B\u4EF6\u3002","yeaft.dreamDebug.outputTitle":"\u672C session \u5DF2\u52A0\u8F7D\u7684 Dream \u8F93\u51FA","yeaft.dreamDebug.scope":"Scope","yeaft.dreamDebug.lastDream":"\u4E0A\u6B21 Dream","yeaft.dreamDebug.messagesCovered":"\u5DF2\u8986\u76D6\u6D88\u606F\u6570","yeaft.dreamDebug.noOutput":"\u8FD9\u4E2A session \u8FD8\u6CA1\u6709\u5199\u5165 Dream \u8F93\u51FA\u3002","yeaft.dreamDebug.promptLoadTitle":"\u5DF2\u52A0\u8F7D\u8FDB system prompt \u7684 Dream \u8BB0\u5FC6","yeaft.dreamDebug.loadedInto":"\u52A0\u8F7D\u4F4D\u7F6E","yeaft.dreamDebug.vp":"VP","yeaft.dreamDebug.summaryToPrompt":"summary.md -> system prompt","yeaft.dreamDebug.itemList":"Dream \u8FD0\u884C\u548C Scope","yeaft.dreamDebug.searchPlaceholder":"\u6309\u6807\u9898\u3001ID \u6216\u6458\u8981\u641C\u7D22 Dream Session...","yeaft.dreamDebug.noSearchResults":"\u6CA1\u6709\u5339\u914D\u7684 Dream Session\u3002","yeaft.dreamDebug.noSummary":"\u6682\u65E0\u6458\u8981","yeaft.dreamDebug.segments":"\u6BB5","yeaft.dreamDebug.lastError":"\u6700\u8FD1\u9519\u8BEF","yeaft.dreamDebug.overview":"\u6982\u89C8","yeaft.dreamDebug.sessionId":"Session ID","yeaft.dreamDebug.loadedAt":"\u52A0\u8F7D\u65F6\u95F4","yeaft.dreamDebug.layers":"\u5C42\u7EA7","yeaft.dreamDebug.summaryLayer":"Resident summary","yeaft.dreamDebug.noPromptLoad":"\u8FD9\u4E2A scope \u6682\u65E0 prompt-load \u8BB0\u5F55\u3002","yeaft.dreamDebug.segmentTitle":"Segments","yeaft.dreamDebug.sourceMessages":"\u6765\u6E90\u6D88\u606F","yeaft.dreamDebug.createdAt":"\u521B\u5EFA\u65F6\u95F4","yeaft.dreamDebug.updatedAt":"\u66F4\u65B0\u65F6\u95F4","yeaft.dreamDebug.noSegments":"\u8FD9\u4E2A scope \u6682\u65E0 memory segments\u3002","yeaft.dreamDebug.requestResponse":"Request / Response","yeaft.dreamDebug.noRequestResponse":"\u8FD9\u4E2A scope \u8FD8\u6CA1\u6709\u6301\u4E45\u5316\u7684 Dream request/response \u65E5\u5FD7\u3002","yeaft.dreamDebug.empty":"\u6682\u65E0 Dream debug \u6570\u636E\u3002","yeaft.debugGroupFollowMain":"\u8DDF\u968F\u4E3B\u9762\u677F","yeaft.debugGroupAll":"\u5168\u90E8\u4F1A\u8BDD","yeaft.debugAssistantResponse":"Assistant \u56DE\u590D","yeaft.debugViewAssistantResponse":"\u67E5\u770B\u56DE\u590D","yeaft.debugToolInput":"\u8F93\u5165","yeaft.debugToolResult":"\u7ED3\u679C","yeaft.debugToolRunning":"\u6267\u884C\u4E2D","yeaft.debugToolRunningNoResult":"\u6267\u884C\u4E2D\uFF0C\u6682\u65E0\u7ED3\u679C","yeaft.debugShowDetails":"\u5C55\u5F00","yeaft.debugHideDetails":"\u6536\u8D77","yeaft.debugTurnStartedAt":"\u56DE\u5408\u5F00\u59CB\u65F6\u95F4","yeaft.debugRequestAt":"\u8BF7\u6C42\u65F6\u95F4","yeaft.debugRequestAtDerived":"\u7531\u56DE\u5408\u5F00\u59CB\u65F6\u95F4\u63A8\u7B97\uFF08\u65E7 loop\uFF09","yeaft.turn":"\u7B2C {n} \u8F6E","yeaft.systemPrompt":"\u7CFB\u7EDF\u63D0\u793A","yeaft.messagesLabel":"\u6D88\u606F","yeaft.response":"\u56DE\u590D","yeaft.toolCalls":"\u5DE5\u5177\u8C03\u7528","yeaft.functionCalls":"\u51FD\u6570\u8C03\u7528","yeaft.request":"\u8BF7\u6C42","yeaft.pending":"(\u7B49\u5F85\u4E2D)","yeaft.inputTokens":"\u8F93\u5165","yeaft.outputTokens":"\u8F93\u51FA","yeaft.duration":"\u8017\u65F6","yeaft.noDebugData":"\u6682\u65E0\u8C03\u8BD5\u6570\u636E","yeaft.showDebug":"\u663E\u793A\u8C03\u8BD5\u9762\u677F","yeaft.hideDebug":"\u9690\u85CF\u8C03\u8BD5\u9762\u677F","yeaft.reloadPage":"\u5237\u65B0\u9875\u9762","yeaft.reloadMessages":"\u91CD\u65B0\u52A0\u8F7D\u6D88\u606F","sidebar.sessions.syncing":"\u6B63\u5728\u540C\u6B65\u6700\u65B0\u6D88\u606F","yeaft.historySearch.label":"\u641C\u7D22 Session \u5386\u53F2\u6D88\u606F","yeaft.historySearch.button":"\u641C\u7D22\u6D88\u606F","yeaft.historySearch.placeholder":"\u641C\u7D22\u5F53\u524D Session \u7684\u6D88\u606F","yeaft.historySearch.searching":"\u6B63\u5728\u641C\u7D22\u2026","yeaft.historySearch.minChars":"\u81F3\u5C11\u8F93\u5165 2 \u4E2A\u5B57\u7B26","yeaft.historySearch.empty":"\u6CA1\u6709\u5339\u914D\u7684\u6D88\u606F","yeaft.historySearch.error":"\u641C\u7D22\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5","yeaft.historySearch.unsupported":"\u8BF7\u5347\u7EA7\u5F53\u524D Agent \u540E\u518D\u641C\u7D22 Session \u5386\u53F2\u6D88\u606F","yeaft.historySearch.more":"\u52A0\u8F7D\u66F4\u591A\u7ED3\u679C","yeaft.historySearch.you":"\u4F60","yeaft.historySearch.assistant":"\u52A9\u624B","yeaft.outline.label":"\u5386\u53F2\u6D88\u606F","yeaft.outline.sender":"\u53D1\u9001\u8005","yeaft.outline.allSenders":"\u5168\u90E8\u53D1\u9001\u8005","yeaft.outline.title":"\u5386\u53F2\u6D88\u606F","yeaft.outline.placeholder":"\u641C\u7D22\u5F53\u524D\u5BF9\u8BDD","yeaft.outline.searching":"\u6B63\u5728\u641C\u7D22\u2026","yeaft.outline.loading":"\u6B63\u5728\u52A0\u8F7D\u2026","yeaft.outline.older":"\u52A0\u8F7D\u66F4\u65E9\u6D88\u606F","yeaft.outline.moreMatches":"\u52A0\u8F7D\u66F4\u591A\u5339\u914D\u9879","yeaft.outline.minChars":"\u81F3\u5C11\u8F93\u5165 2 \u4E2A\u5B57\u7B26","yeaft.outline.empty":"\u6682\u65E0\u6D88\u606F","yeaft.outline.noMatches":"\u6CA1\u6709\u5339\u914D\u7684\u6D88\u606F","yeaft.outline.error":"\u5927\u7EB2\u52A0\u8F7D\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5","yeaft.outline.unsupported":"\u8BF7\u5347\u7EA7\u5F53\u524D Agent \u540E\u518D\u4F7F\u7528\u5BF9\u8BDD\u5927\u7EB2","yeaft.outline.you":"\u4F60","yeaft.outline.assistant":"\u52A9\u624B","yeaft.outline.nonText":"\u975E\u6587\u672C\u56DE\u590D","yeaft.switchModel":"\u5207\u6362\u6A21\u578B","yeaft.modelMenu.title":"\u6A21\u578B\u548C LLM \u8BBE\u7F6E","yeaft.modelMenu.label":"\u6A21\u578B","yeaft.modelMenu.effort":"\u63A8\u7406\u5F3A\u5EA6","yeaft.modelMenu.effort.openaiReasoning":"\u63A8\u7406\u5F3A\u5EA6","yeaft.modelMenu.effort.anthropicBudget":"\u601D\u8003\u9884\u7B97","yeaft.modelMenu.effort.anthropicAdaptive":"\u81EA\u9002\u5E94\u601D\u8003\u5F3A\u5EA6","yeaft.modelMenu.effort.minimal":"\u6700\u5C0F","yeaft.modelMenu.effort.low":"\u4F4E","yeaft.modelMenu.effort.medium":"\u4E2D","yeaft.modelMenu.effort.high":"\u9AD8","yeaft.modelMenu.effort.xhigh":"\u8D85\u9AD8","yeaft.modelMenu.effort.max":"\u6700\u9AD8","yeaft.modelMenu.noEffort":"\u5F53\u524D\u6A21\u578B\u6CA1\u6709\u53EF\u517C\u5BB9\u6620\u5C04\u7684\u63A8\u7406\u5F3A\u5EA6\u63A7\u5236\u3002","yeaft.modelMenu.configureHint":"Provider\u3001\u5BC6\u94A5\u3001\u6A21\u578B\u5217\u8868","yeaft.settings.title":"\u8BBE\u7F6E","yeaft.settings.tabs.vp":"VP \u5E93","yeaft.settings.tabs.search":"\u641C\u7D22","search.settings.backendTitle":"\u641C\u7D22\u540E\u7AEF","search.settings.backendDesc":"\u9009\u62E9 WebSearch \u5DE5\u5177\u9ED8\u8BA4\u4F7F\u7528\u7684\u540E\u7AEF\u3002\u4E3B\u540E\u7AEF\u5931\u8D25\u65F6,\u5F15\u64CE\u4F1A\u81EA\u52A8\u964D\u7EA7\u5230 HTML \u6293\u53D6\u3002","search.settings.backend.tavily":"Tavily","search.settings.backend.tavilyHint":"\u6258\u7BA1\u641C\u7D22 API\u3002\u514D\u8D39\u989D\u5EA6 1000 \u6B21/\u6708\u3002\u63A8\u8350\u3002","search.settings.backend.playwright":"Playwright \u670D\u52A1","search.settings.backend.playwrightHint":"\u81EA\u5EFA\u7684\u6D4F\u89C8\u5668\u5F0F\u641C\u7D22/\u6293\u53D6\u670D\u52A1,\u9002\u5408 IP \u4FE1\u8A89\u5DEE\u88AB bot \u68C0\u6D4B\u7684\u73AF\u5883\u3002\u5C1A\u672A\u4E0A\u7EBF\u3002","search.settings.comingSoon":"\u5373\u5C06\u63A8\u51FA","search.settings.tavilyKeyTitle":"Tavily API key","search.settings.tavilyKeyDesc":"\u4FDD\u5B58\u5728 agent \u7684 ~/.yeaft/config.json \u4E2D\u3002\u514D\u8D39\u7533\u8BF7:","search.settings.tavilyKeyUnchanged":"\u4FDD\u6301\u4E0D\u53D8","search.settings.clearKey":"\u6E05\u9664","search.settings.usageTitle":"\u672C\u6708\u7528\u91CF","search.settings.usageRefresh":"\u5237\u65B0","search.settings.usageLoading":"\u52A0\u8F7D\u4E2D\u2026","search.settings.usagePlan":"\u8BA1\u5212","search.settings.usageUsed":"\u5DF2\u7528","search.settings.usagePaygo":"\u6309\u91CF\u4ED8\u8D39","search.settings.usageError":"\u52A0\u8F7D\u7528\u91CF\u5931\u8D25","search.settings.save":"\u4FDD\u5B58","search.settings.saving":"\u4FDD\u5B58\u4E2D\u2026","search.settings.saveSuccess":"\u5DF2\u4FDD\u5B58","search.settings.cancel":"\u91CD\u7F6E","yeaft.settings.yeaftTitle":"\u7EBF\u7A0B\u5E76\u53D1\u4E0E\u5F52\u6863","yeaft.settings.yeaftDesc":"\u8C03\u6574\u53EF\u540C\u65F6\u8FD0\u884C\u7684\u7EBF\u7A0B\u6570\u91CF\uFF0C\u4EE5\u53CA\u95F2\u7F6E\u7EBF\u7A0B\u7684\u81EA\u52A8\u5F52\u6863\u65F6\u957F\u3002","yeaft.settings.maxConcurrentLabel":"\u6700\u5927\u5E76\u53D1\u7EBF\u7A0B\u6570","yeaft.settings.maxConcurrentHint":"\u540C\u65F6\u5728\u7EBF\u7684\u7EBF\u7A0B\u603B\u6570\u4E0A\u9650\uFF08\u542B\u59CB\u7EC8\u5B58\u5728\u7684 main \u4E3B\u7EBF\u7A0B\uFF09\u3002\u8D85\u8FC7\u6B64\u4E0A\u9650\u7684\u65B0\u7EBF\u7A0B\u5C06\u88AB\u62D2\u7EDD\uFF0C\u76F4\u81F3\u5DF2\u6709\u7EBF\u7A0B\u88AB\u5F52\u6863\u6216\u7EC8\u6B62\u3002\u8303\u56F4\uFF1A1-50\u3002","yeaft.settings.archiveIdleDaysLabel":"\u95F2\u7F6E\u591A\u4E45\u540E\u81EA\u52A8\u5F52\u6863\u7EBF\u7A0B\uFF08\u5929\uFF09","yeaft.settings.archiveIdleDaysHint":"\u65E0\u6D3B\u52A8\u8D85\u8FC7\u6B64\u5929\u6570\u7684\u7EBF\u7A0B\u5C06\u88AB\u5F52\u6863\u3002\u8303\u56F4\uFF1A1-3650\u3002","yeaft.settings.yeaftSaveBtn":"\u4FDD\u5B58","yeaft.settings.yeaftSaving":"\u4FDD\u5B58\u4E2D...","yeaft.settings.yeaftSaved":"\u5DF2\u4FDD\u5B58","yeaft.settings.yeaftLoading":"\u52A0\u8F7D\u4E2D...","yeaft.settings.yeaftLoadError":"\u52A0\u8F7D Yeaft \u8BBE\u7F6E\u5931\u8D25","yeaft.settings.yeaftSaveError":"\u4FDD\u5B58 Yeaft \u8BBE\u7F6E\u5931\u8D25","yeaft.settings.rangeErrorConcurrent":"\u5FC5\u987B\u5728 1 \u5230 50 \u4E4B\u95F4","yeaft.settings.rangeErrorArchive":"\u5FC5\u987B\u5728 1 \u5230 3650 \u4E4B\u95F4","chat.session.creating":"\u6B63\u5728\u521B\u5EFA\u4F1A\u8BDD...","chat.session.loadingHistory":"\u6B63\u5728\u52A0\u8F7D\u4F1A\u8BDD\u5386\u53F2...","yeaft.historyLoad.error":"\u4F1A\u8BDD\u5386\u53F2\u6682\u65F6\u65E0\u6CD5\u52A0\u8F7D\uFF0C\u6D88\u606F\u4ECD\u5B89\u5168\u4FDD\u5B58\u5728 Agent \u4E2D\u3002","yeaft.historyLoad.retry":"\u91CD\u65B0\u52A0\u8F7D","yeaft.sessionInventory.error":"\u6682\u65F6\u65E0\u6CD5\u52A0\u8F7D Session\uFF0C\u4F1A\u8BDD\u4ECD\u5B89\u5168\u4FDD\u5B58\u5728 Agent \u4E2D\u3002","yeaft.sessionInventory.retry":"\u91CD\u65B0\u52A0\u8F7D Session","chat.session.closed":"\u4F1A\u8BDD\u5DF2\u5173\u95ED","chat.session.agentOffline":"Agent \u5DF2\u79BB\u7EBF\uFF0C\u8BE5\u4F1A\u8BDD\u5C06\u5728 Agent \u91CD\u65B0\u4E0A\u7EBF\u540E\u6062\u590D\u3002","chat.execution.cancelled":"\u6267\u884C\u5DF2\u53D6\u6D88","chat.sidebar.expand":"\u5C55\u5F00\u83DC\u5355","chat.sidebar.collapse":"\u6536\u8D77\u4FA7\u8FB9\u680F","chat.sidebar.workbench":"\u5DE5\u5177\u9762\u677F","chat.sidebar.newConv":"\u4F1A\u8BDD","chat.sidebar.recentChats":"\u6700\u8FD1\u4F1A\u8BDD","chat.sidebar.resumeConv":"\u6062\u590D\u4F1A\u8BDD","chat.sidebar.lightMode":"\u6D45\u8272\u6A21\u5F0F","chat.sidebar.darkMode":"\u6DF1\u8272\u6A21\u5F0F","chat.sidebar.settings":"\u8BBE\u7F6E","chat.sidebar.emptyHint":"\u70B9\u51FB\u4E0A\u65B9\u6309\u94AE\u521B\u5EFA\u65B0\u4F1A\u8BDD","chat.sidebar.closeConv":"\u5173\u95ED\u4F1A\u8BDD","chat.sidebar.renameConv":"\u91CD\u547D\u540D","chat.sidebar.pin":"\u7F6E\u9876","chat.sidebar.unpin":"\u53D6\u6D88\u7F6E\u9876","chat.connection.connecting":"\u8FDE\u63A5\u4E2D...","chat.connection.reconnecting":"\u91CD\u8FDE\u4E2D ({current}/{max})...","chat.connection.updating":"\u670D\u52A1\u6B63\u5728\u66F4\u65B0\uFF0C\u8BF7\u7A0D\u5019...","chat.connection.disconnected":"\u8FDE\u63A5\u65AD\u5F00","chat.connection.reconnect":"\u91CD\u8FDE","chat.connection.reconnectFailed":"\u8FDE\u63A5\u65AD\u5F00\uFF0C\u8BF7\u70B9\u51FB\u91CD\u8FDE\u6309\u94AE\u91CD\u8BD5\u3002","chat.time.justNow":"\u521A\u521A","chat.time.minutesAgo":"{count}\u5206\u949F\u524D","chat.time.daysAgo":"{count}\u5929\u524D","chat.time.today":"\u4ECA\u5929","chat.time.yesterday":"\u6628\u5929","chat.delete.confirm":"\u786E\u5B9A\u8981\u5173\u95ED\u8FD9\u4E2A\u4F1A\u8BDD\u5417\uFF1F\u8FD9\u5C06\u7EC8\u6B62\u5BF9\u5E94\u7684 Claude \u8FDB\u7A0B\u3002","chat.delete.enterWorkDir":"\u8BF7\u8F93\u5165\u5DE5\u4F5C\u76EE\u5F55\u8DEF\u5F84","modal.newConv.workDir":"\u5DE5\u4F5C\u76EE\u5F55","modal.newConv.inputOrSelect":"\u8F93\u5165\u6216\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","modal.newConv.browse":"\u6D4F\u89C8\u76EE\u5F55","modal.newConv.noWorkDirs":"\u6682\u65E0\u5DE5\u4F5C\u76EE\u5F55","modal.newConv.selectAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A\u5728\u7EBF\u7684 Agent","modal.newConv.create":"\u521B\u5EFA\u4F1A\u8BDD","modal.newConv.folderLabel":"\u{1F4C1} \u5DE5\u4F5C\u76EE\u5F55","modal.newConv.provider":"\u63D0\u4F9B\u65B9","modal.newConv.model":"\u6A21\u578B","provider.claudeCode":"Claude Code","provider.copilot":"Copilot","modal.resume.workDir":"\u5DE5\u4F5C\u76EE\u5F55","modal.resume.inputOrSelect":"\u8F93\u5165\u6216\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","modal.resume.browse":"\u6D4F\u89C8\u76EE\u5F55","modal.resume.tabFolders":"\u5DE5\u4F5C\u76EE\u5F55","modal.resume.tabSessions":"\u5386\u53F2\u4F1A\u8BDD","modal.resume.noWorkDirs":"\u6682\u65E0\u5DE5\u4F5C\u76EE\u5F55","modal.resume.selectWorkDir":"\u8BF7\u5148\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","modal.resume.noSessions":"\u8BE5\u76EE\u5F55\u4E0B\u6CA1\u6709\u5386\u53F2\u4F1A\u8BDD","modal.resume.untitled":"\u672A\u547D\u540D\u4F1A\u8BDD","modal.resume.folderLabel":"\u{1F4C1} \u5DE5\u4F5C\u76EE\u5F55","modal.resume.sessionLabel":"\u{1F4AC} \u5386\u53F2\u4F1A\u8BDD","modal.resume.selectAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A\u5728\u7EBF\u7684 Agent","modal.folderPicker.title":"\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","modal.folderPicker.parentDir":"\u4E0A\u7EA7\u76EE\u5F55","welcome.subtitle":"\u9762\u5411 Session\u3001\u5DE5\u5177\u548C VP \u534F\u4F5C\u7684 Web Code Agent","welcome.agentOnline":"{count} \u4E2A Agent \u5728\u7EBF","welcome.noAgents":"\u6682\u65E0\u5728\u7EBF Agent","welcome.noAgentsHint":"\u8BF7\u5148\u542F\u52A8 Agent \u7A0B\u5E8F\u8FDE\u63A5\u5230\u670D\u52A1\u5668","welcome.noAgent":"\u6682\u65E0\u5728\u7EBF Agent","welcome.noAgentHint":"\u8BF7\u5148\u542F\u52A8 Agent \u7A0B\u5E8F\u8FDE\u63A5\u5230\u670D\u52A1\u5668","welcome.setupAgent":"\u8BBE\u7F6E Agent","welcome.setupKicker":"Agent \u63A5\u5165","welcome.setupTitle":"\u8FDE\u63A5\u4F60\u7684\u7B2C\u4E00\u4E2A Yeaft Agent","welcome.setupDesc":"\u590D\u5236\u4E24\u6761\u547D\u4EE4\u5373\u53EF\u8FDE\u63A5\u672C\u673A Agent\u3002\u6A21\u578B\u53EF\u7528 GitHub Copilot \u81EA\u52A8\u914D\u7F6E\u3002","welcome.setupInstallTitle":"\u5B89\u88C5 CLI","welcome.setupCopilotTitle":"\u914D\u7F6E\u6A21\u578B","welcome.setupRunTitle":"\u542F\u52A8 Agent","welcome.setupSecretLoading":"\u6B63\u5728\u51C6\u5907 Agent secret...","welcome.setupSecretError":"\u65E0\u6CD5\u51C6\u5907 Agent secret\uFF0C\u8BF7\u6253\u5F00\u5B89\u5168\u8BBE\u7F6E\u91CD\u8BD5\u3002","welcome.openSecuritySettings":"\u6253\u5F00\u5B89\u5168\u8BBE\u7F6E","welcome.newConv":"\u4F1A\u8BDD","welcome.resumeHistory":"\u6062\u590D\u5386\u53F2","messages.loadingMore":"\u52A0\u8F7D\u66F4\u591A\u6D88\u606F...","messages.loadMore":"\u2191 \u70B9\u51FB\u6216\u5411\u4E0A\u6EDA\u52A8\u52A0\u8F7D\u66F4\u591A","message.loadingMore":"\u52A0\u8F7D\u66F4\u591A\u6D88\u606F...","message.loadMore":"\u2191 \u70B9\u51FB\u6216\u5411\u4E0A\u6EDA\u52A8\u52A0\u8F7D\u66F4\u591A","message.scrollToLatest":"\u2193 \u6700\u65B0","message.showResponses":"\u5C55\u5F00 {count} \u6761\u56DE\u590D","message.hideResponses":"\u6298\u53E0\u56DE\u590D","message.assistant":"\u52A9\u624B","chat.waiting.disconnected":"\u8FDE\u63A5\u5DF2\u65AD\u5F00","chat.connecting":"\u6B63\u5728\u8FDE\u63A5 provider \u4F1A\u8BDD...","chat.waiting.compacting":"\u6B63\u5728\u538B\u7F29\u4E0A\u4E0B\u6587...","chat.waiting.agentOffline":"Agent \u5DF2\u79BB\u7EBF","chat.waiting.sessionLost":"Session \u5DF2\u4E22\u5931\uFF0C\u5DF2\u5237\u65B0\uFF0C\u7B49\u5F85\u6700\u65B0\u4FE1\u606F...","chat.waiting.cliExited":"Claude \u8FDB\u7A0B\u5DF2\u9000\u51FA\uFF0C\u5DF2\u5237\u65B0\uFF0C\u7B49\u5F85\u6700\u65B0\u4FE1\u606F...","chat.waiting.refresh":"\u5237\u65B0","chat.waiting.thinking":"AI \u6B63\u5728\u601D\u8003\u4E2D\uFF0C\u8BF7\u7A0D\u5019...","btw.hint":"esc \u9000\u51FA","btw.placeholder":"\u95EE\u4E2A\u987A\u4FBF\u7684\u95EE\u9898...","btw.close":"\u9000\u51FA BTW \u6A21\u5F0F","message.copyContent":"\u590D\u5236\u5185\u5BB9","message.copy":"\u590D\u5236\u5185\u5BB9","message.copied":"\u5DF2\u590D\u5236","message.copyCode":"\u590D\u5236\u4EE3\u7801","message.copyAll":"\u590D\u5236\u5168\u90E8","message.screenshot":"\u622A\u56FE","message.screenshotting":"\u6B63\u5728\u622A\u56FE...","message.exportMd":"\u5BFC\u51FA MD","message.askInput":"\u9700\u8981\u4F60\u7684\u8F93\u5165","message.askAnswered":"\u2713 \u5DF2\u56DE\u7B54","message.askCustom":"\u6216\u8F93\u5165\u81EA\u5B9A\u4E49\u56DE\u7B54...","message.askCustomPlaceholder":"\u6216\u8F93\u5165\u81EA\u5B9A\u4E49\u56DE\u7B54...","message.askSubmit":"\u63D0\u4EA4\u56DE\u7B54","message.askWaiting":"\u7B49\u5F85\u95EE\u9898\u52A0\u8F7D...","message.askExpired":"\u6B64\u95EE\u9898\u5DF2\u5931\u6548\uFF0C\u8BF7\u8BA9\u89D2\u8272\u91CD\u65B0\u63D0\u95EE","message.openInEditor":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00","message.resultDone":"\u5B8C\u6210","message.done":"\u5B8C\u6210","message.resultRead":"\u8BFB\u53D6 {file}","message.readFile":"\u8BFB\u53D6 {name}","message.file":"\u6587\u4EF6","message.attachImages":"{count} \u5F20\u56FE\u7247","message.imageCount":"{count} \u5F20\u56FE\u7247","message.imagePreview":"\u56FE\u7247\u9884\u89C8","message.previousImage":"\u4E0A\u4E00\u5F20\u56FE\u7247","message.nextImage":"\u4E0B\u4E00\u5F20\u56FE\u7247","message.imagePosition":"\u7B2C {current} \u5F20\uFF0C\u5171 {total} \u5F20","message.imageUnavailable":"\u56FE\u7247\u65E0\u6CD5\u52A0\u8F7D","message.attachFiles":"{count} \u4E2A\u6587\u4EF6","message.fileCount":"{count} \u4E2A\u6587\u4EF6","message.quote":"\u5F15\u7528","message.removeQuote":"\u5220\u9664\u5F15\u7528","message.replyingTo":"\u6B63\u5728\u56DE\u590D {author}","message.quotedFrom":"\u5F15\u7528\u81EA {author}","message.editAsNew":"\u7F16\u8F91","message.you":"\u4F60","input.upload":"\u4E0A\u4F20\u6587\u4EF6","input.placeholder":"\u8F93\u5165\u6D88\u606F...","input.send":"\u53D1\u9001","input.stopExecution":"\u505C\u6B62\u6267\u884C","chatInput.upload":"\u4E0A\u4F20\u6587\u4EF6","chatInput.uploading":"\u6B63\u5728\u4E0A\u4F20\u2026","chatInput.uploadFailed":"\u4E0A\u4F20\u5931\u8D25","chatInput.retryUpload":"\u91CD\u8BD5","chatInput.removeAttachment":"\u79FB\u9664\u9644\u4EF6","chatInput.placeholder":"\u8F93\u5165\u6D88\u606F...","chatInput.send":"\u53D1\u9001","chatInput.stop":"\u505C\u6B62\u6267\u884C","tools.thinking":"\u601D\u8003\u4E2D...","tools.read":"\u6B63\u5728\u8BFB\u53D6\u6587\u4EF6","tools.write":"\u6B63\u5728\u5199\u5165\u6587\u4EF6","tools.edit":"\u6B63\u5728\u7F16\u8F91\u6587\u4EF6","tools.bash":"\u6B63\u5728\u6267\u884C\u547D\u4EE4","tools.glob":"\u6B63\u5728\u641C\u7D22\u6587\u4EF6","tools.grep":"\u6B63\u5728\u641C\u7D22\u5185\u5BB9","tools.task":"\u6B63\u5728\u6267\u884C\u4EFB\u52A1","tools.webFetch":"\u6B63\u5728\u83B7\u53D6\u7F51\u9875","tools.webSearch":"\u6B63\u5728\u641C\u7D22\u7F51\u7EDC","tools.todoWrite":"\u6B63\u5728\u66F4\u65B0\u4EFB\u52A1","tools.executing":"\u6B63\u5728\u6267\u884C {name}","status.thinking":"\u601D\u8003\u4E2D...","status.reading":"\u6B63\u5728\u8BFB\u53D6\u6587\u4EF6","status.writing":"\u6B63\u5728\u5199\u5165\u6587\u4EF6","status.editing":"\u6B63\u5728\u7F16\u8F91\u6587\u4EF6","status.executing":"\u6B63\u5728\u6267\u884C\u547D\u4EE4","status.searchingFiles":"\u6B63\u5728\u641C\u7D22\u6587\u4EF6","status.searchingContent":"\u6B63\u5728\u641C\u7D22\u5185\u5BB9","status.executingTask":"\u6B63\u5728\u6267\u884C\u4EFB\u52A1","status.fetching":"\u6B63\u5728\u83B7\u53D6\u7F51\u9875","status.searching":"\u6B63\u5728\u641C\u7D22\u7F51\u7EDC","status.updatingTasks":"\u6B63\u5728\u66F4\u65B0\u4EFB\u52A1","status.executingTool":"\u6B63\u5728\u6267\u884C {name}","header.compacting":"\u6B63\u5728\u538B\u7F29\u4E0A\u4E0B\u6587...","header.compacted":"\u4E0A\u4E0B\u6587\u538B\u7F29\u5B8C\u6210","chatHeader.newConv":"\u4F1A\u8BDD","chatHeader.compacting":"\u6B63\u5728\u538B\u7F29\u4E0A\u4E0B\u6587...","chatHeader.compactDone":"\u4E0A\u4E0B\u6587\u538B\u7F29\u5B8C\u6210","chatHeader.compact":"\u538B\u7F29\u4E0A\u4E0B\u6587","chatHeader.resume":"\u6062\u590D\u4F1A\u8BDD","chatHeader.refresh":"\u5237\u65B0\u6D88\u606F","chatHeader.reloadPage":"\u5237\u65B0\u9875\u9762","chatHeader.clear":"\u6E05\u7A7A\u6D88\u606F","chatHeader.clearing":"\u6B63\u5728\u6E05\u7A7A\u4E0A\u4E0B\u6587...","chatHeader.clearDone":"\u4E0A\u4E0B\u6587\u5DF2\u6E05\u7A7A","chatHeader.confirmClear":"\u786E\u5B9A\u8981\u6E05\u7A7A\u5F53\u524D\u4F1A\u8BDD\u7684\u6240\u6709\u6D88\u606F\u5417\uFF1F","chatHeader.mcpConfig":"MCP \u670D\u52A1\u5668\u914D\u7F6E","chatHeader.mcpNeedRestart":"\u66F4\u6539\u5C06\u5728\u91CD\u542F\u4F1A\u8BDD\u540E\u751F\u6548\u3002","chatHeader.expertPanel":"\u5E2E\u5E2E\u56E2","chatHeader.subAgentPanel":"\u5B50\u4EE3\u7406","settings.close":"\u5173\u95ED\u8BBE\u7F6E","settings.tabs.account":"\u8D26\u53F7","settings.tabs.security":"\u5B89\u5168","settings.tabs.general":"\u901A\u7528","settings.tabs.sandbox":"Sandbox","settings.tabs.invitations":"\u9080\u8BF7","auth.sessionExpired":"\u767B\u5F55\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55\u3002","settings.sandbox.description":"\u8FD0\u884C\u5728\u5408\u683C\u4E13\u7528 Host \u4E0A\u7684\u6301\u4E45\u5316\u6258\u7BA1 Yeaft Agent\u3002","settings.sandbox.agentName":"Agent \u540D\u79F0","settings.sandbox.sizeLabel":"\u89C4\u683C","settings.sandbox.enable":"\u542F\u7528 Sandbox","settings.sandbox.creating":"\u6B63\u5728\u8BBE\u7F6E\u2026","settings.sandbox.start":"\u542F\u52A8","settings.sandbox.stop":"\u505C\u6B62","settings.sandbox.retry":"\u91CD\u8BD5","settings.sandbox.remove":"\u79FB\u9664","settings.sandbox.removeConfirm":"\u6C38\u4E45\u79FB\u9664\u6B64 Sandbox\uFF0C\u5E76\u5220\u9664 home \u548C workspace \u6570\u636E\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002","settings.sandbox.size.small":"\u5C0F\u578B","settings.sandbox.size.normal":"\u6807\u51C6","settings.sandbox.state.reserving":"\u6B63\u5728\u8BBE\u7F6E","settings.sandbox.state.provisioning":"\u6B63\u5728\u51C6\u5907 Sandbox","settings.sandbox.state.starting":"\u6B63\u5728\u542F\u52A8","settings.sandbox.state.waiting_for_agent":"\u6B63\u5728\u7B49\u5F85 Agent","settings.sandbox.state.stopping":"\u6B63\u5728\u505C\u6B62","settings.sandbox.state.removing":"\u6B63\u5728\u79FB\u9664","settings.sandbox.state.removed":"\u5DF2\u79FB\u9664","settings.sandbox.state.running":"\u8FD0\u884C\u4E2D","settings.sandbox.state.stopped":"\u5DF2\u505C\u6B62","settings.sandbox.state.failed":"\u5931\u8D25","settings.sandbox.state.remove_failed":"\u79FB\u9664\u5931\u8D25","settings.sandbox.state.recovery_required":"\u9700\u8981\u6062\u590D\u5904\u7406","settings.sandbox.stage.reserving_capacity":"\u6B63\u5728\u9884\u7559\u5BB9\u91CF","settings.sandbox.stage.starting":"\u6B63\u5728\u542F\u52A8 Sandbox","settings.sandbox.stage.stopping":"\u6B63\u5728\u505C\u6B62 Sandbox","settings.sandbox.stage.retrying":"\u6B63\u5728\u91CD\u8BD5\u64CD\u4F5C","settings.sandbox.stage.removing":"\u6B63\u5728\u79FB\u9664 Sandbox","settings.sandbox.stage.complete":"\u5DF2\u5B8C\u6210","settings.sandbox.stage.dispatching":"\u6B63\u5728\u5B89\u5168\u5206\u53D1","settings.sandbox.stage.capacity_rejected":"\u6B63\u5728\u7B49\u5F85\u5BB9\u91CF","settings.sandbox.unavailable.disabled":"\u6B64\u90E8\u7F72\u5C1A\u672A\u542F\u7528 Sandbox\u3002","settings.sandbox.unavailable.notEntitled":"\u6B64\u8D26\u53F7\u6682\u4E0D\u53EF\u4F7F\u7528 Sandbox\u3002","settings.sandbox.unavailable.capacityUnavailable":"Sandbox \u6682\u65F6\u4E0D\u53EF\u7528\u3002","settings.sandbox.error.SANDBOX_LOAD_FAILED":"\u65E0\u6CD5\u52A0\u8F7D Sandbox \u72B6\u6001\u3002\u8BF7\u5173\u95ED\u8BBE\u7F6E\u540E\u91CD\u8BD5\u3002","settings.sandbox.error.SANDBOX_CREATE_FAILED":"\u65E0\u6CD5\u521B\u5EFA Sandbox\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002","settings.sandbox.error.SANDBOX_ACTION_FAILED":"\u65E0\u6CD5\u5B89\u6392 Sandbox \u64CD\u4F5C\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002","settings.sandbox.error.SANDBOX_OPERATION_TIMEOUT":"\u64CD\u4F5C\u5DF2\u8D85\u65F6\uFF0C\u8BF7\u91CD\u8BD5\u6216\u79FB\u9664 Sandbox\u3002","settings.sandbox.error.SANDBOX_RUNTIME_FAILED":"Sandbox \u8FD0\u884C\u65F6\u62A5\u544A\u5931\u8D25\u3002","settings.account.username":"\u7528\u6237\u540D","settings.account.role":"\u89D2\u8272","settings.account.email":"\u90AE\u7BB1","settings.account.emailNotSet":"\u672A\u8BBE\u7F6E","settings.account.profileLoadFailed":"\u8D26\u53F7\u8D44\u6599\u52A0\u8F7D\u5931\u8D25","settings.account.logout":"\u9000\u51FA\u767B\u5F55","settings.account.roleAdmin":"\u7BA1\u7406\u5458","settings.account.rolePro":"Pro","settings.account.linkedAccounts":"\u5DF2\u5173\u8054\u8D26\u6237","settings.account.linkedDesc":"\u5173\u8054\u7B2C\u4E09\u65B9\u767B\u5F55\u540E\uFF0C\u4F7F\u7528\u4EFB\u610F\u4E00\u79CD\u65B9\u5F0F\u90FD\u80FD\u767B\u5F55\u6B64\u8D26\u53F7\u3002","settings.account.bind":"\u7ED1\u5B9A","settings.account.unbind":"\u89E3\u7ED1","settings.account.linked":"\u5DF2\u7ED1\u5B9A","settings.account.providerDisabled":"\u672A\u914D\u7F6E","settings.account.cantUnbindLast":"\u4E0D\u80FD\u89E3\u7ED1\u552F\u4E00\u7684\u767B\u5F55\u65B9\u5F0F","settings.account.unbindFailed":"\u89E3\u7ED1\u5931\u8D25\uFF1A{error}","settings.account.bindFailed":"\u7ED1\u5B9A\u5931\u8D25","settings.account.ssoBoundMsg":"\u5DF2\u6210\u529F\u7ED1\u5B9A {provider}\u3002","settings.account.ssoConflictMsg":"\u8BE5 {provider} \u8D26\u53F7\u5DF2\u88AB\u5176\u4ED6\u7528\u6237\u7ED1\u5B9A\u3002","settings.account.providerMicrosoft":"Microsoft","settings.account.providerGithub":"GitHub","settings.account.providerGoogle":"Google","settings.account.providerWechat":"\u5FAE\u4FE1","settings.account.providerAlipay":"\u652F\u4ED8\u5B9D","settings.security.agentKey":"Agent \u5BC6\u94A5","settings.security.agentKeyDesc":"\u7528\u4E8E Agent \u8FDE\u63A5\u8BA4\u8BC1\u7684\u5171\u4EAB\u5BC6\u94A5","settings.security.agentSetupCommands":"Agent \u63A5\u5165\u547D\u4EE4","settings.security.agentCmdInstall":"\u5B89\u88C5 Agent","settings.security.agentCmdService":"\u8FD0\u884C Agent server","settings.security.agentCmdNeedsSecret":"\u8BF7\u5148\u751F\u6210 Agent \u5BC6\u94A5\uFF0C\u4EE5\u521B\u5EFA\u5305\u542B server \u5730\u5740\u548C\u5BC6\u94A5\u7684\u547D\u4EE4\u3002","settings.security.agentCmdLlm":"Copilot \u624B\u52A8\u515C\u5E95","settings.security.agentCmdLlmDesc":"\u5148\u8FD0\u884C\u5B89\u88C5\u547D\u4EE4\uFF1B\u5982\u679C\u672C\u673A\u5DF2\u6709 GitHub Copilot token\uFF0CYeaft \u4F1A\u81EA\u52A8\u914D\u7F6E github-copilot/gpt-5.5\u3002Copilot \u547D\u4EE4\u53EA\u4F5C\u4E3A\u515C\u5E95\u4F7F\u7528\u3002","settings.security.none":"\u65E0","settings.security.show":"\u663E\u793A","settings.security.hide":"\u9690\u85CF","settings.security.generateKey":"\u751F\u6210\u5BC6\u94A5","settings.security.resetKey":"\u91CD\u7F6E\u5BC6\u94A5","settings.security.resetting":"\u91CD\u7F6E\u4E2D...","settings.security.resetWarning":"\u91CD\u7F6E\u540E\u6240\u6709 Agent \u9700\u91CD\u65B0\u914D\u7F6E","settings.security.changePassword":"\u4FEE\u6539\u5BC6\u7801","settings.security.currentPassword":"\u5F53\u524D\u5BC6\u7801","settings.security.newPassword":"\u65B0\u5BC6\u7801\uFF08\u81F3\u5C116\u4F4D\uFF09","settings.security.confirmPassword":"\u786E\u8BA4\u65B0\u5BC6\u7801","settings.security.changeBtn":"\u4FEE\u6539\u5BC6\u7801","settings.security.changing":"\u4FEE\u6539\u4E2D...","settings.security.enterCurrentPwd":"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801","settings.security.newPwdMin":"\u65B0\u5BC6\u7801\u81F3\u5C116\u4F4D","settings.security.pwdMismatch":"\u4E24\u6B21\u5BC6\u7801\u4E0D\u4E00\u81F4","settings.security.pwdChanged":"\u5BC6\u7801\u4FEE\u6539\u6210\u529F","settings.security.setPassword":"\u8BBE\u7F6E\u5BC6\u7801","settings.security.setPasswordDesc":"\u4F60\u76EE\u524D\u901A\u8FC7 SSO \u767B\u5F55\uFF0C\u5C1A\u672A\u8BBE\u7F6E\u5BC6\u7801\u3002\u8BBE\u7F6E\u540E\u5373\u53EF\u4F7F\u7528\u7528\u6237\u540D + \u5BC6\u7801\u767B\u5F55\u3002","settings.security.setBtn":"\u8BBE\u7F6E\u5BC6\u7801","settings.security.pwdSet":"\u5BC6\u7801\u8BBE\u7F6E\u6210\u529F","settings.security.deleteAccount":"\u6CE8\u9500\u8D26\u6237","settings.security.deleteAccountDesc":"\u6C38\u4E45\u5220\u9664\u4F60\u7684\u8D26\u6237\u548C\u6240\u6709\u76F8\u5173\u6570\u636E\u3002\u6B64\u64CD\u4F5C\u4E0D\u53EF\u6062\u590D\u3002","settings.security.deleteBtn":"\u6CE8\u9500\u8D26\u6237","settings.security.deleteConfirmBtn":"\u786E\u8BA4\u5220\u9664","settings.security.deleteConfirmPlaceholder":"\u8F93\u5165 DELETE \u4EE5\u786E\u8BA4","settings.security.deleteConfirmRequired":"\u8BF7\u8F93\u5165 DELETE \u4EE5\u786E\u8BA4\u6CE8\u9500\u8D26\u6237","settings.security.deleteFailed":"\u6CE8\u9500\u8D26\u6237\u5931\u8D25","settings.security.deleting":"\u6CE8\u9500\u4E2D...","settings.general.theme":"\u4E3B\u9898","settings.general.lightTheme":"\u6D45\u8272","settings.general.darkTheme":"\u6DF1\u8272","settings.general.language":"\u8BED\u8A00","settings.general.telemetry":"\u6027\u80FD\u9065\u6D4B","settings.general.telemetryDesc":"\u5728\u672C\u5730\u6279\u91CF\u8BB0\u5F55\u8017\u65F6\u8BCA\u65AD\uFF1Btrace \u5185\u5BB9\u4E0D\u4F1A\u53D1\u9001\u5230\u670D\u52A1\u5668\u3002","settings.general.telemetryOn":"\u5F00\u542F","settings.general.telemetryOff":"\u5173\u95ED","settings.general.telemetryRawLimit":"Provider \u539F\u59CB\u54CD\u5E94\u4E0A\u9650\uFF08\u5B57\u8282\uFF09","settings.invite.create":"\u521B\u5EFA\u9080\u8BF7\u7801","settings.invite.normalUser":"\u666E\u901A\u7528\u6237","settings.invite.proUser":"Pro \u7528\u6237","settings.invite.createBtn":"\u521B\u5EFA\u9080\u8BF7\u7801","settings.invite.creating":"\u521B\u5EFA\u4E2D...","settings.invite.list":"\u9080\u8BF7\u7801\u5217\u8868","settings.invite.used":"\u5DF2\u4F7F\u7528","settings.invite.expired":"\u5DF2\u8FC7\u671F","settings.invite.available":"\u53EF\u7528","settings.invite.usedBy":"\u4F7F\u7528\u8005: {user}","settings.invite.expiredAt":"\u8FC7\u671F\u4E8E: {time}","settings.invite.expiresAt":"\u6709\u6548\u81F3: {time}","settings.invite.noInvites":"\u6682\u65E0\u9080\u8BF7\u7801","settings.msg.copiedClipboard":"\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F","settings.msg.copyFailed":"\u590D\u5236\u5931\u8D25","settings.msg.keyReset":"\u5BC6\u94A5\u5DF2\u91CD\u7F6E","settings.msg.resetFailed":"\u91CD\u7F6E\u5931\u8D25","settings.msg.changeFailed":"\u4FEE\u6539\u5931\u8D25","settings.msg.inviteCreated":"\u9080\u8BF7\u7801\u5DF2\u521B\u5EFA","settings.msg.createFailed":"\u521B\u5EFA\u5931\u8D25","settings.msg.inviteCopied":"\u9080\u8BF7\u7801\u5DF2\u590D\u5236","settings.msg.inviteDeleted":"\u9080\u8BF7\u7801\u5DF2\u5220\u9664","settings.msg.deleteFailed":"\u5220\u9664\u5931\u8D25","settings.tabs.llm":"LLM","settings.tabs.yeaft":"Yeaft","settings.yeaft.tabs.vp":"VP \u5E93","settings.yeaft.tabs.search":"\u641C\u7D22","settings.yeaft.tabs.mcp":"MCP","settings.mcp.title":"MCP \u670D\u52A1\u5668","settings.mcp.description":"\u901A\u8FC7 Model Context Protocol \u7ED9 Yeaft \u63A5\u5165\u66F4\u591A\u5DE5\u5177\u3002\u914D\u7F6E\u5199\u5165 agent \u4E0A\u7684 ~/.yeaft/config.json\uFF0C\u5DE5\u5177\u4F1A\u4EE5 mcp__<server>__<tool> \u7684\u5F62\u5F0F\u51FA\u73B0\u5728 LLM \u5DE5\u5177\u5217\u8868\u91CC\u3002","settings.mcp.reloadAll":"\u5168\u90E8\u91CD\u8FDE","settings.mcp.reloadOne":"\u91CD\u65B0\u8FDE\u63A5\u6B64\u670D\u52A1\u5668","settings.mcp.loading":"\u5904\u7406\u4E2D\u2026","settings.mcp.connected":"\u5DF2\u8FDE\u63A5","settings.mcp.disconnected":"\u672A\u8FDE\u63A5","settings.mcp.tools":"\u4E2A\u5DE5\u5177","settings.mcp.remove":"\u79FB\u9664","settings.mcp.empty":"\u8FD8\u6CA1\u6709\u914D\u7F6E MCP \u670D\u52A1\u5668\uFF0C\u53EF\u4EE5\u5728\u4E0B\u65B9\u6DFB\u52A0\u4E00\u4E2A\u3002","settings.mcp.addServer":"\u6DFB\u52A0\u670D\u52A1\u5668","settings.mcp.addServerDesc":"\u5927\u90E8\u5206 MCP \u670D\u52A1\u5668\u662F\u672C\u5730\u547D\u4EE4 \u2014 Yeaft \u4F1A\u901A\u8FC7 stdio \u542F\u52A8\u5B83\u5E76\u81EA\u52A8\u53D1\u73B0\u53EF\u7528\u5DE5\u5177\u3002","settings.mcp.serverName":"\u540D\u79F0","settings.mcp.command":"\u547D\u4EE4","settings.mcp.args":"\u53C2\u6570","settings.mcp.argsPlaceholder":"\u4F8B\u5982\uFF1A-y @modelcontextprotocol/server-filesystem /tmp","settings.mcp.env":"\u73AF\u5883\u53D8\u91CF","settings.mcp.envPlaceholder":"\u6BCF\u884C\u4E00\u4E2A KEY=value\uFF0C# \u5F00\u5934\u7684\u884C\u4F1A\u88AB\u5FFD\u7565\u3002","settings.mcp.saving":"\u4FDD\u5B58\u4E2D\u2026","settings.mcp.add":"\u6DFB\u52A0","settings.mcp.cancel":"\u6E05\u7A7A","settings.mcp.connectFailed":"\u5DF2\u4FDD\u5B58\u4F46\u8FDE\u63A5\u5931\u8D25","settings.mcp.addSuccess":"\u670D\u52A1\u5668\u5DF2\u6DFB\u52A0","settings.mcp.removeSuccess":"\u670D\u52A1\u5668\u5DF2\u79FB\u9664","settings.mcp.reloadSuccess":"\u5DF2\u8BF7\u6C42\u91CD\u8FDE","settings.mcp.confirmRemove":'\u79FB\u9664 MCP \u670D\u52A1\u5668 "{name}"\uFF1F\u4E0B\u4E00\u4E2A LLM turn \u8D77\u5B83\u7684\u5DE5\u5177\u5C06\u4E0D\u518D\u53EF\u89C1\u3002',"settings.mcp.errors.nameRequired":"\u8BF7\u586B\u5199\u540D\u79F0","settings.mcp.errors.nameFormat":"\u540D\u79F0\u53EA\u80FD\u5305\u542B\u5C0F\u5199\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u77ED\u6A2A\u7EBF\u548C\u4E0B\u5212\u7EBF","settings.mcp.errors.commandRequired":"\u8BF7\u586B\u5199\u547D\u4EE4","settings.mcp.errors.argsParse":"\u53C2\u6570\u89E3\u6790\u5931\u8D25","settings.mcp.errors.envParse":"\u73AF\u5883\u53D8\u91CF\u89E3\u6790\u5931\u8D25","yeaft.session.title":"\u4F1A\u8BDD","yeaft.session.new":"+ \u65B0\u5EFA\u4F1A\u8BDD","yeaft.session.create.title":"\u65B0\u5EFA\u4F1A\u8BDD","yeaft.session.create.subtitle":"\u9009\u62E9\u8FD0\u884C\u4F4D\u7F6E\u548C\u5904\u7406\u4F1A\u8BDD\u7684 Provider\u3002","yeaft.session.create.close":"\u5173\u95ED","yeaft.session.create.nameLabel":"\u540D\u79F0","yeaft.session.create.namePlaceholder":"\u4F1A\u8BDD\u540D\u79F0\uFF08\u53EF\u9009\uFF09","yeaft.session.create.workDirLabel":"\u5DE5\u4F5C\u76EE\u5F55","yeaft.session.create.agentLabel":"Agent","yeaft.session.create.vpPicker":"\u9009\u62E9 VP","yeaft.session.create.vpNone":"\u672A\u9009\u62E9 VP","yeaft.session.create.vpCount":"\u5DF2\u9009 {n} \u4E2A VP","yeaft.session.create.untitled":"\u672A\u547D\u540D\u4F1A\u8BDD","yeaft.session.create.rosterEmpty":"\u6682\u65E0\u53EF\u7528 VP \u2014 \u8BF7\u5148\u5230\u89D2\u8272\u5E93\u521B\u5EFA\u3002","yeaft.session.create.rosterLoading":"VP \u52A0\u8F7D\u4E2D\u2026","yeaft.session.create.rosterError":"\u65E0\u6CD5\u4ECE\u5F53\u524D Agent \u52A0\u8F7D VP\u3002","yeaft.session.create.rosterRetry":"\u91CD\u8BD5","yeaft.vp.domain.general":"\u901A\u7528\u4E0E\u534F\u4F5C","yeaft.vp.domain.productDesign":"\u4EA7\u54C1\u4E0E\u4F53\u9A8C\u8BBE\u8BA1","yeaft.vp.domain.softwareSystems":"\u8F6F\u4EF6\u4E0E\u7CFB\u7EDF","yeaft.vp.domain.securityReliability":"\u5B89\u5168\u4E0E\u53EF\u9760\u6027","yeaft.vp.domain.scienceAnalysis":"\u79D1\u5B66\u4E0E\u5206\u6790","yeaft.vp.domain.philosophyPsychology":"\u54F2\u5B66\u4E0E\u5FC3\u7406","yeaft.vp.domain.strategyHistory":"\u6218\u7565\u4E0E\u5386\u53F2","yeaft.vp.domain.businessManagement":"\u5546\u4E1A\u4E0E\u7BA1\u7406","yeaft.vp.domain.artsCulture":"\u827A\u672F\u4E0E\u6587\u5316","yeaft.vp.domain.other":"\u5176\u4ED6\u9886\u57DF","yeaft.vp.domain.custom":"\u81EA\u5B9A\u4E49 VP","yeaft.session.create.defaultVpHint":"\u5F53\u6CA1\u6709 @ \u63D0\u53CA\u65F6\u9ED8\u8BA4\u56DE\u7B54\u7684 VP\u3002","yeaft.session.create.folderLabel":"\u{1F4C1} \u5DE5\u4F5C\u76EE\u5F55","yeaft.session.create.sessionLabel":"\u{1F4AC} \u6B64\u76EE\u5F55\u4E0B\u7684 session","yeaft.session.create.noWorkDirs":"\u8FD8\u6CA1\u6709\u4EFB\u4F55\u4F1A\u8BDD \u2014 \u5728\u4E0A\u65B9\u9009\u62E9\u6216\u8F93\u5165\u5DE5\u4F5C\u76EE\u5F55\u5F00\u59CB\u3002","yeaft.session.create.back":"\u8FD4\u56DE","yeaft.session.create.creating":"\u521B\u5EFA\u4E2D\u2026","yeaft.session.create.submit":"\u521B\u5EFA","yeaft.onboarding.ariaLabel":"Yeaft \u4E0A\u624B\u8BF4\u660E","yeaft.onboarding.topbarTitle":"\u5F00\u59CB\u4F7F\u7528 Yeaft","yeaft.onboarding.eyebrow":"Yeaft \u4E0A\u624B\u6307\u5357","yeaft.onboarding.title":"\u5148\u8FDE\u63A5 Agent\uFF0C\u518D\u5F00\u59CB\u4F1A\u8BDD","yeaft.onboarding.subtitle":"\u5728\u8D1F\u8D23\u6267\u884C\u5DE5\u5177\u7684\u673A\u5668\u4E0A\u76F4\u63A5\u8FD0\u884C\u4E0B\u9762\u7684\u547D\u4EE4\u3002agent secret \u5982\u679C\u4E0D\u5B58\u5728\uFF0C\u4F1A\u81EA\u52A8\u4E3A\u5F53\u524D\u8D26\u53F7\u751F\u6210\u3002","yeaft.onboarding.createSession":"\u521B\u5EFA\u6216\u6062\u590D Session","yeaft.onboarding.configureLlm":"\u6253\u5F00 LLM \u8BBE\u7F6E","yeaft.onboarding.secretLoading":"\u6B63\u5728\u751F\u6210 agent secret\u2026","yeaft.onboarding.secretError":"\u52A0\u8F7D agent secret \u5931\u8D25\u3002","yeaft.onboarding.secretPending":"<\u6B63\u5728\u52A0\u8F7D-agent-secret>","yeaft.onboarding.installTitle":"\u5B89\u88C5 yeaft-agent","yeaft.onboarding.installDesc":"\u5B89\u88C5\u547D\u4EE4\u884C Agent \u5305\u3002","yeaft.onboarding.connectTitle":"\u8FDE\u63A5\u8FD9\u4E2A Agent","yeaft.onboarding.connectDesc":"\u4E0B\u9762\u7684\u547D\u4EE4\u5DF2\u7ECF\u5E26\u4E0A\u5F53\u524D server URL \u548C\u81EA\u52A8\u751F\u6210\u7684 secret\u3002","yeaft.onboarding.llmTitle":"\u4F7F\u7528 GitHub Copilot","yeaft.onboarding.llmDesc":"\u5148\u767B\u5F55 GitHub CLI\uFF0C\u7136\u540E\u628A gpt-5.5 \u8BBE\u4E3A Yeaft \u9ED8\u8BA4\u6A21\u578B\u3002","yeaft.restore.modal.empty":"\u6B64\u76EE\u5F55\u4E0B\u6CA1\u6709 yeaft session","yeaft.restore.modal.scanError":"\u626B\u63CF\u5931\u8D25: {message}","yeaft.restore.modal.restoreError":"\u6062\u590D\u5931\u8D25: {message}","settings.llm.noAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A Agent \u4EE5\u7BA1\u7406 LLM \u914D\u7F6E\u3002","settings.llm.agentOffline":"Agent \u5F53\u524D\u79BB\u7EBF\uFF0C\u65E0\u6CD5\u52A0\u8F7D LLM \u914D\u7F6E\u3002\u8BF7\u7B49\u5F85 Agent \u4E0A\u7EBF\u540E\u91CD\u8BD5\u3002","settings.llm.loading":"\u6B63\u5728\u52A0\u8F7D\u914D\u7F6E...","settings.llm.loadError":"\u52A0\u8F7D\u914D\u7F6E\u5931\u8D25","settings.llm.configureAgent":"\u914D\u7F6E\u5F53\u524D Agent \u7684 LLM","settings.llm.configureMenu":"\u8BBE\u7F6E LLM","settings.llm.simpleCopilotTitle":"\u63A8\u8350\uFF1AGitHub Copilot","settings.llm.useGitHubCopilot":"\u4F7F\u7528 GitHub Copilot","settings.llm.refreshingModels":"\u6B63\u5728\u5237\u65B0\u6A21\u578B...","settings.llm.managedCopilotTitle":"\u6258\u7BA1\u7684 GitHub Copilot","settings.llm.managedCopilotDesc":"Base URL\u3001\u8BA4\u8BC1\u3001\u6A21\u578B\u76EE\u5F55\u548C\u6BCF\u4E2A\u6A21\u578B\u7684 API \u534F\u8BAE\u90FD\u81EA\u52A8\u7BA1\u7406\u3002Claude \u6A21\u578B\u8D70 Anthropic Messages\uFF1BGPT/o \u6A21\u578B\u8D70 OpenAI Responses\u3002","settings.llm.providersTitle":"\u670D\u52A1\u5546","settings.llm.testFailed":"\u8FDE\u63A5\u6D4B\u8BD5\u5931\u8D25","settings.llm.saveSuccess":"LLM \u8BBE\u7F6E\u5DF2\u4FDD\u5B58","settings.llm.saveFailed":"\u4FDD\u5B58 LLM \u8BBE\u7F6E\u5931\u8D25","settings.llm.presets.title":"\u5FEB\u901F\u914D\u7F6E","settings.llm.providersDesc":"\u9009\u62E9\u4E00\u4E2A\u670D\u52A1\u5546\uFF0C\u4FDD\u5B58\u540E\u5373\u53EF\u5728 Session \u4E2D\u4F7F\u7528\u3002","settings.llm.agentProviders":"\u5F53\u524D agent providers","settings.llm.agentBadge":"\u5F53\u524D agent","settings.llm.addProvider":"\u6DFB\u52A0\u670D\u52A1\u5546","settings.llm.addFromPreset":"\u4ECE\u76EE\u5F55\u6DFB\u52A0","settings.llm.preset.title":"\u670D\u52A1\u5546\u76EE\u5F55\uFF08models.dev\uFF09","settings.llm.preset.refresh":"\u5237\u65B0\u76EE\u5F55","settings.llm.preset.loading":"\u52A0\u8F7D\u76EE\u5F55\u2026","settings.llm.preset.empty":"\u76EE\u5F55\u4E3A\u7A7A\u3002","settings.llm.preset.pickProvider":"\u5728\u5DE6\u4FA7\u9009\u62E9\u4E00\u4E2A\u670D\u52A1\u5546\u4EE5\u67E5\u770B\u6A21\u578B\u3002","settings.llm.preset.filterProviders":"\u8FC7\u6EE4\u670D\u52A1\u5546\u2026","settings.llm.preset.filterModels":"\u8FC7\u6EE4\u6A21\u578B\u2026","settings.llm.preset.selectAll":"\u5168\u9009","settings.llm.preset.selectNone":"\u6E05\u7A7A","settings.llm.preset.cancel":"\u53D6\u6D88","settings.llm.preset.add":"\u6DFB\u52A0\u5230\u670D\u52A1\u5546\u5217\u8868","settings.llm.preset.fetchedAt":"\u76EE\u5F55\u5DF2\u66F4\u65B0 {minutes} \u5206\u949F","settings.llm.addModel":"\u6DFB\u52A0\u6A21\u578B","settings.llm.removeModel":"\u79FB\u9664\u6A21\u578B","settings.llm.providerName":"\u540D\u79F0","settings.llm.providerNamePlaceholder":"\u4F8B\u5982 my-proxy","settings.llm.baseUrl":"Base URL","settings.llm.baseUrlPlaceholder":"\u4F8B\u5982 http://localhost:6628/v1","settings.llm.apiKey":"API Key","settings.llm.apiKeyPlaceholder":"\u8F93\u5165 API Key","settings.llm.protocol":"\u534F\u8BAE","settings.llm.protocolOpenAI":"OpenAI \u517C\u5BB9","settings.llm.protocolOpenAIResponses":"OpenAI Responses (GPT-5)","settings.llm.protocolAnthropic":"Anthropic \u539F\u751F","settings.llm.protocolHint.anthropic":"Claude \u539F\u751F Messages API\u3002","settings.llm.protocolHint.openai":"Chat Completions /v1/chat/completions \u2014 GPT-4 \u53CA\u5927\u591A\u6570\u517C\u5BB9\u4EE3\u7406\u3002","settings.llm.protocolHint.openaiResponses":"Responses API /v1/responses \u2014 GPT-5 \u7CFB\u5217\u5FC5\u987B\u3002","settings.llm.modelCtxPlaceholder":"\u4E0A\u4E0B\u6587","settings.llm.modelMaxPlaceholder":"\u8F93\u51FA","settings.llm.models":"\u5019\u9009\u6A21\u578B ID","settings.llm.modelsPlaceholder":"\u6A21\u578B ID\uFF0C\u9017\u53F7\u6216\u6362\u884C\u5206\u9694\uFF0C\u4F8B\u5982 claude-sonnet-4-20250514, gpt-5","settings.llm.modelsHint":"\u9017\u53F7\u6216\u6362\u884C\u5206\u9694\u3002","settings.llm.removeProvider":"\u79FB\u9664","settings.llm.modelSelectionTitle":"\u6A21\u578B\u9009\u62E9","settings.llm.modelSelectionDesc":"\u9009\u62E9\u9ED8\u8BA4\u6A21\u578B\u3002","settings.llm.primaryModel":"\u4E3B\u6A21\u578B","settings.llm.primaryModelDesc":"\u7528\u4E8E\u7528\u6237\u5BF9\u8BDD","settings.llm.fastModel":"\u5FEB\u901F\u6A21\u578B","settings.llm.fastModelDesc":"\u7528\u4E8E\u5185\u90E8\u4EFB\u52A1\uFF08\u8BB0\u5FC6\u3001\u603B\u7ED3\uFF09","settings.llm.noModels":"\u6682\u65E0\u53EF\u7528\u6A21\u578B\u3002\u8BF7\u5148\u6DFB\u52A0\u670D\u52A1\u5546\u3002","settings.llm.selectModel":"\u9009\u62E9\u6A21\u578B...","settings.llm.debugTitle":"\u8C03\u8BD5\u8F68\u8FF9","settings.llm.debugDesc":"\u6309 Agent \u5F00\u542F\u9010\u8F6E\u8C03\u8BD5\u8F68\u8FF9\u6536\u96C6\uFF08\u7CFB\u7EDF\u63D0\u793A\u8BCD\u3001LLM \u8C03\u7528\u3001\u5DE5\u5177\u8F7D\u8377\uFF09\u3002","settings.llm.enableDebug":"\u542F\u7528\u8C03\u8BD5\u8F68\u8FF9","settings.llm.save":"\u4FDD\u5B58\u66F4\u6539","settings.llm.saving":"\u4FDD\u5B58\u4E2D...","settings.llm.saved":"\u914D\u7F6E\u5DF2\u4FDD\u5B58","settings.llm.savedRefreshWarning":"\u914D\u7F6E\u5DF2\u4FDD\u5B58\uFF0C\u4F46\u5B9E\u65F6\u6A21\u578B\u76EE\u5F55\u5237\u65B0\u5931\u8D25\uFF1A{error}","settings.llm.unsavedChanges":"\u6709\u672A\u4FDD\u5B58\u7684\u66F4\u6539","settings.llm.confirmRemoveProvider":"\u786E\u5B9A\u79FB\u9664\u6B64\u670D\u52A1\u5546\uFF1F","settings.llm.setupTitle":"\u8FDE\u63A5\u6A21\u578B","settings.llm.setupDesc":"\u63A8\u8350\u4F7F\u7528 GitHub Copilot\uFF1B\u4E5F\u53EF\u4EE5\u6DFB\u52A0\u81EA\u5DF1\u7684 API \u670D\u52A1\u5546\u3002","settings.llm.providerSectionHint":"\u53EA\u4FDD\u7559\u8FDE\u63A5\u6A21\u578B\u5FC5\u9700\u7684\u4FE1\u606F\u3002","settings.tabs.dashboard":"\u4EEA\u8868\u677F","settings.dashboard.totalUsers":"\u603B\u7528\u6237\u6570","settings.dashboard.onlineUsers":"\u5728\u7EBF\u7528\u6237","settings.dashboard.onlineAgents":"\u5728\u7EBFAgent","settings.dashboard.totalSessions":"\u603B\u4F1A\u8BDD\u6570","settings.dashboard.todayActive":"\u4ECA\u65E5\u6D3B\u8DC3","settings.dashboard.todayMessages":"\u4ECA\u65E5\u6D88\u606F","settings.dashboard.todayUserTurns":"\u4ECA\u65E5\u7528\u6237 Turn","settings.dashboard.totalTokens":"\u603B Token","settings.dashboard.tokenAccuracy":"\u6765\u81EA\u6A21\u578B\u670D\u52A1\u5546\u8FD4\u56DE\u7684\u5B9E\u9645\u7528\u91CF\uFF1B\u4ECE\u542F\u7528\u6309\u7528\u6237 Token \u7EDF\u8BA1\u7684\u7248\u672C\u5F00\u59CB\u7D2F\u8BA1\uFF0C\u4E14\u4E0D\u5305\u542B\u5FC3\u8DF3\u3002","settings.dashboard.agentTurns":"Agent Turn","settings.dashboard.agentSessions":"Agent Session","settings.dashboard.turns":"Turn","settings.dashboard.tokens":"Token","settings.dashboard.inputTokens":"\u8F93\u5165","settings.dashboard.outputTokens":"\u8F93\u51FA","settings.dashboard.cacheTokens":"\u7F13\u5B58","settings.dashboard.today":"\u4ECA\u5929","settings.dashboard.thisWeek":"\u672C\u5468","settings.dashboard.thisMonth":"\u672C\u6708","settings.dashboard.all":"\u5168\u90E8","settings.dashboard.userUsage":"\u7528\u6237\u7528\u91CF","settings.dashboard.agentList":"Agent \u5217\u8868","settings.dashboard.onlineUserList":"\u5728\u7EBF\u7528\u6237","settings.dashboard.refresh":"\u5237\u65B0","settings.dashboard.name":"\u540D\u79F0","settings.dashboard.messages":"\u6D88\u606F\u6570","settings.dashboard.userTurns":"\u7528\u6237 Turn \u6570","settings.dashboard.sessions":"\u4F1A\u8BDD\u6570","settings.dashboard.requests":"\u8BF7\u6C42\u6570","settings.dashboard.traffic":"\u6D41\u91CF","settings.dashboard.lastLogin":"\u6700\u540E\u767B\u5F55","settings.dashboard.status":"\u72B6\u6001","settings.dashboard.latency":"\u5EF6\u8FDF","settings.dashboard.version":"\u7248\u672C","settings.dashboard.owner":"\u6240\u6709\u8005","settings.dashboard.role":"\u89D2\u8272","settings.dashboard.agent":"Agent","settings.dashboard.online":"\u5728\u7EBF","settings.dashboard.offline":"\u79BB\u7EBF","settings.dashboard.noAgents":"\u6682\u65E0\u6CE8\u518C Agent","settings.dashboard.noUserData":"\u6682\u65E0\u7528\u6237\u6570\u636E","settings.dashboard.noOnlineUsers":"\u6682\u65E0\u5728\u7EBF\u7528\u6237","settings.dashboard.loading":"\u52A0\u8F7D\u4E2D...","settings.dashboard.error":"\u6570\u636E\u52A0\u8F7D\u5931\u8D25","settings.dashboard.ago":"{time}\u524D","settings.dashboard.loadMore":"\u52A0\u8F7D\u66F4\u591A\uFF08\u5269\u4F59 {remaining} \u6761\uFF09","workbench.maximize":"\u6700\u5927\u5316\u9762\u677F","workbench.restore":"\u8FD8\u539F\u9762\u677F","workbench.collapse":"\u6536\u8D77\u9762\u677F","theme.switchToLight":"\u5207\u6362\u5230\u6D45\u8272\u4E3B\u9898","theme.switchToDark":"\u5207\u6362\u5230\u6DF1\u8272\u4E3B\u9898","theme.toLight":"\u5207\u6362\u5230\u6D45\u8272\u4E3B\u9898","theme.toDark":"\u5207\u6362\u5230\u6DF1\u8272\u4E3B\u9898","terminal.splitH":"\u6C34\u5E73\u5206\u5C4F\uFF08\u5DE6\u53F3\uFF09","terminal.splitV":"\u5782\u76F4\u5206\u5C4F\uFF08\u4E0A\u4E0B\uFF09","terminal.close":"\u5173\u95ED\u5F53\u524D\u7EC8\u7AEF","terminal.autoCreate":"\u5207\u6362\u5230 Terminal \u6807\u7B7E\u65F6\u5C06\u81EA\u52A8\u521B\u5EFA\u7EC8\u7AEF","terminal.xtermError":"xterm.js \u672A\u52A0\u8F7D\uFF0C\u8BF7\u5237\u65B0\u9875\u9762","terminal.xtermNotLoaded":"xterm.js \u672A\u52A0\u8F7D\uFF0C\u8BF7\u5237\u65B0\u9875\u9762","terminal.mountError":"\u7EC8\u7AEF\u5BB9\u5668\u6302\u8F7D\u5931\u8D25","terminal.mountFailed":"\u7EC8\u7AEF\u5BB9\u5668\u6302\u8F7D\u5931\u8D25","terminal.createError":"\u7EC8\u7AEF\u521B\u5EFA\u5931\u8D25","terminal.createFailed":"\u7EC8\u7AEF\u521B\u5EFA\u5931\u8D25","terminal.error":"\u7EC8\u7AEF\u9519\u8BEF","git.selectFolder":"\u9009\u62E9\u6587\u4EF6\u5939","git.repoPath":"\u8F93\u5165 Git \u4ED3\u5E93\u8DEF\u5F84...","git.repoPathPlaceholder":"\u8F93\u5165 Git \u4ED3\u5E93\u8DEF\u5F84...","git.workDir":"Git \u5DE5\u4F5C\u76EE\u5F55","git.loadStatus":"\u52A0\u8F7D Git \u72B6\u6001","git.loading":"\u52A0\u8F7D Git \u72B6\u6001...","git.loadingStatus":"\u52A0\u8F7D Git \u72B6\u6001...","git.clean":"\u5DE5\u4F5C\u533A\u5E72\u51C0\uFF0C\u65E0\u53D8\u66F4","git.cleanWorkDir":"\u5DE5\u4F5C\u533A\u5E72\u51C0\uFF0C\u65E0\u53D8\u66F4","git.selectAgent":"\u9009\u62E9 Agent \u540E\u52A0\u8F7D Git \u72B6\u6001","git.selectAgentFirst":"\u9009\u62E9 Agent \u540E\u52A0\u8F7D Git \u72B6\u6001","git.diffOnly":"\u53EA\u770B\u5DEE\u5F02","git.fullFile":"\u770B\u5168\u6587","git.zoomIn":"\u653E\u5927\u5B57\u4F53","git.zoomOut":"\u7F29\u5C0F\u5B57\u4F53","git.loadingDiff":"\u52A0\u8F7D Diff...","git.clickToView":"\u70B9\u51FB\u6587\u4EF6\u67E5\u770B\u5DEE\u5F02","git.clickFileToView":"\u70B9\u51FB\u6587\u4EF6\u67E5\u770B\u5DEE\u5F02","git.selectRepo":"\u9009\u62E9 Git \u4ED3\u5E93","git.noDiff":"(\u65E0\u5DEE\u5F02)","git.binaryFile":"(\u4E8C\u8FDB\u5236\u6587\u4EF6)","files.notLoaded":"\u672A\u52A0\u8F7D","files.newFile":"\u65B0\u5EFA\u6587\u4EF6","files.newFolder":"\u65B0\u5EFA\u6587\u4EF6\u5939","files.collapseAll":"\u6298\u53E0\u6240\u6709","files.openFolder":"\u6253\u5F00\u6587\u4EF6\u5939","files.deleteSelected":"\u5220\u9664\u9009\u4E2D","files.moveSelected":"\u79FB\u52A8\u9009\u4E2D","files.enterPath":"\u8F93\u5165\u8DEF\u5F84...","files.searchFiles":"\u641C\u7D22\u6587\u4EF6... (Ctrl+P)","files.noMatch":"\u65E0\u5339\u914D\u7ED3\u679C","files.searching":"\u641C\u7D22\u4E2D...","files.loadingTree":"\u52A0\u8F7D\u4E2D...","files.emptyDir":"\u7A7A\u76EE\u5F55","files.loadingFile":"\u52A0\u8F7D\u6587\u4EF6...","files.searchPlaceholder":"\u641C\u7D22...","files.replacePlaceholder":"\u66FF\u6362...","files.replace":"\u66FF\u6362","files.replaceAll":"\u5168\u90E8","files.replaceCurrent":"\u66FF\u6362\u5F53\u524D","files.replaceAllTitle":"\u5168\u90E8\u66FF\u6362","files.clickToView":"\u70B9\u51FB\u6587\u4EF6\u67E5\u770B\u5185\u5BB9","files.selectFolder":"\u9009\u62E9\u6587\u4EF6\u5939","files.enterFolderName":"\u8F93\u5165\u6587\u4EF6\u5939\u540D...","files.enterFileName":"\u8F93\u5165\u6587\u4EF6\u540D...","files.moveTarget":"\u8F93\u5165\u76EE\u6807\u76EE\u5F55\u8DEF\u5F84...","files.moveItems":"\u5C06 {count} \u4E2A\u9879\u76EE\u79FB\u52A8\u5230\u6307\u5B9A\u76EE\u5F55","files.workDir":"\u5DE5\u4F5C\u76EE\u5F55: {dir}","files.enterDirPath":"\u8F93\u5165\u76EE\u5F55\u8DEF\u5F84...","files.unsavedConfirm":'"{name}" \u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539\uFF0C\u786E\u5B9A\u5173\u95ED\uFF1F',"files.deleteConfirm":'\u786E\u5B9A\u8981\u5220\u9664 "{name}" \u5417\uFF1F',"files.deleteDirHint":"\uFF08\u5C06\u5220\u9664\u6587\u4EF6\u5939\u53CA\u5176\u6240\u6709\u5185\u5BB9\uFF09","files.deleteSelectedConfirm":"\u786E\u5B9A\u8981\u5220\u9664\u9009\u4E2D\u7684 {count} \u4E2A\u9879\u76EE\u5417\uFF1F\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002","files.findPrev":"\u4E0A\u4E00\u4E2A (Shift+Enter)","files.findNext":"\u4E0B\u4E00\u4E2A (Enter)","files.caseSensitive":"\u533A\u5206\u5927\u5C0F\u5199","files.regex":"\u6B63\u5219\u8868\u8FBE\u5F0F","files.unsaved":"\u672A\u4FDD\u5B58","files.clearSelection":"\u6E05\u9664\u9009\u62E9","files.rename":"\u91CD\u547D\u540D","files.copyHere":"\u590D\u5236","files.moveTo":"\u79FB\u52A8\u5230...","files.download":"\u4E0B\u8F7D","files.enterNewName":"\u8F93\u5165\u65B0\u540D\u79F0...","files.loadingPreview":"\u52A0\u8F7D\u9884\u89C8\u4E2D...","files.preview":"\u9884\u89C8","files.edit":"\u7F16\u8F91","files.pptxNotSupported":"PPTX \u672C\u5730\u9884\u89C8\u6682\u4E0D\u652F\u6301\uFF0C\u8BF7\u5728\u8BBE\u7F6E\u4E2D\u5207\u6362\u4E3A Office Online \u6A21\u5F0F\u3002","files.officePreviewMode":"Office \u9884\u89C8\u6A21\u5F0F","files.officeOnline":"Office Online","files.localRender":"\u672C\u5730\u6E32\u67D3","proxy.port":"\u7AEF\u53E3","proxy.label":"\u6807\u7B7E","proxy.add":"\u6DFB\u52A0\u7AEF\u53E3\u6620\u5C04","proxy.addPort":"\u6DFB\u52A0\u7AEF\u53E3\u6620\u5C04","proxy.enable":"\u70B9\u51FB\u542F\u7528","proxy.clickEnable":"\u70B9\u51FB\u542F\u7528","proxy.disable":"\u70B9\u51FB\u7981\u7528","proxy.clickDisable":"\u70B9\u51FB\u7981\u7528","proxy.openNewTab":"\u5728\u65B0\u6807\u7B7E\u9875\u6253\u5F00","proxy.openInBrowser":"\u5728\u65B0\u6807\u7B7E\u9875\u6253\u5F00","proxy.noMappings":"\u6682\u65E0\u7AEF\u53E3\u6620\u5C04","proxy.noPorts":"\u6682\u65E0\u7AEF\u53E3\u6620\u5C04","proxy.hint":"\u6DFB\u52A0\u7AEF\u53E3\u540E\uFF0C\u53EF\u901A\u8FC7\u4EE3\u7406 URL \u8BBF\u95EE agent \u673A\u5668\u4E0A\u7684\u672C\u5730\u670D\u52A1","proxy.noPortsHint":"\u6DFB\u52A0\u7AEF\u53E3\u540E\uFF0C\u53EF\u901A\u8FC7\u4EE3\u7406 URL \u8BBF\u95EE agent \u673A\u5668\u4E0A\u7684\u672C\u5730\u670D\u52A1","proxy.selectAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A Agent","store.selectAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A Agent","store.creatingConv":"\u6B63\u5728\u521B\u5EFA\u4F1A\u8BDD...","store.loadingHistory":"\u6B63\u5728\u52A0\u8F7D\u4F1A\u8BDD\u5386\u53F2...","store.executionCancelled":"\u6267\u884C\u5DF2\u53D6\u6D88","store.loginFailed":"\u767B\u5F55\u5931\u8D25","store.convClosed":"\u4F1A\u8BDD\u5DF2\u5173\u95ED","store.convCreated":"\u65B0\u4F1A\u8BDD\u5DF2\u521B\u5EFA [{agent}]\uFF0C\u5DE5\u4F5C\u76EE\u5F55: {workDir}","store.convResumed":"\u5DF2\u6062\u590D\u4F1A\u8BDD [{agent}]: {sessionId}","roleplay.creating":"\u6B63\u5728\u521B\u5EFA \u89D2\u8272\u626E\u6F14 \u4F1A\u8BDD...","roleplay.working":"\u5DE5\u4F5C\u4E2D","roleplay.selectTeam":"\u9009\u62E9\u56E2\u961F\u6A21\u677F","roleplay.teamDev":"\u8F6F\u4EF6\u5F00\u53D1","roleplay.teamCustom":"\u81EA\u5B9A\u4E49","roleplay.editRoles":"\u7F16\u8F91\u89D2\u8272","roleplay.roleName":"\u89D2\u8272\u6807\u8BC6","roleplay.roleDisplayName":"\u663E\u793A\u540D\u79F0","roleplay.roleIcon":"\u56FE\u6807","roleplay.roleDesc":"\u89D2\u8272\u63CF\u8FF0","roleplay.rolePrompt":"\u89D2\u8272 Prompt","roleplay.removeRole":"\u79FB\u9664\u89D2\u8272","roleplay.addRole":"\u6DFB\u52A0\u89D2\u8272","roleplay.start":"\u542F\u52A8 \u89D2\u8272\u626E\u6F14","roleplay.sidebarTitle":"\u89D2\u8272\u626E\u6F14","roleplay.configTitle":"\u89D2\u8272\u626E\u6F14","roleplay.newSession":"\u65B0\u5EFA \u89D2\u8272\u626E\u6F14","roleplay.emptyHint":"\u53D1\u9001\u6D88\u606F\u5F00\u59CB\u591A\u89D2\u8272\u534F\u4F5C","roleplay.askingYou":"\u6B63\u5728\u63D0\u95EE","roleplay.language":"\u8BED\u8A00","roleplay.rolePreview":"\u89D2\u8272\u914D\u7F6E","roleplay.noAgents":"\u6CA1\u6709\u5728\u7EBF\u7684 Agent","roleplay.inputPlaceholder":"\u8F93\u5165\u6D88\u606F\u2026 \u4F7F\u7528 @ \u63D0\u53CA\u89D2\u8272","roleplay.existingSessions":"\u5DF2\u6709\u56E2\u961F","roleplay.restore":"\u6062\u590D","roleplay.restoring":"\u6B63\u5728\u6062\u590D \u89D2\u8272\u626E\u6F14 \u4F1A\u8BDD...","roleplay.createNew":"\u521B\u5EFA\u65B0\u56E2\u961F","expertPanel.title":"\u5E2E\u5E2E\u56E2","expertPanel.search":"\u641C\u7D22\u89D2\u8272\u6216 Action...","expertPanel.noResults":"\u6CA1\u6709\u5339\u914D\u7ED3\u679C","expertPanel.clearAll":"\u6E05\u7A7A","expertPanel.persona":"\u89D2\u8272\u4EBA\u8BBE","expertPanel.template":"\u6709\u8F93\u5165\u65F6 \xB7 \u6D88\u606F\u524D\u7F00","expertPanel.templateHint":"\u7528\u6237\u5199\u4E86\u6587\u5B57\u65F6\uFF1A\u6B64\u524D\u7F00 + \u7528\u6237\u6587\u5B57 = \u6700\u7EC8\u53D1\u9001\u5185\u5BB9","expertPanel.defaultMsg":"\u65E0\u8F93\u5165\u65F6 \xB7 \u5B8C\u6574 Prompt","expertPanel.defaultMsgHint":"\u7528\u6237\u4E0D\u5199\u6587\u5B57\u76F4\u63A5\u53D1\u9001\u65F6\uFF0C\u4F7F\u7528\u6B64\u5B8C\u6574 prompt","expertPanel.loading":"\u6B63\u5728\u52A0\u8F7D\u89D2\u8272\u5B9A\u4E49...","expertPanel.viewPrompt":"\u67E5\u770B\u63D0\u793A\u8BCD","expertPanel.customRoles":"\u81EA\u5B9A\u4E49\u89D2\u8272","expertPanel.addRole":"\u6DFB\u52A0\u89D2\u8272","expertPanel.editRole":"\u7F16\u8F91\u89D2\u8272","expertPanel.deleteRole":"\u5220\u9664\u89D2\u8272","expertPanel.noCustomRoles":"\u6682\u65E0\u81EA\u5B9A\u4E49\u89D2\u8272","expertPanel.createFirst":"\u521B\u5EFA\u7B2C\u4E00\u4E2A\u81EA\u5B9A\u4E49\u89D2\u8272","expertPanel.noActions":"\u6682\u65E0 Action","expertPanel.deleteConfirm":'\u786E\u5B9A\u8981\u5220\u9664\u89D2\u8272 "{name}" \u5417\uFF1F\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002',"expertPanel.deleteConfirmBtn":"\u5220\u9664","expertEditor.createTitle":"\u521B\u5EFA\u81EA\u5B9A\u4E49\u89D2\u8272","expertEditor.editTitle":"\u7F16\u8F91\u81EA\u5B9A\u4E49\u89D2\u8272","expertEditor.basicInfo":"\u57FA\u672C\u4FE1\u606F","expertEditor.roleName":"\u89D2\u8272\u540D\u79F0","expertEditor.roleNamePlaceholder":"\u5982\uFF1A\u6570\u636E\u5206\u6790\u5E08","expertEditor.roleTitle":"\u804C\u79F0","expertEditor.roleTitlePlaceholder":"\u5982\uFF1A\u9AD8\u7EA7\u6570\u636E\u5206\u6790\u5E08","expertEditor.fullName":"\u5168\u540D","expertEditor.fullNamePlaceholder":"\u53EF\u9009","expertEditor.titleEn":"\u82F1\u6587\u804C\u79F0","expertEditor.titleEnPlaceholder":"\u53EF\u9009","expertEditor.rolePrompt":"\u89D2\u8272 Prompt","expertEditor.messagePrefix":"\u6D88\u606F\u524D\u7F00\uFF08\u4E2D\u6587\uFF09","expertEditor.messagePrefixPlaceholder":"\u5982\uFF1A\u4F5C\u4E3A\u4E00\u540D\u8D44\u6DF1\u6570\u636E\u5206\u6790\u5E08\uFF0C","expertEditor.messagePrefixEn":"\u6D88\u606F\u524D\u7F00\uFF08\u82F1\u6587\uFF09","expertEditor.messagePrefixEnPlaceholder":"As a senior data analyst, ","expertEditor.actions":"Actions","expertEditor.addAction":"\u6DFB\u52A0 Action","expertEditor.removeAction":"\u79FB\u9664","expertEditor.actionName":"Action \u540D\u79F0","expertEditor.actionNamePlaceholder":"\u5982\uFF1A\u6570\u636E\u5206\u6790","expertEditor.actionNameEn":"\u82F1\u6587\u540D\u79F0","expertEditor.actionNameEnPlaceholder":"\u53EF\u9009","expertEditor.messageTemplate":"\u6709\u8F93\u5165\u65F6 \xB7 \u6D88\u606F\u524D\u7F00\uFF08\u4E2D\u6587\uFF09","expertEditor.messageTemplatePlaceholder":"\u7528\u6237\u5199\u4E86\u6587\u5B57\u65F6\uFF0C\u62FC\u5728\u7528\u6237\u6587\u5B57\u524D\u9762\u53D1\u9001","expertEditor.messageTemplateEn":"\u6709\u8F93\u5165\u65F6 \xB7 \u6D88\u606F\u524D\u7F00\uFF08\u82F1\u6587\uFF09","expertEditor.messageTemplateEnPlaceholder":"Prepended to user text when user types something","expertEditor.defaultMessage":"\u65E0\u8F93\u5165\u65F6 \xB7 \u5B8C\u6574 Prompt\uFF08\u4E2D\u6587\uFF09","expertEditor.defaultMessagePlaceholder":"\u7528\u6237\u4E0D\u5199\u6587\u5B57\u76F4\u63A5\u53D1\u9001\u65F6\uFF0C\u4F7F\u7528\u6B64\u5B8C\u6574\u5185\u5BB9","expertEditor.defaultMessageEn":"\u65E0\u8F93\u5165\u65F6 \xB7 \u5B8C\u6574 Prompt\uFF08\u82F1\u6587\uFF09","expertEditor.defaultMessageEnPlaceholder":"Used as-is when user sends without typing","expertEditor.cancel":"\u53D6\u6D88","expertEditor.save":"\u4FDD\u5B58","expertEditor.saving":"\u4FDD\u5B58\u4E2D...","subAgentPanel.title":"\u5B50\u4EE3\u7406","subAgentPanel.back":"\u8FD4\u56DE\u5217\u8868","subAgentPanel.running":"\u8FD0\u884C\u4E2D","subAgentPanel.completed":"\u5DF2\u5B8C\u6210","subAgentPanel.waitingMessages":"\u7B49\u5F85\u6D88\u606F...","subAgentPanel.toolCount":"{count} \u4E2A\u5DE5\u5177","subAgentPanel.toolSummary":"\u5DF2\u5B8C\u6210 {count} \u6B21\u5DE5\u5177\u8C03\u7528","subAgentPanel.empty":"\u6682\u65E0\u5B50\u4EE3\u7406","subAgentPanel.emptyHint":"\u5F53 Claude \u59D4\u6D3E\u4EFB\u52A1\u65F6\uFF0C\u5B50\u4EE3\u7406\u4F1A\u5728\u8FD9\u91CC\u663E\u793A","splitScreen.split":"\u5206\u5C4F","splitScreen.closePane":"\u5173\u95ED\u6B64\u9762\u677F","splitScreen.newChat":"\u65B0\u5EFA Chat","splitScreen.noSessions":"\u6682\u65E0\u4F1A\u8BDD","splitScreen.splitToPanel":"\u5728\u65B0\u9762\u677F\u4E2D\u6253\u5F00","splitScreen.selectFromSidebar":"\u4ECE\u5DE6\u4FA7\u9009\u62E9\u5BF9\u8BDD","yeaft.vp.library":"\u89D2\u8272\u5E93","yeaft.vp.createFirst":"+ \u521B\u5EFA\u4F60\u7684\u7B2C\u4E00\u4E2A\u89D2\u8272","yeaft.vp.empty.aria":"\u5C1A\u65E0\u89D2\u8272","yeaft.vp.avatar.aria":"{name} \u5934\u50CF","yeaft.vp.speaker.stateCauseAria":"\u72B6\u6001\u53D8\u66F4\uFF1A{cause}","yeaft.vp.status.thinking":"\u6B63\u5728\u601D\u8003\u2026","yeaft.vp.status.tool":"\u6B63\u5728\u4F7F\u7528 {name}","yeaft.vp.status.done":"\u5B8C\u6210 \xB7 {count} \u4E2A\u5DE5\u5177","yeaft.vp.status.aborted":"\u5DF2\u4E2D\u6B62","yeaft.vp.crud.title":"\u89D2\u8272\u5E93","yeaft.vp.crud.close":"\u5173\u95ED","yeaft.vp.crud.addNew":"+ \u65B0\u5EFA\u89D2\u8272","yeaft.vp.crud.empty":"\u8FD8\u6CA1\u6709\u89D2\u8272\u3002\u521B\u5EFA\u7B2C\u4E00\u4E2A\u89D2\u8272\u5F00\u59CB\u534F\u4F5C\u5427\u3002","yeaft.vp.crud.edit":"\u7F16\u8F91","yeaft.vp.crud.delete":"\u5220\u9664","yeaft.vp.crud.deleteConfirm":'\u5220\u9664 "{name}"\uFF1F\u4F1A\u4E00\u5E76\u5220\u9664\u78C1\u76D8\u4E0A\u7684 role.md \u6587\u4EF6\u3002',"yeaft.vp.crud.form.create":"\u521B\u5EFA\u89D2\u8272","yeaft.vp.crud.form.update":"\u7F16\u8F91\u89D2\u8272","yeaft.vp.crud.form.vpId":"\u89D2\u8272 ID","yeaft.vp.crud.form.vpId.tooltip":"\u53EA\u80FD\u7528\u5B57\u6BCD\u3001\u6570\u5B57\u3001- \u548C _\uFF0C\u4E0D\u80FD\u4EE5 _ \u5F00\u5934\uFF0C\u4E0D\u80FD\u662F\u7EAF\u6570\u5B57\uFF0C\u4E0D\u80FD\u7528\u4FDD\u7559\u540D\uFF1Aall / user / system / everyone\u3002","yeaft.vp.crud.form.displayName":"\u663E\u793A\u540D\uFF08\u82F1\u6587\uFF09","yeaft.vp.crud.form.displayNameZh":"\u663E\u793A\u540D\uFF08\u4E2D\u6587\uFF09","yeaft.vp.crud.form.description":"\u80FD\u529B\u63CF\u8FF0\uFF08\u82F1\u6587\uFF09","yeaft.vp.crud.form.descriptionZh":"\u80FD\u529B\u63CF\u8FF0\uFF08\u4E2D\u6587\uFF09","yeaft.vp.crud.form.descriptionPlaceholder":"\u4F8B\u5982\uFF1AAPI design, migration planning, and compatibility reviews","yeaft.vp.crud.form.descriptionZhPlaceholder":"\u4F8B\u5982\uFF1AAPI \u8BBE\u8BA1\u3001\u8FC1\u79FB\u89C4\u5212\u4E0E\u517C\u5BB9\u6027\u8BC4\u5BA1","yeaft.vp.crud.form.role":"\u804C\u4F4D","yeaft.vp.crud.form.rolePlaceholder":"\u4F8B\u5982\uFF1A\u4EA7\u54C1\u7ECF\u7406","yeaft.vp.crud.form.traits":"\u7279\u8D28\u6807\u7B7E","yeaft.vp.crud.form.traitsHint":"\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\u7684\u77ED\u6807\u7B7E\uFF08\u4F8B\u5982\uFF1A\u597D\u5947, \u52A1\u5B9E\uFF09\u3002","yeaft.vp.crud.form.modelHint":"\u6A21\u578B\u504F\u597D","yeaft.vp.crud.form.modelHint.none":"\u2014 \u9ED8\u8BA4 \u2014","yeaft.vp.crud.form.modelHint.primary":"\u4E3B\u6A21\u578B","yeaft.vp.crud.form.modelHint.fast":"\u5FEB\u6A21\u578B","yeaft.vp.crud.form.persona":"\u4EBA\u8BBE\uFF08Markdown\uFF09","yeaft.vp.crud.form.personaPlaceholder":"\u63CF\u8FF0\u8FD9\u4E2A\u89D2\u8272\u5982\u4F55\u601D\u8003\u3001\u8868\u8FBE\u3001\u505A\u51B3\u7B56\u2026\u2026","yeaft.vp.crud.form.submit":"\u4FDD\u5B58","yeaft.vp.crud.form.cancel":"\u53D6\u6D88","yeaft.vp.crud.form.ok":"\u683C\u5F0F\u6B63\u786E","yeaft.vp.crud.form.idLocked":"\u521B\u5EFA\u540E\u89D2\u8272 ID \u4E0D\u53EF\u4FEE\u6539\u3002","yeaft.vp.crud.saving":"\u4FDD\u5B58\u4E2D\u2026\u2026","yeaft.vp.crud.saveFailed":"\u4FDD\u5B58\u5931\u8D25\uFF1A{error}","yeaft.vp.crud.deleteFailed":"\u5220\u9664\u5931\u8D25\uFF1A{error}","yeaft.vp.crud.viewPrompt":"\u67E5\u770B prompt","yeaft.vp.crud.view.title":"VP \u63D0\u793A\u8BCD","yeaft.vp.crud.view.personaEmpty":"\uFF08\u672A\u5B9A\u4E49 persona \u6B63\u6587\uFF0C\u53EA\u6709\u57FA\u7840\u5143\u6570\u636E\uFF09","yeaft.vp.crud.view.back":"\u8FD4\u56DE","yeaft.vp.crud.view.editFromHere":"\u7F16\u8F91\u8BE5 VP","yeaft.vp.crud.view.removed":"\u8BE5 VP \u5DF2\u5728\u522B\u5904\u88AB\u5220\u9664\uFF0C\u8FD4\u56DE\u5217\u8868\u3002","yeaft.vp.crud.stockBadge":"\u9884\u88C5","yeaft.vp.crud.stockReadOnly":"\u9884\u88C5 VP \u968F agent \u51FA\u5382\uFF0C\u4E0D\u80FD\u7F16\u8F91\u6216\u5220\u9664\u3002","yeaft.vp.idError.empty_or_non_string":"\u89D2\u8272 ID \u4E0D\u80FD\u4E3A\u7A7A\u3002","yeaft.vp.idError.too_long":"\u89D2\u8272 ID \u592A\u957F\uFF08\u6700\u591A 40 \u5B57\u7B26\uFF09\u3002","yeaft.vp.idError.illegal_character":'\u53EA\u80FD\u4F7F\u7528\u5B57\u6BCD\u3001\u6570\u5B57\u3001"-" \u548C "_"\u3002',"yeaft.vp.idError.underscore_prefix_reserved":'\u89D2\u8272 ID \u4E0D\u80FD\u4EE5 "_" \u5F00\u5934\uFF08\u9884\u7559\u7ED9\u7CFB\u7EDF\u89D2\u8272\uFF09\u3002',"yeaft.vp.idError.pure_digits":"\u89D2\u8272 ID \u4E0D\u80FD\u662F\u7EAF\u6570\u5B57\u3002","yeaft.vp.idError.reserved":"\u89D2\u8272 ID \u4E0D\u80FD\u7528\u4FDD\u7559\u540D\uFF08all / user / system / everyone\uFF09\u3002","yeaft.vp.idError.duplicate":"\u5DF2\u7ECF\u5B58\u5728\u540C ID \u7684\u89D2\u8272\u3002","yeaft.vp.idError.not_found":"\u8BE5 VP \u4E0D\u5B58\u5728\uFF0C\u53EF\u80FD\u5DF2\u88AB\u5220\u9664\u3002","yeaft.vp.idError.stock_readonly":"\u9884\u88C5 VP \u4E0D\u80FD\u7F16\u8F91\u6216\u5220\u9664\u3002","yeaft.vp.idError.unknown":"\u53D1\u751F\u672A\u77E5\u9519\u8BEF\uFF0C\u8BF7\u91CD\u8BD5\u3002","yeaft.vp.reason.personaEdit":"\u4EBA\u8BBE\u5DF2\u66F4\u65B0","yeaft.vp.reason.traitsEdit":"\u7279\u5F81\u5DF2\u66F4\u65B0","yeaft.vp.reason.manualReload":"\u5DF2\u91CD\u65B0\u8F7D\u5165","yeaft.vp.reason.fileRemoved":"\u5DF2\u79FB\u9664","yeaft.vp.reason.toast.updated":"{name}\uFF1A{reason}","yeaft.vp.reason.toast.removed":"{name} \u5DF2\u88AB\u79FB\u9664","yeaft.message.timeAria":"\u53D1\u9001\u4E8E {time}","yeaft.user.youLabel":"\u6211","yeaft.session.sidebarTitle":"\u4F1A\u8BDD","yeaft.session.sidebarAria":"\u4F1A\u8BDD\u5217\u8868","yeaft.session.newButton":"+ \u65B0\u5EFA\u4F1A\u8BDD","yeaft.session.newButtonAria":"\u521B\u5EFA\u65B0\u4F1A\u8BDD","yeaft.session.empty":"\u6682\u65E0\u4F1A\u8BDD\u3002","yeaft.session.membersCount":"{count} \u4F4D\u6210\u5458","yeaft.session.oneMember":"1 \u4F4D\u6210\u5458","yeaft.session.noMembers":"\u7A7A\u4F1A\u8BDD \u2014 \u8BF7\u9080\u8BF7 VP","yeaft.session.defaultBadge":"\u9ED8\u8BA4","yeaft.session.defaultName":"\u9ED8\u8BA4\u4F1A\u8BDD","yeaft.session.moreActions":"\u66F4\u591A\u64CD\u4F5C","yeaft.session.archive":"\u5F52\u6863","yeaft.session.archiveConfirm":"\u5F52\u6863\u300C{name}\u300D\uFF1F\u7A0D\u540E\u53EF\u4ECE\u78C1\u76D8\u6062\u590D\u3002","yeaft.session.archivingEllipsis":"\u5F52\u6863\u4E2D\u2026","yeaft.session.delete":"\u5220\u9664","yeaft.session.deleteConfirm":"\u5220\u9664\u300C{name}\u300D\uFF1F\u5C06\u6C38\u4E45\u5220\u9664\u8BE5\u4F1A\u8BDD\u53CA\u5176\u6240\u6709\u6570\u636E\uFF0C\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002","yeaft.session.deletingEllipsis":"\u5220\u9664\u4E2D\u2026","yeaft.session.rename":"\u91CD\u547D\u540D","yeaft.session.openSettings":"\u8BBE\u7F6E","yeaft.session.removeFromList":"\u79FB\u9664","yeaft.session.manageMembers":"\u7BA1\u7406\u6210\u5458","yeaft.session.memberCount.one":"1 \u4F4D\u6210\u5458","yeaft.session.memberCount.other":"{count} \u4F4D\u6210\u5458","yeaft.session.renamePrompt":"\u4E3A\u300C{name}\u300D\u8F93\u5165\u65B0\u540D\u79F0\uFF1A","yeaft.session.renamingEllipsis":"\u91CD\u547D\u540D\u4E2D\u2026","yeaft.session.editModal.renameTitle":"\u91CD\u547D\u540D\u4F1A\u8BDD","yeaft.session.editModal.renameBody":"\u4E3A\u300C{name}\u300D\u9009\u62E9\u4E00\u4E2A\u65B0\u540D\u79F0\u3002","yeaft.session.editModal.renameSubmit":"\u4FDD\u5B58","yeaft.session.editModal.archiveTitle":"\u5F52\u6863\u4F1A\u8BDD","yeaft.session.editModal.archiveBody":"\u5F52\u6863\u300C{name}\u300D\uFF1F\u7A0D\u540E\u53EF\u4ECE\u78C1\u76D8\u6062\u590D\u3002","yeaft.session.editModal.archiveSubmit":"\u5F52\u6863","yeaft.session.editModal.deleteTitle":"\u5220\u9664\u4F1A\u8BDD","yeaft.session.editModal.deleteBody":"\u5220\u9664\u300C{name}\u300D\uFF1F\u5C06\u6C38\u4E45\u5220\u9664\u8BE5\u4F1A\u8BDD\u53CA\u5176\u6240\u6709\u6570\u636E\uFF0C\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002","yeaft.session.editModal.deleteSubmit":"\u5220\u9664","yeaft.session.editModal.newNameLabel":"\u65B0\u540D\u79F0","yeaft.session.editModal.cancel":"\u53D6\u6D88","yeaft.session.editModal.close":"\u5173\u95ED","yeaft.session.error.invalid_name":"\u4F1A\u8BDD\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A\u3002","yeaft.session.error.duplicate":"\u8BE5\u4F1A\u8BDD id \u5DF2\u5B58\u5728\u3002","yeaft.session.error.not_found":"\u672A\u627E\u5230\u8BE5\u4F1A\u8BDD\u3002","yeaft.session.error.default_not_in_roster":"\u9ED8\u8BA4 VP \u5FC5\u987B\u5728\u6210\u5458\u5217\u8868\u4E2D\u3002","yeaft.session.error.no_default_vp":"\u8BE5\u4F1A\u8BDD\u6CA1\u6709\u6210\u5458\uFF0C\u8BF7\u4ECE\u89D2\u8272\u5E93\u6DFB\u52A0 VP \u4EE5\u5F00\u59CB\u5BF9\u8BDD\u3002","yeaft.session.error.reserved":"\u6240\u9009 id \u4E2D\u5305\u542B\u4FDD\u7559\u540D\uFF08all / user / system / everyone\uFF09\u3002","yeaft.session.error.unknown":"\u4F1A\u8BDD\u64CD\u4F5C\u5931\u8D25\uFF1A{message}","yeaft.session.error.timeout":"\u4F1A\u8BDD\u64CD\u4F5C\u8D85\u65F6\uFF0C\u8BF7\u91CD\u8BD5\u3002","yeaft.session.invite.title":"\u9080\u8BF7 VP","yeaft.session.invite.body":"\u300C{name}\u300D\u5F53\u524D\u4E3A\u7A7A\uFF0C\u8BF7\u4ECE\u89D2\u8272\u5E93\u6DFB\u52A0\u4E00\u4F4D VP \u4EE5\u5F00\u59CB\u5BF9\u8BDD\u3002","yeaft.session.invite.openLibrary":"\u6253\u5F00\u89D2\u8272\u5E93","yeaft.session.invite.dismiss":"\u6682\u4E0D","yeaft.session.empty.title":"\u7A7A\u4F1A\u8BDD","yeaft.session.empty.hint":"\u300C{name}\u300D\u8FD8\u6CA1\u6709\u6210\u5458\u3002\u6DFB\u52A0\u4E00\u4F4D VP \u5373\u53EF\u5F00\u59CB\u5BF9\u8BDD\u3002","yeaft.session.empty.cta":"\u7BA1\u7406\u6210\u5458","yeaft.session.members.title":"\u7BA1\u7406\u300C{name}\u300D\u7684\u6210\u5458","yeaft.session.members.aria":"\u6210\u5458\u7BA1\u7406","yeaft.session.members.close":"\u5173\u95ED","yeaft.session.members.done":"\u5B8C\u6210","yeaft.session.members.empty":"\u6682\u65E0\u53EF\u7528 VP \u2014 \u8BF7\u5148\u5230\u89D2\u8272\u5E93\u521B\u5EFA\u3002","yeaft.session.members.loading":"VP \u52A0\u8F7D\u4E2D\u2026","yeaft.session.members.defaultHint":"\u9ED8\u8BA4 VP\uFF08@\u63D0\u53CA\u7F3A\u7701\u65F6\u7531\u8BE5 VP \u5E94\u7B54\uFF09","yeaft.session.members.memberCount":"\u5DF2\u9009 {count} \u4F4D","yeaft.session.members.actionFailed":"\u64CD\u4F5C\u5931\u8D25\uFF1A{error}","yeaft.session.members.openLibrary":"\u6253\u5F00 VP \u5E93","yeaft.session.members.openLibraryHint":"\u5728 VP \u5E93\u53EF\u521B\u5EFA\u65B0 VP \u6216\u67E5\u770B VP \u7684 prompt\u3002","yeaft.session.announcement.label":"\u4F1A\u8BDD\u516C\u544A","yeaft.session.announcement.hintEmpty":"\u6682\u65E0\u516C\u544A \u2014 \u70B9\u51FB \u270F\uFE0F \u6DFB\u52A0\u3002","yeaft.session.announcement.emptyBody":"\u672A\u8BBE\u7F6E\u4F1A\u8BDD\u516C\u544A\u3002\u53EF\u4EE5\u5728\u8FD9\u91CC\u5199\u4E00\u6BB5\u7B80\u4ECB\uFF0C\u4F1A\u8BDD\u5185\u6240\u6709 VP \u5728\u6536\u5230\u6D88\u606F\u65F6\u90FD\u4F1A\u5728 system prompt \u9876\u90E8\u770B\u5230 \u2014 \u9002\u5408\u5199\u5171\u540C\u80CC\u666F\u3001\u89C4\u5219\u3001\u6216 CLAUDE.md \u5F0F\u7684\u6307\u5F15\u3002","yeaft.session.announcement.placeholder":"\u4E3A\u8FD9\u4E2A\u4F1A\u8BDD\u91CC\u7684\u6240\u6709 VP \u5199\u4E00\u6BB5\u5171\u4EAB\u7684\u7B80\u4ECB\u2026","yeaft.session.announcement.edit":"\u7F16\u8F91\u516C\u544A","yeaft.session.announcement.editTitle":"\u7F16\u8F91\u4F1A\u8BDD\u516C\u544A","yeaft.session.announcement.saving":"\u4FDD\u5B58\u4E2D\u2026","yeaft.session.announcement.saveFailed":"\u4FDD\u5B58\u5931\u8D25\uFF1A{error}","yeaft.session.announcement.openSettings":"\u6253\u5F00\u4F1A\u8BDD\u8BBE\u7F6E","yeaft.session.settings.title":"{name} \u2014 \u4F1A\u8BDD\u8BBE\u7F6E","yeaft.session.settings.short":"\u4F1A\u8BDD","yeaft.session.settings.close":"\u5173\u95ED","yeaft.session.settings.nav.session":"\u4F1A\u8BDD","yeaft.session.settings.nav.members":"\u6210\u5458","yeaft.session.settings.nav.memory":"\u4F1A\u8BDD\u8BB0\u5FC6","yeaft.session.settings.announcement.heading":"\u4F1A\u8BDD\u516C\u544A","yeaft.session.settings.announcement.help":"\u6CE8\u5165\u5230\u4F1A\u8BDD\u5185\u6BCF\u4E2A VP \u7684 system prompt \u9876\u90E8 \u2014 \u7C7B\u4F3C\u56E2\u961F\u5171\u4EAB\u7684 CLAUDE.md\u3002","yeaft.session.settings.members.heading":"\u6210\u5458","yeaft.session.settings.rename.heading":"\u91CD\u547D\u540D\u4F1A\u8BDD","yeaft.session.settings.rename.label":"\u65B0\u540D\u79F0","yeaft.session.settings.rename.save":"\u4FDD\u5B58\u540D\u79F0","yeaft.session.settings.rename.saving":"\u4FDD\u5B58\u4E2D\u2026","yeaft.session.settings.memory.heading":"\u4F1A\u8BDD\u8BB0\u5FC6","yeaft.session.settings.memory.help":"\u7ACB\u5373\u8FD0\u884C dream \u6574\u7406\uFF1A\u8BFB\u53D6\u4E0A\u6B21\u4EE5\u6765\u7684\u65B0\u6D88\u606F\uFF0C\u63D0\u53D6\u8981\u70B9\u5E76\u5408\u5E76\u8FDB\u4F1A\u8BDD\u7684 summary\uFF0C\u8BA9 Resident \u5C42\u80FD\u53CD\u6620\u6700\u65B0\u7684\u5BF9\u8BDD\u3002","yeaft.session.settings.memory.runNow":"\u7ACB\u5373\u8FD0\u884C dream","yeaft.session.settings.memory.running":"\u8FD0\u884C\u4E2D\u2026","yeaft.session.settings.memory.lastSuccess":"\u4E0A\u6B21\u6210\u529F\uFF1A{time} \u2014 \u66F4\u65B0\u4E86 {count} \u4E2A\u76EE\u6807\u3002","yeaft.session.settings.memory.lastError":"\u4E0A\u6B21\u8FD0\u884C\u5931\u8D25\uFF1A{error}","yeaft.session.settings.danger.heading":"\u5220\u9664\u4F1A\u8BDD","yeaft.session.settings.danger.deleteHelp":"\u8FD9\u4F1A\u6C38\u4E45\u5220\u9664\u8BE5\u4F1A\u8BDD\uFF0C\u79FB\u9664\u78C1\u76D8\u4E0A\u7684 session.json \u548C\u5168\u90E8\u6D88\u606F\u5386\u53F2\uFF0C\u4E0D\u53EF\u6062\u590D\u3002","yeaft.session.settings.danger.deleteBtn":"\u5220\u9664\u4F1A\u8BDD","yeaft.vp.mention.placeholder":"\u6309 id \u6216\u540D\u79F0\u641C\u7D22\u89D2\u8272\u2026","yeaft.vp.mention.noMatch":"\u6CA1\u6709\u5339\u914D\u7684\u89D2\u8272","yeaft.vp.mention.count":"\u5DF2 @{count} \u4EBA","yeaft.feature.reject.missing_group_id":"\u53D1\u9001\u5931\u8D25\uFF1A\u672A\u6307\u5B9A\u4F1A\u8BDD\u3002","yeaft.feature.reject.missing_feature_id":"\u53D1\u9001\u5931\u8D25\uFF1A\u4EFB\u52A1\u4E0A\u4E0B\u6587\u4E22\u5931\u3002","yeaft.feature.reject.missing_vp_id":"\u53D1\u9001\u5931\u8D25\uFF1A\u672A\u8BBE\u7F6E\u53D1\u8A00\u8005\u3002","yeaft.feature.reject.invalid_vp_id":"\u53D1\u9001\u5931\u8D25\uFF1A\u53D1\u8A00\u8005 id \u975E\u6CD5\u3002","yeaft.feature.reject.empty_text":"\u53D1\u9001\u5931\u8D25\uFF1A\u5185\u5BB9\u4E3A\u7A7A\u3002","yeaft.feature.reject.text_too_long":"\u53D1\u9001\u5931\u8D25\uFF1A\u5185\u5BB9\u8FC7\u957F\uFF08\u4E0A\u9650 16 KiB\uFF09\u3002","yeaft.feature.reject.unknown":"\u53D1\u9001\u5931\u8D25\u3002","yeaft.feature.pill.label":"\u4EFB\u52A1","yeaft.feature.messageTime.aria":"\u53D1\u9001\u4E8E {time}","yeaft.vp.turnBlock.elapsedTitle":"\u672C\u8F6E turn \u5F00\u59CB\u81F3\u4ECA\u7684\u65F6\u95F4","yeaft.vp.turnBlock.retryingRequest":"\u54CD\u5E94\u505C\u6EDE\uFF0C\u6B63\u5728\u53D1\u8D77\u5168\u65B0\u8BF7\u6C42\uFF08{attempt}/{max}\uFF09","yeaft.vp.turnBlock.retryingContinue":"\u54CD\u5E94\u505C\u6EDE\uFF0C\u6B63\u5728\u7528\u5168\u65B0\u8BF7\u6C42\u7EED\u5199\uFF08{attempt}/{max}\uFF09","yeaft.sessionStatus.aria":"Session \u72B6\u6001","yeaft.sessionStatus.title":"Session \u72B6\u6001","yeaft.sessionStatus.announcement":"\u516C\u544A","yeaft.sessionStatus.announcementEmpty":"\u6682\u65E0\u516C\u544A","yeaft.sessionStatus.announcementAdd":"\u6DFB\u52A0\u516C\u544A","yeaft.sessionStatus.announcementEdit":"\u7F16\u8F91\u516C\u544A","yeaft.sessionStatus.vps":"VP","yeaft.sessionStatus.backgroundTasks":"\u540E\u53F0\u4EFB\u52A1","yeaft.sessionStatus.noLogPreview":"\u6682\u65E0\u65E5\u5FD7\u8F93\u51FA\u3002","yeaft.sessionStatus.task.subAgentStarted":"{name} \u5DF2\u542F\u52A8","yeaft.sessionStatus.task.subAgentStartedWithMission":"{name} \u5DF2\u542F\u52A8\uFF1A{mission}","yeaft.sessionStatus.task.subAgentStatus":"{name} \u72B6\u6001\uFF1A{status}","yeaft.sessionStatus.task.subAgentStatusUpdated":"{name} \u72B6\u6001\u5DF2\u66F4\u65B0","yeaft.sessionStatus.task.subAgentResult":"{name} \u7ED3\u679C\uFF1A{text}","yeaft.sessionStatus.task.subAgentProducedResult":"{name} \u5DF2\u4EA7\u751F\u7ED3\u679C","yeaft.sessionStatus.task.subAgentUsedTool":"{name} \u8C03\u7528\u4E86 {tool}","yeaft.sessionStatus.task.subAgentFinishedTool":"{name} \u5B8C\u6210\u4E86 {tool}","yeaft.sessionStatus.task.subAgentUsage":"{name} \u4F7F\u7528\u4E86 {tokens} tokens","yeaft.sessionStatus.task.subAgentEvent":"{name}\uFF1A{text}","yeaft.sessionStatus.task.subAgentUserPrompt":"\u4F60\uFF1A{text}","yeaft.sessionStatus.task.subAgentToolSummary":"\u5DF2\u5B8C\u6210 {count} \u6B21\u5DE5\u5177\u8C03\u7528","yeaft.sessionStatus.task.subAgentError":"{name} \u9519\u8BEF\uFF1A{error}","yeaft.sessionStatus.task.subAgentHitError":"{name} \u9047\u5230\u9519\u8BEF","yeaft.sessionStatus.task.subAgentNoReadableEvents":"\u6682\u65E0\u53EF\u8BFB\u7684 sub-agent \u6D3B\u52A8\u3002","yeaft.sessionStatus.task.promptPlaceholder":"\u7ED9\u8FD9\u4E2A sub-agent \u8FFD\u52A0\u60F3\u6CD5\u2026","yeaft.sessionStatus.task.promptSend":"\u53D1\u9001","yeaft.sessionStatus.task.promptSending":"\u53D1\u9001\u4E2D\u2026","yeaft.sessionStatus.task.promptFailed":"\u53D1\u9001\u5931\u8D25\u3002","yeaft.sessionStatus.task.title":"\u4EFB\u52A1","yeaft.sessionStatus.task.command":"\u547D\u4EE4","yeaft.sessionStatus.task.stop":"\u505C\u6B62\u4EFB\u52A1","yeaft.sessionStatus.task.stopping":"\u505C\u6B62\u4E2D\u2026","yeaft.sessionStatus.task.kind.subAgent":"sub-agent","yeaft.sessionStatus.task.kind.shell":"shell","yeaft.sessionStatus.show":"\u663E\u793A Session \u72B6\u6001","yeaft.sessionStatus.hide":"\u9690\u85CF Session \u72B6\u6001","yeaft.sessionStatus.close":"\u5173\u95ED Session \u72B6\u6001","yeaft.vpTimeline.empty":"\u672C Session \u8FD8\u6CA1\u6709 VP\u3002","yeaft.vpTimeline.resizeTitle":"\u62D6\u52A8\u8C03\u6574\u5BBD\u5EA6","yeaft.vpTimeline.status.idle":"\u7A7A\u95F2","yeaft.vpTimeline.status.typing":"\u8F93\u5165\u4E2D\u2026","yeaft.vpTimeline.status.thinking":"\u601D\u8003\u4E2D\u2026","yeaft.vpTimeline.status.retrying":"\u6B63\u5728\u91CD\u8BD5\u8BF7\u6C42\u2026","yeaft.vpTimeline.status.streaming":"\u751F\u6210\u4E2D","yeaft.vpTimeline.status.tool":"\u8C03\u7528\u5DE5\u5177\u4E2D\u2026","yeaft.vpTimeline.status.error":"\u51FA\u9519","yeaft.vpTimeline.status.offline":"\u79BB\u7EBF","yeaft.vpTimeline.abort":"\u4E2D\u6B62","yeaft.vpTimeline.edit":"\u7F16\u8F91 VP","yeaft.vpTimeline.mention":"\u70B9\u51FB @ \u8BE5 VP","yeaft.vpTimeline.expand":"\u5C55\u5F00\u4EFB\u52A1\u8BE6\u60C5","yeaft.toolStats.title":"\u5DE5\u5177\u4F7F\u7528\u7EDF\u8BA1","yeaft.toolStats.refresh":"\u5237\u65B0","yeaft.toolStats.close":"\u5173\u95ED","yeaft.toolStats.tabAll":"\u5168\u90E8\u5DE5\u5177","yeaft.toolStats.tabUnused":"\u672A\u4F7F\u7528","yeaft.toolStats.loading":"\u52A0\u8F7D\u4E2D\u2026","yeaft.toolStats.notLoaded":"\u6682\u65E0\u6570\u636E \u2014 \u70B9\u51FB\u5237\u65B0\u3002","yeaft.toolStats.empty":"\uFF08\u6682\u65E0\u5DE5\u5177\u8C03\u7528\u8BB0\u5F55\uFF09","yeaft.toolStats.noneUnused":"\uFF08\u6BCF\u4E2A\u5DF2\u6CE8\u518C\u5DE5\u5177\u90FD\u81F3\u5C11\u88AB\u8C03\u7528\u8FC7\u4E00\u6B21\uFF09","yeaft.toolStats.fetchedAt":"\u83B7\u53D6\u65F6\u95F4","yeaft.toolStats.col.name":"\u5DE5\u5177","yeaft.toolStats.col.calls":"\u8C03\u7528","yeaft.toolStats.col.errors":"\u9519\u8BEF","yeaft.toolStats.col.errRate":"\u9519\u8BEF\u7387","yeaft.toolStats.col.p50":"p50","yeaft.toolStats.col.p95":"p95","yeaft.toolStats.col.avg":"\u5E73\u5747","yeaft.toolStats.col.last":"\u6700\u8FD1","yeaft.toolStats.buttonLabel":"\u5DE5\u5177\u7EDF\u8BA1","workCenter.title":"\u5DE5\u4F5C\u4E2D\u5FC3","workCenter.subtitle":"\u7531\u5F53\u524D Agent \u6301\u7EED\u63A8\u8FDB\u7684\u6301\u4E45\u5DE5\u4F5C","workCenter.agent":"Agent","workCenter.selectAgent":"\u9009\u62E9 Agent","workCenter.noOnlineAgents":"\u6CA1\u6709\u5728\u7EBF Agent","workCenter.noAvailableAgents":"\u6CA1\u6709\u517C\u5BB9\u5DE5\u4F5C\u4E2D\u5FC3\u7684\u5728\u7EBF Agent","workCenter.new":"\u65B0\u5EFA","workCenter.newWorkItem":"\u65B0\u5EFA\u5DE5\u4F5C\u9879","workCenter.workItem":"\u5DE5\u4F5C\u9879","workCenter.createFirst":"\u521B\u5EFA\u7B2C\u4E00\u4E2A\u5DE5\u4F5C\u9879","workCenter.backToChat":"\u8FD4\u56DE\u5BF9\u8BDD","workCenter.refresh":"\u5237\u65B0","workCenter.search":"\u641C\u7D22\u5DE5\u4F5C\u9879","workCenter.filter":"\u7B5B\u9009","workCenter.filterAttention":"\u9700\u8981\u5904\u7406","workCenter.filterActive":"\u6267\u884C\u4E2D","workCenter.filterAll":"\u5168\u90E8","workCenter.filterDone":"\u5DF2\u5B8C\u6210","workCenter.attentionItems":"\u9700\u8981\u5904\u7406","workCenter.board.active":"\u8FDB\u884C\u4E2D","workCenter.board.needsAttention":"\u9700\u8981\u5904\u7406","workCenter.board.closed":"\u5DF2\u5173\u95ED","workCenter.board.emptyLane":"\u6682\u65E0\u5DE5\u4F5C\u9879","workCenter.board.lanes":"\u5DE5\u4F5C\u9879\u5206\u680F","workCenter.filterVp":"\u6309 VP \u7B5B\u9009","workCenter.filterType":"\u6309\u7C7B\u578B\u7B5B\u9009","workCenter.filterUpdated":"\u6309\u66F4\u65B0\u65F6\u95F4\u7B5B\u9009","workCenter.allVps":"\u5168\u90E8 VP","workCenter.allTypes":"\u5168\u90E8\u7C7B\u578B","workCenter.anyTime":"\u4E0D\u9650\u65F6\u95F4","workCenter.lastDay":"\u6700\u8FD1 24 \u5C0F\u65F6","workCenter.lastWeek":"\u6700\u8FD1 7 \u5929","workCenter.deleteWorkItem":"\u5220\u9664 Work Item","workCenter.deleteConfirm":"\u6C38\u4E45\u5220\u9664\u8FD9\u4E2A Work Item\u3001\u6267\u884C\u5386\u53F2\u548C\u9644\u4EF6\uFF1F","workCenter.deleteRequiresStop":"\u8BF7\u5148\u505C\u6B62\u8FD9\u4E2A Work Item \u518D\u5220\u9664","workCenter.lastMonth":"\u6700\u8FD1 30 \u5929","workCenter.assignment.planned":"\u8BA1\u5212\u5206\u914D","workCenter.created":"\u521B\u5EFA\u4E8E","workCenter.files":"\u4E2A\u6587\u4EF6","workCenter.loadMore":"\u52A0\u8F7D\u66F4\u591A","workCenter.activeItems":"\u6267\u884C\u4E2D\u7684\u5DE5\u4F5C","workCenter.allItems":"\u5168\u90E8\u5DE5\u4F5C\u9879","workCenter.completedItems":"\u5DF2\u5B8C\u6210","workCenter.watcherActive":"Watcher \u8FD0\u884C\u4E2D","workCenter.loading":"\u6B63\u5728\u52A0\u8F7D\u5DE5\u4F5C\u9879\u2026","workCenter.noTimestamp":"\u65E0\u65F6\u95F4\u6233","workCenter.updated":"\u66F4\u65B0\u65F6\u95F4","workCenter.emptyTitle":"\u8FD8\u6CA1\u6709\u5DE5\u4F5C\u9879","workCenter.emptyBody":"\u5F53\u5DE5\u4F5C\u9700\u8981\u8DE8\u8D8A\u4E00\u6B21\u5BF9\u8BDD\u3001\u7B49\u5F85\u6216\u89D2\u8272\u63A5\u529B\u65F6\uFF0C\u628A\u5B83\u521B\u5EFA\u4E3A\u6301\u4E45\u5DE5\u4F5C\u9879\u3002","workCenter.noAttentionTitle":"\u5F53\u524D\u6CA1\u6709\u9700\u8981\u5904\u7406\u7684\u5DE5\u4F5C\u9879","workCenter.noAttentionBody":"\u7B49\u5F85\u4F60\u56DE\u7B54\u6216\u9700\u8981\u6062\u590D\u7684\u5DE5\u4F5C\u9879\u4F1A\u663E\u793A\u5728\u8FD9\u91CC\u3002","workCenter.noActiveTitle":"\u5F53\u524D\u6CA1\u6709\u6267\u884C\u4E2D\u7684\u5DE5\u4F5C\u9879","workCenter.noActiveBody":"\u8349\u7A3F\u3001\u5C31\u7EEA\u548C\u6267\u884C\u4E2D\u7684\u5DE5\u4F5C\u9879\u4F1A\u663E\u793A\u5728\u8FD9\u91CC\u3002","workCenter.noCompletedTitle":"\u8FD8\u6CA1\u6709\u5DF2\u5B8C\u6210\u7684\u5DE5\u4F5C\u9879","workCenter.noCompletedBody":"\u5B8C\u6210\u540E\u7684\u5DE5\u4F5C\u9879\u4F1A\u663E\u793A\u5728\u8FD9\u91CC\u3002","workCenter.noMatchesTitle":"\u6CA1\u6709\u5339\u914D\u7684\u5DE5\u4F5C\u9879","workCenter.noMatchesBody":"\u5C1D\u8BD5\u8C03\u6574\u641C\u7D22\u5185\u5BB9\u6216\u7B5B\u9009\u6761\u4EF6\u3002","workCenter.selectTitle":"\u5DE5\u4F5C\u9879\u8BE6\u60C5","workCenter.detailLoading":"\u6B63\u5728\u52A0\u8F7D\u5B8C\u6574\u8BE6\u60C5\u2026","workCenter.detailLoadFailed":"\u65E0\u6CD5\u52A0\u8F7D\u5B8C\u6574\u8BE6\u60C5","workCenter.start":"\u5F00\u59CB","workCenter.retry":"\u91CD\u8BD5","workCenter.cancel":"\u53D6\u6D88","workCenter.closeWorkItem":"\u5173\u95ED\u8BE6\u60C5","workCenter.cancelWorkItem":"\u505C\u6B62\u5DE5\u4F5C\u9879","workCenter.cancelWorkItemHint":"\u505C\u6B62\u8FD9\u4E2A\u5DE5\u4F5C\u9879\u53CA\u6240\u6709\u5C1A\u672A\u5B8C\u6210\u7684 Actions\u3002","workCenter.cancelConfirm":"\u505C\u6B62\u8FD9\u4E2A\u5DE5\u4F5C\u9879\u53CA\u5176\u5C1A\u672A\u5B8C\u6210\u7684 Actions\uFF1F","workCenter.stopWorkItem":"\u505C\u6B62\u5DE5\u4F5C\u9879","workCenter.resumeWorkItem":"\u6062\u590D\u5DE5\u4F5C\u9879","workCenter.breadcrumbs":"Work Center \u5BFC\u822A","workCenter.actionNumber":"Action {number}","workCenter.actionBreadcrumb":"Action {number}\uFF1A{description}","workCenter.untitledAction":"\u672A\u547D\u540D Action","workCenter.workItems":"\u5DE5\u4F5C\u9879","workCenter.description":"\u9700\u6C42\u63CF\u8FF0","workCenter.goal":"\u76EE\u6807","workCenter.acceptanceCriteria":"\u9A8C\u6536\u6761\u4EF6","workCenter.noCriteria":"\u672A\u63D0\u4F9B\u9A8C\u6536\u6761\u4EF6","workCenter.failureReason":"\u5931\u8D25\u539F\u56E0","workCenter.workflow":"\u4EFB\u52A1\u6D41","workCenter.triageSummary":"Triage \u6458\u8981","workCenter.actionFlow":"Action \u6D41\u7A0B","workCenter.viewActions":"\u67E5\u770B Actions","workCenter.actionsPanel":"Actions","workCenter.closeActions":"\u5173\u95ED Actions","workCenter.actionCount":"{count} \u4E2A Action","workCenter.noActionSummary":"\u6682\u65E0\u6458\u8981","workCenter.actionProgress":"{completed} / {total} \u4E2A Action","workCenter.currentAction":"\u5F53\u524D Action","workCenter.expandActions":"\u5C55\u5F00 Action","workCenter.collapseActions":"\u6536\u8D77","workCenter.actionObjective":"\u8FD9\u6B21\u8981\u505A\u4EC0\u4E48","workCenter.actionApproach":"\u51C6\u5907\u600E\u4E48\u505A","workCenter.actionExpectedOutcome":"\u671F\u5F85\u7684\u7ED3\u679C","workCenter.dependencies":"\u6765\u6E90 Action","workCenter.actionResult":"\u6700\u65B0\u7ED3\u679C","workCenter.currentProgress":"\u5F53\u524D\u8FDB\u5EA6","workCenter.actionMessages":"\u6D88\u606F","workCenter.loops":"\u4E2A Loop","workCenter.tools":"\u6B21\u5DE5\u5177\u8C03\u7528","workCenter.noActionMessages":"\u8FD8\u6CA1\u6709\u6D88\u606F\u3002","workCenter.actionDetails":"Action \u8BE6\u60C5","workCenter.selectAction":"\u9009\u62E9\u4E00\u4E2A Action","workCenter.backToWorkItems":"\u5DE5\u4F5C\u9879","workCenter.backToActions":"\u8FD4\u56DE Actions","workCenter.you":"\u4F60","workCenter.noRequestDetails":"\u8FD9\u4E2A Action \u6682\u65F6\u6CA1\u6709\u53EF\u7528\u7684\u6267\u884C\u8BB0\u5F55\u3002","workCenter.loadingRequests":"\u6B63\u5728\u52A0\u8F7D\u6267\u884C\u8BB0\u5F55\u2026","workCenter.loadingRequestDetail":"\u6B63\u5728\u52A0\u8F7D\u5DE5\u5177\u8BC1\u636E\u2026","workCenter.requestDetailUnavailable":"\u5DE5\u5177\u8BC1\u636E\u6682\u4E0D\u53EF\u7528\uFF0C\u8BF7\u91CD\u8BD5\u3002","workCenter.noRequestLoops":"\u8FD9\u6B21\u6267\u884C\u6CA1\u6709\u4FDD\u7559\u4E0B\u53EF\u5C55\u793A\u7684 Loop\u3002","workCenter.requestDetailTruncated":"\u6267\u884C\u5185\u5BB9\u8F83\u5927\uFF1A{summarized} \u4E2A Loop \u663E\u793A\u6458\u8981\uFF0C\u53E6\u6709 {omitted} \u4E2A\u8F83\u65E9 Loop \u672A\u663E\u793A\u3002","workCenter.loopDetailTruncated":"\u8FD9\u4E2A Loop \u5185\u5BB9\u8F83\u5927\uFF0C\u5F53\u524D\u663E\u793A\u4FDD\u7559\u4E0B\u6765\u7684\u5DE5\u5177\u8BC1\u636E\u3002","workCenter.loadEarlierMessages":"\u52A0\u8F7D\u66F4\u65E9\u6D88\u606F","workCenter.loadingEarlierMessages":"\u6B63\u5728\u52A0\u8F7D\u66F4\u65E9\u6D88\u606F\u2026","workCenter.unknownModel":"\u672A\u77E5\u6A21\u578B","workCenter.loop":"Loop","workCenter.actionBrief":"\u4EFB\u52A1\u8BF4\u660E","workCenter.executionSummary":"\u6267\u884C\u6458\u8981","workCenter.toolParameters":"\u8C03\u7528\u53C2\u6570","workCenter.toolResult":"\u6267\u884C\u7ED3\u679C","workCenter.noToolCalls":"\u8FD9\u4E2A Loop \u6CA1\u6709\u5DE5\u5177\u8C03\u7528\u3002","workCenter.actionInputPlaceholder":"\u8865\u5145\u4E0A\u4E0B\u6587\u3001\u56DE\u7B54\u95EE\u9898\u6216\u8C03\u6574\u8FD9\u4E2A Action","workCenter.actionInputResumeHint":"\u4F60\u7684\u8F93\u5165\u4F1A\u5E26\u7740\u65B0\u589E\u4E0A\u4E0B\u6587\u7EE7\u7EED\u8FD9\u4E2A Action\u3002","workCenter.waitingQuestionTitle":"\u9700\u8981\u4F60\u7684\u56DE\u7B54","workCenter.actionInputRetryHint":"\u8865\u5145\u4FEE\u6B63\u8BF4\u660E\u6216\u6587\u4EF6\u540E\uFF0C\u4F7F\u7528\u65B0\u4E0A\u4E0B\u6587\u91CD\u65B0\u6267\u884C\u8FD9\u4E2A Action\u3002","workCenter.actionInputContinueHint":"\u8FD9\u91CC\u53EA\u76F4\u63A5\u5E72\u9884\u5F53\u524D Action\u3002","workCenter.actionFailedTitle":"\u8FD9\u4E2A Action \u4E3A\u4EC0\u4E48\u5931\u8D25","workCenter.failedAt":"\u5931\u8D25\u65F6\u95F4","workCenter.actionFailureRecovery":"\u5728\u5DE5\u4F5C\u9879\u8F93\u5165\u6846\u4E2D\u9009\u62E9\u6B64 Action\uFF0C\u518D\u53D1\u9001\u4FEE\u6B63\u8BF4\u660E\u3002","workCenter.sendInput":"\u53D1\u9001\u7ED9 Action","workCenter.sendingInput":"\u6B63\u5728\u53D1\u9001\u2026","workCenter.retryAction":"\u91CD\u8BD5 Action","workCenter.sendAndRetryAction":"\u53D1\u9001\u5E76\u91CD\u8BD5 Action","workCenter.coordinatorDecision.guide_actions":"\u5DF2\u66F4\u65B0 Action \u6307\u4EE4","workCenter.coordinatorDecision.replan":"\u5DF2\u66F4\u65B0\u76EE\u6807\u6216\u8BA1\u5212","workCenter.coordinatorDecision.request_human":"\u9700\u8981\u4EBA\u5DE5\u8865\u5145\u4FE1\u606F","workCenter.conversation":"\u5BF9\u8BDD","workCenter.contentPane":"\u5185\u5BB9","workCenter.workItemPanes":"\u5DE5\u4F5C\u9879\u9762\u677F","workCenter.coordinator":"\u534F\u8C03\u8005","workCenter.coordinatorTargetHint":"\u5DE5\u4F5C\u9879\u89C4\u5212\u4E0E\u534F\u8C03","workCenter.composerTarget":"\u6D88\u606F\u76EE\u6807","workCenter.targetUnavailable":"\u6240\u9009 Action \u5DF2\u4E0D\u53EF\u7528","workCenter.targetUnavailableHelp":"\u53D1\u9001\u524D\u8BF7\u9009\u62E9\u5176\u4ED6\u76EE\u6807\uFF1B\u7CFB\u7EDF\u6CA1\u6709\u91CD\u5B9A\u5411\u8FD9\u4EFD\u8349\u7A3F\u3002","workCenter.sendToCoordinatorInstead":"\u6539\u53D1\u7ED9 Coordinator","workCenter.sendToTarget":"\u53D1\u9001\u7ED9 {target}","workCenter.answerWithTarget":"\u5728\u5BF9\u8BDD\u8F93\u5165\u6846\u4E2D\u9009\u62E9\u76F8\u5173\u76EE\u6807\uFF0C\u7136\u540E\u56DE\u590D\u3002","workCenter.conversationThinking":"\u5904\u7406\u4E2D\u2026","workCenter.conversationReadOnly":"\u8FD9\u4E2A\u5DE5\u4F5C\u9879\u5DF2\u5173\u95ED\uFF0C\u5BF9\u8BDD\u8BB0\u5F55\u4ECD\u53EF\u67E5\u770B\u3002","workCenter.conversationPlaceholder":"\u7EE7\u7EED\u8BA8\u8BBA\u8FD9\u4E2A\u5DE5\u4F5C\u9879","workCenter.sendMessage":"\u53D1\u9001\u6D88\u606F","workCenter.messageSpeakerRole":"{name} \xB7 {role}","workCenter.originalRequest":"\u539F\u59CB\u9700\u6C42","workCenter.actionMessageScopeTitle":"\u7ED9\u8FD9\u4E2A Action \u53D1\u6D88\u606F","workCenter.actionMessageScope":"\u6D88\u606F\u53EA\u53D1\u9001\u7ED9\u5F53\u524D Action\u3002","workCenter.actionConversation":"\u5BF9\u8BDD","workCenter.actionConversationWith":"Action \u6267\u884C\u8005","workCenter.actionViews":"Action \u89C6\u56FE","workCenter.actionExecutor":"\u6267\u884C\u8005","workCenter.actionExecutorPending":"\u7B49\u5F85\u5206\u914D\u6267\u884C\u8005","workCenter.actionInformation":"Action \u4FE1\u606F","workCenter.messageExecutor":"\u7ED9 {name} \u53D1\u6D88\u606F","workCenter.actionChatPlaceholder":"\u5728\u5BF9\u8BDD\u8F93\u5165\u6846\u4E2D\u7ED9 {name} \u53D1\u6D88\u606F","workCenter.statusLabel":"\u72B6\u6001","workCenter.llmRequestsLabel":"LLM \u8BF7\u6C42","workCenter.loopsLabel":"Loops","workCenter.toolsLabel":"\u5DE5\u5177","workCenter.tokensLabel":"Tokens","workCenter.workItemMessagePlaceholder":"\u8865\u5145\u6574\u4E2A Work Item \u7684\u65B9\u5411\u6216\u7EA6\u675F","workCenter.sendWorkItemMessage":"\u53D1\u9001\u7ED9 Work Item","workCenter.fromSession":"\u4ECE\u5F53\u524D Session \u521B\u5EFA\u5DE5\u4F5C\u9879","workCenter.llmRequestCount":"{count} \u6B21 LLM \u8BF7\u6C42","workCenter.loopCount":"{count} \u6B21 Loop","workCenter.toolCount":"{count} \u4E2A\u5DE5\u5177","workCenter.tokenCount":"{count} tokens","workCenter.tokenBreakdown":"\u8F93\u5165 {input} / \u8F93\u51FA {output} / \u7F13\u5B58 {cache}","workCenter.guidance":"\u7ED9\u5F53\u524D Action \u8865\u5145\u63D0\u793A","workCenter.guidanceHint":"\u8865\u5145\u7EA6\u675F\uFF0C\u6216\u8C03\u6574\u5F53\u524D Action \u7684\u6267\u884C\u65B9\u5411","workCenter.guidanceRestartHint":"\u53D1\u9001\u540E\u4F1A\u4F7F\u7528\u65B0\u63D0\u793A\u91CD\u542F\u5F53\u524D Action\u3002","workCenter.sendGuidance":"\u53D1\u9001\u63D0\u793A","workCenter.reuseMemory":"\u4F7F\u7528\u76F8\u5173 Agent memory \u548C\u6B64\u9879\u76EE\u7684\u5DF2\u5B8C\u6210\u5DE5\u4F5C","workCenter.reuseMemoryHelp":"\u5305\u62EC\u53D7 scope \u7EA6\u675F\u7684 Agent memory\uFF0C\u4EE5\u53CA canonical \u9879\u76EE\u76EE\u5F55\u76F8\u540C\u7684\u5DF2\u5B8C\u6210 Work Item \u7ED3\u6784\u5316\u6458\u8981\u548C\u8BC1\u636E\uFF1B\u4E0D\u4F1A\u590D\u7528\u539F\u59CB\u5DE5\u5177\u8F93\u51FA\u3002","workCenter.resumeAnswer":"\u56DE\u7B54\u7B49\u5F85\u4E2D\u7684\u95EE\u9898","workCenter.resumeAnswerHint":"\u63D0\u4F9B\u7EE7\u7EED\u6267\u884C\u6240\u9700\u7684\u4FE1\u606F","workCenter.answerInActionDetail":"\u5728\u5BF9\u8BDD\u8F93\u5165\u6846\u4E2D\u5C06\u76EE\u6807\u8BBE\u4E3A\u5F53\u524D Action\uFF0C\u7136\u540E\u56DE\u590D\u3002","workCenter.selectPrompt":"\u9009\u62E9\u4E00\u4E2A\u5DE5\u4F5C\u9879\uFF0C\u67E5\u770B\u5B83\u7684\u6D41\u7A0B\u3002","workCenter.createHint":"\u63CF\u8FF0\u4F60\u9700\u8981\u4EC0\u4E48\uFF0CCoordinator \u4F1A\u6301\u7EED\u521B\u5EFA\u5F53\u524D\u5FC5\u8981\u7684 Actions\uFF0C\u76F4\u5230\u9A8C\u6536\u6761\u4EF6\u5F97\u5230\u9A8C\u8BC1\u3002","workCenter.requirement":"\u9700\u6C42","workCenter.requirementHint":"\u7528\u81EA\u7136\u8BED\u8A00\u63CF\u8FF0\u95EE\u9898\u3001\u671F\u671B\u7ED3\u679C\u548C\u5FC5\u8981\u7EA6\u675F","workCenter.requirementHelp":"Coordinator \u4F1A\u5B8C\u5584\u76EE\u6807\u4E0E\u9A8C\u6536\u6761\u4EF6\uFF0C\u5E76\u968F\u7740\u8BC1\u636E\u4EA7\u751F\u52A8\u6001\u521B\u5EFA Actions\u3002","workCenter.titleField":"\u6807\u9898","workCenter.titleHint":"\u7B80\u77ED\u3001\u660E\u786E\u5730\u63CF\u8FF0\u9884\u671F\u7ED3\u679C","workCenter.goalHint":"\u8BF4\u660E Agent \u5FC5\u987B\u4EA4\u4ED8\u7684\u6700\u7EC8\u7ED3\u679C","workCenter.criteriaHint":"\u6BCF\u884C\u4E00\u6761\u9A8C\u6536\u6761\u4EF6","workCenter.attachments":"\u9644\u4EF6","workCenter.attachmentsHelp":"\u56FE\u7247\u3001PDF \u548C\u6587\u672C\u6587\u4EF6\u4F1A\u6301\u7EED\u7ED1\u5B9A\u5230\u6B64 Work Item\uFF0C\u5E76\u63D0\u4F9B\u7ED9\u6BCF\u4E2A Action\u3002","workCenter.attachmentsUnsupported":"\u6240\u9009 Agent \u4E0D\u652F\u6301 Work Item \u9644\u4EF6\u3002","workCenter.addAttachments":"\u6DFB\u52A0\u6587\u4EF6","workCenter.attachmentsUploading":"\u4E0A\u4F20\u4E2D\u2026","workCenter.attachmentsUploadFailed":"\u9644\u4EF6\u4E0A\u4F20\u5931\u8D25","workCenter.pendingEnvelopeLocked":"\u6709\u4E00\u6761\u672A\u786E\u8BA4\u8BF7\u6C42\u5DF2\u9501\u5B9A\u5230\u539F\u59CB\u8EAB\u4EFD\u3002","workCenter.replacePendingAttachments":"\u66FF\u6362\u9644\u4EF6","workCenter.discardPendingEnvelope":"\u653E\u5F03\u5F85\u786E\u8BA4\u8BF7\u6C42","workCenter.pendingEnvelopeChanged":"\u5F85\u786E\u8BA4\u8BF7\u6C42\u5DF2\u53D8\u5316\uFF0C\u8BF7\u91CD\u65B0\u6253\u5F00\u8BE5\u5DE5\u4F5C\u9879\u540E\u518D\u8BD5\u3002","workCenter.removeAttachment":"\u4ECE\u8349\u7A3F\u4E2D\u79FB\u9664","workCenter.previewAttachment":"\u6253\u5F00\u9644\u4EF6","workCenter.openAttachmentNamed":"\u6253\u5F00\u9644\u4EF6 {name}","workCenter.openingAttachment":"\u6B63\u5728\u6253\u5F00\u9644\u4EF6\u2026","workCenter.attachmentPreviewFailed":"\u65E0\u6CD5\u6253\u5F00\u9644\u4EF6\uFF0C\u8BF7\u91CD\u8BD5\u3002","workCenter.attachmentOpenBlocked":"\u6D4F\u89C8\u5668\u963B\u6B62\u4E86\u9644\u4EF6\u7A97\u53E3\uFF0C\u8BF7\u5141\u8BB8\u5F39\u51FA\u7A97\u53E3\u540E\u91CD\u8BD5\u3002","workCenter.execution":"\u6267\u884C\u65B9\u5F0F","workCenter.executionHint":"\u9009\u62E9\u5DE5\u4F5C\u9879\u5728\u54EA\u91CC\u6267\u884C\uFF0C\u4EE5\u53CA\u521B\u5EFA\u540E\u662F\u5426\u7ACB\u5373\u5F00\u59CB\u3002","workCenter.workDir":"\u5DE5\u4F5C\u76EE\u5F55","workCenter.workDirHint":"\u9009\u62E9\u4E00\u4E2A\u5DF2\u5B58\u5728\u7684\u9879\u76EE\u76EE\u5F55","workCenter.chooseFolder":"\u9009\u62E9\u6587\u4EF6\u5939","workCenter.workDirPickerHelp":"\u4ECE\u5F53\u524D Agent \u7684\u771F\u5B9E\u76EE\u5F55\u4E2D\u9009\u62E9\u5DF2\u5B58\u5728\u7684\u6587\u4EF6\u5939\u3002","workCenter.folderPickerHint":"\u9009\u62E9\u8FD9\u4E2A\u5DE5\u4F5C\u9879\u53EF\u4EE5\u8BFB\u53D6\u548C\u4FEE\u6539\u7684\u9879\u76EE\u76EE\u5F55\u3002","workCenter.folderPickerSelectionHint":"\u53CC\u51FB\u8FDB\u5165\u76EE\u5F55\uFF0C\u6216\u9009\u4E2D\u76EE\u5F55\u540E\u786E\u8BA4\u3002","workCenter.startImmediately":"\u7ACB\u5373\u5F00\u59CB","workCenter.startImmediatelyHint":"\u5173\u95ED\u540E\u5C06\u521B\u5EFA\u4E3A\u8349\u7A3F\uFF0C\u786E\u8BA4\u65E0\u8BEF\u540E\u518D\u5F00\u59CB\u3002","workCenter.creating":"\u521B\u5EFA\u4E2D\u2026","workCenter.create":"\u521B\u5EFA","workCenter.status.draft":"\u8349\u7A3F","workCenter.status.ready":"\u5F85\u6267\u884C","workCenter.status.running":"\u6267\u884C\u4E2D","workCenter.status.waiting":"\u7B49\u5F85\u4E2D","workCenter.status.needs_attention":"\u9700\u8981\u5904\u7406","workCenter.status.done":"\u5DF2\u5B8C\u6210","workCenter.status.cancelled":"\u5DF2\u53D6\u6D88","workCenter.status.completed":"\u5DF2\u5B8C\u6210","workCenter.status.failed":"\u5931\u8D25","workCenter.status.superseded":"\u5DF2\u66FF\u4EE3","workCenter.action.triage":"\u5206\u6790","workCenter.action.implement":"\u5B9E\u73B0","workCenter.action.review":"\u8BC4\u5BA1","workCenter.action.integrate":"\u96C6\u6210","workCenter.action.deliver":"\u4EA4\u4ED8","workCenter.action.test":"\u6D4B\u8BD5","workCenter.action.research":"\u7814\u7A76","workCenter.action.design":"\u8BBE\u8BA1","workCenter.action.diagnose":"\u8BCA\u65AD","workCenter.action.migrate":"\u8FC1\u79FB","workCenter.action.document":"\u6587\u6863","workCenter.action.operate":"\u8FD0\u7EF4","workCenter.action.write":"\u5199\u4F5C","workCenter.action.custom":"\u81EA\u5B9A\u4E49","workCenter.assignment.auto":"\u4F7F\u7528\u4EFB\u52A1\u6D41\u7B56\u7565","workCenter.model.inherit":"\u4F7F\u7528\u4EFB\u52A1\u6D41\u6A21\u578B","workCenter.model.defaultProvider":"\u9ED8\u8BA4 Provider","workCenter.planPreview":"\u6267\u884C\u8BA1\u5212","workCenter.planPreviewHelp":"\u6839\u636E\u5F53\u524D Agent \u7684 VP \u6C60\u548C\u6A21\u578B\u8BBE\u7F6E\u5B9E\u65F6\u89E3\u6790\u3002","workCenter.settings.title":"\u5DE5\u4F5C\u4E2D\u5FC3\u8BBE\u7F6E","workCenter.settings.subtitle":"\u914D\u7F6E Coordinator\uFF0C\u4EE5\u53CA AI \u52A8\u6001\u89C4\u5212\u4F7F\u7528\u7684 Action \u63D0\u793A\u8BCD\u3001\u6A21\u578B\u548C effort\u3002","workCenter.settings.workflow":"\u4EFB\u52A1\u6D41","workCenter.settings.workflowHelp":"Coordinator \u4F1A\u9488\u5BF9\u4EFB\u52A1\u52A8\u6001\u9009\u62E9 Action \u548C\u6267\u884C\u8005\u3002","workCenter.settings.aiWorkflowHelp":"Coordinator \u53EA\u521B\u5EFA\u5F53\u524D\u5FC5\u8981\u7684\u4EFB\u52A1\u4E13\u5C5E Action\u3002\u5185\u7F6E Action \u7B56\u7565\u662F\u53EF\u590D\u7528\u6A21\u677F\uFF1B\u9700\u8981\u65F6 Coordinator \u53EF\u4EE5\u521B\u5EFA\u7CBE\u786E\u7684\u9886\u57DF\u7C7B\u578B\u3002","workCenter.settings.globalInstructions":"Agent \u5168\u5C40\u6307\u4EE4","workCenter.settings.globalInstructionsHint":"\u4F8B\u5982\uFF1A\u9075\u5FAA\u4ED3\u5E93\u53D1\u5E03\u6D41\u7A0B\u3001\u5FC5\u987B\u72EC\u7ACB\u8BC4\u5BA1\uFF0C\u672A\u7ECF\u660E\u786E\u6279\u51C6\u4E0D\u5F97\u521B\u5EFA\u90E8\u7F72 tag\u3002","workCenter.settings.globalInstructionsHelp":"\u4FDD\u5B58\u5728 Agent \u7EA7\uFF0C\u5E76\u51BB\u7ED3\u8FDB\u6BCF\u4E2A\u65B0 Work Item\uFF1B\u5BF9 triage \u548C\u6240\u6709\u751F\u6210\u7684 Action \u751F\u6548\uFF0C\u4F18\u5148\u7EA7\u4F4E\u4E8E Work Item \u5951\u7EA6\u53CA\u7CFB\u7EDF/\u5DE5\u5177\u5B89\u5168\u89C4\u5219\u3002\u5DF2\u6709 Work Item \u4FDD\u7559\u539F\u5FEB\u7167\u3002","workCenter.settings.actionPolicies":"\u5185\u7F6E Action \u7B56\u7565","workCenter.settings.actionPoliciesHelp":"\u8FD9\u4E9B\u662F\u53EF\u590D\u7528\u7684\u6267\u884C\u57FA\u7EBF\uFF0C\u4E0D\u662F\u56FA\u5B9A\u5DE5\u4F5C\u6D41\u3002\u672A\u77E5\u7684\u9886\u57DF Action \u7C7B\u578B\u4F1A\u4F7F\u7528\u201C\u81EA\u5B9A\u4E49\u201D\u7B56\u7565\uFF0C\u5E76\u4FDD\u7559 triage \u751F\u6210\u7684\u7C7B\u578B\u548C\u4EFB\u52A1\u76EE\u6807\u3002","workCenter.settings.dynamicInstructionHelp":"AI \u4F1A\u52A0\u5165 Work Item \u5951\u7EA6\u3001\u5168\u5C40\u6307\u4EE4\u3001\u524D\u5E8F Action \u4E0A\u4E0B\u6587\u3001memory \u548C\u4EFB\u52A1\u4E13\u5C5E\u76EE\u6807\uFF1B\u8FD9\u91CC\u5B9A\u4E49\u8BE5 Action \u7C7B\u578B\u7684\u53EF\u590D\u7528\u884C\u4E3A\u3002","workCenter.settings.models":"\u6A21\u578B","workCenter.settings.modelsHelp":"Provider \u548C\u51ED\u8BC1\u4ECD\u7531 Agent LLM \u8BBE\u7F6E\u7BA1\u7406\uFF1B\u5DE5\u4F5C\u4E2D\u5FC3\u53EA\u9009\u62E9\u53EF\u7528\u6A21\u578B\u3002","workCenter.settings.dynamicModelsHelp":"Coordinator \u4E0E\u5B9E\u9645\u6267\u884C Action \u7684\u6A21\u578B\u53EF\u4EE5\u5206\u522B\u914D\u7F6E\u3002","workCenter.settings.coordinatorModel":"Coordinator","workCenter.settings.coordinatorModelHelp":"\u7528\u4E8E Work Item \u5BF9\u8BDD\u3001\u4FEE\u6539\u76EE\u6807\u548C\u91CD\u65B0\u89C4\u5212\uFF1B\u4E0D\u4F1A\u6267\u884C\u9879\u76EE\u5DE5\u5177\u3002","workCenter.settings.allActions":"\u6240\u6709 Action \u7684\u515C\u5E95\u7B56\u7565","workCenter.settings.maxConcurrentActions":"\u6700\u5927\u5E76\u53D1 Action \u6570","workCenter.settings.maxConcurrentActionsHelp":"\u9ED8\u8BA4 3\u3002\u975E Git\u3001\u810F\u5DE5\u4F5C\u533A\u3001\u5171\u4EAB\u526F\u4F5C\u7528\u548C\u96C6\u6210 Action \u4ECD\u4F1A\u4E32\u884C\u6267\u884C\u3002","workCenter.workItemType":"\u7C7B\u578B","workCenter.typeAuto":"Auto \u2014 \u7531 LLM \u63A8\u65AD","workCenter.typeHelp":"\u53EF\u9009\u62E9\u4EFB\u52A1\u7C7B\u522B\uFF0C\u4E5F\u53EF\u8BA9 AI \u81EA\u52A8\u63A8\u65AD\uFF1B\u5177\u4F53 Actions \u59CB\u7EC8\u7531 AI \u89C4\u5212\u3002","workCenter.planning":"\u89C4\u5212\u4E2D","workCenter.aiPlan":"Coordinator \u9A71\u52A8\u6267\u884C","workCenter.aiPlanHelp":"Coordinator \u4F1A\u4F9D\u636E\u5F53\u524D\u8BC1\u636E\u9009\u62E9\u4E0B\u4E00\u6279 Action \u548C\u6267\u884C\u8005\uFF0C\u4E0D\u518D\u9884\u5148\u751F\u6210\u5DE5\u4F5C\u6D41\u56FE\uFF1B\u6A21\u578B\u4E0E effort \u7531 Work Center \u8BBE\u7F6E\u63A7\u5236\u3002","workCenter.settings.manageProviders":"\u7BA1\u7406 Agent \u6A21\u578B","workCenter.settings.assignment":"VP \u9009\u62E9","workCenter.settings.assignment.auto":"\u4ECE\u5168\u90E8 VP \u81EA\u52A8\u9009\u62E9","workCenter.settings.assignment.pool":"\u5019\u9009\u6C60","workCenter.settings.assignment.fixed":"\u56FA\u5B9A VP","workCenter.settings.capability":"\u6240\u9700\u80FD\u529B","workCenter.settings.vp":"Virtual Person","workCenter.settings.poolMembers":"\u5019\u9009 VP","workCenter.settings.modelPolicy":"\u6A21\u578B\u7B56\u7565","workCenter.settings.model.inherit":"\u7EE7\u627F VP \u504F\u597D","workCenter.settings.model.primary":"Agent \u4E3B\u6A21\u578B","workCenter.settings.model.fast":"Agent \u5FEB\u6A21\u578B","workCenter.settings.model.specific":"\u6307\u5B9A\u6A21\u578B","workCenter.settings.model":"\u6A21\u578B","workCenter.settings.effort":"\u63A8\u7406\u5F3A\u5EA6","workCenter.settings.effortDefault":"\u6A21\u578B\u9ED8\u8BA4\u503C","workCenter.settings.effortHelp":"\u8986\u76D6\u6240\u9009\u6A21\u578B\u7684\u9ED8\u8BA4\u63A8\u7406\u5F3A\u5EA6\uFF0C\u5E76\u7528\u4E8E\u6240\u6709 Work Center Action\u3002","workCenter.settings.effortChooseModelHelp":"\u9009\u62E9 Agent \u4E3B\u6A21\u578B\u3001\u5FEB\u6A21\u578B\u6216\u6307\u5B9A\u6A21\u578B\u540E\u53EF\u914D\u7F6E\u63A8\u7406\u5F3A\u5EA6\uFF1B\u7EE7\u627F VP \u504F\u597D\u65F6\u4F7F\u7528\u5404 VP \u6A21\u578B\u7684\u9ED8\u8BA4\u503C\u3002","workCenter.settings.effortUnsupportedHelp":"\u6240\u9009\u6A21\u578B\u4E0D\u63D0\u4F9B\u53EF\u914D\u7F6E\u7684\u63A8\u7406\u5F3A\u5EA6\uFF0C\u56E0\u6B64\u4F7F\u7528\u6A21\u578B\u9ED8\u8BA4\u503C\u3002","workCenter.settings.saving":"\u4FDD\u5B58\u4E2D\u2026","workCenter.settings.reload":"\u91CD\u65B0\u52A0\u8F7D\u8BBE\u7F6E","workCenter.settings.conflict":"\u8BBE\u7F6E\u5DF2\u5728\u5176\u4ED6\u4F4D\u7F6E\u66F4\u65B0\uFF0C\u8BF7\u91CD\u65B0\u52A0\u8F7D\u540E\u518D\u4FDD\u5B58\u3002","workCenter.settings.upgradeRequired":"\u5F53\u524D Agent \u7248\u672C\u65E0\u6CD5\u4FDD\u5B58\u5DE5\u4F5C\u4E2D\u5FC3\u8BBE\u7F6E\u3002\u8FD9\u91CC\u4EE5\u53EA\u8BFB\u65B9\u5F0F\u663E\u793A\u5F53\u524D\u503C\uFF1B\u5347\u7EA7 Agent \u540E\u5373\u53EF\u7F16\u8F91\u5E76\u4FDD\u5B58\u3002","workCenter.settings.saveNotConfirmed":"Agent \u672A\u786E\u8BA4\u672C\u6B21\u63D0\u4EA4\u7684\u63D0\u793A\u8BCD\u548C\u6A21\u578B\u7B56\u7565\u3002\u8BBE\u7F6E\u7A97\u53E3\u4E0D\u4F1A\u5173\u95ED\uFF1B\u8BF7\u91CD\u65B0\u52A0\u8F7D\u6216\u5347\u7EA7 Agent \u540E\u518D\u8BD5\u3002","workCenter.settings.addWorkflow":"\u590D\u5236\u4EFB\u52A1\u6D41","workCenter.settings.removeWorkflow":"\u5220\u9664","workCenter.settings.newWorkflow":"\u4EFB\u52A1\u6D41 {index}","workCenter.settings.workflowName":"\u4EFB\u52A1\u6D41\u540D\u79F0","workCenter.settings.newStage":"\u65B0\u9636\u6BB5","workCenter.settings.addStage":"\u6DFB\u52A0\u9636\u6BB5","workCenter.settings.removeStage":"\u5220\u9664\u9636\u6BB5","workCenter.settings.moveUp":"\u4E0A\u79FB\u9636\u6BB5","workCenter.settings.moveDown":"\u4E0B\u79FB\u9636\u6BB5","workCenter.settings.stageType":"\u9636\u6BB5\u7C7B\u578B","workCenter.settings.reviewReturnStage":"\u8981\u6C42\u4FEE\u6539\u65F6\u9000\u56DE\u9636\u6BB5","workCenter.settings.instruction":"\u9636\u6BB5 Prompt","workCenter.settings.instructionHint":"\u5B9A\u4E49\u8FD9\u4E2A\u9636\u6BB5\u5177\u4F53\u8981\u505A\u4EC0\u4E48\u3002","workCenter.settings.instructionHelp":"\u8FD0\u884C\u65F6\u4F1A\u81EA\u52A8\u52A0\u5165 Work Item \u7684\u76EE\u6807\u3001\u9A8C\u6536\u6807\u51C6\u548C\u53EF\u590D\u7528\u4E0A\u4E0B\u6587\u3002","workCenter.settings.instructionReset":"\u6062\u590D\u9ED8\u8BA4\u503C"}});var Wp,jp=N(()=>{Wp={"common.loading":"Loading...","common.confirm":"OK","common.apply":"Apply","common.cancel":"Cancel","common.delete":"Delete","common.copy":"Copy","common.copied":"Copied","common.close":"Close","common.refresh":"Refresh","common.open":"Open","common.save":"Save","common.search":"Search","common.back":"Back","common.noSubdirectories":"No subdirectories","common.drives":"Drives","common.rootDir":"Root","common.comma":", ","common.select":"Select","mermaid.export":"Export","mermaid.exportMd":"Export MD","mermaid.exportPng":"Export PNG","mermaid.exportJpg":"Export JPG","chat.toolActionsOmitted":"{count} older tool actions omitted","login.subtitle":"Yeaft Web Code Agent","login.username":"Username","login.password":"Password","login.login":"Login","login.loggingIn":"Logging in...","login.enterUsername":"Please enter your username","login.enterPassword":"Please enter your password","login.noAccount":"Don't have an account?","login.registerWithCode":"Register","login.or":"or","login.usePassword":"Sign in with username & password","login.useSso":"Back to single sign-on","login.noProviders":"No third-party sign-in providers are enabled.","login.microsoft":"Sign in with Microsoft","login.github":"Sign in with GitHub","login.google":"Sign in with Google","login.wechat":"Sign in with WeChat","login.alipay":"Sign in with Alipay","login.wechat.mobileUnsupported":"Sign in with WeChat is only available on PC. Please scan the QR code from a desktop browser.","login.alipay.mobileWaiting":"Waiting for you to confirm in the Alipay app\u2026 Once you finish, return to this page and you will be signed in automatically.","login.alipay.relaunch":"Open Alipay again","login.qr.title":"Scan to sign in","login.qr.titleAlipay":"Sign in with Alipay","login.qr.titleWechat":"Sign in with WeChat","login.qr.hint":"Scan the QR code with your phone to authorize.","login.error.enterUsername":"Please enter your username","login.error.enterPassword":"Please enter your password","login.error.enter6Digit":"Please enter a 6-digit code","login.error.enterInviteCode":"Please enter the invite code","login.error.usernameMinLen":"Username must be at least 2 characters","login.error.passwordMinLen":"Password must be at least 6 characters","login.error.passwordMismatch":"Passwords do not match","login.error.enterVerifyCode":"Please enter the verification code","login.error.loginFailed":"Login failed","login.forgot.link":"Forgot password?","login.forgot.title":"Reset your password","login.forgot.emailHint":"Enter the email address on your account. We will send a 6-digit reset code.","login.forgot.sendCode":"Send Reset Code","login.forgot.sending":"Sending...","login.forgot.codeSent":"If the email is on file, a 6-digit reset code has been sent. Enter it below along with your new password.","login.forgot.resetBtn":"Reset Password","login.forgot.resetting":"Resetting...","login.forgot.success":"Password reset. You can now sign in with your new password.","login.forgot.emailInvalid":"Please enter a valid email","login.register.title":"New User Registration","login.register.inviteCode":"Invite Code","login.register.username":"Username","login.register.password":"Password (min 6 characters)","login.register.confirmPassword":"Confirm Password","login.register.email":"Email (optional)","login.register.submit":"Register","login.register.submitting":"Registering...","login.register.back":"Back to Login","login.register.success":"Registration successful, please login","login.register.enterCode":"Please enter the invite code","login.register.usernameMin":"Username must be at least 2 characters","login.register.passwordMin":"Password must be at least 6 characters","login.register.passwordMismatch":"Passwords do not match","login.totp.setupTitle":"Set Up Two-Factor Authentication","login.totp.setupHint":"Scan the QR code below with Microsoft Authenticator or Google Authenticator","login.totp.manualKey":"Or enter the key manually:","login.totp.enterCode":"Enter 6-digit code","login.totp.complete":"Complete Setup","login.totp.verifying":"Verifying...","login.totp.verify":"Verify","login.totp.prompt":"Enter the code from your Authenticator app","login.totp.invalidCode":"Please enter a 6-digit code","login.email.codeSent":"Verification code sent to {email}","login.email.enterCode":"Enter verification code","login.email.verify":"Verify","login.email.verifying":"Verifying...","login.email.enterCodeError":"Please enter the verification code","chat.agent.select":"Select Agent","chat.agent.manage":"Manage Agents","chat.agent.none":"No Agents","chat.agent.restarting":"Restarting","chat.agent.restart":"Restart","chat.agent.restartConfirm":`Are you sure you want to restart Agent "{name}"?
13
13
  All active conversations will be interrupted.`,"chat.agent.upgrade":"Upgrade","chat.agent.upgrading":"Upgrading","chat.agent.upgradeConfirm":`Upgrade Agent "{name}" to the latest version?
14
- The agent will restart after upgrading.`,"chat.agent.alreadyLatest":"Agent is already at the latest version (v{version}), no upgrade needed.","chat.agent.nodeIncompatible":"Agent upgrade aborted: target version v{version} requires Node {required}, but this machine is running Node {current}. Please upgrade Node.js first, then retry.","chat.agent.manualUpgradeRequired":'Agent v{version} predates the safe remote-upgrade handoff. Legacy clients do not report enough platform information to prove the update is safe, so this request was blocked instead of risking an offline Agent. Run "npm install -g @yeaft/webchat-agent@latest --registry=https://pkg.yeaft.com/" once on that machine, then start the Agent again. Automatic upgrades are supported from v{minimum}.',"chat.agent.online":"{count} Agent(s) online","chat.agent.selectFirst":"Please select an Agent first","chat.agent.yeaft":"Yeaft Chat","sidebar.toggle.chat":"Switch to Chat","sidebar.toggle.yeaft":"Switch to Yeaft","sidebar.surface.label":"Sidebar view","sidebar.surface.sessions":"Sessions","sidebar.provider.label":"Session provider","sidebar.provider.claude":"Claude","sidebar.sessions.new":"New session","sidebar.sessions.newChat":"New chat","sidebar.sessions.emptyProvider":"No sessions for this provider","sidebar.sessions.menu":"Session menu","sidebar.sessions.unread":"Unread","sidebar.sessions.pinned":"Pinned","sidebar.sessions.processing":"Reply in progress","sidebar.sessions.hidden":"Hidden sessions","sidebar.sessions.remove":"Remove from sidebar","sidebar.sessions.agent":"Agent","sidebar.sessions.provider":"Provider","sidebar.projects.title":"Projects","sidebar.projects.menu":"Project menu","sidebar.projects.new":"New project","sidebar.projects.newSession":"New Session in {name}","sidebar.projects.assignFailed":"Session created, but it could not be added to {name}. Error: {message}","sidebar.projects.empty":"No projects yet","sidebar.projects.noSessions":"Drag a Yeaft chat here","sidebar.projects.namePrompt":"Project name","sidebar.projects.renamePrompt":"Rename project","sidebar.projects.rename":"Rename project","sidebar.projects.delete":"Delete project","sidebar.projects.deleteConfirm":'Delete project "{name}"? Its chats will move to Recents.',"sidebar.projects.remove":"Remove from project","sidebar.projects.moveMenu":"Move to Projects","sidebar.projects.moveBack":"Back","sidebar.projects.moveEmpty":"No other projects","sidebar.projects.moveTo":"Move to {name}","sidebar.projects.instructions":"Project instructions","sidebar.projects.instructionsTitle":"{name} instructions","sidebar.projects.instructionsHint":"These instructions are added to the system prompt for every Session in this Project.","sidebar.projects.instructionsPlaceholder":"Add shared coding conventions, constraints, or workflow guidance...","sidebar.recents.title":"Recents","sidebar.recents.empty":"No chats found","yeaft.back":"Back","yeaft.session.people":"People","yeaft.session.peopleEmpty":"No people","yeaft.session.runningTasks":"Running tasks","yeaft.session.tasksEmpty":"No running tasks","yeaft.session.owner":"Owner","yeaft.session.started":"Started","yeaft.breadcrumb.label":"Thread filter","yeaft.breadcrumb.mainStream":"Main stream","yeaft.breadcrumb.backHint":"Return to full stream (Esc)","yeaft.featureDetail.ariaLabel":"Task detail","yeaft.featureDetail.replyTo":"Reply in:","yeaft.featureDetail.forkHint":"No active thread \u2014 fork a new one to reply.","yeaft.featureDetail.empty":"No messages for this task yet.","yeaft.featureDetail.threadPillHint":"Open thread","yeaft.featureDetail.summary.aria":"Task summary timeline","yeaft.featureDetail.summary.title":"Summary timeline","yeaft.featureDetail.summary.loading":"Loading summary history\u2026","yeaft.featureDetail.summary.empty":"No summaries yet.","yeaft.featureDetail.summary.error":"Summary history failed: {error}","yeaft.featureDetail.summary.showArchived":"Show archived","yeaft.featureDetail.related.aria":"Related tasks","yeaft.featureDetail.related.title":"Related tasks","yeaft.featureDetail.related.unlink":"Unlink","yeaft.featureDetail.members.aria":"Task members","yeaft.featureDetail.members.title":"Members","yeaft.featureDetail.members.abort":"Abort","yeaft.featureDetail.members.kick":"Kick","yeaft.model":"Model","yeaft.placeholder":"Ask anything...","yeaft.inbox":"Inbox","yeaft.inbox.tooltip":"Your default thread \u2014 one-on-one chat with Yeaft. New threads can be created for specific topics or tasks.","yeaft.sidebar.activeThreads":"Active","yeaft.sidebar.idleThreads":"Idle","yeaft.sidebar.archivedThreads":"Archived","yeaft.sidebar.tasks":"Tasks","yeaft.sidebar.emptyActive":"No active threads","yeaft.sidebar.emptyIdle":"No idle threads","yeaft.sidebar.emptyArchived":"No archived threads","yeaft.sidebar.emptyTasks":"No tasks match","yeaft.sidebar.results":"Results","yeaft.sidebar.resultsThreads":"Threads","yeaft.sidebar.kindThread":"thread","yeaft.sidebar.cancel":"Cancel","yeaft.sidebar.mergeInto":"Merge into\u2026","yeaft.sidebar.mergeNoCandidates":"No other threads to merge into","yeaft.sidebar.mergeConfirmTitle":"Merge this thread?","yeaft.sidebar.mergeIrreversible":"This cannot be undone. The source thread will be archived and its messages moved to the target.","yeaft.sidebar.mergeConfirm":"Merge","yeaft.settings.sidebarV2":"Experimental: Sidebar V2","yeaft.settings.sidebarV2Hint":"Thread list + task tree (preview).","yeaft.clearConfirm":"Clear all messages?","yeaft.mode":"Mode","yeaft.agent":"Agent","yeaft.connecting":"Connecting...","yeaft.ready":"Ready","yeaft.tools":"tools","yeaft.skills":"skills","yeaft.mcp":"MCP","yeaft.showSidebar":"Show sidebar","yeaft.hideSidebar":"Hide sidebar","yeaft.debug":"Debug","yeaft.debugClose":"Close debug panel","yeaft.debugTurns":"turns","yeaft.debugTabToolStats":"Tool Stats","yeaft.debugTabDream":"Dream","yeaft.debugTabRequestLog":"Request Log","yeaft.debugHistoryLoad":"Load request history","yeaft.debugHistoryLoading":"Loading...","yeaft.debugHistoryLoaded":"{count} loaded","yeaft.debugSearchPlaceholder":"Regex search request logs","yeaft.debugSearchHint":"Shows the latest 10 globally by default; search matches request summaries across Sessions.","yeaft.debugTurnAction":"View debug trace for this turn","yeaft.debugTurnContext":"Trace","yeaft.debugPanelEmpty":"Hover over an AI turn and click the debug icon to view its trace.","yeaft.dreamDebug.title":"Dream lifecycle","yeaft.dreamDebug.trigger":"Trigger","yeaft.dreamDebug.status":"Status","yeaft.dreamDebug.started":"Started","yeaft.dreamDebug.finished":"Finished","yeaft.dreamDebug.time":"Time","yeaft.dreamDebug.phase":"Phase","yeaft.dreamDebug.call":"Call","yeaft.dreamDebug.location":"Location","yeaft.dreamDebug.result":"Result","yeaft.dreamDebug.noLatest":"No dream check has been recorded for this session yet.","yeaft.dreamDebug.noEvents":"No dream events yet for this session.","yeaft.dreamDebug.outputTitle":"Dream output loaded for this session","yeaft.dreamDebug.scope":"Scope","yeaft.dreamDebug.lastDream":"Last dream","yeaft.dreamDebug.messagesCovered":"Messages covered","yeaft.dreamDebug.noOutput":"No dream output has been written for this session yet.","yeaft.dreamDebug.promptLoadTitle":"Dream memory loaded into system prompt","yeaft.dreamDebug.loadedInto":"Loaded into","yeaft.dreamDebug.vp":"VP","yeaft.dreamDebug.summaryToPrompt":"summary.md -> system prompt","yeaft.dreamDebug.itemList":"Dream runs and scopes","yeaft.dreamDebug.searchPlaceholder":"Search Dream sessions by title, id, or summary...","yeaft.dreamDebug.noSearchResults":"No Dream sessions match this search.","yeaft.dreamDebug.noSummary":"No summary available","yeaft.dreamDebug.segments":"segments","yeaft.dreamDebug.lastError":"Last error","yeaft.dreamDebug.overview":"Overview","yeaft.dreamDebug.sessionId":"Session ID","yeaft.dreamDebug.loadedAt":"Loaded at","yeaft.dreamDebug.layers":"Layers","yeaft.dreamDebug.summaryLayer":"Resident summary","yeaft.dreamDebug.noPromptLoad":"No prompt-load record is available for this scope.","yeaft.dreamDebug.segmentTitle":"Segments","yeaft.dreamDebug.sourceMessages":"Source messages","yeaft.dreamDebug.createdAt":"Created","yeaft.dreamDebug.updatedAt":"Updated","yeaft.dreamDebug.noSegments":"No memory segments are available for this scope.","yeaft.dreamDebug.requestResponse":"Request / Response","yeaft.dreamDebug.noRequestResponse":"No Dream request/response log has been persisted for this scope yet.","yeaft.dreamDebug.empty":"No Dream debug data has been recorded yet.","yeaft.debugGroupFollowMain":"Follow main pane","yeaft.debugGroupAll":"All sessions","yeaft.debugAssistantResponse":"Assistant response","yeaft.debugViewAssistantResponse":"View response","yeaft.debugToolInput":"Input","yeaft.debugToolResult":"Result","yeaft.debugToolRunning":"running","yeaft.debugToolRunningNoResult":"Running; no result yet","yeaft.debugShowDetails":"show","yeaft.debugHideDetails":"hide","yeaft.debugTurnStartedAt":"turn started at","yeaft.debugRequestAt":"request time","yeaft.debugRequestAtDerived":"derived from turn start (legacy loop)","yeaft.turn":"Turn {n}","yeaft.systemPrompt":"System Prompt","yeaft.messagesLabel":"Messages","yeaft.response":"Response","yeaft.toolCalls":"Tool Calls","yeaft.functionCalls":"Function Calls","yeaft.request":"Request","yeaft.pending":"(pending)","yeaft.inputTokens":"Input","yeaft.outputTokens":"Output","yeaft.duration":"Duration","yeaft.noDebugData":"No debug data yet","yeaft.showDebug":"Show debug panel","yeaft.hideDebug":"Hide debug panel","yeaft.reloadPage":"Reload page","yeaft.reloadMessages":"Reload messages","sidebar.sessions.syncing":"Syncing latest messages","yeaft.historySearch.label":"Search Session history","yeaft.historySearch.button":"Search messages","yeaft.historySearch.placeholder":"Search messages in this Session","yeaft.historySearch.searching":"Searching\u2026","yeaft.historySearch.minChars":"Type at least 2 characters","yeaft.historySearch.empty":"No matching messages","yeaft.historySearch.error":"Search failed. Try again.","yeaft.historySearch.unsupported":"Upgrade this Agent to search Session history.","yeaft.historySearch.more":"Load more results","yeaft.historySearch.you":"You","yeaft.historySearch.assistant":"Assistant","yeaft.outline.label":"Message history","yeaft.outline.sender":"Sender","yeaft.outline.allSenders":"All senders","yeaft.outline.title":"Message history","yeaft.outline.placeholder":"Search this conversation","yeaft.outline.searching":"Searching\u2026","yeaft.outline.loading":"Loading\u2026","yeaft.outline.older":"Load older messages","yeaft.outline.moreMatches":"Load more matches","yeaft.outline.minChars":"Type at least 2 characters","yeaft.outline.empty":"No messages yet","yeaft.outline.noMatches":"No matching messages","yeaft.outline.error":"Could not load the outline. Try again.","yeaft.outline.unsupported":"Upgrade this Agent to use the conversation outline.","yeaft.outline.you":"You","yeaft.outline.assistant":"Assistant","yeaft.outline.nonText":"Non-text response","yeaft.switchModel":"Switch model","yeaft.modelMenu.title":"Model and LLM settings","yeaft.modelMenu.label":"Model","yeaft.modelMenu.effort":"Effort","yeaft.modelMenu.effort.openaiReasoning":"Reasoning effort","yeaft.modelMenu.effort.anthropicBudget":"Thinking budget","yeaft.modelMenu.effort.anthropicAdaptive":"Adaptive thinking effort","yeaft.modelMenu.effort.minimal":"Minimal","yeaft.modelMenu.effort.low":"Low","yeaft.modelMenu.effort.medium":"Medium","yeaft.modelMenu.effort.high":"High","yeaft.modelMenu.effort.xhigh":"X-High","yeaft.modelMenu.effort.max":"Max","yeaft.modelMenu.noEffort":"This model does not expose a compatible effort control.","yeaft.modelMenu.configureHint":"Providers, keys, model list","yeaft.settings.title":"Settings","settings.yeaft.tabs.vp":"VP Library","settings.yeaft.tabs.search":"Search","settings.yeaft.tabs.mcp":"MCP","yeaft.settings.tabs.vp":"VP Library","yeaft.settings.tabs.search":"Search","yeaft.settings.tabs.mcp":"MCP","settings.mcp.title":"MCP servers","settings.mcp.description":"Connect Model Context Protocol servers to extend Yeaft with extra tools. Servers are stored in ~/.yeaft/config.json on the agent; tools appear in the LLM's catalogue as mcp__<server>__<tool>.","settings.mcp.reloadAll":"Reload all","settings.mcp.reloadOne":"Reconnect this server","settings.mcp.loading":"Working\u2026","settings.mcp.connected":"connected","settings.mcp.disconnected":"disconnected","settings.mcp.tools":"tools","settings.mcp.remove":"Remove","settings.mcp.empty":"No MCP servers configured yet. Add one below.","settings.mcp.addServer":"Add server","settings.mcp.addServerDesc":"Most MCP servers run as a local command \u2014 Yeaft launches it via stdio and discovers its tools.","settings.mcp.serverName":"Name","settings.mcp.command":"Command","settings.mcp.args":"Arguments","settings.mcp.argsPlaceholder":"e.g. -y @modelcontextprotocol/server-filesystem /tmp","settings.mcp.env":"Environment","settings.mcp.envPlaceholder":"KEY=value per line. Lines starting with # are ignored.","settings.mcp.saving":"Saving\u2026","settings.mcp.add":"Add","settings.mcp.cancel":"Clear","settings.mcp.connectFailed":"Saved but failed to connect","settings.mcp.addSuccess":"Server added","settings.mcp.removeSuccess":"Server removed","settings.mcp.reloadSuccess":"Reload requested","settings.mcp.confirmRemove":'Remove MCP server "{name}"? Its tools will disappear from the next LLM turn.',"settings.mcp.errors.nameRequired":"Name is required","settings.mcp.errors.nameFormat":"Name must be lowercase letters, digits, dashes or underscores only","settings.mcp.errors.commandRequired":"Command is required","settings.mcp.errors.argsParse":"Could not parse arguments","settings.mcp.errors.envParse":"Could not parse environment","search.settings.backendTitle":"Search backend","search.settings.backendDesc":"Choose the primary backend for the WebSearch tool. If the primary fails, the engine automatically falls back to HTML scraping.","search.settings.backend.tavily":"Tavily","search.settings.backend.tavilyHint":"Hosted search API. Free tier: 1000 queries/month. Recommended.","search.settings.backend.playwright":"Playwright service","search.settings.backend.playwrightHint":"Self-hosted browser-based search/fetch. Best for cloud IPs that get bot-blocked. Service not yet shipped.","search.settings.comingSoon":"Coming soon","search.settings.tavilyKeyTitle":"Tavily API key","search.settings.tavilyKeyDesc":"Stored on the agent in ~/.yeaft/config.json. Get a free key at","search.settings.tavilyKeyUnchanged":"(unchanged)","search.settings.clearKey":"Clear","search.settings.usageTitle":"Usage this month","search.settings.usageRefresh":"Refresh","search.settings.usageLoading":"Loading\u2026","search.settings.usagePlan":"Plan","search.settings.usageUsed":"Used","search.settings.usagePaygo":"Pay-as-you-go","search.settings.usageError":"Failed to load usage","search.settings.save":"Save","search.settings.saving":"Saving\u2026","search.settings.saveSuccess":"Saved","search.settings.cancel":"Reset","yeaft.settings.yeaftTitle":"Thread Concurrency & Archive","yeaft.settings.yeaftDesc":"Tune how many threads can run at once and when idle threads are auto-archived.","yeaft.settings.maxConcurrentLabel":"Max concurrent threads","yeaft.settings.maxConcurrentHint":"Maximum number of live threads at once (includes the always-on main thread). New threads beyond this cap are refused until an existing thread is archived or terminated. Range: 1-50.","yeaft.settings.archiveIdleDaysLabel":"Auto-archive idle threads after (days)","yeaft.settings.archiveIdleDaysHint":"Threads with no activity for this many days will be archived. Range: 1-3650.","yeaft.settings.yeaftSaveBtn":"Save","yeaft.settings.yeaftSaving":"Saving...","yeaft.settings.yeaftSaved":"Saved","yeaft.settings.yeaftLoading":"Loading...","yeaft.settings.yeaftLoadError":"Failed to load Yeaft settings","yeaft.settings.yeaftSaveError":"Failed to save Yeaft settings","yeaft.settings.rangeErrorConcurrent":"Must be between 1 and 50","yeaft.settings.rangeErrorArchive":"Must be between 1 and 3650","chat.session.creating":"Creating conversation...","chat.session.loadingHistory":"Loading conversation history...","yeaft.historyLoad.error":"Conversation history could not be loaded. Your messages are still stored on the Agent.","yeaft.historyLoad.retry":"Retry loading","yeaft.sessionInventory.error":"Sessions could not be loaded. Your conversations are still stored on the Agent.","yeaft.sessionInventory.retry":"Retry Sessions","chat.session.closed":"Conversation closed","chat.session.agentOffline":"Agent is offline. This session will be available when the agent reconnects.","chat.execution.cancelled":"Execution cancelled","chat.sidebar.expand":"Expand menu","chat.sidebar.collapse":"Collapse sidebar","chat.sidebar.workbench":"Workbench","chat.sidebar.newConv":"Conversation","chat.sidebar.recentChats":"Recent Chats","chat.sidebar.resumeConv":"Resume Conversation","chat.sidebar.lightMode":"Light Mode","chat.sidebar.darkMode":"Dark Mode","chat.sidebar.settings":"Settings","chat.sidebar.emptyHint":"Click the button above to create a new conversation","chat.sidebar.closeConv":"Close Conversation","chat.sidebar.renameConv":"Rename","chat.sidebar.pin":"Pin to top","chat.sidebar.unpin":"Unpin","chat.connection.connecting":"Connecting...","chat.connection.reconnecting":"Reconnecting ({current}/{max})...","chat.connection.updating":"Server is updating, please wait...","chat.connection.disconnected":"Disconnected","chat.connection.reconnect":"Reconnect","chat.connection.reconnectFailed":"Connection lost. Please click reconnect to retry.","chat.time.justNow":"Just now","chat.time.minutesAgo":"{count}m ago","chat.time.daysAgo":"{count}d ago","chat.time.today":"Today","chat.time.yesterday":"Yesterday","chat.delete.confirm":"Are you sure you want to close this conversation? This will terminate the corresponding Claude process.","chat.delete.enterWorkDir":"Please enter the working directory path","modal.newConv.workDir":"Work Directory","modal.newConv.inputOrSelect":"Enter or select a work directory","modal.newConv.browse":"Browse","modal.newConv.noWorkDirs":"No work directories","modal.newConv.selectAgent":"Please select an online Agent first","modal.newConv.create":"Create Conversation","modal.newConv.folderLabel":"\u{1F4C1} Work Directories","modal.newConv.provider":"Provider","modal.newConv.model":"Model","provider.claudeCode":"Claude Code","provider.copilot":"Copilot","modal.resume.workDir":"Work Directory","modal.resume.inputOrSelect":"Enter or select a work directory","modal.resume.browse":"Browse","modal.resume.tabFolders":"Directories","modal.resume.tabSessions":"History","modal.resume.noWorkDirs":"No work directories","modal.resume.selectWorkDir":"Please select a work directory first","modal.resume.noSessions":"No history sessions in this directory","modal.resume.untitled":"Untitled Session","modal.resume.folderLabel":"\u{1F4C1} Work Directories","modal.resume.sessionLabel":"\u{1F4AC} History Sessions","modal.resume.selectAgent":"Please select an online Agent first","modal.folderPicker.title":"Select Work Directory","modal.folderPicker.parentDir":"Parent Directory","welcome.subtitle":"Web Code Agent for sessions, tools, and VP collaboration","welcome.agentOnline":"{count} Agent(s) online","welcome.noAgents":"No Agents Online","welcome.noAgentsHint":"Please start an Agent and connect it to the server","welcome.noAgent":"No Agents Online","welcome.noAgentHint":"Please start an Agent and connect it to the server","welcome.setupAgent":"Set Up Agent","welcome.setupKicker":"Agent setup","welcome.setupTitle":"Connect your first Yeaft Agent","welcome.setupDesc":"Copy two commands to connect a local Agent. GitHub Copilot can configure models automatically.","welcome.setupInstallTitle":"Install CLI","welcome.setupCopilotTitle":"Configure models","welcome.setupRunTitle":"Start Agent","welcome.setupSecretLoading":"Preparing your Agent secret...","welcome.setupSecretError":"Could not prepare the Agent secret. Open Security settings to retry.","welcome.openSecuritySettings":"Open Security Settings","welcome.newConv":"Conversation","welcome.resumeHistory":"Resume History","messages.loadingMore":"Loading more messages...","messages.loadMore":"\u2191 Click or scroll up to load more","message.loadingMore":"Loading more messages...","message.loadMore":"\u2191 Click or scroll up to load more","message.scrollToLatest":"\u2193 Latest","message.showResponses":"Show {count} response(s)","message.hideResponses":"Hide response(s)","message.assistant":"Assistant","chat.waiting.disconnected":"Connection lost","chat.connecting":"Connecting to provider session...","chat.waiting.compacting":"Compacting context...","chat.waiting.agentOffline":"Agent offline","chat.waiting.sessionLost":"Session lost, refreshed, waiting for update...","chat.waiting.cliExited":"Claude process exited, refreshed, waiting for update...","chat.waiting.refresh":"Refresh","chat.waiting.thinking":"AI is thinking, please wait...","btw.hint":"esc to exit","btw.placeholder":"Ask a side question...","btw.close":"Exit BTW mode","message.copyContent":"Copy content","message.copy":"Copy content","message.copied":"Copied","message.copyCode":"Copy code","message.copyAll":"Copy all","message.screenshot":"Screenshot","message.screenshotting":"Taking screenshot...","message.exportMd":"Export MD","message.askInput":"Your input needed","message.askAnswered":"\u2713 Answered","message.askCustom":"Or type a custom answer...","message.askCustomPlaceholder":"Or type a custom answer...","message.askSubmit":"Submit Answer","message.askWaiting":"Waiting for question...","message.askExpired":"This question has expired. Ask the role to re-ask.","message.openInEditor":"Open in editor","message.resultDone":"Done","message.done":"Done","message.resultRead":"Read {file}","message.readFile":"Read {name}","message.file":"file","message.attachImages":"{count} image(s)","message.imageCount":"{count} image(s)","message.imagePreview":"Image preview","message.previousImage":"Previous image","message.nextImage":"Next image","message.imagePosition":"Image {current} of {total}","message.imageUnavailable":"Image unavailable","message.attachFiles":"{count} file(s)","message.fileCount":"{count} file(s)","message.quote":"Quote","message.removeQuote":"Remove quote","message.replyingTo":"Replying to {author}","message.quotedFrom":"Quoted from {author}","message.editAsNew":"Edit","message.you":"You","input.upload":"Upload file","input.placeholder":"Type a message...","input.send":"Send","input.stopExecution":"Stop execution","chatInput.upload":"Upload file","chatInput.uploading":"Uploading...","chatInput.uploadFailed":"Upload failed","chatInput.retryUpload":"Retry","chatInput.removeAttachment":"Remove attachment","chatInput.placeholder":"Type a message...","chatInput.send":"Send","chatInput.stop":"Stop execution","tools.thinking":"Thinking...","tools.read":"Reading file","tools.write":"Writing file","tools.edit":"Editing file","tools.bash":"Running command","tools.glob":"Searching files","tools.grep":"Searching content","tools.task":"Running task","tools.webFetch":"Fetching web page","tools.webSearch":"Searching the web","tools.todoWrite":"Updating tasks","tools.executing":"Running {name}","status.thinking":"Thinking...","status.reading":"Reading file","status.writing":"Writing file","status.editing":"Editing file","status.executing":"Running command","status.searchingFiles":"Searching files","status.searchingContent":"Searching content","status.executingTask":"Running task","status.fetching":"Fetching web page","status.searching":"Searching the web","status.updatingTasks":"Updating tasks","status.executingTool":"Running {name}","header.compacting":"Compressing context...","header.compacted":"Context compression complete","chatHeader.newConv":"Conversation","chatHeader.compacting":"Compressing context...","chatHeader.compactDone":"Context compression complete","chatHeader.compact":"Compact context","chatHeader.resume":"Resume session","chatHeader.refresh":"Refresh messages","chatHeader.reloadPage":"Reload page","chatHeader.clear":"Clear messages","chatHeader.clearing":"Clearing context...","chatHeader.clearDone":"Context cleared","chatHeader.confirmClear":"Are you sure you want to clear all messages in this conversation?","chatHeader.mcpConfig":"MCP Servers","chatHeader.mcpNeedRestart":"Changes will take effect after restarting the session.","chatHeader.expertPanel":"Expert Panel","chatHeader.subAgentPanel":"Sub-Agents","settings.close":"Close settings","settings.tabs.account":"Account","settings.tabs.security":"Security","settings.tabs.general":"General","settings.tabs.invitations":"Invitations","auth.sessionExpired":"Session expired. Please log in again.","settings.account.username":"Username","settings.account.role":"Role","settings.account.email":"Email","settings.account.emailNotSet":"Not set","settings.account.profileLoadFailed":"Failed to load account profile","settings.account.logout":"Log Out","settings.account.roleAdmin":"Admin","settings.account.rolePro":"Pro","settings.account.linkedAccounts":"Linked Accounts","settings.account.linkedDesc":"Link external sign-in providers so you can log in with any of them.","settings.account.bind":"Link","settings.account.unbind":"Unlink","settings.account.linked":"Linked","settings.account.providerDisabled":"Not configured","settings.account.cantUnbindLast":"Cannot unlink the only login method","settings.account.unbindFailed":"Failed to unlink: {error}","settings.account.bindFailed":"Failed to link account","settings.account.ssoBoundMsg":"Successfully linked {provider}.","settings.account.ssoConflictMsg":"This {provider} account is already linked to another user.","settings.account.providerMicrosoft":"Microsoft","settings.account.providerGithub":"GitHub","settings.account.providerGoogle":"Google","settings.account.providerWechat":"WeChat","settings.account.providerAlipay":"Alipay","settings.security.agentKey":"Agent Secret","settings.security.agentKeyDesc":"Shared secret for Agent connection authentication","settings.security.agentSetupCommands":"Agent setup commands","settings.security.agentCmdInstall":"Install Agent","settings.security.agentCmdService":"Run Agent server","settings.security.agentCmdNeedsSecret":"Generate an Agent Secret first to create the server command.","settings.security.agentCmdLlm":"Manual Copilot fallback","settings.security.agentCmdLlmDesc":"Run the install command first. If an existing GitHub Copilot token is available, Yeaft configures github-copilot/gpt-5.5 automatically; use the Copilot command only as a fallback.","settings.security.none":"None","settings.security.show":"Show","settings.security.hide":"Hide","settings.security.generateKey":"Generate Secret","settings.security.resetKey":"Reset Secret","settings.security.resetting":"Resetting...","settings.security.resetWarning":"All Agents need to be reconfigured after reset","settings.security.changePassword":"Change Password","settings.security.currentPassword":"Current password","settings.security.newPassword":"New password (min 6 characters)","settings.security.confirmPassword":"Confirm new password","settings.security.changeBtn":"Change Password","settings.security.changing":"Changing...","settings.security.enterCurrentPwd":"Please enter your current password","settings.security.newPwdMin":"New password must be at least 6 characters","settings.security.pwdMismatch":"Passwords do not match","settings.security.pwdChanged":"Password changed successfully","settings.security.setPassword":"Set a Password","settings.security.setPasswordDesc":"You signed in via SSO and have no password yet. Set one so you can also log in with username + password.","settings.security.setBtn":"Set Password","settings.security.pwdSet":"Password set successfully","settings.security.deleteAccount":"Delete Account","settings.security.deleteAccountDesc":"Permanently delete your account and all associated data. This cannot be undone.","settings.security.deleteBtn":"Delete Account","settings.security.deleteConfirmBtn":"Confirm Delete","settings.security.deleteConfirmPlaceholder":"Type DELETE to confirm","settings.security.deleteConfirmRequired":"Type DELETE to confirm account removal","settings.security.deleteFailed":"Failed to delete account","settings.security.deleting":"Deleting...","settings.general.theme":"Theme","settings.general.lightTheme":"Light","settings.general.darkTheme":"Dark","settings.general.language":"Language","settings.general.telemetry":"Performance telemetry","settings.general.telemetryDesc":"Buffer local timing diagnostics without sending trace content to the server.","settings.general.telemetryOn":"On","settings.general.telemetryOff":"Off","settings.general.telemetryRawLimit":"Raw provider response limit (bytes)","settings.invite.create":"Create Invite Code","settings.invite.normalUser":"Regular User","settings.invite.proUser":"Pro User","settings.invite.createBtn":"Create Invite","settings.invite.creating":"Creating...","settings.invite.list":"Invite Codes","settings.invite.used":"Used","settings.invite.expired":"Expired","settings.invite.available":"Available","settings.invite.usedBy":"Used by: {user}","settings.invite.expiredAt":"Expired at: {time}","settings.invite.expiresAt":"Expires at: {time}","settings.invite.noInvites":"No invite codes","settings.msg.copiedClipboard":"Copied to clipboard","settings.msg.copyFailed":"Copy failed","settings.msg.keyReset":"Secret has been reset","settings.msg.resetFailed":"Reset failed","settings.msg.changeFailed":"Change failed","settings.msg.inviteCreated":"Invite code created","settings.msg.createFailed":"Create failed","settings.msg.inviteCopied":"Invite code copied","settings.msg.inviteDeleted":"Invite code deleted","settings.msg.deleteFailed":"Delete failed","settings.tabs.llm":"LLM","settings.tabs.yeaft":"Yeaft","yeaft.session.title":"Sessions","yeaft.session.new":"+ New session","yeaft.session.create.title":"New session","yeaft.session.create.subtitle":"Choose where it runs and which provider should handle it.","yeaft.session.create.close":"Close","yeaft.session.create.nameLabel":"Name","yeaft.session.create.namePlaceholder":"Session name (optional)","yeaft.session.create.workDirLabel":"Work Directory","yeaft.session.create.agentLabel":"Agent","yeaft.session.create.vpPicker":"Pick VPs","yeaft.session.create.vpNone":"No VPs selected","yeaft.session.create.vpCount":"{n} VPs selected","yeaft.session.create.untitled":"Untitled session","yeaft.session.create.rosterEmpty":"No VPs available \u2014 create one from the VP Library first.","yeaft.session.create.rosterLoading":"Loading VPs\u2026","yeaft.session.create.rosterError":"VPs could not be loaded from this Agent.","yeaft.session.create.rosterRetry":"Retry","yeaft.vp.domain.general":"General & coordination","yeaft.vp.domain.productDesign":"Product & experience design","yeaft.vp.domain.softwareSystems":"Software & systems","yeaft.vp.domain.securityReliability":"Security & reliability","yeaft.vp.domain.scienceAnalysis":"Science & analysis","yeaft.vp.domain.philosophyPsychology":"Philosophy & psychology","yeaft.vp.domain.strategyHistory":"Strategy & history","yeaft.vp.domain.businessManagement":"Business & management","yeaft.vp.domain.artsCulture":"Arts & culture","yeaft.vp.domain.other":"Other specialties","yeaft.vp.domain.custom":"Custom VPs","yeaft.session.create.defaultVpHint":"The VP that answers when no one is @-mentioned.","yeaft.session.create.folderLabel":"\u{1F4C1} Work directories","yeaft.session.create.sessionLabel":"\u{1F4AC} Sessions in this directory","yeaft.session.create.noWorkDirs":"No prior sessions yet \u2014 pick or type a work directory above.","yeaft.session.create.back":"Back","yeaft.session.create.creating":"Creating\u2026","yeaft.session.create.submit":"Create","yeaft.onboarding.ariaLabel":"Yeaft getting started guide","yeaft.onboarding.topbarTitle":"Get started with Yeaft","yeaft.onboarding.eyebrow":"Yeaft setup guide","yeaft.onboarding.title":"Connect an Agent before chatting","yeaft.onboarding.subtitle":"Run these commands on the machine that should execute tools. The agent secret is generated automatically for your account if it does not exist yet.","yeaft.onboarding.createSession":"Create or restore Session","yeaft.onboarding.configureLlm":"Open LLM settings","yeaft.onboarding.secretLoading":"Generating agent secret\u2026","yeaft.onboarding.secretError":"Failed to load agent secret.","yeaft.onboarding.secretPending":"<loading-agent-secret>","yeaft.onboarding.installTitle":"Install yeaft-agent","yeaft.onboarding.installDesc":"Install the command-line Agent package.","yeaft.onboarding.connectTitle":"Connect this Agent","yeaft.onboarding.connectDesc":"The command below uses this server URL and your generated secret.","yeaft.onboarding.llmTitle":"Use GitHub Copilot","yeaft.onboarding.llmDesc":"Authenticate GitHub CLI, then select gpt-5.5 as the default Yeaft model.","yeaft.restore.modal.empty":"No yeaft sessions found in this directory","yeaft.restore.modal.scanError":"Failed to scan: {message}","yeaft.restore.modal.restoreError":"Failed to restore: {message}","settings.llm.noAgent":"Please select an Agent first to manage LLM configuration.","settings.llm.agentOffline":"Agent is currently offline. LLM configuration will load when the agent comes online.","settings.llm.loading":"Loading configuration...","settings.llm.loadError":"Failed to load configuration","settings.llm.configureAgent":"Configure this agent LLM","settings.llm.configureMenu":"LLM Settings","settings.llm.simpleCopilotTitle":"Recommended: GitHub Copilot","settings.llm.useGitHubCopilot":"Use GitHub Copilot","settings.llm.refreshingModels":"Refreshing models...","settings.llm.managedCopilotTitle":"Managed GitHub Copilot","settings.llm.managedCopilotDesc":"Base URL, authentication, model catalog, and per-model API protocol are managed automatically. Claude models use Anthropic Messages; GPT/o models use OpenAI Responses.","settings.llm.providersTitle":"Providers","settings.llm.testFailed":"Connection test failed","settings.llm.saveSuccess":"LLM settings saved","settings.llm.saveFailed":"Failed to save LLM settings","settings.llm.presets.title":"Quick setup","settings.llm.providersDesc":"Choose a provider, save it, and use it in Sessions.","settings.llm.agentProviders":"This agent providers","settings.llm.agentBadge":"This agent","settings.llm.addProvider":"Add Provider","settings.llm.addFromPreset":"Add from Catalog","settings.llm.preset.title":"Provider Catalog (models.dev)","settings.llm.preset.refresh":"Refresh catalog","settings.llm.preset.loading":"Loading catalog\u2026","settings.llm.preset.empty":"No providers available.","settings.llm.preset.pickProvider":"Pick a provider on the left to see its models.","settings.llm.preset.filterProviders":"Filter providers\u2026","settings.llm.preset.filterModels":"Filter models\u2026","settings.llm.preset.selectAll":"Select all","settings.llm.preset.selectNone":"Clear","settings.llm.preset.cancel":"Cancel","settings.llm.preset.add":"Add to providers","settings.llm.preset.fetchedAt":"Catalog updated {minutes}m ago","settings.llm.addModel":"Add Model","settings.llm.removeModel":"Remove Model","settings.llm.providerName":"Name","settings.llm.providerNamePlaceholder":"e.g. my-proxy","settings.llm.baseUrl":"Base URL","settings.llm.baseUrlPlaceholder":"e.g. http://localhost:6628/v1","settings.llm.apiKey":"API Key","settings.llm.apiKeyPlaceholder":"Enter API key","settings.llm.protocol":"Protocol","settings.llm.protocolOpenAI":"OpenAI Compatible","settings.llm.protocolOpenAIResponses":"OpenAI Responses (GPT-5)","settings.llm.protocolAnthropic":"Anthropic Native","settings.llm.protocolHint.anthropic":"Claude native Messages API.","settings.llm.protocolHint.openai":"Chat Completions /v1/chat/completions \u2014 GPT-4 and most compatible proxies.","settings.llm.protocolHint.openaiResponses":"Responses API /v1/responses \u2014 required for GPT-5 series.","settings.llm.modelCtxPlaceholder":"ctx","settings.llm.modelMaxPlaceholder":"max","settings.llm.models":"Candidate Model IDs","settings.llm.modelsPlaceholder":"Model IDs, comma or newline separated, e.g. claude-sonnet-4-20250514, gpt-5","settings.llm.modelsHint":"Comma or newline separated.","settings.llm.removeProvider":"Remove","settings.llm.modelSelectionTitle":"Model Selection","settings.llm.modelSelectionDesc":"Choose the default models.","settings.llm.primaryModel":"Primary Model","settings.llm.primaryModelDesc":"Used for user-facing conversations","settings.llm.fastModel":"Fast Model","settings.llm.fastModelDesc":"Used for internal tasks (memory, consolidation)","settings.llm.noModels":"No models available. Add a provider first.","settings.llm.selectModel":"Select a model...","settings.llm.debugTitle":"Debug traces","settings.llm.debugDesc":"Per-agent opt-in for collecting per-turn debug traces (system prompts, LLM calls, tool payloads).","settings.llm.enableDebug":"Enable debug traces","settings.llm.save":"Save Changes","settings.llm.saving":"Saving...","settings.llm.saved":"Configuration saved","settings.llm.savedRefreshWarning":"Configuration was saved, but the live model catalog could not refresh: {error}","settings.llm.unsavedChanges":"You have unsaved changes","settings.llm.confirmRemoveProvider":"Remove this provider?","settings.llm.setupTitle":"Connect a model","settings.llm.setupDesc":"GitHub Copilot is recommended. You can also add your own API provider.","settings.llm.providerSectionHint":"Only the fields required to connect a model.","settings.tabs.dashboard":"Dashboard","settings.dashboard.totalUsers":"Total Users","settings.dashboard.onlineUsers":"Online Users","settings.dashboard.onlineAgents":"Online Agents","settings.dashboard.totalSessions":"Total Sessions","settings.dashboard.todayActive":"Today Active","settings.dashboard.todayMessages":"Today Messages","settings.dashboard.todayUserTurns":"Today User Turns","settings.dashboard.totalTokens":"Total Tokens","settings.dashboard.tokenAccuracy":"Provider-reported usage, accumulated from the version that enabled per-user token tracking. Heartbeats are excluded.","settings.dashboard.agentTurns":"Agent Turns","settings.dashboard.agentSessions":"Agent Sessions","settings.dashboard.turns":"Turns","settings.dashboard.tokens":"Tokens","settings.dashboard.inputTokens":"Input","settings.dashboard.outputTokens":"Output","settings.dashboard.cacheTokens":"Cache","settings.dashboard.today":"Today","settings.dashboard.thisWeek":"This Week","settings.dashboard.thisMonth":"This Month","settings.dashboard.all":"All","settings.dashboard.userUsage":"User Usage","settings.dashboard.agentList":"Agent List","settings.dashboard.onlineUserList":"Online Users","settings.dashboard.refresh":"Refresh","settings.dashboard.name":"Name","settings.dashboard.messages":"Messages","settings.dashboard.userTurns":"User Turns","settings.dashboard.sessions":"Sessions","settings.dashboard.requests":"Requests","settings.dashboard.traffic":"Traffic","settings.dashboard.lastLogin":"Last Login","settings.dashboard.status":"Status","settings.dashboard.latency":"Latency","settings.dashboard.version":"Version","settings.dashboard.owner":"Owner","settings.dashboard.role":"Role","settings.dashboard.agent":"Agent","settings.dashboard.online":"Online","settings.dashboard.offline":"Offline","settings.dashboard.noAgents":"No agents registered","settings.dashboard.noUserData":"No user data","settings.dashboard.noOnlineUsers":"No users online","settings.dashboard.loading":"Loading...","settings.dashboard.error":"Failed to load data","settings.dashboard.ago":"{time} ago","settings.dashboard.loadMore":"Load more ({remaining} remaining)","workbench.maximize":"Maximize panel","workbench.restore":"Restore panel","workbench.collapse":"Collapse panel","theme.switchToLight":"Switch to light theme","theme.switchToDark":"Switch to dark theme","theme.toLight":"Switch to light theme","theme.toDark":"Switch to dark theme","terminal.splitH":"Split horizontally (left-right)","terminal.splitV":"Split vertically (top-bottom)","terminal.close":"Close current terminal","terminal.autoCreate":"A terminal will be created when you switch to the Terminal tab","terminal.xtermError":"xterm.js not loaded, please refresh the page","terminal.xtermNotLoaded":"xterm.js not loaded, please refresh the page","terminal.mountError":"Terminal container mount failed","terminal.mountFailed":"Terminal container mount failed","terminal.createError":"Terminal creation failed","terminal.createFailed":"Terminal creation failed","terminal.error":"Terminal error","git.selectFolder":"Select folder","git.repoPath":"Enter Git repository path...","git.repoPathPlaceholder":"Enter Git repository path...","git.workDir":"Git working directory","git.loadStatus":"Load Git status","git.loading":"Loading Git status...","git.loadingStatus":"Loading Git status...","git.clean":"Working directory clean, no changes","git.cleanWorkDir":"Working directory clean, no changes","git.selectAgent":"Select an Agent to load Git status","git.selectAgentFirst":"Select an Agent to load Git status","git.diffOnly":"Diff only","git.fullFile":"Full file","git.zoomIn":"Zoom in","git.zoomOut":"Zoom out","git.loadingDiff":"Loading Diff...","git.clickToView":"Click a file to view diff","git.clickFileToView":"Click a file to view diff","git.selectRepo":"Select Git Repository","git.noDiff":"(No differences)","git.binaryFile":"(Binary file)","files.notLoaded":"Not loaded","files.newFile":"New File","files.newFolder":"New Folder","files.collapseAll":"Collapse All","files.openFolder":"Open Folder","files.deleteSelected":"Delete selected","files.moveSelected":"Move selected","files.enterPath":"Enter path...","files.searchFiles":"Search files... (Ctrl+P)","files.noMatch":"No matches found","files.searching":"Searching...","files.loadingTree":"Loading...","files.emptyDir":"Empty directory","files.loadingFile":"Loading file...","files.searchPlaceholder":"Search...","files.replacePlaceholder":"Replace...","files.replace":"Replace","files.replaceAll":"All","files.replaceCurrent":"Replace current","files.replaceAllTitle":"Replace all","files.clickToView":"Click a file to view content","files.selectFolder":"Select Folder","files.enterFolderName":"Enter folder name...","files.enterFileName":"Enter file name...","files.moveTarget":"Enter target directory path...","files.moveItems":"Move {count} item(s) to the specified directory","files.workDir":"Work directory: {dir}","files.enterDirPath":"Enter directory path...","files.unsavedConfirm":'"{name}" has unsaved changes. Close anyway?',"files.deleteConfirm":'Are you sure you want to delete "{name}"?',"files.deleteDirHint":" (this will delete the folder and all its contents)","files.deleteSelectedConfirm":"Are you sure you want to delete {count} selected item(s)? This action cannot be undone.","files.findPrev":"Previous (Shift+Enter)","files.findNext":"Next (Enter)","files.caseSensitive":"Case sensitive","files.regex":"Regular expression","files.unsaved":"Unsaved","files.clearSelection":"Clear selection","files.rename":"Rename","files.copyHere":"Copy","files.moveTo":"Move to...","files.download":"Download","files.enterNewName":"Enter new name...","files.loadingPreview":"Loading preview...","files.preview":"Preview","files.edit":"Edit","files.pptxNotSupported":"PPTX local preview is not supported. Please switch to Office Online mode in Settings.","files.officePreviewMode":"Office Preview Mode","files.officeOnline":"Office Online","files.localRender":"Local Rendering","proxy.port":"Port","proxy.label":"Label","proxy.add":"Add port mapping","proxy.addPort":"Add port mapping","proxy.enable":"Click to enable","proxy.clickEnable":"Click to enable","proxy.disable":"Click to disable","proxy.clickDisable":"Click to disable","proxy.openNewTab":"Open in new tab","proxy.openInBrowser":"Open in new tab","proxy.noMappings":"No port mappings","proxy.noPorts":"No port mappings","proxy.hint":"After adding ports, you can access local services on the agent machine through proxy URLs","proxy.noPortsHint":"After adding ports, you can access local services on the agent machine through proxy URLs","proxy.selectAgent":"Please select an Agent first","store.selectAgent":"Please select an Agent first","store.creatingConv":"Creating conversation...","store.loadingHistory":"Loading conversation history...","store.executionCancelled":"Execution cancelled","store.loginFailed":"Login failed","store.convClosed":"Conversation closed","store.convCreated":"New conversation created [{agent}], work directory: {workDir}","store.convResumed":"Conversation resumed [{agent}]: {sessionId}","roleplay.creating":"Creating Role Play session...","roleplay.working":"Working","roleplay.selectTeam":"Select team template","roleplay.teamDev":"Software Dev","roleplay.teamCustom":"Custom","roleplay.editRoles":"Edit Roles","roleplay.roleName":"Role ID","roleplay.roleDisplayName":"Display Name","roleplay.roleIcon":"Icon","roleplay.roleDesc":"Role Description","roleplay.rolePrompt":"Role Prompt","roleplay.removeRole":"Remove Role","roleplay.addRole":"Add Role","roleplay.start":"Start Role Play","roleplay.sidebarTitle":"Role Play","roleplay.configTitle":"Role Play","roleplay.newSession":"New Role Play","roleplay.emptyHint":"Send a message to start multi-role collaboration","roleplay.askingYou":"is asking you","roleplay.language":"Language","roleplay.rolePreview":"Role Configuration","roleplay.noAgents":"No online agents available","roleplay.inputPlaceholder":"Type a message\u2026 Use @ to mention a role","roleplay.existingSessions":"Existing Teams","roleplay.restore":"Restore","roleplay.restoring":"Restoring Role Play session...","roleplay.createNew":"Create New Team","expertPanel.title":"Expert Panel","expertPanel.search":"Search roles or actions...","expertPanel.noResults":"No results","expertPanel.clearAll":"Clear","expertPanel.persona":"Persona Prompt","expertPanel.template":"With Input \xB7 Prefix","expertPanel.templateHint":"When user types text: this prefix + user text = final prompt","expertPanel.defaultMsg":"No Input \xB7 Full Prompt","expertPanel.defaultMsgHint":"When user sends without typing: this full prompt is used as-is","expertPanel.loading":"Loading role definitions...","expertPanel.viewPrompt":"View prompt","expertPanel.customRoles":"Custom Roles","expertPanel.addRole":"Add role","expertPanel.editRole":"Edit role","expertPanel.deleteRole":"Delete role","expertPanel.noCustomRoles":"No custom roles yet","expertPanel.createFirst":"Create your first custom role","expertPanel.noActions":"No actions defined","expertPanel.deleteConfirm":'Delete role "{name}"? This cannot be undone.',"expertPanel.deleteConfirmBtn":"Delete","expertEditor.createTitle":"Create Custom Role","expertEditor.editTitle":"Edit Custom Role","expertEditor.basicInfo":"Basic Info","expertEditor.roleName":"Role Name","expertEditor.roleNamePlaceholder":"e.g. Data Analyst","expertEditor.roleTitle":"Title","expertEditor.roleTitlePlaceholder":"e.g. Senior Data Analyst","expertEditor.fullName":"Full Name","expertEditor.fullNamePlaceholder":"Optional","expertEditor.titleEn":"English Title","expertEditor.titleEnPlaceholder":"Optional","expertEditor.rolePrompt":"Role Prompt","expertEditor.messagePrefix":"Message Prefix (Chinese)","expertEditor.messagePrefixPlaceholder":"e.g. As a senior data analyst, ","expertEditor.messagePrefixEn":"Message Prefix (English)","expertEditor.messagePrefixEnPlaceholder":"As a senior data analyst, ","expertEditor.actions":"Actions","expertEditor.addAction":"Add Action","expertEditor.removeAction":"Remove","expertEditor.actionName":"Action Name","expertEditor.actionNamePlaceholder":"e.g. Data Analysis","expertEditor.actionNameEn":"English Name","expertEditor.actionNameEnPlaceholder":"Optional","expertEditor.messageTemplate":"With Input \xB7 Prefix (Chinese)","expertEditor.messageTemplatePlaceholder":"Prepended to user text when user types something","expertEditor.messageTemplateEn":"With Input \xB7 Prefix (English)","expertEditor.messageTemplateEnPlaceholder":"Prepended to user text when user types something","expertEditor.defaultMessage":"No Input \xB7 Full Prompt (Chinese)","expertEditor.defaultMessagePlaceholder":"Used as-is when user sends without typing","expertEditor.defaultMessageEn":"No Input \xB7 Full Prompt (English)","expertEditor.defaultMessageEnPlaceholder":"Used as-is when user sends without typing","expertEditor.cancel":"Cancel","expertEditor.save":"Save","expertEditor.saving":"Saving...","subAgentPanel.title":"Sub-Agents","subAgentPanel.back":"Back to list","subAgentPanel.running":"Running","subAgentPanel.completed":"Completed","subAgentPanel.waitingMessages":"Waiting for messages...","subAgentPanel.toolCount":"{count} tools","subAgentPanel.toolSummary":"{count} tool calls completed","subAgentPanel.empty":"No sub-agents","subAgentPanel.emptyHint":"Sub-agents will appear here when Claude delegates tasks","splitScreen.split":"Split screen","splitScreen.closePane":"Close pane","splitScreen.newChat":"New Chat","splitScreen.noSessions":"No sessions","splitScreen.splitToPanel":"Open in new panel","splitScreen.selectFromSidebar":"Select a conversation from the sidebar","yeaft.vp.library":"VP Library","yeaft.vp.createFirst":"+ Create your first role","yeaft.vp.empty.aria":"No virtual persons yet","yeaft.vp.avatar.aria":"{name} avatar","yeaft.vp.speaker.stateCauseAria":"State change: {cause}","yeaft.vp.status.thinking":"thinking\u2026","yeaft.vp.status.tool":"using {name}","yeaft.vp.status.done":"done \xB7 {count} tools","yeaft.vp.status.aborted":"aborted","yeaft.vp.crud.title":"VP Library","yeaft.vp.crud.close":"Close","yeaft.vp.crud.addNew":"+ New role","yeaft.vp.crud.empty":"No virtual persons yet. Create your first role to start collaborating.","yeaft.vp.crud.edit":"Edit","yeaft.vp.crud.delete":"Delete","yeaft.vp.crud.deleteConfirm":'Delete "{name}"? This removes the role.md file on disk.',"yeaft.vp.crud.form.create":"Create role","yeaft.vp.crud.form.update":"Edit role","yeaft.vp.crud.form.vpId":"VP id","yeaft.vp.crud.form.vpId.tooltip":'Letters / digits / - / _ only. Cannot start with "_", cannot be all digits, cannot be one of: all, user, system, everyone.',"yeaft.vp.crud.form.displayName":"Display name (English)","yeaft.vp.crud.form.displayNameZh":"Display name (Chinese)","yeaft.vp.crud.form.description":"Capability description (English)","yeaft.vp.crud.form.descriptionZh":"Capability description (Chinese)","yeaft.vp.crud.form.descriptionPlaceholder":"e.g. API design, migration planning, and compatibility reviews","yeaft.vp.crud.form.descriptionZhPlaceholder":"\u4F8B\u5982\uFF1AAPI \u8BBE\u8BA1\u3001\u8FC1\u79FB\u89C4\u5212\u4E0E\u517C\u5BB9\u6027\u8BC4\u5BA1","yeaft.vp.crud.form.role":"Role","yeaft.vp.crud.form.rolePlaceholder":"e.g. Product Manager","yeaft.vp.crud.form.traits":"Traits","yeaft.vp.crud.form.traitsHint":"Comma-separated short tags (e.g. curious, pragmatic).","yeaft.vp.crud.form.modelHint":"Model hint","yeaft.vp.crud.form.modelHint.none":"\u2014 default \u2014","yeaft.vp.crud.form.modelHint.primary":"primary","yeaft.vp.crud.form.modelHint.fast":"fast","yeaft.vp.crud.form.persona":"Persona (markdown)","yeaft.vp.crud.form.personaPlaceholder":"Describe how this role should think, speak, and decide...","yeaft.vp.crud.form.submit":"Save","yeaft.vp.crud.form.cancel":"Cancel","yeaft.vp.crud.form.ok":"Looks good","yeaft.vp.crud.form.idLocked":"VP id cannot be changed after creation.","yeaft.vp.crud.saving":"Saving\u2026","yeaft.vp.crud.saveFailed":"Save failed: {error}","yeaft.vp.crud.deleteFailed":"Delete failed: {error}","yeaft.vp.crud.viewPrompt":"View prompt","yeaft.vp.crud.view.title":"VP prompt","yeaft.vp.crud.view.personaEmpty":"(no persona body \u2014 only metadata is defined)","yeaft.vp.crud.view.back":"Back","yeaft.vp.crud.view.editFromHere":"Edit this VP","yeaft.vp.crud.view.removed":"This VP was removed elsewhere \u2014 returning to the list.","yeaft.vp.crud.stockBadge":"Stock","yeaft.vp.crud.stockReadOnly":"Stock VPs ship with the agent and cannot be edited or deleted.","yeaft.vp.idError.empty_or_non_string":"VP id is required.","yeaft.vp.idError.too_long":"VP id is too long (max 40 characters).","yeaft.vp.idError.illegal_character":'Only letters, digits, "-" and "_" are allowed.',"yeaft.vp.idError.underscore_prefix_reserved":'VP id cannot start with "_" (reserved for system roles).',"yeaft.vp.idError.pure_digits":"VP id cannot be all digits.","yeaft.vp.idError.reserved":"VP id cannot be one of the reserved names (all, user, system, everyone).","yeaft.vp.idError.duplicate":"A role with this VP id already exists.","yeaft.vp.idError.not_found":"This VP does not exist \u2014 it may have been deleted.","yeaft.vp.idError.stock_readonly":"Stock VPs cannot be edited or deleted.","yeaft.vp.idError.unknown":"An unexpected error occurred. Please try again.","yeaft.vp.reason.personaEdit":"Persona updated","yeaft.vp.reason.traitsEdit":"Traits updated","yeaft.vp.reason.manualReload":"Reloaded","yeaft.vp.reason.fileRemoved":"Removed","yeaft.vp.reason.toast.updated":"{name}: {reason}","yeaft.vp.reason.toast.removed":"{name} was removed","yeaft.message.timeAria":"Sent at {time}","yeaft.user.youLabel":"You","yeaft.session.sidebarTitle":"Sessions","yeaft.session.sidebarAria":"Sessions section","yeaft.session.newButton":"+ New session","yeaft.session.newButtonAria":"Create a new session","yeaft.session.defaultName":"Default","yeaft.session.moreActions":"More actions","yeaft.session.archivingEllipsis":"Archiving\u2026","yeaft.session.deletingEllipsis":"Deleting\u2026","yeaft.session.renamingEllipsis":"Renaming\u2026","yeaft.session.empty":"No sessions yet.","yeaft.session.membersCount":"{count} members","yeaft.session.oneMember":"1 member","yeaft.session.noMembers":"Empty \u2014 invite a VP","yeaft.session.defaultBadge":"default","yeaft.session.archive":"Archive","yeaft.session.archiveConfirm":'Archive "{name}"? You can recover it from disk later.',"yeaft.session.delete":"Delete","yeaft.session.deleteConfirm":'Delete "{name}"? This permanently removes the session and all its data \u2014 this cannot be undone.',"yeaft.session.rename":"Rename","yeaft.session.openSettings":"Settings","yeaft.session.removeFromList":"Remove","yeaft.session.manageMembers":"Manage members","yeaft.session.memberCount.one":"1 member","yeaft.session.memberCount.other":"{count} members","yeaft.session.renamePrompt":'New name for "{name}":',"yeaft.session.editModal.renameTitle":"Rename session","yeaft.session.editModal.renameBody":'Choose a new name for "{name}".',"yeaft.session.editModal.renameSubmit":"Save","yeaft.session.editModal.archiveTitle":"Archive session","yeaft.session.editModal.archiveBody":'Archive "{name}"? You can recover it from disk later.',"yeaft.session.editModal.archiveSubmit":"Archive","yeaft.session.editModal.deleteTitle":"Delete session","yeaft.session.editModal.deleteBody":'Delete "{name}"? This permanently removes the session and all its data \u2014 this cannot be undone.',"yeaft.session.editModal.deleteSubmit":"Delete","yeaft.session.editModal.newNameLabel":"New name","yeaft.session.editModal.cancel":"Cancel","yeaft.session.editModal.close":"Close","yeaft.session.error.invalid_name":"Session name cannot be empty.","yeaft.session.error.duplicate":"A session with this id already exists.","yeaft.session.error.not_found":"Session not found.","yeaft.session.error.default_not_in_roster":"The default VP must be in the roster.","yeaft.session.error.no_default_vp":"This session has no members. Add a VP from the library to start chatting.","yeaft.session.error.reserved":"One of the selected ids is reserved (all, user, system, everyone).","yeaft.session.error.unknown":"Session operation failed: {message}","yeaft.session.error.timeout":"Session operation timed out \u2014 try again.","yeaft.session.invite.title":"Invite a VP","yeaft.session.invite.body":'"{name}" has no members yet. Add a VP from your library to start chatting.',"yeaft.session.invite.openLibrary":"Open VP Library","yeaft.session.invite.dismiss":"Not now","yeaft.session.empty.title":"Empty session","yeaft.session.empty.hint":'"{name}" has no members yet. Add a VP to start chatting.',"yeaft.session.empty.cta":"Manage members","yeaft.session.members.title":'Manage members of "{name}"',"yeaft.session.members.aria":"Session members manager","yeaft.session.members.close":"Close","yeaft.session.members.done":"Done","yeaft.session.members.empty":"No VPs available \u2014 create one in the VP Library first.","yeaft.session.members.loading":"Loading VPs\u2026","yeaft.session.members.defaultHint":"Default VP (replies when no @mention is given)","yeaft.session.members.memberCount":"{count} selected","yeaft.session.members.actionFailed":"Action failed: {error}","yeaft.session.members.openLibrary":"Open VP Library","yeaft.session.members.openLibraryHint":"Create a new VP or view a VP's prompt.","yeaft.session.announcement.label":"Announcement","yeaft.session.announcement.hintEmpty":"No announcement \u2014 click \u270F\uFE0F to add one.","yeaft.session.announcement.emptyBody":"No announcement set. Add a message that every VP in this session will see at the top of its system prompt \u2014 useful for shared context, ground rules, or a CLAUDE.md-style brief.","yeaft.session.announcement.placeholder":"Write a shared briefing for all VPs in this session\u2026","yeaft.session.announcement.edit":"Edit announcement","yeaft.session.announcement.editTitle":"Edit session announcement","yeaft.session.announcement.saving":"Saving\u2026","yeaft.session.announcement.saveFailed":"Save failed: {error}","yeaft.session.announcement.openSettings":"Open session settings","yeaft.session.settings.title":"{name} \u2014 session settings","yeaft.session.settings.short":"Session","yeaft.session.settings.close":"Close","yeaft.session.settings.nav.session":"Session","yeaft.session.settings.nav.members":"Members","yeaft.session.settings.nav.memory":"Memory","yeaft.session.settings.announcement.heading":"Session announcement","yeaft.session.settings.announcement.help":"Shared at the top of every VP's system prompt while in this session. Like a CLAUDE.md for the team.","yeaft.session.settings.members.heading":"Members","yeaft.session.settings.rename.heading":"Rename session","yeaft.session.settings.rename.label":"New name","yeaft.session.settings.rename.save":"Save name","yeaft.session.settings.rename.saving":"Saving\u2026","yeaft.session.settings.memory.heading":"Session memory","yeaft.session.settings.memory.help":"Run the dream consolidation now. Reads new messages since the last run, extracts facts, and merges them into the session's summary so the Resident layer reflects the latest conversation.","yeaft.session.settings.memory.runNow":"Run dream now","yeaft.session.settings.memory.running":"Running\u2026","yeaft.session.settings.memory.lastSuccess":"Last run {time} \u2014 {count} target(s) updated.","yeaft.session.settings.memory.lastError":"Last run failed: {error}","yeaft.session.settings.danger.heading":"Delete session","yeaft.session.settings.danger.deleteHelp":"This permanently deletes the session, removing session.json and all message history on disk. It cannot be undone.","yeaft.session.settings.danger.deleteBtn":"Delete session","yeaft.vp.mention.placeholder":"Search role by id or name\u2026","yeaft.vp.mention.noMatch":"No matching role","yeaft.vp.mention.count":"{count} mentions","yeaft.feature.reject.missing_group_id":"Message send failed: session not specified.","yeaft.feature.reject.missing_feature_id":"Message send failed: task context lost.","yeaft.feature.reject.missing_vp_id":"Message send failed: speaker not set.","yeaft.feature.reject.invalid_vp_id":"Message send failed: invalid speaker id.","yeaft.feature.reject.empty_text":"Message send failed: empty message.","yeaft.feature.reject.text_too_long":"Message send failed: text too long (max 16 KiB).","yeaft.feature.reject.unknown":"Message send failed.","yeaft.feature.pill.label":"task","yeaft.feature.messageTime.aria":"Sent at {time}","yeaft.vp.turnBlock.elapsedTitle":"Time elapsed since this turn started","yeaft.vp.turnBlock.retryingRequest":"Response stalled; retrying with a fresh request ({attempt}/{max})","yeaft.vp.turnBlock.retryingContinue":"Response stalled; continuing with a fresh request ({attempt}/{max})","yeaft.sessionStatus.aria":"Session status","yeaft.sessionStatus.title":"Session status","yeaft.sessionStatus.announcement":"Announcement","yeaft.sessionStatus.announcementEmpty":"No announcement","yeaft.sessionStatus.announcementAdd":"Add announcement","yeaft.sessionStatus.announcementEdit":"Edit announcement","yeaft.sessionStatus.vps":"VPs","yeaft.sessionStatus.backgroundTasks":"Background tasks","yeaft.sessionStatus.noLogPreview":"No log output yet.","yeaft.sessionStatus.task.subAgentStarted":"{name} started","yeaft.sessionStatus.task.subAgentStartedWithMission":"{name} started: {mission}","yeaft.sessionStatus.task.subAgentStatus":"{name} is {status}","yeaft.sessionStatus.task.subAgentStatusUpdated":"{name} status updated","yeaft.sessionStatus.task.subAgentResult":"{name} result: {text}","yeaft.sessionStatus.task.subAgentProducedResult":"{name} produced a result","yeaft.sessionStatus.task.subAgentUsedTool":"{name} used {tool}","yeaft.sessionStatus.task.subAgentFinishedTool":"{name} finished {tool}","yeaft.sessionStatus.task.subAgentUsage":"{name} used {tokens} tokens","yeaft.sessionStatus.task.subAgentEvent":"{name}: {text}","yeaft.sessionStatus.task.subAgentUserPrompt":"You: {text}","yeaft.sessionStatus.task.subAgentToolSummary":"{count} tool calls completed","yeaft.sessionStatus.task.subAgentError":"{name} error: {error}","yeaft.sessionStatus.task.subAgentHitError":"{name} hit an error","yeaft.sessionStatus.task.subAgentNoReadableEvents":"No readable sub-agent activity yet.","yeaft.sessionStatus.task.promptPlaceholder":"Add guidance for this sub-agent\u2026","yeaft.sessionStatus.task.promptSend":"Send","yeaft.sessionStatus.task.promptSending":"Sending\u2026","yeaft.sessionStatus.task.promptFailed":"Failed to send prompt.","yeaft.sessionStatus.task.title":"Task","yeaft.sessionStatus.task.command":"Command","yeaft.sessionStatus.task.stop":"Stop task","yeaft.sessionStatus.task.stopping":"Stopping\u2026","yeaft.sessionStatus.task.kind.subAgent":"sub-agent","yeaft.sessionStatus.task.kind.shell":"shell","yeaft.sessionStatus.show":"Show Session status","yeaft.sessionStatus.hide":"Hide Session status","yeaft.sessionStatus.close":"Close Session status","yeaft.vpTimeline.empty":"No VPs in this Session yet.","yeaft.vpTimeline.resizeTitle":"Drag to resize","yeaft.vpTimeline.status.idle":"idle","yeaft.vpTimeline.status.typing":"typing\u2026","yeaft.vpTimeline.status.thinking":"thinking\u2026","yeaft.vpTimeline.status.retrying":"retrying request\u2026","yeaft.vpTimeline.status.streaming":"streaming","yeaft.vpTimeline.status.tool":"using tool\u2026","yeaft.vpTimeline.status.error":"error","yeaft.vpTimeline.status.offline":"offline","yeaft.vpTimeline.abort":"Abort","yeaft.vpTimeline.edit":"Edit VP","yeaft.vpTimeline.mention":"Click to @-mention this VP","yeaft.vpTimeline.expand":"Toggle task details","yeaft.toolStats.title":"Tool Usage Stats","yeaft.toolStats.refresh":"Refresh","yeaft.toolStats.close":"Close","yeaft.toolStats.tabAll":"All tools","yeaft.toolStats.tabUnused":"Unused","yeaft.toolStats.loading":"Loading\u2026","yeaft.toolStats.notLoaded":"No data yet \u2014 click refresh.","yeaft.toolStats.empty":"(no tool calls recorded yet)","yeaft.toolStats.noneUnused":"(every registered tool has been called at least once)","yeaft.toolStats.fetchedAt":"Fetched at","yeaft.toolStats.col.name":"Tool","yeaft.toolStats.col.calls":"Calls","yeaft.toolStats.col.errors":"Errors","yeaft.toolStats.col.errRate":"Err%","yeaft.toolStats.col.p50":"p50","yeaft.toolStats.col.p95":"p95","yeaft.toolStats.col.avg":"Avg","yeaft.toolStats.col.last":"Last","yeaft.toolStats.buttonLabel":"Tool Stats","workCenter.title":"Work Center","workCenter.subtitle":"Persistent work owned by this Agent","workCenter.agent":"Agent","workCenter.selectAgent":"Select Agent","workCenter.noOnlineAgents":"No online agents","workCenter.noAvailableAgents":"No compatible online Agents","workCenter.new":"New","workCenter.newWorkItem":"New work item","workCenter.workItem":"Work item","workCenter.createFirst":"Create first work item","workCenter.backToChat":"Back to chat","workCenter.refresh":"Refresh","workCenter.search":"Search work items","workCenter.filter":"Filter","workCenter.filterAttention":"Needs attention","workCenter.filterActive":"Active","workCenter.filterAll":"All","workCenter.filterDone":"Done","workCenter.attentionItems":"Needs attention","workCenter.board.active":"Active","workCenter.board.needsAttention":"Needs attention","workCenter.board.closed":"Closed","workCenter.board.emptyLane":"No work items","workCenter.board.lanes":"Work item lanes","workCenter.filterVp":"Filter by VP","workCenter.filterType":"Filter by type","workCenter.filterUpdated":"Filter by update time","workCenter.allVps":"All VPs","workCenter.allTypes":"All types","workCenter.anyTime":"Any time","workCenter.lastDay":"Last 24 hours","workCenter.lastWeek":"Last 7 days","workCenter.deleteWorkItem":"Delete Work Item","workCenter.deleteConfirm":"Permanently delete this Work Item, its execution history, and attachments?","workCenter.deleteRequiresStop":"Stop this Work Item before deleting it","workCenter.lastMonth":"Last 30 days","workCenter.assignment.planned":"Planned assignment","workCenter.created":"Created","workCenter.files":"files","workCenter.loadMore":"Load more","workCenter.activeItems":"Active work","workCenter.allItems":"All work items","workCenter.completedItems":"Completed","workCenter.watcherActive":"Watcher active","workCenter.loading":"Loading work items\u2026","workCenter.noTimestamp":"No timestamp","workCenter.updated":"Updated","workCenter.emptyTitle":"No work items yet","workCenter.emptyBody":"Create a persistent task when work must continue beyond one conversation turn.","workCenter.noAttentionTitle":"Nothing needs attention","workCenter.noAttentionBody":"Work Items waiting for you or needing recovery will appear here.","workCenter.noActiveTitle":"No active work items","workCenter.noActiveBody":"Draft, ready, and running Work Items will appear here.","workCenter.noCompletedTitle":"No completed work items","workCenter.noCompletedBody":"Completed work items will appear here.","workCenter.noMatchesTitle":"No matching work items","workCenter.noMatchesBody":"Try a different search or filter.","workCenter.selectTitle":"Work item details","workCenter.detailLoading":"Loading full details\u2026","workCenter.detailLoadFailed":"Could not load full details","workCenter.start":"Start","workCenter.retry":"Retry","workCenter.cancel":"Cancel","workCenter.closeWorkItem":"Close details","workCenter.cancelWorkItem":"Stop work item","workCenter.cancelWorkItemHint":"Stop this Work Item and all unfinished Actions.","workCenter.cancelConfirm":"Stop this work item and its unfinished Actions?","workCenter.stopWorkItem":"Stop work item","workCenter.resumeWorkItem":"Resume work item","workCenter.breadcrumbs":"Work Center navigation","workCenter.actionNumber":"Action {number}","workCenter.actionBreadcrumb":"Action {number}: {description}","workCenter.untitledAction":"Untitled Action","workCenter.workItems":"Work items","workCenter.description":"Description","workCenter.goal":"Goal","workCenter.acceptanceCriteria":"Acceptance criteria","workCenter.noCriteria":"No criteria provided","workCenter.failureReason":"Failure reason","workCenter.workflow":"Workflow","workCenter.triageSummary":"Triage summary","workCenter.actionFlow":"Action flow","workCenter.viewActions":"View Actions","workCenter.actionsPanel":"Actions","workCenter.closeActions":"Close Actions","workCenter.actionCount":"{count} Actions","workCenter.noActionSummary":"No summary yet","workCenter.actionProgress":"{completed} / {total} Actions","workCenter.currentAction":"Current Action","workCenter.expandActions":"Show Actions","workCenter.collapseActions":"Collapse","workCenter.actionObjective":"What to do","workCenter.actionApproach":"How to do it","workCenter.actionExpectedOutcome":"Expected result","workCenter.dependencies":"Source Actions","workCenter.actionResult":"Latest result","workCenter.currentProgress":"Current progress","workCenter.actionMessages":"Messages","workCenter.loops":"loops","workCenter.tools":"tools","workCenter.noActionMessages":"No messages yet.","workCenter.actionDetails":"Action details","workCenter.selectAction":"Select an Action","workCenter.backToWorkItems":"Work items","workCenter.backToActions":"Back to Actions","workCenter.you":"You","workCenter.noRequestDetails":"No execution records are available for this Action yet.","workCenter.loadingRequests":"Loading execution records\u2026","workCenter.loadingRequestDetail":"Loading tool evidence\u2026","workCenter.requestDetailUnavailable":"Tool evidence is unavailable. Try again.","workCenter.noRequestLoops":"This execution has no retained Loop details.","workCenter.requestDetailTruncated":"Large execution: {summarized} Loops are summarized and {omitted} older Loops are omitted.","workCenter.loopDetailTruncated":"Large Loop: showing retained tool evidence.","workCenter.loadEarlierMessages":"Load earlier messages","workCenter.loadingEarlierMessages":"Loading earlier messages\u2026","workCenter.unknownModel":"Unknown model","workCenter.loop":"Loop","workCenter.actionBrief":"Task brief","workCenter.executionSummary":"Execution summary","workCenter.toolParameters":"Parameters","workCenter.toolResult":"Result","workCenter.noToolCalls":"No tool calls in this Loop.","workCenter.actionInputPlaceholder":"Add context, answer a question, or redirect this Action","workCenter.actionInputResumeHint":"Your input resumes this Action with the additional context.","workCenter.waitingQuestionTitle":"Input required","workCenter.actionInputRetryHint":"Add instructions or files, then rerun this Action with the new context.","workCenter.actionInputContinueHint":"Direct intervention for this Action only.","workCenter.actionFailedTitle":"Why this Action failed","workCenter.failedAt":"Failed at","workCenter.actionFailureRecovery":"Choose this Action in the Work Item composer to send corrected instructions.","workCenter.sendInput":"Send to Action","workCenter.sendingInput":"Sending\u2026","workCenter.retryAction":"Retry Action","workCenter.sendAndRetryAction":"Send and retry Action","workCenter.coordinatorDecision.guide_actions":"Action instructions updated","workCenter.coordinatorDecision.replan":"Goal or plan updated","workCenter.coordinatorDecision.request_human":"Human input requested","workCenter.conversation":"Conversation","workCenter.contentPane":"Content","workCenter.workItemPanes":"Work item panes","workCenter.coordinator":"Coordinator","workCenter.coordinatorTargetHint":"Work Item planning and coordination","workCenter.composerTarget":"Message target","workCenter.targetUnavailable":"Selected Action is no longer available","workCenter.targetUnavailableHelp":"Choose another target before sending. This draft was not redirected.","workCenter.sendToCoordinatorInstead":"Send to Coordinator instead","workCenter.sendToTarget":"Send to {target}","workCenter.answerWithTarget":"Choose the relevant target in the Conversation composer, then reply.","workCenter.conversationThinking":"Working\u2026","workCenter.conversationReadOnly":"This work item is closed. The conversation remains available.","workCenter.conversationPlaceholder":"Message about this work item","workCenter.sendMessage":"Send message","workCenter.messageSpeakerRole":"{name} \xB7 {role}","workCenter.originalRequest":"Original request","workCenter.actionMessageScopeTitle":"Message this Action","workCenter.actionMessageScope":"Only this Action receives the message.","workCenter.actionConversation":"Conversation","workCenter.actionConversationWith":"Action executor","workCenter.actionViews":"Action views","workCenter.actionExecutor":"Executor","workCenter.actionExecutorPending":"Executor pending","workCenter.actionInformation":"Action information","workCenter.messageExecutor":"Message {name}","workCenter.actionChatPlaceholder":"Message {name} from the Conversation composer","workCenter.statusLabel":"Status","workCenter.llmRequestsLabel":"LLM requests","workCenter.loopsLabel":"Loops","workCenter.toolsLabel":"Tools","workCenter.tokensLabel":"Tokens","workCenter.workItemMessagePlaceholder":"Add direction for the whole Work Item","workCenter.sendWorkItemMessage":"Send to Work Item","workCenter.fromSession":"Create a work item from this Session","workCenter.llmRequestCount":"{count} LLM requests","workCenter.loopCount":"{count} loops","workCenter.toolCount":"{count} tools","workCenter.tokenCount":"{count} tokens","workCenter.tokenBreakdown":"{input} input / {output} output / {cache} cached","workCenter.guidance":"Add guidance to the current Action","workCenter.guidanceHint":"Clarify constraints or redirect the current Action","workCenter.guidanceRestartHint":"This restarts the current Action with the new guidance.","workCenter.sendGuidance":"Send guidance","workCenter.reuseMemory":"Use relevant Agent memory and completed work from this project","workCenter.reuseMemoryHelp":"Includes scope-bounded Agent memory plus structured summaries and evidence from completed WorkItems with the same canonical project directory. Raw tool output is not reused.","workCenter.resumeAnswer":"Answer the waiting question","workCenter.resumeAnswerHint":"Provide the information required to continue","workCenter.answerInActionDetail":"Target the current Action in the Conversation composer, then reply.","workCenter.selectPrompt":"Select a work item to inspect its workflow.","workCenter.createHint":"Describe what you need. The Coordinator will keep creating the next justified Actions until the acceptance criteria are verified.","workCenter.requirement":"Requirement","workCenter.requirementHint":"Describe the problem, desired outcome, and any constraints in your own words","workCenter.requirementHelp":"The Coordinator will refine the goal and acceptance criteria, then create Actions dynamically as evidence arrives.","workCenter.titleField":"Title","workCenter.titleHint":"A short, specific outcome","workCenter.goalHint":"Describe the result the Agent must deliver","workCenter.criteriaHint":"One criterion per line","workCenter.attachments":"Attachments","workCenter.attachmentsHelp":"Images, PDFs, and text files stay bound to this Work Item and are available to every Action.","workCenter.attachmentsUnsupported":"The selected Agent does not support Work Item attachments.","workCenter.addAttachments":"Add files","workCenter.attachmentsUploading":"Uploading\u2026","workCenter.attachmentsUploadFailed":"Attachment upload failed","workCenter.pendingEnvelopeLocked":"An unconfirmed request is locked to its original identity.","workCenter.replacePendingAttachments":"Replace attachments","workCenter.discardPendingEnvelope":"Discard pending request","workCenter.pendingEnvelopeChanged":"The pending request changed; reopen this Work Item and try again.","workCenter.removeAttachment":"Remove from draft","workCenter.previewAttachment":"Open attachment","workCenter.openAttachmentNamed":"Open attachment {name}","workCenter.openingAttachment":"Opening attachment\u2026","workCenter.attachmentPreviewFailed":"Could not open the attachment. Try again.","workCenter.attachmentOpenBlocked":"The browser blocked the attachment window. Allow pop-ups and try again.","workCenter.execution":"Execution","workCenter.executionHint":"Choose where and how this work item starts.","workCenter.workDir":"Working directory","workCenter.workDirHint":"Choose an existing project directory","workCenter.chooseFolder":"Choose folder","workCenter.workDirPickerHelp":"Select an existing folder on the chosen Agent.","workCenter.folderPickerHint":"Choose the project folder this Work Item can read and modify.","workCenter.folderPickerSelectionHint":"Double-click to open a folder, or select it and confirm.","workCenter.startImmediately":"Start immediately","workCenter.startImmediatelyHint":"Turn this off to create a draft you can review first.","workCenter.creating":"Creating\u2026","workCenter.create":"Create","workCenter.status.draft":"draft","workCenter.status.ready":"ready","workCenter.status.running":"running","workCenter.status.waiting":"waiting","workCenter.status.needs_attention":"needs attention","workCenter.status.done":"done","workCenter.status.cancelled":"cancelled","workCenter.status.completed":"completed","workCenter.status.failed":"failed","workCenter.status.superseded":"superseded","workCenter.action.triage":"Triage","workCenter.action.implement":"Implement","workCenter.action.review":"Review","workCenter.action.integrate":"Integrate","workCenter.action.deliver":"Deliver","workCenter.action.test":"Test","workCenter.action.research":"Research","workCenter.action.design":"Design","workCenter.action.diagnose":"Diagnose","workCenter.action.migrate":"Migrate","workCenter.action.document":"Document","workCenter.action.operate":"Operate","workCenter.action.write":"Write","workCenter.action.custom":"Custom","workCenter.assignment.auto":"Use workflow policy","workCenter.model.inherit":"Use workflow model","workCenter.model.defaultProvider":"default provider","workCenter.planPreview":"Execution plan","workCenter.planPreviewHelp":"Resolved from this Agent\u2019s VP pool and model settings.","workCenter.settings.title":"Work Center settings","workCenter.settings.subtitle":"Configure the Coordinator plus reusable Action prompts, models, and effort for AI-planned work.","workCenter.settings.workflow":"Workflow","workCenter.settings.workflowHelp":"The Coordinator chooses task-specific Actions and executors dynamically.","workCenter.settings.aiWorkflowHelp":"The Coordinator creates only the next justified task-specific Actions. Built-in Action policies are reusable templates, and the Coordinator may create a precise domain type when needed.","workCenter.settings.globalInstructions":"Global Agent instructions","workCenter.settings.globalInstructionsHint":"Example: Follow the repository release policy, require independent review, and never create deployment tags without explicit approval.","workCenter.settings.globalInstructionsHelp":"Stored at Agent level and frozen into every new WorkItem. Applied to triage and every generated Action, below the WorkItem contract and system/tool safety rules. Existing WorkItems keep their original snapshot.","workCenter.settings.actionPolicies":"Built-in Action policies","workCenter.settings.actionPoliciesHelp":"These are reusable execution baselines, not a fixed workflow. Unknown domain-specific Action types use the Custom policy plus their triage-generated type and objective.","workCenter.settings.dynamicInstructionHelp":"The AI adds the WorkItem contract, global instructions, prior Action context, memory, and a task-specific objective. This prompt defines the reusable behavior for this Action type.","workCenter.settings.models":"Models","workCenter.settings.modelsHelp":"Providers and credentials stay in Agent LLM settings. Work Center only selects available models.","workCenter.settings.dynamicModelsHelp":"Choose the Coordinator model separately from the models that execute Actions.","workCenter.settings.coordinatorModel":"Coordinator","workCenter.settings.coordinatorModelHelp":"Used for Work Item conversation, goal changes, and replanning. It never executes repository tools.","workCenter.settings.allActions":"Fallback for all Actions","workCenter.settings.maxConcurrentActions":"Maximum concurrent Actions","workCenter.settings.maxConcurrentActionsHelp":"Defaults to 3. Non-Git, dirty, shared, and integration work remains serial.","workCenter.workItemType":"Type","workCenter.typeAuto":"Auto \u2014 let the LLM infer","workCenter.typeHelp":"Choose a task category, or use Auto for AI inference. AI still plans the concrete Actions.","workCenter.planning":"Planning","workCenter.aiPlan":"Coordinator-driven execution","workCenter.aiPlanHelp":"The Coordinator chooses the next Actions and executors from the current evidence instead of precomputing a workflow graph. Work Center settings control model and effort.","workCenter.settings.manageProviders":"Manage Agent models","workCenter.settings.assignment":"VP selection","workCenter.settings.assignment.auto":"Auto from all VPs","workCenter.settings.assignment.pool":"Candidate pool","workCenter.settings.assignment.fixed":"Fixed VP","workCenter.settings.capability":"Required capability","workCenter.settings.vp":"Virtual Person","workCenter.settings.poolMembers":"Candidate VPs","workCenter.settings.modelPolicy":"Model policy","workCenter.settings.model.inherit":"Inherit from VP","workCenter.settings.model.primary":"Agent primary model","workCenter.settings.model.fast":"Agent fast model","workCenter.settings.model.specific":"Specific model","workCenter.settings.model":"Model","workCenter.settings.effort":"Reasoning effort","workCenter.settings.effortDefault":"Model default","workCenter.settings.effortHelp":"Overrides the selected model\u2019s default reasoning effort for every Work Center Action.","workCenter.settings.effortChooseModelHelp":"Select the Agent primary model, fast model, or a specific model to configure effort. Inherit from VP uses each VP\u2019s model default.","workCenter.settings.effortUnsupportedHelp":"The selected model does not expose configurable effort, so its model default is used.","workCenter.settings.saving":"Saving\u2026","workCenter.settings.reload":"Reload settings","workCenter.settings.conflict":"Settings changed elsewhere. Reload before saving again.","workCenter.settings.upgradeRequired":"This Agent version cannot save Work Center settings. The current values are shown read-only; upgrade the Agent to edit and save them.","workCenter.settings.saveNotConfirmed":"The Agent did not confirm the submitted prompts and model policy. Settings were not closed; reload or upgrade the Agent before trying again.","workCenter.settings.addWorkflow":"Duplicate workflow","workCenter.settings.removeWorkflow":"Remove","workCenter.settings.newWorkflow":"Workflow {index}","workCenter.settings.workflowName":"Workflow name","workCenter.settings.newStage":"New stage","workCenter.settings.addStage":"Add stage","workCenter.settings.removeStage":"Remove stage","workCenter.settings.moveUp":"Move stage up","workCenter.settings.moveDown":"Move stage down","workCenter.settings.stageType":"Stage type","workCenter.settings.reviewReturnStage":"Return to stage when changes are requested","workCenter.settings.instruction":"Stage prompt","workCenter.settings.instructionHint":"Define what this stage must do.","workCenter.settings.instructionHelp":"The WorkItem goal, acceptance criteria, and reusable context are added automatically at run time.","workCenter.settings.instructionReset":"Restore default"}});function dl(){return typeof navigator>"u"||!navigator?"":navigator.userAgent||""}function yn(){let e=dl();return/Android|iPhone|iPad|iPod|Windows Phone|IEMobile|BlackBerry|Opera Mini/i.test(e)}function $i(){return/MicroMessenger/i.test(dl())}function Vi(){return/AlipayClient/i.test(dl())}var ul=N(()=>{});var Up,Kp=N(()=>{St();Nt();ul();Up={name:"LoginPage",template:`
14
+ The agent will restart after upgrading.`,"chat.agent.alreadyLatest":"Agent is already at the latest version (v{version}), no upgrade needed.","chat.agent.nodeIncompatible":"Agent upgrade aborted: target version v{version} requires Node {required}, but this machine is running Node {current}. Please upgrade Node.js first, then retry.","chat.agent.manualUpgradeRequired":'Agent v{version} predates the safe remote-upgrade handoff. Legacy clients do not report enough platform information to prove the update is safe, so this request was blocked instead of risking an offline Agent. Run "npm install -g @yeaft/webchat-agent@latest --registry=https://pkg.yeaft.com/" once on that machine, then start the Agent again. Automatic upgrades are supported from v{minimum}.',"chat.agent.online":"{count} Agent(s) online","chat.agent.selectFirst":"Please select an Agent first","chat.agent.yeaft":"Yeaft Chat","sidebar.toggle.chat":"Switch to Chat","sidebar.toggle.yeaft":"Switch to Yeaft","sidebar.surface.label":"Sidebar view","sidebar.surface.sessions":"Sessions","sidebar.provider.label":"Session provider","sidebar.provider.claude":"Claude","sidebar.sessions.new":"New session","sidebar.sessions.newChat":"New chat","sidebar.sessions.emptyProvider":"No sessions for this provider","sidebar.sessions.menu":"Session menu","sidebar.sessions.unread":"Unread","sidebar.sessions.pinned":"Pinned","sidebar.sessions.processing":"Reply in progress","sidebar.sessions.hidden":"Hidden sessions","sidebar.sessions.remove":"Remove from sidebar","sidebar.sessions.agent":"Agent","sidebar.sessions.provider":"Provider","sidebar.projects.title":"Projects","sidebar.projects.menu":"Project menu","sidebar.projects.new":"New project","sidebar.projects.newSession":"New Session in {name}","sidebar.projects.assignFailed":"Session created, but it could not be added to {name}. Error: {message}","sidebar.projects.empty":"No projects yet","sidebar.projects.noSessions":"Drag a Yeaft chat here","sidebar.projects.namePrompt":"Project name","sidebar.projects.renamePrompt":"Rename project","sidebar.projects.rename":"Rename project","sidebar.projects.delete":"Delete project","sidebar.projects.deleteConfirm":'Delete project "{name}"? Its chats will move to Recents.',"sidebar.projects.remove":"Remove from project","sidebar.projects.moveMenu":"Move to Projects","sidebar.projects.moveBack":"Back","sidebar.projects.moveEmpty":"No other projects","sidebar.projects.moveTo":"Move to {name}","sidebar.projects.instructions":"Project instructions","sidebar.projects.instructionsTitle":"{name} instructions","sidebar.projects.instructionsHint":"These instructions are added to the system prompt for every Session in this Project.","sidebar.projects.instructionsPlaceholder":"Add shared coding conventions, constraints, or workflow guidance...","sidebar.recents.title":"Recents","sidebar.recents.empty":"No chats found","yeaft.back":"Back","yeaft.session.people":"People","yeaft.session.peopleEmpty":"No people","yeaft.session.runningTasks":"Running tasks","yeaft.session.tasksEmpty":"No running tasks","yeaft.session.owner":"Owner","yeaft.session.started":"Started","yeaft.breadcrumb.label":"Thread filter","yeaft.breadcrumb.mainStream":"Main stream","yeaft.breadcrumb.backHint":"Return to full stream (Esc)","yeaft.featureDetail.ariaLabel":"Task detail","yeaft.featureDetail.replyTo":"Reply in:","yeaft.featureDetail.forkHint":"No active thread \u2014 fork a new one to reply.","yeaft.featureDetail.empty":"No messages for this task yet.","yeaft.featureDetail.threadPillHint":"Open thread","yeaft.featureDetail.summary.aria":"Task summary timeline","yeaft.featureDetail.summary.title":"Summary timeline","yeaft.featureDetail.summary.loading":"Loading summary history\u2026","yeaft.featureDetail.summary.empty":"No summaries yet.","yeaft.featureDetail.summary.error":"Summary history failed: {error}","yeaft.featureDetail.summary.showArchived":"Show archived","yeaft.featureDetail.related.aria":"Related tasks","yeaft.featureDetail.related.title":"Related tasks","yeaft.featureDetail.related.unlink":"Unlink","yeaft.featureDetail.members.aria":"Task members","yeaft.featureDetail.members.title":"Members","yeaft.featureDetail.members.abort":"Abort","yeaft.featureDetail.members.kick":"Kick","yeaft.model":"Model","yeaft.placeholder":"Ask anything...","yeaft.inbox":"Inbox","yeaft.inbox.tooltip":"Your default thread \u2014 one-on-one chat with Yeaft. New threads can be created for specific topics or tasks.","yeaft.sidebar.activeThreads":"Active","yeaft.sidebar.idleThreads":"Idle","yeaft.sidebar.archivedThreads":"Archived","yeaft.sidebar.tasks":"Tasks","yeaft.sidebar.emptyActive":"No active threads","yeaft.sidebar.emptyIdle":"No idle threads","yeaft.sidebar.emptyArchived":"No archived threads","yeaft.sidebar.emptyTasks":"No tasks match","yeaft.sidebar.results":"Results","yeaft.sidebar.resultsThreads":"Threads","yeaft.sidebar.kindThread":"thread","yeaft.sidebar.cancel":"Cancel","yeaft.sidebar.mergeInto":"Merge into\u2026","yeaft.sidebar.mergeNoCandidates":"No other threads to merge into","yeaft.sidebar.mergeConfirmTitle":"Merge this thread?","yeaft.sidebar.mergeIrreversible":"This cannot be undone. The source thread will be archived and its messages moved to the target.","yeaft.sidebar.mergeConfirm":"Merge","yeaft.settings.sidebarV2":"Experimental: Sidebar V2","yeaft.settings.sidebarV2Hint":"Thread list + task tree (preview).","yeaft.clearConfirm":"Clear all messages?","yeaft.mode":"Mode","yeaft.agent":"Agent","yeaft.connecting":"Connecting...","yeaft.ready":"Ready","yeaft.tools":"tools","yeaft.skills":"skills","yeaft.mcp":"MCP","yeaft.showSidebar":"Show sidebar","yeaft.hideSidebar":"Hide sidebar","yeaft.debug":"Debug","yeaft.debugClose":"Close debug panel","yeaft.debugTurns":"turns","yeaft.debugTabToolStats":"Tool Stats","yeaft.debugTabDream":"Dream","yeaft.debugTabRequestLog":"Request Log","yeaft.debugHistoryLoad":"Load request history","yeaft.debugHistoryLoading":"Loading...","yeaft.debugHistoryLoaded":"{count} loaded","yeaft.debugSearchPlaceholder":"Regex search request logs","yeaft.debugSearchHint":"Shows the latest 10 globally by default; search matches request summaries across Sessions.","yeaft.debugTurnAction":"View debug trace for this turn","yeaft.debugTurnContext":"Trace","yeaft.debugPanelEmpty":"Hover over an AI turn and click the debug icon to view its trace.","yeaft.dreamDebug.title":"Dream lifecycle","yeaft.dreamDebug.trigger":"Trigger","yeaft.dreamDebug.status":"Status","yeaft.dreamDebug.started":"Started","yeaft.dreamDebug.finished":"Finished","yeaft.dreamDebug.time":"Time","yeaft.dreamDebug.phase":"Phase","yeaft.dreamDebug.call":"Call","yeaft.dreamDebug.location":"Location","yeaft.dreamDebug.result":"Result","yeaft.dreamDebug.noLatest":"No dream check has been recorded for this session yet.","yeaft.dreamDebug.noEvents":"No dream events yet for this session.","yeaft.dreamDebug.outputTitle":"Dream output loaded for this session","yeaft.dreamDebug.scope":"Scope","yeaft.dreamDebug.lastDream":"Last dream","yeaft.dreamDebug.messagesCovered":"Messages covered","yeaft.dreamDebug.noOutput":"No dream output has been written for this session yet.","yeaft.dreamDebug.promptLoadTitle":"Dream memory loaded into system prompt","yeaft.dreamDebug.loadedInto":"Loaded into","yeaft.dreamDebug.vp":"VP","yeaft.dreamDebug.summaryToPrompt":"summary.md -> system prompt","yeaft.dreamDebug.itemList":"Dream runs and scopes","yeaft.dreamDebug.searchPlaceholder":"Search Dream sessions by title, id, or summary...","yeaft.dreamDebug.noSearchResults":"No Dream sessions match this search.","yeaft.dreamDebug.noSummary":"No summary available","yeaft.dreamDebug.segments":"segments","yeaft.dreamDebug.lastError":"Last error","yeaft.dreamDebug.overview":"Overview","yeaft.dreamDebug.sessionId":"Session ID","yeaft.dreamDebug.loadedAt":"Loaded at","yeaft.dreamDebug.layers":"Layers","yeaft.dreamDebug.summaryLayer":"Resident summary","yeaft.dreamDebug.noPromptLoad":"No prompt-load record is available for this scope.","yeaft.dreamDebug.segmentTitle":"Segments","yeaft.dreamDebug.sourceMessages":"Source messages","yeaft.dreamDebug.createdAt":"Created","yeaft.dreamDebug.updatedAt":"Updated","yeaft.dreamDebug.noSegments":"No memory segments are available for this scope.","yeaft.dreamDebug.requestResponse":"Request / Response","yeaft.dreamDebug.noRequestResponse":"No Dream request/response log has been persisted for this scope yet.","yeaft.dreamDebug.empty":"No Dream debug data has been recorded yet.","yeaft.debugGroupFollowMain":"Follow main pane","yeaft.debugGroupAll":"All sessions","yeaft.debugAssistantResponse":"Assistant response","yeaft.debugViewAssistantResponse":"View response","yeaft.debugToolInput":"Input","yeaft.debugToolResult":"Result","yeaft.debugToolRunning":"running","yeaft.debugToolRunningNoResult":"Running; no result yet","yeaft.debugShowDetails":"show","yeaft.debugHideDetails":"hide","yeaft.debugTurnStartedAt":"turn started at","yeaft.debugRequestAt":"request time","yeaft.debugRequestAtDerived":"derived from turn start (legacy loop)","yeaft.turn":"Turn {n}","yeaft.systemPrompt":"System Prompt","yeaft.messagesLabel":"Messages","yeaft.response":"Response","yeaft.toolCalls":"Tool Calls","yeaft.functionCalls":"Function Calls","yeaft.request":"Request","yeaft.pending":"(pending)","yeaft.inputTokens":"Input","yeaft.outputTokens":"Output","yeaft.duration":"Duration","yeaft.noDebugData":"No debug data yet","yeaft.showDebug":"Show debug panel","yeaft.hideDebug":"Hide debug panel","yeaft.reloadPage":"Reload page","yeaft.reloadMessages":"Reload messages","sidebar.sessions.syncing":"Syncing latest messages","yeaft.historySearch.label":"Search Session history","yeaft.historySearch.button":"Search messages","yeaft.historySearch.placeholder":"Search messages in this Session","yeaft.historySearch.searching":"Searching\u2026","yeaft.historySearch.minChars":"Type at least 2 characters","yeaft.historySearch.empty":"No matching messages","yeaft.historySearch.error":"Search failed. Try again.","yeaft.historySearch.unsupported":"Upgrade this Agent to search Session history.","yeaft.historySearch.more":"Load more results","yeaft.historySearch.you":"You","yeaft.historySearch.assistant":"Assistant","yeaft.outline.label":"Message history","yeaft.outline.sender":"Sender","yeaft.outline.allSenders":"All senders","yeaft.outline.title":"Message history","yeaft.outline.placeholder":"Search this conversation","yeaft.outline.searching":"Searching\u2026","yeaft.outline.loading":"Loading\u2026","yeaft.outline.older":"Load older messages","yeaft.outline.moreMatches":"Load more matches","yeaft.outline.minChars":"Type at least 2 characters","yeaft.outline.empty":"No messages yet","yeaft.outline.noMatches":"No matching messages","yeaft.outline.error":"Could not load the outline. Try again.","yeaft.outline.unsupported":"Upgrade this Agent to use the conversation outline.","yeaft.outline.you":"You","yeaft.outline.assistant":"Assistant","yeaft.outline.nonText":"Non-text response","yeaft.switchModel":"Switch model","yeaft.modelMenu.title":"Model and LLM settings","yeaft.modelMenu.label":"Model","yeaft.modelMenu.effort":"Effort","yeaft.modelMenu.effort.openaiReasoning":"Reasoning effort","yeaft.modelMenu.effort.anthropicBudget":"Thinking budget","yeaft.modelMenu.effort.anthropicAdaptive":"Adaptive thinking effort","yeaft.modelMenu.effort.minimal":"Minimal","yeaft.modelMenu.effort.low":"Low","yeaft.modelMenu.effort.medium":"Medium","yeaft.modelMenu.effort.high":"High","yeaft.modelMenu.effort.xhigh":"X-High","yeaft.modelMenu.effort.max":"Max","yeaft.modelMenu.noEffort":"This model does not expose a compatible effort control.","yeaft.modelMenu.configureHint":"Providers, keys, model list","yeaft.settings.title":"Settings","settings.yeaft.tabs.vp":"VP Library","settings.yeaft.tabs.search":"Search","settings.yeaft.tabs.mcp":"MCP","yeaft.settings.tabs.vp":"VP Library","yeaft.settings.tabs.search":"Search","yeaft.settings.tabs.mcp":"MCP","settings.mcp.title":"MCP servers","settings.mcp.description":"Connect Model Context Protocol servers to extend Yeaft with extra tools. Servers are stored in ~/.yeaft/config.json on the agent; tools appear in the LLM's catalogue as mcp__<server>__<tool>.","settings.mcp.reloadAll":"Reload all","settings.mcp.reloadOne":"Reconnect this server","settings.mcp.loading":"Working\u2026","settings.mcp.connected":"connected","settings.mcp.disconnected":"disconnected","settings.mcp.tools":"tools","settings.mcp.remove":"Remove","settings.mcp.empty":"No MCP servers configured yet. Add one below.","settings.mcp.addServer":"Add server","settings.mcp.addServerDesc":"Most MCP servers run as a local command \u2014 Yeaft launches it via stdio and discovers its tools.","settings.mcp.serverName":"Name","settings.mcp.command":"Command","settings.mcp.args":"Arguments","settings.mcp.argsPlaceholder":"e.g. -y @modelcontextprotocol/server-filesystem /tmp","settings.mcp.env":"Environment","settings.mcp.envPlaceholder":"KEY=value per line. Lines starting with # are ignored.","settings.mcp.saving":"Saving\u2026","settings.mcp.add":"Add","settings.mcp.cancel":"Clear","settings.mcp.connectFailed":"Saved but failed to connect","settings.mcp.addSuccess":"Server added","settings.mcp.removeSuccess":"Server removed","settings.mcp.reloadSuccess":"Reload requested","settings.mcp.confirmRemove":'Remove MCP server "{name}"? Its tools will disappear from the next LLM turn.',"settings.mcp.errors.nameRequired":"Name is required","settings.mcp.errors.nameFormat":"Name must be lowercase letters, digits, dashes or underscores only","settings.mcp.errors.commandRequired":"Command is required","settings.mcp.errors.argsParse":"Could not parse arguments","settings.mcp.errors.envParse":"Could not parse environment","search.settings.backendTitle":"Search backend","search.settings.backendDesc":"Choose the primary backend for the WebSearch tool. If the primary fails, the engine automatically falls back to HTML scraping.","search.settings.backend.tavily":"Tavily","search.settings.backend.tavilyHint":"Hosted search API. Free tier: 1000 queries/month. Recommended.","search.settings.backend.playwright":"Playwright service","search.settings.backend.playwrightHint":"Self-hosted browser-based search/fetch. Best for cloud IPs that get bot-blocked. Service not yet shipped.","search.settings.comingSoon":"Coming soon","search.settings.tavilyKeyTitle":"Tavily API key","search.settings.tavilyKeyDesc":"Stored on the agent in ~/.yeaft/config.json. Get a free key at","search.settings.tavilyKeyUnchanged":"(unchanged)","search.settings.clearKey":"Clear","search.settings.usageTitle":"Usage this month","search.settings.usageRefresh":"Refresh","search.settings.usageLoading":"Loading\u2026","search.settings.usagePlan":"Plan","search.settings.usageUsed":"Used","search.settings.usagePaygo":"Pay-as-you-go","search.settings.usageError":"Failed to load usage","search.settings.save":"Save","search.settings.saving":"Saving\u2026","search.settings.saveSuccess":"Saved","search.settings.cancel":"Reset","yeaft.settings.yeaftTitle":"Thread Concurrency & Archive","yeaft.settings.yeaftDesc":"Tune how many threads can run at once and when idle threads are auto-archived.","yeaft.settings.maxConcurrentLabel":"Max concurrent threads","yeaft.settings.maxConcurrentHint":"Maximum number of live threads at once (includes the always-on main thread). New threads beyond this cap are refused until an existing thread is archived or terminated. Range: 1-50.","yeaft.settings.archiveIdleDaysLabel":"Auto-archive idle threads after (days)","yeaft.settings.archiveIdleDaysHint":"Threads with no activity for this many days will be archived. Range: 1-3650.","yeaft.settings.yeaftSaveBtn":"Save","yeaft.settings.yeaftSaving":"Saving...","yeaft.settings.yeaftSaved":"Saved","yeaft.settings.yeaftLoading":"Loading...","yeaft.settings.yeaftLoadError":"Failed to load Yeaft settings","yeaft.settings.yeaftSaveError":"Failed to save Yeaft settings","yeaft.settings.rangeErrorConcurrent":"Must be between 1 and 50","yeaft.settings.rangeErrorArchive":"Must be between 1 and 3650","chat.session.creating":"Creating conversation...","chat.session.loadingHistory":"Loading conversation history...","yeaft.historyLoad.error":"Conversation history could not be loaded. Your messages are still stored on the Agent.","yeaft.historyLoad.retry":"Retry loading","yeaft.sessionInventory.error":"Sessions could not be loaded. Your conversations are still stored on the Agent.","yeaft.sessionInventory.retry":"Retry Sessions","chat.session.closed":"Conversation closed","chat.session.agentOffline":"Agent is offline. This session will be available when the agent reconnects.","chat.execution.cancelled":"Execution cancelled","chat.sidebar.expand":"Expand menu","chat.sidebar.collapse":"Collapse sidebar","chat.sidebar.workbench":"Workbench","chat.sidebar.newConv":"Conversation","chat.sidebar.recentChats":"Recent Chats","chat.sidebar.resumeConv":"Resume Conversation","chat.sidebar.lightMode":"Light Mode","chat.sidebar.darkMode":"Dark Mode","chat.sidebar.settings":"Settings","chat.sidebar.emptyHint":"Click the button above to create a new conversation","chat.sidebar.closeConv":"Close Conversation","chat.sidebar.renameConv":"Rename","chat.sidebar.pin":"Pin to top","chat.sidebar.unpin":"Unpin","chat.connection.connecting":"Connecting...","chat.connection.reconnecting":"Reconnecting ({current}/{max})...","chat.connection.updating":"Server is updating, please wait...","chat.connection.disconnected":"Disconnected","chat.connection.reconnect":"Reconnect","chat.connection.reconnectFailed":"Connection lost. Please click reconnect to retry.","chat.time.justNow":"Just now","chat.time.minutesAgo":"{count}m ago","chat.time.daysAgo":"{count}d ago","chat.time.today":"Today","chat.time.yesterday":"Yesterday","chat.delete.confirm":"Are you sure you want to close this conversation? This will terminate the corresponding Claude process.","chat.delete.enterWorkDir":"Please enter the working directory path","modal.newConv.workDir":"Work Directory","modal.newConv.inputOrSelect":"Enter or select a work directory","modal.newConv.browse":"Browse","modal.newConv.noWorkDirs":"No work directories","modal.newConv.selectAgent":"Please select an online Agent first","modal.newConv.create":"Create Conversation","modal.newConv.folderLabel":"\u{1F4C1} Work Directories","modal.newConv.provider":"Provider","modal.newConv.model":"Model","provider.claudeCode":"Claude Code","provider.copilot":"Copilot","modal.resume.workDir":"Work Directory","modal.resume.inputOrSelect":"Enter or select a work directory","modal.resume.browse":"Browse","modal.resume.tabFolders":"Directories","modal.resume.tabSessions":"History","modal.resume.noWorkDirs":"No work directories","modal.resume.selectWorkDir":"Please select a work directory first","modal.resume.noSessions":"No history sessions in this directory","modal.resume.untitled":"Untitled Session","modal.resume.folderLabel":"\u{1F4C1} Work Directories","modal.resume.sessionLabel":"\u{1F4AC} History Sessions","modal.resume.selectAgent":"Please select an online Agent first","modal.folderPicker.title":"Select Work Directory","modal.folderPicker.parentDir":"Parent Directory","welcome.subtitle":"Web Code Agent for sessions, tools, and VP collaboration","welcome.agentOnline":"{count} Agent(s) online","welcome.noAgents":"No Agents Online","welcome.noAgentsHint":"Please start an Agent and connect it to the server","welcome.noAgent":"No Agents Online","welcome.noAgentHint":"Please start an Agent and connect it to the server","welcome.setupAgent":"Set Up Agent","welcome.setupKicker":"Agent setup","welcome.setupTitle":"Connect your first Yeaft Agent","welcome.setupDesc":"Copy two commands to connect a local Agent. GitHub Copilot can configure models automatically.","welcome.setupInstallTitle":"Install CLI","welcome.setupCopilotTitle":"Configure models","welcome.setupRunTitle":"Start Agent","welcome.setupSecretLoading":"Preparing your Agent secret...","welcome.setupSecretError":"Could not prepare the Agent secret. Open Security settings to retry.","welcome.openSecuritySettings":"Open Security Settings","welcome.newConv":"Conversation","welcome.resumeHistory":"Resume History","messages.loadingMore":"Loading more messages...","messages.loadMore":"\u2191 Click or scroll up to load more","message.loadingMore":"Loading more messages...","message.loadMore":"\u2191 Click or scroll up to load more","message.scrollToLatest":"\u2193 Latest","message.showResponses":"Show {count} response(s)","message.hideResponses":"Hide response(s)","message.assistant":"Assistant","chat.waiting.disconnected":"Connection lost","chat.connecting":"Connecting to provider session...","chat.waiting.compacting":"Compacting context...","chat.waiting.agentOffline":"Agent offline","chat.waiting.sessionLost":"Session lost, refreshed, waiting for update...","chat.waiting.cliExited":"Claude process exited, refreshed, waiting for update...","chat.waiting.refresh":"Refresh","chat.waiting.thinking":"AI is thinking, please wait...","btw.hint":"esc to exit","btw.placeholder":"Ask a side question...","btw.close":"Exit BTW mode","message.copyContent":"Copy content","message.copy":"Copy content","message.copied":"Copied","message.copyCode":"Copy code","message.copyAll":"Copy all","message.screenshot":"Screenshot","message.screenshotting":"Taking screenshot...","message.exportMd":"Export MD","message.askInput":"Your input needed","message.askAnswered":"\u2713 Answered","message.askCustom":"Or type a custom answer...","message.askCustomPlaceholder":"Or type a custom answer...","message.askSubmit":"Submit Answer","message.askWaiting":"Waiting for question...","message.askExpired":"This question has expired. Ask the role to re-ask.","message.openInEditor":"Open in editor","message.resultDone":"Done","message.done":"Done","message.resultRead":"Read {file}","message.readFile":"Read {name}","message.file":"file","message.attachImages":"{count} image(s)","message.imageCount":"{count} image(s)","message.imagePreview":"Image preview","message.previousImage":"Previous image","message.nextImage":"Next image","message.imagePosition":"Image {current} of {total}","message.imageUnavailable":"Image unavailable","message.attachFiles":"{count} file(s)","message.fileCount":"{count} file(s)","message.quote":"Quote","message.removeQuote":"Remove quote","message.replyingTo":"Replying to {author}","message.quotedFrom":"Quoted from {author}","message.editAsNew":"Edit","message.you":"You","input.upload":"Upload file","input.placeholder":"Type a message...","input.send":"Send","input.stopExecution":"Stop execution","chatInput.upload":"Upload file","chatInput.uploading":"Uploading...","chatInput.uploadFailed":"Upload failed","chatInput.retryUpload":"Retry","chatInput.removeAttachment":"Remove attachment","chatInput.placeholder":"Type a message...","chatInput.send":"Send","chatInput.stop":"Stop execution","tools.thinking":"Thinking...","tools.read":"Reading file","tools.write":"Writing file","tools.edit":"Editing file","tools.bash":"Running command","tools.glob":"Searching files","tools.grep":"Searching content","tools.task":"Running task","tools.webFetch":"Fetching web page","tools.webSearch":"Searching the web","tools.todoWrite":"Updating tasks","tools.executing":"Running {name}","status.thinking":"Thinking...","status.reading":"Reading file","status.writing":"Writing file","status.editing":"Editing file","status.executing":"Running command","status.searchingFiles":"Searching files","status.searchingContent":"Searching content","status.executingTask":"Running task","status.fetching":"Fetching web page","status.searching":"Searching the web","status.updatingTasks":"Updating tasks","status.executingTool":"Running {name}","header.compacting":"Compressing context...","header.compacted":"Context compression complete","chatHeader.newConv":"Conversation","chatHeader.compacting":"Compressing context...","chatHeader.compactDone":"Context compression complete","chatHeader.compact":"Compact context","chatHeader.resume":"Resume session","chatHeader.refresh":"Refresh messages","chatHeader.reloadPage":"Reload page","chatHeader.clear":"Clear messages","chatHeader.clearing":"Clearing context...","chatHeader.clearDone":"Context cleared","chatHeader.confirmClear":"Are you sure you want to clear all messages in this conversation?","chatHeader.mcpConfig":"MCP Servers","chatHeader.mcpNeedRestart":"Changes will take effect after restarting the session.","chatHeader.expertPanel":"Expert Panel","chatHeader.subAgentPanel":"Sub-Agents","settings.close":"Close settings","settings.tabs.account":"Account","settings.tabs.security":"Security","settings.tabs.general":"General","settings.tabs.sandbox":"Sandbox","settings.tabs.invitations":"Invitations","auth.sessionExpired":"Session expired. Please log in again.","settings.sandbox.description":"A persistent managed Yeaft Agent on a qualified dedicated Host.","settings.sandbox.agentName":"Agent name","settings.sandbox.sizeLabel":"Size","settings.sandbox.enable":"Enable Sandbox","settings.sandbox.creating":"Setting up...","settings.sandbox.start":"Start","settings.sandbox.stop":"Stop","settings.sandbox.retry":"Retry","settings.sandbox.remove":"Remove","settings.sandbox.removeConfirm":"Permanently remove this Sandbox, including its home and workspace data? This cannot be undone.","settings.sandbox.size.small":"Small","settings.sandbox.size.normal":"Normal","settings.sandbox.state.reserving":"Setting up","settings.sandbox.state.provisioning":"Preparing Sandbox","settings.sandbox.state.starting":"Starting","settings.sandbox.state.waiting_for_agent":"Waiting for Agent","settings.sandbox.state.stopping":"Stopping","settings.sandbox.state.removing":"Removing","settings.sandbox.state.removed":"Removed","settings.sandbox.state.running":"Running","settings.sandbox.state.stopped":"Stopped","settings.sandbox.state.failed":"Failed","settings.sandbox.state.remove_failed":"Remove failed","settings.sandbox.state.recovery_required":"Recovery required","settings.sandbox.stage.reserving_capacity":"Reserving capacity","settings.sandbox.stage.starting":"Starting Sandbox","settings.sandbox.stage.stopping":"Stopping Sandbox","settings.sandbox.stage.retrying":"Retrying operation","settings.sandbox.stage.removing":"Removing Sandbox","settings.sandbox.stage.complete":"Complete","settings.sandbox.stage.dispatching":"Dispatching securely","settings.sandbox.stage.capacity_rejected":"Waiting for capacity","settings.sandbox.unavailable.disabled":"Sandbox is not enabled for this deployment.","settings.sandbox.unavailable.notEntitled":"Sandbox is not available for this account.","settings.sandbox.unavailable.capacityUnavailable":"Sandbox is temporarily unavailable.","settings.sandbox.error.SANDBOX_LOAD_FAILED":"Sandbox status could not be loaded. Close Settings and try again.","settings.sandbox.error.SANDBOX_CREATE_FAILED":"Sandbox could not be created. Try again later.","settings.sandbox.error.SANDBOX_ACTION_FAILED":"Sandbox action could not be scheduled. Try again later.","settings.sandbox.error.SANDBOX_OPERATION_TIMEOUT":"The operation timed out. Retry or remove the Sandbox.","settings.sandbox.error.SANDBOX_RUNTIME_FAILED":"The Sandbox runtime reported a failure.","settings.account.username":"Username","settings.account.role":"Role","settings.account.email":"Email","settings.account.emailNotSet":"Not set","settings.account.profileLoadFailed":"Failed to load account profile","settings.account.logout":"Log Out","settings.account.roleAdmin":"Admin","settings.account.rolePro":"Pro","settings.account.linkedAccounts":"Linked Accounts","settings.account.linkedDesc":"Link external sign-in providers so you can log in with any of them.","settings.account.bind":"Link","settings.account.unbind":"Unlink","settings.account.linked":"Linked","settings.account.providerDisabled":"Not configured","settings.account.cantUnbindLast":"Cannot unlink the only login method","settings.account.unbindFailed":"Failed to unlink: {error}","settings.account.bindFailed":"Failed to link account","settings.account.ssoBoundMsg":"Successfully linked {provider}.","settings.account.ssoConflictMsg":"This {provider} account is already linked to another user.","settings.account.providerMicrosoft":"Microsoft","settings.account.providerGithub":"GitHub","settings.account.providerGoogle":"Google","settings.account.providerWechat":"WeChat","settings.account.providerAlipay":"Alipay","settings.security.agentKey":"Agent Secret","settings.security.agentKeyDesc":"Shared secret for Agent connection authentication","settings.security.agentSetupCommands":"Agent setup commands","settings.security.agentCmdInstall":"Install Agent","settings.security.agentCmdService":"Run Agent server","settings.security.agentCmdNeedsSecret":"Generate an Agent Secret first to create the server command.","settings.security.agentCmdLlm":"Manual Copilot fallback","settings.security.agentCmdLlmDesc":"Run the install command first. If an existing GitHub Copilot token is available, Yeaft configures github-copilot/gpt-5.5 automatically; use the Copilot command only as a fallback.","settings.security.none":"None","settings.security.show":"Show","settings.security.hide":"Hide","settings.security.generateKey":"Generate Secret","settings.security.resetKey":"Reset Secret","settings.security.resetting":"Resetting...","settings.security.resetWarning":"All Agents need to be reconfigured after reset","settings.security.changePassword":"Change Password","settings.security.currentPassword":"Current password","settings.security.newPassword":"New password (min 6 characters)","settings.security.confirmPassword":"Confirm new password","settings.security.changeBtn":"Change Password","settings.security.changing":"Changing...","settings.security.enterCurrentPwd":"Please enter your current password","settings.security.newPwdMin":"New password must be at least 6 characters","settings.security.pwdMismatch":"Passwords do not match","settings.security.pwdChanged":"Password changed successfully","settings.security.setPassword":"Set a Password","settings.security.setPasswordDesc":"You signed in via SSO and have no password yet. Set one so you can also log in with username + password.","settings.security.setBtn":"Set Password","settings.security.pwdSet":"Password set successfully","settings.security.deleteAccount":"Delete Account","settings.security.deleteAccountDesc":"Permanently delete your account and all associated data. This cannot be undone.","settings.security.deleteBtn":"Delete Account","settings.security.deleteConfirmBtn":"Confirm Delete","settings.security.deleteConfirmPlaceholder":"Type DELETE to confirm","settings.security.deleteConfirmRequired":"Type DELETE to confirm account removal","settings.security.deleteFailed":"Failed to delete account","settings.security.deleting":"Deleting...","settings.general.theme":"Theme","settings.general.lightTheme":"Light","settings.general.darkTheme":"Dark","settings.general.language":"Language","settings.general.telemetry":"Performance telemetry","settings.general.telemetryDesc":"Buffer local timing diagnostics without sending trace content to the server.","settings.general.telemetryOn":"On","settings.general.telemetryOff":"Off","settings.general.telemetryRawLimit":"Raw provider response limit (bytes)","settings.invite.create":"Create Invite Code","settings.invite.normalUser":"Regular User","settings.invite.proUser":"Pro User","settings.invite.createBtn":"Create Invite","settings.invite.creating":"Creating...","settings.invite.list":"Invite Codes","settings.invite.used":"Used","settings.invite.expired":"Expired","settings.invite.available":"Available","settings.invite.usedBy":"Used by: {user}","settings.invite.expiredAt":"Expired at: {time}","settings.invite.expiresAt":"Expires at: {time}","settings.invite.noInvites":"No invite codes","settings.msg.copiedClipboard":"Copied to clipboard","settings.msg.copyFailed":"Copy failed","settings.msg.keyReset":"Secret has been reset","settings.msg.resetFailed":"Reset failed","settings.msg.changeFailed":"Change failed","settings.msg.inviteCreated":"Invite code created","settings.msg.createFailed":"Create failed","settings.msg.inviteCopied":"Invite code copied","settings.msg.inviteDeleted":"Invite code deleted","settings.msg.deleteFailed":"Delete failed","settings.tabs.llm":"LLM","settings.tabs.yeaft":"Yeaft","yeaft.session.title":"Sessions","yeaft.session.new":"+ New session","yeaft.session.create.title":"New session","yeaft.session.create.subtitle":"Choose where it runs and which provider should handle it.","yeaft.session.create.close":"Close","yeaft.session.create.nameLabel":"Name","yeaft.session.create.namePlaceholder":"Session name (optional)","yeaft.session.create.workDirLabel":"Work Directory","yeaft.session.create.agentLabel":"Agent","yeaft.session.create.vpPicker":"Pick VPs","yeaft.session.create.vpNone":"No VPs selected","yeaft.session.create.vpCount":"{n} VPs selected","yeaft.session.create.untitled":"Untitled session","yeaft.session.create.rosterEmpty":"No VPs available \u2014 create one from the VP Library first.","yeaft.session.create.rosterLoading":"Loading VPs\u2026","yeaft.session.create.rosterError":"VPs could not be loaded from this Agent.","yeaft.session.create.rosterRetry":"Retry","yeaft.vp.domain.general":"General & coordination","yeaft.vp.domain.productDesign":"Product & experience design","yeaft.vp.domain.softwareSystems":"Software & systems","yeaft.vp.domain.securityReliability":"Security & reliability","yeaft.vp.domain.scienceAnalysis":"Science & analysis","yeaft.vp.domain.philosophyPsychology":"Philosophy & psychology","yeaft.vp.domain.strategyHistory":"Strategy & history","yeaft.vp.domain.businessManagement":"Business & management","yeaft.vp.domain.artsCulture":"Arts & culture","yeaft.vp.domain.other":"Other specialties","yeaft.vp.domain.custom":"Custom VPs","yeaft.session.create.defaultVpHint":"The VP that answers when no one is @-mentioned.","yeaft.session.create.folderLabel":"\u{1F4C1} Work directories","yeaft.session.create.sessionLabel":"\u{1F4AC} Sessions in this directory","yeaft.session.create.noWorkDirs":"No prior sessions yet \u2014 pick or type a work directory above.","yeaft.session.create.back":"Back","yeaft.session.create.creating":"Creating\u2026","yeaft.session.create.submit":"Create","yeaft.onboarding.ariaLabel":"Yeaft getting started guide","yeaft.onboarding.topbarTitle":"Get started with Yeaft","yeaft.onboarding.eyebrow":"Yeaft setup guide","yeaft.onboarding.title":"Connect an Agent before chatting","yeaft.onboarding.subtitle":"Run these commands on the machine that should execute tools. The agent secret is generated automatically for your account if it does not exist yet.","yeaft.onboarding.createSession":"Create or restore Session","yeaft.onboarding.configureLlm":"Open LLM settings","yeaft.onboarding.secretLoading":"Generating agent secret\u2026","yeaft.onboarding.secretError":"Failed to load agent secret.","yeaft.onboarding.secretPending":"<loading-agent-secret>","yeaft.onboarding.installTitle":"Install yeaft-agent","yeaft.onboarding.installDesc":"Install the command-line Agent package.","yeaft.onboarding.connectTitle":"Connect this Agent","yeaft.onboarding.connectDesc":"The command below uses this server URL and your generated secret.","yeaft.onboarding.llmTitle":"Use GitHub Copilot","yeaft.onboarding.llmDesc":"Authenticate GitHub CLI, then select gpt-5.5 as the default Yeaft model.","yeaft.restore.modal.empty":"No yeaft sessions found in this directory","yeaft.restore.modal.scanError":"Failed to scan: {message}","yeaft.restore.modal.restoreError":"Failed to restore: {message}","settings.llm.noAgent":"Please select an Agent first to manage LLM configuration.","settings.llm.agentOffline":"Agent is currently offline. LLM configuration will load when the agent comes online.","settings.llm.loading":"Loading configuration...","settings.llm.loadError":"Failed to load configuration","settings.llm.configureAgent":"Configure this agent LLM","settings.llm.configureMenu":"LLM Settings","settings.llm.simpleCopilotTitle":"Recommended: GitHub Copilot","settings.llm.useGitHubCopilot":"Use GitHub Copilot","settings.llm.refreshingModels":"Refreshing models...","settings.llm.managedCopilotTitle":"Managed GitHub Copilot","settings.llm.managedCopilotDesc":"Base URL, authentication, model catalog, and per-model API protocol are managed automatically. Claude models use Anthropic Messages; GPT/o models use OpenAI Responses.","settings.llm.providersTitle":"Providers","settings.llm.testFailed":"Connection test failed","settings.llm.saveSuccess":"LLM settings saved","settings.llm.saveFailed":"Failed to save LLM settings","settings.llm.presets.title":"Quick setup","settings.llm.providersDesc":"Choose a provider, save it, and use it in Sessions.","settings.llm.agentProviders":"This agent providers","settings.llm.agentBadge":"This agent","settings.llm.addProvider":"Add Provider","settings.llm.addFromPreset":"Add from Catalog","settings.llm.preset.title":"Provider Catalog (models.dev)","settings.llm.preset.refresh":"Refresh catalog","settings.llm.preset.loading":"Loading catalog\u2026","settings.llm.preset.empty":"No providers available.","settings.llm.preset.pickProvider":"Pick a provider on the left to see its models.","settings.llm.preset.filterProviders":"Filter providers\u2026","settings.llm.preset.filterModels":"Filter models\u2026","settings.llm.preset.selectAll":"Select all","settings.llm.preset.selectNone":"Clear","settings.llm.preset.cancel":"Cancel","settings.llm.preset.add":"Add to providers","settings.llm.preset.fetchedAt":"Catalog updated {minutes}m ago","settings.llm.addModel":"Add Model","settings.llm.removeModel":"Remove Model","settings.llm.providerName":"Name","settings.llm.providerNamePlaceholder":"e.g. my-proxy","settings.llm.baseUrl":"Base URL","settings.llm.baseUrlPlaceholder":"e.g. http://localhost:6628/v1","settings.llm.apiKey":"API Key","settings.llm.apiKeyPlaceholder":"Enter API key","settings.llm.protocol":"Protocol","settings.llm.protocolOpenAI":"OpenAI Compatible","settings.llm.protocolOpenAIResponses":"OpenAI Responses (GPT-5)","settings.llm.protocolAnthropic":"Anthropic Native","settings.llm.protocolHint.anthropic":"Claude native Messages API.","settings.llm.protocolHint.openai":"Chat Completions /v1/chat/completions \u2014 GPT-4 and most compatible proxies.","settings.llm.protocolHint.openaiResponses":"Responses API /v1/responses \u2014 required for GPT-5 series.","settings.llm.modelCtxPlaceholder":"ctx","settings.llm.modelMaxPlaceholder":"max","settings.llm.models":"Candidate Model IDs","settings.llm.modelsPlaceholder":"Model IDs, comma or newline separated, e.g. claude-sonnet-4-20250514, gpt-5","settings.llm.modelsHint":"Comma or newline separated.","settings.llm.removeProvider":"Remove","settings.llm.modelSelectionTitle":"Model Selection","settings.llm.modelSelectionDesc":"Choose the default models.","settings.llm.primaryModel":"Primary Model","settings.llm.primaryModelDesc":"Used for user-facing conversations","settings.llm.fastModel":"Fast Model","settings.llm.fastModelDesc":"Used for internal tasks (memory, consolidation)","settings.llm.noModels":"No models available. Add a provider first.","settings.llm.selectModel":"Select a model...","settings.llm.debugTitle":"Debug traces","settings.llm.debugDesc":"Per-agent opt-in for collecting per-turn debug traces (system prompts, LLM calls, tool payloads).","settings.llm.enableDebug":"Enable debug traces","settings.llm.save":"Save Changes","settings.llm.saving":"Saving...","settings.llm.saved":"Configuration saved","settings.llm.savedRefreshWarning":"Configuration was saved, but the live model catalog could not refresh: {error}","settings.llm.unsavedChanges":"You have unsaved changes","settings.llm.confirmRemoveProvider":"Remove this provider?","settings.llm.setupTitle":"Connect a model","settings.llm.setupDesc":"GitHub Copilot is recommended. You can also add your own API provider.","settings.llm.providerSectionHint":"Only the fields required to connect a model.","settings.tabs.dashboard":"Dashboard","settings.dashboard.totalUsers":"Total Users","settings.dashboard.onlineUsers":"Online Users","settings.dashboard.onlineAgents":"Online Agents","settings.dashboard.totalSessions":"Total Sessions","settings.dashboard.todayActive":"Today Active","settings.dashboard.todayMessages":"Today Messages","settings.dashboard.todayUserTurns":"Today User Turns","settings.dashboard.totalTokens":"Total Tokens","settings.dashboard.tokenAccuracy":"Provider-reported usage, accumulated from the version that enabled per-user token tracking. Heartbeats are excluded.","settings.dashboard.agentTurns":"Agent Turns","settings.dashboard.agentSessions":"Agent Sessions","settings.dashboard.turns":"Turns","settings.dashboard.tokens":"Tokens","settings.dashboard.inputTokens":"Input","settings.dashboard.outputTokens":"Output","settings.dashboard.cacheTokens":"Cache","settings.dashboard.today":"Today","settings.dashboard.thisWeek":"This Week","settings.dashboard.thisMonth":"This Month","settings.dashboard.all":"All","settings.dashboard.userUsage":"User Usage","settings.dashboard.agentList":"Agent List","settings.dashboard.onlineUserList":"Online Users","settings.dashboard.refresh":"Refresh","settings.dashboard.name":"Name","settings.dashboard.messages":"Messages","settings.dashboard.userTurns":"User Turns","settings.dashboard.sessions":"Sessions","settings.dashboard.requests":"Requests","settings.dashboard.traffic":"Traffic","settings.dashboard.lastLogin":"Last Login","settings.dashboard.status":"Status","settings.dashboard.latency":"Latency","settings.dashboard.version":"Version","settings.dashboard.owner":"Owner","settings.dashboard.role":"Role","settings.dashboard.agent":"Agent","settings.dashboard.online":"Online","settings.dashboard.offline":"Offline","settings.dashboard.noAgents":"No agents registered","settings.dashboard.noUserData":"No user data","settings.dashboard.noOnlineUsers":"No users online","settings.dashboard.loading":"Loading...","settings.dashboard.error":"Failed to load data","settings.dashboard.ago":"{time} ago","settings.dashboard.loadMore":"Load more ({remaining} remaining)","workbench.maximize":"Maximize panel","workbench.restore":"Restore panel","workbench.collapse":"Collapse panel","theme.switchToLight":"Switch to light theme","theme.switchToDark":"Switch to dark theme","theme.toLight":"Switch to light theme","theme.toDark":"Switch to dark theme","terminal.splitH":"Split horizontally (left-right)","terminal.splitV":"Split vertically (top-bottom)","terminal.close":"Close current terminal","terminal.autoCreate":"A terminal will be created when you switch to the Terminal tab","terminal.xtermError":"xterm.js not loaded, please refresh the page","terminal.xtermNotLoaded":"xterm.js not loaded, please refresh the page","terminal.mountError":"Terminal container mount failed","terminal.mountFailed":"Terminal container mount failed","terminal.createError":"Terminal creation failed","terminal.createFailed":"Terminal creation failed","terminal.error":"Terminal error","git.selectFolder":"Select folder","git.repoPath":"Enter Git repository path...","git.repoPathPlaceholder":"Enter Git repository path...","git.workDir":"Git working directory","git.loadStatus":"Load Git status","git.loading":"Loading Git status...","git.loadingStatus":"Loading Git status...","git.clean":"Working directory clean, no changes","git.cleanWorkDir":"Working directory clean, no changes","git.selectAgent":"Select an Agent to load Git status","git.selectAgentFirst":"Select an Agent to load Git status","git.diffOnly":"Diff only","git.fullFile":"Full file","git.zoomIn":"Zoom in","git.zoomOut":"Zoom out","git.loadingDiff":"Loading Diff...","git.clickToView":"Click a file to view diff","git.clickFileToView":"Click a file to view diff","git.selectRepo":"Select Git Repository","git.noDiff":"(No differences)","git.binaryFile":"(Binary file)","files.notLoaded":"Not loaded","files.newFile":"New File","files.newFolder":"New Folder","files.collapseAll":"Collapse All","files.openFolder":"Open Folder","files.deleteSelected":"Delete selected","files.moveSelected":"Move selected","files.enterPath":"Enter path...","files.searchFiles":"Search files... (Ctrl+P)","files.noMatch":"No matches found","files.searching":"Searching...","files.loadingTree":"Loading...","files.emptyDir":"Empty directory","files.loadingFile":"Loading file...","files.searchPlaceholder":"Search...","files.replacePlaceholder":"Replace...","files.replace":"Replace","files.replaceAll":"All","files.replaceCurrent":"Replace current","files.replaceAllTitle":"Replace all","files.clickToView":"Click a file to view content","files.selectFolder":"Select Folder","files.enterFolderName":"Enter folder name...","files.enterFileName":"Enter file name...","files.moveTarget":"Enter target directory path...","files.moveItems":"Move {count} item(s) to the specified directory","files.workDir":"Work directory: {dir}","files.enterDirPath":"Enter directory path...","files.unsavedConfirm":'"{name}" has unsaved changes. Close anyway?',"files.deleteConfirm":'Are you sure you want to delete "{name}"?',"files.deleteDirHint":" (this will delete the folder and all its contents)","files.deleteSelectedConfirm":"Are you sure you want to delete {count} selected item(s)? This action cannot be undone.","files.findPrev":"Previous (Shift+Enter)","files.findNext":"Next (Enter)","files.caseSensitive":"Case sensitive","files.regex":"Regular expression","files.unsaved":"Unsaved","files.clearSelection":"Clear selection","files.rename":"Rename","files.copyHere":"Copy","files.moveTo":"Move to...","files.download":"Download","files.enterNewName":"Enter new name...","files.loadingPreview":"Loading preview...","files.preview":"Preview","files.edit":"Edit","files.pptxNotSupported":"PPTX local preview is not supported. Please switch to Office Online mode in Settings.","files.officePreviewMode":"Office Preview Mode","files.officeOnline":"Office Online","files.localRender":"Local Rendering","proxy.port":"Port","proxy.label":"Label","proxy.add":"Add port mapping","proxy.addPort":"Add port mapping","proxy.enable":"Click to enable","proxy.clickEnable":"Click to enable","proxy.disable":"Click to disable","proxy.clickDisable":"Click to disable","proxy.openNewTab":"Open in new tab","proxy.openInBrowser":"Open in new tab","proxy.noMappings":"No port mappings","proxy.noPorts":"No port mappings","proxy.hint":"After adding ports, you can access local services on the agent machine through proxy URLs","proxy.noPortsHint":"After adding ports, you can access local services on the agent machine through proxy URLs","proxy.selectAgent":"Please select an Agent first","store.selectAgent":"Please select an Agent first","store.creatingConv":"Creating conversation...","store.loadingHistory":"Loading conversation history...","store.executionCancelled":"Execution cancelled","store.loginFailed":"Login failed","store.convClosed":"Conversation closed","store.convCreated":"New conversation created [{agent}], work directory: {workDir}","store.convResumed":"Conversation resumed [{agent}]: {sessionId}","roleplay.creating":"Creating Role Play session...","roleplay.working":"Working","roleplay.selectTeam":"Select team template","roleplay.teamDev":"Software Dev","roleplay.teamCustom":"Custom","roleplay.editRoles":"Edit Roles","roleplay.roleName":"Role ID","roleplay.roleDisplayName":"Display Name","roleplay.roleIcon":"Icon","roleplay.roleDesc":"Role Description","roleplay.rolePrompt":"Role Prompt","roleplay.removeRole":"Remove Role","roleplay.addRole":"Add Role","roleplay.start":"Start Role Play","roleplay.sidebarTitle":"Role Play","roleplay.configTitle":"Role Play","roleplay.newSession":"New Role Play","roleplay.emptyHint":"Send a message to start multi-role collaboration","roleplay.askingYou":"is asking you","roleplay.language":"Language","roleplay.rolePreview":"Role Configuration","roleplay.noAgents":"No online agents available","roleplay.inputPlaceholder":"Type a message\u2026 Use @ to mention a role","roleplay.existingSessions":"Existing Teams","roleplay.restore":"Restore","roleplay.restoring":"Restoring Role Play session...","roleplay.createNew":"Create New Team","expertPanel.title":"Expert Panel","expertPanel.search":"Search roles or actions...","expertPanel.noResults":"No results","expertPanel.clearAll":"Clear","expertPanel.persona":"Persona Prompt","expertPanel.template":"With Input \xB7 Prefix","expertPanel.templateHint":"When user types text: this prefix + user text = final prompt","expertPanel.defaultMsg":"No Input \xB7 Full Prompt","expertPanel.defaultMsgHint":"When user sends without typing: this full prompt is used as-is","expertPanel.loading":"Loading role definitions...","expertPanel.viewPrompt":"View prompt","expertPanel.customRoles":"Custom Roles","expertPanel.addRole":"Add role","expertPanel.editRole":"Edit role","expertPanel.deleteRole":"Delete role","expertPanel.noCustomRoles":"No custom roles yet","expertPanel.createFirst":"Create your first custom role","expertPanel.noActions":"No actions defined","expertPanel.deleteConfirm":'Delete role "{name}"? This cannot be undone.',"expertPanel.deleteConfirmBtn":"Delete","expertEditor.createTitle":"Create Custom Role","expertEditor.editTitle":"Edit Custom Role","expertEditor.basicInfo":"Basic Info","expertEditor.roleName":"Role Name","expertEditor.roleNamePlaceholder":"e.g. Data Analyst","expertEditor.roleTitle":"Title","expertEditor.roleTitlePlaceholder":"e.g. Senior Data Analyst","expertEditor.fullName":"Full Name","expertEditor.fullNamePlaceholder":"Optional","expertEditor.titleEn":"English Title","expertEditor.titleEnPlaceholder":"Optional","expertEditor.rolePrompt":"Role Prompt","expertEditor.messagePrefix":"Message Prefix (Chinese)","expertEditor.messagePrefixPlaceholder":"e.g. As a senior data analyst, ","expertEditor.messagePrefixEn":"Message Prefix (English)","expertEditor.messagePrefixEnPlaceholder":"As a senior data analyst, ","expertEditor.actions":"Actions","expertEditor.addAction":"Add Action","expertEditor.removeAction":"Remove","expertEditor.actionName":"Action Name","expertEditor.actionNamePlaceholder":"e.g. Data Analysis","expertEditor.actionNameEn":"English Name","expertEditor.actionNameEnPlaceholder":"Optional","expertEditor.messageTemplate":"With Input \xB7 Prefix (Chinese)","expertEditor.messageTemplatePlaceholder":"Prepended to user text when user types something","expertEditor.messageTemplateEn":"With Input \xB7 Prefix (English)","expertEditor.messageTemplateEnPlaceholder":"Prepended to user text when user types something","expertEditor.defaultMessage":"No Input \xB7 Full Prompt (Chinese)","expertEditor.defaultMessagePlaceholder":"Used as-is when user sends without typing","expertEditor.defaultMessageEn":"No Input \xB7 Full Prompt (English)","expertEditor.defaultMessageEnPlaceholder":"Used as-is when user sends without typing","expertEditor.cancel":"Cancel","expertEditor.save":"Save","expertEditor.saving":"Saving...","subAgentPanel.title":"Sub-Agents","subAgentPanel.back":"Back to list","subAgentPanel.running":"Running","subAgentPanel.completed":"Completed","subAgentPanel.waitingMessages":"Waiting for messages...","subAgentPanel.toolCount":"{count} tools","subAgentPanel.toolSummary":"{count} tool calls completed","subAgentPanel.empty":"No sub-agents","subAgentPanel.emptyHint":"Sub-agents will appear here when Claude delegates tasks","splitScreen.split":"Split screen","splitScreen.closePane":"Close pane","splitScreen.newChat":"New Chat","splitScreen.noSessions":"No sessions","splitScreen.splitToPanel":"Open in new panel","splitScreen.selectFromSidebar":"Select a conversation from the sidebar","yeaft.vp.library":"VP Library","yeaft.vp.createFirst":"+ Create your first role","yeaft.vp.empty.aria":"No virtual persons yet","yeaft.vp.avatar.aria":"{name} avatar","yeaft.vp.speaker.stateCauseAria":"State change: {cause}","yeaft.vp.status.thinking":"thinking\u2026","yeaft.vp.status.tool":"using {name}","yeaft.vp.status.done":"done \xB7 {count} tools","yeaft.vp.status.aborted":"aborted","yeaft.vp.crud.title":"VP Library","yeaft.vp.crud.close":"Close","yeaft.vp.crud.addNew":"+ New role","yeaft.vp.crud.empty":"No virtual persons yet. Create your first role to start collaborating.","yeaft.vp.crud.edit":"Edit","yeaft.vp.crud.delete":"Delete","yeaft.vp.crud.deleteConfirm":'Delete "{name}"? This removes the role.md file on disk.',"yeaft.vp.crud.form.create":"Create role","yeaft.vp.crud.form.update":"Edit role","yeaft.vp.crud.form.vpId":"VP id","yeaft.vp.crud.form.vpId.tooltip":'Letters / digits / - / _ only. Cannot start with "_", cannot be all digits, cannot be one of: all, user, system, everyone.',"yeaft.vp.crud.form.displayName":"Display name (English)","yeaft.vp.crud.form.displayNameZh":"Display name (Chinese)","yeaft.vp.crud.form.description":"Capability description (English)","yeaft.vp.crud.form.descriptionZh":"Capability description (Chinese)","yeaft.vp.crud.form.descriptionPlaceholder":"e.g. API design, migration planning, and compatibility reviews","yeaft.vp.crud.form.descriptionZhPlaceholder":"\u4F8B\u5982\uFF1AAPI \u8BBE\u8BA1\u3001\u8FC1\u79FB\u89C4\u5212\u4E0E\u517C\u5BB9\u6027\u8BC4\u5BA1","yeaft.vp.crud.form.role":"Role","yeaft.vp.crud.form.rolePlaceholder":"e.g. Product Manager","yeaft.vp.crud.form.traits":"Traits","yeaft.vp.crud.form.traitsHint":"Comma-separated short tags (e.g. curious, pragmatic).","yeaft.vp.crud.form.modelHint":"Model hint","yeaft.vp.crud.form.modelHint.none":"\u2014 default \u2014","yeaft.vp.crud.form.modelHint.primary":"primary","yeaft.vp.crud.form.modelHint.fast":"fast","yeaft.vp.crud.form.persona":"Persona (markdown)","yeaft.vp.crud.form.personaPlaceholder":"Describe how this role should think, speak, and decide...","yeaft.vp.crud.form.submit":"Save","yeaft.vp.crud.form.cancel":"Cancel","yeaft.vp.crud.form.ok":"Looks good","yeaft.vp.crud.form.idLocked":"VP id cannot be changed after creation.","yeaft.vp.crud.saving":"Saving\u2026","yeaft.vp.crud.saveFailed":"Save failed: {error}","yeaft.vp.crud.deleteFailed":"Delete failed: {error}","yeaft.vp.crud.viewPrompt":"View prompt","yeaft.vp.crud.view.title":"VP prompt","yeaft.vp.crud.view.personaEmpty":"(no persona body \u2014 only metadata is defined)","yeaft.vp.crud.view.back":"Back","yeaft.vp.crud.view.editFromHere":"Edit this VP","yeaft.vp.crud.view.removed":"This VP was removed elsewhere \u2014 returning to the list.","yeaft.vp.crud.stockBadge":"Stock","yeaft.vp.crud.stockReadOnly":"Stock VPs ship with the agent and cannot be edited or deleted.","yeaft.vp.idError.empty_or_non_string":"VP id is required.","yeaft.vp.idError.too_long":"VP id is too long (max 40 characters).","yeaft.vp.idError.illegal_character":'Only letters, digits, "-" and "_" are allowed.',"yeaft.vp.idError.underscore_prefix_reserved":'VP id cannot start with "_" (reserved for system roles).',"yeaft.vp.idError.pure_digits":"VP id cannot be all digits.","yeaft.vp.idError.reserved":"VP id cannot be one of the reserved names (all, user, system, everyone).","yeaft.vp.idError.duplicate":"A role with this VP id already exists.","yeaft.vp.idError.not_found":"This VP does not exist \u2014 it may have been deleted.","yeaft.vp.idError.stock_readonly":"Stock VPs cannot be edited or deleted.","yeaft.vp.idError.unknown":"An unexpected error occurred. Please try again.","yeaft.vp.reason.personaEdit":"Persona updated","yeaft.vp.reason.traitsEdit":"Traits updated","yeaft.vp.reason.manualReload":"Reloaded","yeaft.vp.reason.fileRemoved":"Removed","yeaft.vp.reason.toast.updated":"{name}: {reason}","yeaft.vp.reason.toast.removed":"{name} was removed","yeaft.message.timeAria":"Sent at {time}","yeaft.user.youLabel":"You","yeaft.session.sidebarTitle":"Sessions","yeaft.session.sidebarAria":"Sessions section","yeaft.session.newButton":"+ New session","yeaft.session.newButtonAria":"Create a new session","yeaft.session.defaultName":"Default","yeaft.session.moreActions":"More actions","yeaft.session.archivingEllipsis":"Archiving\u2026","yeaft.session.deletingEllipsis":"Deleting\u2026","yeaft.session.renamingEllipsis":"Renaming\u2026","yeaft.session.empty":"No sessions yet.","yeaft.session.membersCount":"{count} members","yeaft.session.oneMember":"1 member","yeaft.session.noMembers":"Empty \u2014 invite a VP","yeaft.session.defaultBadge":"default","yeaft.session.archive":"Archive","yeaft.session.archiveConfirm":'Archive "{name}"? You can recover it from disk later.',"yeaft.session.delete":"Delete","yeaft.session.deleteConfirm":'Delete "{name}"? This permanently removes the session and all its data \u2014 this cannot be undone.',"yeaft.session.rename":"Rename","yeaft.session.openSettings":"Settings","yeaft.session.removeFromList":"Remove","yeaft.session.manageMembers":"Manage members","yeaft.session.memberCount.one":"1 member","yeaft.session.memberCount.other":"{count} members","yeaft.session.renamePrompt":'New name for "{name}":',"yeaft.session.editModal.renameTitle":"Rename session","yeaft.session.editModal.renameBody":'Choose a new name for "{name}".',"yeaft.session.editModal.renameSubmit":"Save","yeaft.session.editModal.archiveTitle":"Archive session","yeaft.session.editModal.archiveBody":'Archive "{name}"? You can recover it from disk later.',"yeaft.session.editModal.archiveSubmit":"Archive","yeaft.session.editModal.deleteTitle":"Delete session","yeaft.session.editModal.deleteBody":'Delete "{name}"? This permanently removes the session and all its data \u2014 this cannot be undone.',"yeaft.session.editModal.deleteSubmit":"Delete","yeaft.session.editModal.newNameLabel":"New name","yeaft.session.editModal.cancel":"Cancel","yeaft.session.editModal.close":"Close","yeaft.session.error.invalid_name":"Session name cannot be empty.","yeaft.session.error.duplicate":"A session with this id already exists.","yeaft.session.error.not_found":"Session not found.","yeaft.session.error.default_not_in_roster":"The default VP must be in the roster.","yeaft.session.error.no_default_vp":"This session has no members. Add a VP from the library to start chatting.","yeaft.session.error.reserved":"One of the selected ids is reserved (all, user, system, everyone).","yeaft.session.error.unknown":"Session operation failed: {message}","yeaft.session.error.timeout":"Session operation timed out \u2014 try again.","yeaft.session.invite.title":"Invite a VP","yeaft.session.invite.body":'"{name}" has no members yet. Add a VP from your library to start chatting.',"yeaft.session.invite.openLibrary":"Open VP Library","yeaft.session.invite.dismiss":"Not now","yeaft.session.empty.title":"Empty session","yeaft.session.empty.hint":'"{name}" has no members yet. Add a VP to start chatting.',"yeaft.session.empty.cta":"Manage members","yeaft.session.members.title":'Manage members of "{name}"',"yeaft.session.members.aria":"Session members manager","yeaft.session.members.close":"Close","yeaft.session.members.done":"Done","yeaft.session.members.empty":"No VPs available \u2014 create one in the VP Library first.","yeaft.session.members.loading":"Loading VPs\u2026","yeaft.session.members.defaultHint":"Default VP (replies when no @mention is given)","yeaft.session.members.memberCount":"{count} selected","yeaft.session.members.actionFailed":"Action failed: {error}","yeaft.session.members.openLibrary":"Open VP Library","yeaft.session.members.openLibraryHint":"Create a new VP or view a VP's prompt.","yeaft.session.announcement.label":"Announcement","yeaft.session.announcement.hintEmpty":"No announcement \u2014 click \u270F\uFE0F to add one.","yeaft.session.announcement.emptyBody":"No announcement set. Add a message that every VP in this session will see at the top of its system prompt \u2014 useful for shared context, ground rules, or a CLAUDE.md-style brief.","yeaft.session.announcement.placeholder":"Write a shared briefing for all VPs in this session\u2026","yeaft.session.announcement.edit":"Edit announcement","yeaft.session.announcement.editTitle":"Edit session announcement","yeaft.session.announcement.saving":"Saving\u2026","yeaft.session.announcement.saveFailed":"Save failed: {error}","yeaft.session.announcement.openSettings":"Open session settings","yeaft.session.settings.title":"{name} \u2014 session settings","yeaft.session.settings.short":"Session","yeaft.session.settings.close":"Close","yeaft.session.settings.nav.session":"Session","yeaft.session.settings.nav.members":"Members","yeaft.session.settings.nav.memory":"Memory","yeaft.session.settings.announcement.heading":"Session announcement","yeaft.session.settings.announcement.help":"Shared at the top of every VP's system prompt while in this session. Like a CLAUDE.md for the team.","yeaft.session.settings.members.heading":"Members","yeaft.session.settings.rename.heading":"Rename session","yeaft.session.settings.rename.label":"New name","yeaft.session.settings.rename.save":"Save name","yeaft.session.settings.rename.saving":"Saving\u2026","yeaft.session.settings.memory.heading":"Session memory","yeaft.session.settings.memory.help":"Run the dream consolidation now. Reads new messages since the last run, extracts facts, and merges them into the session's summary so the Resident layer reflects the latest conversation.","yeaft.session.settings.memory.runNow":"Run dream now","yeaft.session.settings.memory.running":"Running\u2026","yeaft.session.settings.memory.lastSuccess":"Last run {time} \u2014 {count} target(s) updated.","yeaft.session.settings.memory.lastError":"Last run failed: {error}","yeaft.session.settings.danger.heading":"Delete session","yeaft.session.settings.danger.deleteHelp":"This permanently deletes the session, removing session.json and all message history on disk. It cannot be undone.","yeaft.session.settings.danger.deleteBtn":"Delete session","yeaft.vp.mention.placeholder":"Search role by id or name\u2026","yeaft.vp.mention.noMatch":"No matching role","yeaft.vp.mention.count":"{count} mentions","yeaft.feature.reject.missing_group_id":"Message send failed: session not specified.","yeaft.feature.reject.missing_feature_id":"Message send failed: task context lost.","yeaft.feature.reject.missing_vp_id":"Message send failed: speaker not set.","yeaft.feature.reject.invalid_vp_id":"Message send failed: invalid speaker id.","yeaft.feature.reject.empty_text":"Message send failed: empty message.","yeaft.feature.reject.text_too_long":"Message send failed: text too long (max 16 KiB).","yeaft.feature.reject.unknown":"Message send failed.","yeaft.feature.pill.label":"task","yeaft.feature.messageTime.aria":"Sent at {time}","yeaft.vp.turnBlock.elapsedTitle":"Time elapsed since this turn started","yeaft.vp.turnBlock.retryingRequest":"Response stalled; retrying with a fresh request ({attempt}/{max})","yeaft.vp.turnBlock.retryingContinue":"Response stalled; continuing with a fresh request ({attempt}/{max})","yeaft.sessionStatus.aria":"Session status","yeaft.sessionStatus.title":"Session status","yeaft.sessionStatus.announcement":"Announcement","yeaft.sessionStatus.announcementEmpty":"No announcement","yeaft.sessionStatus.announcementAdd":"Add announcement","yeaft.sessionStatus.announcementEdit":"Edit announcement","yeaft.sessionStatus.vps":"VPs","yeaft.sessionStatus.backgroundTasks":"Background tasks","yeaft.sessionStatus.noLogPreview":"No log output yet.","yeaft.sessionStatus.task.subAgentStarted":"{name} started","yeaft.sessionStatus.task.subAgentStartedWithMission":"{name} started: {mission}","yeaft.sessionStatus.task.subAgentStatus":"{name} is {status}","yeaft.sessionStatus.task.subAgentStatusUpdated":"{name} status updated","yeaft.sessionStatus.task.subAgentResult":"{name} result: {text}","yeaft.sessionStatus.task.subAgentProducedResult":"{name} produced a result","yeaft.sessionStatus.task.subAgentUsedTool":"{name} used {tool}","yeaft.sessionStatus.task.subAgentFinishedTool":"{name} finished {tool}","yeaft.sessionStatus.task.subAgentUsage":"{name} used {tokens} tokens","yeaft.sessionStatus.task.subAgentEvent":"{name}: {text}","yeaft.sessionStatus.task.subAgentUserPrompt":"You: {text}","yeaft.sessionStatus.task.subAgentToolSummary":"{count} tool calls completed","yeaft.sessionStatus.task.subAgentError":"{name} error: {error}","yeaft.sessionStatus.task.subAgentHitError":"{name} hit an error","yeaft.sessionStatus.task.subAgentNoReadableEvents":"No readable sub-agent activity yet.","yeaft.sessionStatus.task.promptPlaceholder":"Add guidance for this sub-agent\u2026","yeaft.sessionStatus.task.promptSend":"Send","yeaft.sessionStatus.task.promptSending":"Sending\u2026","yeaft.sessionStatus.task.promptFailed":"Failed to send prompt.","yeaft.sessionStatus.task.title":"Task","yeaft.sessionStatus.task.command":"Command","yeaft.sessionStatus.task.stop":"Stop task","yeaft.sessionStatus.task.stopping":"Stopping\u2026","yeaft.sessionStatus.task.kind.subAgent":"sub-agent","yeaft.sessionStatus.task.kind.shell":"shell","yeaft.sessionStatus.show":"Show Session status","yeaft.sessionStatus.hide":"Hide Session status","yeaft.sessionStatus.close":"Close Session status","yeaft.vpTimeline.empty":"No VPs in this Session yet.","yeaft.vpTimeline.resizeTitle":"Drag to resize","yeaft.vpTimeline.status.idle":"idle","yeaft.vpTimeline.status.typing":"typing\u2026","yeaft.vpTimeline.status.thinking":"thinking\u2026","yeaft.vpTimeline.status.retrying":"retrying request\u2026","yeaft.vpTimeline.status.streaming":"streaming","yeaft.vpTimeline.status.tool":"using tool\u2026","yeaft.vpTimeline.status.error":"error","yeaft.vpTimeline.status.offline":"offline","yeaft.vpTimeline.abort":"Abort","yeaft.vpTimeline.edit":"Edit VP","yeaft.vpTimeline.mention":"Click to @-mention this VP","yeaft.vpTimeline.expand":"Toggle task details","yeaft.toolStats.title":"Tool Usage Stats","yeaft.toolStats.refresh":"Refresh","yeaft.toolStats.close":"Close","yeaft.toolStats.tabAll":"All tools","yeaft.toolStats.tabUnused":"Unused","yeaft.toolStats.loading":"Loading\u2026","yeaft.toolStats.notLoaded":"No data yet \u2014 click refresh.","yeaft.toolStats.empty":"(no tool calls recorded yet)","yeaft.toolStats.noneUnused":"(every registered tool has been called at least once)","yeaft.toolStats.fetchedAt":"Fetched at","yeaft.toolStats.col.name":"Tool","yeaft.toolStats.col.calls":"Calls","yeaft.toolStats.col.errors":"Errors","yeaft.toolStats.col.errRate":"Err%","yeaft.toolStats.col.p50":"p50","yeaft.toolStats.col.p95":"p95","yeaft.toolStats.col.avg":"Avg","yeaft.toolStats.col.last":"Last","yeaft.toolStats.buttonLabel":"Tool Stats","workCenter.title":"Work Center","workCenter.subtitle":"Persistent work owned by this Agent","workCenter.agent":"Agent","workCenter.selectAgent":"Select Agent","workCenter.noOnlineAgents":"No online agents","workCenter.noAvailableAgents":"No compatible online Agents","workCenter.new":"New","workCenter.newWorkItem":"New work item","workCenter.workItem":"Work item","workCenter.createFirst":"Create first work item","workCenter.backToChat":"Back to chat","workCenter.refresh":"Refresh","workCenter.search":"Search work items","workCenter.filter":"Filter","workCenter.filterAttention":"Needs attention","workCenter.filterActive":"Active","workCenter.filterAll":"All","workCenter.filterDone":"Done","workCenter.attentionItems":"Needs attention","workCenter.board.active":"Active","workCenter.board.needsAttention":"Needs attention","workCenter.board.closed":"Closed","workCenter.board.emptyLane":"No work items","workCenter.board.lanes":"Work item lanes","workCenter.filterVp":"Filter by VP","workCenter.filterType":"Filter by type","workCenter.filterUpdated":"Filter by update time","workCenter.allVps":"All VPs","workCenter.allTypes":"All types","workCenter.anyTime":"Any time","workCenter.lastDay":"Last 24 hours","workCenter.lastWeek":"Last 7 days","workCenter.deleteWorkItem":"Delete Work Item","workCenter.deleteConfirm":"Permanently delete this Work Item, its execution history, and attachments?","workCenter.deleteRequiresStop":"Stop this Work Item before deleting it","workCenter.lastMonth":"Last 30 days","workCenter.assignment.planned":"Planned assignment","workCenter.created":"Created","workCenter.files":"files","workCenter.loadMore":"Load more","workCenter.activeItems":"Active work","workCenter.allItems":"All work items","workCenter.completedItems":"Completed","workCenter.watcherActive":"Watcher active","workCenter.loading":"Loading work items\u2026","workCenter.noTimestamp":"No timestamp","workCenter.updated":"Updated","workCenter.emptyTitle":"No work items yet","workCenter.emptyBody":"Create a persistent task when work must continue beyond one conversation turn.","workCenter.noAttentionTitle":"Nothing needs attention","workCenter.noAttentionBody":"Work Items waiting for you or needing recovery will appear here.","workCenter.noActiveTitle":"No active work items","workCenter.noActiveBody":"Draft, ready, and running Work Items will appear here.","workCenter.noCompletedTitle":"No completed work items","workCenter.noCompletedBody":"Completed work items will appear here.","workCenter.noMatchesTitle":"No matching work items","workCenter.noMatchesBody":"Try a different search or filter.","workCenter.selectTitle":"Work item details","workCenter.detailLoading":"Loading full details\u2026","workCenter.detailLoadFailed":"Could not load full details","workCenter.start":"Start","workCenter.retry":"Retry","workCenter.cancel":"Cancel","workCenter.closeWorkItem":"Close details","workCenter.cancelWorkItem":"Stop work item","workCenter.cancelWorkItemHint":"Stop this Work Item and all unfinished Actions.","workCenter.cancelConfirm":"Stop this work item and its unfinished Actions?","workCenter.stopWorkItem":"Stop work item","workCenter.resumeWorkItem":"Resume work item","workCenter.breadcrumbs":"Work Center navigation","workCenter.actionNumber":"Action {number}","workCenter.actionBreadcrumb":"Action {number}: {description}","workCenter.untitledAction":"Untitled Action","workCenter.workItems":"Work items","workCenter.description":"Description","workCenter.goal":"Goal","workCenter.acceptanceCriteria":"Acceptance criteria","workCenter.noCriteria":"No criteria provided","workCenter.failureReason":"Failure reason","workCenter.workflow":"Workflow","workCenter.triageSummary":"Triage summary","workCenter.actionFlow":"Action flow","workCenter.viewActions":"View Actions","workCenter.actionsPanel":"Actions","workCenter.closeActions":"Close Actions","workCenter.actionCount":"{count} Actions","workCenter.noActionSummary":"No summary yet","workCenter.actionProgress":"{completed} / {total} Actions","workCenter.currentAction":"Current Action","workCenter.expandActions":"Show Actions","workCenter.collapseActions":"Collapse","workCenter.actionObjective":"What to do","workCenter.actionApproach":"How to do it","workCenter.actionExpectedOutcome":"Expected result","workCenter.dependencies":"Source Actions","workCenter.actionResult":"Latest result","workCenter.currentProgress":"Current progress","workCenter.actionMessages":"Messages","workCenter.loops":"loops","workCenter.tools":"tools","workCenter.noActionMessages":"No messages yet.","workCenter.actionDetails":"Action details","workCenter.selectAction":"Select an Action","workCenter.backToWorkItems":"Work items","workCenter.backToActions":"Back to Actions","workCenter.you":"You","workCenter.noRequestDetails":"No execution records are available for this Action yet.","workCenter.loadingRequests":"Loading execution records\u2026","workCenter.loadingRequestDetail":"Loading tool evidence\u2026","workCenter.requestDetailUnavailable":"Tool evidence is unavailable. Try again.","workCenter.noRequestLoops":"This execution has no retained Loop details.","workCenter.requestDetailTruncated":"Large execution: {summarized} Loops are summarized and {omitted} older Loops are omitted.","workCenter.loopDetailTruncated":"Large Loop: showing retained tool evidence.","workCenter.loadEarlierMessages":"Load earlier messages","workCenter.loadingEarlierMessages":"Loading earlier messages\u2026","workCenter.unknownModel":"Unknown model","workCenter.loop":"Loop","workCenter.actionBrief":"Task brief","workCenter.executionSummary":"Execution summary","workCenter.toolParameters":"Parameters","workCenter.toolResult":"Result","workCenter.noToolCalls":"No tool calls in this Loop.","workCenter.actionInputPlaceholder":"Add context, answer a question, or redirect this Action","workCenter.actionInputResumeHint":"Your input resumes this Action with the additional context.","workCenter.waitingQuestionTitle":"Input required","workCenter.actionInputRetryHint":"Add instructions or files, then rerun this Action with the new context.","workCenter.actionInputContinueHint":"Direct intervention for this Action only.","workCenter.actionFailedTitle":"Why this Action failed","workCenter.failedAt":"Failed at","workCenter.actionFailureRecovery":"Choose this Action in the Work Item composer to send corrected instructions.","workCenter.sendInput":"Send to Action","workCenter.sendingInput":"Sending\u2026","workCenter.retryAction":"Retry Action","workCenter.sendAndRetryAction":"Send and retry Action","workCenter.coordinatorDecision.guide_actions":"Action instructions updated","workCenter.coordinatorDecision.replan":"Goal or plan updated","workCenter.coordinatorDecision.request_human":"Human input requested","workCenter.conversation":"Conversation","workCenter.contentPane":"Content","workCenter.workItemPanes":"Work item panes","workCenter.coordinator":"Coordinator","workCenter.coordinatorTargetHint":"Work Item planning and coordination","workCenter.composerTarget":"Message target","workCenter.targetUnavailable":"Selected Action is no longer available","workCenter.targetUnavailableHelp":"Choose another target before sending. This draft was not redirected.","workCenter.sendToCoordinatorInstead":"Send to Coordinator instead","workCenter.sendToTarget":"Send to {target}","workCenter.answerWithTarget":"Choose the relevant target in the Conversation composer, then reply.","workCenter.conversationThinking":"Working\u2026","workCenter.conversationReadOnly":"This work item is closed. The conversation remains available.","workCenter.conversationPlaceholder":"Message about this work item","workCenter.sendMessage":"Send message","workCenter.messageSpeakerRole":"{name} \xB7 {role}","workCenter.originalRequest":"Original request","workCenter.actionMessageScopeTitle":"Message this Action","workCenter.actionMessageScope":"Only this Action receives the message.","workCenter.actionConversation":"Conversation","workCenter.actionConversationWith":"Action executor","workCenter.actionViews":"Action views","workCenter.actionExecutor":"Executor","workCenter.actionExecutorPending":"Executor pending","workCenter.actionInformation":"Action information","workCenter.messageExecutor":"Message {name}","workCenter.actionChatPlaceholder":"Message {name} from the Conversation composer","workCenter.statusLabel":"Status","workCenter.llmRequestsLabel":"LLM requests","workCenter.loopsLabel":"Loops","workCenter.toolsLabel":"Tools","workCenter.tokensLabel":"Tokens","workCenter.workItemMessagePlaceholder":"Add direction for the whole Work Item","workCenter.sendWorkItemMessage":"Send to Work Item","workCenter.fromSession":"Create a work item from this Session","workCenter.llmRequestCount":"{count} LLM requests","workCenter.loopCount":"{count} loops","workCenter.toolCount":"{count} tools","workCenter.tokenCount":"{count} tokens","workCenter.tokenBreakdown":"{input} input / {output} output / {cache} cached","workCenter.guidance":"Add guidance to the current Action","workCenter.guidanceHint":"Clarify constraints or redirect the current Action","workCenter.guidanceRestartHint":"This restarts the current Action with the new guidance.","workCenter.sendGuidance":"Send guidance","workCenter.reuseMemory":"Use relevant Agent memory and completed work from this project","workCenter.reuseMemoryHelp":"Includes scope-bounded Agent memory plus structured summaries and evidence from completed WorkItems with the same canonical project directory. Raw tool output is not reused.","workCenter.resumeAnswer":"Answer the waiting question","workCenter.resumeAnswerHint":"Provide the information required to continue","workCenter.answerInActionDetail":"Target the current Action in the Conversation composer, then reply.","workCenter.selectPrompt":"Select a work item to inspect its workflow.","workCenter.createHint":"Describe what you need. The Coordinator will keep creating the next justified Actions until the acceptance criteria are verified.","workCenter.requirement":"Requirement","workCenter.requirementHint":"Describe the problem, desired outcome, and any constraints in your own words","workCenter.requirementHelp":"The Coordinator will refine the goal and acceptance criteria, then create Actions dynamically as evidence arrives.","workCenter.titleField":"Title","workCenter.titleHint":"A short, specific outcome","workCenter.goalHint":"Describe the result the Agent must deliver","workCenter.criteriaHint":"One criterion per line","workCenter.attachments":"Attachments","workCenter.attachmentsHelp":"Images, PDFs, and text files stay bound to this Work Item and are available to every Action.","workCenter.attachmentsUnsupported":"The selected Agent does not support Work Item attachments.","workCenter.addAttachments":"Add files","workCenter.attachmentsUploading":"Uploading\u2026","workCenter.attachmentsUploadFailed":"Attachment upload failed","workCenter.pendingEnvelopeLocked":"An unconfirmed request is locked to its original identity.","workCenter.replacePendingAttachments":"Replace attachments","workCenter.discardPendingEnvelope":"Discard pending request","workCenter.pendingEnvelopeChanged":"The pending request changed; reopen this Work Item and try again.","workCenter.removeAttachment":"Remove from draft","workCenter.previewAttachment":"Open attachment","workCenter.openAttachmentNamed":"Open attachment {name}","workCenter.openingAttachment":"Opening attachment\u2026","workCenter.attachmentPreviewFailed":"Could not open the attachment. Try again.","workCenter.attachmentOpenBlocked":"The browser blocked the attachment window. Allow pop-ups and try again.","workCenter.execution":"Execution","workCenter.executionHint":"Choose where and how this work item starts.","workCenter.workDir":"Working directory","workCenter.workDirHint":"Choose an existing project directory","workCenter.chooseFolder":"Choose folder","workCenter.workDirPickerHelp":"Select an existing folder on the chosen Agent.","workCenter.folderPickerHint":"Choose the project folder this Work Item can read and modify.","workCenter.folderPickerSelectionHint":"Double-click to open a folder, or select it and confirm.","workCenter.startImmediately":"Start immediately","workCenter.startImmediatelyHint":"Turn this off to create a draft you can review first.","workCenter.creating":"Creating\u2026","workCenter.create":"Create","workCenter.status.draft":"draft","workCenter.status.ready":"ready","workCenter.status.running":"running","workCenter.status.waiting":"waiting","workCenter.status.needs_attention":"needs attention","workCenter.status.done":"done","workCenter.status.cancelled":"cancelled","workCenter.status.completed":"completed","workCenter.status.failed":"failed","workCenter.status.superseded":"superseded","workCenter.action.triage":"Triage","workCenter.action.implement":"Implement","workCenter.action.review":"Review","workCenter.action.integrate":"Integrate","workCenter.action.deliver":"Deliver","workCenter.action.test":"Test","workCenter.action.research":"Research","workCenter.action.design":"Design","workCenter.action.diagnose":"Diagnose","workCenter.action.migrate":"Migrate","workCenter.action.document":"Document","workCenter.action.operate":"Operate","workCenter.action.write":"Write","workCenter.action.custom":"Custom","workCenter.assignment.auto":"Use workflow policy","workCenter.model.inherit":"Use workflow model","workCenter.model.defaultProvider":"default provider","workCenter.planPreview":"Execution plan","workCenter.planPreviewHelp":"Resolved from this Agent\u2019s VP pool and model settings.","workCenter.settings.title":"Work Center settings","workCenter.settings.subtitle":"Configure the Coordinator plus reusable Action prompts, models, and effort for AI-planned work.","workCenter.settings.workflow":"Workflow","workCenter.settings.workflowHelp":"The Coordinator chooses task-specific Actions and executors dynamically.","workCenter.settings.aiWorkflowHelp":"The Coordinator creates only the next justified task-specific Actions. Built-in Action policies are reusable templates, and the Coordinator may create a precise domain type when needed.","workCenter.settings.globalInstructions":"Global Agent instructions","workCenter.settings.globalInstructionsHint":"Example: Follow the repository release policy, require independent review, and never create deployment tags without explicit approval.","workCenter.settings.globalInstructionsHelp":"Stored at Agent level and frozen into every new WorkItem. Applied to triage and every generated Action, below the WorkItem contract and system/tool safety rules. Existing WorkItems keep their original snapshot.","workCenter.settings.actionPolicies":"Built-in Action policies","workCenter.settings.actionPoliciesHelp":"These are reusable execution baselines, not a fixed workflow. Unknown domain-specific Action types use the Custom policy plus their triage-generated type and objective.","workCenter.settings.dynamicInstructionHelp":"The AI adds the WorkItem contract, global instructions, prior Action context, memory, and a task-specific objective. This prompt defines the reusable behavior for this Action type.","workCenter.settings.models":"Models","workCenter.settings.modelsHelp":"Providers and credentials stay in Agent LLM settings. Work Center only selects available models.","workCenter.settings.dynamicModelsHelp":"Choose the Coordinator model separately from the models that execute Actions.","workCenter.settings.coordinatorModel":"Coordinator","workCenter.settings.coordinatorModelHelp":"Used for Work Item conversation, goal changes, and replanning. It never executes repository tools.","workCenter.settings.allActions":"Fallback for all Actions","workCenter.settings.maxConcurrentActions":"Maximum concurrent Actions","workCenter.settings.maxConcurrentActionsHelp":"Defaults to 3. Non-Git, dirty, shared, and integration work remains serial.","workCenter.workItemType":"Type","workCenter.typeAuto":"Auto \u2014 let the LLM infer","workCenter.typeHelp":"Choose a task category, or use Auto for AI inference. AI still plans the concrete Actions.","workCenter.planning":"Planning","workCenter.aiPlan":"Coordinator-driven execution","workCenter.aiPlanHelp":"The Coordinator chooses the next Actions and executors from the current evidence instead of precomputing a workflow graph. Work Center settings control model and effort.","workCenter.settings.manageProviders":"Manage Agent models","workCenter.settings.assignment":"VP selection","workCenter.settings.assignment.auto":"Auto from all VPs","workCenter.settings.assignment.pool":"Candidate pool","workCenter.settings.assignment.fixed":"Fixed VP","workCenter.settings.capability":"Required capability","workCenter.settings.vp":"Virtual Person","workCenter.settings.poolMembers":"Candidate VPs","workCenter.settings.modelPolicy":"Model policy","workCenter.settings.model.inherit":"Inherit from VP","workCenter.settings.model.primary":"Agent primary model","workCenter.settings.model.fast":"Agent fast model","workCenter.settings.model.specific":"Specific model","workCenter.settings.model":"Model","workCenter.settings.effort":"Reasoning effort","workCenter.settings.effortDefault":"Model default","workCenter.settings.effortHelp":"Overrides the selected model\u2019s default reasoning effort for every Work Center Action.","workCenter.settings.effortChooseModelHelp":"Select the Agent primary model, fast model, or a specific model to configure effort. Inherit from VP uses each VP\u2019s model default.","workCenter.settings.effortUnsupportedHelp":"The selected model does not expose configurable effort, so its model default is used.","workCenter.settings.saving":"Saving\u2026","workCenter.settings.reload":"Reload settings","workCenter.settings.conflict":"Settings changed elsewhere. Reload before saving again.","workCenter.settings.upgradeRequired":"This Agent version cannot save Work Center settings. The current values are shown read-only; upgrade the Agent to edit and save them.","workCenter.settings.saveNotConfirmed":"The Agent did not confirm the submitted prompts and model policy. Settings were not closed; reload or upgrade the Agent before trying again.","workCenter.settings.addWorkflow":"Duplicate workflow","workCenter.settings.removeWorkflow":"Remove","workCenter.settings.newWorkflow":"Workflow {index}","workCenter.settings.workflowName":"Workflow name","workCenter.settings.newStage":"New stage","workCenter.settings.addStage":"Add stage","workCenter.settings.removeStage":"Remove stage","workCenter.settings.moveUp":"Move stage up","workCenter.settings.moveDown":"Move stage down","workCenter.settings.stageType":"Stage type","workCenter.settings.reviewReturnStage":"Return to stage when changes are requested","workCenter.settings.instruction":"Stage prompt","workCenter.settings.instructionHint":"Define what this stage must do.","workCenter.settings.instructionHelp":"The WorkItem goal, acceptance criteria, and reusable context are added automatically at run time.","workCenter.settings.instructionReset":"Restore default"}});function dl(){return typeof navigator>"u"||!navigator?"":navigator.userAgent||""}function yn(){let e=dl();return/Android|iPhone|iPad|iPod|Windows Phone|IEMobile|BlackBerry|Opera Mini/i.test(e)}function $i(){return/MicroMessenger/i.test(dl())}function Vi(){return/AlipayClient/i.test(dl())}var ul=N(()=>{});var Up,Kp=N(()=>{St();Nt();ul();Up={name:"LoginPage",template:`
15
15
  <div class="login-page">
16
16
  <button class="login-lang-toggle" @click="toggleLang">
17
17
  {{ currentLocale === 'zh-CN' ? 'EN' : '\u4E2D\u6587' }}
@@ -405,10 +405,10 @@ The agent will restart after upgrading.`,"chat.agent.alreadyLatest":"Agent is al
405
405
  </button>
406
406
  </div>
407
407
  </header>
408
- `,setup(e){let t=Pinia.useChatStore(),s=Vue.inject("t"),n=Vue.computed(()=>e.conversationId||t.currentConversation),r=Vue.computed(()=>n.value&&t.conversations.find(P=>P.id===n.value)||null),i=Vue.computed(()=>r.value?.capabilities||null),o=Vue.computed(()=>n.value?(r.value?.provider||"claude-code")==="claude-code":!0),a=(P,U=!0)=>{let re=i.value;return re?!!re[P]:o.value?U:!1},l=Vue.computed(()=>a("compact")),c=Vue.computed(()=>a("clear")),d=Vue.computed(()=>a("expert")),u=Vue.computed(()=>a("mcp")),f=Vue.computed(()=>{if(!n.value)return"Yeaft";let P=t.getConversationTitle(n.value);if(P)return P;let re=t.conversations.find(me=>me.id===n.value)?.workDir||t.currentWorkDir;if(re){let me=re.split(/[/\\]/);return me[me.length-1]||me[me.length-2]||re}return s("chatHeader.newConv")}),p=Vue.computed(()=>{if(!n.value)return"";let U=t.conversations.find(me=>me.id===n.value)?.agentId;return U&&t.agents.find(me=>me.id===U)?.name||""}),g=Vue.computed(()=>t.clearStatus?.conversationId===n.value?!0:t.compactStatus?t.compactStatus.conversationId===n.value:!1),m=Vue.computed(()=>t.clearStatus?.conversationId===n.value?t.clearStatus.status==="clearing"?"compacting":"completed":t.compactStatus?t.compactStatus.status==="compacting"?"compacting":"completed":""),v=Vue.computed(()=>t.clearStatus?.conversationId===n.value?t.clearStatus.status==="clearing":t.compactStatus?.status==="compacting"),k=Vue.computed(()=>t.clearStatus?.conversationId===n.value?t.clearStatus.status==="clearing"?s("chatHeader.clearing"):s("chatHeader.clearDone"):t.compactStatus?t.compactStatus.status==="compacting"?t.compactStatus.message||s("chatHeader.compacting"):t.compactStatus.message||s("chatHeader.compactDone"):""),w=Vue.computed(()=>n.value&&(t.conversations.find(U=>U.id===n.value)?.workDir||t.currentWorkDir)||""),I=Vue.computed(()=>!t.contextUsage||t.contextUsage.conversationId!==n.value?null:t.contextUsage),h=Vue.computed(()=>{let P=I.value?.percentage||0;return P>=80?"context-danger":P>=50?"context-warn":"context-ok"}),y=Vue.computed(()=>{if(!I.value)return"";let P=(I.value.inputTokens/1e3).toFixed(0),U=(I.value.maxTokens/1e3).toFixed(0);return`Context: ${P}k / ${U}k`}),b=Vue.computed(()=>t.isRefreshingSession(n.value)),M=Vue.computed(()=>t.compactStatus?.status==="compacting"&&t.compactStatus?.conversationId===n.value),x=Vue.computed(()=>t.clearStatus?.status==="clearing"&&t.clearStatus?.conversationId===n.value),D=Vue.computed(()=>n.value?!t.isRefreshingSession(n.value):!1),V=()=>{if(t.isRefreshingSession(n.value)||!n.value)return;t.setRefreshingSession(n.value,!0),t.startRefreshTimeout(n.value),t.requestChatHistory(n.value,{mode:"recent",turns:5})||t.setRefreshingSession(n.value,!1)},E=()=>{M.value||t.sendMessage("/compact")},_=()=>{window.location.reload()},T=()=>{x.value||confirm(s("chatHeader.confirmClear"))&&(t.clearStatus={conversationId:n.value,status:"clearing"},t.sendMessage("/clear"))},A=Vue.computed(()=>t.getPaneRightPanel(e.paneId)),R=Vue.ref(null),j=Vue.computed(()=>{if(!t.mcpPanelOpen||!R.value)return null;let P=R.value.getBoundingClientRect();return{top:`${P.bottom+6}px`,right:`${window.innerWidth-P.right}px`}}),F=Vue.computed(()=>t.currentMcpServers.filter(P=>P.enabled).length),z=Vue.computed(()=>!!t.conversations.find(U=>U.id===n.value)?.needRestart),ee=()=>{t.mcpPanelOpen=!t.mcpPanelOpen},fe=()=>{t.togglePaneRightPanel("experts",e.paneId)},ce=()=>{t.togglePaneRightPanel("subagents",e.paneId)},ve=Vue.computed(()=>t.runningSubagentCount),ge=(P,U)=>{t.toggleConversationMcp(P,U)},pe=P=>{t.mcpPanelOpen&&!P.target.closest(".mcp-dropdown")&&!P.target.closest(".mcp-config-wrapper")&&(t.mcpPanelOpen=!1)};return Vue.onMounted(()=>{document.addEventListener("click",pe)}),Vue.onUnmounted(()=>{document.removeEventListener("click",pe)}),{store:t,effectiveConvId:n,effectiveRightPanel:A,isClaudeCode:o,canCompact:l,canClear:c,canExpert:d,canMcp:u,headerTitle:f,showStatusBanner:g,statusBannerClass:m,statusBannerSpinner:v,statusBannerMessage:k,contextUsage:I,contextColorClass:h,contextLabel:y,isRefreshing:b,isCompacting:M,isClearing:x,canRefresh:D,refreshSession:V,reloadPage:_,compactContext:E,clearMessages:T,mcpBtnRef:R,mcpDropdownStyle:j,mcpEnabledCount:F,currentConvNeedRestart:z,toggleMcpPanel:ee,toggleMcpServer:ge,toggleExpertPanel:fe,toggleSubAgentPanel:ce,runningSubagentCount:ve}}}});function Cr(e=globalThis.location){let t=e?.protocol==="https:"?"wss:":"ws:",s=e?.host||"localhost";return`${t}//${s}`}function Oi(){return"npm install -g @yeaft/webchat-agent"}function Fi(){return"yeaft-agent llm use github-copilot --model gpt-5.5"}function fl(e=null){let t=e&&(e.username||e.displayName)||"agent",s=2166136261;for(let i=0;i<t.length;i++)s^=t.charCodeAt(i),s=s+((s<<1)+(s<<4)+(s<<7)+(s<<8)+(s<<24))>>>0;let n=s.toString(16).padStart(8,"0").slice(0,6);return`${String(t).replace(/[^A-Za-z0-9_-]/g,"-").replace(/^-+|-+$/g,"")||"agent"}-${n}`}function Bi({profile:e=null,agentSecret:t="",serverWsUrl:s=Cr()}={}){if(!t)return"";let n=fl(e);return`yeaft-agent install --server ${s} --secret ${t} --name ${n}`}var gl=N(()=>{});function Xy(e,t){return typeof e=="string"?e?{src:e,alt:t}:null:!e||typeof e!="object"||!e.src?null:{src:e.src,alt:e.alt||t}}function bn(e,{alt:t="Preview",closeLabel:s="Close",previousLabel:n="Previous image",nextLabel:r="Next image",positionLabel:i=(c,d)=>`${c} / ${d}`,gallery:o=null,initialIndex:a=null,trigger:l=null}={}){if(!e)return null;let c=(Array.isArray(o)?o:[e]).map(D=>Xy(D,t)).filter(Boolean);c.length===0&&c.push({src:e,alt:t});let d=Number.isInteger(a)&&a>=0&&a<c.length?a:c.findIndex(D=>D.src===e);d<0&&(d=0);let u=document.createElement("div");u.className="image-preview-overlay",u.setAttribute("role","dialog"),u.setAttribute("aria-modal","true"),u.setAttribute("aria-label",t);let f=document.createElement("img");f.className="image-preview-img",f.draggable=!1;let p=document.createElement("button");p.type="button",p.className="image-preview-close",p.setAttribute("aria-label",s),p.setAttribute("title",s),p.textContent="\xD7";let g=null,m=null,v=null;c.length>1&&(g=document.createElement("button"),g.type="button",g.className="image-preview-navigation image-preview-previous",g.setAttribute("aria-label",n),g.setAttribute("title",n),g.innerHTML='<svg viewBox="0 0 24 24" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="m15 18-6-6 6-6"/></svg>',m=document.createElement("button"),m.type="button",m.className="image-preview-navigation image-preview-next",m.setAttribute("aria-label",r),m.setAttribute("title",r),m.innerHTML='<svg viewBox="0 0 24 24" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="m9 18 6-6-6-6"/></svg>',v=document.createElement("div"),v.className="image-preview-position",v.setAttribute("aria-live","polite"));let k=()=>{let D=c[d];f.src=D.src,f.alt=D.alt,u.setAttribute("aria-label",D.alt),v&&(v.textContent=typeof i=="function"?i(d+1,c.length):`${d+1} / ${c.length}`)},w=D=>{d=(d+D+c.length)%c.length,k()};k(),u.append(f),g&&m&&v&&u.append(g,m,v),u.append(p),document.body.appendChild(u),u.offsetHeight,u.classList.add("visible"),p.focus();let I=!1,h=null,y=()=>{h&&clearTimeout(h),h=null,u.isConnected&&u.remove()},b=()=>{I||(I=!0,u.classList.remove("visible"),u.addEventListener("transitionend",y,{once:!0}),h=setTimeout(y,250),document.removeEventListener("keydown",x),l?.isConnected&&typeof l.focus=="function"&&l.focus())},M=[g,m,p].filter(Boolean),x=D=>{if(D.key==="Escape"){D.preventDefault(),b();return}if(c.length>1&&(D.key==="ArrowLeft"||D.key==="ArrowRight")){D.preventDefault(),w(D.key==="ArrowLeft"?-1:1);return}if(D.key==="Tab"){D.preventDefault();let V=M.indexOf(document.activeElement),E=D.shiftKey?-1:1,_=V<0?0:(V+E+M.length)%M.length;M[_].focus()}};return p.addEventListener("click",b),g?.addEventListener("click",()=>w(-1)),m?.addEventListener("click",()=>w(1)),u.addEventListener("click",D=>{D.target===u&&b()}),document.addEventListener("keydown",x),u}var Ni=N(()=>{});function tb(e){let t=[];for(let s of e)s==="\b"?t.pop():t.push(s);return t.join("")}function sb(e){let t=e.split("\r"),s=t[t.length-1]||"";return tb(s)}function Zp(e){return e.replace(/\r\n/g,`
408
+ `,setup(e){let t=Pinia.useChatStore(),s=Vue.inject("t"),n=Vue.computed(()=>e.conversationId||t.currentConversation),r=Vue.computed(()=>n.value&&t.conversations.find(P=>P.id===n.value)||null),i=Vue.computed(()=>r.value?.capabilities||null),o=Vue.computed(()=>n.value?(r.value?.provider||"claude-code")==="claude-code":!0),a=(P,U=!0)=>{let re=i.value;return re?!!re[P]:o.value?U:!1},l=Vue.computed(()=>a("compact")),c=Vue.computed(()=>a("clear")),d=Vue.computed(()=>a("expert")),u=Vue.computed(()=>a("mcp")),f=Vue.computed(()=>{if(!n.value)return"Yeaft";let P=t.getConversationTitle(n.value);if(P)return P;let re=t.conversations.find(me=>me.id===n.value)?.workDir||t.currentWorkDir;if(re){let me=re.split(/[/\\]/);return me[me.length-1]||me[me.length-2]||re}return s("chatHeader.newConv")}),p=Vue.computed(()=>{if(!n.value)return"";let U=t.conversations.find(me=>me.id===n.value)?.agentId;return U&&t.agents.find(me=>me.id===U)?.name||""}),g=Vue.computed(()=>t.clearStatus?.conversationId===n.value?!0:t.compactStatus?t.compactStatus.conversationId===n.value:!1),m=Vue.computed(()=>t.clearStatus?.conversationId===n.value?t.clearStatus.status==="clearing"?"compacting":"completed":t.compactStatus?t.compactStatus.status==="compacting"?"compacting":"completed":""),v=Vue.computed(()=>t.clearStatus?.conversationId===n.value?t.clearStatus.status==="clearing":t.compactStatus?.status==="compacting"),k=Vue.computed(()=>t.clearStatus?.conversationId===n.value?t.clearStatus.status==="clearing"?s("chatHeader.clearing"):s("chatHeader.clearDone"):t.compactStatus?t.compactStatus.status==="compacting"?t.compactStatus.message||s("chatHeader.compacting"):t.compactStatus.message||s("chatHeader.compactDone"):""),w=Vue.computed(()=>n.value&&(t.conversations.find(U=>U.id===n.value)?.workDir||t.currentWorkDir)||""),I=Vue.computed(()=>!t.contextUsage||t.contextUsage.conversationId!==n.value?null:t.contextUsage),h=Vue.computed(()=>{let P=I.value?.percentage||0;return P>=80?"context-danger":P>=50?"context-warn":"context-ok"}),y=Vue.computed(()=>{if(!I.value)return"";let P=(I.value.inputTokens/1e3).toFixed(0),U=(I.value.maxTokens/1e3).toFixed(0);return`Context: ${P}k / ${U}k`}),b=Vue.computed(()=>t.isRefreshingSession(n.value)),M=Vue.computed(()=>t.compactStatus?.status==="compacting"&&t.compactStatus?.conversationId===n.value),x=Vue.computed(()=>t.clearStatus?.status==="clearing"&&t.clearStatus?.conversationId===n.value),D=Vue.computed(()=>n.value?!t.isRefreshingSession(n.value):!1),V=()=>{if(t.isRefreshingSession(n.value)||!n.value)return;t.setRefreshingSession(n.value,!0),t.startRefreshTimeout(n.value),t.requestChatHistory(n.value,{mode:"recent",turns:5})||t.setRefreshingSession(n.value,!1)},E=()=>{M.value||t.sendMessage("/compact")},_=()=>{window.location.reload()},T=()=>{x.value||confirm(s("chatHeader.confirmClear"))&&(t.clearStatus={conversationId:n.value,status:"clearing"},t.sendMessage("/clear"))},A=Vue.computed(()=>t.getPaneRightPanel(e.paneId)),R=Vue.ref(null),j=Vue.computed(()=>{if(!t.mcpPanelOpen||!R.value)return null;let P=R.value.getBoundingClientRect();return{top:`${P.bottom+6}px`,right:`${window.innerWidth-P.right}px`}}),F=Vue.computed(()=>t.currentMcpServers.filter(P=>P.enabled).length),z=Vue.computed(()=>!!t.conversations.find(U=>U.id===n.value)?.needRestart),ee=()=>{t.mcpPanelOpen=!t.mcpPanelOpen},fe=()=>{t.togglePaneRightPanel("experts",e.paneId)},ce=()=>{t.togglePaneRightPanel("subagents",e.paneId)},ve=Vue.computed(()=>t.runningSubagentCount),ge=(P,U)=>{t.toggleConversationMcp(P,U)},pe=P=>{t.mcpPanelOpen&&!P.target.closest(".mcp-dropdown")&&!P.target.closest(".mcp-config-wrapper")&&(t.mcpPanelOpen=!1)};return Vue.onMounted(()=>{document.addEventListener("click",pe)}),Vue.onUnmounted(()=>{document.removeEventListener("click",pe)}),{store:t,effectiveConvId:n,effectiveRightPanel:A,isClaudeCode:o,canCompact:l,canClear:c,canExpert:d,canMcp:u,headerTitle:f,showStatusBanner:g,statusBannerClass:m,statusBannerSpinner:v,statusBannerMessage:k,contextUsage:I,contextColorClass:h,contextLabel:y,isRefreshing:b,isCompacting:M,isClearing:x,canRefresh:D,refreshSession:V,reloadPage:_,compactContext:E,clearMessages:T,mcpBtnRef:R,mcpDropdownStyle:j,mcpEnabledCount:F,currentConvNeedRestart:z,toggleMcpPanel:ee,toggleMcpServer:ge,toggleExpertPanel:fe,toggleSubAgentPanel:ce,runningSubagentCount:ve}}}});function Cr(e=globalThis.location){let t=e?.protocol==="https:"?"wss:":"ws:",s=e?.host||"localhost";return`${t}//${s}`}function Oi(){return"npm install -g @yeaft/webchat-agent"}function Fi(){return"yeaft-agent llm use github-copilot --model gpt-5.5"}function fl(e=null){let t=e&&(e.username||e.displayName)||"agent",s=2166136261;for(let i=0;i<t.length;i++)s^=t.charCodeAt(i),s=s+((s<<1)+(s<<4)+(s<<7)+(s<<8)+(s<<24))>>>0;let n=s.toString(16).padStart(8,"0").slice(0,6);return`${String(t).replace(/[^A-Za-z0-9_-]/g,"-").replace(/^-+|-+$/g,"")||"agent"}-${n}`}function Bi({profile:e=null,agentSecret:t="",serverWsUrl:s=Cr()}={}){if(!t)return"";let n=fl(e);return`yeaft-agent install --server ${s} --secret ${t} --name ${n}`}var gl=N(()=>{});function Zy(e,t){return typeof e=="string"?e?{src:e,alt:t}:null:!e||typeof e!="object"||!e.src?null:{src:e.src,alt:e.alt||t}}function bn(e,{alt:t="Preview",closeLabel:s="Close",previousLabel:n="Previous image",nextLabel:r="Next image",positionLabel:i=(c,d)=>`${c} / ${d}`,gallery:o=null,initialIndex:a=null,trigger:l=null}={}){if(!e)return null;let c=(Array.isArray(o)?o:[e]).map(D=>Zy(D,t)).filter(Boolean);c.length===0&&c.push({src:e,alt:t});let d=Number.isInteger(a)&&a>=0&&a<c.length?a:c.findIndex(D=>D.src===e);d<0&&(d=0);let u=document.createElement("div");u.className="image-preview-overlay",u.setAttribute("role","dialog"),u.setAttribute("aria-modal","true"),u.setAttribute("aria-label",t);let f=document.createElement("img");f.className="image-preview-img",f.draggable=!1;let p=document.createElement("button");p.type="button",p.className="image-preview-close",p.setAttribute("aria-label",s),p.setAttribute("title",s),p.textContent="\xD7";let g=null,m=null,v=null;c.length>1&&(g=document.createElement("button"),g.type="button",g.className="image-preview-navigation image-preview-previous",g.setAttribute("aria-label",n),g.setAttribute("title",n),g.innerHTML='<svg viewBox="0 0 24 24" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="m15 18-6-6 6-6"/></svg>',m=document.createElement("button"),m.type="button",m.className="image-preview-navigation image-preview-next",m.setAttribute("aria-label",r),m.setAttribute("title",r),m.innerHTML='<svg viewBox="0 0 24 24" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="m9 18 6-6-6-6"/></svg>',v=document.createElement("div"),v.className="image-preview-position",v.setAttribute("aria-live","polite"));let k=()=>{let D=c[d];f.src=D.src,f.alt=D.alt,u.setAttribute("aria-label",D.alt),v&&(v.textContent=typeof i=="function"?i(d+1,c.length):`${d+1} / ${c.length}`)},w=D=>{d=(d+D+c.length)%c.length,k()};k(),u.append(f),g&&m&&v&&u.append(g,m,v),u.append(p),document.body.appendChild(u),u.offsetHeight,u.classList.add("visible"),p.focus();let I=!1,h=null,y=()=>{h&&clearTimeout(h),h=null,u.isConnected&&u.remove()},b=()=>{I||(I=!0,u.classList.remove("visible"),u.addEventListener("transitionend",y,{once:!0}),h=setTimeout(y,250),document.removeEventListener("keydown",x),l?.isConnected&&typeof l.focus=="function"&&l.focus())},M=[g,m,p].filter(Boolean),x=D=>{if(D.key==="Escape"){D.preventDefault(),b();return}if(c.length>1&&(D.key==="ArrowLeft"||D.key==="ArrowRight")){D.preventDefault(),w(D.key==="ArrowLeft"?-1:1);return}if(D.key==="Tab"){D.preventDefault();let V=M.indexOf(document.activeElement),E=D.shiftKey?-1:1,_=V<0?0:(V+E+M.length)%M.length;M[_].focus()}};return p.addEventListener("click",b),g?.addEventListener("click",()=>w(-1)),m?.addEventListener("click",()=>w(1)),u.addEventListener("click",D=>{D.target===u&&b()}),document.addEventListener("keydown",x),u}var Ni=N(()=>{});function tb(e){let t=[];for(let s of e)s==="\b"?t.pop():t.push(s);return t.join("")}function sb(e){let t=e.split("\r"),s=t[t.length-1]||"";return tb(s)}function Xp(e){return e.replace(/\r\n/g,`
409
409
  `).split(`
410
410
  `).map(t=>sb(t)).join(`
411
- `)}function Xp(e){return e.replace(Jy,"").replace(eb,"")}function nb(e){return e?e.split(";").filter(t=>t!=="").map(t=>Number(t)).filter(Number.isFinite):[0]}function zp(e,t){let s=t==="bg"&&e>=30&&e<=37||t==="bg"&&e>=90&&e<=97?e+10:e;return t==="bg"?yl.get(s):vl.get(s)}function Yp(e,t,s){let n=bl[0],r=1/0;for(let i of bl){let o=(i.r-e)**2+(i.g-t)**2+(i.b-s)**2;o<r&&(n=i,r=o)}return n.code}function rb(e){if(e<0||e>255)return null;if(e<16){let s=bl[e];return{r:s.r,g:s.g,b:s.b}}if(e>=232){let s=8+(e-232)*10;return{r:s,g:s,b:s}}let t=e-16;return{r:hl[Math.floor(t/36)],g:hl[Math.floor(t%36/6)],b:hl[t%6]}}function Gp(e,t,s,n){let r=s[n+1];if(r===5){let i=s[n+2];if(Number.isFinite(i)){let o=rb(i);o&&(e[t]=zp(Yp(o.r,o.g,o.b),t)||"")}return n+3}if(r===2){let i=s[n+2],o=s[n+3],a=s[n+4];return Number.isFinite(i)&&Number.isFinite(o)&&Number.isFinite(a)&&(e[t]=zp(Yp(i,o,a),t)||""),n+5}return n+2}function ib(e,t){let s={...e},n=t.length?t:[0];for(let r=0;r<n.length;){let i=n[r];if(i===0)s.fg="",s.bg="",s.bold=!1,s.dim=!1,s.italic=!1,s.underline=!1;else if(i===1)s.bold=!0,s.dim=!1;else if(i===2)s.dim=!0,s.bold=!1;else if(i===3)s.italic=!0;else if(i===4)s.underline=!0;else if(i===22)s.bold=!1,s.dim=!1;else if(i===23)s.italic=!1;else if(i===24)s.underline=!1;else if(i===39)s.fg="";else if(i===49)s.bg="";else if(vl.has(i))s.fg=vl.get(i);else if(yl.has(i))s.bg=yl.get(i);else if(i===38){r=Gp(s,"fg",n,r);continue}else if(i===48){r=Gp(s,"bg",n,r);continue}r+=1}return s}function ob(e){return[e.fg,e.bg,e.bold&&"terminal-bold",e.dim&&"terminal-dim",e.italic&&"terminal-italic",e.underline&&"terminal-underline"].filter(Boolean).join(" ")}function Qp(e,t,s){let n=Xp(t);if(!n)return;let r=ob(s),i=e[e.length-1];i&&i.className===r?i.text+=n:e.push({text:n,className:r})}function Ut(e){if(e==null)return"";let t=typeof e=="string"?e:String(e);return t?Xp(Zp(t)):""}function Jp(e){if(e==null)return[];let t=typeof e=="string"?e:String(e);if(!t)return[];let s=Zp(t),n=[],r={fg:"",bg:"",bold:!1,dim:!1,italic:!1,underline:!1},i=0;ml.lastIndex=0;for(let o=ml.exec(s);o;o=ml.exec(s))Qp(n,s.slice(i,o.index),r),r=ib(r,nb(o[1])),i=o.index+o[0].length;return Qp(n,s.slice(i),r),n}var Jy,ml,eb,vl,yl,bl,hl,Ar=N(()=>{Jy=/[\u001b\u009b](?:[\[\]()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><~]|\][^\u0007]*(?:\u0007|\u001b\\)|[PX^_][\s\S]*?\u001b\\)/g,ml=/(?:\u001b\[|\u009b)([0-9;]*)m/g,eb=/[\u0000-\u0008\u000b\u000c\u000e-\u001a\u001c-\u001f\u007f-\u009f]/g,vl=new Map([[30,"terminal-fg-black"],[31,"terminal-fg-red"],[32,"terminal-fg-green"],[33,"terminal-fg-yellow"],[34,"terminal-fg-blue"],[35,"terminal-fg-magenta"],[36,"terminal-fg-cyan"],[37,"terminal-fg-white"],[90,"terminal-fg-bright-black"],[91,"terminal-fg-bright-red"],[92,"terminal-fg-bright-green"],[93,"terminal-fg-bright-yellow"],[94,"terminal-fg-bright-blue"],[95,"terminal-fg-bright-magenta"],[96,"terminal-fg-bright-cyan"],[97,"terminal-fg-bright-white"]]),yl=new Map([[40,"terminal-bg-black"],[41,"terminal-bg-red"],[42,"terminal-bg-green"],[43,"terminal-bg-yellow"],[44,"terminal-bg-blue"],[45,"terminal-bg-magenta"],[46,"terminal-bg-cyan"],[47,"terminal-bg-white"],[100,"terminal-bg-bright-black"],[101,"terminal-bg-bright-red"],[102,"terminal-bg-bright-green"],[103,"terminal-bg-bright-yellow"],[104,"terminal-bg-bright-blue"],[105,"terminal-bg-bright-magenta"],[106,"terminal-bg-bright-cyan"],[107,"terminal-bg-bright-white"]]),bl=[{code:30,r:0,g:0,b:0},{code:31,r:170,g:0,b:0},{code:32,r:0,g:170,b:0},{code:33,r:170,g:85,b:0},{code:34,r:0,g:0,b:170},{code:35,r:170,g:0,b:170},{code:36,r:0,g:170,b:170},{code:37,r:170,g:170,b:170},{code:90,r:85,g:85,b:85},{code:91,r:255,g:85,b:85},{code:92,r:85,g:255,b:85},{code:93,r:255,g:255,b:85},{code:94,r:85,g:85,b:255},{code:95,r:255,g:85,b:255},{code:96,r:85,g:255,b:255},{code:97,r:255,g:255,b:255}],hl=[0,95,135,175,215,255]});var wn,qi=N(()=>{Ni();hr();Ar();cs();wn={name:"MessageItem",props:{message:{type:Object,required:!0},sessionActions:{type:Boolean,default:!1},externalAttachmentOpen:{type:Boolean,default:!1}},emits:["quote","edit-as-new","open-attachment"],template:`
411
+ `)}function Zp(e){return e.replace(Jy,"").replace(eb,"")}function nb(e){return e?e.split(";").filter(t=>t!=="").map(t=>Number(t)).filter(Number.isFinite):[0]}function zp(e,t){let s=t==="bg"&&e>=30&&e<=37||t==="bg"&&e>=90&&e<=97?e+10:e;return t==="bg"?yl.get(s):vl.get(s)}function Yp(e,t,s){let n=bl[0],r=1/0;for(let i of bl){let o=(i.r-e)**2+(i.g-t)**2+(i.b-s)**2;o<r&&(n=i,r=o)}return n.code}function rb(e){if(e<0||e>255)return null;if(e<16){let s=bl[e];return{r:s.r,g:s.g,b:s.b}}if(e>=232){let s=8+(e-232)*10;return{r:s,g:s,b:s}}let t=e-16;return{r:hl[Math.floor(t/36)],g:hl[Math.floor(t%36/6)],b:hl[t%6]}}function Gp(e,t,s,n){let r=s[n+1];if(r===5){let i=s[n+2];if(Number.isFinite(i)){let o=rb(i);o&&(e[t]=zp(Yp(o.r,o.g,o.b),t)||"")}return n+3}if(r===2){let i=s[n+2],o=s[n+3],a=s[n+4];return Number.isFinite(i)&&Number.isFinite(o)&&Number.isFinite(a)&&(e[t]=zp(Yp(i,o,a),t)||""),n+5}return n+2}function ib(e,t){let s={...e},n=t.length?t:[0];for(let r=0;r<n.length;){let i=n[r];if(i===0)s.fg="",s.bg="",s.bold=!1,s.dim=!1,s.italic=!1,s.underline=!1;else if(i===1)s.bold=!0,s.dim=!1;else if(i===2)s.dim=!0,s.bold=!1;else if(i===3)s.italic=!0;else if(i===4)s.underline=!0;else if(i===22)s.bold=!1,s.dim=!1;else if(i===23)s.italic=!1;else if(i===24)s.underline=!1;else if(i===39)s.fg="";else if(i===49)s.bg="";else if(vl.has(i))s.fg=vl.get(i);else if(yl.has(i))s.bg=yl.get(i);else if(i===38){r=Gp(s,"fg",n,r);continue}else if(i===48){r=Gp(s,"bg",n,r);continue}r+=1}return s}function ob(e){return[e.fg,e.bg,e.bold&&"terminal-bold",e.dim&&"terminal-dim",e.italic&&"terminal-italic",e.underline&&"terminal-underline"].filter(Boolean).join(" ")}function Qp(e,t,s){let n=Zp(t);if(!n)return;let r=ob(s),i=e[e.length-1];i&&i.className===r?i.text+=n:e.push({text:n,className:r})}function Ut(e){if(e==null)return"";let t=typeof e=="string"?e:String(e);return t?Zp(Xp(t)):""}function Jp(e){if(e==null)return[];let t=typeof e=="string"?e:String(e);if(!t)return[];let s=Xp(t),n=[],r={fg:"",bg:"",bold:!1,dim:!1,italic:!1,underline:!1},i=0;ml.lastIndex=0;for(let o=ml.exec(s);o;o=ml.exec(s))Qp(n,s.slice(i,o.index),r),r=ib(r,nb(o[1])),i=o.index+o[0].length;return Qp(n,s.slice(i),r),n}var Jy,ml,eb,vl,yl,bl,hl,Ar=N(()=>{Jy=/[\u001b\u009b](?:[\[\]()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><~]|\][^\u0007]*(?:\u0007|\u001b\\)|[PX^_][\s\S]*?\u001b\\)/g,ml=/(?:\u001b\[|\u009b)([0-9;]*)m/g,eb=/[\u0000-\u0008\u000b\u000c\u000e-\u001a\u001c-\u001f\u007f-\u009f]/g,vl=new Map([[30,"terminal-fg-black"],[31,"terminal-fg-red"],[32,"terminal-fg-green"],[33,"terminal-fg-yellow"],[34,"terminal-fg-blue"],[35,"terminal-fg-magenta"],[36,"terminal-fg-cyan"],[37,"terminal-fg-white"],[90,"terminal-fg-bright-black"],[91,"terminal-fg-bright-red"],[92,"terminal-fg-bright-green"],[93,"terminal-fg-bright-yellow"],[94,"terminal-fg-bright-blue"],[95,"terminal-fg-bright-magenta"],[96,"terminal-fg-bright-cyan"],[97,"terminal-fg-bright-white"]]),yl=new Map([[40,"terminal-bg-black"],[41,"terminal-bg-red"],[42,"terminal-bg-green"],[43,"terminal-bg-yellow"],[44,"terminal-bg-blue"],[45,"terminal-bg-magenta"],[46,"terminal-bg-cyan"],[47,"terminal-bg-white"],[100,"terminal-bg-bright-black"],[101,"terminal-bg-bright-red"],[102,"terminal-bg-bright-green"],[103,"terminal-bg-bright-yellow"],[104,"terminal-bg-bright-blue"],[105,"terminal-bg-bright-magenta"],[106,"terminal-bg-bright-cyan"],[107,"terminal-bg-bright-white"]]),bl=[{code:30,r:0,g:0,b:0},{code:31,r:170,g:0,b:0},{code:32,r:0,g:170,b:0},{code:33,r:170,g:85,b:0},{code:34,r:0,g:0,b:170},{code:35,r:170,g:0,b:170},{code:36,r:0,g:170,b:170},{code:37,r:170,g:170,b:170},{code:90,r:85,g:85,b:85},{code:91,r:255,g:85,b:85},{code:92,r:85,g:255,b:85},{code:93,r:255,g:255,b:85},{code:94,r:85,g:85,b:255},{code:95,r:255,g:85,b:255},{code:96,r:85,g:255,b:255},{code:97,r:255,g:255,b:255}],hl=[0,95,135,175,215,255]});var wn,qi=N(()=>{Ni();hr();Ar();cs();wn={name:"MessageItem",props:{message:{type:Object,required:!0},sessionActions:{type:Boolean,default:!1},externalAttachmentOpen:{type:Boolean,default:!1}},emits:["quote","edit-as-new","open-attachment"],template:`
412
412
  <div :class="messageClass">
413
413
  <!-- User message -->
414
414
  <template v-if="message.type === 'user'">
@@ -871,7 +871,7 @@ ${String(e||"").trim()}
871
871
  <!-- H2.f.6: Fork-from-here button removed (single-conversation model). -->
872
872
  </div>
873
873
  </div>
874
- `,setup(e,{emit:t}){let s=Pinia.useChatStore(),n=Vue.ref(!1),r=Vue.ref(!1),i=Vue.ref(!1),o=Vue.computed(()=>e.actionsExpanded===null?i.value:!!e.actionsExpanded),a=K=>{i.value=!!K,t("update-actions-expanded",!!K)},l=Vue.ref(!1),c=Vue.ref(null),d=Vue.reactive(new Set),u=Vue.inject("t"),f=(K,q)=>{s.answerUserQuestion(K,q,e.conversationId||void 0)},p=Vue.computed(()=>(Array.isArray(e.turn?.toolMsgs)?e.turn.toolMsgs:[]).filter(q=>q?.toolName==="RouteForward").map((q,B)=>({...wl(q.toolInput||{}),key:q.toolId||`${q.startTime||0}:${B}`}))),g=Vue.computed(()=>(Array.isArray(e.turn?.toolMsgs)?e.turn.toolMsgs:[]).filter(q=>q?.toolName!=="RouteForward")),m=Vue.computed(()=>g.value.length>0||Number(e.turn.toolSummaryCount||0)>0),v=Vue.computed(()=>{let K=g.value;return K[K.length-1]}),k=Vue.computed(()=>g.value.slice(0,-1)),w=Vue.computed(()=>Math.max(0,g.value.length-1)),I=Vue.computed(()=>{let K=Number(e.turn.toolSummaryCount||0);return K?typeof u=="function"?u("chat.toolActionsOmitted",{count:K}):`${K} older tool actions omitted`:""}),h=Vue.computed(()=>{let K=e.turn?.todoMsg?.toolInput?.todos;return Array.isArray(K)?K.map(q=>of(e.turn,q)):[]}),y=()=>{a(!o.value)},b=(K,q,B)=>{let O=e.toolStatePrefix||e.turn.id||e.turn.turnId||"assistant-turn",L=K?.toolName||"tool",Z=K?.startTime||q;return`${O}:tool:${B}:${q}:${L}:${Z}`},M=(K,q,B)=>{let O=b(K,q,B);return e.toolExpandStates&&Object.prototype.hasOwnProperty.call(e.toolExpandStates,O)?!!e.toolExpandStates[O]:null},x=(K,q,B,O)=>{t("update-tool-expanded",{key:b(K,q,B),value:!!O})};typeof marked<"u"&&marked.setOptions({highlight:function(K,q){if(typeof hljs<"u"&&q&&hljs.getLanguage(q))try{return hljs.highlight(K,{language:q}).value}catch{}return K},breaks:!0,gfm:!0});let V=K=>{let q=K;if(typeof q!="string"&&(Array.isArray(q)?q=q.map(B=>typeof B=="string"?B:B&&B.type==="text"&&B.text||"").join(""):q=String(q)),q=Ut(q),!q)return"";try{if(typeof marked<"u"){let B=marked.parse(q);return R(A(B))}}catch{}return j(q)},E=Vue.computed(()=>Array.isArray(e.turn?.textSegments)&&e.turn.textSegments.length>0?e.turn.textSegments:e.turn?.textContent?[{key:"legacy-result",content:e.turn.textContent,kind:"result",isStreaming:e.turn.isStreaming===!0}]:[]),_=Vue.computed(()=>E.value.filter(K=>K.kind!=="result")),T=Vue.computed(()=>E.value.filter(K=>K.kind==="result")),A=K=>K.replace(/<pre><code([^>]*)>([\s\S]*?)<\/code><\/pre>/g,(q,B,O)=>{let L=B.match(/class="language-(\w+)"/);return`<div class="code-block-wrapper">
874
+ `,setup(e,{emit:t}){let s=Pinia.useChatStore(),n=Vue.ref(!1),r=Vue.ref(!1),i=Vue.ref(!1),o=Vue.computed(()=>e.actionsExpanded===null?i.value:!!e.actionsExpanded),a=K=>{i.value=!!K,t("update-actions-expanded",!!K)},l=Vue.ref(!1),c=Vue.ref(null),d=Vue.reactive(new Set),u=Vue.inject("t"),f=(K,q)=>{s.answerUserQuestion(K,q,e.conversationId||void 0)},p=Vue.computed(()=>(Array.isArray(e.turn?.toolMsgs)?e.turn.toolMsgs:[]).filter(q=>q?.toolName==="RouteForward").map((q,B)=>({...wl(q.toolInput||{}),key:q.toolId||`${q.startTime||0}:${B}`}))),g=Vue.computed(()=>(Array.isArray(e.turn?.toolMsgs)?e.turn.toolMsgs:[]).filter(q=>q?.toolName!=="RouteForward")),m=Vue.computed(()=>g.value.length>0||Number(e.turn.toolSummaryCount||0)>0),v=Vue.computed(()=>{let K=g.value;return K[K.length-1]}),k=Vue.computed(()=>g.value.slice(0,-1)),w=Vue.computed(()=>Math.max(0,g.value.length-1)),I=Vue.computed(()=>{let K=Number(e.turn.toolSummaryCount||0);return K?typeof u=="function"?u("chat.toolActionsOmitted",{count:K}):`${K} older tool actions omitted`:""}),h=Vue.computed(()=>{let K=e.turn?.todoMsg?.toolInput?.todos;return Array.isArray(K)?K.map(q=>of(e.turn,q)):[]}),y=()=>{a(!o.value)},b=(K,q,B)=>{let O=e.toolStatePrefix||e.turn.id||e.turn.turnId||"assistant-turn",L=K?.toolName||"tool",X=K?.startTime||q;return`${O}:tool:${B}:${q}:${L}:${X}`},M=(K,q,B)=>{let O=b(K,q,B);return e.toolExpandStates&&Object.prototype.hasOwnProperty.call(e.toolExpandStates,O)?!!e.toolExpandStates[O]:null},x=(K,q,B,O)=>{t("update-tool-expanded",{key:b(K,q,B),value:!!O})};typeof marked<"u"&&marked.setOptions({highlight:function(K,q){if(typeof hljs<"u"&&q&&hljs.getLanguage(q))try{return hljs.highlight(K,{language:q}).value}catch{}return K},breaks:!0,gfm:!0});let V=K=>{let q=K;if(typeof q!="string"&&(Array.isArray(q)?q=q.map(B=>typeof B=="string"?B:B&&B.type==="text"&&B.text||"").join(""):q=String(q)),q=Ut(q),!q)return"";try{if(typeof marked<"u"){let B=marked.parse(q);return R(A(B))}}catch{}return j(q)},E=Vue.computed(()=>Array.isArray(e.turn?.textSegments)&&e.turn.textSegments.length>0?e.turn.textSegments:e.turn?.textContent?[{key:"legacy-result",content:e.turn.textContent,kind:"result",isStreaming:e.turn.isStreaming===!0}]:[]),_=Vue.computed(()=>E.value.filter(K=>K.kind!=="result")),T=Vue.computed(()=>E.value.filter(K=>K.kind==="result")),A=K=>K.replace(/<pre><code([^>]*)>([\s\S]*?)<\/code><\/pre>/g,(q,B,O)=>{let L=B.match(/class="language-(\w+)"/);return`<div class="code-block-wrapper">
875
875
  <div class="code-block-header">
876
876
  <span class="code-lang">${L?L[1]:""}</span>
877
877
  <button class="code-copy-btn" onclick="window.copyCodeBlock(this)" title="Copy">
@@ -881,7 +881,7 @@ ${String(e||"").trim()}
881
881
  </button>
882
882
  </div>
883
883
  <pre><code${B}>${O}</code></pre>
884
- </div>`}),R=K=>K.replace(/<table>([\s\S]*?)<\/table>/g,q=>`<div class="table-scroll-wrapper">${q}</div>`),j=K=>{if(!K)return"";typeof K!="string"&&(K=String(K));let q=B=>{let O=document.createElement("div");return O.textContent=B,O.innerHTML};return K.replace(/```(\w*)\n([\s\S]*?)```/g,(B,O,L)=>`<div class="code-block-wrapper"><pre><code class="language-${O}">${q(L.trim())}</code></pre></div>`).replace(/`([^`]+)`/g,"<code>$1</code>").replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>").replace(/\*([^*]+)\*/g,"<em>$1</em>").replace(/^### (.+)$/gm,"<h3>$1</h3>").replace(/^## (.+)$/gm,"<h2>$1</h2>").replace(/^# (.+)$/gm,"<h1>$1</h1>").replace(/\n/g,"<br>")},F=async()=>{try{await navigator.clipboard.writeText(e.turn.textContent||""),n.value=!0,setTimeout(()=>{n.value=!1},2e3)}catch{}},z=async()=>{try{await navigator.clipboard.writeText(e.turn.textContent||""),r.value=!0,setTimeout(()=>{r.value=!1},2e3)}catch{}},ee=()=>{let K=e.turn.textContent||"";if(!K)return;let q=new Blob([K],{type:"text/markdown;charset=utf-8"}),B=URL.createObjectURL(q),O=document.createElement("a");O.download=`response-${Date.now()}.md`,O.href=B,O.click(),URL.revokeObjectURL(B)},fe=async()=>{if(!(l.value||!window.htmlToImage)){l.value=!0;try{let K=c.value;if(!K)return;let q=K.querySelector(".turn-content");if(!q)return;let B=getComputedStyle(document.body).getPropertyValue("--bg-main").trim()||"#ffffff";q.classList.add("screenshot-mode");try{let L=q.getBoundingClientRect(),Z=await window.htmlToImage.toPng(q,{backgroundColor:B,pixelRatio:3,width:L.width+64,height:L.height+64,style:{padding:"32px"},filter:ke=>!(ke.classList&&(ke.classList.contains("turn-header")||ke.classList.contains("screenshot-btn")))}),ne=document.createElement("a");ne.download=`response-${Date.now()}.png`,ne.href=Z,ne.click()}finally{q.classList.remove("screenshot-mode")}}catch{}finally{l.value=!1}}};Vue.onMounted(()=>{window.copyCodeBlock||(window.copyCodeBlock=async function(K){let B=K.closest(".code-block-wrapper").querySelector("code");if(B)try{await navigator.clipboard.writeText(B.textContent),K.innerHTML='<svg viewBox="0 0 24 24" width="14" height="14"><path fill="currentColor" d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/></svg>',setTimeout(()=>{K.innerHTML='<svg viewBox="0 0 24 24" width="14" height="14"><path fill="currentColor" d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>'},2e3)}catch{}}),Vue.nextTick(()=>{typeof hljs<"u"&&document.querySelectorAll("pre code:not([data-highlighted])").forEach(K=>{hljs.highlightElement(K),K.dataset.highlighted="true"}),pt(c.value)})}),Vue.watch(()=>e.turn.textContent,()=>{Vue.nextTick(()=>{typeof hljs<"u"&&document.querySelectorAll("pre code:not([data-highlighted])").forEach(K=>{hljs.highlightElement(K),K.dataset.highlighted="true"}),pt(c.value)})});let ce=K=>{if(K?.src)return K.src;if(!K?.fileId)return"";let q=K.previewToken||"";return`/api/preview/${K.fileId}?token=${q}`},ve=K=>{d.add(K?.assetId||K?.id)},ge=Vue.computed(()=>(Array.isArray(e.turn?.imageMsgs)?e.turn.imageMsgs:[]).map(K=>({image:K,src:ce(K),alt:K?.filename||u("message.imagePreview")})).filter(K=>K.src&&!d.has(K.image?.assetId||K.image?.id))),pe=(K,q)=>{let B=ge.value,O=B.findIndex(L=>L.image===K);O<0||bn(B[O].src,{alt:B[O].alt,closeLabel:u("common.close"),previousLabel:u("message.previousImage"),nextLabel:u("message.nextImage"),positionLabel:(L,Z)=>u("message.imagePosition",{current:L,total:Z}),gallery:B.map(({src:L,alt:Z})=>({src:L,alt:Z})),initialIndex:O,trigger:q})},P=K=>{if(K)try{typeof s.cancelVpTurn=="function"&&s.cancelVpTurn(K)}catch{}},U=()=>{let K=e.turn;return K?typeof K.timestamp=="number"&&K.timestamp>0?K.timestamp:typeof K.createdAt=="number"&&K.createdAt>0?K.createdAt:typeof K.speakerTimestamp=="number"&&K.speakerTimestamp>0?K.speakerTimestamp:null:null},re=Vue.computed(()=>Rt(U())),me=Vue.computed(()=>{let K=U();if(!K)return"";try{return new Date(K).toLocaleString()}catch{return""}}),Me=Vue.computed(()=>ep(e.turn,e.quoteAuthor||u("message.assistant")));return{onStopTurn:P,turnTime:re,turnTimeFull:me,assistantQuote:Me,copied:n,fullCopied:r,expanded:o,screenshotting:l,turnRef:c,showToolActions:m,latestTool:v,historyTools:k,latestToolIndex:w,actionTools:g,routeMessages:p,toolSummaryLabel:I,toggleExpand:y,toolExpandedValue:M,updateToolExpanded:x,textSegments:E,progressSegments:_,resultSegments:T,renderSegment:V,copyContent:F,copyFullResponse:z,exportMarkdown:ee,screenshotContent:fe,onAskSubmit:f,imageSrc:ce,failedImages:d,handleImageError:ve,previewImage:pe,displayedTodos:h}}}});function mf(e){if(!Number.isFinite(e)||e<0)return"";let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let s=Math.floor(t/60),n=t%60,r=String(n).padStart(2,"0");if(s<60)return`${s}:${r}`;let i=Math.floor(s/60),o=s%60;return`${i}:${String(o).padStart(2,"0")}:${r}`}var hf=N(()=>{});var Sn,zi=N(()=>{Ki();Pi();vn();hf();cs();Sn={name:"VpTurnBlock",components:{AssistantTurn:kn},props:{turn:{type:Object,required:!0},conversationId:{type:String,default:null},nowMs:{type:Number,default:0},responseCollapsible:{type:Boolean,default:!1},responseCollapsed:{type:Boolean,default:!1},responseToggleLabel:{type:String,default:""},displayNameOverride:{type:String,default:""},canStop:{type:Boolean,default:!0},interactiveSpeaker:{type:Boolean,default:!0}},emits:["toggle-response-collapse","quote","open-debug"],template:`
884
+ </div>`}),R=K=>K.replace(/<table>([\s\S]*?)<\/table>/g,q=>`<div class="table-scroll-wrapper">${q}</div>`),j=K=>{if(!K)return"";typeof K!="string"&&(K=String(K));let q=B=>{let O=document.createElement("div");return O.textContent=B,O.innerHTML};return K.replace(/```(\w*)\n([\s\S]*?)```/g,(B,O,L)=>`<div class="code-block-wrapper"><pre><code class="language-${O}">${q(L.trim())}</code></pre></div>`).replace(/`([^`]+)`/g,"<code>$1</code>").replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>").replace(/\*([^*]+)\*/g,"<em>$1</em>").replace(/^### (.+)$/gm,"<h3>$1</h3>").replace(/^## (.+)$/gm,"<h2>$1</h2>").replace(/^# (.+)$/gm,"<h1>$1</h1>").replace(/\n/g,"<br>")},F=async()=>{try{await navigator.clipboard.writeText(e.turn.textContent||""),n.value=!0,setTimeout(()=>{n.value=!1},2e3)}catch{}},z=async()=>{try{await navigator.clipboard.writeText(e.turn.textContent||""),r.value=!0,setTimeout(()=>{r.value=!1},2e3)}catch{}},ee=()=>{let K=e.turn.textContent||"";if(!K)return;let q=new Blob([K],{type:"text/markdown;charset=utf-8"}),B=URL.createObjectURL(q),O=document.createElement("a");O.download=`response-${Date.now()}.md`,O.href=B,O.click(),URL.revokeObjectURL(B)},fe=async()=>{if(!(l.value||!window.htmlToImage)){l.value=!0;try{let K=c.value;if(!K)return;let q=K.querySelector(".turn-content");if(!q)return;let B=getComputedStyle(document.body).getPropertyValue("--bg-main").trim()||"#ffffff";q.classList.add("screenshot-mode");try{let L=q.getBoundingClientRect(),X=await window.htmlToImage.toPng(q,{backgroundColor:B,pixelRatio:3,width:L.width+64,height:L.height+64,style:{padding:"32px"},filter:ke=>!(ke.classList&&(ke.classList.contains("turn-header")||ke.classList.contains("screenshot-btn")))}),ne=document.createElement("a");ne.download=`response-${Date.now()}.png`,ne.href=X,ne.click()}finally{q.classList.remove("screenshot-mode")}}catch{}finally{l.value=!1}}};Vue.onMounted(()=>{window.copyCodeBlock||(window.copyCodeBlock=async function(K){let B=K.closest(".code-block-wrapper").querySelector("code");if(B)try{await navigator.clipboard.writeText(B.textContent),K.innerHTML='<svg viewBox="0 0 24 24" width="14" height="14"><path fill="currentColor" d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/></svg>',setTimeout(()=>{K.innerHTML='<svg viewBox="0 0 24 24" width="14" height="14"><path fill="currentColor" d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>'},2e3)}catch{}}),Vue.nextTick(()=>{typeof hljs<"u"&&document.querySelectorAll("pre code:not([data-highlighted])").forEach(K=>{hljs.highlightElement(K),K.dataset.highlighted="true"}),pt(c.value)})}),Vue.watch(()=>e.turn.textContent,()=>{Vue.nextTick(()=>{typeof hljs<"u"&&document.querySelectorAll("pre code:not([data-highlighted])").forEach(K=>{hljs.highlightElement(K),K.dataset.highlighted="true"}),pt(c.value)})});let ce=K=>{if(K?.src)return K.src;if(!K?.fileId)return"";let q=K.previewToken||"";return`/api/preview/${K.fileId}?token=${q}`},ve=K=>{d.add(K?.assetId||K?.id)},ge=Vue.computed(()=>(Array.isArray(e.turn?.imageMsgs)?e.turn.imageMsgs:[]).map(K=>({image:K,src:ce(K),alt:K?.filename||u("message.imagePreview")})).filter(K=>K.src&&!d.has(K.image?.assetId||K.image?.id))),pe=(K,q)=>{let B=ge.value,O=B.findIndex(L=>L.image===K);O<0||bn(B[O].src,{alt:B[O].alt,closeLabel:u("common.close"),previousLabel:u("message.previousImage"),nextLabel:u("message.nextImage"),positionLabel:(L,X)=>u("message.imagePosition",{current:L,total:X}),gallery:B.map(({src:L,alt:X})=>({src:L,alt:X})),initialIndex:O,trigger:q})},P=K=>{if(K)try{typeof s.cancelVpTurn=="function"&&s.cancelVpTurn(K)}catch{}},U=()=>{let K=e.turn;return K?typeof K.timestamp=="number"&&K.timestamp>0?K.timestamp:typeof K.createdAt=="number"&&K.createdAt>0?K.createdAt:typeof K.speakerTimestamp=="number"&&K.speakerTimestamp>0?K.speakerTimestamp:null:null},re=Vue.computed(()=>Rt(U())),me=Vue.computed(()=>{let K=U();if(!K)return"";try{return new Date(K).toLocaleString()}catch{return""}}),Me=Vue.computed(()=>ep(e.turn,e.quoteAuthor||u("message.assistant")));return{onStopTurn:P,turnTime:re,turnTimeFull:me,assistantQuote:Me,copied:n,fullCopied:r,expanded:o,screenshotting:l,turnRef:c,showToolActions:m,latestTool:v,historyTools:k,latestToolIndex:w,actionTools:g,routeMessages:p,toolSummaryLabel:I,toggleExpand:y,toolExpandedValue:M,updateToolExpanded:x,textSegments:E,progressSegments:_,resultSegments:T,renderSegment:V,copyContent:F,copyFullResponse:z,exportMarkdown:ee,screenshotContent:fe,onAskSubmit:f,imageSrc:ce,failedImages:d,handleImageError:ve,previewImage:pe,displayedTodos:h}}}});function mf(e){if(!Number.isFinite(e)||e<0)return"";let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let s=Math.floor(t/60),n=t%60,r=String(n).padStart(2,"0");if(s<60)return`${s}:${r}`;let i=Math.floor(s/60),o=s%60;return`${i}:${String(o).padStart(2,"0")}:${r}`}var hf=N(()=>{});var Sn,zi=N(()=>{Ki();Pi();vn();hf();cs();Sn={name:"VpTurnBlock",components:{AssistantTurn:kn},props:{turn:{type:Object,required:!0},conversationId:{type:String,default:null},nowMs:{type:Number,default:0},responseCollapsible:{type:Boolean,default:!1},responseCollapsed:{type:Boolean,default:!1},responseToggleLabel:{type:String,default:""},displayNameOverride:{type:String,default:""},canStop:{type:Boolean,default:!0},interactiveSpeaker:{type:Boolean,default:!0}},emits:["toggle-response-collapse","quote","open-debug"],template:`
885
885
  <div class="vp-turn-block"
886
886
  :class="{ 'vp-turn-block-streaming': turn.isStreaming }"
887
887
  :data-turn-id="turn.turnId || ''"
@@ -1063,8 +1063,8 @@ ${String(e||"").trim()}
1063
1063
  aria-hidden="true"
1064
1064
  ></div>
1065
1065
  </div>
1066
- `,setup(e,{emit:t,expose:s}){let n=Vue.ref(null),r=Vue.ref(null),i=e.initialAlign==="end",o=Vue.ref(i?Number.MAX_SAFE_INTEGER:0),a=Vue.ref(Kt.viewportHeight),l=Vue.reactive({}),c=new Map,d=new Map,u=new Map,f=null,p=null,g=null,m=null,v=0,k=!1,w=0,I=!0,h=null,y="start",b=null,M=Vue.computed(()=>xl(e.items,l,{itemGap:e.itemGap,estimateHeight:e.estimateHeight})),x=Vue.computed(()=>If(e.items,M.value,{scrollTop:o.value,viewportHeight:a.value,overscan:e.overscan})),D=Vue.computed(()=>x.value.items),V=Vue.computed(()=>x.value.topSpacerHeight),E=Vue.computed(()=>x.value.bottomSpacerHeight);function _(q){q&&t("scroll-state",{scrollTop:q.scrollTop||0,scrollHeight:q.scrollHeight||0,clientHeight:q.clientHeight||0})}function T(){let q=r.value;q&&(a.value=Math.max(1,q.clientHeight||Kt.viewportHeight),i&&e.items.length===0||(o.value=Math.max(0,q.scrollTop||0)),_(q))}function A(){let q=r.value;return!i||e.initialAlign!=="end"||e.items.length===0||!q?!1:(ee(),q.scrollTop=q.scrollHeight,i=!1,T(),!0)}function R(){A()||T()}function j(){p||(p=requestAnimationFrame(()=>{p=null,T()}))}function F(q){return q?Ns({scrollTop:q.scrollTop,scrollHeight:q.scrollHeight,clientHeight:q.clientHeight,threshold:Kt.bottomThreshold}):!0}function z({delta:q=0,toBottom:B=!1}={},O=w){if(O!==w||(Math.abs(q)>=Pr&&(v+=q),B&&(k=!0),m))return;let L=O;m=requestAnimationFrame(()=>{if(m=null,L!==w)return;let Z=r.value;if(!Z){v=0,k=!1;return}k?Z.scrollTop=Z.scrollHeight:Math.abs(v)>=Pr&&(Z.scrollTop+=v),v=0,k=!1,T()})}function ee(){h=null,b=null}function fe({preserveTarget:q=!1}={}){w+=1,k=!1,v=0,q||ee(),m&&cancelAnimationFrame(m),m=null}function ce(q,B,O){!q||!O||(u.set(q,{index:B,el:O}),!g&&(g=requestAnimationFrame(()=>{g=null;let L=Array.from(u.entries());u.clear(),ve(L)})))}function ve(q){let B=[];for(let[ae,$e]of q){let Ae=$e?.el;if(!Ae)continue;let xe=Math.ceil(Ae.getBoundingClientRect?.().height||Ae.offsetHeight||0);if(!Number.isFinite(xe)||xe<=0)continue;let qe=l[ae];if(qe===xe)continue;let Ze=c.get(ae);B.push({key:ae,nextHeight:xe,previousHeight:qe,itemIndex:Number.isFinite(Ze)?Ze:$e.index})}if(!B.length)return;let O=r.value,L=I&&F(O),Z=B.some(ae=>!Number.isFinite(ae.previousHeight)),ne=x.value.visibleStart,ke=!!h&&B.some(ae=>ae.key===h),Y=0,te=I&&e.initialAlign==="end"&&Z;for(let ae of B){let{key:$e,nextHeight:Ae,previousHeight:xe,itemIndex:qe}=ae;if(l[$e]=Ae,!O||!Number.isFinite(xe))continue;let Ze=Ae-xe;Math.abs(Ze)<Pr||(Number.isFinite(qe)&&qe<ne?Y+=Ze:L&&(te=!0))}if(ke){fe({preserveTarget:!0}),pe(h,y);return}if(Math.abs(Y)>=Pr||te){let ae={delta:Y,toBottom:te},$e=w;te?Vue.nextTick(()=>z(ae,$e)):z(ae,$e)}}function ge(q,B="start"){let O=r.value,L=b||d.get(String(q));if(!O||!L)return!1;let Z=O.getBoundingClientRect?.(),ne=L.getBoundingClientRect?.();if(!Z||!ne)return!1;let ke=Number(Z.top),Y=Number(O.clientHeight||a.value),te=Number(ne.height||0),ye=B==="center"&&te<=Y?ke+(Y-te)/2:B==="end"&&te<=Y?Number(Z.bottom)-te:ke,ae=Number(ne.top)-ye;return Math.abs(ae)>=Pr&&(O.scrollTop+=ae),T(),!0}function pe(q,B="start",O){let L=String(q);h=L,y=B,O!==void 0&&(b=O);let Z=()=>{h===L&&ge(L,y)};Vue.nextTick(Z)}function P(q){let B=!!q;B&&ee(),I!==B&&(I=B,I||fe())}function U(q,B,O){c.set(q,B),O&&(d.set(q,O),f&&f.observe(O),Vue.nextTick(()=>ce(q,B,O)))}function re(q,B,O){if(!q)return;let L=d.get(q);if(L&&L!==O&&f&&f.unobserve(L),!O){d.delete(q);return}U(q,B,O)}async function me(q,{align:B="center"}={}){let O=Number.isFinite(q)?Math.floor(q):-1,L=r.value;if(!L||O<0||O>=e.items.length)return!1;fe({preserveTarget:!0});let Z=Cn(e.items[O],O);return h=Z,y=B,b=null,L.scrollTop=Cf(e.items,O,l,{itemGap:e.itemGap,estimateHeight:e.estimateHeight,viewportHeight:L.clientHeight||a.value,align:B}),T(),await Vue.nextTick(),d.get(Z)?(pe(Z,B),!0):!1}function Me(q,B={}){let O=c.get(String(q));return Number.isFinite(O)?me(O,B):Promise.resolve(!1)}function K(q,B,{align:O="start"}={}){let L=String(q||"");return!L||!B?!1:(h=L,y=O,b=B,ge(L,O),!0)}return s({scrollToKey:Me,scrollToIndex:me,anchorTarget:K,clearTargetAnchor:ee,cancelPendingBottomFollow:fe,setBottomFollowEnabled:P}),Vue.watch(()=>e.items.map((q,B)=>Cn(q,B)).join(`
1067
- `),()=>{c.clear(),e.items.forEach((q,B)=>c.set(Cn(q,B),B)),h&&!c.has(h)&&ee(),Vue.nextTick(R)},{immediate:!0}),Vue.onMounted(()=>{if(r.value=n.value?.closest?.(".chat-container")||n.value?.parentElement||null,R(),r.value?.addEventListener("scroll",j,{passive:!0}),window.addEventListener("resize",j),typeof ResizeObserver<"u"){f=new ResizeObserver(q=>{for(let B of q){let O=B.target?.dataset?.virtualId,L=Number(B.target?.dataset?.virtualIndex);O&&ce(O,L,B.target)}});for(let[q,B]of d.entries()){let O=c.get(q)??Number(B.dataset?.virtualIndex||0);U(q,O,B)}}}),Vue.onBeforeUnmount(()=>{r.value?.removeEventListener("scroll",j),window.removeEventListener("resize",j),f&&f.disconnect(),p&&cancelAnimationFrame(p),g&&cancelAnimationFrame(g),m&&cancelAnimationFrame(m),u.clear(),v=0,k=!1}),{rootRef:n,visibleEntries:D,topSpacerHeight:V,bottomSpacerHeight:E,setItemRef:re}}}});function An(e){return typeof e=="string"&&e.trim()?e.trim():""}function Df(e){return An(e?.speakerVpId)||An(e?.vpId)}function Ef(e){let t=Df(e),s=An(e?.turnId);return!t||!s?"":[t,s].join("\0")}function Lf(e){if(!Array.isArray(e)||e.length<2)return e||[];let t=[],s=[],n=()=>{if(s.length===0)return;let r=new Map;for(let i of s){let o=Ef(i);r.has(o)||r.set(o,[]),r.get(o).push(i)}for(let i of r.values())t.push(...i);s=[]};for(let r of e){if(Rb.has(r?.type)&&Ef(r)){s.push(r);continue}n(),t.push(r)}return n(),t}function $f(e,t){if(!e||!t)return!1;let s=An(e.speakerVpId),n=Df(t);if(s&&n&&s!==n)return!0;let r=An(e.turnId),i=An(t.turnId);return e.isHistory&&t.isHistory?e.messages?.length>0&&t.executionOrigin==="route_forward"&&r&&i&&r!==i:!!(r&&i&&r!==i)}var Rb,Vf=N(()=>{Rb=new Set(["assistant","chat-image","tool-result","tool-summary","tool-use","tool_result"])});function Rr(e){return e?e.type!=="user"&&e.type!=="system"&&e.type!=="error":!1}function Qi(e){let t=Array.isArray(e?.items)?e.items:[];return e?.responseCollapsed?t.filter(s=>!Rr(s)):t}function _b(e){return(Array.isArray(e?.items)?e.items:[]).filter(Rr)}function Hf(e){let t=_b(e);return t.length?t[0]:null}function Eb(e){let t=e?.textContent??e?.text??e?.content??e?.message?.content??"";return typeof t=="string"?t:Array.isArray(t)?t.map(s=>typeof s=="string"?s:s&&s.type==="text"&&s.text||"").join(""):t==null?"":String(t)}function Of(e){if(!e?.responseCollapsed)return[];let t=Hf(e);return Eb(t).replace(/```[\s\S]*?```/g," ").replace(/`([^`]+)`/g,"$1").replace(/!\[[^\]]*\]\([^)]*\)/g," ").replace(/\[[^\]]*\]\(([^)]*)\)/g,"").replace(/[#>*_~\-]+/g," ").split(/\r?\n/).map(n=>n.trim()).filter(Boolean).slice(0,2)}function Ff(e,t){if(!e?.responseCollapsed||typeof t!="function")return null;let s=Qi(e),n=Hf(e)?74:0,r=s.length+(n?1:0);if(!s.length)return n;let i=s.reduce((a,l)=>a+t(l),0),o=Math.max(0,r-1)*18;return i+o+n}var Bf=N(()=>{});function zt(e,t){typeof t!="string"||!/^m\d+$/.test(t)||e.includes(t)||e.push(t)}function Db(e){if(!e)return[];let t=[];for(let s of Array.isArray(e.messages)?e.messages:[]){zt(t,s?.id),zt(t,s?.messageId),zt(t,s?.persistedMessageId);for(let n of Array.isArray(s?.sourceMessageIds)?s.sourceMessageIds:[])zt(t,n)}return zt(t,e.message?.id),zt(t,e.messageId),zt(t,e.atMessageId),e.type!=="assistant-turn"&&zt(t,e.id),t}function Lb(e){let t=[],s=n=>{typeof n=="string"&&n&&!t.includes(n)&&t.push(n)};s(e?.entryId),s(e?.message?.entryId);for(let n of Array.isArray(e?.messages)?e.messages:[])s(n?.entryId);return t}function Nf(e){return!e?.closest?.(".yeaft-conversation-outline, .yeaft-conversation-outline-sender-menu, .yeaft-search-btn")}async function qf({result:e,revealWindow:t,nextTick:s,revealMessage:n,isMobile:r,closeOutline:i}){if(!e||!await t?.(e))return!1;await s?.();let a=await n?.(e);return a&&r&&i?.(),!!a}function $b(e,t){let s=typeof t?.entryId=="string"?t.entryId:null,n=[];for(let r of[...Array.isArray(t?.sourceMessageIds)?t.sourceMessageIds:[],t?.messageId,typeof t=="string"?t:null])zt(n,r);if(!s&&n.length===0)return null;for(let r of Array.isArray(e)?e:[]){if(!r)continue;let i=Array.isArray(r.items)?r.items:[r];for(let o of i){let a=s&&Lb(o).includes(s),l=n.some(u=>Db(o).includes(u));if(!a&&!l)continue;let c=o?.id,d=r?.id;return!c||!d?null:{blockId:d,rowId:c,collapseKey:r.responseCollapseKey||null,requiresExpansion:!!(r.responseCollapsed&&o.type==="assistant-turn")}}}return null}async function Wf({blocks:e,target:t,messageId:s,collapseStates:n,scrollToBlock:r,findRow:i,anchorRow:o,flashRow:a,nextTick:l,align:c="start"}){let d=$b(e,t||s);if(!d||typeof r!="function"||typeof i!="function")return!1;if(d.requiresExpansion){if(!d.collapseKey||!n)return!1;n[d.collapseKey]=!1,await l?.()}if(!await r(d.blockId,{align:c}))return!1;await l?.();let f=i(d.rowId);return f?(typeof o=="function"?o(d.blockId,d.rowId,f,{align:c}):f.scrollIntoView?.({block:c,inline:"nearest"}),a?.(d.rowId),!0):!1}var Ml=N(()=>{});var Zi,Pl=N(()=>{St();gl();qi();Ki();zi();Cl();yf();wf();Yi();_f();Vf();Tl();Bf();Ml();cs();Ci();Zi={name:"MessageList",components:{MessageItem:wn,AssistantTurn:kn,VpTurnBlock:Sn,VpSpeakerHeader:Ui,ReflectionCard:vf,SubAgentCard:bf,UserTurnBlock:In,VirtualTranscript:Rf},template:`
1066
+ `,setup(e,{emit:t,expose:s}){let n=Vue.ref(null),r=Vue.ref(null),i=e.initialAlign==="end",o=Vue.ref(i?Number.MAX_SAFE_INTEGER:0),a=Vue.ref(Kt.viewportHeight),l=Vue.reactive({}),c=new Map,d=new Map,u=new Map,f=null,p=null,g=null,m=null,v=0,k=!1,w=0,I=!0,h=null,y="start",b=null,M=Vue.computed(()=>xl(e.items,l,{itemGap:e.itemGap,estimateHeight:e.estimateHeight})),x=Vue.computed(()=>If(e.items,M.value,{scrollTop:o.value,viewportHeight:a.value,overscan:e.overscan})),D=Vue.computed(()=>x.value.items),V=Vue.computed(()=>x.value.topSpacerHeight),E=Vue.computed(()=>x.value.bottomSpacerHeight);function _(q){q&&t("scroll-state",{scrollTop:q.scrollTop||0,scrollHeight:q.scrollHeight||0,clientHeight:q.clientHeight||0})}function T(){let q=r.value;q&&(a.value=Math.max(1,q.clientHeight||Kt.viewportHeight),i&&e.items.length===0||(o.value=Math.max(0,q.scrollTop||0)),_(q))}function A(){let q=r.value;return!i||e.initialAlign!=="end"||e.items.length===0||!q?!1:(ee(),q.scrollTop=q.scrollHeight,i=!1,T(),!0)}function R(){A()||T()}function j(){p||(p=requestAnimationFrame(()=>{p=null,T()}))}function F(q){return q?Ns({scrollTop:q.scrollTop,scrollHeight:q.scrollHeight,clientHeight:q.clientHeight,threshold:Kt.bottomThreshold}):!0}function z({delta:q=0,toBottom:B=!1}={},O=w){if(O!==w||(Math.abs(q)>=Pr&&(v+=q),B&&(k=!0),m))return;let L=O;m=requestAnimationFrame(()=>{if(m=null,L!==w)return;let X=r.value;if(!X){v=0,k=!1;return}k?X.scrollTop=X.scrollHeight:Math.abs(v)>=Pr&&(X.scrollTop+=v),v=0,k=!1,T()})}function ee(){h=null,b=null}function fe({preserveTarget:q=!1}={}){w+=1,k=!1,v=0,q||ee(),m&&cancelAnimationFrame(m),m=null}function ce(q,B,O){!q||!O||(u.set(q,{index:B,el:O}),!g&&(g=requestAnimationFrame(()=>{g=null;let L=Array.from(u.entries());u.clear(),ve(L)})))}function ve(q){let B=[];for(let[ae,$e]of q){let Ae=$e?.el;if(!Ae)continue;let xe=Math.ceil(Ae.getBoundingClientRect?.().height||Ae.offsetHeight||0);if(!Number.isFinite(xe)||xe<=0)continue;let qe=l[ae];if(qe===xe)continue;let Xe=c.get(ae);B.push({key:ae,nextHeight:xe,previousHeight:qe,itemIndex:Number.isFinite(Xe)?Xe:$e.index})}if(!B.length)return;let O=r.value,L=I&&F(O),X=B.some(ae=>!Number.isFinite(ae.previousHeight)),ne=x.value.visibleStart,ke=!!h&&B.some(ae=>ae.key===h),Y=0,te=I&&e.initialAlign==="end"&&X;for(let ae of B){let{key:$e,nextHeight:Ae,previousHeight:xe,itemIndex:qe}=ae;if(l[$e]=Ae,!O||!Number.isFinite(xe))continue;let Xe=Ae-xe;Math.abs(Xe)<Pr||(Number.isFinite(qe)&&qe<ne?Y+=Xe:L&&(te=!0))}if(ke){fe({preserveTarget:!0}),pe(h,y);return}if(Math.abs(Y)>=Pr||te){let ae={delta:Y,toBottom:te},$e=w;te?Vue.nextTick(()=>z(ae,$e)):z(ae,$e)}}function ge(q,B="start"){let O=r.value,L=b||d.get(String(q));if(!O||!L)return!1;let X=O.getBoundingClientRect?.(),ne=L.getBoundingClientRect?.();if(!X||!ne)return!1;let ke=Number(X.top),Y=Number(O.clientHeight||a.value),te=Number(ne.height||0),ye=B==="center"&&te<=Y?ke+(Y-te)/2:B==="end"&&te<=Y?Number(X.bottom)-te:ke,ae=Number(ne.top)-ye;return Math.abs(ae)>=Pr&&(O.scrollTop+=ae),T(),!0}function pe(q,B="start",O){let L=String(q);h=L,y=B,O!==void 0&&(b=O);let X=()=>{h===L&&ge(L,y)};Vue.nextTick(X)}function P(q){let B=!!q;B&&ee(),I!==B&&(I=B,I||fe())}function U(q,B,O){c.set(q,B),O&&(d.set(q,O),f&&f.observe(O),Vue.nextTick(()=>ce(q,B,O)))}function re(q,B,O){if(!q)return;let L=d.get(q);if(L&&L!==O&&f&&f.unobserve(L),!O){d.delete(q);return}U(q,B,O)}async function me(q,{align:B="center"}={}){let O=Number.isFinite(q)?Math.floor(q):-1,L=r.value;if(!L||O<0||O>=e.items.length)return!1;fe({preserveTarget:!0});let X=Cn(e.items[O],O);return h=X,y=B,b=null,L.scrollTop=Cf(e.items,O,l,{itemGap:e.itemGap,estimateHeight:e.estimateHeight,viewportHeight:L.clientHeight||a.value,align:B}),T(),await Vue.nextTick(),d.get(X)?(pe(X,B),!0):!1}function Me(q,B={}){let O=c.get(String(q));return Number.isFinite(O)?me(O,B):Promise.resolve(!1)}function K(q,B,{align:O="start"}={}){let L=String(q||"");return!L||!B?!1:(h=L,y=O,b=B,ge(L,O),!0)}return s({scrollToKey:Me,scrollToIndex:me,anchorTarget:K,clearTargetAnchor:ee,cancelPendingBottomFollow:fe,setBottomFollowEnabled:P}),Vue.watch(()=>e.items.map((q,B)=>Cn(q,B)).join(`
1067
+ `),()=>{c.clear(),e.items.forEach((q,B)=>c.set(Cn(q,B),B)),h&&!c.has(h)&&ee(),Vue.nextTick(R)},{immediate:!0}),Vue.onMounted(()=>{if(r.value=n.value?.closest?.(".chat-container")||n.value?.parentElement||null,R(),r.value?.addEventListener("scroll",j,{passive:!0}),window.addEventListener("resize",j),typeof ResizeObserver<"u"){f=new ResizeObserver(q=>{for(let B of q){let O=B.target?.dataset?.virtualId,L=Number(B.target?.dataset?.virtualIndex);O&&ce(O,L,B.target)}});for(let[q,B]of d.entries()){let O=c.get(q)??Number(B.dataset?.virtualIndex||0);U(q,O,B)}}}),Vue.onBeforeUnmount(()=>{r.value?.removeEventListener("scroll",j),window.removeEventListener("resize",j),f&&f.disconnect(),p&&cancelAnimationFrame(p),g&&cancelAnimationFrame(g),m&&cancelAnimationFrame(m),u.clear(),v=0,k=!1}),{rootRef:n,visibleEntries:D,topSpacerHeight:V,bottomSpacerHeight:E,setItemRef:re}}}});function An(e){return typeof e=="string"&&e.trim()?e.trim():""}function Df(e){return An(e?.speakerVpId)||An(e?.vpId)}function Ef(e){let t=Df(e),s=An(e?.turnId);return!t||!s?"":[t,s].join("\0")}function Lf(e){if(!Array.isArray(e)||e.length<2)return e||[];let t=[],s=[],n=()=>{if(s.length===0)return;let r=new Map;for(let i of s){let o=Ef(i);r.has(o)||r.set(o,[]),r.get(o).push(i)}for(let i of r.values())t.push(...i);s=[]};for(let r of e){if(Rb.has(r?.type)&&Ef(r)){s.push(r);continue}n(),t.push(r)}return n(),t}function $f(e,t){if(!e||!t)return!1;let s=An(e.speakerVpId),n=Df(t);if(s&&n&&s!==n)return!0;let r=An(e.turnId),i=An(t.turnId);return e.isHistory&&t.isHistory?e.messages?.length>0&&t.executionOrigin==="route_forward"&&r&&i&&r!==i:!!(r&&i&&r!==i)}var Rb,Vf=N(()=>{Rb=new Set(["assistant","chat-image","tool-result","tool-summary","tool-use","tool_result"])});function Rr(e){return e?e.type!=="user"&&e.type!=="system"&&e.type!=="error":!1}function Qi(e){let t=Array.isArray(e?.items)?e.items:[];return e?.responseCollapsed?t.filter(s=>!Rr(s)):t}function _b(e){return(Array.isArray(e?.items)?e.items:[]).filter(Rr)}function Hf(e){let t=_b(e);return t.length?t[0]:null}function Eb(e){let t=e?.textContent??e?.text??e?.content??e?.message?.content??"";return typeof t=="string"?t:Array.isArray(t)?t.map(s=>typeof s=="string"?s:s&&s.type==="text"&&s.text||"").join(""):t==null?"":String(t)}function Of(e){if(!e?.responseCollapsed)return[];let t=Hf(e);return Eb(t).replace(/```[\s\S]*?```/g," ").replace(/`([^`]+)`/g,"$1").replace(/!\[[^\]]*\]\([^)]*\)/g," ").replace(/\[[^\]]*\]\(([^)]*)\)/g,"").replace(/[#>*_~\-]+/g," ").split(/\r?\n/).map(n=>n.trim()).filter(Boolean).slice(0,2)}function Ff(e,t){if(!e?.responseCollapsed||typeof t!="function")return null;let s=Qi(e),n=Hf(e)?74:0,r=s.length+(n?1:0);if(!s.length)return n;let i=s.reduce((a,l)=>a+t(l),0),o=Math.max(0,r-1)*18;return i+o+n}var Bf=N(()=>{});function zt(e,t){typeof t!="string"||!/^m\d+$/.test(t)||e.includes(t)||e.push(t)}function Db(e){if(!e)return[];let t=[];for(let s of Array.isArray(e.messages)?e.messages:[]){zt(t,s?.id),zt(t,s?.messageId),zt(t,s?.persistedMessageId);for(let n of Array.isArray(s?.sourceMessageIds)?s.sourceMessageIds:[])zt(t,n)}return zt(t,e.message?.id),zt(t,e.messageId),zt(t,e.atMessageId),e.type!=="assistant-turn"&&zt(t,e.id),t}function Lb(e){let t=[],s=n=>{typeof n=="string"&&n&&!t.includes(n)&&t.push(n)};s(e?.entryId),s(e?.message?.entryId);for(let n of Array.isArray(e?.messages)?e.messages:[])s(n?.entryId);return t}function Nf(e){return!e?.closest?.(".yeaft-conversation-outline, .yeaft-conversation-outline-sender-menu, .yeaft-search-btn")}async function qf({result:e,revealWindow:t,nextTick:s,revealMessage:n,isMobile:r,closeOutline:i}){if(!e||!await t?.(e))return!1;await s?.();let a=await n?.(e);return a&&r&&i?.(),!!a}function $b(e,t){let s=typeof t?.entryId=="string"?t.entryId:null,n=[];for(let r of[...Array.isArray(t?.sourceMessageIds)?t.sourceMessageIds:[],t?.messageId,typeof t=="string"?t:null])zt(n,r);if(!s&&n.length===0)return null;for(let r of Array.isArray(e)?e:[]){if(!r)continue;let i=Array.isArray(r.items)?r.items:[r];for(let o of i){let a=s&&Lb(o).includes(s),l=n.some(u=>Db(o).includes(u));if(!a&&!l)continue;let c=o?.id,d=r?.id;return!c||!d?null:{blockId:d,rowId:c,collapseKey:r.responseCollapseKey||null,requiresExpansion:!!(r.responseCollapsed&&o.type==="assistant-turn")}}}return null}async function Wf({blocks:e,target:t,messageId:s,collapseStates:n,scrollToBlock:r,findRow:i,anchorRow:o,flashRow:a,nextTick:l,align:c="start"}){let d=$b(e,t||s);if(!d||typeof r!="function"||typeof i!="function")return!1;if(d.requiresExpansion){if(!d.collapseKey||!n)return!1;n[d.collapseKey]=!1,await l?.()}if(!await r(d.blockId,{align:c}))return!1;await l?.();let f=i(d.rowId);return f?(typeof o=="function"?o(d.blockId,d.rowId,f,{align:c}):f.scrollIntoView?.({block:c,inline:"nearest"}),a?.(d.rowId),!0):!1}var Ml=N(()=>{});var Xi,Pl=N(()=>{St();gl();qi();Ki();zi();Cl();yf();wf();Yi();_f();Vf();Tl();Bf();Ml();cs();Ci();Xi={name:"MessageList",components:{MessageItem:wn,AssistantTurn:kn,VpTurnBlock:Sn,VpSpeakerHeader:Ui,ReflectionCard:vf,SubAgentCard:bf,UserTurnBlock:In,VirtualTranscript:Rf},template:`
1068
1068
  <main class="chat-container" ref="containerRef">
1069
1069
  <!-- Session Loading Overlay - only covers message area -->
1070
1070
  <div class="session-loading-overlay" v-if="showSessionLoadingOverlay">
@@ -1688,7 +1688,7 @@ ${String(e||"").trim()}
1688
1688
  {{ $t('message.scrollToLatest') }}
1689
1689
  </button>
1690
1690
  </main>
1691
- `,emits:["new-conversation","resume-conversation","open-settings","quote-message","edit-message-as-new"],setup(e,{expose:t}){let s=Pinia.useChatStore(),n=De(),r=typeof window<"u"&&window.Pinia?.useVpStore?window.Pinia.useVpStore():null,i=Vue.inject("t",null),o=Vue.ref(null),a=Vue.ref(null),l=Vue.reactive({}),c=Vue.reactive({}),d=Vue.reactive({}),u=S=>String(S?.id||S?.turnId||S?.messageId||S?.atMessageId||S?.message?.id||"turn_unknown"),f=S=>{let $=u(S);return Object.prototype.hasOwnProperty.call(l,$)?!!l[$]:!1},p=(S,$)=>{l[u(S)]=!!$},g=S=>{let $=S&&(S.turnId||S.id);!$||typeof s.openYeaftTurnDebug!="function"||s.openYeaftTurnDebug({sessionId:V.value||null,turnId:$})},m=({key:S,value:$}={})=>{S&&(c[S]=!!$)},v=S=>{let $=Ff(S,ps);return Number.isFinite($)?$:ps(S)},k=S=>Qi(S),w=S=>{let $=Array.isArray(S?.collapsedResponsePreview)?S.collapsedResponsePreview:Of(S);return Array.isArray($)?$:$?[String($)]:[]},I=S=>{let $=Array.isArray(S?.items)?S.items.find(se=>Rr(se)):null,W=$?.speakerVpId||$?.vpId||$?.message?.speakerVpId||$?.message?.vpId||S?.vpId||"",oe=W&&r&&typeof r.vpLabel=="function"?r.vpLabel(W)||W:W||(typeof i=="function"?i("message.assistant"):"Assistant"),we=W&&r&&typeof r.vpTextColor=="function"?{color:r.vpTextColor(W)}:{},ue=$?.speakerTimestamp||$?.timestamp||$?.createdAt||$?.message?.timestamp||$?.message?.createdAt||0,Oe="",Se="";if(ue)try{let se=new Date(ue);Number.isNaN(se.getTime())||(Oe=Rt(ue),Se=se.toLocaleString())}catch{}return{name:oe,style:we,timeText:Oe,fullTimeText:Se}},h=S=>{let $=Array.isArray(S?.items)?S.items:[];for(let W=$.length-1;W>=0;W-=1)if(Rr($[W]))return $[W];return null},y=(S,$)=>!S?.responseCollapsible||!$?!1:h(S)===$,b=S=>!!(S?.responseCollapsible&&!Qi(S).some($=>y(S,$))),M=S=>{let $=S?.responseCollapseKey;$&&(d[$]=!S.responseCollapsed)},x=S=>{let $=Number(S?.responseCount||0),W=S?.responseCollapsed?"message.showResponses":"message.hideResponses",oe=(typeof i=="function"?i(W):"")||(S?.responseCollapsed?"Show {count} response(s)":"Hide response(s)");return String(oe).replace("{count}",String($))},D=(()=>{try{return window.Pinia?.useSessionsStore?.()||null}catch{return null}}),V=Vue.computed(()=>{if(s.currentView!=="yeaft")return null;let S=D();if(!S)return null;let $=s.yeaftActiveSessionFilter||null;return $&&typeof S.sessionById=="function"&&S.sessionById($,s.currentAgent||null)?$:S.activeSessionId&&typeof S.sessionById=="function"&&S.sessionById(S.activeSessionId,s.currentAgent||null)?S.activeSessionId:null}),E=Vue.computed(()=>{let S=s.currentView||"",$=s.currentAgent||"";if(S==="yeaft"){let W=s.yeaftActiveSessionFilter||V.value||"__all__";return[S,$,W].join("")}return[S,$,s.activeConversationId||""].join("")}),_=Vue.computed(()=>V.value!==null),T=Vue.computed(()=>s.agents.filter(S=>S.online)),A=Vue.ref(null),R=Vue.ref(null),j=Vue.ref(!1),F=Vue.ref(""),z=null,ee=0,fe=n.token||"",ce=()=>{A.value=null,R.value=null,F.value="",z=null,ee+=1},ve=Oi(),ge=Fi(),pe=Vue.computed(()=>Bi({profile:A.value,agentSecret:R.value,serverWsUrl:Cr(location)})),P=()=>{let S={"Content-Type":"application/json"};return n.token&&(S.Authorization=`Bearer ${n.token}`),S},U=async()=>{if(T.value.length>0||s.currentConversation)return;if(R.value||z)return z;j.value=!0,F.value="";let S=++ee;return z=(async()=>{let $=n.token||"",W=P(),[oe,we]=await Promise.all([fetch("/api/user/profile",{headers:W}),fetch("/api/user/agent-secret",{headers:W})]),ue=oe.ok?await oe.json():null;if(S!==ee||$!==(n.token||""))return;if(ue&&(A.value=ue),!we.ok){let se="";try{se=(await we.json())?.error||""}catch{}throw new Error(se||"Failed to load Agent secret")}let Oe=await we.json();if(S!==ee||$!==(n.token||""))return;let Se=Oe?.agentSecret||Oe?.agent_secret||null;R.value=Se&&String(Se).trim()?String(Se):null})().catch($=>{S===ee&&(F.value=$?.message||"Failed to load Agent secret")}).finally(()=>{S===ee&&(j.value=!1,z=null)}),z},re=async S=>{if(S)try{await navigator.clipboard.writeText(S)}catch{}},me=new WeakMap,Me=0,K=(S,$)=>{let W=S?.message&&typeof S.message=="object"?S.message:Array.isArray(S?.messages)&&S.messages[0]&&typeof S.messages[0]=="object"?S.messages[0]:$&&typeof $=="object"?$:S&&typeof S=="object"?S:null;if(!W)return`legacy_render_${++Me}`;let oe=me.get(W);return oe||(oe=`legacy_render_${++Me}`,me.set(W,oe)),oe},q=S=>{let $=S?.message||S||null;return S?.entryId||S?.uiKey||S?.stableKey||$?.entryId||$?.uiKey||$?.stableKey||S?.atMessageId||S?.messageId||$?.messageId||S?.id||$?.id||K(S,$)},B=S=>encodeURIComponent(String(S||"legacy")),O=S=>{let $=S?.message||null,W=q(S),oe=S?.id||S?.atMessageId||$?.id||$?.messageId||W,we=S?.speakerVpId||S?.vpId||$?.speakerVpId||$?.vpId||"";return{id:`message_${B(W)}`,uiKey:W,vpId:we,messageId:oe}},L=Vue.computed(()=>{let S=s.currentView==="yeaft"?Lf(s.messages):s.messages,$=[],W=null,oe=()=>{if(W){W.isActive=!!(W.turnId&&Object.values(s.activeVpTurns||{}).some(yt=>((yt?.turnId||null)===W.turnId||!yt?.turnId&&s.activeVpTurns?.[W.turnId]===yt)&&(!s.currentAgent||!yt?.agentId||yt.agentId===s.currentAgent))),Ii(W);let Se=!!(W.textContent||W.todoMsg||W.askMsg||W.imageMsgs.length>0),se=W.toolMsgs.length>0||W.toolSummaryCount>0;(Se||se)&&(W.showSpeakerHeader=!!W.speakerVpId,$.push(W)),W=null}},we=Se=>{if(W){if(!W.speakerVpId){let se=Se.speakerVpId||Se.vpId;se&&(W.speakerVpId=se,W.speakerTimestamp=typeof Se.timestamp=="number"&&Se.timestamp>0?Se.timestamp:typeof Se.createdAt=="number"?Se.createdAt:0,typeof Se.lastStateChangeCause=="string"&&!W.speakerStateCause&&(W.speakerStateCause=Se.lastStateChangeCause))}!W.turnId&&Se.turnId&&(W.turnId=Se.turnId)}},ue=(Se=null)=>{let se=q(Se);W={type:"assistant-turn",id:`response_${B(se)}`,uiKey:se,...Se?.entryId?{entryId:Se.entryId}:{},textContent:"",textSegments:[],isStreaming:!1,isActive:!1,isHistory:!1,todoMsg:null,toolMsgs:[],toolSummaryCount:0,imageMsgs:[],askMsg:null,messages:[],atMessageId:null,speakerVpId:null,speakerTimestamp:0,speakerStateCause:"",showSpeakerHeader:!1,turnId:null}},Oe=Se=>{$f(W,Se)&&oe()};for(let Se=0;Se<S.length;Se++){let se=S[Se];if(se.type==="user"){if(!se.content||!se.content.trim())continue;oe(),$.push({type:"user",id:q(se),message:se});continue}if(se.type==="system"||se.type==="error"){oe(),$.push({type:se.type,id:q(se),message:se});continue}if(!(se.type==="tool-result"||se.type==="tool_result")){if(se.type==="tool-summary"){Oe(se),W||ue(se),we(se),se.isHistory&&(W.isHistory=!0),W.toolSummaryCount+=Number(se.count||se.omittedCount||0)||0,W.messages.push(se);continue}if(se.type==="assistant"){Oe(se),W||ue(se),Si(W,se),se.isStreaming&&(W.isStreaming=!0),se.isHistory&&(W.isHistory=!0),se.id&&/^m\d+$/.test(se.id)&&(W.atMessageId=se.id),we(se),W.messages.push(se);continue}if(se.type==="tool-use"){Oe(se),W||ue(se),we(se);let yt=S[Se+1],Zr=yt&&(yt.type==="tool-result"||yt.type==="tool_result"),On={...se,hasResult:Zr||se.hasResult||!1,toolResult:se.toolResult||null};se.isHistory&&(W.isHistory=!0),se.toolName==="TodoWrite"?W.todoMsg=On:se.toolName==="AskUserQuestion"?W.askMsg=On:W.toolMsgs.push(On),W.messages.push(se);continue}if(se.type==="chat-image"){Oe(se),W||ue(se),we(se),se.isHistory&&(W.isHistory=!0),W.imageMsgs.push(se),W.messages.push(se);continue}oe(),$.push({type:se.type||"unknown",id:q(se),message:se})}}return oe(),$}),Z=Vue.computed(()=>{let S=[],$=null,W=()=>{$&&S.push($),$=null};return L.value.forEach(oe=>{if(!oe||oe.type==="system"||oe.type==="error"){W(),S.push(oe);return}let we=O(oe);if(oe.type==="user"||!$){W(),$={type:"message-block",id:`block_${B(we.uiKey)}`,uiKey:we.uiKey,vpId:we.vpId,messageId:we.messageId,items:[oe]};return}$.items.push(oe),!$.vpId&&we.vpId&&($.vpId=we.vpId)}),W(),S}),ne=Vue.computed(()=>{let S=s.yeaftReflectionCards||{},$=s.yeaftConversationId,W={__orphans:[]},oe=Object.values(S).filter(ue=>ue&&ue.conversationId===$).sort((ue,Oe)=>(ue.anchorOrder||0)-(Oe.anchorOrder||0)||(ue.updatedAt||0)-(Oe.updatedAt||0)),we=new Set;for(let ue of s.messages||[])ue&&ue.id&&we.add(ue.id);for(let ue of oe)ue.anchorMsgId&&we.has(ue.anchorMsgId)?(W[ue.anchorMsgId]||(W[ue.anchorMsgId]=[]),W[ue.anchorMsgId].push(ue)):W.__orphans.push(ue);return W}),ke=S=>S?S.type==="assistant-turn"?S.atMessageId||null:S.message&&S.message.id||null:null,Y=S=>{let $=ke(S);return $?(ne.value||{})[$]||[]:[]},te=Vue.computed(()=>(ne.value||{}).__orphans||[]),ye=Vue.computed(()=>{let S=s.yeaftSubAgentCards||{},$=s.yeaftConversationId,W={__orphans:[]},oe=Object.values(S).filter(ue=>ue&&ue.conversationId===$).sort((ue,Oe)=>(ue.anchorOrder||0)-(Oe.anchorOrder||0)||(ue.updatedAt||0)-(Oe.updatedAt||0)),we=new Set;for(let ue of s.messages||[])ue&&ue.id&&we.add(ue.id);for(let ue of oe)ue.anchorMsgId&&we.has(ue.anchorMsgId)?(W[ue.anchorMsgId]||(W[ue.anchorMsgId]=[]),W[ue.anchorMsgId].push(ue)):W.__orphans.push(ue);return W}),ae=S=>{let $=ke(S);return $?(ye.value||{})[$]||[]:[]},$e=Vue.computed(()=>(ye.value||{}).__orphans||[]),Ae=Vue.ref(!0),xe=Vue.ref(!1),qe=Kt.bottomThreshold,Ze=Kt.resumeBottomThreshold,ht=!0,Gt=Vue.computed(()=>s.messages.some(S=>S.isStreaming)),Ks=Vue.computed(()=>!s.activeConversationId||Z.value.length>0?!1:s.currentView==="yeaft"?!!s.yeaftInitialHistoryLoading:!!s.sessionLoading),Qt=Vue.computed(()=>s.currentView==="yeaft"&&!!s.yeaftLoadingMoreHistory&&s.activeYeaftHistoryState?.mode==="older"),Lt=Vue.computed(()=>s.currentView==="yeaft"?"":s.sessionLoadingText||""),Zt=Vue.computed(()=>!!s.sessionLoading&&!Ks.value),it=Vue.computed(()=>s.isProcessing&&!Gt.value),Xt=Vue.ref(Date.now()),$t=null,H=()=>{$t||($t=setInterval(()=>{Xt.value=Date.now()},1e3))},X=()=>{$t&&(clearInterval($t),$t=null)};Vue.watch(Gt,S=>{S?(Xt.value=Date.now(),H()):X()},{immediate:!0}),Vue.onBeforeUnmount(()=>X());let le=Vue.ref(0),de=Vue.ref(Date.now()),Ie=null,Te=null,We=Vue.ref("cat"),Xe=new URLSearchParams(window.location.search).get("preview"),Je=Vue.ref(0),ot=Vue.ref(1),Be=Vue.ref(5),je=Vue.ref(95),Ne=Vue.ref("bark-both"),Ke=Vue.ref(1),ze=Vue.ref(-1),at=null;function Dn(){if(!le.value)return;de.value=Date.now();let S=(de.value-le.value)%19e3;if(S<4e3)Je.value=0,ot.value=1;else if(S<11500){let $=S-4e3,W;$<2500?W=$/2500*16:$<5e3?W=16+($-2500)/2500*29:W=45+($-5e3)/2500*55,Je.value=W,ot.value=1}else S<14e3?(Je.value=(1-(S-11500)/2500)*100,ot.value=-1):(Je.value=0,ot.value=1);Te=requestAnimationFrame(Dn)}function Ln(){if(!le.value||We.value!=="dog")return;de.value=Date.now();let S=(de.value-le.value)%18e3;if(S<2e3)Be.value=5,je.value=95,Ne.value="bark-both",Ke.value=1,ze.value=-1;else if(S<5e3){let $=(S-2e3)/3e3;Be.value=5+$*25,je.value=95,Ne.value="left-approach",Ke.value=1,ze.value=-1}else if(S<8e3){let $=(S-5e3)/3e3;Be.value=30,je.value=95-$*25,Ne.value="right-approach",Ke.value=1,ze.value=-1}else if(S<1e4){let $=(S-8e3)/2e3;Be.value=30+$*13,je.value=70-$*13,Ne.value="both-approach",Ke.value=1,ze.value=-1}else if(S<11e3)Be.value=43,je.value=57,Ne.value="snap",Ke.value=1,ze.value=-1;else if(S<12500)Be.value=43,je.value=57,Ne.value="stunned",Ke.value=1,ze.value=-1;else if(S<15e3){let $=(S-12500)/2500;Be.value=43-$*38,je.value=57+$*38,Ne.value="retreat",Ke.value=-1,ze.value=1}else S<17e3?(Be.value=5,je.value=95,Ne.value="rehang",Ke.value=-1,ze.value=1):(Be.value=5,je.value=95,Ne.value="reset",Ke.value=1,ze.value=-1);at=requestAnimationFrame(Ln)}let Ro=Vue.computed(()=>{let S=Be.value*1.2;return Ke.value<0?`translate(${S+13.5}, 0) scale(-1, 1)`:`translate(${S-13.5}, 0)`}),_o=Vue.computed(()=>{let S=je.value*1.2;return ze.value>0?`translate(${S-10.5}, 2)`:`translate(${S+10.5}, 2) scale(-1, 1)`}),Fr=Vue.computed(()=>{let S=Ne.value;return S==="bark-both"||S==="left-approach"||S==="right-approach"||S==="both-approach"||S==="reset"}),Eo=Vue.computed(()=>{let S=Be.value*1.2,$=10;if(Fr.value){let we=Math.max(0,(S-3)*.12);return`M3,18 Q${(3+S)/2},${18+we} ${S},${$}`}if(Ne.value==="rehang")return`M${S},${$} Q${S-3},20 3,18`;let W=Ke.value<0?1:-1,oe=S+W*8;return`M${S},${$} Q${S},18 ${oe},22`}),Do=Vue.computed(()=>{let S=je.value*1.2,$=10;if(Fr.value){let we=Math.max(0,(118-S)*.12);return`M118,18 Q${(118+S)/2},${18+we} ${S},${$}`}if(Ne.value==="rehang")return`M${S},${$} Q${S+3},20 118,18`;let W=ze.value>0?-1:1,oe=S+W*8;return`M${S},${$} Q${S},18 ${oe},22`}),Lo=Vue.computed(()=>Ne.value==="snap"?.2:.4),$o=Vue.computed(()=>Ne.value==="snap"?.2:.4),Vo=Vue.computed(()=>Be.value*1.2),Ho=Vue.computed(()=>je.value*1.2),$n=Xe==="cat"||Xe==="dog"||Xe==="animation",Br=600,Ue=Vue.ref(!1),et=null,Nr=Vue.computed(()=>$n?!0:Ue.value);Vue.watch(it,S=>{if(S)et&&(clearTimeout(et),et=null),Ue.value=!0,le.value=Date.now(),de.value=Date.now(),We.value="cat",Je.value=0,ot.value=1,Be.value=5,je.value=95,Ne.value="bark-both",Ke.value=1,ze.value=-1,We.value==="cat"?Te=requestAnimationFrame(Dn):at=requestAnimationFrame(Ln);else{let $=le.value?Date.now()-le.value:Br,W=Math.max(0,Br-$),oe=()=>{et=null,Ue.value=!1,le.value=0,Je.value=0,ot.value=1,Te&&(cancelAnimationFrame(Te),Te=null),at&&(cancelAnimationFrame(at),at=null)};W===0?oe():(et&&clearTimeout(et),et=setTimeout(oe,W))}},{immediate:!0}),$n&&(le.value=Date.now(),de.value=Date.now(),Xe==="dog"?We.value="dog":We.value="cat",We.value==="cat"?Te=requestAnimationFrame(Dn):(Be.value=5,je.value=95,Ne.value="bark-both",Ke.value=1,ze.value=-1,at=requestAnimationFrame(Ln)));let Oo=Vue.computed(()=>{if(!s.isProcessing)return null;if(s.connectionState!=="connected")return"disconnected";let S=s.currentConversation;if(s.compactStatus?.conversationId===S&&s.compactStatus?.status==="compacting")return"compacting";let $=s.sessionHealth?.[S];return $?$.status:le.value&&de.value-le.value>8e3?"thinking":null}),Fo=Vue.computed(()=>{if(!le.value)return"speed-napping";let S=(de.value-le.value)%19e3;return S>=16e3?"speed-petted":S>=14e3?"speed-tired":S>=11500?"speed-crazy":S>=9e3?"speed-turbo":S>=6500?"speed-fast":S>=4e3?"speed-normal":"speed-napping"}),hs=Vue.computed(()=>{let S=Je.value,$=ot.value,oe={left:`calc(40px + (100% - 80px) * ${S/100})`};return $<0&&(oe.transform="scaleX(-1)"),oe});function vs(){let S=s.currentConversation;if(!S)return;let $=s.conversations.find(W=>W.id===S);s.sendWsMessage({type:"refresh_conversation",conversationId:S,agentId:$?.agentId})}let Bo=()=>{if(!o.value)return!0;let{scrollTop:S,scrollHeight:$,clientHeight:W}=o.value;return Ns({scrollTop:S,scrollHeight:$,clientHeight:W,threshold:qe})},zs=(S,$=0,{allowContinuation:W=!1}={})=>{if(S>Af($)){ht=!0;return}W&&(ht=!0),!(!ht||!Ur())&&(ht=!1,Hn())},qr=S=>{if(!S)return"";let W=(Array.isArray(S.items)?S.items:[])[0]||null;return[S.type||"",S.messageId||"",S.turnId||"",S.vpId||"",W?.id||"",W?.turnId||"",W?.messageId||""].join(":")},Wr=()=>{let S=Z.value||[];return{blockCount:S.length,firstBlockIdentity:qr(S[0])}},jr=(S,$)=>!S||!$?!1:$.blockCount>S.blockCount||$.firstBlockIdentity!==S.firstBlockIdentity,Ys=S=>{Vue.nextTick(()=>{if(!o.value)return;let $=Wr();jr(S,$)&&zs(o.value.scrollTop||0,o.value.clientHeight||0,{allowContinuation:!0})})},pc=({scrollTop:S,scrollHeight:$,clientHeight:W})=>{let oe=Ns({scrollTop:S,scrollHeight:$,clientHeight:W,threshold:qe});return Ae.value=oe,xe.value=!oe,oe},lt=()=>{xe.value=!1,Ae.value=!0,a.value?.setBottomFollowEnabled?.(!0)},Gs=()=>{xe.value=!0,Ae.value=!1,a.value?.setBottomFollowEnabled?.(!1),a.value?.cancelPendingBottomFollow?.()},No=({scrollTop:S,scrollHeight:$,clientHeight:W})=>{let oe=Ns({scrollTop:S||0,scrollHeight:$||0,clientHeight:W||0,threshold:qe});Ae.value=xf({following:!xe.value,atBottom:oe}),xe.value=!Ae.value,a.value?.setBottomFollowEnabled?.(Ae.value),Vt||(ys=Number(S||0)),zs(S||0,W||0)},qo=(S,$)=>{let W=Wr();if(!o.value){S(),Ys(W);return}let oe=o.value.scrollHeight,we=o.value.scrollTop,ue=!1,Oe=null,Se=()=>{ue||(ue=!0,Oe&&Oe(),Vue.nextTick(()=>{if(!o.value)return;let se=o.value.scrollHeight;o.value.scrollTop=se-oe+we,Ys(W)}))};$&&(Oe=Vue.watch($,se=>{se||Se()})),S(),Vue.nextTick(()=>{(!$||!$())&&Se()})},Vn=()=>{if(s.hasHiddenYeaftMessages){s.expandYeaftMessageWindow();return}s.loadMoreYeaftHistory()},Ur=()=>s.currentView==="yeaft"?s.hasHiddenYeaftMessages||s.yeaftHasMoreHistory&&!s.yeaftLoadingMoreHistory&&s.yeaftOldestLoadedSeq!=null:!!s.currentConversation&&s.hasMoreMessages&&!s.loadingMoreMessages,Hn=()=>{if(!Ur())return;let S=s.currentView==="yeaft";qo(S?Vn:()=>s.loadMoreMessages(),S?()=>s.yeaftLoadingMoreHistory:()=>s.loadingMoreMessages)},Vt=!1,Qs=!1,vt=null,ys=0,Wo=250,Kr=()=>{Vt=!1,vt&&(clearTimeout(vt),vt=null)},Zs=()=>{Qs||(vt&&clearTimeout(vt),vt=setTimeout(Kr,Wo))},Xs=S=>{Vt=!0,a.value?.clearTargetAnchor?.(),ys=Number(o.value?.scrollTop||0),Number(S?.deltaY)<0&&Gs(),Zs()},zr=S=>{Mf(S,o.value)&&(Qs=!0,Vt=!0,a.value?.clearTargetAnchor?.(),ys=Number(o.value?.scrollTop||0),vt&&(clearTimeout(vt),vt=null))},Js=()=>{Qs=!1,Zs()},Jt=S=>{Pf(S,o.value)&&((S.key==="ArrowUp"||S.key==="PageUp"||S.key==="Home")&&Gs(),Vt=!0,a.value?.clearTargetAnchor?.(),Zs())},es=()=>{let S=Number(o.value?.scrollTop||0),$=Vt?S-ys:0,W=!xe.value;ys=S;let oe=Bo(),we=Ns({scrollTop:S,scrollHeight:o.value?.scrollHeight||0,clientHeight:o.value?.clientHeight||0,threshold:Ze});Ae.value=Tf({following:W,atBottom:oe,resumeBoundaryReached:we,direction:$}),xe.value=!Ae.value,a.value?.setBottomFollowEnabled?.(Ae.value),Vt&&Zs(),o.value&&zs(o.value.scrollTop||0,o.value.clientHeight||0)},en=()=>{o.value&&(o.value.scrollTop=o.value.scrollHeight,lt())},jo=()=>{lt(),Vue.nextTick(en)},Yr=()=>{!xe.value&&Ae.value&&Vue.nextTick(en)},Gr=S=>{if(!S)return"";if(Array.isArray(S.items))return S.items.map(Gr).join(",");let $=S.message||{};return[S.type||"",S.id||"",S.atMessageId||"",S.turnId||"",S.messageId||"",S.speakerVpId||"",$.id||"",$.content?String($.content).length:0,S.textContent?String(S.textContent).length:0,S.isStreaming||$.isStreaming?"streaming":"done"].join(":")},Uo=Vue.computed(()=>{let S=Z.value||[];return[s.activeConversationId||"",V.value||"",Gr(S[S.length-1])].join("|")});Vue.watch(()=>[s.currentConversation,T.value.length,n.token],()=>{let S=n.token||"";S!==fe&&(fe=S,ce()),U()},{immediate:!0}),Vue.watch(Uo,Yr),Vue.watch(Nr,S=>{S&&Yr()}),Vue.watch(()=>[s.activeConversationId,V.value],()=>{for(let S of Object.keys(l))delete l[S];for(let S of Object.keys(c))delete c[S];for(let S of Object.keys(d))delete d[S];lt(),Vue.nextTick(en)});let bs=Vue.ref(null),Qr=0;return t({revealMessage:async S=>S?(Gs(),await Wf({blocks:Z.value,target:S,collapseStates:d,nextTick:Vue.nextTick,scrollToBlock:(W,oe)=>(Gs(),a.value?.scrollToKey?.(W,oe)),findRow:W=>{let oe=o.value?.querySelectorAll?.("[data-msg-id]")||[];return Array.from(oe).find(we=>we?.dataset?.msgId===W)||null},anchorRow:(W,oe,we,ue)=>a.value?.anchorTarget?.(W,we,ue),flashRow:W=>{let oe=++Qr;bs.value=W,setTimeout(()=>{oe===Qr&&(bs.value=null)},1800)}})):!1}),Vue.onMounted(()=>{en(),o.value&&(o.value.addEventListener("wheel",Xs,{passive:!0}),o.value.addEventListener("touchmove",Xs,{passive:!0}),o.value.addEventListener("pointerdown",zr,{passive:!0}),o.value.addEventListener("scroll",es)),window.addEventListener("pointerup",Js,{passive:!0}),window.addEventListener("pointercancel",Js,{passive:!0}),window.addEventListener("keydown",Jt)}),Vue.onUnmounted(()=>{o.value&&(o.value.removeEventListener("wheel",Xs),o.value.removeEventListener("touchmove",Xs),o.value.removeEventListener("pointerdown",zr),o.value.removeEventListener("scroll",es)),window.removeEventListener("pointerup",Js),window.removeEventListener("pointercancel",Js),window.removeEventListener("keydown",Jt),Kr(),Ie&&(clearInterval(Ie),Ie=null),et&&(clearTimeout(et),et=null),Te&&(cancelAnimationFrame(Te),Te=null),at&&(cancelAnimationFrame(at),at=null)}),{store:s,containerRef:o,virtualTranscriptRef:a,flashMsgId:bs,hasStreamingMessage:Gt,nowMs:Xt,showTypingDots:it,showInitialMessagesLoading:Ks,showYeaftOlderHistoryLoading:Qt,showSessionLoadingOverlay:Zt,initialMessagesLoadingText:Lt,previewShowTypingDots:Nr,isPreviewMode:$n,waitingStatus:Oo,animationType:We,catSpeed:Fo,catStyle:hs,dogPhase:Ne,spikeTransform:Ro,teddyTransform:_o,leashPathL:Eo,leashPathR:Do,leashOpacityL:Lo,leashOpacityR:$o,questionLX:Vo,questionRX:Ho,refreshSession:vs,onlineAgents:T,welcomeInstallCommand:ve,welcomeLlmCommand:ge,welcomeServiceCommand:pe,welcomeSetupLoading:j,welcomeSetupError:F,copyWelcomeCommand:re,turnGroups:L,messageBlocks:Z,virtualTranscriptIdentity:E,estimateMessageBlockHeight:v,visibleItemsForBlock:k,collapsedResponsePreviewLines:w,collapsedResponsePreviewSpeaker:I,responseToggleBelongsToItem:y,showBlockResponseToggle:b,toggleMessageTurnResponse:M,responseCollapseLabel:x,turnUiKey:u,assistantTurnActionsExpandedFor:f,setAssistantTurnActionsExpanded:p,onOpenTurnDebug:g,toolExpandStates:c,setToolExpanded:m,cardsForRow:Y,orphanCards:te,subAgentCardsForRow:ae,orphanSubAgentCards:$e,useImStyleForUser:_,onClickLoadMore:Hn,onVirtualTranscriptScrollState:No,isAtBottom:Ae,scrollToLatest:jo}}}});function eo(...e){let t=[];for(let s of e)if(Array.isArray(s))for(let n of s)typeof n!="string"||!n||t.includes(n)||t.push(n);return t}function zf(e,t,s){let n=t?e?.slashCommandsMap?.[t]:null;return e?.currentView==="yeaft"?eo(n):eo(n,s?e?.slashCommandsMap?.[`agent:${s}`]:null,e?.slashCommandsMap?.__preload__)}function Hb(e,t={},s=new Set){if(Vb.has(e)||Object.prototype.hasOwnProperty.call(Ji,e))return"builtin";let n=e.startsWith("/")?e.slice(1):e;return n.startsWith("skill:")||n.startsWith("yeaft-skills:")||s.has(n)&&Object.prototype.hasOwnProperty.call(t||{},n)?"skill":"project"}function Yf(e,t={}){if(Xi[e])return Xi[e];if(Ji[e])return Ji[e];let s=e.startsWith("/")?e.slice(1):e;return t[s]?t[s]:Ob(s)}function Ob(e){return(e.includes(":")?e.split(":").pop():e).replace(/-/g," ").replace(/^\w/,s=>s.toUpperCase())}function Gf(e,t={},s=[]){if(e.length===0)return[];let n=new Set(s.filter(o=>typeof o=="string").map(o=>o.startsWith("/")?o.slice(1):o)),r={};e.forEach((o,a)=>{let l=Hb(o.cmd,o.descriptions||o.dynamicDescriptions||t,n);r[l]||(r[l]=[]),r[l].push({...o,flatIndex:a})});let i=Object.keys(r).sort((o,a)=>(jf[o]??99)-(jf[a]??99));return i.map((o,a)=>({label:Fb[o]||o,items:r[o],isLast:a===i.length-1}))}var Xi,Vb,Uf,Ji,Kf,Fb,jf,Qf=N(()=>{Xi={"/compact":"Compact context","/context":"Show context usage","/cost":"Show token costs","/init":"Reinitialize session","/doctor":"Check health status","/memory":"View/edit memory","/model":"View/switch model","/review":"Code review","/mcp":"MCP server status","/skills":"List available skills","/btw":"Side question (no history)","/insights":"Session insights","/pr-comments":"PR comment review","/release-notes":"Generate release notes","/security-review":"Security review"},Vb=new Set(Object.keys(Xi)),Uf=Object.keys(Xi),Ji={"/low":"Use low reasoning effort for this turn","/medium":"Use medium reasoning effort for this turn","/high":"Use high reasoning effort for this turn","/xhigh":"Use extra-high reasoning effort for this turn","/max":"Use maximum reasoning effort for this turn"},Kf=Object.keys(Ji);Fb={skill:"Skills",builtin:"Built-in",project:"Commands"},jf={skill:0,project:1,builtin:2}});function Wb(e){return!(!e||typeof e!="string"||e.length<1||e.length>40||e.startsWith("_")||Nb.test(e)||Bb.has(e.toLowerCase()))}function to(e){if(!e||typeof e!="string")return{text:e||"",mentions:[]};let t=new Set;Zf.lastIndex=0;let s;for(;(s=Zf.exec(e))!==null;){let n=s[2];if(Wb(n)&&!t.has(n)&&(t.add(n),t.size>=qb))break}return{text:e,mentions:Array.from(t)}}var Bb,Zf,Nb,qb,Rl=N(()=>{Bb=new Set(["all","user","system","everyone"]),Zf=/(^|[\s\p{P}])@([A-Za-z0-9_-]{1,40})(?=$|[\s\p{P}])/gu,Nb=/^[0-9]+$/,qb=32});function Xf(e){let t=typeof e?.vpId=="string"?e.vpId:"";return _l.has(t)?_l.get(t):e?.isStock===!0?"other":"custom"}function qs(e){let t=new Map(so.map(s=>[s.id,[]]));for(let s of Array.isArray(e)?e:[])!s||typeof s.vpId!="string"||!s.vpId||t.get(Xf(s)).push(s);return so.map(s=>({id:s.id,labelKey:s.labelKey,vps:t.get(s.id)})).filter(s=>s.vps.length>0)}function _r(e){return qs(e).flatMap(t=>t.vps)}function Jf(e){let t=new Map(so.map(r=>[r.id,r])),s=new Map,n=[];for(let r of Array.isArray(e)?e:[]){if(!r||typeof r.vpId!="string"||!r.vpId)continue;let i=Xf(r),o=n[n.length-1];if(o&&o.id===i){o.vps.push(r);continue}let a=(s.get(i)||0)+1;s.set(i,a),n.push({id:i,key:`${i}-${a}`,labelKey:t.get(i).labelKey,vps:[r]})}return n}var jb,so,_l,Er=N(()=>{jb=[{id:"general",labelKey:"yeaft.vp.domain.general",vpIds:["omni"]},{id:"productDesign",labelKey:"yeaft.vp.domain.productDesign",vpIds:["steve","dieter","norman"]},{id:"softwareSystems",labelKey:"yeaft.vp.domain.softwareSystems",vpIds:["linus","martin","anders","ada","grace","ken","alan"]},{id:"securityReliability",labelKey:"yeaft.vp.domain.securityReliability",vpIds:["alice","margaret"]},{id:"scienceAnalysis",labelKey:"yeaft.vp.domain.scienceAnalysis",vpIds:["shannon","einstein"]},{id:"philosophyPsychology",labelKey:"yeaft.vp.domain.philosophyPsychology",vpIds:["kongzi","socrates","nietzsche","kahneman","jung"]},{id:"strategyHistory",labelKey:"yeaft.vp.domain.strategyHistory",vpIds:["sunzi","clausewitz","simaqian","harari"]},{id:"businessManagement",labelKey:"yeaft.vp.domain.businessManagement",vpIds:["buffett","munger","dalio","bezos","drucker"]},{id:"artsCulture",labelKey:"yeaft.vp.domain.artsCulture",vpIds:["luxun","sudongpo","borges","kubrick","miyazaki"]},{id:"other",labelKey:"yeaft.vp.domain.other",vpIds:[]},{id:"custom",labelKey:"yeaft.vp.domain.custom",vpIds:[]}],so=Object.freeze(jb.map(e=>Object.freeze({id:e.id,labelKey:e.labelKey,vpIds:Object.freeze([...e.vpIds])}))),_l=new Map;for(let e of so)for(let t of e.vpIds)_l.set(t,e.id)});function El(e,t){let s=Array.isArray(e)?e:[],n=typeof t=="string"?t.toLowerCase():"";if(!n){let c=s.filter(d=>d&&d.vpId&&d.vpId!=="user");return _r(c).slice(0,eg)}let r=[],i=[],o=[],a=new Set,l=(c,d)=>{a.has(c.vpId)||(a.add(c.vpId),d.push(c))};for(let c of s){if(!c||!c.vpId||c.vpId==="user")continue;if(String(c.vpId).toLowerCase().startsWith(n)){l(c,r);continue}let u=Array.isArray(c.aliases)?c.aliases:[],f=!1;for(let I of u){let h=String(I||"").toLowerCase();if(h&&h.startsWith(n)){f=!0;break}}if(f){l(c,i);continue}let p=String(c.displayName||"").toLowerCase(),g=String(c.displayNameZh||""),m=[c.description,c.descriptionZh,c.role,c.roleZh].map(I=>String(I||"").toLowerCase()),v=typeof t=="string"?t:"",k=p.includes(n)||v&&g.includes(v),w=n&&m.some(I=>I.includes(n));(k||w)&&l(c,o)}return[..._r(r),..._r(i),..._r(o)].slice(0,eg)}function Dl(e="chat-input"){return`${e}-vp-mention-listbox`}function Ll(e,t){let s=String(t||"").replace(/[^A-Za-z0-9_.:-]/g,"-");return`${e}-vp-mention-option-${s}`}function Ub(e){let t=0;return Jf(e).map(s=>({...s,items:s.vps.map(n=>({vp:n,flatIndex:t++}))}))}function tg(e,t){let s=Array.isArray(e)?e:[];if(!t)return s;let n=Array.isArray(t.roster)?t.roster:[];if(n.length===0)return[];let r=new Set(n);return s.filter(i=>i&&i.vpId&&r.has(i.vpId))}function sg(e,t){if(typeof e!="string"||!t)return e;let s=e.lastIndexOf("@");if(s<0)return e;let n=s+1;for(;n<e.length&&!/[\s]/.test(e[n]);)n++;return e.slice(0,s)+"@"+t+" "+e.slice(n)}var eg,ng,rg=N(()=>{Er();eg=12;ng={name:"VpMentionAutocomplete",emits:["select","hover-index"],props:{vps:{type:Array,default:()=>[]},query:{type:String,default:""},selectedIndex:{type:Number,default:0},inputId:{type:String,required:!0}},template:`
1691
+ `,emits:["new-conversation","resume-conversation","open-settings","quote-message","edit-message-as-new"],setup(e,{expose:t}){let s=Pinia.useChatStore(),n=De(),r=typeof window<"u"&&window.Pinia?.useVpStore?window.Pinia.useVpStore():null,i=Vue.inject("t",null),o=Vue.ref(null),a=Vue.ref(null),l=Vue.reactive({}),c=Vue.reactive({}),d=Vue.reactive({}),u=S=>String(S?.id||S?.turnId||S?.messageId||S?.atMessageId||S?.message?.id||"turn_unknown"),f=S=>{let $=u(S);return Object.prototype.hasOwnProperty.call(l,$)?!!l[$]:!1},p=(S,$)=>{l[u(S)]=!!$},g=S=>{let $=S&&(S.turnId||S.id);!$||typeof s.openYeaftTurnDebug!="function"||s.openYeaftTurnDebug({sessionId:V.value||null,turnId:$})},m=({key:S,value:$}={})=>{S&&(c[S]=!!$)},v=S=>{let $=Ff(S,ps);return Number.isFinite($)?$:ps(S)},k=S=>Qi(S),w=S=>{let $=Array.isArray(S?.collapsedResponsePreview)?S.collapsedResponsePreview:Of(S);return Array.isArray($)?$:$?[String($)]:[]},I=S=>{let $=Array.isArray(S?.items)?S.items.find(se=>Rr(se)):null,W=$?.speakerVpId||$?.vpId||$?.message?.speakerVpId||$?.message?.vpId||S?.vpId||"",oe=W&&r&&typeof r.vpLabel=="function"?r.vpLabel(W)||W:W||(typeof i=="function"?i("message.assistant"):"Assistant"),we=W&&r&&typeof r.vpTextColor=="function"?{color:r.vpTextColor(W)}:{},ue=$?.speakerTimestamp||$?.timestamp||$?.createdAt||$?.message?.timestamp||$?.message?.createdAt||0,Oe="",Se="";if(ue)try{let se=new Date(ue);Number.isNaN(se.getTime())||(Oe=Rt(ue),Se=se.toLocaleString())}catch{}return{name:oe,style:we,timeText:Oe,fullTimeText:Se}},h=S=>{let $=Array.isArray(S?.items)?S.items:[];for(let W=$.length-1;W>=0;W-=1)if(Rr($[W]))return $[W];return null},y=(S,$)=>!S?.responseCollapsible||!$?!1:h(S)===$,b=S=>!!(S?.responseCollapsible&&!Qi(S).some($=>y(S,$))),M=S=>{let $=S?.responseCollapseKey;$&&(d[$]=!S.responseCollapsed)},x=S=>{let $=Number(S?.responseCount||0),W=S?.responseCollapsed?"message.showResponses":"message.hideResponses",oe=(typeof i=="function"?i(W):"")||(S?.responseCollapsed?"Show {count} response(s)":"Hide response(s)");return String(oe).replace("{count}",String($))},D=(()=>{try{return window.Pinia?.useSessionsStore?.()||null}catch{return null}}),V=Vue.computed(()=>{if(s.currentView!=="yeaft")return null;let S=D();if(!S)return null;let $=s.yeaftActiveSessionFilter||null;return $&&typeof S.sessionById=="function"&&S.sessionById($,s.currentAgent||null)?$:S.activeSessionId&&typeof S.sessionById=="function"&&S.sessionById(S.activeSessionId,s.currentAgent||null)?S.activeSessionId:null}),E=Vue.computed(()=>{let S=s.currentView||"",$=s.currentAgent||"";if(S==="yeaft"){let W=s.yeaftActiveSessionFilter||V.value||"__all__";return[S,$,W].join("")}return[S,$,s.activeConversationId||""].join("")}),_=Vue.computed(()=>V.value!==null),T=Vue.computed(()=>s.agents.filter(S=>S.online)),A=Vue.ref(null),R=Vue.ref(null),j=Vue.ref(!1),F=Vue.ref(""),z=null,ee=0,fe=n.token||"",ce=()=>{A.value=null,R.value=null,F.value="",z=null,ee+=1},ve=Oi(),ge=Fi(),pe=Vue.computed(()=>Bi({profile:A.value,agentSecret:R.value,serverWsUrl:Cr(location)})),P=()=>{let S={"Content-Type":"application/json"};return n.token&&(S.Authorization=`Bearer ${n.token}`),S},U=async()=>{if(T.value.length>0||s.currentConversation)return;if(R.value||z)return z;j.value=!0,F.value="";let S=++ee;return z=(async()=>{let $=n.token||"",W=P(),[oe,we]=await Promise.all([fetch("/api/user/profile",{headers:W}),fetch("/api/user/agent-secret",{headers:W})]),ue=oe.ok?await oe.json():null;if(S!==ee||$!==(n.token||""))return;if(ue&&(A.value=ue),!we.ok){let se="";try{se=(await we.json())?.error||""}catch{}throw new Error(se||"Failed to load Agent secret")}let Oe=await we.json();if(S!==ee||$!==(n.token||""))return;let Se=Oe?.agentSecret||Oe?.agent_secret||null;R.value=Se&&String(Se).trim()?String(Se):null})().catch($=>{S===ee&&(F.value=$?.message||"Failed to load Agent secret")}).finally(()=>{S===ee&&(j.value=!1,z=null)}),z},re=async S=>{if(S)try{await navigator.clipboard.writeText(S)}catch{}},me=new WeakMap,Me=0,K=(S,$)=>{let W=S?.message&&typeof S.message=="object"?S.message:Array.isArray(S?.messages)&&S.messages[0]&&typeof S.messages[0]=="object"?S.messages[0]:$&&typeof $=="object"?$:S&&typeof S=="object"?S:null;if(!W)return`legacy_render_${++Me}`;let oe=me.get(W);return oe||(oe=`legacy_render_${++Me}`,me.set(W,oe)),oe},q=S=>{let $=S?.message||S||null;return S?.entryId||S?.uiKey||S?.stableKey||$?.entryId||$?.uiKey||$?.stableKey||S?.atMessageId||S?.messageId||$?.messageId||S?.id||$?.id||K(S,$)},B=S=>encodeURIComponent(String(S||"legacy")),O=S=>{let $=S?.message||null,W=q(S),oe=S?.id||S?.atMessageId||$?.id||$?.messageId||W,we=S?.speakerVpId||S?.vpId||$?.speakerVpId||$?.vpId||"";return{id:`message_${B(W)}`,uiKey:W,vpId:we,messageId:oe}},L=Vue.computed(()=>{let S=s.currentView==="yeaft"?Lf(s.messages):s.messages,$=[],W=null,oe=()=>{if(W){W.isActive=!!(W.turnId&&Object.values(s.activeVpTurns||{}).some(yt=>((yt?.turnId||null)===W.turnId||!yt?.turnId&&s.activeVpTurns?.[W.turnId]===yt)&&(!s.currentAgent||!yt?.agentId||yt.agentId===s.currentAgent))),Ii(W);let Se=!!(W.textContent||W.todoMsg||W.askMsg||W.imageMsgs.length>0),se=W.toolMsgs.length>0||W.toolSummaryCount>0;(Se||se)&&(W.showSpeakerHeader=!!W.speakerVpId,$.push(W)),W=null}},we=Se=>{if(W){if(!W.speakerVpId){let se=Se.speakerVpId||Se.vpId;se&&(W.speakerVpId=se,W.speakerTimestamp=typeof Se.timestamp=="number"&&Se.timestamp>0?Se.timestamp:typeof Se.createdAt=="number"?Se.createdAt:0,typeof Se.lastStateChangeCause=="string"&&!W.speakerStateCause&&(W.speakerStateCause=Se.lastStateChangeCause))}!W.turnId&&Se.turnId&&(W.turnId=Se.turnId)}},ue=(Se=null)=>{let se=q(Se);W={type:"assistant-turn",id:`response_${B(se)}`,uiKey:se,...Se?.entryId?{entryId:Se.entryId}:{},textContent:"",textSegments:[],isStreaming:!1,isActive:!1,isHistory:!1,todoMsg:null,toolMsgs:[],toolSummaryCount:0,imageMsgs:[],askMsg:null,messages:[],atMessageId:null,speakerVpId:null,speakerTimestamp:0,speakerStateCause:"",showSpeakerHeader:!1,turnId:null}},Oe=Se=>{$f(W,Se)&&oe()};for(let Se=0;Se<S.length;Se++){let se=S[Se];if(se.type==="user"){if(!se.content||!se.content.trim())continue;oe(),$.push({type:"user",id:q(se),message:se});continue}if(se.type==="system"||se.type==="error"){oe(),$.push({type:se.type,id:q(se),message:se});continue}if(!(se.type==="tool-result"||se.type==="tool_result")){if(se.type==="tool-summary"){Oe(se),W||ue(se),we(se),se.isHistory&&(W.isHistory=!0),W.toolSummaryCount+=Number(se.count||se.omittedCount||0)||0,W.messages.push(se);continue}if(se.type==="assistant"){Oe(se),W||ue(se),Si(W,se),se.isStreaming&&(W.isStreaming=!0),se.isHistory&&(W.isHistory=!0),se.id&&/^m\d+$/.test(se.id)&&(W.atMessageId=se.id),we(se),W.messages.push(se);continue}if(se.type==="tool-use"){Oe(se),W||ue(se),we(se);let yt=S[Se+1],Xr=yt&&(yt.type==="tool-result"||yt.type==="tool_result"),On={...se,hasResult:Xr||se.hasResult||!1,toolResult:se.toolResult||null};se.isHistory&&(W.isHistory=!0),se.toolName==="TodoWrite"?W.todoMsg=On:se.toolName==="AskUserQuestion"?W.askMsg=On:W.toolMsgs.push(On),W.messages.push(se);continue}if(se.type==="chat-image"){Oe(se),W||ue(se),we(se),se.isHistory&&(W.isHistory=!0),W.imageMsgs.push(se),W.messages.push(se);continue}oe(),$.push({type:se.type||"unknown",id:q(se),message:se})}}return oe(),$}),X=Vue.computed(()=>{let S=[],$=null,W=()=>{$&&S.push($),$=null};return L.value.forEach(oe=>{if(!oe||oe.type==="system"||oe.type==="error"){W(),S.push(oe);return}let we=O(oe);if(oe.type==="user"||!$){W(),$={type:"message-block",id:`block_${B(we.uiKey)}`,uiKey:we.uiKey,vpId:we.vpId,messageId:we.messageId,items:[oe]};return}$.items.push(oe),!$.vpId&&we.vpId&&($.vpId=we.vpId)}),W(),S}),ne=Vue.computed(()=>{let S=s.yeaftReflectionCards||{},$=s.yeaftConversationId,W={__orphans:[]},oe=Object.values(S).filter(ue=>ue&&ue.conversationId===$).sort((ue,Oe)=>(ue.anchorOrder||0)-(Oe.anchorOrder||0)||(ue.updatedAt||0)-(Oe.updatedAt||0)),we=new Set;for(let ue of s.messages||[])ue&&ue.id&&we.add(ue.id);for(let ue of oe)ue.anchorMsgId&&we.has(ue.anchorMsgId)?(W[ue.anchorMsgId]||(W[ue.anchorMsgId]=[]),W[ue.anchorMsgId].push(ue)):W.__orphans.push(ue);return W}),ke=S=>S?S.type==="assistant-turn"?S.atMessageId||null:S.message&&S.message.id||null:null,Y=S=>{let $=ke(S);return $?(ne.value||{})[$]||[]:[]},te=Vue.computed(()=>(ne.value||{}).__orphans||[]),ye=Vue.computed(()=>{let S=s.yeaftSubAgentCards||{},$=s.yeaftConversationId,W={__orphans:[]},oe=Object.values(S).filter(ue=>ue&&ue.conversationId===$).sort((ue,Oe)=>(ue.anchorOrder||0)-(Oe.anchorOrder||0)||(ue.updatedAt||0)-(Oe.updatedAt||0)),we=new Set;for(let ue of s.messages||[])ue&&ue.id&&we.add(ue.id);for(let ue of oe)ue.anchorMsgId&&we.has(ue.anchorMsgId)?(W[ue.anchorMsgId]||(W[ue.anchorMsgId]=[]),W[ue.anchorMsgId].push(ue)):W.__orphans.push(ue);return W}),ae=S=>{let $=ke(S);return $?(ye.value||{})[$]||[]:[]},$e=Vue.computed(()=>(ye.value||{}).__orphans||[]),Ae=Vue.ref(!0),xe=Vue.ref(!1),qe=Kt.bottomThreshold,Xe=Kt.resumeBottomThreshold,ht=!0,Gt=Vue.computed(()=>s.messages.some(S=>S.isStreaming)),Ks=Vue.computed(()=>!s.activeConversationId||X.value.length>0?!1:s.currentView==="yeaft"?!!s.yeaftInitialHistoryLoading:!!s.sessionLoading),Qt=Vue.computed(()=>s.currentView==="yeaft"&&!!s.yeaftLoadingMoreHistory&&s.activeYeaftHistoryState?.mode==="older"),Lt=Vue.computed(()=>s.currentView==="yeaft"?"":s.sessionLoadingText||""),Xt=Vue.computed(()=>!!s.sessionLoading&&!Ks.value),it=Vue.computed(()=>s.isProcessing&&!Gt.value),Zt=Vue.ref(Date.now()),$t=null,H=()=>{$t||($t=setInterval(()=>{Zt.value=Date.now()},1e3))},Z=()=>{$t&&(clearInterval($t),$t=null)};Vue.watch(Gt,S=>{S?(Zt.value=Date.now(),H()):Z()},{immediate:!0}),Vue.onBeforeUnmount(()=>Z());let le=Vue.ref(0),de=Vue.ref(Date.now()),Ie=null,Te=null,We=Vue.ref("cat"),Ze=new URLSearchParams(window.location.search).get("preview"),Je=Vue.ref(0),ot=Vue.ref(1),Be=Vue.ref(5),je=Vue.ref(95),Ne=Vue.ref("bark-both"),Ke=Vue.ref(1),ze=Vue.ref(-1),at=null;function Dn(){if(!le.value)return;de.value=Date.now();let S=(de.value-le.value)%19e3;if(S<4e3)Je.value=0,ot.value=1;else if(S<11500){let $=S-4e3,W;$<2500?W=$/2500*16:$<5e3?W=16+($-2500)/2500*29:W=45+($-5e3)/2500*55,Je.value=W,ot.value=1}else S<14e3?(Je.value=(1-(S-11500)/2500)*100,ot.value=-1):(Je.value=0,ot.value=1);Te=requestAnimationFrame(Dn)}function Ln(){if(!le.value||We.value!=="dog")return;de.value=Date.now();let S=(de.value-le.value)%18e3;if(S<2e3)Be.value=5,je.value=95,Ne.value="bark-both",Ke.value=1,ze.value=-1;else if(S<5e3){let $=(S-2e3)/3e3;Be.value=5+$*25,je.value=95,Ne.value="left-approach",Ke.value=1,ze.value=-1}else if(S<8e3){let $=(S-5e3)/3e3;Be.value=30,je.value=95-$*25,Ne.value="right-approach",Ke.value=1,ze.value=-1}else if(S<1e4){let $=(S-8e3)/2e3;Be.value=30+$*13,je.value=70-$*13,Ne.value="both-approach",Ke.value=1,ze.value=-1}else if(S<11e3)Be.value=43,je.value=57,Ne.value="snap",Ke.value=1,ze.value=-1;else if(S<12500)Be.value=43,je.value=57,Ne.value="stunned",Ke.value=1,ze.value=-1;else if(S<15e3){let $=(S-12500)/2500;Be.value=43-$*38,je.value=57+$*38,Ne.value="retreat",Ke.value=-1,ze.value=1}else S<17e3?(Be.value=5,je.value=95,Ne.value="rehang",Ke.value=-1,ze.value=1):(Be.value=5,je.value=95,Ne.value="reset",Ke.value=1,ze.value=-1);at=requestAnimationFrame(Ln)}let Ro=Vue.computed(()=>{let S=Be.value*1.2;return Ke.value<0?`translate(${S+13.5}, 0) scale(-1, 1)`:`translate(${S-13.5}, 0)`}),_o=Vue.computed(()=>{let S=je.value*1.2;return ze.value>0?`translate(${S-10.5}, 2)`:`translate(${S+10.5}, 2) scale(-1, 1)`}),Fr=Vue.computed(()=>{let S=Ne.value;return S==="bark-both"||S==="left-approach"||S==="right-approach"||S==="both-approach"||S==="reset"}),Eo=Vue.computed(()=>{let S=Be.value*1.2,$=10;if(Fr.value){let we=Math.max(0,(S-3)*.12);return`M3,18 Q${(3+S)/2},${18+we} ${S},${$}`}if(Ne.value==="rehang")return`M${S},${$} Q${S-3},20 3,18`;let W=Ke.value<0?1:-1,oe=S+W*8;return`M${S},${$} Q${S},18 ${oe},22`}),Do=Vue.computed(()=>{let S=je.value*1.2,$=10;if(Fr.value){let we=Math.max(0,(118-S)*.12);return`M118,18 Q${(118+S)/2},${18+we} ${S},${$}`}if(Ne.value==="rehang")return`M${S},${$} Q${S+3},20 118,18`;let W=ze.value>0?-1:1,oe=S+W*8;return`M${S},${$} Q${S},18 ${oe},22`}),Lo=Vue.computed(()=>Ne.value==="snap"?.2:.4),$o=Vue.computed(()=>Ne.value==="snap"?.2:.4),Vo=Vue.computed(()=>Be.value*1.2),Ho=Vue.computed(()=>je.value*1.2),$n=Ze==="cat"||Ze==="dog"||Ze==="animation",Br=600,Ue=Vue.ref(!1),et=null,Nr=Vue.computed(()=>$n?!0:Ue.value);Vue.watch(it,S=>{if(S)et&&(clearTimeout(et),et=null),Ue.value=!0,le.value=Date.now(),de.value=Date.now(),We.value="cat",Je.value=0,ot.value=1,Be.value=5,je.value=95,Ne.value="bark-both",Ke.value=1,ze.value=-1,We.value==="cat"?Te=requestAnimationFrame(Dn):at=requestAnimationFrame(Ln);else{let $=le.value?Date.now()-le.value:Br,W=Math.max(0,Br-$),oe=()=>{et=null,Ue.value=!1,le.value=0,Je.value=0,ot.value=1,Te&&(cancelAnimationFrame(Te),Te=null),at&&(cancelAnimationFrame(at),at=null)};W===0?oe():(et&&clearTimeout(et),et=setTimeout(oe,W))}},{immediate:!0}),$n&&(le.value=Date.now(),de.value=Date.now(),Ze==="dog"?We.value="dog":We.value="cat",We.value==="cat"?Te=requestAnimationFrame(Dn):(Be.value=5,je.value=95,Ne.value="bark-both",Ke.value=1,ze.value=-1,at=requestAnimationFrame(Ln)));let Oo=Vue.computed(()=>{if(!s.isProcessing)return null;if(s.connectionState!=="connected")return"disconnected";let S=s.currentConversation;if(s.compactStatus?.conversationId===S&&s.compactStatus?.status==="compacting")return"compacting";let $=s.sessionHealth?.[S];return $?$.status:le.value&&de.value-le.value>8e3?"thinking":null}),Fo=Vue.computed(()=>{if(!le.value)return"speed-napping";let S=(de.value-le.value)%19e3;return S>=16e3?"speed-petted":S>=14e3?"speed-tired":S>=11500?"speed-crazy":S>=9e3?"speed-turbo":S>=6500?"speed-fast":S>=4e3?"speed-normal":"speed-napping"}),hs=Vue.computed(()=>{let S=Je.value,$=ot.value,oe={left:`calc(40px + (100% - 80px) * ${S/100})`};return $<0&&(oe.transform="scaleX(-1)"),oe});function vs(){let S=s.currentConversation;if(!S)return;let $=s.conversations.find(W=>W.id===S);s.sendWsMessage({type:"refresh_conversation",conversationId:S,agentId:$?.agentId})}let Bo=()=>{if(!o.value)return!0;let{scrollTop:S,scrollHeight:$,clientHeight:W}=o.value;return Ns({scrollTop:S,scrollHeight:$,clientHeight:W,threshold:qe})},zs=(S,$=0,{allowContinuation:W=!1}={})=>{if(S>Af($)){ht=!0;return}W&&(ht=!0),!(!ht||!Ur())&&(ht=!1,Hn())},qr=S=>{if(!S)return"";let W=(Array.isArray(S.items)?S.items:[])[0]||null;return[S.type||"",S.messageId||"",S.turnId||"",S.vpId||"",W?.id||"",W?.turnId||"",W?.messageId||""].join(":")},Wr=()=>{let S=X.value||[];return{blockCount:S.length,firstBlockIdentity:qr(S[0])}},jr=(S,$)=>!S||!$?!1:$.blockCount>S.blockCount||$.firstBlockIdentity!==S.firstBlockIdentity,Ys=S=>{Vue.nextTick(()=>{if(!o.value)return;let $=Wr();jr(S,$)&&zs(o.value.scrollTop||0,o.value.clientHeight||0,{allowContinuation:!0})})},pc=({scrollTop:S,scrollHeight:$,clientHeight:W})=>{let oe=Ns({scrollTop:S,scrollHeight:$,clientHeight:W,threshold:qe});return Ae.value=oe,xe.value=!oe,oe},lt=()=>{xe.value=!1,Ae.value=!0,a.value?.setBottomFollowEnabled?.(!0)},Gs=()=>{xe.value=!0,Ae.value=!1,a.value?.setBottomFollowEnabled?.(!1),a.value?.cancelPendingBottomFollow?.()},No=({scrollTop:S,scrollHeight:$,clientHeight:W})=>{let oe=Ns({scrollTop:S||0,scrollHeight:$||0,clientHeight:W||0,threshold:qe});Ae.value=xf({following:!xe.value,atBottom:oe}),xe.value=!Ae.value,a.value?.setBottomFollowEnabled?.(Ae.value),Vt||(ys=Number(S||0)),zs(S||0,W||0)},qo=(S,$)=>{let W=Wr();if(!o.value){S(),Ys(W);return}let oe=o.value.scrollHeight,we=o.value.scrollTop,ue=!1,Oe=null,Se=()=>{ue||(ue=!0,Oe&&Oe(),Vue.nextTick(()=>{if(!o.value)return;let se=o.value.scrollHeight;o.value.scrollTop=se-oe+we,Ys(W)}))};$&&(Oe=Vue.watch($,se=>{se||Se()})),S(),Vue.nextTick(()=>{(!$||!$())&&Se()})},Vn=()=>{if(s.hasHiddenYeaftMessages){s.expandYeaftMessageWindow();return}s.loadMoreYeaftHistory()},Ur=()=>s.currentView==="yeaft"?s.hasHiddenYeaftMessages||s.yeaftHasMoreHistory&&!s.yeaftLoadingMoreHistory&&s.yeaftOldestLoadedSeq!=null:!!s.currentConversation&&s.hasMoreMessages&&!s.loadingMoreMessages,Hn=()=>{if(!Ur())return;let S=s.currentView==="yeaft";qo(S?Vn:()=>s.loadMoreMessages(),S?()=>s.yeaftLoadingMoreHistory:()=>s.loadingMoreMessages)},Vt=!1,Qs=!1,vt=null,ys=0,Wo=250,Kr=()=>{Vt=!1,vt&&(clearTimeout(vt),vt=null)},Xs=()=>{Qs||(vt&&clearTimeout(vt),vt=setTimeout(Kr,Wo))},Zs=S=>{Vt=!0,a.value?.clearTargetAnchor?.(),ys=Number(o.value?.scrollTop||0),Number(S?.deltaY)<0&&Gs(),Xs()},zr=S=>{Mf(S,o.value)&&(Qs=!0,Vt=!0,a.value?.clearTargetAnchor?.(),ys=Number(o.value?.scrollTop||0),vt&&(clearTimeout(vt),vt=null))},Js=()=>{Qs=!1,Xs()},Jt=S=>{Pf(S,o.value)&&((S.key==="ArrowUp"||S.key==="PageUp"||S.key==="Home")&&Gs(),Vt=!0,a.value?.clearTargetAnchor?.(),Xs())},es=()=>{let S=Number(o.value?.scrollTop||0),$=Vt?S-ys:0,W=!xe.value;ys=S;let oe=Bo(),we=Ns({scrollTop:S,scrollHeight:o.value?.scrollHeight||0,clientHeight:o.value?.clientHeight||0,threshold:Xe});Ae.value=Tf({following:W,atBottom:oe,resumeBoundaryReached:we,direction:$}),xe.value=!Ae.value,a.value?.setBottomFollowEnabled?.(Ae.value),Vt&&Xs(),o.value&&zs(o.value.scrollTop||0,o.value.clientHeight||0)},en=()=>{o.value&&(o.value.scrollTop=o.value.scrollHeight,lt())},jo=()=>{lt(),Vue.nextTick(en)},Yr=()=>{!xe.value&&Ae.value&&Vue.nextTick(en)},Gr=S=>{if(!S)return"";if(Array.isArray(S.items))return S.items.map(Gr).join(",");let $=S.message||{};return[S.type||"",S.id||"",S.atMessageId||"",S.turnId||"",S.messageId||"",S.speakerVpId||"",$.id||"",$.content?String($.content).length:0,S.textContent?String(S.textContent).length:0,S.isStreaming||$.isStreaming?"streaming":"done"].join(":")},Uo=Vue.computed(()=>{let S=X.value||[];return[s.activeConversationId||"",V.value||"",Gr(S[S.length-1])].join("|")});Vue.watch(()=>[s.currentConversation,T.value.length,n.token],()=>{let S=n.token||"";S!==fe&&(fe=S,ce()),U()},{immediate:!0}),Vue.watch(Uo,Yr),Vue.watch(Nr,S=>{S&&Yr()}),Vue.watch(()=>[s.activeConversationId,V.value],()=>{for(let S of Object.keys(l))delete l[S];for(let S of Object.keys(c))delete c[S];for(let S of Object.keys(d))delete d[S];lt(),Vue.nextTick(en)});let bs=Vue.ref(null),Qr=0;return t({revealMessage:async S=>S?(Gs(),await Wf({blocks:X.value,target:S,collapseStates:d,nextTick:Vue.nextTick,scrollToBlock:(W,oe)=>(Gs(),a.value?.scrollToKey?.(W,oe)),findRow:W=>{let oe=o.value?.querySelectorAll?.("[data-msg-id]")||[];return Array.from(oe).find(we=>we?.dataset?.msgId===W)||null},anchorRow:(W,oe,we,ue)=>a.value?.anchorTarget?.(W,we,ue),flashRow:W=>{let oe=++Qr;bs.value=W,setTimeout(()=>{oe===Qr&&(bs.value=null)},1800)}})):!1}),Vue.onMounted(()=>{en(),o.value&&(o.value.addEventListener("wheel",Zs,{passive:!0}),o.value.addEventListener("touchmove",Zs,{passive:!0}),o.value.addEventListener("pointerdown",zr,{passive:!0}),o.value.addEventListener("scroll",es)),window.addEventListener("pointerup",Js,{passive:!0}),window.addEventListener("pointercancel",Js,{passive:!0}),window.addEventListener("keydown",Jt)}),Vue.onUnmounted(()=>{o.value&&(o.value.removeEventListener("wheel",Zs),o.value.removeEventListener("touchmove",Zs),o.value.removeEventListener("pointerdown",zr),o.value.removeEventListener("scroll",es)),window.removeEventListener("pointerup",Js),window.removeEventListener("pointercancel",Js),window.removeEventListener("keydown",Jt),Kr(),Ie&&(clearInterval(Ie),Ie=null),et&&(clearTimeout(et),et=null),Te&&(cancelAnimationFrame(Te),Te=null),at&&(cancelAnimationFrame(at),at=null)}),{store:s,containerRef:o,virtualTranscriptRef:a,flashMsgId:bs,hasStreamingMessage:Gt,nowMs:Zt,showTypingDots:it,showInitialMessagesLoading:Ks,showYeaftOlderHistoryLoading:Qt,showSessionLoadingOverlay:Xt,initialMessagesLoadingText:Lt,previewShowTypingDots:Nr,isPreviewMode:$n,waitingStatus:Oo,animationType:We,catSpeed:Fo,catStyle:hs,dogPhase:Ne,spikeTransform:Ro,teddyTransform:_o,leashPathL:Eo,leashPathR:Do,leashOpacityL:Lo,leashOpacityR:$o,questionLX:Vo,questionRX:Ho,refreshSession:vs,onlineAgents:T,welcomeInstallCommand:ve,welcomeLlmCommand:ge,welcomeServiceCommand:pe,welcomeSetupLoading:j,welcomeSetupError:F,copyWelcomeCommand:re,turnGroups:L,messageBlocks:X,virtualTranscriptIdentity:E,estimateMessageBlockHeight:v,visibleItemsForBlock:k,collapsedResponsePreviewLines:w,collapsedResponsePreviewSpeaker:I,responseToggleBelongsToItem:y,showBlockResponseToggle:b,toggleMessageTurnResponse:M,responseCollapseLabel:x,turnUiKey:u,assistantTurnActionsExpandedFor:f,setAssistantTurnActionsExpanded:p,onOpenTurnDebug:g,toolExpandStates:c,setToolExpanded:m,cardsForRow:Y,orphanCards:te,subAgentCardsForRow:ae,orphanSubAgentCards:$e,useImStyleForUser:_,onClickLoadMore:Hn,onVirtualTranscriptScrollState:No,isAtBottom:Ae,scrollToLatest:jo}}}});function eo(...e){let t=[];for(let s of e)if(Array.isArray(s))for(let n of s)typeof n!="string"||!n||t.includes(n)||t.push(n);return t}function zf(e,t,s){let n=t?e?.slashCommandsMap?.[t]:null;return e?.currentView==="yeaft"?eo(n):eo(n,s?e?.slashCommandsMap?.[`agent:${s}`]:null,e?.slashCommandsMap?.__preload__)}function Hb(e,t={},s=new Set){if(Vb.has(e)||Object.prototype.hasOwnProperty.call(Ji,e))return"builtin";let n=e.startsWith("/")?e.slice(1):e;return n.startsWith("skill:")||n.startsWith("yeaft-skills:")||s.has(n)&&Object.prototype.hasOwnProperty.call(t||{},n)?"skill":"project"}function Yf(e,t={}){if(Zi[e])return Zi[e];if(Ji[e])return Ji[e];let s=e.startsWith("/")?e.slice(1):e;return t[s]?t[s]:Ob(s)}function Ob(e){return(e.includes(":")?e.split(":").pop():e).replace(/-/g," ").replace(/^\w/,s=>s.toUpperCase())}function Gf(e,t={},s=[]){if(e.length===0)return[];let n=new Set(s.filter(o=>typeof o=="string").map(o=>o.startsWith("/")?o.slice(1):o)),r={};e.forEach((o,a)=>{let l=Hb(o.cmd,o.descriptions||o.dynamicDescriptions||t,n);r[l]||(r[l]=[]),r[l].push({...o,flatIndex:a})});let i=Object.keys(r).sort((o,a)=>(jf[o]??99)-(jf[a]??99));return i.map((o,a)=>({label:Fb[o]||o,items:r[o],isLast:a===i.length-1}))}var Zi,Vb,Uf,Ji,Kf,Fb,jf,Qf=N(()=>{Zi={"/compact":"Compact context","/context":"Show context usage","/cost":"Show token costs","/init":"Reinitialize session","/doctor":"Check health status","/memory":"View/edit memory","/model":"View/switch model","/review":"Code review","/mcp":"MCP server status","/skills":"List available skills","/btw":"Side question (no history)","/insights":"Session insights","/pr-comments":"PR comment review","/release-notes":"Generate release notes","/security-review":"Security review"},Vb=new Set(Object.keys(Zi)),Uf=Object.keys(Zi),Ji={"/low":"Use low reasoning effort for this turn","/medium":"Use medium reasoning effort for this turn","/high":"Use high reasoning effort for this turn","/xhigh":"Use extra-high reasoning effort for this turn","/max":"Use maximum reasoning effort for this turn"},Kf=Object.keys(Ji);Fb={skill:"Skills",builtin:"Built-in",project:"Commands"},jf={skill:0,project:1,builtin:2}});function Wb(e){return!(!e||typeof e!="string"||e.length<1||e.length>40||e.startsWith("_")||Nb.test(e)||Bb.has(e.toLowerCase()))}function to(e){if(!e||typeof e!="string")return{text:e||"",mentions:[]};let t=new Set;Xf.lastIndex=0;let s;for(;(s=Xf.exec(e))!==null;){let n=s[2];if(Wb(n)&&!t.has(n)&&(t.add(n),t.size>=qb))break}return{text:e,mentions:Array.from(t)}}var Bb,Xf,Nb,qb,Rl=N(()=>{Bb=new Set(["all","user","system","everyone"]),Xf=/(^|[\s\p{P}])@([A-Za-z0-9_-]{1,40})(?=$|[\s\p{P}])/gu,Nb=/^[0-9]+$/,qb=32});function Zf(e){let t=typeof e?.vpId=="string"?e.vpId:"";return _l.has(t)?_l.get(t):e?.isStock===!0?"other":"custom"}function qs(e){let t=new Map(so.map(s=>[s.id,[]]));for(let s of Array.isArray(e)?e:[])!s||typeof s.vpId!="string"||!s.vpId||t.get(Zf(s)).push(s);return so.map(s=>({id:s.id,labelKey:s.labelKey,vps:t.get(s.id)})).filter(s=>s.vps.length>0)}function _r(e){return qs(e).flatMap(t=>t.vps)}function Jf(e){let t=new Map(so.map(r=>[r.id,r])),s=new Map,n=[];for(let r of Array.isArray(e)?e:[]){if(!r||typeof r.vpId!="string"||!r.vpId)continue;let i=Zf(r),o=n[n.length-1];if(o&&o.id===i){o.vps.push(r);continue}let a=(s.get(i)||0)+1;s.set(i,a),n.push({id:i,key:`${i}-${a}`,labelKey:t.get(i).labelKey,vps:[r]})}return n}var jb,so,_l,Er=N(()=>{jb=[{id:"general",labelKey:"yeaft.vp.domain.general",vpIds:["omni"]},{id:"productDesign",labelKey:"yeaft.vp.domain.productDesign",vpIds:["steve","dieter","norman"]},{id:"softwareSystems",labelKey:"yeaft.vp.domain.softwareSystems",vpIds:["linus","martin","anders","ada","grace","ken","alan"]},{id:"securityReliability",labelKey:"yeaft.vp.domain.securityReliability",vpIds:["alice","margaret"]},{id:"scienceAnalysis",labelKey:"yeaft.vp.domain.scienceAnalysis",vpIds:["shannon","einstein"]},{id:"philosophyPsychology",labelKey:"yeaft.vp.domain.philosophyPsychology",vpIds:["kongzi","socrates","nietzsche","kahneman","jung"]},{id:"strategyHistory",labelKey:"yeaft.vp.domain.strategyHistory",vpIds:["sunzi","clausewitz","simaqian","harari"]},{id:"businessManagement",labelKey:"yeaft.vp.domain.businessManagement",vpIds:["buffett","munger","dalio","bezos","drucker"]},{id:"artsCulture",labelKey:"yeaft.vp.domain.artsCulture",vpIds:["luxun","sudongpo","borges","kubrick","miyazaki"]},{id:"other",labelKey:"yeaft.vp.domain.other",vpIds:[]},{id:"custom",labelKey:"yeaft.vp.domain.custom",vpIds:[]}],so=Object.freeze(jb.map(e=>Object.freeze({id:e.id,labelKey:e.labelKey,vpIds:Object.freeze([...e.vpIds])}))),_l=new Map;for(let e of so)for(let t of e.vpIds)_l.set(t,e.id)});function El(e,t){let s=Array.isArray(e)?e:[],n=typeof t=="string"?t.toLowerCase():"";if(!n){let c=s.filter(d=>d&&d.vpId&&d.vpId!=="user");return _r(c).slice(0,eg)}let r=[],i=[],o=[],a=new Set,l=(c,d)=>{a.has(c.vpId)||(a.add(c.vpId),d.push(c))};for(let c of s){if(!c||!c.vpId||c.vpId==="user")continue;if(String(c.vpId).toLowerCase().startsWith(n)){l(c,r);continue}let u=Array.isArray(c.aliases)?c.aliases:[],f=!1;for(let I of u){let h=String(I||"").toLowerCase();if(h&&h.startsWith(n)){f=!0;break}}if(f){l(c,i);continue}let p=String(c.displayName||"").toLowerCase(),g=String(c.displayNameZh||""),m=[c.description,c.descriptionZh,c.role,c.roleZh].map(I=>String(I||"").toLowerCase()),v=typeof t=="string"?t:"",k=p.includes(n)||v&&g.includes(v),w=n&&m.some(I=>I.includes(n));(k||w)&&l(c,o)}return[..._r(r),..._r(i),..._r(o)].slice(0,eg)}function Dl(e="chat-input"){return`${e}-vp-mention-listbox`}function Ll(e,t){let s=String(t||"").replace(/[^A-Za-z0-9_.:-]/g,"-");return`${e}-vp-mention-option-${s}`}function Ub(e){let t=0;return Jf(e).map(s=>({...s,items:s.vps.map(n=>({vp:n,flatIndex:t++}))}))}function tg(e,t){let s=Array.isArray(e)?e:[];if(!t)return s;let n=Array.isArray(t.roster)?t.roster:[];if(n.length===0)return[];let r=new Set(n);return s.filter(i=>i&&i.vpId&&r.has(i.vpId))}function sg(e,t){if(typeof e!="string"||!t)return e;let s=e.lastIndexOf("@");if(s<0)return e;let n=s+1;for(;n<e.length&&!/[\s]/.test(e[n]);)n++;return e.slice(0,s)+"@"+t+" "+e.slice(n)}var eg,ng,rg=N(()=>{Er();eg=12;ng={name:"VpMentionAutocomplete",emits:["select","hover-index"],props:{vps:{type:Array,default:()=>[]},query:{type:String,default:""},selectedIndex:{type:Number,default:0},inputId:{type:String,required:!0}},template:`
1692
1692
  <div
1693
1693
  class="slash-autocomplete vp-mention-autocomplete"
1694
1694
  v-if="filteredList.length > 0"
@@ -1936,8 +1936,8 @@ ${String(e||"").trim()}
1936
1936
  </template>
1937
1937
  </MessageComposer>
1938
1938
  </footer>
1939
- `,setup(e,{emit:t}){let s=Pinia.useChatStore(),n=Pinia.useAuthStore(),r=Pinia.useVpStore(),i=Pinia.useSessionsStore?Pinia.useSessionsStore():null,o=Vue.ref(""),a=Vue.ref(null),l=Vue.computed(()=>a.value?.getTextarea?.()||null),d=`chat-input-${Vue.getCurrentInstance()?.uid??0}`,u=Vue.ref(null),f=Vue.ref([]),p=Vue.computed(()=>f.value.some(H=>H.uploading)),g=Vue.ref(null),m=Vue.ref(null),v=Vue.ref(null),k=Vue.computed(()=>!!e.sendFn),w=Vue.computed(()=>!s.btwMode),I=Vue.computed(()=>e.placeholderKey||"chatInput.placeholder"),h=Vue.computed(()=>e.showStop||!k.value&&s.isProcessing),y=Vue.computed({get:()=>s.expertSelections||[],set:H=>{s.expertSelections=H}}),b=Vue.ref(!1),M=Vue.ref(0),x=Vue.computed(()=>cu(s.customExpertRoles)),D=Vue.computed(()=>{let H=o.value,X=H.lastIndexOf("@");if(X===-1||!b.value)return[];let le=H.slice(X+1).toLowerCase();return x.value.filter(de=>le?de.searchText.includes(le):!0).filter(de=>!y.value.some(Ie=>Ie.role===de.roleId)).slice(0,12)}),V=H=>{if(y.value.length>=Vs)return;let X={role:H.roleId,action:H.actionId};s.expertSelections=[...y.value,X];let le=o.value,de=le.lastIndexOf("@");de!==-1&&(o.value=le.slice(0,de).trimEnd()),b.value=!1,Vue.nextTick(()=>l.value?.focus())},E=H=>{let X=[...y.value];X.splice(H,1),s.expertSelections=X},_=H=>$s(H,s.customExpertRoles),T=H=>H==="completed"?"\u2713":H==="in_progress"?"\u2192":"\u25CB",A=Vue.ref(!1),R=Vue.ref(0),j=()=>s.currentView==="yeaft"&&!!s.currentAgent,F=Vue.computed(()=>{let H=o.value,X=H.lastIndexOf("@");return X<0||!A.value?"":H.slice(X+1)}),z=Vue.computed(()=>{if(!i)return r.vpList||[];let H=s.yeaftActiveSessionFilter||i.activeSessionId||null,X=typeof i.sessionById=="function"?i.sessionById(H,s.currentAgent||null):i.sessions?.[H];return tg(r.vpList,X)}),ee=Vue.computed(()=>El(z.value,F.value)),fe=Vue.computed(()=>!s.btwMode&&A.value&&!b.value&&ee.value.length>0),ce=Dl(d),ve=Vue.computed(()=>{if(!fe.value)return null;let H=ee.value[R.value];return H?Ll(d,H.vpId):null}),ge=H=>{!H||!H.vpId||(o.value=sg(o.value,H.vpId),A.value=!1,R.value=0,Vue.nextTick(()=>l.value?.focus()))},pe=Vue.computed(()=>e.draftKey||e.conversationId||s.currentConversation||null);pe.value&&s.inputDrafts[pe.value]&&(o.value=s.inputDrafts[pe.value]),Vue.watch(o,H=>{let X=pe.value;X&&(H?s.inputDrafts[X]=H:delete s.inputDrafts[X])}),Vue.watch(ee,H=>{if(H.length===0){R.value=0;return}R.value>=H.length&&(R.value=H.length-1)}),Vue.watch(pe,(H,X)=>{X&&o.value&&(s.inputDrafts[X]=o.value),o.value=H&&s.inputDrafts[H]||""});let P=H=>{if(!H||typeof H!="string")return;let X=o.value||"",le=X.length>0&&!/\s$/.test(X),de=X+(le?" ":"")+"@"+H+" ";o.value=de,Vue.nextTick(()=>{let Ie=l.value;Ie&&(Ie.focus(),Ie.setSelectionRange(de.length,de.length),ne())})},U=Vue.ref(!1),re=Vue.ref(0),me=Vue.computed(()=>{let H=e.conversationId||s.activeConversationId||s.currentConversation,X=s.currentAgent,le=zf(s,H,X),de=s.currentView==="yeaft"?Kf:Uf;return eo(de,le).map(Te=>Te.startsWith("/")?Te:"/"+Te)}),Me=Vue.computed(()=>{let H=o.value.trim();if(!H.startsWith("/"))return[];let X=H.toLowerCase();return me.value.filter(le=>le.toLowerCase().startsWith(X)&&le.toLowerCase()!==X).map(le=>({cmd:le,desc:Yf(le,s.slashCommandDescriptions)}))}),K=Vue.computed(()=>Gf(Me.value,s.slashCommandDescriptions,me.value)),q=Vue.computed(()=>Me.value.map(H=>H.cmd)),B=Vue.computed(()=>e.conversationId||s.activeConversationId||s.currentConversation||null),O=Vue.computed(()=>s.compactStatus?.status==="compacting"&&s.compactStatus?.conversationId===B.value),L=H=>typeof H?.fileId=="string"&&H.fileId.trim().length>0,Z=Vue.computed(()=>{if(O.value)return!1;let H=!!o.value.trim(),X=f.value.length>0;if(k.value){let We=!p.value&&f.value.every(L);return(H||X)&&We}let le=y.value.length>0,de=y.value.some(We=>We.action),Ie=H||X||le&&(H||de),Te=!p.value&&f.value.every(L);return Ie&&s.currentAgent&&s.currentConversation&&Te}),ne=()=>a.value?.autoResize?.(),ke=()=>a.value?.resetTextareaSize?.(),Y=()=>{ne();let H=o.value.trim();H.startsWith("/")&&!H.includes(" ")?(U.value=!0,re.value=0,b.value=!1):U.value=!1;let X=o.value,le=X.lastIndexOf("@");if(le!==-1&&!U.value){let de=le>0?X[le-1]:" ";de===" "||de===`
1940
- `||le===0?j()?(A.value=!0,R.value=0,b.value=!1):(b.value=!0,M.value=0,A.value=!1):(b.value=!1,A.value=!1)}else le===-1&&(b.value=!1,A.value=!1)},te=H=>{o.value=H+" ",U.value=!1,Vue.nextTick(()=>{l.value?.focus()})},ye=()=>{setTimeout(()=>{U.value=!1,b.value=!1,A.value=!1},150)},ae=async H=>{let X=Array.from(H.target.files||[]);X.length>0&&await Gt(X),H.target.value="",Vue.nextTick(()=>{l.value?.focus()})},$e=async H=>{let X=H.clipboardData?.items;if(!X)return;let le=[];for(let de of X)if(de.kind==="file"){let Ie=de.getAsFile();Ie&&le.push(Ie)}le.length>0&&(H.preventDefault(),await Gt(le))},Ae=H=>{let X=String(H||"").toLowerCase();return X==="image/png"?".png":X==="image/jpeg"?".jpg":X==="image/gif"?".gif":X==="image/webp"?".webp":X==="image/svg+xml"?".svg":X==="text/plain"?".txt":X==="application/json"?".json":""},xe=(H,X)=>{let le=typeof H?.name=="string"?H.name.trim():"";return le||`${String(H?.type||"").startsWith("image/")?"pasted-image":"pasted-file"}-${Date.now()}-${X+1}${Ae(H?.type)}`},qe=1,Ze=H=>{let X=Number(H);return!Number.isFinite(X)||X<=0?"":X<1024?`${X} B`:X<1024*1024?`${Math.round(X/1024)} KB`:`${(X/(1024*1024)).toFixed(X<10*1024*1024?1:0)} MB`},ht=async H=>{for(let X of H)X.uploading=!0,X.uploadError=!1;try{let X=new FormData;for(let Xe of H)X.append("files",Xe.file,Xe.uploadName);let le={},de=n.getActiveToken?.()||n.token||null;de&&(le.Authorization=`Bearer ${de}`);let Ie=await fetch("/api/upload",{method:"POST",headers:le,body:X});if(!Ie.ok)throw new Error("Upload failed");let Te=await Ie.json(),We=Array.isArray(Te.files)?Te.files:[];for(let[Xe,Je]of H.entries()){let ot=We[Xe],Be=typeof ot?.fileId=="string"?ot.fileId.trim():"";if(!Be)throw new Error("Upload response is incomplete");Je.fileId=Be,Je.uploading=!1,delete Je.uploadName}}catch{for(let le of H)le.fileId||(le.uploading=!1,le.uploadError=!0)}finally{Vue.nextTick(()=>l.value?.focus())}},Gt=async H=>{let X=[];for(let[le,de]of H.entries()){let Ie=xe(de,le),Te=Vue.reactive({localId:`attachment-${qe++}`,file:de,name:Ie,size:de.size,uploadName:Ie,preview:null,uploading:!1,uploadError:!1,fileId:null});de.type.startsWith("image/")&&(Te.preview=URL.createObjectURL(de)),f.value.push(Te),X.push(Te)}await ht(X)},Ks=async H=>{!H||H.uploading||H.fileId||(H.uploadName=H.name,await ht([H]))},Qt=H=>{let X=f.value[H];X.preview&&URL.revokeObjectURL(X.preview),f.value.splice(H,1),Vue.nextTick(()=>{l.value?.focus()})},Lt=()=>{if(!Z.value)return;U.value=!1,b.value=!1,A.value=!1;let H=o.value.trim();if(e.sendFn){let de=f.value.filter(L).map(Te=>({fileId:Te.fileId,name:Te.name,preview:Te.preview,isImage:Te.file?.type?.startsWith("image/")||!1,mimeType:Te.file?.type||""})),Ie=de.length>0?de:void 0;e.quote?e.sendFn(H,Ie,e.quote):e.sendFn(H,Ie),f.value=[],e.quote&&t("quote-consumed"),o.value="",pe.value&&delete s.inputDrafts[pe.value],ke();return}if(H==="/btw"||H.startsWith("/btw ")){let de=H.substring(4).trim();s.enterBtwMode(),de&&s.sendBtwQuestion(de),o.value="",pe.value&&delete s.inputDrafts[pe.value],ke();return}if(s.btwMode){s.sendBtwQuestion(H),o.value="",pe.value&&delete s.inputDrafts[pe.value],ke();return}let X=f.value.filter(L).map(de=>({fileId:de.fileId,name:de.name,preview:de.preview,isImage:de.file?.type?.startsWith("image/")||!1,mimeType:de.file?.type||""}));if(s.currentView==="yeaft"&&(H||X.length>0)){let de=to(H).mentions,Ie=s.yeaftActiveSessionFilter||i?.activeSessionId||"grp_default";s.sendYeaftSessionMessage({groupId:Ie,text:H,mentions:de,attachments:X}),f.value=[],o.value="",pe.value&&delete s.inputDrafts[pe.value],ke();return}let le=[...y.value];s.sendMessage(o.value.trim(),X,{expertSelections:le}),f.value=[],o.value="",s.expertSelections=[],pe.value&&delete s.inputDrafts[pe.value],ke()},Zt=H=>{if(!(H.isComposing||H.keyCode===229)){if(H.key==="Escape"&&s.btwMode){H.preventDefault(),s.closeBtw();return}if(A.value){let X=ee.value;if(X.length>0){if(H.key==="ArrowDown"){H.preventDefault(),R.value=(R.value+1)%X.length;return}if(H.key==="ArrowUp"){H.preventDefault(),R.value=(R.value-1+X.length)%X.length;return}if(H.key==="Tab"||H.key==="Enter"&&!H.shiftKey){H.preventDefault(),ge(X[R.value]);return}}if(H.key==="Escape"){H.preventDefault(),A.value=!1;return}}if(b.value&&D.value.length>0){if(H.key==="ArrowDown"){H.preventDefault(),M.value=(M.value+1)%D.value.length;return}if(H.key==="ArrowUp"){H.preventDefault(),M.value=(M.value-1+D.value.length)%D.value.length;return}if(H.key==="Tab"||H.key==="Enter"&&!H.shiftKey){H.preventDefault(),V(D.value[M.value]);return}if(H.key==="Escape"){H.preventDefault(),b.value=!1;return}}if(U.value&&q.value.length>0){if(H.key==="ArrowDown"){H.preventDefault(),re.value=(re.value+1)%q.value.length;return}if(H.key==="ArrowUp"){H.preventDefault(),re.value=(re.value-1+q.value.length)%q.value.length;return}if(H.key==="Tab"||H.key==="Enter"&&!H.shiftKey){H.preventDefault(),te(q.value[re.value]);return}if(H.key==="Escape"){H.preventDefault(),U.value=!1;return}}H.key==="Enter"&&!H.shiftKey&&(H.preventDefault(),Lt())}},it=()=>{e.cancelFn?e.cancelFn():s.cancelExecution()},Xt=H=>{o.value=typeof H=="string"?H:"",Vue.nextTick(()=>{ne(),l.value?.focus();let X=o.value.length;l.value?.setSelectionRange(X,X)})},$t=()=>Vue.nextTick(()=>l.value?.focus());return{store:s,inputText:o,inputRef:l,messageComposerRef:a,inputAreaRef:g,fileInput:u,attachments:f,uploading:p,canSend:Z,isCompacting:O,isStopVisible:h,effectivePlaceholderKey:I,attachmentsAllowed:w,showAutocomplete:U,selectedIndex:re,filteredCommands:q,flatItems:Me,groupedCommands:K,autocompleteRef:m,sendFn:Vue.toRef(e,"sendFn"),expertSelections:y,showExpertAutocomplete:b,expertSelectedIndex:M,expertAutocompleteFiltered:D,expertAutocompleteRef:v,selectExpertItem:V,removeExpertSelection:E,getExpertLabel:_,todoStatusSymbol:T,autoResize:ne,handleInput:Y,selectCommand:te,onBlur:ye,handleFileSelect:ae,handlePaste:$e,formatFileSize:Ze,retryAttachment:Ks,removeAttachment:Qt,send:Lt,handleKeydown:Zt,cancelExecution:it,vpStore:r,inputElementId:d,showVpAutocomplete:A,vpMentionPopupOpen:fe,vpMentionPopupId:ce,vpMentionActiveOptionId:ve,vpSelectedIndex:R,vpMentionQuery:F,mentionVpCandidates:z,selectVpMention:ge,appendMention:P,replaceDraft:Xt,focusInput:$t}}}});function Vl(e){return new Promise((t,s)=>{if(document.querySelector(`script[src="${e}"]`))return t();let n=document.createElement("script");n.src=e,n.onload=t,n.onerror=s,document.head.appendChild(n)})}function ig(e){return e+":"+Math.random().toString(36).slice(2,8)}function Dr(e){return e?e.type==="pane"?[e.terminalId]:[...Dr(e.first),...Dr(e.second)]:[]}function oo(e){return e?e.type==="pane"?e.terminalId:oo(e.first):null}function io(e,t,s){return e&&(e.type==="pane"?e.terminalId===t?s:e:{...e,first:io(e.first,t,s),second:io(e.second,t,s)})}function fs(e,t){if(!e)return null;if(e.type==="pane")return e.terminalId===t?null:e;if(e.first?.type==="pane"&&e.first.terminalId===t)return e.second;if(e.second?.type==="pane"&&e.second.terminalId===t)return e.first;let s=fs(e.first,t),n=fs(e.second,t);return s?n?{...e,first:s,second:n}:s:n}var og=N(()=>{});var ag,lg=N(()=>{ag={name:"PaneTree",props:{node:Object,terminals:Object,activePane:String,onActivate:Function,onClosePane:Function,setMountRef:Function},template:`
1939
+ `,setup(e,{emit:t}){let s=Pinia.useChatStore(),n=Pinia.useAuthStore(),r=Pinia.useVpStore(),i=Pinia.useSessionsStore?Pinia.useSessionsStore():null,o=Vue.ref(""),a=Vue.ref(null),l=Vue.computed(()=>a.value?.getTextarea?.()||null),d=`chat-input-${Vue.getCurrentInstance()?.uid??0}`,u=Vue.ref(null),f=Vue.ref([]),p=Vue.computed(()=>f.value.some(H=>H.uploading)),g=Vue.ref(null),m=Vue.ref(null),v=Vue.ref(null),k=Vue.computed(()=>!!e.sendFn),w=Vue.computed(()=>!s.btwMode),I=Vue.computed(()=>e.placeholderKey||"chatInput.placeholder"),h=Vue.computed(()=>e.showStop||!k.value&&s.isProcessing),y=Vue.computed({get:()=>s.expertSelections||[],set:H=>{s.expertSelections=H}}),b=Vue.ref(!1),M=Vue.ref(0),x=Vue.computed(()=>cu(s.customExpertRoles)),D=Vue.computed(()=>{let H=o.value,Z=H.lastIndexOf("@");if(Z===-1||!b.value)return[];let le=H.slice(Z+1).toLowerCase();return x.value.filter(de=>le?de.searchText.includes(le):!0).filter(de=>!y.value.some(Ie=>Ie.role===de.roleId)).slice(0,12)}),V=H=>{if(y.value.length>=Vs)return;let Z={role:H.roleId,action:H.actionId};s.expertSelections=[...y.value,Z];let le=o.value,de=le.lastIndexOf("@");de!==-1&&(o.value=le.slice(0,de).trimEnd()),b.value=!1,Vue.nextTick(()=>l.value?.focus())},E=H=>{let Z=[...y.value];Z.splice(H,1),s.expertSelections=Z},_=H=>$s(H,s.customExpertRoles),T=H=>H==="completed"?"\u2713":H==="in_progress"?"\u2192":"\u25CB",A=Vue.ref(!1),R=Vue.ref(0),j=()=>s.currentView==="yeaft"&&!!s.currentAgent,F=Vue.computed(()=>{let H=o.value,Z=H.lastIndexOf("@");return Z<0||!A.value?"":H.slice(Z+1)}),z=Vue.computed(()=>{if(!i)return r.vpList||[];let H=s.yeaftActiveSessionFilter||i.activeSessionId||null,Z=typeof i.sessionById=="function"?i.sessionById(H,s.currentAgent||null):i.sessions?.[H];return tg(r.vpList,Z)}),ee=Vue.computed(()=>El(z.value,F.value)),fe=Vue.computed(()=>!s.btwMode&&A.value&&!b.value&&ee.value.length>0),ce=Dl(d),ve=Vue.computed(()=>{if(!fe.value)return null;let H=ee.value[R.value];return H?Ll(d,H.vpId):null}),ge=H=>{!H||!H.vpId||(o.value=sg(o.value,H.vpId),A.value=!1,R.value=0,Vue.nextTick(()=>l.value?.focus()))},pe=Vue.computed(()=>e.draftKey||e.conversationId||s.currentConversation||null);pe.value&&s.inputDrafts[pe.value]&&(o.value=s.inputDrafts[pe.value]),Vue.watch(o,H=>{let Z=pe.value;Z&&(H?s.inputDrafts[Z]=H:delete s.inputDrafts[Z])}),Vue.watch(ee,H=>{if(H.length===0){R.value=0;return}R.value>=H.length&&(R.value=H.length-1)}),Vue.watch(pe,(H,Z)=>{Z&&o.value&&(s.inputDrafts[Z]=o.value),o.value=H&&s.inputDrafts[H]||""});let P=H=>{if(!H||typeof H!="string")return;let Z=o.value||"",le=Z.length>0&&!/\s$/.test(Z),de=Z+(le?" ":"")+"@"+H+" ";o.value=de,Vue.nextTick(()=>{let Ie=l.value;Ie&&(Ie.focus(),Ie.setSelectionRange(de.length,de.length),ne())})},U=Vue.ref(!1),re=Vue.ref(0),me=Vue.computed(()=>{let H=e.conversationId||s.activeConversationId||s.currentConversation,Z=s.currentAgent,le=zf(s,H,Z),de=s.currentView==="yeaft"?Kf:Uf;return eo(de,le).map(Te=>Te.startsWith("/")?Te:"/"+Te)}),Me=Vue.computed(()=>{let H=o.value.trim();if(!H.startsWith("/"))return[];let Z=H.toLowerCase();return me.value.filter(le=>le.toLowerCase().startsWith(Z)&&le.toLowerCase()!==Z).map(le=>({cmd:le,desc:Yf(le,s.slashCommandDescriptions)}))}),K=Vue.computed(()=>Gf(Me.value,s.slashCommandDescriptions,me.value)),q=Vue.computed(()=>Me.value.map(H=>H.cmd)),B=Vue.computed(()=>e.conversationId||s.activeConversationId||s.currentConversation||null),O=Vue.computed(()=>s.compactStatus?.status==="compacting"&&s.compactStatus?.conversationId===B.value),L=H=>typeof H?.fileId=="string"&&H.fileId.trim().length>0,X=Vue.computed(()=>{if(O.value)return!1;let H=!!o.value.trim(),Z=f.value.length>0;if(k.value){let We=!p.value&&f.value.every(L);return(H||Z)&&We}let le=y.value.length>0,de=y.value.some(We=>We.action),Ie=H||Z||le&&(H||de),Te=!p.value&&f.value.every(L);return Ie&&s.currentAgent&&s.currentConversation&&Te}),ne=()=>a.value?.autoResize?.(),ke=()=>a.value?.resetTextareaSize?.(),Y=()=>{ne();let H=o.value.trim();H.startsWith("/")&&!H.includes(" ")?(U.value=!0,re.value=0,b.value=!1):U.value=!1;let Z=o.value,le=Z.lastIndexOf("@");if(le!==-1&&!U.value){let de=le>0?Z[le-1]:" ";de===" "||de===`
1940
+ `||le===0?j()?(A.value=!0,R.value=0,b.value=!1):(b.value=!0,M.value=0,A.value=!1):(b.value=!1,A.value=!1)}else le===-1&&(b.value=!1,A.value=!1)},te=H=>{o.value=H+" ",U.value=!1,Vue.nextTick(()=>{l.value?.focus()})},ye=()=>{setTimeout(()=>{U.value=!1,b.value=!1,A.value=!1},150)},ae=async H=>{let Z=Array.from(H.target.files||[]);Z.length>0&&await Gt(Z),H.target.value="",Vue.nextTick(()=>{l.value?.focus()})},$e=async H=>{let Z=H.clipboardData?.items;if(!Z)return;let le=[];for(let de of Z)if(de.kind==="file"){let Ie=de.getAsFile();Ie&&le.push(Ie)}le.length>0&&(H.preventDefault(),await Gt(le))},Ae=H=>{let Z=String(H||"").toLowerCase();return Z==="image/png"?".png":Z==="image/jpeg"?".jpg":Z==="image/gif"?".gif":Z==="image/webp"?".webp":Z==="image/svg+xml"?".svg":Z==="text/plain"?".txt":Z==="application/json"?".json":""},xe=(H,Z)=>{let le=typeof H?.name=="string"?H.name.trim():"";return le||`${String(H?.type||"").startsWith("image/")?"pasted-image":"pasted-file"}-${Date.now()}-${Z+1}${Ae(H?.type)}`},qe=1,Xe=H=>{let Z=Number(H);return!Number.isFinite(Z)||Z<=0?"":Z<1024?`${Z} B`:Z<1024*1024?`${Math.round(Z/1024)} KB`:`${(Z/(1024*1024)).toFixed(Z<10*1024*1024?1:0)} MB`},ht=async H=>{for(let Z of H)Z.uploading=!0,Z.uploadError=!1;try{let Z=new FormData;for(let Ze of H)Z.append("files",Ze.file,Ze.uploadName);let le={},de=n.getActiveToken?.()||n.token||null;de&&(le.Authorization=`Bearer ${de}`);let Ie=await fetch("/api/upload",{method:"POST",headers:le,body:Z});if(!Ie.ok)throw new Error("Upload failed");let Te=await Ie.json(),We=Array.isArray(Te.files)?Te.files:[];for(let[Ze,Je]of H.entries()){let ot=We[Ze],Be=typeof ot?.fileId=="string"?ot.fileId.trim():"";if(!Be)throw new Error("Upload response is incomplete");Je.fileId=Be,Je.uploading=!1,delete Je.uploadName}}catch{for(let le of H)le.fileId||(le.uploading=!1,le.uploadError=!0)}finally{Vue.nextTick(()=>l.value?.focus())}},Gt=async H=>{let Z=[];for(let[le,de]of H.entries()){let Ie=xe(de,le),Te=Vue.reactive({localId:`attachment-${qe++}`,file:de,name:Ie,size:de.size,uploadName:Ie,preview:null,uploading:!1,uploadError:!1,fileId:null});de.type.startsWith("image/")&&(Te.preview=URL.createObjectURL(de)),f.value.push(Te),Z.push(Te)}await ht(Z)},Ks=async H=>{!H||H.uploading||H.fileId||(H.uploadName=H.name,await ht([H]))},Qt=H=>{let Z=f.value[H];Z.preview&&URL.revokeObjectURL(Z.preview),f.value.splice(H,1),Vue.nextTick(()=>{l.value?.focus()})},Lt=()=>{if(!X.value)return;U.value=!1,b.value=!1,A.value=!1;let H=o.value.trim();if(e.sendFn){let de=f.value.filter(L).map(Te=>({fileId:Te.fileId,name:Te.name,preview:Te.preview,isImage:Te.file?.type?.startsWith("image/")||!1,mimeType:Te.file?.type||""})),Ie=de.length>0?de:void 0;e.quote?e.sendFn(H,Ie,e.quote):e.sendFn(H,Ie),f.value=[],e.quote&&t("quote-consumed"),o.value="",pe.value&&delete s.inputDrafts[pe.value],ke();return}if(H==="/btw"||H.startsWith("/btw ")){let de=H.substring(4).trim();s.enterBtwMode(),de&&s.sendBtwQuestion(de),o.value="",pe.value&&delete s.inputDrafts[pe.value],ke();return}if(s.btwMode){s.sendBtwQuestion(H),o.value="",pe.value&&delete s.inputDrafts[pe.value],ke();return}let Z=f.value.filter(L).map(de=>({fileId:de.fileId,name:de.name,preview:de.preview,isImage:de.file?.type?.startsWith("image/")||!1,mimeType:de.file?.type||""}));if(s.currentView==="yeaft"&&(H||Z.length>0)){let de=to(H).mentions,Ie=s.yeaftActiveSessionFilter||i?.activeSessionId||"grp_default";s.sendYeaftSessionMessage({groupId:Ie,text:H,mentions:de,attachments:Z}),f.value=[],o.value="",pe.value&&delete s.inputDrafts[pe.value],ke();return}let le=[...y.value];s.sendMessage(o.value.trim(),Z,{expertSelections:le}),f.value=[],o.value="",s.expertSelections=[],pe.value&&delete s.inputDrafts[pe.value],ke()},Xt=H=>{if(!(H.isComposing||H.keyCode===229)){if(H.key==="Escape"&&s.btwMode){H.preventDefault(),s.closeBtw();return}if(A.value){let Z=ee.value;if(Z.length>0){if(H.key==="ArrowDown"){H.preventDefault(),R.value=(R.value+1)%Z.length;return}if(H.key==="ArrowUp"){H.preventDefault(),R.value=(R.value-1+Z.length)%Z.length;return}if(H.key==="Tab"||H.key==="Enter"&&!H.shiftKey){H.preventDefault(),ge(Z[R.value]);return}}if(H.key==="Escape"){H.preventDefault(),A.value=!1;return}}if(b.value&&D.value.length>0){if(H.key==="ArrowDown"){H.preventDefault(),M.value=(M.value+1)%D.value.length;return}if(H.key==="ArrowUp"){H.preventDefault(),M.value=(M.value-1+D.value.length)%D.value.length;return}if(H.key==="Tab"||H.key==="Enter"&&!H.shiftKey){H.preventDefault(),V(D.value[M.value]);return}if(H.key==="Escape"){H.preventDefault(),b.value=!1;return}}if(U.value&&q.value.length>0){if(H.key==="ArrowDown"){H.preventDefault(),re.value=(re.value+1)%q.value.length;return}if(H.key==="ArrowUp"){H.preventDefault(),re.value=(re.value-1+q.value.length)%q.value.length;return}if(H.key==="Tab"||H.key==="Enter"&&!H.shiftKey){H.preventDefault(),te(q.value[re.value]);return}if(H.key==="Escape"){H.preventDefault(),U.value=!1;return}}H.key==="Enter"&&!H.shiftKey&&(H.preventDefault(),Lt())}},it=()=>{e.cancelFn?e.cancelFn():s.cancelExecution()},Zt=H=>{o.value=typeof H=="string"?H:"",Vue.nextTick(()=>{ne(),l.value?.focus();let Z=o.value.length;l.value?.setSelectionRange(Z,Z)})},$t=()=>Vue.nextTick(()=>l.value?.focus());return{store:s,inputText:o,inputRef:l,messageComposerRef:a,inputAreaRef:g,fileInput:u,attachments:f,uploading:p,canSend:X,isCompacting:O,isStopVisible:h,effectivePlaceholderKey:I,attachmentsAllowed:w,showAutocomplete:U,selectedIndex:re,filteredCommands:q,flatItems:Me,groupedCommands:K,autocompleteRef:m,sendFn:Vue.toRef(e,"sendFn"),expertSelections:y,showExpertAutocomplete:b,expertSelectedIndex:M,expertAutocompleteFiltered:D,expertAutocompleteRef:v,selectExpertItem:V,removeExpertSelection:E,getExpertLabel:_,todoStatusSymbol:T,autoResize:ne,handleInput:Y,selectCommand:te,onBlur:ye,handleFileSelect:ae,handlePaste:$e,formatFileSize:Xe,retryAttachment:Ks,removeAttachment:Qt,send:Lt,handleKeydown:Xt,cancelExecution:it,vpStore:r,inputElementId:d,showVpAutocomplete:A,vpMentionPopupOpen:fe,vpMentionPopupId:ce,vpMentionActiveOptionId:ve,vpSelectedIndex:R,vpMentionQuery:F,mentionVpCandidates:z,selectVpMention:ge,appendMention:P,replaceDraft:Zt,focusInput:$t}}}});function Vl(e){return new Promise((t,s)=>{if(document.querySelector(`script[src="${e}"]`))return t();let n=document.createElement("script");n.src=e,n.onload=t,n.onerror=s,document.head.appendChild(n)})}function ig(e){return e+":"+Math.random().toString(36).slice(2,8)}function Dr(e){return e?e.type==="pane"?[e.terminalId]:[...Dr(e.first),...Dr(e.second)]:[]}function oo(e){return e?e.type==="pane"?e.terminalId:oo(e.first):null}function io(e,t,s){return e&&(e.type==="pane"?e.terminalId===t?s:e:{...e,first:io(e.first,t,s),second:io(e.second,t,s)})}function fs(e,t){if(!e)return null;if(e.type==="pane")return e.terminalId===t?null:e;if(e.first?.type==="pane"&&e.first.terminalId===t)return e.second;if(e.second?.type==="pane"&&e.second.terminalId===t)return e.first;let s=fs(e.first,t),n=fs(e.second,t);return s?n?{...e,first:s,second:n}:s:n}var og=N(()=>{});var ag,lg=N(()=>{ag={name:"PaneTree",props:{node:Object,terminals:Object,activePane:String,onActivate:Function,onClosePane:Function,setMountRef:Function},template:`
1941
1941
  <div v-if="node.type === 'pane'"
1942
1942
  class="terminal-pane"
1943
1943
  :class="{ active: node.terminalId === activePane }"
@@ -2256,7 +2256,7 @@ ${String(e||"").trim()}
2256
2256
  </div>
2257
2257
  </div>
2258
2258
  </div>
2259
- `,setup(){let e=Pinia.useChatStore(),t=Vue.inject("t"),s=O=>O.split(/[/\\]/).pop()||O,n=O=>{let L=O.split(/[/\\]/);return L.pop(),L.join("/")},r=O=>ao(s(O)),i=Vue.ref(null),o=Vue.reactive({staged:!1,modified:!1,untracked:!1}),a=O=>{o[O]=!o[O]},l=Vue.ref(!1),c=Vue.ref(""),d=Vue.ref(null),u=Vue.ref([]),f=Vue.computed(()=>e.effectiveWorkDir||""),p=Vue.ref(""),g=Vue.computed(()=>p.value.trim()||f.value),m=Vue.ref(null),v=Vue.ref(!1),k=Vue.ref(!1),w=Vue.ref(""),I=Vue.ref(null),h=Vue.ref([]),y=Vue.ref(null),b=Vue.ref(!0),M=Vue.ref(!1),x=Vue.ref(""),D=Vue.ref(null),V=Vue.ref(0),E=Vue.ref(0),_=O=>O==null||O===""?"":fg(O,m.value||""),T=Vue.ref(parseInt(localStorage.getItem("gitDiffFontSize"))||12),A=O=>{T.value=Math.max(8,Math.min(24,O)),localStorage.setItem("gitDiffFontSize",T.value.toString())},R=()=>A(T.value+1),j=()=>A(T.value-1),F=O=>{O.deltaY<0?R():O.deltaY>0&&j()},z=Vue.computed(()=>{let O=h.value;if(!O||O.length===0)return[];let L=O.length,Z=[],ne=0;for(;ne<L;){let ke=O[ne];if(ke.type==="addition"||ke.type==="deletion"||ke.type==="modification"){let Y=ke.type==="modification"?"modification":ke.type,te=ne;for(;ne<L&&(O[ne].type===Y||O[ne].type==="modification"&&Y!=="modification");)ne++;let ye=ne-te;Z.push({type:Y,top:te/L*100,height:Math.max(ye/L*100,.5)})}else ne++}return Z}),ee=O=>{let L=i.value;if(!L)return;let Z=O.currentTarget.getBoundingClientRect(),ne=(O.clientY-Z.top)/Z.height;L.scrollTop=ne*(L.scrollHeight-L.clientHeight)},fe=Vue.computed(()=>u.value.filter(O=>O.indexStatus!==" "&&O.indexStatus!=="?")),ce=Vue.computed(()=>u.value.filter(O=>O.workTreeStatus==="M"||O.workTreeStatus==="D")),ve=Vue.computed(()=>u.value.filter(O=>O.indexStatus==="?"&&O.workTreeStatus==="?")),ge=vg(e,{effectiveGitWorkDir:g,gitOperating:M,gitOpFeedback:D,commitMessage:x}),pe=()=>ge.loadGitStatus(l,c),P=()=>{pe()},U=bg(e,g),re=O=>lo(O),me=()=>U.confirmFolderPicker(p,pe),Me=(O,L)=>{m.value=O.path,v.value=L,k.value=!0,w.value="",I.value=null,h.value=[],y.value=null;let Z=O.indexStatus==="?"&&O.workTreeStatus==="?";e.sendWsMessage({type:"git_diff",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,workDir:g.value,filePath:O.path,staged:L,untracked:Z,fullFile:b.value,_clientId:e.clientId})},K=()=>{if(b.value=!b.value,m.value){let O=u.value.find(L=>L.path===m.value);O&&Me(O,v.value)}},q=O=>{let L=O.detail;if(L)switch(L.type){case"directory_listing":{if(U.handleDirectoryListing(L))return;break}case"git_status_result":{if(l.value=!1,L.error){c.value=L.error,d.value=null,u.value=[];return}if(c.value="",d.value=L.branch||"HEAD",u.value=L.files||[],V.value=L.ahead||0,E.value=L.behind||0,m.value){let Z=u.value.find(ne=>ne.path===m.value);if(Z){let ne=Z.indexStatus!==" "&&Z.indexStatus!=="?";v.value=ne}else m.value=null,I.value=null,h.value=[],y.value=null}break}case"git_diff_result":{if(k.value=!1,L.error){w.value=L.error;return}w.value="";let Z=mg(L.diff,L.newFileContent,t);y.value=Z.stats,h.value=Z.lines,I.value=Z.content;break}case"git_op_result":{ge.handleGitOpResult(L,pe);break}}};Vue.watch(()=>e.currentAgent,()=>{d.value=null,u.value=[],c.value="",m.value=null,I.value=null,e.currentAgent&&Vue.nextTick(()=>pe())}),Vue.watch(()=>e.currentConversation,()=>{e.currentAgent&&(m.value=null,I.value=null,h.value=[],y.value=null,Vue.nextTick(()=>pe()))});let B=()=>pe();return Vue.onMounted(()=>{window.addEventListener("workbench-message",q),e.currentAgent&&pe()}),Vue.onUnmounted(()=>{window.removeEventListener("workbench-message",q),ge.cleanup()}),{store:e,getFileName:s,getDirName:n,getFileIconHtml:r,hlLine:_,collapsedGroups:o,toggleGroup:a,gitLoading:l,gitError:c,gitBranch:d,gitFiles:u,gitWorkDir:p,defaultWorkDir:f,changeGitWorkDir:P,stagedFiles:fe,modifiedFiles:ce,untrackedFiles:ve,selectedGitFile:m,selectedStaged:v,diffLoading:k,diffError:w,diffContent:I,diffLines:h,diffStats:y,diffFullFile:b,toggleDiffMode:K,scrollMarkers:z,diffScrollContainer:i,onMarkerClick:ee,fontSize:T,zoomIn:R,zoomOut:j,onWheel:F,gitOperating:M,commitMessage:x,gitOpFeedback:D,gitAhead:V,gitBehind:E,stageFile:ge.stageFile,unstageFile:ge.unstageFile,discardFile:ge.discardFile,stageAll:ge.stageAll,unstageAll:ge.unstageAll,commitChanges:ge.commitChanges,pushChanges:ge.pushChanges,selectGitFile:Me,refresh:B,folderPickerOpen:U.folderPickerOpen,folderPickerPath:U.folderPickerPath,folderPickerEntries:U.folderPickerEntries,folderPickerLoading:U.folderPickerLoading,folderPickerSelected:U.folderPickerSelected,getFolderIcon:re,openFolderPicker:U.openFolderPicker,folderPickerNavigateUp:U.folderPickerNavigateUp,folderPickerSelectItem:U.folderPickerSelectItem,folderPickerEnter:U.folderPickerEnter,confirmFolderPicker:me}}}});function Ig(e){let t=Vue.ref(!1),s=Vue.ref(!1),n=Vue.ref(""),r=Vue.ref(""),i=Vue.ref(!1),o=Vue.ref(!1),a=Vue.ref(0),l=Vue.ref(-1),c=Vue.ref(null),d=Vue.ref(null),u=[],f=[],p=()=>{let V=e.value?.cmInstance;if(!V)return;let _=V.getWrapperElement().querySelector(".cm-find-scrollbar-annotations");_&&_.remove()},g=()=>{let V=e.value?.cmInstance;if(!V||f.length===0)return;p();let E=V.getWrapperElement();if(!E.querySelector(".CodeMirror-vscrollbar"))return;let T=V.lineCount();if(T===0)return;let A=document.createElement("div");A.className="cm-find-scrollbar-annotations";for(let R of f){let j=R.from.line/T*100,F=document.createElement("div");F.className="cm-find-scrollbar-tick",F.style.top=j+"%",A.appendChild(F)}E.appendChild(A)},m=()=>{for(let V of u)try{V.clear()}catch{}u=[],f=[],a.value=0,l.value=-1,p()},v=V=>{let E=e.value?.cmInstance;if(!E||!f[V])return;for(let T=0;T<u.length;T++){if(!u[T])continue;let A=u[T].find();A&&(u[T].clear(),u[T]=E.markText(A.from,A.to,{className:"cm-find-highlight"}))}let _=f[V];if(u[V]){let T=u[V].find();T&&(u[V].clear(),u[V]=E.markText(T.from,T.to,{className:"cm-find-highlight cm-find-current"}))}setTimeout(()=>{E.scrollIntoView({from:_.from,to:_.to},100)},0)},k=()=>{m();let V=e.value?.cmInstance;if(!V||!n.value)return;let E=n.value;if(E.length<3)return;let _=V.getValue(),T=i.value,A=o.value,R=[];try{if(A){let j=T?"g":"gi",F=new RegExp(E,j),z;for(;(z=F.exec(_))!==null;){if(z[0].length===0){F.lastIndex++;continue}let ee=V.posFromIndex(z.index),fe=V.posFromIndex(z.index+z[0].length);if(R.push({from:ee,to:fe}),R.length>1e4)break}}else{let j=T?E:E.toLowerCase(),F=T?_:_.toLowerCase(),z=0;for(;(z=F.indexOf(j,z))!==-1;){let ee=V.posFromIndex(z),fe=V.posFromIndex(z+E.length);if(R.push({from:ee,to:fe}),z+=E.length,R.length>1e4)break}}}catch{return}f=R,a.value=R.length;for(let j of R)u.push(V.markText(j.from,j.to,{className:"cm-find-highlight"}));if(R.length>0){let j=V.getCursor(),F=0;for(let z=0;z<R.length;z++){if(CodeMirror.cmpPos(R[z].from,j)>=0){F=z;break}z===R.length-1&&(F=0)}l.value=F,v(F)}g()};return{findBarVisible:t,replaceBarVisible:s,findQuery:n,replaceQuery:r,findCaseSensitive:i,findUseRegex:o,findMatchCount:a,findMatchIndex:l,findInputRef:c,replaceInputRef:d,clearFindMarkers:m,performFind:k,onFindInput:()=>{k()},findNext:()=>{if(f.length===0)return;let V=(l.value+1)%f.length;l.value=V,v(V)},findPrev:()=>{if(f.length===0)return;let V=(l.value-1+f.length)%f.length;l.value=V,v(V)},openFindBar:(V=!1)=>{t.value=!0,s.value=V;let E=e.value?.cmInstance;if(E){let _=E.getSelection();_&&(n.value=_)}Vue.nextTick(()=>{c.value?.focus(),c.value?.select(),n.value&&k()})},closeFindBar:()=>{m(),t.value=!1,s.value=!1;let V=e.value?.cmInstance;V&&V.focus()},toggleReplaceBar:()=>{s.value=!s.value,s.value&&Vue.nextTick(()=>d.value?.focus())},replaceOne:()=>{let V=e.value?.cmInstance;if(!V||f.length===0||l.value<0)return;let E=f[l.value];V.replaceRange(r.value,E.from,E.to),k()},replaceAll:()=>{let V=e.value?.cmInstance;!V||f.length===0||(V.operation(()=>{for(let E=f.length-1;E>=0;E--)V.replaceRange(r.value,f[E].from,f[E].to)}),k())}}}var Cg=N(()=>{});function Ag(e,t){let{getEffectiveWorkDir:s,treePath:n}=t,r=Vue.reactive(new Set),i=Vue.ref(-1),o=Vue.ref(!1),a=Vue.ref(null),l=null,c=null,d=Vue.ref(!1),u=Vue.ref(""),f=Vue.ref("file"),p=Vue.ref(null),g=Vue.ref(!1),m=Vue.ref(""),v=Vue.ref(null),k=Vue.reactive({visible:!1,x:0,y:0,entry:null}),w=Vue.ref(!1),I=Vue.ref(""),h=Vue.ref(null),y=null,b=Vue.reactive({dragging:null,dropTarget:null}),M=Vue.ref(!1),x=(Y,te)=>{l&&clearTimeout(l),a.value={ok:Y,message:te},l=setTimeout(()=>{a.value=null},4e3)},D=()=>{o.value=!0,c&&clearTimeout(c),c=setTimeout(()=>{o.value&&(o.value=!1,x(!1,"Operation timed out"))},15e3)},V=Y=>{r.has(Y)?r.delete(Y):r.add(Y)},E=()=>{r.clear(),i.value=-1},_=Y=>{f.value=Y,u.value="",d.value=!0,Vue.nextTick(()=>p.value?.focus())},T=()=>{let Y=u.value.trim();if(!Y)return;d.value=!1;let te=n.value||s();if(!te)return;let ye=te.includes("\\")?"\\":"/",ae=te.replace(/[/\\]$/,"")+ye+Y;D(),e.sendWsMessage({type:"create_file",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,filePath:ae,isDirectory:f.value==="directory",workDir:s(),_clientId:e.clientId})},A=(Y,te)=>{let ye=Y.path.split("/").pop();confirm(te("files.deleteConfirm",{name:ye})+(Y.type==="directory"?te("files.deleteDirHint"):""))&&(D(),e.sendWsMessage({type:"delete_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[Y.path],workDir:s(),_clientId:e.clientId}))},R=Y=>{let te=r.size;te!==0&&confirm(Y("files.deleteSelectedConfirm",{count:te}))&&(D(),e.sendWsMessage({type:"delete_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[...r],workDir:s(),_clientId:e.clientId}))},j=()=>{m.value=n.value||s()||"",g.value=!0,Vue.nextTick(()=>v.value?.focus())},F=()=>{let Y=m.value.trim();!Y||r.size===0||(g.value=!1,D(),e.sendWsMessage({type:"move_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[...r],destination:Y,workDir:s(),_clientId:e.clientId}))},z=(Y,te)=>{let $e=Y.clientX,Ae=Y.clientY;$e+180>window.innerWidth&&($e=window.innerWidth-180),Ae+240>window.innerHeight&&(Ae=window.innerHeight-240),k.entry=te,k.x=$e,k.y=Ae,k.visible=!0},ee=()=>{k.visible=!1};return{selectedPaths:r,lastClickedIndex:i,fileOperating:o,fileOpFeedback:a,newFileDialogVisible:d,newFileName:u,newFileType:f,newFileInput:p,moveDialogVisible:g,moveDestination:m,moveDestInput:v,contextMenu:k,renameDialogVisible:w,renameNewName:I,renameInput:h,dragState:b,externalDropActive:M,showFileOpFeedback:x,toggleSelection:V,clearSelection:E,showNewFileDialog:_,confirmNewFile:T,deleteSingleFile:A,deleteSelected:R,openMoveDialog:j,confirmMove:F,showContextMenu:z,hideContextMenu:ee,ctxRename:()=>{let Y=k.entry;ee(),Y&&(I.value=Y.name,w.value=!0,Vue.nextTick(()=>{let te=h.value;if(te)if(te.focus(),Y.type==="file"){let ye=Y.name.lastIndexOf(".");ye>0?te.setSelectionRange(0,ye):te.select()}else te.select()}))},confirmRename:()=>{let Y=k.entry,te=I.value.trim();if(!te||!Y||te===Y.name){w.value=!1;return}w.value=!1;let ye=Y.path.replace(/\/$/,"").split("/");ye.pop();let ae=ye.join("/")||"/";D(),e.sendWsMessage({type:"move_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[Y.path],destination:ae,newName:te,workDir:s(),_clientId:e.clientId})},ctxCopy:()=>{let Y=k.entry;if(ee(),!Y)return;let te=Y.path.replace(/\/$/,"").split("/");te.pop();let ye=te.join("/")||"/";D(),e.sendWsMessage({type:"copy_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[Y.path],destination:ye,workDir:s(),_clientId:e.clientId})},ctxMoveTo:()=>{let Y=k.entry;ee(),Y&&(r.clear(),r.add(Y.path),j())},ctxDelete:Y=>{let te=k.entry;ee(),te&&A(te,Y)},ctxDownload:()=>{let Y=k.entry;ee(),!(!Y||Y.type!=="file")&&(y=Y.path,e.sendWsMessage({type:"read_file",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,filePath:Y.path,workDir:s(),_clientId:e.clientId}))},onDragStart:(Y,te)=>{b.dragging=te,Y.dataTransfer.setData("text/plain",te.path),Y.dataTransfer.effectAllowed="move"},onDragOver:(Y,te)=>{if(!b.dragging&&Y.dataTransfer.types.includes("Files")){te.type==="directory"&&(Y.dataTransfer.dropEffect="copy",b.dropTarget=te.path);return}!b.dragging||te.type!=="directory"||te.path!==b.dragging.path&&(te.path.startsWith(b.dragging.path+"/")||(Y.dataTransfer.dropEffect="move",b.dropTarget=te.path))},onDragLeave:Y=>{let te=Y.relatedTarget;te&&Y.currentTarget.contains(te)||(b.dropTarget=null)},onDrop:(Y,te,ye)=>{if(b.dropTarget=null,!b.dragging&&Y.dataTransfer.files.length>0&&te.type==="directory"){ye(Y.dataTransfer.files,te.path);return}if(!b.dragging||te.type!=="directory"){b.dragging=null;return}if(te.path===b.dragging.path){b.dragging=null;return}D(),e.sendWsMessage({type:"move_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[b.dragging.path],destination:te.path,workDir:s(),_clientId:e.clientId}),b.dragging=null},onTreeDragOver:Y=>{b.dragging||Y.dataTransfer.types.includes("Files")&&(Y.dataTransfer.dropEffect="copy",M.value=!0)},onTreeDragLeave:Y=>{let te=Y.relatedTarget;te&&Y.currentTarget.contains(te)||(M.value=!1)},onTreeDrop:(Y,te,ye)=>{if(M.value=!1,!b.dragging&&Y.dataTransfer.files.length>0){let ae=n.value||te||s();ye(Y.dataTransfer.files,ae)}},handleExternalFileDrop:async(Y,te)=>{if(!te)return;let ye=[],ae=[];for(let $e of Y)ae.push(new Promise(Ae=>{let xe=new FileReader;xe.onload=()=>{let qe=btoa(new Uint8Array(xe.result).reduce((Ze,ht)=>Ze+String.fromCharCode(ht),""));ye.push({name:$e.name,data:qe}),Ae()},xe.onerror=()=>Ae(),xe.readAsArrayBuffer($e)}));await Promise.all(ae),ye.length!==0&&(o.value=!0,c&&clearTimeout(c),c=setTimeout(()=>{o.value&&(o.value=!1,x(!1,"Upload timed out"))},3e4),e.sendWsMessage({type:"upload_to_dir",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,files:ye,dirPath:te,workDir:s(),_clientId:e.clientId}))},handleFileOpResult:(Y,te,ye)=>{o.value=!1,c&&(clearTimeout(c),c=null),x(Y.success,Y.success?Y.message:Y.error||"Operation failed"),Y.success&&(ye&&te(ye),(Y.operation==="delete"||Y.operation==="move")&&(r.clear(),i.value=-1))},getPendingDownload:()=>y,clearPendingDownload:()=>{y=null},cleanup:()=>{l&&clearTimeout(l),c&&clearTimeout(c)}}}var xg=N(()=>{});function Tg(e,{getEffectiveWorkDir:t,normalizePath:s,selectedPaths:n,lastClickedIndex:r,openFileInTab:i,clearSelection:o}){let a=Vue.ref(""),l=Vue.ref(""),c=Vue.reactive({}),d=Vue.ref(!1),u=Vue.ref(null),f=Vue.computed(()=>{if(!l.value)return"EXPLORER";let _=l.value.replace(/[\\/]+$/,"").split(/[\\/]/);return(_[_.length-1]||l.value).toUpperCase()}),p=Vue.computed(()=>l.value?!!c[l.value]?.expanded:!1),g=()=>{if(!l.value)return;let _=c[l.value];_&&(_.expanded=!_.expanded)},m=()=>{for(let _ of Object.keys(c))c[_]&&(c[_].expanded=!1)},v=()=>{d.value=!0,Vue.nextTick(()=>u.value?.focus())},k=()=>{d.value=!1,y()},w=()=>{d.value=!1},I=Vue.computed(()=>{let _=[],T=(A,R)=>{let j=c[A];if(!(!j||!j.entries))for(let F of j.entries)_.push({...F,depth:R}),F.type==="directory"&&c[F.path]?.expanded&&T(F.path,R+1)};return l.value&&c[l.value]?.expanded&&T(l.value,0),_}),h=_=>{let T=s(_);c[T]?c[T].loading=!0:c[T]={entries:[],expanded:!0,loaded:!1,loading:!0},e.sendWsMessage({type:"list_directory",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,dirPath:_,workDir:t(),_clientId:e.clientId})},y=()=>{let _=a.value.trim();if(!_)return;let T=s(_);l.value=T,Object.keys(c).forEach(A=>delete c[A]),c[T]={entries:[],expanded:!0,loaded:!1,loading:!0},e.sendWsMessage({type:"list_directory",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,dirPath:_,workDir:t(),_clientId:e.clientId})},b=_=>{let T=s(_),A=c[T];A?A.loaded?A.expanded=!A.expanded:(A.expanded=!0,h(_)):(c[T]={entries:[],expanded:!0,loaded:!1,loading:!1},h(_))},M=(_,T)=>{let A=I.value,R=A.findIndex(j=>j.path===_.path);if(T&&(T.shiftKey||T.ctrlKey||T.metaKey)){if(T.shiftKey&&r.value>=0&&R>=0){let j=Math.min(r.value,R),F=Math.max(r.value,R);!T.ctrlKey&&!T.metaKey&&n.clear();for(let z=j;z<=F;z++)n.add(A[z].path)}else n.has(_.path)?n.delete(_.path):n.add(_.path);r.value=R;return}n.size>0&&(n.clear(),r.value=-1),_.type==="directory"?b(_.path):i(_.path,_.name),r.value=R},x=_=>{let T=s(_.dirPath);if(_.error){c[T]&&(c[T].loading=!1);return}let A=(_.entries||[]).sort((F,z)=>F.type===z.type?F.name.localeCompare(z.name):F.type==="directory"?-1:1),R=T.replace(/\/$/,""),j=A.map(F=>({...F,path:R+"/"+F.name}));c[T]?(c[T].entries=j,c[T].loaded=!0,c[T].loading=!1):c[T]={entries:j,expanded:!0,loaded:!0,loading:!1},T===l.value&&(a.value=_.dirPath)},D=()=>{Object.keys(c).forEach(_=>delete c[_])};return{treePath:a,treeRootPath:l,treeNodes:c,flattenedTree:I,editingTreePath:d,treePathInputRef:u,rootFolderName:f,rootExpanded:p,toggleRootExpand:g,collapseAll:m,startTreePathEdit:v,confirmTreePath:k,cancelTreePathEdit:w,loadTreeDirectory:h,loadRootDirectory:y,toggleDirectory:b,onTreeItemClick:M,handleDirectoryListing:x,clearTreeNodes:D,initFileBrowser:()=>{let _=t();if(_){let T=s(_);a.value=_,l.value=T,D(),h(_)}},refresh:()=>{l.value&&h(l.value)}}}var Mg=N(()=>{});function Mn(e){let t=e.lastIndexOf(".");if(t<0)return"text";let s=e.substring(t).toLowerCase();return Gb.has(s)?"office":Qb.has(s)?"pdf":Zb.has(s)?"image":"text"}function Yt(e){let t=e.lastIndexOf(".");return t<0?!1:Xb.has(e.substring(t).toLowerCase())}function Jb(e){let t=e.split(".").pop()?.toLowerCase();return{js:"javascript",mjs:"javascript",jsx:"javascript",ts:{name:"javascript",typescript:!0},tsx:{name:"javascript",typescript:!0},json:{name:"javascript",json:!0},py:"python",html:"htmlmixed",htm:"htmlmixed",vue:"htmlmixed",xml:"xml",svg:"xml",css:"css",scss:"css",less:"css",sh:"shell",bash:"shell",zsh:"shell",c:"text/x-csrc",h:"text/x-csrc",cpp:"text/x-c++src",hpp:"text/x-c++src",cs:"text/x-csharp",java:"text/x-java",md:"markdown",markdown:"markdown"}[t]||"text/plain"}function Pg(e,{activeFile:t,editorContainer:s,fontSize:n,clearFindMarkers:r,openFindBar:i,saveFile:o}){let a=Vue.ref(""),l=Vue.reactive({}),c=()=>{},d=()=>{},u=({openQuickOpen:w,openGoToLine:I})=>{c=w,d=I},f=(w,I=0)=>{if(!s.value){I<20&&setTimeout(()=>f(w,I+1),100);return}if(!w)return;if(s.value.innerHTML="",typeof CodeMirror>"u"){let b=document.createElement("textarea");b.value=w.content||"",b.style.cssText="width:100%;height:100%;border:none;outline:none;resize:none;padding:12px;font-family:monospace;font-size:12px;background:var(--bg-main);color:var(--text-main);white-space:pre;tab-size:4;",b.spellcheck=!1,b.addEventListener("input",()=>{w.content=b.value,w.isDirty=b.value!==w.originalContent}),b.addEventListener("keydown",M=>{(M.ctrlKey||M.metaKey)&&M.key==="s"&&(M.preventDefault(),o())}),s.value.appendChild(b),a.value="";return}let y=document.documentElement.getAttribute("data-theme")==="dark"?"material-darker":"default";try{let b=CodeMirror(s.value,{value:w.content||"",mode:Jb(w.name),theme:y,lineNumbers:!0,tabSize:4,indentWithTabs:!1,lineWrapping:!1,readOnly:!1,extraKeys:{"Ctrl-S":()=>o(),"Cmd-S":()=>o(),"Ctrl-P":()=>c(),"Cmd-P":()=>c(),"Ctrl-G":()=>d(),"Cmd-G":()=>d(),"Ctrl-F":()=>i(!1),"Cmd-F":()=>i(!1),"Ctrl-R":()=>i(!0),"Cmd-R":()=>i(!0),"Ctrl-H":()=>i(!0),"Cmd-H":()=>i(!0)}});b.on("change",()=>{let x=b.getValue();w.content=x,w.isDirty=x!==w.originalContent}),w.cmInstance=b,b.getWrapperElement().style.fontSize=n.value+"px";let M=e.currentConversation;M&&l[M]?.[w.path]&&b.setHistory(l[M][w.path]),Vue.nextTick(()=>{b.refresh(),setTimeout(()=>b.refresh(),200)}),a.value=""}catch(b){a.value=`Editor error: ${b.message}`}};return{debugStatus:a,undoHistoryMap:l,createEditor:f,destroyEditor:()=>{r();let w=t.value;w?.cmInstance&&(w.cmInstance.toTextArea&&w.cmInstance.toTextArea(),w.cmInstance=null),s.value&&(s.value.innerHTML="")},setKeyBindings:u,saveCurrentUndoHistory:()=>{let w=e.currentConversation;if(!w)return;let I=t.value;I?.cmInstance&&(l[w]||(l[w]={}),l[w][I.path]=I.cmInstance.getHistory())},saveAllUndoHistory:w=>{if(!w)return;let I=t.value;I?.cmInstance&&(l[w]||(l[w]={}),l[w][I.path]=I.cmInstance.getHistory())},cleanupUndoHistory:(w,I)=>{w&&l[w]&&delete l[w][I]},deleteConversationHistory:w=>{delete l[w]}}}var Gb,Qb,Zb,Xb,$r=N(()=>{Gb=new Set([".docx",".xlsx",".xls",".pptx",".ppt"]),Qb=new Set([".pdf"]),Zb=new Set([".png",".jpg",".jpeg",".gif",".webp",".bmp",".ico"]),Xb=new Set([".md",".markdown",".mdx"])});function Rg(e,{editorContainer:t,createEditor:s,t:n}){let r=Vue.ref(!0),i=Vue.ref(null),o=Vue.ref(null),a=Vue.computed(()=>{let p=e.value;return!!(p&&Yt(p.name))}),l=Vue.computed(()=>{let p=e.value;if(!p||!Yt(p.name)||p.content==null)return"";try{if(typeof marked<"u")return marked.parse(p.content)}catch{}return"<pre>"+(p.content||"")+"</pre>"});function c(){pt(i.value)}async function d(){await pt(i.value)}function u(){r.value=!1,Vue.nextTick(()=>{let p=e.value;p&&t.value&&s(p)})}return{mdPreviewMode:r,mdPreviewRef:i,officePreviewContainer:o,isActiveMarkdown:a,mdRenderedHtml:l,initMermaid:c,renderMermaidBlocks:d,switchToMdEdit:u,renderOfficeLocal:p=>{let g=o.value;if(!g||!p._arrayBuffer)return;g.innerHTML="";let m=("."+p.name.split(".").pop()).toLowerCase();if(m===".docx"&&window.docx)window.docx.renderAsync(p._arrayBuffer,g,null,{className:"docx-preview-content",inWrapper:!0,ignoreWidth:!1,ignoreHeight:!0}).catch(v=>{p.previewError=v.message});else if(m===".xlsx"||m===".xls")try{let v=XLSX.read(p._arrayBuffer,{type:"array"}),k=v.SheetNames[0],w=XLSX.utils.sheet_to_html(v.Sheets[k],{editable:!1});g.innerHTML='<div class="xlsx-sheet-tabs">'+v.SheetNames.map((I,h)=>`<button class="xlsx-sheet-tab${h===0?" active":""}" data-idx="${h}">${I}</button>`).join("")+'</div><div class="xlsx-table-wrap">'+w+"</div>",g.querySelectorAll(".xlsx-sheet-tab").forEach(I=>{I.addEventListener("click",()=>{let h=parseInt(I.dataset.idx),y=v.SheetNames[h],b=XLSX.utils.sheet_to_html(v.Sheets[y],{editable:!1});g.querySelector(".xlsx-table-wrap").innerHTML=b,g.querySelectorAll(".xlsx-sheet-tab").forEach(M=>M.classList.remove("active")),I.classList.add("active")})})}catch(v){p.previewError=v.message}else(m===".pptx"||m===".ppt")&&(g.innerHTML='<div class="preview-unsupported">'+(n?n("files.pptxNotSupported"):"PowerPoint preview not supported")+"</div>")}}}var _g=N(()=>{Tr();$r()});function Eg(e,{getEffectiveWorkDir:t,treePath:s,openFileInTab:n,normalizePath:r,treeRootPath:i,treeNodes:o,loadTreeDirectory:a}){let l=Vue.ref(""),c=Vue.ref([]),d=Vue.ref(!1),u=null,f=Vue.ref(!1),p=Vue.ref(""),g=Vue.ref([]),m=Vue.ref(0),v=Vue.ref(!1),k=Vue.ref(null),w=null,I=Vue.ref(!1),h=Vue.ref(""),y=Vue.ref(null),b=ce=>{!e.currentAgent||!ce.trim()||e.sendWsMessage({type:"file_search",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,query:ce.trim(),dirPath:s.value||t()||"",_clientId:e.clientId})},M=()=>{if(u&&clearTimeout(u),!l.value.trim()){c.value=[],d.value=!1;return}d.value=!0,u=setTimeout(()=>{b(l.value)},300)},x=()=>{l.value="",c.value=[],d.value=!1},D=ce=>{if(ce.type==="directory"){let ve=r(ce.fullPath);i.value=ve,s.value=ce.fullPath,Object.keys(o).forEach(ge=>delete o[ge]),a(ce.fullPath),x()}else n(ce.fullPath,ce.name),x()},V=()=>{f.value=!0,p.value="",g.value=[],m.value=0,v.value=!1,Vue.nextTick(()=>k.value?.focus())},E=()=>{f.value=!1,p.value="",g.value=[]},_=()=>{if(w&&clearTimeout(w),!p.value.trim()){g.value=[],v.value=!1;return}v.value=!0,m.value=0,w=setTimeout(()=>{b(p.value)},200)},T=()=>{g.value.length>0&&(m.value=(m.value+1)%g.value.length)},A=()=>{g.value.length>0&&(m.value=(m.value-1+g.value.length)%g.value.length)},R=ce=>{ce.type!=="directory"&&n(ce.fullPath,ce.name),E()},j=()=>{let ce=g.value[m.value];ce&&R(ce)},F=()=>{I.value=!0,h.value="",Vue.nextTick(()=>y.value?.focus())},z=()=>{I.value=!1,h.value=""};return{searchQuery:l,searchResults:c,searchLoading:d,onSearchInput:M,clearSearch:x,onSearchResultClick:D,quickOpenVisible:f,quickOpenQuery:p,quickOpenResults:g,quickOpenSelectedIndex:m,quickOpenLoading:v,quickOpenInput:k,openQuickOpen:V,closeQuickOpen:E,onQuickOpenInput:_,quickOpenSelectNext:T,quickOpenSelectPrev:A,quickOpenConfirm:j,quickOpenOpenFile:R,goToLineVisible:I,goToLineValue:h,goToLineInput:y,openGoToLine:F,closeGoToLine:z,goToLineConfirm:ce=>{let ve=parseInt(h.value);if(isNaN(ve)||ve<1)return;let ge=ce.value;if(ge?.cmInstance){let pe=ge.cmInstance,P=Math.min(ve-1,pe.lineCount()-1);pe.setCursor({line:P,ch:0}),pe.scrollIntoView({line:P,ch:0},100),pe.focus()}z()},handleFileSearchResult:ce=>{let ve=ce.results||[];f.value?ce.query&&ce.query.trim()===p.value.trim()&&(g.value=ve,v.value=!1,m.value=0):ce.query&&ce.query.trim()===l.value.trim()&&(c.value=ve,d.value=!1)}}}var Dg=N(()=>{});function Lg(e,{getEffectiveWorkDir:t,treePath:s,treeRootPath:n,treeNodes:r,normalizePath:i,loadTreeDirectory:o}){let a=Vue.ref(!1),l=Vue.ref(""),c=Vue.ref([]),d=Vue.ref(!1),u=Vue.ref(""),f=()=>{a.value=!0,u.value="",d.value=!0;let I=s.value||t()||"";l.value=I,c.value=[],e.sendWsMessage({type:"list_directory",conversationId:"_folder_picker",agentId:e.currentAgent,dirPath:I,workDir:t(),_clientId:e.clientId})},p=I=>{d.value=!0,u.value="",e.sendWsMessage({type:"list_directory",conversationId:"_folder_picker",agentId:e.currentAgent,dirPath:I,workDir:t(),_clientId:e.clientId})};return{folderPickerOpen:a,folderPickerPath:l,folderPickerEntries:c,folderPickerLoading:d,folderPickerSelected:u,openFolderPicker:f,folderPickerNavigateUp:()=>{if(!l.value)return;let I=l.value.includes("\\"),h=I?"\\":"/",y=l.value.replace(/[/\\]$/,"").split(/[/\\]/);if(y.pop(),y.length===0)l.value="",p("");else if(I&&y.length===1&&/^[A-Za-z]:$/.test(y[0]))l.value=y[0]+"\\",p(y[0]+"\\");else{let b=y.join(h);l.value=b,p(b)}},folderPickerSelectItem:I=>{u.value=I.name},folderPickerEnter:I=>{let h;if(!l.value)h=I.name+(I.name.endsWith("\\")?"":"\\");else{let y=l.value.includes("\\")||/^[A-Z]:/.test(I.name)?"\\":"/";h=l.value.replace(/[/\\]$/,"")+y+I.name}l.value=h,p(h)},confirmFolderPicker:()=>{let I=l.value;if(!I)return;if(u.value){let y=I.includes("\\")?"\\":"/";I=I.replace(/[/\\]$/,"")+y+u.value}s.value=I,a.value=!1;let h=i(I);n.value=h,Object.keys(r).forEach(y=>delete r[y]),r[h]={entries:[],expanded:!0,loaded:!1,loading:!0},e.sendWsMessage({type:"list_directory",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,dirPath:I,workDir:t(),_clientId:e.clientId})},handleFolderPickerListing:I=>{d.value=!1,c.value=(I.entries||[]).filter(h=>h.type==="directory").sort((h,y)=>h.name.localeCompare(y.name)),I.dirPath!=null&&(l.value=I.dirPath)}}}var $g=N(()=>{});function Vg(e,{normalizePath:t,getEffectiveWorkDir:s,editorContainer:n,createEditor:r,destroyEditor:i,clearFindMarkers:o,saveCurrentUndoHistory:a,saveAllUndoHistory:l,cleanupUndoHistory:c,deleteConversationHistory:d,debugStatus:u,mdPreviewMode:f,renderOfficeLocal:p,performFind:g,findBarVisible:m,findQuery:v,t:k}){let w=Vue.reactive({}),I=Vue.ref([]),h=Vue.ref(-1),y=Vue.ref(!1),b=Vue.ref(!1),M=Vue.computed(()=>h.value>=0&&h.value<I.value.length?I.value[h.value]:null),x=null,D=()=>{x&&clearTimeout(x),x=setTimeout(()=>{e.sendWsMessage({type:"update_file_tabs",openFiles:I.value.map(F=>({path:F.path})),activeIndex:h.value})},500)},V=F=>{F&&(l(F),I.value.length>0?w[F]={files:I.value.map(z=>({path:z.path,name:z.name,content:z.content,originalContent:z.originalContent,isDirty:z.isDirty,fileType:z.fileType})),activeIndex:h.value}:delete w[F],D())},E=F=>{if(i(),!F||!w[F]){I.value=[],h.value=-1;return}let z=w[F];I.value=z.files.map(ee=>({...ee,isDirty:ee.isDirty||!1,originalContent:ee.originalContent||ee.content,cmInstance:null,fileType:ee.fileType||Mn(ee.name||""),blobUrl:null,previewUrl:null,previewLoading:!1,localPreviewReady:!1,previewError:null})),h.value=z.activeIndex,Vue.nextTick(()=>{let ee=M.value;ee&&(!ee.fileType||ee.fileType==="text")&&n.value&&r(ee)})};function _(F,z){let ee=t(F),fe=I.value.findIndex(ge=>ge.path===ee);if(fe>=0){h.value!==fe&&(o(),a(),h.value=fe,Vue.nextTick(()=>{let ge=I.value[fe];ge&&ge.content!=null&&(!ge.fileType||ge.fileType==="text")&&r(ge)})),V(e.currentConversation);return}a();let ce=z||ee.split(/[/\\]/).pop(),ve=Mn(ce);I.value.push({path:ee,name:ce,content:null,originalContent:null,isDirty:!1,cmInstance:null,fileType:ve,blobUrl:null,previewUrl:null,previewLoading:ve!=="text",localPreviewReady:!1,previewError:null}),h.value=I.value.length-1,y.value=!0,ve==="text"&&i(),V(e.currentConversation),u.value=`Loading: ${F}`,e.sendWsMessage({type:"read_file",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,filePath:F,workDir:s(),_clientId:e.clientId})}let T=F=>{F!==h.value&&(o(),a(),h.value=F,V(e.currentConversation),Vue.nextTick(()=>{let z=I.value[F];z&&(!z.fileType||z.fileType==="text"?Yt(z.name)?f.value=!0:z.content!=null&&n.value&&(r(z),m.value&&v.value&&Vue.nextTick(()=>g())):z.fileType==="office"&&z.localPreviewReady&&Vue.nextTick(()=>p(z)))}))},A=F=>{let z=I.value[F];if(z?.isDirty&&!confirm(k("files.unsavedConfirm",{name:z.name})))return;c(e.currentConversation,z.path),z.blobUrl&&URL.revokeObjectURL(z.blobUrl);let ee=F===h.value;I.value.splice(F,1),I.value.length===0?(h.value=-1,i()):h.value>=I.value.length?h.value=I.value.length-1:h.value>F?h.value--:ee&&h.value>=I.value.length&&(h.value=I.value.length-1),V(e.currentConversation),I.value.length>0&&ee&&Vue.nextTick(()=>{let fe=I.value[h.value];fe&&(!fe.fileType||fe.fileType==="text")&&fe.content!=null&&n.value&&r(fe)})};function R(){let F=M.value;!F||!F.isDirty||(b.value=!0,e.sendWsMessage({type:"write_file",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,filePath:F.path,content:F.content,workDir:s(),_clientId:e.clientId}))}return{fileTabsMap:w,openFiles:I,activeFileIndex:h,activeFile:M,fileLoading:y,fileSaving:b,saveTabsState:V,restoreTabsState:E,openFileInTab:_,switchToTab:T,closeFileTab:A,saveFile:R,handleConversationDeleted:F=>{let{conversationId:z}=F.detail;z&&(delete w[z],d(z))}}}var Hg=N(()=>{$r()});function Og({store:e,normalizePath:t,getEffectiveWorkDir:s,openFiles:n,activeFileIndex:r,activeFile:i,fileLoading:o,fileSaving:a,saveTabsState:l,createEditor:c,openFileInTab:d,tree:u,fp:f,qo:p,ops:g,mdPreviewMode:m,renderOfficeLocal:v,editorContainer:k,debugStatus:w}){return{handleWorkbenchMessage:y=>{let b=y.detail;if(b)switch(b.type){case"directory_listing":{if(b.conversationId==="_folder_picker"){f.handleFolderPickerListing(b);return}u.handleDirectoryListing(b);break}case"file_content":{if(o.value=!1,b.error){w.value=`Error: ${b.error}`,g.clearPendingDownload();let D=t(b.filePath),V=n.value.find(E=>E.path===D);V&&(V.previewLoading=!1,V.previewError=b.error);return}let M=t(b.filePath);if(g.getPendingDownload()&&t(g.getPendingDownload())===M){g.clearPendingDownload();try{if(b.binary){let D=`${location.protocol}//${location.host}/api/preview/${b.fileId}?token=${b.previewToken}`,V=document.createElement("a");V.href=D,V.download=M.split("/").pop()||"download",document.body.appendChild(V),V.click(),document.body.removeChild(V)}else{let D=new Blob([b.content||""],{type:"application/octet-stream"}),V=URL.createObjectURL(D),E=document.createElement("a");E.href=V,E.download=M.split("/").pop()||"download",document.body.appendChild(E),E.click(),document.body.removeChild(E),URL.revokeObjectURL(V)}}catch{}return}let x=n.value.findIndex(D=>D.path===M);if(x>=0){let D=n.value[x];if(b.binary){D.previewLoading=!1;let V=`${location.protocol}//${location.host}/api/preview/${b.fileId}?token=${b.previewToken}`,E=D.fileType||Mn(D.name);D.fileType=E,E==="pdf"||E==="image"?fetch(V).then(_=>_.blob()).then(_=>{D.blobUrl=URL.createObjectURL(_)}).catch(_=>{D.previewError=_.message}):E==="office"&&((localStorage.getItem("officePreviewMode")||"local")==="online"?D.previewUrl="https://view.officeapps.live.com/op/embed.aspx?src="+encodeURIComponent(V):fetch(V).then(T=>T.arrayBuffer()).then(T=>{D._arrayBuffer=T,D.localPreviewReady=!0,x===r.value&&Vue.nextTick(()=>v(D))}).catch(T=>{D.previewError=T.message})),l(e.currentConversation);return}D.content=b.content||"",D.originalContent=b.content||"",D.isDirty=!1,l(e.currentConversation),x===r.value&&(Yt(D.name)&&m.value||Vue.nextTick(()=>{setTimeout(()=>c(D),100)}))}break}case"file_saved":{if(a.value=!1,b.error)return;let M=t(b.filePath),x=n.value.find(D=>D.path===M);x&&(x.originalContent=x.content,x.isDirty=!1,l(e.currentConversation));break}case"file_search_result":{p.handleFileSearchResult(b);break}case"file_op_result":{g.handleFileOpResult(b,u.loadTreeDirectory,u.treeRootPath.value);break}case"file_tabs_restored":{if(b.openFiles?.length>0&&n.value.length===0){let M=b.activeIndex||0,x=b.openFiles.length;for(let D of b.openFiles){let V=t(D.path),E=V.split("/").pop(),_=Mn(E);n.value.push({path:V,name:E,content:null,originalContent:null,isDirty:!1,cmInstance:null,fileType:_,blobUrl:null,previewUrl:null,previewLoading:_!=="text",localPreviewReady:!1,previewError:null}),e.sendWsMessage({type:"read_file",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,filePath:D.path})}r.value=M>=0&&M<x?M:0}break}}},handleOpenFile:y=>{let{filePath:b}=y.detail,M=t(b);d(M,M.split("/").pop())}}}var Fg=N(()=>{$r()});var Bg,Ng=N(()=>{Ol();Cg();xg();Mg();$r();_g();Dg();$g();Hg();Fg();Bg={name:"FilesTab",template:`
2259
+ `,setup(){let e=Pinia.useChatStore(),t=Vue.inject("t"),s=O=>O.split(/[/\\]/).pop()||O,n=O=>{let L=O.split(/[/\\]/);return L.pop(),L.join("/")},r=O=>ao(s(O)),i=Vue.ref(null),o=Vue.reactive({staged:!1,modified:!1,untracked:!1}),a=O=>{o[O]=!o[O]},l=Vue.ref(!1),c=Vue.ref(""),d=Vue.ref(null),u=Vue.ref([]),f=Vue.computed(()=>e.effectiveWorkDir||""),p=Vue.ref(""),g=Vue.computed(()=>p.value.trim()||f.value),m=Vue.ref(null),v=Vue.ref(!1),k=Vue.ref(!1),w=Vue.ref(""),I=Vue.ref(null),h=Vue.ref([]),y=Vue.ref(null),b=Vue.ref(!0),M=Vue.ref(!1),x=Vue.ref(""),D=Vue.ref(null),V=Vue.ref(0),E=Vue.ref(0),_=O=>O==null||O===""?"":fg(O,m.value||""),T=Vue.ref(parseInt(localStorage.getItem("gitDiffFontSize"))||12),A=O=>{T.value=Math.max(8,Math.min(24,O)),localStorage.setItem("gitDiffFontSize",T.value.toString())},R=()=>A(T.value+1),j=()=>A(T.value-1),F=O=>{O.deltaY<0?R():O.deltaY>0&&j()},z=Vue.computed(()=>{let O=h.value;if(!O||O.length===0)return[];let L=O.length,X=[],ne=0;for(;ne<L;){let ke=O[ne];if(ke.type==="addition"||ke.type==="deletion"||ke.type==="modification"){let Y=ke.type==="modification"?"modification":ke.type,te=ne;for(;ne<L&&(O[ne].type===Y||O[ne].type==="modification"&&Y!=="modification");)ne++;let ye=ne-te;X.push({type:Y,top:te/L*100,height:Math.max(ye/L*100,.5)})}else ne++}return X}),ee=O=>{let L=i.value;if(!L)return;let X=O.currentTarget.getBoundingClientRect(),ne=(O.clientY-X.top)/X.height;L.scrollTop=ne*(L.scrollHeight-L.clientHeight)},fe=Vue.computed(()=>u.value.filter(O=>O.indexStatus!==" "&&O.indexStatus!=="?")),ce=Vue.computed(()=>u.value.filter(O=>O.workTreeStatus==="M"||O.workTreeStatus==="D")),ve=Vue.computed(()=>u.value.filter(O=>O.indexStatus==="?"&&O.workTreeStatus==="?")),ge=vg(e,{effectiveGitWorkDir:g,gitOperating:M,gitOpFeedback:D,commitMessage:x}),pe=()=>ge.loadGitStatus(l,c),P=()=>{pe()},U=bg(e,g),re=O=>lo(O),me=()=>U.confirmFolderPicker(p,pe),Me=(O,L)=>{m.value=O.path,v.value=L,k.value=!0,w.value="",I.value=null,h.value=[],y.value=null;let X=O.indexStatus==="?"&&O.workTreeStatus==="?";e.sendWsMessage({type:"git_diff",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,workDir:g.value,filePath:O.path,staged:L,untracked:X,fullFile:b.value,_clientId:e.clientId})},K=()=>{if(b.value=!b.value,m.value){let O=u.value.find(L=>L.path===m.value);O&&Me(O,v.value)}},q=O=>{let L=O.detail;if(L)switch(L.type){case"directory_listing":{if(U.handleDirectoryListing(L))return;break}case"git_status_result":{if(l.value=!1,L.error){c.value=L.error,d.value=null,u.value=[];return}if(c.value="",d.value=L.branch||"HEAD",u.value=L.files||[],V.value=L.ahead||0,E.value=L.behind||0,m.value){let X=u.value.find(ne=>ne.path===m.value);if(X){let ne=X.indexStatus!==" "&&X.indexStatus!=="?";v.value=ne}else m.value=null,I.value=null,h.value=[],y.value=null}break}case"git_diff_result":{if(k.value=!1,L.error){w.value=L.error;return}w.value="";let X=mg(L.diff,L.newFileContent,t);y.value=X.stats,h.value=X.lines,I.value=X.content;break}case"git_op_result":{ge.handleGitOpResult(L,pe);break}}};Vue.watch(()=>e.currentAgent,()=>{d.value=null,u.value=[],c.value="",m.value=null,I.value=null,e.currentAgent&&Vue.nextTick(()=>pe())}),Vue.watch(()=>e.currentConversation,()=>{e.currentAgent&&(m.value=null,I.value=null,h.value=[],y.value=null,Vue.nextTick(()=>pe()))});let B=()=>pe();return Vue.onMounted(()=>{window.addEventListener("workbench-message",q),e.currentAgent&&pe()}),Vue.onUnmounted(()=>{window.removeEventListener("workbench-message",q),ge.cleanup()}),{store:e,getFileName:s,getDirName:n,getFileIconHtml:r,hlLine:_,collapsedGroups:o,toggleGroup:a,gitLoading:l,gitError:c,gitBranch:d,gitFiles:u,gitWorkDir:p,defaultWorkDir:f,changeGitWorkDir:P,stagedFiles:fe,modifiedFiles:ce,untrackedFiles:ve,selectedGitFile:m,selectedStaged:v,diffLoading:k,diffError:w,diffContent:I,diffLines:h,diffStats:y,diffFullFile:b,toggleDiffMode:K,scrollMarkers:z,diffScrollContainer:i,onMarkerClick:ee,fontSize:T,zoomIn:R,zoomOut:j,onWheel:F,gitOperating:M,commitMessage:x,gitOpFeedback:D,gitAhead:V,gitBehind:E,stageFile:ge.stageFile,unstageFile:ge.unstageFile,discardFile:ge.discardFile,stageAll:ge.stageAll,unstageAll:ge.unstageAll,commitChanges:ge.commitChanges,pushChanges:ge.pushChanges,selectGitFile:Me,refresh:B,folderPickerOpen:U.folderPickerOpen,folderPickerPath:U.folderPickerPath,folderPickerEntries:U.folderPickerEntries,folderPickerLoading:U.folderPickerLoading,folderPickerSelected:U.folderPickerSelected,getFolderIcon:re,openFolderPicker:U.openFolderPicker,folderPickerNavigateUp:U.folderPickerNavigateUp,folderPickerSelectItem:U.folderPickerSelectItem,folderPickerEnter:U.folderPickerEnter,confirmFolderPicker:me}}}});function Ig(e){let t=Vue.ref(!1),s=Vue.ref(!1),n=Vue.ref(""),r=Vue.ref(""),i=Vue.ref(!1),o=Vue.ref(!1),a=Vue.ref(0),l=Vue.ref(-1),c=Vue.ref(null),d=Vue.ref(null),u=[],f=[],p=()=>{let V=e.value?.cmInstance;if(!V)return;let _=V.getWrapperElement().querySelector(".cm-find-scrollbar-annotations");_&&_.remove()},g=()=>{let V=e.value?.cmInstance;if(!V||f.length===0)return;p();let E=V.getWrapperElement();if(!E.querySelector(".CodeMirror-vscrollbar"))return;let T=V.lineCount();if(T===0)return;let A=document.createElement("div");A.className="cm-find-scrollbar-annotations";for(let R of f){let j=R.from.line/T*100,F=document.createElement("div");F.className="cm-find-scrollbar-tick",F.style.top=j+"%",A.appendChild(F)}E.appendChild(A)},m=()=>{for(let V of u)try{V.clear()}catch{}u=[],f=[],a.value=0,l.value=-1,p()},v=V=>{let E=e.value?.cmInstance;if(!E||!f[V])return;for(let T=0;T<u.length;T++){if(!u[T])continue;let A=u[T].find();A&&(u[T].clear(),u[T]=E.markText(A.from,A.to,{className:"cm-find-highlight"}))}let _=f[V];if(u[V]){let T=u[V].find();T&&(u[V].clear(),u[V]=E.markText(T.from,T.to,{className:"cm-find-highlight cm-find-current"}))}setTimeout(()=>{E.scrollIntoView({from:_.from,to:_.to},100)},0)},k=()=>{m();let V=e.value?.cmInstance;if(!V||!n.value)return;let E=n.value;if(E.length<3)return;let _=V.getValue(),T=i.value,A=o.value,R=[];try{if(A){let j=T?"g":"gi",F=new RegExp(E,j),z;for(;(z=F.exec(_))!==null;){if(z[0].length===0){F.lastIndex++;continue}let ee=V.posFromIndex(z.index),fe=V.posFromIndex(z.index+z[0].length);if(R.push({from:ee,to:fe}),R.length>1e4)break}}else{let j=T?E:E.toLowerCase(),F=T?_:_.toLowerCase(),z=0;for(;(z=F.indexOf(j,z))!==-1;){let ee=V.posFromIndex(z),fe=V.posFromIndex(z+E.length);if(R.push({from:ee,to:fe}),z+=E.length,R.length>1e4)break}}}catch{return}f=R,a.value=R.length;for(let j of R)u.push(V.markText(j.from,j.to,{className:"cm-find-highlight"}));if(R.length>0){let j=V.getCursor(),F=0;for(let z=0;z<R.length;z++){if(CodeMirror.cmpPos(R[z].from,j)>=0){F=z;break}z===R.length-1&&(F=0)}l.value=F,v(F)}g()};return{findBarVisible:t,replaceBarVisible:s,findQuery:n,replaceQuery:r,findCaseSensitive:i,findUseRegex:o,findMatchCount:a,findMatchIndex:l,findInputRef:c,replaceInputRef:d,clearFindMarkers:m,performFind:k,onFindInput:()=>{k()},findNext:()=>{if(f.length===0)return;let V=(l.value+1)%f.length;l.value=V,v(V)},findPrev:()=>{if(f.length===0)return;let V=(l.value-1+f.length)%f.length;l.value=V,v(V)},openFindBar:(V=!1)=>{t.value=!0,s.value=V;let E=e.value?.cmInstance;if(E){let _=E.getSelection();_&&(n.value=_)}Vue.nextTick(()=>{c.value?.focus(),c.value?.select(),n.value&&k()})},closeFindBar:()=>{m(),t.value=!1,s.value=!1;let V=e.value?.cmInstance;V&&V.focus()},toggleReplaceBar:()=>{s.value=!s.value,s.value&&Vue.nextTick(()=>d.value?.focus())},replaceOne:()=>{let V=e.value?.cmInstance;if(!V||f.length===0||l.value<0)return;let E=f[l.value];V.replaceRange(r.value,E.from,E.to),k()},replaceAll:()=>{let V=e.value?.cmInstance;!V||f.length===0||(V.operation(()=>{for(let E=f.length-1;E>=0;E--)V.replaceRange(r.value,f[E].from,f[E].to)}),k())}}}var Cg=N(()=>{});function Ag(e,t){let{getEffectiveWorkDir:s,treePath:n}=t,r=Vue.reactive(new Set),i=Vue.ref(-1),o=Vue.ref(!1),a=Vue.ref(null),l=null,c=null,d=Vue.ref(!1),u=Vue.ref(""),f=Vue.ref("file"),p=Vue.ref(null),g=Vue.ref(!1),m=Vue.ref(""),v=Vue.ref(null),k=Vue.reactive({visible:!1,x:0,y:0,entry:null}),w=Vue.ref(!1),I=Vue.ref(""),h=Vue.ref(null),y=null,b=Vue.reactive({dragging:null,dropTarget:null}),M=Vue.ref(!1),x=(Y,te)=>{l&&clearTimeout(l),a.value={ok:Y,message:te},l=setTimeout(()=>{a.value=null},4e3)},D=()=>{o.value=!0,c&&clearTimeout(c),c=setTimeout(()=>{o.value&&(o.value=!1,x(!1,"Operation timed out"))},15e3)},V=Y=>{r.has(Y)?r.delete(Y):r.add(Y)},E=()=>{r.clear(),i.value=-1},_=Y=>{f.value=Y,u.value="",d.value=!0,Vue.nextTick(()=>p.value?.focus())},T=()=>{let Y=u.value.trim();if(!Y)return;d.value=!1;let te=n.value||s();if(!te)return;let ye=te.includes("\\")?"\\":"/",ae=te.replace(/[/\\]$/,"")+ye+Y;D(),e.sendWsMessage({type:"create_file",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,filePath:ae,isDirectory:f.value==="directory",workDir:s(),_clientId:e.clientId})},A=(Y,te)=>{let ye=Y.path.split("/").pop();confirm(te("files.deleteConfirm",{name:ye})+(Y.type==="directory"?te("files.deleteDirHint"):""))&&(D(),e.sendWsMessage({type:"delete_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[Y.path],workDir:s(),_clientId:e.clientId}))},R=Y=>{let te=r.size;te!==0&&confirm(Y("files.deleteSelectedConfirm",{count:te}))&&(D(),e.sendWsMessage({type:"delete_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[...r],workDir:s(),_clientId:e.clientId}))},j=()=>{m.value=n.value||s()||"",g.value=!0,Vue.nextTick(()=>v.value?.focus())},F=()=>{let Y=m.value.trim();!Y||r.size===0||(g.value=!1,D(),e.sendWsMessage({type:"move_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[...r],destination:Y,workDir:s(),_clientId:e.clientId}))},z=(Y,te)=>{let $e=Y.clientX,Ae=Y.clientY;$e+180>window.innerWidth&&($e=window.innerWidth-180),Ae+240>window.innerHeight&&(Ae=window.innerHeight-240),k.entry=te,k.x=$e,k.y=Ae,k.visible=!0},ee=()=>{k.visible=!1};return{selectedPaths:r,lastClickedIndex:i,fileOperating:o,fileOpFeedback:a,newFileDialogVisible:d,newFileName:u,newFileType:f,newFileInput:p,moveDialogVisible:g,moveDestination:m,moveDestInput:v,contextMenu:k,renameDialogVisible:w,renameNewName:I,renameInput:h,dragState:b,externalDropActive:M,showFileOpFeedback:x,toggleSelection:V,clearSelection:E,showNewFileDialog:_,confirmNewFile:T,deleteSingleFile:A,deleteSelected:R,openMoveDialog:j,confirmMove:F,showContextMenu:z,hideContextMenu:ee,ctxRename:()=>{let Y=k.entry;ee(),Y&&(I.value=Y.name,w.value=!0,Vue.nextTick(()=>{let te=h.value;if(te)if(te.focus(),Y.type==="file"){let ye=Y.name.lastIndexOf(".");ye>0?te.setSelectionRange(0,ye):te.select()}else te.select()}))},confirmRename:()=>{let Y=k.entry,te=I.value.trim();if(!te||!Y||te===Y.name){w.value=!1;return}w.value=!1;let ye=Y.path.replace(/\/$/,"").split("/");ye.pop();let ae=ye.join("/")||"/";D(),e.sendWsMessage({type:"move_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[Y.path],destination:ae,newName:te,workDir:s(),_clientId:e.clientId})},ctxCopy:()=>{let Y=k.entry;if(ee(),!Y)return;let te=Y.path.replace(/\/$/,"").split("/");te.pop();let ye=te.join("/")||"/";D(),e.sendWsMessage({type:"copy_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[Y.path],destination:ye,workDir:s(),_clientId:e.clientId})},ctxMoveTo:()=>{let Y=k.entry;ee(),Y&&(r.clear(),r.add(Y.path),j())},ctxDelete:Y=>{let te=k.entry;ee(),te&&A(te,Y)},ctxDownload:()=>{let Y=k.entry;ee(),!(!Y||Y.type!=="file")&&(y=Y.path,e.sendWsMessage({type:"read_file",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,filePath:Y.path,workDir:s(),_clientId:e.clientId}))},onDragStart:(Y,te)=>{b.dragging=te,Y.dataTransfer.setData("text/plain",te.path),Y.dataTransfer.effectAllowed="move"},onDragOver:(Y,te)=>{if(!b.dragging&&Y.dataTransfer.types.includes("Files")){te.type==="directory"&&(Y.dataTransfer.dropEffect="copy",b.dropTarget=te.path);return}!b.dragging||te.type!=="directory"||te.path!==b.dragging.path&&(te.path.startsWith(b.dragging.path+"/")||(Y.dataTransfer.dropEffect="move",b.dropTarget=te.path))},onDragLeave:Y=>{let te=Y.relatedTarget;te&&Y.currentTarget.contains(te)||(b.dropTarget=null)},onDrop:(Y,te,ye)=>{if(b.dropTarget=null,!b.dragging&&Y.dataTransfer.files.length>0&&te.type==="directory"){ye(Y.dataTransfer.files,te.path);return}if(!b.dragging||te.type!=="directory"){b.dragging=null;return}if(te.path===b.dragging.path){b.dragging=null;return}D(),e.sendWsMessage({type:"move_files",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,paths:[b.dragging.path],destination:te.path,workDir:s(),_clientId:e.clientId}),b.dragging=null},onTreeDragOver:Y=>{b.dragging||Y.dataTransfer.types.includes("Files")&&(Y.dataTransfer.dropEffect="copy",M.value=!0)},onTreeDragLeave:Y=>{let te=Y.relatedTarget;te&&Y.currentTarget.contains(te)||(M.value=!1)},onTreeDrop:(Y,te,ye)=>{if(M.value=!1,!b.dragging&&Y.dataTransfer.files.length>0){let ae=n.value||te||s();ye(Y.dataTransfer.files,ae)}},handleExternalFileDrop:async(Y,te)=>{if(!te)return;let ye=[],ae=[];for(let $e of Y)ae.push(new Promise(Ae=>{let xe=new FileReader;xe.onload=()=>{let qe=btoa(new Uint8Array(xe.result).reduce((Xe,ht)=>Xe+String.fromCharCode(ht),""));ye.push({name:$e.name,data:qe}),Ae()},xe.onerror=()=>Ae(),xe.readAsArrayBuffer($e)}));await Promise.all(ae),ye.length!==0&&(o.value=!0,c&&clearTimeout(c),c=setTimeout(()=>{o.value&&(o.value=!1,x(!1,"Upload timed out"))},3e4),e.sendWsMessage({type:"upload_to_dir",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,files:ye,dirPath:te,workDir:s(),_clientId:e.clientId}))},handleFileOpResult:(Y,te,ye)=>{o.value=!1,c&&(clearTimeout(c),c=null),x(Y.success,Y.success?Y.message:Y.error||"Operation failed"),Y.success&&(ye&&te(ye),(Y.operation==="delete"||Y.operation==="move")&&(r.clear(),i.value=-1))},getPendingDownload:()=>y,clearPendingDownload:()=>{y=null},cleanup:()=>{l&&clearTimeout(l),c&&clearTimeout(c)}}}var xg=N(()=>{});function Tg(e,{getEffectiveWorkDir:t,normalizePath:s,selectedPaths:n,lastClickedIndex:r,openFileInTab:i,clearSelection:o}){let a=Vue.ref(""),l=Vue.ref(""),c=Vue.reactive({}),d=Vue.ref(!1),u=Vue.ref(null),f=Vue.computed(()=>{if(!l.value)return"EXPLORER";let _=l.value.replace(/[\\/]+$/,"").split(/[\\/]/);return(_[_.length-1]||l.value).toUpperCase()}),p=Vue.computed(()=>l.value?!!c[l.value]?.expanded:!1),g=()=>{if(!l.value)return;let _=c[l.value];_&&(_.expanded=!_.expanded)},m=()=>{for(let _ of Object.keys(c))c[_]&&(c[_].expanded=!1)},v=()=>{d.value=!0,Vue.nextTick(()=>u.value?.focus())},k=()=>{d.value=!1,y()},w=()=>{d.value=!1},I=Vue.computed(()=>{let _=[],T=(A,R)=>{let j=c[A];if(!(!j||!j.entries))for(let F of j.entries)_.push({...F,depth:R}),F.type==="directory"&&c[F.path]?.expanded&&T(F.path,R+1)};return l.value&&c[l.value]?.expanded&&T(l.value,0),_}),h=_=>{let T=s(_);c[T]?c[T].loading=!0:c[T]={entries:[],expanded:!0,loaded:!1,loading:!0},e.sendWsMessage({type:"list_directory",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,dirPath:_,workDir:t(),_clientId:e.clientId})},y=()=>{let _=a.value.trim();if(!_)return;let T=s(_);l.value=T,Object.keys(c).forEach(A=>delete c[A]),c[T]={entries:[],expanded:!0,loaded:!1,loading:!0},e.sendWsMessage({type:"list_directory",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,dirPath:_,workDir:t(),_clientId:e.clientId})},b=_=>{let T=s(_),A=c[T];A?A.loaded?A.expanded=!A.expanded:(A.expanded=!0,h(_)):(c[T]={entries:[],expanded:!0,loaded:!1,loading:!1},h(_))},M=(_,T)=>{let A=I.value,R=A.findIndex(j=>j.path===_.path);if(T&&(T.shiftKey||T.ctrlKey||T.metaKey)){if(T.shiftKey&&r.value>=0&&R>=0){let j=Math.min(r.value,R),F=Math.max(r.value,R);!T.ctrlKey&&!T.metaKey&&n.clear();for(let z=j;z<=F;z++)n.add(A[z].path)}else n.has(_.path)?n.delete(_.path):n.add(_.path);r.value=R;return}n.size>0&&(n.clear(),r.value=-1),_.type==="directory"?b(_.path):i(_.path,_.name),r.value=R},x=_=>{let T=s(_.dirPath);if(_.error){c[T]&&(c[T].loading=!1);return}let A=(_.entries||[]).sort((F,z)=>F.type===z.type?F.name.localeCompare(z.name):F.type==="directory"?-1:1),R=T.replace(/\/$/,""),j=A.map(F=>({...F,path:R+"/"+F.name}));c[T]?(c[T].entries=j,c[T].loaded=!0,c[T].loading=!1):c[T]={entries:j,expanded:!0,loaded:!0,loading:!1},T===l.value&&(a.value=_.dirPath)},D=()=>{Object.keys(c).forEach(_=>delete c[_])};return{treePath:a,treeRootPath:l,treeNodes:c,flattenedTree:I,editingTreePath:d,treePathInputRef:u,rootFolderName:f,rootExpanded:p,toggleRootExpand:g,collapseAll:m,startTreePathEdit:v,confirmTreePath:k,cancelTreePathEdit:w,loadTreeDirectory:h,loadRootDirectory:y,toggleDirectory:b,onTreeItemClick:M,handleDirectoryListing:x,clearTreeNodes:D,initFileBrowser:()=>{let _=t();if(_){let T=s(_);a.value=_,l.value=T,D(),h(_)}},refresh:()=>{l.value&&h(l.value)}}}var Mg=N(()=>{});function Mn(e){let t=e.lastIndexOf(".");if(t<0)return"text";let s=e.substring(t).toLowerCase();return Gb.has(s)?"office":Qb.has(s)?"pdf":Xb.has(s)?"image":"text"}function Yt(e){let t=e.lastIndexOf(".");return t<0?!1:Zb.has(e.substring(t).toLowerCase())}function Jb(e){let t=e.split(".").pop()?.toLowerCase();return{js:"javascript",mjs:"javascript",jsx:"javascript",ts:{name:"javascript",typescript:!0},tsx:{name:"javascript",typescript:!0},json:{name:"javascript",json:!0},py:"python",html:"htmlmixed",htm:"htmlmixed",vue:"htmlmixed",xml:"xml",svg:"xml",css:"css",scss:"css",less:"css",sh:"shell",bash:"shell",zsh:"shell",c:"text/x-csrc",h:"text/x-csrc",cpp:"text/x-c++src",hpp:"text/x-c++src",cs:"text/x-csharp",java:"text/x-java",md:"markdown",markdown:"markdown"}[t]||"text/plain"}function Pg(e,{activeFile:t,editorContainer:s,fontSize:n,clearFindMarkers:r,openFindBar:i,saveFile:o}){let a=Vue.ref(""),l=Vue.reactive({}),c=()=>{},d=()=>{},u=({openQuickOpen:w,openGoToLine:I})=>{c=w,d=I},f=(w,I=0)=>{if(!s.value){I<20&&setTimeout(()=>f(w,I+1),100);return}if(!w)return;if(s.value.innerHTML="",typeof CodeMirror>"u"){let b=document.createElement("textarea");b.value=w.content||"",b.style.cssText="width:100%;height:100%;border:none;outline:none;resize:none;padding:12px;font-family:monospace;font-size:12px;background:var(--bg-main);color:var(--text-main);white-space:pre;tab-size:4;",b.spellcheck=!1,b.addEventListener("input",()=>{w.content=b.value,w.isDirty=b.value!==w.originalContent}),b.addEventListener("keydown",M=>{(M.ctrlKey||M.metaKey)&&M.key==="s"&&(M.preventDefault(),o())}),s.value.appendChild(b),a.value="";return}let y=document.documentElement.getAttribute("data-theme")==="dark"?"material-darker":"default";try{let b=CodeMirror(s.value,{value:w.content||"",mode:Jb(w.name),theme:y,lineNumbers:!0,tabSize:4,indentWithTabs:!1,lineWrapping:!1,readOnly:!1,extraKeys:{"Ctrl-S":()=>o(),"Cmd-S":()=>o(),"Ctrl-P":()=>c(),"Cmd-P":()=>c(),"Ctrl-G":()=>d(),"Cmd-G":()=>d(),"Ctrl-F":()=>i(!1),"Cmd-F":()=>i(!1),"Ctrl-R":()=>i(!0),"Cmd-R":()=>i(!0),"Ctrl-H":()=>i(!0),"Cmd-H":()=>i(!0)}});b.on("change",()=>{let x=b.getValue();w.content=x,w.isDirty=x!==w.originalContent}),w.cmInstance=b,b.getWrapperElement().style.fontSize=n.value+"px";let M=e.currentConversation;M&&l[M]?.[w.path]&&b.setHistory(l[M][w.path]),Vue.nextTick(()=>{b.refresh(),setTimeout(()=>b.refresh(),200)}),a.value=""}catch(b){a.value=`Editor error: ${b.message}`}};return{debugStatus:a,undoHistoryMap:l,createEditor:f,destroyEditor:()=>{r();let w=t.value;w?.cmInstance&&(w.cmInstance.toTextArea&&w.cmInstance.toTextArea(),w.cmInstance=null),s.value&&(s.value.innerHTML="")},setKeyBindings:u,saveCurrentUndoHistory:()=>{let w=e.currentConversation;if(!w)return;let I=t.value;I?.cmInstance&&(l[w]||(l[w]={}),l[w][I.path]=I.cmInstance.getHistory())},saveAllUndoHistory:w=>{if(!w)return;let I=t.value;I?.cmInstance&&(l[w]||(l[w]={}),l[w][I.path]=I.cmInstance.getHistory())},cleanupUndoHistory:(w,I)=>{w&&l[w]&&delete l[w][I]},deleteConversationHistory:w=>{delete l[w]}}}var Gb,Qb,Xb,Zb,$r=N(()=>{Gb=new Set([".docx",".xlsx",".xls",".pptx",".ppt"]),Qb=new Set([".pdf"]),Xb=new Set([".png",".jpg",".jpeg",".gif",".webp",".bmp",".ico"]),Zb=new Set([".md",".markdown",".mdx"])});function Rg(e,{editorContainer:t,createEditor:s,t:n}){let r=Vue.ref(!0),i=Vue.ref(null),o=Vue.ref(null),a=Vue.computed(()=>{let p=e.value;return!!(p&&Yt(p.name))}),l=Vue.computed(()=>{let p=e.value;if(!p||!Yt(p.name)||p.content==null)return"";try{if(typeof marked<"u")return marked.parse(p.content)}catch{}return"<pre>"+(p.content||"")+"</pre>"});function c(){pt(i.value)}async function d(){await pt(i.value)}function u(){r.value=!1,Vue.nextTick(()=>{let p=e.value;p&&t.value&&s(p)})}return{mdPreviewMode:r,mdPreviewRef:i,officePreviewContainer:o,isActiveMarkdown:a,mdRenderedHtml:l,initMermaid:c,renderMermaidBlocks:d,switchToMdEdit:u,renderOfficeLocal:p=>{let g=o.value;if(!g||!p._arrayBuffer)return;g.innerHTML="";let m=("."+p.name.split(".").pop()).toLowerCase();if(m===".docx"&&window.docx)window.docx.renderAsync(p._arrayBuffer,g,null,{className:"docx-preview-content",inWrapper:!0,ignoreWidth:!1,ignoreHeight:!0}).catch(v=>{p.previewError=v.message});else if(m===".xlsx"||m===".xls")try{let v=XLSX.read(p._arrayBuffer,{type:"array"}),k=v.SheetNames[0],w=XLSX.utils.sheet_to_html(v.Sheets[k],{editable:!1});g.innerHTML='<div class="xlsx-sheet-tabs">'+v.SheetNames.map((I,h)=>`<button class="xlsx-sheet-tab${h===0?" active":""}" data-idx="${h}">${I}</button>`).join("")+'</div><div class="xlsx-table-wrap">'+w+"</div>",g.querySelectorAll(".xlsx-sheet-tab").forEach(I=>{I.addEventListener("click",()=>{let h=parseInt(I.dataset.idx),y=v.SheetNames[h],b=XLSX.utils.sheet_to_html(v.Sheets[y],{editable:!1});g.querySelector(".xlsx-table-wrap").innerHTML=b,g.querySelectorAll(".xlsx-sheet-tab").forEach(M=>M.classList.remove("active")),I.classList.add("active")})})}catch(v){p.previewError=v.message}else(m===".pptx"||m===".ppt")&&(g.innerHTML='<div class="preview-unsupported">'+(n?n("files.pptxNotSupported"):"PowerPoint preview not supported")+"</div>")}}}var _g=N(()=>{Tr();$r()});function Eg(e,{getEffectiveWorkDir:t,treePath:s,openFileInTab:n,normalizePath:r,treeRootPath:i,treeNodes:o,loadTreeDirectory:a}){let l=Vue.ref(""),c=Vue.ref([]),d=Vue.ref(!1),u=null,f=Vue.ref(!1),p=Vue.ref(""),g=Vue.ref([]),m=Vue.ref(0),v=Vue.ref(!1),k=Vue.ref(null),w=null,I=Vue.ref(!1),h=Vue.ref(""),y=Vue.ref(null),b=ce=>{!e.currentAgent||!ce.trim()||e.sendWsMessage({type:"file_search",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,query:ce.trim(),dirPath:s.value||t()||"",_clientId:e.clientId})},M=()=>{if(u&&clearTimeout(u),!l.value.trim()){c.value=[],d.value=!1;return}d.value=!0,u=setTimeout(()=>{b(l.value)},300)},x=()=>{l.value="",c.value=[],d.value=!1},D=ce=>{if(ce.type==="directory"){let ve=r(ce.fullPath);i.value=ve,s.value=ce.fullPath,Object.keys(o).forEach(ge=>delete o[ge]),a(ce.fullPath),x()}else n(ce.fullPath,ce.name),x()},V=()=>{f.value=!0,p.value="",g.value=[],m.value=0,v.value=!1,Vue.nextTick(()=>k.value?.focus())},E=()=>{f.value=!1,p.value="",g.value=[]},_=()=>{if(w&&clearTimeout(w),!p.value.trim()){g.value=[],v.value=!1;return}v.value=!0,m.value=0,w=setTimeout(()=>{b(p.value)},200)},T=()=>{g.value.length>0&&(m.value=(m.value+1)%g.value.length)},A=()=>{g.value.length>0&&(m.value=(m.value-1+g.value.length)%g.value.length)},R=ce=>{ce.type!=="directory"&&n(ce.fullPath,ce.name),E()},j=()=>{let ce=g.value[m.value];ce&&R(ce)},F=()=>{I.value=!0,h.value="",Vue.nextTick(()=>y.value?.focus())},z=()=>{I.value=!1,h.value=""};return{searchQuery:l,searchResults:c,searchLoading:d,onSearchInput:M,clearSearch:x,onSearchResultClick:D,quickOpenVisible:f,quickOpenQuery:p,quickOpenResults:g,quickOpenSelectedIndex:m,quickOpenLoading:v,quickOpenInput:k,openQuickOpen:V,closeQuickOpen:E,onQuickOpenInput:_,quickOpenSelectNext:T,quickOpenSelectPrev:A,quickOpenConfirm:j,quickOpenOpenFile:R,goToLineVisible:I,goToLineValue:h,goToLineInput:y,openGoToLine:F,closeGoToLine:z,goToLineConfirm:ce=>{let ve=parseInt(h.value);if(isNaN(ve)||ve<1)return;let ge=ce.value;if(ge?.cmInstance){let pe=ge.cmInstance,P=Math.min(ve-1,pe.lineCount()-1);pe.setCursor({line:P,ch:0}),pe.scrollIntoView({line:P,ch:0},100),pe.focus()}z()},handleFileSearchResult:ce=>{let ve=ce.results||[];f.value?ce.query&&ce.query.trim()===p.value.trim()&&(g.value=ve,v.value=!1,m.value=0):ce.query&&ce.query.trim()===l.value.trim()&&(c.value=ve,d.value=!1)}}}var Dg=N(()=>{});function Lg(e,{getEffectiveWorkDir:t,treePath:s,treeRootPath:n,treeNodes:r,normalizePath:i,loadTreeDirectory:o}){let a=Vue.ref(!1),l=Vue.ref(""),c=Vue.ref([]),d=Vue.ref(!1),u=Vue.ref(""),f=()=>{a.value=!0,u.value="",d.value=!0;let I=s.value||t()||"";l.value=I,c.value=[],e.sendWsMessage({type:"list_directory",conversationId:"_folder_picker",agentId:e.currentAgent,dirPath:I,workDir:t(),_clientId:e.clientId})},p=I=>{d.value=!0,u.value="",e.sendWsMessage({type:"list_directory",conversationId:"_folder_picker",agentId:e.currentAgent,dirPath:I,workDir:t(),_clientId:e.clientId})};return{folderPickerOpen:a,folderPickerPath:l,folderPickerEntries:c,folderPickerLoading:d,folderPickerSelected:u,openFolderPicker:f,folderPickerNavigateUp:()=>{if(!l.value)return;let I=l.value.includes("\\"),h=I?"\\":"/",y=l.value.replace(/[/\\]$/,"").split(/[/\\]/);if(y.pop(),y.length===0)l.value="",p("");else if(I&&y.length===1&&/^[A-Za-z]:$/.test(y[0]))l.value=y[0]+"\\",p(y[0]+"\\");else{let b=y.join(h);l.value=b,p(b)}},folderPickerSelectItem:I=>{u.value=I.name},folderPickerEnter:I=>{let h;if(!l.value)h=I.name+(I.name.endsWith("\\")?"":"\\");else{let y=l.value.includes("\\")||/^[A-Z]:/.test(I.name)?"\\":"/";h=l.value.replace(/[/\\]$/,"")+y+I.name}l.value=h,p(h)},confirmFolderPicker:()=>{let I=l.value;if(!I)return;if(u.value){let y=I.includes("\\")?"\\":"/";I=I.replace(/[/\\]$/,"")+y+u.value}s.value=I,a.value=!1;let h=i(I);n.value=h,Object.keys(r).forEach(y=>delete r[y]),r[h]={entries:[],expanded:!0,loaded:!1,loading:!0},e.sendWsMessage({type:"list_directory",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,dirPath:I,workDir:t(),_clientId:e.clientId})},handleFolderPickerListing:I=>{d.value=!1,c.value=(I.entries||[]).filter(h=>h.type==="directory").sort((h,y)=>h.name.localeCompare(y.name)),I.dirPath!=null&&(l.value=I.dirPath)}}}var $g=N(()=>{});function Vg(e,{normalizePath:t,getEffectiveWorkDir:s,editorContainer:n,createEditor:r,destroyEditor:i,clearFindMarkers:o,saveCurrentUndoHistory:a,saveAllUndoHistory:l,cleanupUndoHistory:c,deleteConversationHistory:d,debugStatus:u,mdPreviewMode:f,renderOfficeLocal:p,performFind:g,findBarVisible:m,findQuery:v,t:k}){let w=Vue.reactive({}),I=Vue.ref([]),h=Vue.ref(-1),y=Vue.ref(!1),b=Vue.ref(!1),M=Vue.computed(()=>h.value>=0&&h.value<I.value.length?I.value[h.value]:null),x=null,D=()=>{x&&clearTimeout(x),x=setTimeout(()=>{e.sendWsMessage({type:"update_file_tabs",openFiles:I.value.map(F=>({path:F.path})),activeIndex:h.value})},500)},V=F=>{F&&(l(F),I.value.length>0?w[F]={files:I.value.map(z=>({path:z.path,name:z.name,content:z.content,originalContent:z.originalContent,isDirty:z.isDirty,fileType:z.fileType})),activeIndex:h.value}:delete w[F],D())},E=F=>{if(i(),!F||!w[F]){I.value=[],h.value=-1;return}let z=w[F];I.value=z.files.map(ee=>({...ee,isDirty:ee.isDirty||!1,originalContent:ee.originalContent||ee.content,cmInstance:null,fileType:ee.fileType||Mn(ee.name||""),blobUrl:null,previewUrl:null,previewLoading:!1,localPreviewReady:!1,previewError:null})),h.value=z.activeIndex,Vue.nextTick(()=>{let ee=M.value;ee&&(!ee.fileType||ee.fileType==="text")&&n.value&&r(ee)})};function _(F,z){let ee=t(F),fe=I.value.findIndex(ge=>ge.path===ee);if(fe>=0){h.value!==fe&&(o(),a(),h.value=fe,Vue.nextTick(()=>{let ge=I.value[fe];ge&&ge.content!=null&&(!ge.fileType||ge.fileType==="text")&&r(ge)})),V(e.currentConversation);return}a();let ce=z||ee.split(/[/\\]/).pop(),ve=Mn(ce);I.value.push({path:ee,name:ce,content:null,originalContent:null,isDirty:!1,cmInstance:null,fileType:ve,blobUrl:null,previewUrl:null,previewLoading:ve!=="text",localPreviewReady:!1,previewError:null}),h.value=I.value.length-1,y.value=!0,ve==="text"&&i(),V(e.currentConversation),u.value=`Loading: ${F}`,e.sendWsMessage({type:"read_file",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,filePath:F,workDir:s(),_clientId:e.clientId})}let T=F=>{F!==h.value&&(o(),a(),h.value=F,V(e.currentConversation),Vue.nextTick(()=>{let z=I.value[F];z&&(!z.fileType||z.fileType==="text"?Yt(z.name)?f.value=!0:z.content!=null&&n.value&&(r(z),m.value&&v.value&&Vue.nextTick(()=>g())):z.fileType==="office"&&z.localPreviewReady&&Vue.nextTick(()=>p(z)))}))},A=F=>{let z=I.value[F];if(z?.isDirty&&!confirm(k("files.unsavedConfirm",{name:z.name})))return;c(e.currentConversation,z.path),z.blobUrl&&URL.revokeObjectURL(z.blobUrl);let ee=F===h.value;I.value.splice(F,1),I.value.length===0?(h.value=-1,i()):h.value>=I.value.length?h.value=I.value.length-1:h.value>F?h.value--:ee&&h.value>=I.value.length&&(h.value=I.value.length-1),V(e.currentConversation),I.value.length>0&&ee&&Vue.nextTick(()=>{let fe=I.value[h.value];fe&&(!fe.fileType||fe.fileType==="text")&&fe.content!=null&&n.value&&r(fe)})};function R(){let F=M.value;!F||!F.isDirty||(b.value=!0,e.sendWsMessage({type:"write_file",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,filePath:F.path,content:F.content,workDir:s(),_clientId:e.clientId}))}return{fileTabsMap:w,openFiles:I,activeFileIndex:h,activeFile:M,fileLoading:y,fileSaving:b,saveTabsState:V,restoreTabsState:E,openFileInTab:_,switchToTab:T,closeFileTab:A,saveFile:R,handleConversationDeleted:F=>{let{conversationId:z}=F.detail;z&&(delete w[z],d(z))}}}var Hg=N(()=>{$r()});function Og({store:e,normalizePath:t,getEffectiveWorkDir:s,openFiles:n,activeFileIndex:r,activeFile:i,fileLoading:o,fileSaving:a,saveTabsState:l,createEditor:c,openFileInTab:d,tree:u,fp:f,qo:p,ops:g,mdPreviewMode:m,renderOfficeLocal:v,editorContainer:k,debugStatus:w}){return{handleWorkbenchMessage:y=>{let b=y.detail;if(b)switch(b.type){case"directory_listing":{if(b.conversationId==="_folder_picker"){f.handleFolderPickerListing(b);return}u.handleDirectoryListing(b);break}case"file_content":{if(o.value=!1,b.error){w.value=`Error: ${b.error}`,g.clearPendingDownload();let D=t(b.filePath),V=n.value.find(E=>E.path===D);V&&(V.previewLoading=!1,V.previewError=b.error);return}let M=t(b.filePath);if(g.getPendingDownload()&&t(g.getPendingDownload())===M){g.clearPendingDownload();try{if(b.binary){let D=`${location.protocol}//${location.host}/api/preview/${b.fileId}?token=${b.previewToken}`,V=document.createElement("a");V.href=D,V.download=M.split("/").pop()||"download",document.body.appendChild(V),V.click(),document.body.removeChild(V)}else{let D=new Blob([b.content||""],{type:"application/octet-stream"}),V=URL.createObjectURL(D),E=document.createElement("a");E.href=V,E.download=M.split("/").pop()||"download",document.body.appendChild(E),E.click(),document.body.removeChild(E),URL.revokeObjectURL(V)}}catch{}return}let x=n.value.findIndex(D=>D.path===M);if(x>=0){let D=n.value[x];if(b.binary){D.previewLoading=!1;let V=`${location.protocol}//${location.host}/api/preview/${b.fileId}?token=${b.previewToken}`,E=D.fileType||Mn(D.name);D.fileType=E,E==="pdf"||E==="image"?fetch(V).then(_=>_.blob()).then(_=>{D.blobUrl=URL.createObjectURL(_)}).catch(_=>{D.previewError=_.message}):E==="office"&&((localStorage.getItem("officePreviewMode")||"local")==="online"?D.previewUrl="https://view.officeapps.live.com/op/embed.aspx?src="+encodeURIComponent(V):fetch(V).then(T=>T.arrayBuffer()).then(T=>{D._arrayBuffer=T,D.localPreviewReady=!0,x===r.value&&Vue.nextTick(()=>v(D))}).catch(T=>{D.previewError=T.message})),l(e.currentConversation);return}D.content=b.content||"",D.originalContent=b.content||"",D.isDirty=!1,l(e.currentConversation),x===r.value&&(Yt(D.name)&&m.value||Vue.nextTick(()=>{setTimeout(()=>c(D),100)}))}break}case"file_saved":{if(a.value=!1,b.error)return;let M=t(b.filePath),x=n.value.find(D=>D.path===M);x&&(x.originalContent=x.content,x.isDirty=!1,l(e.currentConversation));break}case"file_search_result":{p.handleFileSearchResult(b);break}case"file_op_result":{g.handleFileOpResult(b,u.loadTreeDirectory,u.treeRootPath.value);break}case"file_tabs_restored":{if(b.openFiles?.length>0&&n.value.length===0){let M=b.activeIndex||0,x=b.openFiles.length;for(let D of b.openFiles){let V=t(D.path),E=V.split("/").pop(),_=Mn(E);n.value.push({path:V,name:E,content:null,originalContent:null,isDirty:!1,cmInstance:null,fileType:_,blobUrl:null,previewUrl:null,previewLoading:_!=="text",localPreviewReady:!1,previewError:null}),e.sendWsMessage({type:"read_file",conversationId:e.currentConversation||"_explorer",agentId:e.currentAgent,filePath:D.path})}r.value=M>=0&&M<x?M:0}break}}},handleOpenFile:y=>{let{filePath:b}=y.detail,M=t(b);d(M,M.split("/").pop())}}}var Fg=N(()=>{$r()});var Bg,Ng=N(()=>{Ol();Cg();xg();Mg();$r();_g();Dg();$g();Hg();Fg();Bg={name:"FilesTab",template:`
2260
2260
  <div class="files-tab file-two-col" :class="{ 'mobile-editor-view': isMobile && mobileView === 'editor' }" ref="rootEl">
2261
2261
  <!-- \u5DE6\u680F: \u5C42\u7EA7\u76EE\u5F55\u6811 -->
2262
2262
  <div class="file-col-tree" :class="{ 'drop-active': externalDropActive }" :style="{ flex: '0 0 ' + treePanelWidth + 'px', transition: isTreeResizing ? 'none' : undefined, fontSize: fontSize + 'px' }" @wheel.ctrl.prevent="onWheel"
@@ -3381,7 +3381,7 @@ ${String(e||"").trim()}
3381
3381
  </button>
3382
3382
  </div>
3383
3383
  </div>
3384
- `,setup(e,{emit:t}){let s=Pinia.useChatStore(),n=Vue.getCurrentInstance(),r=y=>n?.proxy?.$t?.(y)??y,i=Vue.computed(()=>s.searchSettings),o=Vue.computed(()=>s.tavilyUsage),a=Vue.computed(()=>s.tavilyUsageLoading),l=Vue.reactive({backend:"tavily",key:""}),c=Vue.ref(!1),d=Vue.ref(!1);function u(){let y=i.value;l.backend=y?.backend||"tavily",l.key="",c.value=!1}Vue.watch(i,u,{immediate:!0});let f=Vue.computed(()=>c.value?l.key:""),p=Vue.computed(()=>{let y=i.value;return y?!!((y.backend||"tavily")!==l.backend||c.value):c.value});function g(y){c.value=!0,l.key=y.target.value}function m(){!c.value&&i.value?.tavilyKeyConfigured&&(c.value=!0,l.key="")}function v(){c.value=!0,l.key=""}function k(){u()}async function w(){if(!(d.value||!p.value)){d.value=!0;try{let y={backend:l.backend};c.value&&(y.tavilyApiKey=l.key.trim());let b=await s.updateSearchSettings(y);b?.error?t("message",b.error,!0):(t("message",r("search.settings.saveSuccess"),!1),c.value&&await s.loadTavilyUsage())}catch(y){t("message",y.message||String(y),!0)}finally{d.value=!1}}}async function I(){await s.loadTavilyUsage()}function h(y,b){return b?Math.min(100,Math.round(y/b*100)):0}return Vue.onMounted(async()=>{await s.loadSearchSettings(),s.searchSettings?.tavilyKeyConfigured&&s.loadTavilyUsage()}),{settings:i,usage:o,usageLoading:a,form:l,keyDirty:c,keyDisplay:f,saving:d,dirty:p,onKeyInput:g,onKeyFocus:m,clearKey:v,reset:k,save:w,refreshUsage:I,pct:h}}}});var Zg,Xg=N(()=>{Zg={name:"McpTab",emits:["message"],template:`
3384
+ `,setup(e,{emit:t}){let s=Pinia.useChatStore(),n=Vue.getCurrentInstance(),r=y=>n?.proxy?.$t?.(y)??y,i=Vue.computed(()=>s.searchSettings),o=Vue.computed(()=>s.tavilyUsage),a=Vue.computed(()=>s.tavilyUsageLoading),l=Vue.reactive({backend:"tavily",key:""}),c=Vue.ref(!1),d=Vue.ref(!1);function u(){let y=i.value;l.backend=y?.backend||"tavily",l.key="",c.value=!1}Vue.watch(i,u,{immediate:!0});let f=Vue.computed(()=>c.value?l.key:""),p=Vue.computed(()=>{let y=i.value;return y?!!((y.backend||"tavily")!==l.backend||c.value):c.value});function g(y){c.value=!0,l.key=y.target.value}function m(){!c.value&&i.value?.tavilyKeyConfigured&&(c.value=!0,l.key="")}function v(){c.value=!0,l.key=""}function k(){u()}async function w(){if(!(d.value||!p.value)){d.value=!0;try{let y={backend:l.backend};c.value&&(y.tavilyApiKey=l.key.trim());let b=await s.updateSearchSettings(y);b?.error?t("message",b.error,!0):(t("message",r("search.settings.saveSuccess"),!1),c.value&&await s.loadTavilyUsage())}catch(y){t("message",y.message||String(y),!0)}finally{d.value=!1}}}async function I(){await s.loadTavilyUsage()}function h(y,b){return b?Math.min(100,Math.round(y/b*100)):0}return Vue.onMounted(async()=>{await s.loadSearchSettings(),s.searchSettings?.tavilyKeyConfigured&&s.loadTavilyUsage()}),{settings:i,usage:o,usageLoading:a,form:l,keyDirty:c,keyDisplay:f,saving:d,dirty:p,onKeyInput:g,onKeyFocus:m,clearKey:v,reset:k,save:w,refreshUsage:I,pct:h}}}});var Xg,Zg=N(()=>{Xg={name:"McpTab",emits:["message"],template:`
3385
3385
  <div class="mcp-settings-tab">
3386
3386
  <div class="settings-section">
3387
3387
  <h3 class="settings-section-title">
@@ -3484,7 +3484,7 @@ ${String(e||"").trim()}
3484
3484
  </div>
3485
3485
  </div>
3486
3486
  </div>
3487
- `,setup(e,{emit:t}){let s=Pinia.useChatStore(),n=Vue.getCurrentInstance(),r=I=>n?.proxy?.$t?.(I)??I,i=Vue.computed(()=>s.yeaftMcpServers||[]),o=Vue.computed(()=>s.yeaftMcpRuntime||{connected:!1,toolCount:0,perServer:[]}),a=Vue.computed(()=>!!s.yeaftMcpLoading),l=Vue.computed(()=>{let I=new Map((o.value.perServer||[]).map(h=>[h.name,h]));return i.value.map(h=>{let y=I.get(h.name);return{...h,ready:!!(y&&y.ready),toolCount:y?y.toolCount:0}})}),c=Vue.reactive({name:"",command:"",argsRaw:"",envRaw:""}),d=Vue.ref("");function u(){c.name="",c.command="",c.argsRaw="",c.envRaw="",d.value=""}function f(I){if(!I)return[];let h=[],y=/"([^"]*)"|'([^']*)'|(\S+)/g,b;for(;(b=y.exec(I))!==null;)h.push(b[1]??b[2]??b[3]);return h}function p(I){if(!I)return{};let h={},y=I.split(/\r?\n/);for(let b of y){let M=b.trim();if(!M||M.startsWith("#"))continue;let x=M.indexOf("=");if(x<0)continue;let D=M.slice(0,x).trim(),V=M.slice(x+1);D&&(h[D]=V)}return h}function g(){d.value="";let I=(c.name||"").trim(),h=(c.command||"").trim();if(!I)return d.value=r("settings.mcp.errors.nameRequired"),null;if(!/^[a-z0-9_-]+$/.test(I))return d.value=r("settings.mcp.errors.nameFormat"),null;if(!h)return d.value=r("settings.mcp.errors.commandRequired"),null;let y=[],b={};try{y=f(c.argsRaw)}catch{return d.value=r("settings.mcp.errors.argsParse"),null}try{b=p(c.envRaw)}catch{return d.value=r("settings.mcp.errors.envParse"),null}return{name:I,command:h,args:y,env:b}}async function m(){let I=g();if(!I)return;let h=await s.addYeaftMcpServer(I);if(h?.error){t("message",h.error,!0);return}h?.connectError?t("message",r("settings.mcp.connectFailed")+": "+h.connectError,!0):t("message",r("settings.mcp.addSuccess"),!1),u()}async function v(I){if(!I||!confirm(r("settings.mcp.confirmRemove").replace("{name}",I)))return;let h=await s.removeYeaftMcpServer(I);h?.error?t("message",h.error,!0):t("message",r("settings.mcp.removeSuccess"),!1)}async function k(I){let h=await s.reloadYeaftMcpServer(I);h?.error?t("message",h.error,!0):t("message",r("settings.mcp.reloadSuccess"),!1)}async function w(){let I=await s.reloadYeaftMcpServer(null);I?.error?t("message",I.error,!0):t("message",r("settings.mcp.reloadSuccess"),!1)}return Vue.onMounted(()=>{s.loadYeaftMcpServers()}),{servers:i,runtime:o,loading:a,serversWithStatus:l,form:c,formError:d,resetForm:u,addServer:m,removeOne:v,reloadOne:k,reloadAll:w}}}});var uo,Bl=N(()=>{St();ul();gl();js();Wg();Yg();Qg();Xg();uo={name:"SettingsPanel",components:{DashboardTab:qg,VpCrudPanel:zg,SearchSettingsTab:Gg,McpTab:Zg},props:{visible:Boolean,initialTab:{type:String,default:""},initialSubTab:{type:String,default:""},initialEditVpId:{type:String,default:""}},emits:["close"],template:`
3487
+ `,setup(e,{emit:t}){let s=Pinia.useChatStore(),n=Vue.getCurrentInstance(),r=I=>n?.proxy?.$t?.(I)??I,i=Vue.computed(()=>s.yeaftMcpServers||[]),o=Vue.computed(()=>s.yeaftMcpRuntime||{connected:!1,toolCount:0,perServer:[]}),a=Vue.computed(()=>!!s.yeaftMcpLoading),l=Vue.computed(()=>{let I=new Map((o.value.perServer||[]).map(h=>[h.name,h]));return i.value.map(h=>{let y=I.get(h.name);return{...h,ready:!!(y&&y.ready),toolCount:y?y.toolCount:0}})}),c=Vue.reactive({name:"",command:"",argsRaw:"",envRaw:""}),d=Vue.ref("");function u(){c.name="",c.command="",c.argsRaw="",c.envRaw="",d.value=""}function f(I){if(!I)return[];let h=[],y=/"([^"]*)"|'([^']*)'|(\S+)/g,b;for(;(b=y.exec(I))!==null;)h.push(b[1]??b[2]??b[3]);return h}function p(I){if(!I)return{};let h={},y=I.split(/\r?\n/);for(let b of y){let M=b.trim();if(!M||M.startsWith("#"))continue;let x=M.indexOf("=");if(x<0)continue;let D=M.slice(0,x).trim(),V=M.slice(x+1);D&&(h[D]=V)}return h}function g(){d.value="";let I=(c.name||"").trim(),h=(c.command||"").trim();if(!I)return d.value=r("settings.mcp.errors.nameRequired"),null;if(!/^[a-z0-9_-]+$/.test(I))return d.value=r("settings.mcp.errors.nameFormat"),null;if(!h)return d.value=r("settings.mcp.errors.commandRequired"),null;let y=[],b={};try{y=f(c.argsRaw)}catch{return d.value=r("settings.mcp.errors.argsParse"),null}try{b=p(c.envRaw)}catch{return d.value=r("settings.mcp.errors.envParse"),null}return{name:I,command:h,args:y,env:b}}async function m(){let I=g();if(!I)return;let h=await s.addYeaftMcpServer(I);if(h?.error){t("message",h.error,!0);return}h?.connectError?t("message",r("settings.mcp.connectFailed")+": "+h.connectError,!0):t("message",r("settings.mcp.addSuccess"),!1),u()}async function v(I){if(!I||!confirm(r("settings.mcp.confirmRemove").replace("{name}",I)))return;let h=await s.removeYeaftMcpServer(I);h?.error?t("message",h.error,!0):t("message",r("settings.mcp.removeSuccess"),!1)}async function k(I){let h=await s.reloadYeaftMcpServer(I);h?.error?t("message",h.error,!0):t("message",r("settings.mcp.reloadSuccess"),!1)}async function w(){let I=await s.reloadYeaftMcpServer(null);I?.error?t("message",I.error,!0):t("message",r("settings.mcp.reloadSuccess"),!1)}return Vue.onMounted(()=>{s.loadYeaftMcpServers()}),{servers:i,runtime:o,loading:a,serversWithStatus:l,form:c,formError:d,resetForm:u,addServer:m,removeOne:v,reloadOne:k,reloadAll:w}}}});var uo,Bl=N(()=>{St();ul();gl();js();Wg();Yg();Qg();Zg();uo={name:"SettingsPanel",components:{DashboardTab:qg,VpCrudPanel:zg,SearchSettingsTab:Gg,McpTab:Xg},props:{visible:Boolean,initialTab:{type:String,default:""},initialSubTab:{type:String,default:""},initialEditVpId:{type:String,default:""}},emits:["close"],template:`
3488
3488
  <div
3489
3489
  class="settings-overlay"
3490
3490
  v-if="visible"
@@ -3524,7 +3524,7 @@ ${String(e||"").trim()}
3524
3524
  <svg viewBox="0 0 24 24" width="18" height="18"><path fill="currentColor" d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
3525
3525
  </button>
3526
3526
  </div>
3527
- <div class="settings-scroll">
3527
+ <div class="settings-scroll" :class="{ 'settings-scroll-yeaft': activeTab === 'yeaft' }">
3528
3528
  <!-- Account -->
3529
3529
  <div v-show="activeTab === 'account'" class="settings-pane">
3530
3530
  <div class="sp-group">
@@ -3765,6 +3765,67 @@ ${String(e||"").trim()}
3765
3765
  </div>
3766
3766
  </div>
3767
3767
  </div>
3768
+
3769
+ <!-- Managed Sandbox -->
3770
+ <div v-show="activeTab === 'sandbox'" class="settings-pane">
3771
+ <div class="sp-group">
3772
+ <div v-if="sandboxLoading" class="sp-desc" role="status">{{ $t('common.loading') }}</div>
3773
+ <div v-else-if="sandboxLoadError" class="sp-error" role="alert">
3774
+ {{ $t('settings.sandbox.error.SANDBOX_LOAD_FAILED') }}
3775
+ </div>
3776
+ <template v-else-if="sandboxSnapshot">
3777
+ <div class="sp-row">
3778
+ <div class="sp-row-left">
3779
+ <span class="sp-label sp-text-wrap">{{ sandboxSnapshot.agentName }}</span>
3780
+ <span class="sp-desc-small">{{ $t('settings.sandbox.size.' + sandboxSnapshot.sizeId) }}</span>
3781
+ </div>
3782
+ <span class="sp-badge">{{ $t('settings.sandbox.state.' + sandboxSnapshot.observedState) }}</span>
3783
+ </div>
3784
+ <p class="sp-desc" v-if="sandboxSnapshot.operation">
3785
+ {{ $t('settings.sandbox.stage.' + sandboxSnapshot.operation.stage) }}
3786
+ </p>
3787
+ <p class="sp-error" v-if="sandboxSnapshot.lastErrorCode">
3788
+ {{ $t('settings.sandbox.error.' + sandboxSnapshot.lastErrorCode) }}
3789
+ </p>
3790
+ <div class="sp-actions-row">
3791
+ <button v-if="sandboxSnapshot.observedState === 'running'" class="btn-secondary" @click="requestSandboxAction('stop')" :disabled="sandboxSubmitting">
3792
+ {{ $t('settings.sandbox.stop') }}
3793
+ </button>
3794
+ <button v-if="sandboxSnapshot.observedState === 'stopped'" class="btn-primary" @click="requestSandboxAction('start')" :disabled="sandboxSubmitting">
3795
+ {{ $t('settings.sandbox.start') }}
3796
+ </button>
3797
+ <button v-if="['failed', 'remove_failed'].includes(sandboxSnapshot.observedState)" class="btn-secondary" @click="requestSandboxAction('retry')" :disabled="sandboxSubmitting">
3798
+ {{ $t('settings.sandbox.retry') }}
3799
+ </button>
3800
+ <button class="btn-secondary" @click="confirmRemoveSandbox" :disabled="sandboxSubmitting">
3801
+ {{ $t('settings.sandbox.remove') }}
3802
+ </button>
3803
+ </div>
3804
+ </template>
3805
+ <template v-else>
3806
+ <p class="sp-desc">{{ $t('settings.sandbox.description') }}</p>
3807
+ <div v-if="!sandboxCapability.available" class="sp-info">
3808
+ {{ sandboxUnavailableText }}
3809
+ </div>
3810
+ <template v-else>
3811
+ <label class="sp-label" for="sandbox-agent-name">{{ $t('settings.sandbox.agentName') }}</label>
3812
+ <input id="sandbox-agent-name" class="sp-input" v-model="sandboxAgentName" maxlength="64">
3813
+ <label class="sp-label" for="sandbox-size">{{ $t('settings.sandbox.sizeLabel') }}</label>
3814
+ <select id="sandbox-size" v-model="sandboxSizeId">
3815
+ <option v-for="size in sandboxCapability.catalog" :key="size.id" :value="size.id">
3816
+ {{ $t('settings.sandbox.size.' + size.id) }} \u2014 {{ size.cpuMillis / 1000 }} CPU / {{ size.memoryMiB / 1024 }} GiB / {{ size.diskGiB }} GB
3817
+ </option>
3818
+ </select>
3819
+ <div class="sp-actions-row">
3820
+ <button class="btn-primary" @click="createSandbox" :disabled="sandboxSubmitting">
3821
+ {{ sandboxSubmitting ? $t('settings.sandbox.creating') : $t('settings.sandbox.enable') }}
3822
+ </button>
3823
+ </div>
3824
+ </template>
3825
+ </template>
3826
+ </div>
3827
+ </div>
3828
+
3768
3829
  <div v-show="activeTab === 'invitations'" class="settings-pane" v-if="authStore.role === 'admin'">
3769
3830
  <div class="sp-group">
3770
3831
  <div class="sp-row">
@@ -3910,7 +3971,7 @@ ${String(e||"").trim()}
3910
3971
  </div>
3911
3972
  </div>
3912
3973
  </div>
3913
- `,directives:{"click-outside":{mounted(e,t){e._clickOutside=s=>{e.contains(s.target)||t.value()},document.addEventListener("click",e._clickOutside)},unmounted(e){document.removeEventListener("click",e._clickOutside)}}},data(){let e=Pinia.useChatStore();return{activeTab:"general",yeaftSubTab:"vp",profile:null,agentSecret:null,showSecret:!1,resettingSecret:!1,resetConfirm:!1,currentPassword:"",newPassword:"",confirmPassword:"",changingPassword:!1,deletePassword:"",deleteConfirm:!1,deleteConfirmText:"",deletingAccount:!1,invitations:[],inviteRole:"pro",creatingInvite:!1,message:"",isError:!1,selectedLocale:e.locale,openDropdown:null,officePreviewMode:localStorage.getItem("officePreviewMode")||"local",telemetryDraft:{enabled:!0,retentionDays:3,flushIntervalMs:1e3,maxQueueSize:5e3,rawExchangeMaxBytes:524288,traceTextMaxBytes:262144},telemetrySaving:!1,ssoBoundMessage:"",ssoConflictMessage:"",qrDataUrl:""}},computed:{authStore(){return De()},chatStore(){return Pinia.useChatStore()},roleLabel(){return{admin:this.$t("settings.account.roleAdmin"),pro:this.$t("settings.account.rolePro")}[this.profile?.role]||this.$t("settings.account.rolePro")},accountDisplayName(){let e=this.profile;return e?e.displayName&&e.displayName!==e.username?e.displayName:e.username||"-":"-"},visibleTabs(){let e=[{key:"general",label:this.$t("settings.tabs.general")},{key:"account",label:this.$t("settings.tabs.account")},{key:"security",label:this.$t("settings.tabs.security")}];return(this.authStore.role==="admin"||this.authStore.role==="pro")&&e.push({key:"yeaft",label:this.$t("settings.tabs.yeaft")}),this.authStore.role==="admin"&&(e.push({key:"invitations",label:this.$t("settings.tabs.invitations")}),e.push({key:"dashboard",label:this.$t("settings.tabs.dashboard")})),e},currentTabLabel(){return this.visibleTabs.find(t=>t.key===this.activeTab)?.label||""},telemetrySettings(){return this.chatStore.telemetrySettings},telemetryEnabled(){return this.telemetryDraft.enabled!==!1},themeOptions(){return[{value:"light",label:this.$t("settings.general.lightTheme")},{value:"dark",label:this.$t("settings.general.darkTheme")}]},yeaftSubTabs(){return[{key:"vp",label:this.$t("settings.yeaft.tabs.vp")},{key:"search",label:this.$t("settings.yeaft.tabs.search")},{key:"mcp",label:this.$t("settings.yeaft.tabs.mcp")}]},languageOptions(){return[{value:"zh-CN",label:"\u4E2D\u6587"},{value:"en",label:"English"}]},officePreviewOptions(){return[{value:"local",label:this.$t("files.localRender")},{value:"online",label:this.$t("files.officeOnline")}]},roleOptions(){return[{value:"pro",label:this.$t("settings.invite.proUser")}]},agentSecretActionLabel(){return this.agentSecret?this.$t("settings.security.resetKey"):this.$t("settings.security.generateKey")},agentName(){return fl(this.profile)},agentInstanceId(){return this.agentName},serverWsUrl(){return Cr(location)},agentInstallCommand(){return Oi()},agentServiceCommand(){return Bi({profile:this.profile,agentSecret:this.agentSecret,serverWsUrl:this.serverWsUrl})},agentLlmCommand(){return Fi()},ssoProviderRows(){let e=this.authStore,t=new Map((e.linkedIdentities||[]).map(n=>[n.provider,n]));return[{key:"alipay",label:this.$t("login.alipay"),enabled:!!e.ssoProviders.alipay},{key:"microsoft",label:this.$t("login.microsoft"),enabled:!!e.aadEnabled},{key:"github",label:this.$t("login.github"),enabled:!!e.ssoProviders.github},{key:"google",label:this.$t("login.google"),enabled:!!e.ssoProviders.google},{key:"wechat",label:this.$t("login.wechat"),enabled:!!e.ssoProviders.wechat}].filter(n=>n.enabled||t.has(n.key)).map(n=>({...n,linked:t.has(n.key),identity:t.get(n.key)||null}))},qrModalTitle(){let e=this.authStore.qrPanel?.provider;return e==="alipay"?this.$t("login.qr.titleAlipay"):e==="wechat"?this.$t("login.qr.titleWechat"):this.$t("login.qr.title")}},mounted(){if(this.visible)return this.applyInitialEntryPoint(),this.loadTelemetry(),this.loadData()},watch:{visible(e){e?(this.applyInitialEntryPoint(),this.loadTelemetry(),this.loadData()):this.authStore.qrPanel&&this.cancelQrBind()},activeTab(e){e==="invitations"&&this.authStore.role==="admin"&&this.loadInvitations()},"authStore.qrPanel.status"(e){if(e==="bound"){let t=this.authStore.qrPanel?.provider;this.authStore.cancelSsoQr(),this.qrDataUrl="",this.authStore.loadIdentities(),this.ssoBoundMessage=this.$t("settings.account.ssoBoundMsg",{provider:t?this.$t("login."+t):""})}},"authStore.qrPanel.authorizeUrl"(e){e&&this.authStore.qrPanel?.intent==="bind"&&this.renderQrCode()}},methods:{trackOverlayPointerDown:ft,trackOverlayPointerUp:gt,clearOverlayPointerGesture:mt,async loadTelemetry(){let e=await this.chatStore.loadTelemetrySettings();e&&!e.error&&(this.telemetryDraft={...this.telemetryDraft,...e})},async saveTelemetry(){this.telemetrySaving=!0;try{let e=await this.chatStore.updateTelemetrySettings(this.telemetryDraft);e&&!e.error&&(this.telemetryDraft={...this.telemetryDraft,...e})}finally{this.telemetrySaving=!1}},async toggleTelemetry(){this.telemetryDraft={...this.telemetryDraft,enabled:!this.telemetryEnabled},await this.saveTelemetry()},formatBytes(e){let t=Number(e);return!Number.isFinite(t)||t<1024?`${Math.max(0,t||0)} B`:t<1024*1024?`${Math.round(t/1024)} KB`:`${(t/(1024*1024)).toFixed(1)} MB`},onSettingsOverlayClick(e){rt(e)&&this.$emit("close")},onQrOverlayClick(e){rt(e)&&this.cancelQrBind()},changeLanguage(){this.chatStore.changeLocale(this.selectedLocale)},selectLanguage(e){this.selectedLocale=e,this.chatStore.changeLocale(e)},toggleDropdown(e){this.openDropdown=this.openDropdown===e?null:e},closeDropdown(e){this.openDropdown===e&&(this.openDropdown=null)},setTheme(e){this.chatStore.theme!==e&&this.chatStore.toggleTheme()},setOfficePreviewMode(e){this.officePreviewMode=e,localStorage.setItem("officePreviewMode",e)},applyInitialEntryPoint(){this.initialTab&&this.visibleTabs.some(e=>e.key===this.initialTab)&&(this.activeTab=this.initialTab),this.initialSubTab&&this.activeTab==="yeaft"&&(this.yeaftSubTab=this.yeaftSubTabs.some(e=>e.key===this.initialSubTab)?this.initialSubTab:"vp"),this.initialEditVpId&&this.activeTab==="yeaft"&&(this.yeaftSubTab="vp")},async loadData(){this.message="",this._consumeSsoQueryFlags();try{let e=this.getHeaders(),[t,s]=await Promise.all([fetch("/api/user/profile",{headers:e}),fetch("/api/user/agent-secret",{headers:e})]);if(t.ok)this.profile=await t.json();else{let n=await t.json().catch(()=>({}));this.showMessage(n.error||this.$t("settings.account.profileLoadFailed"),!0)}if(s.ok){let n=await s.json();this.applyAgentSecretResponse(n)}this.authStore.role==="admin"&&this.activeTab==="invitations"&&await this.loadInvitations();try{await this.authStore.loadIdentities()}catch{}}catch{}},_consumeSsoQueryFlags(){let e=window.location.hash||"",t=e.indexOf("?");if(t<0)return;let s=new URLSearchParams(e.slice(t+1)),n=s.get("ssoBound"),r=s.get("ssoError"),i=s.get("provider");if(n&&(this.ssoBoundMessage=this.$t("settings.account.ssoBoundMsg",{provider:n}),this.activeTab="account"),r==="conflict"&&(this.ssoConflictMessage=this.$t("settings.account.ssoConflictMsg",{provider:i||""}),this.activeTab="account"),n||r)try{history.replaceState(null,"",window.location.pathname+window.location.search)}catch{}},bindSso(e){if(this.ssoBoundMessage="",this.ssoConflictMessage="",e==="alipay"&&Vi()){this.authStore.bindSso(e);return}if(e==="alipay"&&yn()){this.authStore.loginWithAlipayMobile({intent:"bind"});return}if(e==="wechat"&&(yn()||$i())){this.ssoConflictMessage=this.$t("login.wechat.mobileUnsupported");return}e==="alipay"||e==="wechat"?this.startQrBind(e):this.authStore.bindSso(e)},async startQrBind(e){if(this.qrDataUrl="",!await this.authStore.startSsoQr(e,{intent:"bind"})){this.ssoConflictMessage=this.authStore.error||this.$t("settings.account.bindFailed");return}this.renderQrCode()},cancelQrBind(){this.authStore.cancelSsoQr(),this.qrDataUrl=""},relaunchAlipayMobile(){let e=this.authStore.qrPanel;if(!e||!e.authorizeUrl)return;let t=`alipays://platformapi/startapp?appId=20000067&url=${encodeURIComponent(e.authorizeUrl)}`;window.location.href=t},renderQrCode(){let e=this.authStore.qrPanel;if(!(!e||!e.authorizeUrl)&&typeof qrcode=="function")try{let t=qrcode(0,"M");t.addData(e.authorizeUrl,"Byte"),t.make(),this.qrDataUrl=t.createDataURL(6,4)}catch{}},async unbindSso(e){this.ssoBoundMessage="",this.ssoConflictMessage="",await this.authStore.unbindIdentity(e)||(this.ssoConflictMessage=this.authStore.identitiesError||this.$t("settings.account.unbindFailed"))},canUnbind(e){let t=this.authStore.linkedIdentities||[];return t.some(n=>n.provider===e)?this.authStore.hasPassword?!0:t.length>1:!1},async loadInvitations(){try{let e=await fetch("/api/invitations",{headers:this.getHeaders()});if(e.ok){let t=await e.json();this.invitations=t.invitations.map(s=>({...s,code:s.id,expiresAt:s.expires_at,usedByUsername:s.used_by_username||null}))}}catch{}},getHeaders(){let e={"Content-Type":"application/json"},t=this.authStore.getActiveToken?.()||this.authStore.token;return t&&(e.Authorization=`Bearer ${t}`),e},applyAgentSecretResponse(e){let t=e?.agentSecret||e?.agent_secret||null;this.agentSecret=t&&String(t).trim()?String(t):null},async copySecret(){this.agentSecret&&await this.copyText(this.agentSecret)},async copyText(e){try{await navigator.clipboard.writeText(e),this.showMessage(this.$t("settings.msg.copiedClipboard"))}catch{this.showMessage(this.$t("settings.msg.copyFailed"),!0)}},async resetSecret(){if(this.agentSecret&&!this.resetConfirm){this.resetConfirm=!0;return}this.resettingSecret=!0;try{let e=await fetch("/api/user/agent-secret/reset",{method:"POST",headers:this.getHeaders()});if(e.ok){let t=await e.json();this.applyAgentSecretResponse(t),this.showSecret=!0,this.showMessage(this.$t("settings.msg.keyReset"))}else{let t=await e.json();this.showMessage(t.error||this.$t("settings.msg.resetFailed"),!0)}}catch(e){this.showMessage(this.$t("settings.msg.resetFailed")+": "+e.message,!0)}finally{this.resettingSecret=!1,this.resetConfirm=!1}},async changePassword(){let e=this.profile&&this.profile.hasPassword===!1;if(!e&&!this.currentPassword){this.showMessage(this.$t("settings.security.enterCurrentPwd"),!0);return}if(!this.newPassword||this.newPassword.length<6){this.showMessage(this.$t("settings.security.newPwdMin"),!0);return}if(this.newPassword!==this.confirmPassword){this.showMessage(this.$t("settings.security.pwdMismatch"),!0);return}this.changingPassword=!0;try{let t={newPassword:this.newPassword};e||(t.currentPassword=this.currentPassword);let s=await fetch("/api/user/profile",{method:"PUT",headers:this.getHeaders(),body:JSON.stringify(t)}),n=await s.json();if(s.ok&&n.success){this.showMessage(e?this.$t("settings.security.pwdSet"):this.$t("settings.security.pwdChanged")),this.currentPassword="",this.newPassword="",this.confirmPassword="";try{let r=await fetch("/api/user/profile",{headers:this.getHeaders()});r.ok&&(this.profile=await r.json())}catch{}}else this.showMessage(n.error||this.$t("settings.msg.changeFailed"),!0)}catch(t){this.showMessage(this.$t("settings.msg.changeFailed")+": "+t.message,!0)}finally{this.changingPassword=!1}},cancelDeleteAccount(){this.deleteConfirm=!1,this.deletePassword="",this.deleteConfirmText=""},async deleteAccount(){if(!this.deleteConfirm){this.deleteConfirm=!0;return}let e=this.profile&&this.profile.hasPassword!==!1;if(e&&!this.deletePassword){this.showMessage(this.$t("settings.security.enterCurrentPwd"),!0);return}if(!e&&this.deleteConfirmText!=="DELETE"){this.showMessage(this.$t("settings.security.deleteConfirmRequired"),!0);return}this.deletingAccount=!0;try{let t=await this.authStore.deleteAccount(e?{currentPassword:this.deletePassword}:{confirm:"DELETE"});if(!t.success){this.showMessage(t.error||this.$t("settings.security.deleteFailed"),!0);return}window.location.reload()}finally{this.deletingAccount=!1}},async createInvitation(){this.creatingInvite=!0;try{let e=await fetch("/api/invitations",{method:"POST",headers:this.getHeaders(),body:JSON.stringify({role:this.inviteRole})});if(e.ok)await this.loadInvitations(),this.showMessage(this.$t("settings.msg.inviteCreated"));else{let t=await e.json();this.showMessage(t.error||this.$t("settings.msg.createFailed"),!0)}}catch(e){this.showMessage(this.$t("settings.msg.createFailed")+": "+e.message,!0)}finally{this.creatingInvite=!1}},async copyInviteCode(e){try{await navigator.clipboard.writeText(e),this.showMessage(this.$t("settings.msg.inviteCopied"))}catch{this.showMessage(this.$t("settings.msg.copyFailed"),!0)}},async deleteInvitation(e){try{let t=await fetch(`/api/invitations/${e}`,{method:"DELETE",headers:this.getHeaders()});if(t.ok)await this.loadInvitations(),this.showMessage(this.$t("settings.msg.inviteDeleted"));else{let s=await t.json();this.showMessage(s.error||this.$t("settings.msg.deleteFailed"),!0)}}catch(t){this.showMessage(this.$t("settings.msg.deleteFailed")+": "+t.message,!0)}},inviteStatusClass(e){return e.used_by?"used":e.expiresAt<Date.now()?"expired":""},inviteStatusText(e){return e.used_by?this.$t("settings.invite.used"):e.expiresAt<Date.now()?this.$t("settings.invite.expired"):this.$t("settings.invite.available")},formatTime(e){return new Date(e).toLocaleString()},async doLogout(){await this.authStore.logout(),window.location.reload()},showMessage(e,t=!1){this.message=e,this.isError=t,setTimeout(()=>{this.message=""},3e3)},onLlmMessage(e,t){this.showMessage(e,t)},onYeaftLlmSaved(){let e=this.chatStore?.currentAgent;e&&this.chatStore.sendWsMessage({type:"yeaft_reset",agentId:e})}}}});var Jg,em=N(()=>{Jg={name:"ExpertRoleEditor",template:`
3974
+ `,directives:{"click-outside":{mounted(e,t){e._clickOutside=s=>{e.contains(s.target)||t.value()},document.addEventListener("click",e._clickOutside)},unmounted(e){document.removeEventListener("click",e._clickOutside)}}},data(){let e=Pinia.useChatStore();return{activeTab:"general",yeaftSubTab:"vp",profile:null,agentSecret:null,showSecret:!1,resettingSecret:!1,resetConfirm:!1,currentPassword:"",newPassword:"",confirmPassword:"",changingPassword:!1,deletePassword:"",deleteConfirm:!1,deleteConfirmText:"",deletingAccount:!1,invitations:[],inviteRole:"pro",creatingInvite:!1,message:"",isError:!1,selectedLocale:e.locale,openDropdown:null,officePreviewMode:localStorage.getItem("officePreviewMode")||"local",telemetryDraft:{enabled:!0,retentionDays:3,flushIntervalMs:1e3,maxQueueSize:5e3,rawExchangeMaxBytes:524288,traceTextMaxBytes:262144},telemetrySaving:!1,ssoBoundMessage:"",ssoConflictMessage:"",qrDataUrl:"",sandboxLoading:!1,sandboxSubmitting:!1,sandboxLoadError:!1,sandboxCapability:{available:!1,reasonCode:"SANDBOX_DISABLED",catalog:[]},sandboxSnapshot:null,sandboxAgentName:"",sandboxSizeId:"normal",sandboxIdempotencyKeys:{}}},computed:{authStore(){return De()},chatStore(){return Pinia.useChatStore()},roleLabel(){return{admin:this.$t("settings.account.roleAdmin"),pro:this.$t("settings.account.rolePro")}[this.profile?.role]||this.$t("settings.account.rolePro")},accountDisplayName(){let e=this.profile;return e?e.displayName&&e.displayName!==e.username?e.displayName:e.username||"-":"-"},visibleTabs(){let e=[{key:"general",label:this.$t("settings.tabs.general")},{key:"account",label:this.$t("settings.tabs.account")},{key:"security",label:this.$t("settings.tabs.security")},{key:"sandbox",label:this.$t("settings.tabs.sandbox")}];return(this.authStore.role==="admin"||this.authStore.role==="pro")&&e.push({key:"yeaft",label:this.$t("settings.tabs.yeaft")}),this.authStore.role==="admin"&&(e.push({key:"invitations",label:this.$t("settings.tabs.invitations")}),e.push({key:"dashboard",label:this.$t("settings.tabs.dashboard")})),e},currentTabLabel(){return this.visibleTabs.find(t=>t.key===this.activeTab)?.label||""},telemetrySettings(){return this.chatStore.telemetrySettings},telemetryEnabled(){return this.telemetryDraft.enabled!==!1},themeOptions(){return[{value:"light",label:this.$t("settings.general.lightTheme")},{value:"dark",label:this.$t("settings.general.darkTheme")}]},yeaftSubTabs(){return[{key:"vp",label:this.$t("settings.yeaft.tabs.vp")},{key:"search",label:this.$t("settings.yeaft.tabs.search")},{key:"mcp",label:this.$t("settings.yeaft.tabs.mcp")}]},languageOptions(){return[{value:"zh-CN",label:"\u4E2D\u6587"},{value:"en",label:"English"}]},officePreviewOptions(){return[{value:"local",label:this.$t("files.localRender")},{value:"online",label:this.$t("files.officeOnline")}]},roleOptions(){return[{value:"pro",label:this.$t("settings.invite.proUser")}]},agentSecretActionLabel(){return this.agentSecret?this.$t("settings.security.resetKey"):this.$t("settings.security.generateKey")},agentName(){return fl(this.profile)},agentInstanceId(){return this.agentName},serverWsUrl(){return Cr(location)},agentInstallCommand(){return Oi()},agentServiceCommand(){return Bi({profile:this.profile,agentSecret:this.agentSecret,serverWsUrl:this.serverWsUrl})},agentLlmCommand(){return Fi()},ssoProviderRows(){let e=this.authStore,t=new Map((e.linkedIdentities||[]).map(n=>[n.provider,n]));return[{key:"alipay",label:this.$t("login.alipay"),enabled:!!e.ssoProviders.alipay},{key:"microsoft",label:this.$t("login.microsoft"),enabled:!!e.aadEnabled},{key:"github",label:this.$t("login.github"),enabled:!!e.ssoProviders.github},{key:"google",label:this.$t("login.google"),enabled:!!e.ssoProviders.google},{key:"wechat",label:this.$t("login.wechat"),enabled:!!e.ssoProviders.wechat}].filter(n=>n.enabled||t.has(n.key)).map(n=>({...n,linked:t.has(n.key),identity:t.get(n.key)||null}))},sandboxUnavailableText(){let e=this.sandboxCapability.reasonCode||"SANDBOX_CAPACITY_UNAVAILABLE",t={SANDBOX_DISABLED:"disabled",SANDBOX_NOT_ENTITLED:"notEntitled",SANDBOX_CAPACITY_UNAVAILABLE:"capacityUnavailable"};return this.$t("settings.sandbox.unavailable."+(t[e]||"capacityUnavailable"))},qrModalTitle(){let e=this.authStore.qrPanel?.provider;return e==="alipay"?this.$t("login.qr.titleAlipay"):e==="wechat"?this.$t("login.qr.titleWechat"):this.$t("login.qr.title")}},mounted(){if(this.visible)return this.applyInitialEntryPoint(),this.loadTelemetry(),this.loadData()},beforeUnmount(){this.stopSandboxPolling()},watch:{visible(e){e?(this.applyInitialEntryPoint(),this.loadTelemetry(),this.loadData(),this.activeTab==="sandbox"&&this.loadSandbox()):(this.stopSandboxPolling(),this.authStore.qrPanel&&this.cancelQrBind())},activeTab(e){e==="invitations"&&this.authStore.role==="admin"&&this.loadInvitations(),e==="sandbox"?this.loadSandbox():this.stopSandboxPolling()},"authStore.qrPanel.status"(e){if(e==="bound"){let t=this.authStore.qrPanel?.provider;this.authStore.cancelSsoQr(),this.qrDataUrl="",this.authStore.loadIdentities(),this.ssoBoundMessage=this.$t("settings.account.ssoBoundMsg",{provider:t?this.$t("login."+t):""})}},"authStore.qrPanel.authorizeUrl"(e){e&&this.authStore.qrPanel?.intent==="bind"&&this.renderQrCode()}},methods:{sandboxNeedsPolling(e=this.sandboxSnapshot){return e?.operation?.status==="pending"||e?.operation?.status==="running"},syncSandboxPolling(){if(!this.visible||this.activeTab!=="sandbox"||!this.sandboxNeedsPolling()){this.stopSandboxPolling();return}this._sandboxPollTimer||(this._sandboxPollTimer=setTimeout(async()=>{this._sandboxPollTimer=null,await this.loadSandbox({background:!0})},2e3))},stopSandboxPolling(){this._sandboxPollTimer&&(clearTimeout(this._sandboxPollTimer),this._sandboxPollTimer=null)},async loadSandbox({background:e=!1}={}){e||(this.sandboxLoading=!0),e||(this.sandboxLoadError=!1);try{let t=this.getHeaders(),[s,n]=await Promise.all([fetch("/api/sandbox/capability",{headers:t}),fetch("/api/sandbox",{headers:t})]);if(!s.ok||!n.ok)throw new Error("SANDBOX_LOAD_FAILED");this.sandboxCapability=await s.json(),this.sandboxSnapshot=(await n.json()).sandbox,!this.sandboxAgentName&&this.profile?.username&&(this.sandboxAgentName=this.profile.username+"-sandbox"),this.sandboxCapability.catalog.some(r=>r.id===this.sandboxSizeId)||(this.sandboxSizeId=this.sandboxCapability.catalog[0]?.id||"normal")}catch{this.sandboxLoadError=!0,this.sandboxCapability={available:!1,reasonCode:"SANDBOX_CAPACITY_UNAVAILABLE",catalog:[]},e&&this.stopSandboxPolling()}finally{e||(this.sandboxLoading=!1),this.syncSandboxPolling()}},sandboxIdempotencyKey(e){return this.sandboxIdempotencyKeys[e]||(this.sandboxIdempotencyKeys[e]=crypto.randomUUID()),this.sandboxIdempotencyKeys[e]},clearSandboxIdempotencyKey(e){delete this.sandboxIdempotencyKeys[e]},async createSandbox(){if(!(!this.sandboxCapability.available||this.sandboxSubmitting)){this.sandboxSubmitting=!0;try{let e=await fetch("/api/sandbox",{method:"POST",headers:{...this.getHeaders(),"Content-Type":"application/json","Idempotency-Key":this.sandboxIdempotencyKey("create")},body:JSON.stringify({agentName:this.sandboxAgentName,sizeId:this.sandboxSizeId})}),t=await e.json();if(!e.ok)throw this.clearSandboxIdempotencyKey("create"),new Error(t.code||"SANDBOX_CREATE_FAILED");this.clearSandboxIdempotencyKey("create"),this.sandboxSnapshot=t.snapshot,this.syncSandboxPolling()}catch(e){this.message=this.$t("settings.sandbox.error."+(e.message||"SANDBOX_CREATE_FAILED")),this.isError=!0}finally{this.sandboxSubmitting=!1}}},confirmRemoveSandbox(){window.confirm(this.$t("settings.sandbox.removeConfirm"))&&this.requestSandboxAction("remove")},async requestSandboxAction(e){if(!this.sandboxSubmitting){this.sandboxSubmitting=!0;try{let t=await fetch("/api/sandbox/"+e,{method:"POST",headers:{...this.getHeaders(),"Idempotency-Key":this.sandboxIdempotencyKey(e)}}),s=await t.json();if(!t.ok)throw this.clearSandboxIdempotencyKey(e),new Error(s.code||"SANDBOX_ACTION_FAILED");this.clearSandboxIdempotencyKey(e),this.sandboxSnapshot=s.snapshot,this.syncSandboxPolling()}catch(t){this.message=this.$t("settings.sandbox.error."+(t.message||"SANDBOX_ACTION_FAILED")),this.isError=!0}finally{this.sandboxSubmitting=!1}}},trackOverlayPointerDown:ft,trackOverlayPointerUp:gt,clearOverlayPointerGesture:mt,async loadTelemetry(){let e=await this.chatStore.loadTelemetrySettings();e&&!e.error&&(this.telemetryDraft={...this.telemetryDraft,...e})},async saveTelemetry(){this.telemetrySaving=!0;try{let e=await this.chatStore.updateTelemetrySettings(this.telemetryDraft);e&&!e.error&&(this.telemetryDraft={...this.telemetryDraft,...e})}finally{this.telemetrySaving=!1}},async toggleTelemetry(){this.telemetryDraft={...this.telemetryDraft,enabled:!this.telemetryEnabled},await this.saveTelemetry()},formatBytes(e){let t=Number(e);return!Number.isFinite(t)||t<1024?`${Math.max(0,t||0)} B`:t<1024*1024?`${Math.round(t/1024)} KB`:`${(t/(1024*1024)).toFixed(1)} MB`},onSettingsOverlayClick(e){rt(e)&&this.$emit("close")},onQrOverlayClick(e){rt(e)&&this.cancelQrBind()},changeLanguage(){this.chatStore.changeLocale(this.selectedLocale)},selectLanguage(e){this.selectedLocale=e,this.chatStore.changeLocale(e)},toggleDropdown(e){this.openDropdown=this.openDropdown===e?null:e},closeDropdown(e){this.openDropdown===e&&(this.openDropdown=null)},setTheme(e){this.chatStore.theme!==e&&this.chatStore.toggleTheme()},setOfficePreviewMode(e){this.officePreviewMode=e,localStorage.setItem("officePreviewMode",e)},applyInitialEntryPoint(){this.initialTab&&this.visibleTabs.some(e=>e.key===this.initialTab)&&(this.activeTab=this.initialTab),this.initialSubTab&&this.activeTab==="yeaft"&&(this.yeaftSubTab=this.yeaftSubTabs.some(e=>e.key===this.initialSubTab)?this.initialSubTab:"vp"),this.initialEditVpId&&this.activeTab==="yeaft"&&(this.yeaftSubTab="vp")},async loadData(){this.message="",this._consumeSsoQueryFlags();try{let e=this.getHeaders(),[t,s]=await Promise.all([fetch("/api/user/profile",{headers:e}),fetch("/api/user/agent-secret",{headers:e})]);if(t.ok)this.profile=await t.json();else{let n=await t.json().catch(()=>({}));this.showMessage(n.error||this.$t("settings.account.profileLoadFailed"),!0)}if(s.ok){let n=await s.json();this.applyAgentSecretResponse(n)}this.authStore.role==="admin"&&this.activeTab==="invitations"&&await this.loadInvitations();try{await this.authStore.loadIdentities()}catch{}}catch{}},_consumeSsoQueryFlags(){let e=window.location.hash||"",t=e.indexOf("?");if(t<0)return;let s=new URLSearchParams(e.slice(t+1)),n=s.get("ssoBound"),r=s.get("ssoError"),i=s.get("provider");if(n&&(this.ssoBoundMessage=this.$t("settings.account.ssoBoundMsg",{provider:n}),this.activeTab="account"),r==="conflict"&&(this.ssoConflictMessage=this.$t("settings.account.ssoConflictMsg",{provider:i||""}),this.activeTab="account"),n||r)try{history.replaceState(null,"",window.location.pathname+window.location.search)}catch{}},bindSso(e){if(this.ssoBoundMessage="",this.ssoConflictMessage="",e==="alipay"&&Vi()){this.authStore.bindSso(e);return}if(e==="alipay"&&yn()){this.authStore.loginWithAlipayMobile({intent:"bind"});return}if(e==="wechat"&&(yn()||$i())){this.ssoConflictMessage=this.$t("login.wechat.mobileUnsupported");return}e==="alipay"||e==="wechat"?this.startQrBind(e):this.authStore.bindSso(e)},async startQrBind(e){if(this.qrDataUrl="",!await this.authStore.startSsoQr(e,{intent:"bind"})){this.ssoConflictMessage=this.authStore.error||this.$t("settings.account.bindFailed");return}this.renderQrCode()},cancelQrBind(){this.authStore.cancelSsoQr(),this.qrDataUrl=""},relaunchAlipayMobile(){let e=this.authStore.qrPanel;if(!e||!e.authorizeUrl)return;let t=`alipays://platformapi/startapp?appId=20000067&url=${encodeURIComponent(e.authorizeUrl)}`;window.location.href=t},renderQrCode(){let e=this.authStore.qrPanel;if(!(!e||!e.authorizeUrl)&&typeof qrcode=="function")try{let t=qrcode(0,"M");t.addData(e.authorizeUrl,"Byte"),t.make(),this.qrDataUrl=t.createDataURL(6,4)}catch{}},async unbindSso(e){this.ssoBoundMessage="",this.ssoConflictMessage="",await this.authStore.unbindIdentity(e)||(this.ssoConflictMessage=this.authStore.identitiesError||this.$t("settings.account.unbindFailed"))},canUnbind(e){let t=this.authStore.linkedIdentities||[];return t.some(n=>n.provider===e)?this.authStore.hasPassword?!0:t.length>1:!1},async loadInvitations(){try{let e=await fetch("/api/invitations",{headers:this.getHeaders()});if(e.ok){let t=await e.json();this.invitations=t.invitations.map(s=>({...s,code:s.id,expiresAt:s.expires_at,usedByUsername:s.used_by_username||null}))}}catch{}},getHeaders(){let e={"Content-Type":"application/json"},t=this.authStore.getActiveToken?.()||this.authStore.token;return t&&(e.Authorization=`Bearer ${t}`),e},applyAgentSecretResponse(e){let t=e?.agentSecret||e?.agent_secret||null;this.agentSecret=t&&String(t).trim()?String(t):null},async copySecret(){this.agentSecret&&await this.copyText(this.agentSecret)},async copyText(e){try{await navigator.clipboard.writeText(e),this.showMessage(this.$t("settings.msg.copiedClipboard"))}catch{this.showMessage(this.$t("settings.msg.copyFailed"),!0)}},async resetSecret(){if(this.agentSecret&&!this.resetConfirm){this.resetConfirm=!0;return}this.resettingSecret=!0;try{let e=await fetch("/api/user/agent-secret/reset",{method:"POST",headers:this.getHeaders()});if(e.ok){let t=await e.json();this.applyAgentSecretResponse(t),this.showSecret=!0,this.showMessage(this.$t("settings.msg.keyReset"))}else{let t=await e.json();this.showMessage(t.error||this.$t("settings.msg.resetFailed"),!0)}}catch(e){this.showMessage(this.$t("settings.msg.resetFailed")+": "+e.message,!0)}finally{this.resettingSecret=!1,this.resetConfirm=!1}},async changePassword(){let e=this.profile&&this.profile.hasPassword===!1;if(!e&&!this.currentPassword){this.showMessage(this.$t("settings.security.enterCurrentPwd"),!0);return}if(!this.newPassword||this.newPassword.length<6){this.showMessage(this.$t("settings.security.newPwdMin"),!0);return}if(this.newPassword!==this.confirmPassword){this.showMessage(this.$t("settings.security.pwdMismatch"),!0);return}this.changingPassword=!0;try{let t={newPassword:this.newPassword};e||(t.currentPassword=this.currentPassword);let s=await fetch("/api/user/profile",{method:"PUT",headers:this.getHeaders(),body:JSON.stringify(t)}),n=await s.json();if(s.ok&&n.success){this.showMessage(e?this.$t("settings.security.pwdSet"):this.$t("settings.security.pwdChanged")),this.currentPassword="",this.newPassword="",this.confirmPassword="";try{let r=await fetch("/api/user/profile",{headers:this.getHeaders()});r.ok&&(this.profile=await r.json())}catch{}}else this.showMessage(n.error||this.$t("settings.msg.changeFailed"),!0)}catch(t){this.showMessage(this.$t("settings.msg.changeFailed")+": "+t.message,!0)}finally{this.changingPassword=!1}},cancelDeleteAccount(){this.deleteConfirm=!1,this.deletePassword="",this.deleteConfirmText=""},async deleteAccount(){if(!this.deleteConfirm){this.deleteConfirm=!0;return}let e=this.profile&&this.profile.hasPassword!==!1;if(e&&!this.deletePassword){this.showMessage(this.$t("settings.security.enterCurrentPwd"),!0);return}if(!e&&this.deleteConfirmText!=="DELETE"){this.showMessage(this.$t("settings.security.deleteConfirmRequired"),!0);return}this.deletingAccount=!0;try{let t=await this.authStore.deleteAccount(e?{currentPassword:this.deletePassword}:{confirm:"DELETE"});if(!t.success){this.showMessage(t.error||this.$t("settings.security.deleteFailed"),!0);return}window.location.reload()}finally{this.deletingAccount=!1}},async createInvitation(){this.creatingInvite=!0;try{let e=await fetch("/api/invitations",{method:"POST",headers:this.getHeaders(),body:JSON.stringify({role:this.inviteRole})});if(e.ok)await this.loadInvitations(),this.showMessage(this.$t("settings.msg.inviteCreated"));else{let t=await e.json();this.showMessage(t.error||this.$t("settings.msg.createFailed"),!0)}}catch(e){this.showMessage(this.$t("settings.msg.createFailed")+": "+e.message,!0)}finally{this.creatingInvite=!1}},async copyInviteCode(e){try{await navigator.clipboard.writeText(e),this.showMessage(this.$t("settings.msg.inviteCopied"))}catch{this.showMessage(this.$t("settings.msg.copyFailed"),!0)}},async deleteInvitation(e){try{let t=await fetch(`/api/invitations/${e}`,{method:"DELETE",headers:this.getHeaders()});if(t.ok)await this.loadInvitations(),this.showMessage(this.$t("settings.msg.inviteDeleted"));else{let s=await t.json();this.showMessage(s.error||this.$t("settings.msg.deleteFailed"),!0)}}catch(t){this.showMessage(this.$t("settings.msg.deleteFailed")+": "+t.message,!0)}},inviteStatusClass(e){return e.used_by?"used":e.expiresAt<Date.now()?"expired":""},inviteStatusText(e){return e.used_by?this.$t("settings.invite.used"):e.expiresAt<Date.now()?this.$t("settings.invite.expired"):this.$t("settings.invite.available")},formatTime(e){return new Date(e).toLocaleString()},async doLogout(){await this.authStore.logout(),window.location.reload()},showMessage(e,t=!1){this.message=e,this.isError=t,setTimeout(()=>{this.message=""},3e3)},onLlmMessage(e,t){this.showMessage(e,t)},onYeaftLlmSaved(){let e=this.chatStore?.currentAgent;e&&this.chatStore.sendWsMessage({type:"yeaft_reset",agentId:e})}}}});var Jg,em=N(()=>{Jg={name:"ExpertRoleEditor",template:`
3914
3975
  <div class="expert-editor-overlay" @click.self="$emit('close')">
3915
3976
  <div class="expert-editor-modal">
3916
3977
  <div class="expert-editor-header">
@@ -4532,7 +4593,7 @@ ${String(e||"").trim()}
4532
4593
  <p class="pane-empty-text">{{ $t('splitScreen.selectFromSidebar') }}</p>
4533
4594
  </div>
4534
4595
  </div>
4535
- `,setup(e){let t=Pinia.useChatStore(),s=Vue.ref(null),n=Vue.computed(()=>t.activePanelId===e.paneId),r=Vue.computed(()=>t.panels.find(Z=>Z.id===e.paneId)?.conversationId||null),i=Vue.computed(()=>r.value?t.messagesMap[r.value]||[]:[]),o=Vue.computed(()=>r.value?!!t.processingConversations[r.value]:!1),a=Vue.computed(()=>i.value.some(L=>L.isStreaming)),l=Vue.computed(()=>o.value&&!a.value),c=Vue.ref(0),d=Vue.ref(Date.now()),u=null,f=Vue.ref("cat"),p=new URLSearchParams(window.location.search).get("preview"),g=Vue.ref(0),m=Vue.ref(1),v=Vue.ref(5),k=Vue.ref(95),w=Vue.ref("bark-both"),I=Vue.ref(1),h=Vue.ref(-1),y=null;function b(){if(!c.value)return;d.value=Date.now();let L=(d.value-c.value)%19e3;if(L<4e3)g.value=0,m.value=1;else if(L<11500){let Z=L-4e3,ne;Z<2500?ne=Z/2500*16:Z<5e3?ne=16+(Z-2500)/2500*29:ne=45+(Z-5e3)/2500*55,g.value=ne,m.value=1}else L<14e3?(g.value=(1-(L-11500)/2500)*100,m.value=-1):(g.value=0,m.value=1);u=requestAnimationFrame(b)}function M(){if(!c.value||f.value!=="dog")return;d.value=Date.now();let L=(d.value-c.value)%18e3;if(L<2e3)v.value=5,k.value=95,w.value="bark-both",I.value=1,h.value=-1;else if(L<5e3){let Z=(L-2e3)/3e3;v.value=5+Z*25,k.value=95,w.value="left-approach",I.value=1,h.value=-1}else if(L<8e3){let Z=(L-5e3)/3e3;v.value=30,k.value=95-Z*25,w.value="right-approach",I.value=1,h.value=-1}else if(L<1e4){let Z=(L-8e3)/2e3;v.value=30+Z*13,k.value=70-Z*13,w.value="both-approach",I.value=1,h.value=-1}else if(L<11e3)v.value=43,k.value=57,w.value="snap",I.value=1,h.value=-1;else if(L<12500)v.value=43,k.value=57,w.value="stunned",I.value=1,h.value=-1;else if(L<15e3){let Z=(L-12500)/2500;v.value=43-Z*38,k.value=57+Z*38,w.value="retreat",I.value=-1,h.value=1}else L<17e3?(v.value=5,k.value=95,w.value="rehang",I.value=-1,h.value=1):(v.value=5,k.value=95,w.value="reset",I.value=1,h.value=-1);y=requestAnimationFrame(M)}let x=Vue.computed(()=>{let L=v.value*1.2;return I.value<0?`translate(${L+13.5}, 0) scale(-1, 1)`:`translate(${L-13.5}, 0)`}),D=Vue.computed(()=>{let L=k.value*1.2;return h.value>0?`translate(${L-10.5}, 2)`:`translate(${L+10.5}, 2) scale(-1, 1)`}),V=Vue.computed(()=>{let L=w.value;return L==="bark-both"||L==="left-approach"||L==="right-approach"||L==="both-approach"||L==="reset"}),E=Vue.computed(()=>{let L=v.value*1.2,Z=10;if(V.value){let Y=Math.max(0,(L-3)*.12);return`M3,18 Q${(3+L)/2},${18+Y} ${L},${Z}`}if(w.value==="rehang")return`M${L},${Z} Q${L-3},20 3,18`;let ne=I.value<0?1:-1,ke=L+ne*8;return`M${L},${Z} Q${L},18 ${ke},22`}),_=Vue.computed(()=>{let L=k.value*1.2,Z=10;if(V.value){let Y=Math.max(0,(118-L)*.12);return`M118,18 Q${(118+L)/2},${18+Y} ${L},${Z}`}if(w.value==="rehang")return`M${L},${Z} Q${L+3},20 118,18`;let ne=h.value>0?-1:1,ke=L+ne*8;return`M${L},${Z} Q${L},18 ${ke},22`}),T=Vue.computed(()=>w.value==="snap"?.2:.4),A=Vue.computed(()=>w.value==="snap"?.2:.4),R=Vue.computed(()=>v.value*1.2),j=Vue.computed(()=>k.value*1.2),F=Vue.computed(()=>p==="cat"||p==="dog"||p==="animation"?!0:l.value);Vue.watch(l,L=>{L?(c.value=Date.now(),d.value=Date.now(),f.value="cat",g.value=0,m.value=1,v.value=5,k.value=95,w.value="bark-both",I.value=1,h.value=-1,f.value==="cat"?u=requestAnimationFrame(b):y=requestAnimationFrame(M)):(c.value=0,g.value=0,m.value=1,u&&(cancelAnimationFrame(u),u=null),y&&(cancelAnimationFrame(y),y=null))},{immediate:!0}),(p==="cat"||p==="dog"||p==="animation")&&(c.value=Date.now(),d.value=Date.now(),p==="dog"?f.value="dog":f.value="cat",f.value==="cat"?u=requestAnimationFrame(b):(v.value=5,k.value=95,w.value="bark-both",I.value=1,h.value=-1,y=requestAnimationFrame(M))),Vue.onUnmounted(()=>{u&&(cancelAnimationFrame(u),u=null),y&&(cancelAnimationFrame(y),y=null)});let z=Vue.computed(()=>{if(!o.value)return null;if(t.connectionState!=="connected")return"disconnected";let L=r.value;if(t.compactStatus?.conversationId===L&&t.compactStatus?.status==="compacting")return"compacting";let Z=t.sessionHealth?.[L];return Z?Z.status:c.value&&d.value-c.value>8e3?"thinking":null}),ee=Vue.computed(()=>{if(!c.value)return"speed-napping";let L=(d.value-c.value)%19e3;return L>=16e3?"speed-petted":L>=14e3?"speed-tired":L>=11500?"speed-crazy":L>=9e3?"speed-turbo":L>=6500?"speed-fast":L>=4e3?"speed-normal":"speed-napping"}),fe=Vue.computed(()=>{let L=g.value,Z=m.value,ke={left:`calc(40px + (100% - 80px) * ${L/100})`};return Z<0&&(ke.transform="scaleX(-1)"),ke});function ce(){let L=r.value;if(!L)return;let Z=t.conversations.find(ne=>ne.id===L);t.sendWsMessage({type:"refresh_conversation",conversationId:L,agentId:Z?.agentId})}let ve=Vue.computed(()=>{let L=i.value,Z=[],ne=null,ke=0,Y=()=>{ne&&(ne.isActive=ne.isStreaming===!0,Ii(ne),(ne.textContent||ne.toolMsgs.length>0||ne.todoMsg||ne.askMsg)&&Z.push(ne),ne=null)},te=()=>{ke++,ne={type:"assistant-turn",id:"turn_"+ke,textContent:"",textSegments:[],isStreaming:!1,isActive:!1,isHistory:!1,todoMsg:null,toolMsgs:[],askMsg:null,messages:[]}};for(let ye=0;ye<L.length;ye++){let ae=L[ye];if(ae.type==="user"){if(!ae.content||!ae.content.trim())continue;Y(),Z.push({type:"user",id:ae.id||"u_"+ye,message:ae});continue}if(ae.type==="system"||ae.type==="error"){Y(),Z.push({type:ae.type,id:ae.id||"s_"+ye,message:ae});continue}if(!(ae.type==="tool-result"||ae.type==="tool_result")){if(ae.type==="assistant"){ne||te(),Si(ne,ae),ae.isStreaming&&(ne.isStreaming=!0),ae.isHistory&&(ne.isHistory=!0),ne.messages.push(ae);continue}if(ae.type==="tool-use"){ne||te();let $e=L[ye+1],Ae=$e&&($e.type==="tool-result"||$e.type==="tool_result"),xe={...ae,hasResult:Ae||ae.hasResult||!1,toolResult:ae.toolResult||null};ae.toolName==="TodoWrite"?ne.todoMsg=xe:ae.toolName==="AskUserQuestion"?ne.askMsg=xe:ne.toolMsgs.push(xe),ne.messages.push(ae);continue}Y(),Z.push({type:ae.type||"unknown",id:ae.id||"x_"+ye,message:ae})}}return Y(),Z}),ge=(L,Z)=>{if(!r.value)return;let ne=Z||[];t.sendMessageToConversation(r.value,L,ne)},pe=()=>{r.value&&t.cancelExecutionForConversation(r.value)};function P(){t.setActivePanel(e.paneId)}function U(){t.removePanel(e.paneId)}let re=Vue.computed(()=>t.getPaneRightPanel(e.paneId));function me(){t.setPaneRightPanel(e.paneId,null)}let Me=Vue.ref(!0),K=50,q=()=>{if(!s.value)return!0;let{scrollTop:L,scrollHeight:Z,clientHeight:ne}=s.value;return Z-L-ne<=K},B=()=>{s.value&&(s.value.scrollTop=s.value.scrollHeight)},O=()=>{Me.value=q()};return Vue.watch(()=>i.value.length,()=>{Me.value&&Vue.nextTick(B)}),Vue.watch(()=>{let L=i.value,Z=L[L.length-1];return Z?.isStreaming?Z.content?.length:0},()=>{Me.value&&Vue.nextTick(B)}),Vue.watch(r,()=>{s.value&&s.value.removeEventListener("scroll",O),Me.value=!0,Vue.nextTick(()=>{s.value&&(s.value.addEventListener("scroll",O),B())})}),Vue.onMounted(()=>{s.value&&(s.value.addEventListener("scroll",O),B())}),Vue.onUnmounted(()=>{s.value&&s.value.removeEventListener("scroll",O)}),{store:t,containerRef:s,isActivePanel:n,conversationId:r,messages:i,isProcessing:o,showTypingDots:l,previewShowTypingDots:F,waitingStatus:z,animationType:f,catSpeed:ee,catStyle:fe,dogPhase:w,spikeTransform:x,teddyTransform:D,leashPathL:E,leashPathR:_,leashOpacityL:T,leashOpacityR:A,questionLX:R,questionRX:j,refreshSession:ce,turnGroups:ve,sendFn:ge,cancelFn:pe,setActive:P,closePane:U,paneRightPanel:re,closePanePanel:me}}}});var iw,gs,Hr=N(()=>{iw=0,gs={name:"ModernSelect",props:{modelValue:{type:[String,Number],default:null},options:{type:Array,default:()=>[]},placeholder:{type:String,default:""},searchable:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},emptyText:{type:String,default:"\u2014"},ariaLabel:{type:String,default:""},menuMinWidth:{type:Number,default:0},menuClass:{type:String,default:""}},emits:["update:modelValue","change"],setup(e,{emit:t}){let s=Vue.ref(!1),n=Vue.ref(""),r=Vue.ref(null),i=Vue.ref(null),o=Vue.ref(null),a=Vue.ref(null),l=Vue.ref(-1),c=`modern-select-${++iw}`,d=`${c}-menu`,u=Vue.ref({}),f=Vue.computed(()=>e.options.find(x=>x.value===e.modelValue)||null),p=Vue.computed(()=>{if(!e.searchable||!n.value.trim())return e.options;let x=n.value.trim().toLowerCase();return e.options.filter(D=>String(D.label||"").toLowerCase().includes(x)||String(D.sublabel||"").toLowerCase().includes(x)||String(D.value||"").toLowerCase().includes(x))}),g=x=>`${c}-option-${x}`,m=Vue.computed(()=>s.value&&l.value>=0&&l.value<p.value.length?g(l.value):void 0);function v(){let x=r.value,D=i.value,V=o.value;if(!x||!D||!V)return;let E=6,_=8,T=x.getBoundingClientRect(),A=document.documentElement.clientWidth||window.innerWidth,R=document.documentElement.clientHeight||window.innerHeight,j=Math.min(Math.max(T.width,e.menuMinWidth),Math.max(0,A-_*2)),F=e.searchable?58:12,z=Math.min(V.scrollHeight+F,304),ee=Math.max(0,R-T.bottom-E-_),fe=Math.max(0,T.top-E-_),ce=ee<z&&fe>ee,ve=Math.max(48,Math.min(z,ce?fe:ee)),ge=T.right-j,pe=Math.min(Math.max(_,ge),Math.max(_,A-_-j));u.value={top:`${ce?T.top-E-ve:T.bottom+E}px`,left:`${pe}px`,width:`${j}px`,maxHeight:`${ve}px`,"--modern-select-list-max-height":`${Math.max(36,ve-(e.searchable?58:12))}px`}}function k(){e.disabled||(s.value=!s.value,s.value&&(n.value="",l.value=p.value.findIndex(x=>x.value===e.modelValue),Vue.nextTick(()=>{v(),e.searchable&&a.value?.focus&&a.value.focus();let x=i.value?.querySelector(".modern-select-option.is-active");x?.scrollIntoView&&x.scrollIntoView({block:"nearest"})})))}function w(){s.value=!1}function I(x){!x||x.disabled||(t("update:modelValue",x.value),t("change",x.value),w())}function h(x){if(!p.value.length)return;let D=l.value;for(let V=0;V<p.value.length;V+=1)if(D=(D+x+p.value.length)%p.value.length,!p.value[D]?.disabled){l.value=D;return}}function y(x){if(!s.value){(x.key==="Enter"||x.key===" "||x.key==="ArrowDown")&&(x.preventDefault(),k());return}if(x.key==="Escape"){x.preventDefault(),w();return}if(x.key==="ArrowDown")x.preventDefault(),h(1);else if(x.key==="ArrowUp")x.preventDefault(),h(-1);else if(x.key==="Enter"){x.preventDefault();let D=p.value[l.value];D&&I(D)}}function b(x){s.value&&(r.value?.contains(x.target)||i.value?.contains(x.target)||w())}let M=()=>{s.value&&v()};return Vue.onMounted(()=>{document.addEventListener("mousedown",b),window.addEventListener("resize",M),window.addEventListener("scroll",M,!0)}),Vue.onBeforeUnmount(()=>{document.removeEventListener("mousedown",b),window.removeEventListener("resize",M),window.removeEventListener("scroll",M,!0)}),Vue.watch(()=>e.modelValue,()=>{}),{open:s,search:n,triggerEl:r,menuEl:i,searchEl:a,activeIdx:l,selected:f,filtered:p,menuId:d,menuStyle:u,listEl:o,optionId:g,activeOptionId:m,toggle:k,close:w,pick:I,onKey:y}},template:`
4596
+ `,setup(e){let t=Pinia.useChatStore(),s=Vue.ref(null),n=Vue.computed(()=>t.activePanelId===e.paneId),r=Vue.computed(()=>t.panels.find(X=>X.id===e.paneId)?.conversationId||null),i=Vue.computed(()=>r.value?t.messagesMap[r.value]||[]:[]),o=Vue.computed(()=>r.value?!!t.processingConversations[r.value]:!1),a=Vue.computed(()=>i.value.some(L=>L.isStreaming)),l=Vue.computed(()=>o.value&&!a.value),c=Vue.ref(0),d=Vue.ref(Date.now()),u=null,f=Vue.ref("cat"),p=new URLSearchParams(window.location.search).get("preview"),g=Vue.ref(0),m=Vue.ref(1),v=Vue.ref(5),k=Vue.ref(95),w=Vue.ref("bark-both"),I=Vue.ref(1),h=Vue.ref(-1),y=null;function b(){if(!c.value)return;d.value=Date.now();let L=(d.value-c.value)%19e3;if(L<4e3)g.value=0,m.value=1;else if(L<11500){let X=L-4e3,ne;X<2500?ne=X/2500*16:X<5e3?ne=16+(X-2500)/2500*29:ne=45+(X-5e3)/2500*55,g.value=ne,m.value=1}else L<14e3?(g.value=(1-(L-11500)/2500)*100,m.value=-1):(g.value=0,m.value=1);u=requestAnimationFrame(b)}function M(){if(!c.value||f.value!=="dog")return;d.value=Date.now();let L=(d.value-c.value)%18e3;if(L<2e3)v.value=5,k.value=95,w.value="bark-both",I.value=1,h.value=-1;else if(L<5e3){let X=(L-2e3)/3e3;v.value=5+X*25,k.value=95,w.value="left-approach",I.value=1,h.value=-1}else if(L<8e3){let X=(L-5e3)/3e3;v.value=30,k.value=95-X*25,w.value="right-approach",I.value=1,h.value=-1}else if(L<1e4){let X=(L-8e3)/2e3;v.value=30+X*13,k.value=70-X*13,w.value="both-approach",I.value=1,h.value=-1}else if(L<11e3)v.value=43,k.value=57,w.value="snap",I.value=1,h.value=-1;else if(L<12500)v.value=43,k.value=57,w.value="stunned",I.value=1,h.value=-1;else if(L<15e3){let X=(L-12500)/2500;v.value=43-X*38,k.value=57+X*38,w.value="retreat",I.value=-1,h.value=1}else L<17e3?(v.value=5,k.value=95,w.value="rehang",I.value=-1,h.value=1):(v.value=5,k.value=95,w.value="reset",I.value=1,h.value=-1);y=requestAnimationFrame(M)}let x=Vue.computed(()=>{let L=v.value*1.2;return I.value<0?`translate(${L+13.5}, 0) scale(-1, 1)`:`translate(${L-13.5}, 0)`}),D=Vue.computed(()=>{let L=k.value*1.2;return h.value>0?`translate(${L-10.5}, 2)`:`translate(${L+10.5}, 2) scale(-1, 1)`}),V=Vue.computed(()=>{let L=w.value;return L==="bark-both"||L==="left-approach"||L==="right-approach"||L==="both-approach"||L==="reset"}),E=Vue.computed(()=>{let L=v.value*1.2,X=10;if(V.value){let Y=Math.max(0,(L-3)*.12);return`M3,18 Q${(3+L)/2},${18+Y} ${L},${X}`}if(w.value==="rehang")return`M${L},${X} Q${L-3},20 3,18`;let ne=I.value<0?1:-1,ke=L+ne*8;return`M${L},${X} Q${L},18 ${ke},22`}),_=Vue.computed(()=>{let L=k.value*1.2,X=10;if(V.value){let Y=Math.max(0,(118-L)*.12);return`M118,18 Q${(118+L)/2},${18+Y} ${L},${X}`}if(w.value==="rehang")return`M${L},${X} Q${L+3},20 118,18`;let ne=h.value>0?-1:1,ke=L+ne*8;return`M${L},${X} Q${L},18 ${ke},22`}),T=Vue.computed(()=>w.value==="snap"?.2:.4),A=Vue.computed(()=>w.value==="snap"?.2:.4),R=Vue.computed(()=>v.value*1.2),j=Vue.computed(()=>k.value*1.2),F=Vue.computed(()=>p==="cat"||p==="dog"||p==="animation"?!0:l.value);Vue.watch(l,L=>{L?(c.value=Date.now(),d.value=Date.now(),f.value="cat",g.value=0,m.value=1,v.value=5,k.value=95,w.value="bark-both",I.value=1,h.value=-1,f.value==="cat"?u=requestAnimationFrame(b):y=requestAnimationFrame(M)):(c.value=0,g.value=0,m.value=1,u&&(cancelAnimationFrame(u),u=null),y&&(cancelAnimationFrame(y),y=null))},{immediate:!0}),(p==="cat"||p==="dog"||p==="animation")&&(c.value=Date.now(),d.value=Date.now(),p==="dog"?f.value="dog":f.value="cat",f.value==="cat"?u=requestAnimationFrame(b):(v.value=5,k.value=95,w.value="bark-both",I.value=1,h.value=-1,y=requestAnimationFrame(M))),Vue.onUnmounted(()=>{u&&(cancelAnimationFrame(u),u=null),y&&(cancelAnimationFrame(y),y=null)});let z=Vue.computed(()=>{if(!o.value)return null;if(t.connectionState!=="connected")return"disconnected";let L=r.value;if(t.compactStatus?.conversationId===L&&t.compactStatus?.status==="compacting")return"compacting";let X=t.sessionHealth?.[L];return X?X.status:c.value&&d.value-c.value>8e3?"thinking":null}),ee=Vue.computed(()=>{if(!c.value)return"speed-napping";let L=(d.value-c.value)%19e3;return L>=16e3?"speed-petted":L>=14e3?"speed-tired":L>=11500?"speed-crazy":L>=9e3?"speed-turbo":L>=6500?"speed-fast":L>=4e3?"speed-normal":"speed-napping"}),fe=Vue.computed(()=>{let L=g.value,X=m.value,ke={left:`calc(40px + (100% - 80px) * ${L/100})`};return X<0&&(ke.transform="scaleX(-1)"),ke});function ce(){let L=r.value;if(!L)return;let X=t.conversations.find(ne=>ne.id===L);t.sendWsMessage({type:"refresh_conversation",conversationId:L,agentId:X?.agentId})}let ve=Vue.computed(()=>{let L=i.value,X=[],ne=null,ke=0,Y=()=>{ne&&(ne.isActive=ne.isStreaming===!0,Ii(ne),(ne.textContent||ne.toolMsgs.length>0||ne.todoMsg||ne.askMsg)&&X.push(ne),ne=null)},te=()=>{ke++,ne={type:"assistant-turn",id:"turn_"+ke,textContent:"",textSegments:[],isStreaming:!1,isActive:!1,isHistory:!1,todoMsg:null,toolMsgs:[],askMsg:null,messages:[]}};for(let ye=0;ye<L.length;ye++){let ae=L[ye];if(ae.type==="user"){if(!ae.content||!ae.content.trim())continue;Y(),X.push({type:"user",id:ae.id||"u_"+ye,message:ae});continue}if(ae.type==="system"||ae.type==="error"){Y(),X.push({type:ae.type,id:ae.id||"s_"+ye,message:ae});continue}if(!(ae.type==="tool-result"||ae.type==="tool_result")){if(ae.type==="assistant"){ne||te(),Si(ne,ae),ae.isStreaming&&(ne.isStreaming=!0),ae.isHistory&&(ne.isHistory=!0),ne.messages.push(ae);continue}if(ae.type==="tool-use"){ne||te();let $e=L[ye+1],Ae=$e&&($e.type==="tool-result"||$e.type==="tool_result"),xe={...ae,hasResult:Ae||ae.hasResult||!1,toolResult:ae.toolResult||null};ae.toolName==="TodoWrite"?ne.todoMsg=xe:ae.toolName==="AskUserQuestion"?ne.askMsg=xe:ne.toolMsgs.push(xe),ne.messages.push(ae);continue}Y(),X.push({type:ae.type||"unknown",id:ae.id||"x_"+ye,message:ae})}}return Y(),X}),ge=(L,X)=>{if(!r.value)return;let ne=X||[];t.sendMessageToConversation(r.value,L,ne)},pe=()=>{r.value&&t.cancelExecutionForConversation(r.value)};function P(){t.setActivePanel(e.paneId)}function U(){t.removePanel(e.paneId)}let re=Vue.computed(()=>t.getPaneRightPanel(e.paneId));function me(){t.setPaneRightPanel(e.paneId,null)}let Me=Vue.ref(!0),K=50,q=()=>{if(!s.value)return!0;let{scrollTop:L,scrollHeight:X,clientHeight:ne}=s.value;return X-L-ne<=K},B=()=>{s.value&&(s.value.scrollTop=s.value.scrollHeight)},O=()=>{Me.value=q()};return Vue.watch(()=>i.value.length,()=>{Me.value&&Vue.nextTick(B)}),Vue.watch(()=>{let L=i.value,X=L[L.length-1];return X?.isStreaming?X.content?.length:0},()=>{Me.value&&Vue.nextTick(B)}),Vue.watch(r,()=>{s.value&&s.value.removeEventListener("scroll",O),Me.value=!0,Vue.nextTick(()=>{s.value&&(s.value.addEventListener("scroll",O),B())})}),Vue.onMounted(()=>{s.value&&(s.value.addEventListener("scroll",O),B())}),Vue.onUnmounted(()=>{s.value&&s.value.removeEventListener("scroll",O)}),{store:t,containerRef:s,isActivePanel:n,conversationId:r,messages:i,isProcessing:o,showTypingDots:l,previewShowTypingDots:F,waitingStatus:z,animationType:f,catSpeed:ee,catStyle:fe,dogPhase:w,spikeTransform:x,teddyTransform:D,leashPathL:E,leashPathR:_,leashOpacityL:T,leashOpacityR:A,questionLX:R,questionRX:j,refreshSession:ce,turnGroups:ve,sendFn:ge,cancelFn:pe,setActive:P,closePane:U,paneRightPanel:re,closePanePanel:me}}}});var iw,gs,Hr=N(()=>{iw=0,gs={name:"ModernSelect",props:{modelValue:{type:[String,Number],default:null},options:{type:Array,default:()=>[]},placeholder:{type:String,default:""},searchable:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},emptyText:{type:String,default:"\u2014"},ariaLabel:{type:String,default:""},menuMinWidth:{type:Number,default:0},menuClass:{type:String,default:""}},emits:["update:modelValue","change"],setup(e,{emit:t}){let s=Vue.ref(!1),n=Vue.ref(""),r=Vue.ref(null),i=Vue.ref(null),o=Vue.ref(null),a=Vue.ref(null),l=Vue.ref(-1),c=`modern-select-${++iw}`,d=`${c}-menu`,u=Vue.ref({}),f=Vue.computed(()=>e.options.find(x=>x.value===e.modelValue)||null),p=Vue.computed(()=>{if(!e.searchable||!n.value.trim())return e.options;let x=n.value.trim().toLowerCase();return e.options.filter(D=>String(D.label||"").toLowerCase().includes(x)||String(D.sublabel||"").toLowerCase().includes(x)||String(D.value||"").toLowerCase().includes(x))}),g=x=>`${c}-option-${x}`,m=Vue.computed(()=>s.value&&l.value>=0&&l.value<p.value.length?g(l.value):void 0);function v(){let x=r.value,D=i.value,V=o.value;if(!x||!D||!V)return;let E=6,_=8,T=x.getBoundingClientRect(),A=document.documentElement.clientWidth||window.innerWidth,R=document.documentElement.clientHeight||window.innerHeight,j=Math.min(Math.max(T.width,e.menuMinWidth),Math.max(0,A-_*2)),F=e.searchable?58:12,z=Math.min(V.scrollHeight+F,304),ee=Math.max(0,R-T.bottom-E-_),fe=Math.max(0,T.top-E-_),ce=ee<z&&fe>ee,ve=Math.max(48,Math.min(z,ce?fe:ee)),ge=T.right-j,pe=Math.min(Math.max(_,ge),Math.max(_,A-_-j));u.value={top:`${ce?T.top-E-ve:T.bottom+E}px`,left:`${pe}px`,width:`${j}px`,maxHeight:`${ve}px`,"--modern-select-list-max-height":`${Math.max(36,ve-(e.searchable?58:12))}px`}}function k(){e.disabled||(s.value=!s.value,s.value&&(n.value="",l.value=p.value.findIndex(x=>x.value===e.modelValue),Vue.nextTick(()=>{v(),e.searchable&&a.value?.focus&&a.value.focus();let x=i.value?.querySelector(".modern-select-option.is-active");x?.scrollIntoView&&x.scrollIntoView({block:"nearest"})})))}function w(){s.value=!1}function I(x){!x||x.disabled||(t("update:modelValue",x.value),t("change",x.value),w())}function h(x){if(!p.value.length)return;let D=l.value;for(let V=0;V<p.value.length;V+=1)if(D=(D+x+p.value.length)%p.value.length,!p.value[D]?.disabled){l.value=D;return}}function y(x){if(!s.value){(x.key==="Enter"||x.key===" "||x.key==="ArrowDown")&&(x.preventDefault(),k());return}if(x.key==="Escape"){x.preventDefault(),w();return}if(x.key==="ArrowDown")x.preventDefault(),h(1);else if(x.key==="ArrowUp")x.preventDefault(),h(-1);else if(x.key==="Enter"){x.preventDefault();let D=p.value[l.value];D&&I(D)}}function b(x){s.value&&(r.value?.contains(x.target)||i.value?.contains(x.target)||w())}let M=()=>{s.value&&v()};return Vue.onMounted(()=>{document.addEventListener("mousedown",b),window.addEventListener("resize",M),window.addEventListener("scroll",M,!0)}),Vue.onBeforeUnmount(()=>{document.removeEventListener("mousedown",b),window.removeEventListener("resize",M),window.removeEventListener("scroll",M,!0)}),Vue.watch(()=>e.modelValue,()=>{}),{open:s,search:n,triggerEl:r,menuEl:i,searchEl:a,activeIdx:l,selected:f,filtered:p,menuId:d,menuStyle:u,listEl:o,optionId:g,activeOptionId:m,toggle:k,close:w,pick:I,onKey:y}},template:`
4536
4597
  <div class="modern-select" :class="{ 'is-open': open, 'is-disabled': disabled }">
4537
4598
  <button
4538
4599
  type="button"
@@ -4941,7 +5002,7 @@ ${String(e||"").trim()}
4941
5002
  <span class="vp-avatar-typing-dot"></span>
4942
5003
  </span>
4943
5004
  </span>
4944
- `,setup(e){let t=_t(),s=Vue.computed(()=>t.vpInitial(e.vpId)),n=Vue.computed(()=>t.vpLabel(e.vpId)),r=Vue.computed(()=>{let d=t.vpAvatarMotif;return typeof d=="function"?d(e.vpId):{key:"rat",glyph:"R",background:"linear-gradient(135deg, #174EA6 0%, #0B2F6B 100%)",foreground:"#FFFFFF"}}),i=Vue.computed(()=>{let d=t.vpColor;return typeof d=="function"?d(e.vpId):r.value.background}),o=Vue.computed(()=>r.value.key),a=Vue.computed(()=>r.value.glyph),l=Vue.computed(()=>r.value.foreground),c=Vue.computed(()=>({width:e.size+"px",height:e.size+"px",background:i.value,color:l.value,fontSize:Math.max(13,Math.round(e.size*.58))+"px"}));return{initial:s,displayName:n,avatarStyle:c,motifKey:o,motifGlyph:a}}}});function Or(e){if(!e)return"";let t=String(e).split(/[/\\]/);return t[t.length-1]||t[t.length-2]||e}function bo(e,t){if(!e)return"";let s=new Date(e);if(isNaN(s.getTime()))return"";let r=Math.floor((new Date-s)/(1e3*60*60*24)),i=typeof t=="function"?t:((o,a)=>a&&a.count!=null?`${a.count}d`:o);return r===0?i("chat.time.today")+" "+s.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"}):r===1?i("chat.time.yesterday")+" "+s.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"}):r<7?i("chat.time.daysAgo",{count:r}):s.toLocaleDateString(void 0,{month:"short",day:"numeric"})}var Ql=N(()=>{});function pw(){return dm+=1,`folder-picker-${Date.now()}-${dm}`}var Zl,dm,Xl,fw,um,Jl=N(()=>{Zl=()=>({folderPickerOpen:!1,folderPickerPath:"",folderPickerEntries:[],folderPickerLoading:!1,folderPickerSelected:"",_folderPickerTimer:null,_folderPickerRequestId:null,_folderPickerRequestAgentId:null}),dm=0;Xl={openFolderPicker(){if(!this.folderPickerAgentId||!this.chat||typeof this.chat.sendWsMessage!="function")return;this.folderPickerOpen=!0,this.folderPickerSelected="",this.folderPickerLoading=!0;let t=typeof this.folderPickerInitialDir=="function"?this.folderPickerInitialDir()||"":this.defaultWorkDir||"";this.folderPickerPath=t,this.folderPickerEntries=[],this.requestFolderPickerDir(t)},invalidateFolderPickerRequest(){this._folderPickerRequestId=null,this._folderPickerRequestAgentId=null,this._folderPickerTimer&&(clearTimeout(this._folderPickerTimer),this._folderPickerTimer=null)},closeFolderPicker(){this.folderPickerOpen=!1,this.invalidateFolderPickerRequest()},requestFolderPickerDir(e){let t=this.folderPickerAgentId;if(!t||!this.chat||typeof this.chat.sendWsMessage!="function")return;let s=pw();this._folderPickerRequestId=s,this._folderPickerRequestAgentId=t,this.chat.sendWsMessage({type:"list_directory",conversationId:"_workdir_picker",requestId:s,agentId:t,dirPath:e,workDir:this.defaultWorkDir||""}),this._folderPickerTimer&&clearTimeout(this._folderPickerTimer),this._folderPickerTimer=setTimeout(()=>{this.folderPickerLoading&&this.folderPickerOpen&&this._folderPickerRequestId===s&&this.folderPickerAgentId===t&&this.requestFolderPickerDir(e)},5e3)},loadFolderPickerDir(e){this.folderPickerLoading=!0,this.folderPickerSelected="",this.folderPickerEntries=[],this.requestFolderPickerDir(e)},folderPickerNavigateUp(){if(!this.folderPickerPath)return;let e=this.folderPickerPath.includes("\\"),t=e?"\\":"/",s=this.folderPickerPath.replace(/[/\\]$/,"").split(/[/\\]/);if(s.pop(),s.length===0)this.folderPickerPath="",this.loadFolderPickerDir("");else if(e&&s.length===1&&/^[A-Za-z]:$/.test(s[0]))this.folderPickerPath=s[0]+"\\",this.loadFolderPickerDir(this.folderPickerPath);else{let n=s.join(t);this.folderPickerPath=n,this.loadFolderPickerDir(n)}},folderPickerSelectItem(e){this.folderPickerSelected=e.name},folderPickerEnter(e){let s=this.folderPickerPath.includes("\\")||/^[A-Z]:/.test(e.name)?"\\":"/",n;this.folderPickerPath?n=this.folderPickerPath.replace(/[/\\]$/,"")+s+e.name:n=/^[A-Z]:$/.test(e.name)?e.name+"\\":"/"+e.name,this.folderPickerPath=n,this.loadFolderPickerDir(n)},confirmFolderPicker(){let e=this.folderPickerPath;if(e){if(this.folderPickerSelected){let t=e.includes("\\")?"\\":"/";e=e.replace(/[/\\]$/,"")+t+this.folderPickerSelected}typeof this.folderPickerSetWorkDir=="function"&&this.folderPickerSetWorkDir(e),this.closeFolderPicker()}},handleFolderPickerMessage(e){let t=e.detail;!t||t.type!=="directory_listing"||t.conversationId!=="_workdir_picker"||!this.folderPickerOpen||!this._folderPickerRequestId||t.requestId!==this._folderPickerRequestId||this.folderPickerAgentId!==this._folderPickerRequestAgentId||(this._folderPickerTimer&&(clearTimeout(this._folderPickerTimer),this._folderPickerTimer=null),this._folderPickerRequestId=null,this._folderPickerRequestAgentId=null,this.folderPickerLoading=!1,this.folderPickerEntries=(t.entries||[]).filter(s=>s.type==="directory").sort((s,n)=>s.name.localeCompare(n.name)),t.dirPath!=null&&(this.folderPickerPath=t.dirPath))}},fw={data(){return Zl()},methods:{...Xl},mounted(){window.addEventListener("workbench-message",this.handleFolderPickerMessage)},beforeUnmount(){window.removeEventListener("workbench-message",this.handleFolderPickerMessage),this.invalidateFolderPickerRequest()}},um=fw});function gw(e,t,s,n=0){let r=Math.max(t.top,s.top),i=Math.min(t.bottom,s.bottom),o=Math.max(0,e.top-r-fm),a=Math.max(0,i-e.bottom-fm),l=Math.max(0,Number(n)||0),c="down";return(a<l&&o>=l||a<l&&o>a)&&(c="up"),{placement:c,availableHeight:Math.floor(c==="up"?o:a)}}var pm,fm,Rn,wo=N(()=>{cm();Hr();Ql();Er();mr();Jl();pm="omni",fm=4;Rn={name:"SessionCreateModal",components:{VpAvatar:lm,ModernSelect:gs},props:{initialProvider:{type:String,default:"yeaft"},initialAgentId:{type:String,default:null}},emits:["close","created"],template:`
5005
+ `,setup(e){let t=_t(),s=Vue.computed(()=>t.vpInitial(e.vpId)),n=Vue.computed(()=>t.vpLabel(e.vpId)),r=Vue.computed(()=>{let d=t.vpAvatarMotif;return typeof d=="function"?d(e.vpId):{key:"rat",glyph:"R",background:"linear-gradient(135deg, #174EA6 0%, #0B2F6B 100%)",foreground:"#FFFFFF"}}),i=Vue.computed(()=>{let d=t.vpColor;return typeof d=="function"?d(e.vpId):r.value.background}),o=Vue.computed(()=>r.value.key),a=Vue.computed(()=>r.value.glyph),l=Vue.computed(()=>r.value.foreground),c=Vue.computed(()=>({width:e.size+"px",height:e.size+"px",background:i.value,color:l.value,fontSize:Math.max(13,Math.round(e.size*.58))+"px"}));return{initial:s,displayName:n,avatarStyle:c,motifKey:o,motifGlyph:a}}}});function Or(e){if(!e)return"";let t=String(e).split(/[/\\]/);return t[t.length-1]||t[t.length-2]||e}function bo(e,t){if(!e)return"";let s=new Date(e);if(isNaN(s.getTime()))return"";let r=Math.floor((new Date-s)/(1e3*60*60*24)),i=typeof t=="function"?t:((o,a)=>a&&a.count!=null?`${a.count}d`:o);return r===0?i("chat.time.today")+" "+s.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"}):r===1?i("chat.time.yesterday")+" "+s.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"}):r<7?i("chat.time.daysAgo",{count:r}):s.toLocaleDateString(void 0,{month:"short",day:"numeric"})}var Ql=N(()=>{});function pw(){return dm+=1,`folder-picker-${Date.now()}-${dm}`}var Xl,dm,Zl,fw,um,Jl=N(()=>{Xl=()=>({folderPickerOpen:!1,folderPickerPath:"",folderPickerEntries:[],folderPickerLoading:!1,folderPickerSelected:"",_folderPickerTimer:null,_folderPickerRequestId:null,_folderPickerRequestAgentId:null}),dm=0;Zl={openFolderPicker(){if(!this.folderPickerAgentId||!this.chat||typeof this.chat.sendWsMessage!="function")return;this.folderPickerOpen=!0,this.folderPickerSelected="",this.folderPickerLoading=!0;let t=typeof this.folderPickerInitialDir=="function"?this.folderPickerInitialDir()||"":this.defaultWorkDir||"";this.folderPickerPath=t,this.folderPickerEntries=[],this.requestFolderPickerDir(t)},invalidateFolderPickerRequest(){this._folderPickerRequestId=null,this._folderPickerRequestAgentId=null,this._folderPickerTimer&&(clearTimeout(this._folderPickerTimer),this._folderPickerTimer=null)},closeFolderPicker(){this.folderPickerOpen=!1,this.invalidateFolderPickerRequest()},requestFolderPickerDir(e){let t=this.folderPickerAgentId;if(!t||!this.chat||typeof this.chat.sendWsMessage!="function")return;let s=pw();this._folderPickerRequestId=s,this._folderPickerRequestAgentId=t,this.chat.sendWsMessage({type:"list_directory",conversationId:"_workdir_picker",requestId:s,agentId:t,dirPath:e,workDir:this.defaultWorkDir||""}),this._folderPickerTimer&&clearTimeout(this._folderPickerTimer),this._folderPickerTimer=setTimeout(()=>{this.folderPickerLoading&&this.folderPickerOpen&&this._folderPickerRequestId===s&&this.folderPickerAgentId===t&&this.requestFolderPickerDir(e)},5e3)},loadFolderPickerDir(e){this.folderPickerLoading=!0,this.folderPickerSelected="",this.folderPickerEntries=[],this.requestFolderPickerDir(e)},folderPickerNavigateUp(){if(!this.folderPickerPath)return;let e=this.folderPickerPath.includes("\\"),t=e?"\\":"/",s=this.folderPickerPath.replace(/[/\\]$/,"").split(/[/\\]/);if(s.pop(),s.length===0)this.folderPickerPath="",this.loadFolderPickerDir("");else if(e&&s.length===1&&/^[A-Za-z]:$/.test(s[0]))this.folderPickerPath=s[0]+"\\",this.loadFolderPickerDir(this.folderPickerPath);else{let n=s.join(t);this.folderPickerPath=n,this.loadFolderPickerDir(n)}},folderPickerSelectItem(e){this.folderPickerSelected=e.name},folderPickerEnter(e){let s=this.folderPickerPath.includes("\\")||/^[A-Z]:/.test(e.name)?"\\":"/",n;this.folderPickerPath?n=this.folderPickerPath.replace(/[/\\]$/,"")+s+e.name:n=/^[A-Z]:$/.test(e.name)?e.name+"\\":"/"+e.name,this.folderPickerPath=n,this.loadFolderPickerDir(n)},confirmFolderPicker(){let e=this.folderPickerPath;if(e){if(this.folderPickerSelected){let t=e.includes("\\")?"\\":"/";e=e.replace(/[/\\]$/,"")+t+this.folderPickerSelected}typeof this.folderPickerSetWorkDir=="function"&&this.folderPickerSetWorkDir(e),this.closeFolderPicker()}},handleFolderPickerMessage(e){let t=e.detail;!t||t.type!=="directory_listing"||t.conversationId!=="_workdir_picker"||!this.folderPickerOpen||!this._folderPickerRequestId||t.requestId!==this._folderPickerRequestId||this.folderPickerAgentId!==this._folderPickerRequestAgentId||(this._folderPickerTimer&&(clearTimeout(this._folderPickerTimer),this._folderPickerTimer=null),this._folderPickerRequestId=null,this._folderPickerRequestAgentId=null,this.folderPickerLoading=!1,this.folderPickerEntries=(t.entries||[]).filter(s=>s.type==="directory").sort((s,n)=>s.name.localeCompare(n.name)),t.dirPath!=null&&(this.folderPickerPath=t.dirPath))}},fw={data(){return Xl()},methods:{...Zl},mounted(){window.addEventListener("workbench-message",this.handleFolderPickerMessage)},beforeUnmount(){window.removeEventListener("workbench-message",this.handleFolderPickerMessage),this.invalidateFolderPickerRequest()}},um=fw});function gw(e,t,s,n=0){let r=Math.max(t.top,s.top),i=Math.min(t.bottom,s.bottom),o=Math.max(0,e.top-r-fm),a=Math.max(0,i-e.bottom-fm),l=Math.max(0,Number(n)||0),c="down";return(a<l&&o>=l||a<l&&o>a)&&(c="up"),{placement:c,availableHeight:Math.floor(c==="up"?o:a)}}var pm,fm,Rn,wo=N(()=>{cm();Hr();Ql();Er();mr();Jl();pm="omni",fm=4;Rn={name:"SessionCreateModal",components:{VpAvatar:lm,ModernSelect:gs},props:{initialProvider:{type:String,default:"yeaft"},initialAgentId:{type:String,default:null}},emits:["close","created"],template:`
4945
5006
  <Teleport to="body">
4946
5007
  <div class="modal-overlay" @click.self="onOverlayClick" role="dialog" aria-modal="true" :aria-label="$t('yeaft.session.create.title')">
4947
5008
  <div class="modal resume-modal yeaft-session-create-modal">
@@ -5259,7 +5320,7 @@ ${String(e||"").trim()}
5259
5320
  </div>
5260
5321
  </div>
5261
5322
  </Teleport>
5262
- `,data(){return{form:{provider:["yeaft","copilot","claude-code"].includes(this.initialProvider)?this.initialProvider:"yeaft",name:"",vpIds:[],defaultVpId:null,workDir:"",agentId:this.initialAgentId||null},busy:!1,submitError:"",restoringHiddenKey:null,...Zl(),vpPickerTouched:!1,vpRosterOpen:!1,vpRosterPlacement:"down",vpRosterAvailableHeight:null,scannedSessions:[],restoreScanning:!1,restoring:null,restoreError:"",vpSnapshotTimer:null}},computed:{chat(){try{if(typeof window<"u"&&window.Pinia?.useChatStore)return window.Pinia.useChatStore()}catch{}return null},vpStore(){try{if(typeof window<"u"&&window.Pinia?.useVpStore)return window.Pinia.useVpStore()}catch{}return null},sessionsStore(){try{if(typeof window<"u"&&window.Pinia?.useSessionsStore)return window.Pinia.useSessionsStore()}catch{}return null},isYeaftProvider(){return this.form.provider==="yeaft"},vpLibraryReady(){let e=this.vpStore;return!!(e&&e.snapshotStatus==="ready"&&e.snapshotAgentId===this.form.agentId&&e.lastVpSnapshotAgentId===this.form.agentId)},vpList(){return this.vpLibraryReady?this.vpStore?.vpList||[]:[]},vpDomainSections(){return qs(this.vpList)},vpListSignature(){return(this.vpList||[]).map(e=>e&&e.vpId).filter(Boolean).join(",")},vpLibraryEmpty(){let e=this.vpStore;return!e||!this.vpLibraryReady?!1:e.emptyLibrary===!0?!0:!!(e.lastSnapshotAt&&e.lastSnapshotAt>0&&(e.vpOrder?.length||0)===0)},vpLibraryError(){let e=this.vpStore;return!e||e.snapshotStatus!=="error"?!1:!e.snapshotAgentId||e.snapshotAgentId===this.form.agentId},agentOptions(){let e=this.chat;return!e||!Array.isArray(e.agents)?[]:e.agents.map(t=>({id:t.id,name:t.name,online:!!t.online,workDir:t.workDir||""}))},agentSelectOptions(){return this.agentOptions.map(e=>({value:e.id,label:e.name||e.id,sublabel:e.online?"":this.$t("settings.dashboard.offline"),disabled:!e.online}))},providerOptions(){return[{value:"yeaft",label:"Yeaft"},{value:"copilot",label:this.$t("provider.copilot")},{value:"claude-code",label:this.$t("provider.claudeCode")}]},agentSignature(){return this.agentOptions.map(e=>`${e.id}:${e.online?1:0}`).join(",")},folderPickerAgentId(){return this.form.agentId||this.chat?.currentAgent||""},defaultWorkDir(){return this.agentOptions.find(t=>t.id===this.form.agentId)?.workDir||this.chat?.currentAgentInfo?.workDir||""},workDirPlaceholder(){return this.defaultWorkDir||this.$t("modal.newConv.inputOrSelect")},allSessions(){return this.sessionsStore?.sessionList||[]},hiddenSessions(){return(this.chat?.hiddenSessionCatalog||[]).filter(e=>e?.routeRef?.agentId&&e?.routeRef?.sessionId)},agentSessions(){let e=this.form.agentId||null;return e?this.allSessions.filter(t=>{let s=t&&t.agentId;return!s||s===e}):this.allSessions},folderAggregates(){let e=new Map;for(let t of this.agentSessions){let s=t&&typeof t.workDir=="string"?t.workDir.trim():"";if(!s)continue;let n=e.get(s)||{path:s,count:0};n.count+=1,e.set(s,n)}return Array.from(e.values()).sort((t,s)=>t.path.localeCompare(s.path))},sessionsInDir(){let e=this.form.agentId||null;return(Array.isArray(this.scannedSessions)?this.scannedSessions:[]).filter(s=>s&&s.id).map(s=>{let n=s.agentId||e,r=It(n,s.id),i=!!(r&&this.sessionsStore?.sessions?.[r]);return{...s,...n?{agentId:n}:{},inSidebar:i}})},chatFolderRows(){return(this.chat?.folders||[]).map(e=>({path:e.path||e.name||"",count:Number(e.sessionCount)||0})).filter(e=>e.path)},createFolderRows(){return this.isYeaftProvider?this.folderAggregates:this.chatFolderRows},createSessionRows(){return this.isYeaftProvider?this.sessionsInDir:(this.chat?.historySessions||[]).map(e=>({...e,id:e.sessionId,name:e.title,createdAt:e.lastModified}))},canSubmit(){if(this.isYeaftProvider&&(!this.vpLibraryReady||this.form.vpIds.length===0)||!this.form.agentId)return!1;let e=this.agentOptions.find(t=>t.id===this.form.agentId);return!!(e&&e.online)},vpRosterSummary(){let e=this.form.vpIds||[];return e.length===0?this.$t("yeaft.session.create.vpNone"):e.length<=3?e.map(t=>this.vpLabelFor(t)).join(this.$t("common.comma")):this.$t("yeaft.session.create.vpCount",{n:e.length})},vpRosterPopupStyle(){return Number.isFinite(this.vpRosterAvailableHeight)?{"--vp-roster-available-height":`${this.vpRosterAvailableHeight}px`}:{}}},mounted(){window.addEventListener("keydown",this.onEsc),window.addEventListener("resize",this.scheduleVpRosterLayout),window.visualViewport?.addEventListener("resize",this.scheduleVpRosterLayout),window.visualViewport?.addEventListener("scroll",this.scheduleVpRosterLayout),window.addEventListener("workbench-message",this.handleFolderPickerMessage),document.addEventListener("click",this.handleOutsideRosterClick,!0),this.seedAgentDefault(),this.subscribeVpsFor(this.form.agentId),this.applyDefaultSelection()},watch:{vpListSignature(){this.applyDefaultSelection(),this.scheduleVpRosterLayout()},agentSignature(){this.seedAgentDefault(),this.scheduleVpRosterLayout()},"form.provider"(e,t){e!==t&&(this.form.workDir="",this.scannedSessions=[],this.restoreError="",e==="yeaft"?(this.subscribeVpsFor(this.form.agentId),this.applyDefaultSelection()):this.form.agentId&&this.chat?.listFoldersForAgent?.(this.form.agentId,e))},"form.agentId"(e,t){e!==t&&(this.isYeaftProvider&&this.subscribeVpsFor(e),this.form.vpIds=[],this.form.defaultVpId=null,this.vpPickerTouched=!1,this.isYeaftProvider&&this.applyDefaultSelection(),this.scannedSessions=[],this.restoreError="",!this.isYeaftProvider&&e&&this.chat?.listFoldersForAgent?.(e,this.form.provider),(this.form.workDir||"").trim()&&this.loadProviderSessions())},"form.workDir"(e,t){e===t||(this.restoreError="",this.scannedSessions=[],!(e||"").trim())||this.loadProviderSessions()}},beforeUnmount(){window.removeEventListener("keydown",this.onEsc),window.removeEventListener("resize",this.scheduleVpRosterLayout),window.visualViewport?.removeEventListener("resize",this.scheduleVpRosterLayout),window.visualViewport?.removeEventListener("scroll",this.scheduleVpRosterLayout),window.removeEventListener("workbench-message",this.handleFolderPickerMessage),document.removeEventListener("click",this.handleOutsideRosterClick,!0),this._vpRosterLayoutFrame&&cancelAnimationFrame(this._vpRosterLayoutFrame),this._folderPickerTimer&&clearTimeout(this._folderPickerTimer),this.vpSnapshotTimer&&clearTimeout(this.vpSnapshotTimer)},methods:{toggleVpRoster(){if(this.vpRosterOpen){this.closeVpRoster();return}this.vpRosterPlacement="down",this.vpRosterAvailableHeight=null,this.vpRosterOpen=!0,this.$nextTick(this.scheduleVpRosterLayout)},closeVpRoster(){this.vpRosterOpen=!1,this.vpRosterAvailableHeight=null},scheduleVpRosterLayout(){!this.vpRosterOpen||this._vpRosterLayoutFrame||(this._vpRosterLayoutFrame=requestAnimationFrame(()=>{this._vpRosterLayoutFrame=null,this.updateVpRosterLayout()}))},updateVpRosterLayout(){if(!this.vpRosterOpen)return;let e=this.$refs.vpRosterTrigger,t=this.$refs.vpRosterPopup,s=e?.closest?.(".resume-modal");if(!e||!t||!s)return;let n=t.style.maxHeight;t.style.maxHeight="none";let r=t.scrollHeight;t.style.maxHeight=n;let i=window.visualViewport,o=i?i.offsetTop:0,a=i?i.height:window.innerHeight,l={top:o,bottom:o+a},c=s.getBoundingClientRect(),d=gw(e.getBoundingClientRect(),c,l,r);this.vpRosterPlacement=d.placement,this.vpRosterAvailableHeight=d.availableHeight},seedAgentDefault(){try{let e=this.agentOptions;if(!Array.isArray(e)||e.length===0||e.find(i=>i.id===this.form.agentId&&i.online))return;let s=this.chat,n=s&&s.currentAgent||null,r=e.find(i=>i.id===n&&i.online)||e.find(i=>i.online)||null;r&&(this.form.agentId=r.id)}catch{}},subscribeVpsFor(e,{force:t=!1}={}){let s=this.chat,n=e||s?.currentAgent||null,r=this.vpStore;if(!s||typeof s.sendWsMessage!="function"||!n){let l=`vp_snapshot_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return r?.beginSnapshot?.(n,l),r?.failSnapshot?.(n,l,"No online Agent is available."),!1}if(!t&&r?.snapshotStatus==="ready"&&r.snapshotAgentId===n&&r.lastVpSnapshotAgentId===n)return this.vpSnapshotTimer&&clearTimeout(this.vpSnapshotTimer),this.vpSnapshotTimer=null,!0;let o=`vp_snapshot_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return r?.beginSnapshot?.(n,o),s.sendWsMessage({type:"yeaft_vp_subscribe",agentId:n,requestId:o})===!1?(r?.failSnapshot?.(n,o,"WebSocket is not connected."),!1):(this.vpSnapshotTimer&&clearTimeout(this.vpSnapshotTimer),this.vpSnapshotTimer=setTimeout(()=>{this.vpSnapshotTimer=null,r?.snapshotStatus==="loading"&&r.snapshotRequestId===o&&r.failSnapshot(n,o,"VP library request timed out.")},1e4),!0)},retryVpSnapshot(){this.subscribeVpsFor(this.form.agentId,{force:!0})},async restoreHiddenSession(e){if(!e?.catalogKey||this.restoringHiddenKey)return;let t=this.chat;if(!(!t||typeof t.restoreCatalogSession!="function")){this.restoringHiddenKey=e.catalogKey;try{if(!t.restoreCatalogSession(e))return;let{runtimeProvider:n,agentId:r,sessionId:i}=e.routeRef;n==="yeaft"?(t.enterYeaft?.(r,{deferBootstrap:!0}),t.setActiveSessionFilter?.(i,{agentId:r,force:!0})):(t.currentView==="yeaft"&&t.leaveYeaft?.(),t.selectConversation?.(i,r)),this.$emit("close")}finally{this.restoringHiddenKey=null}}},loadProviderSessions(){if(this.isYeaftProvider)return this.loadRestoreCandidates();let e=(this.form.workDir||"").trim();!e||!this.form.agentId||this.chat?.listHistorySessionsForAgent?.(this.form.agentId,e,this.form.provider)},async loadRestoreCandidates(){if(this.restoreScanning)return;let e=(this.form.workDir||"").trim();if(!e){this.scannedSessions=[];return}let t=this.chat;if(!t||typeof t.sessionCrudRequest!="function"){this.restoreError=this.$t("yeaft.restore.modal.scanError",{message:"store unavailable"});return}let s=this.form.agentId||null;if(!s){this.scannedSessions=[],this.restoreError=this.$t("yeaft.restore.modal.scanError",{message:"no agent selected"});return}this.restoreScanning=!0,this.restoreError="";try{let n=await t.sessionCrudRequest("scan_workdir",{workDir:e},{agentId:s});if(n&&n.ok){let r=Array.isArray(n.sessions)?n.sessions:Array.isArray(n.groups)?n.groups:[];this.scannedSessions=r}else{this.scannedSessions=[];let r=n?.error?.message||n?.error?.code||"unknown";this.restoreError=this.$t("yeaft.restore.modal.scanError",{message:r})}}catch(n){this.scannedSessions=[],this.restoreError=this.$t("yeaft.restore.modal.scanError",{message:n?.message||String(n)})}finally{this.restoreScanning=!1}},async onRestoreClick(e){if(!e||!e.id||this.restoring)return;let t=this.chat;if(!t||typeof t.sessionCrudRequest!="function"){this.restoreError=this.$t("yeaft.restore.modal.restoreError",{message:"store unavailable"});return}let s=this.form.agentId||null;if(!s){this.restoreError=this.$t("yeaft.restore.modal.restoreError",{message:"no agent selected"});return}this.restoring=e.id,this.restoreError="";try{let n=await t.sessionCrudRequest("restore",{sessionId:e.id,workDir:(this.form.workDir||"").trim()},{agentId:s});if(n&&n.ok){let i=n.session||n.group||e,o=i?.agentId||e.agentId||s;o&&t.currentAgent!==o&&typeof t.selectAgent=="function"&&t.selectAgent(o),this.sessionsStore&&this.sessionsStore.setActive(i.id||e.id,o),typeof t.setActiveSessionFilter=="function"&&t.setActiveSessionFilter(i.id||e.id,{agentId:o,force:!0}),this.$emit("created",i),this.$emit("close");return}let r=n?.error?.message||n?.error?.code||"unknown";this.restoreError=this.$t("yeaft.restore.modal.restoreError",{message:r})}catch(n){this.restoreError=this.$t("yeaft.restore.modal.restoreError",{message:n?.message||String(n)})}finally{this.restoring=null}},applyDefaultSelection(){if(this.vpPickerTouched)return;let e=this.vpList||[];if(e.length===0)return;let t=e.map(o=>o&&o.vpId).filter(Boolean);if(t.length===0)return;let s=Array.isArray(this.form.vpIds)?this.form.vpIds:[],n=s.filter(o=>t.includes(o)),r=this.form.defaultVpId&&n.includes(this.form.defaultVpId);if(n.length>0&&r){n.length!==s.length&&(this.form.vpIds=n);return}let i=t.includes(pm)?pm:n[0]||t[0];this.form.vpIds=[i],this.form.defaultVpId=i},toggleVp(e,t){this.vpPickerTouched=!0,t?(this.form.vpIds.includes(e)||this.form.vpIds.push(e),this.form.defaultVpId||(this.form.defaultVpId=e)):(this.form.vpIds=this.form.vpIds.filter(s=>s!==e),this.form.defaultVpId&&!this.form.vpIds.includes(this.form.defaultVpId)&&(this.form.defaultVpId=this.form.vpIds[0]||null))},vpLabelFor(e){let t=this.vpStore?.vpLabel;return typeof t=="function"?t(e):e},vpDescriptionFor(e){let t=this.vpStore?.vpDescription;return typeof t=="function"?t(e):""},vpTextColorFor(e){let t=this.vpStore?.vpTextColor;return typeof t=="function"?t(e):"var(--text-primary)"},selectFolder(e){this.form.workDir=e},selectSession(e){if(!(!e||!e.id)){if(!this.isYeaftProvider){let t=e.workDir||(this.form.workDir||"").trim()||this.defaultWorkDir;this.chat?.selectAgent?.(this.form.agentId),this.chat._pendingSessionTitle=e.name||e.title||null,this.chat?.resumeConversation?.(e.id,t,this.form.agentId,this.chatProviderOptions()),this.$emit("close");return}e.inSidebar?this.resumeExisting(e):this.onRestoreClick(e)}},chatProviderOptions(){let e={provider:this.form.provider};return this.form.provider==="copilot"&&(e.providerOptions={allowAllTools:!0}),e},resumeExisting(e){if(!e||!e.id)return;let t=this.chat,s=e.agentId||this.form.agentId||null;s&&t&&t.currentAgent!==s&&typeof t.selectAgent=="function"&&t.selectAgent(s),this.sessionsStore&&this.sessionsStore.setActive(e.id,s),t&&typeof t.setActiveSessionFilter=="function"&&t.setActiveSessionFilter(e.id,{agentId:s,force:!0}),this.$emit("close")},handleOutsideRosterClick(e){if(!this.vpRosterOpen)return;let t=this.$refs.vpRosterRoot;t&&(t.contains(e.target)||this.closeVpRoster())},getLastPathSegment(e){return Or(e)},formatDate(e){return bo(e,this.$t.bind(this))},onEsc(e){if(e.key==="Escape"&&!this.folderPickerOpen){if(this.vpRosterOpen){this.closeVpRoster();return}this.busy||this.requestClose()}},onOverlayClick(){this.busy||this.requestClose()},requestClose(){this.$emit("close")},folderPickerInitialDir(){return this.form.workDir||this.defaultWorkDir||""},folderPickerSetWorkDir(e){this.form.workDir=e},...Xl,async onSubmit(){if(!(this.busy||!this.canSubmit)){this.submitError="",this.busy=!0;try{if(!this.chat){this.submitError=this.$t("yeaft.session.error.unknown",{message:"store unavailable"});return}if(!this.isYeaftProvider){let d=this.form.workDir.trim()||this.defaultWorkDir;this.chat.selectAgent?.(this.form.agentId),this.chat.createConversation?.(d,this.form.agentId,null,this.chatProviderOptions()),this.$emit("created",{provider:this.form.provider,workDir:d}),this.$emit("close");return}if(typeof this.chat.createYeaftSession!="function"){this.submitError=this.$t("yeaft.session.error.unknown",{message:"store unavailable"});return}let e=new Set((this.vpList||[]).map(d=>d&&d.vpId).filter(Boolean)),t=this.form.vpIds.filter(d=>e.has(d));if(t.length===0){this.submitError=this.$t("yeaft.session.error.unknown",{message:"no valid VP selected"});return}let s=this.form.defaultVpId&&t.includes(this.form.defaultVpId)?this.form.defaultVpId:t[0],r=this.form.name.trim()||Or(this.form.workDir.trim())||this.$t("yeaft.session.create.untitled"),i=await this.chat.createYeaftSession({displayName:r,vpIds:t,defaultVpId:s,workDir:this.form.workDir.trim(),agentId:this.form.agentId||null});if(i&&i.ok){let d=this.chat,u=i.session||i.group||null,f=u&&u.id,p=u?.agentId||this.form.agentId||null;f&&(p&&d&&d.currentAgent!==p&&typeof d.selectAgent=="function"&&d.selectAgent(p),this.sessionsStore&&this.sessionsStore.setActive(f,p),d&&typeof d.setActiveSessionFilter=="function"&&d.setActiveSessionFilter(f,{agentId:p,force:!0})),this.$emit("created",u),this.$emit("close");return}let o=i?.error?.code||"unknown",a=i?.error?.message||"",l=`yeaft.session.error.${o}`,c=this.$t(l,{message:a});this.submitError=c===l?this.$t("yeaft.session.error.unknown",{message:a}):c}catch(e){this.submitError=this.$t("yeaft.session.error.unknown",{message:e?.message||String(e)})}finally{this.busy=!1}}}}}});var gm,mm=N(()=>{Yi();zi();Tr();gm={name:"WorkCenterActionDetail",components:{UserTurnBlock:In,VpTurnBlock:Sn},props:{action:{type:Object,default:null},canMessage:{type:Boolean,default:!1},messages:{type:Array,default:()=>[]},messagesNextCursor:{type:[String,Number],default:null},messagesLoading:{type:Boolean,default:!1},messagesError:{type:String,default:""},previewingAttachmentId:{type:String,default:null},attachmentError:{type:String,default:""}},emits:["back","close","load-earlier-messages","open-attachment","quote","edit-as-new"],computed:{executorName(){return this.action?.assignedVp?.name||this.action?.assignedVp?.id||this.action?.requiredRole||this.tr("workCenter.actionExecutorPending","Executor pending")},hasMessages(){return this.messages.length>0},waitingQuestion(){return this.action?.status!=="waiting"?"":String(this.action?.canonicalResult?.waitingReason||"").trim()},conversationBlocks(){return this.messages.map(e=>{let t=Number(e?.updatedAt||e?.createdAt)||0;if(e?.role==="user")return{key:e.id,kind:"user",message:{id:e.id,messageId:e.id,type:"user",content:e.text||"",attachments:Array.isArray(e.attachments)?e.attachments:[],quote:e.quote||null,timestamp:t}};let s=e.speaker||{},n=this.messageSpeaker(e),r=s.id||`work-center-action:${this.action?.id||"unknown"}`;return{key:e.id,kind:"assistant",speakerName:n,turn:{id:e.id,messageId:e.id,atMessageId:e.id,turnId:e.turnId||e.id,textContent:e.text||"",textSegments:e.text?[{key:e.id,content:e.text,kind:e.status==="running"?"progress":"result",isStreaming:e.status==="running"}]:[],isStreaming:e.status==="running",speakerVpId:r,speakerTimestamp:t,showSpeakerHeader:!0,timestamp:t,createdAt:t,todoMsg:null,toolMsgs:[],toolSummaryCount:0,imageMsgs:[],askMsg:null,attachments:Array.isArray(e.attachments)?e.attachments:[]}}})}},watch:{messages:{deep:!0,handler(){this.$nextTick(()=>pt(this.$el))}}},mounted(){this.$nextTick(()=>pt(this.$el))},methods:{tr(e,t){let s=this.$t?this.$t(e):e;return s&&s!==e?s:t},statusLabel(e){return this.tr(`workCenter.status.${e}`,String(e||"").replace("_"," "))},actionSequence(){let e=Number(this.action?.sequence);return Number.isFinite(e)&&e>0?e:1},messageSpeaker(e){if(e?.role==="user")return this.tr("workCenter.you","You");let t=this.$t("workCenter.actionNumber",{number:this.actionSequence()}),s=e?.speaker?.name||e?.speaker?.id||"";return s?this.$t("workCenter.messageSpeakerRole",{name:s,role:t}):t},time(e){if(!e)return"";try{return new Date(Number(e)).toLocaleString()}catch{return""}},formatAttachmentSize(e){let t=Math.max(0,Number(e)||0);return t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/1024/1024).toFixed(1)} MB`},openAttachment(e){this.$emit("open-attachment",e?.attachment||e,e?.trigger||null)}},template:`
5323
+ `,data(){return{form:{provider:["yeaft","copilot","claude-code"].includes(this.initialProvider)?this.initialProvider:"yeaft",name:"",vpIds:[],defaultVpId:null,workDir:"",agentId:this.initialAgentId||null},busy:!1,submitError:"",restoringHiddenKey:null,...Xl(),vpPickerTouched:!1,vpRosterOpen:!1,vpRosterPlacement:"down",vpRosterAvailableHeight:null,scannedSessions:[],restoreScanning:!1,restoring:null,restoreError:"",vpSnapshotTimer:null}},computed:{chat(){try{if(typeof window<"u"&&window.Pinia?.useChatStore)return window.Pinia.useChatStore()}catch{}return null},vpStore(){try{if(typeof window<"u"&&window.Pinia?.useVpStore)return window.Pinia.useVpStore()}catch{}return null},sessionsStore(){try{if(typeof window<"u"&&window.Pinia?.useSessionsStore)return window.Pinia.useSessionsStore()}catch{}return null},isYeaftProvider(){return this.form.provider==="yeaft"},vpLibraryReady(){let e=this.vpStore;return!!(e&&e.snapshotStatus==="ready"&&e.snapshotAgentId===this.form.agentId&&e.lastVpSnapshotAgentId===this.form.agentId)},vpList(){return this.vpLibraryReady?this.vpStore?.vpList||[]:[]},vpDomainSections(){return qs(this.vpList)},vpListSignature(){return(this.vpList||[]).map(e=>e&&e.vpId).filter(Boolean).join(",")},vpLibraryEmpty(){let e=this.vpStore;return!e||!this.vpLibraryReady?!1:e.emptyLibrary===!0?!0:!!(e.lastSnapshotAt&&e.lastSnapshotAt>0&&(e.vpOrder?.length||0)===0)},vpLibraryError(){let e=this.vpStore;return!e||e.snapshotStatus!=="error"?!1:!e.snapshotAgentId||e.snapshotAgentId===this.form.agentId},agentOptions(){let e=this.chat;return!e||!Array.isArray(e.agents)?[]:e.agents.map(t=>({id:t.id,name:t.name,online:!!t.online,workDir:t.workDir||""}))},agentSelectOptions(){return this.agentOptions.map(e=>({value:e.id,label:e.name||e.id,sublabel:e.online?"":this.$t("settings.dashboard.offline"),disabled:!e.online}))},providerOptions(){return[{value:"yeaft",label:"Yeaft"},{value:"copilot",label:this.$t("provider.copilot")},{value:"claude-code",label:this.$t("provider.claudeCode")}]},agentSignature(){return this.agentOptions.map(e=>`${e.id}:${e.online?1:0}`).join(",")},folderPickerAgentId(){return this.form.agentId||this.chat?.currentAgent||""},defaultWorkDir(){return this.agentOptions.find(t=>t.id===this.form.agentId)?.workDir||this.chat?.currentAgentInfo?.workDir||""},workDirPlaceholder(){return this.defaultWorkDir||this.$t("modal.newConv.inputOrSelect")},allSessions(){return this.sessionsStore?.sessionList||[]},hiddenSessions(){return(this.chat?.hiddenSessionCatalog||[]).filter(e=>e?.routeRef?.agentId&&e?.routeRef?.sessionId)},agentSessions(){let e=this.form.agentId||null;return e?this.allSessions.filter(t=>{let s=t&&t.agentId;return!s||s===e}):this.allSessions},folderAggregates(){let e=new Map;for(let t of this.agentSessions){let s=t&&typeof t.workDir=="string"?t.workDir.trim():"";if(!s)continue;let n=e.get(s)||{path:s,count:0};n.count+=1,e.set(s,n)}return Array.from(e.values()).sort((t,s)=>t.path.localeCompare(s.path))},sessionsInDir(){let e=this.form.agentId||null;return(Array.isArray(this.scannedSessions)?this.scannedSessions:[]).filter(s=>s&&s.id).map(s=>{let n=s.agentId||e,r=It(n,s.id),i=!!(r&&this.sessionsStore?.sessions?.[r]);return{...s,...n?{agentId:n}:{},inSidebar:i}})},chatFolderRows(){return(this.chat?.folders||[]).map(e=>({path:e.path||e.name||"",count:Number(e.sessionCount)||0})).filter(e=>e.path)},createFolderRows(){return this.isYeaftProvider?this.folderAggregates:this.chatFolderRows},createSessionRows(){return this.isYeaftProvider?this.sessionsInDir:(this.chat?.historySessions||[]).map(e=>({...e,id:e.sessionId,name:e.title,createdAt:e.lastModified}))},canSubmit(){if(this.isYeaftProvider&&(!this.vpLibraryReady||this.form.vpIds.length===0)||!this.form.agentId)return!1;let e=this.agentOptions.find(t=>t.id===this.form.agentId);return!!(e&&e.online)},vpRosterSummary(){let e=this.form.vpIds||[];return e.length===0?this.$t("yeaft.session.create.vpNone"):e.length<=3?e.map(t=>this.vpLabelFor(t)).join(this.$t("common.comma")):this.$t("yeaft.session.create.vpCount",{n:e.length})},vpRosterPopupStyle(){return Number.isFinite(this.vpRosterAvailableHeight)?{"--vp-roster-available-height":`${this.vpRosterAvailableHeight}px`}:{}}},mounted(){window.addEventListener("keydown",this.onEsc),window.addEventListener("resize",this.scheduleVpRosterLayout),window.visualViewport?.addEventListener("resize",this.scheduleVpRosterLayout),window.visualViewport?.addEventListener("scroll",this.scheduleVpRosterLayout),window.addEventListener("workbench-message",this.handleFolderPickerMessage),document.addEventListener("click",this.handleOutsideRosterClick,!0),this.seedAgentDefault(),this.subscribeVpsFor(this.form.agentId),this.applyDefaultSelection()},watch:{vpListSignature(){this.applyDefaultSelection(),this.scheduleVpRosterLayout()},agentSignature(){this.seedAgentDefault(),this.scheduleVpRosterLayout()},"form.provider"(e,t){e!==t&&(this.form.workDir="",this.scannedSessions=[],this.restoreError="",e==="yeaft"?(this.subscribeVpsFor(this.form.agentId),this.applyDefaultSelection()):this.form.agentId&&this.chat?.listFoldersForAgent?.(this.form.agentId,e))},"form.agentId"(e,t){e!==t&&(this.isYeaftProvider&&this.subscribeVpsFor(e),this.form.vpIds=[],this.form.defaultVpId=null,this.vpPickerTouched=!1,this.isYeaftProvider&&this.applyDefaultSelection(),this.scannedSessions=[],this.restoreError="",!this.isYeaftProvider&&e&&this.chat?.listFoldersForAgent?.(e,this.form.provider),(this.form.workDir||"").trim()&&this.loadProviderSessions())},"form.workDir"(e,t){e===t||(this.restoreError="",this.scannedSessions=[],!(e||"").trim())||this.loadProviderSessions()}},beforeUnmount(){window.removeEventListener("keydown",this.onEsc),window.removeEventListener("resize",this.scheduleVpRosterLayout),window.visualViewport?.removeEventListener("resize",this.scheduleVpRosterLayout),window.visualViewport?.removeEventListener("scroll",this.scheduleVpRosterLayout),window.removeEventListener("workbench-message",this.handleFolderPickerMessage),document.removeEventListener("click",this.handleOutsideRosterClick,!0),this._vpRosterLayoutFrame&&cancelAnimationFrame(this._vpRosterLayoutFrame),this._folderPickerTimer&&clearTimeout(this._folderPickerTimer),this.vpSnapshotTimer&&clearTimeout(this.vpSnapshotTimer)},methods:{toggleVpRoster(){if(this.vpRosterOpen){this.closeVpRoster();return}this.vpRosterPlacement="down",this.vpRosterAvailableHeight=null,this.vpRosterOpen=!0,this.$nextTick(this.scheduleVpRosterLayout)},closeVpRoster(){this.vpRosterOpen=!1,this.vpRosterAvailableHeight=null},scheduleVpRosterLayout(){!this.vpRosterOpen||this._vpRosterLayoutFrame||(this._vpRosterLayoutFrame=requestAnimationFrame(()=>{this._vpRosterLayoutFrame=null,this.updateVpRosterLayout()}))},updateVpRosterLayout(){if(!this.vpRosterOpen)return;let e=this.$refs.vpRosterTrigger,t=this.$refs.vpRosterPopup,s=e?.closest?.(".resume-modal");if(!e||!t||!s)return;let n=t.style.maxHeight;t.style.maxHeight="none";let r=t.scrollHeight;t.style.maxHeight=n;let i=window.visualViewport,o=i?i.offsetTop:0,a=i?i.height:window.innerHeight,l={top:o,bottom:o+a},c=s.getBoundingClientRect(),d=gw(e.getBoundingClientRect(),c,l,r);this.vpRosterPlacement=d.placement,this.vpRosterAvailableHeight=d.availableHeight},seedAgentDefault(){try{let e=this.agentOptions;if(!Array.isArray(e)||e.length===0||e.find(i=>i.id===this.form.agentId&&i.online))return;let s=this.chat,n=s&&s.currentAgent||null,r=e.find(i=>i.id===n&&i.online)||e.find(i=>i.online)||null;r&&(this.form.agentId=r.id)}catch{}},subscribeVpsFor(e,{force:t=!1}={}){let s=this.chat,n=e||s?.currentAgent||null,r=this.vpStore;if(!s||typeof s.sendWsMessage!="function"||!n){let l=`vp_snapshot_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return r?.beginSnapshot?.(n,l),r?.failSnapshot?.(n,l,"No online Agent is available."),!1}if(!t&&r?.snapshotStatus==="ready"&&r.snapshotAgentId===n&&r.lastVpSnapshotAgentId===n)return this.vpSnapshotTimer&&clearTimeout(this.vpSnapshotTimer),this.vpSnapshotTimer=null,!0;let o=`vp_snapshot_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return r?.beginSnapshot?.(n,o),s.sendWsMessage({type:"yeaft_vp_subscribe",agentId:n,requestId:o})===!1?(r?.failSnapshot?.(n,o,"WebSocket is not connected."),!1):(this.vpSnapshotTimer&&clearTimeout(this.vpSnapshotTimer),this.vpSnapshotTimer=setTimeout(()=>{this.vpSnapshotTimer=null,r?.snapshotStatus==="loading"&&r.snapshotRequestId===o&&r.failSnapshot(n,o,"VP library request timed out.")},1e4),!0)},retryVpSnapshot(){this.subscribeVpsFor(this.form.agentId,{force:!0})},async restoreHiddenSession(e){if(!e?.catalogKey||this.restoringHiddenKey)return;let t=this.chat;if(!(!t||typeof t.restoreCatalogSession!="function")){this.restoringHiddenKey=e.catalogKey;try{if(!t.restoreCatalogSession(e))return;let{runtimeProvider:n,agentId:r,sessionId:i}=e.routeRef;n==="yeaft"?(t.enterYeaft?.(r,{deferBootstrap:!0}),t.setActiveSessionFilter?.(i,{agentId:r,force:!0})):(t.currentView==="yeaft"&&t.leaveYeaft?.(),t.selectConversation?.(i,r)),this.$emit("close")}finally{this.restoringHiddenKey=null}}},loadProviderSessions(){if(this.isYeaftProvider)return this.loadRestoreCandidates();let e=(this.form.workDir||"").trim();!e||!this.form.agentId||this.chat?.listHistorySessionsForAgent?.(this.form.agentId,e,this.form.provider)},async loadRestoreCandidates(){if(this.restoreScanning)return;let e=(this.form.workDir||"").trim();if(!e){this.scannedSessions=[];return}let t=this.chat;if(!t||typeof t.sessionCrudRequest!="function"){this.restoreError=this.$t("yeaft.restore.modal.scanError",{message:"store unavailable"});return}let s=this.form.agentId||null;if(!s){this.scannedSessions=[],this.restoreError=this.$t("yeaft.restore.modal.scanError",{message:"no agent selected"});return}this.restoreScanning=!0,this.restoreError="";try{let n=await t.sessionCrudRequest("scan_workdir",{workDir:e},{agentId:s});if(n&&n.ok){let r=Array.isArray(n.sessions)?n.sessions:Array.isArray(n.groups)?n.groups:[];this.scannedSessions=r}else{this.scannedSessions=[];let r=n?.error?.message||n?.error?.code||"unknown";this.restoreError=this.$t("yeaft.restore.modal.scanError",{message:r})}}catch(n){this.scannedSessions=[],this.restoreError=this.$t("yeaft.restore.modal.scanError",{message:n?.message||String(n)})}finally{this.restoreScanning=!1}},async onRestoreClick(e){if(!e||!e.id||this.restoring)return;let t=this.chat;if(!t||typeof t.sessionCrudRequest!="function"){this.restoreError=this.$t("yeaft.restore.modal.restoreError",{message:"store unavailable"});return}let s=this.form.agentId||null;if(!s){this.restoreError=this.$t("yeaft.restore.modal.restoreError",{message:"no agent selected"});return}this.restoring=e.id,this.restoreError="";try{let n=await t.sessionCrudRequest("restore",{sessionId:e.id,workDir:(this.form.workDir||"").trim()},{agentId:s});if(n&&n.ok){let i=n.session||n.group||e,o=i?.agentId||e.agentId||s;o&&t.currentAgent!==o&&typeof t.selectAgent=="function"&&t.selectAgent(o),this.sessionsStore&&this.sessionsStore.setActive(i.id||e.id,o),typeof t.setActiveSessionFilter=="function"&&t.setActiveSessionFilter(i.id||e.id,{agentId:o,force:!0}),this.$emit("created",i),this.$emit("close");return}let r=n?.error?.message||n?.error?.code||"unknown";this.restoreError=this.$t("yeaft.restore.modal.restoreError",{message:r})}catch(n){this.restoreError=this.$t("yeaft.restore.modal.restoreError",{message:n?.message||String(n)})}finally{this.restoring=null}},applyDefaultSelection(){if(this.vpPickerTouched)return;let e=this.vpList||[];if(e.length===0)return;let t=e.map(o=>o&&o.vpId).filter(Boolean);if(t.length===0)return;let s=Array.isArray(this.form.vpIds)?this.form.vpIds:[],n=s.filter(o=>t.includes(o)),r=this.form.defaultVpId&&n.includes(this.form.defaultVpId);if(n.length>0&&r){n.length!==s.length&&(this.form.vpIds=n);return}let i=t.includes(pm)?pm:n[0]||t[0];this.form.vpIds=[i],this.form.defaultVpId=i},toggleVp(e,t){this.vpPickerTouched=!0,t?(this.form.vpIds.includes(e)||this.form.vpIds.push(e),this.form.defaultVpId||(this.form.defaultVpId=e)):(this.form.vpIds=this.form.vpIds.filter(s=>s!==e),this.form.defaultVpId&&!this.form.vpIds.includes(this.form.defaultVpId)&&(this.form.defaultVpId=this.form.vpIds[0]||null))},vpLabelFor(e){let t=this.vpStore?.vpLabel;return typeof t=="function"?t(e):e},vpDescriptionFor(e){let t=this.vpStore?.vpDescription;return typeof t=="function"?t(e):""},vpTextColorFor(e){let t=this.vpStore?.vpTextColor;return typeof t=="function"?t(e):"var(--text-primary)"},selectFolder(e){this.form.workDir=e},selectSession(e){if(!(!e||!e.id)){if(!this.isYeaftProvider){let t=e.workDir||(this.form.workDir||"").trim()||this.defaultWorkDir;this.chat?.selectAgent?.(this.form.agentId),this.chat._pendingSessionTitle=e.name||e.title||null,this.chat?.resumeConversation?.(e.id,t,this.form.agentId,this.chatProviderOptions()),this.$emit("close");return}e.inSidebar?this.resumeExisting(e):this.onRestoreClick(e)}},chatProviderOptions(){let e={provider:this.form.provider};return this.form.provider==="copilot"&&(e.providerOptions={allowAllTools:!0}),e},resumeExisting(e){if(!e||!e.id)return;let t=this.chat,s=e.agentId||this.form.agentId||null;s&&t&&t.currentAgent!==s&&typeof t.selectAgent=="function"&&t.selectAgent(s),this.sessionsStore&&this.sessionsStore.setActive(e.id,s),t&&typeof t.setActiveSessionFilter=="function"&&t.setActiveSessionFilter(e.id,{agentId:s,force:!0}),this.$emit("close")},handleOutsideRosterClick(e){if(!this.vpRosterOpen)return;let t=this.$refs.vpRosterRoot;t&&(t.contains(e.target)||this.closeVpRoster())},getLastPathSegment(e){return Or(e)},formatDate(e){return bo(e,this.$t.bind(this))},onEsc(e){if(e.key==="Escape"&&!this.folderPickerOpen){if(this.vpRosterOpen){this.closeVpRoster();return}this.busy||this.requestClose()}},onOverlayClick(){this.busy||this.requestClose()},requestClose(){this.$emit("close")},folderPickerInitialDir(){return this.form.workDir||this.defaultWorkDir||""},folderPickerSetWorkDir(e){this.form.workDir=e},...Zl,async onSubmit(){if(!(this.busy||!this.canSubmit)){this.submitError="",this.busy=!0;try{if(!this.chat){this.submitError=this.$t("yeaft.session.error.unknown",{message:"store unavailable"});return}if(!this.isYeaftProvider){let d=this.form.workDir.trim()||this.defaultWorkDir;this.chat.selectAgent?.(this.form.agentId),this.chat.createConversation?.(d,this.form.agentId,null,this.chatProviderOptions()),this.$emit("created",{provider:this.form.provider,workDir:d}),this.$emit("close");return}if(typeof this.chat.createYeaftSession!="function"){this.submitError=this.$t("yeaft.session.error.unknown",{message:"store unavailable"});return}let e=new Set((this.vpList||[]).map(d=>d&&d.vpId).filter(Boolean)),t=this.form.vpIds.filter(d=>e.has(d));if(t.length===0){this.submitError=this.$t("yeaft.session.error.unknown",{message:"no valid VP selected"});return}let s=this.form.defaultVpId&&t.includes(this.form.defaultVpId)?this.form.defaultVpId:t[0],r=this.form.name.trim()||Or(this.form.workDir.trim())||this.$t("yeaft.session.create.untitled"),i=await this.chat.createYeaftSession({displayName:r,vpIds:t,defaultVpId:s,workDir:this.form.workDir.trim(),agentId:this.form.agentId||null});if(i&&i.ok){let d=this.chat,u=i.session||i.group||null,f=u&&u.id,p=u?.agentId||this.form.agentId||null;f&&(p&&d&&d.currentAgent!==p&&typeof d.selectAgent=="function"&&d.selectAgent(p),this.sessionsStore&&this.sessionsStore.setActive(f,p),d&&typeof d.setActiveSessionFilter=="function"&&d.setActiveSessionFilter(f,{agentId:p,force:!0})),this.$emit("created",u),this.$emit("close");return}let o=i?.error?.code||"unknown",a=i?.error?.message||"",l=`yeaft.session.error.${o}`,c=this.$t(l,{message:a});this.submitError=c===l?this.$t("yeaft.session.error.unknown",{message:a}):c}catch(e){this.submitError=this.$t("yeaft.session.error.unknown",{message:e?.message||String(e)})}finally{this.busy=!1}}}}}});var gm,mm=N(()=>{Yi();zi();Tr();gm={name:"WorkCenterActionDetail",components:{UserTurnBlock:In,VpTurnBlock:Sn},props:{action:{type:Object,default:null},canMessage:{type:Boolean,default:!1},messages:{type:Array,default:()=>[]},messagesNextCursor:{type:[String,Number],default:null},messagesLoading:{type:Boolean,default:!1},messagesError:{type:String,default:""},previewingAttachmentId:{type:String,default:null},attachmentError:{type:String,default:""}},emits:["back","close","load-earlier-messages","open-attachment","quote","edit-as-new"],computed:{executorName(){return this.action?.assignedVp?.name||this.action?.assignedVp?.id||this.action?.requiredRole||this.tr("workCenter.actionExecutorPending","Executor pending")},hasMessages(){return this.messages.length>0},waitingQuestion(){return this.action?.status!=="waiting"?"":String(this.action?.canonicalResult?.waitingReason||"").trim()},conversationBlocks(){return this.messages.map(e=>{let t=Number(e?.updatedAt||e?.createdAt)||0;if(e?.role==="user")return{key:e.id,kind:"user",message:{id:e.id,messageId:e.id,type:"user",content:e.text||"",attachments:Array.isArray(e.attachments)?e.attachments:[],quote:e.quote||null,timestamp:t}};let s=e.speaker||{},n=this.messageSpeaker(e),r=s.id||`work-center-action:${this.action?.id||"unknown"}`;return{key:e.id,kind:"assistant",speakerName:n,turn:{id:e.id,messageId:e.id,atMessageId:e.id,turnId:e.turnId||e.id,textContent:e.text||"",textSegments:e.text?[{key:e.id,content:e.text,kind:e.status==="running"?"progress":"result",isStreaming:e.status==="running"}]:[],isStreaming:e.status==="running",speakerVpId:r,speakerTimestamp:t,showSpeakerHeader:!0,timestamp:t,createdAt:t,todoMsg:null,toolMsgs:[],toolSummaryCount:0,imageMsgs:[],askMsg:null,attachments:Array.isArray(e.attachments)?e.attachments:[]}}})}},watch:{messages:{deep:!0,handler(){this.$nextTick(()=>pt(this.$el))}}},mounted(){this.$nextTick(()=>pt(this.$el))},methods:{tr(e,t){let s=this.$t?this.$t(e):e;return s&&s!==e?s:t},statusLabel(e){return this.tr(`workCenter.status.${e}`,String(e||"").replace("_"," "))},actionSequence(){let e=Number(this.action?.sequence);return Number.isFinite(e)&&e>0?e:1},messageSpeaker(e){if(e?.role==="user")return this.tr("workCenter.you","You");let t=this.$t("workCenter.actionNumber",{number:this.actionSequence()}),s=e?.speaker?.name||e?.speaker?.id||"";return s?this.$t("workCenter.messageSpeakerRole",{name:s,role:t}):t},time(e){if(!e)return"";try{return new Date(Number(e)).toLocaleString()}catch{return""}},formatAttachmentSize(e){let t=Math.max(0,Number(e)||0);return t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/1024/1024).toFixed(1)} MB`},openAttachment(e){this.$emit("open-attachment",e?.attachment||e,e?.trigger||null)}},template:`
5263
5324
  <section class="work-center-action-detail-pane" v-if="action">
5264
5325
  <header class="work-center-action-detail-header">
5265
5326
  <button class="work-center-icon-button" type="button" @click="$emit('back')" :title="tr('workCenter.backToActions', 'Back to Actions')" :aria-label="tr('workCenter.backToActions', 'Back to Actions')">
@@ -6354,7 +6415,7 @@ ${String(e||"").trim()}
6354
6415
  </div>
6355
6416
  </form>
6356
6417
  </div>
6357
- `}});function To(e){if(!e)return"-";let t=String(e);if(t.length<=25)return t;let s=t.split(/[/\\]/);return s.length<=2?t:"..."+s.slice(-2).join("/")}var ic=N(()=>{});function km({isMobileView:e,showMobileSidebar:t,closeMobileSidebar:s,toggleSidebar:n}){if(e&&t){s();return}n()}var Sm=N(()=>{});var Im,Cm=N(()=>{pl();Pl();ro();Fl();Bl();Nl();ql();sm();Wl();Hr();jl();Ul();Kl();zl();Gl();wo();rc();ic();Ql();_i();St();Sm();Im={name:"ChatPage",components:{ChatHeader:Hi,MessageList:Zi,ChatInput:xn,WorkbenchPanel:co,WorkCenterPage:xo,SettingsPanel:uo,ExpertPanel:po,SubAgentPanel:fo,BtwOverlay:tm,SplitPane:nm,ModernSelect:gs,SidebarModeToggle:go,SidebarAgentHeader:mo,SidebarWorkCenter:ho,SessionSidebarShell:vo,UnifiedSessionList:yo,SessionCreateModal:Rn},template:`
6418
+ `}});function To(e){if(!e)return"-";let t=String(e);if(t.length<=25)return t;let s=t.split(/[/\\]/);return s.length<=2?t:"..."+s.slice(-2).join("/")}var ic=N(()=>{});function km({isMobileView:e,showMobileSidebar:t,closeMobileSidebar:s,toggleSidebar:n}){if(e&&t){s();return}n()}var Sm=N(()=>{});var Im,Cm=N(()=>{pl();Pl();ro();Fl();Bl();Nl();ql();sm();Wl();Hr();jl();Ul();Kl();zl();Gl();wo();rc();ic();Ql();_i();St();Sm();Im={name:"ChatPage",components:{ChatHeader:Hi,MessageList:Xi,ChatInput:xn,WorkbenchPanel:co,WorkCenterPage:xo,SettingsPanel:uo,ExpertPanel:po,SubAgentPanel:fo,BtwOverlay:tm,SplitPane:nm,ModernSelect:gs,SidebarModeToggle:go,SidebarAgentHeader:mo,SidebarWorkCenter:ho,SessionSidebarShell:vo,UnifiedSessionList:yo,SessionCreateModal:Rn},template:`
6358
6419
  <div class="chat-page" :class="{ 'show-sidebar': store.sessionSidebarOpen }">
6359
6420
 
6360
6421
  <!-- Sidebar Overlay -->
@@ -7244,7 +7305,7 @@ ${String(e||"").trim()}
7244
7305
  ... truncated`:t},dreamSnapshotSummary(){let e=this.dreamSnapshot,t=e&&typeof e.summaryText=="string"?e.summaryText.trim():"";return t&&e.summaryTruncated?`${t}
7245
7306
  ... truncated`:t},dreamSnapshotMemory(){let e=this.dreamSnapshot,t=e&&typeof e.memoryText=="string"?e.memoryText.trim():"";return t&&e.memoryTruncated?`${t}
7246
7307
  ... truncated`:t},dreamEvents(){let e=this.store&&this.store.yeaftDreamEventsForActiveSession||[];return Array.isArray(e)?e:[]},dreamEventCount(){return this.dreamEvents.length},dreamSessionTitles(){let e={},t=(r,i)=>{let o=String(i||"").trim();r&&o&&(e[r]=o)},s=this.sessionsStore?.sessions||{};for(let r of Object.values(s))!r||!r.id||(t(r.id,r.name||r.title),t(`sessions/${r.id}`,r.name||r.title));let n=this.store?.yeaftActiveSessionFilter;return n&&t(n,this.store?.yeaftActiveSessionName||this.store?.currentSessionTitle),e},allDreamItems(){let e=this.store||{},t=e.yeaftDreamEvents||{},s=Object.values(t).flatMap(n=>Array.isArray(n)?n:[]);return Hm({latest:e.yeaftDreamLatest||{},snapshots:e.yeaftDreamSnapshots||{},promptLoads:e.yeaftDreamPromptLoads||{},events:s,sessionTitles:this.dreamSessionTitles})},dreamItems(){return Vm(this.allDreamItems,this.dreamItemSearch)},activeDreamItem(){return this.activeDreamItemKey&&this.dreamItems.find(e=>e.key===this.activeDreamItemKey)||null},activeDreamRequestEvents(){let e=this.activeDreamItem;return e?e.events.filter(t=>t&&(t.request||t.response||t.rawRequest||t.rawResponse||t.systemPrompt||this.dreamLoopUserContent(t))):[]}},methods:{debugSessionId(e){return this.formatDebugSessionId(e&&(e.sessionId||e.groupId)||"")},debugDreamSessionId(e){return this.formatDebugSessionId(e&&(e.sessionId||e.groupId)||"")},formatDebugSessionId(e){let t=String(e||"");return t.startsWith("grp_")?t.slice(4):t},toggleTurn(e){let t=!this.expandedTurns[e];this.expandedTurns={...this.expandedTurns,[e]:t},t&&this.ensureRequestDetailLoaded(e)},debugLoopsForTurn(e){return(Array.isArray(this.store?.yeaftDebugLoops)?this.store.yeaftDebugLoops:[]).filter(s=>s&&s.turnId===e)},debugTurnNeedsDetailLoad(e){if(!e||!e.turnId)return!1;if(!e.detailsLoaded)return!0;let t=this.debugLoopsForTurn(e.turnId),s=Math.max(0,Number(e.loopCount||0)),n=new Set;for(let i of t){let o=Number(i?.loopNumber||0);Number.isFinite(o)&&o>0&&n.add(o)}if((n.size>0?Math.max(...n):0)>n.size||s>t.length)return!0;for(let i=1;i<=s;i++)if(!n.has(i))return!0;return!1},ensureRequestDetailLoaded(e){let t=this.store?.yeaftDebugTurnsById?.[e];!t||!this.store||typeof this.store.loadYeaftDebugHistory!="function"||this.debugTurnNeedsDetailLoad(t)&&this.store.loadYeaftDebugHistory({limit:Fm,dreamLimit:0,detailTurnId:e,groupId:t.sessionId||null})},toggleDream(){this.dreamExpanded=!this.dreamExpanded},dreamEventDetail(e){if(!e)return"";let t=e.phase||"unknown",s=[],n=!0;if(t==="start")s.push(e.manual?"manual trigger":"auto trigger");else if(t==="load-diff")this.debugDreamSessionId(e)&&s.push(`session ${this.debugDreamSessionId(e)}`);else if(t==="triage")typeof e.segments=="number"&&s.push(`${e.segments} segs`),typeof e.actions=="number"&&s.push(`${e.actions} actions`),e.status&&s.push(e.status);else if(t==="merge")typeof e.targets=="number"&&s.push(`${e.targets} targets`);else if(t==="apply")e.target&&s.push(e.target),e.status&&s.push(e.status),typeof e.mergedCount=="number"&&s.push(`merged ${e.mergedCount}`);else if(t==="done"){let r=typeof e.sessions=="number"?e.sessions:e.groups;typeof r=="number"&&s.push(`${r} sessions`),typeof e.targets=="number"&&s.push(`${e.targets} targets`),typeof e.duration=="number"&&s.push(this.formatMs(e.duration))}else t==="result"?(s.push(e.success?"success":"error"),typeof e.entriesCreated=="number"&&s.push(`entries ${e.entriesCreated}`),this.formatDreamMetrics(e)&&s.push(this.formatDreamMetrics(e)),!e.success&&e.error&&s.push(e.error),e.skipped&&s.push(`skipped: ${e.skippedReason||"unknown"}`)):n=!1;if(!n||s.length===0){let r=new Set(["type","phase","sessionId","groupId","target","ts","at"]);for(let[i,o]of Object.entries(e))r.has(i)||o!=null&&typeof o!="object"&&s.push(`${i}=${o}`)}return e.error&&!s.includes(e.error)&&s.unshift(`error: ${e.error}`),s.join(" \xB7 ")},dreamEventStatus(e){return e?e.status==="skipped"||e.skipped?"skipped":e.status==="error"||e.phase==="error"?"error":e.status==="done"||e.status==="success"||e.phase==="done"?"success":e.phase==="result"?e.success?"success":"error":"running":"running"},dreamEventTrigger(e){return e?e.trigger?e.trigger:e.source?e.source:e.manual===!0?"manual":e.manual===!1?"auto":"-":"-"},dreamEventCall(e){if(!e)return"-";let t=e.phase||"unknown",s=e.status||"";return t==="start"?"scheduler -> runDream":t==="load-diff"?"runDream -> loadSessionDiff":t==="triage"?s?`triageSessionSegments \xB7 ${s}`:"triageSessionSegments":t==="merge"?"mergeByTarget":t==="apply"?s?`applyMergedTarget \xB7 ${s}`:"applyMergedTarget":t==="done"?"runDream completed":t==="result"?"web-bridge -> yeaft_dream_result":t},dreamEventLocation(e){return e?e.target?e.target:e.scope?e.scope:this.debugDreamSessionId(e)?`session/${this.debugDreamSessionId(e)}`:e.vpId?`vp/${e.vpId}`:"-":"-"},dreamEventResult(e){if(!e)return"-";let t=[];return e.skipped&&t.push(`skipped: ${e.skippedReason||"unknown"}`),e.reason&&t.push(`reason: ${e.reason}`),typeof e.entriesCreated=="number"&&t.push(`entries ${e.entriesCreated}`),typeof e.targetsApplied=="number"&&t.push(`applied ${e.targetsApplied}`),typeof e.sessionsProcessed=="number"&&t.push(`sessions ${e.sessionsProcessed}`),typeof e.sessionsSkipped=="number"&&t.push(`skipped sessions ${e.sessionsSkipped}`),typeof e.segments=="number"&&t.push(`segments ${e.segments}`),typeof e.actions=="number"&&t.push(`actions ${e.actions}`),typeof e.targets=="number"&&t.push(`targets ${e.targets}`),typeof e.duration=="number"&&t.push(this.formatMs(e.duration)),this.formatDreamMetrics(e)&&t.push(this.formatDreamMetrics(e)),Array.isArray(e.targetErrors)&&e.targetErrors.length>0&&t.push(`errors ${e.targetErrors.length}: ${this.truncate(e.targetErrors.map(s=>s.target?`${s.target}: ${s.error}`:s.error).join("; "),160)}`),e.error&&t.push(`error: ${e.error}`),t.length>0?t.join(" \xB7 "):this.dreamEventDetail(e)},dreamEventKind(e){if(!e)return"progress";let t=e.type;return t==="loop"?"loop":t==="turn_close"||t==="dream_turn_close"?"turn_close":t==="dream_run"&&e.phase==="result"?"result":"progress"},isDreamEventExpandable(e){let t=this.dreamEventKind(e);return t==="loop"?!!(e&&(e.systemPrompt||e.response||Array.isArray(e.messages)&&e.messages.length>0)):t==="turn_close"||t==="result"?!!(e&&(e.metrics||e.passBreakdown||e.resultSummary)):t==="progress"?!!(e&&(e.memoryMdPreview||e.summaryMdPreview)):!1},dreamEventKey(e){return e?`${e.at||0}:${e.turnId||""}:${e.phase||e.type||""}`:""},toggleDreamEvent(e){let t=this.dreamEventKey(e);if(!t)return;let s=new Set(this.dreamEvents.map(r=>this.dreamEventKey(r))),n={};for(let[r,i]of Object.entries(this.expandedDreamEvents))s.has(r)&&(n[r]=i);n[t]=!n[t],this.expandedDreamEvents=n},isDreamEventExpanded(e){return!!this.expandedDreamEvents[this.dreamEventKey(e)]},dreamLoopUserContent(e){let t=Array.isArray(e?.messages)?e.messages:[];for(let s of t)if(s&&s.role==="user"){if(typeof s.content=="string")return s.content;if(s.content!=null)return JSON.stringify(s.content,null,2)}return""},formatPassBreakdown(e){if(!e||typeof e!="object")return"";let t=[];for(let[s,n]of Object.entries(e)){if(!n)continue;let r=[s+":"];n.llmCallCount&&r.push(`${n.llmCallCount} call`),n.totalTokens&&r.push(`${this.formatTokens(n.totalTokens)} tok`),n.durationMs&&r.push(this.formatMs(n.durationMs)),t.push(r.join(" "))}return t.join(" \xB7 ")},copyDreamEventAsMarkdown(e){if(!e)return;let t=this.dreamEventKind(e),s=[`# Dream event \xB7 ${t} \xB7 ${e.phase||e.type||"?"}`];if(s.push(`- at: ${this.formatTimestamp(e.at)}`),e.turnId&&s.push(`- turnId: ${e.turnId}`),this.debugDreamSessionId(e)&&s.push(`- sessionId: ${this.debugDreamSessionId(e)}`),e.target&&s.push(`- target: ${e.target}`),t==="loop"){s.push(`- pass: ${e.pass||"-"}`),s.push(`- model: ${e.model||"-"}`),s.push(`- latency: ${this.formatMs(e.latencyMs)}`);let n=e.usage||{};s.push(`- tokens: ${this.formatUsageBreakdown(n)}`),s.push("","## System prompt","```",e.systemPrompt||"","```"),s.push("","## User message","```",this.dreamLoopUserContent(e),"```"),s.push("","## Response","```",e.response||"","```")}else if(t==="turn_close"){s.push(`- loopCount: ${e.loopCount??e.metrics?.llmCallCount??0}`),s.push(`- totalTokens: ${e.totalTokens??e.metrics?.totalTokens??0}`),s.push(`- totalMs: ${e.totalMs??e.metrics?.durationMs??0}`);let n=e.passBreakdown||e.metrics?.passBreakdown;n&&s.push("","## Pass breakdown","```json",JSON.stringify(n,null,2),"```")}else t==="result"?(s.push(`- status: ${e.status||"-"}`),e.error&&s.push(`- error: ${e.error}`),e.resultSummary&&s.push("","## Result summary","```json",JSON.stringify(e.resultSummary,null,2),"```"),e.metrics&&s.push("","## Metrics","```json",JSON.stringify(e.metrics,null,2),"```")):(e.memoryMdPreview&&s.push("","## memory.md (preview)","```",e.memoryMdPreview,"```"),e.summaryMdPreview&&s.push("","## summary.md (preview)","```",e.summaryMdPreview,"```"),!e.memoryMdPreview&&!e.summaryMdPreview&&s.push("","## Raw","```json",JSON.stringify(e,null,2),"```"));this.copyText(s.join(`
7247
- `),"dream event")},toggleLoop(e,t){let s=`${e}#${t}`;this.expandedLoops={...this.expandedLoops,[s]:!this.expandedLoops[s]}},toggleSection(e,t){let s=`${e}#${t}`;this.expandedSections={...this.expandedSections,[s]:!this.expandedSections[s]}},isLoopExpanded(e,t){return!!this.expandedLoops[`${e}#${t}`]},isSectionExpanded(e,t){return!!this.expandedSections[`${e}#${t}`]},formatMs(e){return e==null?"-":e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`},formatTokens(e){let t=Number(e)||0;return t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)},usageTotalInputTokens(e){let t=e||{};return Number.isFinite(Number(t.totalInputTokens))?Number(t.totalInputTokens):(Number(t.inputTokens)||0)+(Number(t.cacheReadTokens)||0)+(Number(t.cacheWriteTokens)||0)},usageTotalTokens(e){let t=e||{};return Number.isFinite(Number(t.totalTokens))?Number(t.totalTokens):this.usageTotalInputTokens(t)+(Number(t.outputTokens)||0)},formatUsageBreakdown(e){let t=e||{},s=Number(t.cacheReadTokens)||0,n=Number(t.cacheWriteTokens)||0,r=this.usageTotalInputTokens(t),i=Number(t.outputTokens)||0,o=this.usageTotalTokens(t),a=`${r} in / ${i} out / ${o} total`;return(s||n)&&(r===(Number(t.inputTokens)||0)?a+=` (input includes cache read ${s}, cache write ${n})`:a+=` (fresh ${Number(t.inputTokens)||0}, cache read ${s}, cache write ${n})`),a},formatDreamMetrics(e){if(!e)return"";let t=[];return typeof e.durationMs=="number"&&t.push(this.formatMs(e.durationMs)),typeof e.llmCallCount=="number"&&t.push(`${e.llmCallCount} LLM calls`),typeof e.totalTokens=="number"&&t.push(`${this.formatTokens(e.totalTokens)} tok`),t.join(" \xB7 ")},formatTimestamp(e){if(!e)return"";try{return new Date(e).toLocaleTimeString()}catch{return""}},formatClock(e){return Xd(e)},loopClockTime(e,t){if(t&&typeof t.at=="number")return this.formatClock(t.at);if(!e||typeof e.openedAt!="number")return"";let s=e.loops||[],n=0;for(let r of s)if(r){if(r===t||r.loopNumber===t.loopNumber)break;Number.isFinite(r.latencyMs)&&(n+=r.latencyMs)}return Number.isFinite(t.latencyMs)&&(n+=t.latencyMs),this.formatClock(e.openedAt+n)},loopTokenBreakdown(e){if(!e)return{inputMessage:0,inputTool:0,outputMessage:0,outputTool:0,inputTotal:0,outputTotal:0,total:0};let t=Zd(e),s=e.usage||{},n=Math.max(0,this.usageTotalInputTokens(s)),r=Math.max(0,Number(s.outputTokens)||0),i=Math.max(0,this.usageTotalTokens(s)||n+r),o=Ra(n,t.inputMessageTokens,t.inputToolTokens),a=Ra(r,t.outputMessageTokens,t.outputToolTokens);return{inputMessage:o.message,inputTool:o.tool,outputMessage:a.message,outputTool:a.tool,inputTotal:n,outputTotal:r,total:i}},decorateTurnTokenBreakdowns(e){if(!e)return e;let t={inputMessage:0,inputTool:0,outputMessage:0,outputTool:0,inputTotal:0,outputTotal:0,total:0},s=(e&&e.loops||[]).map(o=>{let a=this.loopTokenBreakdown(o);return t.inputMessage+=a.inputMessage,t.inputTool+=a.inputTool,t.outputMessage+=a.outputMessage,t.outputTool+=a.outputTool,t.inputTotal+=a.inputTotal,t.outputTotal+=a.outputTotal,t.total+=a.total,{...o,tokenBreakdown:a}});s.length===0&&(t.inputTotal=Math.max(0,Number(e.summaryInputTokens)||0),t.outputTotal=Math.max(0,Number(e.summaryOutputTokens)||0),t.total=t.inputTotal+t.outputTotal);let n=s.reduce((o,a)=>(Number(a?.tokenBreakdown?.total)||0)>(Number(o?.tokenBreakdown?.total)||0)?a:o,null),r={...t,messageTotal:t.inputMessage+t.outputMessage,toolTotal:t.inputTool+t.outputTool},i=Math.max(Number(e.totalTokens)||0,r.total||0);if(i>r.total){let o=i-r.total;r.total=i,r.inputTotal+=o,r.inputMessage+=o,r.messageTotal+=o}return{...e,loops:s,tokenBreakdown:r,maxLoopTokenBreakdown:n?.tokenBreakdown||null,maxLoopTokenTotal:Number(n?.tokenBreakdown?.total)||0,maxLoopNumber:n?.loopNumber||null}},turnTotalTokens(e){return Math.max(Number(e?.totalTokens)||0,Number(e?.tokenBreakdown?.total)||0)},loopBreakdownMessageTokens(e){return(Number(e?.inputMessage)||0)+(Number(e?.outputMessage)||0)},loopBreakdownToolTokens(e){return(Number(e?.inputTool)||0)+(Number(e?.outputTool)||0)},loopMessageTokens(e){return this.loopBreakdownMessageTokens(e?.tokenBreakdown||{})},loopToolTokens(e){return this.loopBreakdownToolTokens(e?.tokenBreakdown||{})},tokenPct(e,t){let s=Number(e)||0,n=Number(t)||0;return n<=0||s<=0?"0%":`${Math.round(s/n*100)}%`},tokenBreakdownTitle(e){let t=e||{},s=(Number(t.inputMessage)||0)+(Number(t.outputMessage)||0),n=(Number(t.inputTool)||0)+(Number(t.outputTool)||0),r=Math.max(Number(t.total)||0,s+n);return`estimated token split: message ${s} (${this.tokenPct(s,r)}), tool ${n} (${this.tokenPct(n,r)}); input ${Number(t.inputTotal)||0}, output ${Number(t.outputTotal)||0}, total ${r}`},truncate(e,t){let s=String(e||"");return s.length<=t?s:s.slice(0,t)+"\u2026"},toolsForLoop(e,t){let s=typeof t=="object"?t:(e?.loops||[]).find(l=>l&&l.loopNumber===t)||{loopNumber:t},n=s?.loopNumber||0,r=(e&&e.tools||[]).filter(l=>l&&l.loopNumber===n),i=new Set,o=Array.isArray(s?.toolCalls)?s.toolCalls:[],a=[];for(let l=0;l<o.length;l++){let c=o[l]||{},d=c.id||c.callId||c.tool_call_id||null,u=d?r.findIndex((p,g)=>!i.has(g)&&p.callId===d):-1;u<0&&(u=r.findIndex((p,g)=>!i.has(g)&&!p.callId&&p.name===c.name));let f=u>=0?r[u]:null;u>=0&&i.add(u),a.push(this.normalizeToolDebugRow(n,c,f,l))}for(let l=0;l<r.length;l++)i.has(l)||a.push(this.normalizeToolDebugRow(n,null,r[l],a.length));return a},normalizeToolDebugRow(e,t,s,n){let r=!!s,i=t&&Object.prototype.hasOwnProperty.call(t,"input")?t.input:void 0,o=t&&(t.id||t.callId||t.tool_call_id)||s?.callId||null,a=t&&t.name||s?.name||"?";return{loopNumber:e,index:n,callId:o,name:a,input:i,rawCall:t||null,rawResult:s||null,hasResult:r,isRunning:!r,isError:!!s?.isError,durationMs:s?.durationMs||0,toolOutput:s?.toolOutput==null?null:String(s.toolOutput)}},toolDetailKey(e,t,s,n=0){return`${e}#${t}#${s?.callId||s?.name||"tool"}#${n}`},isToolDetailExpanded(e,t,s,n){return!!this.expandedToolDetails[this.toolDetailKey(e,t,s,n)]},toggleToolDetail(e,t,s,n){let r=this.toolDetailKey(e,t,s,n);this.expandedToolDetails={...this.expandedToolDetails,[r]:!this.expandedToolDetails[r]}},toolStatusClass(e){return e?.isRunning?"running":e?.isError?"err":"ok"},toolStatusLabel(e){return e?.isRunning?this.$t?this.$t("yeaft.debugToolRunning"):"running":e?.isError?"\u2717":"\u2713"},toolInputText(e){return e?e.input!==void 0?JSON.stringify(e.input??null,null,2):e.rawCall?JSON.stringify(e.rawCall,null,2):JSON.stringify(e.rawResult||e,null,2):""},toolOutputText(e){return e?e.isRunning?this.$t?this.$t("yeaft.debugToolRunningNoResult"):"Running; no result yet":e.toolOutput!=null?e.toolOutput:e.rawResult?JSON.stringify(e.rawResult,null,2):"":""},reflectionsForLoop(e,t){return(e&&e.reflections||[]).filter(n=>n&&(n.loopNumber===t||n.loopNumber==null&&t===e.loopCount))},loopMetaSummary(e){let t=(e.toolCalls||[]).length;return t>0?`tools\xD7${t}`:"end_turn"},assistantResponseForLoop(e){if(!e)return"";if(e.response)return typeof e.response=="string"?e.response:JSON.stringify(e.response,null,2);let t=Array.isArray(e.messages)?e.messages:[];for(let s=t.length-1;s>=0;s--){let n=t[s];if(!(!n||n.role!=="assistant")){if(typeof n.content=="string")return n.content;if(Array.isArray(n.content)){let r=n.content.map(i=>i?typeof i=="string"?i:typeof i.text=="string"?i.text:"":"").filter(Boolean);if(r.length>0)return r.join(`
7308
+ `),"dream event")},toggleLoop(e,t){let s=`${e}#${t}`;this.expandedLoops={...this.expandedLoops,[s]:!this.expandedLoops[s]}},toggleSection(e,t){let s=`${e}#${t}`;this.expandedSections={...this.expandedSections,[s]:!this.expandedSections[s]}},isLoopExpanded(e,t){return!!this.expandedLoops[`${e}#${t}`]},isSectionExpanded(e,t){return!!this.expandedSections[`${e}#${t}`]},formatMs(e){return e==null?"-":e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`},formatTokens(e){let t=Number(e)||0;return t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)},usageTotalInputTokens(e){let t=e||{};return Number.isFinite(Number(t.totalInputTokens))?Number(t.totalInputTokens):(Number(t.inputTokens)||0)+(Number(t.cacheReadTokens)||0)+(Number(t.cacheWriteTokens)||0)},usageTotalTokens(e){let t=e||{};return Number.isFinite(Number(t.totalTokens))?Number(t.totalTokens):this.usageTotalInputTokens(t)+(Number(t.outputTokens)||0)},formatUsageBreakdown(e){let t=e||{},s=Number(t.cacheReadTokens)||0,n=Number(t.cacheWriteTokens)||0,r=this.usageTotalInputTokens(t),i=Number(t.outputTokens)||0,o=this.usageTotalTokens(t),a=`${r} in / ${i} out / ${o} total`;return(s||n)&&(r===(Number(t.inputTokens)||0)?a+=` (input includes cache read ${s}, cache write ${n})`:a+=` (fresh ${Number(t.inputTokens)||0}, cache read ${s}, cache write ${n})`),a},formatDreamMetrics(e){if(!e)return"";let t=[];return typeof e.durationMs=="number"&&t.push(this.formatMs(e.durationMs)),typeof e.llmCallCount=="number"&&t.push(`${e.llmCallCount} LLM calls`),typeof e.totalTokens=="number"&&t.push(`${this.formatTokens(e.totalTokens)} tok`),t.join(" \xB7 ")},formatTimestamp(e){if(!e)return"";try{return new Date(e).toLocaleTimeString()}catch{return""}},formatClock(e){return Zd(e)},loopClockTime(e,t){if(t&&typeof t.at=="number")return this.formatClock(t.at);if(!e||typeof e.openedAt!="number")return"";let s=e.loops||[],n=0;for(let r of s)if(r){if(r===t||r.loopNumber===t.loopNumber)break;Number.isFinite(r.latencyMs)&&(n+=r.latencyMs)}return Number.isFinite(t.latencyMs)&&(n+=t.latencyMs),this.formatClock(e.openedAt+n)},loopTokenBreakdown(e){if(!e)return{inputMessage:0,inputTool:0,outputMessage:0,outputTool:0,inputTotal:0,outputTotal:0,total:0};let t=Xd(e),s=e.usage||{},n=Math.max(0,this.usageTotalInputTokens(s)),r=Math.max(0,Number(s.outputTokens)||0),i=Math.max(0,this.usageTotalTokens(s)||n+r),o=Ra(n,t.inputMessageTokens,t.inputToolTokens),a=Ra(r,t.outputMessageTokens,t.outputToolTokens);return{inputMessage:o.message,inputTool:o.tool,outputMessage:a.message,outputTool:a.tool,inputTotal:n,outputTotal:r,total:i}},decorateTurnTokenBreakdowns(e){if(!e)return e;let t={inputMessage:0,inputTool:0,outputMessage:0,outputTool:0,inputTotal:0,outputTotal:0,total:0},s=(e&&e.loops||[]).map(o=>{let a=this.loopTokenBreakdown(o);return t.inputMessage+=a.inputMessage,t.inputTool+=a.inputTool,t.outputMessage+=a.outputMessage,t.outputTool+=a.outputTool,t.inputTotal+=a.inputTotal,t.outputTotal+=a.outputTotal,t.total+=a.total,{...o,tokenBreakdown:a}});s.length===0&&(t.inputTotal=Math.max(0,Number(e.summaryInputTokens)||0),t.outputTotal=Math.max(0,Number(e.summaryOutputTokens)||0),t.total=t.inputTotal+t.outputTotal);let n=s.reduce((o,a)=>(Number(a?.tokenBreakdown?.total)||0)>(Number(o?.tokenBreakdown?.total)||0)?a:o,null),r={...t,messageTotal:t.inputMessage+t.outputMessage,toolTotal:t.inputTool+t.outputTool},i=Math.max(Number(e.totalTokens)||0,r.total||0);if(i>r.total){let o=i-r.total;r.total=i,r.inputTotal+=o,r.inputMessage+=o,r.messageTotal+=o}return{...e,loops:s,tokenBreakdown:r,maxLoopTokenBreakdown:n?.tokenBreakdown||null,maxLoopTokenTotal:Number(n?.tokenBreakdown?.total)||0,maxLoopNumber:n?.loopNumber||null}},turnTotalTokens(e){return Math.max(Number(e?.totalTokens)||0,Number(e?.tokenBreakdown?.total)||0)},loopBreakdownMessageTokens(e){return(Number(e?.inputMessage)||0)+(Number(e?.outputMessage)||0)},loopBreakdownToolTokens(e){return(Number(e?.inputTool)||0)+(Number(e?.outputTool)||0)},loopMessageTokens(e){return this.loopBreakdownMessageTokens(e?.tokenBreakdown||{})},loopToolTokens(e){return this.loopBreakdownToolTokens(e?.tokenBreakdown||{})},tokenPct(e,t){let s=Number(e)||0,n=Number(t)||0;return n<=0||s<=0?"0%":`${Math.round(s/n*100)}%`},tokenBreakdownTitle(e){let t=e||{},s=(Number(t.inputMessage)||0)+(Number(t.outputMessage)||0),n=(Number(t.inputTool)||0)+(Number(t.outputTool)||0),r=Math.max(Number(t.total)||0,s+n);return`estimated token split: message ${s} (${this.tokenPct(s,r)}), tool ${n} (${this.tokenPct(n,r)}); input ${Number(t.inputTotal)||0}, output ${Number(t.outputTotal)||0}, total ${r}`},truncate(e,t){let s=String(e||"");return s.length<=t?s:s.slice(0,t)+"\u2026"},toolsForLoop(e,t){let s=typeof t=="object"?t:(e?.loops||[]).find(l=>l&&l.loopNumber===t)||{loopNumber:t},n=s?.loopNumber||0,r=(e&&e.tools||[]).filter(l=>l&&l.loopNumber===n),i=new Set,o=Array.isArray(s?.toolCalls)?s.toolCalls:[],a=[];for(let l=0;l<o.length;l++){let c=o[l]||{},d=c.id||c.callId||c.tool_call_id||null,u=d?r.findIndex((p,g)=>!i.has(g)&&p.callId===d):-1;u<0&&(u=r.findIndex((p,g)=>!i.has(g)&&!p.callId&&p.name===c.name));let f=u>=0?r[u]:null;u>=0&&i.add(u),a.push(this.normalizeToolDebugRow(n,c,f,l))}for(let l=0;l<r.length;l++)i.has(l)||a.push(this.normalizeToolDebugRow(n,null,r[l],a.length));return a},normalizeToolDebugRow(e,t,s,n){let r=!!s,i=t&&Object.prototype.hasOwnProperty.call(t,"input")?t.input:void 0,o=t&&(t.id||t.callId||t.tool_call_id)||s?.callId||null,a=t&&t.name||s?.name||"?";return{loopNumber:e,index:n,callId:o,name:a,input:i,rawCall:t||null,rawResult:s||null,hasResult:r,isRunning:!r,isError:!!s?.isError,durationMs:s?.durationMs||0,toolOutput:s?.toolOutput==null?null:String(s.toolOutput)}},toolDetailKey(e,t,s,n=0){return`${e}#${t}#${s?.callId||s?.name||"tool"}#${n}`},isToolDetailExpanded(e,t,s,n){return!!this.expandedToolDetails[this.toolDetailKey(e,t,s,n)]},toggleToolDetail(e,t,s,n){let r=this.toolDetailKey(e,t,s,n);this.expandedToolDetails={...this.expandedToolDetails,[r]:!this.expandedToolDetails[r]}},toolStatusClass(e){return e?.isRunning?"running":e?.isError?"err":"ok"},toolStatusLabel(e){return e?.isRunning?this.$t?this.$t("yeaft.debugToolRunning"):"running":e?.isError?"\u2717":"\u2713"},toolInputText(e){return e?e.input!==void 0?JSON.stringify(e.input??null,null,2):e.rawCall?JSON.stringify(e.rawCall,null,2):JSON.stringify(e.rawResult||e,null,2):""},toolOutputText(e){return e?e.isRunning?this.$t?this.$t("yeaft.debugToolRunningNoResult"):"Running; no result yet":e.toolOutput!=null?e.toolOutput:e.rawResult?JSON.stringify(e.rawResult,null,2):"":""},reflectionsForLoop(e,t){return(e&&e.reflections||[]).filter(n=>n&&(n.loopNumber===t||n.loopNumber==null&&t===e.loopCount))},loopMetaSummary(e){let t=(e.toolCalls||[]).length;return t>0?`tools\xD7${t}`:"end_turn"},assistantResponseForLoop(e){if(!e)return"";if(e.response)return typeof e.response=="string"?e.response:JSON.stringify(e.response,null,2);let t=Array.isArray(e.messages)?e.messages:[];for(let s=t.length-1;s>=0;s--){let n=t[s];if(!(!n||n.role!=="assistant")){if(typeof n.content=="string")return n.content;if(Array.isArray(n.content)){let r=n.content.map(i=>i?typeof i=="string"?i:typeof i.text=="string"?i.text:"":"").filter(Boolean);if(r.length>0)return r.join(`
7248
7309
  `)}if(n.content!=null)return JSON.stringify(n.content,null,2)}}return""},showAssistantResponse(e,t){let s=`${e}#${t}`,n=`${e}#asst-${t}`;this.expandedLoops={...this.expandedLoops,[s]:!0},this.expandedSections={...this.expandedSections,[n]:!0}},setActiveDreamItem(e){this.activeDreamItemKey=this.activeDreamItemKey===e?null:e||null},isDreamSegmentExpanded(e){return!!this.expandedDreamSegments[e?.id]},toggleDreamSegment(e){e?.id&&(this.expandedDreamSegments={...this.expandedDreamSegments,[e.id]:!this.expandedDreamSegments[e.id]})},dreamPreview(e,t=180){return _n(e,t)},formatDebugValue(e){return e==null?"":typeof e=="string"?e:JSON.stringify(e,null,2)},setActiveTab(e){this.activeTab=e==="toolStats"||e==="dream"?e:"requests",this.activeTab==="toolStats"&&!this.toolStats&&!this.toolStatsLoading&&this.refreshToolStats()},loadRequestHistory(){if(!this.store||typeof this.store.loadYeaftDebugHistory!="function")return;let e=String(this.searchQuery||"").trim();this.store.loadYeaftDebugHistory({limit:e?Tw:Fm,dreamLimit:5,indexOnly:!0,search:e})},refreshToolStats(){this.store&&typeof this.store.fetchYeaftToolStats=="function"&&this.store.fetchYeaftToolStats()},formatPct(e){return!Number.isFinite(e)||e===0?"0%":`${(e*100).toFixed(1)}%`},formatLastCalled(e){if(typeof e!="string"||!e)return"never";let t=Date.parse(e);if(Number.isNaN(t))return e;let s=Date.now()-t;return s<6e4?"just now":s<36e5?`${Math.floor(s/6e4)}m ago`:s<864e5?`${Math.floor(s/36e5)}h ago`:`${Math.floor(s/864e5)}d ago`},copyText(e,t){let s=e==null?"":typeof e=="string"?e:JSON.stringify(e,null,2);try{if(navigator&&navigator.clipboard&&navigator.clipboard.writeText)navigator.clipboard.writeText(s);else{let n=document.createElement("textarea");n.value=s,n.style.position="fixed",n.style.left="-9999px",document.body.appendChild(n),n.select();try{document.execCommand("copy")}catch{}document.body.removeChild(n)}this.copiedFlash=t||"copied",this.copiedFlashAt=Date.now(),setTimeout(()=>{Date.now()-this.copiedFlashAt>=1400&&(this.copiedFlash=null)},1500)}catch{}},copyToolInput(e,t){if(t&&(t.input!==void 0||t.rawCall||t.rawResult)){this.copyText(this.toolInputText(t),"tool input");return}for(let s of e.loops||[])for(let n of s.toolCalls||[])if(n&&n.id===t.callId){this.copyText(JSON.stringify(n.input??null,null,2),"tool input");return}this.copyText(JSON.stringify(t,null,2),"tool record")},copyRawRequest(e){this.copyText(this.rawRequestForLoop(e),"raw request")},rawRequestForLoop(e){return e?.rawRequest!=null?e.rawRequest:Qd(e?.rawRequestBase??e?.requestBase?.rawRequest??null,e?.requestDelta||null)},copyToolOutput(e,t){if(t&&(t.isRunning||t.rawResult||t.toolOutput!=null)){this.copyText(this.toolOutputText(t),"tool output");return}if(t&&t.toolOutput!=null){this.copyText(t.toolOutput,"tool output");return}for(let s of e.loops||[])for(let n of s.messages||[])if(n&&n.role==="tool"&&n.toolCallId===t.callId){this.copyText(typeof n.content=="string"?n.content:JSON.stringify(n.content,null,2),"tool output");return}this.copyText("(tool output not in snapshot)","tool output")},copyTurnAsMarkdown(e){let t=[];if(t.push(`# Turn ${e.turnId}`),t.push(""),t.push(`- VP: ${e.vpId||"-"}`),t.push(`- Session: ${this.debugSessionId(e)||"-"}`),t.push(`- Loops: ${e.loopCount||e.loops&&e.loops.length||0}`),t.push(`- Total: ${this.formatMs(e.totalMs)} / ${this.formatTokens(e.totalTokens)} tok`),t.push(""),t.push("## User prompt"),t.push(""),t.push("```"),t.push(e.userPrompt||""),t.push("```"),t.push(""),e.memoryLoaded&&e.memoryLoaded.length>0){t.push(`## Memory loaded (${e.memoryLoaded.length})`);for(let n of e.memoryLoaded)t.push(`- ${n.id||"?"} layer=${n.layer||"-"} score=${n.score==null?"-":n.score.toFixed(3)} kind=${n.kind||"-"} scope=${n.label||n.scope||"-"}`),n.body&&(t.push(""),t.push("```text"),t.push(n.body),t.push("```"));t.push("")}if(e.memoryAdjust){let n=e.memoryAdjust;t.push(`## Memory adjust (reason: ${n.reason||"-"})`),t.push(`- added: ${n.added||0}`),t.push(`- evicted: ${n.evicted||0}`),t.push(`- skipped: ${n.skipped||0}`),t.push("")}let s=e.loops||[];for(let n of s){t.push(`## Loop ${n.loopNumber} ${n.model}`);let r=n.usage||{};t.push(`- in/out/total: ${this.formatUsageBreakdown(r)}`),t.push(`- latency: ${this.formatMs(n.latencyMs)} ttfb: ${this.formatMs(n.ttfbMs)}`),t.push(`- stopReason: ${n.stopReason||"-"}`);let i=this.toolsForLoop(e,n.loopNumber);if(i.length>0){t.push(""),t.push(`### Tools (${i.length})`);for(let a of i){let l=a.isRunning?"running":a.isError?"ERROR":"ok";t.push(`- ${a.name} ${l} ${a.isRunning?"-":this.formatMs(a.durationMs)}`)}}let o=this.assistantResponseForLoop(n);o&&(t.push(""),t.push("### Assistant text"),t.push("```"),t.push(o),t.push("```")),t.push("")}this.copyText(t.join(`
7249
7310
  `),"turn markdown")}},template:`
7250
7311
  <div class="yeaft-debug-panel">
@@ -7988,7 +8049,7 @@ ${String(e||"").trim()}
7988
8049
  </svg>
7989
8050
  </button>
7990
8051
  </div>
7991
- `}});function Gm(e){let t=typeof e=="number"?e:Date.parse(e||"");return Number.isFinite(t)?t:null}function En(e){return e?.entryId||e?.messageId||null}function Ew(e){let t=Gm(e);return t===null?"":new Intl.DateTimeFormat(void 0,{dateStyle:"medium",timeStyle:"short"}).format(new Date(t))}function Dw(e){return(Array.isArray(e)?e:[]).map((t,s)=>({result:t,index:s,time:Gm(t?.timestamp),seq:Number.isFinite(t?.entryEndSeq)?t.entryEndSeq:Number.isFinite(t?.seq)?t.seq:null,messageId:String(t?.messageId||"")})).sort((t,s)=>t.seq===null&&s.seq!==null?-1:t.seq!==null&&s.seq===null?1:t.seq!==null&&t.seq!==s.seq?s.seq-t.seq:t.time!==null&&s.time===null?-1:t.time===null&&s.time!==null?1:t.time!==null&&t.time!==s.time?s.time-t.time:s.messageId.localeCompare(t.messageId)||t.index-s.index).map(({result:t})=>t)}var Qm,Zm=N(()=>{Hr();Qm={name:"YeaftConversationOutline",components:{ModernSelect:gs},props:{outlineState:{type:Object,required:!0},searchState:{type:Object,required:!0},senderOptions:{type:Array,default:()=>[]},activeMessageId:{type:String,default:null}},emits:["query","sender","sender-invalid","select","move","preview","load-older","load-more-search","close"],computed:{senderSelectOptions(){return[{value:"",label:this.$t("yeaft.outline.allSenders")},...this.senderOptions.map(e=>({value:e.key,label:e.label}))]}},template:`
8052
+ `}});function Gm(e){let t=typeof e=="number"?e:Date.parse(e||"");return Number.isFinite(t)?t:null}function En(e){return e?.entryId||e?.messageId||null}function Ew(e){let t=Gm(e);return t===null?"":new Intl.DateTimeFormat(void 0,{dateStyle:"medium",timeStyle:"short"}).format(new Date(t))}function Dw(e){return(Array.isArray(e)?e:[]).map((t,s)=>({result:t,index:s,time:Gm(t?.timestamp),seq:Number.isFinite(t?.entryEndSeq)?t.entryEndSeq:Number.isFinite(t?.seq)?t.seq:null,messageId:String(t?.messageId||"")})).sort((t,s)=>t.seq===null&&s.seq!==null?-1:t.seq!==null&&s.seq===null?1:t.seq!==null&&t.seq!==s.seq?s.seq-t.seq:t.time!==null&&s.time===null?-1:t.time===null&&s.time!==null?1:t.time!==null&&t.time!==s.time?s.time-t.time:s.messageId.localeCompare(t.messageId)||t.index-s.index).map(({result:t})=>t)}var Qm,Xm=N(()=>{Hr();Qm={name:"YeaftConversationOutline",components:{ModernSelect:gs},props:{outlineState:{type:Object,required:!0},searchState:{type:Object,required:!0},senderOptions:{type:Array,default:()=>[]},activeMessageId:{type:String,default:null}},emits:["query","sender","sender-invalid","select","move","preview","load-older","load-more-search","close"],computed:{senderSelectOptions(){return[{value:"",label:this.$t("yeaft.outline.allSenders")},...this.senderOptions.map(e=>({value:e.key,label:e.label}))]}},template:`
7992
8053
  <section id="yeaft-conversation-outline" class="yeaft-conversation-outline" :aria-label="$t('yeaft.outline.label')">
7993
8054
  <div class="yeaft-conversation-outline-header">
7994
8055
  <div>
@@ -8063,7 +8124,7 @@ ${String(e||"").trim()}
8063
8124
  >{{ $t('yeaft.outline.moreMatches') }}</button>
8064
8125
  </div>
8065
8126
  </section>
8066
- `,setup(e,{emit:t,expose:s}){let n=Vue.ref(null),r=Vue.ref(null),i=Vue.computed(()=>Array.from(String(e.searchState.query||"").trim()).length>0||!!e.searchState.senderKey);Vue.watch(()=>e.senderOptions.map(w=>w.key),w=>{let I=e.searchState.senderKey||"";I&&!w.includes(I)&&t("sender-invalid")},{flush:"sync"});let o=Vue.computed(()=>Dw(i.value?e.searchState.results:e.outlineState.results)),a=Vue.computed(()=>{let w=o.value.findIndex(I=>En(I)===e.activeMessageId);return w>=0?w:0}),l=Vue.computed(()=>i.value?e.searchState.loading:e.outlineState.loading),c=Vue.computed(()=>{if(i.value)return`${e.searchState.results.length}${e.searchState.hasMore?"+":""}`;let w=e.outlineState.totalCount;return Number.isFinite(w)?String(w):String(e.outlineState.results.length||"")}),d=Vue.computed(()=>{let w=i.value?e.searchState.error:e.outlineState.error;return w?w==="unsupported"?"yeaft.outline.unsupported":"yeaft.outline.error":""}),u=()=>Vue.nextTick(()=>{n.value?.focus?.(),r.value&&(r.value.scrollTop=0)}),f=()=>{let w=r.value;t("load-older",{scrollHeight:w?.scrollHeight||0,scrollTop:w?.scrollTop||0})},p=()=>{if(i.value||e.outlineState.loading||!e.outlineState.hasMore)return;let w=r.value;w&&w.scrollHeight-w.scrollTop-w.clientHeight<=40&&f()},g=w=>{t("move",En(w)),t("preview",w)},m=w=>{let I=Math.max(0,Math.min(o.value.length-1,w)),h=o.value[I];t("move",En(h)),h&&t("preview",h)},v=w=>{w.key==="Escape"?(w.preventDefault(),t("close")):w.key==="ArrowDown"&&o.value.length?(w.preventDefault(),m(a.value+1)):w.key==="ArrowUp"&&o.value.length?(w.preventDefault(),m(a.value-1)):w.key==="Enter"&&o.value.length&&(w.preventDefault(),t("select",o.value[a.value]||o.value[0]))};return Vue.watch([o,()=>e.activeMessageId],([w,I])=>{w.some(h=>En(h)===I)||t("move",En(w[0]))},{immediate:!0}),s({focus:u,restoreOlderScroll:({scrollTop:w=0}={})=>Vue.nextTick(()=>{r.value&&(r.value.scrollTop=w)})}),Vue.onMounted(u),{inputRef:n,listRef:r,isSearching:i,visibleResults:o,activeIndex:a,isLoading:l,countLabel:c,errorKey:d,focus:u,loadOlder:f,onScroll:p,onKeyDown:v,previewResult:g,formatOutlineTime:Ew,historyResultIdentity:En}}}});function Jm(e,t){if(!Array.isArray(e)||e.length===0)return[];let s=new Map;if(Array.isArray(t))for(let i of t)i&&i.vpId&&s.set(i.vpId,i);let n=new Set,r=[];for(let i of e)!i||n.has(i)||(n.add(i),r.push(s.get(i)||{vpId:i}));return r}function ac(e,t,s=null){return!t||!e?null:typeof e.sessionById=="function"?e.sessionById(t,s||null)||null:e.sessions?.[t]||null}function Lw(e,t){if(!t)return"idle";if(t.connectionState&&t.connectionState!=="connected")return"offline";let s=t.vpStatuses&&t.vpStatuses[e];return s&&s.state?s.state:"idle"}function eh(e){let{vpList:t,vpStatuses:s,stoppingVpTurnIds:n,connectionState:r,vpLabelOf:i,vpDescriptionOf:o}=e||{},a={vpStatuses:s||{},stoppingVpTurnIds:n||{},connectionState:r||null},l=(f,p)=>{if(typeof i=="function"){let g=i(f);if(g)return g}return p&&(p.displayName||p.displayNameZh)||f},c=(f,p)=>{if(typeof o=="function"){let g=o(f);if(g)return g}return p&&(p.description||p.role||p.descriptionZh||p.roleZh)||""},d=new Set,u=[];if(Array.isArray(t))for(let f of t)!f||!f.vpId||(d.add(f.vpId),u.push(Xm(f.vpId,l(f.vpId,f),c(f.vpId,f),a)));if(s)for(let f of Object.keys(s))!f||d.has(f)||(d.add(f),u.push(Xm(f,l(f,null),c(f,null),a)));return u}function Xm(e,t,s,n){let r=n&&n.vpStatuses&&n.vpStatuses[e];return{vpId:e,displayName:t||e,description:s||"",status:Lw(e,n),turnId:r?.turnId||null,isStopping:!!(r?.turnId&&n?.stoppingVpTurnIds?.[r.turnId]),runningThreadCount:r&&Number.isFinite(r.runningThreadCount)?r.runningThreadCount:0,threads:r&&Array.isArray(r.threads)?r.threads:[]}}var th=N(()=>{});function nh(e){return!e||typeof e!="object"?"":typeof e.ref=="string"&&e.ref?e.ref:typeof e.provider=="string"&&e.provider&&typeof e.id=="string"&&e.id?`${e.provider}/${e.id}`:typeof e.id=="string"?e.id:""}function lc(e,t){return!e||!t?!1:e.id===t||nh(e)===t}function rh(e,t=""){let s=e?.config?.model;return typeof s=="string"&&s.trim()?s.trim():typeof t=="string"&&t.trim()?t.trim():""}function ih(e){if(!Array.isArray(e))return[];let t=[];for(let s of e){if(typeof s!="string")continue;let n=s.trim();!n||t.includes(n)||t.push(n)}return t}function cc(e){return ih(e).filter(t=>(sh[t]??-1)>=sh.medium)}function dc(e){let t=ih(e);return t.length?t.length===1?t[0]:t[t.length-2]:""}function oh(e,t=""){let s=e?.config?.modelEffort;return typeof s=="string"&&s.trim()?s.trim():typeof t=="string"&&t.trim()?t.trim():""}function ah(e){let t=[];for(let s of Array.isArray(e)?e:[]){let n=nh(s);if(!n)continue;let r=s.label||s.id||n,i=cc(s?.effortOptions);t.push({model:s,modelRef:n,label:r,efforts:i,defaultEffort:dc(i)||null})}return t}var sh,lh=N(()=>{sh=Object.freeze({minimal:0,low:1,medium:2,high:3,xhigh:4,max:5})});function ch({agentInventoryReady:e=!1,hasYeaftAgent:t=!1,sessionsReady:s=!1,sessionsEmpty:n=!1}={}){return!e||s&&!n?!1:t?s?n:!1:!0}var dh=N(()=>{});function uh({activeSessionFilter:e=null,sessionsStore:t=null,topbarGroup:s=null}={}){return e||t?.activeSessionId||s?.id||null}function ph(e={}){return e.currentAgentInfo?.online?!0:Array.isArray(e.agents)&&e.agents.some(t=>t&&t.online)}var fh=N(()=>{});function gh(e={}){return!e?.warning}var mh=N(()=>{});function bh(e,t){return e&&t?`${e}:${t}`:""}function wh(e){if(e!==void 0)return e;try{return globalThis.localStorage}catch{return null}}function kh(e){try{let t=JSON.parse(e?.getItem(uc)||"{}");return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}catch{return{}}}function $w({agentId:e,sessionId:t,validKeys:s=[],storage:n}={}){let r=s.length===0||s.includes(Mo)?Mo:"",i=bh(e,t);if(!i)return r;let o=wh(n),a=kh(o);if(!Object.prototype.hasOwnProperty.call(a,i))return r;let l=typeof a[i]=="string"?a[i]:"";if(l===yh)return"";if(l&&s.includes(l))return l;delete a[i];try{o?.setItem(uc,JSON.stringify(a))}catch{}return r}function hh({agentId:e,sessionId:t,senderKey:s,storage:n}={}){let r=bh(e,t);if(!r)return!1;let i=wh(n);if(!i)return!1;let o=kh(i);o[r]=s||yh;try{return i.setItem(uc,JSON.stringify(o)),!0}catch{return!1}}function vh(e){let t=e?.updatedAt||e?.endedAt||e?.createdAt,s=t?Date.parse(t):NaN;return Number.isFinite(s)?s:0}function Vw(e){return Object.values(e||{}).filter(t=>t?.status==="running").sort((t,s)=>vh(s)-vh(t))}var uc,yh,Mo,Sh,Ih=N(()=>{ro();Pl();Bl();Mm();Rm();wo();Em();Fl();Nm();Km();Ym();Zm();nc();rc();Rl();th();lh();js();dh();fh();mh();Ml();uc="yeaft-history-sender-preferences",yh="__all__",Mo="user";Sh={name:"YeaftPage",components:{ChatInput:xn,MessageList:Zi,SettingsPanel:uo,YeaftSidebar:Tm,SessionInviteModal:Pm,SessionCreateModal:Rn,SessionSettingsModal:_m,WorkbenchPanel:co,WorkCenterPage:xo,YeaftDebugPanel:Bm,VpTimelinePane:Um,YeaftSessionActions:zm,YeaftConversationOutline:Qm,LlmTab:Co},template:`
8127
+ `,setup(e,{emit:t,expose:s}){let n=Vue.ref(null),r=Vue.ref(null),i=Vue.computed(()=>Array.from(String(e.searchState.query||"").trim()).length>0||!!e.searchState.senderKey);Vue.watch(()=>e.senderOptions.map(w=>w.key),w=>{let I=e.searchState.senderKey||"";I&&!w.includes(I)&&t("sender-invalid")},{flush:"sync"});let o=Vue.computed(()=>Dw(i.value?e.searchState.results:e.outlineState.results)),a=Vue.computed(()=>{let w=o.value.findIndex(I=>En(I)===e.activeMessageId);return w>=0?w:0}),l=Vue.computed(()=>i.value?e.searchState.loading:e.outlineState.loading),c=Vue.computed(()=>{if(i.value)return`${e.searchState.results.length}${e.searchState.hasMore?"+":""}`;let w=e.outlineState.totalCount;return Number.isFinite(w)?String(w):String(e.outlineState.results.length||"")}),d=Vue.computed(()=>{let w=i.value?e.searchState.error:e.outlineState.error;return w?w==="unsupported"?"yeaft.outline.unsupported":"yeaft.outline.error":""}),u=()=>Vue.nextTick(()=>{n.value?.focus?.(),r.value&&(r.value.scrollTop=0)}),f=()=>{let w=r.value;t("load-older",{scrollHeight:w?.scrollHeight||0,scrollTop:w?.scrollTop||0})},p=()=>{if(i.value||e.outlineState.loading||!e.outlineState.hasMore)return;let w=r.value;w&&w.scrollHeight-w.scrollTop-w.clientHeight<=40&&f()},g=w=>{t("move",En(w)),t("preview",w)},m=w=>{let I=Math.max(0,Math.min(o.value.length-1,w)),h=o.value[I];t("move",En(h)),h&&t("preview",h)},v=w=>{w.key==="Escape"?(w.preventDefault(),t("close")):w.key==="ArrowDown"&&o.value.length?(w.preventDefault(),m(a.value+1)):w.key==="ArrowUp"&&o.value.length?(w.preventDefault(),m(a.value-1)):w.key==="Enter"&&o.value.length&&(w.preventDefault(),t("select",o.value[a.value]||o.value[0]))};return Vue.watch([o,()=>e.activeMessageId],([w,I])=>{w.some(h=>En(h)===I)||t("move",En(w[0]))},{immediate:!0}),s({focus:u,restoreOlderScroll:({scrollTop:w=0}={})=>Vue.nextTick(()=>{r.value&&(r.value.scrollTop=w)})}),Vue.onMounted(u),{inputRef:n,listRef:r,isSearching:i,visibleResults:o,activeIndex:a,isLoading:l,countLabel:c,errorKey:d,focus:u,loadOlder:f,onScroll:p,onKeyDown:v,previewResult:g,formatOutlineTime:Ew,historyResultIdentity:En}}}});function Jm(e,t){if(!Array.isArray(e)||e.length===0)return[];let s=new Map;if(Array.isArray(t))for(let i of t)i&&i.vpId&&s.set(i.vpId,i);let n=new Set,r=[];for(let i of e)!i||n.has(i)||(n.add(i),r.push(s.get(i)||{vpId:i}));return r}function ac(e,t,s=null){return!t||!e?null:typeof e.sessionById=="function"?e.sessionById(t,s||null)||null:e.sessions?.[t]||null}function Lw(e,t){if(!t)return"idle";if(t.connectionState&&t.connectionState!=="connected")return"offline";let s=t.vpStatuses&&t.vpStatuses[e];return s&&s.state?s.state:"idle"}function eh(e){let{vpList:t,vpStatuses:s,stoppingVpTurnIds:n,connectionState:r,vpLabelOf:i,vpDescriptionOf:o}=e||{},a={vpStatuses:s||{},stoppingVpTurnIds:n||{},connectionState:r||null},l=(f,p)=>{if(typeof i=="function"){let g=i(f);if(g)return g}return p&&(p.displayName||p.displayNameZh)||f},c=(f,p)=>{if(typeof o=="function"){let g=o(f);if(g)return g}return p&&(p.description||p.role||p.descriptionZh||p.roleZh)||""},d=new Set,u=[];if(Array.isArray(t))for(let f of t)!f||!f.vpId||(d.add(f.vpId),u.push(Zm(f.vpId,l(f.vpId,f),c(f.vpId,f),a)));if(s)for(let f of Object.keys(s))!f||d.has(f)||(d.add(f),u.push(Zm(f,l(f,null),c(f,null),a)));return u}function Zm(e,t,s,n){let r=n&&n.vpStatuses&&n.vpStatuses[e];return{vpId:e,displayName:t||e,description:s||"",status:Lw(e,n),turnId:r?.turnId||null,isStopping:!!(r?.turnId&&n?.stoppingVpTurnIds?.[r.turnId]),runningThreadCount:r&&Number.isFinite(r.runningThreadCount)?r.runningThreadCount:0,threads:r&&Array.isArray(r.threads)?r.threads:[]}}var th=N(()=>{});function nh(e){return!e||typeof e!="object"?"":typeof e.ref=="string"&&e.ref?e.ref:typeof e.provider=="string"&&e.provider&&typeof e.id=="string"&&e.id?`${e.provider}/${e.id}`:typeof e.id=="string"?e.id:""}function lc(e,t){return!e||!t?!1:e.id===t||nh(e)===t}function rh(e,t=""){let s=e?.config?.model;return typeof s=="string"&&s.trim()?s.trim():typeof t=="string"&&t.trim()?t.trim():""}function ih(e){if(!Array.isArray(e))return[];let t=[];for(let s of e){if(typeof s!="string")continue;let n=s.trim();!n||t.includes(n)||t.push(n)}return t}function cc(e){return ih(e).filter(t=>(sh[t]??-1)>=sh.medium)}function dc(e){let t=ih(e);return t.length?t.length===1?t[0]:t[t.length-2]:""}function oh(e,t=""){let s=e?.config?.modelEffort;return typeof s=="string"&&s.trim()?s.trim():typeof t=="string"&&t.trim()?t.trim():""}function ah(e){let t=[];for(let s of Array.isArray(e)?e:[]){let n=nh(s);if(!n)continue;let r=s.label||s.id||n,i=cc(s?.effortOptions);t.push({model:s,modelRef:n,label:r,efforts:i,defaultEffort:dc(i)||null})}return t}var sh,lh=N(()=>{sh=Object.freeze({minimal:0,low:1,medium:2,high:3,xhigh:4,max:5})});function ch({agentInventoryReady:e=!1,hasYeaftAgent:t=!1,sessionsReady:s=!1,sessionsEmpty:n=!1}={}){return!e||s&&!n?!1:t?s?n:!1:!0}var dh=N(()=>{});function uh({activeSessionFilter:e=null,sessionsStore:t=null,topbarGroup:s=null}={}){return e||t?.activeSessionId||s?.id||null}function ph(e={}){return e.currentAgentInfo?.online?!0:Array.isArray(e.agents)&&e.agents.some(t=>t&&t.online)}var fh=N(()=>{});function gh(e={}){return!e?.warning}var mh=N(()=>{});function bh(e,t){return e&&t?`${e}:${t}`:""}function wh(e){if(e!==void 0)return e;try{return globalThis.localStorage}catch{return null}}function kh(e){try{let t=JSON.parse(e?.getItem(uc)||"{}");return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}catch{return{}}}function $w({agentId:e,sessionId:t,validKeys:s=[],storage:n}={}){let r=s.length===0||s.includes(Mo)?Mo:"",i=bh(e,t);if(!i)return r;let o=wh(n),a=kh(o);if(!Object.prototype.hasOwnProperty.call(a,i))return r;let l=typeof a[i]=="string"?a[i]:"";if(l===yh)return"";if(l&&s.includes(l))return l;delete a[i];try{o?.setItem(uc,JSON.stringify(a))}catch{}return r}function hh({agentId:e,sessionId:t,senderKey:s,storage:n}={}){let r=bh(e,t);if(!r)return!1;let i=wh(n);if(!i)return!1;let o=kh(i);o[r]=s||yh;try{return i.setItem(uc,JSON.stringify(o)),!0}catch{return!1}}function vh(e){let t=e?.updatedAt||e?.endedAt||e?.createdAt,s=t?Date.parse(t):NaN;return Number.isFinite(s)?s:0}function Vw(e){return Object.values(e||{}).filter(t=>t?.status==="running").sort((t,s)=>vh(s)-vh(t))}var uc,yh,Mo,Sh,Ih=N(()=>{ro();Pl();Bl();Mm();Rm();wo();Em();Fl();Nm();Km();Ym();Xm();nc();rc();Rl();th();lh();js();dh();fh();mh();Ml();uc="yeaft-history-sender-preferences",yh="__all__",Mo="user";Sh={name:"YeaftPage",components:{ChatInput:xn,MessageList:Xi,SettingsPanel:uo,YeaftSidebar:Tm,SessionInviteModal:Pm,SessionCreateModal:Rn,SessionSettingsModal:_m,WorkbenchPanel:co,WorkCenterPage:xo,YeaftDebugPanel:Bm,VpTimelinePane:Um,YeaftSessionActions:zm,YeaftConversationOutline:Qm,LlmTab:Co},template:`
8067
8128
  <div class="yeaft-page" ref="pageRef">
8068
8129
  <!-- Mobile sidebar overlay -->
8069
8130
  <div class="yeaft-sidebar-overlay" v-if="store.sessionSidebarOpen && isMobile" @click="store.closeSessionSidebar()"></div>
@@ -8481,7 +8542,7 @@ ${String(e||"").trim()}
8481
8542
  @open-vp-library="openVpLibraryFromGroupSettings"
8482
8543
  />
8483
8544
  </div>
8484
- `,setup(){let e=Pinia.useChatStore(),t=Pinia.useAuthStore(),s=Pinia.useVpStore(),n=Vue.getCurrentInstance(),r=n&&n.appContext.config.globalProperties.$t||(C=>C),i=Vue.computed(()=>!!(e.yeaftDebugPanel&&e.yeaftDebugPanel.open)),o=Vue.ref(null),a=Vue.ref(!1),l=Vue.ref(!1),c=Vue.ref(!1),d=Vue.ref(""),u=Vue.ref(""),f=Vue.ref(!1),p=Vue.ref(""),g=null,m=Vue.ref("vp"),v=Vue.ref(null),k=Vue.ref(null),w=Vue.ref(null),I=Vue.ref(null),h=Vue.ref(null),y=Vue.ref(null),b=Vue.ref(!1),M=Vue.ref(null),x=Vue.computed(()=>e.getYeaftHistoryOutlineState()),D=Vue.computed(()=>{let C=_(),G=e.yeaftActiveSessionFilter||C?.activeSessionId||null,ie=G?ac(C,G,e.currentAgent||null):null,Re=Array.isArray(ie?.roster)?ie.roster:[];return[{key:"user",label:r("yeaft.outline.you")},...Re.map(_e=>({key:`vp:${_e}`,label:s.vpLabel(_e)}))]}),V=Vue.ref(e.yeaftHistorySearchState?.query||""),E=null,_=()=>{try{return window.Pinia?.useSessionsStore?.()||null}catch{return null}},T=()=>{let C=_();return{agentId:e.currentAgent||null,sessionId:e.yeaftActiveSessionFilter||C?.activeSessionId||null}},A=()=>$w({...T(),validKeys:D.value.map(C=>C.key)}),R=(C="")=>{let{agentId:G,sessionId:ie}=T();e.yeaftHistorySearchState={requestId:null,agentId:G,sessionId:ie,query:"",senderKey:C,loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,error:null}},j=Vue.computed(()=>{let C=e.currentAgent||"agent",G=_(),ie=e.yeaftActiveSessionFilter||G?.activeSessionId||"session";return`yeaft:${C}:${ie}`});Vue.watch(j,()=>{w.value=null});let F=null,z=null,ee=C=>{if(!C)return!1;let G=String(C.tagName||"").toLowerCase();return G==="textarea"||G==="input"||C.isContentEditable===!0},fe=({recoverScroll:C=!1}={})=>{let G=I.value;if(!G)return;if(!it.value){G.style.removeProperty("--yeaft-visual-viewport-height");return}let ie=window.visualViewport,Re=Math.max(1,Math.round(ie?.height||window.innerHeight||1));G.style.setProperty("--yeaft-visual-viewport-height",`${Re}px`),!(!C||ie&&window.innerHeight&&ie.height<window.innerHeight*.85||ee(document.activeElement))&&window.scrollTo(0,0)},ce=(C={})=>{F!=null&&cancelAnimationFrame(F),F=requestAnimationFrame(()=>{F=null,fe(C)})},ve=()=>{ce({recoverScroll:!0}),z&&clearTimeout(z),z=setTimeout(()=>{z=null,ce({recoverScroll:!0})},260)},ge=Vue.computed(()=>e.hasCapability("terminal")||e.hasCapability("file_editor")),pe=Vue.computed(()=>!0),P=C=>{let G=C&&C.id?C.id:null;G&&(e.setActiveSessionFilter(G,{agentId:C.agentId||null}),it.value&&e.closeSessionSidebar())},U=C=>{},re=Vue.ref(null),me=Vue.ref(!1),Me=320,K=Math.max(Me,Math.round(window.innerWidth*.25)),q=localStorage.getItem("yeaft-debug-width"),B=Vue.ref(q?parseInt(q,10):K),O=Vue.computed(()=>({"--yeaft-detail-width":B.value+"px"})),L=C=>{me.value=!0;let G=C.clientX,ie=B.value,Re=window.innerWidth*.6,_e=ts=>{let ss=G-ts.clientX,tn=Math.min(Re,Math.max(Me,ie+ss));B.value=tn},Ye=()=>{me.value=!1,document.removeEventListener("mousemove",_e),document.removeEventListener("mouseup",Ye),localStorage.setItem("yeaft-debug-width",String(B.value))};document.addEventListener("mousemove",_e),document.addEventListener("mouseup",Ye)},Z="yeaft-session-status-visible",ne=()=>{try{let C=localStorage.getItem(Z);return!(C==="0"||C==="false")}catch{return!0}},ke=Vue.ref(ne()),Y=C=>{ke.value=!!C;try{localStorage.setItem(Z,ke.value?"1":"0")}catch{}},te=()=>Y(!ke.value),ye=()=>Y(!1),ae=220,$e=280,Ae=(()=>{try{return localStorage.getItem("yeaft-vp-timeline-width")}catch{return null}})(),xe=Ae?parseInt(Ae,10):NaN,qe=Vue.ref(Number.isFinite(xe)&&xe>=ae?xe:$e),Ze=Vue.computed(()=>({"--yeaft-vp-timeline-width":qe.value+"px"})),ht=C=>{let G=C.clientX,ie=qe.value,Re=Math.max(ae,Math.floor(window.innerWidth*.4)),_e=ts=>{let ss=G-ts.clientX,tn=Math.min(Re,Math.max(ae,ie+ss));qe.value=tn},Ye=()=>{document.removeEventListener("mousemove",_e),document.removeEventListener("mouseup",Ye);try{localStorage.setItem("yeaft-vp-timeline-width",String(qe.value))}catch{}};document.addEventListener("mousemove",_e),document.addEventListener("mouseup",Ye)},Gt="(max-width: 768px)",Ks="(max-width: 1024px)",Qt=typeof window.matchMedia=="function"?window.matchMedia(Gt):null,Lt=typeof window.matchMedia=="function"?window.matchMedia(Ks):null,Zt=(C,G)=>C?C.matches:window.innerWidth<=G,it=Vue.ref(Zt(Qt,768)),Xt=Vue.ref(Zt(Lt,1024)),$t=Vue.computed(()=>it.value?!e.sessionSidebarOpen:e.sidebarCollapsed),H=()=>{it.value=Zt(Qt,768),Xt.value=Zt(Lt,1024)},X=()=>{H(),ve()},le=C=>{C&&(typeof C.addEventListener=="function"?C.addEventListener("change",X):typeof C.addListener=="function"&&C.addListener(X))},de=C=>{C&&(typeof C.removeEventListener=="function"?C.removeEventListener("change",X):typeof C.removeListener=="function"&&C.removeListener(X))},Ie=()=>{E&&(clearTimeout(E),E=null),V.value="",R(A()),b.value=!1,M.value=null},Te=()=>{let C=A();V.value="",R(C),b.value=!0,e.loadYeaftHistoryOutline(),C&&e.searchYeaftHistory("",{senderKey:C}),Vue.nextTick(()=>y.value?.focus?.())},We=()=>{b.value?Ie():Te()},Xe=C=>{b.value&&Nf(C.target)&&Ie()},Je=C=>{V.value=C,E&&clearTimeout(E),M.value=null,E=setTimeout(()=>{E=null,e.searchYeaftHistory(V.value,{senderKey:e.yeaftHistorySearchState.senderKey})},220)},ot=C=>{E&&clearTimeout(E),E=null,M.value=null,hh({...T(),senderKey:C}),e.searchYeaftHistory(V.value,{senderKey:C})},Be=()=>{hh({...T(),senderKey:Mo}),M.value=null,e.searchYeaftHistory(V.value,{senderKey:Mo})},je=C=>{if(!e.loadYeaftHistoryOutline({append:!0}))return;let G=Vue.watch(()=>x.value.loading,ie=>{ie||(G(),y.value?.restoreOlderScroll?.(C))})},Ne=()=>e.searchYeaftHistory(e.yeaftHistorySearchState.query,{append:!0,senderKey:e.yeaftHistorySearchState.senderKey}),Ke=C=>{e.hasCapability("session_history_window_prefetch")&&e.loadYeaftHistoryWindow(C)},ze=C=>{let G=e.beginYeaftHistoryReveal?.(C)||null;return qf({result:C,revealWindow:ie=>e.revealYeaftHistoryResult(ie,G),nextTick:()=>Vue.nextTick(),revealMessage:ie=>h.value?.revealMessage?.(ie),isMobile:it.value,closeOutline:Ie}).finally(()=>e.finishYeaftHistoryReveal?.(G))},at=C=>{if((C.metaKey||C.ctrlKey)&&String(C.key).toLowerCase()==="f"){C.preventDefault(),Te();return}if(C.key==="Escape"){if(b.value){Ie();return}if(o.value){lt();return}}};Vue.onMounted(()=>{H(),window.addEventListener("resize",X),le(Qt),le(Lt),window.visualViewport?.addEventListener("resize",ve),window.visualViewport?.addEventListener("scroll",ve),document.addEventListener("click",Hn),document.addEventListener("click",Xe),document.addEventListener("keydown",at),ce()}),Vue.onUnmounted(()=>{window.removeEventListener("resize",X),de(Qt),de(Lt),window.visualViewport?.removeEventListener("resize",ve),window.visualViewport?.removeEventListener("scroll",ve),document.removeEventListener("click",Hn),document.removeEventListener("click",Xe),document.removeEventListener("keydown",at),F!=null&&cancelAnimationFrame(F),z&&clearTimeout(z),E&&clearTimeout(E)}),Vue.watch(()=>e.yeaftConversationId,C=>{C&&e.activeConversations[0]!==C&&(e.activeConversations=[C])}),Vue.watch(()=>[e.currentAgent,e.yeaftActiveSessionFilter],()=>{Ie(),R(A())});let Dn=()=>{e.leaveYeaft()},Ln=(C,G,ie)=>{let Re=_();if(Re&&Re.activeNeedsInvite){let ss=Re.activeSession;ss&&Jt.delete(ss.id);return}let _e=e.yeaftActiveSessionFilter||Re&&Re.activeSessionId||"grp_default",Ye=to(C).mentions,ts=Array.isArray(G)?G:void 0;e.sendYeaftSessionMessage({groupId:_e,text:C,mentions:Ye,attachments:ts,quote:ie})},Ro=C=>{C&&(w.value=C,k.value?.focusInput?.())},_o=C=>{w.value=null,k.value?.replaceDraft?.(C||"")},Fr=()=>{let C=_(),G=e.yeaftActiveSessionFilter||C?.activeSessionId||null;G&&e.cancelYeaftSession(G)},Eo=(C="")=>{let G=Ue.value;G&&e.enterWorkCenterFromSession(G,C)},Do=()=>{if(it.value){e.toggleSessionSidebar();return}e.toggleSidebar()},Lo=()=>{i.value?e.closeYeaftDebugPanel():typeof e.openYeaftTurnDebug=="function"&&e.openYeaftTurnDebug({})},$o=()=>{e.closeYeaftDebugPanel()},Vo=()=>{e.reloadYeaftMessages()},Ho=()=>{if(typeof e.requestYeaftSessionInventory=="function"){e.requestYeaftSessionInventory();return}e._hasHandledAgentList=!1,e._hasHandledYeaftSessionHydrate=!1,e.yeaftSessionHydrateError=null,e.sendWsMessage({type:"get_agents"})},$n=()=>{window.location.reload()},Br=Vue.computed(()=>{let C=_(),G=e.yeaftActiveSessionFilter||C?.activeSessionId||null;return G?e.isYeaftSessionProcessing(G,e.currentAgent||null):!1}),Ue=Vue.computed(()=>{let C=_();if(!C||!C.sessions)return null;let G=e.yeaftActiveSessionFilter||null;if(G&&typeof C.sessionById=="function"){let ie=C.sessionById(G,e.currentAgent||null);if(ie)return ie}if(C.activeSessionId&&typeof C.sessionById=="function"){let ie=C.sessionById(C.activeSessionId,e.currentAgent||null);if(ie)return ie}return typeof C.sessionById=="function"?C.sessionById("grp_default",e.currentAgent||null):null}),et=()=>uh({activeSessionFilter:e.yeaftActiveSessionFilter,sessionsStore:_(),topbarGroup:Ue.value}),Nr=Vue.computed(()=>{let C=Ue.value||{},G=typeof C.id=="string"?C.id.trim():"",ie=[C.title,C.name,C.config?.title,C.config?.name];for(let Re of ie){let _e=typeof Re=="string"?Re.trim():"";if(_e&&!(G&&_e===G)&&!/^(sessions?|groups?)\//i.test(_e)&&!/^session_[A-Za-z0-9_-]+$/.test(_e)&&!(C.workDir&&_e===C.workDir))return _e}return""}),Oo=Vue.computed(()=>{let C=Ue.value?.workDir;return typeof C=="string"?C.trim():""}),Fo=Vue.computed(()=>Ue.value&&typeof Ue.value.announcement=="string"?Ue.value.announcement:""),hs=Vue.computed(()=>rh(Ue.value,e.yeaftModel||"")),vs=Vue.computed(()=>{let C=hs.value;return C&&e.yeaftAvailableModels.find(G=>lc(G,C))||null}),Bo=Vue.computed(()=>vs.value?.label||vs.value?.id||hs.value),zs=C=>cc(C?.effortOptions),qr=Vue.computed(()=>oh(Ue.value,e.yeaftModelEffort||"")),Wr=Vue.computed(()=>{let C=Array.isArray(vs.value?.effortOptions)?vs.value.effortOptions.filter(Boolean):[];return C.length?C.includes(qr.value)?qr.value:dc(C):null}),jr=Vue.computed(()=>ah(e.yeaftAvailableModels)),Ys=Vue.computed(()=>zs(vs.value)),pc=C=>{C==="model"&&!jr.value.length||C==="effort"&&!Ys.value.length||(o.value=o.value===C?null:C)},lt=(C=null)=>{(!C||o.value===C)&&(o.value=null)},Gs=(C,G)=>{let ie=C.currentTarget;if(C.relatedTarget){ie?.contains(C.relatedTarget)||lt(G);return}setTimeout(()=>{ie?.contains(document.activeElement)||lt(G)},0)},No=(C,G=null)=>{if(!C)return;let ie=Ue.value?.id||null;e.switchYeaftModel(C,ie,G),lt()},qo=C=>{if(!Ys.value.includes(C)||!hs.value)return;let G=Ue.value?.id||null;e.switchYeaftModel(hs.value,G,C),lt()},Vn=C=>!C||!Number.isFinite(C)||C<=0?"":C>=1e6?`${Math.round(C/1e5)/10}m`:C>=1e3?`${Math.round(C/1e3)}k`:String(C),Ur=C=>{let G=Vn(C?.contextWindow),ie=Vn(C?.maxOutput);return G&&ie?`${G} \xB7 ${ie} out`:G},Hn=C=>{if(!o.value)return;C.target.closest(".yeaft-composer-choice")||lt()},Vt=()=>{a.value||(m.value="vp",v.value=null),a.value=!a.value},Qs=({initialTab:C="vp",editVpId:G=null}={})=>{m.value=["vp","search","mcp"].includes(C)?C:"vp",v.value=m.value==="vp"&&G||null,a.value=!0},vt=()=>{lt(),l.value=!0},ys=C=>{rt(C)&&(l.value=!1)},Wo=async()=>{if(!(u.value||f.value)){f.value=!0,p.value="";try{let C={"Content-Type":"application/json"};t.token&&(C.Authorization=`Bearer ${t.token}`);let G=await fetch("/api/user/agent-secret",{headers:C});if(!G.ok){let _e=r("yeaft.onboarding.secretError");try{let Ye=await G.json();Ye?.error&&(_e=Ye.error)}catch{}throw new Error(_e)}let ie=await G.json(),Re=ie?.agentSecret||ie?.agent_secret||"";if(u.value=String(Re||"").trim(),!u.value)throw new Error(r("yeaft.onboarding.secretError"))}catch(C){p.value=C?.message||r("yeaft.onboarding.secretError")}finally{f.value=!1}}},Kr=()=>{c.value=!0},Zs=C=>{c.value=!1},Xs=async(C,G)=>{if(G&&!(typeof navigator>"u"||!navigator.clipboard?.writeText))try{let ie=typeof G=="string"?G:G?.value||"";if(!ie)return;await navigator.clipboard.writeText(ie),d.value=C||"",g&&clearTimeout(g),g=setTimeout(()=>{d.value="",g=null},1800)}catch{}},zr=(C,G)=>{},Js=(C={})=>{gh(C)&&(l.value=!1)},Jt=Vue.reactive(new Set),es=Vue.computed(()=>{let C=_();return C?C.activeSession:null}),en=C=>{if(!C)return"";if(C.id==="grp_default"&&(C.name==="Default"||!C.name))try{let G=typeof window<"u"?window.i18n:null;if(G&&G.global&&typeof G.global.t=="function")return G.global.t("yeaft.session.defaultName")}catch{}return C.name||C.id||""},jo=Vue.computed(()=>en(es.value)),Yr=Vue.computed(()=>{let C=_();if(!C||!C.activeNeedsInvite)return!1;let G=C.activeSession;return G?!Jt.has(G.id):!1}),Gr=Vue.computed(()=>{let C=_();return!!(C&&C.activeNeedsInvite)}),Uo=Vue.computed(()=>{let C=_();return e._hasHandledAgentList===!0&&e._hasHandledYeaftSessionHydrate===!0&&!!(C&&C.hasLoadedSnapshot)}),bs=Vue.computed(()=>{let C=_();return ch({agentInventoryReady:e._hasHandledAgentList===!0,hasYeaftAgent:ph(e),sessionsReady:e._hasHandledYeaftSessionHydrate===!0&&!!(C&&C.hasLoadedSnapshot),sessionsEmpty:!!(C&&C.isEmpty)})});Vue.watch(bs,C=>{C&&Wo()},{immediate:!0});let Qr="npm install -g @yeaft/webchat-agent",fc=Vue.computed(()=>{let G=(typeof window<"u"&&window.location?.origin?window.location.origin:"http://localhost:3456").replace(/^http:/,"ws:").replace(/^https:/,"wss:"),ie=u.value||r("yeaft.onboarding.secretPending");return`yeaft-agent install --server ${G} --name yeaft-agent --secret ${ie}`}),S="gh auth login && yeaft-agent llm use github-copilot --model gpt-5.5",$=()=>{let C=es.value;C&&Jt.add(C.id),gc(C?C.id:null)},W=()=>{let C=es.value;C&&Jt.add(C.id)},oe=Vue.ref(!1),we=Vue.ref(null),ue=Vue.ref(null),Oe=Vue.ref("session"),Se=Vue.ref(""),se=(C={})=>{let G=C&&(C.sessionId||C.groupId)||null,ie=C&&C.editVpId||"",Re=ie?"members":C&&C.section||"session";G&&(we.value=G,ue.value=C&&C.agentId||null,Oe.value=Re,Se.value=ie,oe.value=!0)},yt=()=>{let C=et();C&&se({sessionId:C,section:"session"})},Zr=()=>{oe.value=!1,we.value=null,ue.value=null,Se.value=""},On=()=>{Zr(),Qs({initialTab:"vp"})},gc=C=>{C&&se({sessionId:C,section:"members"})};Vue.watch(()=>{let C=es.value;return C?C.id+":"+(Array.isArray(C.roster)?C.roster.length:0)+":"+(C.defaultVpId||""):""},(C,G)=>{let ie=es.value;ie&&C!==G&&Array.isArray(ie.roster)&&ie.roster.length>0&&Jt.delete(ie.id)}),typeof Vue.onBeforeUnmount=="function"&&Vue.onBeforeUnmount(()=>{g&&clearTimeout(g),g=null});let Ch=()=>{a.value=!1},Ah=Vue.computed(()=>!a.value&&!bs.value&&ke.value),xh=Vue.computed(()=>{let C=_(),G=e.yeaftActiveSessionFilter||C?.activeSessionId||null;if(!G)return[];let Re=(typeof C?.sessionById=="function"?C.sessionById(G,e.currentAgent||null):null)?.agentId||e.currentAgent||null,_e=Re?`${Re}${G}`:G,Ye=e.yeaftActiveTasksBySession?.[_e]||{};return Vw(Ye)}),Th=Vue.computed(()=>{if(!e.yeaftConversationId)return[];let G=_(),ie=e.yeaftActiveSessionFilter||G?.activeSessionId||null;if(!ie)return[];let Re=ac(G,ie,e.currentAgent||null),_e=Re&&Array.isArray(Re.roster)?Re.roster:[];if(_e.length===0)return[];let Ye=new Set(_e),ts=Jm(_e,s.vpList||[]),ss=e.vpStatuses||{},tn={},Xr=e.currentAgent||null;for(let Fe of Object.values(ss)){if(!Fe||!Fe.vpId)continue;let Jr=Fe.sessionId??Fe.groupId;Jr&&Jr!==ie||Xr&&Fe.agentId&&Fe.agentId!==Xr||Ye.has(Fe.vpId)&&(tn[Fe.vpId]=Fe)}let mc={};for(let Fe of Object.values(e.activeVpTurns||{}))!Fe?.turnId||!Fe?.sessionId||Fe.sessionId!==ie||Xr&&Fe.agentId&&Fe.agentId!==Xr||Object.entries(e.stoppingVpTurnIds||{}).some(([Jr])=>e.activeVpTurns?.[Jr]===Fe)&&(mc[Fe.turnId]=!0);return eh({vpList:ts,vpStatuses:tn,stoppingVpTurnIds:mc,connectionState:e.connectionState,vpLabelOf:Fe=>s.vpLabel(Fe),vpDescriptionOf:Fe=>s.vpDescription(Fe)})});return{store:e,pageRef:I,effectiveSidebarCollapsed:$t,debugMode:i,composerMenuOpen:o,topbarGroup:Ue,topbarSessionTitle:Nr,topbarFolderPath:Oo,topbarModel:hs,topbarModelLabel:Bo,topbarEffort:Wr,topbarModelRows:jr,topbarEffortOptions:Ys,selectableEffortsForModel:zs,modelOptionMatchesRef:lc,showSettings:a,showLlmConfig:l,sessionCreateOpen:c,settingsInitialTab:m,settingsInitialEditVpId:v,chatInputRef:k,messageQuote:w,messageListRef:h,historySearchRef:y,historySearchOpen:b,historySearchActiveMessageId:M,historyOutlineState:x,historySenderOptions:D,toggleHistorySearch:We,closeHistorySearch:Ie,onHistorySearchQuery:Je,onHistorySenderChange:ot,onHistorySenderInvalid:Be,loadOlderHistoryOutline:je,loadMoreHistorySearchResults:Ne,previewHistorySearchResult:Ke,selectHistorySearchResult:ze,yeaftInputDraftKey:j,openSettings:Qs,isMobile:it,isNarrowDetail:Xt,detailPanel:re,isResizingDetail:me,detailWidthStyle:O,startDetailResize:L,isProcessing:Br,goBack:Dn,sendMessage:Ln,setMessageQuote:Ro,editMessageAsNew:_o,cancelYeaft:Fr,openWorkItemDraft:Eo,toggleSidebar:Do,toggleDebug:Lo,closeDebug:$o,reloadMessages:Vo,retryConversationInventory:Ho,reloadPage:$n,toggleComposerMenu:pc,closeComposerMenu:lt,onComposerMenuFocusout:Gs,selectModel:No,selectEffort:qo,openLlmConfig:vt,trackOverlayPointerDown:ft,trackOverlayPointerUp:gt,clearOverlayPointerGesture:mt,closeLlmConfigFromOverlay:ys,openSessionCreate:Kr,onSessionCreated:Zs,copyOnboardingCommand:Xs,copiedOnboardingCommand:d,onLlmConfigMessage:zr,onLlmConfigSaved:Js,formatTokens:Vn,formatModelCtx:Ur,toggleSettings:Vt,onSettingsSaved:Ch,sidebarV2Enabled:pe,onSelectGroupV2:P,onSelectChat:U,canUseWorkbench:ge,shouldShowInviteModal:Yr,inviteGroupName:jo,onInviteOpenLibrary:$,onInviteDismiss:W,isActiveGroupEmpty:Gr,conversationInventoryReady:Uo,showOnboardingGuide:bs,installAgentCommand:Qr,connectAgentCommand:fc,copilotCommand:S,agentSecret:u,agentSecretLoading:f,agentSecretError:p,groupSettingsOpen:oe,groupSettingsId:we,groupSettingsAgentId:ue,groupSettingsSection:Oe,groupSettingsEditVpId:Se,openSessionSettings:se,openAnnouncementSettings:yt,closeGroupSettings:Zr,openVpLibraryFromGroupSettings:On,openMemberEditor:gc,showVpTimeline:Ah,vpTimelineRows:Th,sessionStatusTasksForActiveSession:xh,sessionStatusAnnouncementText:Fo,sessionStatusVisible:ke,toggleSessionStatus:te,closeSessionStatus:ye,timelineWidthStyle:Ze,startTimelineResize:ht,onEditVpFromTimeline:C=>{if(!C)return;let G=et();G&&se({sessionId:G,section:"members",editVpId:C})},onMentionVpFromTimeline:C=>{if(!C)return;let G=k.value;G&&typeof G.appendMention=="function"&&G.appendMention(C)},onCancelVpFromTimeline:C=>{if(!C)return;let G=_(),ie=e.yeaftActiveSessionFilter||G?.activeSessionId||null;ie&&typeof e.cancelVpTurnForSession=="function"&&e.cancelVpTurnForSession(C,ie)},onCancelTaskFromTimeline:C=>!C?.id||!C.sessionId||typeof e.cancelYeaftTask!="function"?!1:e.cancelYeaftTask({agentId:C.agentId,sessionId:C.sessionId,taskId:C.id})}}}});var Fw=Mh(()=>{Pi();St();vn();$p();Nt();Bp();qp();jp();Kp();Cm();Ih();Wl();Il();window.Pinia={...Pinia,useChatStore:null,useAuthStore:null};var Hw={components:{LoginPage:Up,ChatPage:Im,YeaftPage:Sh},template:`
8545
+ `,setup(){let e=Pinia.useChatStore(),t=Pinia.useAuthStore(),s=Pinia.useVpStore(),n=Vue.getCurrentInstance(),r=n&&n.appContext.config.globalProperties.$t||(C=>C),i=Vue.computed(()=>!!(e.yeaftDebugPanel&&e.yeaftDebugPanel.open)),o=Vue.ref(null),a=Vue.ref(!1),l=Vue.ref(!1),c=Vue.ref(!1),d=Vue.ref(""),u=Vue.ref(""),f=Vue.ref(!1),p=Vue.ref(""),g=null,m=Vue.ref("vp"),v=Vue.ref(null),k=Vue.ref(null),w=Vue.ref(null),I=Vue.ref(null),h=Vue.ref(null),y=Vue.ref(null),b=Vue.ref(!1),M=Vue.ref(null),x=Vue.computed(()=>e.getYeaftHistoryOutlineState()),D=Vue.computed(()=>{let C=_(),G=e.yeaftActiveSessionFilter||C?.activeSessionId||null,ie=G?ac(C,G,e.currentAgent||null):null,Re=Array.isArray(ie?.roster)?ie.roster:[];return[{key:"user",label:r("yeaft.outline.you")},...Re.map(_e=>({key:`vp:${_e}`,label:s.vpLabel(_e)}))]}),V=Vue.ref(e.yeaftHistorySearchState?.query||""),E=null,_=()=>{try{return window.Pinia?.useSessionsStore?.()||null}catch{return null}},T=()=>{let C=_();return{agentId:e.currentAgent||null,sessionId:e.yeaftActiveSessionFilter||C?.activeSessionId||null}},A=()=>$w({...T(),validKeys:D.value.map(C=>C.key)}),R=(C="")=>{let{agentId:G,sessionId:ie}=T();e.yeaftHistorySearchState={requestId:null,agentId:G,sessionId:ie,query:"",senderKey:C,loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,error:null}},j=Vue.computed(()=>{let C=e.currentAgent||"agent",G=_(),ie=e.yeaftActiveSessionFilter||G?.activeSessionId||"session";return`yeaft:${C}:${ie}`});Vue.watch(j,()=>{w.value=null});let F=null,z=null,ee=C=>{if(!C)return!1;let G=String(C.tagName||"").toLowerCase();return G==="textarea"||G==="input"||C.isContentEditable===!0},fe=({recoverScroll:C=!1}={})=>{let G=I.value;if(!G)return;if(!it.value){G.style.removeProperty("--yeaft-visual-viewport-height");return}let ie=window.visualViewport,Re=Math.max(1,Math.round(ie?.height||window.innerHeight||1));G.style.setProperty("--yeaft-visual-viewport-height",`${Re}px`),!(!C||ie&&window.innerHeight&&ie.height<window.innerHeight*.85||ee(document.activeElement))&&window.scrollTo(0,0)},ce=(C={})=>{F!=null&&cancelAnimationFrame(F),F=requestAnimationFrame(()=>{F=null,fe(C)})},ve=()=>{ce({recoverScroll:!0}),z&&clearTimeout(z),z=setTimeout(()=>{z=null,ce({recoverScroll:!0})},260)},ge=Vue.computed(()=>e.hasCapability("terminal")||e.hasCapability("file_editor")),pe=Vue.computed(()=>!0),P=C=>{let G=C&&C.id?C.id:null;G&&(e.setActiveSessionFilter(G,{agentId:C.agentId||null}),it.value&&e.closeSessionSidebar())},U=C=>{},re=Vue.ref(null),me=Vue.ref(!1),Me=320,K=Math.max(Me,Math.round(window.innerWidth*.25)),q=localStorage.getItem("yeaft-debug-width"),B=Vue.ref(q?parseInt(q,10):K),O=Vue.computed(()=>({"--yeaft-detail-width":B.value+"px"})),L=C=>{me.value=!0;let G=C.clientX,ie=B.value,Re=window.innerWidth*.6,_e=ts=>{let ss=G-ts.clientX,tn=Math.min(Re,Math.max(Me,ie+ss));B.value=tn},Ye=()=>{me.value=!1,document.removeEventListener("mousemove",_e),document.removeEventListener("mouseup",Ye),localStorage.setItem("yeaft-debug-width",String(B.value))};document.addEventListener("mousemove",_e),document.addEventListener("mouseup",Ye)},X="yeaft-session-status-visible",ne=()=>{try{let C=localStorage.getItem(X);return!(C==="0"||C==="false")}catch{return!0}},ke=Vue.ref(ne()),Y=C=>{ke.value=!!C;try{localStorage.setItem(X,ke.value?"1":"0")}catch{}},te=()=>Y(!ke.value),ye=()=>Y(!1),ae=220,$e=280,Ae=(()=>{try{return localStorage.getItem("yeaft-vp-timeline-width")}catch{return null}})(),xe=Ae?parseInt(Ae,10):NaN,qe=Vue.ref(Number.isFinite(xe)&&xe>=ae?xe:$e),Xe=Vue.computed(()=>({"--yeaft-vp-timeline-width":qe.value+"px"})),ht=C=>{let G=C.clientX,ie=qe.value,Re=Math.max(ae,Math.floor(window.innerWidth*.4)),_e=ts=>{let ss=G-ts.clientX,tn=Math.min(Re,Math.max(ae,ie+ss));qe.value=tn},Ye=()=>{document.removeEventListener("mousemove",_e),document.removeEventListener("mouseup",Ye);try{localStorage.setItem("yeaft-vp-timeline-width",String(qe.value))}catch{}};document.addEventListener("mousemove",_e),document.addEventListener("mouseup",Ye)},Gt="(max-width: 768px)",Ks="(max-width: 1024px)",Qt=typeof window.matchMedia=="function"?window.matchMedia(Gt):null,Lt=typeof window.matchMedia=="function"?window.matchMedia(Ks):null,Xt=(C,G)=>C?C.matches:window.innerWidth<=G,it=Vue.ref(Xt(Qt,768)),Zt=Vue.ref(Xt(Lt,1024)),$t=Vue.computed(()=>it.value?!e.sessionSidebarOpen:e.sidebarCollapsed),H=()=>{it.value=Xt(Qt,768),Zt.value=Xt(Lt,1024)},Z=()=>{H(),ve()},le=C=>{C&&(typeof C.addEventListener=="function"?C.addEventListener("change",Z):typeof C.addListener=="function"&&C.addListener(Z))},de=C=>{C&&(typeof C.removeEventListener=="function"?C.removeEventListener("change",Z):typeof C.removeListener=="function"&&C.removeListener(Z))},Ie=()=>{E&&(clearTimeout(E),E=null),V.value="",R(A()),b.value=!1,M.value=null},Te=()=>{let C=A();V.value="",R(C),b.value=!0,e.loadYeaftHistoryOutline(),C&&e.searchYeaftHistory("",{senderKey:C}),Vue.nextTick(()=>y.value?.focus?.())},We=()=>{b.value?Ie():Te()},Ze=C=>{b.value&&Nf(C.target)&&Ie()},Je=C=>{V.value=C,E&&clearTimeout(E),M.value=null,E=setTimeout(()=>{E=null,e.searchYeaftHistory(V.value,{senderKey:e.yeaftHistorySearchState.senderKey})},220)},ot=C=>{E&&clearTimeout(E),E=null,M.value=null,hh({...T(),senderKey:C}),e.searchYeaftHistory(V.value,{senderKey:C})},Be=()=>{hh({...T(),senderKey:Mo}),M.value=null,e.searchYeaftHistory(V.value,{senderKey:Mo})},je=C=>{if(!e.loadYeaftHistoryOutline({append:!0}))return;let G=Vue.watch(()=>x.value.loading,ie=>{ie||(G(),y.value?.restoreOlderScroll?.(C))})},Ne=()=>e.searchYeaftHistory(e.yeaftHistorySearchState.query,{append:!0,senderKey:e.yeaftHistorySearchState.senderKey}),Ke=C=>{e.hasCapability("session_history_window_prefetch")&&e.loadYeaftHistoryWindow(C)},ze=C=>{let G=e.beginYeaftHistoryReveal?.(C)||null;return qf({result:C,revealWindow:ie=>e.revealYeaftHistoryResult(ie,G),nextTick:()=>Vue.nextTick(),revealMessage:ie=>h.value?.revealMessage?.(ie),isMobile:it.value,closeOutline:Ie}).finally(()=>e.finishYeaftHistoryReveal?.(G))},at=C=>{if((C.metaKey||C.ctrlKey)&&String(C.key).toLowerCase()==="f"){C.preventDefault(),Te();return}if(C.key==="Escape"){if(b.value){Ie();return}if(o.value){lt();return}}};Vue.onMounted(()=>{H(),window.addEventListener("resize",Z),le(Qt),le(Lt),window.visualViewport?.addEventListener("resize",ve),window.visualViewport?.addEventListener("scroll",ve),document.addEventListener("click",Hn),document.addEventListener("click",Ze),document.addEventListener("keydown",at),ce()}),Vue.onUnmounted(()=>{window.removeEventListener("resize",Z),de(Qt),de(Lt),window.visualViewport?.removeEventListener("resize",ve),window.visualViewport?.removeEventListener("scroll",ve),document.removeEventListener("click",Hn),document.removeEventListener("click",Ze),document.removeEventListener("keydown",at),F!=null&&cancelAnimationFrame(F),z&&clearTimeout(z),E&&clearTimeout(E)}),Vue.watch(()=>e.yeaftConversationId,C=>{C&&e.activeConversations[0]!==C&&(e.activeConversations=[C])}),Vue.watch(()=>[e.currentAgent,e.yeaftActiveSessionFilter],()=>{Ie(),R(A())});let Dn=()=>{e.leaveYeaft()},Ln=(C,G,ie)=>{let Re=_();if(Re&&Re.activeNeedsInvite){let ss=Re.activeSession;ss&&Jt.delete(ss.id);return}let _e=e.yeaftActiveSessionFilter||Re&&Re.activeSessionId||"grp_default",Ye=to(C).mentions,ts=Array.isArray(G)?G:void 0;e.sendYeaftSessionMessage({groupId:_e,text:C,mentions:Ye,attachments:ts,quote:ie})},Ro=C=>{C&&(w.value=C,k.value?.focusInput?.())},_o=C=>{w.value=null,k.value?.replaceDraft?.(C||"")},Fr=()=>{let C=_(),G=e.yeaftActiveSessionFilter||C?.activeSessionId||null;G&&e.cancelYeaftSession(G)},Eo=(C="")=>{let G=Ue.value;G&&e.enterWorkCenterFromSession(G,C)},Do=()=>{if(it.value){e.toggleSessionSidebar();return}e.toggleSidebar()},Lo=()=>{i.value?e.closeYeaftDebugPanel():typeof e.openYeaftTurnDebug=="function"&&e.openYeaftTurnDebug({})},$o=()=>{e.closeYeaftDebugPanel()},Vo=()=>{e.reloadYeaftMessages()},Ho=()=>{if(typeof e.requestYeaftSessionInventory=="function"){e.requestYeaftSessionInventory();return}e._hasHandledAgentList=!1,e._hasHandledYeaftSessionHydrate=!1,e.yeaftSessionHydrateError=null,e.sendWsMessage({type:"get_agents"})},$n=()=>{window.location.reload()},Br=Vue.computed(()=>{let C=_(),G=e.yeaftActiveSessionFilter||C?.activeSessionId||null;return G?e.isYeaftSessionProcessing(G,e.currentAgent||null):!1}),Ue=Vue.computed(()=>{let C=_();if(!C||!C.sessions)return null;let G=e.yeaftActiveSessionFilter||null;if(G&&typeof C.sessionById=="function"){let ie=C.sessionById(G,e.currentAgent||null);if(ie)return ie}if(C.activeSessionId&&typeof C.sessionById=="function"){let ie=C.sessionById(C.activeSessionId,e.currentAgent||null);if(ie)return ie}return typeof C.sessionById=="function"?C.sessionById("grp_default",e.currentAgent||null):null}),et=()=>uh({activeSessionFilter:e.yeaftActiveSessionFilter,sessionsStore:_(),topbarGroup:Ue.value}),Nr=Vue.computed(()=>{let C=Ue.value||{},G=typeof C.id=="string"?C.id.trim():"",ie=[C.title,C.name,C.config?.title,C.config?.name];for(let Re of ie){let _e=typeof Re=="string"?Re.trim():"";if(_e&&!(G&&_e===G)&&!/^(sessions?|groups?)\//i.test(_e)&&!/^session_[A-Za-z0-9_-]+$/.test(_e)&&!(C.workDir&&_e===C.workDir))return _e}return""}),Oo=Vue.computed(()=>{let C=Ue.value?.workDir;return typeof C=="string"?C.trim():""}),Fo=Vue.computed(()=>Ue.value&&typeof Ue.value.announcement=="string"?Ue.value.announcement:""),hs=Vue.computed(()=>rh(Ue.value,e.yeaftModel||"")),vs=Vue.computed(()=>{let C=hs.value;return C&&e.yeaftAvailableModels.find(G=>lc(G,C))||null}),Bo=Vue.computed(()=>vs.value?.label||vs.value?.id||hs.value),zs=C=>cc(C?.effortOptions),qr=Vue.computed(()=>oh(Ue.value,e.yeaftModelEffort||"")),Wr=Vue.computed(()=>{let C=Array.isArray(vs.value?.effortOptions)?vs.value.effortOptions.filter(Boolean):[];return C.length?C.includes(qr.value)?qr.value:dc(C):null}),jr=Vue.computed(()=>ah(e.yeaftAvailableModels)),Ys=Vue.computed(()=>zs(vs.value)),pc=C=>{C==="model"&&!jr.value.length||C==="effort"&&!Ys.value.length||(o.value=o.value===C?null:C)},lt=(C=null)=>{(!C||o.value===C)&&(o.value=null)},Gs=(C,G)=>{let ie=C.currentTarget;if(C.relatedTarget){ie?.contains(C.relatedTarget)||lt(G);return}setTimeout(()=>{ie?.contains(document.activeElement)||lt(G)},0)},No=(C,G=null)=>{if(!C)return;let ie=Ue.value?.id||null;e.switchYeaftModel(C,ie,G),lt()},qo=C=>{if(!Ys.value.includes(C)||!hs.value)return;let G=Ue.value?.id||null;e.switchYeaftModel(hs.value,G,C),lt()},Vn=C=>!C||!Number.isFinite(C)||C<=0?"":C>=1e6?`${Math.round(C/1e5)/10}m`:C>=1e3?`${Math.round(C/1e3)}k`:String(C),Ur=C=>{let G=Vn(C?.contextWindow),ie=Vn(C?.maxOutput);return G&&ie?`${G} \xB7 ${ie} out`:G},Hn=C=>{if(!o.value)return;C.target.closest(".yeaft-composer-choice")||lt()},Vt=()=>{a.value||(m.value="vp",v.value=null),a.value=!a.value},Qs=({initialTab:C="vp",editVpId:G=null}={})=>{m.value=["vp","search","mcp"].includes(C)?C:"vp",v.value=m.value==="vp"&&G||null,a.value=!0},vt=()=>{lt(),l.value=!0},ys=C=>{rt(C)&&(l.value=!1)},Wo=async()=>{if(!(u.value||f.value)){f.value=!0,p.value="";try{let C={"Content-Type":"application/json"};t.token&&(C.Authorization=`Bearer ${t.token}`);let G=await fetch("/api/user/agent-secret",{headers:C});if(!G.ok){let _e=r("yeaft.onboarding.secretError");try{let Ye=await G.json();Ye?.error&&(_e=Ye.error)}catch{}throw new Error(_e)}let ie=await G.json(),Re=ie?.agentSecret||ie?.agent_secret||"";if(u.value=String(Re||"").trim(),!u.value)throw new Error(r("yeaft.onboarding.secretError"))}catch(C){p.value=C?.message||r("yeaft.onboarding.secretError")}finally{f.value=!1}}},Kr=()=>{c.value=!0},Xs=C=>{c.value=!1},Zs=async(C,G)=>{if(G&&!(typeof navigator>"u"||!navigator.clipboard?.writeText))try{let ie=typeof G=="string"?G:G?.value||"";if(!ie)return;await navigator.clipboard.writeText(ie),d.value=C||"",g&&clearTimeout(g),g=setTimeout(()=>{d.value="",g=null},1800)}catch{}},zr=(C,G)=>{},Js=(C={})=>{gh(C)&&(l.value=!1)},Jt=Vue.reactive(new Set),es=Vue.computed(()=>{let C=_();return C?C.activeSession:null}),en=C=>{if(!C)return"";if(C.id==="grp_default"&&(C.name==="Default"||!C.name))try{let G=typeof window<"u"?window.i18n:null;if(G&&G.global&&typeof G.global.t=="function")return G.global.t("yeaft.session.defaultName")}catch{}return C.name||C.id||""},jo=Vue.computed(()=>en(es.value)),Yr=Vue.computed(()=>{let C=_();if(!C||!C.activeNeedsInvite)return!1;let G=C.activeSession;return G?!Jt.has(G.id):!1}),Gr=Vue.computed(()=>{let C=_();return!!(C&&C.activeNeedsInvite)}),Uo=Vue.computed(()=>{let C=_();return e._hasHandledAgentList===!0&&e._hasHandledYeaftSessionHydrate===!0&&!!(C&&C.hasLoadedSnapshot)}),bs=Vue.computed(()=>{let C=_();return ch({agentInventoryReady:e._hasHandledAgentList===!0,hasYeaftAgent:ph(e),sessionsReady:e._hasHandledYeaftSessionHydrate===!0&&!!(C&&C.hasLoadedSnapshot),sessionsEmpty:!!(C&&C.isEmpty)})});Vue.watch(bs,C=>{C&&Wo()},{immediate:!0});let Qr="npm install -g @yeaft/webchat-agent",fc=Vue.computed(()=>{let G=(typeof window<"u"&&window.location?.origin?window.location.origin:"http://localhost:3456").replace(/^http:/,"ws:").replace(/^https:/,"wss:"),ie=u.value||r("yeaft.onboarding.secretPending");return`yeaft-agent install --server ${G} --name yeaft-agent --secret ${ie}`}),S="gh auth login && yeaft-agent llm use github-copilot --model gpt-5.5",$=()=>{let C=es.value;C&&Jt.add(C.id),gc(C?C.id:null)},W=()=>{let C=es.value;C&&Jt.add(C.id)},oe=Vue.ref(!1),we=Vue.ref(null),ue=Vue.ref(null),Oe=Vue.ref("session"),Se=Vue.ref(""),se=(C={})=>{let G=C&&(C.sessionId||C.groupId)||null,ie=C&&C.editVpId||"",Re=ie?"members":C&&C.section||"session";G&&(we.value=G,ue.value=C&&C.agentId||null,Oe.value=Re,Se.value=ie,oe.value=!0)},yt=()=>{let C=et();C&&se({sessionId:C,section:"session"})},Xr=()=>{oe.value=!1,we.value=null,ue.value=null,Se.value=""},On=()=>{Xr(),Qs({initialTab:"vp"})},gc=C=>{C&&se({sessionId:C,section:"members"})};Vue.watch(()=>{let C=es.value;return C?C.id+":"+(Array.isArray(C.roster)?C.roster.length:0)+":"+(C.defaultVpId||""):""},(C,G)=>{let ie=es.value;ie&&C!==G&&Array.isArray(ie.roster)&&ie.roster.length>0&&Jt.delete(ie.id)}),typeof Vue.onBeforeUnmount=="function"&&Vue.onBeforeUnmount(()=>{g&&clearTimeout(g),g=null});let Ch=()=>{a.value=!1},Ah=Vue.computed(()=>!a.value&&!bs.value&&ke.value),xh=Vue.computed(()=>{let C=_(),G=e.yeaftActiveSessionFilter||C?.activeSessionId||null;if(!G)return[];let Re=(typeof C?.sessionById=="function"?C.sessionById(G,e.currentAgent||null):null)?.agentId||e.currentAgent||null,_e=Re?`${Re}${G}`:G,Ye=e.yeaftActiveTasksBySession?.[_e]||{};return Vw(Ye)}),Th=Vue.computed(()=>{if(!e.yeaftConversationId)return[];let G=_(),ie=e.yeaftActiveSessionFilter||G?.activeSessionId||null;if(!ie)return[];let Re=ac(G,ie,e.currentAgent||null),_e=Re&&Array.isArray(Re.roster)?Re.roster:[];if(_e.length===0)return[];let Ye=new Set(_e),ts=Jm(_e,s.vpList||[]),ss=e.vpStatuses||{},tn={},Zr=e.currentAgent||null;for(let Fe of Object.values(ss)){if(!Fe||!Fe.vpId)continue;let Jr=Fe.sessionId??Fe.groupId;Jr&&Jr!==ie||Zr&&Fe.agentId&&Fe.agentId!==Zr||Ye.has(Fe.vpId)&&(tn[Fe.vpId]=Fe)}let mc={};for(let Fe of Object.values(e.activeVpTurns||{}))!Fe?.turnId||!Fe?.sessionId||Fe.sessionId!==ie||Zr&&Fe.agentId&&Fe.agentId!==Zr||Object.entries(e.stoppingVpTurnIds||{}).some(([Jr])=>e.activeVpTurns?.[Jr]===Fe)&&(mc[Fe.turnId]=!0);return eh({vpList:ts,vpStatuses:tn,stoppingVpTurnIds:mc,connectionState:e.connectionState,vpLabelOf:Fe=>s.vpLabel(Fe),vpDescriptionOf:Fe=>s.vpDescription(Fe)})});return{store:e,pageRef:I,effectiveSidebarCollapsed:$t,debugMode:i,composerMenuOpen:o,topbarGroup:Ue,topbarSessionTitle:Nr,topbarFolderPath:Oo,topbarModel:hs,topbarModelLabel:Bo,topbarEffort:Wr,topbarModelRows:jr,topbarEffortOptions:Ys,selectableEffortsForModel:zs,modelOptionMatchesRef:lc,showSettings:a,showLlmConfig:l,sessionCreateOpen:c,settingsInitialTab:m,settingsInitialEditVpId:v,chatInputRef:k,messageQuote:w,messageListRef:h,historySearchRef:y,historySearchOpen:b,historySearchActiveMessageId:M,historyOutlineState:x,historySenderOptions:D,toggleHistorySearch:We,closeHistorySearch:Ie,onHistorySearchQuery:Je,onHistorySenderChange:ot,onHistorySenderInvalid:Be,loadOlderHistoryOutline:je,loadMoreHistorySearchResults:Ne,previewHistorySearchResult:Ke,selectHistorySearchResult:ze,yeaftInputDraftKey:j,openSettings:Qs,isMobile:it,isNarrowDetail:Zt,detailPanel:re,isResizingDetail:me,detailWidthStyle:O,startDetailResize:L,isProcessing:Br,goBack:Dn,sendMessage:Ln,setMessageQuote:Ro,editMessageAsNew:_o,cancelYeaft:Fr,openWorkItemDraft:Eo,toggleSidebar:Do,toggleDebug:Lo,closeDebug:$o,reloadMessages:Vo,retryConversationInventory:Ho,reloadPage:$n,toggleComposerMenu:pc,closeComposerMenu:lt,onComposerMenuFocusout:Gs,selectModel:No,selectEffort:qo,openLlmConfig:vt,trackOverlayPointerDown:ft,trackOverlayPointerUp:gt,clearOverlayPointerGesture:mt,closeLlmConfigFromOverlay:ys,openSessionCreate:Kr,onSessionCreated:Xs,copyOnboardingCommand:Zs,copiedOnboardingCommand:d,onLlmConfigMessage:zr,onLlmConfigSaved:Js,formatTokens:Vn,formatModelCtx:Ur,toggleSettings:Vt,onSettingsSaved:Ch,sidebarV2Enabled:pe,onSelectGroupV2:P,onSelectChat:U,canUseWorkbench:ge,shouldShowInviteModal:Yr,inviteGroupName:jo,onInviteOpenLibrary:$,onInviteDismiss:W,isActiveGroupEmpty:Gr,conversationInventoryReady:Uo,showOnboardingGuide:bs,installAgentCommand:Qr,connectAgentCommand:fc,copilotCommand:S,agentSecret:u,agentSecretLoading:f,agentSecretError:p,groupSettingsOpen:oe,groupSettingsId:we,groupSettingsAgentId:ue,groupSettingsSection:Oe,groupSettingsEditVpId:Se,openSessionSettings:se,openAnnouncementSettings:yt,closeGroupSettings:Xr,openVpLibraryFromGroupSettings:On,openMemberEditor:gc,showVpTimeline:Ah,vpTimelineRows:Th,sessionStatusTasksForActiveSession:xh,sessionStatusAnnouncementText:Fo,sessionStatusVisible:ke,toggleSessionStatus:te,closeSessionStatus:ye,timelineWidthStyle:Xe,startTimelineResize:ht,onEditVpFromTimeline:C=>{if(!C)return;let G=et();G&&se({sessionId:G,section:"members",editVpId:C})},onMentionVpFromTimeline:C=>{if(!C)return;let G=k.value;G&&typeof G.appendMention=="function"&&G.appendMention(C)},onCancelVpFromTimeline:C=>{if(!C)return;let G=_(),ie=e.yeaftActiveSessionFilter||G?.activeSessionId||null;ie&&typeof e.cancelVpTurnForSession=="function"&&e.cancelVpTurnForSession(C,ie)},onCancelTaskFromTimeline:C=>!C?.id||!C.sessionId||typeof e.cancelYeaftTask!="function"?!1:e.cancelYeaftTask({agentId:C.agentId,sessionId:C.sessionId,taskId:C.id})}}}});var Fw=Mh(()=>{Pi();St();vn();$p();Nt();Bp();qp();jp();Kp();Cm();Ih();Wl();Il();window.Pinia={...Pinia,useChatStore:null,useAuthStore:null};var Hw={components:{LoginPage:Up,ChatPage:Im,YeaftPage:Sh},template:`
8485
8546
  <div v-if="!authStore.initialized" class="auth-bootstrap" aria-busy="true"><span class="session-loading-spinner"></span></div>
8486
8547
  <LoginPage v-else-if="!authStore.isAuthenticated" />
8487
8548
  <template v-else>