@yeaft/webchat-agent 1.0.353 → 1.0.354
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.
|
@@ -5,9 +5,9 @@ ${f}`:f,p=!0;break}}if(!p){for(let g=c.length-1;g>=0;g--)if(c[g].type==="tool-us
|
|
|
5
5
|
|
|
6
6
|
`)+(s||"")}}function Rd(e){return Object.values(xd).filter(t=>e||!t.adminOnly).sort((t,s)=>t.order-s.order)}var xd,ht,Pd,ws,Xn=F(()=>{xd={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}},ht={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"}]}};Pd="dev",ws=3});function lv(e,t){return!t||!e?.yeaftConversationIdsByAgent?[]:Object.entries(e.yeaftConversationIdsByAgent).filter(([,s])=>s===t).map(([s])=>s).filter(Boolean)}function _d(){return`cm_${crypto.randomUUID()}`}function Ed(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 Dd(e,t,s=null,n=null,r={}){let i=s||e.currentAgent;if(!i){e.addMessage({type:"error",content:Le("chat.agent.selectFirst")});return}Os(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 Ld(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)),Os(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 $d(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),ds(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]=[],Os(e,!0,Le("chat.session.loadingHistory"))),e.syncChatConversationHistory?.(t),e.loadingMoreMessages=!1;let o=e.chatSessionState[t];e.hasMoreMessages=!!o?.hasMoreOlder,ds(e)}function pa(e,t,s){t&&e.sendWsMessage({type:"update_conversation_settings",conversationId:t,...s})}function Vd(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];pa(e,n,{disallowedTools:u})}function Hd(e,t,s){return t?e.sendWsMessage({type:"delete_conversation",requestId:`delete_${crypto.randomUUID()}`,conversationId:t,...s?{agentId:s}:{}}):!1}function Od(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 Fd(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=_d();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),Ns(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=ua(n.expertSelections,e.customExpertRoles,t,e.language||"zh-CN");c&&(l.expertMessage=c.effectivePrompt)}e.sendWsMessage(l)||Ln(e).then(()=>{e.sendWsMessage(l)}).catch(()=>{e.addMessage({type:"system",content:Le("chat.connection.reconnectFailed")}),delete e.processingConversations[e.currentConversation],Ae(e,e.currentConversation)})}function Nd(e){if(!e.currentConversation||!e.processingConversations[e.currentConversation])return;let t=e.currentConversation;e.sendWsMessage({type:"cancel_execution",conversationId:t}),delete e.processingConversations[t],Ae(e,t),e._closedAt||(e._closedAt={}),e._closedAt[t]=Date.now();let s=e.executionStatusMap[t];s&&(s.currentTool=null),e.finishStreamingForConversation(t),Qt(e,t),e.addMessage({type:"system",content:Le("chat.execution.cancelled")})}function qd(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?lv(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=++av;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)},ov);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 Bd(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})),ds(e)))}function Wd(e,t){let s=e.activeConversations.indexOf(t);s<0||(e.activeConversations.splice(s,1),e.activeConversations.length===0&&(localStorage.removeItem("lastViewedConversation"),e.lastViewedConversation=null),ds(e))}function jd(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=_d();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),Ns(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=ua(r.expertSelections,e.customExpertRoles,s,e.language||"zh-CN");d&&(c.expertMessage=d.effectivePrompt)}e.sendWsMessage(c)||Ln(e).then(()=>{e.sendWsMessage(c)}).catch(()=>{e.addMessageToConversation(t,{type:"system",content:Le("chat.connection.reconnectFailed")}),delete e.processingConversations[t],Ae(e,t)})}function Ud(e,t){if(!t||!e.processingConversations[t])return;e.sendWsMessage({type:"cancel_execution",conversationId:t}),delete e.processingConversations[t],Ae(e,t),e._closedAt||(e._closedAt={}),e._closedAt[t]=Date.now();let s=e.executionStatusMap[t];s&&(s.currentTool=null),e.finishStreamingForConversation(t),Qt(e,t),e.addMessageToConversation(t,{type:"system",content:Le("chat.execution.cancelled")})}function Kd(e){e.ws&&e.ws.readyState===WebSocket.OPEN&&(typeof e.requestYeaftSessionInventory=="function"?e.requestYeaftSessionInventory():e.sendWsMessage({type:"get_agents"}))}function zd(e){!e.currentAgent||!e.currentConversation||e.sendWsMessage({type:"refresh_conversation",conversationId:e.currentConversation})}function Yd(e,t){t&&e.sendWsMessage({type:"restart_agent",agentId:t})}function Gd(e,t){t&&e.sendWsMessage({type:"upgrade_agent",agentId:t})}var ov,av,Qd=F(()=>{Gt();us();Ro();Yr();$t();Xn();ov=1e4,av=0});function dv(e=globalThis.localStorage){try{return e?.getItem(Zd)==="yeaft"?"yeaft":Xd}catch{return Xd}}function fa(e,t=globalThis.localStorage){if(e!=="chat"&&e!=="yeaft")return!1;try{return t?.setItem(Zd,e),!!t}catch{return!1}}function Jd(e=globalThis.localStorage){let t=dv(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 ga(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 eu(e){let t=ga(e);return e.activeConversations=[e.yeaftConversationId],t}function tu(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 Zd,Xd,su=F(()=>{Zd="yeaft-preferred-conversation-view",Xd="chat"});function nu(e,t,s){let n={...e||{}},r={...n[t]||{}};return r[s]=(r[s]||0)+1,n[t]=r,n}function ru(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 iu=F(()=>{});function ma(e){return e.currentView==="yeaft"?e.yeaftConversationId||null:e.activeConversations[0]||null}var ou=F(()=>{});function au({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 lu=F(()=>{});function Ee(e){let t=Number(e);return Number.isFinite(t)?t:null}function zs(e){let t=Ee(e);return Number.isInteger(t)&&t>0?t:null}function ha(e){let t=Ee(e);return Number.isInteger(t)&&t>=0?t:null}function cu(e){return fv.has(e)?1:0}function gv(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=cu(e.status),i=cu(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 Ks(e){return Math.max(0,Number(e)||0)}function du(e){return typeof e?.id=="string"&&e.id.startsWith("event:")?e.id.slice(6):null}function mv(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 hv(e,t){let s=Ks(e?.createdAt)-Ks(t?.createdAt);if(s)return s;let n=du(e),r=du(t);if(n!=null&&r!=null)return mv(n,r);let i=e?.role==="user"?0:1,o=t?.role==="user"?0:1;if(i!==o)return i-o;let a=Ks(e?.generation)-Ks(t?.generation);return a||Ks(e?.attempt)-Ks(t?.attempt)||String(e?.id||"").localeCompare(String(t?.id||""))}function Zn(...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,gv(t.get(r.id),r))}return[...t.values()].sort(hv)}function rt(e){let t=Number(e);return Number.isInteger(t)&&t>0?t:1}function Ys(e,t,s,n){return`${e}:${t}:${s}:${rt(n)}`}function va(e,t,s,n){return`${e}:${t}:${s}:${rt(n)}`}function Gs(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 uu(e,t){if(Gs(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 ya(e,t){let s=zs(e?.generation),n=zs(t?.generation);if(s!=null&&n!=null&&s!==n)return n<s;let r=ha(e?.attempt),i=ha(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 ba(e,t){if(!e||e.id!==t?.id||Gs(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&&ya(l,c))return null;let d=zs(l?.generation),u=zs(c?.generation),f=ha(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 pu(e,t){if(!e||e.id!==t?.id||Gs(t,e))return!1;let s=Ee(t.coordinatorRevision),n=Ee(e.coordinatorRevision)??0;return s!=null&&s>n?!0:ba(e,t)!=null}function fu(e,t){if(!e||e.id!==t?.id||Gs(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,ya(o,a))return n=!1,o;if(Ee(a?.progressRevision)==null){let{response:u,messages:f,...p}=a;return{...o,...p}}let c=zs(o?.generation),d=zs(a?.generation);if(c!=null&&d!=null&&d>c){let{messages:u,thread:f,liveMessage:p,response:g,failure:m,messageCursor:b,messageCount:I,failureReason:y,...S}=o;return{...S,...a}}return{...o,...a}}),i||(n=!1)}for(let r of pv)!n&&vv.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?ya(r,n):!1})}function mu(e,t){return Ee(e?.revision)===Ee(t?.revision)&&Ee(e?.coordinatorRevision)===Ee(t?.coordinatorRevision)&&Ee(e?.updatedAt)===Ee(t?.updatedAt)}function hu(e,t){return!e||!t||e.id!==t.id?!1:Gs(e,t)?!0:mu(t,e)&&gu(t.actions,e.actions)}function Qr(e,t){let s=Array.isArray(e)?e:[],n=s.find(i=>i.id===t?.id)||null,r=n&&Gs(t,n)?n:t;return n&&r===t&&mu(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 pv,fv,vv,wa=F(()=>{pv=Object.freeze(["revision","planRevision","ledgerRevision","coordinatorRevision","title","goal","workItemType","planningMode","status","lifecycle","attentionState","activeActionIds","attentionActionIds","currentActionId","currentAction","executionStats","failureReason","origin","linkedSessionIds","createdAt","updatedAt"]);fv=new Set(["completed","failed","cancelled","superseded","interrupted"]);vv=new Set(["status","lifecycle","attentionState","activeActionIds","attentionActionIds","currentActionId","currentAction","executionStats","failureReason"])});function ks(e){return typeof e=="string"?e.trim():""}function vu(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 xt(e){let t=vu(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 yv(e){return Array.isArray(e)?e.slice(0,100).map(t=>({content:ks(t?.content).slice(0,2e3),status:["pending","in_progress","completed"].includes(t?.status)?t.status:"pending",...ks(t?.activeForm)?{activeForm:ks(t.activeForm).slice(0,2e3)}:{}})).filter(t=>t.content):[]}function Qe(e){if(!e||typeof e!="object")return null;let t=ks(e.content).slice(0,1e5),s=yv(e.todos);if(!t&&s.length===0)return null;let n=e.role==="assistant"?"assistant":"user",r=vu(e.timestamp);return{id:ks(e.id).slice(0,256)||null,role:n,author:ks(e.author).slice(0,256)||(n==="assistant"?"Assistant":"User"),content:t,...r?{timestamp:r}:{},...s.length>0?{todos:s}:{}}}function yu(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 bu(e,t){let s=e?.todoMsg?.toolInput?.todos,n=Array.isArray(e?.toolMsgs)?e.toolMsgs.map(o=>ks(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 Xt=F(()=>{});function wu(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 bv(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 ku(e,t={}){if(!Array.isArray(e)||!t.turnId)return!1;let s=e.filter(n=>bv(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(wu(s[n].content).trim()){s[n].responseKind="result";break}}return!0}function Xr(e,t){if(!e||!t)return;let s=wu(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 Zr(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||ka.has(l?.status)||ka.has(l?.turnEndReason)||ka.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 ka,Jr=F(()=>{ka=new Set(["aborted","errored","error","cancelled","canceled"])});function Sa(e){return e?.type==="user"&&typeof e.content=="string"&&e.content.trim()}function Ia(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 Ca(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 Su(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(Sa(i)||i.type==="system"||i.type==="error"){n(r),s={start:r,kind:i.type};continue}if(!Ia(i)){s||(s={start:r,kind:"other"});continue}(!s||s.kind==="assistant"&&Ca(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 Iu(e,t){return t?e&&(e.sessionId??e.groupId)===t:!0}function Aa(e=[],t=null,s=5){let n=Math.max(1,Number.isFinite(s)?Math.floor(s):5),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(!Iu(c,t))continue;let d=r.length;if(r.push(c),Sa(c)||c.type==="system"||c.type==="error"){a(d),o={start:d,kind:c.type};continue}if(!Ia(c)){o||(o={start:d,kind:"other"});continue}(!o||o.kind==="assistant"&&Ca(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 Cu(e=[],t=null,s=5){let n=Math.max(1,s||5),r=0,i=null,o=()=>i?(i=null,r+=1,r>n):!1;for(let a of e)if(Iu(a,t)){if(Sa(a)||a.type==="system"||a.type==="error"){if(o())return!0;i={kind:a.type};continue}if(!Ia(a)){i||(i={kind:"other"});continue}if(!i||i.kind==="assistant"&&Ca(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 Ss(){return 5}function Jn(){return 20}var Au=F(()=>{});function kv(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=Zt();for(let r of n?.sessionList||[])r?.id===t&&r?.agentId&&s.add(r.agentId)}return s}function Fu(e,t){let s=kv(e,t);return s.size===1?s.values().next().value:null}function ni(e,t,s){return!!s&&Fu(e,t)===s}function et(e,t,s){return!e||e.sessionId!==t?!1:s?e.agentId===s:!e.agentId}function xu(e,t,s=null){if(!t)return!1;let n=s||Se(e,t),r=mt(n,t);if(r&&e.yeaftProcessingSessions?.[r]||e.yeaftProcessingSessions?.[t]&&ni(e,t,n))return!0;for(let i of Object.values(e.activeVpTurns||{}))if(et(i,t,n))return!0;for(let i of Object.values(e.vpStatuses||{}))if(et(i,t,n)&&tr.has(i?.state))return!0;return!1}function Sv(e,t,s,n=null){let r={...e.yeaftProcessingSessions||{}};if(t){let i=ca(t);if(r=Object.fromEntries(Object.entries(r).filter(([o])=>n?o!==mt(t,n):!o.startsWith(i))),n)ni(e,n,t)&&delete r[n];else for(let o of Object.keys(r))ni(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||!tr.has(i?.state))continue;let a=mt(t,o)||o;r[a]=!0}return r}function Qs(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 Tu(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=ca(t);e.yeaftProcessingSessions=Object.fromEntries(Object.entries(e.yeaftProcessingSessions||{}).filter(([n])=>!n.startsWith(s)))}function Vt(e,t){return`${e||""}:${t||""}`}function xv(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 Tv(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 Mv(e={}){let t=Qe(e.quote);return{agentId:e.agentId||"",workItemId:e.workItemId||"",target:xv(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 Pu(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 Ru(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 Pv(e,t){return _a.every(s=>!t[s]||e[s]===t[s])}function Nu(e,t){return _a.every(s=>!e[s]||!t[s]||e[s]===t[s])}function _u(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=>Pv(Ru(o,s),t));if(r.length===1)return r[0];let i=n.filter(o=>Nu(Ru(o,s),t));return i.length===1?i[0]:null}function qu(e){return _a.map(t=>e[t]||"").join("\0")}function Rv(e,t,s){let n=qu(t),r={...e._yeaftAskTerminalEvents||{},[n]:{identity:t,event:s,receivedAt:Date.now()}},i=Object.keys(r);if(i.length>Mu){i.sort((o,a)=>r[o].receivedAt-r[a].receivedAt);for(let o of i.slice(0,i.length-Mu))delete r[o]}e._yeaftAskTerminalEvents=r}function Eu(e,t){let s=e._yeaftAskTerminalEvents||{},n=qu(t),r=s[n]?n:null;if(!r){let l=Object.entries(s).filter(([,c])=>Nu(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 _v(e,t,s){return(e.messagesMap?.[t]||[]).some(n=>n?.type==="tool-use"&&n.sessionId===s&&n.hasResult===!1)}function xa(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 Ev(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 Dv(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 er(e){return $n(e)}function Ta(e,t,s){return`${mt(e,t)}::${s||""}`}function Ma(e){return Object.fromEntries(Object.entries(e||{}).filter(([,t])=>t?.status==="running"))}function Zt(){try{return typeof window>"u"?null:window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore()||null}catch{return null}}function Du(e){let t=Zt();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 Se(e,t,s=null){if(s)return s;if(t){let n=Zt(),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 Lv(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 Lu(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"&&Lv(n?.version||r?.version,"1.0.166")}function Is(e,{fallbackDefault:t=!1}={}){if(e?.yeaftActiveSessionFilter)return e.yeaftActiveSessionFilter;let s=Zt();return s?.activeSessionId?s.activeSessionId:t?"grp_default":null}function si(e){let t=e.yeaftDebugSessionFilter;if(t==="__all__")return null;if(t)return t;let s=Is(e);return s||(Zt()?.sessions?.grp_default?"grp_default":null)}function Pa(e,t="session"){return[e?.vpId||e?.ownerVpId||"vp",e?.threadId||"thread",e?.turnId||t].join(":")}function Ht(e,t,s=null){return s||t&&e?.yeaftConversationIdsByAgent?.[t]||e?.yeaftConversationId||null}function vt(e,t=null,s=null){let n=t||e?.yeaftActiveSessionFilter||null,r=s||Se(e,n);return(r&&e?.yeaftConversationIdsByAgent?e.yeaftConversationIdsByAgent[r]:null)||e?.yeaftConversationId||null}function $u(e,t,s){if(e?.currentView!=="yeaft")return!1;let n=e?.yeaftActiveSessionFilter||null;if(n&&t!==n)return!1;let r=Se(e,n);return!r||!s||r===s}var wv,Ve,ei,ti,Iv,tr,Cv,Av,Mu,_a,Vu,Ra,Hu,Ou,Cs,ri=F(()=>{gt();xo();$t();Ro();Fn();gd();Ad();Qd();us();Gt();su();Wo();qr();iu();ou();lu();Mo();wa();Ko();Xt();Jr();Fs();Xo();Qn();Au();sa();na();({defineStore:wv}=Pinia),Ve=Object.freeze([]),ei=(e,t,s)=>`${e||""}::${t||""}::${s}`;ti=5,Iv=15e3,tr=new Set(["typing","thinking","retrying","streaming","tool"]),Cv=Object.freeze(["model","availableModels","refreshedAt","catalogRefreshedAt","catalogEpoch","catalogRevision","catalogDigest","refreshStartedAt","refreshReason","refreshError","refreshing"]),Av=8,Mu=64;_a=Object.freeze(["conversationId","agentId","requestId","toolCallId","sessionId","vpId","turnId","threadId"]);Vu=1e3,Ra=1,Hu=5,Ou=200,Cs=wv("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:{},sessionHistorySyncRefreshToken:0,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:{},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")||"[]"),...Jd(),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:Ra,yeaftDebugHistoryHasMore:!1,yeaftDebugSearch:"",yeaftDebugSessionFilter:null,yeaftDreamLatest:{},yeaftDreamSnapshots:{},yeaftDreamPromptLoads:{},yeaftDreamEvents:{},yeaftReflectionCards:{},yeaftSubAgentCards:{},yeaftSidebarV2Enabled:!0,yeaftActiveSessionFilter:null,_currentYeaftSessionId:null,_currentYeaftVpId:null,_currentYeaftTurnId:null,_currentYeaftThreadId:null,_yeaftAskTerminalEvents:{},activeVpTurns:{},vpStatuses:{},stoppingVpTurnIds:{},yeaftVpTyping:{},_vpCrudPending:null}),getters:{currentConversation:e=>e.activeConversations[0]||null,activeConversationId:e=>ma(e),activeSessionRoute(e){if(e.currentView==="yeaft"){let n=Is(e);return n?{runtimeProvider:"yeaft",agentId:Se(e,n),sessionId:n}:null}let t=ma(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=ke(Se(e,n),n),i=e.yeaftMessageWindowState[r]?.visibleTurns||Ss();return Aa(s,e.yeaftActiveSessionFilter||null,i)}return s},yeaftAllMessages:e=>{let t=vt(e);return t&&e.messagesMap[t]||Ve},yeaftVisibleMessages(e){let t=vt(e),s=t&&e.messagesMap[t]||Ve,n=e.yeaftActiveSessionFilter||null,r=ke(Se(e,n),n),i=e.yeaftMessageWindowState[r]?.visibleTurns||Ss();return Aa(s,e.yeaftActiveSessionFilter||null,i)},hasHiddenYeaftMessages(e){if(e.currentView!=="yeaft")return!1;let t=vt(e),s=t&&e.messagesMap[t]||Ve,n=e.yeaftActiveSessionFilter||null,r=ke(Se(e,n),n),i=e.yeaftMessageWindowState[r]?.visibleTurns||Ss();return Cu(s,e.yeaftActiveSessionFilter||null,i)},activeYeaftHistoryState(e){return Qo(e)},yeaftInitialHistoryLoading(e){let t=Qo(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=si(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamLatest?.[s]||null},yeaftDreamSnapshotForActiveSession(e){let t=si(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamSnapshots?.[s]||null},yeaftDreamPromptLoadForActiveSession(e){let t=si(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamPromptLoads?.[s]||null},yeaftDreamEventsForActiveSession(e){let t=si(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,b=0,I=0;for(let w of p){let v=w&&w.usage;v&&Number.isFinite(v.totalTokens)?b+=v.totalTokens:v&&(b+=(v.totalInputTokens||(v.inputTokens||0)+(v.cacheReadTokens||0)+(v.cacheWriteTokens||0))+(v.outputTokens||0)),w&&Number.isFinite(w.latencyMs)&&(I+=w.latencyMs)}let y=!f.closedAt,S={...f,loopCount:y||!f.loopCount?m:f.loopCount,totalTokens:y||!f.totalTokens?b:f.totalTokens,totalMs:y||!f.totalMs?I:f.totalMs,loops:p,reflections:g};c.push(S)}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=Is(e);return t?xu(e,t,Se(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"?Zt()?.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)=>xu(e,t,s),isSessionHistorySyncing:e=>t=>{let s=t?.sessionId||null;return s?t.runtimeProvider==="yeaft"?!!e.yeaftSessionHistoryState?.[ke(t.agentId||null,s)]?.loading:!!e.chatHistoryRequests?.[zt(s)]?.loading:!1},isYeaftSessionUnread:e=>(t,s=null)=>{if(!t)return!1;let n=Se(e,t,s);return n?!!e.yeaftUnreadSessionKeys?.[Hr(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&&fa("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),tu(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||Se(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=Jl(()=>{Mn(this._workCenterBrowserFence)||this.clearWorkCenterBrowserState()}));let e=$r();if(!e)return this._workCenterBrowserFence=null,this.workCenterComposerDrafts={},this.workCenterMessageOutbox={},!1;if(!Mn(this._workCenterBrowserFence)){let t=Zl(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 Vt(e,t)},saveWorkCenterComposerDraft(e,t,s={}){let n=Vt(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:Tv(s.target),error:String(s.error||"")}};return Ao(i,this._workCenterBrowserFence)?(this.workCenterComposerDrafts=i,!0):!1},loadWorkCenterComposerDraft(e,t){return this.workCenterComposerDrafts?.[Vt(e,t)]||null},removeWorkCenterComposerDraft(e,t){let s=Vt(e,t),n={...this.workCenterComposerDrafts||{}};return delete n[s],Ao(n,this._workCenterBrowserFence)?(this.workCenterComposerDrafts=n,!0):!1},prepareWorkCenterMessageEnvelope(e={}){let t=Mv(e),s=Vt(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 Pn(i,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=i,r):null},loadWorkCenterMessageEnvelope(e,t){return this.workCenterMessageOutbox?.[Vt(e,t)]||null},replaceWorkCenterMessageEnvelopeAttachments(e,t,s=[]){let n=Vt(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 Pn(o,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=o,i):null},discardWorkCenterMessageEnvelope(e,t){let s=Vt(e,t),n={...this.workCenterMessageOutbox||{}};return delete n[s],Pn(n,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=n,!0):!1},confirmWorkCenterMessageEnvelope(e,t,s){let n=Vt(e,t),r=this.workCenterMessageOutbox?.[n];if(!r||r.clientMessageId!==s)return!1;let i={...this.workCenterMessageOutbox||{}};return delete i[n],Pn(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=Qr(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(b=>b.id===g.id);m<0?f.push(g):f[m]=Qr([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&&hu(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=rt(n),i=Ys(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=rt(s),a=Ys(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)||rt(u?.generation)!==o||Number(this._workCenterActionMessageGenerationByKey[a]||0)!==l)return u;let f=this.workCenterActionMessages[a]?.messages||[],p=Zn(f,u?.messages||[]),g=this.workCenterActionMessages[a],m=g?.nextCursor,b=n==null?null:Number(n),I=m==null?null:Number(m),y=!g||b==null||I!=null&&b===I;return this.workCenterActionMessages={...this.workCenterActionMessages,[a]:{generation:o,messages:p,nextCursor:y?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=rt(s),o=va(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)&&rt(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=rt(s),c=`${va(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)&&rt(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&&!uu(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=Qr(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(I=>I?.id===t.actionId)?{...s,eventActionId:t.actionId}:s,f=ba(d,u),p=Number(s.coordinatorRevision),g=Number(d.coordinatorRevision)||0,m=Number.isInteger(p)&&p>g,b=pu(d,u);this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[e]:fu(d,s)},b&&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),b=this.workCenterDetailByAgent[e],I=b?.actions?.find(M=>M?.id===r),y=m?.actions?.find(M=>M?.id===r),S=o==null||rt(I?.generation)===o,w=o==null||rt(y?.generation)>=o,v=l==null||Number(m?.coordinatorRevision)===l,h=l!=null||S&&w&&(t.currentActionId==null?m?.currentActionId==null:b?.currentActionId===t.currentActionId&&m?.currentActionId===t.currentActionId);b?.id===t.id&&v&&h&&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,b=i>0?!!a&&(a!==o||i>r):r===0&&c>l,I=i>0?!!t.catalogDigest&&!!n.catalogDigest&&t.catalogDigest===n.catalogDigest:t.catalogDigest===n.catalogDigest,y=u&&!p&&(b||m&&I),w=y||s&&r===0&&l===0&&!u&&d,v={...t};if(!w)for(let M of Cv)delete v[M];let h={...n,...v};if(w){if(y&&o&&a&&o!==a){let M=[...f.filter(x=>x!==o),o].slice(-Av);this._yeaftRetiredCatalogEpochsByAgent={...this._yeaftRetiredCatalogEpochsByAgent||{},[e]:M}}h.availableModels=t.availableModels,h.catalogRefreshedAt=y?c:null,h.catalogEpoch=y&&a||null,h.catalogRevision=y&&i||null,h.catalogDigest=y&&t.catalogDigest||null}this.yeaftStatusByAgent={...this.yeaftStatusByAgent,[e]:h},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 Se(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))},Iv),e):(this.yeaftSessionHydrateRequestId=null,this.yeaftSessionHydrateSlices=[],this.yeaftSessionHydrateError="session_inventory_send_failed",null)},beginYeaftHistoryLoad(e){let t=jc(this,e);if(!t)return null;this.sessionHistorySyncRefreshToken+=1;let{agentId:s,sessionId:n}=e||{};return setTimeout(()=>{Go(this,{agentId:s,sessionId:n,requestId:t.requestId,error:"history_load_timeout"})&&(this.sessionHistorySyncRefreshToken+=1)},Wc),t},finishYeaftHistoryLoad(e,t={},s="chunk"){let n=Uc(this,e,t,s);return n&&s!=="completion"&&(this.sessionHistorySyncRefreshToken+=1),n},isCurrentYeaftHistoryResponse(e){return Yo(this,e)},syncActiveYeaftHistoryLoad(){return jn(this)},enterYeaft(e=null,{deferBootstrap:t=!1}={}){let s=this.currentAgent;ga(this);let n=Is(this),r=!e&&n?Se(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]=[]),eu(this),this.currentView="yeaft",fa("yeaft"),this.hasMoreMessages=!1,this.loadingMoreMessages=!1,this.yeaftHasMoreHistory=!1,this.yeaftLoadingMoreHistory=!1,this.yeaftOldestLoadedSeq=null,this._yeaftReconnectCatchUpPending=!1,this.loadOpenedYeaftSessionsForConnectedAgents(null,{force:!0}),t||this.requestYeaftSessionBootstrap({forceSessionReady:!0,catchUpHistory:!0,forceHistoryReplay:!0})},loadOpenedYeaftSessionsForConnectedAgents(e=null,{force:t=!1}={}){let s=Array.isArray(e)?e.filter(Boolean):Array.isArray(this.agents)?this.agents.filter(i=>i&&i.online&&i.id).map(i=>i.id):[],n=[...new Set(s)];(!this._yeaftOpenedSessionsLoadedAgents||typeof this._yeaftOpenedSessionsLoadedAgents!="object")&&(this._yeaftOpenedSessionsLoadedAgents={});let r=[];for(let i of n)!t&&this._yeaftOpenedSessionsLoadedAgents[i]||(this._yeaftOpenedSessionsLoadedAgents[i]=Date.now(),r.push(i),this.sessionCrudRequest("list",{},{agentId:i}).catch(o=>{delete this._yeaftOpenedSessionsLoadedAgents[i]}));return r},requestYeaftSessionBootstrap({forceSessionReady:e=!1,catchUpHistory:t=!1,forceHistoryReplay:s=!1}={}){if(!this.currentAgent)return;let n=Is(this),r=n?Se(this,n):this.currentAgent,i=ke(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(y=>y&&(y.sessionId??y.groupId??null)===n),d=!!n&&Oo({sessionState:o,hasCachedSessionRows:c,force:!!s}),u=!!n&&!d&&Lc(o,t);if(!a&&!d&&!u)return!1;let f=`${r}:${n||"__none__"}`,p=a&&!d&&!u;if(p&&this.yeaftBootstrapMetaLoadingKey===f)return!1;p&&(this.yeaftBootstrapMetaLoadingKey=f);let g=null;n&&d?g=this.beginYeaftHistoryLoad({agentId:r,sessionId:n,mode:"recent",preserveLoaded:!1}):n&&c&&!o?.loaded?(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[i]:{...o||{},loaded:!0,loading:!1,hasMore:!!o?.hasMore,oldestSeq:Number.isFinite(o?.oldestSeq)?o.oldestSeq:null,count:o?.count||0,latestSeq:l}},this.yeaftLoadingMoreHistory=!1):n&&u&&(g=this.beginYeaftHistoryLoad({agentId:r,sessionId:n,mode:"delta",preserveLoaded:!0,latestSeq:l}));let m={type:"yeaft_load_history",agentId:r,sessionId:n,...g?{requestId:g.requestId}:{}};u?m.afterSeq=l:m.limit=d?ti:0;let b=gs();m.perfTraceId=b;let I=u?"delta":d?"recent":"metadata";return n&&(this.yeaftHistoryPerfTraceBySession={...this.yeaftHistoryPerfTraceBySession||{},[i]:b}),Ge(this,{traceId:b,phase:"history.request_send",agentId:r,sessionId:n,messageType:m.type,bytes:JSON.stringify(m).length,detail:{mode:I,limit:m.limit??null,afterSeq:m.afterSeq??null,hasCachedSessionRows:c,needSessionReady:a}}),this.sendWsMessage(m),!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?Hu:Ra,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._yeaftDebugHistoryInFlightKey=null,this._fetchYeaftDebugHistoryTimer=null},1e4)},agentIdForSession(e){return Se(this,e)},sendYeaftSessionMessage({groupId:e,text:t,mentions:s,attachments:n,quote:r}){let i=Se(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=gs();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=vt(this,e);if(f){let g={id:d,messageId:d,clientMessageId:d,stableKey:Yt(i,e,d),uiKey:Yt(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=mt(i,e);this.yeaftProcessingSessions={...this.yeaftProcessingSessions,...m?{[m]:!0}:{}}}this._turnCompletedConvs?.delete(f),this._closedAt?.[f]&&delete this._closedAt[f],this.getOrCreateExecutionStatus(f),Bs(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=Se(this,n,e);return!i||!n||!r?!1:(this.yeaftStoppingTasksById={...this.yeaftStoppingTasksById,[Ta(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)},getYeaftMessageWindowKey(e=null,t=null){let s=e||this.yeaftActiveSessionFilter||null,n=Se(this,s,t);return ke(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:Ss()}})},expandYeaftMessageWindow(e=null,t=Jn(),s=null){if(this.currentView!=="yeaft")return;let n=this.getYeaftMessageWindowKey(e,s),i=(this.yeaftMessageWindowState[n]?.visibleTurns||Ss())+Math.max(1,Number.isFinite(t)?Math.floor(t):Jn());this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[n]:{visibleTurns:i}}},isYeaftMessageCached(e,t,s=null,n=null){let r=e||this.yeaftActiveSessionFilter||null,i=s||vt(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=Se(this,r,n),o=s||vt(this,r,i);if(!o||!t)return!1;let a=(this.messagesMap[o]||[]).filter(p=>r?(p?.sessionId??p?.groupId??null)===r:!0),l=a.findIndex(p=>(p?.id||p?.messageId)===t||p?.persistedMessageId===t);if(l<0)return!1;let c=Su(a),d=c.findIndex(p=>l>=p.start&&l<p.end);if(d<0)return!1;let u=Math.max(Ss(),c.length-d),f=this.getYeaftMessageWindowKey(r,i);return this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[f]:{visibleTurns:u}},!0},getYeaftHistoryOutlineState(e=null,t=null){let s=e||this.yeaftActiveSessionFilter||null,n=Se(this,s,t),r=ke(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,error:null},o=vt(this,s,n),a=o?this.messagesMap[o]||[]:[],l=new Map((i.results||[]).map(f=>[er(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 b=f.type,I=f.turnId||f.threadId||p,y=f.speakerVpId||f.vpId||null,S=er({role:b,messageId:p,clientMessageId:f.clientMessageId,turnId:I,speakerVpId:y}),w=l.get(S),h=(typeof f.content=="string"?f.content:"").replace(/\s+/g," ").trim();l.set(S,{...w,agentId:n,sessionId:s,messageId:Number.isFinite(w?.seq)?w.messageId:p,...f.clientMessageId?{clientMessageId:f.clientMessageId}:{},turnId:I,role:b,speakerVpId:y||w?.speakerVpId||null,timestamp:f.timestamp||f.ts||w?.timestamp||null,snippet:h.length>180?`${h.slice(0,180).trimEnd()}\u2026`:h||w?.snippet||""}),w||(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=ke(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=Dv(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=er({role:i,messageId:o,clientMessageId:e.clientMessageId,turnId:l,speakerVpId:c}),p=new Map((r.results||[]).map(S=>[er(S),S])),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,b=Array.from(p.values()).sort((S,w)=>(S.seq||0)-(w.seq||0)),I=b.length>m,y=b.slice(-m);return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[n]:{...r,results:y,hasMore:r.hasMore||I,nextBeforeSeq:I&&Number.isFinite(y[0]?.seq)?y[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=ke(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=Se(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}={}){if(this.currentView!=="yeaft"&&!s)return!1;let r=s||this.yeaftActiveSessionFilter||null,i=n||Se(this,r);if(!r||!i)return!1;let o=ke(i,r),a=this.getYeaftHistoryOutlineState(r,i);if(!e&&a.loaded&&!t)return!0;if(e&&(!a.hasMore||!Number.isFinite(a.nextBeforeSeq))||a.loading)return!1;if(!Lu(this,i,"session_history_outline"))return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[o]:{...a,error:"unsupported",loading:!1}},!1;let l=`history_outline_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,c={...a,requestId:l,agentId:i,sessionId:r,loading:!0,requestAppend:e,refreshPending:!1,error:null};this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[o]:c};let d=this._yeaftHistoryOutlineTimeouts[o];d&&clearTimeout(d);let u=setTimeout(()=>{let g=this.yeaftHistoryOutlineBySession[o];if(g?.requestId!==l)return;let m={...this._yeaftHistoryOutlineTimeouts};delete m[o],this._yeaftHistoryOutlineTimeouts=m;let b=g.refreshPending===!0;this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[o]:{...g,requestId:null,loading:!1,requestAppend:!1,loaded:b?!1:g.loaded,refreshPending:!1,error:b?null:"timeout"}},b&&this.loadYeaftHistoryOutline({force:!0,targetSessionId:r,targetAgentId:i})},1e4);this._yeaftHistoryOutlineTimeouts={...this._yeaftHistoryOutlineTimeouts,[o]:u};let f=gs(),p={type:"yeaft_load_history_outline",agentId:i,sessionId:r,requestId:l,perfTraceId:f,limit:50,...e&&a.nextCursor?{cursor:a.nextCursor}:{},...e&&!a.nextCursor&&Number.isFinite(a.nextBeforeSeq)?{beforeSeq:a.nextBeforeSeq}:{}};return Ge(this,{traceId:f,phase:"history_outline.request_send",agentId:i,sessionId:r,messageType:p.type,bytes:JSON.stringify(p).length,detail:{append:e,limit:p.limit}}),this.sendWsMessage(p),!0},handleYeaftHistoryOutline(e){if(!e?.agentId||!e?.sessionId)return!1;let t=ke(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=Array.isArray(e.results)?e.results.map(d=>({...d,agentId:e.agentId,sessionId:e.sessionId})):[],o=s.requestAppend?[...s.results||[],...i]:i,a=new Map(o.filter(d=>d?.messageId).map(d=>[er(d),d])),l=Array.from(a.values()).sort((d,u)=>(d.seq||0)-(u.seq||0)),c=s.refreshPending===!0;return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[t]:{...s,requestId:null,loading:!1,requestAppend:!1,refreshPending:!1,loaded:c?!1:!e.error,results:l,hasMore:!!e.hasMore,nextBeforeSeq:Number.isFinite(e.nextBeforeSeq)?e.nextBeforeSeq:null,nextCursor:e.nextCursor&&typeof e.nextCursor=="object"?e.nextCursor:null,totalCount:Number.isFinite(e.totalCount)?e.totalCount:s.totalCount,error:c?null:e.error||null}},c&&this.loadYeaftHistoryOutline({force:!0,targetSessionId:e.sessionId,targetAgentId:e.agentId}),!0},searchYeaftHistory(e,{append:t=!1,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=Se(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(!Lu(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=gs(),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=>[$n(r),r]));for(let r of s)(r?.entryId||r?.messageId)&&n.set($n(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||Se(this,s),r=$n(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=vt(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=ke(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,resolve:d,timeout:f,promise:u}},this.sendWsMessage({type:"yeaft_load_history_window",agentId:n,sessionId:s,requestId:c,...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=vt(this,t,s);if(!t||!s||!n)return null;let r=ke(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=vt(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||Se(this,r)!==i||vt(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;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=Ws(this,t,s);if(e.data&&n){if(e.data.type!=="result")return;let a=Bc(this,t,s);if(!a)return;let l=e.turnId?Qs(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=Ht(this,a,e.conversationId);if(l){let d=Pa(e,e.turnId||"session");for(let u of["retry","retrying","thinking"])qs(this,l,`${u}:${d}`);e.data?.tool_use_result&&qs(this,l,`tool:${d}`)}let c=e.turnId?Qs(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=$u(this,d,a),f=a&&this.yeaftConversationIdsByAgent?this.yeaftConversationIdsByAgent[a]:null,p=It(this,a);p&&p.targetConversationId!==l?Wn(this,a,l):!p&&f&&f!==l&&!String(f).startsWith("yeaft-local-")&&(Ct(this,f,l,{removeSource:f!==this.yeaftConversationId}),qn(this,a,f,l)),Bo(this,a,l);let g=It(this,a,l),m=g?.sourceConversationId||f,b=!u&&m===this.yeaftConversationId;if(this.currentView==="yeaft"&&a&&m&&m!==l){let h=!b&&(!!g||String(m).startsWith("yeaft-local-"));Ct(this,m,l,{removeSource:h}),b?Wr(this,a,m,l):h&&Bn(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]=[]),this.currentView==="yeaft"&&(e.data?.type==="user"||e.data?.type==="text_delta")&&this.pruneYeaftMessageWindow(this.yeaftActiveSessionFilter&&e.sessionId||null);let I=this._currentYeaftAgentId,y=this._currentYeaftSessionId,S=this._currentYeaftVpId,w=this._currentYeaftTurnId,v=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{this.currentView==="yeaft"&&d&&(!this.yeaftActiveSessionFilter||d===this.yeaftActiveSessionFilter)&&this.pruneYeaftMessageWindow(this.yeaftActiveSessionFilter?d:null);let M=typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();if(this.handleAssistantOutputFrame(l,e.data,a),e.perfTraceId){let A=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:A-M}),Ur(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 x=e.data,E=x?.message?.id||x?.id||null,V=Ev(E),L=Array.isArray(x?.message?.content)?x.message.content:[],R=L.some(A=>A?.type==="tool_use"),P=!!x?.tool_use_result||L.some(A=>A?.type==="tool_result");if(d){let A=!P&&!_v(this,l,d)&&(x?.type==="user"||x?.type==="assistant"&&!R)?V:null,_=ke(e.agentId||null,d),j=this.yeaftSessionHistoryState[_]||{},B=Number.isFinite(j.latestSeq)?j.latestSeq:-1;A!==null&&A>B&&(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[_]:{...j,latestSeq:A}})}}finally{this._currentYeaftAgentId=I,this._currentYeaftSessionId=y,this._currentYeaftVpId=S,this._currentYeaftTurnId=w,this._currentYeaftThreadId=v}}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=Ht(this,e.agentId||null,e.conversationId);if(o){let a=Pa(i);r.type==="tool_start"?Nn(this,o,`tool:${a}`):r.type==="tool_end"?qs(this,o,`tool:${a}`):r.type==="llm_retry"?Nn(this,o,`retry:${a}`):r.type==="vp_async_task_wait_start"?Nn(this,o,`async-wait:${a}`):r.type==="vp_async_task_wait_end"&&qs(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=Ht(this,e.agentId||null,e.conversationId);if(!a||!r.requestId)break;let l=Pu(e,r,a),c=()=>{let d=this.messagesMap[a]||[],u=_u(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=Eu(this,l);return g&&xa(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=Eu(this,l);return p&&xa(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=Ht(this,e.agentId||null,e.conversationId);if(!a||!r.requestId)break;let l=this.messagesMap[a]||[],c=Pu(e,r,a),d=_u(l,c,a);if(!d){Rv(this,c,r);break}xa(d,r),this.messagesMap={...this.messagesMap,[a]:l.slice()};break}case"session_ready":{let a=r.conversationId,l=e.agentId||this.currentAgent;if(Ws(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=$u(this,p,l),m=It(this,l);m&&m.targetConversationId!==a?Wn(this,l,a):!m&&c&&c!==a&&!String(c).startsWith("yeaft-local-")&&qn(this,l,c,a),Bo(this,l,a);let I=It(this,l,a)?.sourceConversationId||f,y=!g&&I===this.yeaftConversationId;if(I&&I!==a){let M=!y;Ct(this,I,a,{removeSource:M}),y?Wr(this,l,I,a):M&&Bn(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 S=Array.isArray(r.tasks)?r.tasks:[],w={};for(let[M,x]of Object.entries(this.yeaftActiveTasksBySession||{})){let E=Object.fromEntries(Object.entries(x||{}).filter(([,L])=>L?.id&&L.status==="running"&&L.agentId&&L.agentId!==l)),V=Ma(E);Object.keys(V).length>0&&(w[M]=V)}for(let M of S){if(!M?.id||!M.sessionId||M.status!=="running")continue;let x=ke(l,M.sessionId);w[x]={...w[x]||{},[M.id]:{...M,agentId:l}}}this.yeaftActiveTasksBySession=w,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 v=e.agentId||this.currentAgent||null,h=v||"__current__";this._yeaftVpSubscribedAgentKey!==h&&(this._yeaftVpSubscribedAgentKey=h,this.sendWsMessage(v?{type:"yeaft_vp_subscribe",agentId:v}:{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,toolOutput:r.toolOutput==null?null:String(r.toolOutput)}];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,systemPrompt:r.systemPrompt,messages:r.messages,response:r.response,toolCalls:r.toolCalls,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,rawRequest:r.rawRequest||null,rawResponse:r.rawResponse||null,sessionId:e.sessionId||null,vpId:e.vpId||r.vpId||null}),this.yeaftDebugLoops.length>Vu){let a=au({loops:this.yeaftDebugLoops,turnsById:this.yeaftDebugTurnsById,turnOrder:this.yeaftDebugTurnOrder,maxLoops:Math.max(Vu,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=Qs(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=Ht(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||Se(this,a.sessionId),c=ke(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=Ma(f);if(Object.keys(p).length>0?u[c]=p:delete u[c],this.yeaftActiveTasksBySession=u,a.status!=="running"){let{[Ta(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||Se(this,l);if(a&&l&&r.success===!1){let{[Ta(c,l,a)]:u,...f}=this.yeaftStoppingTasksById||{};this.yeaftStoppingTasksById=f}let d=r.task;if(d?.id&&d.sessionId){let u=ke(c,d.sessionId),f={...this.yeaftActiveTasksBySession},p={...f[u]||{}};d.status==="running"?p[d.id]={...d,agentId:c}:delete p[d.id];let g=Ma(p);Object.keys(g).length>0?f[u]=g:delete f[u],this.yeaftActiveTasksBySession=f}break}case"sub_agent_event":{let a=Ht(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 b=typeof c.content=="string"?c.content.trim():"";b&&(m.text=m.text?`${m.text}
|
|
8
|
+
`))}function Zr(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||ka.has(l?.status)||ka.has(l?.turnEndReason)||ka.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 ka,Jr=F(()=>{ka=new Set(["aborted","errored","error","cancelled","canceled"])});function Sa(e){return e?.type==="user"&&typeof e.content=="string"&&e.content.trim()}function Ia(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 Ca(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 Su(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(Sa(i)||i.type==="system"||i.type==="error"){n(r),s={start:r,kind:i.type};continue}if(!Ia(i)){s||(s={start:r,kind:"other"});continue}(!s||s.kind==="assistant"&&Ca(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 Iu(e,t){return t?e&&(e.sessionId??e.groupId)===t:!0}function Aa(e=[],t=null,s=5){let n=Math.max(1,Number.isFinite(s)?Math.floor(s):5),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(!Iu(c,t))continue;let d=r.length;if(r.push(c),Sa(c)||c.type==="system"||c.type==="error"){a(d),o={start:d,kind:c.type};continue}if(!Ia(c)){o||(o={start:d,kind:"other"});continue}(!o||o.kind==="assistant"&&Ca(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 Cu(e=[],t=null,s=5){let n=Math.max(1,s||5),r=0,i=null,o=()=>i?(i=null,r+=1,r>n):!1;for(let a of e)if(Iu(a,t)){if(Sa(a)||a.type==="system"||a.type==="error"){if(o())return!0;i={kind:a.type};continue}if(!Ia(a)){i||(i={kind:"other"});continue}if(!i||i.kind==="assistant"&&Ca(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 Ss(){return 5}function Jn(){return 20}var Au=F(()=>{});function kv(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=Zt();for(let r of n?.sessionList||[])r?.id===t&&r?.agentId&&s.add(r.agentId)}return s}function Fu(e,t){let s=kv(e,t);return s.size===1?s.values().next().value:null}function ni(e,t,s){return!!s&&Fu(e,t)===s}function tt(e,t,s){return!e||e.sessionId!==t?!1:s?e.agentId===s:!e.agentId}function xu(e,t,s=null){if(!t)return!1;let n=s||Se(e,t),r=mt(n,t);if(r&&e.yeaftProcessingSessions?.[r]||e.yeaftProcessingSessions?.[t]&&ni(e,t,n))return!0;for(let i of Object.values(e.activeVpTurns||{}))if(tt(i,t,n))return!0;for(let i of Object.values(e.vpStatuses||{}))if(tt(i,t,n)&&tr.has(i?.state))return!0;return!1}function Sv(e,t,s,n=null){let r={...e.yeaftProcessingSessions||{}};if(t){let i=ca(t);if(r=Object.fromEntries(Object.entries(r).filter(([o])=>n?o!==mt(t,n):!o.startsWith(i))),n)ni(e,n,t)&&delete r[n];else for(let o of Object.keys(r))ni(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||!tr.has(i?.state))continue;let a=mt(t,o)||o;r[a]=!0}return r}function Qs(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 Tu(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=ca(t);e.yeaftProcessingSessions=Object.fromEntries(Object.entries(e.yeaftProcessingSessions||{}).filter(([n])=>!n.startsWith(s)))}function Vt(e,t){return`${e||""}:${t||""}`}function xv(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 Tv(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 Mv(e={}){let t=Qe(e.quote);return{agentId:e.agentId||"",workItemId:e.workItemId||"",target:xv(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 Pu(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 Ru(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 Pv(e,t){return _a.every(s=>!t[s]||e[s]===t[s])}function Nu(e,t){return _a.every(s=>!e[s]||!t[s]||e[s]===t[s])}function _u(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=>Pv(Ru(o,s),t));if(r.length===1)return r[0];let i=n.filter(o=>Nu(Ru(o,s),t));return i.length===1?i[0]:null}function qu(e){return _a.map(t=>e[t]||"").join("\0")}function Rv(e,t,s){let n=qu(t),r={...e._yeaftAskTerminalEvents||{},[n]:{identity:t,event:s,receivedAt:Date.now()}},i=Object.keys(r);if(i.length>Mu){i.sort((o,a)=>r[o].receivedAt-r[a].receivedAt);for(let o of i.slice(0,i.length-Mu))delete r[o]}e._yeaftAskTerminalEvents=r}function Eu(e,t){let s=e._yeaftAskTerminalEvents||{},n=qu(t),r=s[n]?n:null;if(!r){let l=Object.entries(s).filter(([,c])=>Nu(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 _v(e,t,s){return(e.messagesMap?.[t]||[]).some(n=>n?.type==="tool-use"&&n.sessionId===s&&n.hasResult===!1)}function xa(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 Ev(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 Dv(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 er(e){return $n(e)}function Ta(e,t,s){return`${mt(e,t)}::${s||""}`}function Ma(e){return Object.fromEntries(Object.entries(e||{}).filter(([,t])=>t?.status==="running"))}function Zt(){try{return typeof window>"u"?null:window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore()||null}catch{return null}}function Du(e){let t=Zt();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 Se(e,t,s=null){if(s)return s;if(t){let n=Zt(),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 Lv(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 Lu(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"&&Lv(n?.version||r?.version,"1.0.166")}function Is(e,{fallbackDefault:t=!1}={}){if(e?.yeaftActiveSessionFilter)return e.yeaftActiveSessionFilter;let s=Zt();return s?.activeSessionId?s.activeSessionId:t?"grp_default":null}function si(e){let t=e.yeaftDebugSessionFilter;if(t==="__all__")return null;if(t)return t;let s=Is(e);return s||(Zt()?.sessions?.grp_default?"grp_default":null)}function Pa(e,t="session"){return[e?.vpId||e?.ownerVpId||"vp",e?.threadId||"thread",e?.turnId||t].join(":")}function Ht(e,t,s=null){return s||t&&e?.yeaftConversationIdsByAgent?.[t]||e?.yeaftConversationId||null}function vt(e,t=null,s=null){let n=t||e?.yeaftActiveSessionFilter||null,r=s||Se(e,n);return(r&&e?.yeaftConversationIdsByAgent?e.yeaftConversationIdsByAgent[r]:null)||e?.yeaftConversationId||null}function $u(e,t,s){if(e?.currentView!=="yeaft")return!1;let n=e?.yeaftActiveSessionFilter||null;if(n&&t!==n)return!1;let r=Se(e,n);return!r||!s||r===s}var wv,Ve,ei,ti,Iv,tr,Cv,Av,Mu,_a,Vu,Ra,Hu,Ou,Cs,ri=F(()=>{gt();xo();$t();Ro();Fn();gd();Ad();Qd();us();Gt();su();Wo();qr();iu();ou();lu();Mo();wa();Ko();Xt();Jr();Fs();Xo();Qn();Au();sa();na();({defineStore:wv}=Pinia),Ve=Object.freeze([]),ei=(e,t,s)=>`${e||""}::${t||""}::${s}`;ti=5,Iv=15e3,tr=new Set(["typing","thinking","retrying","streaming","tool"]),Cv=Object.freeze(["model","availableModels","refreshedAt","catalogRefreshedAt","catalogEpoch","catalogRevision","catalogDigest","refreshStartedAt","refreshReason","refreshError","refreshing"]),Av=8,Mu=64;_a=Object.freeze(["conversationId","agentId","requestId","toolCallId","sessionId","vpId","turnId","threadId"]);Vu=1e3,Ra=1,Hu=5,Ou=200,Cs=wv("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:{},sessionHistorySyncRefreshToken:0,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:{},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")||"[]"),...Jd(),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:Ra,yeaftDebugHistoryHasMore:!1,yeaftDebugSearch:"",yeaftDebugSessionFilter:null,yeaftDreamLatest:{},yeaftDreamSnapshots:{},yeaftDreamPromptLoads:{},yeaftDreamEvents:{},yeaftReflectionCards:{},yeaftSubAgentCards:{},yeaftSidebarV2Enabled:!0,yeaftActiveSessionFilter:null,_currentYeaftSessionId:null,_currentYeaftVpId:null,_currentYeaftTurnId:null,_currentYeaftThreadId:null,_yeaftAskTerminalEvents:{},activeVpTurns:{},vpStatuses:{},stoppingVpTurnIds:{},yeaftVpTyping:{},_vpCrudPending:null}),getters:{currentConversation:e=>e.activeConversations[0]||null,activeConversationId:e=>ma(e),activeSessionRoute(e){if(e.currentView==="yeaft"){let n=Is(e);return n?{runtimeProvider:"yeaft",agentId:Se(e,n),sessionId:n}:null}let t=ma(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=ke(Se(e,n),n),i=e.yeaftMessageWindowState[r]?.visibleTurns||Ss();return Aa(s,e.yeaftActiveSessionFilter||null,i)}return s},yeaftAllMessages:e=>{let t=vt(e);return t&&e.messagesMap[t]||Ve},yeaftVisibleMessages(e){let t=vt(e),s=t&&e.messagesMap[t]||Ve,n=e.yeaftActiveSessionFilter||null,r=ke(Se(e,n),n),i=e.yeaftMessageWindowState[r]?.visibleTurns||Ss();return Aa(s,e.yeaftActiveSessionFilter||null,i)},hasHiddenYeaftMessages(e){if(e.currentView!=="yeaft")return!1;let t=vt(e),s=t&&e.messagesMap[t]||Ve,n=e.yeaftActiveSessionFilter||null,r=ke(Se(e,n),n),i=e.yeaftMessageWindowState[r]?.visibleTurns||Ss();return Cu(s,e.yeaftActiveSessionFilter||null,i)},activeYeaftHistoryState(e){return Qo(e)},yeaftInitialHistoryLoading(e){let t=Qo(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=si(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamLatest?.[s]||null},yeaftDreamSnapshotForActiveSession(e){let t=si(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamSnapshots?.[s]||null},yeaftDreamPromptLoadForActiveSession(e){let t=si(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamPromptLoads?.[s]||null},yeaftDreamEventsForActiveSession(e){let t=si(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,b=0,I=0;for(let w of p){let v=w&&w.usage;v&&Number.isFinite(v.totalTokens)?b+=v.totalTokens:v&&(b+=(v.totalInputTokens||(v.inputTokens||0)+(v.cacheReadTokens||0)+(v.cacheWriteTokens||0))+(v.outputTokens||0)),w&&Number.isFinite(w.latencyMs)&&(I+=w.latencyMs)}let y=!f.closedAt,S={...f,loopCount:y||!f.loopCount?m:f.loopCount,totalTokens:y||!f.totalTokens?b:f.totalTokens,totalMs:y||!f.totalMs?I:f.totalMs,loops:p,reflections:g};c.push(S)}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=Is(e);return t?xu(e,t,Se(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"?Zt()?.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)=>xu(e,t,s),isSessionHistorySyncing:e=>t=>{let s=t?.sessionId||null;return s?t.runtimeProvider==="yeaft"?!!e.yeaftSessionHistoryState?.[ke(t.agentId||null,s)]?.loading:!!e.chatHistoryRequests?.[zt(s)]?.loading:!1},isYeaftSessionUnread:e=>(t,s=null)=>{if(!t)return!1;let n=Se(e,t,s);return n?!!e.yeaftUnreadSessionKeys?.[Hr(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&&fa("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),tu(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||Se(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=Jl(()=>{Mn(this._workCenterBrowserFence)||this.clearWorkCenterBrowserState()}));let e=$r();if(!e)return this._workCenterBrowserFence=null,this.workCenterComposerDrafts={},this.workCenterMessageOutbox={},!1;if(!Mn(this._workCenterBrowserFence)){let t=Zl(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 Vt(e,t)},saveWorkCenterComposerDraft(e,t,s={}){let n=Vt(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:Tv(s.target),error:String(s.error||"")}};return Ao(i,this._workCenterBrowserFence)?(this.workCenterComposerDrafts=i,!0):!1},loadWorkCenterComposerDraft(e,t){return this.workCenterComposerDrafts?.[Vt(e,t)]||null},removeWorkCenterComposerDraft(e,t){let s=Vt(e,t),n={...this.workCenterComposerDrafts||{}};return delete n[s],Ao(n,this._workCenterBrowserFence)?(this.workCenterComposerDrafts=n,!0):!1},prepareWorkCenterMessageEnvelope(e={}){let t=Mv(e),s=Vt(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 Pn(i,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=i,r):null},loadWorkCenterMessageEnvelope(e,t){return this.workCenterMessageOutbox?.[Vt(e,t)]||null},replaceWorkCenterMessageEnvelopeAttachments(e,t,s=[]){let n=Vt(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 Pn(o,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=o,i):null},discardWorkCenterMessageEnvelope(e,t){let s=Vt(e,t),n={...this.workCenterMessageOutbox||{}};return delete n[s],Pn(n,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=n,!0):!1},confirmWorkCenterMessageEnvelope(e,t,s){let n=Vt(e,t),r=this.workCenterMessageOutbox?.[n];if(!r||r.clientMessageId!==s)return!1;let i={...this.workCenterMessageOutbox||{}};return delete i[n],Pn(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=Qr(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(b=>b.id===g.id);m<0?f.push(g):f[m]=Qr([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&&hu(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=rt(n),i=Ys(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=rt(s),a=Ys(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)||rt(u?.generation)!==o||Number(this._workCenterActionMessageGenerationByKey[a]||0)!==l)return u;let f=this.workCenterActionMessages[a]?.messages||[],p=Zn(f,u?.messages||[]),g=this.workCenterActionMessages[a],m=g?.nextCursor,b=n==null?null:Number(n),I=m==null?null:Number(m),y=!g||b==null||I!=null&&b===I;return this.workCenterActionMessages={...this.workCenterActionMessages,[a]:{generation:o,messages:p,nextCursor:y?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=rt(s),o=va(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)&&rt(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=rt(s),c=`${va(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)&&rt(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&&!uu(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=Qr(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(I=>I?.id===t.actionId)?{...s,eventActionId:t.actionId}:s,f=ba(d,u),p=Number(s.coordinatorRevision),g=Number(d.coordinatorRevision)||0,m=Number.isInteger(p)&&p>g,b=pu(d,u);this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[e]:fu(d,s)},b&&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),b=this.workCenterDetailByAgent[e],I=b?.actions?.find(M=>M?.id===r),y=m?.actions?.find(M=>M?.id===r),S=o==null||rt(I?.generation)===o,w=o==null||rt(y?.generation)>=o,v=l==null||Number(m?.coordinatorRevision)===l,h=l!=null||S&&w&&(t.currentActionId==null?m?.currentActionId==null:b?.currentActionId===t.currentActionId&&m?.currentActionId===t.currentActionId);b?.id===t.id&&v&&h&&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,b=i>0?!!a&&(a!==o||i>r):r===0&&c>l,I=i>0?!!t.catalogDigest&&!!n.catalogDigest&&t.catalogDigest===n.catalogDigest:t.catalogDigest===n.catalogDigest,y=u&&!p&&(b||m&&I),w=y||s&&r===0&&l===0&&!u&&d,v={...t};if(!w)for(let M of Cv)delete v[M];let h={...n,...v};if(w){if(y&&o&&a&&o!==a){let M=[...f.filter(x=>x!==o),o].slice(-Av);this._yeaftRetiredCatalogEpochsByAgent={...this._yeaftRetiredCatalogEpochsByAgent||{},[e]:M}}h.availableModels=t.availableModels,h.catalogRefreshedAt=y?c:null,h.catalogEpoch=y&&a||null,h.catalogRevision=y&&i||null,h.catalogDigest=y&&t.catalogDigest||null}this.yeaftStatusByAgent={...this.yeaftStatusByAgent,[e]:h},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 Se(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))},Iv),e):(this.yeaftSessionHydrateRequestId=null,this.yeaftSessionHydrateSlices=[],this.yeaftSessionHydrateError="session_inventory_send_failed",null)},beginYeaftHistoryLoad(e){let t=jc(this,e);if(!t)return null;this.sessionHistorySyncRefreshToken+=1;let{agentId:s,sessionId:n}=e||{};return setTimeout(()=>{Go(this,{agentId:s,sessionId:n,requestId:t.requestId,error:"history_load_timeout"})&&(this.sessionHistorySyncRefreshToken+=1)},Wc),t},finishYeaftHistoryLoad(e,t={},s="chunk"){let n=Uc(this,e,t,s);return n&&s!=="completion"&&(this.sessionHistorySyncRefreshToken+=1),n},isCurrentYeaftHistoryResponse(e){return Yo(this,e)},syncActiveYeaftHistoryLoad(){return jn(this)},enterYeaft(e=null,{deferBootstrap:t=!1}={}){let s=this.currentAgent;ga(this);let n=Is(this),r=!e&&n?Se(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]=[]),eu(this),this.currentView="yeaft",fa("yeaft"),this.hasMoreMessages=!1,this.loadingMoreMessages=!1,this.yeaftHasMoreHistory=!1,this.yeaftLoadingMoreHistory=!1,this.yeaftOldestLoadedSeq=null,this._yeaftReconnectCatchUpPending=!1,this.loadOpenedYeaftSessionsForConnectedAgents(null,{force:!0}),t||this.requestYeaftSessionBootstrap({forceSessionReady:!0,catchUpHistory:!0,forceHistoryReplay:!0})},loadOpenedYeaftSessionsForConnectedAgents(e=null,{force:t=!1}={}){let s=Array.isArray(e)?e.filter(Boolean):Array.isArray(this.agents)?this.agents.filter(i=>i&&i.online&&i.id).map(i=>i.id):[],n=[...new Set(s)];(!this._yeaftOpenedSessionsLoadedAgents||typeof this._yeaftOpenedSessionsLoadedAgents!="object")&&(this._yeaftOpenedSessionsLoadedAgents={});let r=[];for(let i of n)!t&&this._yeaftOpenedSessionsLoadedAgents[i]||(this._yeaftOpenedSessionsLoadedAgents[i]=Date.now(),r.push(i),this.sessionCrudRequest("list",{},{agentId:i}).catch(o=>{delete this._yeaftOpenedSessionsLoadedAgents[i]}));return r},requestYeaftSessionBootstrap({forceSessionReady:e=!1,catchUpHistory:t=!1,forceHistoryReplay:s=!1}={}){if(!this.currentAgent)return;let n=Is(this),r=n?Se(this,n):this.currentAgent,i=ke(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(y=>y&&(y.sessionId??y.groupId??null)===n),d=!!n&&Oo({sessionState:o,hasCachedSessionRows:c,force:!!s}),u=!!n&&!d&&Lc(o,t);if(!a&&!d&&!u)return!1;let f=`${r}:${n||"__none__"}`,p=a&&!d&&!u;if(p&&this.yeaftBootstrapMetaLoadingKey===f)return!1;p&&(this.yeaftBootstrapMetaLoadingKey=f);let g=null;n&&d?g=this.beginYeaftHistoryLoad({agentId:r,sessionId:n,mode:"recent",preserveLoaded:!1}):n&&c&&!o?.loaded?(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[i]:{...o||{},loaded:!0,loading:!1,hasMore:!!o?.hasMore,oldestSeq:Number.isFinite(o?.oldestSeq)?o.oldestSeq:null,count:o?.count||0,latestSeq:l}},this.yeaftLoadingMoreHistory=!1):n&&u&&(g=this.beginYeaftHistoryLoad({agentId:r,sessionId:n,mode:"delta",preserveLoaded:!0,latestSeq:l}));let m={type:"yeaft_load_history",agentId:r,sessionId:n,...g?{requestId:g.requestId}:{}};u?m.afterSeq=l:m.limit=d?ti:0;let b=gs();m.perfTraceId=b;let I=u?"delta":d?"recent":"metadata";return n&&(this.yeaftHistoryPerfTraceBySession={...this.yeaftHistoryPerfTraceBySession||{},[i]:b}),Ge(this,{traceId:b,phase:"history.request_send",agentId:r,sessionId:n,messageType:m.type,bytes:JSON.stringify(m).length,detail:{mode:I,limit:m.limit??null,afterSeq:m.afterSeq??null,hasCachedSessionRows:c,needSessionReady:a}}),this.sendWsMessage(m),!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?Hu:Ra,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._yeaftDebugHistoryInFlightKey=null,this._fetchYeaftDebugHistoryTimer=null},1e4)},agentIdForSession(e){return Se(this,e)},sendYeaftSessionMessage({groupId:e,text:t,mentions:s,attachments:n,quote:r}){let i=Se(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=gs();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=vt(this,e);if(f){let g={id:d,messageId:d,clientMessageId:d,stableKey:Yt(i,e,d),uiKey:Yt(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=mt(i,e);this.yeaftProcessingSessions={...this.yeaftProcessingSessions,...m?{[m]:!0}:{}}}this._turnCompletedConvs?.delete(f),this._closedAt?.[f]&&delete this._closedAt[f],this.getOrCreateExecutionStatus(f),Bs(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=Se(this,n,e);return!i||!n||!r?!1:(this.yeaftStoppingTasksById={...this.yeaftStoppingTasksById,[Ta(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)},getYeaftMessageWindowKey(e=null,t=null){let s=e||this.yeaftActiveSessionFilter||null,n=Se(this,s,t);return ke(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:Ss()}})},expandYeaftMessageWindow(e=null,t=Jn(),s=null){if(this.currentView!=="yeaft")return;let n=this.getYeaftMessageWindowKey(e,s),i=(this.yeaftMessageWindowState[n]?.visibleTurns||Ss())+Math.max(1,Number.isFinite(t)?Math.floor(t):Jn());this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[n]:{visibleTurns:i}}},isYeaftMessageCached(e,t,s=null,n=null){let r=e||this.yeaftActiveSessionFilter||null,i=s||vt(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=Se(this,r,n),o=s||vt(this,r,i);if(!o||!t)return!1;let a=(this.messagesMap[o]||[]).filter(p=>r?(p?.sessionId??p?.groupId??null)===r:!0),l=a.findIndex(p=>(p?.id||p?.messageId)===t||p?.persistedMessageId===t);if(l<0)return!1;let c=Su(a),d=c.findIndex(p=>l>=p.start&&l<p.end);if(d<0)return!1;let u=Math.max(Ss(),c.length-d),f=this.getYeaftMessageWindowKey(r,i);return this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[f]:{visibleTurns:u}},!0},getYeaftHistoryOutlineState(e=null,t=null){let s=e||this.yeaftActiveSessionFilter||null,n=Se(this,s,t),r=ke(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,error:null},o=vt(this,s,n),a=o?this.messagesMap[o]||[]:[],l=new Map((i.results||[]).map(f=>[er(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 b=f.type,I=f.turnId||f.threadId||p,y=f.speakerVpId||f.vpId||null,S=er({role:b,messageId:p,clientMessageId:f.clientMessageId,turnId:I,speakerVpId:y}),w=l.get(S),h=(typeof f.content=="string"?f.content:"").replace(/\s+/g," ").trim();l.set(S,{...w,agentId:n,sessionId:s,messageId:Number.isFinite(w?.seq)?w.messageId:p,...f.clientMessageId?{clientMessageId:f.clientMessageId}:{},turnId:I,role:b,speakerVpId:y||w?.speakerVpId||null,timestamp:f.timestamp||f.ts||w?.timestamp||null,snippet:h.length>180?`${h.slice(0,180).trimEnd()}\u2026`:h||w?.snippet||""}),w||(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=ke(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=Dv(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=er({role:i,messageId:o,clientMessageId:e.clientMessageId,turnId:l,speakerVpId:c}),p=new Map((r.results||[]).map(S=>[er(S),S])),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,b=Array.from(p.values()).sort((S,w)=>(S.seq||0)-(w.seq||0)),I=b.length>m,y=b.slice(-m);return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[n]:{...r,results:y,hasMore:r.hasMore||I,nextBeforeSeq:I&&Number.isFinite(y[0]?.seq)?y[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=ke(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=Se(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}={}){if(this.currentView!=="yeaft"&&!s)return!1;let r=s||this.yeaftActiveSessionFilter||null,i=n||Se(this,r);if(!r||!i)return!1;let o=ke(i,r),a=this.getYeaftHistoryOutlineState(r,i);if(!e&&a.loaded&&!t)return!0;if(e&&(!a.hasMore||!Number.isFinite(a.nextBeforeSeq))||a.loading)return!1;if(!Lu(this,i,"session_history_outline"))return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[o]:{...a,error:"unsupported",loading:!1}},!1;let l=`history_outline_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,c={...a,requestId:l,agentId:i,sessionId:r,loading:!0,requestAppend:e,refreshPending:!1,error:null};this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[o]:c};let d=this._yeaftHistoryOutlineTimeouts[o];d&&clearTimeout(d);let u=setTimeout(()=>{let g=this.yeaftHistoryOutlineBySession[o];if(g?.requestId!==l)return;let m={...this._yeaftHistoryOutlineTimeouts};delete m[o],this._yeaftHistoryOutlineTimeouts=m;let b=g.refreshPending===!0;this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[o]:{...g,requestId:null,loading:!1,requestAppend:!1,loaded:b?!1:g.loaded,refreshPending:!1,error:b?null:"timeout"}},b&&this.loadYeaftHistoryOutline({force:!0,targetSessionId:r,targetAgentId:i})},1e4);this._yeaftHistoryOutlineTimeouts={...this._yeaftHistoryOutlineTimeouts,[o]:u};let f=gs(),p={type:"yeaft_load_history_outline",agentId:i,sessionId:r,requestId:l,perfTraceId:f,limit:50,...e&&a.nextCursor?{cursor:a.nextCursor}:{},...e&&!a.nextCursor&&Number.isFinite(a.nextBeforeSeq)?{beforeSeq:a.nextBeforeSeq}:{}};return Ge(this,{traceId:f,phase:"history_outline.request_send",agentId:i,sessionId:r,messageType:p.type,bytes:JSON.stringify(p).length,detail:{append:e,limit:p.limit}}),this.sendWsMessage(p),!0},handleYeaftHistoryOutline(e){if(!e?.agentId||!e?.sessionId)return!1;let t=ke(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=Array.isArray(e.results)?e.results.map(d=>({...d,agentId:e.agentId,sessionId:e.sessionId})):[],o=s.requestAppend?[...s.results||[],...i]:i,a=new Map(o.filter(d=>d?.messageId).map(d=>[er(d),d])),l=Array.from(a.values()).sort((d,u)=>(d.seq||0)-(u.seq||0)),c=s.refreshPending===!0;return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[t]:{...s,requestId:null,loading:!1,requestAppend:!1,refreshPending:!1,loaded:c?!1:!e.error,results:l,hasMore:!!e.hasMore,nextBeforeSeq:Number.isFinite(e.nextBeforeSeq)?e.nextBeforeSeq:null,nextCursor:e.nextCursor&&typeof e.nextCursor=="object"?e.nextCursor:null,totalCount:Number.isFinite(e.totalCount)?e.totalCount:s.totalCount,error:c?null:e.error||null}},c&&this.loadYeaftHistoryOutline({force:!0,targetSessionId:e.sessionId,targetAgentId:e.agentId}),!0},searchYeaftHistory(e,{append:t=!1,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=Se(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(!Lu(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=gs(),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=>[$n(r),r]));for(let r of s)(r?.entryId||r?.messageId)&&n.set($n(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||Se(this,s),r=$n(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=vt(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=ke(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,resolve:d,timeout:f,promise:u}},this.sendWsMessage({type:"yeaft_load_history_window",agentId:n,sessionId:s,requestId:c,...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=vt(this,t,s);if(!t||!s||!n)return null;let r=ke(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=vt(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||Se(this,r)!==i||vt(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;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=Ws(this,t,s);if(e.data&&n){if(e.data.type!=="result")return;let a=Bc(this,t,s);if(!a)return;let l=e.turnId?Qs(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=Ht(this,a,e.conversationId);if(l){let d=Pa(e,e.turnId||"session");for(let u of["retry","retrying","thinking"])qs(this,l,`${u}:${d}`);e.data?.tool_use_result&&qs(this,l,`tool:${d}`)}let c=e.turnId?Qs(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=$u(this,d,a),f=a&&this.yeaftConversationIdsByAgent?this.yeaftConversationIdsByAgent[a]:null,p=It(this,a);p&&p.targetConversationId!==l?Wn(this,a,l):!p&&f&&f!==l&&!String(f).startsWith("yeaft-local-")&&(Ct(this,f,l,{removeSource:f!==this.yeaftConversationId}),qn(this,a,f,l)),Bo(this,a,l);let g=It(this,a,l),m=g?.sourceConversationId||f,b=!u&&m===this.yeaftConversationId;if(this.currentView==="yeaft"&&a&&m&&m!==l){let h=!b&&(!!g||String(m).startsWith("yeaft-local-"));Ct(this,m,l,{removeSource:h}),b?Wr(this,a,m,l):h&&Bn(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]=[]),this.currentView==="yeaft"&&(e.data?.type==="user"||e.data?.type==="text_delta")&&this.pruneYeaftMessageWindow(this.yeaftActiveSessionFilter&&e.sessionId||null);let I=this._currentYeaftAgentId,y=this._currentYeaftSessionId,S=this._currentYeaftVpId,w=this._currentYeaftTurnId,v=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{this.currentView==="yeaft"&&d&&(!this.yeaftActiveSessionFilter||d===this.yeaftActiveSessionFilter)&&this.pruneYeaftMessageWindow(this.yeaftActiveSessionFilter?d:null);let M=typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();if(this.handleAssistantOutputFrame(l,e.data,a),e.perfTraceId){let A=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:A-M}),Ur(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 x=e.data,E=x?.message?.id||x?.id||null,V=Ev(E),L=Array.isArray(x?.message?.content)?x.message.content:[],R=L.some(A=>A?.type==="tool_use"),P=!!x?.tool_use_result||L.some(A=>A?.type==="tool_result");if(d){let A=!P&&!_v(this,l,d)&&(x?.type==="user"||x?.type==="assistant"&&!R)?V:null,_=ke(e.agentId||null,d),j=this.yeaftSessionHistoryState[_]||{},B=Number.isFinite(j.latestSeq)?j.latestSeq:-1;A!==null&&A>B&&(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[_]:{...j,latestSeq:A}})}}finally{this._currentYeaftAgentId=I,this._currentYeaftSessionId=y,this._currentYeaftVpId=S,this._currentYeaftTurnId=w,this._currentYeaftThreadId=v}}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=Ht(this,e.agentId||null,e.conversationId);if(o){let a=Pa(i);r.type==="tool_start"?Nn(this,o,`tool:${a}`):r.type==="tool_end"?qs(this,o,`tool:${a}`):r.type==="llm_retry"?Nn(this,o,`retry:${a}`):r.type==="vp_async_task_wait_start"?Nn(this,o,`async-wait:${a}`):r.type==="vp_async_task_wait_end"&&qs(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=Ht(this,e.agentId||null,e.conversationId);if(!a||!r.requestId)break;let l=Pu(e,r,a),c=()=>{let d=this.messagesMap[a]||[],u=_u(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=Eu(this,l);return g&&xa(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=Eu(this,l);return p&&xa(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=Ht(this,e.agentId||null,e.conversationId);if(!a||!r.requestId)break;let l=this.messagesMap[a]||[],c=Pu(e,r,a),d=_u(l,c,a);if(!d){Rv(this,c,r);break}xa(d,r),this.messagesMap={...this.messagesMap,[a]:l.slice()};break}case"session_ready":{let a=r.conversationId,l=e.agentId||this.currentAgent;if(Ws(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=$u(this,p,l),m=It(this,l);m&&m.targetConversationId!==a?Wn(this,l,a):!m&&c&&c!==a&&!String(c).startsWith("yeaft-local-")&&qn(this,l,c,a),Bo(this,l,a);let I=It(this,l,a)?.sourceConversationId||f,y=!g&&I===this.yeaftConversationId;if(I&&I!==a){let M=!y;Ct(this,I,a,{removeSource:M}),y?Wr(this,l,I,a):M&&Bn(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 S=Array.isArray(r.tasks)?r.tasks:[],w={};for(let[M,x]of Object.entries(this.yeaftActiveTasksBySession||{})){let E=Object.fromEntries(Object.entries(x||{}).filter(([,L])=>L?.id&&L.status==="running"&&L.agentId&&L.agentId!==l)),V=Ma(E);Object.keys(V).length>0&&(w[M]=V)}for(let M of S){if(!M?.id||!M.sessionId||M.status!=="running")continue;let x=ke(l,M.sessionId);w[x]={...w[x]||{},[M.id]:{...M,agentId:l}}}this.yeaftActiveTasksBySession=w,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 v=e.agentId||this.currentAgent||null,h=v||"__current__";this._yeaftVpSubscribedAgentKey!==h&&(this._yeaftVpSubscribedAgentKey=h,this.sendWsMessage(v?{type:"yeaft_vp_subscribe",agentId:v}:{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,toolOutput:r.toolOutput==null?null:String(r.toolOutput)}];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,systemPrompt:r.systemPrompt,messages:r.messages,response:r.response,toolCalls:r.toolCalls,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,rawRequest:r.rawRequest||null,rawResponse:r.rawResponse||null,sessionId:e.sessionId||null,vpId:e.vpId||r.vpId||null}),this.yeaftDebugLoops.length>Vu){let a=au({loops:this.yeaftDebugLoops,turnsById:this.yeaftDebugTurnsById,turnOrder:this.yeaftDebugTurnOrder,maxLoops:Math.max(Vu,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=Qs(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=Ht(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||Se(this,a.sessionId),c=ke(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=Ma(f);if(Object.keys(p).length>0?u[c]=p:delete u[c],this.yeaftActiveTasksBySession=u,a.status!=="running"){let{[Ta(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||Se(this,l);if(a&&l&&r.success===!1){let{[Ta(c,l,a)]:u,...f}=this.yeaftStoppingTasksById||{};this.yeaftStoppingTasksById=f}let d=r.task;if(d?.id&&d.sessionId){let u=ke(c,d.sessionId),f={...this.yeaftActiveTasksBySession},p={...f[u]||{}};d.status==="running"?p[d.id]={...d,agentId:c}:delete p[d.id];let g=Ma(p);Object.keys(g).length>0?f[u]=g:delete f[u],this.yeaftActiveTasksBySession=f}break}case"sub_agent_event":{let a=Ht(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 b=typeof c.content=="string"?c.content.trim():"";b&&(m.text=m.text?`${m.text}
|
|
9
9
|
|
|
10
|
-
${b}`:b),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=ke(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,b=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},I=a.requestId?this.finishYeaftHistoryLoad(a,b,"completion"):null;I||(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[d]:b});let y=ke(l?this.currentAgent:null,this.yeaftActiveSessionFilter??null);if(d===y)f==="recent"&&(this.yeaftHasMoreHistory=b.hasMore,this.yeaftOldestLoadedSeq=b.serverOldestFetchedSeq),this.yeaftLoadingMoreHistory=!!I?.loading;else if(this.yeaftLoadingMoreHistory){let S=this.yeaftSessionHistoryState[y]||null;this.yeaftLoadingMoreHistory=!!S?.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||Se(this,u,e.agentId||null),g=ke(p,u),m=this.yeaftSessionHistoryState[g]||null;this.setActiveSessionFilter(u,{agentId:p,force:d!==p||Dc(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=this._sessionCrudPending&&this._sessionCrudPending.get(r.requestId);if(l){this._sessionCrudPending.delete(r.requestId);let c=r.session||r.group||null,d=c&&e.agentId&&!c.agentId?{...c,agentId:e.agentId}:c,u=r.sessionId||null,f=r.sessions||null;l.resolve({ok:!!r.ok,op:r.op,session:d,sessionId:u,sessions:f,config:r.config||null,error: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=mt(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=Qs(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(v=>v?.vpId===m&&et(v,p,g)):!1)&&p&&m){let v={...this.vpStatuses||{}},h=!1;for(let[M,x]of Object.entries(v))x?.vpId===m&&et(x,p,g)&&tr.has(x.state)&&(v[M]={...x,state:"idle",turnId:null,since:r.ts||Date.now()},h=!0);h&&(this.vpStatuses=v)}this.clearYeaftSessionProcessingIfIdle(p,{agentId:g});let y={end_turn:"completed",route_forward:"completed",aborted:"aborted",errored:"errored",error:"errored",cancelled:"cancelled",canceled:"cancelled"}[r.reason]||"completed",S=Date.now(),w=Ht(this,e.agentId||null,e.conversationId);if(w&&Array.isArray(this.messagesMap[w])){let v=this.messagesMap[w],h=ku(v,r);for(let M=0;M<v.length;M++){let x=v[M];if(!x||x.type!=="assistant")continue;let E=x.sessionId??x.groupId;r.sessionId&&E&&E!==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=y,x.turnEndAt=S,x.turnEndReason=r.reason||null,r.detail&&(x.turnEndDetail=r.detail),Number.isFinite(r.durationMs)&&(x.turnDurationMs=r.durationMs),h=!0)}h&&(this.messagesMap={...this.messagesMap,[w]:v.slice()})}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=Qs(this,e.agentId||null,g),b=this.activeVpTurns?.[m]||null;(!b||et(b,b.sessionId,e.agentId||null))&&d.add(m)}if(c)for(let[g,m]of Object.entries(this.activeVpTurns||{}))!m||m.vpId!==c||et(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])=>!et(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])=>!et(l,a,e.agentId||null))),this.clearYeaftSessionProcessingIfIdle(a,{agentId:e.agentId||null,ignoreStatuses:!0})):r.all&&Tu(this,e.agentId||null);break}case"vp_typing_start":{if(!r.vpId)break;let a=Ht(this,e.agentId||null,e.conversationId);if(!a)break;this.yeaftVpTyping=nu(this.yeaftVpTyping,a,r.vpId);break}case"vp_typing_end":{if(!r.vpId)break;let a=Ht(this,e.agentId||null,e.conversationId);if(!a)break;this.yeaftVpTyping=ru(this.yeaftVpTyping,a,r.vpId);break}case"vp_status_changed":{if(!r.vpId||!r.state)break;if(o){let u=Pa(i);if(r.state==="thinking"||r.state==="retrying"||r.state==="tool")Nn(this,o,`${r.state}:${u}`);else if(r.state==="streaming"||r.state==="idle"||r.state==="error")for(let f of["thinking","retrying","tool"])qs(this,o,`${f}:${u}`)}let a=r.sessionId||null,l=e.agentId||null,c=ei(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&&tr.has(r.state)){let u=mt(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=ei(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=ei(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=Sv(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>Ou&&a.splice(0,a.length-Ou),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=Se(this,e,t);if(!s)return!1;let n=Hr(s,e);return this.currentView==="yeaft"&&this.yeaftActiveSessionFilter===e&&Se(this,e)===s||this.yeaftUnreadSessionKeys?.[n]?!1:(this.yeaftUnreadSessionKeys={...this.yeaftUnreadSessionKeys,[n]:!0},!0)},markYeaftSessionRead(e,t=null){if(!e)return!1;let s=Se(this,e,t);if(!s)return!1;let n=Hr(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||Fu(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?Se(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 c=this.agents.find(d=>d.id===r);this.activateYeaftAgent(r,c||null)}else r&&n&&this.activateYeaftAgent(r);if(r&&n&&(this.markYeaftSessionRead(n,r),Yc(this,r,n)),!o&&n===s)return;let a=ke(r,n),l=this.yeaftSessionHistoryState[a]||null;if(this.pruneYeaftMessageWindow(n),r&&n){this.yeaftSessionAgentById={...this.yeaftSessionAgentById||{},[n]:r};let c=this.yeaftConversationIdsByAgent?.[r]||null;c||(c=`yeaft-local-${r}-${Date.now()}`,this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[r]:c}),this.yeaftConversationId=c,this.messagesMap[c]||(this.messagesMap[c]=[]),this.currentView==="yeaft"&&(this.activeConversations=[c])}try{let c=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();c&&typeof c.setActive=="function"&&c.setActive(n,r||null);let d=c?.activeSessionKey||null;d?localStorage.setItem("lastViewedYeaftSession",d):localStorage.removeItem("lastViewedYeaftSession")}catch{}if(this.syncActiveYeaftHistoryLoad(),!l?.loading&&r&&n){let c=Number.isFinite(l?.latestSeq)?l.latestSeq:null,d={type:"yeaft_load_history",agentId:r,sessionId:n},u=!!l?.loaded,f=Oo({sessionState:l,hasCachedSessionRows:!1,force:o});if(!f&&c!==null?d.afterSeq=c:d.limit=ti,!f&&u&&c===null){this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[a]:{...l||{hasMore:!1,oldestSeq:null,count:0},loaded:!0,loading:!1,syncingAfterSeq:null}},this.syncActiveYeaftHistoryLoad();return}let p=null;if(!f&&u){if(l?.syncingAfterSeq===c)return;p=this.beginYeaftHistoryLoad({agentId:r,sessionId:n,mode:"delta",preserveLoaded:!0,latestSeq:c}),this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[a]:{...this.yeaftSessionHistoryState[a],syncingAfterSeq:c}}}else p=this.beginYeaftHistoryLoad({agentId:r,sessionId:n,mode:"recent",preserveLoaded:!1,latestSeq:f?null:c});p&&(d.requestId=p.requestId),this.sendWsMessage(d)}},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:Se(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()?Hu:Ra,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&&(Ae(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._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,Du(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=_n(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=_n(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=_n(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=_n(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(!tc(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"&&Du(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=zt(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=zt(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})?(this.sessionHistorySyncRefreshToken+=1,setTimeout(()=>{To(this,i,a,"history_load_timeout")&&(this.sessionHistorySyncRefreshToken+=1)},1e4),a):(To(this,i,a,"send_failed"),this.sessionHistorySyncRefreshToken+=1,null)},beginChatHistoryRequest(e,t="recent",s=null){return sc(this,e,t,s)},isCurrentChatHistoryResponse(e){if(!e?.conversationId||!e?.requestId||!e?.catalogKey)return!1;let t=zt(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},this.sessionHistorySyncRefreshToken+=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 wc(this,e)},parseWsMessage(e){return kc(this,e)},connect(){Sc(this)},ensureConnected(){return Ln(this)},scheduleReconnect(){Ic(this)},manualReconnect(){Cc(this)},startHeartbeat(){Ac(this)},stopHeartbeat(){xc(this)},setupVisibilityHandler(){Tc(this)},handleMessage(e){Cd(this,e)},getOrCreateExecutionStatus(e){return oa(this,e)},handleAssistantOutputFrame(e,t,s=null){fd(this,e,t,s)},handleClaudeOutput(e,t){this.handleAssistantOutputFrame(e,t,null)},addMessageToConversation(e,t){return Fr(this,e,t)},appendToAssistantMessageForConversation(e,t,s){$c(this,e,t,s)},finishStreamingForConversation(e,t){Vc(this,e,t)},sweepStaleStreamingForConversation(e){Hc(this,e)},appendToAssistantMessage(e){this.appendToAssistantMessageForConversation(this.currentConversation,e)},finishStreaming(){this.finishStreamingForConversation(this.currentConversation)},addMessage(e){this.addMessageToConversation(this.currentConversation,e)},loadHistoryMessages(e){Oc(this,e)},formatDbMessage(e){return Fo(e)},formatDbMessageForHistoryHydration(e){return Nc(e)},selectAgent(e){return Ed(this,e)},createConversation(e,t=null,s=null,n=void 0){Dd(this,e,t,s,n)},resumeConversation(e,t,s=null,n=null,r=null){Ld(this,e,t,s,n,r)},selectConversation(e,t,s={}){$d(this,e,t,s)},updateConversationSettings(e,t){pa(this,e,t)},toggleConversationMcp(e,t){Vd(this,e,t)},deleteConversation(e,t){Od(this,e,t)},closeSession(e,t){Hd(this,e,t)},appendColumn(e){Bd(this,e)},removeColumn(e){Wd(this,e)},sendMessageToConversation(e,t,s=[],n={}){jd(this,e,t,s,n)},cancelExecutionForConversation(e){Ud(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?!!Zt()?.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=Se(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?Zt()?.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||Se(this,e);if(Object.values(this.activeVpTurns||{}).some(a=>et(a,e,n))||!s&&Object.values(this.vpStatuses||{}).some(l=>et(l,e,n)&&tr.has(l?.state)))return;let i=mt(n,e),o={...this.yeaftProcessingSessions||{}};i&&delete o[i],ni(this,e,n)&&delete o[e],this.yeaftProcessingSessions=o},sendMessage(e,t=[],s={}){Fd(this,e,t,s)},cancelExecution(){Nd(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],Tu(this,this.currentAgent)},cancelYeaftSession(e){let t=Se(this,e);!t||!e||(this.sendWsMessage({type:"yeaft_abort_all",agentId:t,sessionId:e}),this.activeVpTurns=Object.fromEntries(Object.entries(this.activeVpTurns||{}).filter(([,s])=>!et(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])=>!et(s,e,t))),this.clearYeaftSessionProcessingIfIdle(e,{agentId:t,ignoreStatuses:!0}))},cancelVpTurn(e,{sessionId:t=null,vpId:s=null}={}){let n=Se(this,t);if(!n||!e)return;let r=Qs(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=Se(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||!et(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?.[ei(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){qd(this,e,t,s)},refreshAgents(){Kd(this)},refreshConversation(){zd(this)},restartAgent(e){Yd(this,e)},upgradeAgent(e){Gd(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=Is(this),t=Se(this,e);if(!t)return!1;let s=ke(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=gs();this.yeaftHistoryPerfTraceBySession={...this.yeaftHistoryPerfTraceBySession||{},[s]:o};let a={type:"yeaft_load_history",agentId:t,limit:ti,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:ti}}),this.sendWsMessage(a)?!0:(Go(this,{agentId:t,sessionId:e,requestId:i.requestId,error:"history_load_send_failed"})&&(this.sessionHistorySyncRefreshToken+=1),!1)},loadMoreYeaftHistory(e=Jn()){if(this.currentView!=="yeaft"||this.yeaftLoadingMoreHistory||!this.yeaftHasMoreHistory)return;let t=Is(this),s=Se(this,t);if(!s)return;let n=Math.min(50,Math.max(1,Number.isFinite(e)?Math.floor(e):Jn())),r=ke(s,t),i=this.yeaftHistoryCacheState?.[r]?.ranges||[],o=this.yeaftSessionHistoryState?.[r]||{},a=Number(this.yeaftHistoryCacheState?.[r]?.rangeEpoch)||0,l=Qc(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=gs();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(){nc(this)},performRecovery(){rc(this)},dismissRecovery(){ic(this)},autoRestoreConversation(e){oc(this,e)},saveOpenSessions(){ds(this)},getLastSession(){return lc(this)},clearLastSession(){cc(this)},listHistorySessions(e){dc(this,e)},listFolders(){return uc(this)},listFoldersForAgent(e,t){return pc(this,e,t)},listModelsForAgent(e,t){return fc(this,e,t)},listHistorySessionsForAgent(e,t,s){gc(this,e,t,s)},async loadGlobalSessions(e=20){return mc(this,e)},async deleteGlobalSession(e){return hc(this,e)},findAgentForSession(e){return Po(this,e)},isSessionResumable(e){return vc(this,e)},_isRecentlyClosed(e){return fs(this,e)},_startProcessingWatchdog(e){Ns(this,e)},_resetProcessingWatchdog(e){Nr(this,e)},_stopProcessingWatchdog(e){Ae(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,Rn(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 Ea(e,t){!e||typeof e.handleYeaftOutput!="function"||!t||e.handleYeaftOutput({event:t})}function Hv(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 La(e){if(!e)return Jt[0];let t=String(e).toLowerCase();return Vv[t]||Jt[Hv(t)%Jt.length]}function Ov(e){return La(e).background}function Fv(e){return La(e).foreground}function Da(){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 Nv(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 $v,Jt,Vv,Hk,Tt,Xs=F(()=>{({defineStore:$v}=Pinia);Jt=[{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)"}],Vv=Object.freeze({steve:Jt[8],ada:Jt[3],linus:Jt[0],martin:Jt[4]}),Hk=Jt.map(e=>e.background);Tt=$v("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?Da().startsWith("zh")&&s.displayNameZh?s.displayNameZh:s.displayName||s.vpId||t:t},vpDescription:e=>t=>Nv(e.vps[t],Da()),vpInitial:e=>t=>{let s=e.vps[t],n=Da().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:Ov(t)},vpTextColor:()=>e=>Fv(e),vpAvatarMotif:()=>e=>La(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(Ea(s,{type:"dream_progress",phase:"start",groupId:e,manual:!0,trigger:"manual",source:"header-button",ts:n}),!s||typeof s.sendWsMessage!="function"){Ea(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&&Ea(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 $a(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 ii(e){return!e||typeof e!="object"?0:$a(e.lastMessageAt)||$a(e.updatedAt)||$a(e.createdAt)||0}function Va(e,t){let s=ii(t)-ii(e);return s!==0?s:String(e?.id||"").localeCompare(String(t?.id||""))}function Bu(e){return[...Array.isArray(e)?e:[]].sort(Va)}var oi=F(()=>{});function Wu(){try{if(typeof localStorage>"u")return{};let e=JSON.parse(localStorage.getItem(zu)||"{}");return e&&typeof e=="object"?e:{}}catch{return{}}}function qv(e){try{typeof localStorage<"u"&&localStorage.setItem(zu,JSON.stringify(e&&typeof e=="object"?e:{}))}catch{}}function ju(){try{return typeof localStorage>"u"?[]:sr(JSON.parse(localStorage.getItem(Yu)||"[]"))}catch{return[]}}function Bv(e){try{typeof localStorage<"u"&&localStorage.setItem(Yu,JSON.stringify(sr(e)))}catch{}}function Gu(e,t){return`${e||""}${t||""}`}function Ot(e){return e&&e.agentId&&e.id?Gu(e.agentId,e.id):""}function Mt(e,t){return t?e?Gu(e,t):String(t):""}function Wv(e){return typeof e=="string"?e:String(e||"")}function it(e,t,s=null){let n=Wv(t);if(!n)return"";let r=Mt(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=nr();if(l?.currentAgent){let c=a.find(d=>e.sessions[d]?.agentId===l.currentAgent);if(c)return c}return a[0]||""}function Ha(e,t,s=null){return it(e,t,s)||""}function Oa(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 jv(e){let t=e._preferredExactSessionIdentity||null;if(!t)return!1;e._preferredExactSessionIdentity=null;let s=e.sessions[t.key]||null,n=nr(),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=Gn(localStorage.getItem("lastViewedYeaftSession")||"");o.agentId===t.agentId&&o.sessionId===t.sessionId&&localStorage.removeItem("lastViewedYeaftSession")}catch{}return!0}function ai(e){let t=e._retiredBareActiveSessionId||null;if(!t)return!1;let s=nr();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")||"";Gn(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 Fa(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 li(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 Uu(e){return!e||typeof e!="object"?!1:e.running===!0||e.active===!0||e.isActive===!0||e.isRunning===!0}function Ku(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 nr(){try{if(typeof window<"u"&&window.Pinia&&typeof window.Pinia.useChatStore=="function")return window.Pinia.useChatStore()}catch{}return null}var zu,Yu,Uv,Qu,Xu=F(()=>{oi();Qn();zu="yeaft-session-order-by-agent",Yu="yeaft-session-order-global";({defineStore:Uv}=Pinia);Qu=Uv("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=nr(),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:Va(u,f)}),a=[...o(r),...o(i)],l=ju();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(Ot(d))?c.get(Ot(d)):Number.MAX_SAFE_INTEGER,p=c.has(Ot(u))?c.get(Ot(u)):Number.MAX_SAFE_INTEGER;return f!==p?f-p:0})},sessionCount(e){return e.sessionOrder.length},sessionById:e=>(t,s=null)=>{let n=it(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){Oa(this);let o={...this.sessions},a=new Set;for(let p of n){if(!p||!p.id)continue;let g=Mt(t,p.id);a.add(g),o[g]=this._normalize(p,t,li(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=Mt(t,p.id);o[g]&&!c.has(g)&&d.push(g)}this.sessions=o;let u=[...l,...d],f=ju();if(f.length>0){let p=new Map(u.map(I=>[Ot(o[I]),I]).filter(([I])=>I)),g=f.map(I=>p.get(I)).filter(Boolean),m=new Set(g);u=[...g,...u.filter(I=>!m.has(I))];let b=new Map(f.map((I,y)=>[I,y]));for(let I of u){let y=Ot(o[I]);y&&b.has(y)&&(o[I]={...o[I],sortOrder:b.get(y)})}}if(t&&f.length===0){let p=Wu(),g=sr(p[t]);if(g.length>0){let m=g.map(v=>Mt(t,v)),b=new Set(m),I=Fa(u.filter(v=>o[v]?.agentId===t),m),y=this.sessionOrder.some(v=>o[v]?.agentId===t),S=0;y?u=this.sessionOrder.filter(v=>o[v]).map(v=>o[v]?.agentId===t?I[S++]:v).concat(I.slice(S)):u=u.map(v=>o[v]?.agentId===t?I[S++]:v);let w=new Map(m.map((v,h)=>[v,h]));for(let v of I)o[v]&&b.has(v)&&(o[v]={...o[v],sortOrder:w.get(v)})}}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=Mt(null,c.id);a[d]=this._normalize(c,null,li(this.sessions[d])),l.push(d)}this.sessions=a,this.sessionOrder=l,this.inventoryIdentityMode="legacy-bare"}s||(r=jv(this)||ai(this)),this.lastSnapshotAt=Date.now();let i=nr();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?it(this,o,t):"",c=l?this.sessions[l]:null,d=c&&(!t||c.agentId===t),u=this.sessionOrder.filter(S=>this.sessions[S]&&(!t||this.sessions[S].agentId===t)&&this.sessions[S].running).sort((S,w)=>Ku(this.sessions[w])-Ku(this.sessions[S]))[0]||null,f=u?this.sessions[u]?.id:null,p=this.sessionList[0]||null,g=p?.id||null,m=g?it(this,g,p?.raw?.agentId||null):"",b=f||(d?c.id:null)||g,I=u||(d?l:"")||m||Ha(this,b,t),y=this.activeSessionKey?this.sessions[this.activeSessionKey]?.agentId:null;if(this.activeSessionId&&!it(this,this.activeSessionId,y)?(this.activeSessionId=b,this.activeSessionKey=I||null):!this.activeSessionId&&this.sessionOrder.length>0&&!this._retiredBareActiveSessionId?(this.activeSessionId=b,this.activeSessionKey=I||null):this.activeSessionId&&(this.activeSessionKey=Ha(this,this.activeSessionId,y)||this.activeSessionKey),i&&!this._retiredBareActiveSessionId){let S=this.activeSessionId||b,w=null;if((i.yeaftActiveSessionFilter&&!it(this,i.yeaftActiveSessionFilter)||!i.yeaftActiveSessionFilter&&S)&&(w=S),w){let v=Ha(this,w),h=v&&this.sessions[v]?.agentId||null;i.currentView==="yeaft"&&typeof i.setActiveSessionFilter=="function"?i.setActiveSessionFilter(w,{agentId:h,force:!0}):i.yeaftActiveSessionFilter=w,this.activeSessionKey=v||this.activeSessionKey}}}if(i&&typeof i.applyServerPinSnapshot=="function"){let o=new Set;for(let l of n){if(!l||!l.id)continue;let c=Mt(t,l.id),d=this.sessions[c];d&&d.pinned&&o.add(l.id)}let a=l=>{let c=it(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)Oa(this);else if(this.inventoryIdentityMode!=="legacy-bare")return;let r=it(this,s,n)||Mt(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),ai(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},ai(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)?it(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)Oa(this);else if(this.inventoryIdentityMode!=="legacy-bare")return"";let n=it(this,e.id,s)||Mt(s,e.id),r=!!this.sessions[n],i=this.sessions[n]||{};return this.sessions[n]={...i,...this._normalize(e,s,li(i))},r||this.sessionOrder.push(n),ai(this),n},setActive(e,t=null){let s=it(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=Fa(s,t.map(l=>Mt(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=Wu(),a=n.map(l=>this.sessions[l]?.id).filter(Boolean);return o[e]=a,qv(o),a},reorderSessionsGlobally(e){let t=this.sessionOrder.map(a=>Ot(this.sessions[a])).filter(Boolean),s=Fa(t,e);if(s.length===0)return[];let n=new Map(this.sessionOrder.map(a=>[Ot(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=Ot(this.sessions[a]);l&&o.has(l)&&(this.sessions[a]={...this.sessions[a],sortOrder:o.get(l)})}return Bv(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=it(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=Mt(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:Uu(e),active:Uu(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:li(e,s),sortOrder:Number.isFinite(e.sortOrder)?e.sortOrder:null}}}})});function ci(){try{if(window.Pinia&&typeof window.Pinia.useAuthStore=="function")return window.Pinia.useAuthStore()}catch{}return null}function Na(){try{return localStorage.getItem("authToken")||null}catch{return null}}function ep(){let e=ci();if(e)try{return e.getActiveToken?.()||e.token||Na()}catch{return e.token||Na()}return Na()}function zv(e,t){if(!e)return!1;let s=ep();if(s&&s!==t)return!1;try{localStorage.setItem("authToken",e)}catch{}let n=ci();return n&&(n.token=e),!0}function Yv(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 Ju(e){return!e||typeof window>"u"||!window.location?!1:e.origin===window.location.origin&&e.pathname.startsWith("/api/")}function Gv(e){if(!e)return!1;let t=e.pathname;return!!(Kv.has(t)||t.startsWith("/api/auth/sso/poll/")||/^\/api\/auth\/sso\/[^/]+\/start(?:-qr)?$/.test(t))}function Qv(e,t){return t?.headers?new Headers(t.headers):e&&typeof e=="object"&&e.headers?new Headers(e.headers):new Headers}function Xv(e){let t=e.get("Authorization");return!t||!t.startsWith("Bearer ")?null:t.slice(7)}function Zv(e,t){return{...e||{},headers:t}}function Jv(e,t,s,n){let r=ci();r&&typeof r.handleAuthResponse=="function"?r.handleAuthResponse(e,t,s,n):r&&typeof r.handleAuthFailure=="function"&&n&&r.handleAuthFailure(void 0,t,s)}function tp(){if(Zu||typeof window>"u"||!window.fetch)return;Zu=!0;let e=window.fetch.bind(window);window.fetch=async function(s,n){let r=Yv(s),i=Ju(r)&&!Gv(r),o=Ju(r)?{...n||{},credentials:"same-origin"}:n,a=null,l=i?ci():null,c=l?.authGeneration,d=!!l?.isAuthenticated;if(i){let f=Qv(s,n);a=Xv(f),a||(a=ep(),a&&(f.set("Authorization",`Bearer ${a}`),o=Zv(o,f)))}let u=await e(s,o);try{let f=u.headers&&u.headers.get&&u.headers.get("X-New-Token");f&&zv(f,a),i&&u.status===401&&Jv(u,a,c,d)}catch{}return u}}var Zu,Kv,sp=F(()=>{Zu=!1,Kv=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,rp=F(()=>{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
|
+
${b}`:b),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=ke(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,b=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},I=a.requestId?this.finishYeaftHistoryLoad(a,b,"completion"):null;I||(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[d]:b});let y=ke(l?this.currentAgent:null,this.yeaftActiveSessionFilter??null);if(d===y)f==="recent"&&(this.yeaftHasMoreHistory=b.hasMore,this.yeaftOldestLoadedSeq=b.serverOldestFetchedSeq),this.yeaftLoadingMoreHistory=!!I?.loading;else if(this.yeaftLoadingMoreHistory){let S=this.yeaftSessionHistoryState[y]||null;this.yeaftLoadingMoreHistory=!!S?.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||Se(this,u,e.agentId||null),g=ke(p,u),m=this.yeaftSessionHistoryState[g]||null;this.setActiveSessionFilter(u,{agentId:p,force:d!==p||Dc(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=this._sessionCrudPending&&this._sessionCrudPending.get(r.requestId);if(l){this._sessionCrudPending.delete(r.requestId);let c=r.session||r.group||null,d=c&&e.agentId&&!c.agentId?{...c,agentId:e.agentId}:c,u=r.sessionId||null,f=r.sessions||null;l.resolve({ok:!!r.ok,op:r.op,session:d,sessionId:u,sessions:f,config:r.config||null,error: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=mt(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=Qs(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(v=>v?.vpId===m&&tt(v,p,g)):!1)&&p&&m){let v={...this.vpStatuses||{}},h=!1;for(let[M,x]of Object.entries(v))x?.vpId===m&&tt(x,p,g)&&tr.has(x.state)&&(v[M]={...x,state:"idle",turnId:null,since:r.ts||Date.now()},h=!0);h&&(this.vpStatuses=v)}this.clearYeaftSessionProcessingIfIdle(p,{agentId:g});let y={end_turn:"completed",route_forward:"completed",aborted:"aborted",errored:"errored",error:"errored",cancelled:"cancelled",canceled:"cancelled"}[r.reason]||"completed",S=Date.now(),w=Ht(this,e.agentId||null,e.conversationId);if(w&&Array.isArray(this.messagesMap[w])){let v=this.messagesMap[w],h=ku(v,r);for(let M=0;M<v.length;M++){let x=v[M];if(!x||x.type!=="assistant")continue;let E=x.sessionId??x.groupId;r.sessionId&&E&&E!==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=y,x.turnEndAt=S,x.turnEndReason=r.reason||null,r.detail&&(x.turnEndDetail=r.detail),Number.isFinite(r.durationMs)&&(x.turnDurationMs=r.durationMs),h=!0)}h&&(this.messagesMap={...this.messagesMap,[w]:v.slice()})}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=Qs(this,e.agentId||null,g),b=this.activeVpTurns?.[m]||null;(!b||tt(b,b.sessionId,e.agentId||null))&&d.add(m)}if(c)for(let[g,m]of Object.entries(this.activeVpTurns||{}))!m||m.vpId!==c||tt(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])=>!tt(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])=>!tt(l,a,e.agentId||null))),this.clearYeaftSessionProcessingIfIdle(a,{agentId:e.agentId||null,ignoreStatuses:!0})):r.all&&Tu(this,e.agentId||null);break}case"vp_typing_start":{if(!r.vpId)break;let a=Ht(this,e.agentId||null,e.conversationId);if(!a)break;this.yeaftVpTyping=nu(this.yeaftVpTyping,a,r.vpId);break}case"vp_typing_end":{if(!r.vpId)break;let a=Ht(this,e.agentId||null,e.conversationId);if(!a)break;this.yeaftVpTyping=ru(this.yeaftVpTyping,a,r.vpId);break}case"vp_status_changed":{if(!r.vpId||!r.state)break;if(o){let u=Pa(i);if(r.state==="thinking"||r.state==="retrying"||r.state==="tool")Nn(this,o,`${r.state}:${u}`);else if(r.state==="streaming"||r.state==="idle"||r.state==="error")for(let f of["thinking","retrying","tool"])qs(this,o,`${f}:${u}`)}let a=r.sessionId||null,l=e.agentId||null,c=ei(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&&tr.has(r.state)){let u=mt(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=ei(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=ei(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=Sv(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>Ou&&a.splice(0,a.length-Ou),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=Se(this,e,t);if(!s)return!1;let n=Hr(s,e);return this.currentView==="yeaft"&&this.yeaftActiveSessionFilter===e&&Se(this,e)===s||this.yeaftUnreadSessionKeys?.[n]?!1:(this.yeaftUnreadSessionKeys={...this.yeaftUnreadSessionKeys,[n]:!0},!0)},markYeaftSessionRead(e,t=null){if(!e)return!1;let s=Se(this,e,t);if(!s)return!1;let n=Hr(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||Fu(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?Se(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 c=this.agents.find(d=>d.id===r);this.activateYeaftAgent(r,c||null)}else r&&n&&this.activateYeaftAgent(r);if(r&&n&&(this.markYeaftSessionRead(n,r),Yc(this,r,n)),!o&&n===s)return;let a=ke(r,n),l=this.yeaftSessionHistoryState[a]||null;if(this.pruneYeaftMessageWindow(n),r&&n){this.yeaftSessionAgentById={...this.yeaftSessionAgentById||{},[n]:r};let c=this.yeaftConversationIdsByAgent?.[r]||null;c||(c=`yeaft-local-${r}-${Date.now()}`,this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[r]:c}),this.yeaftConversationId=c,this.messagesMap[c]||(this.messagesMap[c]=[]),this.currentView==="yeaft"&&(this.activeConversations=[c])}try{let c=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();c&&typeof c.setActive=="function"&&c.setActive(n,r||null);let d=c?.activeSessionKey||null;d?localStorage.setItem("lastViewedYeaftSession",d):localStorage.removeItem("lastViewedYeaftSession")}catch{}if(this.syncActiveYeaftHistoryLoad(),!l?.loading&&r&&n){let c=Number.isFinite(l?.latestSeq)?l.latestSeq:null,d={type:"yeaft_load_history",agentId:r,sessionId:n},u=!!l?.loaded,f=Oo({sessionState:l,hasCachedSessionRows:!1,force:o});if(!f&&c!==null?d.afterSeq=c:d.limit=ti,!f&&u&&c===null){this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[a]:{...l||{hasMore:!1,oldestSeq:null,count:0},loaded:!0,loading:!1,syncingAfterSeq:null}},this.syncActiveYeaftHistoryLoad();return}let p=null;if(!f&&u){if(l?.syncingAfterSeq===c)return;p=this.beginYeaftHistoryLoad({agentId:r,sessionId:n,mode:"delta",preserveLoaded:!0,latestSeq:c}),this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[a]:{...this.yeaftSessionHistoryState[a],syncingAfterSeq:c}}}else p=this.beginYeaftHistoryLoad({agentId:r,sessionId:n,mode:"recent",preserveLoaded:!1,latestSeq:f?null:c});p&&(d.requestId=p.requestId),this.sendWsMessage(d)}},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:Se(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()?Hu:Ra,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&&(Ae(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._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,Du(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=_n(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=_n(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=_n(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=_n(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(!tc(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"&&Du(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=zt(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=zt(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})?(this.sessionHistorySyncRefreshToken+=1,setTimeout(()=>{To(this,i,a,"history_load_timeout")&&(this.sessionHistorySyncRefreshToken+=1)},1e4),a):(To(this,i,a,"send_failed"),this.sessionHistorySyncRefreshToken+=1,null)},beginChatHistoryRequest(e,t="recent",s=null){return sc(this,e,t,s)},isCurrentChatHistoryResponse(e){if(!e?.conversationId||!e?.requestId||!e?.catalogKey)return!1;let t=zt(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},this.sessionHistorySyncRefreshToken+=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 wc(this,e)},parseWsMessage(e){return kc(this,e)},connect(){Sc(this)},ensureConnected(){return Ln(this)},scheduleReconnect(){Ic(this)},manualReconnect(){Cc(this)},startHeartbeat(){Ac(this)},stopHeartbeat(){xc(this)},setupVisibilityHandler(){Tc(this)},handleMessage(e){Cd(this,e)},getOrCreateExecutionStatus(e){return oa(this,e)},handleAssistantOutputFrame(e,t,s=null){fd(this,e,t,s)},handleClaudeOutput(e,t){this.handleAssistantOutputFrame(e,t,null)},addMessageToConversation(e,t){return Fr(this,e,t)},appendToAssistantMessageForConversation(e,t,s){$c(this,e,t,s)},finishStreamingForConversation(e,t){Vc(this,e,t)},sweepStaleStreamingForConversation(e){Hc(this,e)},appendToAssistantMessage(e){this.appendToAssistantMessageForConversation(this.currentConversation,e)},finishStreaming(){this.finishStreamingForConversation(this.currentConversation)},addMessage(e){this.addMessageToConversation(this.currentConversation,e)},loadHistoryMessages(e){Oc(this,e)},formatDbMessage(e){return Fo(e)},formatDbMessageForHistoryHydration(e){return Nc(e)},selectAgent(e){return Ed(this,e)},createConversation(e,t=null,s=null,n=void 0){Dd(this,e,t,s,n)},resumeConversation(e,t,s=null,n=null,r=null){Ld(this,e,t,s,n,r)},selectConversation(e,t,s={}){$d(this,e,t,s)},updateConversationSettings(e,t){pa(this,e,t)},toggleConversationMcp(e,t){Vd(this,e,t)},deleteConversation(e,t){Od(this,e,t)},closeSession(e,t){Hd(this,e,t)},appendColumn(e){Bd(this,e)},removeColumn(e){Wd(this,e)},sendMessageToConversation(e,t,s=[],n={}){jd(this,e,t,s,n)},cancelExecutionForConversation(e){Ud(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?!!Zt()?.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=Se(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?Zt()?.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||Se(this,e);if(Object.values(this.activeVpTurns||{}).some(a=>tt(a,e,n))||!s&&Object.values(this.vpStatuses||{}).some(l=>tt(l,e,n)&&tr.has(l?.state)))return;let i=mt(n,e),o={...this.yeaftProcessingSessions||{}};i&&delete o[i],ni(this,e,n)&&delete o[e],this.yeaftProcessingSessions=o},sendMessage(e,t=[],s={}){Fd(this,e,t,s)},cancelExecution(){Nd(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],Tu(this,this.currentAgent)},cancelYeaftSession(e){let t=Se(this,e);!t||!e||(this.sendWsMessage({type:"yeaft_abort_all",agentId:t,sessionId:e}),this.activeVpTurns=Object.fromEntries(Object.entries(this.activeVpTurns||{}).filter(([,s])=>!tt(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])=>!tt(s,e,t))),this.clearYeaftSessionProcessingIfIdle(e,{agentId:t,ignoreStatuses:!0}))},cancelVpTurn(e,{sessionId:t=null,vpId:s=null}={}){let n=Se(this,t);if(!n||!e)return;let r=Qs(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=Se(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||!tt(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?.[ei(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){qd(this,e,t,s)},refreshAgents(){Kd(this)},refreshConversation(){zd(this)},restartAgent(e){Yd(this,e)},upgradeAgent(e){Gd(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=Is(this),t=Se(this,e);if(!t)return!1;let s=ke(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=gs();this.yeaftHistoryPerfTraceBySession={...this.yeaftHistoryPerfTraceBySession||{},[s]:o};let a={type:"yeaft_load_history",agentId:t,limit:ti,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:ti}}),this.sendWsMessage(a)?!0:(Go(this,{agentId:t,sessionId:e,requestId:i.requestId,error:"history_load_send_failed"})&&(this.sessionHistorySyncRefreshToken+=1),!1)},loadMoreYeaftHistory(e=Jn()){if(this.currentView!=="yeaft"||this.yeaftLoadingMoreHistory||!this.yeaftHasMoreHistory)return;let t=Is(this),s=Se(this,t);if(!s)return;let n=Math.min(50,Math.max(1,Number.isFinite(e)?Math.floor(e):Jn())),r=ke(s,t),i=this.yeaftHistoryCacheState?.[r]?.ranges||[],o=this.yeaftSessionHistoryState?.[r]||{},a=Number(this.yeaftHistoryCacheState?.[r]?.rangeEpoch)||0,l=Qc(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=gs();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(){nc(this)},performRecovery(){rc(this)},dismissRecovery(){ic(this)},autoRestoreConversation(e){oc(this,e)},saveOpenSessions(){ds(this)},getLastSession(){return lc(this)},clearLastSession(){cc(this)},listHistorySessions(e){dc(this,e)},listFolders(){return uc(this)},listFoldersForAgent(e,t){return pc(this,e,t)},listModelsForAgent(e,t){return fc(this,e,t)},listHistorySessionsForAgent(e,t,s){gc(this,e,t,s)},async loadGlobalSessions(e=20){return mc(this,e)},async deleteGlobalSession(e){return hc(this,e)},findAgentForSession(e){return Po(this,e)},isSessionResumable(e){return vc(this,e)},_isRecentlyClosed(e){return fs(this,e)},_startProcessingWatchdog(e){Ns(this,e)},_resetProcessingWatchdog(e){Nr(this,e)},_stopProcessingWatchdog(e){Ae(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,Rn(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 Ea(e,t){!e||typeof e.handleYeaftOutput!="function"||!t||e.handleYeaftOutput({event:t})}function Hv(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 La(e){if(!e)return Jt[0];let t=String(e).toLowerCase();return Vv[t]||Jt[Hv(t)%Jt.length]}function Ov(e){return La(e).background}function Fv(e){return La(e).foreground}function Da(){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 Nv(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 $v,Jt,Vv,Hk,Tt,Xs=F(()=>{({defineStore:$v}=Pinia);Jt=[{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)"}],Vv=Object.freeze({steve:Jt[8],ada:Jt[3],linus:Jt[0],martin:Jt[4]}),Hk=Jt.map(e=>e.background);Tt=$v("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?Da().startsWith("zh")&&s.displayNameZh?s.displayNameZh:s.displayName||s.vpId||t:t},vpDescription:e=>t=>Nv(e.vps[t],Da()),vpInitial:e=>t=>{let s=e.vps[t],n=Da().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:Ov(t)},vpTextColor:()=>e=>Fv(e),vpAvatarMotif:()=>e=>La(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(Ea(s,{type:"dream_progress",phase:"start",groupId:e,manual:!0,trigger:"manual",source:"header-button",ts:n}),!s||typeof s.sendWsMessage!="function"){Ea(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&&Ea(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 $a(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 ii(e){return!e||typeof e!="object"?0:$a(e.lastMessageAt)||$a(e.updatedAt)||$a(e.createdAt)||0}function Va(e,t){let s=ii(t)-ii(e);return s!==0?s:String(e?.id||"").localeCompare(String(t?.id||""))}function Bu(e){return[...Array.isArray(e)?e:[]].sort(Va)}var oi=F(()=>{});function Wu(){try{if(typeof localStorage>"u")return{};let e=JSON.parse(localStorage.getItem(zu)||"{}");return e&&typeof e=="object"?e:{}}catch{return{}}}function qv(e){try{typeof localStorage<"u"&&localStorage.setItem(zu,JSON.stringify(e&&typeof e=="object"?e:{}))}catch{}}function ju(){try{return typeof localStorage>"u"?[]:sr(JSON.parse(localStorage.getItem(Yu)||"[]"))}catch{return[]}}function Bv(e){try{typeof localStorage<"u"&&localStorage.setItem(Yu,JSON.stringify(sr(e)))}catch{}}function Gu(e,t){return`${e||""}${t||""}`}function Ot(e){return e&&e.agentId&&e.id?Gu(e.agentId,e.id):""}function Mt(e,t){return t?e?Gu(e,t):String(t):""}function Wv(e){return typeof e=="string"?e:String(e||"")}function it(e,t,s=null){let n=Wv(t);if(!n)return"";let r=Mt(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=nr();if(l?.currentAgent){let c=a.find(d=>e.sessions[d]?.agentId===l.currentAgent);if(c)return c}return a[0]||""}function Ha(e,t,s=null){return it(e,t,s)||""}function Oa(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 jv(e){let t=e._preferredExactSessionIdentity||null;if(!t)return!1;e._preferredExactSessionIdentity=null;let s=e.sessions[t.key]||null,n=nr(),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=Gn(localStorage.getItem("lastViewedYeaftSession")||"");o.agentId===t.agentId&&o.sessionId===t.sessionId&&localStorage.removeItem("lastViewedYeaftSession")}catch{}return!0}function ai(e){let t=e._retiredBareActiveSessionId||null;if(!t)return!1;let s=nr();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")||"";Gn(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 Fa(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 li(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 Uu(e){return!e||typeof e!="object"?!1:e.running===!0||e.active===!0||e.isActive===!0||e.isRunning===!0}function Ku(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 nr(){try{if(typeof window<"u"&&window.Pinia&&typeof window.Pinia.useChatStore=="function")return window.Pinia.useChatStore()}catch{}return null}var zu,Yu,Uv,Qu,Xu=F(()=>{oi();Qn();zu="yeaft-session-order-by-agent",Yu="yeaft-session-order-global";({defineStore:Uv}=Pinia);Qu=Uv("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=nr(),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:Va(u,f)}),a=[...o(r),...o(i)],l=ju();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(Ot(d))?c.get(Ot(d)):Number.MAX_SAFE_INTEGER,p=c.has(Ot(u))?c.get(Ot(u)):Number.MAX_SAFE_INTEGER;return f!==p?f-p:0})},sessionCount(e){return e.sessionOrder.length},sessionById:e=>(t,s=null)=>{let n=it(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){Oa(this);let o={...this.sessions},a=new Set;for(let p of n){if(!p||!p.id)continue;let g=Mt(t,p.id);a.add(g),o[g]=this._normalize(p,t,li(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=Mt(t,p.id);o[g]&&!c.has(g)&&d.push(g)}this.sessions=o;let u=[...l,...d],f=ju();if(f.length>0){let p=new Map(u.map(I=>[Ot(o[I]),I]).filter(([I])=>I)),g=f.map(I=>p.get(I)).filter(Boolean),m=new Set(g);u=[...g,...u.filter(I=>!m.has(I))];let b=new Map(f.map((I,y)=>[I,y]));for(let I of u){let y=Ot(o[I]);y&&b.has(y)&&(o[I]={...o[I],sortOrder:b.get(y)})}}if(t&&f.length===0){let p=Wu(),g=sr(p[t]);if(g.length>0){let m=g.map(v=>Mt(t,v)),b=new Set(m),I=Fa(u.filter(v=>o[v]?.agentId===t),m),y=this.sessionOrder.some(v=>o[v]?.agentId===t),S=0;y?u=this.sessionOrder.filter(v=>o[v]).map(v=>o[v]?.agentId===t?I[S++]:v).concat(I.slice(S)):u=u.map(v=>o[v]?.agentId===t?I[S++]:v);let w=new Map(m.map((v,h)=>[v,h]));for(let v of I)o[v]&&b.has(v)&&(o[v]={...o[v],sortOrder:w.get(v)})}}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=Mt(null,c.id);a[d]=this._normalize(c,null,li(this.sessions[d])),l.push(d)}this.sessions=a,this.sessionOrder=l,this.inventoryIdentityMode="legacy-bare"}s||(r=jv(this)||ai(this)),this.lastSnapshotAt=Date.now();let i=nr();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?it(this,o,t):"",c=l?this.sessions[l]:null,d=c&&(!t||c.agentId===t),u=this.sessionOrder.filter(S=>this.sessions[S]&&(!t||this.sessions[S].agentId===t)&&this.sessions[S].running).sort((S,w)=>Ku(this.sessions[w])-Ku(this.sessions[S]))[0]||null,f=u?this.sessions[u]?.id:null,p=this.sessionList[0]||null,g=p?.id||null,m=g?it(this,g,p?.raw?.agentId||null):"",b=f||(d?c.id:null)||g,I=u||(d?l:"")||m||Ha(this,b,t),y=this.activeSessionKey?this.sessions[this.activeSessionKey]?.agentId:null;if(this.activeSessionId&&!it(this,this.activeSessionId,y)?(this.activeSessionId=b,this.activeSessionKey=I||null):!this.activeSessionId&&this.sessionOrder.length>0&&!this._retiredBareActiveSessionId?(this.activeSessionId=b,this.activeSessionKey=I||null):this.activeSessionId&&(this.activeSessionKey=Ha(this,this.activeSessionId,y)||this.activeSessionKey),i&&!this._retiredBareActiveSessionId){let S=this.activeSessionId||b,w=null;if((i.yeaftActiveSessionFilter&&!it(this,i.yeaftActiveSessionFilter)||!i.yeaftActiveSessionFilter&&S)&&(w=S),w){let v=Ha(this,w),h=v&&this.sessions[v]?.agentId||null;i.currentView==="yeaft"&&typeof i.setActiveSessionFilter=="function"?i.setActiveSessionFilter(w,{agentId:h,force:!0}):i.yeaftActiveSessionFilter=w,this.activeSessionKey=v||this.activeSessionKey}}}if(i&&typeof i.applyServerPinSnapshot=="function"){let o=new Set;for(let l of n){if(!l||!l.id)continue;let c=Mt(t,l.id),d=this.sessions[c];d&&d.pinned&&o.add(l.id)}let a=l=>{let c=it(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)Oa(this);else if(this.inventoryIdentityMode!=="legacy-bare")return;let r=it(this,s,n)||Mt(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),ai(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},ai(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)?it(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)Oa(this);else if(this.inventoryIdentityMode!=="legacy-bare")return"";let n=it(this,e.id,s)||Mt(s,e.id),r=!!this.sessions[n],i=this.sessions[n]||{};return this.sessions[n]={...i,...this._normalize(e,s,li(i))},r||this.sessionOrder.push(n),ai(this),n},setActive(e,t=null){let s=it(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=Fa(s,t.map(l=>Mt(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=Wu(),a=n.map(l=>this.sessions[l]?.id).filter(Boolean);return o[e]=a,qv(o),a},reorderSessionsGlobally(e){let t=this.sessionOrder.map(a=>Ot(this.sessions[a])).filter(Boolean),s=Fa(t,e);if(s.length===0)return[];let n=new Map(this.sessionOrder.map(a=>[Ot(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=Ot(this.sessions[a]);l&&o.has(l)&&(this.sessions[a]={...this.sessions[a],sortOrder:o.get(l)})}return Bv(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=it(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=Mt(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:Uu(e),active:Uu(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:li(e,s),sortOrder:Number.isFinite(e.sortOrder)?e.sortOrder:null}}}})});function ci(){try{if(window.Pinia&&typeof window.Pinia.useAuthStore=="function")return window.Pinia.useAuthStore()}catch{}return null}function Na(){try{return localStorage.getItem("authToken")||null}catch{return null}}function ep(){let e=ci();if(e)try{return e.getActiveToken?.()||e.token||Na()}catch{return e.token||Na()}return Na()}function zv(e,t){if(!e)return!1;let s=ep();if(s&&s!==t)return!1;try{localStorage.setItem("authToken",e)}catch{}let n=ci();return n&&(n.token=e),!0}function Yv(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 Ju(e){return!e||typeof window>"u"||!window.location?!1:e.origin===window.location.origin&&e.pathname.startsWith("/api/")}function Gv(e){if(!e)return!1;let t=e.pathname;return!!(Kv.has(t)||t.startsWith("/api/auth/sso/poll/")||/^\/api\/auth\/sso\/[^/]+\/start(?:-qr)?$/.test(t))}function Qv(e,t){return t?.headers?new Headers(t.headers):e&&typeof e=="object"&&e.headers?new Headers(e.headers):new Headers}function Xv(e){let t=e.get("Authorization");return!t||!t.startsWith("Bearer ")?null:t.slice(7)}function Zv(e,t){return{...e||{},headers:t}}function Jv(e,t,s,n){let r=ci();r&&typeof r.handleAuthResponse=="function"?r.handleAuthResponse(e,t,s,n):r&&typeof r.handleAuthFailure=="function"&&n&&r.handleAuthFailure(void 0,t,s)}function tp(){if(Zu||typeof window>"u"||!window.fetch)return;Zu=!0;let e=window.fetch.bind(window);window.fetch=async function(s,n){let r=Yv(s),i=Ju(r)&&!Gv(r),o=Ju(r)?{...n||{},credentials:"same-origin"}:n,a=null,l=i?ci():null,c=l?.authGeneration,d=!!l?.isAuthenticated;if(i){let f=Qv(s,n);a=Xv(f),a||(a=ep(),a&&(f.set("Authorization",`Bearer ${a}`),o=Zv(o,f)))}let u=await e(s,o);try{let f=u.headers&&u.headers.get&&u.headers.get("X-New-Token");f&&zv(f,a),i&&u.status===401&&Jv(u,a,c,d)}catch{}return u}}var Zu,Kv,sp=F(()=>{Zu=!1,Kv=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,rp=F(()=>{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
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.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.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":"\u4F9D\u8D56\u9879","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\uFF0CTriage \u4F1A\u751F\u6210\u76EE\u6807\u3001\u9A8C\u6536\u6761\u4EF6\u548C Actions\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":"Triage \u4F1A\u751F\u6210\u6807\u9898\u3001\u76EE\u6807\u3001\u9A8C\u6536\u6761\u4EF6\u3001\u7C7B\u578B\u548C\u6267\u884C\u8BA1\u5212\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":"Triage \u4F1A\u9488\u5BF9\u4EFB\u52A1\u52A8\u6001\u9009\u62E9 Action \u548C\u6267\u884C\u8005\u3002","workCenter.settings.aiWorkflowHelp":"Triage \u4F1A\u4E3A\u6BCF\u4E2A Work Item \u5206\u7C7B\u5E76\u751F\u6210\u7ECF\u8FC7\u6821\u9A8C\u7684 1\u20138 \u4E2A\u4EFB\u52A1\u4E13\u5C5E Action\u3002\u5185\u7F6E Action \u7B56\u7565\u53EA\u662F\u53EF\u590D\u7528\u9ED8\u8BA4\u503C\uFF1B\u9700\u8981\u65F6 triage \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":"AI \u52A8\u6001\u89C4\u5212\u6267\u884C","workCenter.aiPlanHelp":"Triage \u4F1A\u9009\u62E9\u4EFB\u52A1\u7C7B\u578B\u3001Action\u3001\u6267\u884C\u8005\u548C\u6700\u5C0F\u53EF\u9760\u6D41\u7A0B\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 ip,op=F(()=>{ip={"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?
|
|
@@ -1673,7 +1673,7 @@ ${String(e||"").trim()}
|
|
|
1673
1673
|
{{ $t('message.scrollToLatest') }}
|
|
1674
1674
|
</button>
|
|
1675
1675
|
</main>
|
|
1676
|
-
`,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=k=>String(k?.id||k?.turnId||k?.messageId||k?.atMessageId||k?.message?.id||"turn_unknown"),f=k=>{let $=u(k);return Object.prototype.hasOwnProperty.call(l,$)?!!l[$]:!1},p=(k,$)=>{l[u(k)]=!!$},g=({key:k,value:$}={})=>{k&&(c[k]=!!$)},m=k=>{let $=ef(k,es);return Number.isFinite($)?$:es(k)},b=k=>Ai(k),I=k=>{let $=Array.isArray(k?.collapsedResponsePreview)?k.collapsedResponsePreview:Jp(k);return Array.isArray($)?$:$?[String($)]:[]},y=k=>{let $=Array.isArray(k?.items)?k.items.find(te=>dr(te)):null,W=$?.speakerVpId||$?.vpId||$?.message?.speakerVpId||$?.message?.vpId||k?.vpId||"",ie=W&&r&&typeof r.vpLabel=="function"?r.vpLabel(W)||W:W||(typeof i=="function"?i("message.assistant"):"Assistant"),be=W&&r&&typeof r.vpTextColor=="function"?{color:r.vpTextColor(W)}:{},ce=$?.speakerTimestamp||$?.timestamp||$?.createdAt||$?.message?.timestamp||$?.message?.createdAt||0,Fe="",Ie="";if(ce)try{let te=new Date(ce);Number.isNaN(te.getTime())||(Fe=xt(ce),Ie=te.toLocaleString())}catch{}return{name:ie,style:be,timeText:Fe,fullTimeText:Ie}},S=k=>{let $=Array.isArray(k?.items)?k.items:[];for(let W=$.length-1;W>=0;W-=1)if(dr($[W]))return $[W];return null},w=(k,$)=>!k?.responseCollapsible||!$?!1:S(k)===$,v=k=>!!(k?.responseCollapsible&&!Ai(k).some($=>w(k,$))),h=k=>{let $=k?.responseCollapseKey;$&&(d[$]=!k.responseCollapsed)},M=k=>{let $=Number(k?.responseCount||0),W=k?.responseCollapsed?"message.showResponses":"message.hideResponses",ie=(typeof i=="function"?i(W):"")||(k?.responseCollapsed?"Show {count} response(s)":"Hide response(s)");return String(ie).replace("{count}",String($))},x=(()=>{try{return window.Pinia?.useSessionsStore?.()||null}catch{return null}}),E=Vue.computed(()=>{if(s.currentView!=="yeaft")return null;let k=x();if(!k)return null;let $=s.yeaftActiveSessionFilter||null;return $&&typeof k.sessionById=="function"&&k.sessionById($,s.currentAgent||null)?$:k.activeSessionId&&typeof k.sessionById=="function"&&k.sessionById(k.activeSessionId,s.currentAgent||null)?k.activeSessionId:null}),V=Vue.computed(()=>{let k=s.currentView||"",$=s.currentAgent||"";if(k==="yeaft"){let W=s.yeaftActiveSessionFilter||E.value||"__all__";return[k,$,W].join("")}return[k,$,s.activeConversationId||""].join("")}),L=Vue.computed(()=>E.value!==null),R=Vue.computed(()=>s.agents.filter(k=>k.online)),P=Vue.ref(null),A=Vue.ref(null),_=Vue.ref(!1),j=Vue.ref(""),B=null,z=0,se=n.token||"",me=()=>{P.value=null,A.value=null,j.value="",B=null,z+=1},ae=fi(),ve=gi(),ge=Vue.computed(()=>mi({profile:P.value,agentSecret:A.value,serverWsUrl:rr(location)})),pe=()=>{let k={"Content-Type":"application/json"};return n.token&&(k.Authorization=`Bearer ${n.token}`),k},T=async()=>{if(R.value.length>0||s.currentConversation)return;if(A.value||B)return B;_.value=!0,j.value="";let k=++z;return B=(async()=>{let $=n.token||"",W=pe(),[ie,be]=await Promise.all([fetch("/api/user/profile",{headers:W}),fetch("/api/user/agent-secret",{headers:W})]),ce=ie.ok?await ie.json():null;if(k!==z||$!==(n.token||""))return;if(ce&&(P.value=ce),!be.ok){let te="";try{te=(await be.json())?.error||""}catch{}throw new Error(te||"Failed to load Agent secret")}let Fe=await be.json();if(k!==z||$!==(n.token||""))return;let Ie=Fe?.agentSecret||Fe?.agent_secret||null;A.value=Ie&&String(Ie).trim()?String(Ie):null})().catch($=>{k===z&&(j.value=$?.message||"Failed to load Agent secret")}).finally(()=>{k===z&&(_.value=!1,B=null)}),B},K=async k=>{if(k)try{await navigator.clipboard.writeText(k)}catch{}},re=new WeakMap,he=0,Pe=(k,$)=>{let W=k?.message&&typeof k.message=="object"?k.message:Array.isArray(k?.messages)&&k.messages[0]&&typeof k.messages[0]=="object"?k.messages[0]:$&&typeof $=="object"?$:k&&typeof k=="object"?k:null;if(!W)return`legacy_render_${++he}`;let ie=re.get(W);return ie||(ie=`legacy_render_${++he}`,re.set(W,ie)),ie},U=k=>{let $=k?.message||k||null;return k?.entryId||k?.uiKey||k?.stableKey||$?.entryId||$?.uiKey||$?.stableKey||k?.atMessageId||k?.messageId||$?.messageId||k?.id||$?.id||Pe(k,$)},q=k=>encodeURIComponent(String(k||"legacy")),N=k=>{let $=k?.message||null,W=U(k),ie=k?.id||k?.atMessageId||$?.id||$?.messageId||W,be=k?.speakerVpId||k?.vpId||$?.speakerVpId||$?.vpId||"";return{id:`message_${q(W)}`,uiKey:W,vpId:be,messageId:ie}},O=Vue.computed(()=>{let k=s.currentView==="yeaft"?Gp(s.messages):s.messages,$=[],W=null,ie=()=>{if(W){W.isActive=!!(W.turnId&&Object.values(s.activeVpTurns||{}).some(ut=>((ut?.turnId||null)===W.turnId||!ut?.turnId&&s.activeVpTurns?.[W.turnId]===ut)&&(!s.currentAgent||!ut?.agentId||ut.agentId===s.currentAgent))),Zr(W);let Ie=!!(W.textContent||W.todoMsg||W.askMsg||W.imageMsgs.length>0),te=W.toolMsgs.length>0||W.toolSummaryCount>0;(Ie||te)&&(W.showSpeakerHeader=!!W.speakerVpId,$.push(W)),W=null}},be=Ie=>{if(W){if(!W.speakerVpId){let te=Ie.speakerVpId||Ie.vpId;te&&(W.speakerVpId=te,W.speakerTimestamp=typeof Ie.timestamp=="number"&&Ie.timestamp>0?Ie.timestamp:typeof Ie.createdAt=="number"?Ie.createdAt:0,typeof Ie.lastStateChangeCause=="string"&&!W.speakerStateCause&&(W.speakerStateCause=Ie.lastStateChangeCause))}!W.turnId&&Ie.turnId&&(W.turnId=Ie.turnId)}},ce=(Ie=null)=>{let te=U(Ie);W={type:"assistant-turn",id:`response_${q(te)}`,uiKey:te,...Ie?.entryId?{entryId:Ie.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}},Fe=Ie=>{Qp(W,Ie)&&ie()};for(let Ie=0;Ie<k.length;Ie++){let te=k[Ie];if(te.type==="user"){if(!te.content||!te.content.trim())continue;ie(),$.push({type:"user",id:U(te),message:te});continue}if(te.type==="system"||te.type==="error"){ie(),$.push({type:te.type,id:U(te),message:te});continue}if(!(te.type==="tool-result"||te.type==="tool_result")){if(te.type==="tool-summary"){Fe(te),W||ce(te),be(te),te.isHistory&&(W.isHistory=!0),W.toolSummaryCount+=Number(te.count||te.omittedCount||0)||0,W.messages.push(te);continue}if(te.type==="assistant"){Fe(te),W||ce(te),Xr(W,te),te.isStreaming&&(W.isStreaming=!0),te.isHistory&&(W.isHistory=!0),te.id&&/^m\d+$/.test(te.id)&&(W.atMessageId=te.id),be(te),W.messages.push(te);continue}if(te.type==="tool-use"){Fe(te),W||ce(te),be(te);let ut=k[Ie+1],Rr=ut&&(ut.type==="tool-result"||ut.type==="tool_result"),An={...te,hasResult:Rr||te.hasResult||!1,toolResult:te.toolResult||null};te.isHistory&&(W.isHistory=!0),te.toolName==="TodoWrite"?W.todoMsg=An:te.toolName==="AskUserQuestion"?W.askMsg=An:W.toolMsgs.push(An),W.messages.push(te);continue}if(te.type==="chat-image"){Fe(te),W||ce(te),be(te),te.isHistory&&(W.isHistory=!0),W.imageMsgs.push(te),W.messages.push(te);continue}ie(),$.push({type:te.type||"unknown",id:U(te),message:te})}}return ie(),$}),D=Vue.computed(()=>{let k=[],$=null,W=()=>{$&&k.push($),$=null};return O.value.forEach(ie=>{if(!ie||ie.type==="system"||ie.type==="error"){W(),k.push(ie);return}let be=N(ie);if(ie.type==="user"||!$){W(),$={type:"message-block",id:`block_${q(be.uiKey)}`,uiKey:be.uiKey,vpId:be.vpId,messageId:be.messageId,items:[ie]};return}$.items.push(ie),!$.vpId&&be.vpId&&($.vpId=be.vpId)}),W(),k}),Z=Vue.computed(()=>{let k=s.yeaftReflectionCards||{},$=s.yeaftConversationId,W={__orphans:[]},ie=Object.values(k).filter(ce=>ce&&ce.conversationId===$).sort((ce,Fe)=>(ce.anchorOrder||0)-(Fe.anchorOrder||0)||(ce.updatedAt||0)-(Fe.updatedAt||0)),be=new Set;for(let ce of s.messages||[])ce&&ce.id&&be.add(ce.id);for(let ce of ie)ce.anchorMsgId&&be.has(ce.anchorMsgId)?(W[ce.anchorMsgId]||(W[ce.anchorMsgId]=[]),W[ce.anchorMsgId].push(ce)):W.__orphans.push(ce);return W}),ne=k=>k?k.type==="assistant-turn"?k.atMessageId||null:k.message&&k.message.id||null:null,ye=k=>{let $=ne(k);return $?(Z.value||{})[$]||[]:[]},Y=Vue.computed(()=>(Z.value||{}).__orphans||[]),ee=Vue.computed(()=>{let k=s.yeaftSubAgentCards||{},$=s.yeaftConversationId,W={__orphans:[]},ie=Object.values(k).filter(ce=>ce&&ce.conversationId===$).sort((ce,Fe)=>(ce.anchorOrder||0)-(Fe.anchorOrder||0)||(ce.updatedAt||0)-(Fe.updatedAt||0)),be=new Set;for(let ce of s.messages||[])ce&&ce.id&&be.add(ce.id);for(let ce of ie)ce.anchorMsgId&&be.has(ce.anchorMsgId)?(W[ce.anchorMsgId]||(W[ce.anchorMsgId]=[]),W[ce.anchorMsgId].push(ce)):W.__orphans.push(ce);return W}),ue=k=>{let $=ne(k);return $?(ee.value||{})[$]||[]:[]},le=Vue.computed(()=>(ee.value||{}).__orphans||[]),Ce=Vue.ref(!0),xe=Vue.ref(!1),$e=Nt.bottomThreshold,je=Nt.resumeBottomThreshold,yt=!0,bt=Vue.computed(()=>s.messages.some(k=>k.isStreaming)),rs=Vue.computed(()=>!s.activeConversationId||D.value.length>0?!1:s.currentView==="yeaft"?!!s.yeaftInitialHistoryLoading:!!s.sessionLoading),gn=Vue.computed(()=>s.currentView==="yeaft"&&!!s.yeaftLoadingMoreHistory&&s.activeYeaftHistoryState?.mode==="older"),Wt=Vue.computed(()=>s.currentView==="yeaft"?"":s.sessionLoadingText||""),Rt=Vue.computed(()=>!!s.sessionLoading&&!rs.value),_t=Vue.computed(()=>s.isProcessing&&!bt.value),Xe=Vue.ref(Date.now()),wt=null,mn=()=>{wt||(wt=setInterval(()=>{Xe.value=Date.now()},1e3))},H=()=>{wt&&(clearInterval(wt),wt=null)};Vue.watch(bt,k=>{k?(Xe.value=Date.now(),mn()):H()},{immediate:!0}),Vue.onBeforeUnmount(()=>H());let G=Vue.ref(0),de=Vue.ref(Date.now()),fe=null,we=null,Te=Vue.ref("cat"),Ze=new URLSearchParams(window.location.search).get("preview"),Ue=Vue.ref(0),Je=Vue.ref(1),qe=Vue.ref(5),Be=Vue.ref(95),We=Vue.ref("bark-both"),Ke=Vue.ref(1),ze=Vue.ref(-1),dt=null;function Rs(){if(!G.value)return;de.value=Date.now();let k=(de.value-G.value)%19e3;if(k<4e3)Ue.value=0,Je.value=1;else if(k<11500){let $=k-4e3,W;$<2500?W=$/2500*16:$<5e3?W=16+($-2500)/2500*29:W=45+($-5e3)/2500*55,Ue.value=W,Je.value=1}else k<14e3?(Ue.value=(1-(k-11500)/2500)*100,Je.value=-1):(Ue.value=0,Je.value=1);we=requestAnimationFrame(Rs)}function hn(){if(!G.value||Te.value!=="dog")return;de.value=Date.now();let k=(de.value-G.value)%18e3;if(k<2e3)qe.value=5,Be.value=95,We.value="bark-both",Ke.value=1,ze.value=-1;else if(k<5e3){let $=(k-2e3)/3e3;qe.value=5+$*25,Be.value=95,We.value="left-approach",Ke.value=1,ze.value=-1}else if(k<8e3){let $=(k-5e3)/3e3;qe.value=30,Be.value=95-$*25,We.value="right-approach",Ke.value=1,ze.value=-1}else if(k<1e4){let $=(k-8e3)/2e3;qe.value=30+$*13,Be.value=70-$*13,We.value="both-approach",Ke.value=1,ze.value=-1}else if(k<11e3)qe.value=43,Be.value=57,We.value="snap",Ke.value=1,ze.value=-1;else if(k<12500)qe.value=43,Be.value=57,We.value="stunned",Ke.value=1,ze.value=-1;else if(k<15e3){let $=(k-12500)/2500;qe.value=43-$*38,Be.value=57+$*38,We.value="retreat",Ke.value=-1,ze.value=1}else k<17e3?(qe.value=5,Be.value=95,We.value="rehang",Ke.value=-1,ze.value=1):(qe.value=5,Be.value=95,We.value="reset",Ke.value=1,ze.value=-1);dt=requestAnimationFrame(hn)}let ro=Vue.computed(()=>{let k=qe.value*1.2;return Ke.value<0?`translate(${k+13.5}, 0) scale(-1, 1)`:`translate(${k-13.5}, 0)`}),io=Vue.computed(()=>{let k=Be.value*1.2;return ze.value>0?`translate(${k-10.5}, 2)`:`translate(${k+10.5}, 2) scale(-1, 1)`}),br=Vue.computed(()=>{let k=We.value;return k==="bark-both"||k==="left-approach"||k==="right-approach"||k==="both-approach"||k==="reset"}),oo=Vue.computed(()=>{let k=qe.value*1.2,$=10;if(br.value){let be=Math.max(0,(k-3)*.12);return`M3,18 Q${(3+k)/2},${18+be} ${k},${$}`}if(We.value==="rehang")return`M${k},${$} Q${k-3},20 3,18`;let W=Ke.value<0?1:-1,ie=k+W*8;return`M${k},${$} Q${k},18 ${ie},22`}),ao=Vue.computed(()=>{let k=Be.value*1.2,$=10;if(br.value){let be=Math.max(0,(118-k)*.12);return`M118,18 Q${(118+k)/2},${18+be} ${k},${$}`}if(We.value==="rehang")return`M${k},${$} Q${k+3},20 118,18`;let W=ze.value>0?-1:1,ie=k+W*8;return`M${k},${$} Q${k},18 ${ie},22`}),lo=Vue.computed(()=>We.value==="snap"?.2:.4),co=Vue.computed(()=>We.value==="snap"?.2:.4),uo=Vue.computed(()=>qe.value*1.2),po=Vue.computed(()=>Be.value*1.2),vn=Ze==="cat"||Ze==="dog"||Ze==="animation",wr=600,yn=Vue.ref(!1),Oe=null,bn=Vue.computed(()=>vn?!0:yn.value);Vue.watch(_t,k=>{if(k)Oe&&(clearTimeout(Oe),Oe=null),yn.value=!0,G.value=Date.now(),de.value=Date.now(),Te.value="cat",Ue.value=0,Je.value=1,qe.value=5,Be.value=95,We.value="bark-both",Ke.value=1,ze.value=-1,Te.value==="cat"?we=requestAnimationFrame(Rs):dt=requestAnimationFrame(hn);else{let $=G.value?Date.now()-G.value:wr,W=Math.max(0,wr-$),ie=()=>{Oe=null,yn.value=!1,G.value=0,Ue.value=0,Je.value=1,we&&(cancelAnimationFrame(we),we=null),dt&&(cancelAnimationFrame(dt),dt=null)};W===0?ie():(Oe&&clearTimeout(Oe),Oe=setTimeout(ie,W))}},{immediate:!0}),vn&&(G.value=Date.now(),de.value=Date.now(),Ze==="dog"?Te.value="dog":Te.value="cat",Te.value==="cat"?we=requestAnimationFrame(Rs):(qe.value=5,Be.value=95,We.value="bark-both",Ke.value=1,ze.value=-1,dt=requestAnimationFrame(hn)));let fo=Vue.computed(()=>{if(!s.isProcessing)return null;if(s.connectionState!=="connected")return"disconnected";let k=s.currentConversation;if(s.compactStatus?.conversationId===k&&s.compactStatus?.status==="compacting")return"compacting";let $=s.sessionHealth?.[k];return $?$.status:G.value&&de.value-G.value>8e3?"thinking":null}),go=Vue.computed(()=>{if(!G.value)return"speed-napping";let k=(de.value-G.value)%19e3;return k>=16e3?"speed-petted":k>=14e3?"speed-tired":k>=11500?"speed-crazy":k>=9e3?"speed-turbo":k>=6500?"speed-fast":k>=4e3?"speed-normal":"speed-napping"}),mo=Vue.computed(()=>{let k=Ue.value,$=Je.value,ie={left:`calc(40px + (100% - 80px) * ${k/100})`};return $<0&&(ie.transform="scaleX(-1)"),ie});function is(){let k=s.currentConversation;if(!k)return;let $=s.conversations.find(W=>W.id===k);s.sendWsMessage({type:"refresh_conversation",conversationId:k,agentId:$?.agentId})}let os=()=>{if(!o.value)return!0;let{scrollTop:k,scrollHeight:$,clientHeight:W}=o.value;return As({scrollTop:k,scrollHeight:$,clientHeight:W,threshold:$e})},wn=(k,$=0,{allowContinuation:W=!1}={})=>{if(k>Np($)){yt=!0;return}W&&(yt=!0),!(!yt||!_s())&&(yt=!1,Ir())},kr=k=>{if(!k)return"";let W=(Array.isArray(k.items)?k.items:[])[0]||null;return[k.type||"",k.messageId||"",k.turnId||"",k.vpId||"",W?.id||"",W?.turnId||"",W?.messageId||""].join(":")},kn=()=>{let k=D.value||[];return{blockCount:k.length,firstBlockIdentity:kr(k[0])}},ho=(k,$)=>!k||!$?!1:$.blockCount>k.blockCount||$.firstBlockIdentity!==k.firstBlockIdentity,Sn=k=>{Vue.nextTick(()=>{if(!o.value)return;let $=kn();ho(k,$)&&wn(o.value.scrollTop||0,o.value.clientHeight||0,{allowContinuation:!0})})},Sr=({scrollTop:k,scrollHeight:$,clientHeight:W})=>{let ie=As({scrollTop:k,scrollHeight:$,clientHeight:W,threshold:$e});return Ce.value=ie,xe.value=!ie,ie},In=()=>{xe.value=!1,Ce.value=!0,a.value?.setBottomFollowEnabled?.(!0)},st=()=>{xe.value=!0,Ce.value=!1,a.value?.setBottomFollowEnabled?.(!1),a.value?.cancelPendingBottomFollow?.()},vo=({scrollTop:k,scrollHeight:$,clientHeight:W})=>{let ie=As({scrollTop:k||0,scrollHeight:$||0,clientHeight:W||0,threshold:$e});Ce.value=qp({following:!xe.value,atBottom:ie}),xe.value=!Ce.value,a.value?.setBottomFollowEnabled?.(Ce.value),kt||(as=Number(k||0)),wn(k||0,W||0)},yo=(k,$)=>{let W=kn();if(!o.value){k(),Sn(W);return}let ie=o.value.scrollHeight,be=o.value.scrollTop,ce=!1,Fe=null,Ie=()=>{ce||(ce=!0,Fe&&Fe(),Vue.nextTick(()=>{if(!o.value)return;let te=o.value.scrollHeight;o.value.scrollTop=te-ie+be,Sn(W)}))};$&&(Fe=Vue.watch($,te=>{te||Ie()})),k(),Vue.nextTick(()=>{(!$||!$())&&Ie()})},bo=()=>{if(s.hasHiddenYeaftMessages){s.expandYeaftMessageWindow();return}s.loadMoreYeaftHistory()},_s=()=>s.currentView==="yeaft"?s.hasHiddenYeaftMessages||s.yeaftHasMoreHistory&&!s.yeaftLoadingMoreHistory&&s.yeaftOldestLoadedSeq!=null:!!s.currentConversation&&s.hasMoreMessages&&!s.loadingMoreMessages,Ir=()=>{if(!_s())return;let k=s.currentView==="yeaft";yo(k?bo:()=>s.loadMoreMessages(),k?()=>s.yeaftLoadingMoreHistory:()=>s.loadingMoreMessages)},kt=!1,Cn=!1,nt=null,as=0,wo=250,Cr=()=>{kt=!1,nt&&(clearTimeout(nt),nt=null)},Es=()=>{Cn||(nt&&clearTimeout(nt),nt=setTimeout(Cr,wo))},Ds=k=>{kt=!0,a.value?.clearTargetAnchor?.(),as=Number(o.value?.scrollTop||0),Number(k?.deltaY)<0&&st(),Es()},Ar=k=>{Wp(k,o.value)&&(Cn=!0,kt=!0,a.value?.clearTargetAnchor?.(),as=Number(o.value?.scrollTop||0),nt&&(clearTimeout(nt),nt=null))},Ls=()=>{Cn=!1,Es()},xr=k=>{jp(k,o.value)&&((k.key==="ArrowUp"||k.key==="PageUp"||k.key==="Home")&&st(),kt=!0,a.value?.clearTargetAnchor?.(),Es())},jt=()=>{let k=Number(o.value?.scrollTop||0),$=kt?k-as:0,W=!xe.value;as=k;let ie=os(),be=As({scrollTop:k,scrollHeight:o.value?.scrollHeight||0,clientHeight:o.value?.clientHeight||0,threshold:je});Ce.value=Bp({following:W,atBottom:ie,resumeBoundaryReached:be,direction:$}),xe.value=!Ce.value,a.value?.setBottomFollowEnabled?.(Ce.value),Ce.value&&Et(),kt&&Es(),o.value&&wn(o.value.scrollTop||0,o.value.clientHeight||0)},Et=()=>{s.currentView==="yeaft"&&s.pruneYeaftMessageWindow()},$s=()=>{o.value&&(o.value.scrollTop=o.value.scrollHeight,In(),Et())},ko=()=>{In(),Vue.nextTick($s)},Tr=()=>{!xe.value&&Ce.value&&(Et(),Vue.nextTick($s))},Mr=k=>{if(!k)return"";if(Array.isArray(k.items))return k.items.map(Mr).join(",");let $=k.message||{};return[k.type||"",k.id||"",k.atMessageId||"",k.turnId||"",k.messageId||"",k.speakerVpId||"",$.id||"",$.content?String($.content).length:0,k.textContent?String(k.textContent).length:0,k.isStreaming||$.isStreaming?"streaming":"done"].join(":")},So=Vue.computed(()=>{let k=D.value||[];return[s.activeConversationId||"",E.value||"",Mr(k[k.length-1])].join("|")});Vue.watch(()=>[s.currentConversation,R.value.length,n.token],()=>{let k=n.token||"";k!==se&&(se=k,me()),T()},{immediate:!0}),Vue.watch(So,Tr),Vue.watch(bn,k=>{k&&Tr()}),Vue.watch(()=>[s.activeConversationId,E.value],()=>{for(let k of Object.keys(l))delete l[k];for(let k of Object.keys(c))delete c[k];for(let k of Object.keys(d))delete d[k];In(),Vue.nextTick($s)});let ls=Vue.ref(null),Pr=0;return t({revealMessage:async k=>k?(st(),await rf({blocks:D.value,target:k,collapseStates:d,nextTick:Vue.nextTick,scrollToBlock:(W,ie)=>(st(),a.value?.scrollToKey?.(W,ie)),findRow:W=>{let ie=o.value?.querySelectorAll?.("[data-msg-id]")||[];return Array.from(ie).find(be=>be?.dataset?.msgId===W)||null},anchorRow:(W,ie,be,ce)=>a.value?.anchorTarget?.(W,be,ce),flashRow:W=>{let ie=++Pr;ls.value=W,setTimeout(()=>{ie===Pr&&(ls.value=null)},1800)}})):!1}),Vue.onMounted(()=>{$s(),o.value&&(o.value.addEventListener("wheel",Ds,{passive:!0}),o.value.addEventListener("touchmove",Ds,{passive:!0}),o.value.addEventListener("pointerdown",Ar,{passive:!0}),o.value.addEventListener("scroll",jt)),window.addEventListener("pointerup",Ls,{passive:!0}),window.addEventListener("pointercancel",Ls,{passive:!0}),window.addEventListener("keydown",xr)}),Vue.onUnmounted(()=>{o.value&&(o.value.removeEventListener("wheel",Ds),o.value.removeEventListener("touchmove",Ds),o.value.removeEventListener("pointerdown",Ar),o.value.removeEventListener("scroll",jt)),window.removeEventListener("pointerup",Ls),window.removeEventListener("pointercancel",Ls),window.removeEventListener("keydown",xr),Cr(),fe&&(clearInterval(fe),fe=null),Oe&&(clearTimeout(Oe),Oe=null),we&&(cancelAnimationFrame(we),we=null),dt&&(cancelAnimationFrame(dt),dt=null)}),{store:s,containerRef:o,virtualTranscriptRef:a,flashMsgId:ls,hasStreamingMessage:bt,nowMs:Xe,showTypingDots:_t,showInitialMessagesLoading:rs,showYeaftOlderHistoryLoading:gn,showSessionLoadingOverlay:Rt,initialMessagesLoadingText:Wt,previewShowTypingDots:bn,isPreviewMode:vn,waitingStatus:fo,animationType:Te,catSpeed:go,catStyle:mo,dogPhase:We,spikeTransform:ro,teddyTransform:io,leashPathL:oo,leashPathR:ao,leashOpacityL:lo,leashOpacityR:co,questionLX:uo,questionRX:po,refreshSession:is,onlineAgents:R,welcomeInstallCommand:ae,welcomeLlmCommand:ve,welcomeServiceCommand:ge,welcomeSetupLoading:_,welcomeSetupError:j,copyWelcomeCommand:K,turnGroups:O,messageBlocks:D,virtualTranscriptIdentity:V,estimateMessageBlockHeight:m,visibleItemsForBlock:b,collapsedResponsePreviewLines:I,collapsedResponsePreviewSpeaker:y,responseToggleBelongsToItem:w,showBlockResponseToggle:v,toggleMessageTurnResponse:h,responseCollapseLabel:M,turnUiKey:u,assistantTurnActionsExpandedFor:f,setAssistantTurnActionsExpanded:p,toolExpandStates:c,setToolExpanded:g,cardsForRow:ye,orphanCards:Y,subAgentCardsForRow:ue,orphanSubAgentCards:le,useImStyleForUser:L,onClickLoadMore:Ir,onVirtualTranscriptScrollState:vo,isAtBottom:Ce,scrollToLatest:ko}}}});function Pi(...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 cf(e,t,s){let n=t?e?.slashCommandsMap?.[t]:null;return e?.currentView==="yeaft"?Pi(n):Pi(n,s?e?.slashCommandsMap?.[`agent:${s}`]:null,e?.slashCommandsMap?.__preload__)}function Fy(e,t={},s=new Set){if(Oy.has(e)||Object.prototype.hasOwnProperty.call(Mi,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 df(e,t={}){if(Ti[e])return Ti[e];if(Mi[e])return Mi[e];let s=e.startsWith("/")?e.slice(1):e;return t[s]?t[s]:Ny(s)}function Ny(e){return(e.includes(":")?e.split(":").pop():e).replace(/-/g," ").replace(/^\w/,s=>s.toUpperCase())}function uf(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=Fy(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)=>(of[o]??99)-(of[a]??99));return i.map((o,a)=>({label:qy[o]||o,items:r[o],isLast:a===i.length-1}))}var Ti,Oy,af,Mi,lf,qy,of,pf=F(()=>{Ti={"/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"},Oy=new Set(Object.keys(Ti)),af=Object.keys(Ti),Mi={"/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"},lf=Object.keys(Mi);qy={skill:"Skills",builtin:"Built-in",project:"Commands"},of={skill:0,project:1,builtin:2}});function Uy(e){return!(!e||typeof e!="string"||e.length<1||e.length>40||e.startsWith("_")||Wy.test(e)||By.has(e.toLowerCase()))}function Ri(e){if(!e||typeof e!="string")return{text:e||"",mentions:[]};let t=new Set;ff.lastIndex=0;let s;for(;(s=ff.exec(e))!==null;){let n=s[2];if(Uy(n)&&!t.has(n)&&(t.add(n),t.size>=jy))break}return{text:e,mentions:Array.from(t)}}var By,ff,Wy,jy,al=F(()=>{By=new Set(["all","user","system","everyone"]),ff=/(^|[\s\p{P}])@([A-Za-z0-9_-]{1,40})(?=$|[\s\p{P}])/gu,Wy=/^[0-9]+$/,jy=32});function gf(e){let t=typeof e?.vpId=="string"?e.vpId:"";return ll.has(t)?ll.get(t):e?.isStock===!0?"other":"custom"}function xs(e){let t=new Map(_i.map(s=>[s.id,[]]));for(let s of Array.isArray(e)?e:[])!s||typeof s.vpId!="string"||!s.vpId||t.get(gf(s)).push(s);return _i.map(s=>({id:s.id,labelKey:s.labelKey,vps:t.get(s.id)})).filter(s=>s.vps.length>0)}function ur(e){return xs(e).flatMap(t=>t.vps)}function mf(e){let t=new Map(_i.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=gf(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 Ky,_i,ll,pr=F(()=>{Ky=[{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:[]}],_i=Object.freeze(Ky.map(e=>Object.freeze({id:e.id,labelKey:e.labelKey,vpIds:Object.freeze([...e.vpIds])}))),ll=new Map;for(let e of _i)for(let t of e.vpIds)ll.set(t,e.id)});function cl(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 ur(c).slice(0,hf)}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 S of u){let w=String(S||"").toLowerCase();if(w&&w.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(S=>String(S||"").toLowerCase()),b=typeof t=="string"?t:"",I=p.includes(n)||b&&g.includes(b),y=n&&m.some(S=>S.includes(n));(I||y)&&l(c,o)}return[...ur(r),...ur(i),...ur(o)].slice(0,hf)}function dl(e="chat-input"){return`${e}-vp-mention-listbox`}function ul(e,t){let s=String(t||"").replace(/[^A-Za-z0-9_.:-]/g,"-");return`${e}-vp-mention-option-${s}`}function zy(e){let t=0;return mf(e).map(s=>({...s,items:s.vps.map(n=>({vp:n,flatIndex:t++}))}))}function vf(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 yf(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 hf,bf,wf=F(()=>{pr();hf=12;bf={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:`
|
|
1676
|
+
`,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=k=>String(k?.id||k?.turnId||k?.messageId||k?.atMessageId||k?.message?.id||"turn_unknown"),f=k=>{let $=u(k);return Object.prototype.hasOwnProperty.call(l,$)?!!l[$]:!1},p=(k,$)=>{l[u(k)]=!!$},g=({key:k,value:$}={})=>{k&&(c[k]=!!$)},m=k=>{let $=ef(k,es);return Number.isFinite($)?$:es(k)},b=k=>Ai(k),I=k=>{let $=Array.isArray(k?.collapsedResponsePreview)?k.collapsedResponsePreview:Jp(k);return Array.isArray($)?$:$?[String($)]:[]},y=k=>{let $=Array.isArray(k?.items)?k.items.find(te=>dr(te)):null,W=$?.speakerVpId||$?.vpId||$?.message?.speakerVpId||$?.message?.vpId||k?.vpId||"",oe=W&&r&&typeof r.vpLabel=="function"?r.vpLabel(W)||W:W||(typeof i=="function"?i("message.assistant"):"Assistant"),be=W&&r&&typeof r.vpTextColor=="function"?{color:r.vpTextColor(W)}:{},ce=$?.speakerTimestamp||$?.timestamp||$?.createdAt||$?.message?.timestamp||$?.message?.createdAt||0,Fe="",Ie="";if(ce)try{let te=new Date(ce);Number.isNaN(te.getTime())||(Fe=xt(ce),Ie=te.toLocaleString())}catch{}return{name:oe,style:be,timeText:Fe,fullTimeText:Ie}},S=k=>{let $=Array.isArray(k?.items)?k.items:[];for(let W=$.length-1;W>=0;W-=1)if(dr($[W]))return $[W];return null},w=(k,$)=>!k?.responseCollapsible||!$?!1:S(k)===$,v=k=>!!(k?.responseCollapsible&&!Ai(k).some($=>w(k,$))),h=k=>{let $=k?.responseCollapseKey;$&&(d[$]=!k.responseCollapsed)},M=k=>{let $=Number(k?.responseCount||0),W=k?.responseCollapsed?"message.showResponses":"message.hideResponses",oe=(typeof i=="function"?i(W):"")||(k?.responseCollapsed?"Show {count} response(s)":"Hide response(s)");return String(oe).replace("{count}",String($))},x=(()=>{try{return window.Pinia?.useSessionsStore?.()||null}catch{return null}}),E=Vue.computed(()=>{if(s.currentView!=="yeaft")return null;let k=x();if(!k)return null;let $=s.yeaftActiveSessionFilter||null;return $&&typeof k.sessionById=="function"&&k.sessionById($,s.currentAgent||null)?$:k.activeSessionId&&typeof k.sessionById=="function"&&k.sessionById(k.activeSessionId,s.currentAgent||null)?k.activeSessionId:null}),V=Vue.computed(()=>{let k=s.currentView||"",$=s.currentAgent||"";if(k==="yeaft"){let W=s.yeaftActiveSessionFilter||E.value||"__all__";return[k,$,W].join("")}return[k,$,s.activeConversationId||""].join("")}),L=Vue.computed(()=>E.value!==null),R=Vue.computed(()=>s.agents.filter(k=>k.online)),P=Vue.ref(null),A=Vue.ref(null),_=Vue.ref(!1),j=Vue.ref(""),B=null,z=0,se=n.token||"",me=()=>{P.value=null,A.value=null,j.value="",B=null,z+=1},ae=fi(),ve=gi(),ge=Vue.computed(()=>mi({profile:P.value,agentSecret:A.value,serverWsUrl:rr(location)})),pe=()=>{let k={"Content-Type":"application/json"};return n.token&&(k.Authorization=`Bearer ${n.token}`),k},T=async()=>{if(R.value.length>0||s.currentConversation)return;if(A.value||B)return B;_.value=!0,j.value="";let k=++z;return B=(async()=>{let $=n.token||"",W=pe(),[oe,be]=await Promise.all([fetch("/api/user/profile",{headers:W}),fetch("/api/user/agent-secret",{headers:W})]),ce=oe.ok?await oe.json():null;if(k!==z||$!==(n.token||""))return;if(ce&&(P.value=ce),!be.ok){let te="";try{te=(await be.json())?.error||""}catch{}throw new Error(te||"Failed to load Agent secret")}let Fe=await be.json();if(k!==z||$!==(n.token||""))return;let Ie=Fe?.agentSecret||Fe?.agent_secret||null;A.value=Ie&&String(Ie).trim()?String(Ie):null})().catch($=>{k===z&&(j.value=$?.message||"Failed to load Agent secret")}).finally(()=>{k===z&&(_.value=!1,B=null)}),B},K=async k=>{if(k)try{await navigator.clipboard.writeText(k)}catch{}},re=new WeakMap,he=0,Pe=(k,$)=>{let W=k?.message&&typeof k.message=="object"?k.message:Array.isArray(k?.messages)&&k.messages[0]&&typeof k.messages[0]=="object"?k.messages[0]:$&&typeof $=="object"?$:k&&typeof k=="object"?k:null;if(!W)return`legacy_render_${++he}`;let oe=re.get(W);return oe||(oe=`legacy_render_${++he}`,re.set(W,oe)),oe},U=k=>{let $=k?.message||k||null;return k?.entryId||k?.uiKey||k?.stableKey||$?.entryId||$?.uiKey||$?.stableKey||k?.atMessageId||k?.messageId||$?.messageId||k?.id||$?.id||Pe(k,$)},q=k=>encodeURIComponent(String(k||"legacy")),N=k=>{let $=k?.message||null,W=U(k),oe=k?.id||k?.atMessageId||$?.id||$?.messageId||W,be=k?.speakerVpId||k?.vpId||$?.speakerVpId||$?.vpId||"";return{id:`message_${q(W)}`,uiKey:W,vpId:be,messageId:oe}},O=Vue.computed(()=>{let k=s.currentView==="yeaft"?Gp(s.messages):s.messages,$=[],W=null,oe=()=>{if(W){W.isActive=!!(W.turnId&&Object.values(s.activeVpTurns||{}).some(ut=>((ut?.turnId||null)===W.turnId||!ut?.turnId&&s.activeVpTurns?.[W.turnId]===ut)&&(!s.currentAgent||!ut?.agentId||ut.agentId===s.currentAgent))),Zr(W);let Ie=!!(W.textContent||W.todoMsg||W.askMsg||W.imageMsgs.length>0),te=W.toolMsgs.length>0||W.toolSummaryCount>0;(Ie||te)&&(W.showSpeakerHeader=!!W.speakerVpId,$.push(W)),W=null}},be=Ie=>{if(W){if(!W.speakerVpId){let te=Ie.speakerVpId||Ie.vpId;te&&(W.speakerVpId=te,W.speakerTimestamp=typeof Ie.timestamp=="number"&&Ie.timestamp>0?Ie.timestamp:typeof Ie.createdAt=="number"?Ie.createdAt:0,typeof Ie.lastStateChangeCause=="string"&&!W.speakerStateCause&&(W.speakerStateCause=Ie.lastStateChangeCause))}!W.turnId&&Ie.turnId&&(W.turnId=Ie.turnId)}},ce=(Ie=null)=>{let te=U(Ie);W={type:"assistant-turn",id:`response_${q(te)}`,uiKey:te,...Ie?.entryId?{entryId:Ie.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}},Fe=Ie=>{Qp(W,Ie)&&oe()};for(let Ie=0;Ie<k.length;Ie++){let te=k[Ie];if(te.type==="user"){if(!te.content||!te.content.trim())continue;oe(),$.push({type:"user",id:U(te),message:te});continue}if(te.type==="system"||te.type==="error"){oe(),$.push({type:te.type,id:U(te),message:te});continue}if(!(te.type==="tool-result"||te.type==="tool_result")){if(te.type==="tool-summary"){Fe(te),W||ce(te),be(te),te.isHistory&&(W.isHistory=!0),W.toolSummaryCount+=Number(te.count||te.omittedCount||0)||0,W.messages.push(te);continue}if(te.type==="assistant"){Fe(te),W||ce(te),Xr(W,te),te.isStreaming&&(W.isStreaming=!0),te.isHistory&&(W.isHistory=!0),te.id&&/^m\d+$/.test(te.id)&&(W.atMessageId=te.id),be(te),W.messages.push(te);continue}if(te.type==="tool-use"){Fe(te),W||ce(te),be(te);let ut=k[Ie+1],Rr=ut&&(ut.type==="tool-result"||ut.type==="tool_result"),An={...te,hasResult:Rr||te.hasResult||!1,toolResult:te.toolResult||null};te.isHistory&&(W.isHistory=!0),te.toolName==="TodoWrite"?W.todoMsg=An:te.toolName==="AskUserQuestion"?W.askMsg=An:W.toolMsgs.push(An),W.messages.push(te);continue}if(te.type==="chat-image"){Fe(te),W||ce(te),be(te),te.isHistory&&(W.isHistory=!0),W.imageMsgs.push(te),W.messages.push(te);continue}oe(),$.push({type:te.type||"unknown",id:U(te),message:te})}}return oe(),$}),D=Vue.computed(()=>{let k=[],$=null,W=()=>{$&&k.push($),$=null};return O.value.forEach(oe=>{if(!oe||oe.type==="system"||oe.type==="error"){W(),k.push(oe);return}let be=N(oe);if(oe.type==="user"||!$){W(),$={type:"message-block",id:`block_${q(be.uiKey)}`,uiKey:be.uiKey,vpId:be.vpId,messageId:be.messageId,items:[oe]};return}$.items.push(oe),!$.vpId&&be.vpId&&($.vpId=be.vpId)}),W(),k}),Z=Vue.computed(()=>{let k=s.yeaftReflectionCards||{},$=s.yeaftConversationId,W={__orphans:[]},oe=Object.values(k).filter(ce=>ce&&ce.conversationId===$).sort((ce,Fe)=>(ce.anchorOrder||0)-(Fe.anchorOrder||0)||(ce.updatedAt||0)-(Fe.updatedAt||0)),be=new Set;for(let ce of s.messages||[])ce&&ce.id&&be.add(ce.id);for(let ce of oe)ce.anchorMsgId&&be.has(ce.anchorMsgId)?(W[ce.anchorMsgId]||(W[ce.anchorMsgId]=[]),W[ce.anchorMsgId].push(ce)):W.__orphans.push(ce);return W}),ne=k=>k?k.type==="assistant-turn"?k.atMessageId||null:k.message&&k.message.id||null:null,ye=k=>{let $=ne(k);return $?(Z.value||{})[$]||[]:[]},Y=Vue.computed(()=>(Z.value||{}).__orphans||[]),ee=Vue.computed(()=>{let k=s.yeaftSubAgentCards||{},$=s.yeaftConversationId,W={__orphans:[]},oe=Object.values(k).filter(ce=>ce&&ce.conversationId===$).sort((ce,Fe)=>(ce.anchorOrder||0)-(Fe.anchorOrder||0)||(ce.updatedAt||0)-(Fe.updatedAt||0)),be=new Set;for(let ce of s.messages||[])ce&&ce.id&&be.add(ce.id);for(let ce of oe)ce.anchorMsgId&&be.has(ce.anchorMsgId)?(W[ce.anchorMsgId]||(W[ce.anchorMsgId]=[]),W[ce.anchorMsgId].push(ce)):W.__orphans.push(ce);return W}),ue=k=>{let $=ne(k);return $?(ee.value||{})[$]||[]:[]},le=Vue.computed(()=>(ee.value||{}).__orphans||[]),Ce=Vue.ref(!0),xe=Vue.ref(!1),$e=Nt.bottomThreshold,je=Nt.resumeBottomThreshold,yt=!0,bt=Vue.computed(()=>s.messages.some(k=>k.isStreaming)),rs=Vue.computed(()=>!s.activeConversationId||D.value.length>0?!1:s.currentView==="yeaft"?!!s.yeaftInitialHistoryLoading:!!s.sessionLoading),gn=Vue.computed(()=>s.currentView==="yeaft"&&!!s.yeaftLoadingMoreHistory&&s.activeYeaftHistoryState?.mode==="older"),Wt=Vue.computed(()=>s.currentView==="yeaft"?"":s.sessionLoadingText||""),Rt=Vue.computed(()=>!!s.sessionLoading&&!rs.value),_t=Vue.computed(()=>s.isProcessing&&!bt.value),Xe=Vue.ref(Date.now()),wt=null,mn=()=>{wt||(wt=setInterval(()=>{Xe.value=Date.now()},1e3))},H=()=>{wt&&(clearInterval(wt),wt=null)};Vue.watch(bt,k=>{k?(Xe.value=Date.now(),mn()):H()},{immediate:!0}),Vue.onBeforeUnmount(()=>H());let G=Vue.ref(0),de=Vue.ref(Date.now()),fe=null,we=null,Te=Vue.ref("cat"),Ze=new URLSearchParams(window.location.search).get("preview"),Ue=Vue.ref(0),Je=Vue.ref(1),qe=Vue.ref(5),Be=Vue.ref(95),We=Vue.ref("bark-both"),Ke=Vue.ref(1),ze=Vue.ref(-1),dt=null;function Rs(){if(!G.value)return;de.value=Date.now();let k=(de.value-G.value)%19e3;if(k<4e3)Ue.value=0,Je.value=1;else if(k<11500){let $=k-4e3,W;$<2500?W=$/2500*16:$<5e3?W=16+($-2500)/2500*29:W=45+($-5e3)/2500*55,Ue.value=W,Je.value=1}else k<14e3?(Ue.value=(1-(k-11500)/2500)*100,Je.value=-1):(Ue.value=0,Je.value=1);we=requestAnimationFrame(Rs)}function hn(){if(!G.value||Te.value!=="dog")return;de.value=Date.now();let k=(de.value-G.value)%18e3;if(k<2e3)qe.value=5,Be.value=95,We.value="bark-both",Ke.value=1,ze.value=-1;else if(k<5e3){let $=(k-2e3)/3e3;qe.value=5+$*25,Be.value=95,We.value="left-approach",Ke.value=1,ze.value=-1}else if(k<8e3){let $=(k-5e3)/3e3;qe.value=30,Be.value=95-$*25,We.value="right-approach",Ke.value=1,ze.value=-1}else if(k<1e4){let $=(k-8e3)/2e3;qe.value=30+$*13,Be.value=70-$*13,We.value="both-approach",Ke.value=1,ze.value=-1}else if(k<11e3)qe.value=43,Be.value=57,We.value="snap",Ke.value=1,ze.value=-1;else if(k<12500)qe.value=43,Be.value=57,We.value="stunned",Ke.value=1,ze.value=-1;else if(k<15e3){let $=(k-12500)/2500;qe.value=43-$*38,Be.value=57+$*38,We.value="retreat",Ke.value=-1,ze.value=1}else k<17e3?(qe.value=5,Be.value=95,We.value="rehang",Ke.value=-1,ze.value=1):(qe.value=5,Be.value=95,We.value="reset",Ke.value=1,ze.value=-1);dt=requestAnimationFrame(hn)}let ro=Vue.computed(()=>{let k=qe.value*1.2;return Ke.value<0?`translate(${k+13.5}, 0) scale(-1, 1)`:`translate(${k-13.5}, 0)`}),io=Vue.computed(()=>{let k=Be.value*1.2;return ze.value>0?`translate(${k-10.5}, 2)`:`translate(${k+10.5}, 2) scale(-1, 1)`}),br=Vue.computed(()=>{let k=We.value;return k==="bark-both"||k==="left-approach"||k==="right-approach"||k==="both-approach"||k==="reset"}),oo=Vue.computed(()=>{let k=qe.value*1.2,$=10;if(br.value){let be=Math.max(0,(k-3)*.12);return`M3,18 Q${(3+k)/2},${18+be} ${k},${$}`}if(We.value==="rehang")return`M${k},${$} Q${k-3},20 3,18`;let W=Ke.value<0?1:-1,oe=k+W*8;return`M${k},${$} Q${k},18 ${oe},22`}),ao=Vue.computed(()=>{let k=Be.value*1.2,$=10;if(br.value){let be=Math.max(0,(118-k)*.12);return`M118,18 Q${(118+k)/2},${18+be} ${k},${$}`}if(We.value==="rehang")return`M${k},${$} Q${k+3},20 118,18`;let W=ze.value>0?-1:1,oe=k+W*8;return`M${k},${$} Q${k},18 ${oe},22`}),lo=Vue.computed(()=>We.value==="snap"?.2:.4),co=Vue.computed(()=>We.value==="snap"?.2:.4),uo=Vue.computed(()=>qe.value*1.2),po=Vue.computed(()=>Be.value*1.2),vn=Ze==="cat"||Ze==="dog"||Ze==="animation",wr=600,yn=Vue.ref(!1),Oe=null,bn=Vue.computed(()=>vn?!0:yn.value);Vue.watch(_t,k=>{if(k)Oe&&(clearTimeout(Oe),Oe=null),yn.value=!0,G.value=Date.now(),de.value=Date.now(),Te.value="cat",Ue.value=0,Je.value=1,qe.value=5,Be.value=95,We.value="bark-both",Ke.value=1,ze.value=-1,Te.value==="cat"?we=requestAnimationFrame(Rs):dt=requestAnimationFrame(hn);else{let $=G.value?Date.now()-G.value:wr,W=Math.max(0,wr-$),oe=()=>{Oe=null,yn.value=!1,G.value=0,Ue.value=0,Je.value=1,we&&(cancelAnimationFrame(we),we=null),dt&&(cancelAnimationFrame(dt),dt=null)};W===0?oe():(Oe&&clearTimeout(Oe),Oe=setTimeout(oe,W))}},{immediate:!0}),vn&&(G.value=Date.now(),de.value=Date.now(),Ze==="dog"?Te.value="dog":Te.value="cat",Te.value==="cat"?we=requestAnimationFrame(Rs):(qe.value=5,Be.value=95,We.value="bark-both",Ke.value=1,ze.value=-1,dt=requestAnimationFrame(hn)));let fo=Vue.computed(()=>{if(!s.isProcessing)return null;if(s.connectionState!=="connected")return"disconnected";let k=s.currentConversation;if(s.compactStatus?.conversationId===k&&s.compactStatus?.status==="compacting")return"compacting";let $=s.sessionHealth?.[k];return $?$.status:G.value&&de.value-G.value>8e3?"thinking":null}),go=Vue.computed(()=>{if(!G.value)return"speed-napping";let k=(de.value-G.value)%19e3;return k>=16e3?"speed-petted":k>=14e3?"speed-tired":k>=11500?"speed-crazy":k>=9e3?"speed-turbo":k>=6500?"speed-fast":k>=4e3?"speed-normal":"speed-napping"}),mo=Vue.computed(()=>{let k=Ue.value,$=Je.value,oe={left:`calc(40px + (100% - 80px) * ${k/100})`};return $<0&&(oe.transform="scaleX(-1)"),oe});function is(){let k=s.currentConversation;if(!k)return;let $=s.conversations.find(W=>W.id===k);s.sendWsMessage({type:"refresh_conversation",conversationId:k,agentId:$?.agentId})}let os=()=>{if(!o.value)return!0;let{scrollTop:k,scrollHeight:$,clientHeight:W}=o.value;return As({scrollTop:k,scrollHeight:$,clientHeight:W,threshold:$e})},wn=(k,$=0,{allowContinuation:W=!1}={})=>{if(k>Np($)){yt=!0;return}W&&(yt=!0),!(!yt||!_s())&&(yt=!1,Ir())},kr=k=>{if(!k)return"";let W=(Array.isArray(k.items)?k.items:[])[0]||null;return[k.type||"",k.messageId||"",k.turnId||"",k.vpId||"",W?.id||"",W?.turnId||"",W?.messageId||""].join(":")},kn=()=>{let k=D.value||[];return{blockCount:k.length,firstBlockIdentity:kr(k[0])}},ho=(k,$)=>!k||!$?!1:$.blockCount>k.blockCount||$.firstBlockIdentity!==k.firstBlockIdentity,Sn=k=>{Vue.nextTick(()=>{if(!o.value)return;let $=kn();ho(k,$)&&wn(o.value.scrollTop||0,o.value.clientHeight||0,{allowContinuation:!0})})},Sr=({scrollTop:k,scrollHeight:$,clientHeight:W})=>{let oe=As({scrollTop:k,scrollHeight:$,clientHeight:W,threshold:$e});return Ce.value=oe,xe.value=!oe,oe},In=()=>{xe.value=!1,Ce.value=!0,a.value?.setBottomFollowEnabled?.(!0)},et=()=>{xe.value=!0,Ce.value=!1,a.value?.setBottomFollowEnabled?.(!1),a.value?.cancelPendingBottomFollow?.()},vo=({scrollTop:k,scrollHeight:$,clientHeight:W})=>{let oe=As({scrollTop:k||0,scrollHeight:$||0,clientHeight:W||0,threshold:$e});Ce.value=qp({following:!xe.value,atBottom:oe}),xe.value=!Ce.value,a.value?.setBottomFollowEnabled?.(Ce.value),kt||(as=Number(k||0)),wn(k||0,W||0)},yo=(k,$)=>{let W=kn();if(!o.value){k(),Sn(W);return}let oe=o.value.scrollHeight,be=o.value.scrollTop,ce=!1,Fe=null,Ie=()=>{ce||(ce=!0,Fe&&Fe(),Vue.nextTick(()=>{if(!o.value)return;let te=o.value.scrollHeight;o.value.scrollTop=te-oe+be,Sn(W)}))};$&&(Fe=Vue.watch($,te=>{te||Ie()})),k(),Vue.nextTick(()=>{(!$||!$())&&Ie()})},bo=()=>{if(s.hasHiddenYeaftMessages){s.expandYeaftMessageWindow();return}s.loadMoreYeaftHistory()},_s=()=>s.currentView==="yeaft"?s.hasHiddenYeaftMessages||s.yeaftHasMoreHistory&&!s.yeaftLoadingMoreHistory&&s.yeaftOldestLoadedSeq!=null:!!s.currentConversation&&s.hasMoreMessages&&!s.loadingMoreMessages,Ir=()=>{if(!_s())return;let k=s.currentView==="yeaft";yo(k?bo:()=>s.loadMoreMessages(),k?()=>s.yeaftLoadingMoreHistory:()=>s.loadingMoreMessages)},kt=!1,Cn=!1,nt=null,as=0,wo=250,Cr=()=>{kt=!1,nt&&(clearTimeout(nt),nt=null)},Es=()=>{Cn||(nt&&clearTimeout(nt),nt=setTimeout(Cr,wo))},Ds=k=>{kt=!0,a.value?.clearTargetAnchor?.(),as=Number(o.value?.scrollTop||0),Number(k?.deltaY)<0&&et(),Es()},Ar=k=>{Wp(k,o.value)&&(Cn=!0,kt=!0,a.value?.clearTargetAnchor?.(),as=Number(o.value?.scrollTop||0),nt&&(clearTimeout(nt),nt=null))},Ls=()=>{Cn=!1,Es()},xr=k=>{jp(k,o.value)&&((k.key==="ArrowUp"||k.key==="PageUp"||k.key==="Home")&&et(),kt=!0,a.value?.clearTargetAnchor?.(),Es())},jt=()=>{let k=Number(o.value?.scrollTop||0),$=kt?k-as:0,W=!xe.value;as=k;let oe=os(),be=As({scrollTop:k,scrollHeight:o.value?.scrollHeight||0,clientHeight:o.value?.clientHeight||0,threshold:je});Ce.value=Bp({following:W,atBottom:oe,resumeBoundaryReached:be,direction:$}),xe.value=!Ce.value,a.value?.setBottomFollowEnabled?.(Ce.value),Ce.value&&Et(),kt&&Es(),o.value&&wn(o.value.scrollTop||0,o.value.clientHeight||0)},Et=()=>{s.currentView==="yeaft"&&s.pruneYeaftMessageWindow()},$s=()=>{o.value&&(o.value.scrollTop=o.value.scrollHeight,In(),Et())},ko=()=>{In(),Vue.nextTick($s)},Tr=()=>{!xe.value&&Ce.value&&(Et(),Vue.nextTick($s))},Mr=k=>{if(!k)return"";if(Array.isArray(k.items))return k.items.map(Mr).join(",");let $=k.message||{};return[k.type||"",k.id||"",k.atMessageId||"",k.turnId||"",k.messageId||"",k.speakerVpId||"",$.id||"",$.content?String($.content).length:0,k.textContent?String(k.textContent).length:0,k.isStreaming||$.isStreaming?"streaming":"done"].join(":")},So=Vue.computed(()=>{let k=D.value||[];return[s.activeConversationId||"",E.value||"",Mr(k[k.length-1])].join("|")});Vue.watch(()=>[s.currentConversation,R.value.length,n.token],()=>{let k=n.token||"";k!==se&&(se=k,me()),T()},{immediate:!0}),Vue.watch(So,Tr),Vue.watch(bn,k=>{k&&Tr()}),Vue.watch(()=>[s.activeConversationId,E.value],()=>{for(let k of Object.keys(l))delete l[k];for(let k of Object.keys(c))delete c[k];for(let k of Object.keys(d))delete d[k];In(),Vue.nextTick($s)});let ls=Vue.ref(null),Pr=0;return t({revealMessage:async k=>k?(et(),await rf({blocks:D.value,target:k,collapseStates:d,nextTick:Vue.nextTick,scrollToBlock:(W,oe)=>(et(),a.value?.scrollToKey?.(W,oe)),findRow:W=>{let oe=o.value?.querySelectorAll?.("[data-msg-id]")||[];return Array.from(oe).find(be=>be?.dataset?.msgId===W)||null},anchorRow:(W,oe,be,ce)=>a.value?.anchorTarget?.(W,be,ce),flashRow:W=>{let oe=++Pr;ls.value=W,setTimeout(()=>{oe===Pr&&(ls.value=null)},1800)}})):!1}),Vue.onMounted(()=>{$s(),o.value&&(o.value.addEventListener("wheel",Ds,{passive:!0}),o.value.addEventListener("touchmove",Ds,{passive:!0}),o.value.addEventListener("pointerdown",Ar,{passive:!0}),o.value.addEventListener("scroll",jt)),window.addEventListener("pointerup",Ls,{passive:!0}),window.addEventListener("pointercancel",Ls,{passive:!0}),window.addEventListener("keydown",xr)}),Vue.onUnmounted(()=>{o.value&&(o.value.removeEventListener("wheel",Ds),o.value.removeEventListener("touchmove",Ds),o.value.removeEventListener("pointerdown",Ar),o.value.removeEventListener("scroll",jt)),window.removeEventListener("pointerup",Ls),window.removeEventListener("pointercancel",Ls),window.removeEventListener("keydown",xr),Cr(),fe&&(clearInterval(fe),fe=null),Oe&&(clearTimeout(Oe),Oe=null),we&&(cancelAnimationFrame(we),we=null),dt&&(cancelAnimationFrame(dt),dt=null)}),{store:s,containerRef:o,virtualTranscriptRef:a,flashMsgId:ls,hasStreamingMessage:bt,nowMs:Xe,showTypingDots:_t,showInitialMessagesLoading:rs,showYeaftOlderHistoryLoading:gn,showSessionLoadingOverlay:Rt,initialMessagesLoadingText:Wt,previewShowTypingDots:bn,isPreviewMode:vn,waitingStatus:fo,animationType:Te,catSpeed:go,catStyle:mo,dogPhase:We,spikeTransform:ro,teddyTransform:io,leashPathL:oo,leashPathR:ao,leashOpacityL:lo,leashOpacityR:co,questionLX:uo,questionRX:po,refreshSession:is,onlineAgents:R,welcomeInstallCommand:ae,welcomeLlmCommand:ve,welcomeServiceCommand:ge,welcomeSetupLoading:_,welcomeSetupError:j,copyWelcomeCommand:K,turnGroups:O,messageBlocks:D,virtualTranscriptIdentity:V,estimateMessageBlockHeight:m,visibleItemsForBlock:b,collapsedResponsePreviewLines:I,collapsedResponsePreviewSpeaker:y,responseToggleBelongsToItem:w,showBlockResponseToggle:v,toggleMessageTurnResponse:h,responseCollapseLabel:M,turnUiKey:u,assistantTurnActionsExpandedFor:f,setAssistantTurnActionsExpanded:p,toolExpandStates:c,setToolExpanded:g,cardsForRow:ye,orphanCards:Y,subAgentCardsForRow:ue,orphanSubAgentCards:le,useImStyleForUser:L,onClickLoadMore:Ir,onVirtualTranscriptScrollState:vo,isAtBottom:Ce,scrollToLatest:ko}}}});function Pi(...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 cf(e,t,s){let n=t?e?.slashCommandsMap?.[t]:null;return e?.currentView==="yeaft"?Pi(n):Pi(n,s?e?.slashCommandsMap?.[`agent:${s}`]:null,e?.slashCommandsMap?.__preload__)}function Fy(e,t={},s=new Set){if(Oy.has(e)||Object.prototype.hasOwnProperty.call(Mi,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 df(e,t={}){if(Ti[e])return Ti[e];if(Mi[e])return Mi[e];let s=e.startsWith("/")?e.slice(1):e;return t[s]?t[s]:Ny(s)}function Ny(e){return(e.includes(":")?e.split(":").pop():e).replace(/-/g," ").replace(/^\w/,s=>s.toUpperCase())}function uf(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=Fy(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)=>(of[o]??99)-(of[a]??99));return i.map((o,a)=>({label:qy[o]||o,items:r[o],isLast:a===i.length-1}))}var Ti,Oy,af,Mi,lf,qy,of,pf=F(()=>{Ti={"/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"},Oy=new Set(Object.keys(Ti)),af=Object.keys(Ti),Mi={"/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"},lf=Object.keys(Mi);qy={skill:"Skills",builtin:"Built-in",project:"Commands"},of={skill:0,project:1,builtin:2}});function Uy(e){return!(!e||typeof e!="string"||e.length<1||e.length>40||e.startsWith("_")||Wy.test(e)||By.has(e.toLowerCase()))}function Ri(e){if(!e||typeof e!="string")return{text:e||"",mentions:[]};let t=new Set;ff.lastIndex=0;let s;for(;(s=ff.exec(e))!==null;){let n=s[2];if(Uy(n)&&!t.has(n)&&(t.add(n),t.size>=jy))break}return{text:e,mentions:Array.from(t)}}var By,ff,Wy,jy,al=F(()=>{By=new Set(["all","user","system","everyone"]),ff=/(^|[\s\p{P}])@([A-Za-z0-9_-]{1,40})(?=$|[\s\p{P}])/gu,Wy=/^[0-9]+$/,jy=32});function gf(e){let t=typeof e?.vpId=="string"?e.vpId:"";return ll.has(t)?ll.get(t):e?.isStock===!0?"other":"custom"}function xs(e){let t=new Map(_i.map(s=>[s.id,[]]));for(let s of Array.isArray(e)?e:[])!s||typeof s.vpId!="string"||!s.vpId||t.get(gf(s)).push(s);return _i.map(s=>({id:s.id,labelKey:s.labelKey,vps:t.get(s.id)})).filter(s=>s.vps.length>0)}function ur(e){return xs(e).flatMap(t=>t.vps)}function mf(e){let t=new Map(_i.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=gf(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 Ky,_i,ll,pr=F(()=>{Ky=[{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:[]}],_i=Object.freeze(Ky.map(e=>Object.freeze({id:e.id,labelKey:e.labelKey,vpIds:Object.freeze([...e.vpIds])}))),ll=new Map;for(let e of _i)for(let t of e.vpIds)ll.set(t,e.id)});function cl(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 ur(c).slice(0,hf)}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 S of u){let w=String(S||"").toLowerCase();if(w&&w.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(S=>String(S||"").toLowerCase()),b=typeof t=="string"?t:"",I=p.includes(n)||b&&g.includes(b),y=n&&m.some(S=>S.includes(n));(I||y)&&l(c,o)}return[...ur(r),...ur(i),...ur(o)].slice(0,hf)}function dl(e="chat-input"){return`${e}-vp-mention-listbox`}function ul(e,t){let s=String(t||"").replace(/[^A-Za-z0-9_.:-]/g,"-");return`${e}-vp-mention-option-${s}`}function zy(e){let t=0;return mf(e).map(s=>({...s,items:s.vps.map(n=>({vp:n,flatIndex:t++}))}))}function vf(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 yf(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 hf,bf,wf=F(()=>{pr();hf=12;bf={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:`
|
|
1677
1677
|
<div
|
|
1678
1678
|
class="slash-autocomplete vp-mention-autocomplete"
|
|
1679
1679
|
v-if="filteredList.length > 0"
|
|
@@ -2722,7 +2722,7 @@ ${String(e||"").trim()}
|
|
|
2722
2722
|
<!-- \u62D6\u62FD\u8C03\u6574\u5BBD\u5EA6\u624B\u67C4 -->
|
|
2723
2723
|
<div class="resize-handle" @mousedown="startResize" @touchstart.prevent="startResize" v-if="store.workbenchExpanded"></div>
|
|
2724
2724
|
</div>
|
|
2725
|
-
`,setup(){let e=Pinia.useChatStore(),t=Vue.computed(()=>e.hasCapability("terminal")),s=Vue.computed(()=>e.hasCapability("file_editor")),n=Vue.computed(()=>!1),r=Vue.reactive({}),i=()=>s.value?"files":t.value?"terminal":"files",o=Vue.computed(()=>{let m=e.currentConversation,b=m&&r[m]||"files";return b==="terminal"&&!t.value||(b==="git"||b==="files"||b==="explorer")&&!s.value?i():b==="explorer"?"git":b}),a=m=>{let b=e.currentConversation;b&&(r[b]=m)},l=Vue.ref(0),c=Vue.ref(!1),d=Vue.ref(!1),u=Vue.computed(()=>{if(!e.workbenchExpanded)return{};if(e.workbenchMaximized)return{};if(window.innerWidth<=768)return{};if(!d.value)return c.value?{transition:"none"}:{};let m={width:l.value+"px"};return c.value&&(m.transition="none"),m}),f=m=>{m.preventDefault();let b=m.type==="touchstart",I=b?m.touches[0].clientX:m.clientX;if(c.value=!0,!d.value){let v=m.target.closest(".workbench-panel");v&&(l.value=v.offsetWidth),d.value=!0}let y=l.value;document.body.style.cursor="col-resize",document.body.style.userSelect="none";let S=v=>{let M=(b?v.touches[0].clientX:v.clientX)-I,x=Math.max(900,window.innerWidth-100);l.value=Math.max(280,Math.min(x,y+M))},w=()=>{c.value=!1,document.body.style.cursor="",document.body.style.userSelect="",document.removeEventListener("mousemove",S),document.removeEventListener("mouseup",w),document.removeEventListener("touchmove",S),document.removeEventListener("touchend",w)};document.addEventListener(b?"touchmove":"mousemove",S),document.addEventListener(b?"touchend":"mouseup",w)},p=()=>{let m=e.currentConversation;m&&s.value&&(r[m]="files")},g=m=>{let{conversationId:b}=m.detail;b&&delete r[b]};return Vue.onMounted(()=>{window.addEventListener("open-file-in-explorer",p),window.addEventListener("conversation-deleted",g)}),Vue.onUnmounted(()=>{window.removeEventListener("open-file-in-explorer",p),window.removeEventListener("conversation-deleted",g)}),{store:e,activeTab:o,setTab:a,hasTerminal:t,hasExplorer:s,hasTasks:n,panelStyle:u,startResize:f}}}});function at(e){let t=e?.currentTarget;t&&hr.set(t,{startedOnOverlay:e.target===t,endedOnOverlay:!1})}function lt(e){let t=e?.currentTarget,s=t&&hr.get(t);s&&(s.endedOnOverlay=e.target===t)}function ct(e){let t=e?.currentTarget;t&&hr.delete(t)}function
|
|
2725
|
+
`,setup(){let e=Pinia.useChatStore(),t=Vue.computed(()=>e.hasCapability("terminal")),s=Vue.computed(()=>e.hasCapability("file_editor")),n=Vue.computed(()=>!1),r=Vue.reactive({}),i=()=>s.value?"files":t.value?"terminal":"files",o=Vue.computed(()=>{let m=e.currentConversation,b=m&&r[m]||"files";return b==="terminal"&&!t.value||(b==="git"||b==="files"||b==="explorer")&&!s.value?i():b==="explorer"?"git":b}),a=m=>{let b=e.currentConversation;b&&(r[b]=m)},l=Vue.ref(0),c=Vue.ref(!1),d=Vue.ref(!1),u=Vue.computed(()=>{if(!e.workbenchExpanded)return{};if(e.workbenchMaximized)return{};if(window.innerWidth<=768)return{};if(!d.value)return c.value?{transition:"none"}:{};let m={width:l.value+"px"};return c.value&&(m.transition="none"),m}),f=m=>{m.preventDefault();let b=m.type==="touchstart",I=b?m.touches[0].clientX:m.clientX;if(c.value=!0,!d.value){let v=m.target.closest(".workbench-panel");v&&(l.value=v.offsetWidth),d.value=!0}let y=l.value;document.body.style.cursor="col-resize",document.body.style.userSelect="none";let S=v=>{let M=(b?v.touches[0].clientX:v.clientX)-I,x=Math.max(900,window.innerWidth-100);l.value=Math.max(280,Math.min(x,y+M))},w=()=>{c.value=!1,document.body.style.cursor="",document.body.style.userSelect="",document.removeEventListener("mousemove",S),document.removeEventListener("mouseup",w),document.removeEventListener("touchmove",S),document.removeEventListener("touchend",w)};document.addEventListener(b?"touchmove":"mousemove",S),document.addEventListener(b?"touchend":"mouseup",w)},p=()=>{let m=e.currentConversation;m&&s.value&&(r[m]="files")},g=m=>{let{conversationId:b}=m.detail;b&&delete r[b]};return Vue.onMounted(()=>{window.addEventListener("open-file-in-explorer",p),window.addEventListener("conversation-deleted",g)}),Vue.onUnmounted(()=>{window.removeEventListener("open-file-in-explorer",p),window.removeEventListener("conversation-deleted",g)}),{store:e,activeTab:o,setTab:a,hasTerminal:t,hasExplorer:s,hasTasks:n,panelStyle:u,startResize:f}}}});function at(e){let t=e?.currentTarget;t&&hr.set(t,{startedOnOverlay:e.target===t,endedOnOverlay:!1})}function lt(e){let t=e?.currentTarget,s=t&&hr.get(t);s&&(s.endedOnOverlay=e.target===t)}function ct(e){let t=e?.currentTarget;t&&hr.delete(t)}function st(e){let t=e?.currentTarget;if(!t)return!1;let s=hr.get(t),n=e.target===t&&s?.startedOnOverlay===!0&&s.endedOnOverlay===!0;return hr.delete(t),n}var hr,Ms=F(()=>{hr=new WeakMap});var Pt,rg,ig=F(()=>{gt();Pt=20,rg={name:"DashboardTab",template:`
|
|
2726
2726
|
<div class="db-container">
|
|
2727
2727
|
<!-- Loading state -->
|
|
2728
2728
|
<div v-if="loading && !loaded" class="db-loading">{{ $t('settings.dashboard.loading') }}</div>
|
|
@@ -3887,7 +3887,7 @@ ${String(e||"").trim()}
|
|
|
3887
3887
|
</div>
|
|
3888
3888
|
</div>
|
|
3889
3889
|
</div>
|
|
3890
|
-
`,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 ja(this.profile)},agentInstanceId(){return this.agentName},serverWsUrl(){return rr(location)},agentInstallCommand(){return fi()},agentServiceCommand(){return mi({profile:this.profile,agentSecret:this.agentSecret,serverWsUrl:this.serverWsUrl})},agentLlmCommand(){return gi()},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:at,trackOverlayPointerUp:lt,clearOverlayPointerGesture:ct,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){tt(e)&&this.$emit("close")},onQrOverlayClick(e){tt(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"&&ui()){this.authStore.bindSso(e);return}if(e==="alipay"&&Zs()){this.authStore.loginWithAlipayMobile({intent:"bind"});return}if(e==="wechat"&&(Zs()||di())){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 mg,hg=F(()=>{mg={name:"ExpertRoleEditor",template:`
|
|
3890
|
+
`,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 ja(this.profile)},agentInstanceId(){return this.agentName},serverWsUrl(){return rr(location)},agentInstallCommand(){return fi()},agentServiceCommand(){return mi({profile:this.profile,agentSecret:this.agentSecret,serverWsUrl:this.serverWsUrl})},agentLlmCommand(){return gi()},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:at,trackOverlayPointerUp:lt,clearOverlayPointerGesture:ct,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){st(e)&&this.$emit("close")},onQrOverlayClick(e){st(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"&&ui()){this.authStore.bindSso(e);return}if(e==="alipay"&&Zs()){this.authStore.loginWithAlipayMobile({intent:"bind"});return}if(e==="wechat"&&(Zs()||di())){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 mg,hg=F(()=>{mg={name:"ExpertRoleEditor",template:`
|
|
3891
3891
|
<div class="expert-editor-overlay" @click.self="$emit('close')">
|
|
3892
3892
|
<div class="expert-editor-modal">
|
|
3893
3893
|
<div class="expert-editor-header">
|
|
@@ -5326,7 +5326,7 @@ ${String(e||"").trim()}
|
|
|
5326
5326
|
</div>
|
|
5327
5327
|
</section>
|
|
5328
5328
|
<section v-else class="work-center-action-detail-pane work-center-detail-empty"><strong>{{ tr('workCenter.selectAction', 'Select an Action') }}</strong></section>
|
|
5329
|
-
`}});function El(e){return JSON.parse(JSON.stringify(e))}function vb(e,t=[]){return{mode:"auto",capability:e,candidateVpIds:[],fixedVpId:null,separateFromStageTypes:t}}function Gi(e,t,s,n={}){return{id:e,name:t,type:s,instruction:"",assignmentPolicy:vb(s,n.separateFromStageTypes),modelPolicy:{mode:"inherit",model:null,effort:null},maxAttempts:2,...n.changesRequestedStageId?{changesRequestedStageId:n.changesRequestedStageId}:{}}}function _l(){return{version:1,revision:1,defaultWorkflowId:"software-change",startImmediately:!0,maxConcurrentActions:3,defaultWorkDir:"",globalInstructions:"",modelPolicy:{mode:"inherit",model:null,effort:null},coordinatorModelPolicy:{mode:"inherit",model:null,effort:"high"},actionModelPolicies:Object.fromEntries(Ps.map(e=>[e,{mode:"inherit",model:null,effort:["triage","research","design","diagnose","review"].includes(e)?"high":"medium"}])),actionInstructions:Object.fromEntries(Ps.map(e=>[e,""])),workflows:[{version:1,id:"software-change",name:"Software change",stages:[Gi("triage","Triage","triage"),Gi("implement","Implement","implement"),Gi("review","Review","review",{separateFromStageTypes:["implement"],changesRequestedStageId:"implement"}),Gi("deliver","Deliver","deliver")]}]}}function Xi(e){return!e||typeof e!="object"||Array.isArray(e)||!e.modelPolicy||typeof e.modelPolicy!="object"||Array.isArray(e.modelPolicy)||!e.coordinatorModelPolicy||typeof e.coordinatorModelPolicy!="object"||Array.isArray(e.coordinatorModelPolicy)||typeof e.globalInstructions!="string"||!e.actionInstructions||typeof e.actionInstructions!="object"||Array.isArray(e.actionInstructions)||!e.actionModelPolicies||typeof e.actionModelPolicies!="object"||Array.isArray(e.actionModelPolicies)?!1:Ps.every(t=>typeof e.actionInstructions[t]=="string")}function yb(e,t){return Xi(e)&&Number.isInteger(e.revision)&&Number.isInteger(t)&&e.revision>t}function Qi(e,t={}){let s=e&&typeof e=="object"&&!Array.isArray(e)?El(e):{},n=Array.isArray(s.workflows)&&s.workflows.length>0?s.workflows:_l().workflows,r=n.find(c=>c?.id===s.defaultWorkflowId)||n[0]||null,i=Array.isArray(r?.stages)?r.stages:[],o=Object.fromEntries(i.filter(c=>Ps.includes(c?.type)&&typeof c.instruction=="string").map(c=>[c.type,c.instruction])),a=s.actionInstructions&&typeof s.actionInstructions=="object"&&!Array.isArray(s.actionInstructions)?s.actionInstructions:{},l=i.find(c=>c?.type==="triage")?.modelPolicy||i[0]?.modelPolicy;return{..._l(),...s,modelPolicy:{mode:"inherit",model:null,effort:null,...l||{},...s.modelPolicy||{}},coordinatorModelPolicy:{mode:"inherit",model:null,effort:"high",...s.coordinatorModelPolicy||{}},actionModelPolicies:Object.fromEntries(Ps.map(c=>[c,{..._l().actionModelPolicies[c],...s.actionModelPolicies?.[c]||{}}])),actionInstructions:Object.fromEntries(Ps.map(c=>[c,typeof a[c]=="string"?a[c]:o[c]||t[c]||""])),workflows:n}}function bb(e){let t=e?.message||String(e);return/^Unsupported Work Center operation:\s*get_settings$/i.test(t.trim())}var Ps,Eg,Dg=F(()=>{Ms();Ps=["triage","research","design","diagnose","implement","migrate","test","review","integrate","document","operate","deliver","write","custom"];Eg={name:"WorkCenterSettingsModal",emits:["close","saved","open-agent-models"],props:{agentId:{type:String,required:!0}},data(){return{section:"workflow",draft:null,loading:!0,saving:!1,error:"",conflict:!1,settingsUnsupported:!1,draftAgentId:null,loadGeneration:0}},computed:{store(){return Pinia.useChatStore()},runtime(){return this.store.workCenterRuntimeByAgent[this.agentId]||{}},vps(){return Array.isArray(this.runtime.vps)?this.runtime.vps:[]},models(){return Array.isArray(this.runtime.models)?this.runtime.models:[]},workflows(){return Array.isArray(this.draft?.workflows)?this.draft.workflows:[]},actionTypes(){return Ps},defaultWorkflow(){return this.workflows.find(e=>e.id===this.draft?.defaultWorkflowId)||this.workflows[0]||null},defaultStageInstructions(){return this.runtime.defaultStageInstructions||{}},sections(){return[{id:"workflow",label:this.$t("workCenter.settings.workflow")},{id:"models",label:this.$t("workCenter.settings.models")}]}},watch:{runtime:{deep:!0,handler(){this.normalizeDraftEffort()}}},async mounted(){window.addEventListener("keydown",this.onKeydown);let e=this.store.workCenterSettingsByAgent[this.agentId];e&&(this.draft=Qi(e,this.defaultStageInstructions),this.normalizeDraftEffort(),this.draftAgentId=this.agentId,this.settingsUnsupported=!Xi(e),this.settingsUnsupported&&(this.error=this.$t("workCenter.settings.upgradeRequired")),this.loading=!1),await this.load()},beforeUnmount(){window.removeEventListener("keydown",this.onKeydown)},methods:{trackOverlayPointerDown:at,trackOverlayPointerUp:lt,clearOverlayPointerGesture:ct,async load(){let e=this.agentId,t=++this.loadGeneration;this.loading=!0,this.error=this.settingsUnsupported&&this.draft?this.$t("workCenter.settings.upgradeRequired"):"";try{let s=await this.store.loadWorkCenterSettings(e);if(t!==this.loadGeneration||e!==this.agentId)return;this.draft=Qi(s.settings,this.defaultStageInstructions),this.normalizeDraftEffort(),this.draftAgentId=e,this.conflict=!1,this.settingsUnsupported=!Xi(s.settings),this.error=this.settingsUnsupported?this.$t("workCenter.settings.upgradeRequired"):""}catch(s){if(t!==this.loadGeneration||e!==this.agentId)return;bb(s)?(this.draft=Qi(null,this.defaultStageInstructions),this.draftAgentId=e,this.settingsUnsupported=!0,this.error=this.$t("workCenter.settings.upgradeRequired")):this.error=s?.message||String(s)}finally{t===this.loadGeneration&&e===this.agentId&&(this.loading=!1)}},onKeydown(e){e.key==="Escape"&&!this.saving&&this.$emit("close")},onOverlayClick(e){tt(e)&&this.close()},close(){this.saving||this.$emit("close")},vpLabel(e){return this.$i18n?.locale==="zh-CN"&&e.nameZh?e.nameZh:e.name||e.id},setAssignmentMode(e,t){e.assignmentPolicy.mode=t,t==="fixed"&&!e.assignmentPolicy.fixedVpId&&(e.assignmentPolicy.fixedVpId=this.vps[0]?.id||null),t==="pool"&&e.assignmentPolicy.candidateVpIds.length===0&&this.vps[0]&&(e.assignmentPolicy.candidateVpIds=[this.vps[0].id])},addWorkflow(){let e=this.workflows.length+1,t=this.defaultWorkflow||this.workflows[0],s=t?El(t):{version:1,stages:[]};s.id=`workflow-${Date.now()}`,s.name=this.$t("workCenter.settings.newWorkflow",{index:e}),this.draft.workflows.push(s),this.draft.defaultWorkflowId=s.id},removeWorkflow(){this.workflows.length<=1||!this.defaultWorkflow||(this.draft.workflows=this.workflows.filter(e=>e.id!==this.defaultWorkflow.id),this.draft.defaultWorkflowId=this.draft.workflows[0].id)},addStage(){if(!this.defaultWorkflow)return;let e=`stage-${Date.now()}`;this.defaultWorkflow.stages.push({id:e,name:this.$t("workCenter.settings.newStage"),type:"custom",instruction:this.defaultStageInstructions.custom||"",assignmentPolicy:{mode:"auto",capability:"custom",candidateVpIds:[],fixedVpId:null,separateFromStageTypes:[]},modelPolicy:{mode:"inherit",model:null,effort:null},maxAttempts:2})},moveStage(e,t){let s=this.defaultWorkflow?.stages,n=e+t;if(!s||n<0||n>=s.length)return;let[r]=s.splice(e,1);s.splice(n,0,r)},reviewReturnCandidates(e){let t=this.defaultWorkflow?.stages||[],s=t.findIndex(n=>n.id===e.id);return s<=0?[]:t.slice(0,s).filter(n=>n.type!=="review"&&n.type!=="deliver")},canRemoveStage(e){let t=this.defaultWorkflow?.stages;if(!t||t.length<=1)return!1;let s=t[e],n=t.filter((r,i)=>i!==e);return n.every((r,i)=>r.type!=="review"||r.changesRequestedStageId!==s.id?!0:n.slice(0,i).some(o=>o.type!=="review"&&o.type!=="deliver"))},removeStage(e){let t=this.defaultWorkflow?.stages;if(!t||!this.canRemoveStage(e))return!1;let[s]=t.splice(e,1);for(let[n,r]of t.entries()){if(r.type!=="review"||r.changesRequestedStageId!==s.id)continue;let i=t.slice(0,n).filter(o=>o.type!=="review"&&o.type!=="deliver");r.changesRequestedStageId=i.at(-1).id}return!0},toggleCandidate(e,t,s){let n=new Set(e.assignmentPolicy.candidateVpIds||[]);s?n.add(t):n.delete(t),e.assignmentPolicy.candidateVpIds=[...n]},defaultInstructionForStage(e){return this.defaultStageInstructions[e.type]||this.defaultStageInstructions.custom||""},resetStageInstruction(e){e.instruction=this.defaultInstructionForStage(e)},setStageType(e,t){let s=this.defaultInstructionForStage(e),n=!e.instruction||e.instruction===s;e.type=t,n&&this.resetStageInstruction(e)},modelRefForStage(e){return e.modelPolicy.mode==="specific"?e.modelPolicy.model:e.modelPolicy.mode==="primary"?this.runtime.primaryModel||null:e.modelPolicy.mode==="fast"&&this.runtime.fastModel||null},modelForStage(e){let t=this.modelRefForStage(e);return t&&this.models.find(s=>(s.ref||s.id)===t)||null},effortOptionsForStage(e){let t=this.modelForStage(e);return t?Array.isArray(t.effortOptions)?t.effortOptions:[]:e.modelPolicy.mode==="inherit"?[...new Set(this.models.flatMap(s=>Array.isArray(s.effortOptions)?s.effortOptions:[]))]:[]},effortHelpKeyForStage(e){return this.modelRefForStage(e)?this.effortOptionsForStage(e).length===0?"workCenter.settings.effortUnsupportedHelp":"workCenter.settings.effortHelp":"workCenter.settings.effortChooseModelHelp"},normalizeStageEffort(e){let t=this.effortOptionsForStage(e);!e.modelPolicy.effort||t.includes(e.modelPolicy.effort)||(e.modelPolicy.effort=null)},normalizeDraftEffort(){if(!(!this.draft?.modelPolicy||!Array.isArray(this.runtime?.models))){this.normalizeStageEffort({modelPolicy:this.draft.modelPolicy}),this.normalizeStageEffort({modelPolicy:this.draft.coordinatorModelPolicy});for(let e of Object.values(this.draft.actionModelPolicies||{}))this.normalizeStageEffort({modelPolicy:e})}},setModelMode(e,t){e.modelPolicy.mode=t,t==="specific"&&!e.modelPolicy.model&&(e.modelPolicy.model=this.models[0]?.ref||this.models[0]?.id||null),this.normalizeStageEffort(e)},setStageModel(e,t){e.modelPolicy.model=t||null,this.normalizeStageEffort(e)},async save(){if(!this.draft||this.saving||this.settingsUnsupported)return;let e=this.agentId;if(this.draftAgentId!==e){this.conflict=!0,this.error=this.$t("workCenter.settings.conflict");return}this.saving=!0,this.error="",this.conflict=!1;try{this.normalizeDraftEffort();let t=El(this.draft),s=await this.store.saveWorkCenterSettings(t,e);if(e!==this.agentId||this.draftAgentId!==e)return;if(!yb(s.settings,t.revision)){this.settingsUnsupported=!Xi(s.settings),this.error=this.$t(this.settingsUnsupported?"workCenter.settings.upgradeRequired":"workCenter.settings.saveNotConfirmed");return}this.draft=Qi(s.settings,this.defaultStageInstructions),this.$emit("saved",s.settings),this.$emit("close")}catch(t){if(e!==this.agentId)return;let s=t?.message||String(t);this.conflict=/changed elsewhere|reload before saving/i.test(s),this.error=this.conflict?this.$t("workCenter.settings.conflict"):s}finally{e===this.agentId&&(this.saving=!1)}}},template:`
|
|
5329
|
+
`}});function El(e){return JSON.parse(JSON.stringify(e))}function vb(e,t=[]){return{mode:"auto",capability:e,candidateVpIds:[],fixedVpId:null,separateFromStageTypes:t}}function Gi(e,t,s,n={}){return{id:e,name:t,type:s,instruction:"",assignmentPolicy:vb(s,n.separateFromStageTypes),modelPolicy:{mode:"inherit",model:null,effort:null},maxAttempts:2,...n.changesRequestedStageId?{changesRequestedStageId:n.changesRequestedStageId}:{}}}function _l(){return{version:1,revision:1,defaultWorkflowId:"software-change",startImmediately:!0,maxConcurrentActions:3,defaultWorkDir:"",globalInstructions:"",modelPolicy:{mode:"inherit",model:null,effort:null},coordinatorModelPolicy:{mode:"inherit",model:null,effort:"high"},actionModelPolicies:Object.fromEntries(Ps.map(e=>[e,{mode:"inherit",model:null,effort:["triage","research","design","diagnose","review"].includes(e)?"high":"medium"}])),actionInstructions:Object.fromEntries(Ps.map(e=>[e,""])),workflows:[{version:1,id:"software-change",name:"Software change",stages:[Gi("triage","Triage","triage"),Gi("implement","Implement","implement"),Gi("review","Review","review",{separateFromStageTypes:["implement"],changesRequestedStageId:"implement"}),Gi("deliver","Deliver","deliver")]}]}}function Xi(e){return!e||typeof e!="object"||Array.isArray(e)||!e.modelPolicy||typeof e.modelPolicy!="object"||Array.isArray(e.modelPolicy)||!e.coordinatorModelPolicy||typeof e.coordinatorModelPolicy!="object"||Array.isArray(e.coordinatorModelPolicy)||typeof e.globalInstructions!="string"||!e.actionInstructions||typeof e.actionInstructions!="object"||Array.isArray(e.actionInstructions)||!e.actionModelPolicies||typeof e.actionModelPolicies!="object"||Array.isArray(e.actionModelPolicies)?!1:Ps.every(t=>typeof e.actionInstructions[t]=="string")}function yb(e,t){return Xi(e)&&Number.isInteger(e.revision)&&Number.isInteger(t)&&e.revision>t}function Qi(e,t={}){let s=e&&typeof e=="object"&&!Array.isArray(e)?El(e):{},n=Array.isArray(s.workflows)&&s.workflows.length>0?s.workflows:_l().workflows,r=n.find(c=>c?.id===s.defaultWorkflowId)||n[0]||null,i=Array.isArray(r?.stages)?r.stages:[],o=Object.fromEntries(i.filter(c=>Ps.includes(c?.type)&&typeof c.instruction=="string").map(c=>[c.type,c.instruction])),a=s.actionInstructions&&typeof s.actionInstructions=="object"&&!Array.isArray(s.actionInstructions)?s.actionInstructions:{},l=i.find(c=>c?.type==="triage")?.modelPolicy||i[0]?.modelPolicy;return{..._l(),...s,modelPolicy:{mode:"inherit",model:null,effort:null,...l||{},...s.modelPolicy||{}},coordinatorModelPolicy:{mode:"inherit",model:null,effort:"high",...s.coordinatorModelPolicy||{}},actionModelPolicies:Object.fromEntries(Ps.map(c=>[c,{..._l().actionModelPolicies[c],...s.actionModelPolicies?.[c]||{}}])),actionInstructions:Object.fromEntries(Ps.map(c=>[c,typeof a[c]=="string"?a[c]:o[c]||t[c]||""])),workflows:n}}function bb(e){let t=e?.message||String(e);return/^Unsupported Work Center operation:\s*get_settings$/i.test(t.trim())}var Ps,Eg,Dg=F(()=>{Ms();Ps=["triage","research","design","diagnose","implement","migrate","test","review","integrate","document","operate","deliver","write","custom"];Eg={name:"WorkCenterSettingsModal",emits:["close","saved","open-agent-models"],props:{agentId:{type:String,required:!0}},data(){return{section:"workflow",draft:null,loading:!0,saving:!1,error:"",conflict:!1,settingsUnsupported:!1,draftAgentId:null,loadGeneration:0}},computed:{store(){return Pinia.useChatStore()},runtime(){return this.store.workCenterRuntimeByAgent[this.agentId]||{}},vps(){return Array.isArray(this.runtime.vps)?this.runtime.vps:[]},models(){return Array.isArray(this.runtime.models)?this.runtime.models:[]},workflows(){return Array.isArray(this.draft?.workflows)?this.draft.workflows:[]},actionTypes(){return Ps},defaultWorkflow(){return this.workflows.find(e=>e.id===this.draft?.defaultWorkflowId)||this.workflows[0]||null},defaultStageInstructions(){return this.runtime.defaultStageInstructions||{}},sections(){return[{id:"workflow",label:this.$t("workCenter.settings.workflow")},{id:"models",label:this.$t("workCenter.settings.models")}]}},watch:{runtime:{deep:!0,handler(){this.normalizeDraftEffort()}}},async mounted(){window.addEventListener("keydown",this.onKeydown);let e=this.store.workCenterSettingsByAgent[this.agentId];e&&(this.draft=Qi(e,this.defaultStageInstructions),this.normalizeDraftEffort(),this.draftAgentId=this.agentId,this.settingsUnsupported=!Xi(e),this.settingsUnsupported&&(this.error=this.$t("workCenter.settings.upgradeRequired")),this.loading=!1),await this.load()},beforeUnmount(){window.removeEventListener("keydown",this.onKeydown)},methods:{trackOverlayPointerDown:at,trackOverlayPointerUp:lt,clearOverlayPointerGesture:ct,async load(){let e=this.agentId,t=++this.loadGeneration;this.loading=!0,this.error=this.settingsUnsupported&&this.draft?this.$t("workCenter.settings.upgradeRequired"):"";try{let s=await this.store.loadWorkCenterSettings(e);if(t!==this.loadGeneration||e!==this.agentId)return;this.draft=Qi(s.settings,this.defaultStageInstructions),this.normalizeDraftEffort(),this.draftAgentId=e,this.conflict=!1,this.settingsUnsupported=!Xi(s.settings),this.error=this.settingsUnsupported?this.$t("workCenter.settings.upgradeRequired"):""}catch(s){if(t!==this.loadGeneration||e!==this.agentId)return;bb(s)?(this.draft=Qi(null,this.defaultStageInstructions),this.draftAgentId=e,this.settingsUnsupported=!0,this.error=this.$t("workCenter.settings.upgradeRequired")):this.error=s?.message||String(s)}finally{t===this.loadGeneration&&e===this.agentId&&(this.loading=!1)}},onKeydown(e){e.key==="Escape"&&!this.saving&&this.$emit("close")},onOverlayClick(e){st(e)&&this.close()},close(){this.saving||this.$emit("close")},vpLabel(e){return this.$i18n?.locale==="zh-CN"&&e.nameZh?e.nameZh:e.name||e.id},setAssignmentMode(e,t){e.assignmentPolicy.mode=t,t==="fixed"&&!e.assignmentPolicy.fixedVpId&&(e.assignmentPolicy.fixedVpId=this.vps[0]?.id||null),t==="pool"&&e.assignmentPolicy.candidateVpIds.length===0&&this.vps[0]&&(e.assignmentPolicy.candidateVpIds=[this.vps[0].id])},addWorkflow(){let e=this.workflows.length+1,t=this.defaultWorkflow||this.workflows[0],s=t?El(t):{version:1,stages:[]};s.id=`workflow-${Date.now()}`,s.name=this.$t("workCenter.settings.newWorkflow",{index:e}),this.draft.workflows.push(s),this.draft.defaultWorkflowId=s.id},removeWorkflow(){this.workflows.length<=1||!this.defaultWorkflow||(this.draft.workflows=this.workflows.filter(e=>e.id!==this.defaultWorkflow.id),this.draft.defaultWorkflowId=this.draft.workflows[0].id)},addStage(){if(!this.defaultWorkflow)return;let e=`stage-${Date.now()}`;this.defaultWorkflow.stages.push({id:e,name:this.$t("workCenter.settings.newStage"),type:"custom",instruction:this.defaultStageInstructions.custom||"",assignmentPolicy:{mode:"auto",capability:"custom",candidateVpIds:[],fixedVpId:null,separateFromStageTypes:[]},modelPolicy:{mode:"inherit",model:null,effort:null},maxAttempts:2})},moveStage(e,t){let s=this.defaultWorkflow?.stages,n=e+t;if(!s||n<0||n>=s.length)return;let[r]=s.splice(e,1);s.splice(n,0,r)},reviewReturnCandidates(e){let t=this.defaultWorkflow?.stages||[],s=t.findIndex(n=>n.id===e.id);return s<=0?[]:t.slice(0,s).filter(n=>n.type!=="review"&&n.type!=="deliver")},canRemoveStage(e){let t=this.defaultWorkflow?.stages;if(!t||t.length<=1)return!1;let s=t[e],n=t.filter((r,i)=>i!==e);return n.every((r,i)=>r.type!=="review"||r.changesRequestedStageId!==s.id?!0:n.slice(0,i).some(o=>o.type!=="review"&&o.type!=="deliver"))},removeStage(e){let t=this.defaultWorkflow?.stages;if(!t||!this.canRemoveStage(e))return!1;let[s]=t.splice(e,1);for(let[n,r]of t.entries()){if(r.type!=="review"||r.changesRequestedStageId!==s.id)continue;let i=t.slice(0,n).filter(o=>o.type!=="review"&&o.type!=="deliver");r.changesRequestedStageId=i.at(-1).id}return!0},toggleCandidate(e,t,s){let n=new Set(e.assignmentPolicy.candidateVpIds||[]);s?n.add(t):n.delete(t),e.assignmentPolicy.candidateVpIds=[...n]},defaultInstructionForStage(e){return this.defaultStageInstructions[e.type]||this.defaultStageInstructions.custom||""},resetStageInstruction(e){e.instruction=this.defaultInstructionForStage(e)},setStageType(e,t){let s=this.defaultInstructionForStage(e),n=!e.instruction||e.instruction===s;e.type=t,n&&this.resetStageInstruction(e)},modelRefForStage(e){return e.modelPolicy.mode==="specific"?e.modelPolicy.model:e.modelPolicy.mode==="primary"?this.runtime.primaryModel||null:e.modelPolicy.mode==="fast"&&this.runtime.fastModel||null},modelForStage(e){let t=this.modelRefForStage(e);return t&&this.models.find(s=>(s.ref||s.id)===t)||null},effortOptionsForStage(e){let t=this.modelForStage(e);return t?Array.isArray(t.effortOptions)?t.effortOptions:[]:e.modelPolicy.mode==="inherit"?[...new Set(this.models.flatMap(s=>Array.isArray(s.effortOptions)?s.effortOptions:[]))]:[]},effortHelpKeyForStage(e){return this.modelRefForStage(e)?this.effortOptionsForStage(e).length===0?"workCenter.settings.effortUnsupportedHelp":"workCenter.settings.effortHelp":"workCenter.settings.effortChooseModelHelp"},normalizeStageEffort(e){let t=this.effortOptionsForStage(e);!e.modelPolicy.effort||t.includes(e.modelPolicy.effort)||(e.modelPolicy.effort=null)},normalizeDraftEffort(){if(!(!this.draft?.modelPolicy||!Array.isArray(this.runtime?.models))){this.normalizeStageEffort({modelPolicy:this.draft.modelPolicy}),this.normalizeStageEffort({modelPolicy:this.draft.coordinatorModelPolicy});for(let e of Object.values(this.draft.actionModelPolicies||{}))this.normalizeStageEffort({modelPolicy:e})}},setModelMode(e,t){e.modelPolicy.mode=t,t==="specific"&&!e.modelPolicy.model&&(e.modelPolicy.model=this.models[0]?.ref||this.models[0]?.id||null),this.normalizeStageEffort(e)},setStageModel(e,t){e.modelPolicy.model=t||null,this.normalizeStageEffort(e)},async save(){if(!this.draft||this.saving||this.settingsUnsupported)return;let e=this.agentId;if(this.draftAgentId!==e){this.conflict=!0,this.error=this.$t("workCenter.settings.conflict");return}this.saving=!0,this.error="",this.conflict=!1;try{this.normalizeDraftEffort();let t=El(this.draft),s=await this.store.saveWorkCenterSettings(t,e);if(e!==this.agentId||this.draftAgentId!==e)return;if(!yb(s.settings,t.revision)){this.settingsUnsupported=!Xi(s.settings),this.error=this.$t(this.settingsUnsupported?"workCenter.settings.upgradeRequired":"workCenter.settings.saveNotConfirmed");return}this.draft=Qi(s.settings,this.defaultStageInstructions),this.$emit("saved",s.settings),this.$emit("close")}catch(t){if(e!==this.agentId)return;let s=t?.message||String(t);this.conflict=/changed elsewhere|reload before saving/i.test(s),this.error=this.conflict?this.$t("workCenter.settings.conflict"):s}finally{e===this.agentId&&(this.saving=!1)}}},template:`
|
|
5330
5330
|
<Teleport to="body">
|
|
5331
5331
|
<div
|
|
5332
5332
|
class="modal-overlay work-center-settings-overlay"
|
|
@@ -5560,7 +5560,7 @@ ${String(e||"").trim()}
|
|
|
5560
5560
|
</div>
|
|
5561
5561
|
</div>
|
|
5562
5562
|
</div>
|
|
5563
|
-
`,data(){return{loading:!1,error:null,registry:{},fetchedAt:0,providerFilter:"",modelFilter:"",selectedProviderId:null,selectedModels:new Set}},computed:{chatStore(){return Pinia.useChatStore()},providerIds(){return Object.keys(this.registry).sort()},filteredProviderIds(){let e=this.providerFilter.trim().toLowerCase();return e?this.providerIds.filter(t=>t.toLowerCase().includes(e)||(this.providerName(t)||"").toLowerCase().includes(e)):this.providerIds},selectedProviderModels(){let e=this.registry[this.selectedProviderId];return!e||typeof e.models!="object"?[]:Object.keys(e.models).sort()},filteredModelIds(){let e=this.modelFilter.trim().toLowerCase(),t=this.selectedProviderModels;return e?t.filter(s=>s.toLowerCase().includes(e)):t},fetchedAtLabel(){if(!this.fetchedAt)return null;let e=Math.max(0,Math.floor((Date.now()-this.fetchedAt)/6e4));return this.$t("settings.llm.preset.fetchedAt",{minutes:e})}},async mounted(){await this.load(!1)},methods:{trackOverlayPointerDown:at,trackOverlayPointerUp:lt,clearOverlayPointerGesture:ct,onOverlayClick(e){
|
|
5563
|
+
`,data(){return{loading:!1,error:null,registry:{},fetchedAt:0,providerFilter:"",modelFilter:"",selectedProviderId:null,selectedModels:new Set}},computed:{chatStore(){return Pinia.useChatStore()},providerIds(){return Object.keys(this.registry).sort()},filteredProviderIds(){let e=this.providerFilter.trim().toLowerCase();return e?this.providerIds.filter(t=>t.toLowerCase().includes(e)||(this.providerName(t)||"").toLowerCase().includes(e)):this.providerIds},selectedProviderModels(){let e=this.registry[this.selectedProviderId];return!e||typeof e.models!="object"?[]:Object.keys(e.models).sort()},filteredModelIds(){let e=this.modelFilter.trim().toLowerCase(),t=this.selectedProviderModels;return e?t.filter(s=>s.toLowerCase().includes(e)):t},fetchedAtLabel(){if(!this.fetchedAt)return null;let e=Math.max(0,Math.floor((Date.now()-this.fetchedAt)/6e4));return this.$t("settings.llm.preset.fetchedAt",{minutes:e})}},async mounted(){await this.load(!1)},methods:{trackOverlayPointerDown:at,trackOverlayPointerUp:lt,clearOverlayPointerGesture:ct,onOverlayClick(e){st(e)&&this.$emit("close")},async load(e){this.loading=!0,this.error=null;try{let t=await this.chatStore.loadModelsDevRegistry({forceRefresh:e});this.registry=t?.registry||{},this.fetchedAt=t?.fetchedAt||0,t?.error&&(this.error=t.error)}catch(t){this.error=t?.message||String(t)}finally{this.loading=!1}},refresh(){this.load(!0)},providerName(e){return this.registry[e]?.name||e},providerModelCount(e){let t=this.registry[e]?.models;return t&&typeof t=="object"?Object.keys(t).length:0},selectProvider(e){this.selectedProviderId!==e&&(this.selectedProviderId=e,this.selectedModels=new Set,this.modelFilter="")},toggleModel(e){let t=new Set(this.selectedModels);t.has(e)?t.delete(e):t.add(e),this.selectedModels=t},selectAll(){this.selectedModels=new Set(this.filteredModelIds)},selectNone(){this.selectedModels=new Set},confirm(){if(!this.selectedProviderId||this.selectedModels.size===0)return;let e=this.registry[this.selectedProviderId]||{},t=Array.from(this.selectedModels).map(s=>{let n=wb(s);return n?{id:s,protocol:n}:s});this.$emit("pick",{name:this.selectedProviderId,baseUrl:e.api||"",protocol:"",models:t})}}}});var Zi,Ll=F(()=>{Lg();Vg();Zi={name:"LlmTab",components:{ProviderPresetPicker:$g},props:{context:{type:String,default:"chat"}},emits:["message","saved"],template:`
|
|
5564
5564
|
<div class="llm-tab">
|
|
5565
5565
|
<!-- No agent selected -->
|
|
5566
5566
|
<div v-if="!effectiveAgentId" class="sp-desc">
|
|
@@ -5765,7 +5765,7 @@ ${String(e||"").trim()}
|
|
|
5765
5765
|
</div>
|
|
5766
5766
|
`,directives:{"click-outside":{mounted(e,t){e._clickOutside=s=>{e.contains(s.target)||t.value()},document.addEventListener("click",e._clickOutside)},unmounted(e){document.removeEventListener("click",e._clickOutside)}}},data(){return{loading:!1,loadError:null,localProviders:[],providerModelsText:[],localPrimaryModel:null,localFastModel:null,isDirty:!1,saving:!1,openDropdown:null,showApiKey:{},showPresetPicker:!1,discoveringModels:!1,modelDiscoveryWarning:null,modelDiscoveryError:null,saveRefreshWarning:null}},computed:{chatStore(){return Pinia.useChatStore()},effectiveAgentId(){return this.chatStore.currentAgent},agentOnline(){let e=this.effectiveAgentId;if(!e)return!1;if(this.context==="yeaft")return!0;let t=this.chatStore.agents.find(s=>s.id===e);return t?t.online:!1},currentConfig(){let e=this.effectiveAgentId;return e&&this.chatStore.llmConfig[e]||null},editableProviders(){return this.localProviders},allModelRefs(){let e=this.localProviders,t=[];for(let s of e){if(!s.name)continue;let n=this.parseModelsFromProvider(s);for(let r of n)t.push(`${s.name}/${r}`)}return t}},watch:{effectiveAgentId:{handler(e,t){e!==t&&(this.cancelPendingDiscovery(),this.cancelPendingSave(),this._loadTimeout&&(clearTimeout(this._loadTimeout),this._loadTimeout=null),this.loading=!1,this.loadError=null,this.localProviders=[],this.providerModelsText=[],this.localPrimaryModel=null,this.localFastModel=null,this.isDirty=!1,this.modelDiscoveryWarning=null,this.modelDiscoveryError=null,this.saveRefreshWarning=null),e&&this.requestConfig()},immediate:!0},agentOnline(e){e&&!this.currentConfig&&this.effectiveAgentId&&this.requestConfig()},currentConfig:{handler(e){e&&e.loaded&&this.loadFromConfig(e)},deep:!0}},methods:{async copyText(e){try{await navigator.clipboard.writeText(e),this.$emit("message",this.$t("settings.msg.copiedClipboard"),!1)}catch{this.$emit("message",this.$t("settings.msg.copyFailed"),!0)}},async useGitHubCopilotPreset(){let e=this.effectiveAgentId;if(!e||!this.agentOnline)return;this.cancelPendingDiscovery(),this.discoveringModels=!0,this.modelDiscoveryWarning=null,this.modelDiscoveryError=null;let t=`llm-discovery-${Date.now()}-${Math.random().toString(36).slice(2)}`;this._pendingDiscovery={agentId:e,requestId:t},this.chatStore.sendWsMessage({type:"discover_llm_models",agentId:e,requestId:t,providerType:"github-copilot"});let s=await this.waitForModelDiscovery(e,t);if(!(this._pendingDiscovery?.agentId!==e||this._pendingDiscovery?.requestId!==t||this.effectiveAgentId!==e)){if(this._pendingDiscovery=null,this.discoveringModels=!1,s.error){this.modelDiscoveryError=s.error;return}this.applyDiscoveredProvider(s),this.modelDiscoveryWarning=s.warning||null}},waitForModelDiscovery(e,t){return new Promise(s=>{let n=Date.now(),r=i=>{this._discoveryTimer&&clearInterval(this._discoveryTimer),this._discoveryTimer=null,this._resolvePendingDiscovery=null,s(i)};this._resolvePendingDiscovery=r,this._discoveryTimer=setInterval(()=>{let i=this.chatStore.llmModelDiscovery?.[e];if(i?.requestId===t){r(i);return}Date.now()-n>1e4&&r({error:"Timed out while refreshing provider models."})},100)})},cancelPendingDiscovery(){let e=this._resolvePendingDiscovery;this._discoveryTimer&&clearInterval(this._discoveryTimer),this._discoveryTimer=null,this._resolvePendingDiscovery=null,this._pendingDiscovery=null,this.discoveringModels=!1,e&&e({cancelled:!0})},cancelPendingSave(){this._saveTimeout&&(clearTimeout(this._saveTimeout),this._saveTimeout=null),this._saveUnwatch&&(this._saveUnwatch(),this._saveUnwatch=null),this._pendingSave=null,this.saving=!1},applyDiscoveredProvider(e){let t={name:e.provider?.name||"github-copilot",credentialProvider:e.provider?.credentialProvider||"github-copilot",managed:e.provider?.managed||"github-copilot",models:Array.isArray(e.providerModels)&&e.providerModels.length?e.providerModels:e.models||[]},s=[...this.localProviders],n=s.findIndex(o=>o?.name===t.name);n>=0?s[n]=t:s.push(t),this.localProviders=s,this.refreshProviderModelsText();let r=new Set(this.parseModelsFromProvider(t).map(o=>`${t.name}/${o}`)),i=r.values().next().value||null;i&&!r.has(this.localPrimaryModel)&&(this.localPrimaryModel=i),i&&this.localFastModel?.startsWith(`${t.name}/`)&&!r.has(this.localFastModel)&&(this.localFastModel=i),this.markDirty()},requestConfig(){let e=this.effectiveAgentId;if(e){if(!this.agentOnline){this.loading=!1,this.loadError=null;return}this.loading=!0,this.loadError=null,this.chatStore.sendWsMessage({type:"get_llm_config",agentId:e}),this._loadTimeout=setTimeout(()=>{this.loading&&(this.loading=!1,this.loadError="Timeout")},5e3)}},loadFromConfig(e){if(this._loadTimeout&&(clearTimeout(this._loadTimeout),this._loadTimeout=null),this.loading=!1,e.error){this.loadError=e.error;return}this.loadError=null,this.localProviders=(e.agentConfig?.providers||e.providers||[]).map(t=>this.cloneProvider(t)),this.refreshProviderModelsText(),this.localPrimaryModel=e.agentConfig?.primaryModel||e.primaryModel||null,this.localFastModel=e.agentConfig?.fastModel||e.fastModel||null,this.isDirty=!1,this.showApiKey={}},cloneProvider(e){return{type:e.type||"api-key",scope:"agent",name:e.originalName||e.name||"",baseUrl:e.baseUrl||"",apiKey:e.apiKey||"",githubToken:e.githubToken||"",protocol:e.protocol||"openai-responses",credentialProvider:e.credentialProvider||null,models:Array.isArray(e.models)?e.models.map(t=>t&&typeof t=="object"?{...t}:t):[]}},refreshProviderModelsText(){this.providerModelsText=this.editableProviders.map(e=>(e.models||[]).map(t=>this._modelId(t)).join(", "))},parseModelsFromProvider(e){return this.isManagedProvider(e)&&(!Array.isArray(e.models)||e.models.length===0)?this.fallbackCopilotModels():Array.isArray(e.models)?e.models.map(t=>this._modelId(t)).filter(t=>t):[]},_modelId(e){return typeof e=="string"?e:e&&typeof e=="object"&&typeof e.id=="string"?e.id:""},isManagedProvider(e){return e?.managed==="github-copilot"||e?.credentialProvider==="github-copilot"||e?.name==="github-copilot"},fallbackCopilotModels(){return["gpt-5.5","gpt-5.4","gpt-5.4-mini","gpt-5-mini","gpt-5.3-codex","gpt-5.2-codex","gpt-4.1","gpt-4o","gpt-4o-mini","claude-opus-4.8","claude-opus-4.7","claude-opus-4.6","claude-sonnet-4.6","claude-sonnet-4.5","claude-haiku-4.5","gemini-2.5-pro"]},addProvider(){this.editableProviders.push({name:"",baseUrl:"",apiKey:"",protocol:"openai",credentialProvider:null,models:[]}),this.providerModelsText.push(""),this.markDirty()},onPresetPick(e){if(this.showPresetPicker=!1,!e||!e.name)return;let t=new Set(this.editableProviders.map(i=>(i.name||"").trim())),s=e.name,n=2;for(;t.has(s);)s=`${e.name}-${n++}`;let r=Array.isArray(e.models)?e.models.filter(Boolean):[];this.editableProviders.push({name:s,baseUrl:e.baseUrl||"",apiKey:"",protocol:e.protocol||"openai",credentialProvider:null,models:r}),this.providerModelsText.push(r.join(", ")),this.markDirty()},removeProvider(e){this.editableProviders.splice(e,1),this.providerModelsText.splice(e,1);let t={};for(let s=0;s<this.editableProviders.length;s++)s<e?t[s]=this.showApiKey[s]:t[s]=this.showApiKey[s+1];this.showApiKey=t,this.markDirty()},onModelsTextChange(e,t){let s=t.target.value;this.providerModelsText[e]=s;let n=Array.isArray(this.editableProviders[e].models)?this.editableProviders[e].models:[],r=new Map;for(let i of n){let o=this._modelId(i);o&&r.set(o,i)}this.editableProviders[e].models=s.split(/[\n,]+/).map(i=>i.trim()).filter(i=>i).map(i=>r.has(i)?r.get(i):i),this.markDirty()},setProtocol(e,t){let s=this.editableProviders[e].protocol;if(this.editableProviders[e].protocol=t,this.markDirty(),(this.editableProviders[e].models||[]).filter(r=>r).length===0&&t!==s){let r=this._getModelPresets(t);r.length>0&&(this.editableProviders[e].models=[...r],this.providerModelsText[e]=r.join(", "))}},protocolLabel(e){return e==="anthropic"?this.$t("settings.llm.protocolAnthropic"):e==="openai-responses"?this.$t("settings.llm.protocolOpenAIResponses"):this.$t("settings.llm.protocolOpenAI")},protocolHint(e){return e==="anthropic"?this.$t("settings.llm.protocolHint.anthropic"):e==="openai-responses"?this.$t("settings.llm.protocolHint.openaiResponses"):this.$t("settings.llm.protocolHint.openai")},_getModelPresets(e){return Dl[e]||Dl.openai},toggleApiKeyVisibility(e){this.showApiKey={...this.showApiKey,[e]:!this.showApiKey[e]}},toggleDropdown(e){this.openDropdown=this.openDropdown===e?null:e},closeDropdown(e){this.openDropdown===e&&(this.openDropdown=null)},markDirty(){this.isDirty=!0},saveConfig(){let e=this.effectiveAgentId;if(!e||this.saving)return;this.saving=!0,this.saveRefreshWarning=null;let s={providers:this.editableProviders.filter(r=>r.name&&(this.isManagedProvider(r)||r.baseUrl)).map(r=>{if(this.isManagedProvider(r))return{name:r.name.trim()||"github-copilot",credentialProvider:"github-copilot",managed:r.managed||"github-copilot",models:(r.models||[]).filter(o=>this._modelId(o))};let i={type:r.type||"api-key",name:r.name.trim(),baseUrl:r.baseUrl.trim(),apiKey:r.apiKey||"",githubToken:r.githubToken||"",models:(r.models||[]).filter(o=>this._modelId(o))};return r.protocol&&r.protocol!=="openai"&&(i.protocol=r.protocol),r.credentialProvider&&(i.credentialProvider=r.credentialProvider,i.apiKey=""),i}),primaryModel:this.localPrimaryModel||null};this.context!=="yeaft"&&(s.fastModel=this.localFastModel||null);let n=`llm-save-${Date.now()}-${Math.random().toString(36).slice(2)}`;this.cancelPendingSave(),this.saving=!0,this._pendingSave={agentId:e,requestId:n},this.chatStore.sendWsMessage({type:"update_llm_config",agentId:e,requestId:n,config:s}),this._saveTimeout=setTimeout(()=>{this._pendingSave?.agentId!==e||this._pendingSave?.requestId!==n||(this.cancelPendingSave(),this.$emit("message",this.$t("settings.llm.saveFailed"),!0))},1e4),this._saveUnwatch=this.$watch("currentConfig",r=>{if(!(!r?.loaded||r.requestId!==n||this.effectiveAgentId!==e||this._pendingSave?.agentId!==e||this._pendingSave?.requestId!==n)){if(this.cancelPendingSave(),r.error){this.$emit("message",r.error,!0);return}this.isDirty=!1,this.saveRefreshWarning=r.statusRefreshError?this.$t("settings.llm.savedRefreshWarning",{error:r.statusRefreshError}):null,this.$emit("message",this.saveRefreshWarning||this.$t("settings.llm.saved"),!!r.statusRefreshError),this.$emit("saved",{warning:this.saveRefreshWarning})}},{deep:!0})}},beforeUnmount(){this._loadTimeout&&clearTimeout(this._loadTimeout),this.cancelPendingDiscovery(),this.cancelPendingSave()}}});function Ji(e){let t=(Number(e?.workCenterUrlRestoreGeneration)||0)+1;return e&&(e.workCenterUrlRestoreGeneration=t),t}var eo,$l=F(()=>{_g();Dg();pl();Ii();Si();Ll();vr();Rl();Xt();hi();wa();Ms();eo={name:"WorkCenterPage",components:{MessageComposer:Ei,UserTurnBlock:nn,VpTurnBlock:sn,WorkCenterActionDetail:Rg,WorkCenterSettingsModal:Eg,LlmTab:Zi,ModernSelect:ss},mixins:[Tg],data(){return{selectedId:null,selectedActionId:null,narrowPane:"items",contentPanelOpen:!1,contentStack:[{type:"action-list"}],staleComposerTarget:null,composerTargetValue:"coordinator",actionInputRequestGeneration:0,workCenterUrlRestoreGeneration:0,workItemMessage:"",workItemMessageQuote:null,workItemMessageAttachments:[],workItemMessageAttachmentsUploading:!1,workItemMessageSending:!1,workItemMessageError:"",workItemComposerGeneration:0,preserveComposerOnEnvelopeClear:!1,detailLoading:!1,detailError:"",createOpen:!1,settingsOpen:!1,saving:!1,createGeneration:0,llmConfigOpen:!1,search:"",boardVpId:"",boardWorkItemType:"",boardUpdatedRange:"week",mobileBoardLane:"active",deletingWorkItemIds:{},deleteWorkItemError:"",boardQueryTimer:null,workDirTouched:!1,startTouched:!1,createAttachments:[],attachmentsUploading:!1,previewingAttachmentId:null,attachmentPreviewError:"",attachmentPreviewGeneration:0,form:{requirement:"",workDir:"",reuseMemory:!0,start:!0}}},computed:{store(){return Pinia.useChatStore()},chat(){return this.store},agentId(){return this.store.workCenterAgentId||this.store.currentAgent},agents(){return this.store.agents||[]},onlineAgents(){return this.agents.filter(e=>e?.online&&Array.isArray(e.capabilities)&&e.capabilities.includes("work_center"))},workCenterAgentOptions(){return this.onlineAgents.map(e=>({value:e.id,label:e.name||e.id}))},watcher(){return this.store.workCenterWatcherByAgent[this.agentId]||null},boardNextCursor(){return this.store.workCenterListPageByAgent[this.agentId]?.nextCursor||null},boardLoadingMore(){return!!this.store.workCenterListMoreLoadingByAgent[this.agentId]},settings(){return this.store.workCenterSettingsByAgent[this.agentId]||null},runtime(){return this.store.workCenterRuntimeByAgent[this.agentId]||null},workItemTypes(){return Array.isArray(this.runtime?.workItemTypes)?this.runtime.workItemTypes:[]},workItemAttachmentsSupported(){return this.runtime?.workItemAttachments===!0},canonicalMessageWireSupported(){return this.agents.find(e=>e?.id===this.agentId)?.capabilities?.includes("work_center_message_v2")===!0},createDefaultWorkDir(){return this.settings?.defaultWorkDir||this.runtime?.defaultWorkDir||""},createDefaultStart(){return this.settings?.startImmediately!==!1},folderPickerAgentId(){return this.agentId||""},defaultWorkDir(){return this.createDefaultWorkDir},items(){return this.store.workCenterItemsByAgent[this.agentId]||[]},loading(){return!!this.store.workCenterLoadingByAgent[this.agentId]},loaded(){return!!this.store.workCenterLoadedByAgent[this.agentId]},error(){return this.store.workCenterErrorByAgent[this.agentId]||null},detail(){return this.store.workCenterDetailByAgent[this.agentId]||null},selected(){return this.detail?.id===this.selectedId?this.detail:this.items.find(e=>e.id===this.selectedId)||null},selectedAction(){return(Array.isArray(this.selected?.actions)?this.selected.actions:[]).find(t=>t.id===this.selectedActionId)||null},contentRef(){return this.contentStack[this.contentStack.length-1]||{type:"action-list"}},contentIsActionList(){return this.contentRef.type==="action-list"},composerTargetIsCoordinator(){return this.composerTargetValue==="coordinator"},composerTargetAction(){if(!this.composerTargetValue.startsWith("action:"))return null;let[,e,t]=this.composerTargetValue.split(":"),s=Number(t);return(Array.isArray(this.selected?.actions)?this.selected.actions:[]).find(r=>r.id===e&&Number(r.generation)===s)||null},composerTargetIsStale(){return this.composerTargetValue!=="coordinator"&&!this.composerTargetAction},composerTargetOptions(){let e=Array.isArray(this.selected?.actions)?this.selected.actions:[],t=this.tr("workCenter.coordinator","Coordinator"),s=[{value:"coordinator",label:this.$t("workCenter.sendToTarget",{target:t}),sublabel:this.tr("workCenter.coordinatorTargetHint","Work Item planning and coordination"),disabled:!1},...e.map(n=>{let r=this.$t("workCenter.actionNumber",{number:this.actionSequence(n)});return{value:`action:${n.id}:${n.generation}`,label:this.$t("workCenter.sendToTarget",{target:r}),sublabel:n.brief?.objective||this.actionLabel(n.type),badge:this.statusLabel(n.status),disabled:!this.canMessageAction(n)}})];return this.composerTargetIsStale?[{value:this.composerTargetValue,label:this.tr("workCenter.targetUnavailable","Selected Action is no longer available"),sublabel:this.tr("workCenter.targetUnavailableHelp","Choose another target before sending. This draft was not redirected."),disabled:!0},...s]:s},composerTargetLabel(){return this.composerTargetAction?this.composerTargetAction.brief?.objective||this.actionLabel(this.composerTargetAction.type):this.tr("workCenter.coordinator","Coordinator")},composerPlaceholder(){return this.composerTargetAction?this.$t("workCenter.actionChatPlaceholder",{name:this.composerTargetLabel}):this.tr("workCenter.conversationPlaceholder","Message about this work item")},composerTargetUnavailable(){return this.coordinatorReadOnly?!0:this.composerTargetIsCoordinator?this.coordinatorThinking:this.composerTargetAction?!this.canMessageAction(this.composerTargetAction):!0},composerCanSend(){return!this.workItemMessageSending&&!this.workItemMessageAttachmentsUploading&&!this.composerTargetUnavailable&&(!!this.workItemMessage.trim()||this.workItemMessageAttachments.length>0)},pendingMessageEnvelope(){return this.selected?.id?this.store.loadWorkCenterMessageEnvelope(this.agentId,this.selected.id):null},composerDraftLocked(){return!!this.pendingMessageEnvelope&&!this.composerTargetIsStale},pendingEnvelopeHasAttachments(){return Array.isArray(this.pendingMessageEnvelope?.attachments)&&this.pendingMessageEnvelope.attachments.length>0},pendingEnvelopeAttachmentRecovery(){return this.composerDraftLocked&&this.pendingEnvelopeHasAttachments},actionMessageKey(){return this.selected?.id&&this.selectedAction?.id?Ys(this.agentId,this.selected.id,this.selectedAction.id,this.selectedAction.generation):""},workItemComposerScope(){return this.selected?.id?`${this.agentId}:${this.selected.id}:${this.workItemComposerGeneration}`:""},conversationBlocks(){return(Array.isArray(this.selected?.messages)?this.selected.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:Qe(e.quote),timestamp:t}};if(e?.role==="assistant"){let s=e.speaker||{},n=this.workItemMessageSpeaker(e),r=s.id||`work-center-coordinator:${this.selected?.id||"unknown"}`,i=e.status==="thinking"?this.tr("workCenter.conversationThinking","Working\u2026"):e.error||"",o=e.decision?.kind&&e.decision.kind!=="answer"?this.tr(`workCenter.coordinatorDecision.${e.decision.kind}`,e.decision.kind):"",a=[e.text,i,o].filter(Boolean);return{key:e.id,kind:"assistant",speakerName:n,turn:{id:e.id,messageId:e.id,atMessageId:e.id,turnId:e.turnId||e.id,textContent:a.join(`
|
|
5767
5767
|
|
|
5768
|
-
`),textSegments:a.map((l,c)=>({key:`${e.id}:${c}`,content:l,kind:e.status==="thinking"?"progress":"result",isStreaming:e.status==="thinking"})),isStreaming:e.status==="thinking",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:[]}}}return{key:e.id,kind:"system",message:e}})},coordinatorThinking(){return(this.selected?.messages||[]).some(e=>e?.role==="assistant"&&e.status==="thinking")},coordinatorReadOnly(){return["done","cancelled"].includes(this.selected?.status)},actionMessages(){let e=Array.isArray(this.selectedAction?.messages)?this.selectedAction.messages:[],t=(Array.isArray(this.selectedAction?.thread)?this.selectedAction.thread:[]).flatMap(o=>Array.isArray(o?.messages)?o.messages:[]),s=this.store.workCenterActionMessages[this.actionMessageKey]?.messages||[],n=Zn(t,s,e),r=this.selectedAction?.liveMessage,i=r&&n.some(o=>o.role==="assistant"&&o.runId!=null&&o.runId===r.runId&&(r.status==="running"?o.text===r.text:o.status!=="running"));return Zn(n,i?null:r)},actionMessagesNextCursor(){let e=this.store.workCenterActionMessages[this.actionMessageKey];return e?e.nextCursor:this.selectedAction?.messageCursor},actionMessagesLoading(){return!!this.store.workCenterActionMessagesLoading[this.actionMessageKey]},actionMessagesError(){return this.store.workCenterActionMessagesError[this.actionMessageKey]||""},orderedActions(){let e=Array.isArray(this.selected?.actions)?this.selected.actions:[],t={running:0,waiting:1,failed:2,ready:3,completed:4,done:4,superseded:5,cancelled:6};return e.map((s,n)=>({action:s,index:n})).sort((s,n)=>{let r=t[s.action?.status]??7,i=t[n.action?.status]??7;if(r!==i)return r-i;let o=Number(s.action?.sequence),a=Number(n.action?.sequence);return Number.isFinite(o)&&Number.isFinite(a)&&o!==a?o-a:s.index-n.index}).map(s=>s.action)},boardLanes(){return[{id:"active",title:this.tr("workCenter.board.active","Active")},{id:"needs_attention",title:this.tr("workCenter.board.needsAttention","Needs attention")},{id:"closed",title:this.tr("workCenter.board.closed","Closed")}].map(e=>({...e,items:this.items.filter(t=>t.boardLane===e.id)}))},boardExecutorOptions(){let e=new Map;for(let t of this.items)for(let s of Array.isArray(t.executors)?t.executors:[])s?.id&&e.set(s.id,s.name||s.id);return[...e.entries()].map(([t,s])=>({id:t,name:s}))},boardTypeOptions(){return[...new Set(this.items.map(e=>e.workItemType).filter(Boolean))].sort()},emptyState(){return{title:this.search.trim()?this.tr("workCenter.noMatchesTitle","No matching work items"):this.tr("workCenter.emptyTitle","No work items yet"),body:this.search.trim()?this.tr("workCenter.noMatchesBody","Try a different search or filter."):this.tr("workCenter.emptyBody","Create a persistent task when work must continue beyond one conversation turn."),canCreate:!this.search.trim()}}},watch:{agentId:{immediate:!0,handler(e,t){Ji(this),this.createGeneration=(Number(this.createGeneration)||0)+1,this.saving=!1,this.selectedId=null,this.selectedActionId=null,this.contentPanelOpen=!1,this.resetWorkItemComposer?.(),this.resetContentStack?.(),this.composerTargetValue="coordinator",this.narrowPane="items",this.previewingAttachmentId=null,this.attachmentPreviewError="",this.attachmentPreviewGeneration=(Number(this.attachmentPreviewGeneration)||0)+1,t&&e!==t&&(this.closeFolderPicker(),this.resetCreateExecutionContext(e)),e&&((typeof this.boardFilters=="function"?this.store.listWorkItems(e,this.boardFilters()):this.store.listWorkItems(e)).catch(()=>{}),this.store.loadWorkCenterSettings(e).catch(()=>{}))}},createDefaultWorkDir(){this.applyCreateDefaults()},createDefaultStart(){this.applyCreateDefaults()},search(){this.scheduleBoardQuery()},boardVpId(){this.scheduleBoardQuery()},boardWorkItemType(){this.scheduleBoardQuery()},boardUpdatedRange(){this.scheduleBoardQuery()},"detail.coordinatorRevision"(){this.$nextTick(()=>{let e=this.$el?.querySelector?.(".work-center-conversation-scroll");e&&(e.scrollTop=e.scrollHeight)})},pendingMessageEnvelope(e,t){if(!(!t||e||t.workItemId!==this.selectedId)){if(this.preserveComposerOnEnvelopeClear){this.preserveComposerOnEnvelopeClear=!1,this.workItemMessageError="",this.workItemMessageSending=!1;return}this.workItemMessage="",this.workItemMessageQuote=null,this.workItemMessageAttachments=[],this.workItemMessageError="",this.workItemMessageSending=!1}},detail:{deep:!0,handler(e){if(!e||e.id!==this.selectedId)return;let t=Array.isArray(e.actions)?e.actions:[];this.selectedActionId&&!t.some(s=>s.id===this.selectedActionId)&&(this.selectedActionId=null,this.contentPanelOpen=!1,this.resetContentStack(),this.syncWorkCenterUrl(!0),this.previewingAttachmentId=null,this.attachmentPreviewError="",this.attachmentPreviewGeneration=(Number(this.attachmentPreviewGeneration)||0)+1),this.composerTargetAction==null&&this.composerTargetValue!=="coordinator"?this.staleComposerTarget=this.composerTargetValue:this.staleComposerTarget=null}}},beforeUnmount(){Ji(this),this.boardQueryTimer&&clearTimeout(this.boardQueryTimer),window.removeEventListener("popstate",this.restoreWorkCenterUrl)},mounted(){window.addEventListener("popstate",this.restoreWorkCenterUrl),this.restoreWorkCenterUrl();let e=this.store.workCenterCreateDraft;e&&(this.form={requirement:e.requirement||e.goal||e.title||"",workDir:e.workDir||"",reuseMemory:!0,start:this.settings?.startImmediately!==!1},this.createOpen=!0,this.workDirTouched=!!String(e.workDir||"").trim(),this.startTouched=!1,this.applyCreateDefaults())},methods:{trackOverlayPointerDown:at,trackOverlayPointerUp:lt,clearOverlayPointerGesture:ct,closeLlmConfigFromOverlay(e){tt(e)&&(this.llmConfigOpen=!1)},tr(e,t){let s=this.$t?this.$t(e):e;return s&&s!==e?s:t},selectWorkCenterAgent(e){!e||e===this.agentId||this.store.enterWorkCenter(e)},statusLabel(e){return this.tr(`workCenter.status.${e}`,String(e||"").replace("_"," "))},actionLabel(e){return this.tr(`workCenter.action.${e}`,e||"\u2014")},messageSpeakerRole(e,t){return e?this.$t("workCenter.messageSpeakerRole",{name:e,role:t}):t},workItemMessageSpeaker(e){if(e?.role==="user")return this.tr("workCenter.you","You");if(e?.role==="legacy_instruction")return this.tr("workCenter.originalRequest","Original request");let t=e?.speaker?.name||e?.speaker?.id||"";return this.messageSpeakerRole(t,this.tr("workCenter.coordinator","Coordinator"))},quoteWorkItemMessage(e){let t=Qe(e);t&&(this.workItemMessageQuote=t,this.saveComposerDraft(),this.$nextTick(()=>this.$refs.workItemComposer?.getTextarea?.()?.focus?.()))},removeWorkItemMessageQuote(){this.workItemMessageQuote=null,this.saveComposerDraft()},editWorkItemMessageAsNew(e){this.workItemMessageQuote=null,this.workItemMessage=String(e||""),this.saveComposerDraft(),this.$nextTick(()=>{let t=this.$refs.workItemComposer?.getTextarea?.();t?.focus?.();let s=t?.value?.length||0;t?.setSelectionRange?.(s,s)})},openConversationAttachment(e){return this.previewAttachment(e?.attachment||e,e?.trigger||null)},actionSequence(e){let t=Number(e?.sequence);if(Number.isFinite(t)&&t>0)return t;let n=(Array.isArray(this.selected?.actions)?this.selected.actions:[]).findIndex(r=>r?.id===e?.id);return n>=0?n+1:1},actionBreadcrumbDescription(e){return String(e?.brief?.objective||e?.objective||this.actionContentSummary(e)||"").trim().replace(/\s+/g," ")||this.tr("workCenter.untitledAction","Untitled Action")},itemActionProgress(e){let t=Math.max(0,Number(e?.actionCount)||0),s=Math.min(t,Math.max(0,Number(e?.completedActionCount)||0));return this.$t("workCenter.actionProgress",{completed:s,total:t})},time(e){if(!e)return"";try{return new Date(Number(e)).toLocaleString()}catch{return""}},onWorkItemMessageInput(){this.saveComposerDraft()},onWorkItemMessageKeydown(e){e.key!=="Enter"||e.shiftKey||e.isComposing||(e.preventDefault(),this.sendSelectedWorkItemMessage())},boardFilters(){let e=Date.now(),t=this.boardUpdatedRange==="day"?e-1440*60*1e3:this.boardUpdatedRange==="week"?e-10080*60*1e3:this.boardUpdatedRange==="month"?e-720*60*60*1e3:null;return{keyword:this.search.trim(),vpId:this.boardVpId,workItemType:this.boardWorkItemType,updatedFrom:t,limit:200}},scheduleBoardQuery(){this.boardQueryTimer&&clearTimeout(this.boardQueryTimer),this.boardQueryTimer=setTimeout(()=>{this.boardQueryTimer=null,this.agentId&&this.refresh()},180)},refresh(){return this.store.listWorkItems(this.agentId,this.boardFilters()).catch(()=>{})},loadMoreBoardItems(){return this.store.loadMoreWorkItems(this.agentId).catch(()=>{})},boardAction(e){return e.attentionAction||e.activeAction||e.currentAction||null},boardActionCountLabel(e){let t=e.actionCounts||{},s=[];for(let n of["running","failed","waiting","ready"])Number(t[n])>0&&s.push(`${t[n]} ${this.statusLabel(n)}`);return s.join(" \xB7 ")||this.itemActionProgress(e)},boardExecutorLabel(e){let t=Array.isArray(e.executors)?e.executors:[];if(t.length>0)return t.map(n=>n.name||n.id).join(", ");let s=this.boardAction(e);return s?.assignedVp?.name||s?.assignedVp?.id||this.tr("workCenter.assignment.planned","Planned assignment")},sameContentRef(e,t){return e?.type===t?.type&&e?.actionId===t?.actionId&&e?.runId===t?.runId&&e?.resourceId===t?.resourceId},resetContentStack(e=[{type:"action-list"}]){let t=Array.isArray(e)?e:[e],s=t[0]?.type==="action-list"?t:[{type:"action-list"},...t];this.contentStack=s.length>0?s:[{type:"action-list"}];let n=[...this.contentStack].reverse().find(r=>r.type==="action");this.selectedActionId=this.contentRef.actionId||n?.actionId||null},openContentPanel({syncUrl:e=!0}={}){this.contentPanelOpen=!0,e&&this.syncWorkCenterUrl()},closeContentPanel({syncUrl:e=!0}={}){this.contentPanelOpen=!1,this.resetContentStack(),e&&this.syncWorkCenterUrl(),this.$nextTick(()=>this.$refs.actionsButton?.focus?.())},pushContentRef(e,{replace:t=!1,syncUrl:s=!0}={}){let n=this.contentRef;if(this.contentPanelOpen=!0,this.sameContentRef(n,e)){s&&this.syncWorkCenterUrl(t);return}this.contentStack=e.type==="action-list"?[{type:"action-list"}]:[...this.contentStack,e],this.selectedActionId=e.actionId||this.selectedActionId,s&&this.syncWorkCenterUrl(t)},popContentRef(){if(this.contentStack.length<=1)return;this.contentStack=this.contentStack.slice(0,-1);let e=[...this.contentStack].reverse().find(t=>t.type==="action");this.selectedActionId=e?.actionId||null,this.syncWorkCenterUrl()},contentRefParam(e){return e.type==="action"&&e.actionId?`action:${e.actionId}`:e.type==="run"&&e.actionId&&e.runId?`run:${e.actionId}:${e.runId}`:e.type==="attachment"&&e.resourceId?`attachment:${e.actionId||"-"}:${e.resourceId}`:"action-list"},contentStackParam(){return this.contentStack.map(e=>this.contentRefParam(e)).join("/")},parseContentRef(e){let t=String(e||"");if(t==="action-list")return{type:"action-list"};if(t.startsWith("action:"))return{type:"action",actionId:t.slice(7)};if(t.startsWith("run:")){let[,s,n]=t.split(":");return{type:"run",actionId:s,runId:n}}if(t.startsWith("attachment:")){let[,s,n]=t.split(":");return{type:"attachment",actionId:s==="-"?null:s,resourceId:n}}return{type:"action-list"}},parseContentStack(e){let s=[...String(e||"").split("/").filter(Boolean).map(n=>this.parseContentRef(n))].reverse().find(n=>n.actionId&&["action","run","attachment"].includes(n.type));return s?[{type:"action-list"},{type:"action",actionId:s.actionId}]:[{type:"action-list"}]},workCenterUrlRoute(){let e=new URLSearchParams(window.location.search);return{agentId:e.get("workAgentId"),itemId:e.get("workItemId"),content:e.has("workContent")?e.get("workContent"):null}},sameWorkCenterUrlRoute(e,t){return e?.agentId===t?.agentId&&e?.itemId===t?.itemId&&e?.content===t?.content},syncWorkCenterUrl(e=!1){Ji(this);let t=new URL(window.location.href);this.selectedId?(t.searchParams.set("workAgentId",this.agentId||""),t.searchParams.set("workItemId",this.selectedId),this.contentPanelOpen?t.searchParams.set("workContent",this.contentStackParam()):t.searchParams.delete("workContent")):(t.searchParams.delete("workAgentId"),t.searchParams.delete("workItemId"),t.searchParams.delete("workContent"));let s=`${t.pathname}${t.search}${t.hash}`;if(`${window.location.pathname}${window.location.search}${window.location.hash}`===s)return;let n={...window.history.state,workCenter:!!this.selectedId,workCenterContent:!!this.selectedId&&this.contentPanelOpen};window.history[e?"replaceState":"pushState"](n,"",s)},async restoreWorkCenterUrl(){let e=Ji(this),t=this.workCenterUrlRoute(),s=()=>e===this.workCenterUrlRestoreGeneration&&this.sameWorkCenterUrlRoute(t,this.workCenterUrlRoute()),n=t.agentId,r=t.itemId;if(!r||n&&n!==this.agentId){this.selectedId&&this.showItemsPane({syncUrl:!1});return}let i=t.content!=null,o=this.parseContentStack(t.content),a=o.at(-1);if(this.selectedId!==r||this.detail?.id!==r){this.openWorkItem(r,{syncUrl:!1,contentRefs:o,contentOpen:i}),this.detailLoading=!0;try{await this.store.getWorkItem(r,this.agentId)}catch(c){s()&&(this.detailError=c?.message||String(c))}finally{s()&&(this.detailLoading=!1)}}if(!s())return;let l=a.actionId||[...o].reverse().find(c=>c.type==="action")?.actionId;if(l&&!this.selected?.actions?.some(c=>c.id===l)){this.resetContentStack(),this.syncWorkCenterUrl(!0);return}this.resetContentStack(o),this.contentPanelOpen=i,this.narrowPane="work-item",i&&l&&this.loadLatestActionMessages(this.selectedAction),i&&t.content!==this.contentStackParam()&&this.syncWorkCenterUrl(!0)},resetWorkItemComposer(){this.workItemComposerGeneration+=1,this.workItemMessage="",this.workItemMessageQuote=null,this.workItemMessageAttachments=[],this.workItemMessageAttachmentsUploading=!1,this.workItemMessageError="",this.workItemMessageSending=!1},draftTarget(){let e=this.composerTargetAction;return e?{kind:"action",actionId:e.id,generation:Number(e.generation)}:this.composerTargetValue==="coordinator"?{kind:"coordinator"}:(()=>{let[,t="",s="0"]=this.composerTargetValue.split(":");return{kind:"action",actionId:t,generation:Number(s)||0}})()},targetValue(e){return typeof e=="string"&&e.startsWith("action:")?e:e?.kind==="action"?`action:${e.actionId}:${e.generation}`:"coordinator"},saveComposerDraft(){!this.selectedId||!this.agentId||this.store.saveWorkCenterComposerDraft(this.agentId,this.selectedId,{text:this.workItemMessage,quote:this.workItemMessageQuote,attachments:[...this.workItemMessageAttachments],target:this.draftTarget(),error:this.workItemMessageError})},restoreComposerDraft(e){let s=this.store.loadWorkCenterMessageEnvelope(this.agentId,e)||this.store.loadWorkCenterComposerDraft(this.agentId,e);this.workItemMessage=s?.text||"",this.workItemMessageQuote=Qe(s?.quote),this.workItemMessageAttachments=[...s?.attachments||[]],this.composerTargetValue=this.targetValue(s?.target),this.workItemMessageError=s?.error||"",this.staleComposerTarget=null,this.workItemMessageSending=!1,this.workItemMessageAttachmentsUploading=!1,this.workItemComposerGeneration+=1},openWorkItem(e,{syncUrl:t=!0,contentRefs:s=[{type:"action-list"}],contentOpen:n=!1}={}){this.saveComposerDraft(),this.selectedId=e,this.narrowPane="work-item",this.contentPanelOpen=n,this.resetContentStack(s),this.restoreComposerDraft(e),this.detailError="",this.detailLoading=!1,this.previewingAttachmentId=null,this.attachmentPreviewError="",this.attachmentPreviewGeneration=(Number(this.attachmentPreviewGeneration)||0)+1,t&&this.syncWorkCenterUrl()},async selectItem(e){this.openWorkItem(e.id),this.detailLoading=!0;try{await this.store.getWorkItem(e.id,this.agentId)}catch(t){this.selectedId===e.id&&(this.detailError=t?.message||String(t))}finally{this.selectedId===e.id&&(this.detailLoading=!1)}},selectAction(e){this.selectedActionId!==e.id&&(this.previewingAttachmentId=null,this.attachmentPreviewError="",this.attachmentPreviewGeneration=(Number(this.attachmentPreviewGeneration)||0)+1),this.pushContentRef({type:"action",actionId:e.id}),this.loadLatestActionMessages(e)},loadLatestActionMessages(e=this.selectedAction){if(!this.selected?.id||!e?.id||Array.isArray(e.messages))return null;let t=Ys(this.agentId,this.selected.id,e.id,e.generation);return this.store.workCenterActionMessages[t]?null:this.store.loadWorkItemActionMessages(this.selected.id,e.id,e.generation,null,this.agentId).catch(()=>null)},showItemsPane({syncUrl:e=!0}={}){this.saveComposerDraft(),this.narrowPane="items",this.selectedId=null,this.contentPanelOpen=!1,this.resetContentStack(),this.composerTargetValue="coordinator",this.resetWorkItemComposer(),e&&this.syncWorkCenterUrl()},showActionsPane(){this.contentPanelOpen=!0,this.contentIsActionList?this.syncWorkCenterUrl():this.popContentRef()},canMessageAction(e){return!e||["done","cancelled"].includes(this.selected?.status)?!1:["idle","ready","running","paused","waiting","failed","completed","stopped"].includes(e.status)&&e.admissionStatus!=="blocked"},clearPendingMessageEnvelope({preserveAttachments:e=!1}={}){return!this.selectedId||!this.pendingMessageEnvelope?!1:(this.actionInputRequestGeneration=(Number(this.actionInputRequestGeneration)||0)+1,this.preserveComposerOnEnvelopeClear=!0,this.store.discardWorkCenterMessageEnvelope(this.agentId,this.selectedId)?(e||(this.workItemMessageAttachments=[]),this.workItemMessageError="",this.workItemMessageSending=!1,!0):(this.preserveComposerOnEnvelopeClear=!1,!1))},chooseCoordinatorTarget(){this.pendingMessageEnvelope&&!this.clearPendingMessageEnvelope({preserveAttachments:!0})||(this.composerTargetValue="coordinator",this.staleComposerTarget=null,this.saveComposerDraft())},onComposerTargetChange(){this.pendingMessageEnvelope&&!this.clearPendingMessageEnvelope({preserveAttachments:!0})||(this.staleComposerTarget=this.composerTargetAction==null&&this.composerTargetValue!=="coordinator"?this.composerTargetValue:null,this.saveComposerDraft())},loadEarlierActionMessages(){return!this.selected?.id||!this.selectedAction?.id||this.actionMessagesNextCursor==null?null:this.store.loadWorkItemActionMessages(this.selected.id,this.selectedAction.id,this.selectedAction.generation,this.actionMessagesNextCursor,this.agentId).catch(()=>null)},actionExecutor(e){return e?.assignedVp?.name||e?.assignedVp?.id||e?.requiredRole||e?.assignmentPolicy?.fixedVpId||e?.assignmentPolicy?.capability||this.tr("workCenter.assignment.auto","Auto")},actionContentSummary(e){return String(e?.contentSummary||e?.response||e?.brief?.objective||"").trim()},executionStats(e){return e?.executionStats||{}},formatCount(e){return new Intl.NumberFormat().format(Math.max(0,Number(e)||0))},formatTokens(e){let t=Math.max(0,Number(e)||0);return t>=1e6?`${(t/1e6).toFixed(1)}m`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)},resetCreateExecutionContext(e){let t=this.workDirTouched||this.startTouched,s=this.store.workCenterCreateDraft;s&&(this.store.workCenterCreateDraft={sourceAgentId:e||null,requirement:s.requirement||s.goal||s.title||"",workDir:"",origin:null,linkedSessionIds:[]}),this.form.workDir="",this.form.start=!0,this.workDirTouched=!1,this.startTouched=!1,t&&(this.createOpen=!1),this.applyCreateDefaults()},applyCreateDefaults(){this.createOpen&&(!this.workDirTouched&&!this.form.workDir.trim()&&(this.form.workDir=this.createDefaultWorkDir),this.startTouched||(this.form.start=this.createDefaultStart))},folderPickerInitialDir(){return this.form.workDir.trim()||this.createDefaultWorkDir},folderPickerSetWorkDir(e){this.form.workDir=e,this.workDirTouched=!0},onCreateWorkDirInput(){this.workDirTouched=!0},onCreateStartInput(){this.startTouched=!0},async onCreateAttachmentInput(e){if(!this.workItemAttachmentsSupported)throw e.target.value="",new Error(this.tr("workCenter.attachmentsUnsupported","The selected Agent does not support Work Item attachments."));let t=Array.from(e.target.files||[]);if(e.target.value="",t.length===0)return;let s=Math.max(0,10-this.createAttachments.length),n=t.slice(0,s);if(n.length!==0){this.attachmentsUploading=!0;try{let r=new FormData;for(let d of n)r.append("files",d,d.name||"attachment");let i=Pinia.useAuthStore(),o=i.getActiveToken?.()||i.token||null,a=o?{Authorization:`Bearer ${o}`}:{},l=await fetch("/api/upload",{method:"POST",headers:a,body:r});if(!l.ok)throw new Error(this.tr("workCenter.attachmentsUploadFailed","Attachment upload failed"));let c=await l.json();this.createAttachments=[...this.createAttachments,...Array.isArray(c.files)?c.files:[]].slice(0,10)}finally{this.attachmentsUploading=!1}}},removeCreateAttachment(e){this.createAttachments=this.createAttachments.filter((t,s)=>s!==e)},discardPendingMessageEnvelope(){this.clearPendingMessageEnvelope()&&this.saveComposerDraft()},async onWorkItemMessageAttachmentInput(e){if(!this.workItemAttachmentsSupported){e.target.value="",this.workItemMessageError=this.tr("workCenter.attachmentsUnsupported","The selected Agent does not support Work Item attachments.");return}let t=Array.from(e.target.files||[]);if(e.target.value="",t.length===0)return;let s=this.workItemComposerScope;if(!s)return;let n=this.pendingEnvelopeAttachmentRecovery,r=Array.isArray(this.selected?.attachments)?this.selected.attachments.length:0,i=Math.max(0,10-r-(n?0:this.workItemMessageAttachments.length)),o=t.slice(0,i);if(o.length!==0){this.workItemMessageAttachmentsUploading=!0,this.workItemMessageError="";try{let a=new FormData;for(let g of o)a.append("files",g,g.name||"attachment");let l=Pinia.useAuthStore(),c=l.getActiveToken?.()||l.token||null,d=c?{Authorization:`Bearer ${c}`}:{},u=await fetch("/api/upload",{method:"POST",headers:d,body:a});if(!u.ok)throw new Error(this.tr("workCenter.attachmentsUploadFailed","Attachment upload failed"));let f=await u.json();if(this.workItemComposerScope!==s)return;let p=(Array.isArray(f.files)?f.files:[]).slice(0,Math.max(0,10-r));if(n){let g=this.store.replaceWorkCenterMessageEnvelopeAttachments(this.agentId,this.selectedId,p);if(!g)throw new Error(this.tr("workCenter.pendingEnvelopeChanged","The pending request changed; reopen this Work Item and try again."));this.workItemMessageAttachments=[...g.attachments],this.workItemMessageError=""}else this.workItemMessageAttachments=[...this.workItemMessageAttachments,...p].slice(0,Math.max(0,10-r)),this.saveComposerDraft()}catch(a){this.workItemComposerScope===s&&(this.workItemMessageError=a?.message||String(a))}finally{this.workItemComposerScope===s&&(this.workItemMessageAttachmentsUploading=!1)}}},removeWorkItemMessageAttachment(e){this.workItemMessageAttachments=this.workItemMessageAttachments.filter((t,s)=>s!==e),this.saveComposerDraft()},async previewAttachment(e,t=null){if(!this.selected?.id||!e?.id||this.previewingAttachmentId)return;let s=this.agentId,n=this.selected.id,r=this.selectedActionId||"",i=`${s}:${n}:${r}`,o=(Number(this.attachmentPreviewGeneration)||0)+1;this.attachmentPreviewGeneration=o;let a=()=>this.attachmentPreviewGeneration===o&&`${this.agentId}:${this.selected?.id||""}:${this.selectedActionId||""}`===i,l=e.isImage?null:window.open("","_blank");if(!e.isImage&&!l){this.attachmentPreviewError=this.tr("workCenter.attachmentOpenBlocked","The browser blocked the attachment window. Allow pop-ups and try again.");return}l&&(l.opener=null),this.previewingAttachmentId=e.id,this.attachmentPreviewError="";try{let c=await this.store.previewWorkItemAttachment(n,e.id,s);if(!a()){l?.close();return}c?.preview&&c.attachment?.isImage?Js(c.preview,{alt:e.name||this.tr("workCenter.previewAttachment","Open attachment"),closeLabel:this.tr("common.close","Close"),trigger:t}):c?.preview&&l?l.location.replace(c.preview):l?.close()}catch(c){l?.close(),a()&&(this.attachmentPreviewError=c?.message||this.tr("workCenter.attachmentPreviewFailed","Could not open the attachment. Try again."))}finally{a()&&(this.previewingAttachmentId=null)}},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`},openCreate(){this.createOpen=!0,this.workDirTouched=!1,this.startTouched=!1,this.applyCreateDefaults()},closeCreate(){this.saving||(this.closeFolderPicker(),this.createOpen=!1,this.store.workCenterCreateDraft=null)},onLlmConfigSaved(){let e=this.agentId;if(e)return this.store.refreshWorkCenterRuntime(e).catch(()=>{})},async submitCreate(){let e=String(this.form.requirement||this.form.goal||this.form.title||"").trim();if(!e||!this.form.workDir.trim())return;let t=this.agentId,s=(Number(this.createGeneration)||0)+1;this.createGeneration=s,this.saving=!0;try{let n=this.store.workCenterCreateDraft,r=n?.sourceAgentId===t,i=await this.store.createWorkItem({requirement:e,title:e,goal:e,acceptanceCriteria:[],workItemType:"auto",workDir:this.form.workDir.trim(),origin:r&&n.origin||null,linkedSessionIds:r?n.linkedSessionIds||[]:[],attachments:this.workItemAttachmentsSupported?(this.createAttachments||[]).map(o=>({fileId:o.fileId,name:o.name,mimeType:o.mimeType,size:o.size})):[],reuseMemory:this.form.reuseMemory,start:this.form.start},t);if(this.agentId!==t||this.createGeneration!==s)return;this.openWorkItem(i.id),this.form={requirement:"",workDir:"",reuseMemory:!0,start:this.settings?.startImmediately!==!1},this.store.workCenterCreateDraft=null,this.createAttachments=[],this.workDirTouched=!1,this.startTouched=!1,this.createOpen=!1}finally{this.agentId===t&&this.createGeneration===s&&(this.saving=!1)}},async startSelected(){this.selected&&await this.store.startWorkItem(this.selected.id,this.agentId)},async sendSelectedWorkItemMessage(){if(!this.selected||!this.composerCanSend)return;let e=this.workItemComposerScope,t=this.composerTargetValue,s=this.composerTargetAction;if(!this.composerTargetIsCoordinator&&!s)return;let n=this.selected.id,r=this.selected.revision,i=this.workItemMessage.trim(),o=Qe(this.workItemMessageQuote),a=this.workItemMessageAttachments.map(c=>({fileId:c.fileId,name:c.name,mimeType:c.mimeType,size:c.size})),l=(Number(this.actionInputRequestGeneration)||0)+1;this.actionInputRequestGeneration=l,this.workItemMessageSending=!0,this.workItemMessageError="",this.saveComposerDraft();try{let c={planRevision:this.selected.planRevision,ledgerRevision:this.selected.ledgerRevision,coordinatorRevision:this.selected.coordinatorRevision};this.canonicalMessageWireSupported?await this.store.postWorkItemMessage(n,i,s?{kind:"action",actionId:s.id,generation:s.generation}:{kind:"coordinator"},r,a,this.agentId,c,o):s?await this.store.sendWorkItemActionInput(n,i,s.id,r,s.generation,a,this.agentId,o):await this.store.sendWorkItemMessage(n,i,r,a,this.agentId,c,o),this.workItemComposerScope===e&&this.actionInputRequestGeneration===l&&this.composerTargetValue===t&&this.workItemMessage.trim()===i&&!this.store.loadWorkCenterMessageEnvelope(this.agentId,n)&&(this.workItemMessage="",this.workItemMessageQuote=null,this.workItemMessageAttachments=[],this.store.removeWorkCenterComposerDraft(this.agentId,n))}catch(c){this.workItemComposerScope===e&&this.actionInputRequestGeneration===l&&(this.workItemMessageError=c?.message||String(c),this.saveComposerDraft())}finally{this.workItemComposerScope===e&&this.actionInputRequestGeneration===l&&(this.workItemMessageSending=!1)}},workItemCanDelete(e){return["done","cancelled","draft","needs_attention"].includes(e?.status)},workItemDeleting(e){return!!this.deletingWorkItemIds[e?.id]},async deleteWorkItem(e){if(!e||this.workItemDeleting(e))return;let t=this.tr("workCenter.deleteConfirm","Permanently delete this Work Item, its execution history, and attachments?");if(!(typeof confirm=="function"&&!confirm(t))){this.deleteWorkItemError="",this.deletingWorkItemIds={...this.deletingWorkItemIds,[e.id]:!0};try{let s=await this.store.deleteWorkItem(e.id,e.revision,this.agentId);s?.cleanupWarning&&(this.deleteWorkItemError=s.cleanupWarning),this.selectedId===e.id&&this.showItemsPane()}catch(s){this.deleteWorkItemError=s?.message||String(s)}finally{let s={...this.deletingWorkItemIds};delete s[e.id],this.deletingWorkItemIds=s}}},async cancelSelected(){if(!this.selected||["done","cancelled"].includes(this.selected.status))return;let e=this.tr("workCenter.cancelConfirm","Stop this work item and its unfinished Actions?");typeof confirm=="function"&&!confirm(e)||await this.store.cancelWorkItem(this.selected.id,this.agentId)},async resumeSelected(){!this.selected||this.selected.status!=="cancelled"||await this.store.resumeWorkItem(this.selected.id,this.selected.revision,this.agentId)}},template:`
|
|
5768
|
+
`),textSegments:a.map((l,c)=>({key:`${e.id}:${c}`,content:l,kind:e.status==="thinking"?"progress":"result",isStreaming:e.status==="thinking"})),isStreaming:e.status==="thinking",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:[]}}}return{key:e.id,kind:"system",message:e}})},coordinatorThinking(){return(this.selected?.messages||[]).some(e=>e?.role==="assistant"&&e.status==="thinking")},coordinatorReadOnly(){return["done","cancelled"].includes(this.selected?.status)},actionMessages(){let e=Array.isArray(this.selectedAction?.messages)?this.selectedAction.messages:[],t=(Array.isArray(this.selectedAction?.thread)?this.selectedAction.thread:[]).flatMap(o=>Array.isArray(o?.messages)?o.messages:[]),s=this.store.workCenterActionMessages[this.actionMessageKey]?.messages||[],n=Zn(t,s,e),r=this.selectedAction?.liveMessage,i=r&&n.some(o=>o.role==="assistant"&&o.runId!=null&&o.runId===r.runId&&(r.status==="running"?o.text===r.text:o.status!=="running"));return Zn(n,i?null:r)},actionMessagesNextCursor(){let e=this.store.workCenterActionMessages[this.actionMessageKey];return e?e.nextCursor:this.selectedAction?.messageCursor},actionMessagesLoading(){return!!this.store.workCenterActionMessagesLoading[this.actionMessageKey]},actionMessagesError(){return this.store.workCenterActionMessagesError[this.actionMessageKey]||""},orderedActions(){let e=Array.isArray(this.selected?.actions)?this.selected.actions:[],t={running:0,waiting:1,failed:2,ready:3,completed:4,done:4,superseded:5,cancelled:6};return e.map((s,n)=>({action:s,index:n})).sort((s,n)=>{let r=t[s.action?.status]??7,i=t[n.action?.status]??7;if(r!==i)return r-i;let o=Number(s.action?.sequence),a=Number(n.action?.sequence);return Number.isFinite(o)&&Number.isFinite(a)&&o!==a?o-a:s.index-n.index}).map(s=>s.action)},boardLanes(){return[{id:"active",title:this.tr("workCenter.board.active","Active")},{id:"needs_attention",title:this.tr("workCenter.board.needsAttention","Needs attention")},{id:"closed",title:this.tr("workCenter.board.closed","Closed")}].map(e=>({...e,items:this.items.filter(t=>t.boardLane===e.id)}))},boardExecutorOptions(){let e=new Map;for(let t of this.items)for(let s of Array.isArray(t.executors)?t.executors:[])s?.id&&e.set(s.id,s.name||s.id);return[...e.entries()].map(([t,s])=>({id:t,name:s}))},boardTypeOptions(){return[...new Set(this.items.map(e=>e.workItemType).filter(Boolean))].sort()},emptyState(){return{title:this.search.trim()?this.tr("workCenter.noMatchesTitle","No matching work items"):this.tr("workCenter.emptyTitle","No work items yet"),body:this.search.trim()?this.tr("workCenter.noMatchesBody","Try a different search or filter."):this.tr("workCenter.emptyBody","Create a persistent task when work must continue beyond one conversation turn."),canCreate:!this.search.trim()}}},watch:{agentId:{immediate:!0,handler(e,t){Ji(this),this.createGeneration=(Number(this.createGeneration)||0)+1,this.saving=!1,this.selectedId=null,this.selectedActionId=null,this.contentPanelOpen=!1,this.resetWorkItemComposer?.(),this.resetContentStack?.(),this.composerTargetValue="coordinator",this.narrowPane="items",this.previewingAttachmentId=null,this.attachmentPreviewError="",this.attachmentPreviewGeneration=(Number(this.attachmentPreviewGeneration)||0)+1,t&&e!==t&&(this.closeFolderPicker(),this.resetCreateExecutionContext(e)),e&&((typeof this.boardFilters=="function"?this.store.listWorkItems(e,this.boardFilters()):this.store.listWorkItems(e)).catch(()=>{}),this.store.loadWorkCenterSettings(e).catch(()=>{}))}},createDefaultWorkDir(){this.applyCreateDefaults()},createDefaultStart(){this.applyCreateDefaults()},search(){this.scheduleBoardQuery()},boardVpId(){this.scheduleBoardQuery()},boardWorkItemType(){this.scheduleBoardQuery()},boardUpdatedRange(){this.scheduleBoardQuery()},"detail.coordinatorRevision"(){this.$nextTick(()=>{let e=this.$el?.querySelector?.(".work-center-conversation-scroll");e&&(e.scrollTop=e.scrollHeight)})},pendingMessageEnvelope(e,t){if(!(!t||e||t.workItemId!==this.selectedId)){if(this.preserveComposerOnEnvelopeClear){this.preserveComposerOnEnvelopeClear=!1,this.workItemMessageError="",this.workItemMessageSending=!1;return}this.workItemMessage="",this.workItemMessageQuote=null,this.workItemMessageAttachments=[],this.workItemMessageError="",this.workItemMessageSending=!1}},detail:{deep:!0,handler(e){if(!e||e.id!==this.selectedId)return;let t=Array.isArray(e.actions)?e.actions:[];this.selectedActionId&&!t.some(s=>s.id===this.selectedActionId)&&(this.selectedActionId=null,this.contentPanelOpen=!1,this.resetContentStack(),this.syncWorkCenterUrl(!0),this.previewingAttachmentId=null,this.attachmentPreviewError="",this.attachmentPreviewGeneration=(Number(this.attachmentPreviewGeneration)||0)+1),this.composerTargetAction==null&&this.composerTargetValue!=="coordinator"?this.staleComposerTarget=this.composerTargetValue:this.staleComposerTarget=null}}},beforeUnmount(){Ji(this),this.boardQueryTimer&&clearTimeout(this.boardQueryTimer),window.removeEventListener("popstate",this.restoreWorkCenterUrl)},mounted(){window.addEventListener("popstate",this.restoreWorkCenterUrl),this.restoreWorkCenterUrl();let e=this.store.workCenterCreateDraft;e&&(this.form={requirement:e.requirement||e.goal||e.title||"",workDir:e.workDir||"",reuseMemory:!0,start:this.settings?.startImmediately!==!1},this.createOpen=!0,this.workDirTouched=!!String(e.workDir||"").trim(),this.startTouched=!1,this.applyCreateDefaults())},methods:{trackOverlayPointerDown:at,trackOverlayPointerUp:lt,clearOverlayPointerGesture:ct,closeLlmConfigFromOverlay(e){st(e)&&(this.llmConfigOpen=!1)},tr(e,t){let s=this.$t?this.$t(e):e;return s&&s!==e?s:t},selectWorkCenterAgent(e){!e||e===this.agentId||this.store.enterWorkCenter(e)},statusLabel(e){return this.tr(`workCenter.status.${e}`,String(e||"").replace("_"," "))},actionLabel(e){return this.tr(`workCenter.action.${e}`,e||"\u2014")},messageSpeakerRole(e,t){return e?this.$t("workCenter.messageSpeakerRole",{name:e,role:t}):t},workItemMessageSpeaker(e){if(e?.role==="user")return this.tr("workCenter.you","You");if(e?.role==="legacy_instruction")return this.tr("workCenter.originalRequest","Original request");let t=e?.speaker?.name||e?.speaker?.id||"";return this.messageSpeakerRole(t,this.tr("workCenter.coordinator","Coordinator"))},quoteWorkItemMessage(e){let t=Qe(e);t&&(this.workItemMessageQuote=t,this.saveComposerDraft(),this.$nextTick(()=>this.$refs.workItemComposer?.getTextarea?.()?.focus?.()))},removeWorkItemMessageQuote(){this.workItemMessageQuote=null,this.saveComposerDraft()},editWorkItemMessageAsNew(e){this.workItemMessageQuote=null,this.workItemMessage=String(e||""),this.saveComposerDraft(),this.$nextTick(()=>{let t=this.$refs.workItemComposer?.getTextarea?.();t?.focus?.();let s=t?.value?.length||0;t?.setSelectionRange?.(s,s)})},openConversationAttachment(e){return this.previewAttachment(e?.attachment||e,e?.trigger||null)},actionSequence(e){let t=Number(e?.sequence);if(Number.isFinite(t)&&t>0)return t;let n=(Array.isArray(this.selected?.actions)?this.selected.actions:[]).findIndex(r=>r?.id===e?.id);return n>=0?n+1:1},actionBreadcrumbDescription(e){return String(e?.brief?.objective||e?.objective||this.actionContentSummary(e)||"").trim().replace(/\s+/g," ")||this.tr("workCenter.untitledAction","Untitled Action")},itemActionProgress(e){let t=Math.max(0,Number(e?.actionCount)||0),s=Math.min(t,Math.max(0,Number(e?.completedActionCount)||0));return this.$t("workCenter.actionProgress",{completed:s,total:t})},time(e){if(!e)return"";try{return new Date(Number(e)).toLocaleString()}catch{return""}},onWorkItemMessageInput(){this.saveComposerDraft()},onWorkItemMessageKeydown(e){e.key!=="Enter"||e.shiftKey||e.isComposing||(e.preventDefault(),this.sendSelectedWorkItemMessage())},boardFilters(){let e=Date.now(),t=this.boardUpdatedRange==="day"?e-1440*60*1e3:this.boardUpdatedRange==="week"?e-10080*60*1e3:this.boardUpdatedRange==="month"?e-720*60*60*1e3:null;return{keyword:this.search.trim(),vpId:this.boardVpId,workItemType:this.boardWorkItemType,updatedFrom:t,limit:200}},scheduleBoardQuery(){this.boardQueryTimer&&clearTimeout(this.boardQueryTimer),this.boardQueryTimer=setTimeout(()=>{this.boardQueryTimer=null,this.agentId&&this.refresh()},180)},refresh(){return this.store.listWorkItems(this.agentId,this.boardFilters()).catch(()=>{})},loadMoreBoardItems(){return this.store.loadMoreWorkItems(this.agentId).catch(()=>{})},boardAction(e){return e.attentionAction||e.activeAction||e.currentAction||null},boardActionCountLabel(e){let t=e.actionCounts||{},s=[];for(let n of["running","failed","waiting","ready"])Number(t[n])>0&&s.push(`${t[n]} ${this.statusLabel(n)}`);return s.join(" \xB7 ")||this.itemActionProgress(e)},boardExecutorLabel(e){let t=Array.isArray(e.executors)?e.executors:[];if(t.length>0)return t.map(n=>n.name||n.id).join(", ");let s=this.boardAction(e);return s?.assignedVp?.name||s?.assignedVp?.id||this.tr("workCenter.assignment.planned","Planned assignment")},sameContentRef(e,t){return e?.type===t?.type&&e?.actionId===t?.actionId&&e?.runId===t?.runId&&e?.resourceId===t?.resourceId},resetContentStack(e=[{type:"action-list"}]){let t=Array.isArray(e)?e:[e],s=t[0]?.type==="action-list"?t:[{type:"action-list"},...t];this.contentStack=s.length>0?s:[{type:"action-list"}];let n=[...this.contentStack].reverse().find(r=>r.type==="action");this.selectedActionId=this.contentRef.actionId||n?.actionId||null},openContentPanel({syncUrl:e=!0}={}){this.contentPanelOpen=!0,e&&this.syncWorkCenterUrl()},closeContentPanel({syncUrl:e=!0}={}){this.contentPanelOpen=!1,this.resetContentStack(),e&&this.syncWorkCenterUrl(),this.$nextTick(()=>this.$refs.actionsButton?.focus?.())},pushContentRef(e,{replace:t=!1,syncUrl:s=!0}={}){let n=this.contentRef;if(this.contentPanelOpen=!0,this.sameContentRef(n,e)){s&&this.syncWorkCenterUrl(t);return}this.contentStack=e.type==="action-list"?[{type:"action-list"}]:[...this.contentStack,e],this.selectedActionId=e.actionId||this.selectedActionId,s&&this.syncWorkCenterUrl(t)},popContentRef(){if(this.contentStack.length<=1)return;this.contentStack=this.contentStack.slice(0,-1);let e=[...this.contentStack].reverse().find(t=>t.type==="action");this.selectedActionId=e?.actionId||null,this.syncWorkCenterUrl()},contentRefParam(e){return e.type==="action"&&e.actionId?`action:${e.actionId}`:e.type==="run"&&e.actionId&&e.runId?`run:${e.actionId}:${e.runId}`:e.type==="attachment"&&e.resourceId?`attachment:${e.actionId||"-"}:${e.resourceId}`:"action-list"},contentStackParam(){return this.contentStack.map(e=>this.contentRefParam(e)).join("/")},parseContentRef(e){let t=String(e||"");if(t==="action-list")return{type:"action-list"};if(t.startsWith("action:"))return{type:"action",actionId:t.slice(7)};if(t.startsWith("run:")){let[,s,n]=t.split(":");return{type:"run",actionId:s,runId:n}}if(t.startsWith("attachment:")){let[,s,n]=t.split(":");return{type:"attachment",actionId:s==="-"?null:s,resourceId:n}}return{type:"action-list"}},parseContentStack(e){let s=[...String(e||"").split("/").filter(Boolean).map(n=>this.parseContentRef(n))].reverse().find(n=>n.actionId&&["action","run","attachment"].includes(n.type));return s?[{type:"action-list"},{type:"action",actionId:s.actionId}]:[{type:"action-list"}]},workCenterUrlRoute(){let e=new URLSearchParams(window.location.search);return{agentId:e.get("workAgentId"),itemId:e.get("workItemId"),content:e.has("workContent")?e.get("workContent"):null}},sameWorkCenterUrlRoute(e,t){return e?.agentId===t?.agentId&&e?.itemId===t?.itemId&&e?.content===t?.content},syncWorkCenterUrl(e=!1){Ji(this);let t=new URL(window.location.href);this.selectedId?(t.searchParams.set("workAgentId",this.agentId||""),t.searchParams.set("workItemId",this.selectedId),this.contentPanelOpen?t.searchParams.set("workContent",this.contentStackParam()):t.searchParams.delete("workContent")):(t.searchParams.delete("workAgentId"),t.searchParams.delete("workItemId"),t.searchParams.delete("workContent"));let s=`${t.pathname}${t.search}${t.hash}`;if(`${window.location.pathname}${window.location.search}${window.location.hash}`===s)return;let n={...window.history.state,workCenter:!!this.selectedId,workCenterContent:!!this.selectedId&&this.contentPanelOpen};window.history[e?"replaceState":"pushState"](n,"",s)},async restoreWorkCenterUrl(){let e=Ji(this),t=this.workCenterUrlRoute(),s=()=>e===this.workCenterUrlRestoreGeneration&&this.sameWorkCenterUrlRoute(t,this.workCenterUrlRoute()),n=t.agentId,r=t.itemId;if(!r||n&&n!==this.agentId){this.selectedId&&this.showItemsPane({syncUrl:!1});return}let i=t.content!=null,o=this.parseContentStack(t.content),a=o.at(-1);if(this.selectedId!==r||this.detail?.id!==r){this.openWorkItem(r,{syncUrl:!1,contentRefs:o,contentOpen:i}),this.detailLoading=!0;try{await this.store.getWorkItem(r,this.agentId)}catch(c){s()&&(this.detailError=c?.message||String(c))}finally{s()&&(this.detailLoading=!1)}}if(!s())return;let l=a.actionId||[...o].reverse().find(c=>c.type==="action")?.actionId;if(l&&!this.selected?.actions?.some(c=>c.id===l)){this.resetContentStack(),this.syncWorkCenterUrl(!0);return}this.resetContentStack(o),this.contentPanelOpen=i,this.narrowPane="work-item",i&&l&&this.loadLatestActionMessages(this.selectedAction),i&&t.content!==this.contentStackParam()&&this.syncWorkCenterUrl(!0)},resetWorkItemComposer(){this.workItemComposerGeneration+=1,this.workItemMessage="",this.workItemMessageQuote=null,this.workItemMessageAttachments=[],this.workItemMessageAttachmentsUploading=!1,this.workItemMessageError="",this.workItemMessageSending=!1},draftTarget(){let e=this.composerTargetAction;return e?{kind:"action",actionId:e.id,generation:Number(e.generation)}:this.composerTargetValue==="coordinator"?{kind:"coordinator"}:(()=>{let[,t="",s="0"]=this.composerTargetValue.split(":");return{kind:"action",actionId:t,generation:Number(s)||0}})()},targetValue(e){return typeof e=="string"&&e.startsWith("action:")?e:e?.kind==="action"?`action:${e.actionId}:${e.generation}`:"coordinator"},saveComposerDraft(){!this.selectedId||!this.agentId||this.store.saveWorkCenterComposerDraft(this.agentId,this.selectedId,{text:this.workItemMessage,quote:this.workItemMessageQuote,attachments:[...this.workItemMessageAttachments],target:this.draftTarget(),error:this.workItemMessageError})},restoreComposerDraft(e){let s=this.store.loadWorkCenterMessageEnvelope(this.agentId,e)||this.store.loadWorkCenterComposerDraft(this.agentId,e);this.workItemMessage=s?.text||"",this.workItemMessageQuote=Qe(s?.quote),this.workItemMessageAttachments=[...s?.attachments||[]],this.composerTargetValue=this.targetValue(s?.target),this.workItemMessageError=s?.error||"",this.staleComposerTarget=null,this.workItemMessageSending=!1,this.workItemMessageAttachmentsUploading=!1,this.workItemComposerGeneration+=1},openWorkItem(e,{syncUrl:t=!0,contentRefs:s=[{type:"action-list"}],contentOpen:n=!1}={}){this.saveComposerDraft(),this.selectedId=e,this.narrowPane="work-item",this.contentPanelOpen=n,this.resetContentStack(s),this.restoreComposerDraft(e),this.detailError="",this.detailLoading=!1,this.previewingAttachmentId=null,this.attachmentPreviewError="",this.attachmentPreviewGeneration=(Number(this.attachmentPreviewGeneration)||0)+1,t&&this.syncWorkCenterUrl()},async selectItem(e){this.openWorkItem(e.id),this.detailLoading=!0;try{await this.store.getWorkItem(e.id,this.agentId)}catch(t){this.selectedId===e.id&&(this.detailError=t?.message||String(t))}finally{this.selectedId===e.id&&(this.detailLoading=!1)}},selectAction(e){this.selectedActionId!==e.id&&(this.previewingAttachmentId=null,this.attachmentPreviewError="",this.attachmentPreviewGeneration=(Number(this.attachmentPreviewGeneration)||0)+1),this.pushContentRef({type:"action",actionId:e.id}),this.loadLatestActionMessages(e)},loadLatestActionMessages(e=this.selectedAction){if(!this.selected?.id||!e?.id||Array.isArray(e.messages))return null;let t=Ys(this.agentId,this.selected.id,e.id,e.generation);return this.store.workCenterActionMessages[t]?null:this.store.loadWorkItemActionMessages(this.selected.id,e.id,e.generation,null,this.agentId).catch(()=>null)},showItemsPane({syncUrl:e=!0}={}){this.saveComposerDraft(),this.narrowPane="items",this.selectedId=null,this.contentPanelOpen=!1,this.resetContentStack(),this.composerTargetValue="coordinator",this.resetWorkItemComposer(),e&&this.syncWorkCenterUrl()},showActionsPane(){this.contentPanelOpen=!0,this.contentIsActionList?this.syncWorkCenterUrl():this.popContentRef()},canMessageAction(e){return!e||["done","cancelled"].includes(this.selected?.status)?!1:["idle","ready","running","paused","waiting","failed","completed","stopped"].includes(e.status)&&e.admissionStatus!=="blocked"},clearPendingMessageEnvelope({preserveAttachments:e=!1}={}){return!this.selectedId||!this.pendingMessageEnvelope?!1:(this.actionInputRequestGeneration=(Number(this.actionInputRequestGeneration)||0)+1,this.preserveComposerOnEnvelopeClear=!0,this.store.discardWorkCenterMessageEnvelope(this.agentId,this.selectedId)?(e||(this.workItemMessageAttachments=[]),this.workItemMessageError="",this.workItemMessageSending=!1,!0):(this.preserveComposerOnEnvelopeClear=!1,!1))},chooseCoordinatorTarget(){this.pendingMessageEnvelope&&!this.clearPendingMessageEnvelope({preserveAttachments:!0})||(this.composerTargetValue="coordinator",this.staleComposerTarget=null,this.saveComposerDraft())},onComposerTargetChange(){this.pendingMessageEnvelope&&!this.clearPendingMessageEnvelope({preserveAttachments:!0})||(this.staleComposerTarget=this.composerTargetAction==null&&this.composerTargetValue!=="coordinator"?this.composerTargetValue:null,this.saveComposerDraft())},loadEarlierActionMessages(){return!this.selected?.id||!this.selectedAction?.id||this.actionMessagesNextCursor==null?null:this.store.loadWorkItemActionMessages(this.selected.id,this.selectedAction.id,this.selectedAction.generation,this.actionMessagesNextCursor,this.agentId).catch(()=>null)},actionExecutor(e){return e?.assignedVp?.name||e?.assignedVp?.id||e?.requiredRole||e?.assignmentPolicy?.fixedVpId||e?.assignmentPolicy?.capability||this.tr("workCenter.assignment.auto","Auto")},actionContentSummary(e){return String(e?.contentSummary||e?.response||e?.brief?.objective||"").trim()},executionStats(e){return e?.executionStats||{}},formatCount(e){return new Intl.NumberFormat().format(Math.max(0,Number(e)||0))},formatTokens(e){let t=Math.max(0,Number(e)||0);return t>=1e6?`${(t/1e6).toFixed(1)}m`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)},resetCreateExecutionContext(e){let t=this.workDirTouched||this.startTouched,s=this.store.workCenterCreateDraft;s&&(this.store.workCenterCreateDraft={sourceAgentId:e||null,requirement:s.requirement||s.goal||s.title||"",workDir:"",origin:null,linkedSessionIds:[]}),this.form.workDir="",this.form.start=!0,this.workDirTouched=!1,this.startTouched=!1,t&&(this.createOpen=!1),this.applyCreateDefaults()},applyCreateDefaults(){this.createOpen&&(!this.workDirTouched&&!this.form.workDir.trim()&&(this.form.workDir=this.createDefaultWorkDir),this.startTouched||(this.form.start=this.createDefaultStart))},folderPickerInitialDir(){return this.form.workDir.trim()||this.createDefaultWorkDir},folderPickerSetWorkDir(e){this.form.workDir=e,this.workDirTouched=!0},onCreateWorkDirInput(){this.workDirTouched=!0},onCreateStartInput(){this.startTouched=!0},async onCreateAttachmentInput(e){if(!this.workItemAttachmentsSupported)throw e.target.value="",new Error(this.tr("workCenter.attachmentsUnsupported","The selected Agent does not support Work Item attachments."));let t=Array.from(e.target.files||[]);if(e.target.value="",t.length===0)return;let s=Math.max(0,10-this.createAttachments.length),n=t.slice(0,s);if(n.length!==0){this.attachmentsUploading=!0;try{let r=new FormData;for(let d of n)r.append("files",d,d.name||"attachment");let i=Pinia.useAuthStore(),o=i.getActiveToken?.()||i.token||null,a=o?{Authorization:`Bearer ${o}`}:{},l=await fetch("/api/upload",{method:"POST",headers:a,body:r});if(!l.ok)throw new Error(this.tr("workCenter.attachmentsUploadFailed","Attachment upload failed"));let c=await l.json();this.createAttachments=[...this.createAttachments,...Array.isArray(c.files)?c.files:[]].slice(0,10)}finally{this.attachmentsUploading=!1}}},removeCreateAttachment(e){this.createAttachments=this.createAttachments.filter((t,s)=>s!==e)},discardPendingMessageEnvelope(){this.clearPendingMessageEnvelope()&&this.saveComposerDraft()},async onWorkItemMessageAttachmentInput(e){if(!this.workItemAttachmentsSupported){e.target.value="",this.workItemMessageError=this.tr("workCenter.attachmentsUnsupported","The selected Agent does not support Work Item attachments.");return}let t=Array.from(e.target.files||[]);if(e.target.value="",t.length===0)return;let s=this.workItemComposerScope;if(!s)return;let n=this.pendingEnvelopeAttachmentRecovery,r=Array.isArray(this.selected?.attachments)?this.selected.attachments.length:0,i=Math.max(0,10-r-(n?0:this.workItemMessageAttachments.length)),o=t.slice(0,i);if(o.length!==0){this.workItemMessageAttachmentsUploading=!0,this.workItemMessageError="";try{let a=new FormData;for(let g of o)a.append("files",g,g.name||"attachment");let l=Pinia.useAuthStore(),c=l.getActiveToken?.()||l.token||null,d=c?{Authorization:`Bearer ${c}`}:{},u=await fetch("/api/upload",{method:"POST",headers:d,body:a});if(!u.ok)throw new Error(this.tr("workCenter.attachmentsUploadFailed","Attachment upload failed"));let f=await u.json();if(this.workItemComposerScope!==s)return;let p=(Array.isArray(f.files)?f.files:[]).slice(0,Math.max(0,10-r));if(n){let g=this.store.replaceWorkCenterMessageEnvelopeAttachments(this.agentId,this.selectedId,p);if(!g)throw new Error(this.tr("workCenter.pendingEnvelopeChanged","The pending request changed; reopen this Work Item and try again."));this.workItemMessageAttachments=[...g.attachments],this.workItemMessageError=""}else this.workItemMessageAttachments=[...this.workItemMessageAttachments,...p].slice(0,Math.max(0,10-r)),this.saveComposerDraft()}catch(a){this.workItemComposerScope===s&&(this.workItemMessageError=a?.message||String(a))}finally{this.workItemComposerScope===s&&(this.workItemMessageAttachmentsUploading=!1)}}},removeWorkItemMessageAttachment(e){this.workItemMessageAttachments=this.workItemMessageAttachments.filter((t,s)=>s!==e),this.saveComposerDraft()},async previewAttachment(e,t=null){if(!this.selected?.id||!e?.id||this.previewingAttachmentId)return;let s=this.agentId,n=this.selected.id,r=this.selectedActionId||"",i=`${s}:${n}:${r}`,o=(Number(this.attachmentPreviewGeneration)||0)+1;this.attachmentPreviewGeneration=o;let a=()=>this.attachmentPreviewGeneration===o&&`${this.agentId}:${this.selected?.id||""}:${this.selectedActionId||""}`===i,l=e.isImage?null:window.open("","_blank");if(!e.isImage&&!l){this.attachmentPreviewError=this.tr("workCenter.attachmentOpenBlocked","The browser blocked the attachment window. Allow pop-ups and try again.");return}l&&(l.opener=null),this.previewingAttachmentId=e.id,this.attachmentPreviewError="";try{let c=await this.store.previewWorkItemAttachment(n,e.id,s);if(!a()){l?.close();return}c?.preview&&c.attachment?.isImage?Js(c.preview,{alt:e.name||this.tr("workCenter.previewAttachment","Open attachment"),closeLabel:this.tr("common.close","Close"),trigger:t}):c?.preview&&l?l.location.replace(c.preview):l?.close()}catch(c){l?.close(),a()&&(this.attachmentPreviewError=c?.message||this.tr("workCenter.attachmentPreviewFailed","Could not open the attachment. Try again."))}finally{a()&&(this.previewingAttachmentId=null)}},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`},openCreate(){this.createOpen=!0,this.workDirTouched=!1,this.startTouched=!1,this.applyCreateDefaults()},closeCreate(){this.saving||(this.closeFolderPicker(),this.createOpen=!1,this.store.workCenterCreateDraft=null)},onLlmConfigSaved(){let e=this.agentId;if(e)return this.store.refreshWorkCenterRuntime(e).catch(()=>{})},async submitCreate(){let e=String(this.form.requirement||this.form.goal||this.form.title||"").trim();if(!e||!this.form.workDir.trim())return;let t=this.agentId,s=(Number(this.createGeneration)||0)+1;this.createGeneration=s,this.saving=!0;try{let n=this.store.workCenterCreateDraft,r=n?.sourceAgentId===t,i=await this.store.createWorkItem({requirement:e,title:e,goal:e,acceptanceCriteria:[],workItemType:"auto",workDir:this.form.workDir.trim(),origin:r&&n.origin||null,linkedSessionIds:r?n.linkedSessionIds||[]:[],attachments:this.workItemAttachmentsSupported?(this.createAttachments||[]).map(o=>({fileId:o.fileId,name:o.name,mimeType:o.mimeType,size:o.size})):[],reuseMemory:this.form.reuseMemory,start:this.form.start},t);if(this.agentId!==t||this.createGeneration!==s)return;this.openWorkItem(i.id),this.form={requirement:"",workDir:"",reuseMemory:!0,start:this.settings?.startImmediately!==!1},this.store.workCenterCreateDraft=null,this.createAttachments=[],this.workDirTouched=!1,this.startTouched=!1,this.createOpen=!1}finally{this.agentId===t&&this.createGeneration===s&&(this.saving=!1)}},async startSelected(){this.selected&&await this.store.startWorkItem(this.selected.id,this.agentId)},async sendSelectedWorkItemMessage(){if(!this.selected||!this.composerCanSend)return;let e=this.workItemComposerScope,t=this.composerTargetValue,s=this.composerTargetAction;if(!this.composerTargetIsCoordinator&&!s)return;let n=this.selected.id,r=this.selected.revision,i=this.workItemMessage.trim(),o=Qe(this.workItemMessageQuote),a=this.workItemMessageAttachments.map(c=>({fileId:c.fileId,name:c.name,mimeType:c.mimeType,size:c.size})),l=(Number(this.actionInputRequestGeneration)||0)+1;this.actionInputRequestGeneration=l,this.workItemMessageSending=!0,this.workItemMessageError="",this.saveComposerDraft();try{let c={planRevision:this.selected.planRevision,ledgerRevision:this.selected.ledgerRevision,coordinatorRevision:this.selected.coordinatorRevision};this.canonicalMessageWireSupported?await this.store.postWorkItemMessage(n,i,s?{kind:"action",actionId:s.id,generation:s.generation}:{kind:"coordinator"},r,a,this.agentId,c,o):s?await this.store.sendWorkItemActionInput(n,i,s.id,r,s.generation,a,this.agentId,o):await this.store.sendWorkItemMessage(n,i,r,a,this.agentId,c,o),this.workItemComposerScope===e&&this.actionInputRequestGeneration===l&&this.composerTargetValue===t&&this.workItemMessage.trim()===i&&!this.store.loadWorkCenterMessageEnvelope(this.agentId,n)&&(this.workItemMessage="",this.workItemMessageQuote=null,this.workItemMessageAttachments=[],this.store.removeWorkCenterComposerDraft(this.agentId,n))}catch(c){this.workItemComposerScope===e&&this.actionInputRequestGeneration===l&&(this.workItemMessageError=c?.message||String(c),this.saveComposerDraft())}finally{this.workItemComposerScope===e&&this.actionInputRequestGeneration===l&&(this.workItemMessageSending=!1)}},workItemCanDelete(e){return["done","cancelled","draft","needs_attention"].includes(e?.status)},workItemDeleting(e){return!!this.deletingWorkItemIds[e?.id]},async deleteWorkItem(e){if(!e||this.workItemDeleting(e))return;let t=this.tr("workCenter.deleteConfirm","Permanently delete this Work Item, its execution history, and attachments?");if(!(typeof confirm=="function"&&!confirm(t))){this.deleteWorkItemError="",this.deletingWorkItemIds={...this.deletingWorkItemIds,[e.id]:!0};try{let s=await this.store.deleteWorkItem(e.id,e.revision,this.agentId);s?.cleanupWarning&&(this.deleteWorkItemError=s.cleanupWarning),this.selectedId===e.id&&this.showItemsPane()}catch(s){this.deleteWorkItemError=s?.message||String(s)}finally{let s={...this.deletingWorkItemIds};delete s[e.id],this.deletingWorkItemIds=s}}},async cancelSelected(){if(!this.selected||["done","cancelled"].includes(this.selected.status))return;let e=this.tr("workCenter.cancelConfirm","Stop this work item and its unfinished Actions?");typeof confirm=="function"&&!confirm(e)||await this.store.cancelWorkItem(this.selected.id,this.agentId)},async resumeSelected(){!this.selected||this.selected.status!=="cancelled"||await this.store.resumeWorkItem(this.selected.id,this.selected.revision,this.agentId)}},template:`
|
|
5769
5769
|
<main class="work-center-main" :class="{ 'workbench-maximized': store.workbenchMaximized && store.workbenchExpanded }">
|
|
5770
5770
|
<div class="work-center-shell" :class="{ 'showing-detail': narrowPane !== 'items' }">
|
|
5771
5771
|
<header v-if="narrowPane === 'items'" class="work-center-header">
|
|
@@ -6996,7 +6996,7 @@ ${String(e||"").trim()}
|
|
|
6996
6996
|
</div>
|
|
6997
6997
|
</div>
|
|
6998
6998
|
</div>
|
|
6999
|
-
`,mounted(){window.addEventListener("keydown",this.onEsc)},beforeUnmount(){window.removeEventListener("keydown",this.onEsc)},methods:{onEsc(e){e.key==="Escape"&&this.onDismiss()},onOpen(){this.$emit("open-library")},onDismiss(){this.$emit("dismiss")}}}});function Hl(e){return e==="members"||e==="memory"||e===ns?e:(Sb.has(e),ns)}var ns,Sb,zg,Yg=F(()=>{Ms();pr();ns="session",Sb=new Set(["announcement","rename","danger"]);zg={name:"SessionSettingsModal",emits:["close","open-vp-library"],props:{groupId:{type:String,required:!0},agentId:{type:String,default:null},initialSection:{type:String,default:ns,validator:e=>[ns,"announcement","members","rename","memory","danger"].includes(e)},initialEditVpId:{type:String,default:""}},data(){return{section:this.initialEditVpId?"members":Hl(this.initialSection),announcementDraft:"",announcementBusy:!1,announcementError:"",renameDraft:"",renameBusy:!1,renameError:"",membersBusy:!1,membersError:"",highlightedVpId:this.initialEditVpId||"",deleteConfirmText:"",deleteBusy:!1,deleteError:""}},computed:{chat(){try{return window.Pinia?.useChatStore?.()||null}catch{return null}},vpStore(){try{return window.Pinia?.useVpStore?.()||null}catch{return null}},sessionsStore(){try{return window.Pinia?.useSessionsStore?.()||null}catch{return null}},group(){let e=this.sessionsStore,t=this.agentId||this.chat?.currentAgent||null;return e&&typeof e.sessionById=="function"?e.sessionById(this.groupId,t):null},targetAgentId(){return this.agentId||this.group?.agentId||this.chat?.currentAgent||null},groupDisplayName(){let e=this.group;return e?e.id==="grp_default"&&(e.name==="Default"||!e.name)?this.$t("yeaft.session.defaultName")||e.name||e.id:e.name||e.id:""},announcement(){return this.group&&typeof this.group.announcement=="string"?this.group.announcement:""},roster(){return this.group&&Array.isArray(this.group.roster)?this.group.roster:[]},defaultVpId(){return this.group&&this.group.defaultVpId||null},vpList(){return this.vpStore?.vpList||[]},vpDomainSections(){return xs(this.vpList)},vpLibraryEmpty(){let e=this.vpStore;return e?e.emptyLibrary===!0?!0:!!(e.lastSnapshotAt&&e.lastSnapshotAt>0&&(e.vpOrder?.length||0)===0):!1},deleteConfirmReady(){return this.deleteConfirmText.trim()===this.groupDisplayName},sections(){return[{id:ns,label:this.$t("yeaft.session.settings.nav.session")},{id:"members",label:this.$t("yeaft.session.settings.nav.members")},{id:"memory",label:this.$t("yeaft.session.settings.nav.memory")}]},groupDreamStatus(){let e=this.vpStore;return e?e.groupDreamStatusFor(this.groupId):{status:"idle",lastRunAt:null,lastResult:null,lastError:null}},dreamRunning(){return this.groupDreamStatus.status==="running"}},watch:{section(e){e===ns&&(this.announcementDraft=this.announcement,this.renameDraft=this.groupDisplayName),this.announcementError="",this.renameError="",this.membersError="",this.deleteError="",this.deleteConfirmText=""},initialEditVpId(e){this.highlightedVpId=e||"",e&&(this.section="members")},initialSection(e){this.initialEditVpId||(this.section=Hl(e))},groupId(){this.section=this.initialEditVpId?"members":Hl(this.initialSection),this.highlightedVpId=this.initialEditVpId||"",this.announcementDraft=this.announcement,this.renameDraft=this.groupDisplayName,this.deleteConfirmText="",this.announcementError="",this.renameError="",this.membersError="",this.deleteError=""},group(e,t){t&&!e&&!this.deleteBusy&&this.requestClose()}},mounted(){window.addEventListener("keydown",this.onEsc);try{if(this.vpStore&&this.vpStore.lastSnapshotAt===0){let e=this.chat;e&&typeof e.sendWsMessage=="function"&&e.sendWsMessage({type:"yeaft_vp_subscribe"})}}catch{}this.section===ns&&(this.announcementDraft=this.announcement,this.renameDraft=this.groupDisplayName)},beforeUnmount(){window.removeEventListener("keydown",this.onEsc)},methods:{trackOverlayPointerDown:at,trackOverlayPointerUp:lt,clearOverlayPointerGesture:ct,onEsc(e){e.key==="Escape"&&(this.announcementBusy||this.renameBusy||this.membersBusy||this.deleteBusy||this.requestClose())},onOverlayClick(e){
|
|
6999
|
+
`,mounted(){window.addEventListener("keydown",this.onEsc)},beforeUnmount(){window.removeEventListener("keydown",this.onEsc)},methods:{onEsc(e){e.key==="Escape"&&this.onDismiss()},onOpen(){this.$emit("open-library")},onDismiss(){this.$emit("dismiss")}}}});function Hl(e){return e==="members"||e==="memory"||e===ns?e:(Sb.has(e),ns)}var ns,Sb,zg,Yg=F(()=>{Ms();pr();ns="session",Sb=new Set(["announcement","rename","danger"]);zg={name:"SessionSettingsModal",emits:["close","open-vp-library"],props:{groupId:{type:String,required:!0},agentId:{type:String,default:null},initialSection:{type:String,default:ns,validator:e=>[ns,"announcement","members","rename","memory","danger"].includes(e)},initialEditVpId:{type:String,default:""}},data(){return{section:this.initialEditVpId?"members":Hl(this.initialSection),announcementDraft:"",announcementBusy:!1,announcementError:"",renameDraft:"",renameBusy:!1,renameError:"",membersBusy:!1,membersError:"",highlightedVpId:this.initialEditVpId||"",deleteConfirmText:"",deleteBusy:!1,deleteError:""}},computed:{chat(){try{return window.Pinia?.useChatStore?.()||null}catch{return null}},vpStore(){try{return window.Pinia?.useVpStore?.()||null}catch{return null}},sessionsStore(){try{return window.Pinia?.useSessionsStore?.()||null}catch{return null}},group(){let e=this.sessionsStore,t=this.agentId||this.chat?.currentAgent||null;return e&&typeof e.sessionById=="function"?e.sessionById(this.groupId,t):null},targetAgentId(){return this.agentId||this.group?.agentId||this.chat?.currentAgent||null},groupDisplayName(){let e=this.group;return e?e.id==="grp_default"&&(e.name==="Default"||!e.name)?this.$t("yeaft.session.defaultName")||e.name||e.id:e.name||e.id:""},announcement(){return this.group&&typeof this.group.announcement=="string"?this.group.announcement:""},roster(){return this.group&&Array.isArray(this.group.roster)?this.group.roster:[]},defaultVpId(){return this.group&&this.group.defaultVpId||null},vpList(){return this.vpStore?.vpList||[]},vpDomainSections(){return xs(this.vpList)},vpLibraryEmpty(){let e=this.vpStore;return e?e.emptyLibrary===!0?!0:!!(e.lastSnapshotAt&&e.lastSnapshotAt>0&&(e.vpOrder?.length||0)===0):!1},deleteConfirmReady(){return this.deleteConfirmText.trim()===this.groupDisplayName},sections(){return[{id:ns,label:this.$t("yeaft.session.settings.nav.session")},{id:"members",label:this.$t("yeaft.session.settings.nav.members")},{id:"memory",label:this.$t("yeaft.session.settings.nav.memory")}]},groupDreamStatus(){let e=this.vpStore;return e?e.groupDreamStatusFor(this.groupId):{status:"idle",lastRunAt:null,lastResult:null,lastError:null}},dreamRunning(){return this.groupDreamStatus.status==="running"}},watch:{section(e){e===ns&&(this.announcementDraft=this.announcement,this.renameDraft=this.groupDisplayName),this.announcementError="",this.renameError="",this.membersError="",this.deleteError="",this.deleteConfirmText=""},initialEditVpId(e){this.highlightedVpId=e||"",e&&(this.section="members")},initialSection(e){this.initialEditVpId||(this.section=Hl(e))},groupId(){this.section=this.initialEditVpId?"members":Hl(this.initialSection),this.highlightedVpId=this.initialEditVpId||"",this.announcementDraft=this.announcement,this.renameDraft=this.groupDisplayName,this.deleteConfirmText="",this.announcementError="",this.renameError="",this.membersError="",this.deleteError=""},group(e,t){t&&!e&&!this.deleteBusy&&this.requestClose()}},mounted(){window.addEventListener("keydown",this.onEsc);try{if(this.vpStore&&this.vpStore.lastSnapshotAt===0){let e=this.chat;e&&typeof e.sendWsMessage=="function"&&e.sendWsMessage({type:"yeaft_vp_subscribe"})}}catch{}this.section===ns&&(this.announcementDraft=this.announcement,this.renameDraft=this.groupDisplayName)},beforeUnmount(){window.removeEventListener("keydown",this.onEsc)},methods:{trackOverlayPointerDown:at,trackOverlayPointerUp:lt,clearOverlayPointerGesture:ct,onEsc(e){e.key==="Escape"&&(this.announcementBusy||this.renameBusy||this.membersBusy||this.deleteBusy||this.requestClose())},onOverlayClick(e){st(e)&&(this.announcementBusy||this.renameBusy||this.membersBusy||this.deleteBusy||this.requestClose())},requestClose(){this.$emit("close")},selectSection(e){e!==this.section&&(this.section=e)},async saveAnnouncement(){if(!(this.announcementBusy||!this.chat)){this.announcementBusy=!0,this.announcementError="";try{let e=await this.chat.sessionCrudRequest("update",{sessionId:this.groupId,patch:{announcement:this.announcementDraft}},{agentId:this.targetAgentId});if(!e||!e.ok){let t=e&&e.error&&e.error.code||"unknown",s=e&&e.error&&e.error.message||t;this.announcementError=this.$t("yeaft.session.announcement.saveFailed",{error:s})}}finally{this.announcementBusy=!1}}},async saveRename(){let e=(this.renameDraft||"").trim();if(!(!e||this.renameBusy||!this.chat)){this.renameBusy=!0,this.renameError="";try{let t=await this.chat.sessionCrudRequest("rename",{sessionId:this.groupId,name:e},{agentId:this.targetAgentId});if(!t||!t.ok){let s=t&&t.error&&t.error.code||"unknown",n=t&&t.error&&t.error.message||s;this.renameError=this.$t("yeaft.session.error.unknown",{message:n})}}finally{this.renameBusy=!1}}},isMember(e){return this.roster.includes(e)},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(--vp-avatar-rat-fg)"},async toggleMember(e,t){if(!(this.membersBusy||!this.chat)){this.membersBusy=!0,this.membersError="";try{let s=t?"add_member":"remove_member",n=await this.chat.sessionCrudRequest(s,{sessionId:this.groupId,vpId:e},{agentId:this.targetAgentId});if(!n||!n.ok){let r=n&&n.error&&n.error.code||"unknown",i=n&&n.error&&n.error.message||r;this.membersError=this.$t("yeaft.session.members.actionFailed",{error:i})}else if(s==="add_member"&&!this.defaultVpId){let r=await this.chat.sessionCrudRequest("set_default_vp",{sessionId:this.groupId,vpId:e},{agentId:this.targetAgentId});if(r&&!r.ok){let i=r.error&&r.error.code||"unknown",o=r.error&&r.error.message||i;this.membersError=this.$t("yeaft.session.members.actionFailed",{error:o})}}}finally{this.membersBusy=!1}}},async setDefault(e){if(!(this.membersBusy||!this.chat||this.defaultVpId===e)){this.membersBusy=!0,this.membersError="";try{let t=await this.chat.sessionCrudRequest("set_default_vp",{sessionId:this.groupId,vpId:e},{agentId:this.targetAgentId});if(!t||!t.ok){let s=t&&t.error&&t.error.code||"unknown",n=t&&t.error&&t.error.message||s;this.membersError=this.$t("yeaft.session.members.actionFailed",{error:n})}}finally{this.membersBusy=!1}}},runDream(){!this.vpStore||this.dreamRunning||this.vpStore.triggerGroupDream(this.groupId,{agentId:this.targetAgentId})},formatDreamTimestamp(e){if(!e)return"";try{return new Date(e).toLocaleString()}catch{return""}},async confirmDelete(){if(!(!this.deleteConfirmReady||this.deleteBusy||!this.chat)){this.deleteBusy=!0,this.deleteError="";try{let e=await this.chat.sessionCrudRequest("delete",{sessionId:this.groupId},{agentId:this.targetAgentId});if(!e||!e.ok){let t=e&&e.error&&e.error.code||"unknown",s=e&&e.error&&e.error.message||t;this.deleteError=this.$t("yeaft.session.error.unknown",{message:s});return}this.requestClose()}finally{this.deleteBusy=!1}}}},template:`
|
|
7000
7000
|
<Teleport to="body">
|
|
7001
7001
|
<div
|
|
7002
7002
|
class="group-settings-overlay"
|
|
@@ -8475,7 +8475,7 @@ ${String(e||"").trim()}
|
|
|
8475
8475
|
@open-vp-library="openVpLibraryFromGroupSettings"
|
|
8476
8476
|
/>
|
|
8477
8477
|
</div>
|
|
8478
|
-
`,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.ref(!1),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"),b=Vue.ref(null),I=Vue.ref(null),y=Vue.ref(null),S=Vue.ref(null),w=Vue.ref(null),v=Vue.ref(null),h=Vue.ref(!1),M=Vue.ref(null),x=Vue.computed(()=>e.getYeaftHistoryOutlineState()),E=Vue.computed(()=>{let C=R(),Q=e.yeaftActiveSessionFilter||C?.activeSessionId||null,oe=Q?Ol(C,Q,e.currentAgent||null):null,Re=Array.isArray(oe?.roster)?oe.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||""),L=null,R=()=>{try{return window.Pinia?.useSessionsStore?.()||null}catch{return null}},P=()=>{let C=R();return{agentId:e.currentAgent||null,sessionId:e.yeaftActiveSessionFilter||C?.activeSessionId||null}},A=()=>Hb({...P(),validKeys:E.value.map(C=>C.key)}),_=(C="")=>{let{agentId:Q,sessionId:oe}=P();e.yeaftHistorySearchState={requestId:null,agentId:Q,sessionId:oe,query:"",senderKey:C,loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,error:null}},j=Vue.computed(()=>{let C=e.currentAgent||"agent",Q=R(),oe=e.yeaftActiveSessionFilter||Q?.activeSessionId||"session";return`yeaft:${C}:${oe}`});Vue.watch(j,()=>{y.value=null});let B=null,z=null,se=C=>{if(!C)return!1;let Q=String(C.tagName||"").toLowerCase();return Q==="textarea"||Q==="input"||C.isContentEditable===!0},me=({recoverScroll:C=!1}={})=>{let Q=S.value;if(!Q)return;if(!Xe.value){Q.style.removeProperty("--yeaft-visual-viewport-height");return}let oe=window.visualViewport,Re=Math.max(1,Math.round(oe?.height||window.innerHeight||1));Q.style.setProperty("--yeaft-visual-viewport-height",`${Re}px`),!(!C||oe&&window.innerHeight&&oe.height<window.innerHeight*.85||se(document.activeElement))&&window.scrollTo(0,0)},ae=(C={})=>{B!=null&&cancelAnimationFrame(B),B=requestAnimationFrame(()=>{B=null,me(C)})},ve=()=>{ae({recoverScroll:!0}),z&&clearTimeout(z),z=setTimeout(()=>{z=null,ae({recoverScroll:!0})},260)},ge=Vue.computed(()=>e.hasCapability("terminal")||e.hasCapability("file_editor")),pe=Vue.computed(()=>!0),T=C=>{let Q=C&&C.id?C.id:null;Q&&(e.setActiveSessionFilter(Q,{agentId:C.agentId||null}),Xe.value&&e.closeSessionSidebar())},K=C=>{},re=Vue.ref(null),he=Vue.ref(!1),Pe=320,U=Math.max(Pe,Math.round(window.innerWidth*.25)),q=localStorage.getItem("yeaft-debug-width"),N=Vue.ref(q?parseInt(q,10):U),O=Vue.computed(()=>({"--yeaft-detail-width":N.value+"px"})),D=C=>{he.value=!0;let Q=C.clientX,oe=N.value,Re=window.innerWidth*.6,_e=Ut=>{let Kt=Q-Ut.clientX,Vs=Math.min(Re,Math.max(Pe,oe+Kt));N.value=Vs},Ye=()=>{he.value=!1,document.removeEventListener("mousemove",_e),document.removeEventListener("mouseup",Ye),localStorage.setItem("yeaft-debug-width",String(N.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}},ye=Vue.ref(ne()),Y=C=>{ye.value=!!C;try{localStorage.setItem(Z,ye.value?"1":"0")}catch{}},ee=()=>Y(!ye.value),ue=()=>Y(!1),le=220,Ce=280,xe=(()=>{try{return localStorage.getItem("yeaft-vp-timeline-width")}catch{return null}})(),$e=xe?parseInt(xe,10):NaN,je=Vue.ref(Number.isFinite($e)&&$e>=le?$e:Ce),yt=Vue.computed(()=>({"--yeaft-vp-timeline-width":je.value+"px"})),bt=C=>{let Q=C.clientX,oe=je.value,Re=Math.max(le,Math.floor(window.innerWidth*.4)),_e=Ut=>{let Kt=Q-Ut.clientX,Vs=Math.min(Re,Math.max(le,oe+Kt));je.value=Vs},Ye=()=>{document.removeEventListener("mousemove",_e),document.removeEventListener("mouseup",Ye);try{localStorage.setItem("yeaft-vp-timeline-width",String(je.value))}catch{}};document.addEventListener("mousemove",_e),document.addEventListener("mouseup",Ye)},rs="(max-width: 768px)",gn="(max-width: 1024px)",Wt=typeof window.matchMedia=="function"?window.matchMedia(rs):null,Rt=typeof window.matchMedia=="function"?window.matchMedia(gn):null,_t=(C,Q)=>C?C.matches:window.innerWidth<=Q,Xe=Vue.ref(_t(Wt,768)),wt=Vue.ref(_t(Rt,1024)),mn=Vue.computed(()=>Xe.value?!e.sessionSidebarOpen:e.sidebarCollapsed),H=()=>{Xe.value=_t(Wt,768),wt.value=_t(Rt,1024)},G=()=>{H(),ve()},de=C=>{C&&(typeof C.addEventListener=="function"?C.addEventListener("change",G):typeof C.addListener=="function"&&C.addListener(G))},fe=C=>{C&&(typeof C.removeEventListener=="function"?C.removeEventListener("change",G):typeof C.removeListener=="function"&&C.removeListener(G))},we=()=>{L&&(clearTimeout(L),L=null),V.value="",_(A()),h.value=!1,M.value=null},Te=()=>{let C=A();V.value="",_(C),h.value=!0,e.loadYeaftHistoryOutline(),C&&e.searchYeaftHistory("",{senderKey:C}),Vue.nextTick(()=>v.value?.focus?.())},Ze=()=>{h.value?we():Te()},Ue=C=>{h.value&&sf(C.target)&&we()},Je=C=>{V.value=C,L&&clearTimeout(L),M.value=null,L=setTimeout(()=>{L=null,e.searchYeaftHistory(V.value,{senderKey:e.yeaftHistorySearchState.senderKey})},220)},qe=C=>{L&&clearTimeout(L),L=null,M.value=null,Em({...P(),senderKey:C}),e.searchYeaftHistory(V.value,{senderKey:C})},Be=()=>{Em({...P(),senderKey:so}),M.value=null,e.searchYeaftHistory(V.value,{senderKey:so})},We=C=>{if(!e.loadYeaftHistoryOutline({append:!0}))return;let Q=Vue.watch(()=>x.value.loading,oe=>{oe||(Q(),v.value?.restoreOlderScroll?.(C))})},Ke=()=>e.searchYeaftHistory(e.yeaftHistorySearchState.query,{append:!0,senderKey:e.yeaftHistorySearchState.senderKey}),ze=C=>{e.hasCapability("session_history_window_prefetch")&&e.loadYeaftHistoryWindow(C)},dt=C=>{let Q=e.beginYeaftHistoryReveal?.(C)||null;return nf({result:C,revealWindow:oe=>e.revealYeaftHistoryResult(oe,Q),nextTick:()=>Vue.nextTick(),revealMessage:oe=>w.value?.revealMessage?.(oe),isMobile:Xe.value,closeOutline:we}).finally(()=>e.finishYeaftHistoryReveal?.(Q))},Rs=C=>{if((C.metaKey||C.ctrlKey)&&String(C.key).toLowerCase()==="f"){C.preventDefault(),Te();return}if(C.key==="Escape"){if(h.value){we();return}if(o.value){st();return}}};Vue.onMounted(()=>{H(),window.addEventListener("resize",G),de(Wt),de(Rt),window.visualViewport?.addEventListener("resize",ve),window.visualViewport?.addEventListener("scroll",ve),document.addEventListener("click",kt),document.addEventListener("click",Ue),document.addEventListener("keydown",Rs),ae()}),Vue.onUnmounted(()=>{window.removeEventListener("resize",G),fe(Wt),fe(Rt),window.visualViewport?.removeEventListener("resize",ve),window.visualViewport?.removeEventListener("scroll",ve),document.removeEventListener("click",kt),document.removeEventListener("click",Ue),document.removeEventListener("keydown",Rs),B!=null&&cancelAnimationFrame(B),z&&clearTimeout(z),L&&clearTimeout(L)}),Vue.watch(()=>e.yeaftConversationId,C=>{C&&e.activeConversations[0]!==C&&(e.activeConversations=[C])}),Vue.watch(()=>[e.currentAgent,e.yeaftActiveSessionFilter],()=>{we(),_(A())});let hn=()=>{e.leaveYeaft()},ro=(C,Q,oe)=>{let Re=R();if(Re&&Re.activeNeedsInvite){let Kt=Re.activeSession;Kt&&jt.delete(Kt.id);return}let _e=e.yeaftActiveSessionFilter||Re&&Re.activeSessionId||"grp_default",Ye=Ri(C).mentions,Ut=Array.isArray(Q)?Q:void 0;e.sendYeaftSessionMessage({groupId:_e,text:C,mentions:Ye,attachments:Ut,quote:oe})},io=C=>{C&&(y.value=C,I.value?.focusInput?.())},br=C=>{y.value=null,I.value?.replaceDraft?.(C||"")},oo=()=>{let C=R(),Q=e.yeaftActiveSessionFilter||C?.activeSessionId||null;Q&&e.cancelYeaftSession(Q)},ao=(C="")=>{let Q=Oe.value;Q&&e.enterWorkCenterFromSession(Q,C)},lo=()=>{if(Xe.value){e.toggleSessionSidebar();return}e.toggleSidebar()},co=()=>{i.value=!i.value},uo=()=>{i.value=!1},po=()=>{e.reloadYeaftMessages()},vn=()=>{if(typeof e.requestYeaftSessionInventory=="function"){e.requestYeaftSessionInventory();return}e._hasHandledAgentList=!1,e._hasHandledYeaftSessionHydrate=!1,e.yeaftSessionHydrateError=null,e.sendWsMessage({type:"get_agents"})},wr=()=>{window.location.reload()},yn=Vue.computed(()=>{let C=R(),Q=e.yeaftActiveSessionFilter||C?.activeSessionId||null;return Q?e.isYeaftSessionProcessing(Q,e.currentAgent||null):!1}),Oe=Vue.computed(()=>{let C=R();if(!C||!C.sessions)return null;let Q=e.yeaftActiveSessionFilter||null;if(Q&&typeof C.sessionById=="function"){let oe=C.sessionById(Q,e.currentAgent||null);if(oe)return oe}if(C.activeSessionId&&typeof C.sessionById=="function"){let oe=C.sessionById(C.activeSessionId,e.currentAgent||null);if(oe)return oe}return typeof C.sessionById=="function"?C.sessionById("grp_default",e.currentAgent||null):null}),bn=()=>Tm({activeSessionFilter:e.yeaftActiveSessionFilter,sessionsStore:R(),topbarGroup:Oe.value}),fo=Vue.computed(()=>{let C=Oe.value||{},Q=typeof C.id=="string"?C.id.trim():"",oe=[C.title,C.name,C.config?.title,C.config?.name];for(let Re of oe){let _e=typeof Re=="string"?Re.trim():"";if(_e&&!(Q&&_e===Q)&&!/^(sessions?|groups?)\//i.test(_e)&&!/^session_[A-Za-z0-9_-]+$/.test(_e)&&!(C.workDir&&_e===C.workDir))return _e}return""}),go=Vue.computed(()=>{let C=Oe.value?.workDir;return typeof C=="string"?C.trim():""}),mo=Vue.computed(()=>Oe.value&&typeof Oe.value.announcement=="string"?Oe.value.announcement:""),is=Vue.computed(()=>wm(Oe.value,e.yeaftModel||"")),os=Vue.computed(()=>{let C=is.value;return C&&e.yeaftAvailableModels.find(Q=>Fl(Q,C))||null}),wn=Vue.computed(()=>os.value?.label||os.value?.id||is.value),kr=C=>Nl(C?.effortOptions),kn=Vue.computed(()=>Sm(Oe.value,e.yeaftModelEffort||"")),ho=Vue.computed(()=>{let C=Array.isArray(os.value?.effortOptions)?os.value.effortOptions.filter(Boolean):[];return C.length?C.includes(kn.value)?kn.value:ql(C):null}),Sn=Vue.computed(()=>Im(e.yeaftAvailableModels)),Sr=Vue.computed(()=>kr(os.value)),In=C=>{C==="model"&&!Sn.value.length||C==="effort"&&!Sr.value.length||(o.value=o.value===C?null:C)},st=(C=null)=>{(!C||o.value===C)&&(o.value=null)},vo=(C,Q)=>{let oe=C.currentTarget;Vue.nextTick(()=>{oe?.contains(document.activeElement)||st(Q)})},yo=(C,Q=null)=>{if(!C)return;let oe=Oe.value?.id||null;e.switchYeaftModel(C,oe,Q),st()},bo=C=>{if(!Sr.value.includes(C)||!is.value)return;let Q=Oe.value?.id||null;e.switchYeaftModel(is.value,Q,C),st()},_s=C=>!C||!Number.isFinite(C)||C<=0?"":C>=1e6?`${Math.round(C/1e5)/10}m`:C>=1e3?`${Math.round(C/1e3)}k`:String(C),Ir=C=>{let Q=_s(C?.contextWindow),oe=_s(C?.maxOutput);return Q&&oe?`${Q} \xB7 ${oe} out`:Q},kt=C=>{if(!o.value)return;C.target.closest(".yeaft-composer-choice")||st()},Cn=()=>{a.value||(m.value="vp",b.value=null),a.value=!a.value},nt=({initialTab:C="vp",editVpId:Q=null}={})=>{m.value=["vp","search","mcp"].includes(C)?C:"vp",b.value=m.value==="vp"&&Q||null,a.value=!0},as=()=>{st(),l.value=!0},wo=C=>{tt(C)&&(l.value=!1)},Cr=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 Q=await fetch("/api/user/agent-secret",{headers:C});if(!Q.ok){let _e=r("yeaft.onboarding.secretError");try{let Ye=await Q.json();Ye?.error&&(_e=Ye.error)}catch{}throw new Error(_e)}let oe=await Q.json(),Re=oe?.agentSecret||oe?.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}}},Es=()=>{c.value=!0},Ds=C=>{c.value=!1},Ar=async(C,Q)=>{if(Q&&!(typeof navigator>"u"||!navigator.clipboard?.writeText))try{let oe=typeof Q=="string"?Q:Q?.value||"";if(!oe)return;await navigator.clipboard.writeText(oe),d.value=C||"",g&&clearTimeout(g),g=setTimeout(()=>{d.value="",g=null},1800)}catch{}},Ls=(C,Q)=>{},xr=(C={})=>{Rm(C)&&(l.value=!1)},jt=Vue.reactive(new Set),Et=Vue.computed(()=>{let C=R();return C?C.activeSession:null}),$s=C=>{if(!C)return"";if(C.id==="grp_default"&&(C.name==="Default"||!C.name))try{let Q=typeof window<"u"?window.i18n:null;if(Q&&Q.global&&typeof Q.global.t=="function")return Q.global.t("yeaft.session.defaultName")}catch{}return C.name||C.id||""},ko=Vue.computed(()=>$s(Et.value)),Tr=Vue.computed(()=>{let C=R();if(!C||!C.activeNeedsInvite)return!1;let Q=C.activeSession;return Q?!jt.has(Q.id):!1}),Mr=Vue.computed(()=>{let C=R();return!!(C&&C.activeNeedsInvite)}),So=Vue.computed(()=>{let C=R();return e._hasHandledAgentList===!0&&e._hasHandledYeaftSessionHydrate===!0&&!!(C&&C.hasLoadedSnapshot)}),ls=Vue.computed(()=>{let C=R();return Am({agentInventoryReady:e._hasHandledAgentList===!0,hasYeaftAgent:Mm(e),sessionsReady:e._hasHandledYeaftSessionHydrate===!0&&!!(C&&C.hasLoadedSnapshot),sessionsEmpty:!!(C&&C.isEmpty)})});Vue.watch(ls,C=>{C&&Cr()},{immediate:!0});let Pr="npm install -g @yeaft/webchat-agent",Wl=Vue.computed(()=>{let Q=(typeof window<"u"&&window.location?.origin?window.location.origin:"http://localhost:3456").replace(/^http:/,"ws:").replace(/^https:/,"wss:"),oe=u.value||r("yeaft.onboarding.secretPending");return`yeaft-agent install --server ${Q} --name yeaft-agent --secret ${oe}`}),k="gh auth login && yeaft-agent llm use github-copilot --model gpt-5.5",$=()=>{let C=Et.value;C&&jt.add(C.id),jl(C?C.id:null)},W=()=>{let C=Et.value;C&&jt.add(C.id)},ie=Vue.ref(!1),be=Vue.ref(null),ce=Vue.ref(null),Fe=Vue.ref("session"),Ie=Vue.ref(""),te=(C={})=>{let Q=C&&(C.sessionId||C.groupId)||null,oe=C&&C.editVpId||"",Re=oe?"members":C&&C.section||"session";Q&&(be.value=Q,ce.value=C&&C.agentId||null,Fe.value=Re,Ie.value=oe,ie.value=!0)},ut=()=>{let C=bn();C&&te({sessionId:C,section:"session"})},Rr=()=>{ie.value=!1,be.value=null,ce.value=null,Ie.value=""},An=()=>{Rr(),nt({initialTab:"vp"})},jl=C=>{C&&te({sessionId:C,section:"members"})};Vue.watch(()=>{let C=Et.value;return C?C.id+":"+(Array.isArray(C.roster)?C.roster.length:0)+":"+(C.defaultVpId||""):""},(C,Q)=>{let oe=Et.value;oe&&C!==Q&&Array.isArray(oe.roster)&&oe.roster.length>0&&jt.delete(oe.id)}),typeof Vue.onBeforeUnmount=="function"&&Vue.onBeforeUnmount(()=>{g&&clearTimeout(g),g=null});let Nm=()=>{a.value=!1},qm=Vue.computed(()=>!a.value&&!ls.value&&ye.value),Bm=Vue.computed(()=>{let C=R(),Q=e.yeaftActiveSessionFilter||C?.activeSessionId||null;if(!Q)return[];let Re=(typeof C?.sessionById=="function"?C.sessionById(Q,e.currentAgent||null):null)?.agentId||e.currentAgent||null,_e=Re?`${Re}${Q}`:Q,Ye=e.yeaftActiveTasksBySession?.[_e]||{};return Ob(Ye)}),Wm=Vue.computed(()=>{if(!e.yeaftConversationId)return[];let Q=R(),oe=e.yeaftActiveSessionFilter||Q?.activeSessionId||null;if(!oe)return[];let Re=Ol(Q,oe,e.currentAgent||null),_e=Re&&Array.isArray(Re.roster)?Re.roster:[];if(_e.length===0)return[];let Ye=new Set(_e),Ut=mm(_e,s.vpList||[]),Kt=e.vpStatuses||{},Vs={},_r=e.currentAgent||null;for(let Ne of Object.values(Kt)){if(!Ne||!Ne.vpId)continue;let Er=Ne.sessionId??Ne.groupId;Er&&Er!==oe||_r&&Ne.agentId&&Ne.agentId!==_r||Ye.has(Ne.vpId)&&(Vs[Ne.vpId]=Ne)}let Ul={};for(let Ne of Object.values(e.activeVpTurns||{}))!Ne?.turnId||!Ne?.sessionId||Ne.sessionId!==oe||_r&&Ne.agentId&&Ne.agentId!==_r||Object.entries(e.stoppingVpTurnIds||{}).some(([Er])=>e.activeVpTurns?.[Er]===Ne)&&(Ul[Ne.turnId]=!0);return hm({vpList:Ut,vpStatuses:Vs,stoppingVpTurnIds:Ul,connectionState:e.connectionState,vpLabelOf:Ne=>s.vpLabel(Ne),vpDescriptionOf:Ne=>s.vpDescription(Ne)})});return{store:e,pageRef:S,effectiveSidebarCollapsed:mn,debugMode:i,composerMenuOpen:o,topbarGroup:Oe,topbarSessionTitle:fo,topbarFolderPath:go,topbarModel:is,topbarModelLabel:wn,topbarEffort:ho,topbarModelRows:Sn,topbarEffortOptions:Sr,selectableEffortsForModel:kr,modelOptionMatchesRef:Fl,showSettings:a,showLlmConfig:l,sessionCreateOpen:c,settingsInitialTab:m,settingsInitialEditVpId:b,chatInputRef:I,messageQuote:y,messageListRef:w,historySearchRef:v,historySearchOpen:h,historySearchActiveMessageId:M,historyOutlineState:x,historySenderOptions:E,toggleHistorySearch:Ze,closeHistorySearch:we,onHistorySearchQuery:Je,onHistorySenderChange:qe,onHistorySenderInvalid:Be,loadOlderHistoryOutline:We,loadMoreHistorySearchResults:Ke,previewHistorySearchResult:ze,selectHistorySearchResult:dt,yeaftInputDraftKey:j,openSettings:nt,isMobile:Xe,isNarrowDetail:wt,detailPanel:re,isResizingDetail:he,detailWidthStyle:O,startDetailResize:D,isProcessing:yn,goBack:hn,sendMessage:ro,setMessageQuote:io,editMessageAsNew:br,cancelYeaft:oo,openWorkItemDraft:ao,toggleSidebar:lo,toggleDebug:co,closeDebug:uo,reloadMessages:po,retryConversationInventory:vn,reloadPage:wr,toggleComposerMenu:In,closeComposerMenu:st,onComposerMenuFocusout:vo,selectModel:yo,selectEffort:bo,openLlmConfig:as,trackOverlayPointerDown:at,trackOverlayPointerUp:lt,clearOverlayPointerGesture:ct,closeLlmConfigFromOverlay:wo,openSessionCreate:Es,onSessionCreated:Ds,copyOnboardingCommand:Ar,copiedOnboardingCommand:d,onLlmConfigMessage:Ls,onLlmConfigSaved:xr,formatTokens:_s,formatModelCtx:Ir,toggleSettings:Cn,onSettingsSaved:Nm,sidebarV2Enabled:pe,onSelectGroupV2:T,onSelectChat:K,canUseWorkbench:ge,shouldShowInviteModal:Tr,inviteGroupName:ko,onInviteOpenLibrary:$,onInviteDismiss:W,isActiveGroupEmpty:Mr,conversationInventoryReady:So,showOnboardingGuide:ls,installAgentCommand:Pr,connectAgentCommand:Wl,copilotCommand:k,agentSecret:u,agentSecretLoading:f,agentSecretError:p,groupSettingsOpen:ie,groupSettingsId:be,groupSettingsAgentId:ce,groupSettingsSection:Fe,groupSettingsEditVpId:Ie,openSessionSettings:te,openAnnouncementSettings:ut,closeGroupSettings:Rr,openVpLibraryFromGroupSettings:An,openMemberEditor:jl,showVpTimeline:qm,vpTimelineRows:Wm,sessionStatusTasksForActiveSession:Bm,sessionStatusAnnouncementText:mo,sessionStatusVisible:ye,toggleSessionStatus:ee,closeSessionStatus:ue,timelineWidthStyle:yt,startTimelineResize:bt,onEditVpFromTimeline:C=>{if(!C)return;let Q=bn();Q&&te({sessionId:Q,section:"members",editVpId:C})},onMentionVpFromTimeline:C=>{if(!C)return;let Q=I.value;Q&&typeof Q.appendMention=="function"&&Q.appendMention(C)},onCancelVpFromTimeline:C=>{if(!C)return;let Q=R(),oe=e.yeaftActiveSessionFilter||Q?.activeSessionId||null;oe&&typeof e.cancelVpTurnForSession=="function"&&e.cancelVpTurnForSession(C,oe)},onCancelTaskFromTimeline:C=>!C?.id||!C.sessionId||typeof e.cancelYeaftTask!="function"?!1:e.cancelYeaftTask({agentId:C.agentId,sessionId:C.sessionId,taskId:C.id})}}}});var qb=jm(()=>{ri();gt();Xs();Xu();$t();sp();rp();op();lp();Ng();Fm();wl();el();window.Pinia={...Pinia,useChatStore:null,useAuthStore:null};var Fb={components:{LoginPage:ap,ChatPage:Fg,YeaftPage:Om},template:`
|
|
8478
|
+
`,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.ref(!1),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"),b=Vue.ref(null),I=Vue.ref(null),y=Vue.ref(null),S=Vue.ref(null),w=Vue.ref(null),v=Vue.ref(null),h=Vue.ref(!1),M=Vue.ref(null),x=Vue.computed(()=>e.getYeaftHistoryOutlineState()),E=Vue.computed(()=>{let C=R(),Q=e.yeaftActiveSessionFilter||C?.activeSessionId||null,ie=Q?Ol(C,Q,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||""),L=null,R=()=>{try{return window.Pinia?.useSessionsStore?.()||null}catch{return null}},P=()=>{let C=R();return{agentId:e.currentAgent||null,sessionId:e.yeaftActiveSessionFilter||C?.activeSessionId||null}},A=()=>Hb({...P(),validKeys:E.value.map(C=>C.key)}),_=(C="")=>{let{agentId:Q,sessionId:ie}=P();e.yeaftHistorySearchState={requestId:null,agentId:Q,sessionId:ie,query:"",senderKey:C,loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,error:null}},j=Vue.computed(()=>{let C=e.currentAgent||"agent",Q=R(),ie=e.yeaftActiveSessionFilter||Q?.activeSessionId||"session";return`yeaft:${C}:${ie}`});Vue.watch(j,()=>{y.value=null});let B=null,z=null,se=C=>{if(!C)return!1;let Q=String(C.tagName||"").toLowerCase();return Q==="textarea"||Q==="input"||C.isContentEditable===!0},me=({recoverScroll:C=!1}={})=>{let Q=S.value;if(!Q)return;if(!Xe.value){Q.style.removeProperty("--yeaft-visual-viewport-height");return}let ie=window.visualViewport,Re=Math.max(1,Math.round(ie?.height||window.innerHeight||1));Q.style.setProperty("--yeaft-visual-viewport-height",`${Re}px`),!(!C||ie&&window.innerHeight&&ie.height<window.innerHeight*.85||se(document.activeElement))&&window.scrollTo(0,0)},ae=(C={})=>{B!=null&&cancelAnimationFrame(B),B=requestAnimationFrame(()=>{B=null,me(C)})},ve=()=>{ae({recoverScroll:!0}),z&&clearTimeout(z),z=setTimeout(()=>{z=null,ae({recoverScroll:!0})},260)},ge=Vue.computed(()=>e.hasCapability("terminal")||e.hasCapability("file_editor")),pe=Vue.computed(()=>!0),T=C=>{let Q=C&&C.id?C.id:null;Q&&(e.setActiveSessionFilter(Q,{agentId:C.agentId||null}),Xe.value&&e.closeSessionSidebar())},K=C=>{},re=Vue.ref(null),he=Vue.ref(!1),Pe=320,U=Math.max(Pe,Math.round(window.innerWidth*.25)),q=localStorage.getItem("yeaft-debug-width"),N=Vue.ref(q?parseInt(q,10):U),O=Vue.computed(()=>({"--yeaft-detail-width":N.value+"px"})),D=C=>{he.value=!0;let Q=C.clientX,ie=N.value,Re=window.innerWidth*.6,_e=Ut=>{let Kt=Q-Ut.clientX,Vs=Math.min(Re,Math.max(Pe,ie+Kt));N.value=Vs},Ye=()=>{he.value=!1,document.removeEventListener("mousemove",_e),document.removeEventListener("mouseup",Ye),localStorage.setItem("yeaft-debug-width",String(N.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}},ye=Vue.ref(ne()),Y=C=>{ye.value=!!C;try{localStorage.setItem(Z,ye.value?"1":"0")}catch{}},ee=()=>Y(!ye.value),ue=()=>Y(!1),le=220,Ce=280,xe=(()=>{try{return localStorage.getItem("yeaft-vp-timeline-width")}catch{return null}})(),$e=xe?parseInt(xe,10):NaN,je=Vue.ref(Number.isFinite($e)&&$e>=le?$e:Ce),yt=Vue.computed(()=>({"--yeaft-vp-timeline-width":je.value+"px"})),bt=C=>{let Q=C.clientX,ie=je.value,Re=Math.max(le,Math.floor(window.innerWidth*.4)),_e=Ut=>{let Kt=Q-Ut.clientX,Vs=Math.min(Re,Math.max(le,ie+Kt));je.value=Vs},Ye=()=>{document.removeEventListener("mousemove",_e),document.removeEventListener("mouseup",Ye);try{localStorage.setItem("yeaft-vp-timeline-width",String(je.value))}catch{}};document.addEventListener("mousemove",_e),document.addEventListener("mouseup",Ye)},rs="(max-width: 768px)",gn="(max-width: 1024px)",Wt=typeof window.matchMedia=="function"?window.matchMedia(rs):null,Rt=typeof window.matchMedia=="function"?window.matchMedia(gn):null,_t=(C,Q)=>C?C.matches:window.innerWidth<=Q,Xe=Vue.ref(_t(Wt,768)),wt=Vue.ref(_t(Rt,1024)),mn=Vue.computed(()=>Xe.value?!e.sessionSidebarOpen:e.sidebarCollapsed),H=()=>{Xe.value=_t(Wt,768),wt.value=_t(Rt,1024)},G=()=>{H(),ve()},de=C=>{C&&(typeof C.addEventListener=="function"?C.addEventListener("change",G):typeof C.addListener=="function"&&C.addListener(G))},fe=C=>{C&&(typeof C.removeEventListener=="function"?C.removeEventListener("change",G):typeof C.removeListener=="function"&&C.removeListener(G))},we=()=>{L&&(clearTimeout(L),L=null),V.value="",_(A()),h.value=!1,M.value=null},Te=()=>{let C=A();V.value="",_(C),h.value=!0,e.loadYeaftHistoryOutline(),C&&e.searchYeaftHistory("",{senderKey:C}),Vue.nextTick(()=>v.value?.focus?.())},Ze=()=>{h.value?we():Te()},Ue=C=>{h.value&&sf(C.target)&&we()},Je=C=>{V.value=C,L&&clearTimeout(L),M.value=null,L=setTimeout(()=>{L=null,e.searchYeaftHistory(V.value,{senderKey:e.yeaftHistorySearchState.senderKey})},220)},qe=C=>{L&&clearTimeout(L),L=null,M.value=null,Em({...P(),senderKey:C}),e.searchYeaftHistory(V.value,{senderKey:C})},Be=()=>{Em({...P(),senderKey:so}),M.value=null,e.searchYeaftHistory(V.value,{senderKey:so})},We=C=>{if(!e.loadYeaftHistoryOutline({append:!0}))return;let Q=Vue.watch(()=>x.value.loading,ie=>{ie||(Q(),v.value?.restoreOlderScroll?.(C))})},Ke=()=>e.searchYeaftHistory(e.yeaftHistorySearchState.query,{append:!0,senderKey:e.yeaftHistorySearchState.senderKey}),ze=C=>{e.hasCapability("session_history_window_prefetch")&&e.loadYeaftHistoryWindow(C)},dt=C=>{let Q=e.beginYeaftHistoryReveal?.(C)||null;return nf({result:C,revealWindow:ie=>e.revealYeaftHistoryResult(ie,Q),nextTick:()=>Vue.nextTick(),revealMessage:ie=>w.value?.revealMessage?.(ie),isMobile:Xe.value,closeOutline:we}).finally(()=>e.finishYeaftHistoryReveal?.(Q))},Rs=C=>{if((C.metaKey||C.ctrlKey)&&String(C.key).toLowerCase()==="f"){C.preventDefault(),Te();return}if(C.key==="Escape"){if(h.value){we();return}if(o.value){et();return}}};Vue.onMounted(()=>{H(),window.addEventListener("resize",G),de(Wt),de(Rt),window.visualViewport?.addEventListener("resize",ve),window.visualViewport?.addEventListener("scroll",ve),document.addEventListener("click",kt),document.addEventListener("click",Ue),document.addEventListener("keydown",Rs),ae()}),Vue.onUnmounted(()=>{window.removeEventListener("resize",G),fe(Wt),fe(Rt),window.visualViewport?.removeEventListener("resize",ve),window.visualViewport?.removeEventListener("scroll",ve),document.removeEventListener("click",kt),document.removeEventListener("click",Ue),document.removeEventListener("keydown",Rs),B!=null&&cancelAnimationFrame(B),z&&clearTimeout(z),L&&clearTimeout(L)}),Vue.watch(()=>e.yeaftConversationId,C=>{C&&e.activeConversations[0]!==C&&(e.activeConversations=[C])}),Vue.watch(()=>[e.currentAgent,e.yeaftActiveSessionFilter],()=>{we(),_(A())});let hn=()=>{e.leaveYeaft()},ro=(C,Q,ie)=>{let Re=R();if(Re&&Re.activeNeedsInvite){let Kt=Re.activeSession;Kt&&jt.delete(Kt.id);return}let _e=e.yeaftActiveSessionFilter||Re&&Re.activeSessionId||"grp_default",Ye=Ri(C).mentions,Ut=Array.isArray(Q)?Q:void 0;e.sendYeaftSessionMessage({groupId:_e,text:C,mentions:Ye,attachments:Ut,quote:ie})},io=C=>{C&&(y.value=C,I.value?.focusInput?.())},br=C=>{y.value=null,I.value?.replaceDraft?.(C||"")},oo=()=>{let C=R(),Q=e.yeaftActiveSessionFilter||C?.activeSessionId||null;Q&&e.cancelYeaftSession(Q)},ao=(C="")=>{let Q=Oe.value;Q&&e.enterWorkCenterFromSession(Q,C)},lo=()=>{if(Xe.value){e.toggleSessionSidebar();return}e.toggleSidebar()},co=()=>{i.value=!i.value},uo=()=>{i.value=!1},po=()=>{e.reloadYeaftMessages()},vn=()=>{if(typeof e.requestYeaftSessionInventory=="function"){e.requestYeaftSessionInventory();return}e._hasHandledAgentList=!1,e._hasHandledYeaftSessionHydrate=!1,e.yeaftSessionHydrateError=null,e.sendWsMessage({type:"get_agents"})},wr=()=>{window.location.reload()},yn=Vue.computed(()=>{let C=R(),Q=e.yeaftActiveSessionFilter||C?.activeSessionId||null;return Q?e.isYeaftSessionProcessing(Q,e.currentAgent||null):!1}),Oe=Vue.computed(()=>{let C=R();if(!C||!C.sessions)return null;let Q=e.yeaftActiveSessionFilter||null;if(Q&&typeof C.sessionById=="function"){let ie=C.sessionById(Q,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}),bn=()=>Tm({activeSessionFilter:e.yeaftActiveSessionFilter,sessionsStore:R(),topbarGroup:Oe.value}),fo=Vue.computed(()=>{let C=Oe.value||{},Q=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&&!(Q&&_e===Q)&&!/^(sessions?|groups?)\//i.test(_e)&&!/^session_[A-Za-z0-9_-]+$/.test(_e)&&!(C.workDir&&_e===C.workDir))return _e}return""}),go=Vue.computed(()=>{let C=Oe.value?.workDir;return typeof C=="string"?C.trim():""}),mo=Vue.computed(()=>Oe.value&&typeof Oe.value.announcement=="string"?Oe.value.announcement:""),is=Vue.computed(()=>wm(Oe.value,e.yeaftModel||"")),os=Vue.computed(()=>{let C=is.value;return C&&e.yeaftAvailableModels.find(Q=>Fl(Q,C))||null}),wn=Vue.computed(()=>os.value?.label||os.value?.id||is.value),kr=C=>Nl(C?.effortOptions),kn=Vue.computed(()=>Sm(Oe.value,e.yeaftModelEffort||"")),ho=Vue.computed(()=>{let C=Array.isArray(os.value?.effortOptions)?os.value.effortOptions.filter(Boolean):[];return C.length?C.includes(kn.value)?kn.value:ql(C):null}),Sn=Vue.computed(()=>Im(e.yeaftAvailableModels)),Sr=Vue.computed(()=>kr(os.value)),In=C=>{C==="model"&&!Sn.value.length||C==="effort"&&!Sr.value.length||(o.value=o.value===C?null:C)},et=(C=null)=>{(!C||o.value===C)&&(o.value=null)},vo=(C,Q)=>{let ie=C.currentTarget;if(C.relatedTarget){ie?.contains(C.relatedTarget)||et(Q);return}setTimeout(()=>{ie?.contains(document.activeElement)||et(Q)},0)},yo=(C,Q=null)=>{if(!C)return;let ie=Oe.value?.id||null;e.switchYeaftModel(C,ie,Q),et()},bo=C=>{if(!Sr.value.includes(C)||!is.value)return;let Q=Oe.value?.id||null;e.switchYeaftModel(is.value,Q,C),et()},_s=C=>!C||!Number.isFinite(C)||C<=0?"":C>=1e6?`${Math.round(C/1e5)/10}m`:C>=1e3?`${Math.round(C/1e3)}k`:String(C),Ir=C=>{let Q=_s(C?.contextWindow),ie=_s(C?.maxOutput);return Q&&ie?`${Q} \xB7 ${ie} out`:Q},kt=C=>{if(!o.value)return;C.target.closest(".yeaft-composer-choice")||et()},Cn=()=>{a.value||(m.value="vp",b.value=null),a.value=!a.value},nt=({initialTab:C="vp",editVpId:Q=null}={})=>{m.value=["vp","search","mcp"].includes(C)?C:"vp",b.value=m.value==="vp"&&Q||null,a.value=!0},as=()=>{et(),l.value=!0},wo=C=>{st(C)&&(l.value=!1)},Cr=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 Q=await fetch("/api/user/agent-secret",{headers:C});if(!Q.ok){let _e=r("yeaft.onboarding.secretError");try{let Ye=await Q.json();Ye?.error&&(_e=Ye.error)}catch{}throw new Error(_e)}let ie=await Q.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}}},Es=()=>{c.value=!0},Ds=C=>{c.value=!1},Ar=async(C,Q)=>{if(Q&&!(typeof navigator>"u"||!navigator.clipboard?.writeText))try{let ie=typeof Q=="string"?Q:Q?.value||"";if(!ie)return;await navigator.clipboard.writeText(ie),d.value=C||"",g&&clearTimeout(g),g=setTimeout(()=>{d.value="",g=null},1800)}catch{}},Ls=(C,Q)=>{},xr=(C={})=>{Rm(C)&&(l.value=!1)},jt=Vue.reactive(new Set),Et=Vue.computed(()=>{let C=R();return C?C.activeSession:null}),$s=C=>{if(!C)return"";if(C.id==="grp_default"&&(C.name==="Default"||!C.name))try{let Q=typeof window<"u"?window.i18n:null;if(Q&&Q.global&&typeof Q.global.t=="function")return Q.global.t("yeaft.session.defaultName")}catch{}return C.name||C.id||""},ko=Vue.computed(()=>$s(Et.value)),Tr=Vue.computed(()=>{let C=R();if(!C||!C.activeNeedsInvite)return!1;let Q=C.activeSession;return Q?!jt.has(Q.id):!1}),Mr=Vue.computed(()=>{let C=R();return!!(C&&C.activeNeedsInvite)}),So=Vue.computed(()=>{let C=R();return e._hasHandledAgentList===!0&&e._hasHandledYeaftSessionHydrate===!0&&!!(C&&C.hasLoadedSnapshot)}),ls=Vue.computed(()=>{let C=R();return Am({agentInventoryReady:e._hasHandledAgentList===!0,hasYeaftAgent:Mm(e),sessionsReady:e._hasHandledYeaftSessionHydrate===!0&&!!(C&&C.hasLoadedSnapshot),sessionsEmpty:!!(C&&C.isEmpty)})});Vue.watch(ls,C=>{C&&Cr()},{immediate:!0});let Pr="npm install -g @yeaft/webchat-agent",Wl=Vue.computed(()=>{let Q=(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 ${Q} --name yeaft-agent --secret ${ie}`}),k="gh auth login && yeaft-agent llm use github-copilot --model gpt-5.5",$=()=>{let C=Et.value;C&&jt.add(C.id),jl(C?C.id:null)},W=()=>{let C=Et.value;C&&jt.add(C.id)},oe=Vue.ref(!1),be=Vue.ref(null),ce=Vue.ref(null),Fe=Vue.ref("session"),Ie=Vue.ref(""),te=(C={})=>{let Q=C&&(C.sessionId||C.groupId)||null,ie=C&&C.editVpId||"",Re=ie?"members":C&&C.section||"session";Q&&(be.value=Q,ce.value=C&&C.agentId||null,Fe.value=Re,Ie.value=ie,oe.value=!0)},ut=()=>{let C=bn();C&&te({sessionId:C,section:"session"})},Rr=()=>{oe.value=!1,be.value=null,ce.value=null,Ie.value=""},An=()=>{Rr(),nt({initialTab:"vp"})},jl=C=>{C&&te({sessionId:C,section:"members"})};Vue.watch(()=>{let C=Et.value;return C?C.id+":"+(Array.isArray(C.roster)?C.roster.length:0)+":"+(C.defaultVpId||""):""},(C,Q)=>{let ie=Et.value;ie&&C!==Q&&Array.isArray(ie.roster)&&ie.roster.length>0&&jt.delete(ie.id)}),typeof Vue.onBeforeUnmount=="function"&&Vue.onBeforeUnmount(()=>{g&&clearTimeout(g),g=null});let Nm=()=>{a.value=!1},qm=Vue.computed(()=>!a.value&&!ls.value&&ye.value),Bm=Vue.computed(()=>{let C=R(),Q=e.yeaftActiveSessionFilter||C?.activeSessionId||null;if(!Q)return[];let Re=(typeof C?.sessionById=="function"?C.sessionById(Q,e.currentAgent||null):null)?.agentId||e.currentAgent||null,_e=Re?`${Re}${Q}`:Q,Ye=e.yeaftActiveTasksBySession?.[_e]||{};return Ob(Ye)}),Wm=Vue.computed(()=>{if(!e.yeaftConversationId)return[];let Q=R(),ie=e.yeaftActiveSessionFilter||Q?.activeSessionId||null;if(!ie)return[];let Re=Ol(Q,ie,e.currentAgent||null),_e=Re&&Array.isArray(Re.roster)?Re.roster:[];if(_e.length===0)return[];let Ye=new Set(_e),Ut=mm(_e,s.vpList||[]),Kt=e.vpStatuses||{},Vs={},_r=e.currentAgent||null;for(let Ne of Object.values(Kt)){if(!Ne||!Ne.vpId)continue;let Er=Ne.sessionId??Ne.groupId;Er&&Er!==ie||_r&&Ne.agentId&&Ne.agentId!==_r||Ye.has(Ne.vpId)&&(Vs[Ne.vpId]=Ne)}let Ul={};for(let Ne of Object.values(e.activeVpTurns||{}))!Ne?.turnId||!Ne?.sessionId||Ne.sessionId!==ie||_r&&Ne.agentId&&Ne.agentId!==_r||Object.entries(e.stoppingVpTurnIds||{}).some(([Er])=>e.activeVpTurns?.[Er]===Ne)&&(Ul[Ne.turnId]=!0);return hm({vpList:Ut,vpStatuses:Vs,stoppingVpTurnIds:Ul,connectionState:e.connectionState,vpLabelOf:Ne=>s.vpLabel(Ne),vpDescriptionOf:Ne=>s.vpDescription(Ne)})});return{store:e,pageRef:S,effectiveSidebarCollapsed:mn,debugMode:i,composerMenuOpen:o,topbarGroup:Oe,topbarSessionTitle:fo,topbarFolderPath:go,topbarModel:is,topbarModelLabel:wn,topbarEffort:ho,topbarModelRows:Sn,topbarEffortOptions:Sr,selectableEffortsForModel:kr,modelOptionMatchesRef:Fl,showSettings:a,showLlmConfig:l,sessionCreateOpen:c,settingsInitialTab:m,settingsInitialEditVpId:b,chatInputRef:I,messageQuote:y,messageListRef:w,historySearchRef:v,historySearchOpen:h,historySearchActiveMessageId:M,historyOutlineState:x,historySenderOptions:E,toggleHistorySearch:Ze,closeHistorySearch:we,onHistorySearchQuery:Je,onHistorySenderChange:qe,onHistorySenderInvalid:Be,loadOlderHistoryOutline:We,loadMoreHistorySearchResults:Ke,previewHistorySearchResult:ze,selectHistorySearchResult:dt,yeaftInputDraftKey:j,openSettings:nt,isMobile:Xe,isNarrowDetail:wt,detailPanel:re,isResizingDetail:he,detailWidthStyle:O,startDetailResize:D,isProcessing:yn,goBack:hn,sendMessage:ro,setMessageQuote:io,editMessageAsNew:br,cancelYeaft:oo,openWorkItemDraft:ao,toggleSidebar:lo,toggleDebug:co,closeDebug:uo,reloadMessages:po,retryConversationInventory:vn,reloadPage:wr,toggleComposerMenu:In,closeComposerMenu:et,onComposerMenuFocusout:vo,selectModel:yo,selectEffort:bo,openLlmConfig:as,trackOverlayPointerDown:at,trackOverlayPointerUp:lt,clearOverlayPointerGesture:ct,closeLlmConfigFromOverlay:wo,openSessionCreate:Es,onSessionCreated:Ds,copyOnboardingCommand:Ar,copiedOnboardingCommand:d,onLlmConfigMessage:Ls,onLlmConfigSaved:xr,formatTokens:_s,formatModelCtx:Ir,toggleSettings:Cn,onSettingsSaved:Nm,sidebarV2Enabled:pe,onSelectGroupV2:T,onSelectChat:K,canUseWorkbench:ge,shouldShowInviteModal:Tr,inviteGroupName:ko,onInviteOpenLibrary:$,onInviteDismiss:W,isActiveGroupEmpty:Mr,conversationInventoryReady:So,showOnboardingGuide:ls,installAgentCommand:Pr,connectAgentCommand:Wl,copilotCommand:k,agentSecret:u,agentSecretLoading:f,agentSecretError:p,groupSettingsOpen:oe,groupSettingsId:be,groupSettingsAgentId:ce,groupSettingsSection:Fe,groupSettingsEditVpId:Ie,openSessionSettings:te,openAnnouncementSettings:ut,closeGroupSettings:Rr,openVpLibraryFromGroupSettings:An,openMemberEditor:jl,showVpTimeline:qm,vpTimelineRows:Wm,sessionStatusTasksForActiveSession:Bm,sessionStatusAnnouncementText:mo,sessionStatusVisible:ye,toggleSessionStatus:ee,closeSessionStatus:ue,timelineWidthStyle:yt,startTimelineResize:bt,onEditVpFromTimeline:C=>{if(!C)return;let Q=bn();Q&&te({sessionId:Q,section:"members",editVpId:C})},onMentionVpFromTimeline:C=>{if(!C)return;let Q=I.value;Q&&typeof Q.appendMention=="function"&&Q.appendMention(C)},onCancelVpFromTimeline:C=>{if(!C)return;let Q=R(),ie=e.yeaftActiveSessionFilter||Q?.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 qb=jm(()=>{ri();gt();Xs();Xu();$t();sp();rp();op();lp();Ng();Fm();wl();el();window.Pinia={...Pinia,useChatStore:null,useAuthStore:null};var Fb={components:{LoginPage:ap,ChatPage:Fg,YeaftPage:Om},template:`
|
|
8479
8479
|
<div v-if="!authStore.initialized" class="auth-bootstrap" aria-busy="true"><span class="session-loading-spinner"></span></div>
|
|
8480
8480
|
<LoginPage v-else-if="!authStore.isAuthenticated" />
|
|
8481
8481
|
<template v-else>
|