@yeaft/webchat-agent 1.0.564 → 1.0.566
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/local-runtime/version.json +1 -1
- package/local-runtime/web/app.bundle.js +41 -28
- package/local-runtime/web/app.bundle.js.gz +0 -0
- package/local-runtime/web/index.html +2 -2
- package/local-runtime/web/style.bundle.css +1 -1
- package/local-runtime/web/style.bundle.css.gz +0 -0
- package/package.json +1 -1
- package/yeaft/work-center/bridge.js +1 -1
- package/yeaft/work-center/coordinator.js +14 -3
- package/yeaft/work-center/durable-model.js +8 -1
- package/yeaft/work-center/projection.js +1 -0
- package/yeaft/work-center/service.js +9 -0
- package/yeaft/work-center/store.js +18 -2
|
@@ -5,15 +5,15 @@ ${g}`:g,p=!0;break}}if(!p){for(let f=c.length-1;f>=0;f--)if(c[f].type==="tool-us
|
|
|
5
5
|
|
|
6
6
|
`)+(s||"")}}function Pp(e){return Object.values(Ap).filter(t=>e||!t.adminOnly).sort((t,s)=>t.order-s.order)}var Ap,Jt,Mp,_n,ci=V(()=>{Ap={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}},Jt={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"}]}};Mp="dev",_n=3});function iw(e,t){return!t||!e?.yeaftConversationIdsByAgent?[]:Object.entries(e.yeaftConversationIdsByAgent).filter(([,s])=>s===t).map(([s])=>s).filter(Boolean)}function Rp(){return`cm_${crypto.randomUUID()}`}function _p(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 Ep(e,t,s=null,n=null,r={}){let i=s||e.currentAgent;if(!i){e.addMessage({type:"error",content:Fe("chat.agent.selectFirst")});return}Qn(e,!0,Fe("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 Dp(e,t,s,n=null,r=null,i=null){let o=n||e.currentAgent;if(!o){e.addMessage({type:"error",content:Fe("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));let c=wn(l.provider),d=(e.conversations||[]).find(p=>p.type!=="yeaft"&&p.agentId===o&&wn(p.provider)===c&&p.claudeSessionId===t),u=d&&(e.hiddenSessionCatalog||[]).find(p=>p.routeRef?.agentId===o&&p.routeRef?.runtimeProvider===c&&p.routeRef?.sessionId===d.id);if(u&&e.restoreCatalogSession(u)!==!0)return;Qn(e,!0,Fe("chat.session.loadingHistory"));let g={type:"resume_conversation",agentId:o,...d?{conversationId:d.id}:{},claudeSessionId:t,workDir:s||e.currentAgentWorkDir};a!==null&&(g.disallowedTools=a),typeof l.provider=="string"&&(g.provider=l.provider),l.providerOptions&&typeof l.providerOptions=="object"&&(g.providerOptions=l.providerOptions),e.sendWsMessage(g)}function $p(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),kn(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]=[],Qn(e,!0,Fe("chat.session.loadingHistory"))),e.syncChatConversationHistory?.(t),e.loadingMoreMessages=!1;let o=e.chatSessionState[t];e.hasMoreMessages=!!o?.hasMoreOlder,kn(e)}function Ll(e,t,s){t&&e.sendWsMessage({type:"update_conversation_settings",conversationId:t,...s})}function Lp(e,t,s){let n=e.currentConversation;if(!n)return;let r=e.conversationMcpServers[n];if(r){let g=r.find(p=>p.name===t);g&&(g.enabled=s)}let i=e.conversationMcpServers[n]||[],o=e.conversationMcpServerTools[n]||{},a=[];for(let g of i)if(!g.enabled){let p=o[g.name];p&&p.length>0?a.push(...p):a.push(`mcp__${g.name}`)}let u=[...(e.conversations.find(g=>g.id===n)?.disallowedTools||[]).filter(g=>!g.startsWith("mcp__")),...a];Ll(e,n,{disallowedTools:u})}function Op(e,t,s){return t?e.sendWsMessage({type:"delete_conversation",requestId:`delete_${crypto.randomUUID()}`,conversationId:t,...s?{agentId:s}:{}}):!1}function Fp(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 qp(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=Rp();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),er(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=$l(n.expertSelections,e.customExpertRoles,t,e.language||"zh-CN");c&&(l.expertMessage=c.effectivePrompt)}e.sendWsMessage(l)||zr(e).then(()=>{e.sendWsMessage(l)}).catch(()=>{e.addMessage({type:"system",content:Fe("chat.connection.reconnectFailed")}),delete e.processingConversations[e.currentConversation],Ne(e,e.currentConversation)})}function Vp(e){if(!e.currentConversation||!e.processingConversations[e.currentConversation])return;let t=e.currentConversation;e.sendWsMessage({type:"cancel_execution",conversationId:t}),delete e.processingConversations[t],Ne(e,t),e._closedAt||(e._closedAt={}),e._closedAt[t]=Date.now();let s=e.executionStatusMap[t];s&&(s.currentTool=null),e.finishStreamingForConversation(t),Js(e,t),e.addMessage({type:"system",content:Fe("chat.execution.cancelled")})}function Bp(e,t,s,n){let r=n||e.currentConversation,o=(e.messagesMap[r]||[]).find(f=>f.type==="tool-use"&&f.toolName==="AskUserQuestion"&&f.askRequestId===t),a=e.currentView==="yeaft"||!!o?.sessionId;if(a&&(!o||o.askAnswered||o.askExpired)||a&&o.askPending&&Date.now()-(o.askSubmittedAt||0)<15e3)return!1;let l=o?.sessionId||e.yeaftActiveSessionFilter||null,c=typeof o?.agentId=="string"&&o.agentId?o.agentId:null,d=a?iw(e,r):[],u=d.length===1?d[0]:null;if(c&&u&&c!==u)return!1;let g=a&&!c&&!u&&typeof e.agentIdForSession=="function"?e.agentIdForSession(l):null,p=e.sendWsMessage(a?{type:"yeaft_ask_user_answer",agentId:c||u||g||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});o&&!a?(o.askAnswered=!0,o.selectedAnswers=s):o&&p!==!1?(o.askPending=!0,o.pendingAnswers=s,o.askSubmittedAt=Date.now(),o.askError=null):o&&(o.askError="send_failed"),!a&&p!==!1&&r&&!e.processingConversations[r]&&(e.processingConversations[r]=!0,e._closedAt?.[r]&&delete e._closedAt[r],e.getOrCreateExecutionStatus(r))}function Hp(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})),kn(e)))}function Np(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),kn(e))}function Wp(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=Rp();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),er(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=$l(r.expertSelections,e.customExpertRoles,s,e.language||"zh-CN");d&&(c.expertMessage=d.effectivePrompt)}e.sendWsMessage(c)||zr(e).then(()=>{e.sendWsMessage(c)}).catch(()=>{e.addMessageToConversation(t,{type:"system",content:Fe("chat.connection.reconnectFailed")}),delete e.processingConversations[t],Ne(e,t)})}function jp(e,t){if(!t||!e.processingConversations[t])return;e.sendWsMessage({type:"cancel_execution",conversationId:t}),delete e.processingConversations[t],Ne(e,t),e._closedAt||(e._closedAt={}),e._closedAt[t]=Date.now();let s=e.executionStatusMap[t];s&&(s.currentTool=null),e.finishStreamingForConversation(t),Js(e,t),e.addMessageToConversation(t,{type:"system",content:Fe("chat.execution.cancelled")})}function Up(e){e.ws&&e.ws.readyState===WebSocket.OPEN&&(typeof e.requestYeaftSessionInventory=="function"?e.requestYeaftSessionInventory():e.sendWsMessage({type:"get_agents"}))}function Kp(e){!e.currentAgent||!e.currentConversation||e.sendWsMessage({type:"refresh_conversation",conversationId:e.currentConversation})}function zp(e,t,s,n){t&&e.sendWsMessage({type:"set_dream_enabled",agentId:t,enabled:s!==!1,requestId:n})}var Gp=V(()=>{Xs();Sn();ol();ko();rs();ci();ao()});function aw(e=globalThis.localStorage){try{return e?.getItem(Qp)==="yeaft"?"yeaft":Yp}catch{return Yp}}function Ol(e,t=globalThis.localStorage){if(e!=="chat"&&e!=="yeaft")return!1;try{return t?.setItem(Qp,e),!!t}catch{return!1}}function Xp(e=globalThis.localStorage){let t=aw(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 Fl(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 Zp(e){let t=Fl(e);return e.activeConversations=[e.yeaftConversationId],t}function Jp(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 Qp,Yp,eg=V(()=>{Qp="yeaft-preferred-conversation-view",Yp="chat"});function tg(e,t,s){let n={...e||{}},r={...n[t]||{}};return r[s]=(r[s]||0)+1,n[t]=r,n}function sg(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 ng=V(()=>{});function Io(e){return e.currentView==="yeaft"?e.yeaftConversationId||null:e.activeConversations[0]||null}var rg=V(()=>{});function ig({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 og=V(()=>{});function je(e){let t=Number(e);return Number.isFinite(t)?t:null}function Ft(e){let t=je(e);return Number.isInteger(t)&&t>0?t:null}function ql(e){let t=je(e);return Number.isInteger(t)&&t>=0?t:null}function ag(e){return cw.has(e)?1:0}function dw(e,t){if(!e)return t||null;if(!t)return e;let s=je(e.progressRevision),n=je(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=ag(e.status),i=ag(t.status);if(r!==i)return i>r?t:e;let o=je(e.updatedAt)??je(e.createdAt)??0;return(je(t.updatedAt)??je(t.createdAt)??0)>o?t:e}function or(e){return Math.max(0,Number(e)||0)}function lg(e){return typeof e?.id=="string"&&e.id.startsWith("event:")?e.id.slice(6):null}function uw(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 pw(e,t){let s=or(e?.createdAt)-or(t?.createdAt);if(s)return s;let n=lg(e),r=lg(t);if(n!=null&&r!=null)return uw(n,r);let i=e?.role==="user"?0:1,o=t?.role==="user"?0:1;if(i!==o)return i-o;let a=or(e?.generation)-or(t?.generation);return a||or(e?.attempt)-or(t?.attempt)||String(e?.id||"").localeCompare(String(t?.id||""))}function ui(...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,dw(t.get(r.id),r))}return[...t.values()].sort(pw)}function qt(e){let t=Number(e);return Number.isInteger(t)&&t>0?t:1}function ar(e,t,s,n){return`${e}:${t}:${s}:${qt(n)}`}function Vl(e,t,s,n){return`${e}:${t}:${s}:${qt(n)}`}function To(e,t){let s=Ft(e?.dataRevision),n=Ft(t?.dataRevision);if(s!=null||n!=null)return s==null?-1:n==null?1:Math.sign(s-n);let r=je(e?.revision),i=je(t?.revision);return r!=null&&i!=null?Math.sign(r-i):0}function cg(e){return["done","cancelled"].includes(e?.status)||["done","cancelled"].includes(e?.lifecycle)}function lr(e,t){if(!e||!t||e.id!==t.id)return!1;if(Mo(t,e)&&cg(t)&&!cg(e))return!0;let s=Ft(e.executionControl?.dataRevision)==null&&Ft(t.executionControl?.dataRevision)==null?To(e.executionControl,t.executionControl):0;if(s<0)return!0;let n=je(e.revision),r=je(t.revision);if(n!=null&&r!=null&&n!==r)return n<r;let i=je(e.coordinatorRevision),o=je(t.coordinatorRevision);if(i!=null&&o!=null&&i!==o)return i<o;if(s>0)return!1;let a=je(e.updatedAt),l=je(t.updatedAt);return a!=null&&l!=null&&a<l}function gw(e,t){return!e||!t||e.id!==t.id?!1:To(e.executionControl,t.executionControl)<0||lr(e,t)}function di(e,t,s){let n=To(t.executionControl,e.executionControl),r=n>0||n===0&&s!==e&&t.executionControl?t.executionControl:e.executionControl,i=r===s.executionControl?s:{...s,executionControl:r};if(i.executionStats&&r?.usage){let o={...i.executionStats};for(let a of["llmRequestCount","inputTokens","outputTokens","cacheReadTokens","cacheWriteTokens","totalTokens"])Number.isFinite(r.usage[a])&&(o[a]=r.usage[a]);Object.keys(o).some(a=>o[a]!==i.executionStats[a])&&(i={...i,executionStats:o})}return i}function ug(e,t){if(gw(e,t))return!0;if(!e||!t||e.id!==t.id)return!1;let s=je(e.revision),n=je(t.revision);return e.currentActionId!==t.currentActionId&&s!=null&&n!=null&&s<=n}function Bl(e,t){let s=Ft(e?.generation),n=Ft(t?.generation);if(s!=null&&n!=null&&s!==n)return n<s;let r=ql(e?.attempt),i=ql(t?.attempt);if(r!=null&&i!=null&&r!==i)return i<r;let o=je(e?.progressRevision),a=je(t?.progressRevision);return o!=null&&a!=null&&a<o}function Hl(e,t){if(!e||e.id!==t?.id||lr(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(f=>f?.id===t.eventActionId)?t.eventActionId:null,a=o||r!==i&&r||i;if(!a)return null;let l=s.find(f=>f?.id===a)||null,c=n.find(f=>f?.id===a)||(t.currentAction?.id===a?t.currentAction:null);if(l&&c&&Bl(l,c))return null;let d=Ft(l?.generation),u=Ft(c?.generation),g=ql(c?.attempt),p={actionId:a,generation:u||d||1,...g==null?{}:{attempt:g}};return o||r!==i||!l||d!=null&&u!=null&&u>d||l?.status==="running"&&c?.status&&c.status!=="running"?p:null}function pg(e,t){if(!e||e.id!==t?.id||lr(t,e))return!1;let s=je(t.coordinatorRevision),n=je(e.coordinatorRevision)??0;return s!=null&&s>n?!0:Hl(e,t)!=null}function gg(e,t){if(!e||e.id!==t?.id)return e;if(lr(t,e)||Wl(e,t,e.actions,t.actionStats))return di(e,t,e);let s={...e},n=!Array.isArray(e.actions)||!Array.isArray(t.actionStats);if(Array.isArray(e.actions)&&Array.isArray(t.actionStats)){let i=new Map(t.actionStats.map(a=>[a?.id,a])),o=!1;n=!0,s.actions=e.actions.map(a=>{let l=i.get(a?.id);if(!l)return a;if(o=!0,Bl(a,l))return n=!1,a;if(je(l?.progressRevision)==null){let{response:g,messages:p,...f}=l;return{...a,...f}}let d=Ft(a?.generation),u=Ft(l?.generation);if(d!=null&&u!=null&&u>d){let{messages:g,thread:p,liveMessage:f,response:h,failure:v,messageCursor:y,messageCount:m,failureReason:S,...w}=a;return{...w,...l}}return{...a,...l}}),o||(n=Number(t.coordinatorRevision)>Number(e.coordinatorRevision||0))}for(let i of dg)!n&&fw.has(i)||i!=="executionControl"&&Object.prototype.hasOwnProperty.call(t,i)&&(s[i]=t[i]);let r=n?t:e;return s.executionControl=di(e,t,r).executionControl,di(e,s,s)}function Nl(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?Bl(r,n):!1})}function Mo(e,t){return(Ft(e?.executionControl?.dataRevision)!=null||Ft(t?.executionControl?.dataRevision)!=null||je(e?.executionControl?.revision)===je(t?.executionControl?.revision))&&je(e?.revision)===je(t?.revision)&&je(e?.coordinatorRevision)===je(t?.coordinatorRevision)&&je(e?.updatedAt)===je(t?.updatedAt)}function Wl(e,t,s,n){return To(t.executionControl,e.executionControl)<0&&Mo(e,t)&&!Nl(n,s)}function jl(e,t){if(!e||e.id!==t?.id)return t;let s=lr(t,e)||Wl(e,t,e.actions,t.actions)||Mo(e,t)&&Nl(e.actions,t.actions);return di(e,t,s?e:t)}function Et(e,t){let s=Array.isArray(e)?e:[],n=s.find(i=>i.id===t?.id)||null,r=n&&lr(t,n)?n:t;return n&&r===t&&(Wl(n,t,n.actionStats,t.actionStats)||Mo(n,t)&&Nl(n.actionStats,t.actionStats))&&(r=n),r?.id?(n&&(r=di(n,t,r)),[r,...s.filter(i=>i.id!==r.id)].sort((i,o)=>Number(o.updatedAt||0)-Number(i.updatedAt||0))):s}function fg(e){if(!e||["done","cancelled"].includes(e.status)||["done","cancelled"].includes(e.lifecycle))return[];let t=Array.isArray(e.actionStats)?e.actionStats:e.currentAction?.id?[e.currentAction]:[];return Ul(t.filter(s=>["ready","running","waiting"].includes(s?.status)))}function hg(e){return xo(e?.updatedAt)||xo(e?.createdAt)}function Ao(e){return xo(e?.createdAt)||xo(e?.updatedAt)}function xo(e){let t=Number(e);return t>0&&Number.isFinite(new Date(t).getTime())?t:0}function Ul(e){return[...e].sort((t,s)=>{let n=Ao(t),r=Ao(s);return n!==r?r-n:(Number(s?.sequence)||0)-(Number(t?.sequence)||0)})}function mg(e){if(!e?.id)return null;let t={id:e.id};for(let s of dg)Object.hasOwn(e,s)&&(t[s]=e[s]);return Array.isArray(e.actions)?t.actionStats=e.actions.map(s=>Object.fromEntries(["id","generation","attempt","status","sequence","createdAt","updatedAt","assignedVp","contentSummary","progressRevision"].filter(n=>Object.hasOwn(s,n)).map(n=>[n,s[n]]))):Array.isArray(e.actionStats)&&(t.actionStats=e.actionStats),t}var dg,cw,fw,Po=V(()=>{dg=Object.freeze(["revision","planRevision","ledgerRevision","coordinatorRevision","title","goal","workItemType","planningMode","status","lifecycle","attentionState","activeActionIds","attentionActionIds","currentActionId","currentAction","executionStats","executionControl","failureReason","origin","linkedSessionIds","createdAt","updatedAt"]);cw=new Set(["completed","failed","cancelled","superseded","interrupted"]);fw=new Set(["status","lifecycle","attentionState","activeActionIds","attentionActionIds","currentActionId","currentAction","executionStats","failureReason"])});function En(e){return typeof e=="string"?e.trim():""}function vg(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 ds(e){let t=vg(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 hw(e){return Array.isArray(e)?e.slice(0,100).map(t=>({content:En(t?.content).slice(0,2e3),status:["pending","in_progress","completed"].includes(t?.status)?t.status:"pending",...En(t?.activeForm)?{activeForm:En(t.activeForm).slice(0,2e3)}:{}})).filter(t=>t.content):[]}function Mt(e){if(!e||typeof e!="object")return null;let t=En(e.content).slice(0,1e5),s=hw(e.todos);if(!t&&s.length===0)return null;let n=e.role==="assistant"?"assistant":"user",r=vg(e.timestamp);return{id:En(e.id).slice(0,256)||null,role:n,author:En(e.author).slice(0,256)||(n==="assistant"?"Assistant":"User"),content:t,...r?{timestamp:r}:{},...s.length>0?{todos:s}:{}}}function yg(e,t){return Mt({id:e?.messageId||e?.id||null,role:"user",author:t,content:e?.content||"",timestamp:e?.timestamp||e?.createdAt||e?.ts||e?.time||null})}function bg(e,t){let s=e?.todoMsg?.toolInput?.todos,n=Array.isArray(e?.toolMsgs)?e.toolMsgs.map(i=>En(i?.toolName)).filter(Boolean):[],r=n.length>0?`Tool actions: ${n.join(", ")}`:"";return Mt({id:e?.atMessageId||e?.messageId||e?.id||e?.turnId||null,role:"assistant",author:t,content:e?.textContent||r,timestamp:e?.timestamp||e?.createdAt||e?.speakerTimestamp||null,todos:s})}var en=V(()=>{});function zl(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 mw(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 wg(e,t={}){if(!Array.isArray(e)||!t.turnId)return!1;let s=e.filter(n=>mw(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(zl(s[n].content).trim()){s[n].responseKind="result";break}}return!0}function Ro(e,t){if(!e||!t)return;let s=zl(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 Gl(e=[]){let t=(o,a)=>JSON.stringify([o.sessionId||o.groupId||"",o.speakerVpId||o.vpId||"",o.turnId||"",a]),s=new Map;for(let o of e)o.type==="tool-use"&&o.toolId&&s.set(t(o,o.toolId),o);let n=new Map,r=new Set;for(let o of e){if(o.type!=="chat-image"||!o.sourceToolCallId)continue;let a=s.get(t(o,o.sourceToolCallId));a&&(n.has(a)||n.set(a,[]),n.get(a).push(o),r.add(o))}if(r.size===0)return e;for(let o of n.values())o.sort((a,l)=>(a.sourceImageIndex??0)-(l.sourceImageIndex??0));let i=[];for(let o of e)r.has(o)||(i.push(o),n.has(o)&&i.push(...n.get(o)));return i}function pi(e){return JSON.stringify([e.assetId||e.id,e.sourceToolCallId||"",e.turnId||"",e.sourceImageIndex??""])}function kg(e,t=[]){let s=Array.isArray(e?.imageMsgs)?e.imageMsgs:[],n=new Map(t.map(c=>[c.key,c])),r=new Map(s.map(c=>[pi(c),c])),i=new Set,o=[],a=(c,d)=>{if(!d||i.has(d))return;i.add(d);let u=o[o.length-1];c!=="result"&&u?.kind===c?u.items.push(d):o.push({kind:c,key:`${c}:${c==="images"?pi(d):d.key||o.length}`,items:[d]})},l=0;for(let c of Gl(Array.isArray(e?.messages)?e.messages:[]))if(c.type==="assistant"&&zl(c.content)){let d=c.messageId||c.id||`response-${l}`,u=n.get(d);u&&a(u.kind==="result"?"result":"progress",u),l+=1}else c.type==="chat-image"&&a("images",r.get(pi(c)));for(let c of t)a(c.kind==="result"?"result":"progress",c);for(let c of s)a("images",c);return o}function _o(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||Kl.has(l?.status)||Kl.has(l?.turnEndReason)||Kl.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 Kl,gi=V(()=>{Kl=new Set(["aborted","errored","error","cancelled","canceled"])});function es(e){return typeof e=="string"?e.trim():""}function lt(e){let t=es(e?.runtimeProvider),s=es(e?.agentId),n=es(t==="work-center"?e?.workItemId:e?.sessionId);return!t||!s||!n?"":[t,s,n].map(r=>encodeURIComponent(r)).join(":")}function vw(e){let t=0xcbf29ce484222325n;for(let s of String(e||""))t^=BigInt(s.codePointAt(0)),t=BigInt.asUintN(64,t*0x100000001b3n);return t.toString(16).padStart(16,"0")}function Es(e,t){let s=es(e),n=es(t);return!s||!n?"":`${s}@${vw(n)}`}function Dn(e,t="main"){if(!e)return"";let s=["main","files-folder-picker","git-folder-picker"].includes(t)?t:"main";return s==="main"?`_workbench:${e}`:`_workbench:${e}:${s}`}function us(e,t){let s=es(e?.conversationId);if(!t||!s)return null;if(s===Dn(t))return"main";for(let n of["files-folder-picker","git-folder-picker"])if(s===Dn(t,n))return n;return null}function cr(e,t){let s=(n={})=>{let r={runtimeProvider:es(t.runtimeProvider),agentId:es(t.agentId),...t.runtimeProvider==="work-center"?{workItemId:es(t.workItemId)}:{sessionId:es(t.sessionId)}},i="main";n.conversationId==="_folder_picker"?i="files-folder-picker":n.conversationId==="_git_folder_picker"&&(i="git-folder-picker");let o={...n,agentId:r.agentId,workbenchRoute:r,workbenchRouteKey:t.routeKey,workbenchWorkspaceGeneration:t.workspaceGeneration,workbenchScope:i,conversationId:Dn(t.routeKey,i)};return(t.workspaceLocked===!0||!Object.hasOwn(o,"workDir")&&t.workDir)&&(o.workDir=t.workDir),e.sendWsMessage(o)};return new Proxy(e,{get(n,r,i){return r==="currentAgent"?t.agentId||null:r==="currentConversation"?t.conversationId||t.sessionId||null:r==="effectiveWorkDir"?t.workDir||"":r==="activeSessionRoute"?{runtimeProvider:t.runtimeProvider,agentId:t.agentId,...t.runtimeProvider==="work-center"?{workItemId:t.workItemId}:{sessionId:t.sessionId}}:r==="sendWsMessage"?s:Reflect.get(n,r,i)},set(n,r,i,o){return Reflect.set(n,r,i,o)}})}function dr(e,t,s=""){return t?(e?.workbenchRouteKey?e.workbenchRouteKey===t:us(e,t)!==null)?s?e?.workbenchWorkspaceGeneration===s:!0:!1:!0}var ps=V(()=>{});function Yl(e){return e?.type==="user"&&typeof e.content=="string"&&e.content.trim()}function Ql(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 Xl(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 Zl(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(Yl(i)||i.type==="system"||i.type==="error"){n(r),s={start:r,kind:i.type};continue}if(!Ql(i)){s||(s={start:r,kind:"other"});continue}(!s||s.kind==="assistant"&&Xl(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 Sg(e,t){return!e||e._historyWindowPrefetched===!0?!1:t?(e.sessionId??e.groupId)===t:!0}function Jl(e=[],t=null,s=fi,n=null){let r=Math.max(1,Number.isFinite(s)?Math.floor(s):fi),i=[],o=[],a=null,l=d=>{a&&(o.push({start:a.start,end:d,kind:a.kind}),a=null)};for(let d of e){if(!Sg(d,t))continue;let u=i.length;if(i.push(d),Yl(d)||d.type==="system"||d.type==="error"){l(u),a={start:u,kind:d.type};continue}if(!Ql(d)){a||(a={start:u,kind:"other"});continue}(!a||a.kind==="assistant"&&Xl(a,d))&&(l(u),a={start:u,kind:"assistant",turnId:d.turnId||"",speakerVpId:d.speakerVpId||d.vpId||""}),a.lastTurnId=d.turnId||a.lastTurnId||"",a.speakerVpId=a.speakerVpId||d.speakerVpId||d.vpId||""}if(l(i.length),o.length<=r)return i;let c=o[o.length-r];return i.slice(c.start)}function Cg(e=[],t=null,s=fi){let n=Math.max(1,s||fi),r=0,i=null,o=()=>i?(i=null,r+=1,r>n):!1;for(let a of e)if(Sg(a,t)){if(Yl(a)||a.type==="system"||a.type==="error"){if(o())return!0;i={kind:a.type};continue}if(!Ql(a)){i||(i={kind:"other"});continue}if(!i||i.kind==="assistant"&&Xl(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 tn(){return fi}function hi(){return yw}var fi,yw,Ig=V(()=>{fi=Number.POSITIVE_INFINITY,yw=20});function ww(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=fs();for(let r of n?.sessionList||[])r?.id===t&&r?.agentId&&s.add(r.agentId)}return s}function Bg(e,t){let s=ww(e,t);return s.size===1?s.values().next().value:null}function Lo(e,t,s){return!!s&&Bg(e,t)===s}function Dt(e,t,s){return!e||e.sessionId!==t?!1:s?e.agentId===s:!e.agentId}function Ag(e,t,s=null){if(!t)return!1;let n=s||$e(e,t),r=_s(n,t);if(r&&e.yeaftProcessingSessions?.[r]||e.yeaftProcessingSessions?.[t]&&Lo(e,t,n))return!0;for(let i of Object.values(e.activeVpTurns||{}))if(Dt(i,t,n))return!0;for(let i of Object.values(e.vpStatuses||{}))if(Dt(i,t,n)&&vi.has(i?.state))return!0;return!1}function kw(e,t,s,n=null){let r={...e.yeaftProcessingSessions||{}};if(t){let i=_l(t);if(r=Object.fromEntries(Object.entries(r).filter(([o])=>n?o!==_s(t,n):!o.startsWith(i))),n)Lo(e,n,t)&&delete r[n];else for(let o of Object.keys(r))Lo(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||!vi.has(i?.state))continue;let a=_s(t,o)||o;r[a]=!0}return r}function $n(e,t,s){let n=El(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 xg(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=_l(t);e.yeaftProcessingSessions=Object.fromEntries(Object.entries(e.yeaftProcessingSessions||{}).filter(([n])=>!n.startsWith(s)))}function Ds(e,t){return`${e||""}:${t||""}`}function Ew(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 Dw(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 $w(e={}){let t=Mt(e.quote);return{agentId:e.agentId||"",workItemId:e.workItemId||"",target:Ew(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 Rg(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 _g(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 Lw(e,t){return oc.every(s=>!t[s]||e[s]===t[s])}function Hg(e,t){return oc.every(s=>!e[s]||!t[s]||e[s]===t[s])}function Eg(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=>Lw(_g(o,s),t));if(r.length===1)return r[0];let i=n.filter(o=>Hg(_g(o,s),t));return i.length===1?i[0]:null}function Ng(e){return oc.map(t=>e[t]||"").join("\0")}function Ow(e,t,s){let n=Ng(t),r={...e._yeaftAskTerminalEvents||{},[n]:{identity:t,event:s,receivedAt:Date.now()}},i=Object.keys(r);if(i.length>Mg){i.sort((o,a)=>r[o].receivedAt-r[a].receivedAt);for(let o of i.slice(0,i.length-Mg))delete r[o]}e._yeaftAskTerminalEvents=r}function Dg(e,t){let s=e._yeaftAskTerminalEvents||{},n=Ng(t),r=s[n]?n:null;if(!r){let l=Object.entries(s).filter(([,c])=>Hg(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 Fw(e,t,s){return(e.messagesMap?.[t]||[]).some(n=>n?.type==="tool-use"&&n.sessionId===s&&n.hasResult===!1)}function tc(e,t){if(!(t.type==="ask_user_answer_rejected"&&(e.askAnswered||e.askExpired))){if(t.type==="ask_user_answer_rejected"&&t.reason==="agent_unavailable"){e.askError="agent_unavailable",e.askSubmittedAt=0;return}e.askError=t.type==="ask_user_answer_rejected"?t.reason||"unavailable":null,e.askSubmittedAt=null,t.type==="ask_user_answered"?(e.askAnswered=!0,e.selectedAnswers=t.answers||{},e.askExpired=!1):(e.isHistory=!0,e.askExpired=!0,e.askAnswered=!1,e.selectedAnswers=null),e.askPending=!1,e.pendingAnswers=null,e.askSubmitGeneration=null,e.askRequestId=null}}function qw(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 Vw(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 mi(e){return Gr(e)}function sc(e,t,s){return`${_s(e,t)}::${s||""}`}function nc(e){return Object.fromEntries(Object.entries(e||{}).filter(([,t])=>t?.status==="running"))}function fs(){try{return typeof window>"u"?null:window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore()||null}catch{return null}}function $g(e){let t=fs();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 $e(e,t,s=null){if(s)return s;if(t){let n=fs(),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 Lg(e){let t=Ls(e),s=$e(e,t),n=fs()?.sessionById?.(t,s),r=e.currentAgentInfo?.id===s?e.currentAgentInfo:e.agents?.find(o=>o?.id===s),i=o=>typeof o=="string"?o.trim():"";return i(n?.workDir)||i(r?.workDir)}function Bw(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 St(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"&&Bw(n?.version||r?.version,"1.0.166")}function Ls(e,{fallbackDefault:t=!1}={}){if(e?.yeaftActiveSessionFilter)return e.yeaftActiveSessionFilter;let s=fs();return s?.activeSessionId?s.activeSessionId:t?"grp_default":null}function Do(e){let t=e.yeaftDebugSessionFilter;if(t==="__all__")return null;if(t)return t;let s=Ls(e);return s||(fs()?.sessions?.grp_default?"grp_default":null)}function rc(e,t="session"){return[e?.vpId||e?.ownerVpId||"vp",e?.threadId||"thread",e?.turnId||t].join(":")}function $s(e,t,s=null){return s||t&&e?.yeaftConversationIdsByAgent?.[t]||e?.yeaftConversationId||null}function Ct(e,t=null,s=null){let n=t||e?.yeaftActiveSessionFilter||null,r=s||$e(e,n);return(r&&e?.yeaftConversationIdsByAgent?e.yeaftConversationIdsByAgent[r]:null)||e?.yeaftConversationId||null}function Og(e,t,s){if(e?.currentView!=="yeaft")return!1;let n=e?.yeaftActiveSessionFilter||null;if(n&&t!==n)return!1;let r=$e(e,n);return!r||!s||r===s}function $o(e){return{ownerGeneration:Number(e._workCenterActivityOwnerGeneration||0),connectionGeneration:Number(e.chatHistoryConnectionGeneration||0),owner:Un()}}function gs(e,t){return!!t&&t.ownerGeneration===Number(e._workCenterActivityOwnerGeneration||0)&&t.connectionGeneration===Number(e.chatHistoryConnectionGeneration||0)&&(t.owner?Kn(t.owner):!Un())}var bw,st,Eo,ec,Sw,Cw,Iw,Aw,xw,Tg,Tw,vi,Mw,Pw,Mg,Pg,Rw,_w,oc,Fg,ic,qg,Vg,Ln,Oo=V(()=>{Ot();el();rs();io();nl();ol();ei();up();Ip();Gp();Sn();Xs();Xr();eg();Sl();mo();ng();rg();og();ao();Po();Al();en();gi();ps();Xn();lo();Co();Ig();uo();xl();({defineStore:bw}=Pinia),st=Object.freeze([]),Eo=(e,t,s)=>`${e||""}::${t||""}::${s}`;ec=5,Sw=100,Cw=512*1024,Iw=15e3,Aw=1e4,xw=450,Tg=Object.freeze([150,300,600,1e3]),Tw=new Set(["index_building","stale_result"]),vi=new Set(["typing","thinking","retrying","streaming","tool"]),Mw=Object.freeze(["model","availableModels","refreshedAt","catalogRefreshedAt","catalogEpoch","catalogRevision","catalogDigest","refreshStartedAt","refreshReason","refreshError","refreshing"]),Pw=8,Mg=64,Pg=Object.freeze(["running","waiting"]),Rw=100,_w=10;oc=Object.freeze(["conversationId","agentId","requestId","toolCallId","sessionId","vpId","turnId","threadId"]);Fg=1e3,ic=1,qg=5,Vg=200;Ln=bw("chat",{state:()=>({ws:null,authenticated:!1,_hasHandledAgentList:!1,_hasHandledYeaftSessionHydrate:!1,yeaftSessionInventoryCompleteSupported:null,workbenchRouteProtocolSupported:null,workCenterWorkbenchProtocolSupported:null,browserRuntimeProtocolSupported:null,browserRuntimeSetupProtocolSupported:null,browserRuntimeServerEnabled:!1,yeaftSessionHydrateRequestId:null,yeaftSessionHydrateSlices:[],yeaftSessionHydrateError:null,_yeaftSessionInventorySocketQuarantined:!1,sessionKey:null,serverEncryptionRequired:!0,sessionForkPendingKey:null,sessionForkState:"idle",connectionState:"disconnected",reconnectAttempts:0,maxReconnectAttempts:10,reconnectTimer:null,agents:[],currentAgent:null,currentAgentInfo:null,conversations:[],activeConversations:[],currentWorkDir:null,messagesMap:{},_messageUiKeySequence:0,chatSessionState:{},panels:[],activePanelId:null,_pendingPaneId:null,conversationTitles:{},customConversationTitles:{},processingConversations:{},yeaftProcessingSessions:{},yeaftUnreadSessionKeys:{},theme:localStorage.getItem("theme")||(typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),themeFollowSystem:!localStorage.getItem("theme"),locale:localStorage.getItem("locale")||"zh-CN",executionStatusMap:{},sessionHealth:{},historySessions:[],historySessionsLoading:!1,folders:[],foldersLoading:!1,providerModels:[],providerModelsLoading:!1,contextUsage:null,lastUsedAgent:localStorage.getItem("lastUsedAgent")||null,lastUsedSession:JSON.parse(localStorage.getItem("lastUsedSession")||"null"),lastViewedConversation:localStorage.getItem("lastViewedConversation")||null,pendingRecovery:null,recoveryDismissed:!1,sessionLoading:!1,sessionLoadingText:"",agentSwitching:!1,pendingAgentSelection:null,_pendingSessionTitle:null,workbenchExpanded:!1,workbenchMaximized:!1,workbenchPanelStateByRoute:{},sidebarCollapsed:!1,sessionSidebarOpen:!1,compactStatus:null,clearStatus:null,refreshingSession:!1,refreshingSessionMap:{},proxyPorts:{},hasMoreMessages:!1,loadingMoreMessages:!1,chatHistoryRequests:{},chatHistoryRequestIdSupported:null,chatHistoryConnectionGeneration:0,sessionCatalog:[],hiddenSessionCatalog:[],sessionProjects:[],sessionCatalogLoaded:!1,sessionCatalogMutationRequests:{},projectMutationRequests:{},activeCatalogKey:null,openUnifiedSessionCreate:!1,openUnifiedChatCreate:!1,pendingUnifiedSessionSettings:null,pluginCenterOpen:!1,pluginCenterAgentId:null,pluginConfigByAgent:{},pluginCatalogByKey:{},pluginCatalogRequestByKey:{},managedSkillRequestByKey:{},_pluginPending:{},yeaftHasMoreHistory:!1,yeaftLoadingMoreHistory:!1,yeaftOldestLoadedSeq:null,yeaftHistoryLoadError:null,_yeaftManualHistoryRefresh:null,yeaftSessionHistoryState:{},yeaftMessageWindowState:{},yeaftHistoryCacheState:{},yeaftBootstrapMetaLoadingKey:null,yeaftHistoryPerfTraceBySession:{},_yeaftHistoryPrefetchBySession:{},yeaftHistorySearchState:{requestId:null,agentId:null,sessionId:null,query:"",senderKey:"",loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,nextCursor:null,error:null},yeaftHistoryOutlineBySession:{},_yeaftHistoryOutlineTimeouts:{},_yeaftHistorySearchTimeout:null,_yeaftHistoryWindowPendingByKey:{},_yeaftHistoryResultRefreshByRequestId:{},_yeaftHistoryRevealLeases:{},_yeaftHistoryRevealSequence:0,yeaftHistoryFocusWindowBySession:{},_yeaftReconnectCatchUpPending:!1,_yeaftOpenedSessionsLoadedAgents:{},_yeaftAgentSeen:null,slashCommandsMap:{},slashCommandDescriptions:{},inputDrafts:{},mcpServers:{},expertRoleDefinitions:null,llmConfig:{},llmModelDiscovery:{},llmGithubDevice:null,modelsDevRegistry:{registry:{},fetchedAt:0,error:null,loaded:!1},_modelsDevPending:null,yeaftSettings:{},searchSettings:null,telemetrySettings:null,telemetrySettingsByAgent:{},telemetryRequestByAgent:{},workCenterFeatureSettingsByAgent:{},workCenterFeatureRequestByAgent:{},agentOperations:{},agentUpgradeBatch:null,agentDreamState:{},tavilyUsage:null,tavilyUsageLoading:!1,_perfTraceQueue:[],_perfTraceFlushTimer:null,yeaftPerfTraceByMessageId:{},yeaftPerfTraceByTurnId:{},yeaftMcpServers:[],yeaftMcpRuntime:{connected:!1,toolCount:0,perServer:[]},yeaftMcpLoading:!1,yeaftMcpError:null,btwMode:!1,btwMessages:[],btwLoading:!1,btwSessionId:null,conversationMcpServers:{},conversationMcpServerTools:{},mcpPanelOpen:!1,expertSelections:[],customExpertRoles:[],subagents:{},activeSubagentId:null,activeRightPanel:null,pinnedSessions:JSON.parse(localStorage.getItem("pinned-sessions")||"[]"),...Xp(),workCenterOpen:!1,workCenterUiEnabled:localStorage.getItem("work-center-ui-enabled")!=="false",workCenterAgentId:null,workCenterItemsByAgent:{},workCenterActivityConnectionGeneration:-1,workCenterActivityByAgent:{},workCenterActivityLoadingByAgent:{},workCenterActivityErrorByAgent:{},_workCenterActivityGenerationByAgent:{},_workCenterActivityEventGenerationByAgent:{},_workCenterActivityEventsByAgent:{},_workCenterActivityOwnerGeneration:0,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:{},_workCenterDetailRequestFenceByAgent:{},_workCenterDetailEventRefreshByAgent:{},_workCenterActionInputGenerationByAgent:{},_workCenterActionMessageRequests:{},_workCenterActionMessageGenerationByKey:{},_workCenterActionRequestsGeneration:{},_workCenterActionRequestDetailsGeneration:{},workCenterPending:{},workCenterComposerDrafts:{},workCenterMessageOutbox:{},_workCenterBrowserFence:null,_workCenterBrowserUnsubscribe:null,workCenterCreateDraft:null,yeaftConversationId:null,yeaftConversationIdsByAgent:{},_yeaftPendingConversationPromotions:{},_yeaftRetiredConversationIdsByAgent:{},_yeaftRetiredConversationTargetsByAgent:{},yeaftSessionAgentById:{},yeaftModel:null,yeaftModelEffort:null,yeaftSessionReady:!1,yeaftStatus:null,yeaftAvailableModels:[],yeaftStatusByAgent:{},_yeaftRetiredCatalogEpochsByAgent:{},yeaftModelsRefreshing:!1,yeaftModelRefreshError:null,yeaftYeaftDir:null,yeaftActiveTasksBySession:{},yeaftStoppingTasksById:{},yeaftToolStats:null,yeaftToolStatsLoading:!1,yeaftDebugLoops:[],yeaftDebugTurnsById:{},yeaftDebugTurnOrder:[],yeaftDebugHistoryLoading:!1,yeaftDebugHistoryError:null,yeaftDebugHistoryFetchedAt:0,yeaftDebugHistoryProjection:null,yeaftDebugHistoryLimit:ic,yeaftDebugHistoryHasMore:!1,yeaftDebugPanel:{open:!1,status:"idle",requestId:null,agentId:null,sessionId:null,turnId:null,error:null},yeaftDebugSearch:"",yeaftDebugSessionFilter:null,yeaftDreamLatest:{},yeaftDreamSnapshots:{},yeaftDreamPromptLoads:{},yeaftDreamEvents:{},yeaftReflectionCards:{},yeaftSubAgentCards:{},yeaftSidebarV2Enabled:!0,yeaftActiveSessionFilter:null,_currentYeaftSessionId:null,_currentYeaftVpId:null,_currentYeaftTurnId:null,_currentYeaftThreadId:null,_yeaftAskTerminalEvents:{},activeVpTurns:{},vpStatuses:{},stoppingVpTurnIds:{},yeaftVpTyping:{},_vpCrudPending:null}),getters:{currentConversation:e=>e.activeConversations[0]||null,activeConversationId:e=>Io(e),activeSessionRoute(e){if(e.currentView==="yeaft"){let n=Ls(e);return n?{runtimeProvider:"yeaft",agentId:$e(e,n),sessionId:n}:null}let t=Io(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]||st;if(e.currentView==="yeaft"){let n=e.yeaftActiveSessionFilter||null,r=Le($e(e,n),n),i=e.yeaftMessageWindowState[r]?.visibleTurns||tn(),o=e.yeaftHistoryFocusWindowBySession?.[r]?.windowKey||null;return Jl(s,e.yeaftActiveSessionFilter||null,i,o)}return s},yeaftAllMessages:e=>{let t=Ct(e);return t&&e.messagesMap[t]||st},yeaftVisibleMessages(e){let t=Ct(e),s=t&&e.messagesMap[t]||st,n=e.yeaftActiveSessionFilter||null,r=Le($e(e,n),n),i=e.yeaftMessageWindowState[r]?.visibleTurns||tn(),o=e.yeaftHistoryFocusWindowBySession?.[r]?.windowKey||null;return Jl(s,e.yeaftActiveSessionFilter||null,i,o)},hasHiddenYeaftMessages(e){if(e.currentView!=="yeaft")return!1;let t=Ct(e),s=t&&e.messagesMap[t]||st,n=e.yeaftActiveSessionFilter||null,r=Le($e(e,n),n),i=e.yeaftMessageWindowState[r]?.visibleTurns||tn();return Cg(s,e.yeaftActiveSessionFilter||null,i)},activeYeaftHistoryState(e){return cl(e)},yeaftManualHistoryRefreshLoading(e){let t=e._yeaftManualHistoryRefresh||null;if(!t?.requestId)return!1;let s=Le(t.agentId,t.sessionId),n=Zt(e),r=e.yeaftSessionHistoryState?.[s]||null;return n.sessionKey===s&&r?.loading===!0&&r.requestId===t.requestId},yeaftInitialHistoryLoading(e){let t=cl(e);return e.currentView==="yeaft"&&!!e.yeaftActiveSessionFilter&&!!t?.loading&&!t?.loaded&&this.yeaftVisibleMessages.length===0},vpsTypingInCurrentConv(e){let t=this.activeConversationId;if(!t)return st;let s=(e.yeaftVpTyping||{})[t];if(!s)return st;let n=Object.keys(s).filter(r=>(s[r]||0)>0);return n.length===0?st: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=Do(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamLatest?.[s]||null},yeaftDreamSnapshotForActiveSession(e){let t=Do(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamSnapshots?.[s]||null},yeaftDreamPromptLoadForActiveSession(e){let t=Do(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamPromptLoads?.[s]||null},yeaftDreamEventsForActiveSession(e){let t=Do(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||st,s=e.yeaftDebugTurnsById||{},n=e.yeaftDebugLoops||st,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],g=s[u];if(!g||o&&g.sessionId&&g.sessionId!==o)continue;let p=a[u]||st,f=l[u]||st,h=p.length,v=0,y=0;for(let w of p){let b=w&&w.usage;b&&Number.isFinite(b.totalTokens)?v+=b.totalTokens:b&&(v+=(b.totalInputTokens||(b.inputTokens||0)+(b.cacheReadTokens||0)+(b.cacheWriteTokens||0))+(b.outputTokens||0)),w&&Number.isFinite(w.latencyMs)&&(y+=w.latencyMs)}let m=!g.closedAt,S={...g,loopCount:m||!g.loopCount?h:g.loopCount,totalTokens:m||!g.totalTokens?v:g.totalTokens,totalMs:m||!g.totalMs?y:g.totalMs,loops:p,reflections:f};c.push(S)}return c},yeaftDebugAvailableSessions:e=>{let t=new Set;for(let s of e.yeaftDebugTurnOrder||st){let n=e.yeaftDebugTurnsById[s];n&&n.sessionId&&t.add(n.sessionId)}return Array.from(t).sort()},yeaftDebugTurnTotal:e=>(e.yeaftDebugTurnOrder||st).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=Ls(e);return t?Ag(e,t,$e(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"?Lg(e):e.currentWorkDir||e.currentAgentInfo?.workDir||"",fileReferenceResolutionContextKey:e=>{let t=e.currentView==="yeaft"?(()=>{let o=Ls(e);return o?{runtimeProvider:"yeaft",agentId:$e(e,o),sessionId:o}:null})():(()=>{let o=Io(e),a=e.conversations.find(l=>l?.id===o&&l.type!=="yeaft");return a?{runtimeProvider:a.provider==="copilot"?"copilot":"claude-code",agentId:a.agentId||e.currentAgent||null,sessionId:o}:null})(),s=t?.agentId||e.currentAgent||null,n=t?.runtimeProvider==="yeaft"?Ct(e,t.sessionId,s):e.currentConversation,r=St(e,s,"file_reference_resolution");if(!s||!n||!r)return"";let i=e.currentView==="yeaft"?Lg(e):e.currentWorkDir||e.currentAgentInfo?.workDir||"";return JSON.stringify([e.connectionState,e.authenticated,e.workbenchRouteProtocolSupported,t?.runtimeProvider||"",s,t?.sessionId||"",n,i,St(e,s,"file_editor"),St(e,s,"workbench_session_routes"),St(e,s,"response_image_preview")])},currentAgentCapabilities:e=>e.currentAgentInfo?.capabilities||["terminal","file_editor","background_tasks"],hasCapability:e=>t=>(e.currentAgentInfo?.capabilities||["terminal","file_editor","background_tasks"]).includes(t),hasAgentCapability:e=>(t,s)=>St(e,t,s),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)=>Ag(e,t,s),isSessionHistorySyncing:e=>t=>{let s=t?.sessionId||null;return s?t.runtimeProvider==="yeaft"?!!e.yeaftSessionHistoryState?.[Le(t.agentId||null,s)]?.loading:!!e.chatHistoryRequests?.[Ys(s)]?.loading:!1},isYeaftSessionUnread:e=>(t,s=null)=>{if(!t)return!1;let n=$e(e,t,s);return n?!!e.yeaftUnreadSessionKeys?.[Yn(n,t)]:!1},showRecoveryBanner:e=>e.pendingRecovery&&!e.recoveryDismissed&&!e.currentConversation,currentSubagents:e=>{if(!e.currentConversation)return st;let t=e.subagents[e.currentConversation];return t?Object.values(t):st},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 st;let t=e.subagents[e.currentConversation];if(!t)return st;let s=t[e.activeSubagentId];return(Array.isArray(s?.messages)?s.messages:st).filter(r=>r?.type==="text")},selectedTaskInfo:()=>null,currentMcpServers:e=>e.currentConversation&&e.conversationMcpServers[e.currentConversation]||st},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&&Ol("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),Jp(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.some(n=>n.id===this.workCenterAgentId)?this.workCenterAgentId:t[0]?.id||null;return this.workCenterAgentId=s,this.workCenterOpen=!0,this.closeSessionSidebar(),s&&this.listWorkItems(s).catch(()=>{}),!0},leaveWorkCenter(){if(!this.workCenterOpen)return;this.workCenterOpen=!1;let e=new URL(window.location.href);for(let t of["workAgentId","workItemId","workContent"])e.searchParams.delete(t);window.history.replaceState({...window.history.state,workCenter:!1,workCenterContent:!1},"",`${e.pathname}${e.search}${e.hash}`)},setWorkCenterUiEnabled(e){this.workCenterUiEnabled=e!==!1;try{localStorage.setItem("work-center-ui-enabled",String(this.workCenterUiEnabled))}catch{}this.workCenterUiEnabled||this.leaveWorkCenter()},openPluginCenter(e=null){let t=this.agents.find(s=>s?.online&&s.id===e)||this.agents.find(s=>s?.online&&s.id===this.currentAgent)||this.agents.find(s=>s?.online)||null;return t?(this.pluginCenterAgentId=t.id,this.pluginCenterOpen=!0,!0):!1},closePluginCenter(){this.pluginCenterOpen=!1},pluginCatalogKey(e,t=""){return`${e||""}${String(t||"").trim()}`},loadPluginConfig(e=this.pluginCenterAgentId||this.currentAgent){if(!e)return Promise.resolve({plugins:{},error:"no agent"});let t=this.agents.find(n=>n?.id===e);if(!Gn(t))return Promise.resolve({plugins:{},error:"The selected Agent does not support Plugins; upgrade and restart the Agent"});let s=`plugins-get-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(n=>{let r=setTimeout(()=>{this._pluginPending?.[s]&&(delete this._pluginPending[s],n({plugins:{},error:"timeout"}))},1e4);this._pluginPending[s]={resolve:n,timer:r,kind:"config",agentId:e},this.sendWsMessage({type:"get_yeaft_plugins",agentId:e,requestId:s})})},savePluginConfig(e,t=this.pluginCenterAgentId||this.currentAgent){if(!t)return Promise.resolve({plugins:{},error:"no agent"});let s=this.agents.find(r=>r?.id===t);if(!Gn(s))return Promise.resolve({plugins:{},error:"The selected Agent does not support Plugins; upgrade and restart the Agent"});let n=`plugins-save-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(r=>{let i=setTimeout(()=>{this._pluginPending?.[n]&&(delete this._pluginPending[n],r({plugins:{},error:"timeout"}))},1e4);this._pluginPending[n]={resolve:r,timer:i,kind:"save",agentId:t},this.sendWsMessage({type:"update_yeaft_plugins",agentId:t,requestId:n,plugins:e})})},activePluginSession(){let e=this.yeaftActiveSessionFilter||fs()?.activeSessionId||null;if(!e)return{sessionId:"",workDir:""};let t=$e(this,e),s=fs()?.sessionById?.(e,t)||null;return{sessionId:e,agentId:s?.agentId||t||"",workDir:typeof s?.workDir=="string"?s.workDir.trim():""}},managedSkillRequestKey(e,t,s){return`${e||""}${t||""}${s||""}`},mutateManagedSkill({action:e,scope:t,skill:s,name:n,sessionId:r=""}={},i=this.pluginCenterAgentId||this.currentAgent){if(!i)return Promise.resolve({catalog:{tools:[],skills:[],skillSources:[],mcpServers:[]},error:"no agent"});let o=this.agents.find(c=>c?.id===i);if(!oo(o))return Promise.resolve({catalog:{tools:[],skills:[],skillSources:[],mcpServers:[]},error:"The selected Agent does not support Skill management; upgrade and restart the Agent"});let a=`managed-skill-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,l=this.managedSkillRequestKey(i,t,r);return this.managedSkillRequestByKey={...this.managedSkillRequestByKey,[l]:a},new Promise(c=>{let d=setTimeout(()=>{this._pluginPending?.[a]&&(delete this._pluginPending[a],c({catalog:{tools:[],skills:[],skillSources:[],mcpServers:[]},error:"timeout"}))},1e4);this._pluginPending[a]={resolve:c,timer:d,kind:"managed-skill",agentId:i,key:l,workDir:t==="project"&&this.activePluginSession().workDir||""},this.sendWsMessage({type:"yeaft_managed_skill",agentId:i,requestId:a,action:e,scope:t,...r?{sessionId:r}:{},...s?{skill:s}:{},...n?{name:n}:{}})})},loadPluginCatalog(e=this.pluginCenterAgentId||this.currentAgent,t=""){if(!e)return Promise.resolve({catalog:{tools:[],skills:[],mcpServers:[]},error:"no agent"});let s=this.agents.find(i=>i?.id===e);if(!Gn(s))return Promise.resolve({catalog:{tools:[],skills:[],mcpServers:[]},error:"The selected Agent does not support Plugins; upgrade and restart the Agent"});let n=this.pluginCatalogKey(e,t),r=`plugins-catalog-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return this.pluginCatalogRequestByKey={...this.pluginCatalogRequestByKey,[n]:r},this.pluginCatalogByKey={...this.pluginCatalogByKey,[n]:{...this.pluginCatalogByKey[n]||{},loading:!0,error:null}},new Promise(i=>{let o=setTimeout(()=>{this._pluginPending?.[r]&&(delete this._pluginPending[r],this.pluginCatalogRequestByKey?.[n]===r&&(this.pluginCatalogByKey={...this.pluginCatalogByKey,[n]:{...this.pluginCatalogByKey[n]||{},loading:!1,error:"timeout"}}),i({catalog:{tools:[],skills:[],mcpServers:[]},error:"timeout"}))},1e4);this._pluginPending[r]={resolve:i,timer:o,kind:"catalog",agentId:e,key:n},this.sendWsMessage({type:"yeaft_plugin_catalog",agentId:e,requestId:r,workDir:String(t||"").trim()})})},enterWorkCenterFromSession(e,t=""){if(!e?.id)return;let s=e.agentId||$e(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=zd(()=>{Kn(this._workCenterBrowserFence)||this.clearWorkCenterBrowserState()}));let e=Un();if(!e)return this._workCenterBrowserFence=null,this.workCenterComposerDrafts={},this.workCenterMessageOutbox={},this.clearWorkCenterActivityState(),!1;if(!Kn(this._workCenterBrowserFence)){this.clearWorkCenterActivityState();let t=Kd(e);this._workCenterBrowserFence=e,this.workCenterComposerDrafts=t.drafts,this.workCenterMessageOutbox=t.outbox}return!0},clearWorkCenterBrowserState(){this._workCenterBrowserFence=null,this.workCenterComposerDrafts={},this.workCenterMessageOutbox={},this.clearWorkCenterActivityState()},clearWorkCenterActivityState(){this._workCenterActivityOwnerGeneration=Number(this._workCenterActivityOwnerGeneration||0)+1,this.workCenterActivityByAgent={},this.workCenterActivityLoadingByAgent={},this.workCenterActivityErrorByAgent={},this._workCenterActivityGenerationByAgent={},this._workCenterActivityEventGenerationByAgent={},this._workCenterActivityEventsByAgent={};for(let e of["_workCenterListGenerationByAgent","_workCenterDetailRequestGenerationByAgent"])this[e]=Object.fromEntries(Object.entries(this[e]||{}).map(([t,s])=>[t,Number(s||0)+1]));for(let e of["workCenterItemsByAgent","workCenterDetailByAgent","workCenterLoadedByAgent","workCenterLoadingByAgent","workCenterErrorByAgent","workCenterListPageByAgent","workCenterListMoreLoadingByAgent","workCenterWatcherByAgent","_workCenterListQueryByAgent","_workCenterListFiltersByAgent","_workCenterListMoreRequestsByAgent","_workCenterListEventsByAgent","_workCenterDetailRequestFenceByAgent","_workCenterDetailEventRefreshByAgent"])this[e]={}},workCenterComposerKey(e,t){return Ds(e,t)},saveWorkCenterComposerDraft(e,t,s={}){let n=Ds(e,t);if(!e||!t)return;let r=Mt(s.quote),i={...this.workCenterComposerDrafts||{},[n]:{text:String(s.text||""),...r?{quote:r}:{},attachments:Array.isArray(s.attachments)?s.attachments:[],target:Dw(s.target),error:String(s.error||"")}};return Ja(i,this._workCenterBrowserFence)?(this.workCenterComposerDrafts=i,!0):!1},loadWorkCenterComposerDraft(e,t){return this.workCenterComposerDrafts?.[Ds(e,t)]||null},removeWorkCenterComposerDraft(e,t){let s=Ds(e,t),n={...this.workCenterComposerDrafts||{}};return delete n[s],Ja(n,this._workCenterBrowserFence)?(this.workCenterComposerDrafts=n,!0):!1},prepareWorkCenterMessageEnvelope(e={}){let t=$w(e),s=Ds(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 Nr(i,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=i,r):null},loadWorkCenterMessageEnvelope(e,t){return this.workCenterMessageOutbox?.[Ds(e,t)]||null},replaceWorkCenterMessageEnvelopeAttachments(e,t,s=[]){let n=Ds(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 Nr(o,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=o,i):null},discardWorkCenterMessageEnvelope(e,t){let s=Ds(e,t),n={...this.workCenterMessageOutbox||{}};return delete n[s],Nr(n,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=n,!0):!1},confirmWorkCenterMessageEnvelope(e,t,s){let n=Ds(e,t),r=this.workCenterMessageOutbox?.[n];if(!r||r.clientMessageId!==s)return!1;let i={...this.workCenterMessageOutbox||{}};return delete i[n],Nr(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=Et(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)},workItemIsActive(e){return!!e&&Pg.includes(e.status)&&!["done","cancelled"].includes(e.lifecycle)},applyWorkItemActivitySummary(e,t){let s=Et(e,t),n=s.find(r=>r?.id===t?.id)||null;return!n||this.workItemIsActive(n)?s:s.filter(r=>r.id!==n.id)},syncWorkCenterActivity(e,t){if(!t?.id||this.workItemDeleted(e,t.id))return;let s=this._workCenterActivityEventsByAgent[e]?.[t.id]?.summary,n=this.workCenterActivityByAgent[e]||[],r=Et(Et(n,s),t).find(o=>o.id===t.id),i=Number(this._workCenterActivityEventGenerationByAgent[e]||0)+1;this._workCenterActivityEventGenerationByAgent={...this._workCenterActivityEventGenerationByAgent,[e]:i},this._workCenterActivityEventsByAgent={...this._workCenterActivityEventsByAgent,[e]:{...this._workCenterActivityEventsByAgent[e]||{},[t.id]:{generation:i,summary:r}}},this.workCenterActivityByAgent={...this.workCenterActivityByAgent,[e]:this.applyWorkItemActivitySummary(n,r)}},async loadWorkCenterActivity(e=null){let t=e||this.workCenterAgentId||this.currentAgent;if(!t)return[];let s=Number(this._workCenterActivityGenerationByAgent[t]||0)+1,n=$o(this),r=Number(this._workCenterActivityEventGenerationByAgent[t]||0);this._workCenterActivityGenerationByAgent={...this._workCenterActivityGenerationByAgent,[t]:s},this.workCenterActivityLoadingByAgent={...this.workCenterActivityLoadingByAgent,[t]:!0},this.workCenterActivityErrorByAgent={...this.workCenterActivityErrorByAgent,[t]:null};try{let i=await Promise.all(Pg.map(async d=>{let u=[],g=new Set,p=null;for(let f=0;f<_w;f+=1){let h={status:d,limit:Rw};p&&(h.cursor=p);let v=await this.workCenterRequest("list",h,t);if(!gs(this,n))return[];Array.isArray(v?.items)&&u.push(...v.items);let y=typeof v?.nextCursor=="string"&&v.nextCursor?v.nextCursor:null;if(!y||g.has(y))break;g.add(y),p=y}return u}));if(!(this._workCenterActivityGenerationByAgent[t]===s&&gs(this,n)))return i.flat();let a=new Map((this.workCenterActivityByAgent[t]||[]).map(d=>[d.id,d])),l=this._workCenterActivityEventsByAgent[t]||{},c=[];for(let d of i.flat()){if(!d?.id||this.workItemDeleted(t,d.id))continue;let u=l[d.id]?.summary,g=a.get(d.id);u&&(g=Et(g?[g]:[],u)[0]);let p=Et(g?[g]:[],d)[0]||d;c=this.applyWorkItemActivitySummary(c,p)}for(let d of Object.values(this._workCenterActivityEventsByAgent[t]||{}))Number(d?.generation)<=r||(c=this.applyWorkItemActivitySummary(c,d.summary));return this.workCenterActivityByAgent={...this.workCenterActivityByAgent,[t]:c},c}catch(i){throw this._workCenterActivityGenerationByAgent[t]===s&&gs(this,n)&&(this.workCenterActivityErrorByAgent={...this.workCenterActivityErrorByAgent,[t]:i?.message||String(i)}),i}finally{this._workCenterActivityGenerationByAgent[t]===s&&gs(this,n)&&(this.workCenterActivityLoadingByAgent={...this.workCenterActivityLoadingByAgent,[t]:!1})}},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=$o(this),i=JSON.stringify(n),o=Number(this._workCenterListGenerationByAgent[s]||0)+1,a=Number(this._workCenterListEventGenerationByAgent[s]||0);this._workCenterListGenerationByAgent={...this._workCenterListGenerationByAgent,[s]:o},this._workCenterListQueryByAgent={...this._workCenterListQueryByAgent,[s]:i},this._workCenterListFiltersByAgent={...this._workCenterListFiltersByAgent,[s]:n},this.workCenterLoadingByAgent={...this.workCenterLoadingByAgent,[s]:!0},this.workCenterErrorByAgent={...this.workCenterErrorByAgent,[s]:null};try{let l=await this.workCenterRequest("list",n,s),c=(Array.isArray(l?.items)?l.items:[]).filter(u=>!this.workItemDeleted(s,u?.id));if(gs(this,r)&&this._workCenterListGenerationByAgent[s]===o&&this._workCenterListQueryByAgent[s]===i&&this.workCenterAgentId===s){let u=this._workCenterListEventsByAgent[s]||{},g=new Map((this.workCenterItemsByAgent[s]||[]).map(f=>[f.id,f])),p=c.flatMap(f=>{let h=u[f.id]?.summary,v=Et(h?[h]:[],g.get(f.id)),y=Et(v,f)[0];return this.syncWorkCenterActivity(s,y),this.workItemMatchesBoardQuery(y,n)?[y]:[]});for(let f of Object.values(u))Number(f?.generation)<=a||f?.queryKey!==i||(p=this.applyWorkItemBoardSummary(p,f.summary,n));this.workCenterItemsByAgent={...this.workCenterItemsByAgent,[s]:p},this.workCenterListPageByAgent={...this.workCenterListPageByAgent,[s]:{nextCursor:l?.nextCursor||null,queryKey:i}},this.workCenterWatcherByAgent={...this.workCenterWatcherByAgent,[s]:l?.watcher||null},this.workCenterLoadedByAgent={...this.workCenterLoadedByAgent,[s]:!0}}return c}catch(l){throw gs(this,r)&&this._workCenterListGenerationByAgent[s]===o&&this._workCenterListQueryByAgent[s]===i&&(this.workCenterErrorByAgent={...this.workCenterErrorByAgent,[s]:l?.message||String(l)}),l}finally{gs(this,r)&&this._workCenterListGenerationByAgent[s]===o&&this._workCenterListQueryByAgent[s]===i&&(this.workCenterLoadingByAgent={...this.workCenterLoadingByAgent,[s]:!1})}},async loadMoreWorkItems(e=null){let t=e||this.workCenterAgentId||this.currentAgent,s=this.workCenterListPageByAgent[t],n=this._workCenterListFiltersByAgent[t];if(!t||!s?.nextCursor||!n)return[];let r=$o(this),i=s.queryKey,o=this._workCenterListGenerationByAgent[t],a=Number(this._workCenterListEventGenerationByAgent[t]||0),l=s.nextCursor,c=`${o}:${i}:${l}`;if(this._workCenterListMoreRequestsByAgent[t]?.key===c)return this._workCenterListMoreRequestsByAgent[t].request;this.workCenterListMoreLoadingByAgent={...this.workCenterListMoreLoadingByAgent,[t]:!0};let d=(async()=>{try{let u=await this.workCenterRequest("list",{...n,cursor:l},t),g=this.workCenterListPageByAgent[t];if(!gs(this,r)||this._workCenterListGenerationByAgent[t]!==o||this._workCenterListQueryByAgent[t]!==i||g?.queryKey!==i||g?.nextCursor!==l||this.workCenterAgentId!==t)return[];let p=[...this.workCenterItemsByAgent[t]||[]],f=this._workCenterListEventsByAgent[t]||{};for(let h of Array.isArray(u?.items)?u.items:[]){if(this.workItemDeleted(t,h?.id))continue;let v=p.findIndex(w=>w.id===h.id),y=f[h.id]?.summary,m=Et(y?[y]:[],v<0?null:p[v]),S=Et(m,h)[0];this.syncWorkCenterActivity(t,S),v>=0&&p.splice(v,1),this.workItemMatchesBoardQuery(S,n)&&p.splice(v<0?p.length:v,0,S)}for(let h of Object.values(f))Number(h?.generation)<=a||h?.queryKey!==i||(p=this.applyWorkItemBoardSummary(p,h.summary,n));return this.workCenterItemsByAgent={...this.workCenterItemsByAgent,[t]:p},this.workCenterListPageByAgent={...this.workCenterListPageByAgent,[t]:{nextCursor:u?.nextCursor||null,queryKey:i}},u?.items||[]}finally{if(gs(this,r)&&this._workCenterListMoreRequestsByAgent[t]?.key===c){let u={...this._workCenterListMoreRequestsByAgent};delete u[t],this._workCenterListMoreRequestsByAgent=u,this.workCenterListMoreLoadingByAgent={...this.workCenterListMoreLoadingByAgent,[t]:!1}}}})();return this._workCenterListMoreRequestsByAgent={...this._workCenterListMoreRequestsByAgent,[t]:{key:c,request:d}},d},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.workCenterActivityByAgent={...this.workCenterActivityByAgent,[e]:(this.workCenterActivityByAgent[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},this._workCenterDetailRequestFenceByAgent={...this._workCenterDetailRequestFenceByAgent,[e]:$o(this)},t},commitWorkCenterDetail(e,t,s){if(t?.id&&this.workItemDeleted(e,t.id)||s!=null&&(Number(this._workCenterDetailRequestGenerationByAgent[e]||0)!==s||!gs(this,this._workCenterDetailRequestFenceByAgent?.[e])))return!1;let n=this.workCenterDetailByAgent[e],r=jl(n,t);return n&&r===n?!1:(this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[e]:r},this.syncWorkCenterActivity(e,mg(r)),!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=qt(n),i=ar(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=qt(s),a=ar(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)||qt(u?.generation)!==o||Number(this._workCenterActionMessageGenerationByKey[a]||0)!==l)return u;let g=this.workCenterActionMessages[a]?.messages||[],p=ui(g,u?.messages||[]),f=this.workCenterActionMessages[a],h=f?.nextCursor,v=n==null?null:Number(n),y=h==null?null:Number(h),m=!f||v==null||y!=null&&v===y;return this.workCenterActionMessages={...this.workCenterActionMessages,[a]:{generation:o,messages:p,nextCursor:m?u?.nextCursor??null:h,total:Math.max(Number(u?.total)||0,Number(f?.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 g=Object.keys(u).some(p=>p.startsWith(`${a}:`));this.workCenterActionMessagesLoading={...this.workCenterActionMessagesLoading,[a]:g}}}})();return this._workCenterActionMessageRequests={...this._workCenterActionMessageRequests,[c]:d},d},async loadWorkItemActionRequests(e,t,s,n=null){let r=n||this.workCenterAgentId||this.currentAgent,i=qt(s),o=Vl(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)&&qt(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=qt(s),c=`${Vl(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),g=!this.workItemDeleted(o,e)&&qt(u?.generation)===a&&this._workCenterActionRequestDetailsGeneration[c]===d;return g&&(this.workCenterActionRequestDetails={...this.workCenterActionRequestDetails,[c]:u?.request||null}),g?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 updateWorkItemSchedule(e,t,s=null){let n=s||this.workCenterAgentId||this.currentAgent,r=this.beginWorkCenterDetailWrite(n),i=await this.workCenterRequest("update_schedule",{id:e,schedule: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,n=void 0){let r=s||this.workCenterAgentId||this.currentAgent,i=this.beginWorkCenterDetailWrite(r),o={id:e,revision:t};n!=null&&(o.executionControlRevision=n);let a=await this.workCenterRequest("resume",o,r);return await this.listWorkItems(r,this._workCenterListFiltersByAgent[r]||{}),this.commitWorkCenterDetail(r,a,i),a},async extendWorkItemBudget(e,t,s,n=null){let r=n||this.workCenterAgentId||this.currentAgent,i=this.beginWorkCenterDetailWrite(r),o=await this.workCenterRequest("extend_budget",{id:e,executionControlRevision:t,additions:s},r);return await this.listWorkItems(r,this._workCenterListFiltersByAgent[r]||{}),this.commitWorkCenterDetail(r,o,i),o},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,g=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(!g?.accepted)throw new Error("Work Center Coordinator did not accept the message");return this.confirmWorkCenterMessageEnvelope(l,e,d),g}return await this.listWorkItems(l,this._workCenterListFiltersByAgent[l]||{}),this.confirmWorkCenterMessageEnvelope(l,e,d),g},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,...Mt(o)?{quote:Mt(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=Mt(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 g=this.workCenterDetailByAgent[l],p=g?.actions?.find(v=>v?.id===s),f=g?.id===e&&Number(g.revision)===Number(n)&&p&&Number(p.generation)===Number(r),h=jl(g,u);return this._workCenterActionInputGenerationByAgent[l]===c&&f&&!ug(h,g)?(this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[l]:h},h):g?.id===e?g: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 g=Object.entries(this.workCenterPending||{}).find(([,p])=>p?.agentId===e&&p.clientMessageId===t.clientMessageId);if(g){let[p,f]=g;clearTimeout(f.timer),delete this.workCenterPending[p],f.resolve(t.type==="coordinator.turn_started"?{accepted:!0,turnId:null,receipt:!0}:t.workItem)}}let n=this.workCenterItemsByAgent[e]||[];if(t.type==="work_item.deleted"){this.removeWorkItemState(e,s.id);return}if(this.workItemDeleted(e,s.id))return;let r=this._workCenterListFiltersByAgent[e]||{},i=this._workCenterListEventsByAgent[e]?.[s.id]?.summary||null,o=i?[i]:[],a=n.find(g=>g?.id===s.id)||null;a&&(o=Et(o,a));let l=Et(o,s).find(g=>g?.id===s.id)||s,c=Number(this._workCenterListEventGenerationByAgent[e]||0)+1;this._workCenterListEventGenerationByAgent={...this._workCenterListEventGenerationByAgent,[e]:c},this._workCenterListEventsByAgent={...this._workCenterListEventsByAgent,[e]:{...this._workCenterListEventsByAgent[e]||{},[s.id]:{generation:c,queryKey:this._workCenterListQueryByAgent[e]||null,summary:l}}},this.syncWorkCenterActivity(e,l);let d=this.applyWorkItemBoardSummary(n,l,r);this.workCenterItemsByAgent={...this.workCenterItemsByAgent,[e]:d};let u=this.workCenterDetailByAgent[e];if(u?.id===s.id){let g=t.type==="run.finished"&&t.actionId&&Array.isArray(s.actionStats)&&s.actionStats.some(m=>m?.id===t.actionId)?{...s,eventActionId:t.actionId}:s,p=Hl(u,g),f=Number(s.coordinatorRevision),h=Number(u.coordinatorRevision)||0,v=Number.isInteger(f)&&f>h,y=pg(u,g);this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[e]:gg(u,s)},y&&this.refreshWorkItemDetailAfterActionChange(e,s,v?null:p)}},async refreshWorkItemDetailAfterActionChange(e,t,s=null){let n=s?(Array.isArray(t.actionStats)?t.actionStats:[]).find(h=>h?.id===s.actionId):(Array.isArray(t.actionStats)?t.actionStats:[]).find(h=>h?.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 g=this.beginWorkCenterDetailWrite(e),p={key:u,generation:g};this._workCenterDetailEventRefreshByAgent={...this._workCenterDetailEventRefreshByAgent,[e]:p},s&&this.invalidateWorkItemActionMessages(e,t.id,s.actionId,s.generation);let f=r&&o!=null?this.loadWorkItemActionMessages(t.id,r,o,null,e).catch(()=>null):null;try{let h=await this.workCenterRequest("get",{id:t.id},e),v=this.workCenterDetailByAgent[e],y=v?.actions?.find(P=>P?.id===r),m=h?.actions?.find(P=>P?.id===r),S=o==null||qt(y?.generation)===o,w=o==null||qt(m?.generation)>=o,b=l==null||Number(h?.coordinatorRevision)===l,k=l!=null||S&&w&&(t.currentActionId==null?h?.currentActionId==null:v?.currentActionId===t.currentActionId&&h?.currentActionId===t.currentActionId);v?.id===t.id&&b&&k&&this.commitWorkCenterDetail(e,h,g)&&f&&await f}catch{}finally{if(this._workCenterDetailEventRefreshByAgent[e]===p){let h={...this._workCenterDetailEventRefreshByAgent};delete h[e],this._workCenterDetailEventRefreshByAgent=h}}},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),g=Array.isArray(this._yeaftRetiredCatalogEpochsByAgent?.[e])?this._yeaftRetiredCatalogEpochsByAgent[e]:[],p=!!a&&g.includes(a),f=!!a&&a===o,h=i>0?f&&i===r:c>0&&c===l,v=i>0?!!a&&(a!==o||i>r):r===0&&c>l,y=i>0?!!t.catalogDigest&&!!n.catalogDigest&&t.catalogDigest===n.catalogDigest:t.catalogDigest===n.catalogDigest,m=u&&!p&&(v||h&&y),w=m||s&&r===0&&l===0&&!u&&d,b={...t};if(!w)for(let P of Mw)delete b[P];let k={...n,...b};if(w){if(m&&o&&a&&o!==a){let P=[...g.filter(x=>x!==o),o].slice(-Pw);this._yeaftRetiredCatalogEpochsByAgent={...this._yeaftRetiredCatalogEpochsByAgent||{},[e]:P}}k.availableModels=t.availableModels,k.catalogRefreshedAt=m?c:null,k.catalogEpoch=m&&a||null,k.catalogRevision=m&&i||null,k.catalogDigest=m&&t.catalogDigest||null}this.yeaftStatusByAgent={...this.yeaftStatusByAgent,[e]:k},this.currentAgent===e&&this.applyCachedYeaftStatus(e)},applyCachedYeaftStatus(e=this.currentAgent){let t=e?this.yeaftStatusByAgent[e]:null;return t?(this.yeaftModel=t.model||null,this.yeaftModelEffort=t.modelEffort||null,this.yeaftAvailableModels=Array.isArray(t.availableModels)?t.availableModels:[],this.yeaftModelsRefreshing=!!t.refreshing,this.yeaftModelRefreshError=t.refreshError||null,this.yeaftYeaftDir=t.yeaftDir||null,this.yeaftStatus={skills:t.skills,mcpServers:t.mcpServers,tools:t.tools,multiVp:!!t.multiVp},!0):!1},activateYeaftAgentCatalog(e,t=this.currentAgent){let s=e?this.yeaftStatusByAgent[e]:null;return s&&this.applyCachedYeaftStatus(e),Array.isArray(s?.availableModels)?!0:(this.yeaftModel=null,this.yeaftModelEffort=null,this.yeaftAvailableModels=[],s||(this.yeaftStatus=null),this.yeaftModelsRefreshing=!!e&&!s?.refreshError,this.yeaftModelRefreshError=s?.refreshError||null,t!==e&&(this.yeaftYeaftDir=null),!1)},activateYeaftAgent(e,t=null){if(!e)return!1;let s=this.currentAgent;return this.currentAgent=e,t&&(this.currentAgentInfo=t),this.activateYeaftAgentCatalog(e,s)},resolveYeaftSessionAgentId(e){return $e(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))},Iw),e):(this.yeaftSessionHydrateRequestId=null,this.yeaftSessionHydrateSlices=[],this.yeaftSessionHydrateError="session_inventory_send_failed",null)},beginYeaftHistoryLoad(e){let t=Au(this,e);if(!t)return null;let{agentId:s,sessionId:n}=e||{};return setTimeout(()=>{Qr(this,{agentId:s,sessionId:n,requestId:t.requestId,error:"history_load_timeout"})},Iu),t},finishYeaftHistoryLoad(e,t={},s="chunk"){return xu(this,e,t,s)},isCurrentYeaftHistoryResponse(e){return ll(this,e)},syncActiveYeaftHistoryLoad(){return Cn(this)},enterYeaft(e=null,{deferBootstrap:t=!1}={}){let s=this.currentAgent;Fl(this);let n=Ls(this),r=!e&&n?$e(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]=[]),Zp(this),this.currentView="yeaft",Ol("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=Ls(this),r=n?$e(this,n):this.currentAgent,i=Le(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(m=>m&&(m.sessionId??m.groupId??null)===n),d=!!n&&qu({sessionState:o,hasCachedSessionRows:c,force:!!s}),u=!!n&&!d&&Fu(o,t);if(!a&&!d&&!u)return!1;let g=`${r}:${n||"__none__"}`,p=a&&!d&&!u;if(p&&this.yeaftBootstrapMetaLoadingKey===g)return!1;p&&(this.yeaftBootstrapMetaLoadingKey=g);let f=null;n&&d?f=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&&(f=this.beginYeaftHistoryLoad({agentId:r,sessionId:n,mode:"delta",preserveLoaded:!0,latestSeq:l}));let h={type:"yeaft_load_history",agentId:r,sessionId:n,...f?{requestId:f.requestId}:{}};u?h.afterSeq=l:h.limit=d?ec:0;let v=xn();h.perfTraceId=v;let y=u?"delta":d?"recent":"metadata";return n&&(this.yeaftHistoryPerfTraceBySession={...this.yeaftHistoryPerfTraceBySession||{},[i]:v}),kt(this,{traceId:v,phase:"history.request_send",agentId:r,sessionId:n,messageType:h.type,bytes:JSON.stringify(h).length,detail:{mode:y,limit:h.limit??null,afterSeq:h.afterSeq??null,hasCachedSessionRows:c,needSessionReady:a}}),this.sendWsMessage(h),!0},leaveYeaft(){this.activateChatView({persistPreference:!0})},fetchYeaftToolStats(){this.currentAgent&&(this.yeaftToolStatsLoading=!0,this.sendWsMessage({type:"yeaft_fetch_tool_stats",agentId:this.currentAgent}),this._fetchYeaftToolStatsTimer&&clearTimeout(this._fetchYeaftToolStatsTimer),this._fetchYeaftToolStatsTimer=setTimeout(()=>{this.yeaftToolStatsLoading&&(this.yeaftToolStatsLoading=!1,this.yeaftToolStats={...this.yeaftToolStats||{snapshot:{},registered:[],unused:[]},error:null,notice:"Tool stats are unavailable right now. Try again after the agent reconnects.",fetchedAt:Date.now()}),this._fetchYeaftToolStatsTimer=null},1e4))},loadYeaftDebugHistory({groupId:e,limit:t,dreamLimit:s,indexOnly:n=!1,detailTurnId:r=null,search:i=void 0}={}){let o=$e(this,e);if(!o)return;let a=typeof i=="string"?i.trim():(this.yeaftDebugSearch||"").trim(),l=typeof r=="string"&&r,c=a&&!l?qg:ic,d=Number.isFinite(t)&&t>0?t:this.yeaftDebugHistoryLimit||c,u=Math.max(1,Math.min(c,d)),g=l?"detail":"list",p=`dbg_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`,f=JSON.stringify({agentId:o,groupId:e||null,limit:u,dreamLimit:Number.isFinite(s)&&s>0?s:5,indexOnly:!!n,detailTurnId:r||null,search:l?"":a});if(this._yeaftDebugHistoryInFlightKey===f)return;this._yeaftDebugHistoryInFlightKey=f,l?this._yeaftDebugHistoryLatestDetailRequestId=p:this._yeaftDebugHistoryLatestListRequestId=p,this.yeaftDebugHistoryLimit=u,this.yeaftDebugHistoryLoading=!0,this.yeaftDebugHistoryError=null,this.yeaftDebugHistoryProjection=null;let h={type:"yeaft_fetch_debug_history",agentId:o,requestId:p,requestKind:g,limit:u,dreamLimit:Number.isFinite(s)&&s>0?s:5};n&&(h.indexOnly=!0),typeof r=="string"&&r?h.detailTurnId=r:a&&(h.search=a),typeof e=="string"&&e&&(h.sessionId=e),this._yeaftDebugHistoryPending={payload:h,attempt:0,startedAt:Date.now()},ir(this),this.refreshYeaftDebugHistoryTimeout(p),this.sendWsMessage(h)},scheduleYeaftDebugDetailRefresh(e,t){let s=this.yeaftDebugPanel;!s?.open||s.turnId!==t||s.agentId!==e.agentId||s.sessionId&&s.sessionId!==e.sessionId||(this._yeaftDebugDetailDirty=!0,!this._yeaftDebugDetailRefreshTimer&&(this._yeaftDebugDetailRefreshTimer=setTimeout(()=>{this._yeaftDebugDetailRefreshTimer=null,!(!this.yeaftDebugPanel?.open||this.yeaftDebugPanel.requestId!==s.requestId)&&(this.yeaftDebugHistoryLoading||(this._yeaftDebugDetailDirty=!1,this.loadYeaftDebugHistory({groupId:s.sessionId,detailTurnId:s.turnId})))},500)))},refreshYeaftDebugHistoryTimeout(e){let t=this._yeaftDebugHistoryPending;!t||t.payload.requestId!==e||(this._fetchYeaftDebugHistoryTimer&&clearTimeout(this._fetchYeaftDebugHistoryTimer),this._fetchYeaftDebugHistoryTimer=setTimeout(()=>{if(this._yeaftDebugHistoryPending===t){if(this.yeaftDebugHistoryLoading&&t.attempt<1){t.attempt+=1,t.startedAt=Date.now(),t.payload={...t.payload,requestId:`dbg_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`},t.payload.requestKind==="detail"?this._yeaftDebugHistoryLatestDetailRequestId=t.payload.requestId:this._yeaftDebugHistoryLatestListRequestId=t.payload.requestId,ir(this),this.refreshYeaftDebugHistoryTimeout(t.payload.requestId),this.sendWsMessage(t.payload);return}this.yeaftDebugHistoryLoading&&(this.yeaftDebugHistoryLoading=!1,this.yeaftDebugHistoryError="debug_history_timeout",this.yeaftDebugPanel?.status==="loading"&&(this.yeaftDebugPanel={...this.yeaftDebugPanel,status:"error",error:this.yeaftDebugHistoryError})),this._yeaftDebugHistoryInFlightKey=null,this._fetchYeaftDebugHistoryTimer=null,this._yeaftDebugHistoryPending=null,this._yeaftDebugHistoryLatestDetailRequestId=null,this._yeaftDebugHistoryLatestListRequestId=null,ir(this)}},Math.max(0,Math.min(3e4,3e5-(Date.now()-t.startedAt)))))},openYeaftTurnDebug({sessionId:e=null,turnId:t=null}={}){let s=$e(this,e);if(!s)return;this.workbenchExpanded=!1,this.workbenchMaximized=!1,this.rememberWorkbenchPanelState();let n=`dbgpanel_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`,r=t?"loading":"idle";this.yeaftDebugPanel={open:!0,status:r,requestId:n,agentId:s,sessionId:e||null,turnId:t||null,error:null},t&&this.loadYeaftDebugHistory({groupId:e||void 0,limit:1,dreamLimit:5,detailTurnId:t})},closeYeaftDebugPanel(){this._yeaftDebugDetailRefreshTimer&&clearTimeout(this._yeaftDebugDetailRefreshTimer),this._yeaftDebugDetailRefreshTimer=null,this._yeaftDebugDetailDirty=!1,this._fetchYeaftDebugHistoryTimer&&clearTimeout(this._fetchYeaftDebugHistoryTimer),this._fetchYeaftDebugHistoryTimer=null,this._yeaftDebugHistoryPending=null,this._yeaftDebugHistoryInFlightKey=null,this._yeaftDebugHistoryLatestDetailRequestId=null,this._yeaftDebugHistoryLatestListRequestId=null,this.yeaftDebugHistoryLoading=!1,ir(this);let t=(this.yeaftDebugPanel||{}).turnId||null;if(this.yeaftDebugPanel={open:!1,status:"idle",requestId:null,agentId:null,sessionId:null,turnId:null,error:null},t&&this.yeaftDebugTurnsById&&this.yeaftDebugTurnsById[t]){let s={...this.yeaftDebugTurnsById};delete s[t],this.yeaftDebugTurnsById=s,this.yeaftDebugTurnOrder=(this.yeaftDebugTurnOrder||[]).filter(n=>n!==t),this.yeaftDebugLoops=(this.yeaftDebugLoops||[]).filter(n=>!n||n.turnId!==t)}},agentIdForSession(e){return $e(this,e)},sendYeaftSessionMessage({groupId:e,text:t,mentions:s,attachments:n,quote:r,quickSend:i}){let o=$e(this,e);if(!e||!o||i&&(o!==this.currentAgent||this.connectionState!=="connected"||!this.agents?.some(v=>v.id===o&&v.online)))return!1;let a=Array.isArray(n)?n.filter(v=>v&&v.fileId):[],l=Mt(r),c=a.length>0;if(!t?.trim()&&!c)return;let d=t?.trim()?t:"(attached files)",u=Date.now(),g=`u_${u.toString(36)}_${Math.random().toString(36).slice(2,10)}`,p=xn();this.yeaftPerfTraceByMessageId={...this.yeaftPerfTraceByMessageId||{},[g]:p},kt(this,{traceId:p,phase:"send.prepare",agentId:o,sessionId:e,turnId:g,messageType:"yeaft_session_send",detail:{mentionCount:Array.isArray(s)?s.length:0,attachmentCount:a.length,quoted:!!l}});let f=Ct(this,e);if(f){let v={id:g,messageId:g,clientMessageId:g,stableKey:Qs(o,e,g),uiKey:Qs(o,e,g),type:"user",content:d,timestamp:u,sessionId:e,turnId:g,...l?{quote:l}:{}};if(a.length>0&&(v.attachments=a.map(y=>({fileId:y.fileId,name:y.name,preview:y.preview,isImage:!!y.isImage,mimeType:y.mimeType||""}))),os(this).upsertOverlay({conversationId:f,agentId:o,sessionId:e,row:v}),this.processingConversations[f]=!0,e){let y=_s(o,e);this.yeaftProcessingSessions={...this.yeaftProcessingSessions,...y?{[y]:!0}:{}}}this._turnCompletedConvs?.delete(f),this._closedAt?.[f]&&delete this._closedAt[f],this.getOrCreateExecutionStatus(f),sr(this,f)}let h={type:"yeaft_session_send",agentId:o,id:g,sessionId:e,text:d,mentions:Array.isArray(s)?s:[],perfTraceId:p,...i?{quickSend:{model:i.model,effort:i.effort??null,maxOutputTokens:i.maxOutputTokens??null}}:{},...l?{quote:l}:{}};a.length>0&&(h.attachments=a.map(v=>({fileId:v.fileId,isImage:!!v.isImage}))),kt(this,{traceId:p,phase:"send.websocket_send",agentId:o,sessionId:e,turnId:g,messageType:h.type,bytes:JSON.stringify(h).length}),this.sendWsMessage(h)},cancelYeaftTask({agentId:e=null,sessionId:t,taskId:s}){let n=typeof t=="string"?t.trim():"",r=typeof s=="string"?s.trim():"",i=$e(this,n,e);return!i||!n||!r?!1:(this.yeaftStoppingTasksById={...this.yeaftStoppingTasksById,[sc(i,n,r)]:!0},this.sendWsMessage({type:"yeaft_task_cancel",agentId:i,sessionId:n,taskId:r,clientRequestId:`task_cancel_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}),!0)},continueYeaftHistoryDelta(e,t=null,s=null){let n=e||null,r=$e(this,n,t);if(!r||!n||!Number.isFinite(s))return!1;let i=Le(r,n),o=this.yeaftSessionHistoryState?.[i]||null;if(o?.loading)return!1;let a=this.beginYeaftHistoryLoad({agentId:r,sessionId:n,mode:"delta",preserveLoaded:!0,latestSeq:s});if(!a)return!1;this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[i]:{...this.yeaftSessionHistoryState[i],syncingAfterSeq:s}};let l={type:"yeaft_load_history",agentId:r,sessionId:n,requestId:a.requestId,afterSeq:s,maxRows:Sw,maxBytes:Cw,...typeof o?.streamId=="string"?{streamId:o.streamId}:{},...Number.isFinite(o?.revision)?{revision:o.revision}:{}};return this.sendWsMessage(l)?!0:(Qr(this,{agentId:r,sessionId:n,requestId:a.requestId,error:"history_load_send_failed"}),!1)},clearYeaftHistoryMemory({agentId:e=null,sessionId:t=null,preserveLiveRows:s=!1,preserveSessionOwner:n=!1}={}){let r=e||null,i=t||null,o=r&&i?Le(r,i):null,a={};for(let[h,v]of Object.entries(this._yeaftHistoryWindowPendingByKey||{})){if(!(!o||v?.agentId===r&&v?.sessionId===i)){a[h]=v;continue}clearTimeout(v?.timeout),v?.resolve?.(!1)}this._yeaftHistoryWindowPendingByKey=a;let l={};for(let[h,v]of Object.entries(this._yeaftHistoryPrefetchBySession||{})){if(o&&h!==o){l[h]=v;continue}v.cancelled=!0,v.idle&&typeof globalThis.cancelIdleCallback=="function"?globalThis.cancelIdleCallback(v.handle):clearTimeout(v.handle)}this._yeaftHistoryPrefetchBySession=l;let c={};for(let[h,v]of Object.entries(this._yeaftHistoryResultRefreshByRequestId||{})){if(!(!o||v?.agentId===r&&v?.sessionId===i)){c[h]=v;continue}clearTimeout(v?.timeout),v?.resolve?.(null)}this._yeaftHistoryResultRefreshByRequestId=c;let d=r&&this.yeaftConversationIdsByAgent?.[r]||null,u=o?new Set([d].filter(Boolean)):new Set(Object.values(this.yeaftConversationIdsByAgent||{}).filter(Boolean));!o&&this.yeaftConversationId&&u.add(this.yeaftConversationId);let g={...this.messagesMap||{}};for(let h of u)Array.isArray(g[h])&&(g[h]=o?g[h].filter(v=>(v?.sessionId??v?.groupId??null)!==i?!0:s&&!yt(v)):[]);this.messagesMap=g;let p=h=>{if(!o)return{};let{[o]:v,...y}=h||{};return y};if(this.yeaftSessionHistoryState=p(this.yeaftSessionHistoryState),this.yeaftHistoryCacheState=p(this.yeaftHistoryCacheState),this.yeaftMessageWindowState=p(this.yeaftMessageWindowState),this.yeaftHistoryFocusWindowBySession=p(this.yeaftHistoryFocusWindowBySession),this.yeaftHistoryOutlineBySession=p(this.yeaftHistoryOutlineBySession),o){let h=this._yeaftHistoryOutlineTimeouts?.[o];h&&clearTimeout(h),this._yeaftHistoryOutlineTimeouts=p(this._yeaftHistoryOutlineTimeouts)}else{for(let h of Object.values(this._yeaftHistoryOutlineTimeouts||{}))h&&clearTimeout(h);this._yeaftHistoryOutlineTimeouts={}}if((!o||this.yeaftHistorySearchState?.agentId===r&&this.yeaftHistorySearchState?.sessionId===i)&&(this._yeaftHistorySearchTimeout&&clearTimeout(this._yeaftHistorySearchTimeout),this._yeaftHistorySearchTimeout=null,this.yeaftHistorySearchState={requestId:null,agentId:null,sessionId:null,query:"",senderKey:"",loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,nextCursor:null,error:null}),this._yeaftHistoryRevealLeases=o?Object.fromEntries(Object.entries(this._yeaftHistoryRevealLeases||{}).filter(([,h])=>h?.sessionKey!==o)):{},o||(this.yeaftHasMoreHistory=!1,this.yeaftLoadingMoreHistory=!1,this.yeaftOldestLoadedSeq=null),!n&&i&&this.yeaftSessionAgentById?.[i]===r){let{[i]:h,...v}=this.yeaftSessionAgentById;this.yeaftSessionAgentById=v}this.syncActiveYeaftHistoryLoad()},getYeaftMessageWindowKey(e=null,t=null){let s=e||this.yeaftActiveSessionFilter||null,n=$e(this,s,t);return Le(n,s)},showLatestYeaftMessageWindow(e=null,t=null){let s=this.getYeaftMessageWindowKey(e,t);if(!s||!this.yeaftHistoryFocusWindowBySession?.[s])return!1;let{[s]:n,...r}=this.yeaftHistoryFocusWindowBySession;return this.yeaftHistoryFocusWindowBySession=r,!0},pruneYeaftMessageWindow(e=null,t=null){if(this.currentView!=="yeaft")return;let s=this.getYeaftMessageWindowKey(e,t);Object.values(this._yeaftHistoryRevealLeases||{}).some(r=>r?.sessionKey===s)||(this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[s]:{visibleTurns:tn()}})},expandYeaftMessageWindow(e=null,t=hi(),s=null){if(this.currentView!=="yeaft")return;let n=this.getYeaftMessageWindowKey(e,s),i=(this.yeaftMessageWindowState[n]?.visibleTurns||tn())+Math.max(1,Number.isFinite(t)?Math.floor(t):hi());this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[n]:{visibleTurns:i}}},isYeaftMessageCached(e,t,s=null,n=null){let r=e||this.yeaftActiveSessionFilter||null,i=s||Ct(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=$e(this,r,n),o=s||Ct(this,r,i);if(!o||!t)return!1;let a=(this.messagesMap[o]||[]).filter(v=>v?._historyWindowPrefetched===!0?!1:r?(v?.sessionId??v?.groupId??null)===r:!0),c=a.findIndex(v=>(v?.id||v?.messageId)===t||v?.persistedMessageId===t);if(c<0){let v=(this.messagesMap[o]||[]).find(y=>y?._historyWindowPrefetched===!0&&(y?.sessionId??y?.groupId??null)===r&&((y?.id||y?.messageId)===t||y?.persistedMessageId===t));if(!v)return!1;v._historyWindowPrefetched=!1,a.push(v),a.sort((y,m)=>{let S=Number.isFinite(y?.seq)?y.seq:null,w=Number.isFinite(m?.seq)?m.seq:null;return S!==null&&w!==null&&S!==w?S-w:S!==null&&w===null?-1:S===null&&w!==null?1:(y?.timestamp||0)-(m?.timestamp||0)}),c=a.indexOf(v)}let u=a[c]?._historyWindowKey||null,g=this.getYeaftMessageWindowKey(r,i);if(u){let v=(this.messagesMap[o]||[]).filter(m=>(m?.sessionId??m?.groupId??null)===r&&m?._historyWindowKey===u);return Zl(v).length===0?!1:(this.yeaftHistoryFocusWindowBySession={...this.yeaftHistoryFocusWindowBySession||{},[g]:{windowKey:u,messageId:t,conversationId:o}},this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[g]:{visibleTurns:tn()}},!0)}let p=Zl(a),f=p.findIndex(v=>c>=v.start&&c<v.end);if(f<0)return!1;let h=Math.max(tn(),p.length-f);return this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[g]:{visibleTurns:h}},!0},getYeaftHistoryOutlineState(e=null,t=null){let s=e||this.yeaftActiveSessionFilter||null,n=$e(this,s,t),r=Le(n,s),i=this.yeaftHistoryOutlineBySession[r]||{requestId:null,agentId:n,sessionId:s,loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,nextCursor:null,totalCount:null,loaded:!1,retryAttempt:0,error:null},o=Ct(this,s,n),a=o?this.messagesMap[o]||[]:[],l=new Map((i.results||[]).map(g=>[mi(g),g])),c=0;for(let g of a){if((g?.sessionId??g?.groupId??null)!==s)continue;let p=g.messageId||g.id;if(!p)continue;let f=g.type==="user"&&!!g.clientMessageId&&p===g.clientMessageId,h=g.type==="assistant"&&g.isStreaming===!0;if(!f&&!h)continue;let v=g.type,y=g.turnId||g.threadId||p,m=g.speakerVpId||g.vpId||null,S=mi({role:v,messageId:p,clientMessageId:g.clientMessageId,turnId:y,speakerVpId:m}),w=l.get(S),k=(typeof g.content=="string"?g.content:"").replace(/\s+/g," ").trim();l.set(S,{...w,agentId:n,sessionId:s,messageId:Number.isFinite(w?.seq)?w.messageId:p,...g.clientMessageId?{clientMessageId:g.clientMessageId}:{},turnId:y,role:v,speakerVpId:m||w?.speakerVpId||null,timestamp:g.timestamp||g.ts||w?.timestamp||null,snippet:k.length>180?`${k.slice(0,180).trimEnd()}\u2026`:k||w?.snippet||""}),w||(c+=1)}let d=g=>{let p=typeof g=="number"?g:Date.parse(g||"");return Number.isFinite(p)?p:0},u=Array.from(l.values()).sort((g,p)=>Number.isFinite(g.seq)&&Number.isFinite(p.seq)?g.seq-p.seq:d(g.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=Le(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=Vw(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(),g=mi({role:i,messageId:o,clientMessageId:e.clientMessageId,turnId:l,speakerVpId:c}),p=new Map((r.results||[]).map(S=>[mi(S),S])),f=p.get(g);p.set(g,{...f,agentId:t,sessionId:s,messageId:o,...e.clientMessageId?{clientMessageId:e.clientMessageId}:{},turnId:l,seq:a,role:i,speakerVpId:c,timestamp:e.timestamp||e.ts||f?.timestamp||null,snippet:u.length>180?`${u.slice(0,180).trimEnd()}\u2026`:u||f?.snippet||""});let h=50,v=Array.from(p.values()).sort((S,w)=>(S.seq||0)-(w.seq||0)),y=v.length>h,m=v.slice(-h);return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[n]:{...r,results:m,hasMore:r.hasMore||y,nextBeforeSeq:y&&Number.isFinite(m[0]?.seq)?m[0].seq:r.nextBeforeSeq,totalCount:Number.isFinite(r.totalCount)&&!f?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=Le(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=$e(this,e);return this.currentView==="yeaft"&&this.yeaftActiveSessionFilter===e&&r===t?this.loadYeaftHistoryOutline({force:!0,targetSessionId:e,targetAgentId:t}):!0},loadYeaftHistoryOutline({append:e=!1,force:t=!1,targetSessionId:s=null,targetAgentId:n=null,retryAttempt:r=0}={}){if(this.currentView!=="yeaft"&&!s)return!1;let i=s||this.yeaftActiveSessionFilter||null,o=n||$e(this,i);if(!i||!o)return!1;let a=Le(o,i),l=this.getYeaftHistoryOutlineState(i,o);if(!e&&l.loaded&&!t)return!0;if(e&&(!l.hasMore||!Number.isFinite(l.nextBeforeSeq))||l.loading)return!1;if(!St(this,o,"session_history_outline"))return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[a]:{...l,error:"unsupported",loading:!1}},!1;let c=`history_outline_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,d={...l,requestId:c,agentId:o,sessionId:i,loading:!0,requestAppend:e,refreshPending:!1,retryAttempt:r,error:null};this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[a]:d};let u=this._yeaftHistoryOutlineTimeouts[a];u&&clearTimeout(u);let g=setTimeout(()=>{let h=this.yeaftHistoryOutlineBySession[a];if(h?.requestId!==c)return;let v={...this._yeaftHistoryOutlineTimeouts};delete v[a],this._yeaftHistoryOutlineTimeouts=v;let y=h.refreshPending===!0;this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[a]:{...h,requestId:null,loading:!1,requestAppend:!1,loaded:y?!1:h.loaded,refreshPending:!1,error:y?null:"timeout"}},y&&this.loadYeaftHistoryOutline({force:!0,targetSessionId:i,targetAgentId:o})},1e4);this._yeaftHistoryOutlineTimeouts={...this._yeaftHistoryOutlineTimeouts,[a]:g};let p=xn(),f={type:"yeaft_load_history_outline",agentId:o,sessionId:i,requestId:c,perfTraceId:p,limit:50,...e&&l.nextCursor?{cursor:l.nextCursor}:{},...e&&!l.nextCursor&&Number.isFinite(l.nextBeforeSeq)?{beforeSeq:l.nextBeforeSeq}:{}};return kt(this,{traceId:p,phase:"history_outline.request_send",agentId:o,sessionId:i,messageType:f.type,bytes:JSON.stringify(f).length,detail:{append:e,limit:f.limit}}),this.sendWsMessage(f),!0},handleYeaftHistoryOutline(e){if(!e?.agentId||!e?.sessionId)return!1;let t=Le(e.agentId,e.sessionId),s=this.yeaftHistoryOutlineBySession[t];if(!s||e.requestId!==s.requestId)return!1;let n=this._yeaftHistoryOutlineTimeouts[t];n&&clearTimeout(n);let r={...this._yeaftHistoryOutlineTimeouts};delete r[t],this._yeaftHistoryOutlineTimeouts=r;let i=Number.isInteger(s.retryAttempt)?s.retryAttempt:0;if(Tw.has(e.error)&&i<Tg.length){let g=Tg[i],p=setTimeout(()=>{let f=this.yeaftHistoryOutlineBySession[t];if(f?.requestId!==e.requestId||f.loading!==!0)return;let h={...this._yeaftHistoryOutlineTimeouts};delete h[t],this._yeaftHistoryOutlineTimeouts=h;let v=f.refreshPending===!0;this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[t]:{...f,requestId:null,loading:!1,refreshPending:!1}},this.loadYeaftHistoryOutline({append:v?!1:s.requestAppend===!0,force:!0,targetSessionId:e.sessionId,targetAgentId:e.agentId,retryAttempt:i+1})},g);return this._yeaftHistoryOutlineTimeouts={...this._yeaftHistoryOutlineTimeouts,[t]:p},!0}let o=Array.isArray(e.results)?e.results.map(g=>({...g,agentId:e.agentId,sessionId:e.sessionId})):[],a=s.requestAppend?[...s.results||[],...o]:o,l=new Map(a.filter(g=>g?.messageId).map(g=>[mi(g),g])),c=Array.from(l.values()).sort((g,p)=>(g.seq||0)-(p.seq||0)),d=s.refreshPending===!0;this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[t]:{...s,requestId:null,loading:!1,requestAppend:!1,refreshPending:!1,loaded:d?!1:!e.error,results:c,hasMore:!!e.hasMore,nextBeforeSeq:Number.isFinite(e.nextBeforeSeq)?e.nextBeforeSeq:null,nextCursor:e.nextCursor&&typeof e.nextCursor=="object"?e.nextCursor:null,totalCount:Number.isFinite(e.totalCount)?e.totalCount:s.totalCount,error:d?null:e.error||null}};let u=this._yeaftHistoryResultRefreshByRequestId?.[e.requestId];if(u?.source==="outline"){clearTimeout(u.timeout);let{[e.requestId]:g,...p}=this._yeaftHistoryResultRefreshByRequestId;this._yeaftHistoryResultRefreshByRequestId=p;let f=c.find(h=>u.messageId&&h?.messageId===u.messageId||u.entryId&&h?.entryId===u.entryId);u.resolve(f||null)}return d&&this.loadYeaftHistoryOutline({force:!0,targetSessionId:e.sessionId,targetAgentId:e.agentId}),!0},searchYeaftHistory(e,{append:t=!1,senderKey:s=""}={}){if(this.currentView!=="yeaft")return!1;let n=typeof e=="string"?e.trim():"",r=typeof s=="string"&&(s==="user"||s.startsWith("vp:"))?s.slice(0,103):"",i=this.yeaftActiveSessionFilter||null,o=$e(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(!St(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=xn(),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 kt(this,{traceId:c,phase:"history_search.request_send",agentId:o,sessionId:i,messageType:d.type,bytes:JSON.stringify(d).length,detail:{append:t,limit:d.limit,queryLength:Array.from(n).length,senderFilter:!!r}}),this.sendWsMessage(d),!0},handleYeaftHistorySearchResult(e){let t=this.yeaftHistorySearchState||{};if(!e||e.requestId!==t.requestId||e.agentId!==t.agentId||e.sessionId!==t.sessionId||e.query!==t.query||(e.senderKey||"")!==t.senderKey)return!1;this._yeaftHistorySearchTimeout&&(clearTimeout(this._yeaftHistorySearchTimeout),this._yeaftHistorySearchTimeout=null);let s=Array.isArray(e.results)?e.results.map(o=>({...o,agentId:e.agentId,sessionId:e.sessionId})):[],n=new Map((t.results||[]).map(o=>[Gr(o),o]));for(let o of s)(o?.entryId||o?.messageId)&&n.set(Gr(o),o);let r=Array.from(n.values());this.yeaftHistorySearchState={...t,loading:!1,results:r,hasMore:!!e.hasMore,nextBeforeSeq:Number.isFinite(e.nextBeforeSeq)?e.nextBeforeSeq:null,nextCursor:e.nextCursor&&typeof e.nextCursor=="object"?e.nextCursor:null,error:e.error||null};let i=this._yeaftHistoryResultRefreshByRequestId?.[e.requestId];if(i){clearTimeout(i.timeout);let{[e.requestId]:o,...a}=this._yeaftHistoryResultRefreshByRequestId;this._yeaftHistoryResultRefreshByRequestId=a;let l=r.find(c=>i.messageId&&c?.messageId===i.messageId||i.entryId&&c?.entryId===i.entryId);i.resolve(l||null)}return!0},reloadYeaftHistoryResult(e){let t=e?.sessionId||null,s=e?.agentId||null,n=this.yeaftHistorySearchState||{},i=n.agentId===s&&n.sessionId===t&&(Array.from(String(n.query||"").trim()).length>0||!!n.senderKey);if(!t||!s)return Promise.resolve(null);let o=i&&n.query||"",a=i&&n.senderKey||"",l=null,c=!1;if(i)c=this.searchYeaftHistory(o,{senderKey:a}),l=this.yeaftHistorySearchState?.requestId||null;else{let d=Le(s,t),u=this.yeaftHistoryOutlineBySession?.[d]||null;u?.loading===!0&&u.requestAppend!==!0&&u.requestId?(c=!0,l=u.requestId):(c=this.loadYeaftHistoryOutline({force:!0,targetSessionId:t,targetAgentId:s}),l=this.yeaftHistoryOutlineBySession?.[d]?.requestId||null)}return!c||!l?Promise.resolve(null):new Promise(d=>{let u=setTimeout(()=>{if(this._yeaftHistoryResultRefreshByRequestId?.[l]?.resolve!==d)return;let{[l]:p,...f}=this._yeaftHistoryResultRefreshByRequestId;this._yeaftHistoryResultRefreshByRequestId=f,d(null)},1e4);this._yeaftHistoryResultRefreshByRequestId={...this._yeaftHistoryResultRefreshByRequestId||{},[l]:{agentId:s,sessionId:t,query:o,senderKey:a,source:i?"search":"outline",messageId:e?.messageId||null,entryId:e?.entryId||null,resolve:d,timeout:u}}})},loadYeaftHistoryWindow(e,{validateCached:t=!1}={}){let s=e?.sessionId||this.yeaftActiveSessionFilter||null,n=e?.agentId||$e(this,s),r=Gr(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=Ct(this,s,n);if((this.messagesMap[i]||[]).some(h=>(h?.sessionId??h?.groupId??null)===s&&h?.historyEntryId===e.entryId&&h?.historyIndexGeneration===e.indexGeneration)&&!t)return Promise.resolve(!0);let a=Le(n,`${s}:${r}:generation:${e.indexGeneration}`),l=this._yeaftHistoryWindowPendingByKey||{};if(l[a]?.promise)return l[a].promise;let c=`history_window_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,d=null,u=null,g=new Promise(h=>{d=h});Object.defineProperty(g,"error",{get:()=>u});let p=h=>{u=h||null},f=setTimeout(()=>{if(this._yeaftHistoryWindowPendingByKey?.[a]?.requestId!==c)return;let{[a]:v,...y}=this._yeaftHistoryWindowPendingByKey;this._yeaftHistoryWindowPendingByKey=y,d(!1)},1e4);return this._yeaftHistoryWindowPendingByKey={...l,[a]:{requestId:c,agentId:n,sessionId:s,entryId:e.entryId||null,indexGeneration:Number.isFinite(e.indexGeneration)?e.indexGeneration:null,entryStartSeq:Number.isFinite(e.entryStartSeq)?e.entryStartSeq:null,resultId:r,messageId:e.messageId,prefetch:!t,validateCached:!!t,setError:p,resolve:d,timeout:f,promise:g}},this.sendWsMessage({type:"yeaft_load_history_window",agentId:n,sessionId:s,requestId:c,prefetch:!t,...e.entryId?{entryId:e.entryId}:{},...Number.isFinite(e.indexGeneration)?{indexGeneration:e.indexGeneration}:{},...Number.isFinite(e.entryStartSeq)?{entryStartSeq:e.entryStartSeq}:{},anchorMessageId:e.messageId,anchorSeq:e.seq,beforeTurns:5,afterTurns:5,maxRows:200,maxBytes:512*1024}),g},beginYeaftHistoryReveal(e){let t=e?.sessionId||null,s=e?.agentId||null,n=Ct(this,t,s);if(!t||!s||!n)return null;let r=Le(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=Ct(this,r,i);if(!n||!r||!i||!o||!e?.messageId)return this.finishYeaftHistoryReveal(n),!1;let a=e,l=this.loadYeaftHistoryWindow(a,{validateCached:!0}),c=await l;if(!c&&l.error==="stale_result"){let u=await this.reloadYeaftHistoryResult(a);u&&(a=u,l=this.loadYeaftHistoryWindow(a,{validateCached:!0}),c=await l)}if(!c)return this.finishYeaftHistoryReveal(n),!1;if(this.currentView!=="yeaft"||this.yeaftActiveSessionFilter!==r||$e(this,r)!==i||Ct(this,r,i)!==o)return this.finishYeaftHistoryReveal(n),!1;let d=this.revealYeaftMessage(r,a.messageId,o,i);return(!d||s)&&this.finishYeaftHistoryReveal(n),d},pendingYeaftHistoryWindow(e){let s=Object.entries(this._yeaftHistoryWindowPendingByKey||{}).find(([,i])=>i?.requestId===e?.requestId);if(!s)return null;let[n,r]=s;return e.agentId!==r.agentId||e.sessionId!==r.sessionId||e.entryId&&r.entryId&&e.entryId!==r.entryId||Number.isFinite(e.indexGeneration)&&Number.isFinite(r.indexGeneration)&&e.indexGeneration!==r.indexGeneration?null:{pendingKey:n,pending:r}},handleYeaftHistoryWindow(e,t=null){let s=this.pendingYeaftHistoryWindow(e);if(!s)return!1;let{pendingKey:n,pending:r}=s;r.prefetch===!0&&e.prefetch!==!0&&r.validateCached!==!0&&(e.prefetch=!0),clearTimeout(r.timeout);let{[n]:i,...o}=this._yeaftHistoryWindowPendingByKey;this._yeaftHistoryWindowPendingByKey=o;let a=!e.error&&!!t&&this.isYeaftMessageCached(r.sessionId,r.messageId,t,r.agentId);return r.setError?.(e.error||null),r.resolve(!!a),!!a},createYeaftSession({displayName:e,vpIds:t,defaultVpId:s,workDir:n,agentId:r}={}){let i=Array.isArray(t)?t.slice():[],o=s&&i.includes(s)?s:i[0]||null,a=(e||"").trim(),l=(n||"").trim(),c={roster:i,defaultVpId:o};return a&&(c.name=a),l&&(c.workDir=l),this.sessionCrudRequest("create",c,{agentId:r})},handleYeaftOutput(e){if(!e)return;let t=e.agentId||this.yeaftAgentId||this.currentAgent||null,s=e.conversationId||e.event?.conversationId||null,n=nr(this,t,s);if(e.data&&n){if(e.data.type!=="result")return;let a=Uu(this,t,s);if(!a)return;let l=e.turnId?$n(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&&(kt(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=$s(this,a,e.conversationId);if(l){let d=rc(e,e.turnId||"session");for(let u of["retry","retrying","thinking"])tr(this,l,`${u}:${d}`);e.data?.tool_use_result&&tr(this,l,`tool:${d}`)}let c=e.turnId?$n(this,e.agentId||null,e.turnId):"";if(c&&this.activeVpTurns?.[c]?.retryAttempt){let{retryAttempt:d,retryMax:u,retryDelayMs:g,retryReason:p,retryRecoveryMode:f,...h}=this.activeVpTurns[c];this.activeVpTurns={...this.activeVpTurns,[c]:h}}if(l){let d=e.sessionId??e.groupId??null,u=Og(this,d,a),g=a&&this.yeaftConversationIdsByAgent?this.yeaftConversationIdsByAgent[a]:null,p=as(this,a);p&&p.targetConversationId!==l?ri(this,a,l):!p&&g&&g!==l&&!String(g).startsWith("yeaft-local-")&&(ls(this,g,l,{removeSource:g!==this.yeaftConversationId}),si(this,a,g,l)),kl(this,a,l);let f=as(this,a,l),h=f?.sourceConversationId||g,v=!u&&h===this.yeaftConversationId;if(this.currentView==="yeaft"&&a&&h&&h!==l){let k=!v&&(!!f||String(h).startsWith("yeaft-local-"));ls(this,h,l,{removeSource:k}),v?yo(this,a,h,l):k&&ni(this,a,l)}a&&(this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[a]:l}),(u||!this.yeaftConversationId)&&(this.yeaftConversationId=l),u&&(this.activeConversations=[l]),this.messagesMap[l]||(this.messagesMap[l]=[]);let y=this._currentYeaftAgentId,m=this._currentYeaftSessionId,S=this._currentYeaftVpId,w=this._currentYeaftTurnId,b=this._currentYeaftThreadId;a&&(this._currentYeaftAgentId=a),d!=null&&(this._currentYeaftSessionId=d),e.vpId&&(this._currentYeaftVpId=e.vpId),e.turnId&&(this._currentYeaftTurnId=e.turnId),e.threadId&&(this._currentYeaftThreadId=e.threadId);try{let k=typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();if(this.handleAssistantOutputFrame(l,e.data,a),e.perfTraceId){let ne=typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();kt(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:ne-k}),wo(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 P=e.data,x=P?.message?.id||P?.id||null,K=qw(x),D=Array.isArray(P?.message?.content)?P.message.content:[],j=D.some(ne=>ne?.type==="tool_use"),$=!!P?.tool_use_result||D.some(ne=>ne?.type==="tool_result");if(d){let ne=!$&&!Fw(this,l,d)&&(P?.type==="user"||P?.type==="assistant"&&!j)?K:null,L=Le(e.agentId||null,d),C=this.yeaftSessionHistoryState[L]||{},M=Number.isFinite(C.latestSeq)?C.latestSeq:-1;ne!==null&&ne>M&&(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[L]:{...C,latestSeq:ne}})}}finally{this._currentYeaftAgentId=y,this._currentYeaftSessionId=m,this._currentYeaftVpId=S,this._currentYeaftTurnId=w,this._currentYeaftThreadId=b}}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=$s(this,e.agentId||null,e.conversationId);if(o){let a=rc(i);r.type==="tool_start"?ti(this,o,`tool:${a}`):r.type==="tool_end"?tr(this,o,`tool:${a}`):r.type==="llm_retry"?ti(this,o,`retry:${a}`):r.type==="vp_async_task_wait_start"?ti(this,o,`async-wait:${a}`):r.type==="vp_async_task_wait_end"&&tr(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=$s(this,e.agentId||null,e.conversationId);if(!a||!r.requestId)break;let l=Rg(e,r,a),c=()=>{let d=this.messagesMap[a]||[],u=Eg(d,l,a);if(u){if(u.askAnswered||u.askExpired)return!0;u.toolName="AskUserQuestion",r.toolCallId&&!u.toolId&&(u.toolId=r.toolCallId),u.agentId=l.agentId||u.agentId||null;for(let h of["sessionId","vpId","turnId","threadId"])l[h]&&(u[h]=l[h]);u.hasResult=!1,u.askRequestId=r.requestId,u.askQuestions=r.questions||[],u.askCreatedAt=r.createdAt||null,u.askExpiresAt=r.expiresAt||null,u.isHistory=!1;let f=Dg(this,l);return f&&tc(u,f),this.messagesMap={...this.messagesMap,[a]:d.slice()},!0}if(!r.replay)return!1;let g={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=Dg(this,l);return p&&tc(g,p),d.push(g),this.messagesMap={...this.messagesMap,[a]:d.slice()},!0};if(!c()){let d=0,u=setInterval(()=>{d+=1,(c()||d>=10)&&clearInterval(u)},200)}break}case"ask_user_answered":case"ask_user_answer_rejected":case"ask_user_expired":{let a=$s(this,e.agentId||null,e.conversationId);if(!a||!r.requestId)break;let l=this.messagesMap[a]||[],c=Rg(e,r,a),d=Eg(l,c,a);if(!d){Ow(this,c,r);break}tc(d,r),this.messagesMap={...this.messagesMap,[a]:l.slice()};break}case"session_ready":{let a=r.conversationId,l=e.agentId||this.currentAgent;if(nr(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,g=c||u,p=r.sessionId||e.sessionId||null,f=Og(this,p,l),h=as(this,l);h&&h.targetConversationId!==a?ri(this,l,a):!h&&c&&c!==a&&!String(c).startsWith("yeaft-local-")&&si(this,l,c,a),kl(this,l,a);let y=as(this,l,a)?.sourceConversationId||g,m=!f&&y===this.yeaftConversationId;if(y&&y!==a){let P=!m;ls(this,y,a,{removeSource:P}),m?yo(this,l,y,a):P&&ni(this,l,a)}else this.messagesMap[a]||(this.messagesMap[a]=[]);l&&(this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[l]:a},this.cacheYeaftAgentStatus(l,r,{allowBootstrapCatalog:f})),f&&(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[P,x]of Object.entries(this.yeaftActiveTasksBySession||{})){let K=Object.fromEntries(Object.entries(x||{}).filter(([,j])=>j?.id&&j.status==="running"&&j.agentId&&j.agentId!==l)),D=nc(K);Object.keys(D).length>0&&(w[P]=D)}for(let P of S){if(!P?.id||!P.sessionId||P.status!=="running")continue;let x=Le(l,P.sessionId);w[x]={...w[x]||{},[P.id]:{...P,agentId:l}}}this.yeaftActiveTasksBySession=w,f&&(r.yeaftDir&&(this.yeaftYeaftDir=r.yeaftDir),this.yeaftStatus={skills:r.skills,mcpServers:r.mcpServers,tools:r.tools,multiVp:!!r.multiVp}),(f||!this.yeaftConversationId)&&(this.yeaftConversationId=a),f&&(this.activeConversations=[a]);let b=e.agentId||this.currentAgent||null,k=b||"__current__";this._yeaftVpSubscribedAgentKey!==k&&(this._yeaftVpSubscribedAgentKey=k,this.sendWsMessage(b?{type:"yeaft_vp_subscribe",agentId:b}:{type:"yeaft_vp_subscribe"}));break}case"yeaft_status":{let a=e.agentId||this.currentAgent;a&&this.cacheYeaftAgentStatus(a,r);break}case"context_usage":break;case"turn_open":{if(!r.turnId)break;let a={turnId:r.turnId,userPrompt:r.userPrompt||"",vpId:r.vpId||e.vpId||null,sessionId:r.sessionId||e.sessionId||null,openedAt:r.at||Date.now(),closedAt:null,totalMs:0,inputTokens:0,outputTokens:0,totalTokens:0,loopCount:0,memoryLoaded:null,memoryLoadedMeta:null,memoryAdjust:null,tools:[],detailsLoaded:!0};this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:a};let l=$n(this,e.agentId||null,r.turnId),c=this.activeVpTurns?.[l];c&&Number.isFinite(r.at)&&(this.activeVpTurns={...this.activeVpTurns,[l]:{...c,startedAt:r.at}}),this.yeaftDebugTurnOrder.includes(r.turnId)||(this.yeaftDebugTurnOrder=[...this.yeaftDebugTurnOrder,r.turnId]);break}case"turn_close":{if(!r.turnId)break;let a=this.yeaftDebugTurnsById[r.turnId];if(!a)break;this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...a,closedAt:Date.now(),...Number.isFinite(r.totalMs)?{totalMs:r.totalMs}:{},...Number.isFinite(r.inputTokens)?{inputTokens:r.inputTokens}:{},...Number.isFinite(r.outputTokens)?{outputTokens:r.outputTokens}:{},...Number.isFinite(r.totalTokens)?{totalTokens:r.totalTokens}:{},loopCount:r.loopCount||a.loopCount||0,...typeof r.model=="string"&&r.model?{model:r.model}:{},...typeof r.effort=="string"&&r.effort?{effort:r.effort}:{}}};break}case"memory_used":{if(!r.turnId)break;let a=this.yeaftDebugTurnsById[r.turnId];if(!a)break;this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...a,memoryLoaded:Array.isArray(r.loaded)?r.loaded:[],memoryLoadedMeta:r.meta||null}};break}case"dream_memory_loaded":{let a=Array.isArray(r.resident)?r.resident:[];if(r.turnId){let c=this.yeaftDebugTurnsById[r.turnId];c&&(this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...c,dreamMemoryLoaded:a,dreamMemoryLoadedInto:r.loadedInto||"system_prompt.memory"}})}let l={};for(let c of a){let d=c&&typeof c.scope=="string"?c.scope:null,u=d&&/^sessions\/[^/]+$/.test(d)?d:d&&/^group\/[^/]+$/.test(d)?`sessions/${d.slice(6)}`:null;u&&(l[u]={scope:u,sourceScope:d,sessionId:u.slice(9),turnId:r.turnId||null,vpId:r.vpId||null,loadedInto:r.loadedInto||"system_prompt.memory",summary:c.summary||"",truncated:!!c.truncated,receivedAt:Date.now()})}Object.keys(l).length>0&&(this.yeaftDreamPromptLoads={...this.yeaftDreamPromptLoads,...l});break}case"memory_adjust":{if(!r.turnId)break;let a=this.yeaftDebugTurnsById[r.turnId];if(!a)break;this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...a,memoryAdjust:{sessionKey:r.sessionKey||null,added:r.added||0,evicted:r.evicted||0,skipped:r.skipped||0,reason:r.reason||""}}};break}case"tool_exec":{if(this.scheduleYeaftDebugDetailRefresh(e,r.turnId),!r.turnId)break;let a=this.yeaftDebugTurnsById[r.turnId];if(!a)break;let l=[...a.tools||[],{loopNumber:r.loopNumber||0,callId:r.callId||null,name:r.name||"?",durationMs:r.durationMs||0,isError:!!r.isError}];this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...a,tools:l}};break}case"loop":{if(this.scheduleYeaftDebugDetailRefresh(e,r.turnId),this.yeaftDebugLoops.push({turnId:r.turnId||null,loopNumber:r.loopNumber||0,model:r.model,usage:r.usage||{inputTokens:0,outputTokens:0,totalTokens:0},latencyMs:r.latencyMs,ttfbMs:r.ttfbMs,stopReason:r.stopReason,at:typeof r.at=="number"?r.at:null,sessionId:e.sessionId||null,vpId:e.vpId||r.vpId||null}),this.yeaftDebugLoops.length>Fg){let a=ig({loops:this.yeaftDebugLoops,turnsById:this.yeaftDebugTurnsById,turnOrder:this.yeaftDebugTurnOrder,maxLoops:Math.max(Fg,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=$n(this,e.agentId||null,e.turnId),l=this.activeVpTurns?.[a];if(!l)break;let c=r.reason==="stream_idle_timeout"?"stream_idle_timeout":"transient_error";this.activeVpTurns={...this.activeVpTurns,[a]:{...l,retryAttempt:r.attempt||0,retryMax:r.maxRetries||0,retryDelayMs:r.delayMs||0,retryReason:c,retryRecoveryMode:r.recoveryMode||"restart"}};break}case"recall":case"fallback":case"thinking_delta":break;case"reflection":{let a=$s(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]||[],g=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:g,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||$e(this,a.sessionId),c=Le(l,a.sessionId),d={...a,agentId:l},u={...this.yeaftActiveTasksBySession},g={...u[c]||{}};a.status==="running"?g[a.id]=d:delete g[a.id];let p=nc(g);if(Object.keys(p).length>0?u[c]=p:delete u[c],this.yeaftActiveTasksBySession=u,a.status!=="running"){let{[sc(l,a.sessionId,a.id)]:f,...h}=this.yeaftStoppingTasksById||{};this.yeaftStoppingTasksById=h}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||$e(this,l);if(a&&l&&r.success===!1){let{[sc(c,l,a)]:u,...g}=this.yeaftStoppingTasksById||{};this.yeaftStoppingTasksById=g}let d=r.task;if(d?.id&&d.sessionId){let u=Le(c,d.sessionId),g={...this.yeaftActiveTasksBySession},p={...g[u]||{}};d.status==="running"?p[d.id]={...d,agentId:c}:delete p[d.id];let f=nc(p);Object.keys(f).length>0?g[u]=f:delete g[u],this.yeaftActiveTasksBySession=g}break}case"sub_agent_event":{let a=$s(this,e.agentId||null,e.conversationId)||"unknown",l=r.agentId;if(!l)break;let c=r.payload||{},d=`${a}:${l}`,u=this.yeaftSubAgentCards[d],g=this.messagesMap[a]||[],p=u?u.anchorMsgId:g.length>0&&g[g.length-1].id||null,f=u?u.anchorOrder:g.length,h=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:f,updatedAt:Date.now(),sessionId:e.sessionId||null};switch(c.agentName&&!h.agentName&&(h.agentName=c.agentName),c.type){case"sub_agent_status":h.status=c.status||h.status,c.error&&(h.error=c.error);break;case"text_delta":break;case"tool_use":case"tool_call":h.toolCallCount=Number(h.toolCallCount||0)+1;break;case"tool_start":break;case"tool_result":case"tool_end":break;case"sub_agent_turn_end":{h.turns+=1;let v=typeof c.content=="string"?c.content.trim():"";v&&(h.text=h.text?`${h.text}
|
|
8
|
+
`))}function Gl(e=[]){let t=(o,a)=>JSON.stringify([o.sessionId||o.groupId||"",o.speakerVpId||o.vpId||"",o.turnId||"",a]),s=new Map;for(let o of e)o.type==="tool-use"&&o.toolId&&s.set(t(o,o.toolId),o);let n=new Map,r=new Set;for(let o of e){if(o.type!=="chat-image"||!o.sourceToolCallId)continue;let a=s.get(t(o,o.sourceToolCallId));a&&(n.has(a)||n.set(a,[]),n.get(a).push(o),r.add(o))}if(r.size===0)return e;for(let o of n.values())o.sort((a,l)=>(a.sourceImageIndex??0)-(l.sourceImageIndex??0));let i=[];for(let o of e)r.has(o)||(i.push(o),n.has(o)&&i.push(...n.get(o)));return i}function pi(e){return JSON.stringify([e.assetId||e.id,e.sourceToolCallId||"",e.turnId||"",e.sourceImageIndex??""])}function kg(e,t=[]){let s=Array.isArray(e?.imageMsgs)?e.imageMsgs:[],n=new Map(t.map(c=>[c.key,c])),r=new Map(s.map(c=>[pi(c),c])),i=new Set,o=[],a=(c,d)=>{if(!d||i.has(d))return;i.add(d);let u=o[o.length-1];c!=="result"&&u?.kind===c?u.items.push(d):o.push({kind:c,key:`${c}:${c==="images"?pi(d):d.key||o.length}`,items:[d]})},l=0;for(let c of Gl(Array.isArray(e?.messages)?e.messages:[]))if(c.type==="assistant"&&zl(c.content)){let d=c.messageId||c.id||`response-${l}`,u=n.get(d);u&&a(u.kind==="result"?"result":"progress",u),l+=1}else c.type==="chat-image"&&a("images",r.get(pi(c)));for(let c of t)a(c.kind==="result"?"result":"progress",c);for(let c of s)a("images",c);return o}function _o(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||Kl.has(l?.status)||Kl.has(l?.turnEndReason)||Kl.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 Kl,gi=V(()=>{Kl=new Set(["aborted","errored","error","cancelled","canceled"])});function es(e){return typeof e=="string"?e.trim():""}function lt(e){let t=es(e?.runtimeProvider),s=es(e?.agentId),n=es(t==="work-center"?e?.workItemId:e?.sessionId);return!t||!s||!n?"":[t,s,n].map(r=>encodeURIComponent(r)).join(":")}function vw(e){let t=0xcbf29ce484222325n;for(let s of String(e||""))t^=BigInt(s.codePointAt(0)),t=BigInt.asUintN(64,t*0x100000001b3n);return t.toString(16).padStart(16,"0")}function Es(e,t){let s=es(e),n=es(t);return!s||!n?"":`${s}@${vw(n)}`}function Dn(e,t="main"){if(!e)return"";let s=["main","files-folder-picker","git-folder-picker"].includes(t)?t:"main";return s==="main"?`_workbench:${e}`:`_workbench:${e}:${s}`}function us(e,t){let s=es(e?.conversationId);if(!t||!s)return null;if(s===Dn(t))return"main";for(let n of["files-folder-picker","git-folder-picker"])if(s===Dn(t,n))return n;return null}function cr(e,t){let s=(n={})=>{let r={runtimeProvider:es(t.runtimeProvider),agentId:es(t.agentId),...t.runtimeProvider==="work-center"?{workItemId:es(t.workItemId)}:{sessionId:es(t.sessionId)}},i="main";n.conversationId==="_folder_picker"?i="files-folder-picker":n.conversationId==="_git_folder_picker"&&(i="git-folder-picker");let o={...n,agentId:r.agentId,workbenchRoute:r,workbenchRouteKey:t.routeKey,workbenchWorkspaceGeneration:t.workspaceGeneration,workbenchScope:i,conversationId:Dn(t.routeKey,i)};return(t.workspaceLocked===!0||!Object.hasOwn(o,"workDir")&&t.workDir)&&(o.workDir=t.workDir),e.sendWsMessage(o)};return new Proxy(e,{get(n,r,i){return r==="currentAgent"?t.agentId||null:r==="currentConversation"?t.conversationId||t.sessionId||null:r==="effectiveWorkDir"?t.workDir||"":r==="activeSessionRoute"?{runtimeProvider:t.runtimeProvider,agentId:t.agentId,...t.runtimeProvider==="work-center"?{workItemId:t.workItemId}:{sessionId:t.sessionId}}:r==="sendWsMessage"?s:Reflect.get(n,r,i)},set(n,r,i,o){return Reflect.set(n,r,i,o)}})}function dr(e,t,s=""){return t?(e?.workbenchRouteKey?e.workbenchRouteKey===t:us(e,t)!==null)?s?e?.workbenchWorkspaceGeneration===s:!0:!1:!0}var ps=V(()=>{});function Yl(e){return e?.type==="user"&&typeof e.content=="string"&&e.content.trim()}function Ql(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 Xl(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 Zl(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(Yl(i)||i.type==="system"||i.type==="error"){n(r),s={start:r,kind:i.type};continue}if(!Ql(i)){s||(s={start:r,kind:"other"});continue}(!s||s.kind==="assistant"&&Xl(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 Sg(e,t){return!e||e._historyWindowPrefetched===!0?!1:t?(e.sessionId??e.groupId)===t:!0}function Jl(e=[],t=null,s=fi,n=null){let r=Math.max(1,Number.isFinite(s)?Math.floor(s):fi),i=[],o=[],a=null,l=d=>{a&&(o.push({start:a.start,end:d,kind:a.kind}),a=null)};for(let d of e){if(!Sg(d,t))continue;let u=i.length;if(i.push(d),Yl(d)||d.type==="system"||d.type==="error"){l(u),a={start:u,kind:d.type};continue}if(!Ql(d)){a||(a={start:u,kind:"other"});continue}(!a||a.kind==="assistant"&&Xl(a,d))&&(l(u),a={start:u,kind:"assistant",turnId:d.turnId||"",speakerVpId:d.speakerVpId||d.vpId||""}),a.lastTurnId=d.turnId||a.lastTurnId||"",a.speakerVpId=a.speakerVpId||d.speakerVpId||d.vpId||""}if(l(i.length),o.length<=r)return i;let c=o[o.length-r];return i.slice(c.start)}function Cg(e=[],t=null,s=fi){let n=Math.max(1,s||fi),r=0,i=null,o=()=>i?(i=null,r+=1,r>n):!1;for(let a of e)if(Sg(a,t)){if(Yl(a)||a.type==="system"||a.type==="error"){if(o())return!0;i={kind:a.type};continue}if(!Ql(a)){i||(i={kind:"other"});continue}if(!i||i.kind==="assistant"&&Xl(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 tn(){return fi}function hi(){return yw}var fi,yw,Ig=V(()=>{fi=Number.POSITIVE_INFINITY,yw=20});function ww(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=fs();for(let r of n?.sessionList||[])r?.id===t&&r?.agentId&&s.add(r.agentId)}return s}function Bg(e,t){let s=ww(e,t);return s.size===1?s.values().next().value:null}function Lo(e,t,s){return!!s&&Bg(e,t)===s}function Dt(e,t,s){return!e||e.sessionId!==t?!1:s?e.agentId===s:!e.agentId}function Ag(e,t,s=null){if(!t)return!1;let n=s||$e(e,t),r=_s(n,t);if(r&&e.yeaftProcessingSessions?.[r]||e.yeaftProcessingSessions?.[t]&&Lo(e,t,n))return!0;for(let i of Object.values(e.activeVpTurns||{}))if(Dt(i,t,n))return!0;for(let i of Object.values(e.vpStatuses||{}))if(Dt(i,t,n)&&vi.has(i?.state))return!0;return!1}function kw(e,t,s,n=null){let r={...e.yeaftProcessingSessions||{}};if(t){let i=_l(t);if(r=Object.fromEntries(Object.entries(r).filter(([o])=>n?o!==_s(t,n):!o.startsWith(i))),n)Lo(e,n,t)&&delete r[n];else for(let o of Object.keys(r))Lo(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||!vi.has(i?.state))continue;let a=_s(t,o)||o;r[a]=!0}return r}function $n(e,t,s){let n=El(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 xg(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=_l(t);e.yeaftProcessingSessions=Object.fromEntries(Object.entries(e.yeaftProcessingSessions||{}).filter(([n])=>!n.startsWith(s)))}function Ds(e,t){return`${e||""}:${t||""}`}function Ew(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 Dw(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 $w(e={}){let t=Mt(e.quote);return{agentId:e.agentId||"",workItemId:e.workItemId||"",target:Ew(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 Rg(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 _g(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 Lw(e,t){return oc.every(s=>!t[s]||e[s]===t[s])}function Hg(e,t){return oc.every(s=>!e[s]||!t[s]||e[s]===t[s])}function Eg(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=>Lw(_g(o,s),t));if(r.length===1)return r[0];let i=n.filter(o=>Hg(_g(o,s),t));return i.length===1?i[0]:null}function Ng(e){return oc.map(t=>e[t]||"").join("\0")}function Ow(e,t,s){let n=Ng(t),r={...e._yeaftAskTerminalEvents||{},[n]:{identity:t,event:s,receivedAt:Date.now()}},i=Object.keys(r);if(i.length>Mg){i.sort((o,a)=>r[o].receivedAt-r[a].receivedAt);for(let o of i.slice(0,i.length-Mg))delete r[o]}e._yeaftAskTerminalEvents=r}function Dg(e,t){let s=e._yeaftAskTerminalEvents||{},n=Ng(t),r=s[n]?n:null;if(!r){let l=Object.entries(s).filter(([,c])=>Hg(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 Fw(e,t,s){return(e.messagesMap?.[t]||[]).some(n=>n?.type==="tool-use"&&n.sessionId===s&&n.hasResult===!1)}function tc(e,t){if(!(t.type==="ask_user_answer_rejected"&&(e.askAnswered||e.askExpired))){if(t.type==="ask_user_answer_rejected"&&t.reason==="agent_unavailable"){e.askError="agent_unavailable",e.askSubmittedAt=0;return}e.askError=t.type==="ask_user_answer_rejected"?t.reason||"unavailable":null,e.askSubmittedAt=null,t.type==="ask_user_answered"?(e.askAnswered=!0,e.selectedAnswers=t.answers||{},e.askExpired=!1):(e.isHistory=!0,e.askExpired=!0,e.askAnswered=!1,e.selectedAnswers=null),e.askPending=!1,e.pendingAnswers=null,e.askSubmitGeneration=null,e.askRequestId=null}}function qw(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 Vw(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 mi(e){return Gr(e)}function sc(e,t,s){return`${_s(e,t)}::${s||""}`}function nc(e){return Object.fromEntries(Object.entries(e||{}).filter(([,t])=>t?.status==="running"))}function fs(){try{return typeof window>"u"?null:window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore()||null}catch{return null}}function $g(e){let t=fs();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 $e(e,t,s=null){if(s)return s;if(t){let n=fs(),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 Lg(e){let t=Ls(e),s=$e(e,t),n=fs()?.sessionById?.(t,s),r=e.currentAgentInfo?.id===s?e.currentAgentInfo:e.agents?.find(o=>o?.id===s),i=o=>typeof o=="string"?o.trim():"";return i(n?.workDir)||i(r?.workDir)}function Bw(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 St(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"&&Bw(n?.version||r?.version,"1.0.166")}function Ls(e,{fallbackDefault:t=!1}={}){if(e?.yeaftActiveSessionFilter)return e.yeaftActiveSessionFilter;let s=fs();return s?.activeSessionId?s.activeSessionId:t?"grp_default":null}function Do(e){let t=e.yeaftDebugSessionFilter;if(t==="__all__")return null;if(t)return t;let s=Ls(e);return s||(fs()?.sessions?.grp_default?"grp_default":null)}function rc(e,t="session"){return[e?.vpId||e?.ownerVpId||"vp",e?.threadId||"thread",e?.turnId||t].join(":")}function $s(e,t,s=null){return s||t&&e?.yeaftConversationIdsByAgent?.[t]||e?.yeaftConversationId||null}function Ct(e,t=null,s=null){let n=t||e?.yeaftActiveSessionFilter||null,r=s||$e(e,n);return(r&&e?.yeaftConversationIdsByAgent?e.yeaftConversationIdsByAgent[r]:null)||e?.yeaftConversationId||null}function Og(e,t,s){if(e?.currentView!=="yeaft")return!1;let n=e?.yeaftActiveSessionFilter||null;if(n&&t!==n)return!1;let r=$e(e,n);return!r||!s||r===s}function $o(e){return{ownerGeneration:Number(e._workCenterActivityOwnerGeneration||0),connectionGeneration:Number(e.chatHistoryConnectionGeneration||0),owner:Un()}}function gs(e,t){return!!t&&t.ownerGeneration===Number(e._workCenterActivityOwnerGeneration||0)&&t.connectionGeneration===Number(e.chatHistoryConnectionGeneration||0)&&(t.owner?Kn(t.owner):!Un())}var bw,st,Eo,ec,Sw,Cw,Iw,Aw,xw,Tg,Tw,vi,Mw,Pw,Mg,Pg,Rw,_w,oc,Fg,ic,qg,Vg,Ln,Oo=V(()=>{Ot();el();rs();io();nl();ol();ei();up();Ip();Gp();Sn();Xs();Xr();eg();Sl();mo();ng();rg();og();ao();Po();Al();en();gi();ps();Xn();lo();Co();Ig();uo();xl();({defineStore:bw}=Pinia),st=Object.freeze([]),Eo=(e,t,s)=>`${e||""}::${t||""}::${s}`;ec=5,Sw=100,Cw=512*1024,Iw=15e3,Aw=1e4,xw=450,Tg=Object.freeze([150,300,600,1e3]),Tw=new Set(["index_building","stale_result"]),vi=new Set(["typing","thinking","retrying","streaming","tool"]),Mw=Object.freeze(["model","availableModels","refreshedAt","catalogRefreshedAt","catalogEpoch","catalogRevision","catalogDigest","refreshStartedAt","refreshReason","refreshError","refreshing"]),Pw=8,Mg=64,Pg=Object.freeze(["running","waiting"]),Rw=100,_w=10;oc=Object.freeze(["conversationId","agentId","requestId","toolCallId","sessionId","vpId","turnId","threadId"]);Fg=1e3,ic=1,qg=5,Vg=200;Ln=bw("chat",{state:()=>({ws:null,authenticated:!1,_hasHandledAgentList:!1,_hasHandledYeaftSessionHydrate:!1,yeaftSessionInventoryCompleteSupported:null,workbenchRouteProtocolSupported:null,workCenterWorkbenchProtocolSupported:null,browserRuntimeProtocolSupported:null,browserRuntimeSetupProtocolSupported:null,browserRuntimeServerEnabled:!1,yeaftSessionHydrateRequestId:null,yeaftSessionHydrateSlices:[],yeaftSessionHydrateError:null,_yeaftSessionInventorySocketQuarantined:!1,sessionKey:null,serverEncryptionRequired:!0,sessionForkPendingKey:null,sessionForkState:"idle",connectionState:"disconnected",reconnectAttempts:0,maxReconnectAttempts:10,reconnectTimer:null,agents:[],currentAgent:null,currentAgentInfo:null,conversations:[],activeConversations:[],currentWorkDir:null,messagesMap:{},_messageUiKeySequence:0,chatSessionState:{},panels:[],activePanelId:null,_pendingPaneId:null,conversationTitles:{},customConversationTitles:{},processingConversations:{},yeaftProcessingSessions:{},yeaftUnreadSessionKeys:{},theme:localStorage.getItem("theme")||(typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),themeFollowSystem:!localStorage.getItem("theme"),locale:localStorage.getItem("locale")||"zh-CN",executionStatusMap:{},sessionHealth:{},historySessions:[],historySessionsLoading:!1,folders:[],foldersLoading:!1,providerModels:[],providerModelsLoading:!1,contextUsage:null,lastUsedAgent:localStorage.getItem("lastUsedAgent")||null,lastUsedSession:JSON.parse(localStorage.getItem("lastUsedSession")||"null"),lastViewedConversation:localStorage.getItem("lastViewedConversation")||null,pendingRecovery:null,recoveryDismissed:!1,sessionLoading:!1,sessionLoadingText:"",agentSwitching:!1,pendingAgentSelection:null,_pendingSessionTitle:null,workbenchExpanded:!1,workbenchMaximized:!1,workbenchPanelStateByRoute:{},sidebarCollapsed:!1,sessionSidebarOpen:!1,compactStatus:null,clearStatus:null,refreshingSession:!1,refreshingSessionMap:{},proxyPorts:{},hasMoreMessages:!1,loadingMoreMessages:!1,chatHistoryRequests:{},chatHistoryRequestIdSupported:null,chatHistoryConnectionGeneration:0,sessionCatalog:[],hiddenSessionCatalog:[],sessionProjects:[],sessionCatalogLoaded:!1,sessionCatalogMutationRequests:{},projectMutationRequests:{},activeCatalogKey:null,openUnifiedSessionCreate:!1,openUnifiedChatCreate:!1,pendingUnifiedSessionSettings:null,pluginCenterOpen:!1,pluginCenterAgentId:null,pluginConfigByAgent:{},pluginCatalogByKey:{},pluginCatalogRequestByKey:{},managedSkillRequestByKey:{},_pluginPending:{},yeaftHasMoreHistory:!1,yeaftLoadingMoreHistory:!1,yeaftOldestLoadedSeq:null,yeaftHistoryLoadError:null,_yeaftManualHistoryRefresh:null,yeaftSessionHistoryState:{},yeaftMessageWindowState:{},yeaftHistoryCacheState:{},yeaftBootstrapMetaLoadingKey:null,yeaftHistoryPerfTraceBySession:{},_yeaftHistoryPrefetchBySession:{},yeaftHistorySearchState:{requestId:null,agentId:null,sessionId:null,query:"",senderKey:"",loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,nextCursor:null,error:null},yeaftHistoryOutlineBySession:{},_yeaftHistoryOutlineTimeouts:{},_yeaftHistorySearchTimeout:null,_yeaftHistoryWindowPendingByKey:{},_yeaftHistoryResultRefreshByRequestId:{},_yeaftHistoryRevealLeases:{},_yeaftHistoryRevealSequence:0,yeaftHistoryFocusWindowBySession:{},_yeaftReconnectCatchUpPending:!1,_yeaftOpenedSessionsLoadedAgents:{},_yeaftAgentSeen:null,slashCommandsMap:{},slashCommandDescriptions:{},inputDrafts:{},mcpServers:{},expertRoleDefinitions:null,llmConfig:{},llmModelDiscovery:{},llmGithubDevice:null,modelsDevRegistry:{registry:{},fetchedAt:0,error:null,loaded:!1},_modelsDevPending:null,yeaftSettings:{},searchSettings:null,telemetrySettings:null,telemetrySettingsByAgent:{},telemetryRequestByAgent:{},workCenterFeatureSettingsByAgent:{},workCenterFeatureRequestByAgent:{},agentOperations:{},agentUpgradeBatch:null,agentDreamState:{},tavilyUsage:null,tavilyUsageLoading:!1,_perfTraceQueue:[],_perfTraceFlushTimer:null,yeaftPerfTraceByMessageId:{},yeaftPerfTraceByTurnId:{},yeaftMcpServers:[],yeaftMcpRuntime:{connected:!1,toolCount:0,perServer:[]},yeaftMcpLoading:!1,yeaftMcpError:null,btwMode:!1,btwMessages:[],btwLoading:!1,btwSessionId:null,conversationMcpServers:{},conversationMcpServerTools:{},mcpPanelOpen:!1,expertSelections:[],customExpertRoles:[],subagents:{},activeSubagentId:null,activeRightPanel:null,pinnedSessions:JSON.parse(localStorage.getItem("pinned-sessions")||"[]"),...Xp(),workCenterOpen:!1,workCenterUiEnabled:localStorage.getItem("work-center-ui-enabled")!=="false",workCenterAgentId:null,workCenterItemsByAgent:{},workCenterActivityConnectionGeneration:-1,workCenterActivityByAgent:{},workCenterActivityLoadingByAgent:{},workCenterActivityErrorByAgent:{},_workCenterActivityGenerationByAgent:{},_workCenterActivityEventGenerationByAgent:{},_workCenterActivityEventsByAgent:{},_workCenterActivityOwnerGeneration:0,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:{},workCenterDeliveryInstructionsByAgent:{},_workCenterDeliveryInstructionsGenerationByAgent:{},workCenterSettingsLoadingByAgent:{},workCenterSettingsErrorByAgent:{},_workCenterSettingsGenerationByAgent:{},_workCenterDetailRequestGenerationByAgent:{},_workCenterDetailRequestFenceByAgent:{},_workCenterDetailEventRefreshByAgent:{},_workCenterActionInputGenerationByAgent:{},_workCenterActionMessageRequests:{},_workCenterActionMessageGenerationByKey:{},_workCenterActionRequestsGeneration:{},_workCenterActionRequestDetailsGeneration:{},workCenterPending:{},workCenterComposerDrafts:{},workCenterMessageOutbox:{},_workCenterBrowserFence:null,_workCenterBrowserUnsubscribe:null,workCenterCreateDraft:null,yeaftConversationId:null,yeaftConversationIdsByAgent:{},_yeaftPendingConversationPromotions:{},_yeaftRetiredConversationIdsByAgent:{},_yeaftRetiredConversationTargetsByAgent:{},yeaftSessionAgentById:{},yeaftModel:null,yeaftModelEffort:null,yeaftSessionReady:!1,yeaftStatus:null,yeaftAvailableModels:[],yeaftStatusByAgent:{},_yeaftRetiredCatalogEpochsByAgent:{},yeaftModelsRefreshing:!1,yeaftModelRefreshError:null,yeaftYeaftDir:null,yeaftActiveTasksBySession:{},yeaftStoppingTasksById:{},yeaftToolStats:null,yeaftToolStatsLoading:!1,yeaftDebugLoops:[],yeaftDebugTurnsById:{},yeaftDebugTurnOrder:[],yeaftDebugHistoryLoading:!1,yeaftDebugHistoryError:null,yeaftDebugHistoryFetchedAt:0,yeaftDebugHistoryProjection:null,yeaftDebugHistoryLimit:ic,yeaftDebugHistoryHasMore:!1,yeaftDebugPanel:{open:!1,status:"idle",requestId:null,agentId:null,sessionId:null,turnId:null,error:null},yeaftDebugSearch:"",yeaftDebugSessionFilter:null,yeaftDreamLatest:{},yeaftDreamSnapshots:{},yeaftDreamPromptLoads:{},yeaftDreamEvents:{},yeaftReflectionCards:{},yeaftSubAgentCards:{},yeaftSidebarV2Enabled:!0,yeaftActiveSessionFilter:null,_currentYeaftSessionId:null,_currentYeaftVpId:null,_currentYeaftTurnId:null,_currentYeaftThreadId:null,_yeaftAskTerminalEvents:{},activeVpTurns:{},vpStatuses:{},stoppingVpTurnIds:{},yeaftVpTyping:{},_vpCrudPending:null}),getters:{currentConversation:e=>e.activeConversations[0]||null,activeConversationId:e=>Io(e),activeSessionRoute(e){if(e.currentView==="yeaft"){let n=Ls(e);return n?{runtimeProvider:"yeaft",agentId:$e(e,n),sessionId:n}:null}let t=Io(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]||st;if(e.currentView==="yeaft"){let n=e.yeaftActiveSessionFilter||null,r=Le($e(e,n),n),i=e.yeaftMessageWindowState[r]?.visibleTurns||tn(),o=e.yeaftHistoryFocusWindowBySession?.[r]?.windowKey||null;return Jl(s,e.yeaftActiveSessionFilter||null,i,o)}return s},yeaftAllMessages:e=>{let t=Ct(e);return t&&e.messagesMap[t]||st},yeaftVisibleMessages(e){let t=Ct(e),s=t&&e.messagesMap[t]||st,n=e.yeaftActiveSessionFilter||null,r=Le($e(e,n),n),i=e.yeaftMessageWindowState[r]?.visibleTurns||tn(),o=e.yeaftHistoryFocusWindowBySession?.[r]?.windowKey||null;return Jl(s,e.yeaftActiveSessionFilter||null,i,o)},hasHiddenYeaftMessages(e){if(e.currentView!=="yeaft")return!1;let t=Ct(e),s=t&&e.messagesMap[t]||st,n=e.yeaftActiveSessionFilter||null,r=Le($e(e,n),n),i=e.yeaftMessageWindowState[r]?.visibleTurns||tn();return Cg(s,e.yeaftActiveSessionFilter||null,i)},activeYeaftHistoryState(e){return cl(e)},yeaftManualHistoryRefreshLoading(e){let t=e._yeaftManualHistoryRefresh||null;if(!t?.requestId)return!1;let s=Le(t.agentId,t.sessionId),n=Zt(e),r=e.yeaftSessionHistoryState?.[s]||null;return n.sessionKey===s&&r?.loading===!0&&r.requestId===t.requestId},yeaftInitialHistoryLoading(e){let t=cl(e);return e.currentView==="yeaft"&&!!e.yeaftActiveSessionFilter&&!!t?.loading&&!t?.loaded&&this.yeaftVisibleMessages.length===0},vpsTypingInCurrentConv(e){let t=this.activeConversationId;if(!t)return st;let s=(e.yeaftVpTyping||{})[t];if(!s)return st;let n=Object.keys(s).filter(r=>(s[r]||0)>0);return n.length===0?st: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=Do(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamLatest?.[s]||null},yeaftDreamSnapshotForActiveSession(e){let t=Do(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamSnapshots?.[s]||null},yeaftDreamPromptLoadForActiveSession(e){let t=Do(e);if(!t)return null;let s=`sessions/${t}`;return e.yeaftDreamPromptLoads?.[s]||null},yeaftDreamEventsForActiveSession(e){let t=Do(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||st,s=e.yeaftDebugTurnsById||{},n=e.yeaftDebugLoops||st,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],g=s[u];if(!g||o&&g.sessionId&&g.sessionId!==o)continue;let p=a[u]||st,f=l[u]||st,h=p.length,v=0,y=0;for(let w of p){let b=w&&w.usage;b&&Number.isFinite(b.totalTokens)?v+=b.totalTokens:b&&(v+=(b.totalInputTokens||(b.inputTokens||0)+(b.cacheReadTokens||0)+(b.cacheWriteTokens||0))+(b.outputTokens||0)),w&&Number.isFinite(w.latencyMs)&&(y+=w.latencyMs)}let m=!g.closedAt,S={...g,loopCount:m||!g.loopCount?h:g.loopCount,totalTokens:m||!g.totalTokens?v:g.totalTokens,totalMs:m||!g.totalMs?y:g.totalMs,loops:p,reflections:f};c.push(S)}return c},yeaftDebugAvailableSessions:e=>{let t=new Set;for(let s of e.yeaftDebugTurnOrder||st){let n=e.yeaftDebugTurnsById[s];n&&n.sessionId&&t.add(n.sessionId)}return Array.from(t).sort()},yeaftDebugTurnTotal:e=>(e.yeaftDebugTurnOrder||st).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=Ls(e);return t?Ag(e,t,$e(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"?Lg(e):e.currentWorkDir||e.currentAgentInfo?.workDir||"",fileReferenceResolutionContextKey:e=>{let t=e.currentView==="yeaft"?(()=>{let o=Ls(e);return o?{runtimeProvider:"yeaft",agentId:$e(e,o),sessionId:o}:null})():(()=>{let o=Io(e),a=e.conversations.find(l=>l?.id===o&&l.type!=="yeaft");return a?{runtimeProvider:a.provider==="copilot"?"copilot":"claude-code",agentId:a.agentId||e.currentAgent||null,sessionId:o}:null})(),s=t?.agentId||e.currentAgent||null,n=t?.runtimeProvider==="yeaft"?Ct(e,t.sessionId,s):e.currentConversation,r=St(e,s,"file_reference_resolution");if(!s||!n||!r)return"";let i=e.currentView==="yeaft"?Lg(e):e.currentWorkDir||e.currentAgentInfo?.workDir||"";return JSON.stringify([e.connectionState,e.authenticated,e.workbenchRouteProtocolSupported,t?.runtimeProvider||"",s,t?.sessionId||"",n,i,St(e,s,"file_editor"),St(e,s,"workbench_session_routes"),St(e,s,"response_image_preview")])},currentAgentCapabilities:e=>e.currentAgentInfo?.capabilities||["terminal","file_editor","background_tasks"],hasCapability:e=>t=>(e.currentAgentInfo?.capabilities||["terminal","file_editor","background_tasks"]).includes(t),hasAgentCapability:e=>(t,s)=>St(e,t,s),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)=>Ag(e,t,s),isSessionHistorySyncing:e=>t=>{let s=t?.sessionId||null;return s?t.runtimeProvider==="yeaft"?!!e.yeaftSessionHistoryState?.[Le(t.agentId||null,s)]?.loading:!!e.chatHistoryRequests?.[Ys(s)]?.loading:!1},isYeaftSessionUnread:e=>(t,s=null)=>{if(!t)return!1;let n=$e(e,t,s);return n?!!e.yeaftUnreadSessionKeys?.[Yn(n,t)]:!1},showRecoveryBanner:e=>e.pendingRecovery&&!e.recoveryDismissed&&!e.currentConversation,currentSubagents:e=>{if(!e.currentConversation)return st;let t=e.subagents[e.currentConversation];return t?Object.values(t):st},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 st;let t=e.subagents[e.currentConversation];if(!t)return st;let s=t[e.activeSubagentId];return(Array.isArray(s?.messages)?s.messages:st).filter(r=>r?.type==="text")},selectedTaskInfo:()=>null,currentMcpServers:e=>e.currentConversation&&e.conversationMcpServers[e.currentConversation]||st},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&&Ol("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),Jp(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.some(n=>n.id===this.workCenterAgentId)?this.workCenterAgentId:t[0]?.id||null;return this.workCenterAgentId=s,this.workCenterOpen=!0,this.closeSessionSidebar(),s&&this.listWorkItems(s).catch(()=>{}),!0},leaveWorkCenter(){if(!this.workCenterOpen)return;this.workCenterOpen=!1;let e=new URL(window.location.href);for(let t of["workAgentId","workItemId","workContent"])e.searchParams.delete(t);window.history.replaceState({...window.history.state,workCenter:!1,workCenterContent:!1},"",`${e.pathname}${e.search}${e.hash}`)},setWorkCenterUiEnabled(e){this.workCenterUiEnabled=e!==!1;try{localStorage.setItem("work-center-ui-enabled",String(this.workCenterUiEnabled))}catch{}this.workCenterUiEnabled||this.leaveWorkCenter()},openPluginCenter(e=null){let t=this.agents.find(s=>s?.online&&s.id===e)||this.agents.find(s=>s?.online&&s.id===this.currentAgent)||this.agents.find(s=>s?.online)||null;return t?(this.pluginCenterAgentId=t.id,this.pluginCenterOpen=!0,!0):!1},closePluginCenter(){this.pluginCenterOpen=!1},pluginCatalogKey(e,t=""){return`${e||""}${String(t||"").trim()}`},loadPluginConfig(e=this.pluginCenterAgentId||this.currentAgent){if(!e)return Promise.resolve({plugins:{},error:"no agent"});let t=this.agents.find(n=>n?.id===e);if(!Gn(t))return Promise.resolve({plugins:{},error:"The selected Agent does not support Plugins; upgrade and restart the Agent"});let s=`plugins-get-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(n=>{let r=setTimeout(()=>{this._pluginPending?.[s]&&(delete this._pluginPending[s],n({plugins:{},error:"timeout"}))},1e4);this._pluginPending[s]={resolve:n,timer:r,kind:"config",agentId:e},this.sendWsMessage({type:"get_yeaft_plugins",agentId:e,requestId:s})})},savePluginConfig(e,t=this.pluginCenterAgentId||this.currentAgent){if(!t)return Promise.resolve({plugins:{},error:"no agent"});let s=this.agents.find(r=>r?.id===t);if(!Gn(s))return Promise.resolve({plugins:{},error:"The selected Agent does not support Plugins; upgrade and restart the Agent"});let n=`plugins-save-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(r=>{let i=setTimeout(()=>{this._pluginPending?.[n]&&(delete this._pluginPending[n],r({plugins:{},error:"timeout"}))},1e4);this._pluginPending[n]={resolve:r,timer:i,kind:"save",agentId:t},this.sendWsMessage({type:"update_yeaft_plugins",agentId:t,requestId:n,plugins:e})})},activePluginSession(){let e=this.yeaftActiveSessionFilter||fs()?.activeSessionId||null;if(!e)return{sessionId:"",workDir:""};let t=$e(this,e),s=fs()?.sessionById?.(e,t)||null;return{sessionId:e,agentId:s?.agentId||t||"",workDir:typeof s?.workDir=="string"?s.workDir.trim():""}},managedSkillRequestKey(e,t,s){return`${e||""}${t||""}${s||""}`},mutateManagedSkill({action:e,scope:t,skill:s,name:n,sessionId:r=""}={},i=this.pluginCenterAgentId||this.currentAgent){if(!i)return Promise.resolve({catalog:{tools:[],skills:[],skillSources:[],mcpServers:[]},error:"no agent"});let o=this.agents.find(c=>c?.id===i);if(!oo(o))return Promise.resolve({catalog:{tools:[],skills:[],skillSources:[],mcpServers:[]},error:"The selected Agent does not support Skill management; upgrade and restart the Agent"});let a=`managed-skill-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,l=this.managedSkillRequestKey(i,t,r);return this.managedSkillRequestByKey={...this.managedSkillRequestByKey,[l]:a},new Promise(c=>{let d=setTimeout(()=>{this._pluginPending?.[a]&&(delete this._pluginPending[a],c({catalog:{tools:[],skills:[],skillSources:[],mcpServers:[]},error:"timeout"}))},1e4);this._pluginPending[a]={resolve:c,timer:d,kind:"managed-skill",agentId:i,key:l,workDir:t==="project"&&this.activePluginSession().workDir||""},this.sendWsMessage({type:"yeaft_managed_skill",agentId:i,requestId:a,action:e,scope:t,...r?{sessionId:r}:{},...s?{skill:s}:{},...n?{name:n}:{}})})},loadPluginCatalog(e=this.pluginCenterAgentId||this.currentAgent,t=""){if(!e)return Promise.resolve({catalog:{tools:[],skills:[],mcpServers:[]},error:"no agent"});let s=this.agents.find(i=>i?.id===e);if(!Gn(s))return Promise.resolve({catalog:{tools:[],skills:[],mcpServers:[]},error:"The selected Agent does not support Plugins; upgrade and restart the Agent"});let n=this.pluginCatalogKey(e,t),r=`plugins-catalog-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return this.pluginCatalogRequestByKey={...this.pluginCatalogRequestByKey,[n]:r},this.pluginCatalogByKey={...this.pluginCatalogByKey,[n]:{...this.pluginCatalogByKey[n]||{},loading:!0,error:null}},new Promise(i=>{let o=setTimeout(()=>{this._pluginPending?.[r]&&(delete this._pluginPending[r],this.pluginCatalogRequestByKey?.[n]===r&&(this.pluginCatalogByKey={...this.pluginCatalogByKey,[n]:{...this.pluginCatalogByKey[n]||{},loading:!1,error:"timeout"}}),i({catalog:{tools:[],skills:[],mcpServers:[]},error:"timeout"}))},1e4);this._pluginPending[r]={resolve:i,timer:o,kind:"catalog",agentId:e,key:n},this.sendWsMessage({type:"yeaft_plugin_catalog",agentId:e,requestId:r,workDir:String(t||"").trim()})})},enterWorkCenterFromSession(e,t=""){if(!e?.id)return;let s=e.agentId||$e(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=zd(()=>{Kn(this._workCenterBrowserFence)||this.clearWorkCenterBrowserState()}));let e=Un();if(!e)return this._workCenterBrowserFence=null,this.workCenterComposerDrafts={},this.workCenterMessageOutbox={},this.clearWorkCenterActivityState(),!1;if(!Kn(this._workCenterBrowserFence)){this.clearWorkCenterActivityState();let t=Kd(e);this._workCenterBrowserFence=e,this.workCenterComposerDrafts=t.drafts,this.workCenterMessageOutbox=t.outbox}return!0},clearWorkCenterBrowserState(){this._workCenterBrowserFence=null,this.workCenterComposerDrafts={},this.workCenterMessageOutbox={},this.clearWorkCenterActivityState()},clearWorkCenterActivityState(){this._workCenterActivityOwnerGeneration=Number(this._workCenterActivityOwnerGeneration||0)+1,this.workCenterActivityByAgent={},this.workCenterActivityLoadingByAgent={},this.workCenterActivityErrorByAgent={},this._workCenterActivityGenerationByAgent={},this._workCenterActivityEventGenerationByAgent={},this._workCenterActivityEventsByAgent={};for(let e of["_workCenterListGenerationByAgent","_workCenterDetailRequestGenerationByAgent"])this[e]=Object.fromEntries(Object.entries(this[e]||{}).map(([t,s])=>[t,Number(s||0)+1]));for(let e of["workCenterItemsByAgent","workCenterDetailByAgent","workCenterLoadedByAgent","workCenterLoadingByAgent","workCenterErrorByAgent","workCenterListPageByAgent","workCenterListMoreLoadingByAgent","workCenterWatcherByAgent","_workCenterListQueryByAgent","_workCenterListFiltersByAgent","_workCenterListMoreRequestsByAgent","_workCenterListEventsByAgent","_workCenterDetailRequestFenceByAgent","_workCenterDetailEventRefreshByAgent"])this[e]={}},workCenterComposerKey(e,t){return Ds(e,t)},saveWorkCenterComposerDraft(e,t,s={}){let n=Ds(e,t);if(!e||!t)return;let r=Mt(s.quote),i={...this.workCenterComposerDrafts||{},[n]:{text:String(s.text||""),...r?{quote:r}:{},attachments:Array.isArray(s.attachments)?s.attachments:[],target:Dw(s.target),error:String(s.error||"")}};return Ja(i,this._workCenterBrowserFence)?(this.workCenterComposerDrafts=i,!0):!1},loadWorkCenterComposerDraft(e,t){return this.workCenterComposerDrafts?.[Ds(e,t)]||null},removeWorkCenterComposerDraft(e,t){let s=Ds(e,t),n={...this.workCenterComposerDrafts||{}};return delete n[s],Ja(n,this._workCenterBrowserFence)?(this.workCenterComposerDrafts=n,!0):!1},prepareWorkCenterMessageEnvelope(e={}){let t=$w(e),s=Ds(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 Nr(i,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=i,r):null},loadWorkCenterMessageEnvelope(e,t){return this.workCenterMessageOutbox?.[Ds(e,t)]||null},replaceWorkCenterMessageEnvelopeAttachments(e,t,s=[]){let n=Ds(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 Nr(o,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=o,i):null},discardWorkCenterMessageEnvelope(e,t){let s=Ds(e,t),n={...this.workCenterMessageOutbox||{}};return delete n[s],Nr(n,this._workCenterBrowserFence)?(this.workCenterMessageOutbox=n,!0):!1},confirmWorkCenterMessageEnvelope(e,t,s){let n=Ds(e,t),r=this.workCenterMessageOutbox?.[n];if(!r||r.clientMessageId!==s)return!1;let i={...this.workCenterMessageOutbox||{}};return delete i[n],Nr(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=Et(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)},workItemIsActive(e){return!!e&&Pg.includes(e.status)&&!["done","cancelled"].includes(e.lifecycle)},applyWorkItemActivitySummary(e,t){let s=Et(e,t),n=s.find(r=>r?.id===t?.id)||null;return!n||this.workItemIsActive(n)?s:s.filter(r=>r.id!==n.id)},syncWorkCenterActivity(e,t){if(!t?.id||this.workItemDeleted(e,t.id))return;let s=this._workCenterActivityEventsByAgent[e]?.[t.id]?.summary,n=this.workCenterActivityByAgent[e]||[],r=Et(Et(n,s),t).find(o=>o.id===t.id),i=Number(this._workCenterActivityEventGenerationByAgent[e]||0)+1;this._workCenterActivityEventGenerationByAgent={...this._workCenterActivityEventGenerationByAgent,[e]:i},this._workCenterActivityEventsByAgent={...this._workCenterActivityEventsByAgent,[e]:{...this._workCenterActivityEventsByAgent[e]||{},[t.id]:{generation:i,summary:r}}},this.workCenterActivityByAgent={...this.workCenterActivityByAgent,[e]:this.applyWorkItemActivitySummary(n,r)}},async loadWorkCenterActivity(e=null){let t=e||this.workCenterAgentId||this.currentAgent;if(!t)return[];let s=Number(this._workCenterActivityGenerationByAgent[t]||0)+1,n=$o(this),r=Number(this._workCenterActivityEventGenerationByAgent[t]||0);this._workCenterActivityGenerationByAgent={...this._workCenterActivityGenerationByAgent,[t]:s},this.workCenterActivityLoadingByAgent={...this.workCenterActivityLoadingByAgent,[t]:!0},this.workCenterActivityErrorByAgent={...this.workCenterActivityErrorByAgent,[t]:null};try{let i=await Promise.all(Pg.map(async d=>{let u=[],g=new Set,p=null;for(let f=0;f<_w;f+=1){let h={status:d,limit:Rw};p&&(h.cursor=p);let v=await this.workCenterRequest("list",h,t);if(!gs(this,n))return[];Array.isArray(v?.items)&&u.push(...v.items);let y=typeof v?.nextCursor=="string"&&v.nextCursor?v.nextCursor:null;if(!y||g.has(y))break;g.add(y),p=y}return u}));if(!(this._workCenterActivityGenerationByAgent[t]===s&&gs(this,n)))return i.flat();let a=new Map((this.workCenterActivityByAgent[t]||[]).map(d=>[d.id,d])),l=this._workCenterActivityEventsByAgent[t]||{},c=[];for(let d of i.flat()){if(!d?.id||this.workItemDeleted(t,d.id))continue;let u=l[d.id]?.summary,g=a.get(d.id);u&&(g=Et(g?[g]:[],u)[0]);let p=Et(g?[g]:[],d)[0]||d;c=this.applyWorkItemActivitySummary(c,p)}for(let d of Object.values(this._workCenterActivityEventsByAgent[t]||{}))Number(d?.generation)<=r||(c=this.applyWorkItemActivitySummary(c,d.summary));return this.workCenterActivityByAgent={...this.workCenterActivityByAgent,[t]:c},c}catch(i){throw this._workCenterActivityGenerationByAgent[t]===s&&gs(this,n)&&(this.workCenterActivityErrorByAgent={...this.workCenterActivityErrorByAgent,[t]:i?.message||String(i)}),i}finally{this._workCenterActivityGenerationByAgent[t]===s&&gs(this,n)&&(this.workCenterActivityLoadingByAgent={...this.workCenterActivityLoadingByAgent,[t]:!1})}},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=$o(this),i=JSON.stringify(n),o=Number(this._workCenterListGenerationByAgent[s]||0)+1,a=Number(this._workCenterListEventGenerationByAgent[s]||0);this._workCenterListGenerationByAgent={...this._workCenterListGenerationByAgent,[s]:o},this._workCenterListQueryByAgent={...this._workCenterListQueryByAgent,[s]:i},this._workCenterListFiltersByAgent={...this._workCenterListFiltersByAgent,[s]:n},this.workCenterLoadingByAgent={...this.workCenterLoadingByAgent,[s]:!0},this.workCenterErrorByAgent={...this.workCenterErrorByAgent,[s]:null};try{let l=await this.workCenterRequest("list",n,s),c=(Array.isArray(l?.items)?l.items:[]).filter(u=>!this.workItemDeleted(s,u?.id));if(gs(this,r)&&this._workCenterListGenerationByAgent[s]===o&&this._workCenterListQueryByAgent[s]===i&&this.workCenterAgentId===s){let u=this._workCenterListEventsByAgent[s]||{},g=new Map((this.workCenterItemsByAgent[s]||[]).map(f=>[f.id,f])),p=c.flatMap(f=>{let h=u[f.id]?.summary,v=Et(h?[h]:[],g.get(f.id)),y=Et(v,f)[0];return this.syncWorkCenterActivity(s,y),this.workItemMatchesBoardQuery(y,n)?[y]:[]});for(let f of Object.values(u))Number(f?.generation)<=a||f?.queryKey!==i||(p=this.applyWorkItemBoardSummary(p,f.summary,n));this.workCenterItemsByAgent={...this.workCenterItemsByAgent,[s]:p},this.workCenterListPageByAgent={...this.workCenterListPageByAgent,[s]:{nextCursor:l?.nextCursor||null,queryKey:i}},this.workCenterWatcherByAgent={...this.workCenterWatcherByAgent,[s]:l?.watcher||null},this.workCenterLoadedByAgent={...this.workCenterLoadedByAgent,[s]:!0}}return c}catch(l){throw gs(this,r)&&this._workCenterListGenerationByAgent[s]===o&&this._workCenterListQueryByAgent[s]===i&&(this.workCenterErrorByAgent={...this.workCenterErrorByAgent,[s]:l?.message||String(l)}),l}finally{gs(this,r)&&this._workCenterListGenerationByAgent[s]===o&&this._workCenterListQueryByAgent[s]===i&&(this.workCenterLoadingByAgent={...this.workCenterLoadingByAgent,[s]:!1})}},async loadMoreWorkItems(e=null){let t=e||this.workCenterAgentId||this.currentAgent,s=this.workCenterListPageByAgent[t],n=this._workCenterListFiltersByAgent[t];if(!t||!s?.nextCursor||!n)return[];let r=$o(this),i=s.queryKey,o=this._workCenterListGenerationByAgent[t],a=Number(this._workCenterListEventGenerationByAgent[t]||0),l=s.nextCursor,c=`${o}:${i}:${l}`;if(this._workCenterListMoreRequestsByAgent[t]?.key===c)return this._workCenterListMoreRequestsByAgent[t].request;this.workCenterListMoreLoadingByAgent={...this.workCenterListMoreLoadingByAgent,[t]:!0};let d=(async()=>{try{let u=await this.workCenterRequest("list",{...n,cursor:l},t),g=this.workCenterListPageByAgent[t];if(!gs(this,r)||this._workCenterListGenerationByAgent[t]!==o||this._workCenterListQueryByAgent[t]!==i||g?.queryKey!==i||g?.nextCursor!==l||this.workCenterAgentId!==t)return[];let p=[...this.workCenterItemsByAgent[t]||[]],f=this._workCenterListEventsByAgent[t]||{};for(let h of Array.isArray(u?.items)?u.items:[]){if(this.workItemDeleted(t,h?.id))continue;let v=p.findIndex(w=>w.id===h.id),y=f[h.id]?.summary,m=Et(y?[y]:[],v<0?null:p[v]),S=Et(m,h)[0];this.syncWorkCenterActivity(t,S),v>=0&&p.splice(v,1),this.workItemMatchesBoardQuery(S,n)&&p.splice(v<0?p.length:v,0,S)}for(let h of Object.values(f))Number(h?.generation)<=a||h?.queryKey!==i||(p=this.applyWorkItemBoardSummary(p,h.summary,n));return this.workCenterItemsByAgent={...this.workCenterItemsByAgent,[t]:p},this.workCenterListPageByAgent={...this.workCenterListPageByAgent,[t]:{nextCursor:u?.nextCursor||null,queryKey:i}},u?.items||[]}finally{if(gs(this,r)&&this._workCenterListMoreRequestsByAgent[t]?.key===c){let u={...this._workCenterListMoreRequestsByAgent};delete u[t],this._workCenterListMoreRequestsByAgent=u,this.workCenterListMoreLoadingByAgent={...this.workCenterListMoreLoadingByAgent,[t]:!1}}}})();return this._workCenterListMoreRequestsByAgent={...this._workCenterListMoreRequestsByAgent,[t]:{key:c,request:d}},d},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.workCenterActivityByAgent={...this.workCenterActivityByAgent,[e]:(this.workCenterActivityByAgent[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},this._workCenterDetailRequestFenceByAgent={...this._workCenterDetailRequestFenceByAgent,[e]:$o(this)},t},commitWorkCenterDetail(e,t,s){if(t?.id&&this.workItemDeleted(e,t.id)||s!=null&&(Number(this._workCenterDetailRequestGenerationByAgent[e]||0)!==s||!gs(this,this._workCenterDetailRequestFenceByAgent?.[e])))return!1;let n=this.workCenterDetailByAgent[e],r=jl(n,t);return n&&r===n?!1:(this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[e]:r},this.syncWorkCenterActivity(e,mg(r)),!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=qt(n),i=ar(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=qt(s),a=ar(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)||qt(u?.generation)!==o||Number(this._workCenterActionMessageGenerationByKey[a]||0)!==l)return u;let g=this.workCenterActionMessages[a]?.messages||[],p=ui(g,u?.messages||[]),f=this.workCenterActionMessages[a],h=f?.nextCursor,v=n==null?null:Number(n),y=h==null?null:Number(h),m=!f||v==null||y!=null&&v===y;return this.workCenterActionMessages={...this.workCenterActionMessages,[a]:{generation:o,messages:p,nextCursor:m?u?.nextCursor??null:h,total:Math.max(Number(u?.total)||0,Number(f?.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 g=Object.keys(u).some(p=>p.startsWith(`${a}:`));this.workCenterActionMessagesLoading={...this.workCenterActionMessagesLoading,[a]:g}}}})();return this._workCenterActionMessageRequests={...this._workCenterActionMessageRequests,[c]:d},d},async loadWorkItemActionRequests(e,t,s,n=null){let r=n||this.workCenterAgentId||this.currentAgent,i=qt(s),o=Vl(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)&&qt(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=qt(s),c=`${Vl(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),g=!this.workItemDeleted(o,e)&&qt(u?.generation)===a&&this._workCenterActionRequestDetailsGeneration[c]===d;return g&&(this.workCenterActionRequestDetails={...this.workCenterActionRequestDetails,[c]:u?.request||null}),g?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 loadWorkCenterDeliveryInstructions(e=null){let t=e||this.workCenterAgentId||this.currentAgent;if(!t)return[];let s=Number(this._workCenterDeliveryInstructionsGenerationByAgent[t]||0)+1;this._workCenterDeliveryInstructionsGenerationByAgent={...this._workCenterDeliveryInstructionsGenerationByAgent,[t]:s};let n=await this.workCenterRequest("list_delivery_instructions",{limit:12},t);return this._workCenterDeliveryInstructionsGenerationByAgent[t]===s&&(this.workCenterDeliveryInstructionsByAgent={...this.workCenterDeliveryInstructionsByAgent,[t]:Array.isArray(n?.values)?n.values:[]}),this.workCenterDeliveryInstructionsByAgent[t]||[]},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 updateWorkItemSchedule(e,t,s=null){let n=s||this.workCenterAgentId||this.currentAgent,r=this.beginWorkCenterDetailWrite(n),i=await this.workCenterRequest("update_schedule",{id:e,schedule: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,n=void 0){let r=s||this.workCenterAgentId||this.currentAgent,i=this.beginWorkCenterDetailWrite(r),o={id:e,revision:t};n!=null&&(o.executionControlRevision=n);let a=await this.workCenterRequest("resume",o,r);return await this.listWorkItems(r,this._workCenterListFiltersByAgent[r]||{}),this.commitWorkCenterDetail(r,a,i),a},async extendWorkItemBudget(e,t,s,n=null){let r=n||this.workCenterAgentId||this.currentAgent,i=this.beginWorkCenterDetailWrite(r),o=await this.workCenterRequest("extend_budget",{id:e,executionControlRevision:t,additions:s},r);return await this.listWorkItems(r,this._workCenterListFiltersByAgent[r]||{}),this.commitWorkCenterDetail(r,o,i),o},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,g=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(!g?.accepted)throw new Error("Work Center Coordinator did not accept the message");return this.confirmWorkCenterMessageEnvelope(l,e,d),g}return await this.listWorkItems(l,this._workCenterListFiltersByAgent[l]||{}),this.confirmWorkCenterMessageEnvelope(l,e,d),g},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,...Mt(o)?{quote:Mt(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=Mt(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 g=this.workCenterDetailByAgent[l],p=g?.actions?.find(v=>v?.id===s),f=g?.id===e&&Number(g.revision)===Number(n)&&p&&Number(p.generation)===Number(r),h=jl(g,u);return this._workCenterActionInputGenerationByAgent[l]===c&&f&&!ug(h,g)?(this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[l]:h},h):g?.id===e?g: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 g=Object.entries(this.workCenterPending||{}).find(([,p])=>p?.agentId===e&&p.clientMessageId===t.clientMessageId);if(g){let[p,f]=g;clearTimeout(f.timer),delete this.workCenterPending[p],f.resolve(t.type==="coordinator.turn_started"?{accepted:!0,turnId:null,receipt:!0}:t.workItem)}}let n=this.workCenterItemsByAgent[e]||[];if(t.type==="work_item.deleted"){this.removeWorkItemState(e,s.id);return}if(this.workItemDeleted(e,s.id))return;let r=this._workCenterListFiltersByAgent[e]||{},i=this._workCenterListEventsByAgent[e]?.[s.id]?.summary||null,o=i?[i]:[],a=n.find(g=>g?.id===s.id)||null;a&&(o=Et(o,a));let l=Et(o,s).find(g=>g?.id===s.id)||s,c=Number(this._workCenterListEventGenerationByAgent[e]||0)+1;this._workCenterListEventGenerationByAgent={...this._workCenterListEventGenerationByAgent,[e]:c},this._workCenterListEventsByAgent={...this._workCenterListEventsByAgent,[e]:{...this._workCenterListEventsByAgent[e]||{},[s.id]:{generation:c,queryKey:this._workCenterListQueryByAgent[e]||null,summary:l}}},this.syncWorkCenterActivity(e,l);let d=this.applyWorkItemBoardSummary(n,l,r);this.workCenterItemsByAgent={...this.workCenterItemsByAgent,[e]:d};let u=this.workCenterDetailByAgent[e];if(u?.id===s.id){let g=t.type==="run.finished"&&t.actionId&&Array.isArray(s.actionStats)&&s.actionStats.some(m=>m?.id===t.actionId)?{...s,eventActionId:t.actionId}:s,p=Hl(u,g),f=Number(s.coordinatorRevision),h=Number(u.coordinatorRevision)||0,v=Number.isInteger(f)&&f>h,y=pg(u,g);this.workCenterDetailByAgent={...this.workCenterDetailByAgent,[e]:gg(u,s)},y&&this.refreshWorkItemDetailAfterActionChange(e,s,v?null:p)}},async refreshWorkItemDetailAfterActionChange(e,t,s=null){let n=s?(Array.isArray(t.actionStats)?t.actionStats:[]).find(h=>h?.id===s.actionId):(Array.isArray(t.actionStats)?t.actionStats:[]).find(h=>h?.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 g=this.beginWorkCenterDetailWrite(e),p={key:u,generation:g};this._workCenterDetailEventRefreshByAgent={...this._workCenterDetailEventRefreshByAgent,[e]:p},s&&this.invalidateWorkItemActionMessages(e,t.id,s.actionId,s.generation);let f=r&&o!=null?this.loadWorkItemActionMessages(t.id,r,o,null,e).catch(()=>null):null;try{let h=await this.workCenterRequest("get",{id:t.id},e),v=this.workCenterDetailByAgent[e],y=v?.actions?.find(P=>P?.id===r),m=h?.actions?.find(P=>P?.id===r),S=o==null||qt(y?.generation)===o,w=o==null||qt(m?.generation)>=o,b=l==null||Number(h?.coordinatorRevision)===l,k=l!=null||S&&w&&(t.currentActionId==null?h?.currentActionId==null:v?.currentActionId===t.currentActionId&&h?.currentActionId===t.currentActionId);v?.id===t.id&&b&&k&&this.commitWorkCenterDetail(e,h,g)&&f&&await f}catch{}finally{if(this._workCenterDetailEventRefreshByAgent[e]===p){let h={...this._workCenterDetailEventRefreshByAgent};delete h[e],this._workCenterDetailEventRefreshByAgent=h}}},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),g=Array.isArray(this._yeaftRetiredCatalogEpochsByAgent?.[e])?this._yeaftRetiredCatalogEpochsByAgent[e]:[],p=!!a&&g.includes(a),f=!!a&&a===o,h=i>0?f&&i===r:c>0&&c===l,v=i>0?!!a&&(a!==o||i>r):r===0&&c>l,y=i>0?!!t.catalogDigest&&!!n.catalogDigest&&t.catalogDigest===n.catalogDigest:t.catalogDigest===n.catalogDigest,m=u&&!p&&(v||h&&y),w=m||s&&r===0&&l===0&&!u&&d,b={...t};if(!w)for(let P of Mw)delete b[P];let k={...n,...b};if(w){if(m&&o&&a&&o!==a){let P=[...g.filter(x=>x!==o),o].slice(-Pw);this._yeaftRetiredCatalogEpochsByAgent={...this._yeaftRetiredCatalogEpochsByAgent||{},[e]:P}}k.availableModels=t.availableModels,k.catalogRefreshedAt=m?c:null,k.catalogEpoch=m&&a||null,k.catalogRevision=m&&i||null,k.catalogDigest=m&&t.catalogDigest||null}this.yeaftStatusByAgent={...this.yeaftStatusByAgent,[e]:k},this.currentAgent===e&&this.applyCachedYeaftStatus(e)},applyCachedYeaftStatus(e=this.currentAgent){let t=e?this.yeaftStatusByAgent[e]:null;return t?(this.yeaftModel=t.model||null,this.yeaftModelEffort=t.modelEffort||null,this.yeaftAvailableModels=Array.isArray(t.availableModels)?t.availableModels:[],this.yeaftModelsRefreshing=!!t.refreshing,this.yeaftModelRefreshError=t.refreshError||null,this.yeaftYeaftDir=t.yeaftDir||null,this.yeaftStatus={skills:t.skills,mcpServers:t.mcpServers,tools:t.tools,multiVp:!!t.multiVp},!0):!1},activateYeaftAgentCatalog(e,t=this.currentAgent){let s=e?this.yeaftStatusByAgent[e]:null;return s&&this.applyCachedYeaftStatus(e),Array.isArray(s?.availableModels)?!0:(this.yeaftModel=null,this.yeaftModelEffort=null,this.yeaftAvailableModels=[],s||(this.yeaftStatus=null),this.yeaftModelsRefreshing=!!e&&!s?.refreshError,this.yeaftModelRefreshError=s?.refreshError||null,t!==e&&(this.yeaftYeaftDir=null),!1)},activateYeaftAgent(e,t=null){if(!e)return!1;let s=this.currentAgent;return this.currentAgent=e,t&&(this.currentAgentInfo=t),this.activateYeaftAgentCatalog(e,s)},resolveYeaftSessionAgentId(e){return $e(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))},Iw),e):(this.yeaftSessionHydrateRequestId=null,this.yeaftSessionHydrateSlices=[],this.yeaftSessionHydrateError="session_inventory_send_failed",null)},beginYeaftHistoryLoad(e){let t=Au(this,e);if(!t)return null;let{agentId:s,sessionId:n}=e||{};return setTimeout(()=>{Qr(this,{agentId:s,sessionId:n,requestId:t.requestId,error:"history_load_timeout"})},Iu),t},finishYeaftHistoryLoad(e,t={},s="chunk"){return xu(this,e,t,s)},isCurrentYeaftHistoryResponse(e){return ll(this,e)},syncActiveYeaftHistoryLoad(){return Cn(this)},enterYeaft(e=null,{deferBootstrap:t=!1}={}){let s=this.currentAgent;Fl(this);let n=Ls(this),r=!e&&n?$e(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]=[]),Zp(this),this.currentView="yeaft",Ol("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=Ls(this),r=n?$e(this,n):this.currentAgent,i=Le(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(m=>m&&(m.sessionId??m.groupId??null)===n),d=!!n&&qu({sessionState:o,hasCachedSessionRows:c,force:!!s}),u=!!n&&!d&&Fu(o,t);if(!a&&!d&&!u)return!1;let g=`${r}:${n||"__none__"}`,p=a&&!d&&!u;if(p&&this.yeaftBootstrapMetaLoadingKey===g)return!1;p&&(this.yeaftBootstrapMetaLoadingKey=g);let f=null;n&&d?f=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&&(f=this.beginYeaftHistoryLoad({agentId:r,sessionId:n,mode:"delta",preserveLoaded:!0,latestSeq:l}));let h={type:"yeaft_load_history",agentId:r,sessionId:n,...f?{requestId:f.requestId}:{}};u?h.afterSeq=l:h.limit=d?ec:0;let v=xn();h.perfTraceId=v;let y=u?"delta":d?"recent":"metadata";return n&&(this.yeaftHistoryPerfTraceBySession={...this.yeaftHistoryPerfTraceBySession||{},[i]:v}),kt(this,{traceId:v,phase:"history.request_send",agentId:r,sessionId:n,messageType:h.type,bytes:JSON.stringify(h).length,detail:{mode:y,limit:h.limit??null,afterSeq:h.afterSeq??null,hasCachedSessionRows:c,needSessionReady:a}}),this.sendWsMessage(h),!0},leaveYeaft(){this.activateChatView({persistPreference:!0})},fetchYeaftToolStats(){this.currentAgent&&(this.yeaftToolStatsLoading=!0,this.sendWsMessage({type:"yeaft_fetch_tool_stats",agentId:this.currentAgent}),this._fetchYeaftToolStatsTimer&&clearTimeout(this._fetchYeaftToolStatsTimer),this._fetchYeaftToolStatsTimer=setTimeout(()=>{this.yeaftToolStatsLoading&&(this.yeaftToolStatsLoading=!1,this.yeaftToolStats={...this.yeaftToolStats||{snapshot:{},registered:[],unused:[]},error:null,notice:"Tool stats are unavailable right now. Try again after the agent reconnects.",fetchedAt:Date.now()}),this._fetchYeaftToolStatsTimer=null},1e4))},loadYeaftDebugHistory({groupId:e,limit:t,dreamLimit:s,indexOnly:n=!1,detailTurnId:r=null,search:i=void 0}={}){let o=$e(this,e);if(!o)return;let a=typeof i=="string"?i.trim():(this.yeaftDebugSearch||"").trim(),l=typeof r=="string"&&r,c=a&&!l?qg:ic,d=Number.isFinite(t)&&t>0?t:this.yeaftDebugHistoryLimit||c,u=Math.max(1,Math.min(c,d)),g=l?"detail":"list",p=`dbg_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`,f=JSON.stringify({agentId:o,groupId:e||null,limit:u,dreamLimit:Number.isFinite(s)&&s>0?s:5,indexOnly:!!n,detailTurnId:r||null,search:l?"":a});if(this._yeaftDebugHistoryInFlightKey===f)return;this._yeaftDebugHistoryInFlightKey=f,l?this._yeaftDebugHistoryLatestDetailRequestId=p:this._yeaftDebugHistoryLatestListRequestId=p,this.yeaftDebugHistoryLimit=u,this.yeaftDebugHistoryLoading=!0,this.yeaftDebugHistoryError=null,this.yeaftDebugHistoryProjection=null;let h={type:"yeaft_fetch_debug_history",agentId:o,requestId:p,requestKind:g,limit:u,dreamLimit:Number.isFinite(s)&&s>0?s:5};n&&(h.indexOnly=!0),typeof r=="string"&&r?h.detailTurnId=r:a&&(h.search=a),typeof e=="string"&&e&&(h.sessionId=e),this._yeaftDebugHistoryPending={payload:h,attempt:0,startedAt:Date.now()},ir(this),this.refreshYeaftDebugHistoryTimeout(p),this.sendWsMessage(h)},scheduleYeaftDebugDetailRefresh(e,t){let s=this.yeaftDebugPanel;!s?.open||s.turnId!==t||s.agentId!==e.agentId||s.sessionId&&s.sessionId!==e.sessionId||(this._yeaftDebugDetailDirty=!0,!this._yeaftDebugDetailRefreshTimer&&(this._yeaftDebugDetailRefreshTimer=setTimeout(()=>{this._yeaftDebugDetailRefreshTimer=null,!(!this.yeaftDebugPanel?.open||this.yeaftDebugPanel.requestId!==s.requestId)&&(this.yeaftDebugHistoryLoading||(this._yeaftDebugDetailDirty=!1,this.loadYeaftDebugHistory({groupId:s.sessionId,detailTurnId:s.turnId})))},500)))},refreshYeaftDebugHistoryTimeout(e){let t=this._yeaftDebugHistoryPending;!t||t.payload.requestId!==e||(this._fetchYeaftDebugHistoryTimer&&clearTimeout(this._fetchYeaftDebugHistoryTimer),this._fetchYeaftDebugHistoryTimer=setTimeout(()=>{if(this._yeaftDebugHistoryPending===t){if(this.yeaftDebugHistoryLoading&&t.attempt<1){t.attempt+=1,t.startedAt=Date.now(),t.payload={...t.payload,requestId:`dbg_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`},t.payload.requestKind==="detail"?this._yeaftDebugHistoryLatestDetailRequestId=t.payload.requestId:this._yeaftDebugHistoryLatestListRequestId=t.payload.requestId,ir(this),this.refreshYeaftDebugHistoryTimeout(t.payload.requestId),this.sendWsMessage(t.payload);return}this.yeaftDebugHistoryLoading&&(this.yeaftDebugHistoryLoading=!1,this.yeaftDebugHistoryError="debug_history_timeout",this.yeaftDebugPanel?.status==="loading"&&(this.yeaftDebugPanel={...this.yeaftDebugPanel,status:"error",error:this.yeaftDebugHistoryError})),this._yeaftDebugHistoryInFlightKey=null,this._fetchYeaftDebugHistoryTimer=null,this._yeaftDebugHistoryPending=null,this._yeaftDebugHistoryLatestDetailRequestId=null,this._yeaftDebugHistoryLatestListRequestId=null,ir(this)}},Math.max(0,Math.min(3e4,3e5-(Date.now()-t.startedAt)))))},openYeaftTurnDebug({sessionId:e=null,turnId:t=null}={}){let s=$e(this,e);if(!s)return;this.workbenchExpanded=!1,this.workbenchMaximized=!1,this.rememberWorkbenchPanelState();let n=`dbgpanel_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`,r=t?"loading":"idle";this.yeaftDebugPanel={open:!0,status:r,requestId:n,agentId:s,sessionId:e||null,turnId:t||null,error:null},t&&this.loadYeaftDebugHistory({groupId:e||void 0,limit:1,dreamLimit:5,detailTurnId:t})},closeYeaftDebugPanel(){this._yeaftDebugDetailRefreshTimer&&clearTimeout(this._yeaftDebugDetailRefreshTimer),this._yeaftDebugDetailRefreshTimer=null,this._yeaftDebugDetailDirty=!1,this._fetchYeaftDebugHistoryTimer&&clearTimeout(this._fetchYeaftDebugHistoryTimer),this._fetchYeaftDebugHistoryTimer=null,this._yeaftDebugHistoryPending=null,this._yeaftDebugHistoryInFlightKey=null,this._yeaftDebugHistoryLatestDetailRequestId=null,this._yeaftDebugHistoryLatestListRequestId=null,this.yeaftDebugHistoryLoading=!1,ir(this);let t=(this.yeaftDebugPanel||{}).turnId||null;if(this.yeaftDebugPanel={open:!1,status:"idle",requestId:null,agentId:null,sessionId:null,turnId:null,error:null},t&&this.yeaftDebugTurnsById&&this.yeaftDebugTurnsById[t]){let s={...this.yeaftDebugTurnsById};delete s[t],this.yeaftDebugTurnsById=s,this.yeaftDebugTurnOrder=(this.yeaftDebugTurnOrder||[]).filter(n=>n!==t),this.yeaftDebugLoops=(this.yeaftDebugLoops||[]).filter(n=>!n||n.turnId!==t)}},agentIdForSession(e){return $e(this,e)},sendYeaftSessionMessage({groupId:e,text:t,mentions:s,attachments:n,quote:r,quickSend:i}){let o=$e(this,e);if(!e||!o||i&&(o!==this.currentAgent||this.connectionState!=="connected"||!this.agents?.some(v=>v.id===o&&v.online)))return!1;let a=Array.isArray(n)?n.filter(v=>v&&v.fileId):[],l=Mt(r),c=a.length>0;if(!t?.trim()&&!c)return;let d=t?.trim()?t:"(attached files)",u=Date.now(),g=`u_${u.toString(36)}_${Math.random().toString(36).slice(2,10)}`,p=xn();this.yeaftPerfTraceByMessageId={...this.yeaftPerfTraceByMessageId||{},[g]:p},kt(this,{traceId:p,phase:"send.prepare",agentId:o,sessionId:e,turnId:g,messageType:"yeaft_session_send",detail:{mentionCount:Array.isArray(s)?s.length:0,attachmentCount:a.length,quoted:!!l}});let f=Ct(this,e);if(f){let v={id:g,messageId:g,clientMessageId:g,stableKey:Qs(o,e,g),uiKey:Qs(o,e,g),type:"user",content:d,timestamp:u,sessionId:e,turnId:g,...l?{quote:l}:{}};if(a.length>0&&(v.attachments=a.map(y=>({fileId:y.fileId,name:y.name,preview:y.preview,isImage:!!y.isImage,mimeType:y.mimeType||""}))),os(this).upsertOverlay({conversationId:f,agentId:o,sessionId:e,row:v}),this.processingConversations[f]=!0,e){let y=_s(o,e);this.yeaftProcessingSessions={...this.yeaftProcessingSessions,...y?{[y]:!0}:{}}}this._turnCompletedConvs?.delete(f),this._closedAt?.[f]&&delete this._closedAt[f],this.getOrCreateExecutionStatus(f),sr(this,f)}let h={type:"yeaft_session_send",agentId:o,id:g,sessionId:e,text:d,mentions:Array.isArray(s)?s:[],perfTraceId:p,...i?{quickSend:{model:i.model,effort:i.effort??null,maxOutputTokens:i.maxOutputTokens??null}}:{},...l?{quote:l}:{}};a.length>0&&(h.attachments=a.map(v=>({fileId:v.fileId,isImage:!!v.isImage}))),kt(this,{traceId:p,phase:"send.websocket_send",agentId:o,sessionId:e,turnId:g,messageType:h.type,bytes:JSON.stringify(h).length}),this.sendWsMessage(h)},cancelYeaftTask({agentId:e=null,sessionId:t,taskId:s}){let n=typeof t=="string"?t.trim():"",r=typeof s=="string"?s.trim():"",i=$e(this,n,e);return!i||!n||!r?!1:(this.yeaftStoppingTasksById={...this.yeaftStoppingTasksById,[sc(i,n,r)]:!0},this.sendWsMessage({type:"yeaft_task_cancel",agentId:i,sessionId:n,taskId:r,clientRequestId:`task_cancel_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}),!0)},continueYeaftHistoryDelta(e,t=null,s=null){let n=e||null,r=$e(this,n,t);if(!r||!n||!Number.isFinite(s))return!1;let i=Le(r,n),o=this.yeaftSessionHistoryState?.[i]||null;if(o?.loading)return!1;let a=this.beginYeaftHistoryLoad({agentId:r,sessionId:n,mode:"delta",preserveLoaded:!0,latestSeq:s});if(!a)return!1;this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[i]:{...this.yeaftSessionHistoryState[i],syncingAfterSeq:s}};let l={type:"yeaft_load_history",agentId:r,sessionId:n,requestId:a.requestId,afterSeq:s,maxRows:Sw,maxBytes:Cw,...typeof o?.streamId=="string"?{streamId:o.streamId}:{},...Number.isFinite(o?.revision)?{revision:o.revision}:{}};return this.sendWsMessage(l)?!0:(Qr(this,{agentId:r,sessionId:n,requestId:a.requestId,error:"history_load_send_failed"}),!1)},clearYeaftHistoryMemory({agentId:e=null,sessionId:t=null,preserveLiveRows:s=!1,preserveSessionOwner:n=!1}={}){let r=e||null,i=t||null,o=r&&i?Le(r,i):null,a={};for(let[h,v]of Object.entries(this._yeaftHistoryWindowPendingByKey||{})){if(!(!o||v?.agentId===r&&v?.sessionId===i)){a[h]=v;continue}clearTimeout(v?.timeout),v?.resolve?.(!1)}this._yeaftHistoryWindowPendingByKey=a;let l={};for(let[h,v]of Object.entries(this._yeaftHistoryPrefetchBySession||{})){if(o&&h!==o){l[h]=v;continue}v.cancelled=!0,v.idle&&typeof globalThis.cancelIdleCallback=="function"?globalThis.cancelIdleCallback(v.handle):clearTimeout(v.handle)}this._yeaftHistoryPrefetchBySession=l;let c={};for(let[h,v]of Object.entries(this._yeaftHistoryResultRefreshByRequestId||{})){if(!(!o||v?.agentId===r&&v?.sessionId===i)){c[h]=v;continue}clearTimeout(v?.timeout),v?.resolve?.(null)}this._yeaftHistoryResultRefreshByRequestId=c;let d=r&&this.yeaftConversationIdsByAgent?.[r]||null,u=o?new Set([d].filter(Boolean)):new Set(Object.values(this.yeaftConversationIdsByAgent||{}).filter(Boolean));!o&&this.yeaftConversationId&&u.add(this.yeaftConversationId);let g={...this.messagesMap||{}};for(let h of u)Array.isArray(g[h])&&(g[h]=o?g[h].filter(v=>(v?.sessionId??v?.groupId??null)!==i?!0:s&&!yt(v)):[]);this.messagesMap=g;let p=h=>{if(!o)return{};let{[o]:v,...y}=h||{};return y};if(this.yeaftSessionHistoryState=p(this.yeaftSessionHistoryState),this.yeaftHistoryCacheState=p(this.yeaftHistoryCacheState),this.yeaftMessageWindowState=p(this.yeaftMessageWindowState),this.yeaftHistoryFocusWindowBySession=p(this.yeaftHistoryFocusWindowBySession),this.yeaftHistoryOutlineBySession=p(this.yeaftHistoryOutlineBySession),o){let h=this._yeaftHistoryOutlineTimeouts?.[o];h&&clearTimeout(h),this._yeaftHistoryOutlineTimeouts=p(this._yeaftHistoryOutlineTimeouts)}else{for(let h of Object.values(this._yeaftHistoryOutlineTimeouts||{}))h&&clearTimeout(h);this._yeaftHistoryOutlineTimeouts={}}if((!o||this.yeaftHistorySearchState?.agentId===r&&this.yeaftHistorySearchState?.sessionId===i)&&(this._yeaftHistorySearchTimeout&&clearTimeout(this._yeaftHistorySearchTimeout),this._yeaftHistorySearchTimeout=null,this.yeaftHistorySearchState={requestId:null,agentId:null,sessionId:null,query:"",senderKey:"",loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,nextCursor:null,error:null}),this._yeaftHistoryRevealLeases=o?Object.fromEntries(Object.entries(this._yeaftHistoryRevealLeases||{}).filter(([,h])=>h?.sessionKey!==o)):{},o||(this.yeaftHasMoreHistory=!1,this.yeaftLoadingMoreHistory=!1,this.yeaftOldestLoadedSeq=null),!n&&i&&this.yeaftSessionAgentById?.[i]===r){let{[i]:h,...v}=this.yeaftSessionAgentById;this.yeaftSessionAgentById=v}this.syncActiveYeaftHistoryLoad()},getYeaftMessageWindowKey(e=null,t=null){let s=e||this.yeaftActiveSessionFilter||null,n=$e(this,s,t);return Le(n,s)},showLatestYeaftMessageWindow(e=null,t=null){let s=this.getYeaftMessageWindowKey(e,t);if(!s||!this.yeaftHistoryFocusWindowBySession?.[s])return!1;let{[s]:n,...r}=this.yeaftHistoryFocusWindowBySession;return this.yeaftHistoryFocusWindowBySession=r,!0},pruneYeaftMessageWindow(e=null,t=null){if(this.currentView!=="yeaft")return;let s=this.getYeaftMessageWindowKey(e,t);Object.values(this._yeaftHistoryRevealLeases||{}).some(r=>r?.sessionKey===s)||(this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[s]:{visibleTurns:tn()}})},expandYeaftMessageWindow(e=null,t=hi(),s=null){if(this.currentView!=="yeaft")return;let n=this.getYeaftMessageWindowKey(e,s),i=(this.yeaftMessageWindowState[n]?.visibleTurns||tn())+Math.max(1,Number.isFinite(t)?Math.floor(t):hi());this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[n]:{visibleTurns:i}}},isYeaftMessageCached(e,t,s=null,n=null){let r=e||this.yeaftActiveSessionFilter||null,i=s||Ct(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=$e(this,r,n),o=s||Ct(this,r,i);if(!o||!t)return!1;let a=(this.messagesMap[o]||[]).filter(v=>v?._historyWindowPrefetched===!0?!1:r?(v?.sessionId??v?.groupId??null)===r:!0),c=a.findIndex(v=>(v?.id||v?.messageId)===t||v?.persistedMessageId===t);if(c<0){let v=(this.messagesMap[o]||[]).find(y=>y?._historyWindowPrefetched===!0&&(y?.sessionId??y?.groupId??null)===r&&((y?.id||y?.messageId)===t||y?.persistedMessageId===t));if(!v)return!1;v._historyWindowPrefetched=!1,a.push(v),a.sort((y,m)=>{let S=Number.isFinite(y?.seq)?y.seq:null,w=Number.isFinite(m?.seq)?m.seq:null;return S!==null&&w!==null&&S!==w?S-w:S!==null&&w===null?-1:S===null&&w!==null?1:(y?.timestamp||0)-(m?.timestamp||0)}),c=a.indexOf(v)}let u=a[c]?._historyWindowKey||null,g=this.getYeaftMessageWindowKey(r,i);if(u){let v=(this.messagesMap[o]||[]).filter(m=>(m?.sessionId??m?.groupId??null)===r&&m?._historyWindowKey===u);return Zl(v).length===0?!1:(this.yeaftHistoryFocusWindowBySession={...this.yeaftHistoryFocusWindowBySession||{},[g]:{windowKey:u,messageId:t,conversationId:o}},this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[g]:{visibleTurns:tn()}},!0)}let p=Zl(a),f=p.findIndex(v=>c>=v.start&&c<v.end);if(f<0)return!1;let h=Math.max(tn(),p.length-f);return this.yeaftMessageWindowState={...this.yeaftMessageWindowState,[g]:{visibleTurns:h}},!0},getYeaftHistoryOutlineState(e=null,t=null){let s=e||this.yeaftActiveSessionFilter||null,n=$e(this,s,t),r=Le(n,s),i=this.yeaftHistoryOutlineBySession[r]||{requestId:null,agentId:n,sessionId:s,loading:!1,results:[],hasMore:!1,nextBeforeSeq:null,nextCursor:null,totalCount:null,loaded:!1,retryAttempt:0,error:null},o=Ct(this,s,n),a=o?this.messagesMap[o]||[]:[],l=new Map((i.results||[]).map(g=>[mi(g),g])),c=0;for(let g of a){if((g?.sessionId??g?.groupId??null)!==s)continue;let p=g.messageId||g.id;if(!p)continue;let f=g.type==="user"&&!!g.clientMessageId&&p===g.clientMessageId,h=g.type==="assistant"&&g.isStreaming===!0;if(!f&&!h)continue;let v=g.type,y=g.turnId||g.threadId||p,m=g.speakerVpId||g.vpId||null,S=mi({role:v,messageId:p,clientMessageId:g.clientMessageId,turnId:y,speakerVpId:m}),w=l.get(S),k=(typeof g.content=="string"?g.content:"").replace(/\s+/g," ").trim();l.set(S,{...w,agentId:n,sessionId:s,messageId:Number.isFinite(w?.seq)?w.messageId:p,...g.clientMessageId?{clientMessageId:g.clientMessageId}:{},turnId:y,role:v,speakerVpId:m||w?.speakerVpId||null,timestamp:g.timestamp||g.ts||w?.timestamp||null,snippet:k.length>180?`${k.slice(0,180).trimEnd()}\u2026`:k||w?.snippet||""}),w||(c+=1)}let d=g=>{let p=typeof g=="number"?g:Date.parse(g||"");return Number.isFinite(p)?p:0},u=Array.from(l.values()).sort((g,p)=>Number.isFinite(g.seq)&&Number.isFinite(p.seq)?g.seq-p.seq:d(g.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=Le(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=Vw(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(),g=mi({role:i,messageId:o,clientMessageId:e.clientMessageId,turnId:l,speakerVpId:c}),p=new Map((r.results||[]).map(S=>[mi(S),S])),f=p.get(g);p.set(g,{...f,agentId:t,sessionId:s,messageId:o,...e.clientMessageId?{clientMessageId:e.clientMessageId}:{},turnId:l,seq:a,role:i,speakerVpId:c,timestamp:e.timestamp||e.ts||f?.timestamp||null,snippet:u.length>180?`${u.slice(0,180).trimEnd()}\u2026`:u||f?.snippet||""});let h=50,v=Array.from(p.values()).sort((S,w)=>(S.seq||0)-(w.seq||0)),y=v.length>h,m=v.slice(-h);return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[n]:{...r,results:m,hasMore:r.hasMore||y,nextBeforeSeq:y&&Number.isFinite(m[0]?.seq)?m[0].seq:r.nextBeforeSeq,totalCount:Number.isFinite(r.totalCount)&&!f?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=Le(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=$e(this,e);return this.currentView==="yeaft"&&this.yeaftActiveSessionFilter===e&&r===t?this.loadYeaftHistoryOutline({force:!0,targetSessionId:e,targetAgentId:t}):!0},loadYeaftHistoryOutline({append:e=!1,force:t=!1,targetSessionId:s=null,targetAgentId:n=null,retryAttempt:r=0}={}){if(this.currentView!=="yeaft"&&!s)return!1;let i=s||this.yeaftActiveSessionFilter||null,o=n||$e(this,i);if(!i||!o)return!1;let a=Le(o,i),l=this.getYeaftHistoryOutlineState(i,o);if(!e&&l.loaded&&!t)return!0;if(e&&(!l.hasMore||!Number.isFinite(l.nextBeforeSeq))||l.loading)return!1;if(!St(this,o,"session_history_outline"))return this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[a]:{...l,error:"unsupported",loading:!1}},!1;let c=`history_outline_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,d={...l,requestId:c,agentId:o,sessionId:i,loading:!0,requestAppend:e,refreshPending:!1,retryAttempt:r,error:null};this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[a]:d};let u=this._yeaftHistoryOutlineTimeouts[a];u&&clearTimeout(u);let g=setTimeout(()=>{let h=this.yeaftHistoryOutlineBySession[a];if(h?.requestId!==c)return;let v={...this._yeaftHistoryOutlineTimeouts};delete v[a],this._yeaftHistoryOutlineTimeouts=v;let y=h.refreshPending===!0;this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[a]:{...h,requestId:null,loading:!1,requestAppend:!1,loaded:y?!1:h.loaded,refreshPending:!1,error:y?null:"timeout"}},y&&this.loadYeaftHistoryOutline({force:!0,targetSessionId:i,targetAgentId:o})},1e4);this._yeaftHistoryOutlineTimeouts={...this._yeaftHistoryOutlineTimeouts,[a]:g};let p=xn(),f={type:"yeaft_load_history_outline",agentId:o,sessionId:i,requestId:c,perfTraceId:p,limit:50,...e&&l.nextCursor?{cursor:l.nextCursor}:{},...e&&!l.nextCursor&&Number.isFinite(l.nextBeforeSeq)?{beforeSeq:l.nextBeforeSeq}:{}};return kt(this,{traceId:p,phase:"history_outline.request_send",agentId:o,sessionId:i,messageType:f.type,bytes:JSON.stringify(f).length,detail:{append:e,limit:f.limit}}),this.sendWsMessage(f),!0},handleYeaftHistoryOutline(e){if(!e?.agentId||!e?.sessionId)return!1;let t=Le(e.agentId,e.sessionId),s=this.yeaftHistoryOutlineBySession[t];if(!s||e.requestId!==s.requestId)return!1;let n=this._yeaftHistoryOutlineTimeouts[t];n&&clearTimeout(n);let r={...this._yeaftHistoryOutlineTimeouts};delete r[t],this._yeaftHistoryOutlineTimeouts=r;let i=Number.isInteger(s.retryAttempt)?s.retryAttempt:0;if(Tw.has(e.error)&&i<Tg.length){let g=Tg[i],p=setTimeout(()=>{let f=this.yeaftHistoryOutlineBySession[t];if(f?.requestId!==e.requestId||f.loading!==!0)return;let h={...this._yeaftHistoryOutlineTimeouts};delete h[t],this._yeaftHistoryOutlineTimeouts=h;let v=f.refreshPending===!0;this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[t]:{...f,requestId:null,loading:!1,refreshPending:!1}},this.loadYeaftHistoryOutline({append:v?!1:s.requestAppend===!0,force:!0,targetSessionId:e.sessionId,targetAgentId:e.agentId,retryAttempt:i+1})},g);return this._yeaftHistoryOutlineTimeouts={...this._yeaftHistoryOutlineTimeouts,[t]:p},!0}let o=Array.isArray(e.results)?e.results.map(g=>({...g,agentId:e.agentId,sessionId:e.sessionId})):[],a=s.requestAppend?[...s.results||[],...o]:o,l=new Map(a.filter(g=>g?.messageId).map(g=>[mi(g),g])),c=Array.from(l.values()).sort((g,p)=>(g.seq||0)-(p.seq||0)),d=s.refreshPending===!0;this.yeaftHistoryOutlineBySession={...this.yeaftHistoryOutlineBySession,[t]:{...s,requestId:null,loading:!1,requestAppend:!1,refreshPending:!1,loaded:d?!1:!e.error,results:c,hasMore:!!e.hasMore,nextBeforeSeq:Number.isFinite(e.nextBeforeSeq)?e.nextBeforeSeq:null,nextCursor:e.nextCursor&&typeof e.nextCursor=="object"?e.nextCursor:null,totalCount:Number.isFinite(e.totalCount)?e.totalCount:s.totalCount,error:d?null:e.error||null}};let u=this._yeaftHistoryResultRefreshByRequestId?.[e.requestId];if(u?.source==="outline"){clearTimeout(u.timeout);let{[e.requestId]:g,...p}=this._yeaftHistoryResultRefreshByRequestId;this._yeaftHistoryResultRefreshByRequestId=p;let f=c.find(h=>u.messageId&&h?.messageId===u.messageId||u.entryId&&h?.entryId===u.entryId);u.resolve(f||null)}return d&&this.loadYeaftHistoryOutline({force:!0,targetSessionId:e.sessionId,targetAgentId:e.agentId}),!0},searchYeaftHistory(e,{append:t=!1,senderKey:s=""}={}){if(this.currentView!=="yeaft")return!1;let n=typeof e=="string"?e.trim():"",r=typeof s=="string"&&(s==="user"||s.startsWith("vp:"))?s.slice(0,103):"",i=this.yeaftActiveSessionFilter||null,o=$e(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(!St(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=xn(),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 kt(this,{traceId:c,phase:"history_search.request_send",agentId:o,sessionId:i,messageType:d.type,bytes:JSON.stringify(d).length,detail:{append:t,limit:d.limit,queryLength:Array.from(n).length,senderFilter:!!r}}),this.sendWsMessage(d),!0},handleYeaftHistorySearchResult(e){let t=this.yeaftHistorySearchState||{};if(!e||e.requestId!==t.requestId||e.agentId!==t.agentId||e.sessionId!==t.sessionId||e.query!==t.query||(e.senderKey||"")!==t.senderKey)return!1;this._yeaftHistorySearchTimeout&&(clearTimeout(this._yeaftHistorySearchTimeout),this._yeaftHistorySearchTimeout=null);let s=Array.isArray(e.results)?e.results.map(o=>({...o,agentId:e.agentId,sessionId:e.sessionId})):[],n=new Map((t.results||[]).map(o=>[Gr(o),o]));for(let o of s)(o?.entryId||o?.messageId)&&n.set(Gr(o),o);let r=Array.from(n.values());this.yeaftHistorySearchState={...t,loading:!1,results:r,hasMore:!!e.hasMore,nextBeforeSeq:Number.isFinite(e.nextBeforeSeq)?e.nextBeforeSeq:null,nextCursor:e.nextCursor&&typeof e.nextCursor=="object"?e.nextCursor:null,error:e.error||null};let i=this._yeaftHistoryResultRefreshByRequestId?.[e.requestId];if(i){clearTimeout(i.timeout);let{[e.requestId]:o,...a}=this._yeaftHistoryResultRefreshByRequestId;this._yeaftHistoryResultRefreshByRequestId=a;let l=r.find(c=>i.messageId&&c?.messageId===i.messageId||i.entryId&&c?.entryId===i.entryId);i.resolve(l||null)}return!0},reloadYeaftHistoryResult(e){let t=e?.sessionId||null,s=e?.agentId||null,n=this.yeaftHistorySearchState||{},i=n.agentId===s&&n.sessionId===t&&(Array.from(String(n.query||"").trim()).length>0||!!n.senderKey);if(!t||!s)return Promise.resolve(null);let o=i&&n.query||"",a=i&&n.senderKey||"",l=null,c=!1;if(i)c=this.searchYeaftHistory(o,{senderKey:a}),l=this.yeaftHistorySearchState?.requestId||null;else{let d=Le(s,t),u=this.yeaftHistoryOutlineBySession?.[d]||null;u?.loading===!0&&u.requestAppend!==!0&&u.requestId?(c=!0,l=u.requestId):(c=this.loadYeaftHistoryOutline({force:!0,targetSessionId:t,targetAgentId:s}),l=this.yeaftHistoryOutlineBySession?.[d]?.requestId||null)}return!c||!l?Promise.resolve(null):new Promise(d=>{let u=setTimeout(()=>{if(this._yeaftHistoryResultRefreshByRequestId?.[l]?.resolve!==d)return;let{[l]:p,...f}=this._yeaftHistoryResultRefreshByRequestId;this._yeaftHistoryResultRefreshByRequestId=f,d(null)},1e4);this._yeaftHistoryResultRefreshByRequestId={...this._yeaftHistoryResultRefreshByRequestId||{},[l]:{agentId:s,sessionId:t,query:o,senderKey:a,source:i?"search":"outline",messageId:e?.messageId||null,entryId:e?.entryId||null,resolve:d,timeout:u}}})},loadYeaftHistoryWindow(e,{validateCached:t=!1}={}){let s=e?.sessionId||this.yeaftActiveSessionFilter||null,n=e?.agentId||$e(this,s),r=Gr(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=Ct(this,s,n);if((this.messagesMap[i]||[]).some(h=>(h?.sessionId??h?.groupId??null)===s&&h?.historyEntryId===e.entryId&&h?.historyIndexGeneration===e.indexGeneration)&&!t)return Promise.resolve(!0);let a=Le(n,`${s}:${r}:generation:${e.indexGeneration}`),l=this._yeaftHistoryWindowPendingByKey||{};if(l[a]?.promise)return l[a].promise;let c=`history_window_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,d=null,u=null,g=new Promise(h=>{d=h});Object.defineProperty(g,"error",{get:()=>u});let p=h=>{u=h||null},f=setTimeout(()=>{if(this._yeaftHistoryWindowPendingByKey?.[a]?.requestId!==c)return;let{[a]:v,...y}=this._yeaftHistoryWindowPendingByKey;this._yeaftHistoryWindowPendingByKey=y,d(!1)},1e4);return this._yeaftHistoryWindowPendingByKey={...l,[a]:{requestId:c,agentId:n,sessionId:s,entryId:e.entryId||null,indexGeneration:Number.isFinite(e.indexGeneration)?e.indexGeneration:null,entryStartSeq:Number.isFinite(e.entryStartSeq)?e.entryStartSeq:null,resultId:r,messageId:e.messageId,prefetch:!t,validateCached:!!t,setError:p,resolve:d,timeout:f,promise:g}},this.sendWsMessage({type:"yeaft_load_history_window",agentId:n,sessionId:s,requestId:c,prefetch:!t,...e.entryId?{entryId:e.entryId}:{},...Number.isFinite(e.indexGeneration)?{indexGeneration:e.indexGeneration}:{},...Number.isFinite(e.entryStartSeq)?{entryStartSeq:e.entryStartSeq}:{},anchorMessageId:e.messageId,anchorSeq:e.seq,beforeTurns:5,afterTurns:5,maxRows:200,maxBytes:512*1024}),g},beginYeaftHistoryReveal(e){let t=e?.sessionId||null,s=e?.agentId||null,n=Ct(this,t,s);if(!t||!s||!n)return null;let r=Le(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=Ct(this,r,i);if(!n||!r||!i||!o||!e?.messageId)return this.finishYeaftHistoryReveal(n),!1;let a=e,l=this.loadYeaftHistoryWindow(a,{validateCached:!0}),c=await l;if(!c&&l.error==="stale_result"){let u=await this.reloadYeaftHistoryResult(a);u&&(a=u,l=this.loadYeaftHistoryWindow(a,{validateCached:!0}),c=await l)}if(!c)return this.finishYeaftHistoryReveal(n),!1;if(this.currentView!=="yeaft"||this.yeaftActiveSessionFilter!==r||$e(this,r)!==i||Ct(this,r,i)!==o)return this.finishYeaftHistoryReveal(n),!1;let d=this.revealYeaftMessage(r,a.messageId,o,i);return(!d||s)&&this.finishYeaftHistoryReveal(n),d},pendingYeaftHistoryWindow(e){let s=Object.entries(this._yeaftHistoryWindowPendingByKey||{}).find(([,i])=>i?.requestId===e?.requestId);if(!s)return null;let[n,r]=s;return e.agentId!==r.agentId||e.sessionId!==r.sessionId||e.entryId&&r.entryId&&e.entryId!==r.entryId||Number.isFinite(e.indexGeneration)&&Number.isFinite(r.indexGeneration)&&e.indexGeneration!==r.indexGeneration?null:{pendingKey:n,pending:r}},handleYeaftHistoryWindow(e,t=null){let s=this.pendingYeaftHistoryWindow(e);if(!s)return!1;let{pendingKey:n,pending:r}=s;r.prefetch===!0&&e.prefetch!==!0&&r.validateCached!==!0&&(e.prefetch=!0),clearTimeout(r.timeout);let{[n]:i,...o}=this._yeaftHistoryWindowPendingByKey;this._yeaftHistoryWindowPendingByKey=o;let a=!e.error&&!!t&&this.isYeaftMessageCached(r.sessionId,r.messageId,t,r.agentId);return r.setError?.(e.error||null),r.resolve(!!a),!!a},createYeaftSession({displayName:e,vpIds:t,defaultVpId:s,workDir:n,agentId:r}={}){let i=Array.isArray(t)?t.slice():[],o=s&&i.includes(s)?s:i[0]||null,a=(e||"").trim(),l=(n||"").trim(),c={roster:i,defaultVpId:o};return a&&(c.name=a),l&&(c.workDir=l),this.sessionCrudRequest("create",c,{agentId:r})},handleYeaftOutput(e){if(!e)return;let t=e.agentId||this.yeaftAgentId||this.currentAgent||null,s=e.conversationId||e.event?.conversationId||null,n=nr(this,t,s);if(e.data&&n){if(e.data.type!=="result")return;let a=Uu(this,t,s);if(!a)return;let l=e.turnId?$n(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&&(kt(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=$s(this,a,e.conversationId);if(l){let d=rc(e,e.turnId||"session");for(let u of["retry","retrying","thinking"])tr(this,l,`${u}:${d}`);e.data?.tool_use_result&&tr(this,l,`tool:${d}`)}let c=e.turnId?$n(this,e.agentId||null,e.turnId):"";if(c&&this.activeVpTurns?.[c]?.retryAttempt){let{retryAttempt:d,retryMax:u,retryDelayMs:g,retryReason:p,retryRecoveryMode:f,...h}=this.activeVpTurns[c];this.activeVpTurns={...this.activeVpTurns,[c]:h}}if(l){let d=e.sessionId??e.groupId??null,u=Og(this,d,a),g=a&&this.yeaftConversationIdsByAgent?this.yeaftConversationIdsByAgent[a]:null,p=as(this,a);p&&p.targetConversationId!==l?ri(this,a,l):!p&&g&&g!==l&&!String(g).startsWith("yeaft-local-")&&(ls(this,g,l,{removeSource:g!==this.yeaftConversationId}),si(this,a,g,l)),kl(this,a,l);let f=as(this,a,l),h=f?.sourceConversationId||g,v=!u&&h===this.yeaftConversationId;if(this.currentView==="yeaft"&&a&&h&&h!==l){let k=!v&&(!!f||String(h).startsWith("yeaft-local-"));ls(this,h,l,{removeSource:k}),v?yo(this,a,h,l):k&&ni(this,a,l)}a&&(this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[a]:l}),(u||!this.yeaftConversationId)&&(this.yeaftConversationId=l),u&&(this.activeConversations=[l]),this.messagesMap[l]||(this.messagesMap[l]=[]);let y=this._currentYeaftAgentId,m=this._currentYeaftSessionId,S=this._currentYeaftVpId,w=this._currentYeaftTurnId,b=this._currentYeaftThreadId;a&&(this._currentYeaftAgentId=a),d!=null&&(this._currentYeaftSessionId=d),e.vpId&&(this._currentYeaftVpId=e.vpId),e.turnId&&(this._currentYeaftTurnId=e.turnId),e.threadId&&(this._currentYeaftThreadId=e.threadId);try{let k=typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();if(this.handleAssistantOutputFrame(l,e.data,a),e.perfTraceId){let ne=typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();kt(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:ne-k}),wo(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 P=e.data,x=P?.message?.id||P?.id||null,K=qw(x),D=Array.isArray(P?.message?.content)?P.message.content:[],j=D.some(ne=>ne?.type==="tool_use"),$=!!P?.tool_use_result||D.some(ne=>ne?.type==="tool_result");if(d){let ne=!$&&!Fw(this,l,d)&&(P?.type==="user"||P?.type==="assistant"&&!j)?K:null,L=Le(e.agentId||null,d),C=this.yeaftSessionHistoryState[L]||{},M=Number.isFinite(C.latestSeq)?C.latestSeq:-1;ne!==null&&ne>M&&(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[L]:{...C,latestSeq:ne}})}}finally{this._currentYeaftAgentId=y,this._currentYeaftSessionId=m,this._currentYeaftVpId=S,this._currentYeaftTurnId=w,this._currentYeaftThreadId=b}}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=$s(this,e.agentId||null,e.conversationId);if(o){let a=rc(i);r.type==="tool_start"?ti(this,o,`tool:${a}`):r.type==="tool_end"?tr(this,o,`tool:${a}`):r.type==="llm_retry"?ti(this,o,`retry:${a}`):r.type==="vp_async_task_wait_start"?ti(this,o,`async-wait:${a}`):r.type==="vp_async_task_wait_end"&&tr(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=$s(this,e.agentId||null,e.conversationId);if(!a||!r.requestId)break;let l=Rg(e,r,a),c=()=>{let d=this.messagesMap[a]||[],u=Eg(d,l,a);if(u){if(u.askAnswered||u.askExpired)return!0;u.toolName="AskUserQuestion",r.toolCallId&&!u.toolId&&(u.toolId=r.toolCallId),u.agentId=l.agentId||u.agentId||null;for(let h of["sessionId","vpId","turnId","threadId"])l[h]&&(u[h]=l[h]);u.hasResult=!1,u.askRequestId=r.requestId,u.askQuestions=r.questions||[],u.askCreatedAt=r.createdAt||null,u.askExpiresAt=r.expiresAt||null,u.isHistory=!1;let f=Dg(this,l);return f&&tc(u,f),this.messagesMap={...this.messagesMap,[a]:d.slice()},!0}if(!r.replay)return!1;let g={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=Dg(this,l);return p&&tc(g,p),d.push(g),this.messagesMap={...this.messagesMap,[a]:d.slice()},!0};if(!c()){let d=0,u=setInterval(()=>{d+=1,(c()||d>=10)&&clearInterval(u)},200)}break}case"ask_user_answered":case"ask_user_answer_rejected":case"ask_user_expired":{let a=$s(this,e.agentId||null,e.conversationId);if(!a||!r.requestId)break;let l=this.messagesMap[a]||[],c=Rg(e,r,a),d=Eg(l,c,a);if(!d){Ow(this,c,r);break}tc(d,r),this.messagesMap={...this.messagesMap,[a]:l.slice()};break}case"session_ready":{let a=r.conversationId,l=e.agentId||this.currentAgent;if(nr(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,g=c||u,p=r.sessionId||e.sessionId||null,f=Og(this,p,l),h=as(this,l);h&&h.targetConversationId!==a?ri(this,l,a):!h&&c&&c!==a&&!String(c).startsWith("yeaft-local-")&&si(this,l,c,a),kl(this,l,a);let y=as(this,l,a)?.sourceConversationId||g,m=!f&&y===this.yeaftConversationId;if(y&&y!==a){let P=!m;ls(this,y,a,{removeSource:P}),m?yo(this,l,y,a):P&&ni(this,l,a)}else this.messagesMap[a]||(this.messagesMap[a]=[]);l&&(this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[l]:a},this.cacheYeaftAgentStatus(l,r,{allowBootstrapCatalog:f})),f&&(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[P,x]of Object.entries(this.yeaftActiveTasksBySession||{})){let K=Object.fromEntries(Object.entries(x||{}).filter(([,j])=>j?.id&&j.status==="running"&&j.agentId&&j.agentId!==l)),D=nc(K);Object.keys(D).length>0&&(w[P]=D)}for(let P of S){if(!P?.id||!P.sessionId||P.status!=="running")continue;let x=Le(l,P.sessionId);w[x]={...w[x]||{},[P.id]:{...P,agentId:l}}}this.yeaftActiveTasksBySession=w,f&&(r.yeaftDir&&(this.yeaftYeaftDir=r.yeaftDir),this.yeaftStatus={skills:r.skills,mcpServers:r.mcpServers,tools:r.tools,multiVp:!!r.multiVp}),(f||!this.yeaftConversationId)&&(this.yeaftConversationId=a),f&&(this.activeConversations=[a]);let b=e.agentId||this.currentAgent||null,k=b||"__current__";this._yeaftVpSubscribedAgentKey!==k&&(this._yeaftVpSubscribedAgentKey=k,this.sendWsMessage(b?{type:"yeaft_vp_subscribe",agentId:b}:{type:"yeaft_vp_subscribe"}));break}case"yeaft_status":{let a=e.agentId||this.currentAgent;a&&this.cacheYeaftAgentStatus(a,r);break}case"context_usage":break;case"turn_open":{if(!r.turnId)break;let a={turnId:r.turnId,userPrompt:r.userPrompt||"",vpId:r.vpId||e.vpId||null,sessionId:r.sessionId||e.sessionId||null,openedAt:r.at||Date.now(),closedAt:null,totalMs:0,inputTokens:0,outputTokens:0,totalTokens:0,loopCount:0,memoryLoaded:null,memoryLoadedMeta:null,memoryAdjust:null,tools:[],detailsLoaded:!0};this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:a};let l=$n(this,e.agentId||null,r.turnId),c=this.activeVpTurns?.[l];c&&Number.isFinite(r.at)&&(this.activeVpTurns={...this.activeVpTurns,[l]:{...c,startedAt:r.at}}),this.yeaftDebugTurnOrder.includes(r.turnId)||(this.yeaftDebugTurnOrder=[...this.yeaftDebugTurnOrder,r.turnId]);break}case"turn_close":{if(!r.turnId)break;let a=this.yeaftDebugTurnsById[r.turnId];if(!a)break;this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...a,closedAt:Date.now(),...Number.isFinite(r.totalMs)?{totalMs:r.totalMs}:{},...Number.isFinite(r.inputTokens)?{inputTokens:r.inputTokens}:{},...Number.isFinite(r.outputTokens)?{outputTokens:r.outputTokens}:{},...Number.isFinite(r.totalTokens)?{totalTokens:r.totalTokens}:{},loopCount:r.loopCount||a.loopCount||0,...typeof r.model=="string"&&r.model?{model:r.model}:{},...typeof r.effort=="string"&&r.effort?{effort:r.effort}:{}}};break}case"memory_used":{if(!r.turnId)break;let a=this.yeaftDebugTurnsById[r.turnId];if(!a)break;this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...a,memoryLoaded:Array.isArray(r.loaded)?r.loaded:[],memoryLoadedMeta:r.meta||null}};break}case"dream_memory_loaded":{let a=Array.isArray(r.resident)?r.resident:[];if(r.turnId){let c=this.yeaftDebugTurnsById[r.turnId];c&&(this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...c,dreamMemoryLoaded:a,dreamMemoryLoadedInto:r.loadedInto||"system_prompt.memory"}})}let l={};for(let c of a){let d=c&&typeof c.scope=="string"?c.scope:null,u=d&&/^sessions\/[^/]+$/.test(d)?d:d&&/^group\/[^/]+$/.test(d)?`sessions/${d.slice(6)}`:null;u&&(l[u]={scope:u,sourceScope:d,sessionId:u.slice(9),turnId:r.turnId||null,vpId:r.vpId||null,loadedInto:r.loadedInto||"system_prompt.memory",summary:c.summary||"",truncated:!!c.truncated,receivedAt:Date.now()})}Object.keys(l).length>0&&(this.yeaftDreamPromptLoads={...this.yeaftDreamPromptLoads,...l});break}case"memory_adjust":{if(!r.turnId)break;let a=this.yeaftDebugTurnsById[r.turnId];if(!a)break;this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...a,memoryAdjust:{sessionKey:r.sessionKey||null,added:r.added||0,evicted:r.evicted||0,skipped:r.skipped||0,reason:r.reason||""}}};break}case"tool_exec":{if(this.scheduleYeaftDebugDetailRefresh(e,r.turnId),!r.turnId)break;let a=this.yeaftDebugTurnsById[r.turnId];if(!a)break;let l=[...a.tools||[],{loopNumber:r.loopNumber||0,callId:r.callId||null,name:r.name||"?",durationMs:r.durationMs||0,isError:!!r.isError}];this.yeaftDebugTurnsById={...this.yeaftDebugTurnsById,[r.turnId]:{...a,tools:l}};break}case"loop":{if(this.scheduleYeaftDebugDetailRefresh(e,r.turnId),this.yeaftDebugLoops.push({turnId:r.turnId||null,loopNumber:r.loopNumber||0,model:r.model,usage:r.usage||{inputTokens:0,outputTokens:0,totalTokens:0},latencyMs:r.latencyMs,ttfbMs:r.ttfbMs,stopReason:r.stopReason,at:typeof r.at=="number"?r.at:null,sessionId:e.sessionId||null,vpId:e.vpId||r.vpId||null}),this.yeaftDebugLoops.length>Fg){let a=ig({loops:this.yeaftDebugLoops,turnsById:this.yeaftDebugTurnsById,turnOrder:this.yeaftDebugTurnOrder,maxLoops:Math.max(Fg,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=$n(this,e.agentId||null,e.turnId),l=this.activeVpTurns?.[a];if(!l)break;let c=r.reason==="stream_idle_timeout"?"stream_idle_timeout":"transient_error";this.activeVpTurns={...this.activeVpTurns,[a]:{...l,retryAttempt:r.attempt||0,retryMax:r.maxRetries||0,retryDelayMs:r.delayMs||0,retryReason:c,retryRecoveryMode:r.recoveryMode||"restart"}};break}case"recall":case"fallback":case"thinking_delta":break;case"reflection":{let a=$s(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]||[],g=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:g,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||$e(this,a.sessionId),c=Le(l,a.sessionId),d={...a,agentId:l},u={...this.yeaftActiveTasksBySession},g={...u[c]||{}};a.status==="running"?g[a.id]=d:delete g[a.id];let p=nc(g);if(Object.keys(p).length>0?u[c]=p:delete u[c],this.yeaftActiveTasksBySession=u,a.status!=="running"){let{[sc(l,a.sessionId,a.id)]:f,...h}=this.yeaftStoppingTasksById||{};this.yeaftStoppingTasksById=h}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||$e(this,l);if(a&&l&&r.success===!1){let{[sc(c,l,a)]:u,...g}=this.yeaftStoppingTasksById||{};this.yeaftStoppingTasksById=g}let d=r.task;if(d?.id&&d.sessionId){let u=Le(c,d.sessionId),g={...this.yeaftActiveTasksBySession},p={...g[u]||{}};d.status==="running"?p[d.id]={...d,agentId:c}:delete p[d.id];let f=nc(p);Object.keys(f).length>0?g[u]=f:delete g[u],this.yeaftActiveTasksBySession=g}break}case"sub_agent_event":{let a=$s(this,e.agentId||null,e.conversationId)||"unknown",l=r.agentId;if(!l)break;let c=r.payload||{},d=`${a}:${l}`,u=this.yeaftSubAgentCards[d],g=this.messagesMap[a]||[],p=u?u.anchorMsgId:g.length>0&&g[g.length-1].id||null,f=u?u.anchorOrder:g.length,h=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:f,updatedAt:Date.now(),sessionId:e.sessionId||null};switch(c.agentName&&!h.agentName&&(h.agentName=c.agentName),c.type){case"sub_agent_status":h.status=c.status||h.status,c.error&&(h.error=c.error);break;case"text_delta":break;case"tool_use":case"tool_call":h.toolCallCount=Number(h.toolCallCount||0)+1;break;case"tool_start":break;case"tool_result":case"tool_end":break;case"sub_agent_turn_end":{h.turns+=1;let v=typeof c.content=="string"?c.content.trim():"";v&&(h.text=h.text?`${h.text}
|
|
9
9
|
|
|
10
10
|
${v}`:v),h.status!=="failed"&&h.status!=="closed"&&(h.status=c.status||"idle");break}case"error":c.error&&(h.error=c.error.message||String(c.error));break;default:break}h.updatedAt=Date.now(),this.yeaftSubAgentCards={...this.yeaftSubAgentCards,[d]:h};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=Le(l,c),u=e.perfTraceId||this.yeaftHistoryPerfTraceBySession?.[d];u&&kt(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 g=r.mode==="delta"?"delta":"recent",p=this.yeaftSessionHistoryState[d]||{},f=Number.isFinite(r.latestSeq)?r.latestSeq:Number.isFinite(p.latestSeq)?p.latestSeq:null,h=Number.isFinite(r.nextBeforeSeq)?r.nextBeforeSeq:Number.isFinite(r.oldestSeq)?r.oldestSeq:Number.isFinite(p.serverOldestFetchedSeq)?p.serverOldestFetchedSeq:Number.isFinite(p.oldestSeq)?p.oldestSeq:null,v=g==="delta"?{...p,loaded:!0,loading:!1,latestSeq:f,syncingAfterSeq:null,count:(p.count||0)+(r.count||0)}:{...p,loaded:!0,loading:!1,hasMore:!!r.hasMore,serverHasMore:!!r.hasMore,oldestSeq:h,serverOldestFetchedSeq:h,count:typeof r.count=="number"?r.count:0,latestSeq:f,syncingAfterSeq:null},y=a.requestId?this.finishYeaftHistoryLoad(a,v,"completion"):null;y||(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState,[d]:v});let m=Le(l?this.currentAgent:null,this.yeaftActiveSessionFilter??null);if(d===m)g==="recent"&&(this.yeaftHasMoreHistory=v.hasMore,this.yeaftOldestLoadedSeq=v.serverOldestFetchedSeq),this.yeaftLoadingMoreHistory=!!y?.loading;else if(this.yeaftLoadingMoreHistory){let S=this.yeaftSessionHistoryState[m]||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(f=>f.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,g=a?.activeSessionKey&&a.sessions?.[a.activeSessionKey]?.agentId||null;if(this.currentView==="yeaft"&&u){let p=g||$e(this,u,e.agentId||null),f=Le(p,u),h=this.yeaftSessionHistoryState[f]||null;this.setActiveSessionFilter(u,{agentId:p,force:d!==p||Ou(u,c,h)})}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(),l=this._sessionCrudPending&&this._sessionCrudPending.get(r.requestId);if(r.op==="copy"&&l?.agentId&&l.agentId!==e.agentId)break;r.op==="copy"&&r.projectsAuthoritative===!0&&Array.isArray(r.projects)&&this.applySessionCatalogSnapshot(this.sessionCatalog,r.projects),a&&a.applyCrudResult(r,e.agentId||null,{activate:r.op!=="copy"}),r.ok&&r.op==="delete"&&r.sessionId&&e.agentId&&this.clearYeaftHistoryMemory({agentId:e.agentId,sessionId:r.sessionId}),l&&(()=>{if(this._sessionCrudPending?.get(r.requestId)!==l)return;this._sessionCrudPending.delete(r.requestId);let d=r.session||r.group||null,u=d&&e.agentId&&!d.agentId?{...d,agentId:e.agentId}:d,g=r.sessionId||null,p=r.sessions||null;l.resolve({ok:!!r.ok,op:r.op,session:u,sessionId:g,sessions:p,config:r.config||null,error:r.error||null})})();break}case"vp_turn_start":{if(!r.turnId||!r.vpId)break;let a=El(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=_s(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=$n(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,...g}=this.stoppingVpTurnIds;this.stoppingVpTurnIds=g;let p=r.sessionId||c?.sessionId||null,f=e.agentId||c?.agentId||null,h=r.vpId||c?.vpId||null;if(!(p&&h?Object.values(this.activeVpTurns||{}).some(b=>b?.vpId===h&&Dt(b,p,f)):!1)&&p&&h){let b={...this.vpStatuses||{}},k=!1;for(let[P,x]of Object.entries(b))x?.vpId===h&&Dt(x,p,f)&&vi.has(x.state)&&(b[P]={...x,state:"idle",turnId:null,since:r.ts||Date.now()},k=!0);k&&(this.vpStatuses=b)}this.clearYeaftSessionProcessingIfIdle(p,{agentId:f});let m={end_turn:"completed",route_forward:"completed",aborted:"aborted",errored:"errored",error:"errored",cancelled:"cancelled",canceled:"cancelled"}[r.reason]||"completed",S=Date.now(),w=$s(this,e.agentId||null,e.conversationId);if(w&&Array.isArray(this.messagesMap[w])){let b=this.messagesMap[w],k=wg(b,r);for(let P=0;P<b.length;P++){let x=b[P];if(!x||x.type!=="assistant")continue;let K=x.sessionId??x.groupId;r.sessionId&&K&&K!==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=m,x.turnEndAt=S,x.turnEndReason=r.reason||null,r.detail&&(x.turnEndDetail=r.detail),Number.isFinite(r.durationMs)&&(x.turnDurationMs=r.durationMs),k=!0)}k&&(this.messagesMap={...this.messagesMap,[w]:b.slice()}),this.pruneConversationMessageRetention(w,p,f)}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 f of a){let h=$n(this,e.agentId||null,f),v=this.activeVpTurns?.[h]||null;(!v||Dt(v,v.sessionId,e.agentId||null))&&d.add(h)}if(c)for(let[f,h]of Object.entries(this.activeVpTurns||{}))!h||h.vpId!==c||Dt(h,l,e.agentId||null)&&d.add(f);if(d.size===0)break;let u=l,g={...this.activeVpTurns||{}},p={...this.stoppingVpTurnIds||{}};for(let f of d){let h=g[f];!u&&h?.sessionId&&(u=h.sessionId),delete g[f],delete p[f]}this.activeVpTurns=g,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])=>!Dt(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])=>!Dt(l,a,e.agentId||null))),this.clearYeaftSessionProcessingIfIdle(a,{agentId:e.agentId||null,ignoreStatuses:!0})):r.all&&xg(this,e.agentId||null);break}case"vp_typing_start":{if(!r.vpId)break;let a=$s(this,e.agentId||null,e.conversationId);if(!a)break;this.yeaftVpTyping=tg(this.yeaftVpTyping,a,r.vpId);break}case"vp_typing_end":{if(!r.vpId)break;let a=$s(this,e.agentId||null,e.conversationId);if(!a)break;this.yeaftVpTyping=sg(this.yeaftVpTyping,a,r.vpId);break}case"vp_status_changed":{if(!r.vpId||!r.state)break;if(o){let u=rc(i);if(r.state==="thinking"||r.state==="retrying"||r.state==="tool")ti(this,o,`${r.state}:${u}`);else if(r.state==="streaming"||r.state==="idle"||r.state==="error")for(let g of["thinking","retrying","tool"])tr(this,o,`${g}:${u}`)}let a=r.sessionId||null,l=e.agentId||null,c=Eo(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&&vi.has(r.state)){let u=_s(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,g=Eo(e.agentId||null,u,d.vpId);c[g]={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,g=Eo(e.agentId||null,u,d.vpId);c[g]={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=kw(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,g=p=>{let f=this.yeaftDreamLatest[p]||null;return{scope:p,phase:a,status:d?"error":c?"success":"running",startedAt:f?.startedAt&&u?f.startedAt:r?.ts||f?.startedAt||Date.now(),finishedAt:c||d?r?.ts||Date.now():null,mergedCount:typeof r?.mergedCount=="number"?r.mergedCount:typeof r?.targets=="number"?r.targets:f?.mergedCount??null,error:d?r?.error||"unknown":null,manual:typeof r?.manual=="boolean"?r.manual:f?.manual??!1,durationMs:typeof r?.duration=="number"?r.duration:typeof r?.durationMs=="number"?r.durationMs:f?.durationMs??null,llmCallCount:typeof r?.llmCallCount=="number"?r.llmCallCount:f?.llmCallCount??0,inputTokens:typeof r?.inputTokens=="number"?r.inputTokens:f?.inputTokens??0,outputTokens:typeof r?.outputTokens=="number"?r.outputTokens:f?.outputTokens??0,totalTokens:typeof r?.totalTokens=="number"?r.totalTokens:f?.totalTokens??0,metrics:r?.metrics||f?.metrics||null,passBreakdown:r?.passBreakdown||r?.metrics?.passBreakdown||f?.passBreakdown||null,isRunning:u}};if(l==="*"){let p={...this.yeaftDreamLatest,"*":g("*")};for(let f of Object.keys(this.yeaftDreamLatest))f!=="*"&&(p[f]=g(f));this.yeaftDreamLatest=p}else this.yeaftDreamLatest={...this.yeaftDreamLatest,[l]:g(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>Vg&&a.splice(0,a.length-Vg),this.yeaftDreamEvents={...this.yeaftDreamEvents,[e]:a}},fetchExpertRoleDefinitions(){if(this.expertRoleDefinitions)return;let e=this.currentAgent;e&&this.sendWsMessage({type:"get_expert_roles",agentId:e})},setYeaftSidebarEnabled(e){try{typeof localStorage<"u"&&localStorage.removeItem("yeaft-sidebar-enabled")}catch{}},vpCrudRequest(e,t){(!this._vpCrudPending||typeof this._vpCrudPending.get!="function")&&(this._vpCrudPending=new Map);let s="vpc_"+Date.now().toString(36)+"_"+Math.random().toString(36).slice(2,8),r={create:"yeaft_vp_create",update:"yeaft_vp_update",delete:"yeaft_vp_delete",read:"yeaft_vp_read"}[e];if(!r)return Promise.resolve({ok:!1,op:e,error:{code:"bad_op",message:"unknown op: "+e}});let i={type:r,requestId:s};return e==="create"||e==="update"?i.payload=t||{}:i.vpId=t,new Promise(o=>{let a=setTimeout(()=>{this._vpCrudPending&&this._vpCrudPending.has(s)&&(this._vpCrudPending.delete(s),o({ok:!1,op:e,error:{code:"timeout",message:"vp_crud timeout"}}))},1e4);this._vpCrudPending.set(s,{resolve:l=>{clearTimeout(a),o(l)}}),this.sendWsMessage(i)})},sessionCrudRequest(e,t,s={}){(!this._sessionCrudPending||typeof this._sessionCrudPending.get!="function")&&(this._sessionCrudPending=new Map);let n="grc_"+Date.now().toString(36)+"_"+Math.random().toString(36).slice(2,8),i={list:"yeaft_list_sessions",create:"yeaft_create_session",copy:"yeaft_copy_session",rename:"yeaft_rename_session",update:"yeaft_update_session",update_config:"yeaft_update_session_config",archive:"yeaft_archive_session",delete:"yeaft_delete_session",add_member:"yeaft_session_add_member",remove_member:"yeaft_session_remove_member",set_default_vp:"yeaft_session_set_default_vp",reorder:"reorder_yeaft_sessions",scan_workdir:"yeaft_scan_workdir_sessions",restore:"yeaft_restore_session"}[e];if(!i)return Promise.resolve({ok:!1,op:e,error:{code:"bad_op",message:"unknown op: "+e}});let o={type:i,requestId:n};e==="create"?o.payload=t||{}:t&&typeof t=="object"&&Object.assign(o,t);let a=s&&s.agentId?s.agentId:null;a&&(o.agentId=a);let l=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();return l&&l.markPending(n,e),new Promise(c=>{let d=Number.isFinite(s.timeoutMs)?Math.max(1,Number(s.timeoutMs)):e==="copy"?null:Aw,u=d==null?null:setTimeout(()=>{this._sessionCrudPending&&this._sessionCrudPending.has(n)&&(this._sessionCrudPending.delete(n),l?.pending&&delete l.pending[n],c({ok:!1,op:e,error:{code:"timeout",message:"session_crud timeout"}}))},d);this._sessionCrudPending.set(n,{op:e,agentId:a||this.currentAgent,connectionGeneration:Number(this.chatHistoryConnectionGeneration||0),resolve:p=>{u&&clearTimeout(u),l?.pending&&delete l.pending[n],c(p)}});let g=this.sendWsMessage(o);e==="copy"&&!g&&(u&&clearTimeout(u),this._sessionCrudPending.delete(n),l?.pending&&delete l.pending[n],c({ok:!1,op:e,error:{code:"agent_offline"}}))})},markYeaftSessionUnread(e,t=null){if(!e)return!1;let s=$e(this,e,t);if(!s)return!1;let n=Yn(s,e);return this.currentView==="yeaft"&&this.yeaftActiveSessionFilter===e&&$e(this,e)===s||this.yeaftUnreadSessionKeys?.[n]?!1:(this.yeaftUnreadSessionKeys={...this.yeaftUnreadSessionKeys,[n]:!0},!0)},markYeaftSessionRead(e,t=null){if(!e)return!1;let s=$e(this,e,t);if(!s)return!1;let n=Yn(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||Bg(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?$e(this,n,t.agentId||null):this.currentAgent,i=!!n&&n===s&&!!r&&!!this.currentAgent&&r!==this.currentAgent,o=!!t.force||i;if(this.yeaftActiveSessionFilter=n,r&&n&&this.currentAgent!==r){this.selectAgent(r);let l=this.agents.find(c=>c.id===r);this.activateYeaftAgent(r,l||null)}else r&&n&&this.activateYeaftAgent(r);r&&n&&(this.markYeaftSessionRead(n,r),Ru(this,r,n));let a=!o&&n===s;if(r&&n){this.yeaftSessionAgentById={...this.yeaftSessionAgentById||{},[n]:r};let l=this.yeaftConversationIdsByAgent?.[r]||null;l||(l=`yeaft-local-${r}-${Date.now()}`,this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[r]:l}),this.yeaftConversationId=l,this.messagesMap[l]||(this.messagesMap[l]=[]),this.currentView==="yeaft"&&(this.activeConversations=[l])}try{let l=window.Pinia?.useSessionsStore?.()||window.__useSessionsStore&&window.__useSessionsStore();l&&typeof l.setActive=="function"&&l.setActive(n,r||null);let c=l?.activeSessionKey||null;c?localStorage.setItem("lastViewedYeaftSession",c):localStorage.removeItem("lastViewedYeaftSession")}catch{}this.syncActiveYeaftHistoryLoad(),n&&r&&!a&&this.requestYeaftSessionBootstrap({forceSessionReady:!0,forceHistoryReplay:!0})},async switchYeaftModel(e,t=null,s=void 0){if(!e||!this.currentAgent)return;let n=t||null;if(n){let r={model:e};return s!==void 0&&(r.modelEffort=s||null),await this.sessionCrudRequest("update_config",{sessionId:n,config:r},{agentId:$e(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()?qg:ic,dreamLimit:5,indexOnly:!0,search:this.yeaftDebugSearch})},250)},setYeaftDebugSessionFilter(e){e==null?this.yeaftDebugSessionFilter=null:this.yeaftDebugSessionFilter=String(e)},toggleSubAgentCardExpand(e){let t=this.yeaftSubAgentCards?.[e];t&&(this.yeaftSubAgentCards={...this.yeaftSubAgentCards,[e]:{...t,expanded:!t.expanded}})},requestTelemetrySettings(e,t,s=null){if(!t)return Promise.reject(new Error("no agent"));let n=`telemetry-${Date.now()}-${Math.random().toString(36).slice(2)}`;return this.telemetryRequestByAgent={...this.telemetryRequestByAgent,[t]:n},new Promise((r,i)=>{this._telemetryPending||(this._telemetryPending={});let o=setTimeout(()=>{if(delete this._telemetryPending[n],this.telemetryRequestByAgent?.[t]===n){let a={...this.telemetryRequestByAgent};delete a[t],this.telemetryRequestByAgent=a}i(new Error("Telemetry request timed out"))},15e3);this._telemetryPending[n]={resolve:r,reject:i,timer:o,agentId:t,operation:e,requestId:n},this.sendWsMessage({type:e==="load"?"get_telemetry_settings":"update_telemetry_settings",agentId:t,requestId:n,...e==="update"?{settings:s||{}}:{}})})},loadTelemetrySettings(e=this.currentAgent){return e?this.requestTelemetrySettings("load",e):Promise.resolve({enabled:!0,retentionDays:3,flushIntervalMs:1e3,maxQueueSize:5e3,rawExchangeMaxBytes:524288,traceTextMaxBytes:262144,loaded:!0})},updateTelemetrySettings(e,t=this.currentAgent){return this.requestTelemetrySettings("update",t,e)},requestWorkCenterFeatureSettings(e,t,s=null){if(!t)return Promise.reject(new Error("no agent"));let n=`work-center-feature-${Date.now()}-${Math.random().toString(36).slice(2)}`;return this.workCenterFeatureRequestByAgent={...this.workCenterFeatureRequestByAgent,[t]:n},new Promise((r,i)=>{this._workCenterFeaturePending||(this._workCenterFeaturePending={});let o=setTimeout(()=>{delete this._workCenterFeaturePending[n],i(new Error("Work Center settings request timed out"))},15e3);this._workCenterFeaturePending[n]={resolve:r,reject:i,timer:o,agentId:t,operation:e},this.sendWsMessage({type:e==="load"?"get_work_center_feature_settings":"update_work_center_feature_settings",agentId:t,requestId:n,...e==="update"?{settings:s}:{}})})},loadWorkCenterFeatureSettings(e=this.currentAgent){return this.requestWorkCenterFeatureSettings("load",e)},updateWorkCenterFeatureSettings(e,t=this.currentAgent){return this.requestWorkCenterFeatureSettings("update",t,e)},restartAgent(e){if(!e||this.agentOperations?.[e]?.restart?.pending)return!1;let t=`restart-${Date.now()}-${Math.random().toString(36).slice(2)}`,s=setTimeout(()=>this.finishAgentOperation(e,"restart","timeout"),12e4);return this.agentOperations={...this.agentOperations,[e]:{...this.agentOperations[e]||{},restart:{pending:!0,acknowledged:!1,startedAt:Date.now(),requestId:t,timer:s,error:null}}},this.sendWsMessage({type:"restart_agent",agentId:e,requestId:t}),!0},upgradeAgent(e,t=null){if(!e||this.agentOperations?.[e]?.upgrade?.pending)return!1;let s=this.agents.find(i=>i.id===e),n=`upgrade-${Date.now()}-${Math.random().toString(36).slice(2)}`,r=setTimeout(()=>this.finishAgentOperation(e,"upgrade","timeout"),12e4);return this.agentOperations={...this.agentOperations,[e]:{...this.agentOperations[e]||{},upgrade:{pending:!0,acknowledged:!1,startedAt:Date.now(),requestId:n,oldVersion:s?.version||null,batchId:t,timer:r,error:null}}},this.sendWsMessage({type:"upgrade_agent",agentId:e,requestId:n}),!0},getUpgradableAgents(){return(this.agents||[]).filter(e=>e?.online&&Array.isArray(e.capabilities)&&e.capabilities.includes("remote_upgrade_safe")&&!e.capabilities.includes("container_agent")&&!this.agentOperations?.[e.id]?.restart?.pending&&!this.agentOperations?.[e.id]?.upgrade?.pending)},upgradeAllAgents(){if(this.agentUpgradeBatch?.pending)return null;let e=this.getUpgradableAgents();if(e.length===0)return null;let t={id:`upgrade-batch-${Date.now()}-${Math.random().toString(36).slice(2)}`,pending:!0,startedAt:Date.now(),agentIds:e.map(s=>s.id),skippedCount:Math.max(0,(this.agents||[]).length-e.length),results:{}};this.agentUpgradeBatch=t;for(let s of e)this.upgradeAgent(s.id,t.id)||this.recordAgentUpgradeBatchResult(s.id,{status:"failed",error:"not_started"},t.id);return t.agentIds.length},recordAgentUpgradeBatchResult(e,t={},s=null){let n=this.agentUpgradeBatch;if(!n?.pending||s&&n.id!==s||!n.agentIds.includes(e)||n.results[e])return null;let r={...n,results:{...n.results,[e]:{status:t.status||"failed",error:t.error||null,version:t.version||null,reason:t.reason||null}}},i=r.agentIds.every(o=>r.results[o]);return this.agentUpgradeBatch=i?{...r,pending:!1,completedAt:Date.now()}:r,i&&typeof window<"u"&&window.dispatchEvent(new CustomEvent("agent-upgrade-batch-complete",{detail:this.agentUpgradeBatch})),i?this.agentUpgradeBatch:null},finishAgentOperation(e,t,s=null){let n=this.agentOperations?.[e]?.[t];n&&(clearTimeout(n.timer),this.agentOperations={...this.agentOperations,[e]:{...this.agentOperations[e]||{},[t]:{...n,pending:!1,timer:null,error:s}}},t==="upgrade"&&n.batchId&&this.recordAgentUpgradeBatchResult(e,s?{status:"failed",error:s}:{status:"upgraded"},n.batchId))},loadSearchSettings(){return this.currentAgent?new Promise(e=>{this._searchPending||(this._searchPending={}),this._searchPending.load=e,this.sendWsMessage({type:"get_search_settings",agentId:this.currentAgent})}):(this.searchSettings={backend:"tavily",tavilyKeyConfigured:!1,tavilyKeyMasked:null,disableHtmlFallback:!1,loaded:!0},Promise.resolve(this.searchSettings))},updateSearchSettings(e){return this.currentAgent?new Promise(t=>{this._searchPending||(this._searchPending={}),this._searchPending.update=t,this.sendWsMessage({type:"update_search_settings",agentId:this.currentAgent,settings:e||{}})}):Promise.resolve({error:"no agent"})},loadTavilyUsage(){return this.currentAgent?(this.tavilyUsageLoading=!0,new Promise(e=>{this._searchPending||(this._searchPending={}),this._searchPending.usage=e,this.sendWsMessage({type:"get_tavily_usage",agentId:this.currentAgent})})):Promise.resolve(null)},loadYeaftMcpServers(){if(!this.currentAgent)return this.yeaftMcpServers=[],this.yeaftMcpRuntime={connected:!1,toolCount:0,perServer:[]},Promise.resolve({servers:[],runtime:this.yeaftMcpRuntime});this.yeaftMcpLoading=!0;let e=`mcp-list-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(t=>{this._mcpPending||(this._mcpPending={}),this._mcpPending[e]=t,this.sendWsMessage({type:"yeaft_mcp_list",agentId:this.currentAgent,requestId:e})})},addYeaftMcpServer(e){if(!this.currentAgent)return Promise.resolve({error:"no agent"});this.yeaftMcpLoading=!0;let t=`mcp-add-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(s=>{this._mcpPending||(this._mcpPending={}),this._mcpPending[t]=s,this.sendWsMessage({type:"yeaft_mcp_add",agentId:this.currentAgent,requestId:t,server:e||{}})})},removeYeaftMcpServer(e){if(!this.currentAgent)return Promise.resolve({error:"no agent"});this.yeaftMcpLoading=!0;let t=`mcp-rem-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(s=>{this._mcpPending||(this._mcpPending={}),this._mcpPending[t]=s,this.sendWsMessage({type:"yeaft_mcp_remove",agentId:this.currentAgent,requestId:t,name:e})})},reloadYeaftMcpServer(e){if(!this.currentAgent)return Promise.resolve({error:"no agent"});this.yeaftMcpLoading=!0;let t=`mcp-rel-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise(s=>{this._mcpPending||(this._mcpPending={}),this._mcpPending[t]=s,this.sendWsMessage({type:"yeaft_mcp_reload",agentId:this.currentAgent,requestId:t,name:e||null})})},clearYeaftMessages(){let e=this.yeaftConversationId;e&&(Ne(this,e),delete this.messagesMap[e],delete this.processingConversations[e],delete this.executionStatusMap[e],delete this.refreshingSessionMap[e],this._closedAt&&delete this._closedAt[e],this._turnCompletedConvs?.delete(e)),this.yeaftConversationId=this.currentAgent?`yeaft-local-${this.currentAgent}-${Date.now()}`:`yeaft-local-${Date.now()}`,this.currentAgent&&(this.yeaftConversationIdsByAgent={...this.yeaftConversationIdsByAgent||{},[this.currentAgent]:this.yeaftConversationId}),this.messagesMap[this.yeaftConversationId]=[],this.activeConversations=[this.yeaftConversationId],this.yeaftSessionReady=!1,this.yeaftModel=null,this.yeaftAvailableModels=[],this.yeaftStatus=null,this._yeaftAskTerminalEvents={},this.yeaftDebugLoops=[],this.yeaftDebugTurnsById={},this.yeaftDebugTurnOrder=[],this.yeaftDebugHistoryLoading=!1,this.yeaftDebugHistoryError=null,this.yeaftDebugHistoryFetchedAt=0,this.yeaftDebugHistoryProjection=null,this.yeaftDebugSearch="",this.yeaftDebugSessionFilter=null,this.yeaftDebugPanel={open:!1,status:"idle",requestId:null,agentId:null,sessionId:null,turnId:null,error:null},this._yeaftDebugSearchTimer&&(clearTimeout(this._yeaftDebugSearchTimer),this._yeaftDebugSearchTimer=null),this._fetchYeaftDebugHistoryTimer&&(clearTimeout(this._fetchYeaftDebugHistoryTimer),this._fetchYeaftDebugHistoryTimer=null),this._yeaftDebugHistoryInFlightKey=null,this._yeaftDebugHistoryLatestListRequestId=null,this._yeaftDebugHistoryLatestDetailRequestId=null,this.yeaftReflectionCards={},this.yeaftSubAgentCards={},this.yeaftDreamLatest={},this.yeaftDreamEvents={},this.vpStatuses={},this.currentAgent&&this.sendWsMessage({type:"yeaft_reset",agentId:this.currentAgent})},togglePaneRightPanel(e,t=null){if(t&&this.isSplitMode){let s=this.panels.find(n=>n.id===t);if(s){s.activeRightPanel=s.activeRightPanel===e?null:e;return}}this.activeRightPanel=this.activeRightPanel===e?null:e,this.activeRightPanel&&(this.workbenchExpanded=!1,this.workbenchMaximized=!1,this.rememberWorkbenchPanelState())},getPaneRightPanel(e){if(e&&this.isSplitMode){let t=this.panels.find(s=>s.id===e);if(t)return t.activeRightPanel}return this.activeRightPanel},setPaneRightPanel(e,t){if(e&&this.isSplitMode){let s=this.panels.find(n=>n.id===e);if(s){s.activeRightPanel=t;return}}this.activeRightPanel=t},applySessionCatalogSnapshot(e,t=null,s=null){let n=r=>{let i=new Set;return(Array.isArray(r)?r:[]).filter(o=>!o?.catalogKey||i.has(o.catalogKey)?!1:(i.add(o.catalogKey),!0)).map(o=>({...o}))};if(this.sessionCatalog=n(e),Array.isArray(s)&&(this.hiddenSessionCatalog=n(s)),Array.isArray(t)){this.sessionProjects=t.filter(i=>i?.id).map(i=>({...i,members:Array.isArray(i.members)?i.members.filter(o=>o?.agentId&&o?.sessionId):i.agentId?(i.sessionIds||[]).map(o=>({agentId:i.agentId,sessionId:o})):[]}));let r=new Map;for(let i of this.sessionProjects)for(let o of i.members)r.set(`${o.agentId}${o.sessionId}`,i.id);this.sessionCatalog=this.sessionCatalog.map(i=>i.runtimeProvider==="yeaft"?{...i,projectId:r.get(`${i.routeRef?.agentId}${i.routeRef?.sessionId}`)||null}:i)}this.sessionCatalogLoaded=!0},mutateProject(e,t={},s=null){let n=s||t.agentId||this.currentAgent||null;if(e==="move_session"&&!n)return Promise.resolve({ok:!1,error:{code:"missing_agent"}});let r=`project_${crypto.randomUUID()}`;return new Promise(i=>{let o=setTimeout(()=>{delete this.projectMutationRequests[r],i({ok:!1,error:{code:"timeout"}})},1e4);this.projectMutationRequests[r]={connectionGeneration:Number(this.chatHistoryConnectionGeneration||0),catalogOrder:Array.isArray(t.catalogOrder)?t.catalogOrder:null,resolve:l=>{clearTimeout(o),i(l)}},this.sendWsMessage({type:"yeaft_project_mutation",...n?{agentId:n,targetAgentId:n}:{},requestId:r,op:e,...t})||(clearTimeout(o),delete this.projectMutationRequests[r],i({ok:!1,error:{code:"send_failed"}}))})},applyLegacyProjectSnapshot(e,t){if(!t||!Array.isArray(e))return;let s=this.sessionProjects.filter(r=>r.legacyAgentId!==t),n=e.filter(r=>r?.id).map(r=>({...r,id:`${t}${r.id}`,legacyProjectId:r.id,legacyAgentId:t,members:(r.sessionIds||[]).map(i=>({agentId:t,sessionId:i}))}));this.applySessionCatalogSnapshot(this.sessionCatalog,[...s,...n])},finishLegacyProjectMutation(e,t){if(!e?.requestId)return!1;let s=this.projectMutationRequests[e.requestId]||null;return!s||s.connectionGeneration!==Number(this.chatHistoryConnectionGeneration||0)?!1:(delete this.projectMutationRequests[e.requestId],e.ok&&Array.isArray(e.projects)&&t&&this.applyLegacyProjectSnapshot(e.projects,t),s.resolve(e),!0)},finishProjectMutation(e){if(!e?.requestId)return!1;let t=this.projectMutationRequests[e.requestId]||null;if(!t||t.connectionGeneration!==Number(this.chatHistoryConnectionGeneration||0))return!1;if(delete this.projectMutationRequests[e.requestId],e.ok){if(Array.isArray(t.catalogOrder)){let s=new Map(this.sessionCatalog.map(r=>[r.catalogKey,r])),n=t.catalogOrder.map((r,i)=>{let o=s.get(r?.catalogKey);return o?{...o,sortRank:i}:null}).filter(Boolean);n.length===this.sessionCatalog.length&&(this.sessionCatalog=n,$g(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=jr(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=jr(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=jr(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},sessionForkUnavailableReason(e){let t=e?.routeRef;return t?.runtimeProvider!=="yeaft"||!t.agentId||!t.sessionId?"bad_route":this.sessionForkPendingKey?"fork_pending":this.connectionState!=="connected"||!this.agents.some(s=>s.id===t.agentId&&s.online)?"agent_offline":this.isYeaftSessionProcessing(t.sessionId,t.agentId)?"session_running":null},async copyCatalogSession(e){let t=this.sessionForkUnavailableReason(e);if(t)return{ok:!1,op:"copy",error:{code:t}};let s={...e.routeRef};this.sessionForkPendingKey=Yn(s.agentId,s.sessionId),this.sessionForkState="copying";try{let n=await this.sessionCrudRequest("copy",{sessionId:s.sessionId},{agentId:s.agentId});if(!n?.ok||!n.session?.id)return n;this.sessionForkState="success",await new Promise(i=>setTimeout(i,xw));let r={runtimeProvider:"yeaft",agentId:s.agentId,sessionId:n.session.id};return this.openCatalogSession({catalogKey:Yn(r.agentId,r.sessionId),routeRef:r}),n}catch(n){return{ok:!1,op:"copy",error:{code:"fork_failed",message:n?.message||String(n)}}}finally{this.sessionForkState="idle",this.sessionForkPendingKey=null}},reorderCatalogSessions(e){if(!Array.isArray(e)||e.length===0||Object.keys(this.sessionCatalogMutationRequests).length>0)return!1;let t=`session_order_${crypto.randomUUID()}`,s=jr(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(!Yd(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"&&$g(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=Ys(e);if(this.chatHistoryRequests[t]?.loading)return this.chatHistoryRequests[t].requestId;let s=In(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=Ys(e);if(this.chatHistoryRequestIdSupported!==!0&&this.chatHistoryRequests[i]?.loading)return null;let o=n??r??null,a=this.beginChatHistoryRequest(e,t,o);return this.sendWsMessage({type:"sync_messages",conversationId:e,...s!=null?{turns:s}:{},...n!=null?{beforeId:n}:{},...r!=null?{afterMessageId:r}:{},requestId:a})?(setTimeout(()=>{rl(this,i,a,"history_load_timeout")},1e4),a):(rl(this,i,a,"send_failed"),null)},beginChatHistoryRequest(e,t="recent",s=null){return Qd(this,e,t,s)},isCurrentChatHistoryResponse(e){if(!e?.conversationId||!e?.requestId||!e?.catalogKey)return!1;let t=Ys(e.conversationId);if(e.catalogKey!==t)return!1;let s=this.chatHistoryRequests[t];return!!s&&s.loading===!0&&s.requestId===e.requestId&&Number(s.connectionGeneration||0)===Number(this.chatHistoryConnectionGeneration||0)},finishChatHistoryRequest(e){if(!this.isCurrentChatHistoryResponse(e))return!1;let t=this.chatHistoryRequests[e.catalogKey];return this.chatHistoryRequests[e.catalogKey]={...t,loading:!1},!0},isRefreshingSession(e){return e?!!this.refreshingSessionMap[e]:this.refreshingSession},setRefreshingSession(e,t){e&&(this.refreshingSessionMap[e]=t),this.refreshingSession=t},enterBtwMode(){this.btwMode=!0,this.btwMessages=[],this.btwLoading=!1,this.btwSessionId=null},sendBtwQuestion(e){this.currentConversation&&(this.btwMessages.push({role:"user",content:e}),this.btwMessages.push({role:"assistant",content:""}),this.btwLoading=!0,this.sendWsMessage({type:"btw_question",conversationId:this.currentConversation,question:e,btwSessionId:this.btwSessionId}))},closeBtw(){this.btwMode=!1,this.btwMessages=[],this.btwLoading=!1,this.btwSessionId=null},appendBtwDelta(e){let t=this.btwMessages[this.btwMessages.length-1];t&&t.role==="assistant"&&(t.content+=e)},addSubagent(e,t){this.subagents[e]||(this.subagents[e]={}),this.subagents[e][t.id]={id:t.id,slug:t.slug||t.id,type:t.type||"Task",description:t.description||"",parentToolUseId:t.parentToolUseId||null,status:"running",startTime:Date.now(),messages:[],toolCallCount:0},e===this.currentConversation&&this.activeRightPanel!=="subagents"&&(this.activeRightPanel="subagents")},appendSubagentMessage(e,t,s){let n=this.subagents[e];if(!n||!n[t])return;let r=n[t];if(s?.type==="tool"){r.toolCallCount=Number(r.toolCallCount||0)+1;return}s?.type==="text"&&r.messages.push(s)},completeSubagent(e,t){let s=this.subagents[e];!s||!s[t]||(s[t].status="completed")},sendWsMessage(e){return mu(this,e)},parseWsMessage(e){return vu(this,e)},connect(){yu(this)},ensureConnected(){return zr(this)},scheduleReconnect(){bu(this)},manualReconnect(){wu(this)},startHeartbeat(){ku(this)},stopHeartbeat(){Su(this)},setupVisibilityHandler(){Cu(this)},handleMessage(e){Cp(this,e)},getOrCreateExecutionStatus(e){return Ml(this,e)},handleAssistantOutputFrame(e,t,s=null){dp(this,e,t,s)},handleClaudeOutput(e,t){this.handleAssistantOutputFrame(e,t,null)},addMessageToConversation(e,t){return fo(this,e,t)},pruneConversationMessageRetention(e,t=null,s=null,n=void 0){return Mu(this,{conversationId:e,sessionId:t,agentId:s,limits:n})},appendToAssistantMessageForConversation(e,t,s){Vu(this,e,t,s)},finishStreamingForConversation(e,t){Bu(this,e,t)},sweepStaleStreamingForConversation(e){Hu(this,e)},appendToAssistantMessage(e){this.appendToAssistantMessageForConversation(this.currentConversation,e)},finishStreaming(){this.finishStreamingForConversation(this.currentConversation)},addMessage(e){this.addMessageToConversation(this.currentConversation,e)},loadHistoryMessages(e){Nu(this,e)},formatDbMessage(e){return Wu(e)},selectAgent(e){return _p(this,e)},createConversation(e,t=null,s=null,n=void 0){Ep(this,e,t,s,n)},resumeConversation(e,t,s=null,n=null,r=null){Dp(this,e,t,s,n,r)},selectConversation(e,t,s={}){$p(this,e,t,s)},updateConversationSettings(e,t){Ll(this,e,t)},toggleConversationMcp(e,t){Lp(this,e,t)},deleteConversation(e,t){Fp(this,e,t)},closeSession(e,t){Op(this,e,t)},appendColumn(e){Hp(this,e)},removeColumn(e){Np(this,e)},sendMessageToConversation(e,t,s=[],n={}){Wp(this,e,t,s,n)},cancelExecutionForConversation(e){jp(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?!!fs()?.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=$e(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?fs()?.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||$e(this,e);if(Object.values(this.activeVpTurns||{}).some(a=>Dt(a,e,n))||!s&&Object.values(this.vpStatuses||{}).some(l=>Dt(l,e,n)&&vi.has(l?.state)))return;let i=_s(n,e),o={...this.yeaftProcessingSessions||{}};i&&delete o[i],Lo(this,e,n)&&delete o[e],this.yeaftProcessingSessions=o},sendMessage(e,t=[],s={}){qp(this,e,t,s)},cancelExecution(){Vp(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],xg(this,this.currentAgent)},cancelYeaftSession(e){let t=$e(this,e);!t||!e||(this.sendWsMessage({type:"yeaft_abort_all",agentId:t,sessionId:e}),this.activeVpTurns=Object.fromEntries(Object.entries(this.activeVpTurns||{}).filter(([,s])=>!Dt(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])=>!Dt(s,e,t))),this.clearYeaftSessionProcessingIfIdle(e,{agentId:t,ignoreStatuses:!0}))},cancelVpTurn(e,{sessionId:t=null,vpId:s=null}={}){let n=$e(this,t);if(!n||!e)return;let r=$n(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=$e(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||!Dt(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?.[Eo(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){Bp(this,e,t,s)},refreshAgents(){Up(this)},refreshConversation(){Kp(this)},setDreamEnabled(e,t){if(!e||this.agentDreamState?.[e]?.pending)return!1;let s=this.agents.find(o=>o.id===e),n=t!==!1,r=`dream-${Date.now()}-${Math.random().toString(36).slice(2)}`,i=setTimeout(()=>{let o=this.agentDreamState?.[e];!o?.pending||o.requestId!==r||(this.agentDreamState={...this.agentDreamState,[e]:{...o,pending:!1,timer:null,error:"timeout"}})},15e3);return this.agentDreamState={...this.agentDreamState,[e]:{pending:!0,requestId:r,requested:n,authoritative:s?.dreamEnabled===!0,timer:i,error:null}},zp(this,e,n,r),!0},loadMoreMessages(){if(this.currentView==="yeaft"||this.loadingMoreMessages||!this.hasMoreMessages||!this.currentConversation)return;this.loadingMoreMessages=!0;let e=this._loadMoreGeneration=(this._loadMoreGeneration||0)+1,s=(this.messagesMap[this.currentConversation]||[]).find(i=>i.dbMessageId),n=this.currentConversation,r=s?.dbMessageId??null;this.requestChatHistory(n,{mode:"older",turns:5,beforeId:r}),setTimeout(()=>{this._loadMoreGeneration===e&&this.loadingMoreMessages&&this.currentConversation===n&&(this.loadingMoreMessages=!1)},1e4)},reloadYeaftMessages(){if(this.currentView!=="yeaft")return!1;let e=Ls(this),t=$e(this,e);if(!t)return!1;let s=Le(t,e),n=this.yeaftConversationId,r=this.yeaftSessionHistoryState?.[s];if(r?.loading)return r.requestId?(this._yeaftManualHistoryRefresh={agentId:t,sessionId:e,requestId:r.requestId},r.requestId):!1;let i=this.beginYeaftHistoryLoad({agentId:t,sessionId:e,mode:"recent",preserveLoaded:!1});if(!i)return!1;this._yeaftManualHistoryRefresh={agentId:t,sessionId:e,requestId:i.requestId};let o=xn();this.yeaftHistoryPerfTraceBySession={...this.yeaftHistoryPerfTraceBySession||{},[s]:o};let a={type:"yeaft_load_history",agentId:t,limit:ec,sessionId:e,requestId:i.requestId,perfTraceId:o};return kt(this,{traceId:o,phase:"history.request_send",agentId:t,sessionId:e,messageType:a.type,bytes:JSON.stringify(a).length,detail:{mode:"manual-reload",limit:ec}}),this.sendWsMessage(a)?!0:(Qr(this,{agentId:t,sessionId:e,requestId:i.requestId,error:"history_load_send_failed"}),!1)},loadMoreYeaftHistory(e=hi(),{sessionId:t=null,agentId:s=null,background:n=!1}={}){if(this.currentView!=="yeaft")return!1;let r=t||Ls(this),i=$e(this,r,s);if(!i||!r)return!1;let o=Le(i,r),a=this.yeaftSessionHistoryState?.[o]||{};if(a.loading||!a.hasMore)return!1;let l=Math.min(50,Math.max(1,Number.isFinite(e)?Math.floor(e):hi())),c=this.yeaftHistoryCacheState?.[o]?.ranges||[],d=Number(this.yeaftHistoryCacheState?.[o]?.rangeEpoch)||0,u=zu(a,c,d);if(this.yeaftSessionHistoryState={...this.yeaftSessionHistoryState||{},[o]:u.state},!u.request)return this.syncActiveYeaftHistoryLoad(),!1;let g=this.beginYeaftHistoryLoad({agentId:i,sessionId:r,mode:n?"prefetch":"older",preserveLoaded:!0,latestSeq:this.yeaftSessionHistoryState[o]?.latestSeq??null});if(!g)return!1;let p=xn();this.yeaftHistoryPerfTraceBySession={...this.yeaftHistoryPerfTraceBySession||{},[o]:p};let f={type:"yeaft_load_more_history",agentId:i,sessionId:r,requestId:g.requestId,beforeSeq:u.request.beforeSeq,pageKind:u.request.kind,gapStopAtSeq:u.request.stopAtSeq,cacheEpoch:u.request.cacheEpoch,turns:l,perfTraceId:p};return kt(this,{traceId:p,phase:"history_more.request_send",agentId:i,sessionId:r,messageType:f.type,bytes:JSON.stringify(f).length,detail:{beforeSeq:f.beforeSeq,turns:f.turns,pageKind:u.request.kind,gapStopAtSeq:u.request.stopAtSeq,background:n}}),this.sendWsMessage(f)?!0:(Qr(this,{agentId:i,sessionId:r,requestId:g.requestId,error:"history_load_send_failed"}),!1)},checkPendingRecovery(){Xd(this)},performRecovery(){Zd(this)},dismissRecovery(){Jd(this)},autoRestoreConversation(e){eu(this,e)},saveOpenSessions(){kn(this)},getLastSession(){return su(this)},clearLastSession(){nu(this)},listHistorySessions(e){ru(this,e)},listFolders(){return iu(this)},listFoldersForAgent(e,t){return ou(this,e,t)},listModelsForAgent(e,t){return au(this,e,t)},listHistorySessionsForAgent(e,t,s){lu(this,e,t,s)},async loadGlobalSessions(e=20){return cu(this,e)},async deleteGlobalSession(e){return du(this,e)},findAgentForSession(e){return il(this,e)},isSessionResumable(e){return uu(this,e)},_isRecentlyClosed(e){return An(this,e)},_startProcessingWatchdog(e){er(this,e)},_resetProcessingWatchdog(e){ho(this,e)},_stopProcessingWatchdog(e){Ne(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,Wr(e),this.currentAgent)try{this.sendWsMessage({type:"update_llm_config",agentId:this.currentAgent,config:{language:e}})}catch{}},async fetchCustomExpertRoles(){let e=Ye();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=Ye();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=Ye();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=Ye();try{let s={};t.token&&(s.Authorization=`Bearer ${t.token}`);let n=await fetch(`/api/expert-roles/custom/${e}`,{method:"DELETE",headers:s});if(n.ok)return this.customExpertRoles=this.customExpertRoles.filter(r=>r.id!==e),!0;{let r=await n.json().catch(()=>({}));throw new Error(r.error||"Failed to delete custom expert role")}}catch(s){throw s}},rememberWorkbenchPanelState(e=this.activeSessionRoute,t){let s=typeof e=="string"?e:lt(e);if(!s)return!1;let n=this.workbenchPanelStateByRoute[s]||{},r=Number.isFinite(t)&&t>0?Math.round(t):n.width;return this.workbenchPanelStateByRoute={...this.workbenchPanelStateByRoute,[s]:{expanded:!!this.workbenchExpanded,maximized:!!this.workbenchExpanded&&!!this.workbenchMaximized,...Number.isFinite(r)&&r>0?{width:r}:{}}},!0},workbenchPanelWidthForRoute(e=this.activeSessionRoute){let t=typeof e=="string"?e:lt(e),s=t?this.workbenchPanelStateByRoute[t]?.width:null;return Number.isFinite(s)&&s>0?s:null},restoreWorkbenchPanelState(e=this.activeSessionRoute){let t=lt(e),s=t?this.workbenchPanelStateByRoute[t]:null;return this.workbenchExpanded=!!s?.expanded,this.workbenchMaximized=!!s?.expanded&&!!s?.maximized,!!s},openWorkbench(){this.workbenchExpanded=!0,this.activeRightPanel=null,this.closeYeaftDebugPanel(),this.rememberWorkbenchPanelState()},toggleWorkbench(){if(this.workbenchExpanded){this.workbenchExpanded=!1,this.workbenchMaximized=!1,this.rememberWorkbenchPanelState();return}this.openWorkbench()},toggleSidebar(){this.sidebarCollapsed=!this.sidebarCollapsed},toggleSessionSidebar(){this.sessionSidebarOpen=!this.sessionSidebarOpen},closeSessionSidebar(){this.sessionSidebarOpen=!1},toggleWorkbenchMaximized(){this.workbenchMaximized=!this.workbenchMaximized,this.rememberWorkbenchPanelState()},renameChatSession(e,t,s=null){let n=t&&t.trim()?t.trim():"";n?this.customConversationTitles[e]=n:delete this.customConversationTitles[e],this.sendWsMessage({type:"update_conversation_settings",conversationId:e,...s?{agentId:s}:{},title:n})},resolveMessageFileReferences(e){let t=this.activeSessionRoute,s=t?.agentId||this.currentAgent||null,n=t?.runtimeProvider==="yeaft"?Ct(this,t.sessionId,s):this.currentConversation,i=lt(t)&&s&&n&&this.workbenchRouteProtocolSupported===!0&&St(this,s,"file_reference_resolution")&&St(this,s,"file_editor")&&St(this,s,"workbench_session_routes"),o=[...new Set((Array.isArray(e)?e:[]).filter(u=>typeof u=="string"&&u.trim()).map(u=>u.trim()))].slice(0,32);if(!i||o.length===0)return null;let a=this.effectiveWorkDir||"",l=t?{runtimeProvider:t.runtimeProvider,agentId:t.agentId,sessionId:t.sessionId}:null,c=`file_refs_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`;return this.sendWsMessage({type:"resolve_file_references",requestId:c,references:o,agentId:s,conversationId:n,workDir:a,workbenchRoute:l})?c:null},requestMessageImagePreview(e){let t=this.activeSessionRoute,s=t?.agentId||this.currentAgent||null,n=t?.runtimeProvider==="yeaft"?Ct(this,t.sessionId,s):this.currentConversation,i=lt(t)&&s&&n&&this.workbenchRouteProtocolSupported===!0&&(s===this.currentAgent?this.hasCapability("file_editor")&&this.hasCapability("workbench_session_routes")&&this.hasCapability("response_image_preview"):St(this,s,"file_editor")&&St(this,s,"workbench_session_routes")&&St(this,s,"response_image_preview")),o=typeof e=="string"?e.trim():"";if(!i||!o)return null;let a=`message_image_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`;return this.sendWsMessage({type:"read_file",requestId:a,filePath:o,responseImagePreview:!0,agentId:s,conversationId:n,workDir:this.effectiveWorkDir||"",workbenchRoute:{runtimeProvider:t.runtimeProvider,agentId:t.agentId,sessionId:t.sessionId}})?a:null},openFileInExplorer(e,{hideTree:t=!1,line:s=null}={}){let n=this.activeSessionRoute,r=n?{runtimeProvider:n.runtimeProvider,agentId:n.agentId,sessionId:n.sessionId}:null,i=lt(r),o=this.effectiveWorkDir||"",a=Es(i,o),l=r?.agentId||this.currentAgent||null,c=r?.runtimeProvider==="yeaft"?Ct(this,r.sessionId,l):this.currentConversation,d=this.workbenchRouteProtocolSupported===!0&&St(this,l,"file_editor")&&St(this,l,"workbench_session_routes");if(!l||!c||!d)return!1;let u=typeof e=="string"?e.trim():"";if(!u)return!1;let g=this.workbenchExpanded;this.openWorkbench(),this.workbenchMaximized=!1,this.rememberWorkbenchPanelState();let p=()=>{let f=lt(this.activeSessionRoute),h=this.effectiveWorkDir||"";f!==i||h!==o||Es(f,h)!==a||window.dispatchEvent(new CustomEvent("open-file-in-explorer",{detail:{filePath:u,agentId:l,conversationId:c,workDir:o,workbenchRoute:r,workbenchRouteKey:i,workspaceGeneration:a,hideTree:!!t,line:Number.isFinite(s)&&s>0?s:null}}))};return g?p():Vue.nextTick(p),!0},logout(){Ye().logout(),this.authenticated=!1,this.sessionKey=null,this.agents=[],this.currentAgent=null,this.currentAgentInfo=null,this.yeaftStatusByAgent={},this._yeaftRetiredCatalogEpochsByAgent={},this.conversations=[],this.activeConversations=[],this.messagesMap={},this.conversationTitles={},this.customConversationTitles={},this.processingConversations={},this.executionStatusMap={},this.workbenchExpanded=!1,this.workbenchMaximized=!1,this.workbenchPanelStateByRoute={},this.subagents={},this.activeSubagentId=null,this.activeRightPanel=null,this.pinnedSessions=[],this.clearWorkCenterBrowserState(),this.ws&&this.ws.close()}}})});function ac(e,t){!e||typeof e.handleYeaftOutput!="function"||!t||e.handleYeaftOutput({event:t})}function Ww(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 cc(e){if(!e)return sn[0];let t=String(e).toLowerCase();return Nw[t]||sn[Ww(t)%sn.length]}function jw(e){return cc(e).background}function Uw(e){return cc(e).foreground}function lc(){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 Kw(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 Hw,sn,Nw,KA,hs,ur=V(()=>{({defineStore:Hw}=Pinia);sn=[{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)"}],Nw=Object.freeze({steve:sn[8],ada:sn[3],linus:sn[0],martin:sn[4]}),KA=sn.map(e=>e.background);hs=Hw("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?lc().startsWith("zh")&&s.displayNameZh?s.displayNameZh:s.displayName||s.vpId||t:t},vpDescription:e=>t=>Kw(e.vps[t],lc()),vpInitial:e=>t=>{let s=e.vps[t],n=lc().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:jw(t)},vpTextColor:()=>e=>Uw(e),vpAvatarMotif:()=>e=>cc(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(ac(s,{type:"dream_progress",phase:"start",groupId:e,manual:!0,trigger:"manual",source:"header-button",ts:n}),!s||typeof s.sendWsMessage!="function"){ac(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&&ac(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 dc(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 Fo(e){return!e||typeof e!="object"?0:dc(e.lastMessageAt)||dc(e.updatedAt)||dc(e.createdAt)||0}function uc(e,t){let s=Fo(t)-Fo(e);return s!==0?s:String(e?.id||"").localeCompare(String(t?.id||""))}function Wg(e){return[...Array.isArray(e)?e:[]].sort(uc)}var qo=V(()=>{});function jg(){try{if(typeof localStorage>"u")return{};let e=JSON.parse(localStorage.getItem(Gg)||"{}");return e&&typeof e=="object"?e:{}}catch{return{}}}function zw(e){try{typeof localStorage<"u"&&localStorage.setItem(Gg,JSON.stringify(e&&typeof e=="object"?e:{}))}catch{}}function Ug(){try{return typeof localStorage>"u"?[]:yi(JSON.parse(localStorage.getItem(Yg)||"[]"))}catch{return[]}}function Gw(e){try{typeof localStorage<"u"&&localStorage.setItem(Yg,JSON.stringify(yi(e)))}catch{}}function Qg(e,t){return`${e||""}${t||""}`}function Os(e){return e&&e.agentId&&e.id?Qg(e.agentId,e.id):""}function ms(e,t){return t?e?Qg(e,t):String(t):""}function Yw(e){return typeof e=="string"?e:String(e||"")}function Vt(e,t,s=null){let n=Yw(t);if(!n)return"";let r=ms(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=bi();if(l?.currentAgent){let c=a.find(d=>e.sessions[d]?.agentId===l.currentAgent);if(c)return c}return a[0]||""}function pc(e,t,s=null){return Vt(e,t,s)||""}function gc(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 Qw(e){let t=e._preferredExactSessionIdentity||null;if(!t)return!1;e._preferredExactSessionIdentity=null;let s=e.sessions[t.key]||null,n=bi(),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=li(localStorage.getItem("lastViewedYeaftSession")||"");o.agentId===t.agentId&&o.sessionId===t.sessionId&&localStorage.removeItem("lastViewedYeaftSession")}catch{}return!0}function Vo(e){let t=e._retiredBareActiveSessionId||null;if(!t)return!1;let s=bi();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")||"";li(r).sessionId===t&&localStorage.removeItem("lastViewedYeaftSession")}catch{}return!0}function yi(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 fc(e,t){let s=yi(e),n=new Set(s),r=yi(t).filter(o=>n.has(o)),i=new Set(r);return[...r,...s.filter(o=>!i.has(o))]}function Bo(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 Kg(e){return!e||typeof e!="object"?!1:e.running===!0||e.active===!0||e.isActive===!0||e.isRunning===!0}function zg(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 bi(){try{if(typeof window<"u"&&window.Pinia&&typeof window.Pinia.useChatStore=="function")return window.Pinia.useChatStore()}catch{}return null}var Gg,Yg,Xw,Xg,Zg=V(()=>{qo();Co();Gg="yeaft-session-order-by-agent",Yg="yeaft-session-order-global";({defineStore:Xw}=Pinia);Xg=Xw("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=bi(),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,g)=>{let p=Number.isFinite(u?.sortOrder)?u.sortOrder:Number.MAX_SAFE_INTEGER,f=Number.isFinite(g?.sortOrder)?g.sortOrder:Number.MAX_SAFE_INTEGER;return p!==f?p-f:uc(u,g)}),a=[...o(r),...o(i)],l=Ug();if(l.length===0)return a;let c=new Map(l.map((d,u)=>[d,u]));return a.sort((d,u)=>{let g=c.has(Os(d))?c.get(Os(d)):Number.MAX_SAFE_INTEGER,p=c.has(Os(u))?c.get(Os(u)):Number.MAX_SAFE_INTEGER;return g!==p?g-p:0})},sessionCount(e){return e.sessionOrder.length},sessionById:e=>(t,s=null)=>{let n=Vt(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){gc(this);let o={...this.sessions},a=new Set;for(let p of n){if(!p||!p.id)continue;let f=ms(t,p.id);a.add(f),o[f]=this._normalize(p,t,Bo(this.sessions[f]))}for(let p of this.sessionOrder){let f=this.sessions[p];f&&f.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 f=ms(t,p.id);o[f]&&!c.has(f)&&d.push(f)}this.sessions=o;let u=[...l,...d],g=Ug();if(g.length>0){let p=new Map(u.map(y=>[Os(o[y]),y]).filter(([y])=>y)),f=g.map(y=>p.get(y)).filter(Boolean),h=new Set(f);u=[...f,...u.filter(y=>!h.has(y))];let v=new Map(g.map((y,m)=>[y,m]));for(let y of u){let m=Os(o[y]);m&&v.has(m)&&(o[y]={...o[y],sortOrder:v.get(m)})}}if(t&&g.length===0){let p=jg(),f=yi(p[t]);if(f.length>0){let h=f.map(b=>ms(t,b)),v=new Set(h),y=fc(u.filter(b=>o[b]?.agentId===t),h),m=this.sessionOrder.some(b=>o[b]?.agentId===t),S=0;m?u=this.sessionOrder.filter(b=>o[b]).map(b=>o[b]?.agentId===t?y[S++]:b).concat(y.slice(S)):u=u.map(b=>o[b]?.agentId===t?y[S++]:b);let w=new Map(h.map((b,k)=>[b,k]));for(let b of y)o[b]&&v.has(b)&&(o[b]={...o[b],sortOrder:w.get(b)})}}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=ms(null,c.id);a[d]=this._normalize(c,null,Bo(this.sessions[d])),l.push(d)}this.sessions=a,this.sessionOrder=l,this.inventoryIdentityMode="legacy-bare"}s||(r=Qw(this)||Vo(this)),this.lastSnapshotAt=Date.now();let i=bi();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?Vt(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)=>zg(this.sessions[w])-zg(this.sessions[S]))[0]||null,g=u?this.sessions[u]?.id:null,p=this.sessionList[0]||null,f=p?.id||null,h=f?Vt(this,f,p?.raw?.agentId||null):"",v=g||(d?c.id:null)||f,y=u||(d?l:"")||h||pc(this,v,t),m=this.activeSessionKey?this.sessions[this.activeSessionKey]?.agentId:null;if(this.activeSessionId&&!Vt(this,this.activeSessionId,m)?(this.activeSessionId=v,this.activeSessionKey=y||null):!this.activeSessionId&&this.sessionOrder.length>0&&!this._retiredBareActiveSessionId?(this.activeSessionId=v,this.activeSessionKey=y||null):this.activeSessionId&&(this.activeSessionKey=pc(this,this.activeSessionId,m)||this.activeSessionKey),i&&!this._retiredBareActiveSessionId){let S=this.activeSessionId||v,w=null;if((i.yeaftActiveSessionFilter&&!Vt(this,i.yeaftActiveSessionFilter)||!i.yeaftActiveSessionFilter&&S)&&(w=S),w){let b=pc(this,w),k=b&&this.sessions[b]?.agentId||null;i.currentView==="yeaft"&&typeof i.setActiveSessionFilter=="function"?i.setActiveSessionFilter(w,{agentId:k,force:!0}):i.yeaftActiveSessionFilter=w,this.activeSessionKey=b||this.activeSessionKey}}}if(i&&typeof i.applyServerPinSnapshot=="function"){let o=new Set;for(let l of n){if(!l||!l.id)continue;let c=ms(t,l.id),d=this.sessions[c];d&&d.pinned&&o.add(l.id)}let a=l=>{let c=Vt(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)gc(this);else if(this.inventoryIdentityMode!=="legacy-bare")return;let r=Vt(this,s,n)||ms(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),Vo(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},Vo(this)},applyCrudResult(e,t=null,{activate:s=!0}={}){if(!e)return;this.lastCrudResult={...e,at:Date.now()},e.requestId&&this.pending[e.requestId]&&delete this.pending[e.requestId];let n=e.session||e.group||null,r=t||e.agentId||n?.agentId||null;e.ok&&e.op==="list"&&Array.isArray(e.sessions)&&this.applySnapshot(e.sessions,r),e.ok&&(e.op==="create"||e.op==="copy"||e.op==="restore")&&n&&n.id&&this.applySnapshotUpsert(n,r)&&s&&this.setActive(n.id,r),e.ok&&(e.op==="rename"||e.op==="update")&&n&&n.id&&this.applySnapshotUpsert(n,r);let i=e.sessionId||e.groupId,o=this.inventoryIdentityMode==="legacy-bare",a=i&&(r||o)?Vt(this,i,r):"";if(e.ok&&(e.op==="archive"||e.op==="delete")&&i&&a&&(delete this.sessions[a],this.sessionOrder=this.sessionOrder.filter(l=>l!==a),(this.activeSessionKey===a||o&&this.activeSessionId===i)&&(this.activeSessionKey=this.sessionOrder[0]||null,this.activeSessionId=this.activeSessionKey&&this.sessions[this.activeSessionKey]?.id||null)),e.ok&&e.op==="update_config"&&i){let l=a?this.sessions[a]:null;l&&(this.sessions[a]={...l,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)gc(this);else if(this.inventoryIdentityMode!=="legacy-bare")return"";let n=Vt(this,e.id,s)||ms(s,e.id),r=!!this.sessions[n],i=this.sessions[n]||{};return this.sessions[n]={...i,...this._normalize(e,s,Bo(i))},r||this.sessionOrder.push(n),Vo(this),n},setActive(e,t=null){let s=Vt(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=fc(s,t.map(l=>ms(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=jg(),a=n.map(l=>this.sessions[l]?.id).filter(Boolean);return o[e]=a,zw(o),a},reorderSessionsGlobally(e){let t=this.sessionOrder.map(a=>Os(this.sessions[a])).filter(Boolean),s=fc(t,e);if(s.length===0)return[];let n=new Map(this.sessionOrder.map(a=>[Os(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=Os(this.sessions[a]);l&&o.has(l)&&(this.sessions[a]={...this.sessions[a],sortOrder:o.get(l)})}return Gw(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=Vt(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=ms(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:Kg(e),active:Kg(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:Bo(e,s),sortOrder:Number.isFinite(e.sortOrder)?e.sortOrder:null}}}})});function Ho(){return globalThis.crypto?.randomUUID?.()||`browser-${Date.now()}-${Math.random().toString(16).slice(2)}`}function Bt(e,t){return`${String(e||"")}\0${String(t||"")}`}function Jg(e,t,s,n){return`${Bt(e,t)}\0${String(s||"")}\0${String(n||"")}`}function hc(e,t="Browser Runtime request failed"){return e?.safeError||e?.code||t}function mc(e){return globalThis.Vue?.markRaw?.(e)||e}var Zw,Jw,ek,tk,sk,nk,rk,No,vc=V(()=>{({defineStore:Zw}=Pinia),Jw=3e4,ek=60*6e4,tk=2e4,sk=5e3,nk=60*6e4,rk=256;No=Zw("browser",{state:()=>({sessions:{},pending:{},peers:{},cancelledPeers:{},errors:{},errorCodes:{},peerDiagnostics:{},runtimeStatus:{},installProgress:{},protocolSupported:null,connectionEpoch:0,lastError:null,_cancelledPeerCleanupTimer:null,_messageListenerInstalled:!1}),actions:{chatStore(){return window.Pinia?.useChatStore?.()||null},installMessageListener(){if(this._messageListenerInstalled||typeof window>"u")return;this._messageListenerInstalled=!0;let e=this.chatStore();this.protocolSupported=e?.browserRuntimeProtocolSupported??null,window.addEventListener("browser-runtime-message",t=>this.handleMessage(t.detail)),window.addEventListener("browser-runtime-transport-reset",()=>this.handleTransportReset())},send(e){if(!this.chatStore()?.sendWsMessage?.(e))throw new Error("Browser Runtime transport unavailable")},beginRequest(e,t,s=Jw){let n=Ho();return new Promise((r,i)=>{let o=setTimeout(()=>{delete this.pending[n],i(new Error(`${e} timed out`))},s);this.pending[n]={type:e,resolve:r,reject:i,timer:o,payload:t};try{this.send({type:e,requestId:n,...t})}catch(a){clearTimeout(o),delete this.pending[n],i(a)}})},completeRequest(e,t,s=null){let n=e?this.pending[e]:null;return n?(clearTimeout(n.timer),delete this.pending[e],s?n.reject(s):n.resolve(t),!0):!1},clearCancelledPeers(){clearTimeout(this._cancelledPeerCleanupTimer),this._cancelledPeerCleanupTimer=null,this.cancelledPeers={}},pruneCancelledPeers(e=Date.now()){clearTimeout(this._cancelledPeerCleanupTimer),this._cancelledPeerCleanupTimer=null;for(let[s,n]of Object.entries(this.cancelledPeers))Number(n.expiresAt)<=e&&delete this.cancelledPeers[s];let t=Math.min(...Object.values(this.cancelledPeers).map(s=>Number(s.expiresAt)).filter(Number.isFinite));Number.isFinite(t)&&(this._cancelledPeerCleanupTimer=setTimeout(()=>this.pruneCancelledPeers(),Math.max(1,t-Date.now())))},rememberCancelledPeer(e){let t=Date.now();for(this.pruneCancelledPeers(t);Object.keys(this.cancelledPeers).length>=rk;)delete this.cancelledPeers[Object.keys(this.cancelledPeers)[0]];this.cancelledPeers[Jg(e.agentId,e.browserSessionId,e.requestId,e.connectionGeneration)]={agentId:e.agentId,browserSessionId:e.browserSessionId,requestId:e.requestId,connectionGeneration:e.connectionGeneration,expiresAt:t+nk},this.pruneCancelledPeers(t)},takeCancelledPeer(e){let t=Jg(e.agentId,e.browserSessionId,e.requestId,e.connectionGeneration),s=this.cancelledPeers[t];return!s||(delete this.cancelledPeers[t],this.pruneCancelledPeers(),Number(s.expiresAt)<=Date.now())?null:s},async getRuntimeStatus(e){let t=await this.beginRequest("browser_runtime_status",{agentId:e});return this.runtimeStatus[e]=t,t},async installRuntime(e,t){let s=await this.beginRequest("browser_runtime_install",{agentId:e,confirmedBuildId:t?.buildId,confirmedDownloadBytes:Number(t?.downloadBytes)||0},ek);return this.runtimeStatus[e]=s,delete this.installProgress[e],s},async enableRuntime(e){let t=await this.beginRequest("browser_runtime_enable",{agentId:e},6e4);return this.runtimeStatus[e]=t,t},async setupRuntime(e,t){return t?.installed?this.enableRuntime(e):this.installRuntime(e,t)},async createSession({agentId:e,sourceRef:t=null,initialUrl:s="about:blank",viewport:n=null,locale:r="en-US"}){let i=await this.beginRequest("browser_session_create",{agentId:e,sourceRef:t,options:{initialUrl:s,viewport:n||{width:1280,height:720,deviceScaleFactor:1},locale:r,capturePreference:"auto"}},45e3);return this.sessions[Bt(e,i.browserSessionId)]=i,i},async listSessions(e){let t=await this.beginRequest("browser_session_list",{agentId:e}),s=new Set((t.sessions||[]).map(n=>Bt(e,n.browserSessionId)));for(let n of Object.keys(this.sessions))n.startsWith(`${e}\0`)&&!s.has(n)&&delete this.sessions[n];for(let n of t.sessions||[])this.sessions[Bt(e,n.browserSessionId)]={...n,agentId:e};return t.sessions||[]},async closeSession(e,t,s){await this.beginRequest("browser_session_close",{agentId:e,browserSessionId:t,expectedRevision:s})},async attach({agentId:e,browserSessionId:t,videoElement:s}){if(!s)throw new Error("Browser video element required");let n=Bt(e,t);delete this.errors[n],delete this.errorCodes[n];let r=Number(this.connectionEpoch||0)+1;this.connectionEpoch=r;let i=Ho(),o={localKey:n,agentId:e,browserSessionId:t,requestId:i,peerId:null,connectionGeneration:r,connection:null,videoElement:mc(s),state:"preparing",remoteState:null,pendingOffer:null,pendingCandidates:[],answerPromise:null,channels:{},controlSeq:0,pointerSeq:0,iceServerCount:null,diagnostics:{connectionState:"new",iceConnectionState:"new",iceGatheringState:"new",candidateErrors:0,lastCandidateError:null},attachTimer:null,disconnectedTimer:null};return this.peers[n]=o,this.peerDiagnostics[n]=o.diagnostics,o.attachTimer=setTimeout(()=>{if(o.attachTimer=null,this.peers[n]!==o||o.connection?.connectionState==="connected")return;let a=o.iceServerCount===0?"browser_ice_servers_missing":o.diagnostics.iceConnectionState==="failed"?"browser_ice_connection_failed":"browser_peer_attach_timeout";this.failPeer(o,new Error(a),a)},tk),this.send({type:"browser_peer_attach",agentId:e,browserSessionId:t,requestId:i,connectionGeneration:r,role:"interactive",clientCapabilities:{codecs:["video/VP8"],maxWidth:1920,maxHeight:1080,maxFps:30}}),o},async preparePeer(e,t){if(this.peers[e.localKey]!==e||e.connectionGeneration!==t.connectionGeneration)return;if(e.connection){if(e.peerId===t.peerId)return;throw new Error("Browser peer identity changed during preparation")}e.peerId=t.peerId;let s=Array.isArray(t.iceServers)?t.iceServers:[];e.iceServerCount=s.length;let n=mc(new RTCPeerConnection({iceServers:s,iceTransportPolicy:t.iceTransportPolicy==="relay"?"relay":"all"}));e.connection=n,e.diagnostics.iceConnectionState=n.iceConnectionState||"new",e.diagnostics.iceGatheringState=n.iceGatheringState||"new",e.state="prepared",n.ondatachannel=i=>{if(this.peers[e.localKey]!==e)return;let o=i.channel;if(!["browser.control.v1","browser.pointer.v1","browser.state.v1"].includes(o?.label)){o?.close?.();return}e.channels[o.label]=mc(o),o.onclose=()=>{e.channels[o.label]===o&&delete e.channels[o.label]}},n.ontrack=i=>{this.peers[e.localKey]===e&&(e.videoElement.srcObject=i.streams[0]||new MediaStream([i.track]),e.videoElement.play().catch(()=>{}))},n.onicecandidate=i=>{if(this.peers[e.localKey]===e)try{this.send({type:"browser_peer_ice_candidate",agentId:e.agentId,browserSessionId:e.browserSessionId,peerId:e.peerId,connectionGeneration:e.connectionGeneration,candidate:i.candidate?i.candidate.toJSON():null})}catch{}},n.onicecandidateerror=i=>{this.peers[e.localKey]===e&&(e.diagnostics.candidateErrors+=1,e.diagnostics.lastCandidateError={address:typeof i.address=="string"?i.address:null,port:Number(i.port)||null,url:typeof i.url=="string"?i.url:null,errorCode:Number(i.errorCode)||null,errorText:typeof i.errorText=="string"?i.errorText.slice(0,256):null})},n.oniceconnectionstatechange=()=>{this.peers[e.localKey]===e&&(e.diagnostics.iceConnectionState=n.iceConnectionState||"new")},n.onicegatheringstatechange=()=>{this.peers[e.localKey]===e&&(e.diagnostics.iceGatheringState=n.iceGatheringState||"new")},n.onconnectionstatechange=()=>{if(this.peers[e.localKey]===e){if(e.state=n.connectionState,e.diagnostics.connectionState=n.connectionState||"new",e.diagnostics.iceConnectionState=n.iceConnectionState||"new",e.diagnostics.iceGatheringState=n.iceGatheringState||"new",n.connectionState==="connected"){clearTimeout(e.attachTimer),e.attachTimer=null,clearTimeout(e.disconnectedTimer),e.disconnectedTimer=null;return}if(n.connectionState==="disconnected"){e.disconnectedTimer||(e.disconnectedTimer=setTimeout(()=>{if(e.disconnectedTimer=null,this.peers[e.localKey]!==e||n.connectionState==="connected")return;let i=e.iceServerCount===0?"browser_ice_servers_missing":"browser_ice_connection_failed";this.failPeer(e,new Error(i),i)},sk));return}if(["failed","closed"].includes(n.connectionState)){let i=e.iceServerCount===0?"browser_ice_servers_missing":"browser_ice_connection_failed";this.failPeer(e,new Error(i),i)}}};let r=e.pendingOffer;e.pendingOffer=null,r&&await this.acceptOffer(e,r)},async acceptOffer(e,t){if(!(this.peers[e.localKey]!==e||e.connectionGeneration!==Number(t.connectionGeneration))){if(!e.connection){(!e.peerId||e.peerId===t.peerId)&&(e.pendingOffer||(e.pendingOffer=t));return}if(e.peerId===t.peerId){if(e.answerPromise)return e.answerPromise;e.answerPromise=(async()=>{if(await e.connection.setRemoteDescription(t.description),await e.connection.setLocalDescription(await e.connection.createAnswer()),this.peers[e.localKey]===e){this.send({type:"browser_peer_answer",agentId:e.agentId,browserSessionId:e.browserSessionId,peerId:e.peerId,connectionGeneration:e.connectionGeneration,description:e.connection.localDescription});for(let s of e.pendingCandidates.splice(0))await e.connection.addIceCandidate(s)}})();try{await e.answerPromise}finally{e.answerPromise=null}}}},async acceptCandidate(e,t){if(!(this.peers[e.localKey]!==e||e.connectionGeneration!==Number(t.connectionGeneration)||!t.candidate)){if(!e.connection){(!e.peerId||e.peerId===t.peerId)&&e.pendingCandidates.push(t.candidate);return}e.peerId===t.peerId&&(e.connection.remoteDescription?await e.connection.addIceCandidate(t.candidate):e.pendingCandidates.push(t.candidate))}},interactiveReady(e,t){let s=this.peers[Bt(e,t)];return s?.state==="connected"&&s.channels["browser.control.v1"]?.readyState==="open"&&s.channels["browser.pointer.v1"]?.readyState==="open"},sendControl(e,t,s){let n=this.peers[Bt(e,t)],r=n?.channels["browser.control.v1"];return!n||n.state!=="connected"||r?.readyState!=="open"?!1:(r.send(JSON.stringify({version:1,connectionGeneration:n.connectionGeneration,controlSeq:++n.controlSeq,action:s})),!0)},sendPointer(e,t,s){let n=this.peers[Bt(e,t)],r=n?.channels["browser.pointer.v1"];return!n||n.state!=="connected"||r?.readyState!=="open"?!1:(r.send(JSON.stringify({version:1,connectionGeneration:n.connectionGeneration,pointerSeq:++n.pointerSeq,action:s})),!0)},detach(e,t,{notify:s=!0}={}){let n=Bt(e,t),r=this.peers[n];if(r){if(delete this.peers[n],clearTimeout(r.attachTimer),r.attachTimer=null,clearTimeout(r.disconnectedTimer),r.disconnectedTimer=null,s&&!r.peerId&&this.rememberCancelledPeer(r),s&&r.peerId)try{this.send({type:"browser_peer_detach",requestId:Ho(),agentId:e,browserSessionId:t,peerId:r.peerId,connectionGeneration:r.connectionGeneration})}catch{}this.errorCodes[n]||delete this.peerDiagnostics[n];for(let i of Object.values(r.channels||{}))try{i?.close?.()}catch{}r.channels={};try{r.connection?.close()}catch{}r.videoElement&&(r.videoElement.srcObject=null)}},failPeer(e,t,s=null){this.peers[e.localKey]===e&&(this.lastError=t?.message||String(t),this.errors[e.localKey]=this.lastError,s?this.errorCodes[e.localKey]=s:delete this.errorCodes[e.localKey],this.detach(e.agentId,e.browserSessionId,{notify:!0}))},handleTransportReset(){this.protocolSupported=null,this.connectionEpoch+=1;for(let e of Object.values(this.pending))clearTimeout(e.timer),e.reject(new Error("Browser Runtime connection changed"));this.pending={};for(let e of Object.values(this.peers))this.detach(e.agentId,e.browserSessionId,{notify:!1});this.peers={},this.runtimeStatus={},this.installProgress={},this.errors={},this.errorCodes={},this.peerDiagnostics={},this.clearCancelledPeers()},handleMessage(e){if(!e?.type)return;if(e.type==="client_hello_ack"){this.protocolSupported=e.browserRuntimeProtocol===1;return}if(e.type==="auth_result"){this.protocolSupported=!1;return}if(e.type==="browser_runtime_error"){let n=new Error(hc(e));n.code=e.code,this.completeRequest(e.requestId,null,n)||(this.lastError=n.message);return}if(e.type==="browser_runtime_install_progress"){this.installProgress[e.agentId]={downloadedBytes:Number(e.downloadedBytes)||0,totalBytes:Number(e.totalBytes)||0};return}if(e.type==="browser_runtime_status_result"){this.runtimeStatus[e.agentId]=e,this.completeRequest(e.requestId,e),e.state!=="installing"&&delete this.installProgress[e.agentId];return}if(e.type==="browser_session_error"){let n=new Error(hc(e));n.code=e.code,this.completeRequest(e.requestId,null,n)||(this.lastError=n.message);return}if(e.type==="browser_session_created"){this.sessions[Bt(e.agentId,e.browserSessionId)]=e,this.completeRequest(e.requestId,e);return}if(e.type==="browser_session_list_result"){this.completeRequest(e.requestId,e);return}if(e.type==="browser_session_snapshot"){let n=Bt(e.agentId,e.browserSessionId);this.sessions[n]=e,this.completeRequest(e.requestId,e),["closed","failed"].includes(e.state)&&this.detach(e.agentId,e.browserSessionId,{notify:!1});return}let t=Bt(e.agentId,e.browserSessionId),s=this.peers[t];if(!s||s.connectionGeneration!==Number(e.connectionGeneration)){if(e.type==="browser_peer_prepared"||e.type==="browser_peer_error"||e.type==="browser_peer_state"&&["failed","disconnected","closed"].includes(e.state)){let n=this.takeCancelledPeer(e);if(n&&e.type==="browser_peer_prepared")try{this.send({type:"browser_peer_detach",requestId:Ho(),agentId:n.agentId,browserSessionId:n.browserSessionId,peerId:e.peerId,connectionGeneration:n.connectionGeneration})}catch{}}return}if(e.type==="browser_peer_error")this.failPeer(s,new Error(hc(e,"Browser peer failed")),e.code||null);else if(e.type==="browser_peer_prepared")this.preparePeer(s,e).catch(n=>this.failPeer(s,n));else if(e.type==="browser_peer_offer")this.acceptOffer(s,e).catch(n=>this.failPeer(s,n));else if(e.type==="browser_peer_ice_candidate")this.acceptCandidate(s,e).catch(n=>this.failPeer(s,n));else if(e.type==="browser_peer_state"&&e.state&&(s.remoteState=e.state,["failed","disconnected","closed"].includes(e.state))){let n=s.iceServerCount===0?"browser_ice_servers_missing":"browser_ice_connection_failed";this.failPeer(s,new Error(n),n)}}}})});function Wo(){try{if(window.Pinia&&typeof window.Pinia.useAuthStore=="function")return window.Pinia.useAuthStore()}catch{}return null}function yc(){try{return localStorage.getItem("authToken")||null}catch{return null}}function sf(){let e=Wo();if(e)try{return e.getActiveToken?.()||e.token||yc()}catch{return e.token||yc()}return yc()}function ok(e,t){if(!e)return!1;let s=sf();if(s&&s!==t)return!1;try{localStorage.setItem("authToken",e)}catch{}let n=Wo();return n&&(n.token=e),!0}function ak(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 tf(e){return!e||typeof window>"u"||!window.location?!1:e.origin===window.location.origin&&e.pathname.startsWith("/api/")}function lk(e){if(!e)return!1;let t=e.pathname;return!!(ik.has(t)||t.startsWith("/api/auth/sso/poll/")||/^\/api\/auth\/sso\/[^/]+\/start(?:-qr)?$/.test(t))}function ck(e,t){return t?.headers?new Headers(t.headers):e&&typeof e=="object"&&e.headers?new Headers(e.headers):new Headers}function dk(e){let t=e.get("Authorization");return!t||!t.startsWith("Bearer ")?null:t.slice(7)}function uk(e,t){return{...e||{},headers:t}}function pk(e,t,s,n){let r=Wo();r&&typeof r.handleAuthResponse=="function"?r.handleAuthResponse(e,t,s,n):r&&typeof r.handleAuthFailure=="function"&&n&&r.handleAuthFailure(void 0,t,s)}function nf(){if(ef||typeof window>"u"||!window.fetch)return;ef=!0;let e=window.fetch.bind(window);window.fetch=async function(s,n){let r=ak(s),i=tf(r)&&!lk(r),o=tf(r)?{...n||{},credentials:"same-origin"}:n,a=null,l=i?Wo():null,c=l?.authGeneration,d=!!l?.isAuthenticated;if(i){let g=ck(s,n);a=dk(g),a||(a=sf(),a&&(g.set("Authorization",`Bearer ${a}`),o=uk(o,g)))}let u=await e(s,o);try{let g=u.headers&&u.headers.get&&u.headers.get("X-New-Token");g&&ok(g,a),i&&u.status===401&&pk(u,a,c,d)}catch{}return u}}var ef,ik,rf=V(()=>{ef=!1,ik=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 of,af,bc=V(()=>{of={"quickSend.title":"Quick send","quickSend.description":"Add up to 5 send buttons for this Agent. Each sends your current message with its model and optional turn overrides.","quickSend.empty":"No quick sends configured. No extra send buttons are shown.","quickSend.offline":"This Agent is offline. Reconnect to load or save quick sends.","quickSend.entry":"Quick send {index}","quickSend.name":"Button name","quickSend.model":"Model","quickSend.chooseModel":"Choose a model","quickSend.noModels":"Configure models in the LLM category first.","quickSend.effort":"Reasoning effort","quickSend.maxOutputTokens":"Maximum output tokens","quickSend.default":"Default","quickSend.outputLimit":"Leave blank to use the model default: {max} tokens (also the maximum).","quickSend.add":"Add quick send","quickSend.remove":"Remove","quickSend.limit":"Maximum 5 quick sends.","quickSend.nameRequired":"Enter a button name (1\u201380 characters).","quickSend.modelRequired":"Choose an available model for each quick send.","quickSend.effortInvalid":"The selected effort is not available for this model.","quickSend.outputInvalid":"Output tokens must be a positive integer no greater than {max}.","quickSend.loadFailed":"Could not load quick sends. Refresh to retry.","quickSend.saveFailed":"Save was not confirmed. Refresh to check the saved configuration before retrying.","quickSend.saved":"Quick sends saved.","quickSend.savedRefreshWarning":"Quick sends saved, but runtime refresh failed: {error}"},af={"quickSend.title":"\u5FEB\u6377\u53D1\u9001","quickSend.description":"\u4E3A\u6B64 Agent \u6DFB\u52A0\u6700\u591A 5 \u4E2A\u53D1\u9001\u6309\u94AE\u3002\u4F7F\u7528\u6307\u5B9A\u6A21\u578B\u548C\u53EF\u9009\u7684\u5355\u8F6E\u53C2\u6570\u53D1\u9001\u5F53\u524D\u6D88\u606F\u3002","quickSend.empty":"\u5C1A\u672A\u914D\u7F6E\u5FEB\u6377\u53D1\u9001\uFF0C\u4E0D\u4F1A\u663E\u793A\u989D\u5916\u7684\u53D1\u9001\u6309\u94AE\u3002","quickSend.offline":"\u6B64 Agent \u5DF2\u79BB\u7EBF\u3002\u91CD\u65B0\u8FDE\u63A5\u540E\u53EF\u52A0\u8F7D\u6216\u4FDD\u5B58\u5FEB\u6377\u53D1\u9001\u3002","quickSend.entry":"\u5FEB\u6377\u53D1\u9001 {index}","quickSend.name":"\u6309\u94AE\u540D\u79F0","quickSend.model":"\u6A21\u578B","quickSend.chooseModel":"\u9009\u62E9\u6A21\u578B","quickSend.noModels":"\u8BF7\u5148\u5728\u6A21\u578B\u914D\u7F6E\u5206\u7C7B\u4E2D\u6DFB\u52A0\u6A21\u578B\u3002","quickSend.effort":"\u63A8\u7406\u5F3A\u5EA6","quickSend.maxOutputTokens":"\u6700\u5927\u8F93\u51FA Token \u6570","quickSend.default":"\u9ED8\u8BA4","quickSend.outputLimit":"\u7559\u7A7A\u4F7F\u7528\u6A21\u578B\u9ED8\u8BA4\u503C\uFF1A{max} Token\uFF08\u4E5F\u662F\u53EF\u8BBE\u7F6E\u7684\u4E0A\u9650\uFF09\u3002","quickSend.add":"\u6DFB\u52A0\u5FEB\u6377\u53D1\u9001","quickSend.remove":"\u5220\u9664","quickSend.limit":"\u6700\u591A\u6DFB\u52A0 5 \u4E2A\u5FEB\u6377\u53D1\u9001\u3002","quickSend.nameRequired":"\u8BF7\u8F93\u5165\u6309\u94AE\u540D\u79F0\uFF081\u201380 \u4E2A\u5B57\u7B26\uFF09\u3002","quickSend.modelRequired":"\u8BF7\u4E3A\u6BCF\u4E2A\u5FEB\u6377\u53D1\u9001\u9009\u62E9\u53EF\u7528\u6A21\u578B\u3002","quickSend.effortInvalid":"\u6B64\u6A21\u578B\u4E0D\u652F\u6301\u6240\u9009\u63A8\u7406\u5F3A\u5EA6\u3002","quickSend.outputInvalid":"\u8F93\u51FA Token \u6570\u5FC5\u987B\u4E3A\u4E0D\u8D85\u8FC7 {max} \u7684\u6B63\u6574\u6570\u3002","quickSend.loadFailed":"\u65E0\u6CD5\u52A0\u8F7D\u5FEB\u6377\u53D1\u9001\uFF0C\u8BF7\u5237\u65B0\u91CD\u8BD5\u3002","quickSend.saveFailed":"\u5C1A\u672A\u786E\u8BA4\u4FDD\u5B58\u3002\u8BF7\u5148\u5237\u65B0\u68C0\u67E5\u5DF2\u4FDD\u5B58\u7684\u914D\u7F6E\uFF0C\u518D\u51B3\u5B9A\u662F\u5426\u91CD\u8BD5\u3002","quickSend.saved":"\u5FEB\u6377\u53D1\u9001\u5DF2\u4FDD\u5B58\u3002","quickSend.savedRefreshWarning":"\u5FEB\u6377\u53D1\u9001\u5DF2\u4FDD\u5B58\uFF0C\u4F46\u8FD0\u884C\u65F6\u5237\u65B0\u5931\u8D25\uFF1A{error}"}});var lf,cf,wc=V(()=>{lf={"userShortcuts.title":"Keyboard shortcuts","userShortcuts.scope":"These are your user preferences, stored only in this browser for this account. They do not sync across devices.","userShortcuts.quickSendHelp":"Quick-send shortcuts are active automatically when presets are configured in Agent settings. They only work while the message composer is focused; clear an individual binding to disable it.","userShortcuts.help":"Shortcuts use simple Alt + key defaults. Click a binding to replace it, or clear it to disable the action. Escape cancels; Tab moves on. Global actions stay available while the message composer is focused, and never run in dialogs, other text fields, editors or terminals.","userShortcuts.suggestion":"Suggestion: {binding}","userShortcuts.recording":"Press a shortcut\u2026","userShortcuts.unbound":"Not bound","userShortcuts.clear":"Clear","userShortcuts.clearAction":"Clear shortcut for {action}","userShortcuts.reset":"Reset shortcuts","userShortcuts.action.terminal":"Open terminal","userShortcuts.action.files":"Open files","userShortcuts.action.git":"Open Git","userShortcuts.action.newSession":"New session","userShortcuts.action.closeWorkbench":"Close workbench","userShortcuts.action.quickSend1":"Quick send 1","userShortcuts.action.quickSend2":"Quick send 2","userShortcuts.action.quickSend3":"Quick send 3","userShortcuts.action.quickSend4":"Quick send 4","userShortcuts.action.quickSend5":"Quick send 5","userShortcuts.error.invalid":"Use Ctrl, Meta or Alt with a letter or number; Shift is optional.","userShortcuts.error.reserved":"This combination conflicts with a browser or existing app shortcut.","userShortcuts.error.conflict":"This shortcut is already assigned to {action}. Clear it there first.","userShortcuts.error.storage":"Could not save preferences in this browser. Check browser storage permissions.","userShortcuts.error.unauthenticated":"Sign in before saving your shortcuts."},cf={"userShortcuts.title":"\u952E\u76D8\u5FEB\u6377\u952E","userShortcuts.scope":"\u8FD9\u662F\u4F60\u7684\u7528\u6237\u504F\u597D\uFF0C\u6309\u5F53\u524D\u8D26\u53F7\u4EC5\u4FDD\u5B58\u5728\u6B64\u6D4F\u89C8\u5668\u4E2D\uFF0C\u4E0D\u8DE8\u8BBE\u5907\u540C\u6B65\u3002","userShortcuts.quickSendHelp":"\u5728 Agent \u8BBE\u7F6E\u4E2D\u914D\u7F6E\u5FEB\u6377\u53D1\u9001\u540E\uFF0C\u5FEB\u6377\u952E\u4F1A\u81EA\u52A8\u751F\u6548\uFF1B\u4EC5\u5728\u6D88\u606F\u8F93\u5165\u6846\u83B7\u5F97\u7126\u70B9\u65F6\u89E6\u53D1\u3002\u6E05\u9664\u5355\u9879\u7ED1\u5B9A\u5373\u53EF\u505C\u7528\u5BF9\u5E94\u5FEB\u6377\u952E\u3002","userShortcuts.help":"\u9ED8\u8BA4\u4F7F\u7528\u7B80\u5355\u7684 Alt + \u5355\u952E\u3002\u70B9\u51FB\u7ED1\u5B9A\u6309\u94AE\u53EF\u66FF\u6362\uFF0C\u6E05\u9664\u540E\u53EF\u505C\u7528\u8BE5\u64CD\u4F5C\u3002Escape \u53D6\u6D88\uFF0CTab \u79FB\u81F3\u4E0B\u4E00\u9879\u3002\u6D88\u606F\u8F93\u5165\u6846\u83B7\u5F97\u7126\u70B9\u65F6\u4ECD\u53EF\u4F7F\u7528\u5168\u5C40\u52A8\u4F5C\uFF1B\u5F39\u7A97\u3001\u5176\u4ED6\u8F93\u5165\u6846\u3001\u7F16\u8F91\u5668\u4E0E\u7EC8\u7AEF\u4E2D\u7684\u6309\u952E\u4E0D\u4F1A\u88AB\u62A2\u5360\u3002","userShortcuts.suggestion":"\u63A8\u8350\uFF1A{binding}","userShortcuts.recording":"\u8BF7\u6309\u4E0B\u7EC4\u5408\u952E\u2026","userShortcuts.unbound":"\u672A\u7ED1\u5B9A","userShortcuts.clear":"\u6E05\u9664","userShortcuts.clearAction":"\u6E05\u9664\u201C{action}\u201D\u5FEB\u6377\u952E","userShortcuts.reset":"\u91CD\u7F6E\u5FEB\u6377\u952E","userShortcuts.action.terminal":"\u6253\u5F00\u7EC8\u7AEF","userShortcuts.action.files":"\u6253\u5F00\u6587\u4EF6","userShortcuts.action.git":"\u6253\u5F00 Git","userShortcuts.action.newSession":"\u65B0\u5EFA\u4F1A\u8BDD","userShortcuts.action.closeWorkbench":"\u5173\u95ED\u5DE5\u4F5C\u53F0","userShortcuts.action.quickSend1":"\u5FEB\u6377\u53D1\u9001 1","userShortcuts.action.quickSend2":"\u5FEB\u6377\u53D1\u9001 2","userShortcuts.action.quickSend3":"\u5FEB\u6377\u53D1\u9001 3","userShortcuts.action.quickSend4":"\u5FEB\u6377\u53D1\u9001 4","userShortcuts.action.quickSend5":"\u5FEB\u6377\u53D1\u9001 5","userShortcuts.error.invalid":"\u8BF7\u4F7F\u7528 Ctrl\u3001Meta \u6216 Alt \u642D\u914D\u5B57\u6BCD\u6216\u6570\u5B57\uFF0C\u53EF\u52A0 Shift\u3002","userShortcuts.error.reserved":"\u8BE5\u7EC4\u5408\u4E0E\u6D4F\u89C8\u5668\u6216\u5E94\u7528\u5DF2\u6709\u5FEB\u6377\u952E\u51B2\u7A81\u3002","userShortcuts.error.conflict":"\u8BE5\u7EC4\u5408\u5DF2\u7ED1\u5B9A\u201C{action}\u201D\uFF0C\u8BF7\u5148\u6E05\u9664\u539F\u7ED1\u5B9A\u3002","userShortcuts.error.storage":"\u65E0\u6CD5\u5728\u6B64\u6D4F\u89C8\u5668\u4FDD\u5B58\u504F\u597D\uFF0C\u8BF7\u68C0\u67E5\u6D4F\u89C8\u5668\u5B58\u50A8\u6743\u9650\u3002","userShortcuts.error.unauthenticated":"\u8BF7\u5148\u767B\u5F55\u518D\u4FDD\u5B58\u5FEB\u6377\u952E\u3002"}});var df,uf=V(()=>{bc();wc();df={...af,...cf,"quickSend.composer.label":"\u5FEB\u6377\u53D1\u9001","quickSend.composer.send":"\u5FEB\u6377\u53D1\u9001 {number}\uFF1A{name}","common.loading":"\u52A0\u8F7D\u4E2D...","common.confirm":"\u786E\u5B9A","common.apply":"\u5E94\u7528","common.cancel":"\u53D6\u6D88","common.delete":"\u5220\u9664","common.copy":"\u590D\u5236","common.copied":"\u5DF2\u590D\u5236","common.close":"\u5173\u95ED","common.refresh":"\u5237\u65B0","common.open":"\u6253\u5F00","common.save":"\u4FDD\u5B58","common.saving":"\u4FDD\u5B58\u4E2D...","common.search":"\u641C\u7D22","common.back":"\u8FD4\u56DE","common.noSubdirectories":"\u65E0\u5B50\u76EE\u5F55","common.drives":"\u9A71\u52A8\u5668","common.rootDir":"\u6839\u76EE\u5F55","common.comma":"\uFF0C","common.select":"\u9009\u62E9","common.retry":"\u91CD\u8BD5","mermaid.export":"\u5BFC\u51FA","mermaid.exportMd":"\u5BFC\u51FA MD","mermaid.exportPng":"\u5BFC\u51FA PNG","mermaid.exportJpg":"\u5BFC\u51FA JPG","login.subtitle":"Yeaft Web Code Agent","login.username":"\u7528\u6237\u540D","login.password":"\u5BC6\u7801","login.login":"\u767B\u5F55","login.loggingIn":"\u767B\u5F55\u4E2D...","login.enterUsername":"\u8BF7\u8F93\u5165\u7528\u6237\u540D","login.enterPassword":"\u8BF7\u8F93\u5165\u5BC6\u7801","login.noAccount":"\u6CA1\u6709\u8D26\u53F7\uFF1F","login.registerWithCode":"\u6CE8\u518C\u65B0\u8D26\u53F7","login.or":"\u6216","login.usePassword":"\u4F7F\u7528\u8D26\u53F7\u5BC6\u7801\u767B\u5F55","login.useSso":"\u8FD4\u56DE\u5355\u70B9\u767B\u5F55","login.noProviders":"\u7BA1\u7406\u5458\u5C1A\u672A\u542F\u7528\u4EFB\u4F55\u7B2C\u4E09\u65B9\u767B\u5F55\u3002","login.microsoft":"\u4F7F\u7528 Microsoft \u8D26\u53F7\u767B\u5F55","login.github":"\u4F7F\u7528 GitHub \u8D26\u53F7\u767B\u5F55","login.google":"\u4F7F\u7528 Google \u8D26\u53F7\u767B\u5F55","login.wechat":"\u4F7F\u7528\u5FAE\u4FE1\u626B\u7801\u767B\u5F55","login.alipay":"\u4F7F\u7528\u652F\u4ED8\u5B9D\u8D26\u53F7\u767B\u5F55","login.wechat.mobileUnsupported":"\u5FAE\u4FE1\u767B\u5F55\u6682\u4EC5\u652F\u6301\u7535\u8111\u7AEF\uFF0C\u8BF7\u5728\u7535\u8111\u6D4F\u89C8\u5668\u4E2D\u626B\u7801\u767B\u5F55\u3002","login.alipay.mobileWaiting":"\u6B63\u5728\u7B49\u5F85\u4F60\u5728\u652F\u4ED8\u5B9D\u4E2D\u786E\u8BA4\u2026 \u5B8C\u6210\u540E\u8FD4\u56DE\u672C\u9875\u9762\u5C06\u81EA\u52A8\u767B\u5F55\u3002","login.alipay.relaunch":"\u91CD\u65B0\u6253\u5F00\u652F\u4ED8\u5B9D","login.qr.title":"\u626B\u7801\u767B\u5F55","login.qr.titleAlipay":"\u652F\u4ED8\u5B9D\u626B\u7801\u767B\u5F55","login.qr.titleWechat":"\u5FAE\u4FE1\u626B\u7801\u767B\u5F55","login.qr.hint":"\u8BF7\u4F7F\u7528\u624B\u673A\u626B\u63CF\u4E8C\u7EF4\u7801\u5B8C\u6210\u6388\u6743","login.error.enterUsername":"\u8BF7\u8F93\u5165\u7528\u6237\u540D","login.error.enterPassword":"\u8BF7\u8F93\u5165\u5BC6\u7801","login.error.enter6Digit":"\u8BF7\u8F93\u51656\u4F4D\u9A8C\u8BC1\u7801","login.error.enterInviteCode":"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801","login.error.usernameMinLen":"\u7528\u6237\u540D\u81F3\u5C112\u4E2A\u5B57\u7B26","login.error.passwordMinLen":"\u5BC6\u7801\u81F3\u5C116\u4F4D","login.error.passwordMismatch":"\u4E24\u6B21\u5BC6\u7801\u4E0D\u4E00\u81F4","login.error.enterVerifyCode":"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801","login.error.loginFailed":"\u767B\u5F55\u5931\u8D25","login.forgot.link":"\u5FD8\u8BB0\u5BC6\u7801\uFF1F","login.forgot.title":"\u91CD\u7F6E\u5BC6\u7801","login.forgot.emailHint":"\u8F93\u5165\u8D26\u6237\u7ED1\u5B9A\u7684\u90AE\u7BB1\uFF0C\u6211\u4EEC\u5C06\u53D1\u9001 6 \u4F4D\u91CD\u7F6E\u9A8C\u8BC1\u7801\u3002","login.forgot.sendCode":"\u53D1\u9001\u91CD\u7F6E\u9A8C\u8BC1\u7801","login.forgot.sending":"\u53D1\u9001\u4E2D...","login.forgot.codeSent":"\u5982\u679C\u90AE\u7BB1\u5DF2\u6CE8\u518C\uFF0C\u91CD\u7F6E\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001\u3002\u8BF7\u5728\u4E0B\u65B9\u8F93\u5165\u9A8C\u8BC1\u7801\u4E0E\u65B0\u5BC6\u7801\u3002","login.forgot.resetBtn":"\u91CD\u7F6E\u5BC6\u7801","login.forgot.resetting":"\u91CD\u7F6E\u4E2D...","login.forgot.success":"\u5BC6\u7801\u5DF2\u91CD\u7F6E\uFF0C\u53EF\u4EE5\u4F7F\u7528\u65B0\u5BC6\u7801\u767B\u5F55\u3002","login.forgot.emailInvalid":"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u90AE\u7BB1","login.register.title":"\u65B0\u7528\u6237\u6CE8\u518C","login.register.inviteCode":"\u9080\u8BF7\u7801","login.register.username":"\u7528\u6237\u540D","login.register.password":"\u5BC6\u7801\uFF08\u81F3\u5C116\u4F4D\uFF09","login.register.confirmPassword":"\u786E\u8BA4\u5BC6\u7801","login.register.email":"\u90AE\u7BB1\uFF08\u53EF\u9009\uFF09","login.register.submit":"\u6CE8\u518C","login.register.submitting":"\u6CE8\u518C\u4E2D...","login.register.back":"\u8FD4\u56DE\u767B\u5F55","login.register.success":"\u6CE8\u518C\u6210\u529F\uFF0C\u8BF7\u767B\u5F55","login.register.enterCode":"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801","login.register.usernameMin":"\u7528\u6237\u540D\u81F3\u5C112\u4E2A\u5B57\u7B26","login.register.passwordMin":"\u5BC6\u7801\u81F3\u5C116\u4F4D","login.register.passwordMismatch":"\u4E24\u6B21\u5BC6\u7801\u4E0D\u4E00\u81F4","login.totp.setupTitle":"\u8BBE\u7F6E\u53CC\u56E0\u7D20\u8BA4\u8BC1","login.totp.setupHint":"\u4F7F\u7528 Microsoft Authenticator \u6216 Google Authenticator \u626B\u63CF\u4E0B\u65B9\u4E8C\u7EF4\u7801","login.totp.manualKey":"\u6216\u624B\u52A8\u8F93\u5165\u5BC6\u94A5\uFF1A","login.totp.enterCode":"\u8F93\u51656\u4F4D\u9A8C\u8BC1\u7801","login.totp.complete":"\u5B8C\u6210\u8BBE\u7F6E","login.totp.verifying":"\u9A8C\u8BC1\u4E2D...","login.totp.verify":"\u9A8C\u8BC1","login.totp.prompt":"\u8BF7\u8F93\u5165 Authenticator \u5E94\u7528\u4E2D\u7684\u9A8C\u8BC1\u7801","login.totp.invalidCode":"\u8BF7\u8F93\u51656\u4F4D\u9A8C\u8BC1\u7801","login.email.codeSent":"\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001\u81F3 {email}","login.email.enterCode":"\u8F93\u5165\u9A8C\u8BC1\u7801","login.email.verify":"\u9A8C\u8BC1","login.email.verifying":"\u9A8C\u8BC1\u4E2D...","login.email.enterCodeError":"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801","chat.agent.select":"\u9009\u62E9 Agent","chat.agent.manage":"\u7BA1\u7406 Agent","chat.agent.count":"{count} agents","chat.agent.updatesAvailable":"{count} \u4E2A Agent \u53EF\u5347\u7EA7","chat.agent.updateAvailable":"\u53EF\u5347\u7EA7\u81F3 v{version}","chat.agent.none":"\u6682\u65E0 Agent","chat.agent.restarting":"\u91CD\u542F\u4E2D","agentSettings.open":"Agent \u8BBE\u7F6E","agentSettings.manage":"\u7BA1\u7406","agentSettings.eyebrow":"\u672C\u5730\u8FD0\u884C\u65F6","agentSettings.title":"Agent \u8BBE\u7F6E","agentSettings.description":"\u6309 Agent \u67E5\u770B\u548C\u914D\u7F6E\u672C\u5730\u8FD0\u884C\u65F6\uFF0C\u4E0D\u518D\u628A\u8FD0\u884C\u63A7\u5236\u6DF7\u5165\u8D26\u6237\u8BBE\u7F6E\u3002","agentSettings.agentList":"Agent","agentSettings.categories":"Agent \u8BBE\u7F6E\u5206\u7C7B","agentSettings.categories.operations":"\u64CD\u4F5C","agentSettings.categories.trace":"Trace","agentSettings.categories.llm":"LLM \u914D\u7F6E","agentSettings.selectedAgent":"\u5F53\u524D Agent","agentSettings.online":"\u5728\u7EBF","agentSettings.offline":"\u79BB\u7EBF","agentSettings.empty":"\u6682\u65E0\u53EF\u7528 Agent\u3002","agentSettings.runtime.title":"\u8FD0\u884C\u65F6","agentSettings.runtime.description":"\u8EAB\u4EFD\u3001\u5DE5\u4F5C\u76EE\u5F55\u548C\u672C\u5730\u540E\u53F0\u5904\u7406\u3002","agentSettings.runtime.version":"\u7248\u672C","agentSettings.runtime.updateAvailable":"\u53EF\u66F4\u65B0\u81F3 v{version}","agentSettings.runtime.updateUnknown":"\u65E0\u6CD5\u83B7\u53D6\u66F4\u65B0\u72B6\u6001","agentSettings.runtime.workDir":"\u5DE5\u4F5C\u76EE\u5F55","agentSettings.workCenter.title":"\u5DE5\u4F5C\u4E2D\u5FC3","agentSettings.workCenter.enabled":"\u5DF2\u542F\u7528","agentSettings.workCenter.disabled":"\u5DF2\u505C\u7528","agentSettings.workCenter.runtimeUnavailable":"\u542F\u52A8\u5931\u8D25","agentSettings.workCenter.runtimeUnavailableMessage":"\u5DE5\u4F5C\u4E2D\u5FC3\u5DF2\u914D\u7F6E\u4E3A\u542F\u7528\uFF0C\u4F46\u8FD0\u884C\u65F6\u672A\u80FD\u542F\u52A8\uFF1B\u8BF7\u67E5\u770B Agent \u65E5\u5FD7\u540E\u91CD\u8BD5\u3002","agentSettings.workCenter.runtimeUnavailableHint":"\u5DF2\u914D\u7F6E\u4E3A\u542F\u7528\uFF0C\u4F46\u5DE5\u4F5C\u4E2D\u5FC3\u8FD0\u884C\u65F6\u5F53\u524D\u4E0D\u53EF\u7528\u3002","agentSettings.workCenter.enabledHint":"\u6B64 Agent \u5DF2\u53EF\u8FD0\u884C\u6301\u4E45\u5DE5\u4F5C\uFF1B\u65B0 Session \u4E5F\u53EF\u521B\u5EFA\u5DE5\u4F5C\u9879\u3002","agentSettings.workCenter.disabledHint":"\u5728\u6B64 Agent \u4E0A\u542F\u7528\u6301\u4E45\u5DE5\u4F5C\u9879\u548C\u540E\u53F0\u6267\u884C\u3002","agentSettings.workCenter.environmentManaged":"\u7531 YEAFT_WORK_CENTER_ENABLED \u7BA1\u7406\uFF0C\u65E0\u6CD5\u5728\u8FD9\u91CC\u4FEE\u6539\u3002","agentSettings.workCenter.upgradeRequired":"\u5347\u7EA7\u6B64 Agent \u540E\u624D\u80FD\u7BA1\u7406\u5DE5\u4F5C\u4E2D\u5FC3\u7684\u542F\u505C\u72B6\u6001\u3002","agentSettings.workCenter.unsupported":"\u9700\u8981\u5347\u7EA7","agentSettings.workCenter.loadFailed":"\u5DE5\u4F5C\u4E2D\u5FC3\u72B6\u6001\u52A0\u8F7D\u5931\u8D25\u3002","agentSettings.workCenter.loadFailedStatus":"\u52A0\u8F7D\u5931\u8D25","agentSettings.workCenter.saveFailed":"\u5DE5\u4F5C\u4E2D\u5FC3\u66F4\u65B0\u5931\u8D25\u3002","agentSettings.telemetry.title":"\u8BCA\u65AD","agentSettings.telemetry.saved":"\u8BCA\u65AD\u8BBE\u7F6E\u5DF2\u4FDD\u5B58\u3002","agentSettings.telemetry.loadFailed":"\u8BCA\u65AD\u8BBE\u7F6E\u52A0\u8F7D\u5931\u8D25\u3002","agentSettings.telemetry.saveFailed":"\u8BCA\u65AD\u8BBE\u7F6E\u4FDD\u5B58\u5931\u8D25\u3002","agentSettings.maintenance.title":"\u7EF4\u62A4","agentSettings.maintenance.description":"\u8FD9\u4E9B\u64CD\u4F5C\u4F1A\u4E2D\u65AD\u5F53\u524D Agent \u4E0A\u6B63\u5728\u8FD0\u884C\u7684\u5DE5\u4F5C\u3002","agentSettings.maintenance.upgradeFailed":"Agent \u5347\u7EA7\u5931\u8D25\u3002","chat.agent.dream":"Dream","chat.agent.dreamHint":"\u542F\u7528\u81EA\u52A8 Dream \u8BB0\u5FC6\u5904\u7406","chat.agent.restart":"\u91CD\u542F","chat.agent.restartConfirm":`\u786E\u5B9A\u8981\u91CD\u542F Agent "{name}" \u5417\uFF1F
|
|
11
11
|
\u6240\u6709\u6D3B\u8DC3\u7684\u4F1A\u8BDD\u5C06\u88AB\u4E2D\u65AD\u3002`,"chat.agent.upgrade":"\u5347\u7EA7","chat.agent.upgrading":"\u5347\u7EA7\u4E2D","chat.agent.upgradeConfirm":`\u5347\u7EA7 Agent "{name}" \u5230\u6700\u65B0\u7248\u672C\uFF1F
|
|
12
12
|
\u5347\u7EA7\u5B8C\u6210\u540E Agent \u4F1A\u81EA\u52A8\u91CD\u542F\u3002`,"chat.agent.upgradeAll":"\u5168\u90E8\u5347\u7EA7","chat.agent.upgradingAll":"\u5168\u90E8\u5347\u7EA7\u4E2D\u2026","chat.agent.upgradeAllConfirm":`\u786E\u5B9A\u5C06 {count} \u4E2A\u7B26\u5408\u6761\u4EF6\u7684 Agent \u5347\u7EA7\u5230\u6700\u65B0\u7248\u672C\u5417\uFF1F
|
|
13
|
-
\u5347\u7EA7\u5B8C\u6210\u540E\u5B83\u4EEC\u4F1A\u81EA\u52A8\u91CD\u542F\u3002\u53E6\u6709 {skipped} \u4E2A Agent \u56E0\u5F53\u524D\u4E0D\u53EF\u7528\u6216\u4E0D\u652F\u6301\u5B89\u5168\u8FDC\u7A0B\u5347\u7EA7\u800C\u8DF3\u8FC7\u3002`,"chat.agent.upgradeAllSummary":"Agent \u6279\u91CF\u5347\u7EA7\u5B8C\u6210\uFF1A\u5347\u7EA7\u6210\u529F {upgraded} \u4E2A\uFF0C\u5DF2\u662F\u6700\u65B0 {latest} \u4E2A\uFF0C\u5931\u8D25 {failed} \u4E2A\uFF0C\u8DF3\u8FC7 {skipped} \u4E2A\u3002","chat.agent.alreadyLatest":"Agent \u5DF2\u662F\u6700\u65B0\u7248\u672C (v{version})\uFF0C\u65E0\u9700\u5347\u7EA7\u3002","chat.agent.nodeIncompatible":"Agent \u5347\u7EA7\u4E2D\u6B62\uFF1A\u76EE\u6807\u7248\u672C v{version} \u9700\u8981 Node {required}\uFF0C\u4F46\u5F53\u524D\u673A\u5668\u8FD0\u884C\u7684\u662F Node {current}\u3002\u8BF7\u5148\u5347\u7EA7 Node.js \u518D\u91CD\u8BD5\u3002","chat.agent.manualUpgradeRequired":'Agent v{version} \u6CA1\u6709\u58F0\u660E\u5B89\u5168\u8FDC\u7A0B\u5347\u7EA7\u80FD\u529B\uFF1B\u65E7\u5BA2\u6237\u7AEF\u53C8\u672A\u4E0A\u62A5\u8DB3\u591F\u7684\u5E73\u53F0\u4FE1\u606F\uFF0CServer \u65E0\u6CD5\u6392\u9664 Windows \u5305\u76EE\u5F55\u9501\u5B9A\u6545\u969C\u3002\u4E3A\u907F\u514D\u91CD\u590D\u6267\u884C\u5DF2\u77E5\u4F1A\u5931\u8D25\u7684\u5347\u7EA7\uFF0C\u672C\u6B21\u64CD\u4F5C\u5DF2\u88AB\u963B\u6B62\u3002\u8BF7\u5148\u505C\u6B62\u8BE5\u673A\u5668\u4E0A\u6240\u9009\u7684 Agent/\u670D\u52A1\uFF1A\u82E5\u7531 PM2 \u6216\u5176\u4ED6\u670D\u52A1\u7BA1\u7406\u5668\u8FD0\u884C\uFF0C\u8BF7\u5728\u90A3\u91CC\u505C\u6B62\u8FD9\u4E2A\u7CBE\u786E\u5B9E\u4F8B\uFF1B\u82E5\u5728\u524D\u53F0\u7EC8\u7AEF\u8FD0\u884C\uFF0C\u8BF7\u7EC8\u6B62\u8BE5\u8FDB\u7A0B\u3002\u786E\u8BA4\u8BE5\u8FDB\u7A0B\u5DF2\u7ECF\u9000\u51FA\u540E\uFF0C\u518D\u6267\u884C "npm install -g @yeaft/webchat-agent@latest --registry=https://pkg.yeaft.com/"\uFF1B\u6700\u540E\u4F7F\u7528\u539F\u914D\u7F6E\u542F\u52A8\u540C\u4E00 Agent \u5B9E\u4F8B\u3002\u5B8C\u6210\u8FD9\u6B21\u5F15\u5BFC\u540E\uFF0C\u540E\u7EED\u53EF\u7EE7\u7EED\u5728\u6D4F\u89C8\u5668\u4E2D\u5347\u7EA7\u3002',"chat.agent.containerImageUpgradeRequired":'\u5BB9\u5668 Agent v{version} \u7531 Docker \u955C\u50CF\u7BA1\u7406\uFF0C\u4E0D\u80FD\u5728\u5BB9\u5668\u5185\u4F7F\u7528 npm \u81EA\u5347\u7EA7\u3002\u8BF7\u5728 Docker Host \u4E0A\u6267\u884C "docker pull <configured-agent-image>"\uFF0C\u7136\u540E\u901A\u8FC7\u73B0\u6709 Server/Sandbox \u751F\u547D\u5468\u671F\u6216\u539F\u6765\u7684 "yeaft-agent container install" \u547D\u4EE4\u91CD\u5EFA\u540C\u4E00\u4E2A\u5BB9\u5668\u3002\u4FDD\u7559\u73B0\u6709\u7684 /home/yeaft/.yeaft \u548C /workspace \u6301\u4E45\u5377\uFF0C\u5E76\u590D\u7528 Host \u7AEF\u539F\u6709\u7684 0600 agent-secret \u6587\u4EF6\uFF1B\u4E0D\u8981\u5728\u91CD\u5EFA\u65F6\u5220\u9664\u8FD9\u4E9B\u5377\u3002',"chat.agent.online":"{count} \u4E2A Agent \u5728\u7EBF","chat.agent.selectFirst":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A Agent","chat.agent.yeaft":"Yeaft \u5BF9\u8BDD","sidebar.toggle.chat":"\u5207\u6362\u5230 Chat","sidebar.toggle.yeaft":"\u5207\u6362\u5230 Yeaft","sidebar.surface.label":"\u4FA7\u680F\u89C6\u56FE","sidebar.surface.sessions":"\u4F1A\u8BDD","sidebar.provider.label":"\u4F1A\u8BDD Provider","sidebar.provider.claude":"Claude","sidebar.sessions.new":"\u65B0\u5EFA\u4F1A\u8BDD","sidebar.sessions.newChat":"\u65B0\u5EFA\u804A\u5929","sidebar.sessions.emptyProvider":"\u6B64 Provider \u6682\u65E0\u4F1A\u8BDD","sidebar.sessions.menu":"\u4F1A\u8BDD\u83DC\u5355","sidebar.sessions.unread":"\u672A\u8BFB","sidebar.sessions.pinned":"\u5DF2\u7F6E\u9876","sidebar.sessions.processing":"\u6B63\u5728\u56DE\u590D","sidebar.sessions.hidden":"\u5DF2\u9690\u85CF\u7684\u4F1A\u8BDD","sidebar.sessions.remove":"\u4ECE\u4FA7\u680F\u79FB\u9664","sidebar.sessions.agent":"Agent","sidebar.sessions.provider":"Provider","sidebar.projects.title":"\u9879\u76EE","sidebar.projects.menu":"\u9879\u76EE\u83DC\u5355","sidebar.projects.new":"\u65B0\u5EFA\u9879\u76EE","sidebar.projects.newSession":"\u5728{name}\u4E2D\u521B\u5EFA Session","sidebar.projects.assignFailed":"Session \u5DF2\u521B\u5EFA\uFF0C\u4F46\u65E0\u6CD5\u52A0\u5165{name}\u3002\u9519\u8BEF\uFF1A{message}","sidebar.projects.empty":"\u6682\u65E0\u9879\u76EE","sidebar.projects.noSessions":"\u5C06 Yeaft \u804A\u5929\u62D6\u5230\u8FD9\u91CC","sidebar.projects.namePrompt":"\u9879\u76EE\u540D\u79F0","sidebar.projects.renamePrompt":"\u91CD\u547D\u540D\u9879\u76EE","sidebar.projects.rename":"\u91CD\u547D\u540D\u9879\u76EE","sidebar.projects.delete":"\u5220\u9664\u9879\u76EE","sidebar.projects.deleteConfirm":"\u5220\u9664\u9879\u76EE\u201C{name}\u201D\uFF1F\u5176\u4E2D\u804A\u5929\u4F1A\u79FB\u56DE\u6700\u8FD1\u3002","sidebar.projects.remove":"\u79FB\u51FA\u9879\u76EE","sidebar.projects.moveMenu":"\u79FB\u52A8\u5230 Projects","sidebar.projects.moveBack":"\u8FD4\u56DE","sidebar.projects.moveEmpty":"\u6CA1\u6709\u5176\u4ED6 Project","sidebar.projects.moveTo":"\u79FB\u5230 {name}","sidebar.projects.instructions":"Project \u6307\u4EE4","sidebar.projects.instructionsTitle":"{name} \u6307\u4EE4","sidebar.projects.instructionsHint":"\u8FD9\u4E9B\u6307\u4EE4\u4F1A\u52A0\u5165\u6B64 Project \u5185\u6BCF\u4E2A Session \u7684 system prompt\u3002","sidebar.projects.instructionsPlaceholder":"\u8F93\u5165\u5171\u4EAB\u7684\u7F16\u7801\u89C4\u8303\u3001\u7EA6\u675F\u6216\u5DE5\u4F5C\u6D41\u8BF4\u660E\u2026","sidebar.recents.title":"\u6700\u8FD1","sidebar.recents.empty":"\u6682\u65E0\u804A\u5929","yeaft.back":"\u8FD4\u56DE","yeaft.session.people":"\u6210\u5458","yeaft.session.peopleEmpty":"\u6682\u65E0\u6210\u5458","yeaft.session.runningTasks":"\u8FD0\u884C\u4E2D\u7684\u4EFB\u52A1","yeaft.session.tasksEmpty":"\u6682\u65E0\u8FD0\u884C\u4EFB\u52A1","yeaft.session.owner":"\u8D1F\u8D23\u4EBA","yeaft.session.started":"\u5F00\u59CB\u65F6\u95F4","yeaft.breadcrumb.label":"Thread \u8FC7\u6EE4","yeaft.breadcrumb.mainStream":"\u4E3B\u6D41","yeaft.breadcrumb.backHint":"\u8FD4\u56DE\u5168\u6D41 (Esc)","yeaft.featureDetail.ariaLabel":"Task \u8BE6\u60C5","yeaft.featureDetail.replyTo":"\u56DE\u590D\u5230:","yeaft.featureDetail.forkHint":"\u8BE5 task \u6682\u65E0\u6D3B\u8DC3 thread \u2014 \u8BF7 fork \u65B0 thread \u540E\u56DE\u590D\u3002","yeaft.featureDetail.empty":"\u8BE5 task \u6682\u65E0\u6D88\u606F\u3002","yeaft.featureDetail.threadPillHint":"\u6253\u5F00 thread","yeaft.featureDetail.summary.aria":"\u4EFB\u52A1\u6458\u8981\u65F6\u95F4\u7EBF","yeaft.featureDetail.summary.title":"\u6458\u8981\u65F6\u95F4\u7EBF","yeaft.featureDetail.summary.loading":"\u6B63\u5728\u52A0\u8F7D\u6458\u8981\u5386\u53F2\u2026","yeaft.featureDetail.summary.empty":"\u6682\u65E0\u6458\u8981\u3002","yeaft.featureDetail.summary.error":"\u6458\u8981\u52A0\u8F7D\u5931\u8D25\uFF1A{error}","yeaft.featureDetail.summary.showArchived":"\u663E\u793A\u5DF2\u5F52\u6863","yeaft.featureDetail.related.aria":"\u5173\u8054\u4EFB\u52A1","yeaft.featureDetail.related.title":"\u5173\u8054\u4EFB\u52A1","yeaft.featureDetail.related.unlink":"\u53D6\u6D88\u5173\u8054","yeaft.featureDetail.members.aria":"\u4EFB\u52A1\u6210\u5458","yeaft.featureDetail.members.title":"\u6210\u5458","yeaft.featureDetail.members.abort":"\u4E2D\u6B62","yeaft.featureDetail.members.kick":"\u8E22\u51FA","yeaft.model":"\u6A21\u578B","yeaft.placeholder":"\u95EE\u6211\u4EFB\u4F55\u95EE\u9898...","yeaft.inbox":"\u6536\u4EF6\u7BB1","yeaft.inbox.tooltip":"\u4F60\u7684\u9ED8\u8BA4\u5BF9\u8BDD\u7EBF\u7A0B \u2014\u2014 \u4E0E Yeaft \u7684\u4E00\u5BF9\u4E00\u804A\u5929\u3002\u53EF\u4EE5\u4E3A\u5177\u4F53\u8BDD\u9898\u6216\u4EFB\u52A1\u521B\u5EFA\u65B0\u7EBF\u7A0B\u3002","yeaft.sidebar.activeThreads":"\u6D3B\u8DC3","yeaft.sidebar.idleThreads":"\u9759\u9ED8","yeaft.sidebar.archivedThreads":"\u5DF2\u5F52\u6863","yeaft.sidebar.tasks":"\u4EFB\u52A1","yeaft.sidebar.emptyActive":"\u6682\u65E0\u6D3B\u8DC3 thread","yeaft.sidebar.emptyIdle":"\u6682\u65E0\u9759\u9ED8 thread","yeaft.sidebar.emptyArchived":"\u6682\u65E0\u5F52\u6863 thread","yeaft.sidebar.emptyTasks":"\u65E0\u5339\u914D\u4EFB\u52A1","yeaft.sidebar.results":"\u641C\u7D22\u7ED3\u679C","yeaft.sidebar.resultsThreads":"Threads","yeaft.sidebar.kindThread":"thread","yeaft.sidebar.cancel":"\u53D6\u6D88","yeaft.sidebar.mergeInto":"\u5408\u5E76\u5230\u2026","yeaft.sidebar.mergeNoCandidates":"\u6CA1\u6709\u53EF\u5408\u5E76\u7684\u5176\u4ED6\u7EBF\u7A0B","yeaft.sidebar.mergeConfirmTitle":"\u5408\u5E76\u8FD9\u4E2A\u7EBF\u7A0B\uFF1F","yeaft.sidebar.mergeIrreversible":"\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\uFF0C\u6E90\u7EBF\u7A0B\u5C06\u88AB\u5F52\u6863\uFF0C\u5176\u6D88\u606F\u4F1A\u88AB\u79FB\u52A8\u5230\u76EE\u6807\u7EBF\u7A0B\u3002","yeaft.sidebar.mergeConfirm":"\u5408\u5E76","yeaft.settings.sidebarV2":"\u5B9E\u9A8C\u529F\u80FD\uFF1A\u4FA7\u8FB9\u680F V2","yeaft.settings.sidebarV2Hint":"Thread \u5217\u8868 + \u4EFB\u52A1\u6811\uFF08\u9884\u89C8\uFF09\u3002","yeaft.clearConfirm":"\u6E05\u7A7A\u6240\u6709\u6D88\u606F\uFF1F","yeaft.mode":"\u6A21\u5F0F","yeaft.agent":"\u667A\u80FD\u4F53","yeaft.connecting":"\u8FDE\u63A5\u4E2D...","yeaft.ready":"\u5C31\u7EEA","yeaft.tools":"\u4E2A\u5DE5\u5177","yeaft.skills":"\u4E2A\u6280\u80FD","yeaft.mcp":"\u4E2A MCP","yeaft.showSidebar":"\u663E\u793A\u4FA7\u680F","yeaft.hideSidebar":"\u9690\u85CF\u4FA7\u680F","yeaft.debug":"\u8C03\u8BD5","yeaft.debugClose":"\u5173\u95ED\u8C03\u8BD5\u9762\u677F","yeaft.debugTurns":"\u8F6E","yeaft.debugTabToolStats":"\u5DE5\u5177\u7EDF\u8BA1","yeaft.debugTabDream":"Dream","yeaft.debugTabRequestLog":"\u8BF7\u6C42\u65E5\u5FD7","yeaft.debugHistoryLoad":"\u52A0\u8F7D\u8BF7\u6C42\u5386\u53F2","yeaft.debugHistoryLoading":"\u52A0\u8F7D\u4E2D...","yeaft.debugHistoryLoaded":"\u5DF2\u52A0\u8F7D {count} \u6761","yeaft.debugHistoryUnavailable":"\u8C03\u8BD5\u8F68\u8FF9\u8BF7\u6C42\u8D85\u65F6\u3002Agent \u53EF\u80FD\u79BB\u7EBF\uFF0C\u6216\u54CD\u5E94\u5DF2\u88AB\u4E22\u5F03\uFF0C\u8BF7\u91CD\u8BD5\u3002","yeaft.debugHistoryTruncated":"\u8BE5\u8F68\u8FF9\u8FC7\u5927\uFF0C\u65E0\u6CD5\u5728\u4E00\u6B21\u54CD\u5E94\u4E2D\u5B8C\u6574\u4F20\u8F93\u3002\u6B64\u5904\u663E\u793A\u5927\u5B57\u6BB5\u9884\u89C8\uFF0C\u5B8C\u6574\u8F68\u8FF9\u4ECD\u4FDD\u7559\u5728 Agent\u3002","yeaft.debugSearchPlaceholder":"\u6B63\u5219\u641C\u7D22\u8BF7\u6C42\u65E5\u5FD7","yeaft.debugSearchHint":"\u9ED8\u8BA4\u663E\u793A\u5168\u5C40\u6700\u8FD1 10 \u6761\uFF1B\u641C\u7D22\u4F1A\u8DE8 Session \u5339\u914D\u8BF7\u6C42\u6458\u8981\u3002","yeaft.debugTurnAction":"\u67E5\u770B\u8BE5\u8F6E\u5BF9\u8BDD\u7684\u8C03\u8BD5\u8F68\u8FF9","yeaft.debugTurnContext":"\u8C03\u8BD5\u8F68\u8FF9","yeaft.debugPanelEmpty":"\u60AC\u505C\u5728 AI \u56DE\u590D\u4E0A\uFF0C\u70B9\u51FB\u8C03\u8BD5\u56FE\u6807\u5373\u53EF\u67E5\u770B\u8BE5\u8F6E\u5BF9\u8BDD\u7684\u8C03\u8BD5\u8F68\u8FF9\u3002","yeaft.dreamDebug.title":"Dream \u751F\u547D\u5468\u671F","yeaft.dreamDebug.trigger":"\u89E6\u53D1","yeaft.dreamDebug.status":"\u72B6\u6001","yeaft.dreamDebug.started":"\u5F00\u59CB","yeaft.dreamDebug.finished":"\u7ED3\u675F","yeaft.dreamDebug.time":"\u65F6\u95F4","yeaft.dreamDebug.phase":"\u9636\u6BB5","yeaft.dreamDebug.call":"\u8C03\u7528","yeaft.dreamDebug.location":"\u751F\u6210\u4F4D\u7F6E","yeaft.dreamDebug.result":"\u7ED3\u679C","yeaft.dreamDebug.noLatest":"\u8FD9\u4E2A\u4F1A\u8BDD\u8FD8\u6CA1\u6709\u8BB0\u5F55\u5230 Dream \u68C0\u67E5\u3002","yeaft.dreamDebug.noEvents":"\u8FD9\u4E2A\u4F1A\u8BDD\u8FD8\u6CA1\u6709 Dream \u4E8B\u4EF6\u3002","yeaft.dreamDebug.outputTitle":"\u672C session \u5DF2\u52A0\u8F7D\u7684 Dream \u8F93\u51FA","yeaft.dreamDebug.scope":"Scope","yeaft.dreamDebug.lastDream":"\u4E0A\u6B21 Dream","yeaft.dreamDebug.messagesCovered":"\u5DF2\u8986\u76D6\u6D88\u606F\u6570","yeaft.dreamDebug.noOutput":"\u8FD9\u4E2A session \u8FD8\u6CA1\u6709\u5199\u5165 Dream \u8F93\u51FA\u3002","yeaft.dreamDebug.promptLoadTitle":"\u5DF2\u52A0\u8F7D\u8FDB system prompt \u7684 Dream \u8BB0\u5FC6","yeaft.dreamDebug.loadedInto":"\u52A0\u8F7D\u4F4D\u7F6E","yeaft.dreamDebug.vp":"VP","yeaft.dreamDebug.summaryToPrompt":"summary.md -> system prompt","yeaft.dreamDebug.itemList":"Dream \u8FD0\u884C\u548C Scope","yeaft.dreamDebug.searchPlaceholder":"\u6309\u6807\u9898\u3001ID \u6216\u6458\u8981\u641C\u7D22 Dream Session...","yeaft.dreamDebug.noSearchResults":"\u6CA1\u6709\u5339\u914D\u7684 Dream Session\u3002","yeaft.dreamDebug.noSummary":"\u6682\u65E0\u6458\u8981","yeaft.dreamDebug.segments":"\u6BB5","yeaft.dreamDebug.lastError":"\u6700\u8FD1\u9519\u8BEF","yeaft.dreamDebug.overview":"\u6982\u89C8","yeaft.dreamDebug.sessionId":"Session ID","yeaft.dreamDebug.loadedAt":"\u52A0\u8F7D\u65F6\u95F4","yeaft.dreamDebug.layers":"\u5C42\u7EA7","yeaft.dreamDebug.summaryLayer":"Resident summary","yeaft.dreamDebug.noPromptLoad":"\u8FD9\u4E2A scope \u6682\u65E0 prompt-load \u8BB0\u5F55\u3002","yeaft.dreamDebug.segmentTitle":"Segments","yeaft.dreamDebug.sourceMessages":"\u6765\u6E90\u6D88\u606F","yeaft.dreamDebug.createdAt":"\u521B\u5EFA\u65F6\u95F4","yeaft.dreamDebug.updatedAt":"\u66F4\u65B0\u65F6\u95F4","yeaft.dreamDebug.noSegments":"\u8FD9\u4E2A scope \u6682\u65E0 memory segments\u3002","yeaft.dreamDebug.requestResponse":"Request / Response","yeaft.dreamDebug.noRequestResponse":"\u8FD9\u4E2A scope \u8FD8\u6CA1\u6709\u6301\u4E45\u5316\u7684 Dream request/response \u65E5\u5FD7\u3002","yeaft.dreamDebug.empty":"\u6682\u65E0 Dream debug \u6570\u636E\u3002","yeaft.debugGroupFollowMain":"\u8DDF\u968F\u4E3B\u9762\u677F","yeaft.debugGroupAll":"\u5168\u90E8\u4F1A\u8BDD","yeaft.debugAssistantResponse":"Assistant \u56DE\u590D","yeaft.debugViewAssistantResponse":"\u67E5\u770B\u56DE\u590D","yeaft.debugLatestRequestBody":"\u6700\u8FD1\u53EF\u7528\u8BF7\u6C42\u4F53","yeaft.debugLatestSystemPrompt":"\u6700\u8FD1\u53EF\u7528\u7CFB\u7EDF\u63D0\u793A","yeaft.debugRequestBodyUnavailable":"\u6B64 Turn \u6682\u65E0\u53EF\u7528\u8BF7\u6C42\u4F53\u3002","yeaft.debugSystemPromptUnavailable":"\u6B64 Turn \u6682\u65E0\u53EF\u7528\u7CFB\u7EDF\u63D0\u793A\u3002","yeaft.debugInputSystemShort":"\u7CFB\u7EDF","yeaft.debugInputHistoryShort":"\u5386\u53F2","yeaft.debugInputToolsShort":"\u5DE5\u5177\u5B9A\u4E49","yeaft.debugInputCurrentShort":"\u5F53\u524D","yeaft.debugInputTokenBreakdown":"Provider \u8F93\u5165 {total}\uFF1A\u7CFB\u7EDF\u63D0\u793A {system}\u3001\u5386\u53F2\u6D88\u606F {history}\u3001\u5DE5\u5177\u5B9A\u4E49 {tools}\u3001\u5F53\u524D Turn {current}\uFF08\u4F30\u7B97\u62C6\u5206\uFF09","yeaft.debugToolInput":"\u8F93\u5165","yeaft.debugToolResult":"\u7ED3\u679C","yeaft.debugToolRunning":"\u6267\u884C\u4E2D","yeaft.debugToolRunningNoResult":"\u6267\u884C\u4E2D\uFF0C\u6682\u65E0\u7ED3\u679C","yeaft.debugShowDetails":"\u5C55\u5F00","yeaft.debugHideDetails":"\u6536\u8D77","yeaft.debugTurnStartedAt":"\u56DE\u5408\u5F00\u59CB\u65F6\u95F4","yeaft.debugRequestAt":"\u8BF7\u6C42\u65F6\u95F4","yeaft.debugRequestAtDerived":"\u7531\u56DE\u5408\u5F00\u59CB\u65F6\u95F4\u63A8\u7B97\uFF08\u65E7 loop\uFF09","yeaft.turn":"\u7B2C {n} \u8F6E","yeaft.systemPrompt":"\u7CFB\u7EDF\u63D0\u793A","yeaft.messagesLabel":"\u6D88\u606F","yeaft.response":"\u56DE\u590D","yeaft.toolCalls":"\u5DE5\u5177\u8C03\u7528","yeaft.functionCalls":"\u51FD\u6570\u8C03\u7528","yeaft.request":"\u8BF7\u6C42","yeaft.pending":"(\u7B49\u5F85\u4E2D)","yeaft.inputTokens":"\u8F93\u5165","yeaft.outputTokens":"\u8F93\u51FA","yeaft.duration":"\u8017\u65F6","yeaft.noDebugData":"\u6682\u65E0\u8C03\u8BD5\u6570\u636E","yeaft.showDebug":"\u663E\u793A\u8C03\u8BD5\u9762\u677F","yeaft.hideDebug":"\u9690\u85CF\u8C03\u8BD5\u9762\u677F","yeaft.reloadPage":"\u5237\u65B0\u9875\u9762","yeaft.reloadMessages":"\u91CD\u65B0\u52A0\u8F7D\u6D88\u606F","sidebar.sessions.syncing":"\u6B63\u5728\u540C\u6B65\u6700\u65B0\u6D88\u606F","yeaft.historySearch.label":"\u641C\u7D22 Session \u5386\u53F2\u6D88\u606F","yeaft.historySearch.button":"\u641C\u7D22\u6D88\u606F","yeaft.historySearch.placeholder":"\u641C\u7D22\u5F53\u524D Session \u7684\u6D88\u606F","yeaft.historySearch.searching":"\u6B63\u5728\u641C\u7D22\u2026","yeaft.historySearch.minChars":"\u81F3\u5C11\u8F93\u5165 2 \u4E2A\u5B57\u7B26","yeaft.historySearch.empty":"\u6CA1\u6709\u5339\u914D\u7684\u6D88\u606F","yeaft.historySearch.error":"\u641C\u7D22\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5","yeaft.historySearch.unsupported":"\u8BF7\u5347\u7EA7\u5F53\u524D Agent \u540E\u518D\u641C\u7D22 Session \u5386\u53F2\u6D88\u606F","yeaft.historySearch.more":"\u52A0\u8F7D\u66F4\u591A\u7ED3\u679C","yeaft.historySearch.you":"\u4F60","yeaft.historySearch.assistant":"\u52A9\u624B","yeaft.outline.label":"\u5386\u53F2\u6D88\u606F","yeaft.outline.sender":"\u53D1\u9001\u8005","yeaft.outline.allSenders":"\u5168\u90E8\u53D1\u9001\u8005","yeaft.outline.title":"\u5386\u53F2\u6D88\u606F","yeaft.outline.placeholder":"\u641C\u7D22\u5F53\u524D\u5BF9\u8BDD","yeaft.outline.searching":"\u6B63\u5728\u641C\u7D22\u2026","yeaft.outline.loading":"\u6B63\u5728\u52A0\u8F7D\u2026","yeaft.outline.older":"\u52A0\u8F7D\u66F4\u65E9\u6D88\u606F","yeaft.outline.moreMatches":"\u52A0\u8F7D\u66F4\u591A\u5339\u914D\u9879","yeaft.outline.minChars":"\u81F3\u5C11\u8F93\u5165 2 \u4E2A\u5B57\u7B26","yeaft.outline.empty":"\u6682\u65E0\u6D88\u606F","yeaft.outline.noMatches":"\u6CA1\u6709\u5339\u914D\u7684\u6D88\u606F","yeaft.outline.error":"\u5927\u7EB2\u52A0\u8F7D\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5","yeaft.outline.unsupported":"\u8BF7\u5347\u7EA7\u5F53\u524D Agent \u540E\u518D\u4F7F\u7528\u5BF9\u8BDD\u5927\u7EB2","yeaft.outline.you":"\u4F60","yeaft.outline.assistant":"\u52A9\u624B","yeaft.outline.nonText":"\u975E\u6587\u672C\u56DE\u590D","yeaft.switchModel":"\u5207\u6362\u6A21\u578B","yeaft.modelMenu.title":"\u6A21\u578B\u548C LLM \u8BBE\u7F6E","yeaft.modelMenu.label":"\u6A21\u578B","yeaft.modelMenu.effort":"\u63A8\u7406\u5F3A\u5EA6","yeaft.modelMenu.effort.openaiReasoning":"\u63A8\u7406\u5F3A\u5EA6","yeaft.modelMenu.effort.anthropicBudget":"\u601D\u8003\u9884\u7B97","yeaft.modelMenu.effort.anthropicAdaptive":"\u81EA\u9002\u5E94\u601D\u8003\u5F3A\u5EA6","yeaft.modelMenu.effort.minimal":"\u6700\u5C0F","yeaft.modelMenu.effort.low":"\u4F4E","yeaft.modelMenu.effort.medium":"\u4E2D","yeaft.modelMenu.effort.high":"\u9AD8","yeaft.modelMenu.effort.xhigh":"\u8D85\u9AD8","yeaft.modelMenu.effort.max":"\u6700\u9AD8","yeaft.modelMenu.effort.ultra":"\u6781\u81F4","yeaft.modelMenu.noEffort":"\u5F53\u524D\u6A21\u578B\u6CA1\u6709\u53EF\u517C\u5BB9\u6620\u5C04\u7684\u63A8\u7406\u5F3A\u5EA6\u63A7\u5236\u3002","yeaft.modelMenu.configureHint":"Provider\u3001\u5BC6\u94A5\u3001\u6A21\u578B\u5217\u8868","yeaft.settings.title":"\u8BBE\u7F6E","yeaft.settings.tabs.vp":"VP \u5E93","yeaft.settings.tabs.search":"\u641C\u7D22","search.settings.backendTitle":"\u641C\u7D22\u540E\u7AEF","search.settings.backendDesc":"\u9009\u62E9 WebSearch \u5DE5\u5177\u9ED8\u8BA4\u4F7F\u7528\u7684\u540E\u7AEF\u3002\u4E3B\u540E\u7AEF\u5931\u8D25\u65F6,\u5F15\u64CE\u4F1A\u81EA\u52A8\u964D\u7EA7\u5230 HTML \u6293\u53D6\u3002","search.settings.backend.tavily":"Tavily","search.settings.backend.tavilyHint":"\u6258\u7BA1\u641C\u7D22 API\u3002\u514D\u8D39\u989D\u5EA6 1000 \u6B21/\u6708\u3002\u63A8\u8350\u3002","search.settings.backend.playwright":"Playwright \u670D\u52A1","search.settings.backend.playwrightHint":"\u81EA\u5EFA\u7684\u6D4F\u89C8\u5668\u5F0F\u641C\u7D22/\u6293\u53D6\u670D\u52A1,\u9002\u5408 IP \u4FE1\u8A89\u5DEE\u88AB bot \u68C0\u6D4B\u7684\u73AF\u5883\u3002\u5C1A\u672A\u4E0A\u7EBF\u3002","search.settings.comingSoon":"\u5373\u5C06\u63A8\u51FA","search.settings.tavilyKeyTitle":"Tavily API key","search.settings.tavilyKeyDesc":"\u4FDD\u5B58\u5728 agent \u7684 ~/.yeaft/config.json \u4E2D\u3002\u514D\u8D39\u7533\u8BF7:","search.settings.tavilyKeyUnchanged":"\u4FDD\u6301\u4E0D\u53D8","search.settings.clearKey":"\u6E05\u9664","search.settings.usageTitle":"\u672C\u6708\u7528\u91CF","search.settings.usageRefresh":"\u5237\u65B0","search.settings.usageLoading":"\u52A0\u8F7D\u4E2D\u2026","search.settings.usagePlan":"\u8BA1\u5212","search.settings.usageUsed":"\u5DF2\u7528","search.settings.usagePaygo":"\u6309\u91CF\u4ED8\u8D39","search.settings.usageError":"\u52A0\u8F7D\u7528\u91CF\u5931\u8D25","search.settings.save":"\u4FDD\u5B58","search.settings.saving":"\u4FDD\u5B58\u4E2D\u2026","search.settings.saveSuccess":"\u5DF2\u4FDD\u5B58","search.settings.cancel":"\u91CD\u7F6E","yeaft.settings.yeaftTitle":"\u7EBF\u7A0B\u5E76\u53D1\u4E0E\u5F52\u6863","yeaft.settings.yeaftDesc":"\u8C03\u6574\u53EF\u540C\u65F6\u8FD0\u884C\u7684\u7EBF\u7A0B\u6570\u91CF\uFF0C\u4EE5\u53CA\u95F2\u7F6E\u7EBF\u7A0B\u7684\u81EA\u52A8\u5F52\u6863\u65F6\u957F\u3002","yeaft.settings.maxConcurrentLabel":"\u6700\u5927\u5E76\u53D1\u7EBF\u7A0B\u6570","yeaft.settings.maxConcurrentHint":"\u540C\u65F6\u5728\u7EBF\u7684\u7EBF\u7A0B\u603B\u6570\u4E0A\u9650\uFF08\u542B\u59CB\u7EC8\u5B58\u5728\u7684 main \u4E3B\u7EBF\u7A0B\uFF09\u3002\u8D85\u8FC7\u6B64\u4E0A\u9650\u7684\u65B0\u7EBF\u7A0B\u5C06\u88AB\u62D2\u7EDD\uFF0C\u76F4\u81F3\u5DF2\u6709\u7EBF\u7A0B\u88AB\u5F52\u6863\u6216\u7EC8\u6B62\u3002\u8303\u56F4\uFF1A1-50\u3002","yeaft.settings.archiveIdleDaysLabel":"\u95F2\u7F6E\u591A\u4E45\u540E\u81EA\u52A8\u5F52\u6863\u7EBF\u7A0B\uFF08\u5929\uFF09","yeaft.settings.archiveIdleDaysHint":"\u65E0\u6D3B\u52A8\u8D85\u8FC7\u6B64\u5929\u6570\u7684\u7EBF\u7A0B\u5C06\u88AB\u5F52\u6863\u3002\u8303\u56F4\uFF1A1-3650\u3002","yeaft.settings.yeaftSaveBtn":"\u4FDD\u5B58","yeaft.settings.yeaftSaving":"\u4FDD\u5B58\u4E2D...","yeaft.settings.yeaftSaved":"\u5DF2\u4FDD\u5B58","yeaft.settings.yeaftLoading":"\u52A0\u8F7D\u4E2D...","yeaft.settings.yeaftLoadError":"\u52A0\u8F7D Yeaft \u8BBE\u7F6E\u5931\u8D25","yeaft.settings.yeaftSaveError":"\u4FDD\u5B58 Yeaft \u8BBE\u7F6E\u5931\u8D25","yeaft.settings.rangeErrorConcurrent":"\u5FC5\u987B\u5728 1 \u5230 50 \u4E4B\u95F4","yeaft.settings.rangeErrorArchive":"\u5FC5\u987B\u5728 1 \u5230 3650 \u4E4B\u95F4","chat.session.creating":"\u6B63\u5728\u521B\u5EFA\u4F1A\u8BDD...","chat.session.loadingHistory":"\u6B63\u5728\u52A0\u8F7D\u4F1A\u8BDD\u5386\u53F2...","yeaft.historyLoad.error":"\u4F1A\u8BDD\u5386\u53F2\u6682\u65F6\u65E0\u6CD5\u52A0\u8F7D\uFF0C\u6D88\u606F\u4ECD\u5B89\u5168\u4FDD\u5B58\u5728 Agent \u4E2D\u3002","yeaft.historyLoad.retry":"\u91CD\u65B0\u52A0\u8F7D","yeaft.sessionInventory.error":"\u6682\u65F6\u65E0\u6CD5\u52A0\u8F7D Session\uFF0C\u4F1A\u8BDD\u4ECD\u5B89\u5168\u4FDD\u5B58\u5728 Agent \u4E2D\u3002","yeaft.sessionInventory.retry":"\u91CD\u65B0\u52A0\u8F7D Session","chat.session.closed":"\u4F1A\u8BDD\u5DF2\u5173\u95ED","chat.session.agentOffline":"Agent \u5DF2\u79BB\u7EBF\uFF0C\u8BE5\u4F1A\u8BDD\u5C06\u5728 Agent \u91CD\u65B0\u4E0A\u7EBF\u540E\u6062\u590D\u3002","chat.execution.cancelled":"\u6267\u884C\u5DF2\u53D6\u6D88","chat.sidebar.expand":"\u5C55\u5F00\u83DC\u5355","chat.sidebar.collapse":"\u6536\u8D77\u4FA7\u8FB9\u680F","chat.sidebar.workbench":"\u5DE5\u5177\u9762\u677F","chat.sidebar.newConv":"\u4F1A\u8BDD","chat.sidebar.recentChats":"\u6700\u8FD1\u4F1A\u8BDD","chat.sidebar.resumeConv":"\u6062\u590D\u4F1A\u8BDD","chat.sidebar.lightMode":"\u6D45\u8272\u6A21\u5F0F","chat.sidebar.darkMode":"\u6DF1\u8272\u6A21\u5F0F","chat.sidebar.settings":"\u8BBE\u7F6E","chat.sidebar.emptyHint":"\u70B9\u51FB\u4E0A\u65B9\u6309\u94AE\u521B\u5EFA\u65B0\u4F1A\u8BDD","chat.sidebar.closeConv":"\u5173\u95ED\u4F1A\u8BDD","chat.sidebar.renameConv":"\u91CD\u547D\u540D","chat.sidebar.pin":"\u7F6E\u9876","chat.sidebar.unpin":"\u53D6\u6D88\u7F6E\u9876","chat.connection.connecting":"\u8FDE\u63A5\u4E2D...","chat.connection.reconnecting":"\u91CD\u8FDE\u4E2D ({current}/{max})...","chat.connection.updating":"\u670D\u52A1\u6B63\u5728\u66F4\u65B0\uFF0C\u8BF7\u7A0D\u5019...","chat.connection.disconnected":"\u8FDE\u63A5\u65AD\u5F00","chat.connection.reconnect":"\u91CD\u8FDE","chat.connection.reconnectFailed":"\u8FDE\u63A5\u65AD\u5F00\uFF0C\u8BF7\u70B9\u51FB\u91CD\u8FDE\u6309\u94AE\u91CD\u8BD5\u3002","chat.time.justNow":"\u521A\u521A","chat.time.minutesAgo":"{count}\u5206\u949F\u524D","chat.time.daysAgo":"{count}\u5929\u524D","chat.time.today":"\u4ECA\u5929","chat.time.yesterday":"\u6628\u5929","chat.delete.confirm":"\u786E\u5B9A\u8981\u5173\u95ED\u8FD9\u4E2A\u4F1A\u8BDD\u5417\uFF1F\u8FD9\u5C06\u7EC8\u6B62\u5BF9\u5E94\u7684 Claude \u8FDB\u7A0B\u3002","chat.delete.enterWorkDir":"\u8BF7\u8F93\u5165\u5DE5\u4F5C\u76EE\u5F55\u8DEF\u5F84","modal.newConv.workDir":"\u5DE5\u4F5C\u76EE\u5F55","modal.newConv.inputOrSelect":"\u8F93\u5165\u6216\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","modal.newConv.browse":"\u6D4F\u89C8\u76EE\u5F55","modal.newConv.noWorkDirs":"\u6682\u65E0\u5DE5\u4F5C\u76EE\u5F55","modal.newConv.selectAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A\u5728\u7EBF\u7684 Agent","modal.newConv.create":"\u521B\u5EFA\u4F1A\u8BDD","modal.newConv.folderLabel":"\u{1F4C1} \u5DE5\u4F5C\u76EE\u5F55","modal.newConv.provider":"\u63D0\u4F9B\u65B9","modal.newConv.model":"\u6A21\u578B","provider.claudeCode":"Claude Code","provider.copilot":"Copilot","modal.resume.workDir":"\u5DE5\u4F5C\u76EE\u5F55","modal.resume.inputOrSelect":"\u8F93\u5165\u6216\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","modal.resume.browse":"\u6D4F\u89C8\u76EE\u5F55","modal.resume.tabFolders":"\u5DE5\u4F5C\u76EE\u5F55","modal.resume.tabSessions":"\u5386\u53F2\u4F1A\u8BDD","modal.resume.noWorkDirs":"\u6682\u65E0\u5DE5\u4F5C\u76EE\u5F55","modal.resume.selectWorkDir":"\u8BF7\u5148\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","modal.resume.noSessions":"\u8BE5\u76EE\u5F55\u4E0B\u6CA1\u6709\u5386\u53F2\u4F1A\u8BDD","modal.resume.untitled":"\u672A\u547D\u540D\u4F1A\u8BDD","modal.resume.folderLabel":"\u{1F4C1} \u5DE5\u4F5C\u76EE\u5F55","modal.resume.sessionLabel":"\u{1F4AC} \u5386\u53F2\u4F1A\u8BDD","modal.resume.selectAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A\u5728\u7EBF\u7684 Agent","modal.folderPicker.title":"\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","modal.folderPicker.root":"\u6839\u76EE\u5F55 / \u9A71\u52A8\u5668","modal.folderPicker.path":"\u76EE\u5F55\u8DEF\u5F84","modal.folderPicker.go":"\u524D\u5F80","modal.folderPicker.ancestors":"\u4E0A\u7EA7\u76EE\u5F55\u5BFC\u822A","modal.folderPicker.directories":"\u5B50\u76EE\u5F55","modal.folderPicker.navigationHint":"\u70B9\u51FB\u6587\u4EF6\u5939\u8FDB\u5165\uFF0C\u518D\u9009\u62E9\u5F53\u524D\u76EE\u5F55\u3002","modal.folderPicker.selectCurrent":"\u9009\u62E9\u5F53\u524D\u76EE\u5F55","modal.folderPicker.loadFailed":"\u65E0\u6CD5\u6253\u5F00\u6B64\u76EE\u5F55\u3002\u8BF7\u68C0\u67E5\u8DEF\u5F84\u548C\u6743\u9650\uFF0C\u6216\u91CD\u8BD5\u3002","modal.folderPicker.unavailable":"Agent \u4E0D\u53EF\u7528\uFF0C\u8BF7\u8FDE\u63A5\u540E\u91CD\u8BD5\u3002","modal.folderPicker.timeout":"\u76EE\u5F55\u8BF7\u6C42\u8D85\u65F6\uFF0C\u8BF7\u91CD\u8BD5\u3002","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.setupTitle":"\u8FDE\u63A5\u4F60\u7684 Agent","welcome.setupDesc":"\u5728\u4F60\u7684\u7535\u8111\u4E0A\u8FD0\u884C\u5B89\u88C5\u547D\u4EE4\uFF0C\u5373\u53EF\u5F00\u59CB\u5BF9\u8BDD\u3002\u4EE3\u7801\u548C\u5DE5\u5177\u59CB\u7EC8\u7559\u5728\u672C\u673A\u3002","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","installer.platformLabel":"\u76EE\u6807\u64CD\u4F5C\u7CFB\u7EDF","installer.posix":"Linux / macOS","installer.powershell":"Windows PowerShell","installer.copyCommand":"\u590D\u5236\u5B89\u88C5\u547D\u4EE4","installer.instruction":"\u5C06\u547D\u4EE4\u7C98\u8D34\u5230\u8FD0\u884C Agent \u7684\u7535\u8111\u7EC8\u7AEF\u4E2D\u6267\u884C\u3002","installer.viewCommand":"\u67E5\u770B\u547D\u4EE4","installer.copying":"\u590D\u5236\u4E2D\u2026","installer.copyFailed":"\u590D\u5236\u5931\u8D25","installer.secretLoading":"\u6B63\u5728\u51C6\u5907 Agent secret\u2026","installer.secretError":"\u65E0\u6CD5\u51C6\u5907 Agent secret\u3002","installer.secretRequired":"\u8BF7\u5148\u751F\u6210 Agent secret\uFF0C\u518D\u590D\u5236\u6B64\u547D\u4EE4\u3002","installer.commandUnavailable":"\u751F\u6210 Agent secret \u540E\u624D\u4F1A\u63D0\u4F9B\u547D\u4EE4\u3002","installer.copyError":"\u590D\u5236\u5931\u8D25\uFF0C\u8BF7\u624B\u52A8\u9009\u62E9\u5E76\u590D\u5236\u547D\u4EE4\u3002","installer.copySuccess":"\u547D\u4EE4\u5DF2\u590D\u5236\u3002","installer.openSecurity":"\u6253\u5F00\u5B89\u5168\u8BBE\u7F6E","installer.note":"\u81EA\u52A8\u5B89\u88C5 Node.js \u548C\u79C1\u6709 Agent \u5B9E\u4F8B\u3002\u4EC5\u8FD0\u884C\u53EF\u4FE1\u670D\u52A1\u5668\u7684\u547D\u4EE4\uFF1B\u547D\u4EE4\u542B\u63A5\u5165\u5BC6\u94A5\uFF0C\u8BF7\u52FF\u5206\u4EAB\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.navigation":"\u5BF9\u8BDD\u5BFC\u822A","message.currentTurn":"\u2191 \u672C\u8F6E","message.scrollToLatest":"\u2193 \u6700\u65B0","message.backToCurrentTurn":"\u56DE\u5230\u672C\u8F6E\u95EE\u9898","message.showResponses":"\u5C55\u5F00 {count} \u6761\u56DE\u590D","message.hideResponses":"\u6298\u53E0\u56DE\u590D","message.assistant":"\u52A9\u624B","chat.waiting.disconnected":"\u8FDE\u63A5\u5DF2\u65AD\u5F00","chat.connecting":"\u6B63\u5728\u8FDE\u63A5 provider \u4F1A\u8BDD...","chat.waiting.compacting":"\u6B63\u5728\u538B\u7F29\u4E0A\u4E0B\u6587...","chat.waiting.agentOffline":"Agent \u5DF2\u79BB\u7EBF","chat.waiting.sessionLost":"Session \u5DF2\u4E22\u5931\uFF0C\u5DF2\u5237\u65B0\uFF0C\u7B49\u5F85\u6700\u65B0\u4FE1\u606F...","chat.waiting.cliExited":"Claude \u8FDB\u7A0B\u5DF2\u9000\u51FA\uFF0C\u5DF2\u5237\u65B0\uFF0C\u7B49\u5F85\u6700\u65B0\u4FE1\u606F...","chat.waiting.refresh":"\u5237\u65B0","chat.waiting.thinking":"AI \u6B63\u5728\u601D\u8003\u4E2D\uFF0C\u8BF7\u7A0D\u5019...","btw.hint":"esc \u9000\u51FA","btw.placeholder":"\u95EE\u4E2A\u987A\u4FBF\u7684\u95EE\u9898...","btw.close":"\u9000\u51FA BTW \u6A21\u5F0F","message.copyContent":"\u590D\u5236\u5185\u5BB9","message.copy":"\u590D\u5236\u5185\u5BB9","message.copied":"\u5DF2\u590D\u5236","message.copyCode":"\u590D\u5236\u4EE3\u7801","message.copyAll":"\u590D\u5236\u5168\u90E8","message.screenshot":"\u622A\u56FE","message.screenshotting":"\u6B63\u5728\u622A\u56FE...","message.exportMd":"\u5BFC\u51FA MD","message.askInput":"\u9700\u8981\u4F60\u7684\u8F93\u5165","message.askAnswered":"\u2713 \u5DF2\u56DE\u7B54","message.askCustom":"\u6216\u8F93\u5165\u81EA\u5B9A\u4E49\u56DE\u7B54...","message.askCustomPlaceholder":"\u6216\u8F93\u5165\u81EA\u5B9A\u4E49\u56DE\u7B54...","message.askSubmit":"\u63D0\u4EA4\u56DE\u7B54","message.askWaiting":"\u7B49\u5F85\u95EE\u9898\u52A0\u8F7D...","message.askSubmitting":"\u56DE\u7B54\u5DF2\u53D1\u9001\uFF0C\u7B49\u5F85 Agent \u786E\u8BA4\u2026","message.askUnconfirmed":"\u5C1A\u672A\u6536\u5230\u786E\u8BA4\uFF0C\u8BF7\u68C0\u67E5\u8FDE\u63A5\u540E\u91CD\u53D1\u540C\u4E00\u56DE\u7B54\u3002","message.askRetry":"\u91CD\u53D1\u56DE\u7B54","message.askSendFailed":"\u56DE\u7B54\u672A\u53D1\u9001\uFF0C\u8BF7\u68C0\u67E5\u8FDE\u63A5\u540E\u91CD\u8BD5\u3002","message.askAgentUnavailable":"Agent \u6682\u4E0D\u53EF\u7528\uFF0C\u8BF7\u6062\u590D\u8FDE\u63A5\u540E\u91CD\u53D1\u56DE\u7B54\u3002","message.askIdentityMismatch":"\u6B64\u95EE\u9898\u4E0E\u5F53\u524D\u8BF7\u6C42\u4E0D\u4E00\u81F4\uFF0C\u8BF7\u8BA9\u89D2\u8272\u91CD\u65B0\u63D0\u95EE\u3002","message.askExpired":"\u6B64\u95EE\u9898\u5DF2\u5931\u6548\uFF0C\u8BF7\u8BA9\u89D2\u8272\u91CD\u65B0\u63D0\u95EE","message.openInEditor":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00","message.resultDone":"\u5B8C\u6210","message.done":"\u5B8C\u6210","message.resultRead":"\u8BFB\u53D6 {file}","message.readFile":"\u8BFB\u53D6 {name}","message.file":"\u6587\u4EF6","message.attachImages":"{count} \u5F20\u56FE\u7247","message.imageCount":"{count} \u5F20\u56FE\u7247","message.imagePreview":"\u56FE\u7247\u9884\u89C8","message.zoomOut":"\u7F29\u5C0F\u56FE\u7247","message.zoomIn":"\u653E\u5927\u56FE\u7247","message.resetZoom":"\u91CD\u7F6E\u56FE\u7247\u7F29\u653E","message.previousImage":"\u4E0A\u4E00\u5F20\u56FE\u7247","message.nextImage":"\u4E0B\u4E00\u5F20\u56FE\u7247","message.imagePosition":"\u7B2C {current} \u5F20\uFF0C\u5171 {total} \u5F20","message.imageUnavailable":"\u56FE\u7247\u65E0\u6CD5\u52A0\u8F7D","message.attachFiles":"{count} \u4E2A\u6587\u4EF6","message.fileCount":"{count} \u4E2A\u6587\u4EF6","message.quote":"\u5F15\u7528","message.removeQuote":"\u5220\u9664\u5F15\u7528","message.replyingTo":"\u6B63\u5728\u56DE\u590D {author}","message.quotedFrom":"\u5F15\u7528\u81EA {author}","message.editAsNew":"\u7F16\u8F91","message.you":"\u4F60","input.upload":"\u4E0A\u4F20\u6587\u4EF6","input.placeholder":"\u8F93\u5165\u6D88\u606F...","input.send":"\u53D1\u9001","input.stopExecution":"\u505C\u6B62\u6267\u884C","chatInput.upload":"\u4E0A\u4F20\u6587\u4EF6","chatInput.uploading":"\u6B63\u5728\u4E0A\u4F20\u2026","chatInput.uploadFailed":"\u4E0A\u4F20\u5931\u8D25","chatInput.retryUpload":"\u91CD\u8BD5","chatInput.removeAttachment":"\u79FB\u9664\u9644\u4EF6","chatInput.placeholder":"\u8F93\u5165\u6D88\u606F...","chatInput.send":"\u53D1\u9001","chatInput.stop":"\u505C\u6B62\u6267\u884C","tools.thinking":"\u601D\u8003\u4E2D...","tools.read":"\u6B63\u5728\u8BFB\u53D6\u6587\u4EF6","tools.write":"\u6B63\u5728\u5199\u5165\u6587\u4EF6","tools.edit":"\u6B63\u5728\u7F16\u8F91\u6587\u4EF6","tools.bash":"\u6B63\u5728\u6267\u884C\u547D\u4EE4","tools.glob":"\u6B63\u5728\u641C\u7D22\u6587\u4EF6","tools.grep":"\u6B63\u5728\u641C\u7D22\u5185\u5BB9","tools.task":"\u6B63\u5728\u6267\u884C\u4EFB\u52A1","tools.webFetch":"\u6B63\u5728\u83B7\u53D6\u7F51\u9875","tools.webSearch":"\u6B63\u5728\u641C\u7D22\u7F51\u7EDC","tools.todoWrite":"\u6B63\u5728\u66F4\u65B0\u4EFB\u52A1","tools.executing":"\u6B63\u5728\u6267\u884C {name}","status.thinking":"\u601D\u8003\u4E2D...","status.reading":"\u6B63\u5728\u8BFB\u53D6\u6587\u4EF6","status.writing":"\u6B63\u5728\u5199\u5165\u6587\u4EF6","status.editing":"\u6B63\u5728\u7F16\u8F91\u6587\u4EF6","status.executing":"\u6B63\u5728\u6267\u884C\u547D\u4EE4","status.searchingFiles":"\u6B63\u5728\u641C\u7D22\u6587\u4EF6","status.searchingContent":"\u6B63\u5728\u641C\u7D22\u5185\u5BB9","status.executingTask":"\u6B63\u5728\u6267\u884C\u4EFB\u52A1","status.fetching":"\u6B63\u5728\u83B7\u53D6\u7F51\u9875","status.searching":"\u6B63\u5728\u641C\u7D22\u7F51\u7EDC","status.updatingTasks":"\u6B63\u5728\u66F4\u65B0\u4EFB\u52A1","status.executingTool":"\u6B63\u5728\u6267\u884C {name}","header.compacting":"\u6B63\u5728\u538B\u7F29\u4E0A\u4E0B\u6587...","header.compacted":"\u4E0A\u4E0B\u6587\u538B\u7F29\u5B8C\u6210","chatHeader.newConv":"\u4F1A\u8BDD","chatHeader.compacting":"\u6B63\u5728\u538B\u7F29\u4E0A\u4E0B\u6587...","chatHeader.compactDone":"\u4E0A\u4E0B\u6587\u538B\u7F29\u5B8C\u6210","chatHeader.compact":"\u538B\u7F29\u4E0A\u4E0B\u6587","chatHeader.resume":"\u6062\u590D\u4F1A\u8BDD","chatHeader.refresh":"\u5237\u65B0\u6D88\u606F","chatHeader.reloadPage":"\u5237\u65B0\u9875\u9762","chatHeader.clear":"\u6E05\u7A7A\u6D88\u606F","chatHeader.clearing":"\u6B63\u5728\u6E05\u7A7A\u4E0A\u4E0B\u6587...","chatHeader.clearDone":"\u4E0A\u4E0B\u6587\u5DF2\u6E05\u7A7A","chatHeader.confirmClear":"\u786E\u5B9A\u8981\u6E05\u7A7A\u5F53\u524D\u4F1A\u8BDD\u7684\u6240\u6709\u6D88\u606F\u5417\uFF1F","chatHeader.mcpConfig":"MCP \u670D\u52A1\u5668\u914D\u7F6E","chatHeader.mcpNeedRestart":"\u66F4\u6539\u5C06\u5728\u91CD\u542F\u4F1A\u8BDD\u540E\u751F\u6548\u3002","chatHeader.expertPanel":"\u5E2E\u5E2E\u56E2","chatHeader.subAgentPanel":"\u5B50\u4EE3\u7406","settings.close":"\u5173\u95ED\u8BBE\u7F6E","settings.tabs.account":"\u8D26\u53F7","settings.tabs.security":"\u5B89\u5168","settings.tabs.general":"\u901A\u7528","settings.tabs.sandbox":"Sandbox","settings.tabs.invitations":"\u9080\u8BF7","auth.sessionExpired":"\u767B\u5F55\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55\u3002","settings.sandbox.description":"\u5728\u672C Server \u7BA1\u7406\u7684 Docker \u5BB9\u5668\u4E2D\u8FD0\u884C\u4E00\u4E2A\u6301\u4E45\u5316 Yeaft Agent\u3002","settings.sandbox.containerAgent":"Docker \u5316 Yeaft Agent","settings.sandbox.serverManaged":"Server \u53EA\u7BA1\u7406\u6B64\u5BB9\u5668\u7684\u542F\u52A8\u3001\u505C\u6B62\u548C\u5220\u9664\uFF1B\u5BB9\u5668\u5185 Agent \u4ECD\u4F7F\u7528\u666E\u901A Yeaft \u8FDE\u63A5\u3002","settings.sandbox.agentName":"Agent \u540D\u79F0","settings.sandbox.sizeLabel":"\u89C4\u683C","settings.sandbox.enable":"\u542F\u7528 Sandbox","settings.sandbox.creating":"\u6B63\u5728\u8BBE\u7F6E\u2026","settings.sandbox.start":"\u542F\u52A8","settings.sandbox.stop":"\u505C\u6B62","settings.sandbox.retry":"\u91CD\u8BD5","settings.sandbox.remove":"\u79FB\u9664","settings.sandbox.removeConfirm":"\u6C38\u4E45\u79FB\u9664\u6B64 Sandbox\uFF0C\u5E76\u5220\u9664 home \u548C workspace \u6570\u636E\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002","settings.sandbox.size.small":"\u5C0F\u578B","settings.sandbox.size.normal":"\u6807\u51C6","settings.sandbox.state.reserving":"\u6B63\u5728\u8BBE\u7F6E","settings.sandbox.state.provisioning":"\u6B63\u5728\u51C6\u5907 Sandbox","settings.sandbox.state.starting":"\u6B63\u5728\u542F\u52A8","settings.sandbox.state.waiting_for_agent":"\u6B63\u5728\u7B49\u5F85 Agent","settings.sandbox.state.stopping":"\u6B63\u5728\u505C\u6B62","settings.sandbox.state.removing":"\u6B63\u5728\u79FB\u9664","settings.sandbox.state.removed":"\u5DF2\u79FB\u9664","settings.sandbox.state.running":"\u8FD0\u884C\u4E2D","settings.sandbox.state.stopped":"\u5DF2\u505C\u6B62","settings.sandbox.state.failed":"\u5931\u8D25","settings.sandbox.state.remove_failed":"\u79FB\u9664\u5931\u8D25","settings.sandbox.state.recovery_required":"\u9700\u8981\u6062\u590D\u5904\u7406","settings.sandbox.stage.reserving_capacity":"\u6B63\u5728\u9884\u7559\u5BB9\u91CF","settings.sandbox.stage.starting":"\u6B63\u5728\u542F\u52A8 Sandbox","settings.sandbox.stage.stopping":"\u6B63\u5728\u505C\u6B62 Sandbox","settings.sandbox.stage.retrying":"\u6B63\u5728\u91CD\u8BD5\u64CD\u4F5C","settings.sandbox.stage.removing":"\u6B63\u5728\u79FB\u9664 Sandbox","settings.sandbox.stage.complete":"\u5DF2\u5B8C\u6210","settings.sandbox.stage.dispatching":"\u6B63\u5728\u5B89\u5168\u5206\u53D1","settings.sandbox.stage.capacity_rejected":"\u6B63\u5728\u7B49\u5F85\u5BB9\u91CF","settings.sandbox.unavailable.disabled":"\u6B64 Server \u5C1A\u672A\u542F\u7528 Sandbox\u3002\u5347\u7EA7\u672C\u673A Agent \u4E0D\u4F1A\u81EA\u52A8\u542F\u7528\uFF1B\u9700\u8981 Server \u7BA1\u7406\u5458\u5F00\u542F Docker \u7BA1\u7406\u3002","settings.sandbox.unavailable.dockerUnavailable":"Server \u65E0\u6CD5\u4F7F\u7528 Docker\uFF0C\u8BF7\u68C0\u67E5 Sandbox \u7684 Server \u90E8\u7F72\u914D\u7F6E\u3002","settings.sandbox.unavailable.notEntitled":"\u6B64\u8D26\u53F7\u6682\u4E0D\u53EF\u4F7F\u7528 Sandbox\u3002","settings.sandbox.unavailable.capacityUnavailable":"Sandbox \u6682\u65F6\u4E0D\u53EF\u7528\u3002","settings.sandbox.error.SANDBOX_LOAD_FAILED":"\u65E0\u6CD5\u52A0\u8F7D Sandbox \u72B6\u6001\u3002","settings.sandbox.retryLoad":"\u91CD\u8BD5","settings.sandbox.error.SANDBOX_CREATE_FAILED":"\u65E0\u6CD5\u521B\u5EFA Sandbox\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002","settings.sandbox.error.SANDBOX_ACTION_FAILED":"\u65E0\u6CD5\u5B89\u6392 Sandbox \u64CD\u4F5C\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002","settings.sandbox.error.SANDBOX_OPERATION_TIMEOUT":"\u64CD\u4F5C\u5DF2\u8D85\u65F6\uFF0C\u8BF7\u91CD\u8BD5\u6216\u79FB\u9664 Sandbox\u3002","settings.sandbox.error.SANDBOX_RUNTIME_FAILED":"Sandbox \u8FD0\u884C\u65F6\u62A5\u544A\u5931\u8D25\u3002","settings.sandbox.error.SANDBOX_CGROUP_SLICE_UNAVAILABLE":"\u65E0\u6CD5\u5728\u5BBF\u4E3B\u673A\u521D\u59CB\u5316\u5171\u4EAB\u8D44\u6E90 slice\uFF08\u9700\u8981 cgroup v2 \u4E0E root \u6743\u9650\uFF09\u3002\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\uFF0C\u6216\u79FB\u9664 SANDBOX_CGROUP_PARENT \u4EE5\u5173\u95ED\u8D44\u6E90\u4E0A\u9650\u3002","settings.account.username":"\u7528\u6237\u540D","settings.account.role":"\u89D2\u8272","settings.account.email":"\u90AE\u7BB1","settings.account.emailNotSet":"\u672A\u8BBE\u7F6E","settings.account.profileLoadFailed":"\u8D26\u53F7\u8D44\u6599\u52A0\u8F7D\u5931\u8D25","settings.account.logout":"\u9000\u51FA\u767B\u5F55","settings.account.roleAdmin":"\u7BA1\u7406\u5458","settings.account.rolePro":"Pro","settings.account.linkedAccounts":"\u5DF2\u5173\u8054\u8D26\u6237","settings.account.linkedDesc":"\u5173\u8054\u7B2C\u4E09\u65B9\u767B\u5F55\u540E\uFF0C\u4F7F\u7528\u4EFB\u610F\u4E00\u79CD\u65B9\u5F0F\u90FD\u80FD\u767B\u5F55\u6B64\u8D26\u53F7\u3002","settings.account.bind":"\u7ED1\u5B9A","settings.account.unbind":"\u89E3\u7ED1","settings.account.linked":"\u5DF2\u7ED1\u5B9A","settings.account.providerDisabled":"\u672A\u914D\u7F6E","settings.account.cantUnbindLast":"\u4E0D\u80FD\u89E3\u7ED1\u552F\u4E00\u7684\u767B\u5F55\u65B9\u5F0F","settings.account.unbindFailed":"\u89E3\u7ED1\u5931\u8D25\uFF1A{error}","settings.account.bindFailed":"\u7ED1\u5B9A\u5931\u8D25","settings.account.ssoBoundMsg":"\u5DF2\u6210\u529F\u7ED1\u5B9A {provider}\u3002","settings.account.ssoConflictMsg":"\u8BE5 {provider} \u8D26\u53F7\u5DF2\u88AB\u5176\u4ED6\u7528\u6237\u7ED1\u5B9A\u3002","settings.account.providerMicrosoft":"Microsoft","settings.account.providerGithub":"GitHub","settings.account.providerGoogle":"Google","settings.account.providerWechat":"\u5FAE\u4FE1","settings.account.providerAlipay":"\u652F\u4ED8\u5B9D","settings.security.agentKey":"Agent \u5BC6\u94A5","settings.security.agentKeyDesc":"\u7528\u4E8E Agent \u8FDE\u63A5\u8BA4\u8BC1\u7684\u5171\u4EAB\u5BC6\u94A5","settings.security.agentSetupCommands":"Agent \u63A5\u5165\u547D\u4EE4","settings.security.agentCmdInstall":"\u5B89\u88C5\u5E76\u8FDE\u63A5 Agent","settings.security.agentCmdService":"\u8FD0\u884C Agent server","settings.security.agentCmdContainer":"\u5728 Docker \u4E2D\u8FD0\u884C Agent","settings.security.agentCmdContainerDesc":"\u4E00\u6761\u547D\u4EE4\u5373\u53EF\u3002\u9996\u6B21\u8FD0\u884C\u4F1A\u81EA\u52A8\u521D\u59CB\u5316\u5171\u4EAB CPU/\u5185\u5B58\u9650\u5236\uFF08\u4F1A\u63D0\u793A\u8F93\u5165\u4E00\u6B21 sudo \u5BC6\u7801\uFF09\uFF1B\u4F20 --no-slice \u53EF\u4E0D\u542F\u7528\u8D44\u6E90\u4FDD\u62A4\u3002\u673A\u5668\u4E0A\u9700\u8981\u5DF2\u5B89\u88C5 Docker\u3002","settings.security.agentCmdNeedsSecret":"\u8BF7\u5148\u751F\u6210 Agent \u5BC6\u94A5\uFF0C\u4EE5\u521B\u5EFA\u5305\u542B server \u5730\u5740\u548C\u5BC6\u94A5\u7684\u547D\u4EE4\u3002","settings.security.agentCmdLlm":"Copilot \u624B\u52A8\u515C\u5E95","settings.security.agentCmdLlmDesc":"Agent \u8FDE\u63A5\u540E\uFF0C\u53EF\u5728 Agent \u8BBE\u7F6E\u4E2D\u914D\u7F6E\u53EF\u9009 LLM\u3002\u5B89\u88C5\u5668\u4E5F\u4F1A\u8F93\u51FA\u53EF\u5728\u7EC8\u7AEF\u4F7F\u7528\u7684\u7EDD\u5BF9\u8DEF\u5F84\u7BA1\u7406\u547D\u4EE4\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.currentValue":"\u5F53\u524D\uFF1A{value}","settings.general.workCenter":"\u5DE5\u4F5C\u4E2D\u5FC3\u5165\u53E3","settings.general.workCenterDesc":"\u5728\u4FA7\u680F\u9876\u680F\u663E\u793A\u5DE5\u4F5C\u4E2D\u5FC3\u5165\u53E3\uFF1B\u652F\u6301\u7684 Agent \u5728\u5DE5\u4F5C\u4E2D\u5FC3\u5185\u9009\u62E9\u3002","settings.general.workCenterOn":"\u5DF2\u5F00\u542F","settings.general.workCenterOff":"\u5DF2\u5173\u95ED","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":"\u5DF2\u5F00\u542F","settings.general.telemetryOff":"\u5DF2\u5173\u95ED","settings.general.telemetryLoading":"\u52A0\u8F7D\u4E2D\u2026","settings.general.telemetrySaving":"\u4FDD\u5B58\u4E2D\u2026","settings.general.telemetryUnavailable":"\u72B6\u6001\u4E0D\u53EF\u7528","settings.general.telemetryLoadFailed":"\u65E0\u6CD5\u52A0\u8F7D\u5DF2\u4FDD\u5B58\u7684\u9065\u6D4B\u8BBE\u7F6E\uFF0C\u8BF7\u91CD\u65B0\u6253\u5F00\u8BBE\u7F6E\u540E\u91CD\u8BD5\u3002","settings.general.telemetrySaveFailed":"\u65E0\u6CD5\u786E\u8BA4\u9065\u6D4B\u8BBE\u7F6E\u53D8\u66F4\uFF0C\u5DF2\u6062\u590D\u663E\u793A\u4E4B\u524D\u7684\u8BBE\u7F6E\uFF1B\u8BF7\u91CD\u65B0\u6253\u5F00\u8BBE\u7F6E\u6838\u5BF9\u3002","settings.general.telemetryRawLimit":"Provider \u539F\u59CB\u8BF7\u6C42/\u54CD\u5E94\u4E0A\u9650\uFF08\u5B57\u8282\uFF09","settings.general.telemetryTraceTextLimit":"Debug Prompt \u4E0E\u6D88\u606F\u4E0A\u9650\uFF08\u5B57\u8282\uFF09","settings.invite.create":"\u521B\u5EFA\u9080\u8BF7\u7801","settings.invite.normalUser":"\u666E\u901A\u7528\u6237","settings.invite.proUser":"Pro \u7528\u6237","settings.invite.createBtn":"\u521B\u5EFA\u9080\u8BF7\u7801","settings.invite.creating":"\u521B\u5EFA\u4E2D...","settings.invite.list":"\u9080\u8BF7\u7801\u5217\u8868","settings.invite.used":"\u5DF2\u4F7F\u7528","settings.invite.expired":"\u5DF2\u8FC7\u671F","settings.invite.available":"\u53EF\u7528","settings.invite.usedBy":"\u4F7F\u7528\u8005: {user}","settings.invite.expiredAt":"\u8FC7\u671F\u4E8E: {time}","settings.invite.expiresAt":"\u6709\u6548\u81F3: {time}","settings.invite.noInvites":"\u6682\u65E0\u9080\u8BF7\u7801","settings.msg.copiedClipboard":"\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F","settings.msg.copyFailed":"\u590D\u5236\u5931\u8D25","settings.msg.keyReset":"\u5BC6\u94A5\u5DF2\u91CD\u7F6E","settings.msg.resetFailed":"\u91CD\u7F6E\u5931\u8D25","settings.msg.changeFailed":"\u4FEE\u6539\u5931\u8D25","settings.msg.inviteCreated":"\u9080\u8BF7\u7801\u5DF2\u521B\u5EFA","settings.msg.createFailed":"\u521B\u5EFA\u5931\u8D25","settings.msg.inviteCopied":"\u9080\u8BF7\u7801\u5DF2\u590D\u5236","settings.msg.inviteDeleted":"\u9080\u8BF7\u7801\u5DF2\u5220\u9664","settings.msg.deleteFailed":"\u5220\u9664\u5931\u8D25","settings.tabs.llm":"LLM","settings.tabs.yeaft":"Yeaft","settings.yeaft.tabs.vp":"VP \u5E93","settings.yeaft.tabs.search":"\u641C\u7D22","settings.yeaft.tabs.mcp":"MCP","settings.mcp.title":"MCP \u670D\u52A1\u5668","settings.mcp.description":"\u901A\u8FC7 Model Context Protocol \u7ED9 Yeaft \u63A5\u5165\u66F4\u591A\u5DE5\u5177\u3002\u914D\u7F6E\u5199\u5165 agent \u4E0A\u7684 ~/.yeaft/config.json\uFF0C\u5DE5\u5177\u4F1A\u4EE5 mcp__<server>__<tool> \u7684\u5F62\u5F0F\u51FA\u73B0\u5728 LLM \u5DE5\u5177\u5217\u8868\u91CC\u3002","settings.mcp.reloadAll":"\u5168\u90E8\u91CD\u8FDE","settings.mcp.reloadOne":"\u91CD\u65B0\u8FDE\u63A5\u6B64\u670D\u52A1\u5668","settings.mcp.loading":"\u5904\u7406\u4E2D\u2026","settings.mcp.connected":"\u5DF2\u8FDE\u63A5","settings.mcp.disconnected":"\u672A\u8FDE\u63A5","settings.mcp.tools":"\u4E2A\u5DE5\u5177","settings.mcp.remove":"\u79FB\u9664","settings.mcp.empty":"\u8FD8\u6CA1\u6709\u914D\u7F6E MCP \u670D\u52A1\u5668\uFF0C\u53EF\u4EE5\u5728\u4E0B\u65B9\u6DFB\u52A0\u4E00\u4E2A\u3002","settings.mcp.addServer":"\u6DFB\u52A0\u670D\u52A1\u5668","settings.mcp.addServerDesc":"\u5927\u90E8\u5206 MCP \u670D\u52A1\u5668\u662F\u672C\u5730\u547D\u4EE4 \u2014 Yeaft \u4F1A\u901A\u8FC7 stdio \u542F\u52A8\u5B83\u5E76\u81EA\u52A8\u53D1\u73B0\u53EF\u7528\u5DE5\u5177\u3002","settings.mcp.serverName":"\u540D\u79F0","settings.mcp.command":"\u547D\u4EE4","settings.mcp.args":"\u53C2\u6570","settings.mcp.argsPlaceholder":"\u4F8B\u5982\uFF1A-y @modelcontextprotocol/server-filesystem /tmp","settings.mcp.env":"\u73AF\u5883\u53D8\u91CF","settings.mcp.envPlaceholder":"\u6BCF\u884C\u4E00\u4E2A KEY=value\uFF0C# \u5F00\u5934\u7684\u884C\u4F1A\u88AB\u5FFD\u7565\u3002","settings.mcp.saving":"\u4FDD\u5B58\u4E2D\u2026","settings.mcp.add":"\u6DFB\u52A0","settings.mcp.cancel":"\u6E05\u7A7A","settings.mcp.connectFailed":"\u5DF2\u4FDD\u5B58\u4F46\u8FDE\u63A5\u5931\u8D25","settings.mcp.addSuccess":"\u670D\u52A1\u5668\u5DF2\u6DFB\u52A0","settings.mcp.removeSuccess":"\u670D\u52A1\u5668\u5DF2\u79FB\u9664","settings.mcp.reloadSuccess":"\u5DF2\u8BF7\u6C42\u91CD\u8FDE","settings.mcp.confirmRemove":'\u79FB\u9664 MCP \u670D\u52A1\u5668 "{name}"\uFF1F\u4E0B\u4E00\u4E2A LLM turn \u8D77\u5B83\u7684\u5DE5\u5177\u5C06\u4E0D\u518D\u53EF\u89C1\u3002',"settings.mcp.errors.nameRequired":"\u8BF7\u586B\u5199\u540D\u79F0","settings.mcp.errors.nameFormat":"\u540D\u79F0\u53EA\u80FD\u5305\u542B\u5C0F\u5199\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u77ED\u6A2A\u7EBF\u548C\u4E0B\u5212\u7EBF","settings.mcp.errors.commandRequired":"\u8BF7\u586B\u5199\u547D\u4EE4","settings.mcp.errors.argsParse":"\u53C2\u6570\u89E3\u6790\u5931\u8D25","settings.mcp.errors.envParse":"\u73AF\u5883\u53D8\u91CF\u89E3\u6790\u5931\u8D25","yeaft.session.title":"\u4F1A\u8BDD","yeaft.session.new":"+ \u65B0\u5EFA\u4F1A\u8BDD","yeaft.session.create.title":"\u65B0\u5EFA\u4F1A\u8BDD","yeaft.session.create.subtitle":"\u9009\u62E9\u8FD0\u884C\u4F4D\u7F6E\u548C\u5904\u7406\u4F1A\u8BDD\u7684 Provider\u3002","yeaft.session.create.close":"\u5173\u95ED","yeaft.session.create.nameLabel":"\u540D\u79F0","yeaft.session.create.namePlaceholder":"\u4F1A\u8BDD\u540D\u79F0\uFF08\u53EF\u9009\uFF09","yeaft.session.create.workDirLabel":"\u5DE5\u4F5C\u76EE\u5F55","yeaft.session.create.agentLabel":"Agent","yeaft.session.create.vpPicker":"\u9009\u62E9 VP","yeaft.session.create.vpNone":"\u672A\u9009\u62E9 VP","yeaft.session.create.vpCount":"\u5DF2\u9009 {n} \u4E2A VP","yeaft.session.create.untitled":"\u672A\u547D\u540D\u4F1A\u8BDD","yeaft.session.create.rosterEmpty":"\u6682\u65E0\u53EF\u7528 VP \u2014 \u8BF7\u5148\u5230\u89D2\u8272\u5E93\u521B\u5EFA\u3002","yeaft.session.create.rosterLoading":"VP \u52A0\u8F7D\u4E2D\u2026","yeaft.session.create.rosterError":"\u65E0\u6CD5\u4ECE\u5F53\u524D Agent \u52A0\u8F7D VP\u3002","yeaft.session.create.rosterRetry":"\u91CD\u8BD5","yeaft.vp.domain.general":"\u901A\u7528\u4E0E\u534F\u4F5C","yeaft.vp.domain.productDesign":"\u4EA7\u54C1\u4E0E\u4F53\u9A8C\u8BBE\u8BA1","yeaft.vp.domain.softwareSystems":"\u8F6F\u4EF6\u4E0E\u7CFB\u7EDF","yeaft.vp.domain.securityReliability":"\u5B89\u5168\u4E0E\u53EF\u9760\u6027","yeaft.vp.domain.scienceAnalysis":"\u79D1\u5B66\u4E0E\u5206\u6790","yeaft.vp.domain.philosophyPsychology":"\u54F2\u5B66\u4E0E\u5FC3\u7406","yeaft.vp.domain.strategyHistory":"\u6218\u7565\u4E0E\u5386\u53F2","yeaft.vp.domain.businessManagement":"\u5546\u4E1A\u4E0E\u7BA1\u7406","yeaft.vp.domain.artsCulture":"\u827A\u672F\u4E0E\u6587\u5316","yeaft.vp.domain.other":"\u5176\u4ED6\u9886\u57DF","yeaft.vp.domain.custom":"\u81EA\u5B9A\u4E49 VP","yeaft.session.create.defaultVpHint":"\u5F53\u6CA1\u6709 @ \u63D0\u53CA\u65F6\u9ED8\u8BA4\u56DE\u7B54\u7684 VP\u3002","yeaft.session.create.folderLabel":"\u{1F4C1} \u5DE5\u4F5C\u76EE\u5F55","yeaft.session.create.sessionLabel":"\u{1F4AC} \u6B64\u76EE\u5F55\u4E0B\u7684 session","yeaft.session.create.noWorkDirs":"\u8FD8\u6CA1\u6709\u4EFB\u4F55\u4F1A\u8BDD \u2014 \u5728\u4E0A\u65B9\u9009\u62E9\u6216\u8F93\u5165\u5DE5\u4F5C\u76EE\u5F55\u5F00\u59CB\u3002","yeaft.session.create.back":"\u8FD4\u56DE","yeaft.session.create.creating":"\u521B\u5EFA\u4E2D\u2026","yeaft.session.create.submit":"\u521B\u5EFA","yeaft.plugins.title":"\u63D2\u4EF6","yeaft.plugins.subtitle":"\u9009\u62E9\u6B64 Agent \u5411\u4F1A\u8BDD\u63D0\u4F9B\u54EA\u4E9B\u5DE5\u5177\u3001\u6280\u80FD\u548C MCP \u670D\u52A1\u5668\u3002","yeaft.plugins.agentLabel":"Agent","yeaft.plugins.overviewLabel":"\u63D2\u4EF6\u53EF\u7528\u6027\u6982\u89C8","yeaft.plugins.noAgent":"\u672A\u9009\u62E9 Agent","yeaft.plugins.allAvailable":"\u5DF2\u542F\u7528\u5168\u90E8\u53EF\u7528\u80FD\u529B\u3002","yeaft.plugins.selectedSummary":"\u5DF2\u542F\u7528 {count} \u9879\u80FD\u529B\u3002","yeaft.plugins.enabledLabel":"\u5DF2\u542F\u7528","yeaft.plugins.useAll":"\u4F7F\u7528\u5168\u90E8\u53EF\u7528\u9879","yeaft.plugins.loading":"\u6B63\u5728\u52A0\u8F7D\u63D2\u4EF6\u2026","yeaft.plugins.empty":"\u6B64 Agent \u6CA1\u6709\u53EF\u914D\u7F6E\u7684\u63D2\u4EF6\u3002","yeaft.plugins.loadError":"\u52A0\u8F7D\u63D2\u4EF6\u5931\u8D25\uFF1A{error}","yeaft.plugins.upgradeRequired":"\u6B64 Agent \u4E0D\u652F\u6301\u63D2\u4EF6\u3002\u8BF7\u5347\u7EA7\u5E76\u91CD\u542F\u8BE5 Agent\u3002","yeaft.plugins.retry":"\u91CD\u8BD5","yeaft.plugins.searchPlaceholder":"\u641C\u7D22\u5DE5\u5177\u3001\u6280\u80FD\u548C MCP \u670D\u52A1\u5668","yeaft.plugins.resultCount":"{count} \u4E2A\u7ED3\u679C","yeaft.plugins.categoryLabel":"\u63D2\u4EF6\u5206\u7C7B","yeaft.plugins.all":"\u5168\u90E8","yeaft.plugins.noMatchesTitle":"\u6CA1\u6709\u5339\u914D\u7684\u63D2\u4EF6","yeaft.plugins.noMatchesBody":"\u8BF7\u5C1D\u8BD5\u5176\u4ED6\u641C\u7D22\u8BCD\u6216\u5206\u7C7B\u3002","yeaft.plugins.toolDescription":"Agent \u5185\u7F6E\u80FD\u529B","yeaft.plugins.skillDescription":"\u53EF\u590D\u7528\u7684 Agent \u5DE5\u4F5C\u6D41","yeaft.plugins.mcpDescription":"\u53EF\u63D0\u4F9B {count} \u4E2A\u5DE5\u5177","yeaft.plugins.unsavedChanges":"\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539","yeaft.plugins.tools":"\u5DE5\u5177","yeaft.plugins.skills":"\u6280\u80FD","yeaft.plugins.mcpServers":"MCP \u670D\u52A1\u5668","yeaft.plugins.toolsCount":"\u4E2A\u5DE5\u5177","yeaft.plugins.manageSkills":"\u7BA1\u7406\u6280\u80FD","yeaft.plugins.manageSkillsDescription":"\u4E3A\u6B64 Agent \u6216\u5F53\u524D\u9879\u76EE\u521B\u5EFA\u53EF\u590D\u7528\u6280\u80FD\u3002\u9879\u76EE\u7EA7\u6280\u80FD\u4F1A\u8986\u76D6\u540C\u540D\u7528\u6237\u7EA7\u6280\u80FD\u3002","yeaft.plugins.createSkill":"\u521B\u5EFA\u6280\u80FD","yeaft.plugins.removeSkill":"\u79FB\u9664","yeaft.plugins.confirmRemoveSkill":"\u79FB\u9664\u6280\u80FD\u201C{name}\u201D\uFF1F\u8FD9\u53EA\u4F1A\u5220\u9664\u8BE5\u5C42\u7EA7\u4E2D\u7684\u539F\u751F\u6280\u80FD\u3002","yeaft.plugins.skillManagementUpgradeRequired":"\u6B64 Agent \u5FC5\u987B\u5347\u7EA7\u540E\u624D\u80FD\u521B\u5EFA\u6216\u79FB\u9664\u6280\u80FD\u3002","yeaft.plugins.skillManagementVersionUnknown":"\u6B64 Agent \u5C1A\u672A\u4E0A\u62A5\u6280\u80FD\u7BA1\u7406\u652F\u6301\u3002\u8BF7\u5347\u7EA7\u5E76\u91CD\u542F\u540E\u518D\u521B\u5EFA\u6216\u79FB\u9664\u6280\u80FD\u3002","yeaft.plugins.skillScope":"\u5C42\u7EA7","yeaft.plugins.userScope":"\u7528\u6237\u7EA7","yeaft.plugins.projectScope":"\u9879\u76EE\u7EA7","yeaft.plugins.userScopeDescription":"\u5BF9\u8BE5 Agent \u8FD0\u884C\u7684\u6240\u6709\u9879\u76EE\u53EF\u7528\u3002","yeaft.plugins.projectScopeDescription":"\u53EA\u5BF9\u5F53\u524D\u9879\u76EE\u53EF\u7528\uFF0C\u5E76\u8986\u76D6\u540C\u540D\u7528\u6237\u7EA7\u6280\u80FD\u3002","yeaft.plugins.projectScopeUnavailable":"\u8BF7\u9009\u62E9\u5E26\u9879\u76EE\u76EE\u5F55\u7684 Session\uFF0C\u624D\u80FD\u7BA1\u7406\u9879\u76EE\u7EA7\u6280\u80FD\u3002","yeaft.plugins.skillName":"\u540D\u79F0","yeaft.plugins.skillDescriptionLabel":"\u8BF4\u660E","yeaft.plugins.skillTrigger":"\u89E6\u53D1\u8BCD\uFF08\u53EF\u9009\uFF09","yeaft.plugins.skillInstructions":"\u6307\u4EE4","yeaft.plugins.resetSkillForm":"\u91CD\u7F6E","yeaft.plugins.skillTier.bundled":"\u5185\u7F6E \xB7 \u53EA\u8BFB","yeaft.plugins.skillTier.user":"\u7528\u6237\u7EA7","yeaft.plugins.skillTier.project":"\u9879\u76EE\u7EA7","yeaft.plugins.skillTier.project-claude":"Claude \u9879\u76EE \xB7 \u53EA\u8BFB","yeaft.plugins.skillTier.project-codex":"Codex \u9879\u76EE \xB7 \u53EA\u8BFB","yeaft.onboarding.ariaLabel":"Yeaft \u4E0A\u624B\u8BF4\u660E","yeaft.onboarding.topbarTitle":"\u5F00\u59CB\u4F7F\u7528 Yeaft","yeaft.onboarding.eyebrow":"Yeaft \u4E0A\u624B\u6307\u5357","yeaft.onboarding.title":"\u5148\u8FDE\u63A5 Agent\uFF0C\u518D\u5F00\u59CB\u4F1A\u8BDD","yeaft.onboarding.subtitle":"\u5728\u8D1F\u8D23\u6267\u884C\u5DE5\u5177\u7684\u673A\u5668\u4E0A\u76F4\u63A5\u8FD0\u884C\u4E0B\u9762\u7684\u547D\u4EE4\u3002agent secret \u5982\u679C\u4E0D\u5B58\u5728\uFF0C\u4F1A\u81EA\u52A8\u4E3A\u5F53\u524D\u8D26\u53F7\u751F\u6210\u3002","yeaft.onboarding.createSession":"\u521B\u5EFA\u6216\u6062\u590D Session","yeaft.onboarding.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\u5E76\u8FDE\u63A5 Agent","yeaft.onboarding.installDesc":"\u5728\u76EE\u6807\u673A\u5668\u8FD0\u884C\u4E00\u6761\u547D\u4EE4\uFF0C\u5B89\u88C5\u6240\u9700\u73AF\u5883\u3001\u521B\u5EFA\u79C1\u6709\u5B9E\u4F8B\u5E76\u8FDE\u63A5\u5F53\u524D server\u3002","yeaft.onboarding.connectTitle":"\u8FDE\u63A5\u8FD9\u4E2A Agent","yeaft.onboarding.connectDesc":"\u5B89\u88C5\u5668\u4F1A\u4F7F\u7528\u5F53\u524D server URL \u548C\u81EA\u52A8\u751F\u6210\u7684 secret\u3002","yeaft.restore.modal.empty":"\u6B64\u76EE\u5F55\u4E0B\u6CA1\u6709 yeaft session","yeaft.restore.modal.scanError":"\u626B\u63CF\u5931\u8D25: {message}","yeaft.restore.modal.restoreError":"\u6062\u590D\u5931\u8D25: {message}","settings.llm.noAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A Agent \u4EE5\u7BA1\u7406 LLM \u914D\u7F6E\u3002","settings.llm.agentOffline":"Agent \u5F53\u524D\u79BB\u7EBF\uFF0C\u65E0\u6CD5\u52A0\u8F7D LLM \u914D\u7F6E\u3002\u8BF7\u7B49\u5F85 Agent \u4E0A\u7EBF\u540E\u91CD\u8BD5\u3002","settings.llm.loading":"\u6B63\u5728\u52A0\u8F7D\u914D\u7F6E...","settings.llm.loadError":"\u52A0\u8F7D\u914D\u7F6E\u5931\u8D25","settings.llm.configureAgent":"\u914D\u7F6E\u5F53\u524D Agent \u7684 LLM","settings.llm.configureMenu":"\u8BBE\u7F6E LLM","settings.llm.simpleCopilotTitle":"\u63A8\u8350\uFF1AGitHub Copilot","settings.llm.useGitHubCopilot":"\u4F7F\u7528 GitHub Copilot","settings.llm.refreshingModels":"\u6B63\u5728\u5237\u65B0\u6A21\u578B...","settings.llm.managedCopilotTitle":"\u6258\u7BA1\u7684 GitHub Copilot","settings.llm.managedCopilotDesc":"Base URL\u3001\u8BA4\u8BC1\u3001\u6A21\u578B\u76EE\u5F55\u548C\u6BCF\u4E2A\u6A21\u578B\u7684 API \u534F\u8BAE\u90FD\u81EA\u52A8\u7BA1\u7406\u3002Claude \u6A21\u578B\u8D70 Anthropic Messages\uFF1BGPT/o \u6A21\u578B\u8D70 OpenAI Responses\u3002","settings.llm.providersTitle":"\u670D\u52A1\u5546","settings.llm.testFailed":"\u8FDE\u63A5\u6D4B\u8BD5\u5931\u8D25","settings.llm.saveSuccess":"LLM \u8BBE\u7F6E\u5DF2\u4FDD\u5B58","settings.llm.saveFailed":"\u4FDD\u5B58 LLM \u8BBE\u7F6E\u5931\u8D25","settings.llm.presets.title":"\u5FEB\u901F\u914D\u7F6E","settings.llm.providersDesc":"\u9009\u62E9\u4E00\u4E2A\u670D\u52A1\u5546\uFF0C\u4FDD\u5B58\u540E\u5373\u53EF\u5728 Session \u4E2D\u4F7F\u7528\u3002","settings.llm.agentProviders":"\u5F53\u524D agent providers","settings.llm.agentBadge":"\u5F53\u524D agent","settings.llm.addProvider":"\u6DFB\u52A0\u670D\u52A1\u5546","settings.llm.addFromPreset":"\u4ECE\u76EE\u5F55\u6DFB\u52A0","settings.llm.preset.title":"\u670D\u52A1\u5546\u76EE\u5F55\uFF08models.dev\uFF09","settings.llm.preset.refresh":"\u5237\u65B0\u76EE\u5F55","settings.llm.preset.loading":"\u52A0\u8F7D\u76EE\u5F55\u2026","settings.llm.preset.empty":"\u76EE\u5F55\u4E3A\u7A7A\u3002","settings.llm.preset.pickProvider":"\u5728\u5DE6\u4FA7\u9009\u62E9\u4E00\u4E2A\u670D\u52A1\u5546\u4EE5\u67E5\u770B\u6A21\u578B\u3002","settings.llm.preset.filterProviders":"\u8FC7\u6EE4\u670D\u52A1\u5546\u2026","settings.llm.preset.filterModels":"\u8FC7\u6EE4\u6A21\u578B\u2026","settings.llm.preset.selectAll":"\u5168\u9009","settings.llm.preset.selectNone":"\u6E05\u7A7A","settings.llm.preset.cancel":"\u53D6\u6D88","settings.llm.preset.add":"\u6DFB\u52A0\u5230\u670D\u52A1\u5546\u5217\u8868","settings.llm.preset.fetchedAt":"\u76EE\u5F55\u5DF2\u66F4\u65B0 {minutes} \u5206\u949F","settings.llm.addModel":"\u6DFB\u52A0\u6A21\u578B","settings.llm.removeModel":"\u79FB\u9664\u6A21\u578B","settings.llm.providerName":"\u540D\u79F0","settings.llm.providerNamePlaceholder":"\u4F8B\u5982 my-proxy","settings.llm.baseUrl":"Base URL","settings.llm.baseUrlPlaceholder":"\u4F8B\u5982 http://localhost:6628/v1","settings.llm.apiKey":"API Key","settings.llm.apiKeyPlaceholder":"\u8F93\u5165 API Key","settings.llm.protocol":"\u534F\u8BAE","settings.llm.protocolOpenAI":"OpenAI \u517C\u5BB9","settings.llm.protocolOpenAIResponses":"OpenAI Responses (GPT-5)","settings.llm.protocolAnthropic":"Anthropic \u539F\u751F","settings.llm.protocolHint.anthropic":"Claude \u539F\u751F Messages API\u3002","settings.llm.protocolHint.openai":"Chat Completions /v1/chat/completions \u2014 GPT-4 \u53CA\u5927\u591A\u6570\u517C\u5BB9\u4EE3\u7406\u3002","settings.llm.protocolHint.openaiResponses":"Responses API /v1/responses \u2014 GPT-5 \u7CFB\u5217\u5FC5\u987B\u3002","settings.llm.modelCtxPlaceholder":"\u4E0A\u4E0B\u6587","settings.llm.modelMaxPlaceholder":"\u8F93\u51FA","settings.llm.models":"\u5019\u9009\u6A21\u578B ID","settings.llm.modelsPlaceholder":"\u6A21\u578B ID\uFF0C\u9017\u53F7\u6216\u6362\u884C\u5206\u9694\uFF0C\u4F8B\u5982 claude-sonnet-4-20250514, gpt-5","settings.llm.modelsHint":"\u9017\u53F7\u6216\u6362\u884C\u5206\u9694\u3002","settings.llm.removeProvider":"\u79FB\u9664","settings.llm.modelSelectionTitle":"\u6A21\u578B\u9009\u62E9","settings.llm.modelSelectionDesc":"\u9009\u62E9\u9ED8\u8BA4\u6A21\u578B\u3002","settings.llm.primaryModel":"\u4E3B\u6A21\u578B","settings.llm.primaryModelDesc":"\u7528\u4E8E\u7528\u6237\u5BF9\u8BDD","settings.llm.fastModel":"\u5FEB\u901F\u6A21\u578B","settings.llm.fastModelDesc":"\u7528\u4E8E\u5185\u90E8\u4EFB\u52A1\uFF08\u8BB0\u5FC6\u3001\u603B\u7ED3\uFF09","settings.llm.noModels":"\u6682\u65E0\u53EF\u7528\u6A21\u578B\u3002\u8BF7\u5148\u6DFB\u52A0\u670D\u52A1\u5546\u3002","settings.llm.selectModel":"\u9009\u62E9\u6A21\u578B...","settings.llm.debugTitle":"\u8C03\u8BD5\u8F68\u8FF9","settings.llm.debugDesc":"\u6309 Agent \u5F00\u542F\u9010\u8F6E\u8C03\u8BD5\u8F68\u8FF9\u6536\u96C6\uFF08\u7CFB\u7EDF\u63D0\u793A\u8BCD\u3001LLM \u8C03\u7528\u3001\u5DE5\u5177\u8F7D\u8377\uFF09\u3002","settings.llm.enableDebug":"\u542F\u7528\u8C03\u8BD5\u8F68\u8FF9","settings.llm.save":"\u4FDD\u5B58\u66F4\u6539","settings.llm.saving":"\u4FDD\u5B58\u4E2D...","settings.llm.saved":"\u914D\u7F6E\u5DF2\u4FDD\u5B58","settings.llm.savedRefreshWarning":"\u914D\u7F6E\u5DF2\u4FDD\u5B58\uFF0C\u4F46\u5B9E\u65F6\u6A21\u578B\u76EE\u5F55\u5237\u65B0\u5931\u8D25\uFF1A{error}","settings.llm.unsavedChanges":"\u6709\u672A\u4FDD\u5B58\u7684\u66F4\u6539","settings.llm.confirmRemoveProvider":"\u786E\u5B9A\u79FB\u9664\u6B64\u670D\u52A1\u5546\uFF1F","settings.llm.setupTitle":"\u8FDE\u63A5\u6A21\u578B","settings.llm.setupDesc":"\u63A8\u8350\u4F7F\u7528 GitHub Copilot\uFF1B\u4E5F\u53EF\u4EE5\u6DFB\u52A0\u81EA\u5DF1\u7684 API \u670D\u52A1\u5546\u3002","settings.llm.providerSectionHint":"\u53EA\u4FDD\u7559\u8FDE\u63A5\u6A21\u578B\u5FC5\u9700\u7684\u4FE1\u606F\u3002","settings.tabs.dashboard":"\u4EEA\u8868\u677F","settings.dashboard.totalUsers":"\u603B\u7528\u6237\u6570","settings.dashboard.onlineUsers":"\u5728\u7EBF\u7528\u6237","settings.dashboard.activeUsers":"\u6D3B\u8DC3\u7528\u6237","settings.dashboard.onlineAgents":"\u5728\u7EBFAgent","settings.dashboard.totalSessions":"\u603B\u4F1A\u8BDD\u6570","settings.dashboard.todayActive":"\u4ECA\u65E5\u6D3B\u8DC3","settings.dashboard.todayMessages":"\u4ECA\u65E5\u6D88\u606F","settings.dashboard.todayUserTurns":"\u4ECA\u65E5\u7528\u6237 Turn","settings.dashboard.totalTokens":"\u603B Token","settings.dashboard.tokenAccuracy":"\u6765\u81EA\u6A21\u578B\u670D\u52A1\u5546\u8FD4\u56DE\u7684\u5B9E\u9645\u7528\u91CF\uFF1B\u4ECE\u542F\u7528\u6309\u7528\u6237 Token \u7EDF\u8BA1\u7684\u7248\u672C\u5F00\u59CB\u7D2F\u8BA1\uFF0C\u4E14\u4E0D\u5305\u542B\u5FC3\u8DF3\u3002","settings.dashboard.agentTurns":"Agent Turn","settings.dashboard.agentSessions":"Agent Session","settings.dashboard.turns":"Turn","settings.dashboard.tokens":"Token","settings.dashboard.inputTokens":"\u8F93\u5165","settings.dashboard.outputTokens":"\u8F93\u51FA","settings.dashboard.cacheTokens":"\u7F13\u5B58","settings.dashboard.today":"\u4ECA\u5929","settings.dashboard.thisWeek":"\u672C\u5468","settings.dashboard.thisMonth":"\u672C\u6708","settings.dashboard.all":"\u5168\u90E8","settings.dashboard.general":"\u5E38\u89C4","settings.dashboard.detailed":"\u8BE6\u7EC6\u4FE1\u606F","settings.dashboard.users":"\u7528\u6237","settings.dashboard.agents":"Agent","settings.dashboard.time":"\u65F6\u95F4","settings.dashboard.active":"\u6D3B\u8DC3","settings.dashboard.inactive":"\u672A\u6D3B\u8DC3","settings.dashboard.activeOnly":"\u4EC5\u6D3B\u8DC3","settings.dashboard.inactiveOnly":"\u4EC5\u672A\u6D3B\u8DC3","settings.dashboard.userUsage":"\u7528\u6237\u7528\u91CF","settings.dashboard.refresh":"\u5237\u65B0","settings.dashboard.name":"\u540D\u79F0","settings.dashboard.messages":"\u6D88\u606F\u6570","settings.dashboard.userTurns":"\u7528\u6237 Turn \u6570","settings.dashboard.sessions":"\u4F1A\u8BDD\u6570","settings.dashboard.requests":"\u8BF7\u6C42\u6570","settings.dashboard.traffic":"\u6D41\u91CF","settings.dashboard.lastTurnCompleted":"\u6700\u540E Turn \u7ED3\u675F\u65F6\u95F4","settings.dashboard.status":"\u72B6\u6001","settings.dashboard.latency":"\u5EF6\u8FDF","settings.dashboard.version":"\u7248\u672C","settings.dashboard.owner":"\u6240\u6709\u8005","settings.dashboard.role":"\u89D2\u8272","settings.dashboard.agent":"Agent","settings.dashboard.online":"\u5728\u7EBF","settings.dashboard.offline":"\u79BB\u7EBF","settings.dashboard.noAgents":"\u6682\u65E0\u6CE8\u518C Agent","settings.dashboard.noUserData":"\u6682\u65E0\u7528\u6237\u6570\u636E","settings.dashboard.noOnlineUsers":"\u6682\u65E0\u5728\u7EBF\u7528\u6237","settings.dashboard.loading":"\u52A0\u8F7D\u4E2D...","settings.dashboard.error":"\u6570\u636E\u52A0\u8F7D\u5931\u8D25","settings.dashboard.ago":"{time}\u524D","settings.dashboard.loadMore":"\u52A0\u8F7D\u66F4\u591A\uFF08\u5269\u4F59 {remaining} \u6761\uFF09","workbench.title":"Workbench","workbench.openItems":"\u5DF2\u6253\u5F00\u7684 Workbench \u9879\u76EE","workbench.addItem":"\u6DFB\u52A0 Workbench \u9879\u76EE","workbench.addItemHint":"\u4F7F\u7528 + \u6253\u5F00\u6587\u4EF6\u3001\u7EC8\u7AEF\u3001Git \u6216\u6D4F\u89C8\u5668\u3002","workbench.closeItem":"\u5173\u95ED {name}","workbench.chooseCapability":"\u9009\u62E9\u80FD\u529B","workbench.chooseCapabilityHint":"\u9009\u62E9\u4E00\u4E2A\u5DE5\u5177\u5F00\u59CB\u4F7F\u7528\uFF1B\u5DF2\u6253\u5F00\u7684\u5DE5\u5177\u4F1A\u4FDD\u7559\u5728\u6807\u7B7E\u9875\u4E2D\u3002","workbench.terminal":"\u7EC8\u7AEF","workbench.terminalDescription":"\u5728\u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55\u8FD0\u884C\u547D\u4EE4\u5E76\u7BA1\u7406\u7EC8\u7AEF\u5206\u5C4F\u3002","workbench.git":"Git","workbench.gitDescription":"\u67E5\u770B\u4ED3\u5E93\u72B6\u6001\u3001\u4EE3\u7801\u5DEE\u5F02\u548C\u53D8\u66F4\u6587\u4EF6\u3002","workbench.files":"\u6587\u4EF6","workbench.filesDescription":"\u6D4F\u89C8\u3001\u9884\u89C8\u548C\u7F16\u8F91\u6240\u9009 Agent \u4E0A\u7684\u6587\u4EF6\u3002","workbench.browser":"\u6D4F\u89C8\u5668","workbench.browserDescription":"\u901A\u8FC7\u5B9E\u65F6 WebRTC \u753B\u9762\u67E5\u770B Agent \u672C\u5730\u6D4F\u89C8\u5668\u3002","workbench.available":"\u53EF\u7528","workbench.enableRequired":"\u9700\u8981\u542F\u7528","workbench.unavailable":"\u5F53\u524D Agent \u4E0D\u53EF\u7528","workbench.capabilityUnavailable":"\u6240\u9009 Agent \u672A\u63D0\u4F9B\u6B64\u80FD\u529B\u3002","workbench.browserUnavailable":"\u6D4F\u89C8\u5668\u5DF2\u88AB\u7BA1\u7406\u5458\u5173\u95ED\uFF0C\u6216\u5F53\u524D Agent \u4E0D\u652F\u6301\u3002\u8BF7\u5347\u7EA7 Agent\uFF0C\u6216\u8BA9\u7BA1\u7406\u5458\u5F00\u542F\u6D4F\u89C8\u5668\u8DEF\u7531\u3002","workbench.browserReadyHint":"\u8F93\u5165\u5730\u5740\u4EE5\u542F\u52A8\u9694\u79BB\u7684 Agent \u672C\u5730\u6D4F\u89C8\u5668\u3002\u70B9\u51FB\u5B9E\u65F6\u753B\u9762\u540E\u53EF\u4F7F\u7528\u9F20\u6807\u548C\u952E\u76D8\u4EA4\u4E92\u3002","workbench.browserStart":"\u542F\u52A8\u6D4F\u89C8\u5668","workbench.browserAddressLabel":"\u6D4F\u89C8\u5668\u5730\u5740","workbench.browserAddressPlaceholder":"example.com","workbench.browserAddressInvalid":"\u8BF7\u8F93\u5165\u6709\u6548\u7684 HTTP \u6216 HTTPS \u5730\u5740\u3002","workbench.browserInteractionUnavailable":"\u6D4F\u89C8\u5668\u8F93\u5165\u94FE\u8DEF\u5C1A\u672A\u8FDE\u63A5\uFF0C\u8BF7\u7B49\u5F85 WebRTC \u8FDE\u63A5\u540E\u91CD\u8BD5\u3002","workbench.browserGo":"\u524D\u5F80","workbench.browserStarting":"\u6B63\u5728\u542F\u52A8 Agent \u672C\u5730\u6D4F\u89C8\u5668\u2026","workbench.browserConnecting":"\u6B63\u5728\u8FDE\u63A5\u5B9E\u65F6 WebRTC \u753B\u9762\u2026","workbench.browserIceServersMissing":"\u6D4F\u89C8\u5668\u753B\u9762\u65E0\u6CD5\u8FDE\u63A5\u5F53\u524D Agent\uFF0C\u4E14 Server \u672A\u914D\u7F6E STUN \u6216 TURN \u670D\u52A1\u3002\u8BF7\u8BA9\u7BA1\u7406\u5458\u914D\u7F6E Browser ICE/TURN \u540E\u91CD\u8BD5\u3002","workbench.browserIceConnectionFailed":"\u6D4F\u89C8\u5668 WebRTC \u8FDE\u63A5\u5931\u8D25\u3002\u8BF7\u68C0\u67E5\u5DF2\u914D\u7F6E\u7684 TURN \u670D\u52A1\u662F\u5426\u80FD\u88AB Web \u6D4F\u89C8\u5668\u548C Agent \u540C\u65F6\u8BBF\u95EE\uFF0C\u7136\u540E\u91CD\u8BD5\u3002","workbench.browserPeerAttachTimeout":"\u8FDE\u63A5\u6D4F\u89C8\u5668 WebRTC \u753B\u9762\u8D85\u65F6\u3002\u8BF7\u68C0\u67E5 Browser ICE/TURN \u8FDE\u901A\u6027\uFF0C\u7136\u540E\u91CD\u8BD5\u3002","workbench.browserEnd":"\u7ED3\u675F\u6D4F\u89C8\u5668","workbench.browserVideoLabel":"Agent \u6D4F\u89C8\u5668\u5B9E\u65F6\u753B\u9762","workbench.browserInputLabel":"\u6D4F\u89C8\u5668\u952E\u76D8\u8F93\u5165","workbench.browserStatusConnecting":"\u8FDE\u63A5\u4E2D","workbench.browserProtocolUnavailable":"\u5F53\u524D Server \u8FDE\u63A5\u4E0D\u652F\u6301 Browser Runtime \u534F\u8BAE\u3002","workbench.browserChecking":"\u6B63\u5728\u68C0\u67E5\u6240\u9009 Agent \u7684 Browser Runtime\u2026","workbench.browserPlatformUnsupported":"\u6240\u9009 Agent \u65E0\u6CD5\u8FD0\u884C\u5F53\u524D Browser Runtime \u6570\u636E\u94FE\u8DEF\u3002","workbench.browserSetupTitle":"\u542F\u7528\u6D4F\u89C8\u5668","workbench.browserOptionalInstall":"\u6D4F\u89C8\u5668\u9700\u8981\u5728\u5F53\u524D Agent \u5B89\u88C5\u56FA\u5B9A\u7248\u672C Chrome for Testing\u3002\u542F\u7528\u540E\u5C06\u4E0B\u8F7D\u7EA6 {size}\uFF0C\u6821\u9A8C\u5E76\u5B89\u88C5\u7248\u672C {build}\uFF0C\u7136\u540E\u68C0\u67E5\u5A92\u4F53\u94FE\u8DEF\u3002","workbench.browserInstallDiskNote":"\u70B9\u51FB\u201C\u542F\u7528\u6D4F\u89C8\u5668\u201D\u524D\u4E0D\u4F1A\u4E0B\u8F7D\u4EFB\u4F55\u5185\u5BB9\uFF1B\u6D4F\u89C8\u5668\u6587\u4EF6\u53EA\u5B58\u653E\u5728\u5F53\u524D Agent instance \u7684\u6570\u636E\u76EE\u5F55\u3002","workbench.browserInstallAction":"\u542F\u7528\u6D4F\u89C8\u5668\uFF08{size}\uFF09","workbench.browserInstalling":"\u6B63\u5728\u542F\u7528\u6D4F\u89C8\u5668\uFF1A\u4E0B\u8F7D\u5E76\u6821\u9A8C Chrome for Testing {build}\u2026","workbench.browserInstallKeepOpen":"\u53EF\u4EE5\u79BB\u5F00\u6B64\u9762\u677F\u3002\u518D\u6B21\u6253\u5F00\u6D4F\u89C8\u5668\u4F1A\u6062\u590D\u663E\u793A\u5F53\u524D\u5B89\u88C5\u72B6\u6001\uFF0C\u4E0D\u4F1A\u91CD\u590D\u4E0B\u8F7D\u3002","workbench.browserInstallProgressLabel":"\u6D4F\u89C8\u5668\u4E0B\u8F7D\u8FDB\u5EA6","workbench.browserInstallProgress":"\u5DF2\u4E0B\u8F7D {downloaded} / {total}","workbench.browserInstalledEnable":"\u6D4F\u89C8\u5668\u6587\u4EF6\u5DF2\u7ECF\u5B89\u88C5\u3002\u542F\u7528\u6D4F\u89C8\u5668\u5E76\u68C0\u67E5\u5A92\u4F53\u94FE\u8DEF\u5373\u53EF\u4F7F\u7528\u3002","workbench.browserEnableAction":"\u542F\u7528\u6D4F\u89C8\u5668","workbench.browserEnabling":"\u6B63\u5728\u5B8C\u6210\u8BBE\u7F6E\u5E76\u68C0\u67E5\u5A92\u4F53\u94FE\u8DEF\u2026","workbench.browserStatusInstalling":"\u5B89\u88C5\u4E2D","workbench.browserStatusProbing":"\u63A2\u6D4B\u4E2D","workbench.backToCapabilities":"\u8FD4\u56DE\u80FD\u529B\u5217\u8868","workbench.closeCapability":"\u5173\u95ED\u5F53\u524D\u80FD\u529B","workbench.maximize":"\u6700\u5927\u5316\u9762\u677F","workbench.restore":"\u8FD8\u539F\u9762\u677F","workbench.collapse":"\u6536\u8D77\u9762\u677F","theme.switchToLight":"\u5207\u6362\u5230\u6D45\u8272\u4E3B\u9898","theme.switchToDark":"\u5207\u6362\u5230\u6DF1\u8272\u4E3B\u9898","theme.toLight":"\u5207\u6362\u5230\u6D45\u8272\u4E3B\u9898","theme.toDark":"\u5207\u6362\u5230\u6DF1\u8272\u4E3B\u9898","terminal.splitH":"\u6C34\u5E73\u5206\u5C4F\uFF08\u5DE6\u53F3\uFF09","terminal.splitV":"\u5782\u76F4\u5206\u5C4F\uFF08\u4E0A\u4E0B\uFF09","terminal.close":"\u5173\u95ED\u5F53\u524D\u7EC8\u7AEF","terminal.autoCreate":"\u6253\u5F00\u7EC8\u7AEF\u80FD\u529B\u65F6\u5C06\u81EA\u52A8\u521B\u5EFA\u7EC8\u7AEF","terminal.xtermError":"xterm.js \u672A\u52A0\u8F7D\uFF0C\u8BF7\u5237\u65B0\u9875\u9762","terminal.xtermNotLoaded":"xterm.js \u672A\u52A0\u8F7D\uFF0C\u8BF7\u5237\u65B0\u9875\u9762","terminal.mountError":"\u7EC8\u7AEF\u5BB9\u5668\u6302\u8F7D\u5931\u8D25","terminal.mountFailed":"\u7EC8\u7AEF\u5BB9\u5668\u6302\u8F7D\u5931\u8D25","terminal.createError":"\u7EC8\u7AEF\u521B\u5EFA\u5931\u8D25","terminal.createFailed":"\u7EC8\u7AEF\u521B\u5EFA\u5931\u8D25","terminal.error":"\u7EC8\u7AEF\u9519\u8BEF","git.selectFolder":"\u9009\u62E9\u6587\u4EF6\u5939","git.repoPath":"\u8F93\u5165 Git \u4ED3\u5E93\u8DEF\u5F84...","git.repoPathPlaceholder":"\u8F93\u5165 Git \u4ED3\u5E93\u8DEF\u5F84...","git.workDir":"Git \u5DE5\u4F5C\u76EE\u5F55","git.loadStatus":"\u52A0\u8F7D Git \u72B6\u6001","git.loading":"\u52A0\u8F7D Git \u72B6\u6001...","git.loadingStatus":"\u52A0\u8F7D Git \u72B6\u6001...","git.clean":"\u5DE5\u4F5C\u533A\u5E72\u51C0\uFF0C\u65E0\u53D8\u66F4","git.cleanWorkDir":"\u5DE5\u4F5C\u533A\u5E72\u51C0\uFF0C\u65E0\u53D8\u66F4","git.selectAgent":"\u9009\u62E9 Agent \u540E\u52A0\u8F7D Git \u72B6\u6001","git.selectAgentFirst":"\u9009\u62E9 Agent \u540E\u52A0\u8F7D Git \u72B6\u6001","git.workItemRootRequired":"\u6B64\u5DE5\u4F5C\u9879\u4F7F\u7528\u4ED3\u5E93\u5B50\u76EE\u5F55\uFF0C\u65E0\u6CD5\u5728\u6B64\u64CD\u4F5C Git\u3002\u6587\u4EF6\u548C\u7EC8\u7AEF\u4ECD\u53EF\u4F7F\u7528\uFF1BGit \u64CD\u4F5C\u9700\u8981\u5DE5\u4F5C\u9879\u4EE5\u4ED3\u5E93\u6839\u76EE\u5F55\u4E3A\u5DE5\u4F5C\u76EE\u5F55\u3002","git.diffOnly":"\u53EA\u770B\u5DEE\u5F02","git.fullFile":"\u770B\u5168\u6587","git.zoomIn":"\u653E\u5927\u5B57\u4F53","git.zoomOut":"\u7F29\u5C0F\u5B57\u4F53","git.loadingDiff":"\u52A0\u8F7D Diff...","git.clickToView":"\u70B9\u51FB\u6587\u4EF6\u67E5\u770B\u5DEE\u5F02","git.clickFileToView":"\u70B9\u51FB\u6587\u4EF6\u67E5\u770B\u5DEE\u5F02","git.selectRepo":"\u9009\u62E9 Git \u4ED3\u5E93","git.noDiff":"(\u65E0\u5DEE\u5F02)","git.binaryFile":"(\u4E8C\u8FDB\u5236\u6587\u4EF6)","files.notLoaded":"\u672A\u52A0\u8F7D","files.newFile":"\u65B0\u5EFA\u6587\u4EF6","files.newFolder":"\u65B0\u5EFA\u6587\u4EF6\u5939","files.openFolder":"\u6253\u5F00\u6587\u4EF6\u5939","files.showTree":"\u663E\u793A\u6587\u4EF6\u5939","files.hideTree":"\u9690\u85CF\u6587\u4EF6\u5939","files.deleteSelected":"\u5220\u9664\u9009\u4E2D","files.moveSelected":"\u79FB\u52A8\u9009\u4E2D","files.enterPath":"\u8F93\u5165\u8DEF\u5F84...","files.searchFiles":"\u641C\u7D22\u6587\u4EF6... (Ctrl+P)","files.noMatch":"\u65E0\u5339\u914D\u7ED3\u679C","files.searching":"\u641C\u7D22\u4E2D...","files.loadingTree":"\u52A0\u8F7D\u4E2D...","files.emptyDir":"\u7A7A\u76EE\u5F55","files.loadingFile":"\u52A0\u8F7D\u6587\u4EF6...","files.readSendFailed":"\u6587\u4EF6\u8BF7\u6C42\u672A\u53D1\u9001\u3002\u8BF7\u68C0\u67E5\u8FDE\u63A5\uFF0C\u7136\u540E\u518D\u6B21\u70B9\u51FB\u6587\u4EF6\u91CD\u8BD5\u3002","files.readInterrupted":"\u6587\u4EF6\u8BFB\u53D6\u5DF2\u4E2D\u65AD\u3002\u8BF7\u91CD\u65B0\u8FDE\u63A5\uFF0C\u7136\u540E\u518D\u6B21\u70B9\u51FB\u6587\u4EF6\u91CD\u8BD5\u3002","files.searchPlaceholder":"\u641C\u7D22...","files.replacePlaceholder":"\u66FF\u6362...","files.replace":"\u66FF\u6362","files.replaceAll":"\u5168\u90E8","files.replaceCurrent":"\u66FF\u6362\u5F53\u524D","files.replaceAllTitle":"\u5168\u90E8\u66FF\u6362","files.clickToView":"\u70B9\u51FB\u6587\u4EF6\u67E5\u770B\u5185\u5BB9","files.selectFolder":"\u9009\u62E9\u6587\u4EF6\u5939","files.enterFolderName":"\u8F93\u5165\u6587\u4EF6\u5939\u540D...","files.enterFileName":"\u8F93\u5165\u6587\u4EF6\u540D...","files.moveTarget":"\u8F93\u5165\u76EE\u6807\u76EE\u5F55\u8DEF\u5F84...","files.moveItems":"\u5C06 {count} \u4E2A\u9879\u76EE\u79FB\u52A8\u5230\u6307\u5B9A\u76EE\u5F55","files.workDir":"\u5DE5\u4F5C\u76EE\u5F55: {dir}","files.enterDirPath":"\u8F93\u5165\u76EE\u5F55\u8DEF\u5F84...","files.unsavedConfirm":'"{name}" \u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539\uFF0C\u786E\u5B9A\u5173\u95ED\uFF1F',"files.unsavedBatchConfirm":"{count} \u4E2A\u6587\u4EF6\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539\uFF0C\u786E\u5B9A\u5173\u95ED\uFF1F","files.showOpenTabs":"\u663E\u793A\u5DF2\u6253\u5F00\u7684\u6587\u4EF6","files.closeTab":"\u5173\u95ED {name}","files.closeTabAction":"\u5173\u95ED","files.closeOtherTabs":"\u5173\u95ED\u5176\u4ED6","files.closeTabsToLeft":"\u5173\u95ED\u5DE6\u4FA7","files.closeTabsToRight":"\u5173\u95ED\u53F3\u4FA7","files.closeAllTabs":"\u5168\u90E8\u5173\u95ED","files.deleteConfirm":'\u786E\u5B9A\u8981\u5220\u9664 "{name}" \u5417\uFF1F',"files.deleteDirHint":"\uFF08\u5C06\u5220\u9664\u6587\u4EF6\u5939\u53CA\u5176\u6240\u6709\u5185\u5BB9\uFF09","files.deleteSelectedConfirm":"\u786E\u5B9A\u8981\u5220\u9664\u9009\u4E2D\u7684 {count} \u4E2A\u9879\u76EE\u5417\uFF1F\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002","files.findPrev":"\u4E0A\u4E00\u4E2A (Shift+Enter)","files.findNext":"\u4E0B\u4E00\u4E2A (Enter)","files.caseSensitive":"\u533A\u5206\u5927\u5C0F\u5199","files.regex":"\u6B63\u5219\u8868\u8FBE\u5F0F","files.unsaved":"\u672A\u4FDD\u5B58","files.clearSelection":"\u6E05\u9664\u9009\u62E9","files.rename":"\u91CD\u547D\u540D","files.copyHere":"\u590D\u5236","files.moveTo":"\u79FB\u52A8\u5230...","files.download":"\u4E0B\u8F7D","files.enterNewName":"\u8F93\u5165\u65B0\u540D\u79F0...","files.loadingPreview":"\u52A0\u8F7D\u9884\u89C8\u4E2D...","files.previewTooLarge":"\u8BE5\u6587\u4EF6\u5927\u5C0F\u4E3A {size} MB\uFF0C\u8D85\u8FC7 {limit} MB \u7684\u9884\u89C8\u4E0E\u4E0B\u8F7D\u4E0A\u9650\u3002","files.previewLoadFailed":"\u56FE\u7247\u9884\u89C8\u52A0\u8F7D\u5931\u8D25\u3002","files.videoPreviewLoadFailed":"\u89C6\u9891\u65E0\u6CD5\u64AD\u653E\uFF0C\u5F53\u524D\u6D4F\u89C8\u5668\u53EF\u80FD\u4E0D\u652F\u6301\u8BE5\u89C6\u9891\u7F16\u7801\u3002","files.videoStreamUnavailable":"\u5F53\u524D Agent \u6216 Session \u4E0D\u652F\u6301\u89C6\u9891\u6D41\u5F0F\u64AD\u653E\u3002","files.preview":"\u9884\u89C8","files.edit":"\u7F16\u8F91","files.pptxNotSupported":"PPTX \u672C\u5730\u9884\u89C8\u6682\u4E0D\u652F\u6301\uFF0C\u8BF7\u5728\u8BBE\u7F6E\u4E2D\u5207\u6362\u4E3A Office Online \u6A21\u5F0F\u3002","files.officePreviewMode":"Office \u9884\u89C8\u6A21\u5F0F","files.officeOnline":"Office Online","files.localRender":"\u672C\u5730\u6E32\u67D3","proxy.port":"\u7AEF\u53E3","proxy.label":"\u6807\u7B7E","proxy.add":"\u6DFB\u52A0\u7AEF\u53E3\u6620\u5C04","proxy.addPort":"\u6DFB\u52A0\u7AEF\u53E3\u6620\u5C04","proxy.enable":"\u70B9\u51FB\u542F\u7528","proxy.clickEnable":"\u70B9\u51FB\u542F\u7528","proxy.disable":"\u70B9\u51FB\u7981\u7528","proxy.clickDisable":"\u70B9\u51FB\u7981\u7528","proxy.openNewTab":"\u5728\u65B0\u6807\u7B7E\u9875\u6253\u5F00","proxy.openInBrowser":"\u5728\u65B0\u6807\u7B7E\u9875\u6253\u5F00","proxy.noMappings":"\u6682\u65E0\u7AEF\u53E3\u6620\u5C04","proxy.noPorts":"\u6682\u65E0\u7AEF\u53E3\u6620\u5C04","proxy.hint":"\u6DFB\u52A0\u7AEF\u53E3\u540E\uFF0C\u53EF\u901A\u8FC7\u4EE3\u7406 URL \u8BBF\u95EE agent \u673A\u5668\u4E0A\u7684\u672C\u5730\u670D\u52A1","proxy.noPortsHint":"\u6DFB\u52A0\u7AEF\u53E3\u540E\uFF0C\u53EF\u901A\u8FC7\u4EE3\u7406 URL \u8BBF\u95EE agent \u673A\u5668\u4E0A\u7684\u672C\u5730\u670D\u52A1","proxy.selectAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A Agent","store.selectAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A Agent","store.creatingConv":"\u6B63\u5728\u521B\u5EFA\u4F1A\u8BDD...","store.loadingHistory":"\u6B63\u5728\u52A0\u8F7D\u4F1A\u8BDD\u5386\u53F2...","store.executionCancelled":"\u6267\u884C\u5DF2\u53D6\u6D88","store.loginFailed":"\u767B\u5F55\u5931\u8D25","store.convClosed":"\u4F1A\u8BDD\u5DF2\u5173\u95ED","store.convCreated":"\u65B0\u4F1A\u8BDD\u5DF2\u521B\u5EFA [{agent}]\uFF0C\u5DE5\u4F5C\u76EE\u5F55: {workDir}","store.convResumed":"\u5DF2\u6062\u590D\u4F1A\u8BDD [{agent}]: {sessionId}","roleplay.creating":"\u6B63\u5728\u521B\u5EFA \u89D2\u8272\u626E\u6F14 \u4F1A\u8BDD...","roleplay.working":"\u5DE5\u4F5C\u4E2D","roleplay.selectTeam":"\u9009\u62E9\u56E2\u961F\u6A21\u677F","roleplay.teamDev":"\u8F6F\u4EF6\u5F00\u53D1","roleplay.teamCustom":"\u81EA\u5B9A\u4E49","roleplay.editRoles":"\u7F16\u8F91\u89D2\u8272","roleplay.roleName":"\u89D2\u8272\u6807\u8BC6","roleplay.roleDisplayName":"\u663E\u793A\u540D\u79F0","roleplay.roleIcon":"\u56FE\u6807","roleplay.roleDesc":"\u89D2\u8272\u63CF\u8FF0","roleplay.rolePrompt":"\u89D2\u8272 Prompt","roleplay.removeRole":"\u79FB\u9664\u89D2\u8272","roleplay.addRole":"\u6DFB\u52A0\u89D2\u8272","roleplay.start":"\u542F\u52A8 \u89D2\u8272\u626E\u6F14","roleplay.sidebarTitle":"\u89D2\u8272\u626E\u6F14","roleplay.configTitle":"\u89D2\u8272\u626E\u6F14","roleplay.newSession":"\u65B0\u5EFA \u89D2\u8272\u626E\u6F14","roleplay.emptyHint":"\u53D1\u9001\u6D88\u606F\u5F00\u59CB\u591A\u89D2\u8272\u534F\u4F5C","roleplay.askingYou":"\u6B63\u5728\u63D0\u95EE","roleplay.language":"\u8BED\u8A00","roleplay.rolePreview":"\u89D2\u8272\u914D\u7F6E","roleplay.noAgents":"\u6CA1\u6709\u5728\u7EBF\u7684 Agent","roleplay.inputPlaceholder":"\u8F93\u5165\u6D88\u606F\u2026 \u4F7F\u7528 @ \u63D0\u53CA\u89D2\u8272","roleplay.existingSessions":"\u5DF2\u6709\u56E2\u961F","roleplay.restore":"\u6062\u590D","roleplay.restoring":"\u6B63\u5728\u6062\u590D \u89D2\u8272\u626E\u6F14 \u4F1A\u8BDD...","roleplay.createNew":"\u521B\u5EFA\u65B0\u56E2\u961F","expertPanel.title":"\u5E2E\u5E2E\u56E2","expertPanel.search":"\u641C\u7D22\u89D2\u8272\u6216 Action...","expertPanel.noResults":"\u6CA1\u6709\u5339\u914D\u7ED3\u679C","expertPanel.clearAll":"\u6E05\u7A7A","expertPanel.persona":"\u89D2\u8272\u4EBA\u8BBE","expertPanel.template":"\u6709\u8F93\u5165\u65F6 \xB7 \u6D88\u606F\u524D\u7F00","expertPanel.templateHint":"\u7528\u6237\u5199\u4E86\u6587\u5B57\u65F6\uFF1A\u6B64\u524D\u7F00 + \u7528\u6237\u6587\u5B57 = \u6700\u7EC8\u53D1\u9001\u5185\u5BB9","expertPanel.defaultMsg":"\u65E0\u8F93\u5165\u65F6 \xB7 \u5B8C\u6574 Prompt","expertPanel.defaultMsgHint":"\u7528\u6237\u4E0D\u5199\u6587\u5B57\u76F4\u63A5\u53D1\u9001\u65F6\uFF0C\u4F7F\u7528\u6B64\u5B8C\u6574 prompt","expertPanel.loading":"\u6B63\u5728\u52A0\u8F7D\u89D2\u8272\u5B9A\u4E49...","expertPanel.viewPrompt":"\u67E5\u770B\u63D0\u793A\u8BCD","expertPanel.customRoles":"\u81EA\u5B9A\u4E49\u89D2\u8272","expertPanel.addRole":"\u6DFB\u52A0\u89D2\u8272","expertPanel.editRole":"\u7F16\u8F91\u89D2\u8272","expertPanel.deleteRole":"\u5220\u9664\u89D2\u8272","expertPanel.noCustomRoles":"\u6682\u65E0\u81EA\u5B9A\u4E49\u89D2\u8272","expertPanel.createFirst":"\u521B\u5EFA\u7B2C\u4E00\u4E2A\u81EA\u5B9A\u4E49\u89D2\u8272","expertPanel.noActions":"\u6682\u65E0 Action","expertPanel.deleteConfirm":'\u786E\u5B9A\u8981\u5220\u9664\u89D2\u8272 "{name}" \u5417\uFF1F\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002',"expertPanel.deleteConfirmBtn":"\u5220\u9664","expertEditor.createTitle":"\u521B\u5EFA\u81EA\u5B9A\u4E49\u89D2\u8272","expertEditor.editTitle":"\u7F16\u8F91\u81EA\u5B9A\u4E49\u89D2\u8272","expertEditor.basicInfo":"\u57FA\u672C\u4FE1\u606F","expertEditor.roleName":"\u89D2\u8272\u540D\u79F0","expertEditor.roleNamePlaceholder":"\u5982\uFF1A\u6570\u636E\u5206\u6790\u5E08","expertEditor.roleTitle":"\u804C\u79F0","expertEditor.roleTitlePlaceholder":"\u5982\uFF1A\u9AD8\u7EA7\u6570\u636E\u5206\u6790\u5E08","expertEditor.fullName":"\u5168\u540D","expertEditor.fullNamePlaceholder":"\u53EF\u9009","expertEditor.titleEn":"\u82F1\u6587\u804C\u79F0","expertEditor.titleEnPlaceholder":"\u53EF\u9009","expertEditor.rolePrompt":"\u89D2\u8272 Prompt","expertEditor.messagePrefix":"\u6D88\u606F\u524D\u7F00\uFF08\u4E2D\u6587\uFF09","expertEditor.messagePrefixPlaceholder":"\u5982\uFF1A\u4F5C\u4E3A\u4E00\u540D\u8D44\u6DF1\u6570\u636E\u5206\u6790\u5E08\uFF0C","expertEditor.messagePrefixEn":"\u6D88\u606F\u524D\u7F00\uFF08\u82F1\u6587\uFF09","expertEditor.messagePrefixEnPlaceholder":"As a senior data analyst, ","expertEditor.actions":"Actions","expertEditor.addAction":"\u6DFB\u52A0 Action","expertEditor.removeAction":"\u79FB\u9664","expertEditor.actionName":"Action \u540D\u79F0","expertEditor.actionNamePlaceholder":"\u5982\uFF1A\u6570\u636E\u5206\u6790","expertEditor.actionNameEn":"\u82F1\u6587\u540D\u79F0","expertEditor.actionNameEnPlaceholder":"\u53EF\u9009","expertEditor.messageTemplate":"\u6709\u8F93\u5165\u65F6 \xB7 \u6D88\u606F\u524D\u7F00\uFF08\u4E2D\u6587\uFF09","expertEditor.messageTemplatePlaceholder":"\u7528\u6237\u5199\u4E86\u6587\u5B57\u65F6\uFF0C\u62FC\u5728\u7528\u6237\u6587\u5B57\u524D\u9762\u53D1\u9001","expertEditor.messageTemplateEn":"\u6709\u8F93\u5165\u65F6 \xB7 \u6D88\u606F\u524D\u7F00\uFF08\u82F1\u6587\uFF09","expertEditor.messageTemplateEnPlaceholder":"Prepended to user text when user types something","expertEditor.defaultMessage":"\u65E0\u8F93\u5165\u65F6 \xB7 \u5B8C\u6574 Prompt\uFF08\u4E2D\u6587\uFF09","expertEditor.defaultMessagePlaceholder":"\u7528\u6237\u4E0D\u5199\u6587\u5B57\u76F4\u63A5\u53D1\u9001\u65F6\uFF0C\u4F7F\u7528\u6B64\u5B8C\u6574\u5185\u5BB9","expertEditor.defaultMessageEn":"\u65E0\u8F93\u5165\u65F6 \xB7 \u5B8C\u6574 Prompt\uFF08\u82F1\u6587\uFF09","expertEditor.defaultMessageEnPlaceholder":"Used as-is when user sends without typing","expertEditor.cancel":"\u53D6\u6D88","expertEditor.save":"\u4FDD\u5B58","expertEditor.saving":"\u4FDD\u5B58\u4E2D...","subAgentPanel.title":"\u5B50\u4EE3\u7406","subAgentPanel.back":"\u8FD4\u56DE\u5217\u8868","subAgentPanel.running":"\u8FD0\u884C\u4E2D","subAgentPanel.completed":"\u5DF2\u5B8C\u6210","subAgentPanel.waitingMessages":"\u7B49\u5F85\u6D88\u606F...","subAgentPanel.toolCount":"{count} \u4E2A\u5DE5\u5177","subAgentPanel.toolSummary":"\u5DF2\u5B8C\u6210 {count} \u6B21\u5DE5\u5177\u8C03\u7528","subAgentPanel.empty":"\u6682\u65E0\u5B50\u4EE3\u7406","subAgentPanel.emptyHint":"\u5F53 Claude \u59D4\u6D3E\u4EFB\u52A1\u65F6\uFF0C\u5B50\u4EE3\u7406\u4F1A\u5728\u8FD9\u91CC\u663E\u793A","splitScreen.split":"\u5206\u5C4F","splitScreen.closePane":"\u5173\u95ED\u6B64\u9762\u677F","splitScreen.newChat":"\u65B0\u5EFA Chat","splitScreen.noSessions":"\u6682\u65E0\u4F1A\u8BDD","splitScreen.splitToPanel":"\u5728\u65B0\u9762\u677F\u4E2D\u6253\u5F00","splitScreen.selectFromSidebar":"\u4ECE\u5DE6\u4FA7\u9009\u62E9\u5BF9\u8BDD","yeaft.vp.library":"\u89D2\u8272\u5E93","yeaft.vp.createFirst":"+ \u521B\u5EFA\u4F60\u7684\u7B2C\u4E00\u4E2A\u89D2\u8272","yeaft.vp.empty.aria":"\u5C1A\u65E0\u89D2\u8272","yeaft.vp.avatar.aria":"{name} \u5934\u50CF","yeaft.vp.speaker.stateCauseAria":"\u72B6\u6001\u53D8\u66F4\uFF1A{cause}","yeaft.vp.status.thinking":"\u6B63\u5728\u601D\u8003\u2026","yeaft.vp.status.tool":"\u6B63\u5728\u4F7F\u7528 {name}","yeaft.vp.status.done":"\u5B8C\u6210 \xB7 {count} \u4E2A\u5DE5\u5177","yeaft.vp.status.aborted":"\u5DF2\u4E2D\u6B62","yeaft.vp.crud.title":"\u89D2\u8272\u5E93","yeaft.vp.crud.close":"\u5173\u95ED","yeaft.vp.crud.addNew":"+ \u65B0\u5EFA\u89D2\u8272","yeaft.vp.crud.empty":"\u8FD8\u6CA1\u6709\u89D2\u8272\u3002\u521B\u5EFA\u7B2C\u4E00\u4E2A\u89D2\u8272\u5F00\u59CB\u534F\u4F5C\u5427\u3002","yeaft.vp.crud.edit":"\u7F16\u8F91","yeaft.vp.crud.delete":"\u5220\u9664","yeaft.vp.crud.deleteConfirm":'\u5220\u9664 "{name}"\uFF1F\u4F1A\u4E00\u5E76\u5220\u9664\u78C1\u76D8\u4E0A\u7684 role.md \u6587\u4EF6\u3002',"yeaft.vp.crud.form.create":"\u521B\u5EFA\u89D2\u8272","yeaft.vp.crud.form.update":"\u7F16\u8F91\u89D2\u8272","yeaft.vp.crud.form.vpId":"\u89D2\u8272 ID","yeaft.vp.crud.form.vpId.tooltip":"\u53EA\u80FD\u7528\u5B57\u6BCD\u3001\u6570\u5B57\u3001- \u548C _\uFF0C\u4E0D\u80FD\u4EE5 _ \u5F00\u5934\uFF0C\u4E0D\u80FD\u662F\u7EAF\u6570\u5B57\uFF0C\u4E0D\u80FD\u7528\u4FDD\u7559\u540D\uFF1Aall / user / system / everyone\u3002","yeaft.vp.crud.form.displayName":"\u663E\u793A\u540D\uFF08\u82F1\u6587\uFF09","yeaft.vp.crud.form.displayNameZh":"\u663E\u793A\u540D\uFF08\u4E2D\u6587\uFF09","yeaft.vp.crud.form.description":"\u80FD\u529B\u63CF\u8FF0\uFF08\u82F1\u6587\uFF09","yeaft.vp.crud.form.descriptionZh":"\u80FD\u529B\u63CF\u8FF0\uFF08\u4E2D\u6587\uFF09","yeaft.vp.crud.form.descriptionPlaceholder":"\u4F8B\u5982\uFF1AAPI design, migration planning, and compatibility reviews","yeaft.vp.crud.form.descriptionZhPlaceholder":"\u4F8B\u5982\uFF1AAPI \u8BBE\u8BA1\u3001\u8FC1\u79FB\u89C4\u5212\u4E0E\u517C\u5BB9\u6027\u8BC4\u5BA1","yeaft.vp.crud.form.role":"\u804C\u4F4D","yeaft.vp.crud.form.rolePlaceholder":"\u4F8B\u5982\uFF1A\u4EA7\u54C1\u7ECF\u7406","yeaft.vp.crud.form.traits":"\u7279\u8D28\u6807\u7B7E","yeaft.vp.crud.form.traitsHint":"\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\u7684\u77ED\u6807\u7B7E\uFF08\u4F8B\u5982\uFF1A\u597D\u5947, \u52A1\u5B9E\uFF09\u3002","yeaft.vp.crud.form.modelHint":"\u6A21\u578B\u504F\u597D","yeaft.vp.crud.form.modelHint.none":"\u2014 \u9ED8\u8BA4 \u2014","yeaft.vp.crud.form.modelHint.primary":"\u4E3B\u6A21\u578B","yeaft.vp.crud.form.modelHint.fast":"\u5FEB\u6A21\u578B","yeaft.vp.crud.form.persona":"\u4EBA\u8BBE\uFF08Markdown\uFF09","yeaft.vp.crud.form.personaPlaceholder":"\u63CF\u8FF0\u8FD9\u4E2A\u89D2\u8272\u5982\u4F55\u601D\u8003\u3001\u8868\u8FBE\u3001\u505A\u51B3\u7B56\u2026\u2026","yeaft.vp.crud.form.submit":"\u4FDD\u5B58","yeaft.vp.crud.form.cancel":"\u53D6\u6D88","yeaft.vp.crud.form.ok":"\u683C\u5F0F\u6B63\u786E","yeaft.vp.crud.form.idLocked":"\u521B\u5EFA\u540E\u89D2\u8272 ID \u4E0D\u53EF\u4FEE\u6539\u3002","yeaft.vp.crud.saving":"\u4FDD\u5B58\u4E2D\u2026\u2026","yeaft.vp.crud.saveFailed":"\u4FDD\u5B58\u5931\u8D25\uFF1A{error}","yeaft.vp.crud.deleteFailed":"\u5220\u9664\u5931\u8D25\uFF1A{error}","yeaft.vp.crud.viewPrompt":"\u67E5\u770B prompt","yeaft.vp.crud.view.title":"VP \u63D0\u793A\u8BCD","yeaft.vp.crud.view.personaEmpty":"\uFF08\u672A\u5B9A\u4E49 persona \u6B63\u6587\uFF0C\u53EA\u6709\u57FA\u7840\u5143\u6570\u636E\uFF09","yeaft.vp.crud.view.back":"\u8FD4\u56DE","yeaft.vp.crud.view.editFromHere":"\u7F16\u8F91\u8BE5 VP","yeaft.vp.crud.view.removed":"\u8BE5 VP \u5DF2\u5728\u522B\u5904\u88AB\u5220\u9664\uFF0C\u8FD4\u56DE\u5217\u8868\u3002","yeaft.vp.crud.stockBadge":"\u9884\u88C5","yeaft.vp.crud.stockReadOnly":"\u9884\u88C5 VP \u968F agent \u51FA\u5382\uFF0C\u4E0D\u80FD\u7F16\u8F91\u6216\u5220\u9664\u3002","yeaft.vp.idError.empty_or_non_string":"\u89D2\u8272 ID \u4E0D\u80FD\u4E3A\u7A7A\u3002","yeaft.vp.idError.too_long":"\u89D2\u8272 ID \u592A\u957F\uFF08\u6700\u591A 40 \u5B57\u7B26\uFF09\u3002","yeaft.vp.idError.illegal_character":'\u53EA\u80FD\u4F7F\u7528\u5B57\u6BCD\u3001\u6570\u5B57\u3001"-" \u548C "_"\u3002',"yeaft.vp.idError.underscore_prefix_reserved":'\u89D2\u8272 ID \u4E0D\u80FD\u4EE5 "_" \u5F00\u5934\uFF08\u9884\u7559\u7ED9\u7CFB\u7EDF\u89D2\u8272\uFF09\u3002',"yeaft.vp.idError.pure_digits":"\u89D2\u8272 ID \u4E0D\u80FD\u662F\u7EAF\u6570\u5B57\u3002","yeaft.vp.idError.reserved":"\u89D2\u8272 ID \u4E0D\u80FD\u7528\u4FDD\u7559\u540D\uFF08all / user / system / everyone\uFF09\u3002","yeaft.vp.idError.duplicate":"\u5DF2\u7ECF\u5B58\u5728\u540C ID \u7684\u89D2\u8272\u3002","yeaft.vp.idError.not_found":"\u8BE5 VP \u4E0D\u5B58\u5728\uFF0C\u53EF\u80FD\u5DF2\u88AB\u5220\u9664\u3002","yeaft.vp.idError.stock_readonly":"\u9884\u88C5 VP \u4E0D\u80FD\u7F16\u8F91\u6216\u5220\u9664\u3002","yeaft.vp.idError.unknown":"\u53D1\u751F\u672A\u77E5\u9519\u8BEF\uFF0C\u8BF7\u91CD\u8BD5\u3002","yeaft.vp.reason.personaEdit":"\u4EBA\u8BBE\u5DF2\u66F4\u65B0","yeaft.vp.reason.traitsEdit":"\u7279\u5F81\u5DF2\u66F4\u65B0","yeaft.vp.reason.manualReload":"\u5DF2\u91CD\u65B0\u8F7D\u5165","yeaft.vp.reason.fileRemoved":"\u5DF2\u79FB\u9664","yeaft.vp.reason.toast.updated":"{name}\uFF1A{reason}","yeaft.vp.reason.toast.removed":"{name} \u5DF2\u88AB\u79FB\u9664","yeaft.message.timeAria":"\u53D1\u9001\u4E8E {time}","yeaft.message.llmCall":"{count} \u6B21 LLM \u8C03\u7528","yeaft.message.llmCalls":"{count} \u6B21 LLM \u8C03\u7528","yeaft.message.tokenUsage":"\u603B\u8BA1 {total} \xB7 \u8F93\u5165 {input} \xB7 \u8F93\u51FA {output}","yeaft.user.youLabel":"\u6211","yeaft.session.sidebarTitle":"\u4F1A\u8BDD","yeaft.session.sidebarAria":"\u4F1A\u8BDD\u5217\u8868","yeaft.session.newButton":"+ \u65B0\u5EFA\u4F1A\u8BDD","yeaft.session.newButtonAria":"\u521B\u5EFA\u65B0\u4F1A\u8BDD","yeaft.session.empty":"\u6682\u65E0\u4F1A\u8BDD\u3002","yeaft.session.membersCount":"{count} \u4F4D\u6210\u5458","yeaft.session.oneMember":"1 \u4F4D\u6210\u5458","yeaft.session.noMembers":"\u7A7A\u4F1A\u8BDD \u2014 \u8BF7\u9080\u8BF7 VP","yeaft.session.defaultBadge":"\u9ED8\u8BA4","yeaft.session.defaultName":"\u9ED8\u8BA4\u4F1A\u8BDD","yeaft.session.moreActions":"\u66F4\u591A\u64CD\u4F5C","yeaft.session.archive":"\u5F52\u6863","yeaft.session.archiveConfirm":"\u5F52\u6863\u300C{name}\u300D\uFF1F\u7A0D\u540E\u53EF\u4ECE\u78C1\u76D8\u6062\u590D\u3002","yeaft.session.archivingEllipsis":"\u5F52\u6863\u4E2D\u2026","yeaft.session.delete":"\u5220\u9664","yeaft.session.deleteConfirm":"\u5220\u9664\u300C{name}\u300D\uFF1F\u5C06\u6C38\u4E45\u5220\u9664\u8BE5\u4F1A\u8BDD\u53CA\u5176\u6240\u6709\u6570\u636E\uFF0C\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002","yeaft.session.deletingEllipsis":"\u5220\u9664\u4E2D\u2026","yeaft.session.rename":"\u91CD\u547D\u540D","yeaft.session.copy":"\u590D\u5236\u4F1A\u8BDD","yeaft.session.copying":"\u6B63\u5728\u590D\u5236\u4F1A\u8BDD\u2026","yeaft.session.copyComplete":"\u4F1A\u8BDD\u590D\u5236\u5B8C\u6210","yeaft.session.copyFailed":"\u65E0\u6CD5\u590D\u5236\u4F1A\u8BDD\uFF1A{message}","yeaft.session.openSettings":"\u8BBE\u7F6E","yeaft.session.removeFromList":"\u79FB\u9664","yeaft.session.manageMembers":"\u7BA1\u7406\u6210\u5458","yeaft.session.memberCount.one":"1 \u4F4D\u6210\u5458","yeaft.session.memberCount.other":"{count} \u4F4D\u6210\u5458","yeaft.session.renamePrompt":"\u4E3A\u300C{name}\u300D\u8F93\u5165\u65B0\u540D\u79F0\uFF1A","yeaft.session.renamingEllipsis":"\u91CD\u547D\u540D\u4E2D\u2026","yeaft.session.editModal.renameTitle":"\u91CD\u547D\u540D\u4F1A\u8BDD","yeaft.session.editModal.renameBody":"\u4E3A\u300C{name}\u300D\u9009\u62E9\u4E00\u4E2A\u65B0\u540D\u79F0\u3002","yeaft.session.editModal.renameSubmit":"\u4FDD\u5B58","yeaft.session.editModal.archiveTitle":"\u5F52\u6863\u4F1A\u8BDD","yeaft.session.editModal.archiveBody":"\u5F52\u6863\u300C{name}\u300D\uFF1F\u7A0D\u540E\u53EF\u4ECE\u78C1\u76D8\u6062\u590D\u3002","yeaft.session.editModal.archiveSubmit":"\u5F52\u6863","yeaft.session.editModal.deleteTitle":"\u5220\u9664\u4F1A\u8BDD","yeaft.session.editModal.deleteBody":"\u5220\u9664\u300C{name}\u300D\uFF1F\u5C06\u6C38\u4E45\u5220\u9664\u8BE5\u4F1A\u8BDD\u53CA\u5176\u6240\u6709\u6570\u636E\uFF0C\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002","yeaft.session.editModal.deleteSubmit":"\u5220\u9664","yeaft.session.editModal.newNameLabel":"\u65B0\u540D\u79F0","yeaft.session.editModal.cancel":"\u53D6\u6D88","yeaft.session.editModal.close":"\u5173\u95ED","yeaft.session.error.invalid_name":"\u4F1A\u8BDD\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A\u3002","yeaft.session.error.duplicate":"\u8BE5\u4F1A\u8BDD id \u5DF2\u5B58\u5728\u3002","yeaft.session.error.not_found":"\u672A\u627E\u5230\u8BE5\u4F1A\u8BDD\u3002","yeaft.session.error.agent_offline":"\u8BF7\u8FDE\u63A5 Agent \u540E\u518D\u590D\u5236\u4F1A\u8BDD\u3002","yeaft.session.error.fork_pending":"\u6B63\u5728\u590D\u5236\u4F1A\u8BDD\uFF0C\u8BF7\u7A0D\u5019\u3002","yeaft.session.error.project_inheritance_failed":"\u526F\u672C\u5DF2\u521B\u5EFA\uFF0C\u4F46\u4FDD\u5B58 Project \u5F52\u5C5E\u5931\u8D25\u3002\u8BF7\u5728\u4FA7\u680F\u5C06\u65B0\u4F1A\u8BDD\u79FB\u5165\u539F Project\uFF0C\u4E0D\u8981\u91CD\u590D\u590D\u5236\u3002","yeaft.session.error.session_running":"\u8BF7\u7B49\u5F85\u8BE5\u4F1A\u8BDD\u7684\u5F53\u524D\u56DE\u590D\u5B8C\u6210\u540E\u518D\u590D\u5236\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.workDir.heading":"\u5DE5\u4F5C\u76EE\u5F55","yeaft.session.settings.workDir.help":"\u4E0B\u4E2A\u56DE\u5408\u5C06\u4ECE\u6B64\u76EE\u5F55\u52A0\u8F7D\u9879\u76EE\u6587\u4EF6\u548C\u9879\u76EE\u6307\u4EE4\u3002\u4F1A\u8BDD\u5386\u53F2\u4ECD\u4FDD\u5B58\u5728 Agent \u6570\u636E\u76EE\u5F55\u4E2D\u3002","yeaft.session.settings.workDir.label":"\u8DEF\u5F84","yeaft.session.settings.workDir.placeholder":"/path/to/project","yeaft.session.settings.workDir.save":"\u4FDD\u5B58\u76EE\u5F55","yeaft.session.settings.workDir.saving":"\u4FDD\u5B58\u4E2D\u2026","yeaft.session.settings.workDir.saveFailed":"\u65E0\u6CD5\u4FDD\u5B58\u5DE5\u4F5C\u76EE\u5F55\uFF1A{error}","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.itemInfo":"\u4EFB\u52A1\u4FE1\u606F","workCenter.infoTab.requirement":"\u9700\u6C42","workCenter.infoTab.progress":"\u8FDB\u5EA6","workCenter.infoTab.outputs":"\u4EA7\u51FA","workCenter.infoTab.goals":"\u76EE\u6807","workCenter.infoTab.usage":"\u7528\u91CF","workCenter.infoProgressEmpty":"\u6682\u65E0 Action\u3002","workCenter.infoOutputsEmpty":"\u6682\u65E0\u4EA7\u51FA\u3002","workCenter.infoConversationEmpty":"\u6682\u65E0\u5BF9\u8BDD\u6D88\u606F\u3002","workCenter.workbenchUnavailable":"\u8BF7\u5728\u65B0\u7248 Agent \u548C Server \u4E0A\u6253\u5F00\u6709\u5DE5\u4F5C\u76EE\u5F55\u7684\u5DE5\u4F5C\u9879\u4EE5\u4F7F\u7528\u5DE5\u4F5C\u53F0\u3002","workCenter.openOutputFile":"\u6253\u5F00\u6587\u4EF6\uFF1A{name}","workCenter.returnToSession":"\u8FD4\u56DE Session","workCenter.showNavigation":"\u5C55\u5F00\u5DE5\u4F5C\u4E2D\u5FC3\u5BFC\u822A","workCenter.hideNavigation":"\u6536\u8D77\u5DE5\u4F5C\u4E2D\u5FC3\u5BFC\u822A","workCenter.agents":"Agents","workCenter.expandItemActivity":"\u5C55\u5F00 {title} \u7684\u6267\u884C\u72B6\u6001","workCenter.collapseItemActivity":"\u6536\u8D77 {title} \u7684\u6267\u884C\u72B6\u6001","workCenter.activity":"\u6B63\u5728\u63A8\u8FDB","workCenter.noActivity":"\u6682\u65E0\u6B63\u5728\u63A8\u8FDB\u7684\u5DE5\u4F5C\u9879","workCenter.activityOffline":"\u8FDE\u63A5\u5DF2\u65AD\u5F00 \xB7 \u72B6\u6001\u53EF\u80FD\u4E0D\u662F\u6700\u65B0","workCenter.online":"\u5728\u7EBF","workCenter.offline":"\u79BB\u7EBF","workCenter.close":"\u5173\u95ED\u5DE5\u4F5C\u4E2D\u5FC3","workCenter.searchAndFilters":"\u641C\u7D22\u4E0E\u7B5B\u9009","workCenter.moreActions":"\u66F4\u591A\u64CD\u4F5C","workCenter.navigation":"\u5DE5\u4F5C\u9879\u5BFC\u822A","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.checkingAgents":"\u6B63\u5728\u68C0\u67E5\u5DE5\u4F5C\u4E2D\u5FC3\u53EF\u7528\u72B6\u6001\u2026","workCenter.agentStatusLoadFailed":"\u65E0\u6CD5\u68C0\u67E5\u5DE5\u4F5C\u4E2D\u5FC3\u72B6\u6001\uFF0C\u8BF7\u91CD\u8BD5\u3002","workCenter.retryAgentStatus":"\u91CD\u8BD5\u72B6\u6001\u68C0\u67E5","workCenter.unavailableAgents":"\u5DE5\u4F5C\u4E2D\u5FC3\u5DF2\u914D\u7F6E\u4E3A\u542F\u7528\uFF0C\u4F46\u8FD0\u884C\u65F6\u5F53\u524D\u4E0D\u53EF\u7528\uFF1B\u8BF7\u68C0\u67E5\u6B64 Agent \u7684\u8BBE\u7F6E\u548C\u65E5\u5FD7\u3002","workCenter.disabledAgents":"\u5728\u7EBF Agent \u5C1A\u672A\u542F\u7528\u5DE5\u4F5C\u4E2D\u5FC3\u3002","workCenter.disabledAgentsMany":"{count} \u4E2A\u5728\u7EBF Agent \u5C1A\u672A\u542F\u7528\u5DE5\u4F5C\u4E2D\u5FC3\u3002","workCenter.openAgentSettings":"\u6253\u5F00 Agent \u8BBE\u7F6E","workCenter.openAgentSettingsUpgrade":"\u6253\u5F00 Agent \u8BBE\u7F6E\u5E76\u5347\u7EA7","workCenter.upgradeAgents":"\u5728\u7EBF Agent \u6682\u4E0D\u652F\u6301\u5DE5\u4F5C\u4E2D\u5FC3\u8BBE\u7F6E\u3002","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.executionDuration":"\u6267\u884C\u7528\u65F6","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.resource.title":"\u8D44\u6E90\u9884\u7B97","workCenter.resource.requests":"\u8BF7\u6C42","workCenter.resource.chargedTokens":"Token \u9884\u7B97\u5360\u7528","workCenter.resource.details":"\u6D88\u8017\u660E\u7EC6\u4E0E\u9650\u989D","workCenter.resource.total":"\u603B\u8BA1 \xB7 \u5168\u751F\u547D\u5468\u671F","workCenter.resource.coordinator":"\u534F\u8C03\u5668","workCenter.resource.actions":"Actions","workCenter.resource.usage":"{requests} \u6B21\u8BF7\u6C42 \xB7 \u5360\u7528 {charged} token","workCenter.resource.tokens":"\u5DF2\u62A5\u544A {reported} \xB7 \u9884\u7559 / \u672A\u77E5\u5360\u7528 {reserved} token","workCenter.resource.unknown":"\u7528\u91CF\u672A\u77E5\uFF1A{unknown} \u6B21\u8BF7\u6C42 \xB7 \u5728\u9014\uFF1A{inflight}","workCenter.resource.accounting":"\u9884\u7B97\u5360\u7528\u5DF2\u542B\u9884\u7559\uFF0C\u8BF7\u52FF\u91CD\u590D\u76F8\u52A0\u3002\u5DF2\u62A5\u544A token \u662F\u5DF2\u77E5\u7528\u91CF\uFF0C\u4E0D\u4EE3\u8868\u5B8C\u6574\u8D26\u5355\u3002\u51C6\u5165\u57FA\u4E8E\u4F30\u7B97\uFF0C\u4E0D\u662F\u786C\u6027\u8D39\u7528\u4E0A\u9650\u3002","workCenter.resource.maxRequests":"\u7D2F\u8BA1\u8BF7\u6C42\u4E0A\u9650","workCenter.resource.maxTokens":"\u7D2F\u8BA1 token \u4E0A\u9650","workCenter.resource.maxRunRequests":"\u6BCF\u4E2A Run \u8BF7\u6C42\u4E0A\u9650","workCenter.resource.maxActionAttempts":"\u6BCF\u4E2A Action \u5C1D\u8BD5\u4E0A\u9650","workCenter.resource.maxCoordinatorFailures":"\u534F\u8C03\u5668\u5931\u8D25\u4E0A\u9650","workCenter.resource.attemptLimit":"Action \u5C1D\u8BD5\u8DE8\u4EE3\u7D2F\u8BA1\uFF0C\u540C\u65F6\u53D7\u5404 Action \u539F\u59CB\u4E0A\u9650\u4E0E\u663E\u5F0F\u8FFD\u52A0\u989D\u5EA6\u7EA6\u675F\u3002\u5DF2\u7528 / \u6709\u6548\u4E0A\u9650\uFF1A","workCenter.resource.attemptExtension":"\u8FFD\u52A0 Action \u5C1D\u8BD5\u989D\u5EA6\u4F1A\u6388\u6743\u6B64\u5DE5\u4F5C\u9879\u7684\u6240\u6709\u5F53\u524D\u53CA\u672A\u6765 Action \u589E\u52A0\u5C1D\u8BD5\u6B21\u6570\u3002","workCenter.resource.stopped":"\u6267\u884C\u5DF2\u88AB\u8D44\u6E90\u63A7\u5236\u505C\u6B62\u3002","workCenter.resource.stop.work_item_requests_exhausted":"\u5DF2\u505C\u6B62\uFF1A\u7D2F\u8BA1\u8BF7\u6C42\u9884\u7B97\u8017\u5C3D\u3002","workCenter.resource.stop.work_item_tokens_exhausted":"\u5DF2\u505C\u6B62\uFF1Atoken \u9884\u7B97\u4E0D\u8DB3\u4EE5\u51C6\u5165\u4E0B\u4E00\u6B21\u8BF7\u6C42\u3002","workCenter.resource.stop.run_requests_exhausted":"\u5DF2\u505C\u6B62\uFF1ARun \u8BF7\u6C42\u6570\u8FBE\u5230\u4E0A\u9650\u3002\u6062\u590D\u5C06\u542F\u52A8\u65B0\u7684 Run\u3002","workCenter.resource.stop.action_attempts_exhausted":"\u5DF2\u505C\u6B62\uFF1AAction \u5C1D\u8BD5\u6B21\u6570\u8FBE\u5230\u4E0A\u9650\u3002","workCenter.resource.stop.coordinator_failures_exhausted":"\u5DF2\u505C\u6B62\uFF1A\u534F\u8C03\u5668\u5931\u8D25\u6B21\u6570\u8FBE\u5230\u4E0A\u9650\u3002","workCenter.resource.offline":"Agent \u5DF2\u65AD\u5F00\u3002\u8BF7\u91CD\u65B0\u8FDE\u63A5\u5E76\u5237\u65B0\u540E\u518D\u4FEE\u6539\u8D44\u6E90\u9884\u7B97\u3002","workCenter.resource.stale":"\u8D44\u6E90\u72B6\u6001\u5DF2\u53D8\u5316\u6216\u5C1A\u672A\u786E\u8BA4\u3002\u8BF7\u5237\u65B0\u540E\u91CD\u65B0\u786E\u8BA4\uFF1B\u4E0D\u4F1A\u81EA\u52A8\u91CD\u8BD5\u4EFB\u4F55\u4FEE\u6539\u3002","workCenter.resource.refresh":"\u5237\u65B0\u8D44\u6E90\u72B6\u6001","workCenter.resource.reconfirm":"\u5DF2\u52A0\u8F7D\u6700\u65B0\u72B6\u6001\u3002\u8BF7\u68C0\u67E5\u9650\u989D\uFF0C\u9700\u8981\u65F6\u91CD\u65B0\u786E\u8BA4\u64CD\u4F5C\u3002","workCenter.resource.extend":"\u8FFD\u52A0\u9884\u7B97","workCenter.resource.confirmExtend":"\u786E\u8BA4\u8FFD\u52A0\u9884\u7B97","workCenter.resource.extendHelp":"\u8F93\u5165\u8981\u8FFD\u52A0\u7684\u6B63\u6574\u6570\u989D\u5EA6\uFF0C\u800C\u975E\u65B0\u7684\u603B\u4E0A\u9650\uFF1B\u4E0D\u4FEE\u6539\u7684\u5B57\u6BB5\u7559\u7A7A\u3002\u8FFD\u52A0\u4E0D\u4F1A\u6062\u590D\u6267\u884C\u6216\u6E05\u96F6\u7528\u91CF\u3002","workCenter.resource.current":"\u5F53\u524D\uFF1A{count}","workCenter.resource.invalid":"\u53EA\u80FD\u586B\u5199\u6B63\u5B89\u5168\u6574\u6570\uFF0C\u8FFD\u52A0\u540E\u7684\u4E0A\u9650\u4E5F\u5FC5\u987B\u662F\u5B89\u5168\u6574\u6570\u3002","workCenter.resource.extended":"\u9884\u7B97\u5DF2\u8FFD\u52A0\u3002\u672A\u6062\u590D\u6267\u884C\uFF1B\u51C6\u5907\u597D\u540E\u8BF7\u660E\u786E\u70B9\u51FB\u6062\u590D\u3002","workCenter.resource.resumed":"\u6062\u590D\u8BF7\u6C42\u5DF2\u63A5\u53D7\u3002","workCenter.resource.pending":"\u6B63\u5728\u66F4\u65B0\u8D44\u6E90\u72B6\u6001\u2026","workCenter.resource.close":"\u5173\u95ED\u9884\u7B97\u8868\u5355","workCenter.breadcrumbs":"Work Center \u5BFC\u822A","workCenter.actionNumber":"Action {number}","workCenter.actionBreadcrumb":"Action {number}\uFF1A{description}","workCenter.sourceUnavailable":"\u6765\u6E90 Action \u4E0D\u53EF\u7528","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.goalProgress":"\u76EE\u6807\u8FDB\u5EA6","workCenter.criteriaProgress":"{completed} / {total} \u9879\u9A8C\u6536\u6761\u4EF6\u5DF2\u9A8C\u8BC1","workCenter.criteriaRemaining":"\u5269\u4F59 {count} \u9879","workCenter.criteriaOmitted":"\u6B64\u6709\u754C\u89C6\u56FE\u7701\u7565\u4E86 {count} \u9879\u6761\u4EF6\uFF0C\u603B\u6570\u4ECD\u5305\u542B\u8FD9\u4E9B\u6761\u4EF6\u3002","workCenter.criteriaVerified":"\u6240\u6709\u9A8C\u6536\u6761\u4EF6\u5DF2\u9A8C\u8BC1","workCenter.criteriaPending":"\u5C1A\u672A\u5B9A\u4E49\u9A8C\u6536\u6761\u4EF6","workCenter.goalStatus.passed":"\u5DF2\u9A8C\u8BC1","workCenter.goalStatus.failed":"\u672A\u901A\u8FC7","workCenter.goalStatus.unmet":"\u5F85\u9A8C\u8BC1","workCenter.goalBlockers":"\u963B\u585E\u539F\u56E0","workCenter.evidenceRuns":"\u8BC1\u636E Run","workCenter.deliveredResponse":"\u4EA4\u4ED8\u56DE\u590D","workCenter.responseEvidence":"\u56DE\u590D\u6765\u6E90\u4E0E\u8BC1\u636E","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.resizeActions":"\u8C03\u6574 Actions \u680F\u5BBD\u5EA6\uFF08\u65B9\u5411\u952E\u8C03\u6574\uFF0CHome \u91CD\u7F6E\uFF09","workCenter.closeActions":"\u5173\u95ED Actions","workCenter.actionCount":"{count} \u4E2A Action","workCenter.noActionSummary":"\u6682\u65E0\u6458\u8981","workCenter.actionProgress":"{completed} / {total} \u4E2A Action","workCenter.currentAction":"\u5F53\u524D Action","workCenter.expandActions":"\u5C55\u5F00 Action","workCenter.collapseActions":"\u6536\u8D77","workCenter.actionObjective":"\u8FD9\u6B21\u8981\u505A\u4EC0\u4E48","workCenter.actionApproach":"\u51C6\u5907\u600E\u4E48\u505A","workCenter.actionExpectedOutcome":"\u671F\u5F85\u7684\u7ED3\u679C","workCenter.dependencies":"\u6765\u6E90 Action","workCenter.actionResult":"\u6700\u65B0\u7ED3\u679C","workCenter.currentProgress":"\u5F53\u524D\u8FDB\u5EA6","workCenter.requirementAndAcceptance":"\u9700\u6C42\u4E0E\u9A8C\u6536","workCenter.taskInformation":"\u4EFB\u52A1\u4FE1\u606F\u4E0E\u7528\u91CF","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.replyToAction":"\u56DE\u590D\u8FD9\u4E2A Action","workCenter.replyToCoordinator":"\u56DE\u590D\u534F\u8C03\u8005","workCenter.replyHelp":"\u5728\u4E0B\u65B9\u5BF9\u8BDD\u4E2D\u56DE\u590D\u4F60\u7684\u51B3\u5B9A\u6216\u5904\u7406\u8981\u6C42\uFF1B\u53D1\u9001\u524D\u4E0D\u4F1A\u6267\u884C\u4EFB\u4F55\u786E\u8BA4\u3002","workCenter.inputStale":"\u76EE\u6807\u72B6\u6001\u5DF2\u53D8\u5316\uFF0C\u56DE\u7B54\u5C1A\u672A\u5E94\u7528\u3002\u8F93\u5165\u5DF2\u4FDD\u7559\uFF0C\u8BF7\u6838\u5BF9\u5237\u65B0\u540E\u7684\u76EE\u6807\u518D\u53D1\u9001\u3002","workCenter.actionInputRetryHint":"\u8865\u5145\u4FEE\u6B63\u8BF4\u660E\u6216\u6587\u4EF6\u540E\uFF0C\u4F7F\u7528\u65B0\u4E0A\u4E0B\u6587\u91CD\u65B0\u6267\u884C\u8FD9\u4E2A Action\u3002","workCenter.actionInputContinueHint":"\u8FD9\u91CC\u53EA\u76F4\u63A5\u5E72\u9884\u5F53\u524D Action\u3002","workCenter.actionFailedTitle":"\u8FD9\u4E2A Action \u4E3A\u4EC0\u4E48\u5931\u8D25","workCenter.actionClosedTitle":"\u8FD9\u4E2A Action \u4E3A\u4EC0\u4E48\u88AB\u5173\u95ED","workCenter.failedAt":"\u5931\u8D25\u65F6\u95F4","workCenter.closedAt":"\u5173\u95ED\u65F6\u95F4","workCenter.actionFailureRecovery":"\u5728\u5DE5\u4F5C\u9879\u8F93\u5165\u6846\u4E2D\u9009\u62E9\u6B64 Action\uFF0C\u518D\u53D1\u9001\u4FEE\u6B63\u8BF4\u660E\u3002","workCenter.sendInput":"\u53D1\u9001\u7ED9 Action","workCenter.sendingInput":"\u6B63\u5728\u53D1\u9001\u2026","workCenter.retryAction":"\u91CD\u8BD5 Action","workCenter.sendAndRetryAction":"\u53D1\u9001\u5E76\u91CD\u8BD5 Action","workCenter.coordinatorDecision.guide_actions":"\u5DF2\u66F4\u65B0 Action \u6307\u4EE4","workCenter.coordinatorDecision.replan":"\u5DF2\u66F4\u65B0\u76EE\u6807\u6216\u8BA1\u5212","workCenter.coordinatorDecision.request_human":"\u9700\u8981\u4EBA\u5DE5\u8865\u5145\u4FE1\u606F","workCenter.conversation":"\u5BF9\u8BDD","workCenter.contentPane":"\u5185\u5BB9","workCenter.workItemPanes":"\u5DE5\u4F5C\u9879\u9762\u677F","workCenter.coordinator":"\u534F\u8C03\u8005","workCenter.coordinatorTargetHint":"\u5DE5\u4F5C\u9879\u89C4\u5212\u4E0E\u534F\u8C03","workCenter.composerTarget":"\u6D88\u606F\u76EE\u6807","workCenter.targetUnavailable":"\u6240\u9009 Action \u5DF2\u4E0D\u53EF\u7528","workCenter.targetUnavailableHelp":"\u53D1\u9001\u524D\u8BF7\u9009\u62E9\u5176\u4ED6\u76EE\u6807\uFF1B\u7CFB\u7EDF\u6CA1\u6709\u91CD\u5B9A\u5411\u8FD9\u4EFD\u8349\u7A3F\u3002","workCenter.sendToCoordinatorInstead":"\u6539\u53D1\u7ED9 Coordinator","workCenter.sendToTarget":"\u53D1\u9001\u7ED9 {target}","workCenter.answerWithTarget":"\u5728\u5BF9\u8BDD\u8F93\u5165\u6846\u4E2D\u9009\u62E9\u76F8\u5173\u76EE\u6807\uFF0C\u7136\u540E\u56DE\u590D\u3002","workCenter.conversationThinking":"\u5904\u7406\u4E2D\u2026","workCenter.conversationReadOnly":"\u8FD9\u4E2A\u5DE5\u4F5C\u9879\u5DF2\u5173\u95ED\uFF0C\u5BF9\u8BDD\u8BB0\u5F55\u4ECD\u53EF\u67E5\u770B\u3002","workCenter.conversationPlaceholder":"\u7EE7\u7EED\u8BA8\u8BBA\u8FD9\u4E2A\u5DE5\u4F5C\u9879","workCenter.sendMessage":"\u53D1\u9001\u6D88\u606F","workCenter.messageSpeakerRole":"{name} \xB7 {role}","workCenter.originalRequest":"\u539F\u59CB\u9700\u6C42","workCenter.actionMessageScopeTitle":"\u7ED9\u8FD9\u4E2A Action \u53D1\u6D88\u606F","workCenter.actionMessageScope":"\u6D88\u606F\u53EA\u53D1\u9001\u7ED9\u5F53\u524D Action\u3002","workCenter.actionConversation":"\u5BF9\u8BDD","workCenter.actionConversationWith":"Action \u6267\u884C\u8005","workCenter.actionViews":"Action \u89C6\u56FE","workCenter.actionExecutor":"\u6267\u884C\u8005","workCenter.actionExecutorPending":"\u7B49\u5F85\u5206\u914D\u6267\u884C\u8005","workCenter.actionInformation":"Action \u4FE1\u606F","workCenter.messageExecutor":"\u7ED9 {name} \u53D1\u6D88\u606F","workCenter.actionChatPlaceholder":"\u5728\u5BF9\u8BDD\u8F93\u5165\u6846\u4E2D\u7ED9 {name} \u53D1\u6D88\u606F","workCenter.statusLabel":"\u72B6\u6001","workCenter.llmRequestsLabel":"LLM \u8BF7\u6C42","workCenter.loopsLabel":"Loops","workCenter.toolsLabel":"\u5DE5\u5177","workCenter.tokensLabel":"Tokens","workCenter.workItemMessagePlaceholder":"\u8865\u5145\u6574\u4E2A Work Item \u7684\u65B9\u5411\u6216\u7EA6\u675F","workCenter.sendWorkItemMessage":"\u53D1\u9001\u7ED9 Work Item","workCenter.fromSession":"\u4ECE\u5F53\u524D Session \u521B\u5EFA\u5DE5\u4F5C\u9879","workCenter.llmRequestCount":"{count} \u6B21 LLM \u8BF7\u6C42","workCenter.loopCount":"{count} \u6B21 Loop","workCenter.toolCount":"{count} \u4E2A\u5DE5\u5177","workCenter.tokenCount":"{count} tokens","workCenter.tokenBreakdown":"\u8F93\u5165 {input} / \u8F93\u51FA {output} / \u7F13\u5B58 {cache}","workCenter.guidance":"\u7ED9\u5F53\u524D Action \u8865\u5145\u63D0\u793A","workCenter.guidanceHint":"\u8865\u5145\u7EA6\u675F\uFF0C\u6216\u8C03\u6574\u5F53\u524D Action \u7684\u6267\u884C\u65B9\u5411","workCenter.guidanceRestartHint":"\u53D1\u9001\u540E\u4F1A\u4F7F\u7528\u65B0\u63D0\u793A\u91CD\u542F\u5F53\u524D Action\u3002","workCenter.sendGuidance":"\u53D1\u9001\u63D0\u793A","workCenter.reuseMemory":"\u4F7F\u7528\u76F8\u5173 Agent memory \u548C\u6B64\u9879\u76EE\u7684\u5DF2\u5B8C\u6210\u5DE5\u4F5C","workCenter.reuseMemoryHelp":"\u5305\u62EC\u53D7 scope \u7EA6\u675F\u7684 Agent memory\uFF0C\u4EE5\u53CA canonical \u9879\u76EE\u76EE\u5F55\u76F8\u540C\u7684\u5DF2\u5B8C\u6210 Work Item \u7ED3\u6784\u5316\u6458\u8981\u548C\u8BC1\u636E\uFF1B\u4E0D\u4F1A\u590D\u7528\u539F\u59CB\u5DE5\u5177\u8F93\u51FA\u3002","workCenter.resumeAnswer":"\u56DE\u7B54\u7B49\u5F85\u4E2D\u7684\u95EE\u9898","workCenter.resumeAnswerHint":"\u63D0\u4F9B\u7EE7\u7EED\u6267\u884C\u6240\u9700\u7684\u4FE1\u606F","workCenter.answerInActionDetail":"\u5728\u5BF9\u8BDD\u8F93\u5165\u6846\u4E2D\u5C06\u76EE\u6807\u8BBE\u4E3A\u5F53\u524D Action\uFF0C\u7136\u540E\u56DE\u590D\u3002","workCenter.selectPrompt":"\u9009\u62E9\u4E00\u4E2A\u5DE5\u4F5C\u9879\uFF0C\u67E5\u770B\u5B83\u7684\u6D41\u7A0B\u3002","workCenter.createHint":"\u63CF\u8FF0\u4F60\u9700\u8981\u4EC0\u4E48\uFF0CCoordinator \u4F1A\u6301\u7EED\u521B\u5EFA\u5F53\u524D\u5FC5\u8981\u7684 Actions\uFF0C\u76F4\u5230\u9A8C\u6536\u6761\u4EF6\u5F97\u5230\u9A8C\u8BC1\u3002","workCenter.requirement":"\u9700\u6C42","workCenter.requirementHint":"\u7528\u81EA\u7136\u8BED\u8A00\u63CF\u8FF0\u95EE\u9898\u3001\u671F\u671B\u7ED3\u679C\u548C\u5FC5\u8981\u7EA6\u675F","workCenter.requirementHelp":"Coordinator \u4F1A\u5B8C\u5584\u76EE\u6807\u4E0E\u9A8C\u6536\u6761\u4EF6\uFF0C\u5E76\u968F\u7740\u8BC1\u636E\u4EA7\u751F\u52A8\u6001\u521B\u5EFA Actions\u3002","workCenter.titleField":"\u6807\u9898","workCenter.titleHint":"\u7B80\u77ED\u3001\u660E\u786E\u5730\u63CF\u8FF0\u9884\u671F\u7ED3\u679C","workCenter.goalHint":"\u8BF4\u660E Agent \u5FC5\u987B\u4EA4\u4ED8\u7684\u6700\u7EC8\u7ED3\u679C","workCenter.criteriaHint":"\u6BCF\u884C\u4E00\u6761\u9A8C\u6536\u6761\u4EF6","workCenter.attachments":"\u9644\u4EF6","workCenter.outputs":"\u4EA7\u51FA","workCenter.deliveryTarget":"\u4EA4\u4ED8\u76EE\u6807","workCenter.deliveryTargetAsk":"\u4EA4\u4ED8\u524D\u8BE2\u95EE\u6211","workCenter.deliveryTargetResponse":"\u56DE\u590D","workCenter.deliveryTargetFiles":"\u5DE5\u4F5C\u76EE\u5F55\u4E2D\u7684\u6587\u4EF6","workCenter.deliveryTargetPr":"\u521B\u5EFA\u62C9\u53D6\u8BF7\u6C42","workCenter.deliveryTargetMerge":"\u5408\u5E76\u5DF2\u6279\u51C6\u7684\u62C9\u53D6\u8BF7\u6C42","workCenter.deliveryTargetHelp":"\u201C\u56DE\u590D\u201D\u4EA4\u4ED8\u6709\u8BC1\u636E\u652F\u6301\u7684\u7B54\u590D\uFF0C\u4E0D\u8981\u6C42\u4EE3\u7801\u4EA7\u7269\u3002\u4EE3\u7801\u7C7B\u4EA4\u4ED8\u4ECD\u987B\u9075\u5B88\u8BC4\u5BA1\u4E0E\u5408\u5E76\u7B56\u7565\u3002","workCenter.attachmentsHelp":"\u56FE\u7247\u3001PDF \u548C\u6587\u672C\u6587\u4EF6\u4F1A\u6301\u7EED\u7ED1\u5B9A\u5230\u6B64 Work Item\uFF0C\u5E76\u63D0\u4F9B\u7ED9\u6BCF\u4E2A Action\u3002","workCenter.attachmentsUnsupported":"\u6240\u9009 Agent \u4E0D\u652F\u6301 Work Item \u9644\u4EF6\u3002","workCenter.addAttachments":"\u6DFB\u52A0\u6587\u4EF6","workCenter.attachmentsUploading":"\u4E0A\u4F20\u4E2D\u2026","workCenter.attachmentsUploadFailed":"\u9644\u4EF6\u4E0A\u4F20\u5931\u8D25","workCenter.pendingEnvelopeLocked":"\u6709\u4E00\u6761\u672A\u786E\u8BA4\u8BF7\u6C42\u5DF2\u9501\u5B9A\u5230\u539F\u59CB\u8EAB\u4EFD\u3002","workCenter.replacePendingAttachments":"\u66FF\u6362\u9644\u4EF6","workCenter.discardPendingEnvelope":"\u653E\u5F03\u5F85\u786E\u8BA4\u8BF7\u6C42","workCenter.pendingEnvelopeChanged":"\u5F85\u786E\u8BA4\u8BF7\u6C42\u5DF2\u53D8\u5316\uFF0C\u8BF7\u91CD\u65B0\u6253\u5F00\u8BE5\u5DE5\u4F5C\u9879\u540E\u518D\u8BD5\u3002","workCenter.removeAttachment":"\u4ECE\u8349\u7A3F\u4E2D\u79FB\u9664","workCenter.previewAttachment":"\u6253\u5F00\u9644\u4EF6","workCenter.openAttachmentNamed":"\u6253\u5F00\u9644\u4EF6 {name}","workCenter.openingAttachment":"\u6B63\u5728\u6253\u5F00\u9644\u4EF6\u2026","workCenter.attachmentPreviewFailed":"\u65E0\u6CD5\u6253\u5F00\u9644\u4EF6\uFF0C\u8BF7\u91CD\u8BD5\u3002","workCenter.attachmentOpenBlocked":"\u6D4F\u89C8\u5668\u963B\u6B62\u4E86\u9644\u4EF6\u7A97\u53E3\uFF0C\u8BF7\u5141\u8BB8\u5F39\u51FA\u7A97\u53E3\u540E\u91CD\u8BD5\u3002","workCenter.execution":"\u6267\u884C\u65B9\u5F0F","workCenter.executionHint":"\u9009\u62E9\u5DE5\u4F5C\u9879\u5728\u54EA\u91CC\u6267\u884C\uFF0C\u4EE5\u53CA\u521B\u5EFA\u540E\u662F\u5426\u7ACB\u5373\u5F00\u59CB\u3002","workCenter.workDir":"\u5DE5\u4F5C\u76EE\u5F55","workCenter.workDirHint":"\u9009\u62E9\u4E00\u4E2A\u5DF2\u5B58\u5728\u7684\u9879\u76EE\u76EE\u5F55","workCenter.chooseFolder":"\u9009\u62E9\u6587\u4EF6\u5939","workCenter.workDirPickerHelp":"\u4ECE\u5F53\u524D Agent \u7684\u771F\u5B9E\u76EE\u5F55\u4E2D\u9009\u62E9\u5DF2\u5B58\u5728\u7684\u6587\u4EF6\u5939\u3002","workCenter.folderPickerHint":"\u9009\u62E9\u8FD9\u4E2A\u5DE5\u4F5C\u9879\u53EF\u4EE5\u8BFB\u53D6\u548C\u4FEE\u6539\u7684\u9879\u76EE\u76EE\u5F55\u3002","workCenter.folderPickerSelectionHint":"\u53CC\u51FB\u8FDB\u5165\u76EE\u5F55\uFF0C\u6216\u9009\u4E2D\u76EE\u5F55\u540E\u786E\u8BA4\u3002","workCenter.schedule":"\u8BA1\u5212","workCenter.scheduleStatus":"\u8BA1\u5212\u72B6\u6001","workCenter.scheduleEnabled":"\u5DF2\u542F\u7528","workCenter.scheduleDisabled":"\u5DF2\u505C\u7528","workCenter.scheduleRunsAt":"\u8BA1\u5212\u6267\u884C\u4E8E","workCenter.scheduleTriggered":"\u8BA1\u5212\u5DF2\u89E6\u53D1","workCenter.schedulePaused":"\u8BA1\u5212\u5DF2\u6682\u505C","workCenter.scheduleWorkItem":"\u5B9A\u65F6\u6267\u884C\u6B64\u5DE5\u4F5C\u9879","workCenter.scheduleWorkItemHint":"\u5C06\u5176\u6301\u4E45\u4FDD\u5B58\u4E3A\u8349\u7A3F\uFF0C\u5E76\u5728\u6240\u9009\u672C\u5730\u65F6\u95F4\u6267\u884C\u4E00\u6B21\u3002","workCenter.scheduleAt":"\u5F00\u59CB\u65F6\u95F4","workCenter.enableSchedule":"\u542F\u7528\u8BA1\u5212","workCenter.disableSchedule":"\u505C\u7528\u8BA1\u5212","workCenter.startImmediately":"\u7ACB\u5373\u5F00\u59CB","workCenter.startImmediatelyHint":"\u5173\u95ED\u540E\u5C06\u521B\u5EFA\u4E3A\u8349\u7A3F\uFF0C\u786E\u8BA4\u65E0\u8BEF\u540E\u518D\u5F00\u59CB\u3002","workCenter.creating":"\u521B\u5EFA\u4E2D\u2026","workCenter.create":"\u521B\u5EFA","workCenter.status.draft":"\u8349\u7A3F","workCenter.status.ready":"\u5F85\u6267\u884C","workCenter.status.running":"\u6267\u884C\u4E2D","workCenter.status.waiting":"\u7B49\u5F85\u4E2D","workCenter.status.needs_attention":"\u9700\u8981\u5904\u7406","workCenter.status.done":"\u5DF2\u5B8C\u6210","workCenter.status.cancelled":"\u5DF2\u53D6\u6D88","workCenter.status.completed":"\u5DF2\u5B8C\u6210","workCenter.status.failed":"\u5931\u8D25","workCenter.status.closed":"\u5DF2\u5173\u95ED","workCenter.status.superseded":"\u5DF2\u66FF\u4EE3","workCenter.action.triage":"\u5206\u6790","workCenter.action.implement":"\u5B9E\u73B0","workCenter.action.review":"\u8BC4\u5BA1","workCenter.action.integrate":"\u96C6\u6210","workCenter.action.deliver":"\u4EA4\u4ED8","workCenter.action.test":"\u6D4B\u8BD5","workCenter.action.research":"\u7814\u7A76","workCenter.action.design":"\u8BBE\u8BA1","workCenter.action.diagnose":"\u8BCA\u65AD","workCenter.action.migrate":"\u8FC1\u79FB","workCenter.action.document":"\u6587\u6863","workCenter.action.operate":"\u8FD0\u7EF4","workCenter.action.write":"\u5199\u4F5C","workCenter.action.create_vp":"\u521B\u5EFA VP","workCenter.action.custom":"\u81EA\u5B9A\u4E49","workCenter.assignment.auto":"\u4F7F\u7528\u4EFB\u52A1\u6D41\u7B56\u7565","workCenter.model.inherit":"\u4F7F\u7528\u4EFB\u52A1\u6D41\u6A21\u578B","workCenter.model.defaultProvider":"\u9ED8\u8BA4 Provider","workCenter.planPreview":"\u6267\u884C\u8BA1\u5212","workCenter.planPreviewHelp":"\u6839\u636E\u5F53\u524D Agent \u7684 VP \u6C60\u548C\u6A21\u578B\u8BBE\u7F6E\u5B9E\u65F6\u89E3\u6790\u3002","workCenter.settings.title":"\u5DE5\u4F5C\u4E2D\u5FC3\u8BBE\u7F6E","workCenter.settings.subtitle":"\u914D\u7F6E Coordinator\uFF0C\u4EE5\u53CA AI \u52A8\u6001\u89C4\u5212\u4F7F\u7528\u7684 Action \u63D0\u793A\u8BCD\u3001\u6A21\u578B\u548C effort\u3002","workCenter.settings.workflow":"\u4EFB\u52A1\u6D41","workCenter.settings.workflowHelp":"Coordinator \u4F1A\u9488\u5BF9\u4EFB\u52A1\u52A8\u6001\u9009\u62E9 Action \u548C\u6267\u884C\u8005\u3002","workCenter.settings.aiWorkflowHelp":"Coordinator \u53EA\u521B\u5EFA\u5F53\u524D\u5FC5\u8981\u7684\u4EFB\u52A1\u4E13\u5C5E Action\u3002\u5185\u7F6E Action \u7B56\u7565\u662F\u53EF\u590D\u7528\u6A21\u677F\uFF1B\u9700\u8981\u65F6 Coordinator \u53EF\u4EE5\u521B\u5EFA\u7CBE\u786E\u7684\u9886\u57DF\u7C7B\u578B\u3002","workCenter.settings.globalInstructions":"Agent \u5168\u5C40\u6307\u4EE4","workCenter.settings.globalInstructionsHint":"\u4F8B\u5982\uFF1A\u9075\u5FAA\u4ED3\u5E93\u53D1\u5E03\u6D41\u7A0B\u3001\u5FC5\u987B\u72EC\u7ACB\u8BC4\u5BA1\uFF0C\u672A\u7ECF\u660E\u786E\u6279\u51C6\u4E0D\u5F97\u521B\u5EFA\u90E8\u7F72 tag\u3002","workCenter.settings.globalInstructionsHelp":"\u4FDD\u5B58\u5728 Agent \u7EA7\uFF0C\u5E76\u51BB\u7ED3\u8FDB\u6BCF\u4E2A\u65B0 Work Item\uFF1B\u5BF9 triage \u548C\u6240\u6709\u751F\u6210\u7684 Action \u751F\u6548\uFF0C\u4F18\u5148\u7EA7\u4F4E\u4E8E Work Item \u5951\u7EA6\u53CA\u7CFB\u7EDF/\u5DE5\u5177\u5B89\u5168\u89C4\u5219\u3002\u5DF2\u6709 Work Item \u4FDD\u7559\u539F\u5FEB\u7167\u3002","workCenter.settings.actionPolicies":"\u5185\u7F6E Action \u7B56\u7565","workCenter.settings.actionPoliciesHelp":"\u8FD9\u4E9B\u662F\u53EF\u590D\u7528\u7684\u6267\u884C\u57FA\u7EBF\uFF0C\u4E0D\u662F\u56FA\u5B9A\u5DE5\u4F5C\u6D41\u3002\u672A\u77E5\u7684\u9886\u57DF Action \u7C7B\u578B\u4F1A\u4F7F\u7528\u201C\u81EA\u5B9A\u4E49\u201D\u7B56\u7565\uFF0C\u5E76\u4FDD\u7559 triage \u751F\u6210\u7684\u7C7B\u578B\u548C\u4EFB\u52A1\u76EE\u6807\u3002","workCenter.settings.dynamicInstructionHelp":"AI \u4F1A\u52A0\u5165 Work Item \u5951\u7EA6\u3001\u5168\u5C40\u6307\u4EE4\u3001\u524D\u5E8F Action \u4E0A\u4E0B\u6587\u3001memory \u548C\u4EFB\u52A1\u4E13\u5C5E\u76EE\u6807\uFF1B\u8FD9\u91CC\u5B9A\u4E49\u8BE5 Action \u7C7B\u578B\u7684\u53EF\u590D\u7528\u884C\u4E3A\u3002","workCenter.settings.models":"\u6A21\u578B","workCenter.settings.modelsHelp":"Provider \u548C\u51ED\u8BC1\u4ECD\u7531 Agent LLM \u8BBE\u7F6E\u7BA1\u7406\uFF1B\u5DE5\u4F5C\u4E2D\u5FC3\u53EA\u9009\u62E9\u53EF\u7528\u6A21\u578B\u3002","workCenter.settings.dynamicModelsHelp":"Coordinator \u4E0E\u5B9E\u9645\u6267\u884C Action \u7684\u6A21\u578B\u53EF\u4EE5\u5206\u522B\u914D\u7F6E\u3002","workCenter.settings.coordinatorModel":"Coordinator","workCenter.settings.coordinatorModelHelp":"\u7528\u4E8E Work Item \u5BF9\u8BDD\u3001\u4FEE\u6539\u76EE\u6807\u548C\u91CD\u65B0\u89C4\u5212\uFF1B\u4E0D\u4F1A\u6267\u884C\u9879\u76EE\u5DE5\u5177\u3002","workCenter.settings.allActions":"\u6240\u6709 Action \u7684\u515C\u5E95\u7B56\u7565","workCenter.settings.maxConcurrentActions":"\u6700\u5927\u5E76\u53D1 Action \u6570","workCenter.settings.maxConcurrentActionsHelp":"\u9ED8\u8BA4 3\u3002\u975E Git\u3001\u810F\u5DE5\u4F5C\u533A\u3001\u5171\u4EAB\u526F\u4F5C\u7528\u548C\u96C6\u6210 Action \u4ECD\u4F1A\u4E32\u884C\u6267\u884C\u3002","workCenter.workItemType":"\u7C7B\u578B","workCenter.typeAuto":"Auto \u2014 \u7531 LLM \u63A8\u65AD","workCenter.typeHelp":"\u53EF\u9009\u62E9\u4EFB\u52A1\u7C7B\u522B\uFF0C\u4E5F\u53EF\u8BA9 AI \u81EA\u52A8\u63A8\u65AD\uFF1B\u5177\u4F53 Actions \u59CB\u7EC8\u7531 AI \u89C4\u5212\u3002","workCenter.planning":"\u89C4\u5212\u4E2D","workCenter.aiPlan":"Coordinator \u9A71\u52A8\u6267\u884C","workCenter.aiPlanHelp":"Coordinator \u4F1A\u4F9D\u636E\u5F53\u524D\u8BC1\u636E\u9009\u62E9\u4E0B\u4E00\u6279 Action \u548C\u6267\u884C\u8005\uFF0C\u4E0D\u518D\u9884\u5148\u751F\u6210\u5DE5\u4F5C\u6D41\u56FE\uFF1B\u6A21\u578B\u4E0E effort \u7531 Work Center \u8BBE\u7F6E\u63A7\u5236\u3002","workCenter.settings.manageProviders":"\u7BA1\u7406 Agent \u6A21\u578B","workCenter.settings.assignment":"VP \u9009\u62E9","workCenter.settings.assignment.auto":"\u4ECE\u5168\u90E8 VP \u81EA\u52A8\u9009\u62E9","workCenter.settings.assignment.pool":"\u5019\u9009\u6C60","workCenter.settings.assignment.fixed":"\u56FA\u5B9A VP","workCenter.settings.capability":"\u6240\u9700\u80FD\u529B","workCenter.settings.vp":"Virtual Person","workCenter.settings.poolMembers":"\u5019\u9009 VP","workCenter.settings.modelPolicy":"\u6A21\u578B\u7B56\u7565","workCenter.settings.model.inherit":"\u7EE7\u627F VP \u504F\u597D","workCenter.settings.model.primary":"Agent \u4E3B\u6A21\u578B","workCenter.settings.model.fast":"Agent \u5FEB\u6A21\u578B","workCenter.settings.model.specific":"\u6307\u5B9A\u6A21\u578B","workCenter.settings.model.tag":"\u6A21\u578B\u6807\u7B7E","workCenter.settings.modelTag":"\u6807\u7B7E","workCenter.settings.modelTag.fast":"\u5FEB\u901F","workCenter.settings.modelTag.balanced":"\u6B63\u5E38","workCenter.settings.modelTag.ultimate":"\u6781\u81F4","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 pf,gf=V(()=>{bc();wc();pf={...of,...lf,"quickSend.composer.label":"Quick send","quickSend.composer.send":"Quick send {number}: {name}","common.loading":"Loading...","common.confirm":"OK","common.apply":"Apply","common.cancel":"Cancel","common.delete":"Delete","common.copy":"Copy","common.copied":"Copied","common.close":"Close","common.refresh":"Refresh","common.open":"Open","common.save":"Save","common.saving":"Saving...","common.search":"Search","common.back":"Back","common.noSubdirectories":"No subdirectories","common.drives":"Drives","common.rootDir":"Root","common.comma":", ","common.select":"Select","common.retry":"Retry","mermaid.export":"Export","mermaid.exportMd":"Export MD","mermaid.exportPng":"Export PNG","mermaid.exportJpg":"Export JPG","login.subtitle":"Yeaft Web Code Agent","login.username":"Username","login.password":"Password","login.login":"Login","login.loggingIn":"Logging in...","login.enterUsername":"Please enter your username","login.enterPassword":"Please enter your password","login.noAccount":"Don't have an account?","login.registerWithCode":"Register","login.or":"or","login.usePassword":"Sign in with username & password","login.useSso":"Back to single sign-on","login.noProviders":"No third-party sign-in providers are enabled.","login.microsoft":"Sign in with Microsoft","login.github":"Sign in with GitHub","login.google":"Sign in with Google","login.wechat":"Sign in with WeChat","login.alipay":"Sign in with Alipay","login.wechat.mobileUnsupported":"Sign in with WeChat is only available on PC. Please scan the QR code from a desktop browser.","login.alipay.mobileWaiting":"Waiting for you to confirm in the Alipay app\u2026 Once you finish, return to this page and you will be signed in automatically.","login.alipay.relaunch":"Open Alipay again","login.qr.title":"Scan to sign in","login.qr.titleAlipay":"Sign in with Alipay","login.qr.titleWechat":"Sign in with WeChat","login.qr.hint":"Scan the QR code with your phone to authorize.","login.error.enterUsername":"Please enter your username","login.error.enterPassword":"Please enter your password","login.error.enter6Digit":"Please enter a 6-digit code","login.error.enterInviteCode":"Please enter the invite code","login.error.usernameMinLen":"Username must be at least 2 characters","login.error.passwordMinLen":"Password must be at least 6 characters","login.error.passwordMismatch":"Passwords do not match","login.error.enterVerifyCode":"Please enter the verification code","login.error.loginFailed":"Login failed","login.forgot.link":"Forgot password?","login.forgot.title":"Reset your password","login.forgot.emailHint":"Enter the email address on your account. We will send a 6-digit reset code.","login.forgot.sendCode":"Send Reset Code","login.forgot.sending":"Sending...","login.forgot.codeSent":"If the email is on file, a 6-digit reset code has been sent. Enter it below along with your new password.","login.forgot.resetBtn":"Reset Password","login.forgot.resetting":"Resetting...","login.forgot.success":"Password reset. You can now sign in with your new password.","login.forgot.emailInvalid":"Please enter a valid email","login.register.title":"New User Registration","login.register.inviteCode":"Invite Code","login.register.username":"Username","login.register.password":"Password (min 6 characters)","login.register.confirmPassword":"Confirm Password","login.register.email":"Email (optional)","login.register.submit":"Register","login.register.submitting":"Registering...","login.register.back":"Back to Login","login.register.success":"Registration successful, please login","login.register.enterCode":"Please enter the invite code","login.register.usernameMin":"Username must be at least 2 characters","login.register.passwordMin":"Password must be at least 6 characters","login.register.passwordMismatch":"Passwords do not match","login.totp.setupTitle":"Set Up Two-Factor Authentication","login.totp.setupHint":"Scan the QR code below with Microsoft Authenticator or Google Authenticator","login.totp.manualKey":"Or enter the key manually:","login.totp.enterCode":"Enter 6-digit code","login.totp.complete":"Complete Setup","login.totp.verifying":"Verifying...","login.totp.verify":"Verify","login.totp.prompt":"Enter the code from your Authenticator app","login.totp.invalidCode":"Please enter a 6-digit code","login.email.codeSent":"Verification code sent to {email}","login.email.enterCode":"Enter verification code","login.email.verify":"Verify","login.email.verifying":"Verifying...","login.email.enterCodeError":"Please enter the verification code","chat.agent.select":"Select Agent","chat.agent.manage":"Manage Agents","chat.agent.count":"{count} agents","chat.agent.updatesAvailable":"{count} Agent update(s) available","chat.agent.updateAvailable":"Update available: v{version}","chat.agent.none":"No Agents","chat.agent.restarting":"Restarting","agentSettings.open":"Agent settings","agentSettings.manage":"Manage","agentSettings.eyebrow":"Local runtime","agentSettings.title":"Agent settings","agentSettings.description":"Inspect and configure each connected Agent without mixing runtime controls into account settings.","agentSettings.agentList":"Agent","agentSettings.categories":"Agent setting categories","agentSettings.categories.operations":"Operations","agentSettings.categories.trace":"Trace","agentSettings.categories.llm":"LLM configuration","agentSettings.selectedAgent":"Selected Agent","agentSettings.online":"Online","agentSettings.offline":"Offline","agentSettings.empty":"No Agents are available.","agentSettings.runtime.title":"Runtime","agentSettings.runtime.description":"Identity, workspace, and local background processing.","agentSettings.runtime.version":"Version","agentSettings.runtime.updateAvailable":"Update available: v{version}","agentSettings.runtime.updateUnknown":"Update status unavailable","agentSettings.runtime.workDir":"Working directory","agentSettings.workCenter.title":"Work Center","agentSettings.workCenter.enabled":"Enabled","agentSettings.workCenter.disabled":"Disabled","agentSettings.workCenter.runtimeUnavailable":"Startup failed","agentSettings.workCenter.runtimeUnavailableMessage":"Work Center is configured on, but its runtime did not start. Review the Agent logs and try again.","agentSettings.workCenter.runtimeUnavailableHint":"Configured on, but the Work Center runtime is currently unavailable.","agentSettings.workCenter.enabledHint":"Persistent work is available on this Agent. New Sessions can also create Work Items.","agentSettings.workCenter.disabledHint":"Enable persistent Work Items and background execution on this Agent.","agentSettings.workCenter.environmentManaged":"Managed by YEAFT_WORK_CENTER_ENABLED and cannot be changed here.","agentSettings.workCenter.upgradeRequired":"Upgrade this Agent to manage Work Center availability.","agentSettings.workCenter.unsupported":"Upgrade required","agentSettings.workCenter.loadFailed":"Failed to load Work Center status.","agentSettings.workCenter.loadFailedStatus":"Load failed","agentSettings.workCenter.saveFailed":"Failed to update Work Center.","agentSettings.telemetry.title":"Diagnostics","agentSettings.telemetry.saved":"Diagnostics settings saved.","agentSettings.telemetry.loadFailed":"Failed to load diagnostics settings.","agentSettings.telemetry.saveFailed":"Failed to save diagnostics settings.","agentSettings.maintenance.title":"Maintenance","agentSettings.maintenance.description":"These operations interrupt work running on the selected Agent.","agentSettings.maintenance.upgradeFailed":"Agent upgrade failed.","chat.agent.dream":"Dream","chat.agent.dreamHint":"Enable automatic Dream memory processing","chat.agent.restart":"Restart","chat.agent.restartConfirm":`Are you sure you want to restart Agent "{name}"?
|
|
13
|
+
\u5347\u7EA7\u5B8C\u6210\u540E\u5B83\u4EEC\u4F1A\u81EA\u52A8\u91CD\u542F\u3002\u53E6\u6709 {skipped} \u4E2A Agent \u56E0\u5F53\u524D\u4E0D\u53EF\u7528\u6216\u4E0D\u652F\u6301\u5B89\u5168\u8FDC\u7A0B\u5347\u7EA7\u800C\u8DF3\u8FC7\u3002`,"chat.agent.upgradeAllSummary":"Agent \u6279\u91CF\u5347\u7EA7\u5B8C\u6210\uFF1A\u5347\u7EA7\u6210\u529F {upgraded} \u4E2A\uFF0C\u5DF2\u662F\u6700\u65B0 {latest} \u4E2A\uFF0C\u5931\u8D25 {failed} \u4E2A\uFF0C\u8DF3\u8FC7 {skipped} \u4E2A\u3002","chat.agent.alreadyLatest":"Agent \u5DF2\u662F\u6700\u65B0\u7248\u672C (v{version})\uFF0C\u65E0\u9700\u5347\u7EA7\u3002","chat.agent.nodeIncompatible":"Agent \u5347\u7EA7\u4E2D\u6B62\uFF1A\u76EE\u6807\u7248\u672C v{version} \u9700\u8981 Node {required}\uFF0C\u4F46\u5F53\u524D\u673A\u5668\u8FD0\u884C\u7684\u662F Node {current}\u3002\u8BF7\u5148\u5347\u7EA7 Node.js \u518D\u91CD\u8BD5\u3002","chat.agent.manualUpgradeRequired":'Agent v{version} \u6CA1\u6709\u58F0\u660E\u5B89\u5168\u8FDC\u7A0B\u5347\u7EA7\u80FD\u529B\uFF1B\u65E7\u5BA2\u6237\u7AEF\u53C8\u672A\u4E0A\u62A5\u8DB3\u591F\u7684\u5E73\u53F0\u4FE1\u606F\uFF0CServer \u65E0\u6CD5\u6392\u9664 Windows \u5305\u76EE\u5F55\u9501\u5B9A\u6545\u969C\u3002\u4E3A\u907F\u514D\u91CD\u590D\u6267\u884C\u5DF2\u77E5\u4F1A\u5931\u8D25\u7684\u5347\u7EA7\uFF0C\u672C\u6B21\u64CD\u4F5C\u5DF2\u88AB\u963B\u6B62\u3002\u8BF7\u5148\u505C\u6B62\u8BE5\u673A\u5668\u4E0A\u6240\u9009\u7684 Agent/\u670D\u52A1\uFF1A\u82E5\u7531 PM2 \u6216\u5176\u4ED6\u670D\u52A1\u7BA1\u7406\u5668\u8FD0\u884C\uFF0C\u8BF7\u5728\u90A3\u91CC\u505C\u6B62\u8FD9\u4E2A\u7CBE\u786E\u5B9E\u4F8B\uFF1B\u82E5\u5728\u524D\u53F0\u7EC8\u7AEF\u8FD0\u884C\uFF0C\u8BF7\u7EC8\u6B62\u8BE5\u8FDB\u7A0B\u3002\u786E\u8BA4\u8BE5\u8FDB\u7A0B\u5DF2\u7ECF\u9000\u51FA\u540E\uFF0C\u518D\u6267\u884C "npm install -g @yeaft/webchat-agent@latest --registry=https://pkg.yeaft.com/"\uFF1B\u6700\u540E\u4F7F\u7528\u539F\u914D\u7F6E\u542F\u52A8\u540C\u4E00 Agent \u5B9E\u4F8B\u3002\u5B8C\u6210\u8FD9\u6B21\u5F15\u5BFC\u540E\uFF0C\u540E\u7EED\u53EF\u7EE7\u7EED\u5728\u6D4F\u89C8\u5668\u4E2D\u5347\u7EA7\u3002',"chat.agent.containerImageUpgradeRequired":'\u5BB9\u5668 Agent v{version} \u7531 Docker \u955C\u50CF\u7BA1\u7406\uFF0C\u4E0D\u80FD\u5728\u5BB9\u5668\u5185\u4F7F\u7528 npm \u81EA\u5347\u7EA7\u3002\u8BF7\u5728 Docker Host \u4E0A\u6267\u884C "docker pull <configured-agent-image>"\uFF0C\u7136\u540E\u901A\u8FC7\u73B0\u6709 Server/Sandbox \u751F\u547D\u5468\u671F\u6216\u539F\u6765\u7684 "yeaft-agent container install" \u547D\u4EE4\u91CD\u5EFA\u540C\u4E00\u4E2A\u5BB9\u5668\u3002\u4FDD\u7559\u73B0\u6709\u7684 /home/yeaft/.yeaft \u548C /workspace \u6301\u4E45\u5377\uFF0C\u5E76\u590D\u7528 Host \u7AEF\u539F\u6709\u7684 0600 agent-secret \u6587\u4EF6\uFF1B\u4E0D\u8981\u5728\u91CD\u5EFA\u65F6\u5220\u9664\u8FD9\u4E9B\u5377\u3002',"chat.agent.online":"{count} \u4E2A Agent \u5728\u7EBF","chat.agent.selectFirst":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A Agent","chat.agent.yeaft":"Yeaft \u5BF9\u8BDD","sidebar.toggle.chat":"\u5207\u6362\u5230 Chat","sidebar.toggle.yeaft":"\u5207\u6362\u5230 Yeaft","sidebar.surface.label":"\u4FA7\u680F\u89C6\u56FE","sidebar.surface.sessions":"\u4F1A\u8BDD","sidebar.provider.label":"\u4F1A\u8BDD Provider","sidebar.provider.claude":"Claude","sidebar.sessions.new":"\u65B0\u5EFA\u4F1A\u8BDD","sidebar.sessions.newChat":"\u65B0\u5EFA\u804A\u5929","sidebar.sessions.emptyProvider":"\u6B64 Provider \u6682\u65E0\u4F1A\u8BDD","sidebar.sessions.menu":"\u4F1A\u8BDD\u83DC\u5355","sidebar.sessions.unread":"\u672A\u8BFB","sidebar.sessions.pinned":"\u5DF2\u7F6E\u9876","sidebar.sessions.processing":"\u6B63\u5728\u56DE\u590D","sidebar.sessions.hidden":"\u5DF2\u9690\u85CF\u7684\u4F1A\u8BDD","sidebar.sessions.remove":"\u4ECE\u4FA7\u680F\u79FB\u9664","sidebar.sessions.agent":"Agent","sidebar.sessions.provider":"Provider","sidebar.projects.title":"\u9879\u76EE","sidebar.projects.menu":"\u9879\u76EE\u83DC\u5355","sidebar.projects.new":"\u65B0\u5EFA\u9879\u76EE","sidebar.projects.newSession":"\u5728{name}\u4E2D\u521B\u5EFA Session","sidebar.projects.assignFailed":"Session \u5DF2\u521B\u5EFA\uFF0C\u4F46\u65E0\u6CD5\u52A0\u5165{name}\u3002\u9519\u8BEF\uFF1A{message}","sidebar.projects.empty":"\u6682\u65E0\u9879\u76EE","sidebar.projects.noSessions":"\u5C06 Yeaft \u804A\u5929\u62D6\u5230\u8FD9\u91CC","sidebar.projects.namePrompt":"\u9879\u76EE\u540D\u79F0","sidebar.projects.renamePrompt":"\u91CD\u547D\u540D\u9879\u76EE","sidebar.projects.rename":"\u91CD\u547D\u540D\u9879\u76EE","sidebar.projects.delete":"\u5220\u9664\u9879\u76EE","sidebar.projects.deleteConfirm":"\u5220\u9664\u9879\u76EE\u201C{name}\u201D\uFF1F\u5176\u4E2D\u804A\u5929\u4F1A\u79FB\u56DE\u6700\u8FD1\u3002","sidebar.projects.remove":"\u79FB\u51FA\u9879\u76EE","sidebar.projects.moveMenu":"\u79FB\u52A8\u5230 Projects","sidebar.projects.moveBack":"\u8FD4\u56DE","sidebar.projects.moveEmpty":"\u6CA1\u6709\u5176\u4ED6 Project","sidebar.projects.moveTo":"\u79FB\u5230 {name}","sidebar.projects.instructions":"Project \u6307\u4EE4","sidebar.projects.instructionsTitle":"{name} \u6307\u4EE4","sidebar.projects.instructionsHint":"\u8FD9\u4E9B\u6307\u4EE4\u4F1A\u52A0\u5165\u6B64 Project \u5185\u6BCF\u4E2A Session \u7684 system prompt\u3002","sidebar.projects.instructionsPlaceholder":"\u8F93\u5165\u5171\u4EAB\u7684\u7F16\u7801\u89C4\u8303\u3001\u7EA6\u675F\u6216\u5DE5\u4F5C\u6D41\u8BF4\u660E\u2026","sidebar.recents.title":"\u6700\u8FD1","sidebar.recents.empty":"\u6682\u65E0\u804A\u5929","yeaft.back":"\u8FD4\u56DE","yeaft.session.people":"\u6210\u5458","yeaft.session.peopleEmpty":"\u6682\u65E0\u6210\u5458","yeaft.session.runningTasks":"\u8FD0\u884C\u4E2D\u7684\u4EFB\u52A1","yeaft.session.tasksEmpty":"\u6682\u65E0\u8FD0\u884C\u4EFB\u52A1","yeaft.session.owner":"\u8D1F\u8D23\u4EBA","yeaft.session.started":"\u5F00\u59CB\u65F6\u95F4","yeaft.breadcrumb.label":"Thread \u8FC7\u6EE4","yeaft.breadcrumb.mainStream":"\u4E3B\u6D41","yeaft.breadcrumb.backHint":"\u8FD4\u56DE\u5168\u6D41 (Esc)","yeaft.featureDetail.ariaLabel":"Task \u8BE6\u60C5","yeaft.featureDetail.replyTo":"\u56DE\u590D\u5230:","yeaft.featureDetail.forkHint":"\u8BE5 task \u6682\u65E0\u6D3B\u8DC3 thread \u2014 \u8BF7 fork \u65B0 thread \u540E\u56DE\u590D\u3002","yeaft.featureDetail.empty":"\u8BE5 task \u6682\u65E0\u6D88\u606F\u3002","yeaft.featureDetail.threadPillHint":"\u6253\u5F00 thread","yeaft.featureDetail.summary.aria":"\u4EFB\u52A1\u6458\u8981\u65F6\u95F4\u7EBF","yeaft.featureDetail.summary.title":"\u6458\u8981\u65F6\u95F4\u7EBF","yeaft.featureDetail.summary.loading":"\u6B63\u5728\u52A0\u8F7D\u6458\u8981\u5386\u53F2\u2026","yeaft.featureDetail.summary.empty":"\u6682\u65E0\u6458\u8981\u3002","yeaft.featureDetail.summary.error":"\u6458\u8981\u52A0\u8F7D\u5931\u8D25\uFF1A{error}","yeaft.featureDetail.summary.showArchived":"\u663E\u793A\u5DF2\u5F52\u6863","yeaft.featureDetail.related.aria":"\u5173\u8054\u4EFB\u52A1","yeaft.featureDetail.related.title":"\u5173\u8054\u4EFB\u52A1","yeaft.featureDetail.related.unlink":"\u53D6\u6D88\u5173\u8054","yeaft.featureDetail.members.aria":"\u4EFB\u52A1\u6210\u5458","yeaft.featureDetail.members.title":"\u6210\u5458","yeaft.featureDetail.members.abort":"\u4E2D\u6B62","yeaft.featureDetail.members.kick":"\u8E22\u51FA","yeaft.model":"\u6A21\u578B","yeaft.placeholder":"\u95EE\u6211\u4EFB\u4F55\u95EE\u9898...","yeaft.inbox":"\u6536\u4EF6\u7BB1","yeaft.inbox.tooltip":"\u4F60\u7684\u9ED8\u8BA4\u5BF9\u8BDD\u7EBF\u7A0B \u2014\u2014 \u4E0E Yeaft \u7684\u4E00\u5BF9\u4E00\u804A\u5929\u3002\u53EF\u4EE5\u4E3A\u5177\u4F53\u8BDD\u9898\u6216\u4EFB\u52A1\u521B\u5EFA\u65B0\u7EBF\u7A0B\u3002","yeaft.sidebar.activeThreads":"\u6D3B\u8DC3","yeaft.sidebar.idleThreads":"\u9759\u9ED8","yeaft.sidebar.archivedThreads":"\u5DF2\u5F52\u6863","yeaft.sidebar.tasks":"\u4EFB\u52A1","yeaft.sidebar.emptyActive":"\u6682\u65E0\u6D3B\u8DC3 thread","yeaft.sidebar.emptyIdle":"\u6682\u65E0\u9759\u9ED8 thread","yeaft.sidebar.emptyArchived":"\u6682\u65E0\u5F52\u6863 thread","yeaft.sidebar.emptyTasks":"\u65E0\u5339\u914D\u4EFB\u52A1","yeaft.sidebar.results":"\u641C\u7D22\u7ED3\u679C","yeaft.sidebar.resultsThreads":"Threads","yeaft.sidebar.kindThread":"thread","yeaft.sidebar.cancel":"\u53D6\u6D88","yeaft.sidebar.mergeInto":"\u5408\u5E76\u5230\u2026","yeaft.sidebar.mergeNoCandidates":"\u6CA1\u6709\u53EF\u5408\u5E76\u7684\u5176\u4ED6\u7EBF\u7A0B","yeaft.sidebar.mergeConfirmTitle":"\u5408\u5E76\u8FD9\u4E2A\u7EBF\u7A0B\uFF1F","yeaft.sidebar.mergeIrreversible":"\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\uFF0C\u6E90\u7EBF\u7A0B\u5C06\u88AB\u5F52\u6863\uFF0C\u5176\u6D88\u606F\u4F1A\u88AB\u79FB\u52A8\u5230\u76EE\u6807\u7EBF\u7A0B\u3002","yeaft.sidebar.mergeConfirm":"\u5408\u5E76","yeaft.settings.sidebarV2":"\u5B9E\u9A8C\u529F\u80FD\uFF1A\u4FA7\u8FB9\u680F V2","yeaft.settings.sidebarV2Hint":"Thread \u5217\u8868 + \u4EFB\u52A1\u6811\uFF08\u9884\u89C8\uFF09\u3002","yeaft.clearConfirm":"\u6E05\u7A7A\u6240\u6709\u6D88\u606F\uFF1F","yeaft.mode":"\u6A21\u5F0F","yeaft.agent":"\u667A\u80FD\u4F53","yeaft.connecting":"\u8FDE\u63A5\u4E2D...","yeaft.ready":"\u5C31\u7EEA","yeaft.tools":"\u4E2A\u5DE5\u5177","yeaft.skills":"\u4E2A\u6280\u80FD","yeaft.mcp":"\u4E2A MCP","yeaft.showSidebar":"\u663E\u793A\u4FA7\u680F","yeaft.hideSidebar":"\u9690\u85CF\u4FA7\u680F","yeaft.debug":"\u8C03\u8BD5","yeaft.debugClose":"\u5173\u95ED\u8C03\u8BD5\u9762\u677F","yeaft.debugTurns":"\u8F6E","yeaft.debugTabToolStats":"\u5DE5\u5177\u7EDF\u8BA1","yeaft.debugTabDream":"Dream","yeaft.debugTabRequestLog":"\u8BF7\u6C42\u65E5\u5FD7","yeaft.debugHistoryLoad":"\u52A0\u8F7D\u8BF7\u6C42\u5386\u53F2","yeaft.debugHistoryLoading":"\u52A0\u8F7D\u4E2D...","yeaft.debugHistoryLoaded":"\u5DF2\u52A0\u8F7D {count} \u6761","yeaft.debugHistoryUnavailable":"\u8C03\u8BD5\u8F68\u8FF9\u8BF7\u6C42\u8D85\u65F6\u3002Agent \u53EF\u80FD\u79BB\u7EBF\uFF0C\u6216\u54CD\u5E94\u5DF2\u88AB\u4E22\u5F03\uFF0C\u8BF7\u91CD\u8BD5\u3002","yeaft.debugHistoryTruncated":"\u8BE5\u8F68\u8FF9\u8FC7\u5927\uFF0C\u65E0\u6CD5\u5728\u4E00\u6B21\u54CD\u5E94\u4E2D\u5B8C\u6574\u4F20\u8F93\u3002\u6B64\u5904\u663E\u793A\u5927\u5B57\u6BB5\u9884\u89C8\uFF0C\u5B8C\u6574\u8F68\u8FF9\u4ECD\u4FDD\u7559\u5728 Agent\u3002","yeaft.debugSearchPlaceholder":"\u6B63\u5219\u641C\u7D22\u8BF7\u6C42\u65E5\u5FD7","yeaft.debugSearchHint":"\u9ED8\u8BA4\u663E\u793A\u5168\u5C40\u6700\u8FD1 10 \u6761\uFF1B\u641C\u7D22\u4F1A\u8DE8 Session \u5339\u914D\u8BF7\u6C42\u6458\u8981\u3002","yeaft.debugTurnAction":"\u67E5\u770B\u8BE5\u8F6E\u5BF9\u8BDD\u7684\u8C03\u8BD5\u8F68\u8FF9","yeaft.debugTurnContext":"\u8C03\u8BD5\u8F68\u8FF9","yeaft.debugPanelEmpty":"\u60AC\u505C\u5728 AI \u56DE\u590D\u4E0A\uFF0C\u70B9\u51FB\u8C03\u8BD5\u56FE\u6807\u5373\u53EF\u67E5\u770B\u8BE5\u8F6E\u5BF9\u8BDD\u7684\u8C03\u8BD5\u8F68\u8FF9\u3002","yeaft.dreamDebug.title":"Dream \u751F\u547D\u5468\u671F","yeaft.dreamDebug.trigger":"\u89E6\u53D1","yeaft.dreamDebug.status":"\u72B6\u6001","yeaft.dreamDebug.started":"\u5F00\u59CB","yeaft.dreamDebug.finished":"\u7ED3\u675F","yeaft.dreamDebug.time":"\u65F6\u95F4","yeaft.dreamDebug.phase":"\u9636\u6BB5","yeaft.dreamDebug.call":"\u8C03\u7528","yeaft.dreamDebug.location":"\u751F\u6210\u4F4D\u7F6E","yeaft.dreamDebug.result":"\u7ED3\u679C","yeaft.dreamDebug.noLatest":"\u8FD9\u4E2A\u4F1A\u8BDD\u8FD8\u6CA1\u6709\u8BB0\u5F55\u5230 Dream \u68C0\u67E5\u3002","yeaft.dreamDebug.noEvents":"\u8FD9\u4E2A\u4F1A\u8BDD\u8FD8\u6CA1\u6709 Dream \u4E8B\u4EF6\u3002","yeaft.dreamDebug.outputTitle":"\u672C session \u5DF2\u52A0\u8F7D\u7684 Dream \u8F93\u51FA","yeaft.dreamDebug.scope":"Scope","yeaft.dreamDebug.lastDream":"\u4E0A\u6B21 Dream","yeaft.dreamDebug.messagesCovered":"\u5DF2\u8986\u76D6\u6D88\u606F\u6570","yeaft.dreamDebug.noOutput":"\u8FD9\u4E2A session \u8FD8\u6CA1\u6709\u5199\u5165 Dream \u8F93\u51FA\u3002","yeaft.dreamDebug.promptLoadTitle":"\u5DF2\u52A0\u8F7D\u8FDB system prompt \u7684 Dream \u8BB0\u5FC6","yeaft.dreamDebug.loadedInto":"\u52A0\u8F7D\u4F4D\u7F6E","yeaft.dreamDebug.vp":"VP","yeaft.dreamDebug.summaryToPrompt":"summary.md -> system prompt","yeaft.dreamDebug.itemList":"Dream \u8FD0\u884C\u548C Scope","yeaft.dreamDebug.searchPlaceholder":"\u6309\u6807\u9898\u3001ID \u6216\u6458\u8981\u641C\u7D22 Dream Session...","yeaft.dreamDebug.noSearchResults":"\u6CA1\u6709\u5339\u914D\u7684 Dream Session\u3002","yeaft.dreamDebug.noSummary":"\u6682\u65E0\u6458\u8981","yeaft.dreamDebug.segments":"\u6BB5","yeaft.dreamDebug.lastError":"\u6700\u8FD1\u9519\u8BEF","yeaft.dreamDebug.overview":"\u6982\u89C8","yeaft.dreamDebug.sessionId":"Session ID","yeaft.dreamDebug.loadedAt":"\u52A0\u8F7D\u65F6\u95F4","yeaft.dreamDebug.layers":"\u5C42\u7EA7","yeaft.dreamDebug.summaryLayer":"Resident summary","yeaft.dreamDebug.noPromptLoad":"\u8FD9\u4E2A scope \u6682\u65E0 prompt-load \u8BB0\u5F55\u3002","yeaft.dreamDebug.segmentTitle":"Segments","yeaft.dreamDebug.sourceMessages":"\u6765\u6E90\u6D88\u606F","yeaft.dreamDebug.createdAt":"\u521B\u5EFA\u65F6\u95F4","yeaft.dreamDebug.updatedAt":"\u66F4\u65B0\u65F6\u95F4","yeaft.dreamDebug.noSegments":"\u8FD9\u4E2A scope \u6682\u65E0 memory segments\u3002","yeaft.dreamDebug.requestResponse":"Request / Response","yeaft.dreamDebug.noRequestResponse":"\u8FD9\u4E2A scope \u8FD8\u6CA1\u6709\u6301\u4E45\u5316\u7684 Dream request/response \u65E5\u5FD7\u3002","yeaft.dreamDebug.empty":"\u6682\u65E0 Dream debug \u6570\u636E\u3002","yeaft.debugGroupFollowMain":"\u8DDF\u968F\u4E3B\u9762\u677F","yeaft.debugGroupAll":"\u5168\u90E8\u4F1A\u8BDD","yeaft.debugAssistantResponse":"Assistant \u56DE\u590D","yeaft.debugViewAssistantResponse":"\u67E5\u770B\u56DE\u590D","yeaft.debugLatestRequestBody":"\u6700\u8FD1\u53EF\u7528\u8BF7\u6C42\u4F53","yeaft.debugLatestSystemPrompt":"\u6700\u8FD1\u53EF\u7528\u7CFB\u7EDF\u63D0\u793A","yeaft.debugRequestBodyUnavailable":"\u6B64 Turn \u6682\u65E0\u53EF\u7528\u8BF7\u6C42\u4F53\u3002","yeaft.debugSystemPromptUnavailable":"\u6B64 Turn \u6682\u65E0\u53EF\u7528\u7CFB\u7EDF\u63D0\u793A\u3002","yeaft.debugInputSystemShort":"\u7CFB\u7EDF","yeaft.debugInputHistoryShort":"\u5386\u53F2","yeaft.debugInputToolsShort":"\u5DE5\u5177\u5B9A\u4E49","yeaft.debugInputCurrentShort":"\u5F53\u524D","yeaft.debugInputTokenBreakdown":"Provider \u8F93\u5165 {total}\uFF1A\u7CFB\u7EDF\u63D0\u793A {system}\u3001\u5386\u53F2\u6D88\u606F {history}\u3001\u5DE5\u5177\u5B9A\u4E49 {tools}\u3001\u5F53\u524D Turn {current}\uFF08\u4F30\u7B97\u62C6\u5206\uFF09","yeaft.debugToolInput":"\u8F93\u5165","yeaft.debugToolResult":"\u7ED3\u679C","yeaft.debugToolRunning":"\u6267\u884C\u4E2D","yeaft.debugToolRunningNoResult":"\u6267\u884C\u4E2D\uFF0C\u6682\u65E0\u7ED3\u679C","yeaft.debugShowDetails":"\u5C55\u5F00","yeaft.debugHideDetails":"\u6536\u8D77","yeaft.debugTurnStartedAt":"\u56DE\u5408\u5F00\u59CB\u65F6\u95F4","yeaft.debugRequestAt":"\u8BF7\u6C42\u65F6\u95F4","yeaft.debugRequestAtDerived":"\u7531\u56DE\u5408\u5F00\u59CB\u65F6\u95F4\u63A8\u7B97\uFF08\u65E7 loop\uFF09","yeaft.turn":"\u7B2C {n} \u8F6E","yeaft.systemPrompt":"\u7CFB\u7EDF\u63D0\u793A","yeaft.messagesLabel":"\u6D88\u606F","yeaft.response":"\u56DE\u590D","yeaft.toolCalls":"\u5DE5\u5177\u8C03\u7528","yeaft.functionCalls":"\u51FD\u6570\u8C03\u7528","yeaft.request":"\u8BF7\u6C42","yeaft.pending":"(\u7B49\u5F85\u4E2D)","yeaft.inputTokens":"\u8F93\u5165","yeaft.outputTokens":"\u8F93\u51FA","yeaft.duration":"\u8017\u65F6","yeaft.noDebugData":"\u6682\u65E0\u8C03\u8BD5\u6570\u636E","yeaft.showDebug":"\u663E\u793A\u8C03\u8BD5\u9762\u677F","yeaft.hideDebug":"\u9690\u85CF\u8C03\u8BD5\u9762\u677F","yeaft.reloadPage":"\u5237\u65B0\u9875\u9762","yeaft.reloadMessages":"\u91CD\u65B0\u52A0\u8F7D\u6D88\u606F","sidebar.sessions.syncing":"\u6B63\u5728\u540C\u6B65\u6700\u65B0\u6D88\u606F","yeaft.historySearch.label":"\u641C\u7D22 Session \u5386\u53F2\u6D88\u606F","yeaft.historySearch.button":"\u641C\u7D22\u6D88\u606F","yeaft.historySearch.placeholder":"\u641C\u7D22\u5F53\u524D Session \u7684\u6D88\u606F","yeaft.historySearch.searching":"\u6B63\u5728\u641C\u7D22\u2026","yeaft.historySearch.minChars":"\u81F3\u5C11\u8F93\u5165 2 \u4E2A\u5B57\u7B26","yeaft.historySearch.empty":"\u6CA1\u6709\u5339\u914D\u7684\u6D88\u606F","yeaft.historySearch.error":"\u641C\u7D22\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5","yeaft.historySearch.unsupported":"\u8BF7\u5347\u7EA7\u5F53\u524D Agent \u540E\u518D\u641C\u7D22 Session \u5386\u53F2\u6D88\u606F","yeaft.historySearch.more":"\u52A0\u8F7D\u66F4\u591A\u7ED3\u679C","yeaft.historySearch.you":"\u4F60","yeaft.historySearch.assistant":"\u52A9\u624B","yeaft.outline.label":"\u5386\u53F2\u6D88\u606F","yeaft.outline.sender":"\u53D1\u9001\u8005","yeaft.outline.allSenders":"\u5168\u90E8\u53D1\u9001\u8005","yeaft.outline.title":"\u5386\u53F2\u6D88\u606F","yeaft.outline.placeholder":"\u641C\u7D22\u5F53\u524D\u5BF9\u8BDD","yeaft.outline.searching":"\u6B63\u5728\u641C\u7D22\u2026","yeaft.outline.loading":"\u6B63\u5728\u52A0\u8F7D\u2026","yeaft.outline.older":"\u52A0\u8F7D\u66F4\u65E9\u6D88\u606F","yeaft.outline.moreMatches":"\u52A0\u8F7D\u66F4\u591A\u5339\u914D\u9879","yeaft.outline.minChars":"\u81F3\u5C11\u8F93\u5165 2 \u4E2A\u5B57\u7B26","yeaft.outline.empty":"\u6682\u65E0\u6D88\u606F","yeaft.outline.noMatches":"\u6CA1\u6709\u5339\u914D\u7684\u6D88\u606F","yeaft.outline.error":"\u5927\u7EB2\u52A0\u8F7D\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5","yeaft.outline.unsupported":"\u8BF7\u5347\u7EA7\u5F53\u524D Agent \u540E\u518D\u4F7F\u7528\u5BF9\u8BDD\u5927\u7EB2","yeaft.outline.you":"\u4F60","yeaft.outline.assistant":"\u52A9\u624B","yeaft.outline.nonText":"\u975E\u6587\u672C\u56DE\u590D","yeaft.switchModel":"\u5207\u6362\u6A21\u578B","yeaft.modelMenu.title":"\u6A21\u578B\u548C LLM \u8BBE\u7F6E","yeaft.modelMenu.label":"\u6A21\u578B","yeaft.modelMenu.effort":"\u63A8\u7406\u5F3A\u5EA6","yeaft.modelMenu.effort.openaiReasoning":"\u63A8\u7406\u5F3A\u5EA6","yeaft.modelMenu.effort.anthropicBudget":"\u601D\u8003\u9884\u7B97","yeaft.modelMenu.effort.anthropicAdaptive":"\u81EA\u9002\u5E94\u601D\u8003\u5F3A\u5EA6","yeaft.modelMenu.effort.minimal":"\u6700\u5C0F","yeaft.modelMenu.effort.low":"\u4F4E","yeaft.modelMenu.effort.medium":"\u4E2D","yeaft.modelMenu.effort.high":"\u9AD8","yeaft.modelMenu.effort.xhigh":"\u8D85\u9AD8","yeaft.modelMenu.effort.max":"\u6700\u9AD8","yeaft.modelMenu.effort.ultra":"\u6781\u81F4","yeaft.modelMenu.noEffort":"\u5F53\u524D\u6A21\u578B\u6CA1\u6709\u53EF\u517C\u5BB9\u6620\u5C04\u7684\u63A8\u7406\u5F3A\u5EA6\u63A7\u5236\u3002","yeaft.modelMenu.configureHint":"Provider\u3001\u5BC6\u94A5\u3001\u6A21\u578B\u5217\u8868","yeaft.settings.title":"\u8BBE\u7F6E","yeaft.settings.tabs.vp":"VP \u5E93","yeaft.settings.tabs.search":"\u641C\u7D22","search.settings.backendTitle":"\u641C\u7D22\u540E\u7AEF","search.settings.backendDesc":"\u9009\u62E9 WebSearch \u5DE5\u5177\u9ED8\u8BA4\u4F7F\u7528\u7684\u540E\u7AEF\u3002\u4E3B\u540E\u7AEF\u5931\u8D25\u65F6,\u5F15\u64CE\u4F1A\u81EA\u52A8\u964D\u7EA7\u5230 HTML \u6293\u53D6\u3002","search.settings.backend.tavily":"Tavily","search.settings.backend.tavilyHint":"\u6258\u7BA1\u641C\u7D22 API\u3002\u514D\u8D39\u989D\u5EA6 1000 \u6B21/\u6708\u3002\u63A8\u8350\u3002","search.settings.backend.playwright":"Playwright \u670D\u52A1","search.settings.backend.playwrightHint":"\u81EA\u5EFA\u7684\u6D4F\u89C8\u5668\u5F0F\u641C\u7D22/\u6293\u53D6\u670D\u52A1,\u9002\u5408 IP \u4FE1\u8A89\u5DEE\u88AB bot \u68C0\u6D4B\u7684\u73AF\u5883\u3002\u5C1A\u672A\u4E0A\u7EBF\u3002","search.settings.comingSoon":"\u5373\u5C06\u63A8\u51FA","search.settings.tavilyKeyTitle":"Tavily API key","search.settings.tavilyKeyDesc":"\u4FDD\u5B58\u5728 agent \u7684 ~/.yeaft/config.json \u4E2D\u3002\u514D\u8D39\u7533\u8BF7:","search.settings.tavilyKeyUnchanged":"\u4FDD\u6301\u4E0D\u53D8","search.settings.clearKey":"\u6E05\u9664","search.settings.usageTitle":"\u672C\u6708\u7528\u91CF","search.settings.usageRefresh":"\u5237\u65B0","search.settings.usageLoading":"\u52A0\u8F7D\u4E2D\u2026","search.settings.usagePlan":"\u8BA1\u5212","search.settings.usageUsed":"\u5DF2\u7528","search.settings.usagePaygo":"\u6309\u91CF\u4ED8\u8D39","search.settings.usageError":"\u52A0\u8F7D\u7528\u91CF\u5931\u8D25","search.settings.save":"\u4FDD\u5B58","search.settings.saving":"\u4FDD\u5B58\u4E2D\u2026","search.settings.saveSuccess":"\u5DF2\u4FDD\u5B58","search.settings.cancel":"\u91CD\u7F6E","yeaft.settings.yeaftTitle":"\u7EBF\u7A0B\u5E76\u53D1\u4E0E\u5F52\u6863","yeaft.settings.yeaftDesc":"\u8C03\u6574\u53EF\u540C\u65F6\u8FD0\u884C\u7684\u7EBF\u7A0B\u6570\u91CF\uFF0C\u4EE5\u53CA\u95F2\u7F6E\u7EBF\u7A0B\u7684\u81EA\u52A8\u5F52\u6863\u65F6\u957F\u3002","yeaft.settings.maxConcurrentLabel":"\u6700\u5927\u5E76\u53D1\u7EBF\u7A0B\u6570","yeaft.settings.maxConcurrentHint":"\u540C\u65F6\u5728\u7EBF\u7684\u7EBF\u7A0B\u603B\u6570\u4E0A\u9650\uFF08\u542B\u59CB\u7EC8\u5B58\u5728\u7684 main \u4E3B\u7EBF\u7A0B\uFF09\u3002\u8D85\u8FC7\u6B64\u4E0A\u9650\u7684\u65B0\u7EBF\u7A0B\u5C06\u88AB\u62D2\u7EDD\uFF0C\u76F4\u81F3\u5DF2\u6709\u7EBF\u7A0B\u88AB\u5F52\u6863\u6216\u7EC8\u6B62\u3002\u8303\u56F4\uFF1A1-50\u3002","yeaft.settings.archiveIdleDaysLabel":"\u95F2\u7F6E\u591A\u4E45\u540E\u81EA\u52A8\u5F52\u6863\u7EBF\u7A0B\uFF08\u5929\uFF09","yeaft.settings.archiveIdleDaysHint":"\u65E0\u6D3B\u52A8\u8D85\u8FC7\u6B64\u5929\u6570\u7684\u7EBF\u7A0B\u5C06\u88AB\u5F52\u6863\u3002\u8303\u56F4\uFF1A1-3650\u3002","yeaft.settings.yeaftSaveBtn":"\u4FDD\u5B58","yeaft.settings.yeaftSaving":"\u4FDD\u5B58\u4E2D...","yeaft.settings.yeaftSaved":"\u5DF2\u4FDD\u5B58","yeaft.settings.yeaftLoading":"\u52A0\u8F7D\u4E2D...","yeaft.settings.yeaftLoadError":"\u52A0\u8F7D Yeaft \u8BBE\u7F6E\u5931\u8D25","yeaft.settings.yeaftSaveError":"\u4FDD\u5B58 Yeaft \u8BBE\u7F6E\u5931\u8D25","yeaft.settings.rangeErrorConcurrent":"\u5FC5\u987B\u5728 1 \u5230 50 \u4E4B\u95F4","yeaft.settings.rangeErrorArchive":"\u5FC5\u987B\u5728 1 \u5230 3650 \u4E4B\u95F4","chat.session.creating":"\u6B63\u5728\u521B\u5EFA\u4F1A\u8BDD...","chat.session.loadingHistory":"\u6B63\u5728\u52A0\u8F7D\u4F1A\u8BDD\u5386\u53F2...","yeaft.historyLoad.error":"\u4F1A\u8BDD\u5386\u53F2\u6682\u65F6\u65E0\u6CD5\u52A0\u8F7D\uFF0C\u6D88\u606F\u4ECD\u5B89\u5168\u4FDD\u5B58\u5728 Agent \u4E2D\u3002","yeaft.historyLoad.retry":"\u91CD\u65B0\u52A0\u8F7D","yeaft.sessionInventory.error":"\u6682\u65F6\u65E0\u6CD5\u52A0\u8F7D Session\uFF0C\u4F1A\u8BDD\u4ECD\u5B89\u5168\u4FDD\u5B58\u5728 Agent \u4E2D\u3002","yeaft.sessionInventory.retry":"\u91CD\u65B0\u52A0\u8F7D Session","chat.session.closed":"\u4F1A\u8BDD\u5DF2\u5173\u95ED","chat.session.agentOffline":"Agent \u5DF2\u79BB\u7EBF\uFF0C\u8BE5\u4F1A\u8BDD\u5C06\u5728 Agent \u91CD\u65B0\u4E0A\u7EBF\u540E\u6062\u590D\u3002","chat.execution.cancelled":"\u6267\u884C\u5DF2\u53D6\u6D88","chat.sidebar.expand":"\u5C55\u5F00\u83DC\u5355","chat.sidebar.collapse":"\u6536\u8D77\u4FA7\u8FB9\u680F","chat.sidebar.workbench":"\u5DE5\u5177\u9762\u677F","chat.sidebar.newConv":"\u4F1A\u8BDD","chat.sidebar.recentChats":"\u6700\u8FD1\u4F1A\u8BDD","chat.sidebar.resumeConv":"\u6062\u590D\u4F1A\u8BDD","chat.sidebar.lightMode":"\u6D45\u8272\u6A21\u5F0F","chat.sidebar.darkMode":"\u6DF1\u8272\u6A21\u5F0F","chat.sidebar.settings":"\u8BBE\u7F6E","chat.sidebar.emptyHint":"\u70B9\u51FB\u4E0A\u65B9\u6309\u94AE\u521B\u5EFA\u65B0\u4F1A\u8BDD","chat.sidebar.closeConv":"\u5173\u95ED\u4F1A\u8BDD","chat.sidebar.renameConv":"\u91CD\u547D\u540D","chat.sidebar.pin":"\u7F6E\u9876","chat.sidebar.unpin":"\u53D6\u6D88\u7F6E\u9876","chat.connection.connecting":"\u8FDE\u63A5\u4E2D...","chat.connection.reconnecting":"\u91CD\u8FDE\u4E2D ({current}/{max})...","chat.connection.updating":"\u670D\u52A1\u6B63\u5728\u66F4\u65B0\uFF0C\u8BF7\u7A0D\u5019...","chat.connection.disconnected":"\u8FDE\u63A5\u65AD\u5F00","chat.connection.reconnect":"\u91CD\u8FDE","chat.connection.reconnectFailed":"\u8FDE\u63A5\u65AD\u5F00\uFF0C\u8BF7\u70B9\u51FB\u91CD\u8FDE\u6309\u94AE\u91CD\u8BD5\u3002","chat.time.justNow":"\u521A\u521A","chat.time.minutesAgo":"{count}\u5206\u949F\u524D","chat.time.daysAgo":"{count}\u5929\u524D","chat.time.today":"\u4ECA\u5929","chat.time.yesterday":"\u6628\u5929","chat.delete.confirm":"\u786E\u5B9A\u8981\u5173\u95ED\u8FD9\u4E2A\u4F1A\u8BDD\u5417\uFF1F\u8FD9\u5C06\u7EC8\u6B62\u5BF9\u5E94\u7684 Claude \u8FDB\u7A0B\u3002","chat.delete.enterWorkDir":"\u8BF7\u8F93\u5165\u5DE5\u4F5C\u76EE\u5F55\u8DEF\u5F84","modal.newConv.workDir":"\u5DE5\u4F5C\u76EE\u5F55","modal.newConv.inputOrSelect":"\u8F93\u5165\u6216\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","modal.newConv.browse":"\u6D4F\u89C8\u76EE\u5F55","modal.newConv.noWorkDirs":"\u6682\u65E0\u5DE5\u4F5C\u76EE\u5F55","modal.newConv.selectAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A\u5728\u7EBF\u7684 Agent","modal.newConv.create":"\u521B\u5EFA\u4F1A\u8BDD","modal.newConv.folderLabel":"\u{1F4C1} \u5DE5\u4F5C\u76EE\u5F55","modal.newConv.provider":"\u63D0\u4F9B\u65B9","modal.newConv.model":"\u6A21\u578B","provider.claudeCode":"Claude Code","provider.copilot":"Copilot","modal.resume.workDir":"\u5DE5\u4F5C\u76EE\u5F55","modal.resume.inputOrSelect":"\u8F93\u5165\u6216\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","modal.resume.browse":"\u6D4F\u89C8\u76EE\u5F55","modal.resume.tabFolders":"\u5DE5\u4F5C\u76EE\u5F55","modal.resume.tabSessions":"\u5386\u53F2\u4F1A\u8BDD","modal.resume.noWorkDirs":"\u6682\u65E0\u5DE5\u4F5C\u76EE\u5F55","modal.resume.selectWorkDir":"\u8BF7\u5148\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","modal.resume.noSessions":"\u8BE5\u76EE\u5F55\u4E0B\u6CA1\u6709\u5386\u53F2\u4F1A\u8BDD","modal.resume.untitled":"\u672A\u547D\u540D\u4F1A\u8BDD","modal.resume.folderLabel":"\u{1F4C1} \u5DE5\u4F5C\u76EE\u5F55","modal.resume.sessionLabel":"\u{1F4AC} \u5386\u53F2\u4F1A\u8BDD","modal.resume.selectAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A\u5728\u7EBF\u7684 Agent","modal.folderPicker.title":"\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","modal.folderPicker.root":"\u6839\u76EE\u5F55 / \u9A71\u52A8\u5668","modal.folderPicker.path":"\u76EE\u5F55\u8DEF\u5F84","modal.folderPicker.go":"\u524D\u5F80","modal.folderPicker.ancestors":"\u4E0A\u7EA7\u76EE\u5F55\u5BFC\u822A","modal.folderPicker.directories":"\u5B50\u76EE\u5F55","modal.folderPicker.navigationHint":"\u70B9\u51FB\u6587\u4EF6\u5939\u8FDB\u5165\uFF0C\u518D\u9009\u62E9\u5F53\u524D\u76EE\u5F55\u3002","modal.folderPicker.selectCurrent":"\u9009\u62E9\u5F53\u524D\u76EE\u5F55","modal.folderPicker.loadFailed":"\u65E0\u6CD5\u6253\u5F00\u6B64\u76EE\u5F55\u3002\u8BF7\u68C0\u67E5\u8DEF\u5F84\u548C\u6743\u9650\uFF0C\u6216\u91CD\u8BD5\u3002","modal.folderPicker.unavailable":"Agent \u4E0D\u53EF\u7528\uFF0C\u8BF7\u8FDE\u63A5\u540E\u91CD\u8BD5\u3002","modal.folderPicker.timeout":"\u76EE\u5F55\u8BF7\u6C42\u8D85\u65F6\uFF0C\u8BF7\u91CD\u8BD5\u3002","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.setupTitle":"\u8FDE\u63A5\u4F60\u7684 Agent","welcome.setupDesc":"\u5728\u4F60\u7684\u7535\u8111\u4E0A\u8FD0\u884C\u5B89\u88C5\u547D\u4EE4\uFF0C\u5373\u53EF\u5F00\u59CB\u5BF9\u8BDD\u3002\u4EE3\u7801\u548C\u5DE5\u5177\u59CB\u7EC8\u7559\u5728\u672C\u673A\u3002","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","installer.platformLabel":"\u76EE\u6807\u64CD\u4F5C\u7CFB\u7EDF","installer.posix":"Linux / macOS","installer.powershell":"Windows PowerShell","installer.copyCommand":"\u590D\u5236\u5B89\u88C5\u547D\u4EE4","installer.instruction":"\u5C06\u547D\u4EE4\u7C98\u8D34\u5230\u8FD0\u884C Agent \u7684\u7535\u8111\u7EC8\u7AEF\u4E2D\u6267\u884C\u3002","installer.viewCommand":"\u67E5\u770B\u547D\u4EE4","installer.copying":"\u590D\u5236\u4E2D\u2026","installer.copyFailed":"\u590D\u5236\u5931\u8D25","installer.secretLoading":"\u6B63\u5728\u51C6\u5907 Agent secret\u2026","installer.secretError":"\u65E0\u6CD5\u51C6\u5907 Agent secret\u3002","installer.secretRequired":"\u8BF7\u5148\u751F\u6210 Agent secret\uFF0C\u518D\u590D\u5236\u6B64\u547D\u4EE4\u3002","installer.commandUnavailable":"\u751F\u6210 Agent secret \u540E\u624D\u4F1A\u63D0\u4F9B\u547D\u4EE4\u3002","installer.copyError":"\u590D\u5236\u5931\u8D25\uFF0C\u8BF7\u624B\u52A8\u9009\u62E9\u5E76\u590D\u5236\u547D\u4EE4\u3002","installer.copySuccess":"\u547D\u4EE4\u5DF2\u590D\u5236\u3002","installer.openSecurity":"\u6253\u5F00\u5B89\u5168\u8BBE\u7F6E","installer.note":"\u81EA\u52A8\u5B89\u88C5 Node.js \u548C\u79C1\u6709 Agent \u5B9E\u4F8B\u3002\u4EC5\u8FD0\u884C\u53EF\u4FE1\u670D\u52A1\u5668\u7684\u547D\u4EE4\uFF1B\u547D\u4EE4\u542B\u63A5\u5165\u5BC6\u94A5\uFF0C\u8BF7\u52FF\u5206\u4EAB\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.navigation":"\u5BF9\u8BDD\u5BFC\u822A","message.currentTurn":"\u2191 \u672C\u8F6E","message.scrollToLatest":"\u2193 \u6700\u65B0","message.backToCurrentTurn":"\u56DE\u5230\u672C\u8F6E\u95EE\u9898","message.showResponses":"\u5C55\u5F00 {count} \u6761\u56DE\u590D","message.hideResponses":"\u6298\u53E0\u56DE\u590D","message.assistant":"\u52A9\u624B","chat.waiting.disconnected":"\u8FDE\u63A5\u5DF2\u65AD\u5F00","chat.connecting":"\u6B63\u5728\u8FDE\u63A5 provider \u4F1A\u8BDD...","chat.waiting.compacting":"\u6B63\u5728\u538B\u7F29\u4E0A\u4E0B\u6587...","chat.waiting.agentOffline":"Agent \u5DF2\u79BB\u7EBF","chat.waiting.sessionLost":"Session \u5DF2\u4E22\u5931\uFF0C\u5DF2\u5237\u65B0\uFF0C\u7B49\u5F85\u6700\u65B0\u4FE1\u606F...","chat.waiting.cliExited":"Claude \u8FDB\u7A0B\u5DF2\u9000\u51FA\uFF0C\u5DF2\u5237\u65B0\uFF0C\u7B49\u5F85\u6700\u65B0\u4FE1\u606F...","chat.waiting.refresh":"\u5237\u65B0","chat.waiting.thinking":"AI \u6B63\u5728\u601D\u8003\u4E2D\uFF0C\u8BF7\u7A0D\u5019...","btw.hint":"esc \u9000\u51FA","btw.placeholder":"\u95EE\u4E2A\u987A\u4FBF\u7684\u95EE\u9898...","btw.close":"\u9000\u51FA BTW \u6A21\u5F0F","message.copyContent":"\u590D\u5236\u5185\u5BB9","message.copy":"\u590D\u5236\u5185\u5BB9","message.copied":"\u5DF2\u590D\u5236","message.copyCode":"\u590D\u5236\u4EE3\u7801","message.copyAll":"\u590D\u5236\u5168\u90E8","message.screenshot":"\u622A\u56FE","message.screenshotting":"\u6B63\u5728\u622A\u56FE...","message.exportMd":"\u5BFC\u51FA MD","message.askInput":"\u9700\u8981\u4F60\u7684\u8F93\u5165","message.askAnswered":"\u2713 \u5DF2\u56DE\u7B54","message.askCustom":"\u6216\u8F93\u5165\u81EA\u5B9A\u4E49\u56DE\u7B54...","message.askCustomPlaceholder":"\u6216\u8F93\u5165\u81EA\u5B9A\u4E49\u56DE\u7B54...","message.askSubmit":"\u63D0\u4EA4\u56DE\u7B54","message.askWaiting":"\u7B49\u5F85\u95EE\u9898\u52A0\u8F7D...","message.askSubmitting":"\u56DE\u7B54\u5DF2\u53D1\u9001\uFF0C\u7B49\u5F85 Agent \u786E\u8BA4\u2026","message.askUnconfirmed":"\u5C1A\u672A\u6536\u5230\u786E\u8BA4\uFF0C\u8BF7\u68C0\u67E5\u8FDE\u63A5\u540E\u91CD\u53D1\u540C\u4E00\u56DE\u7B54\u3002","message.askRetry":"\u91CD\u53D1\u56DE\u7B54","message.askSendFailed":"\u56DE\u7B54\u672A\u53D1\u9001\uFF0C\u8BF7\u68C0\u67E5\u8FDE\u63A5\u540E\u91CD\u8BD5\u3002","message.askAgentUnavailable":"Agent \u6682\u4E0D\u53EF\u7528\uFF0C\u8BF7\u6062\u590D\u8FDE\u63A5\u540E\u91CD\u53D1\u56DE\u7B54\u3002","message.askIdentityMismatch":"\u6B64\u95EE\u9898\u4E0E\u5F53\u524D\u8BF7\u6C42\u4E0D\u4E00\u81F4\uFF0C\u8BF7\u8BA9\u89D2\u8272\u91CD\u65B0\u63D0\u95EE\u3002","message.askExpired":"\u6B64\u95EE\u9898\u5DF2\u5931\u6548\uFF0C\u8BF7\u8BA9\u89D2\u8272\u91CD\u65B0\u63D0\u95EE","message.openInEditor":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00","message.resultDone":"\u5B8C\u6210","message.done":"\u5B8C\u6210","message.resultRead":"\u8BFB\u53D6 {file}","message.readFile":"\u8BFB\u53D6 {name}","message.file":"\u6587\u4EF6","message.attachImages":"{count} \u5F20\u56FE\u7247","message.imageCount":"{count} \u5F20\u56FE\u7247","message.imagePreview":"\u56FE\u7247\u9884\u89C8","message.zoomOut":"\u7F29\u5C0F\u56FE\u7247","message.zoomIn":"\u653E\u5927\u56FE\u7247","message.resetZoom":"\u91CD\u7F6E\u56FE\u7247\u7F29\u653E","message.previousImage":"\u4E0A\u4E00\u5F20\u56FE\u7247","message.nextImage":"\u4E0B\u4E00\u5F20\u56FE\u7247","message.imagePosition":"\u7B2C {current} \u5F20\uFF0C\u5171 {total} \u5F20","message.imageUnavailable":"\u56FE\u7247\u65E0\u6CD5\u52A0\u8F7D","message.attachFiles":"{count} \u4E2A\u6587\u4EF6","message.fileCount":"{count} \u4E2A\u6587\u4EF6","message.quote":"\u5F15\u7528","message.removeQuote":"\u5220\u9664\u5F15\u7528","message.replyingTo":"\u6B63\u5728\u56DE\u590D {author}","message.quotedFrom":"\u5F15\u7528\u81EA {author}","message.editAsNew":"\u7F16\u8F91","message.you":"\u4F60","input.upload":"\u4E0A\u4F20\u6587\u4EF6","input.placeholder":"\u8F93\u5165\u6D88\u606F...","input.send":"\u53D1\u9001","input.stopExecution":"\u505C\u6B62\u6267\u884C","chatInput.upload":"\u4E0A\u4F20\u6587\u4EF6","chatInput.uploading":"\u6B63\u5728\u4E0A\u4F20\u2026","chatInput.uploadFailed":"\u4E0A\u4F20\u5931\u8D25","chatInput.retryUpload":"\u91CD\u8BD5","chatInput.removeAttachment":"\u79FB\u9664\u9644\u4EF6","chatInput.placeholder":"\u8F93\u5165\u6D88\u606F...","chatInput.send":"\u53D1\u9001","chatInput.stop":"\u505C\u6B62\u6267\u884C","tools.thinking":"\u601D\u8003\u4E2D...","tools.read":"\u6B63\u5728\u8BFB\u53D6\u6587\u4EF6","tools.write":"\u6B63\u5728\u5199\u5165\u6587\u4EF6","tools.edit":"\u6B63\u5728\u7F16\u8F91\u6587\u4EF6","tools.bash":"\u6B63\u5728\u6267\u884C\u547D\u4EE4","tools.glob":"\u6B63\u5728\u641C\u7D22\u6587\u4EF6","tools.grep":"\u6B63\u5728\u641C\u7D22\u5185\u5BB9","tools.task":"\u6B63\u5728\u6267\u884C\u4EFB\u52A1","tools.webFetch":"\u6B63\u5728\u83B7\u53D6\u7F51\u9875","tools.webSearch":"\u6B63\u5728\u641C\u7D22\u7F51\u7EDC","tools.todoWrite":"\u6B63\u5728\u66F4\u65B0\u4EFB\u52A1","tools.executing":"\u6B63\u5728\u6267\u884C {name}","status.thinking":"\u601D\u8003\u4E2D...","status.reading":"\u6B63\u5728\u8BFB\u53D6\u6587\u4EF6","status.writing":"\u6B63\u5728\u5199\u5165\u6587\u4EF6","status.editing":"\u6B63\u5728\u7F16\u8F91\u6587\u4EF6","status.executing":"\u6B63\u5728\u6267\u884C\u547D\u4EE4","status.searchingFiles":"\u6B63\u5728\u641C\u7D22\u6587\u4EF6","status.searchingContent":"\u6B63\u5728\u641C\u7D22\u5185\u5BB9","status.executingTask":"\u6B63\u5728\u6267\u884C\u4EFB\u52A1","status.fetching":"\u6B63\u5728\u83B7\u53D6\u7F51\u9875","status.searching":"\u6B63\u5728\u641C\u7D22\u7F51\u7EDC","status.updatingTasks":"\u6B63\u5728\u66F4\u65B0\u4EFB\u52A1","status.executingTool":"\u6B63\u5728\u6267\u884C {name}","header.compacting":"\u6B63\u5728\u538B\u7F29\u4E0A\u4E0B\u6587...","header.compacted":"\u4E0A\u4E0B\u6587\u538B\u7F29\u5B8C\u6210","chatHeader.newConv":"\u4F1A\u8BDD","chatHeader.compacting":"\u6B63\u5728\u538B\u7F29\u4E0A\u4E0B\u6587...","chatHeader.compactDone":"\u4E0A\u4E0B\u6587\u538B\u7F29\u5B8C\u6210","chatHeader.compact":"\u538B\u7F29\u4E0A\u4E0B\u6587","chatHeader.resume":"\u6062\u590D\u4F1A\u8BDD","chatHeader.refresh":"\u5237\u65B0\u6D88\u606F","chatHeader.reloadPage":"\u5237\u65B0\u9875\u9762","chatHeader.clear":"\u6E05\u7A7A\u6D88\u606F","chatHeader.clearing":"\u6B63\u5728\u6E05\u7A7A\u4E0A\u4E0B\u6587...","chatHeader.clearDone":"\u4E0A\u4E0B\u6587\u5DF2\u6E05\u7A7A","chatHeader.confirmClear":"\u786E\u5B9A\u8981\u6E05\u7A7A\u5F53\u524D\u4F1A\u8BDD\u7684\u6240\u6709\u6D88\u606F\u5417\uFF1F","chatHeader.mcpConfig":"MCP \u670D\u52A1\u5668\u914D\u7F6E","chatHeader.mcpNeedRestart":"\u66F4\u6539\u5C06\u5728\u91CD\u542F\u4F1A\u8BDD\u540E\u751F\u6548\u3002","chatHeader.expertPanel":"\u5E2E\u5E2E\u56E2","chatHeader.subAgentPanel":"\u5B50\u4EE3\u7406","settings.close":"\u5173\u95ED\u8BBE\u7F6E","settings.tabs.account":"\u8D26\u53F7","settings.tabs.security":"\u5B89\u5168","settings.tabs.general":"\u901A\u7528","settings.tabs.sandbox":"Sandbox","settings.tabs.invitations":"\u9080\u8BF7","auth.sessionExpired":"\u767B\u5F55\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55\u3002","settings.sandbox.description":"\u5728\u672C Server \u7BA1\u7406\u7684 Docker \u5BB9\u5668\u4E2D\u8FD0\u884C\u4E00\u4E2A\u6301\u4E45\u5316 Yeaft Agent\u3002","settings.sandbox.containerAgent":"Docker \u5316 Yeaft Agent","settings.sandbox.serverManaged":"Server \u53EA\u7BA1\u7406\u6B64\u5BB9\u5668\u7684\u542F\u52A8\u3001\u505C\u6B62\u548C\u5220\u9664\uFF1B\u5BB9\u5668\u5185 Agent \u4ECD\u4F7F\u7528\u666E\u901A Yeaft \u8FDE\u63A5\u3002","settings.sandbox.agentName":"Agent \u540D\u79F0","settings.sandbox.sizeLabel":"\u89C4\u683C","settings.sandbox.enable":"\u542F\u7528 Sandbox","settings.sandbox.creating":"\u6B63\u5728\u8BBE\u7F6E\u2026","settings.sandbox.start":"\u542F\u52A8","settings.sandbox.stop":"\u505C\u6B62","settings.sandbox.retry":"\u91CD\u8BD5","settings.sandbox.remove":"\u79FB\u9664","settings.sandbox.removeConfirm":"\u6C38\u4E45\u79FB\u9664\u6B64 Sandbox\uFF0C\u5E76\u5220\u9664 home \u548C workspace \u6570\u636E\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002","settings.sandbox.size.small":"\u5C0F\u578B","settings.sandbox.size.normal":"\u6807\u51C6","settings.sandbox.state.reserving":"\u6B63\u5728\u8BBE\u7F6E","settings.sandbox.state.provisioning":"\u6B63\u5728\u51C6\u5907 Sandbox","settings.sandbox.state.starting":"\u6B63\u5728\u542F\u52A8","settings.sandbox.state.waiting_for_agent":"\u6B63\u5728\u7B49\u5F85 Agent","settings.sandbox.state.stopping":"\u6B63\u5728\u505C\u6B62","settings.sandbox.state.removing":"\u6B63\u5728\u79FB\u9664","settings.sandbox.state.removed":"\u5DF2\u79FB\u9664","settings.sandbox.state.running":"\u8FD0\u884C\u4E2D","settings.sandbox.state.stopped":"\u5DF2\u505C\u6B62","settings.sandbox.state.failed":"\u5931\u8D25","settings.sandbox.state.remove_failed":"\u79FB\u9664\u5931\u8D25","settings.sandbox.state.recovery_required":"\u9700\u8981\u6062\u590D\u5904\u7406","settings.sandbox.stage.reserving_capacity":"\u6B63\u5728\u9884\u7559\u5BB9\u91CF","settings.sandbox.stage.starting":"\u6B63\u5728\u542F\u52A8 Sandbox","settings.sandbox.stage.stopping":"\u6B63\u5728\u505C\u6B62 Sandbox","settings.sandbox.stage.retrying":"\u6B63\u5728\u91CD\u8BD5\u64CD\u4F5C","settings.sandbox.stage.removing":"\u6B63\u5728\u79FB\u9664 Sandbox","settings.sandbox.stage.complete":"\u5DF2\u5B8C\u6210","settings.sandbox.stage.dispatching":"\u6B63\u5728\u5B89\u5168\u5206\u53D1","settings.sandbox.stage.capacity_rejected":"\u6B63\u5728\u7B49\u5F85\u5BB9\u91CF","settings.sandbox.unavailable.disabled":"\u6B64 Server \u5C1A\u672A\u542F\u7528 Sandbox\u3002\u5347\u7EA7\u672C\u673A Agent \u4E0D\u4F1A\u81EA\u52A8\u542F\u7528\uFF1B\u9700\u8981 Server \u7BA1\u7406\u5458\u5F00\u542F Docker \u7BA1\u7406\u3002","settings.sandbox.unavailable.dockerUnavailable":"Server \u65E0\u6CD5\u4F7F\u7528 Docker\uFF0C\u8BF7\u68C0\u67E5 Sandbox \u7684 Server \u90E8\u7F72\u914D\u7F6E\u3002","settings.sandbox.unavailable.notEntitled":"\u6B64\u8D26\u53F7\u6682\u4E0D\u53EF\u4F7F\u7528 Sandbox\u3002","settings.sandbox.unavailable.capacityUnavailable":"Sandbox \u6682\u65F6\u4E0D\u53EF\u7528\u3002","settings.sandbox.error.SANDBOX_LOAD_FAILED":"\u65E0\u6CD5\u52A0\u8F7D Sandbox \u72B6\u6001\u3002","settings.sandbox.retryLoad":"\u91CD\u8BD5","settings.sandbox.error.SANDBOX_CREATE_FAILED":"\u65E0\u6CD5\u521B\u5EFA Sandbox\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002","settings.sandbox.error.SANDBOX_ACTION_FAILED":"\u65E0\u6CD5\u5B89\u6392 Sandbox \u64CD\u4F5C\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002","settings.sandbox.error.SANDBOX_OPERATION_TIMEOUT":"\u64CD\u4F5C\u5DF2\u8D85\u65F6\uFF0C\u8BF7\u91CD\u8BD5\u6216\u79FB\u9664 Sandbox\u3002","settings.sandbox.error.SANDBOX_RUNTIME_FAILED":"Sandbox \u8FD0\u884C\u65F6\u62A5\u544A\u5931\u8D25\u3002","settings.sandbox.error.SANDBOX_CGROUP_SLICE_UNAVAILABLE":"\u65E0\u6CD5\u5728\u5BBF\u4E3B\u673A\u521D\u59CB\u5316\u5171\u4EAB\u8D44\u6E90 slice\uFF08\u9700\u8981 cgroup v2 \u4E0E root \u6743\u9650\uFF09\u3002\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\uFF0C\u6216\u79FB\u9664 SANDBOX_CGROUP_PARENT \u4EE5\u5173\u95ED\u8D44\u6E90\u4E0A\u9650\u3002","settings.account.username":"\u7528\u6237\u540D","settings.account.role":"\u89D2\u8272","settings.account.email":"\u90AE\u7BB1","settings.account.emailNotSet":"\u672A\u8BBE\u7F6E","settings.account.profileLoadFailed":"\u8D26\u53F7\u8D44\u6599\u52A0\u8F7D\u5931\u8D25","settings.account.logout":"\u9000\u51FA\u767B\u5F55","settings.account.roleAdmin":"\u7BA1\u7406\u5458","settings.account.rolePro":"Pro","settings.account.linkedAccounts":"\u5DF2\u5173\u8054\u8D26\u6237","settings.account.linkedDesc":"\u5173\u8054\u7B2C\u4E09\u65B9\u767B\u5F55\u540E\uFF0C\u4F7F\u7528\u4EFB\u610F\u4E00\u79CD\u65B9\u5F0F\u90FD\u80FD\u767B\u5F55\u6B64\u8D26\u53F7\u3002","settings.account.bind":"\u7ED1\u5B9A","settings.account.unbind":"\u89E3\u7ED1","settings.account.linked":"\u5DF2\u7ED1\u5B9A","settings.account.providerDisabled":"\u672A\u914D\u7F6E","settings.account.cantUnbindLast":"\u4E0D\u80FD\u89E3\u7ED1\u552F\u4E00\u7684\u767B\u5F55\u65B9\u5F0F","settings.account.unbindFailed":"\u89E3\u7ED1\u5931\u8D25\uFF1A{error}","settings.account.bindFailed":"\u7ED1\u5B9A\u5931\u8D25","settings.account.ssoBoundMsg":"\u5DF2\u6210\u529F\u7ED1\u5B9A {provider}\u3002","settings.account.ssoConflictMsg":"\u8BE5 {provider} \u8D26\u53F7\u5DF2\u88AB\u5176\u4ED6\u7528\u6237\u7ED1\u5B9A\u3002","settings.account.providerMicrosoft":"Microsoft","settings.account.providerGithub":"GitHub","settings.account.providerGoogle":"Google","settings.account.providerWechat":"\u5FAE\u4FE1","settings.account.providerAlipay":"\u652F\u4ED8\u5B9D","settings.security.agentKey":"Agent \u5BC6\u94A5","settings.security.agentKeyDesc":"\u7528\u4E8E Agent \u8FDE\u63A5\u8BA4\u8BC1\u7684\u5171\u4EAB\u5BC6\u94A5","settings.security.agentSetupCommands":"Agent \u63A5\u5165\u547D\u4EE4","settings.security.agentCmdInstall":"\u5B89\u88C5\u5E76\u8FDE\u63A5 Agent","settings.security.agentCmdService":"\u8FD0\u884C Agent server","settings.security.agentCmdContainer":"\u5728 Docker \u4E2D\u8FD0\u884C Agent","settings.security.agentCmdContainerDesc":"\u4E00\u6761\u547D\u4EE4\u5373\u53EF\u3002\u9996\u6B21\u8FD0\u884C\u4F1A\u81EA\u52A8\u521D\u59CB\u5316\u5171\u4EAB CPU/\u5185\u5B58\u9650\u5236\uFF08\u4F1A\u63D0\u793A\u8F93\u5165\u4E00\u6B21 sudo \u5BC6\u7801\uFF09\uFF1B\u4F20 --no-slice \u53EF\u4E0D\u542F\u7528\u8D44\u6E90\u4FDD\u62A4\u3002\u673A\u5668\u4E0A\u9700\u8981\u5DF2\u5B89\u88C5 Docker\u3002","settings.security.agentCmdNeedsSecret":"\u8BF7\u5148\u751F\u6210 Agent \u5BC6\u94A5\uFF0C\u4EE5\u521B\u5EFA\u5305\u542B server \u5730\u5740\u548C\u5BC6\u94A5\u7684\u547D\u4EE4\u3002","settings.security.agentCmdLlm":"Copilot \u624B\u52A8\u515C\u5E95","settings.security.agentCmdLlmDesc":"Agent \u8FDE\u63A5\u540E\uFF0C\u53EF\u5728 Agent \u8BBE\u7F6E\u4E2D\u914D\u7F6E\u53EF\u9009 LLM\u3002\u5B89\u88C5\u5668\u4E5F\u4F1A\u8F93\u51FA\u53EF\u5728\u7EC8\u7AEF\u4F7F\u7528\u7684\u7EDD\u5BF9\u8DEF\u5F84\u7BA1\u7406\u547D\u4EE4\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.currentValue":"\u5F53\u524D\uFF1A{value}","settings.general.workCenter":"\u5DE5\u4F5C\u4E2D\u5FC3\u5165\u53E3","settings.general.workCenterDesc":"\u5728\u4FA7\u680F\u9876\u680F\u663E\u793A\u5DE5\u4F5C\u4E2D\u5FC3\u5165\u53E3\uFF1B\u652F\u6301\u7684 Agent \u5728\u5DE5\u4F5C\u4E2D\u5FC3\u5185\u9009\u62E9\u3002","settings.general.workCenterOn":"\u5DF2\u5F00\u542F","settings.general.workCenterOff":"\u5DF2\u5173\u95ED","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":"\u5DF2\u5F00\u542F","settings.general.telemetryOff":"\u5DF2\u5173\u95ED","settings.general.telemetryLoading":"\u52A0\u8F7D\u4E2D\u2026","settings.general.telemetrySaving":"\u4FDD\u5B58\u4E2D\u2026","settings.general.telemetryUnavailable":"\u72B6\u6001\u4E0D\u53EF\u7528","settings.general.telemetryLoadFailed":"\u65E0\u6CD5\u52A0\u8F7D\u5DF2\u4FDD\u5B58\u7684\u9065\u6D4B\u8BBE\u7F6E\uFF0C\u8BF7\u91CD\u65B0\u6253\u5F00\u8BBE\u7F6E\u540E\u91CD\u8BD5\u3002","settings.general.telemetrySaveFailed":"\u65E0\u6CD5\u786E\u8BA4\u9065\u6D4B\u8BBE\u7F6E\u53D8\u66F4\uFF0C\u5DF2\u6062\u590D\u663E\u793A\u4E4B\u524D\u7684\u8BBE\u7F6E\uFF1B\u8BF7\u91CD\u65B0\u6253\u5F00\u8BBE\u7F6E\u6838\u5BF9\u3002","settings.general.telemetryRawLimit":"Provider \u539F\u59CB\u8BF7\u6C42/\u54CD\u5E94\u4E0A\u9650\uFF08\u5B57\u8282\uFF09","settings.general.telemetryTraceTextLimit":"Debug Prompt \u4E0E\u6D88\u606F\u4E0A\u9650\uFF08\u5B57\u8282\uFF09","settings.invite.create":"\u521B\u5EFA\u9080\u8BF7\u7801","settings.invite.normalUser":"\u666E\u901A\u7528\u6237","settings.invite.proUser":"Pro \u7528\u6237","settings.invite.createBtn":"\u521B\u5EFA\u9080\u8BF7\u7801","settings.invite.creating":"\u521B\u5EFA\u4E2D...","settings.invite.list":"\u9080\u8BF7\u7801\u5217\u8868","settings.invite.used":"\u5DF2\u4F7F\u7528","settings.invite.expired":"\u5DF2\u8FC7\u671F","settings.invite.available":"\u53EF\u7528","settings.invite.usedBy":"\u4F7F\u7528\u8005: {user}","settings.invite.expiredAt":"\u8FC7\u671F\u4E8E: {time}","settings.invite.expiresAt":"\u6709\u6548\u81F3: {time}","settings.invite.noInvites":"\u6682\u65E0\u9080\u8BF7\u7801","settings.msg.copiedClipboard":"\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F","settings.msg.copyFailed":"\u590D\u5236\u5931\u8D25","settings.msg.keyReset":"\u5BC6\u94A5\u5DF2\u91CD\u7F6E","settings.msg.resetFailed":"\u91CD\u7F6E\u5931\u8D25","settings.msg.changeFailed":"\u4FEE\u6539\u5931\u8D25","settings.msg.inviteCreated":"\u9080\u8BF7\u7801\u5DF2\u521B\u5EFA","settings.msg.createFailed":"\u521B\u5EFA\u5931\u8D25","settings.msg.inviteCopied":"\u9080\u8BF7\u7801\u5DF2\u590D\u5236","settings.msg.inviteDeleted":"\u9080\u8BF7\u7801\u5DF2\u5220\u9664","settings.msg.deleteFailed":"\u5220\u9664\u5931\u8D25","settings.tabs.llm":"LLM","settings.tabs.yeaft":"Yeaft","settings.yeaft.tabs.vp":"VP \u5E93","settings.yeaft.tabs.search":"\u641C\u7D22","settings.yeaft.tabs.mcp":"MCP","settings.mcp.title":"MCP \u670D\u52A1\u5668","settings.mcp.description":"\u901A\u8FC7 Model Context Protocol \u7ED9 Yeaft \u63A5\u5165\u66F4\u591A\u5DE5\u5177\u3002\u914D\u7F6E\u5199\u5165 agent \u4E0A\u7684 ~/.yeaft/config.json\uFF0C\u5DE5\u5177\u4F1A\u4EE5 mcp__<server>__<tool> \u7684\u5F62\u5F0F\u51FA\u73B0\u5728 LLM \u5DE5\u5177\u5217\u8868\u91CC\u3002","settings.mcp.reloadAll":"\u5168\u90E8\u91CD\u8FDE","settings.mcp.reloadOne":"\u91CD\u65B0\u8FDE\u63A5\u6B64\u670D\u52A1\u5668","settings.mcp.loading":"\u5904\u7406\u4E2D\u2026","settings.mcp.connected":"\u5DF2\u8FDE\u63A5","settings.mcp.disconnected":"\u672A\u8FDE\u63A5","settings.mcp.tools":"\u4E2A\u5DE5\u5177","settings.mcp.remove":"\u79FB\u9664","settings.mcp.empty":"\u8FD8\u6CA1\u6709\u914D\u7F6E MCP \u670D\u52A1\u5668\uFF0C\u53EF\u4EE5\u5728\u4E0B\u65B9\u6DFB\u52A0\u4E00\u4E2A\u3002","settings.mcp.addServer":"\u6DFB\u52A0\u670D\u52A1\u5668","settings.mcp.addServerDesc":"\u5927\u90E8\u5206 MCP \u670D\u52A1\u5668\u662F\u672C\u5730\u547D\u4EE4 \u2014 Yeaft \u4F1A\u901A\u8FC7 stdio \u542F\u52A8\u5B83\u5E76\u81EA\u52A8\u53D1\u73B0\u53EF\u7528\u5DE5\u5177\u3002","settings.mcp.serverName":"\u540D\u79F0","settings.mcp.command":"\u547D\u4EE4","settings.mcp.args":"\u53C2\u6570","settings.mcp.argsPlaceholder":"\u4F8B\u5982\uFF1A-y @modelcontextprotocol/server-filesystem /tmp","settings.mcp.env":"\u73AF\u5883\u53D8\u91CF","settings.mcp.envPlaceholder":"\u6BCF\u884C\u4E00\u4E2A KEY=value\uFF0C# \u5F00\u5934\u7684\u884C\u4F1A\u88AB\u5FFD\u7565\u3002","settings.mcp.saving":"\u4FDD\u5B58\u4E2D\u2026","settings.mcp.add":"\u6DFB\u52A0","settings.mcp.cancel":"\u6E05\u7A7A","settings.mcp.connectFailed":"\u5DF2\u4FDD\u5B58\u4F46\u8FDE\u63A5\u5931\u8D25","settings.mcp.addSuccess":"\u670D\u52A1\u5668\u5DF2\u6DFB\u52A0","settings.mcp.removeSuccess":"\u670D\u52A1\u5668\u5DF2\u79FB\u9664","settings.mcp.reloadSuccess":"\u5DF2\u8BF7\u6C42\u91CD\u8FDE","settings.mcp.confirmRemove":'\u79FB\u9664 MCP \u670D\u52A1\u5668 "{name}"\uFF1F\u4E0B\u4E00\u4E2A LLM turn \u8D77\u5B83\u7684\u5DE5\u5177\u5C06\u4E0D\u518D\u53EF\u89C1\u3002',"settings.mcp.errors.nameRequired":"\u8BF7\u586B\u5199\u540D\u79F0","settings.mcp.errors.nameFormat":"\u540D\u79F0\u53EA\u80FD\u5305\u542B\u5C0F\u5199\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u77ED\u6A2A\u7EBF\u548C\u4E0B\u5212\u7EBF","settings.mcp.errors.commandRequired":"\u8BF7\u586B\u5199\u547D\u4EE4","settings.mcp.errors.argsParse":"\u53C2\u6570\u89E3\u6790\u5931\u8D25","settings.mcp.errors.envParse":"\u73AF\u5883\u53D8\u91CF\u89E3\u6790\u5931\u8D25","yeaft.session.title":"\u4F1A\u8BDD","yeaft.session.new":"+ \u65B0\u5EFA\u4F1A\u8BDD","yeaft.session.create.title":"\u65B0\u5EFA\u4F1A\u8BDD","yeaft.session.create.subtitle":"\u9009\u62E9\u8FD0\u884C\u4F4D\u7F6E\u548C\u5904\u7406\u4F1A\u8BDD\u7684 Provider\u3002","yeaft.session.create.close":"\u5173\u95ED","yeaft.session.create.nameLabel":"\u540D\u79F0","yeaft.session.create.namePlaceholder":"\u4F1A\u8BDD\u540D\u79F0\uFF08\u53EF\u9009\uFF09","yeaft.session.create.workDirLabel":"\u5DE5\u4F5C\u76EE\u5F55","yeaft.session.create.agentLabel":"Agent","yeaft.session.create.vpPicker":"\u9009\u62E9 VP","yeaft.session.create.vpNone":"\u672A\u9009\u62E9 VP","yeaft.session.create.vpCount":"\u5DF2\u9009 {n} \u4E2A VP","yeaft.session.create.untitled":"\u672A\u547D\u540D\u4F1A\u8BDD","yeaft.session.create.rosterEmpty":"\u6682\u65E0\u53EF\u7528 VP \u2014 \u8BF7\u5148\u5230\u89D2\u8272\u5E93\u521B\u5EFA\u3002","yeaft.session.create.rosterLoading":"VP \u52A0\u8F7D\u4E2D\u2026","yeaft.session.create.rosterError":"\u65E0\u6CD5\u4ECE\u5F53\u524D Agent \u52A0\u8F7D VP\u3002","yeaft.session.create.rosterRetry":"\u91CD\u8BD5","yeaft.vp.domain.general":"\u901A\u7528\u4E0E\u534F\u4F5C","yeaft.vp.domain.productDesign":"\u4EA7\u54C1\u4E0E\u4F53\u9A8C\u8BBE\u8BA1","yeaft.vp.domain.softwareSystems":"\u8F6F\u4EF6\u4E0E\u7CFB\u7EDF","yeaft.vp.domain.securityReliability":"\u5B89\u5168\u4E0E\u53EF\u9760\u6027","yeaft.vp.domain.scienceAnalysis":"\u79D1\u5B66\u4E0E\u5206\u6790","yeaft.vp.domain.philosophyPsychology":"\u54F2\u5B66\u4E0E\u5FC3\u7406","yeaft.vp.domain.strategyHistory":"\u6218\u7565\u4E0E\u5386\u53F2","yeaft.vp.domain.businessManagement":"\u5546\u4E1A\u4E0E\u7BA1\u7406","yeaft.vp.domain.artsCulture":"\u827A\u672F\u4E0E\u6587\u5316","yeaft.vp.domain.other":"\u5176\u4ED6\u9886\u57DF","yeaft.vp.domain.custom":"\u81EA\u5B9A\u4E49 VP","yeaft.session.create.defaultVpHint":"\u5F53\u6CA1\u6709 @ \u63D0\u53CA\u65F6\u9ED8\u8BA4\u56DE\u7B54\u7684 VP\u3002","yeaft.session.create.folderLabel":"\u{1F4C1} \u5DE5\u4F5C\u76EE\u5F55","yeaft.session.create.sessionLabel":"\u{1F4AC} \u6B64\u76EE\u5F55\u4E0B\u7684 session","yeaft.session.create.noWorkDirs":"\u8FD8\u6CA1\u6709\u4EFB\u4F55\u4F1A\u8BDD \u2014 \u5728\u4E0A\u65B9\u9009\u62E9\u6216\u8F93\u5165\u5DE5\u4F5C\u76EE\u5F55\u5F00\u59CB\u3002","yeaft.session.create.back":"\u8FD4\u56DE","yeaft.session.create.creating":"\u521B\u5EFA\u4E2D\u2026","yeaft.session.create.submit":"\u521B\u5EFA","yeaft.plugins.title":"\u63D2\u4EF6","yeaft.plugins.subtitle":"\u9009\u62E9\u6B64 Agent \u5411\u4F1A\u8BDD\u63D0\u4F9B\u54EA\u4E9B\u5DE5\u5177\u3001\u6280\u80FD\u548C MCP \u670D\u52A1\u5668\u3002","yeaft.plugins.agentLabel":"Agent","yeaft.plugins.overviewLabel":"\u63D2\u4EF6\u53EF\u7528\u6027\u6982\u89C8","yeaft.plugins.noAgent":"\u672A\u9009\u62E9 Agent","yeaft.plugins.allAvailable":"\u5DF2\u542F\u7528\u5168\u90E8\u53EF\u7528\u80FD\u529B\u3002","yeaft.plugins.selectedSummary":"\u5DF2\u542F\u7528 {count} \u9879\u80FD\u529B\u3002","yeaft.plugins.enabledLabel":"\u5DF2\u542F\u7528","yeaft.plugins.useAll":"\u4F7F\u7528\u5168\u90E8\u53EF\u7528\u9879","yeaft.plugins.loading":"\u6B63\u5728\u52A0\u8F7D\u63D2\u4EF6\u2026","yeaft.plugins.empty":"\u6B64 Agent \u6CA1\u6709\u53EF\u914D\u7F6E\u7684\u63D2\u4EF6\u3002","yeaft.plugins.loadError":"\u52A0\u8F7D\u63D2\u4EF6\u5931\u8D25\uFF1A{error}","yeaft.plugins.upgradeRequired":"\u6B64 Agent \u4E0D\u652F\u6301\u63D2\u4EF6\u3002\u8BF7\u5347\u7EA7\u5E76\u91CD\u542F\u8BE5 Agent\u3002","yeaft.plugins.retry":"\u91CD\u8BD5","yeaft.plugins.searchPlaceholder":"\u641C\u7D22\u5DE5\u5177\u3001\u6280\u80FD\u548C MCP \u670D\u52A1\u5668","yeaft.plugins.resultCount":"{count} \u4E2A\u7ED3\u679C","yeaft.plugins.categoryLabel":"\u63D2\u4EF6\u5206\u7C7B","yeaft.plugins.all":"\u5168\u90E8","yeaft.plugins.noMatchesTitle":"\u6CA1\u6709\u5339\u914D\u7684\u63D2\u4EF6","yeaft.plugins.noMatchesBody":"\u8BF7\u5C1D\u8BD5\u5176\u4ED6\u641C\u7D22\u8BCD\u6216\u5206\u7C7B\u3002","yeaft.plugins.toolDescription":"Agent \u5185\u7F6E\u80FD\u529B","yeaft.plugins.skillDescription":"\u53EF\u590D\u7528\u7684 Agent \u5DE5\u4F5C\u6D41","yeaft.plugins.mcpDescription":"\u53EF\u63D0\u4F9B {count} \u4E2A\u5DE5\u5177","yeaft.plugins.unsavedChanges":"\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539","yeaft.plugins.tools":"\u5DE5\u5177","yeaft.plugins.skills":"\u6280\u80FD","yeaft.plugins.mcpServers":"MCP \u670D\u52A1\u5668","yeaft.plugins.toolsCount":"\u4E2A\u5DE5\u5177","yeaft.plugins.manageSkills":"\u7BA1\u7406\u6280\u80FD","yeaft.plugins.manageSkillsDescription":"\u4E3A\u6B64 Agent \u6216\u5F53\u524D\u9879\u76EE\u521B\u5EFA\u53EF\u590D\u7528\u6280\u80FD\u3002\u9879\u76EE\u7EA7\u6280\u80FD\u4F1A\u8986\u76D6\u540C\u540D\u7528\u6237\u7EA7\u6280\u80FD\u3002","yeaft.plugins.createSkill":"\u521B\u5EFA\u6280\u80FD","yeaft.plugins.removeSkill":"\u79FB\u9664","yeaft.plugins.confirmRemoveSkill":"\u79FB\u9664\u6280\u80FD\u201C{name}\u201D\uFF1F\u8FD9\u53EA\u4F1A\u5220\u9664\u8BE5\u5C42\u7EA7\u4E2D\u7684\u539F\u751F\u6280\u80FD\u3002","yeaft.plugins.skillManagementUpgradeRequired":"\u6B64 Agent \u5FC5\u987B\u5347\u7EA7\u540E\u624D\u80FD\u521B\u5EFA\u6216\u79FB\u9664\u6280\u80FD\u3002","yeaft.plugins.skillManagementVersionUnknown":"\u6B64 Agent \u5C1A\u672A\u4E0A\u62A5\u6280\u80FD\u7BA1\u7406\u652F\u6301\u3002\u8BF7\u5347\u7EA7\u5E76\u91CD\u542F\u540E\u518D\u521B\u5EFA\u6216\u79FB\u9664\u6280\u80FD\u3002","yeaft.plugins.skillScope":"\u5C42\u7EA7","yeaft.plugins.userScope":"\u7528\u6237\u7EA7","yeaft.plugins.projectScope":"\u9879\u76EE\u7EA7","yeaft.plugins.userScopeDescription":"\u5BF9\u8BE5 Agent \u8FD0\u884C\u7684\u6240\u6709\u9879\u76EE\u53EF\u7528\u3002","yeaft.plugins.projectScopeDescription":"\u53EA\u5BF9\u5F53\u524D\u9879\u76EE\u53EF\u7528\uFF0C\u5E76\u8986\u76D6\u540C\u540D\u7528\u6237\u7EA7\u6280\u80FD\u3002","yeaft.plugins.projectScopeUnavailable":"\u8BF7\u9009\u62E9\u5E26\u9879\u76EE\u76EE\u5F55\u7684 Session\uFF0C\u624D\u80FD\u7BA1\u7406\u9879\u76EE\u7EA7\u6280\u80FD\u3002","yeaft.plugins.skillName":"\u540D\u79F0","yeaft.plugins.skillDescriptionLabel":"\u8BF4\u660E","yeaft.plugins.skillTrigger":"\u89E6\u53D1\u8BCD\uFF08\u53EF\u9009\uFF09","yeaft.plugins.skillInstructions":"\u6307\u4EE4","yeaft.plugins.resetSkillForm":"\u91CD\u7F6E","yeaft.plugins.skillTier.bundled":"\u5185\u7F6E \xB7 \u53EA\u8BFB","yeaft.plugins.skillTier.user":"\u7528\u6237\u7EA7","yeaft.plugins.skillTier.project":"\u9879\u76EE\u7EA7","yeaft.plugins.skillTier.project-claude":"Claude \u9879\u76EE \xB7 \u53EA\u8BFB","yeaft.plugins.skillTier.project-codex":"Codex \u9879\u76EE \xB7 \u53EA\u8BFB","yeaft.onboarding.ariaLabel":"Yeaft \u4E0A\u624B\u8BF4\u660E","yeaft.onboarding.topbarTitle":"\u5F00\u59CB\u4F7F\u7528 Yeaft","yeaft.onboarding.eyebrow":"Yeaft \u4E0A\u624B\u6307\u5357","yeaft.onboarding.title":"\u5148\u8FDE\u63A5 Agent\uFF0C\u518D\u5F00\u59CB\u4F1A\u8BDD","yeaft.onboarding.subtitle":"\u5728\u8D1F\u8D23\u6267\u884C\u5DE5\u5177\u7684\u673A\u5668\u4E0A\u76F4\u63A5\u8FD0\u884C\u4E0B\u9762\u7684\u547D\u4EE4\u3002agent secret \u5982\u679C\u4E0D\u5B58\u5728\uFF0C\u4F1A\u81EA\u52A8\u4E3A\u5F53\u524D\u8D26\u53F7\u751F\u6210\u3002","yeaft.onboarding.createSession":"\u521B\u5EFA\u6216\u6062\u590D Session","yeaft.onboarding.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\u5E76\u8FDE\u63A5 Agent","yeaft.onboarding.installDesc":"\u5728\u76EE\u6807\u673A\u5668\u8FD0\u884C\u4E00\u6761\u547D\u4EE4\uFF0C\u5B89\u88C5\u6240\u9700\u73AF\u5883\u3001\u521B\u5EFA\u79C1\u6709\u5B9E\u4F8B\u5E76\u8FDE\u63A5\u5F53\u524D server\u3002","yeaft.onboarding.connectTitle":"\u8FDE\u63A5\u8FD9\u4E2A Agent","yeaft.onboarding.connectDesc":"\u5B89\u88C5\u5668\u4F1A\u4F7F\u7528\u5F53\u524D server URL \u548C\u81EA\u52A8\u751F\u6210\u7684 secret\u3002","yeaft.restore.modal.empty":"\u6B64\u76EE\u5F55\u4E0B\u6CA1\u6709 yeaft session","yeaft.restore.modal.scanError":"\u626B\u63CF\u5931\u8D25: {message}","yeaft.restore.modal.restoreError":"\u6062\u590D\u5931\u8D25: {message}","settings.llm.noAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A Agent \u4EE5\u7BA1\u7406 LLM \u914D\u7F6E\u3002","settings.llm.agentOffline":"Agent \u5F53\u524D\u79BB\u7EBF\uFF0C\u65E0\u6CD5\u52A0\u8F7D LLM \u914D\u7F6E\u3002\u8BF7\u7B49\u5F85 Agent \u4E0A\u7EBF\u540E\u91CD\u8BD5\u3002","settings.llm.loading":"\u6B63\u5728\u52A0\u8F7D\u914D\u7F6E...","settings.llm.loadError":"\u52A0\u8F7D\u914D\u7F6E\u5931\u8D25","settings.llm.configureAgent":"\u914D\u7F6E\u5F53\u524D Agent \u7684 LLM","settings.llm.configureMenu":"\u8BBE\u7F6E LLM","settings.llm.simpleCopilotTitle":"\u63A8\u8350\uFF1AGitHub Copilot","settings.llm.useGitHubCopilot":"\u4F7F\u7528 GitHub Copilot","settings.llm.refreshingModels":"\u6B63\u5728\u5237\u65B0\u6A21\u578B...","settings.llm.managedCopilotTitle":"\u6258\u7BA1\u7684 GitHub Copilot","settings.llm.managedCopilotDesc":"Base URL\u3001\u8BA4\u8BC1\u3001\u6A21\u578B\u76EE\u5F55\u548C\u6BCF\u4E2A\u6A21\u578B\u7684 API \u534F\u8BAE\u90FD\u81EA\u52A8\u7BA1\u7406\u3002Claude \u6A21\u578B\u8D70 Anthropic Messages\uFF1BGPT/o \u6A21\u578B\u8D70 OpenAI Responses\u3002","settings.llm.providersTitle":"\u670D\u52A1\u5546","settings.llm.testFailed":"\u8FDE\u63A5\u6D4B\u8BD5\u5931\u8D25","settings.llm.saveSuccess":"LLM \u8BBE\u7F6E\u5DF2\u4FDD\u5B58","settings.llm.saveFailed":"\u4FDD\u5B58 LLM \u8BBE\u7F6E\u5931\u8D25","settings.llm.presets.title":"\u5FEB\u901F\u914D\u7F6E","settings.llm.providersDesc":"\u9009\u62E9\u4E00\u4E2A\u670D\u52A1\u5546\uFF0C\u4FDD\u5B58\u540E\u5373\u53EF\u5728 Session \u4E2D\u4F7F\u7528\u3002","settings.llm.agentProviders":"\u5F53\u524D agent providers","settings.llm.agentBadge":"\u5F53\u524D agent","settings.llm.addProvider":"\u6DFB\u52A0\u670D\u52A1\u5546","settings.llm.addFromPreset":"\u4ECE\u76EE\u5F55\u6DFB\u52A0","settings.llm.preset.title":"\u670D\u52A1\u5546\u76EE\u5F55\uFF08models.dev\uFF09","settings.llm.preset.refresh":"\u5237\u65B0\u76EE\u5F55","settings.llm.preset.loading":"\u52A0\u8F7D\u76EE\u5F55\u2026","settings.llm.preset.empty":"\u76EE\u5F55\u4E3A\u7A7A\u3002","settings.llm.preset.pickProvider":"\u5728\u5DE6\u4FA7\u9009\u62E9\u4E00\u4E2A\u670D\u52A1\u5546\u4EE5\u67E5\u770B\u6A21\u578B\u3002","settings.llm.preset.filterProviders":"\u8FC7\u6EE4\u670D\u52A1\u5546\u2026","settings.llm.preset.filterModels":"\u8FC7\u6EE4\u6A21\u578B\u2026","settings.llm.preset.selectAll":"\u5168\u9009","settings.llm.preset.selectNone":"\u6E05\u7A7A","settings.llm.preset.cancel":"\u53D6\u6D88","settings.llm.preset.add":"\u6DFB\u52A0\u5230\u670D\u52A1\u5546\u5217\u8868","settings.llm.preset.fetchedAt":"\u76EE\u5F55\u5DF2\u66F4\u65B0 {minutes} \u5206\u949F","settings.llm.addModel":"\u6DFB\u52A0\u6A21\u578B","settings.llm.removeModel":"\u79FB\u9664\u6A21\u578B","settings.llm.providerName":"\u540D\u79F0","settings.llm.providerNamePlaceholder":"\u4F8B\u5982 my-proxy","settings.llm.baseUrl":"Base URL","settings.llm.baseUrlPlaceholder":"\u4F8B\u5982 http://localhost:6628/v1","settings.llm.apiKey":"API Key","settings.llm.apiKeyPlaceholder":"\u8F93\u5165 API Key","settings.llm.protocol":"\u534F\u8BAE","settings.llm.protocolOpenAI":"OpenAI \u517C\u5BB9","settings.llm.protocolOpenAIResponses":"OpenAI Responses (GPT-5)","settings.llm.protocolAnthropic":"Anthropic \u539F\u751F","settings.llm.protocolHint.anthropic":"Claude \u539F\u751F Messages API\u3002","settings.llm.protocolHint.openai":"Chat Completions /v1/chat/completions \u2014 GPT-4 \u53CA\u5927\u591A\u6570\u517C\u5BB9\u4EE3\u7406\u3002","settings.llm.protocolHint.openaiResponses":"Responses API /v1/responses \u2014 GPT-5 \u7CFB\u5217\u5FC5\u987B\u3002","settings.llm.modelCtxPlaceholder":"\u4E0A\u4E0B\u6587","settings.llm.modelMaxPlaceholder":"\u8F93\u51FA","settings.llm.models":"\u5019\u9009\u6A21\u578B ID","settings.llm.modelsPlaceholder":"\u6A21\u578B ID\uFF0C\u9017\u53F7\u6216\u6362\u884C\u5206\u9694\uFF0C\u4F8B\u5982 claude-sonnet-4-20250514, gpt-5","settings.llm.modelsHint":"\u9017\u53F7\u6216\u6362\u884C\u5206\u9694\u3002","settings.llm.removeProvider":"\u79FB\u9664","settings.llm.modelSelectionTitle":"\u6A21\u578B\u9009\u62E9","settings.llm.modelSelectionDesc":"\u9009\u62E9\u9ED8\u8BA4\u6A21\u578B\u3002","settings.llm.primaryModel":"\u4E3B\u6A21\u578B","settings.llm.primaryModelDesc":"\u7528\u4E8E\u7528\u6237\u5BF9\u8BDD","settings.llm.fastModel":"\u5FEB\u901F\u6A21\u578B","settings.llm.fastModelDesc":"\u7528\u4E8E\u5185\u90E8\u4EFB\u52A1\uFF08\u8BB0\u5FC6\u3001\u603B\u7ED3\uFF09","settings.llm.noModels":"\u6682\u65E0\u53EF\u7528\u6A21\u578B\u3002\u8BF7\u5148\u6DFB\u52A0\u670D\u52A1\u5546\u3002","settings.llm.selectModel":"\u9009\u62E9\u6A21\u578B...","settings.llm.debugTitle":"\u8C03\u8BD5\u8F68\u8FF9","settings.llm.debugDesc":"\u6309 Agent \u5F00\u542F\u9010\u8F6E\u8C03\u8BD5\u8F68\u8FF9\u6536\u96C6\uFF08\u7CFB\u7EDF\u63D0\u793A\u8BCD\u3001LLM \u8C03\u7528\u3001\u5DE5\u5177\u8F7D\u8377\uFF09\u3002","settings.llm.enableDebug":"\u542F\u7528\u8C03\u8BD5\u8F68\u8FF9","settings.llm.save":"\u4FDD\u5B58\u66F4\u6539","settings.llm.saving":"\u4FDD\u5B58\u4E2D...","settings.llm.saved":"\u914D\u7F6E\u5DF2\u4FDD\u5B58","settings.llm.savedRefreshWarning":"\u914D\u7F6E\u5DF2\u4FDD\u5B58\uFF0C\u4F46\u5B9E\u65F6\u6A21\u578B\u76EE\u5F55\u5237\u65B0\u5931\u8D25\uFF1A{error}","settings.llm.unsavedChanges":"\u6709\u672A\u4FDD\u5B58\u7684\u66F4\u6539","settings.llm.confirmRemoveProvider":"\u786E\u5B9A\u79FB\u9664\u6B64\u670D\u52A1\u5546\uFF1F","settings.llm.setupTitle":"\u8FDE\u63A5\u6A21\u578B","settings.llm.setupDesc":"\u63A8\u8350\u4F7F\u7528 GitHub Copilot\uFF1B\u4E5F\u53EF\u4EE5\u6DFB\u52A0\u81EA\u5DF1\u7684 API \u670D\u52A1\u5546\u3002","settings.llm.providerSectionHint":"\u53EA\u4FDD\u7559\u8FDE\u63A5\u6A21\u578B\u5FC5\u9700\u7684\u4FE1\u606F\u3002","settings.tabs.dashboard":"\u4EEA\u8868\u677F","settings.dashboard.totalUsers":"\u603B\u7528\u6237\u6570","settings.dashboard.onlineUsers":"\u5728\u7EBF\u7528\u6237","settings.dashboard.activeUsers":"\u6D3B\u8DC3\u7528\u6237","settings.dashboard.onlineAgents":"\u5728\u7EBFAgent","settings.dashboard.totalSessions":"\u603B\u4F1A\u8BDD\u6570","settings.dashboard.todayActive":"\u4ECA\u65E5\u6D3B\u8DC3","settings.dashboard.todayMessages":"\u4ECA\u65E5\u6D88\u606F","settings.dashboard.todayUserTurns":"\u4ECA\u65E5\u7528\u6237 Turn","settings.dashboard.totalTokens":"\u603B Token","settings.dashboard.tokenAccuracy":"\u6765\u81EA\u6A21\u578B\u670D\u52A1\u5546\u8FD4\u56DE\u7684\u5B9E\u9645\u7528\u91CF\uFF1B\u4ECE\u542F\u7528\u6309\u7528\u6237 Token \u7EDF\u8BA1\u7684\u7248\u672C\u5F00\u59CB\u7D2F\u8BA1\uFF0C\u4E14\u4E0D\u5305\u542B\u5FC3\u8DF3\u3002","settings.dashboard.agentTurns":"Agent Turn","settings.dashboard.agentSessions":"Agent Session","settings.dashboard.turns":"Turn","settings.dashboard.tokens":"Token","settings.dashboard.inputTokens":"\u8F93\u5165","settings.dashboard.outputTokens":"\u8F93\u51FA","settings.dashboard.cacheTokens":"\u7F13\u5B58","settings.dashboard.today":"\u4ECA\u5929","settings.dashboard.thisWeek":"\u672C\u5468","settings.dashboard.thisMonth":"\u672C\u6708","settings.dashboard.all":"\u5168\u90E8","settings.dashboard.general":"\u5E38\u89C4","settings.dashboard.detailed":"\u8BE6\u7EC6\u4FE1\u606F","settings.dashboard.users":"\u7528\u6237","settings.dashboard.agents":"Agent","settings.dashboard.time":"\u65F6\u95F4","settings.dashboard.active":"\u6D3B\u8DC3","settings.dashboard.inactive":"\u672A\u6D3B\u8DC3","settings.dashboard.activeOnly":"\u4EC5\u6D3B\u8DC3","settings.dashboard.inactiveOnly":"\u4EC5\u672A\u6D3B\u8DC3","settings.dashboard.userUsage":"\u7528\u6237\u7528\u91CF","settings.dashboard.refresh":"\u5237\u65B0","settings.dashboard.name":"\u540D\u79F0","settings.dashboard.messages":"\u6D88\u606F\u6570","settings.dashboard.userTurns":"\u7528\u6237 Turn \u6570","settings.dashboard.sessions":"\u4F1A\u8BDD\u6570","settings.dashboard.requests":"\u8BF7\u6C42\u6570","settings.dashboard.traffic":"\u6D41\u91CF","settings.dashboard.lastTurnCompleted":"\u6700\u540E Turn \u7ED3\u675F\u65F6\u95F4","settings.dashboard.status":"\u72B6\u6001","settings.dashboard.latency":"\u5EF6\u8FDF","settings.dashboard.version":"\u7248\u672C","settings.dashboard.owner":"\u6240\u6709\u8005","settings.dashboard.role":"\u89D2\u8272","settings.dashboard.agent":"Agent","settings.dashboard.online":"\u5728\u7EBF","settings.dashboard.offline":"\u79BB\u7EBF","settings.dashboard.noAgents":"\u6682\u65E0\u6CE8\u518C Agent","settings.dashboard.noUserData":"\u6682\u65E0\u7528\u6237\u6570\u636E","settings.dashboard.noOnlineUsers":"\u6682\u65E0\u5728\u7EBF\u7528\u6237","settings.dashboard.loading":"\u52A0\u8F7D\u4E2D...","settings.dashboard.error":"\u6570\u636E\u52A0\u8F7D\u5931\u8D25","settings.dashboard.ago":"{time}\u524D","settings.dashboard.loadMore":"\u52A0\u8F7D\u66F4\u591A\uFF08\u5269\u4F59 {remaining} \u6761\uFF09","workbench.title":"Workbench","workbench.openItems":"\u5DF2\u6253\u5F00\u7684 Workbench \u9879\u76EE","workbench.addItem":"\u6DFB\u52A0 Workbench \u9879\u76EE","workbench.addItemHint":"\u4F7F\u7528 + \u6253\u5F00\u6587\u4EF6\u3001\u7EC8\u7AEF\u3001Git \u6216\u6D4F\u89C8\u5668\u3002","workbench.closeItem":"\u5173\u95ED {name}","workbench.chooseCapability":"\u9009\u62E9\u80FD\u529B","workbench.chooseCapabilityHint":"\u9009\u62E9\u4E00\u4E2A\u5DE5\u5177\u5F00\u59CB\u4F7F\u7528\uFF1B\u5DF2\u6253\u5F00\u7684\u5DE5\u5177\u4F1A\u4FDD\u7559\u5728\u6807\u7B7E\u9875\u4E2D\u3002","workbench.terminal":"\u7EC8\u7AEF","workbench.terminalDescription":"\u5728\u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55\u8FD0\u884C\u547D\u4EE4\u5E76\u7BA1\u7406\u7EC8\u7AEF\u5206\u5C4F\u3002","workbench.git":"Git","workbench.gitDescription":"\u67E5\u770B\u4ED3\u5E93\u72B6\u6001\u3001\u4EE3\u7801\u5DEE\u5F02\u548C\u53D8\u66F4\u6587\u4EF6\u3002","workbench.files":"\u6587\u4EF6","workbench.filesDescription":"\u6D4F\u89C8\u3001\u9884\u89C8\u548C\u7F16\u8F91\u6240\u9009 Agent \u4E0A\u7684\u6587\u4EF6\u3002","workbench.browser":"\u6D4F\u89C8\u5668","workbench.browserDescription":"\u901A\u8FC7\u5B9E\u65F6 WebRTC \u753B\u9762\u67E5\u770B Agent \u672C\u5730\u6D4F\u89C8\u5668\u3002","workbench.available":"\u53EF\u7528","workbench.enableRequired":"\u9700\u8981\u542F\u7528","workbench.unavailable":"\u5F53\u524D Agent \u4E0D\u53EF\u7528","workbench.capabilityUnavailable":"\u6240\u9009 Agent \u672A\u63D0\u4F9B\u6B64\u80FD\u529B\u3002","workbench.browserUnavailable":"\u6D4F\u89C8\u5668\u5DF2\u88AB\u7BA1\u7406\u5458\u5173\u95ED\uFF0C\u6216\u5F53\u524D Agent \u4E0D\u652F\u6301\u3002\u8BF7\u5347\u7EA7 Agent\uFF0C\u6216\u8BA9\u7BA1\u7406\u5458\u5F00\u542F\u6D4F\u89C8\u5668\u8DEF\u7531\u3002","workbench.browserReadyHint":"\u8F93\u5165\u5730\u5740\u4EE5\u542F\u52A8\u9694\u79BB\u7684 Agent \u672C\u5730\u6D4F\u89C8\u5668\u3002\u70B9\u51FB\u5B9E\u65F6\u753B\u9762\u540E\u53EF\u4F7F\u7528\u9F20\u6807\u548C\u952E\u76D8\u4EA4\u4E92\u3002","workbench.browserStart":"\u542F\u52A8\u6D4F\u89C8\u5668","workbench.browserAddressLabel":"\u6D4F\u89C8\u5668\u5730\u5740","workbench.browserAddressPlaceholder":"example.com","workbench.browserAddressInvalid":"\u8BF7\u8F93\u5165\u6709\u6548\u7684 HTTP \u6216 HTTPS \u5730\u5740\u3002","workbench.browserInteractionUnavailable":"\u6D4F\u89C8\u5668\u8F93\u5165\u94FE\u8DEF\u5C1A\u672A\u8FDE\u63A5\uFF0C\u8BF7\u7B49\u5F85 WebRTC \u8FDE\u63A5\u540E\u91CD\u8BD5\u3002","workbench.browserGo":"\u524D\u5F80","workbench.browserStarting":"\u6B63\u5728\u542F\u52A8 Agent \u672C\u5730\u6D4F\u89C8\u5668\u2026","workbench.browserConnecting":"\u6B63\u5728\u8FDE\u63A5\u5B9E\u65F6 WebRTC \u753B\u9762\u2026","workbench.browserIceServersMissing":"\u6D4F\u89C8\u5668\u753B\u9762\u65E0\u6CD5\u8FDE\u63A5\u5F53\u524D Agent\uFF0C\u4E14 Server \u672A\u914D\u7F6E STUN \u6216 TURN \u670D\u52A1\u3002\u8BF7\u8BA9\u7BA1\u7406\u5458\u914D\u7F6E Browser ICE/TURN \u540E\u91CD\u8BD5\u3002","workbench.browserIceConnectionFailed":"\u6D4F\u89C8\u5668 WebRTC \u8FDE\u63A5\u5931\u8D25\u3002\u8BF7\u68C0\u67E5\u5DF2\u914D\u7F6E\u7684 TURN \u670D\u52A1\u662F\u5426\u80FD\u88AB Web \u6D4F\u89C8\u5668\u548C Agent \u540C\u65F6\u8BBF\u95EE\uFF0C\u7136\u540E\u91CD\u8BD5\u3002","workbench.browserPeerAttachTimeout":"\u8FDE\u63A5\u6D4F\u89C8\u5668 WebRTC \u753B\u9762\u8D85\u65F6\u3002\u8BF7\u68C0\u67E5 Browser ICE/TURN \u8FDE\u901A\u6027\uFF0C\u7136\u540E\u91CD\u8BD5\u3002","workbench.browserEnd":"\u7ED3\u675F\u6D4F\u89C8\u5668","workbench.browserVideoLabel":"Agent \u6D4F\u89C8\u5668\u5B9E\u65F6\u753B\u9762","workbench.browserInputLabel":"\u6D4F\u89C8\u5668\u952E\u76D8\u8F93\u5165","workbench.browserStatusConnecting":"\u8FDE\u63A5\u4E2D","workbench.browserProtocolUnavailable":"\u5F53\u524D Server \u8FDE\u63A5\u4E0D\u652F\u6301 Browser Runtime \u534F\u8BAE\u3002","workbench.browserChecking":"\u6B63\u5728\u68C0\u67E5\u6240\u9009 Agent \u7684 Browser Runtime\u2026","workbench.browserPlatformUnsupported":"\u6240\u9009 Agent \u65E0\u6CD5\u8FD0\u884C\u5F53\u524D Browser Runtime \u6570\u636E\u94FE\u8DEF\u3002","workbench.browserSetupTitle":"\u542F\u7528\u6D4F\u89C8\u5668","workbench.browserOptionalInstall":"\u6D4F\u89C8\u5668\u9700\u8981\u5728\u5F53\u524D Agent \u5B89\u88C5\u56FA\u5B9A\u7248\u672C Chrome for Testing\u3002\u542F\u7528\u540E\u5C06\u4E0B\u8F7D\u7EA6 {size}\uFF0C\u6821\u9A8C\u5E76\u5B89\u88C5\u7248\u672C {build}\uFF0C\u7136\u540E\u68C0\u67E5\u5A92\u4F53\u94FE\u8DEF\u3002","workbench.browserInstallDiskNote":"\u70B9\u51FB\u201C\u542F\u7528\u6D4F\u89C8\u5668\u201D\u524D\u4E0D\u4F1A\u4E0B\u8F7D\u4EFB\u4F55\u5185\u5BB9\uFF1B\u6D4F\u89C8\u5668\u6587\u4EF6\u53EA\u5B58\u653E\u5728\u5F53\u524D Agent instance \u7684\u6570\u636E\u76EE\u5F55\u3002","workbench.browserInstallAction":"\u542F\u7528\u6D4F\u89C8\u5668\uFF08{size}\uFF09","workbench.browserInstalling":"\u6B63\u5728\u542F\u7528\u6D4F\u89C8\u5668\uFF1A\u4E0B\u8F7D\u5E76\u6821\u9A8C Chrome for Testing {build}\u2026","workbench.browserInstallKeepOpen":"\u53EF\u4EE5\u79BB\u5F00\u6B64\u9762\u677F\u3002\u518D\u6B21\u6253\u5F00\u6D4F\u89C8\u5668\u4F1A\u6062\u590D\u663E\u793A\u5F53\u524D\u5B89\u88C5\u72B6\u6001\uFF0C\u4E0D\u4F1A\u91CD\u590D\u4E0B\u8F7D\u3002","workbench.browserInstallProgressLabel":"\u6D4F\u89C8\u5668\u4E0B\u8F7D\u8FDB\u5EA6","workbench.browserInstallProgress":"\u5DF2\u4E0B\u8F7D {downloaded} / {total}","workbench.browserInstalledEnable":"\u6D4F\u89C8\u5668\u6587\u4EF6\u5DF2\u7ECF\u5B89\u88C5\u3002\u542F\u7528\u6D4F\u89C8\u5668\u5E76\u68C0\u67E5\u5A92\u4F53\u94FE\u8DEF\u5373\u53EF\u4F7F\u7528\u3002","workbench.browserEnableAction":"\u542F\u7528\u6D4F\u89C8\u5668","workbench.browserEnabling":"\u6B63\u5728\u5B8C\u6210\u8BBE\u7F6E\u5E76\u68C0\u67E5\u5A92\u4F53\u94FE\u8DEF\u2026","workbench.browserStatusInstalling":"\u5B89\u88C5\u4E2D","workbench.browserStatusProbing":"\u63A2\u6D4B\u4E2D","workbench.backToCapabilities":"\u8FD4\u56DE\u80FD\u529B\u5217\u8868","workbench.closeCapability":"\u5173\u95ED\u5F53\u524D\u80FD\u529B","workbench.maximize":"\u6700\u5927\u5316\u9762\u677F","workbench.restore":"\u8FD8\u539F\u9762\u677F","workbench.collapse":"\u6536\u8D77\u9762\u677F","theme.switchToLight":"\u5207\u6362\u5230\u6D45\u8272\u4E3B\u9898","theme.switchToDark":"\u5207\u6362\u5230\u6DF1\u8272\u4E3B\u9898","theme.toLight":"\u5207\u6362\u5230\u6D45\u8272\u4E3B\u9898","theme.toDark":"\u5207\u6362\u5230\u6DF1\u8272\u4E3B\u9898","terminal.splitH":"\u6C34\u5E73\u5206\u5C4F\uFF08\u5DE6\u53F3\uFF09","terminal.splitV":"\u5782\u76F4\u5206\u5C4F\uFF08\u4E0A\u4E0B\uFF09","terminal.close":"\u5173\u95ED\u5F53\u524D\u7EC8\u7AEF","terminal.autoCreate":"\u6253\u5F00\u7EC8\u7AEF\u80FD\u529B\u65F6\u5C06\u81EA\u52A8\u521B\u5EFA\u7EC8\u7AEF","terminal.xtermError":"xterm.js \u672A\u52A0\u8F7D\uFF0C\u8BF7\u5237\u65B0\u9875\u9762","terminal.xtermNotLoaded":"xterm.js \u672A\u52A0\u8F7D\uFF0C\u8BF7\u5237\u65B0\u9875\u9762","terminal.mountError":"\u7EC8\u7AEF\u5BB9\u5668\u6302\u8F7D\u5931\u8D25","terminal.mountFailed":"\u7EC8\u7AEF\u5BB9\u5668\u6302\u8F7D\u5931\u8D25","terminal.createError":"\u7EC8\u7AEF\u521B\u5EFA\u5931\u8D25","terminal.createFailed":"\u7EC8\u7AEF\u521B\u5EFA\u5931\u8D25","terminal.error":"\u7EC8\u7AEF\u9519\u8BEF","git.selectFolder":"\u9009\u62E9\u6587\u4EF6\u5939","git.repoPath":"\u8F93\u5165 Git \u4ED3\u5E93\u8DEF\u5F84...","git.repoPathPlaceholder":"\u8F93\u5165 Git \u4ED3\u5E93\u8DEF\u5F84...","git.workDir":"Git \u5DE5\u4F5C\u76EE\u5F55","git.loadStatus":"\u52A0\u8F7D Git \u72B6\u6001","git.loading":"\u52A0\u8F7D Git \u72B6\u6001...","git.loadingStatus":"\u52A0\u8F7D Git \u72B6\u6001...","git.clean":"\u5DE5\u4F5C\u533A\u5E72\u51C0\uFF0C\u65E0\u53D8\u66F4","git.cleanWorkDir":"\u5DE5\u4F5C\u533A\u5E72\u51C0\uFF0C\u65E0\u53D8\u66F4","git.selectAgent":"\u9009\u62E9 Agent \u540E\u52A0\u8F7D Git \u72B6\u6001","git.selectAgentFirst":"\u9009\u62E9 Agent \u540E\u52A0\u8F7D Git \u72B6\u6001","git.workItemRootRequired":"\u6B64\u5DE5\u4F5C\u9879\u4F7F\u7528\u4ED3\u5E93\u5B50\u76EE\u5F55\uFF0C\u65E0\u6CD5\u5728\u6B64\u64CD\u4F5C Git\u3002\u6587\u4EF6\u548C\u7EC8\u7AEF\u4ECD\u53EF\u4F7F\u7528\uFF1BGit \u64CD\u4F5C\u9700\u8981\u5DE5\u4F5C\u9879\u4EE5\u4ED3\u5E93\u6839\u76EE\u5F55\u4E3A\u5DE5\u4F5C\u76EE\u5F55\u3002","git.diffOnly":"\u53EA\u770B\u5DEE\u5F02","git.fullFile":"\u770B\u5168\u6587","git.zoomIn":"\u653E\u5927\u5B57\u4F53","git.zoomOut":"\u7F29\u5C0F\u5B57\u4F53","git.loadingDiff":"\u52A0\u8F7D Diff...","git.clickToView":"\u70B9\u51FB\u6587\u4EF6\u67E5\u770B\u5DEE\u5F02","git.clickFileToView":"\u70B9\u51FB\u6587\u4EF6\u67E5\u770B\u5DEE\u5F02","git.selectRepo":"\u9009\u62E9 Git \u4ED3\u5E93","git.noDiff":"(\u65E0\u5DEE\u5F02)","git.binaryFile":"(\u4E8C\u8FDB\u5236\u6587\u4EF6)","files.notLoaded":"\u672A\u52A0\u8F7D","files.newFile":"\u65B0\u5EFA\u6587\u4EF6","files.newFolder":"\u65B0\u5EFA\u6587\u4EF6\u5939","files.openFolder":"\u6253\u5F00\u6587\u4EF6\u5939","files.showTree":"\u663E\u793A\u6587\u4EF6\u5939","files.hideTree":"\u9690\u85CF\u6587\u4EF6\u5939","files.deleteSelected":"\u5220\u9664\u9009\u4E2D","files.moveSelected":"\u79FB\u52A8\u9009\u4E2D","files.enterPath":"\u8F93\u5165\u8DEF\u5F84...","files.searchFiles":"\u641C\u7D22\u6587\u4EF6... (Ctrl+P)","files.noMatch":"\u65E0\u5339\u914D\u7ED3\u679C","files.searching":"\u641C\u7D22\u4E2D...","files.loadingTree":"\u52A0\u8F7D\u4E2D...","files.emptyDir":"\u7A7A\u76EE\u5F55","files.loadingFile":"\u52A0\u8F7D\u6587\u4EF6...","files.readSendFailed":"\u6587\u4EF6\u8BF7\u6C42\u672A\u53D1\u9001\u3002\u8BF7\u68C0\u67E5\u8FDE\u63A5\uFF0C\u7136\u540E\u518D\u6B21\u70B9\u51FB\u6587\u4EF6\u91CD\u8BD5\u3002","files.readInterrupted":"\u6587\u4EF6\u8BFB\u53D6\u5DF2\u4E2D\u65AD\u3002\u8BF7\u91CD\u65B0\u8FDE\u63A5\uFF0C\u7136\u540E\u518D\u6B21\u70B9\u51FB\u6587\u4EF6\u91CD\u8BD5\u3002","files.searchPlaceholder":"\u641C\u7D22...","files.replacePlaceholder":"\u66FF\u6362...","files.replace":"\u66FF\u6362","files.replaceAll":"\u5168\u90E8","files.replaceCurrent":"\u66FF\u6362\u5F53\u524D","files.replaceAllTitle":"\u5168\u90E8\u66FF\u6362","files.clickToView":"\u70B9\u51FB\u6587\u4EF6\u67E5\u770B\u5185\u5BB9","files.selectFolder":"\u9009\u62E9\u6587\u4EF6\u5939","files.enterFolderName":"\u8F93\u5165\u6587\u4EF6\u5939\u540D...","files.enterFileName":"\u8F93\u5165\u6587\u4EF6\u540D...","files.moveTarget":"\u8F93\u5165\u76EE\u6807\u76EE\u5F55\u8DEF\u5F84...","files.moveItems":"\u5C06 {count} \u4E2A\u9879\u76EE\u79FB\u52A8\u5230\u6307\u5B9A\u76EE\u5F55","files.workDir":"\u5DE5\u4F5C\u76EE\u5F55: {dir}","files.enterDirPath":"\u8F93\u5165\u76EE\u5F55\u8DEF\u5F84...","files.unsavedConfirm":'"{name}" \u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539\uFF0C\u786E\u5B9A\u5173\u95ED\uFF1F',"files.unsavedBatchConfirm":"{count} \u4E2A\u6587\u4EF6\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539\uFF0C\u786E\u5B9A\u5173\u95ED\uFF1F","files.showOpenTabs":"\u663E\u793A\u5DF2\u6253\u5F00\u7684\u6587\u4EF6","files.closeTab":"\u5173\u95ED {name}","files.closeTabAction":"\u5173\u95ED","files.closeOtherTabs":"\u5173\u95ED\u5176\u4ED6","files.closeTabsToLeft":"\u5173\u95ED\u5DE6\u4FA7","files.closeTabsToRight":"\u5173\u95ED\u53F3\u4FA7","files.closeAllTabs":"\u5168\u90E8\u5173\u95ED","files.deleteConfirm":'\u786E\u5B9A\u8981\u5220\u9664 "{name}" \u5417\uFF1F',"files.deleteDirHint":"\uFF08\u5C06\u5220\u9664\u6587\u4EF6\u5939\u53CA\u5176\u6240\u6709\u5185\u5BB9\uFF09","files.deleteSelectedConfirm":"\u786E\u5B9A\u8981\u5220\u9664\u9009\u4E2D\u7684 {count} \u4E2A\u9879\u76EE\u5417\uFF1F\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002","files.findPrev":"\u4E0A\u4E00\u4E2A (Shift+Enter)","files.findNext":"\u4E0B\u4E00\u4E2A (Enter)","files.caseSensitive":"\u533A\u5206\u5927\u5C0F\u5199","files.regex":"\u6B63\u5219\u8868\u8FBE\u5F0F","files.unsaved":"\u672A\u4FDD\u5B58","files.clearSelection":"\u6E05\u9664\u9009\u62E9","files.rename":"\u91CD\u547D\u540D","files.copyHere":"\u590D\u5236","files.moveTo":"\u79FB\u52A8\u5230...","files.download":"\u4E0B\u8F7D","files.enterNewName":"\u8F93\u5165\u65B0\u540D\u79F0...","files.loadingPreview":"\u52A0\u8F7D\u9884\u89C8\u4E2D...","files.previewTooLarge":"\u8BE5\u6587\u4EF6\u5927\u5C0F\u4E3A {size} MB\uFF0C\u8D85\u8FC7 {limit} MB \u7684\u9884\u89C8\u4E0E\u4E0B\u8F7D\u4E0A\u9650\u3002","files.previewLoadFailed":"\u56FE\u7247\u9884\u89C8\u52A0\u8F7D\u5931\u8D25\u3002","files.videoPreviewLoadFailed":"\u89C6\u9891\u65E0\u6CD5\u64AD\u653E\uFF0C\u5F53\u524D\u6D4F\u89C8\u5668\u53EF\u80FD\u4E0D\u652F\u6301\u8BE5\u89C6\u9891\u7F16\u7801\u3002","files.videoStreamUnavailable":"\u5F53\u524D Agent \u6216 Session \u4E0D\u652F\u6301\u89C6\u9891\u6D41\u5F0F\u64AD\u653E\u3002","files.preview":"\u9884\u89C8","files.edit":"\u7F16\u8F91","files.pptxNotSupported":"PPTX \u672C\u5730\u9884\u89C8\u6682\u4E0D\u652F\u6301\uFF0C\u8BF7\u5728\u8BBE\u7F6E\u4E2D\u5207\u6362\u4E3A Office Online \u6A21\u5F0F\u3002","files.officePreviewMode":"Office \u9884\u89C8\u6A21\u5F0F","files.officeOnline":"Office Online","files.localRender":"\u672C\u5730\u6E32\u67D3","proxy.port":"\u7AEF\u53E3","proxy.label":"\u6807\u7B7E","proxy.add":"\u6DFB\u52A0\u7AEF\u53E3\u6620\u5C04","proxy.addPort":"\u6DFB\u52A0\u7AEF\u53E3\u6620\u5C04","proxy.enable":"\u70B9\u51FB\u542F\u7528","proxy.clickEnable":"\u70B9\u51FB\u542F\u7528","proxy.disable":"\u70B9\u51FB\u7981\u7528","proxy.clickDisable":"\u70B9\u51FB\u7981\u7528","proxy.openNewTab":"\u5728\u65B0\u6807\u7B7E\u9875\u6253\u5F00","proxy.openInBrowser":"\u5728\u65B0\u6807\u7B7E\u9875\u6253\u5F00","proxy.noMappings":"\u6682\u65E0\u7AEF\u53E3\u6620\u5C04","proxy.noPorts":"\u6682\u65E0\u7AEF\u53E3\u6620\u5C04","proxy.hint":"\u6DFB\u52A0\u7AEF\u53E3\u540E\uFF0C\u53EF\u901A\u8FC7\u4EE3\u7406 URL \u8BBF\u95EE agent \u673A\u5668\u4E0A\u7684\u672C\u5730\u670D\u52A1","proxy.noPortsHint":"\u6DFB\u52A0\u7AEF\u53E3\u540E\uFF0C\u53EF\u901A\u8FC7\u4EE3\u7406 URL \u8BBF\u95EE agent \u673A\u5668\u4E0A\u7684\u672C\u5730\u670D\u52A1","proxy.selectAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A Agent","store.selectAgent":"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A Agent","store.creatingConv":"\u6B63\u5728\u521B\u5EFA\u4F1A\u8BDD...","store.loadingHistory":"\u6B63\u5728\u52A0\u8F7D\u4F1A\u8BDD\u5386\u53F2...","store.executionCancelled":"\u6267\u884C\u5DF2\u53D6\u6D88","store.loginFailed":"\u767B\u5F55\u5931\u8D25","store.convClosed":"\u4F1A\u8BDD\u5DF2\u5173\u95ED","store.convCreated":"\u65B0\u4F1A\u8BDD\u5DF2\u521B\u5EFA [{agent}]\uFF0C\u5DE5\u4F5C\u76EE\u5F55: {workDir}","store.convResumed":"\u5DF2\u6062\u590D\u4F1A\u8BDD [{agent}]: {sessionId}","roleplay.creating":"\u6B63\u5728\u521B\u5EFA \u89D2\u8272\u626E\u6F14 \u4F1A\u8BDD...","roleplay.working":"\u5DE5\u4F5C\u4E2D","roleplay.selectTeam":"\u9009\u62E9\u56E2\u961F\u6A21\u677F","roleplay.teamDev":"\u8F6F\u4EF6\u5F00\u53D1","roleplay.teamCustom":"\u81EA\u5B9A\u4E49","roleplay.editRoles":"\u7F16\u8F91\u89D2\u8272","roleplay.roleName":"\u89D2\u8272\u6807\u8BC6","roleplay.roleDisplayName":"\u663E\u793A\u540D\u79F0","roleplay.roleIcon":"\u56FE\u6807","roleplay.roleDesc":"\u89D2\u8272\u63CF\u8FF0","roleplay.rolePrompt":"\u89D2\u8272 Prompt","roleplay.removeRole":"\u79FB\u9664\u89D2\u8272","roleplay.addRole":"\u6DFB\u52A0\u89D2\u8272","roleplay.start":"\u542F\u52A8 \u89D2\u8272\u626E\u6F14","roleplay.sidebarTitle":"\u89D2\u8272\u626E\u6F14","roleplay.configTitle":"\u89D2\u8272\u626E\u6F14","roleplay.newSession":"\u65B0\u5EFA \u89D2\u8272\u626E\u6F14","roleplay.emptyHint":"\u53D1\u9001\u6D88\u606F\u5F00\u59CB\u591A\u89D2\u8272\u534F\u4F5C","roleplay.askingYou":"\u6B63\u5728\u63D0\u95EE","roleplay.language":"\u8BED\u8A00","roleplay.rolePreview":"\u89D2\u8272\u914D\u7F6E","roleplay.noAgents":"\u6CA1\u6709\u5728\u7EBF\u7684 Agent","roleplay.inputPlaceholder":"\u8F93\u5165\u6D88\u606F\u2026 \u4F7F\u7528 @ \u63D0\u53CA\u89D2\u8272","roleplay.existingSessions":"\u5DF2\u6709\u56E2\u961F","roleplay.restore":"\u6062\u590D","roleplay.restoring":"\u6B63\u5728\u6062\u590D \u89D2\u8272\u626E\u6F14 \u4F1A\u8BDD...","roleplay.createNew":"\u521B\u5EFA\u65B0\u56E2\u961F","expertPanel.title":"\u5E2E\u5E2E\u56E2","expertPanel.search":"\u641C\u7D22\u89D2\u8272\u6216 Action...","expertPanel.noResults":"\u6CA1\u6709\u5339\u914D\u7ED3\u679C","expertPanel.clearAll":"\u6E05\u7A7A","expertPanel.persona":"\u89D2\u8272\u4EBA\u8BBE","expertPanel.template":"\u6709\u8F93\u5165\u65F6 \xB7 \u6D88\u606F\u524D\u7F00","expertPanel.templateHint":"\u7528\u6237\u5199\u4E86\u6587\u5B57\u65F6\uFF1A\u6B64\u524D\u7F00 + \u7528\u6237\u6587\u5B57 = \u6700\u7EC8\u53D1\u9001\u5185\u5BB9","expertPanel.defaultMsg":"\u65E0\u8F93\u5165\u65F6 \xB7 \u5B8C\u6574 Prompt","expertPanel.defaultMsgHint":"\u7528\u6237\u4E0D\u5199\u6587\u5B57\u76F4\u63A5\u53D1\u9001\u65F6\uFF0C\u4F7F\u7528\u6B64\u5B8C\u6574 prompt","expertPanel.loading":"\u6B63\u5728\u52A0\u8F7D\u89D2\u8272\u5B9A\u4E49...","expertPanel.viewPrompt":"\u67E5\u770B\u63D0\u793A\u8BCD","expertPanel.customRoles":"\u81EA\u5B9A\u4E49\u89D2\u8272","expertPanel.addRole":"\u6DFB\u52A0\u89D2\u8272","expertPanel.editRole":"\u7F16\u8F91\u89D2\u8272","expertPanel.deleteRole":"\u5220\u9664\u89D2\u8272","expertPanel.noCustomRoles":"\u6682\u65E0\u81EA\u5B9A\u4E49\u89D2\u8272","expertPanel.createFirst":"\u521B\u5EFA\u7B2C\u4E00\u4E2A\u81EA\u5B9A\u4E49\u89D2\u8272","expertPanel.noActions":"\u6682\u65E0 Action","expertPanel.deleteConfirm":'\u786E\u5B9A\u8981\u5220\u9664\u89D2\u8272 "{name}" \u5417\uFF1F\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002',"expertPanel.deleteConfirmBtn":"\u5220\u9664","expertEditor.createTitle":"\u521B\u5EFA\u81EA\u5B9A\u4E49\u89D2\u8272","expertEditor.editTitle":"\u7F16\u8F91\u81EA\u5B9A\u4E49\u89D2\u8272","expertEditor.basicInfo":"\u57FA\u672C\u4FE1\u606F","expertEditor.roleName":"\u89D2\u8272\u540D\u79F0","expertEditor.roleNamePlaceholder":"\u5982\uFF1A\u6570\u636E\u5206\u6790\u5E08","expertEditor.roleTitle":"\u804C\u79F0","expertEditor.roleTitlePlaceholder":"\u5982\uFF1A\u9AD8\u7EA7\u6570\u636E\u5206\u6790\u5E08","expertEditor.fullName":"\u5168\u540D","expertEditor.fullNamePlaceholder":"\u53EF\u9009","expertEditor.titleEn":"\u82F1\u6587\u804C\u79F0","expertEditor.titleEnPlaceholder":"\u53EF\u9009","expertEditor.rolePrompt":"\u89D2\u8272 Prompt","expertEditor.messagePrefix":"\u6D88\u606F\u524D\u7F00\uFF08\u4E2D\u6587\uFF09","expertEditor.messagePrefixPlaceholder":"\u5982\uFF1A\u4F5C\u4E3A\u4E00\u540D\u8D44\u6DF1\u6570\u636E\u5206\u6790\u5E08\uFF0C","expertEditor.messagePrefixEn":"\u6D88\u606F\u524D\u7F00\uFF08\u82F1\u6587\uFF09","expertEditor.messagePrefixEnPlaceholder":"As a senior data analyst, ","expertEditor.actions":"Actions","expertEditor.addAction":"\u6DFB\u52A0 Action","expertEditor.removeAction":"\u79FB\u9664","expertEditor.actionName":"Action \u540D\u79F0","expertEditor.actionNamePlaceholder":"\u5982\uFF1A\u6570\u636E\u5206\u6790","expertEditor.actionNameEn":"\u82F1\u6587\u540D\u79F0","expertEditor.actionNameEnPlaceholder":"\u53EF\u9009","expertEditor.messageTemplate":"\u6709\u8F93\u5165\u65F6 \xB7 \u6D88\u606F\u524D\u7F00\uFF08\u4E2D\u6587\uFF09","expertEditor.messageTemplatePlaceholder":"\u7528\u6237\u5199\u4E86\u6587\u5B57\u65F6\uFF0C\u62FC\u5728\u7528\u6237\u6587\u5B57\u524D\u9762\u53D1\u9001","expertEditor.messageTemplateEn":"\u6709\u8F93\u5165\u65F6 \xB7 \u6D88\u606F\u524D\u7F00\uFF08\u82F1\u6587\uFF09","expertEditor.messageTemplateEnPlaceholder":"Prepended to user text when user types something","expertEditor.defaultMessage":"\u65E0\u8F93\u5165\u65F6 \xB7 \u5B8C\u6574 Prompt\uFF08\u4E2D\u6587\uFF09","expertEditor.defaultMessagePlaceholder":"\u7528\u6237\u4E0D\u5199\u6587\u5B57\u76F4\u63A5\u53D1\u9001\u65F6\uFF0C\u4F7F\u7528\u6B64\u5B8C\u6574\u5185\u5BB9","expertEditor.defaultMessageEn":"\u65E0\u8F93\u5165\u65F6 \xB7 \u5B8C\u6574 Prompt\uFF08\u82F1\u6587\uFF09","expertEditor.defaultMessageEnPlaceholder":"Used as-is when user sends without typing","expertEditor.cancel":"\u53D6\u6D88","expertEditor.save":"\u4FDD\u5B58","expertEditor.saving":"\u4FDD\u5B58\u4E2D...","subAgentPanel.title":"\u5B50\u4EE3\u7406","subAgentPanel.back":"\u8FD4\u56DE\u5217\u8868","subAgentPanel.running":"\u8FD0\u884C\u4E2D","subAgentPanel.completed":"\u5DF2\u5B8C\u6210","subAgentPanel.waitingMessages":"\u7B49\u5F85\u6D88\u606F...","subAgentPanel.toolCount":"{count} \u4E2A\u5DE5\u5177","subAgentPanel.toolSummary":"\u5DF2\u5B8C\u6210 {count} \u6B21\u5DE5\u5177\u8C03\u7528","subAgentPanel.empty":"\u6682\u65E0\u5B50\u4EE3\u7406","subAgentPanel.emptyHint":"\u5F53 Claude \u59D4\u6D3E\u4EFB\u52A1\u65F6\uFF0C\u5B50\u4EE3\u7406\u4F1A\u5728\u8FD9\u91CC\u663E\u793A","splitScreen.split":"\u5206\u5C4F","splitScreen.closePane":"\u5173\u95ED\u6B64\u9762\u677F","splitScreen.newChat":"\u65B0\u5EFA Chat","splitScreen.noSessions":"\u6682\u65E0\u4F1A\u8BDD","splitScreen.splitToPanel":"\u5728\u65B0\u9762\u677F\u4E2D\u6253\u5F00","splitScreen.selectFromSidebar":"\u4ECE\u5DE6\u4FA7\u9009\u62E9\u5BF9\u8BDD","yeaft.vp.library":"\u89D2\u8272\u5E93","yeaft.vp.createFirst":"+ \u521B\u5EFA\u4F60\u7684\u7B2C\u4E00\u4E2A\u89D2\u8272","yeaft.vp.empty.aria":"\u5C1A\u65E0\u89D2\u8272","yeaft.vp.avatar.aria":"{name} \u5934\u50CF","yeaft.vp.speaker.stateCauseAria":"\u72B6\u6001\u53D8\u66F4\uFF1A{cause}","yeaft.vp.status.thinking":"\u6B63\u5728\u601D\u8003\u2026","yeaft.vp.status.tool":"\u6B63\u5728\u4F7F\u7528 {name}","yeaft.vp.status.done":"\u5B8C\u6210 \xB7 {count} \u4E2A\u5DE5\u5177","yeaft.vp.status.aborted":"\u5DF2\u4E2D\u6B62","yeaft.vp.crud.title":"\u89D2\u8272\u5E93","yeaft.vp.crud.close":"\u5173\u95ED","yeaft.vp.crud.addNew":"+ \u65B0\u5EFA\u89D2\u8272","yeaft.vp.crud.empty":"\u8FD8\u6CA1\u6709\u89D2\u8272\u3002\u521B\u5EFA\u7B2C\u4E00\u4E2A\u89D2\u8272\u5F00\u59CB\u534F\u4F5C\u5427\u3002","yeaft.vp.crud.edit":"\u7F16\u8F91","yeaft.vp.crud.delete":"\u5220\u9664","yeaft.vp.crud.deleteConfirm":'\u5220\u9664 "{name}"\uFF1F\u4F1A\u4E00\u5E76\u5220\u9664\u78C1\u76D8\u4E0A\u7684 role.md \u6587\u4EF6\u3002',"yeaft.vp.crud.form.create":"\u521B\u5EFA\u89D2\u8272","yeaft.vp.crud.form.update":"\u7F16\u8F91\u89D2\u8272","yeaft.vp.crud.form.vpId":"\u89D2\u8272 ID","yeaft.vp.crud.form.vpId.tooltip":"\u53EA\u80FD\u7528\u5B57\u6BCD\u3001\u6570\u5B57\u3001- \u548C _\uFF0C\u4E0D\u80FD\u4EE5 _ \u5F00\u5934\uFF0C\u4E0D\u80FD\u662F\u7EAF\u6570\u5B57\uFF0C\u4E0D\u80FD\u7528\u4FDD\u7559\u540D\uFF1Aall / user / system / everyone\u3002","yeaft.vp.crud.form.displayName":"\u663E\u793A\u540D\uFF08\u82F1\u6587\uFF09","yeaft.vp.crud.form.displayNameZh":"\u663E\u793A\u540D\uFF08\u4E2D\u6587\uFF09","yeaft.vp.crud.form.description":"\u80FD\u529B\u63CF\u8FF0\uFF08\u82F1\u6587\uFF09","yeaft.vp.crud.form.descriptionZh":"\u80FD\u529B\u63CF\u8FF0\uFF08\u4E2D\u6587\uFF09","yeaft.vp.crud.form.descriptionPlaceholder":"\u4F8B\u5982\uFF1AAPI design, migration planning, and compatibility reviews","yeaft.vp.crud.form.descriptionZhPlaceholder":"\u4F8B\u5982\uFF1AAPI \u8BBE\u8BA1\u3001\u8FC1\u79FB\u89C4\u5212\u4E0E\u517C\u5BB9\u6027\u8BC4\u5BA1","yeaft.vp.crud.form.role":"\u804C\u4F4D","yeaft.vp.crud.form.rolePlaceholder":"\u4F8B\u5982\uFF1A\u4EA7\u54C1\u7ECF\u7406","yeaft.vp.crud.form.traits":"\u7279\u8D28\u6807\u7B7E","yeaft.vp.crud.form.traitsHint":"\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\u7684\u77ED\u6807\u7B7E\uFF08\u4F8B\u5982\uFF1A\u597D\u5947, \u52A1\u5B9E\uFF09\u3002","yeaft.vp.crud.form.modelHint":"\u6A21\u578B\u504F\u597D","yeaft.vp.crud.form.modelHint.none":"\u2014 \u9ED8\u8BA4 \u2014","yeaft.vp.crud.form.modelHint.primary":"\u4E3B\u6A21\u578B","yeaft.vp.crud.form.modelHint.fast":"\u5FEB\u6A21\u578B","yeaft.vp.crud.form.persona":"\u4EBA\u8BBE\uFF08Markdown\uFF09","yeaft.vp.crud.form.personaPlaceholder":"\u63CF\u8FF0\u8FD9\u4E2A\u89D2\u8272\u5982\u4F55\u601D\u8003\u3001\u8868\u8FBE\u3001\u505A\u51B3\u7B56\u2026\u2026","yeaft.vp.crud.form.submit":"\u4FDD\u5B58","yeaft.vp.crud.form.cancel":"\u53D6\u6D88","yeaft.vp.crud.form.ok":"\u683C\u5F0F\u6B63\u786E","yeaft.vp.crud.form.idLocked":"\u521B\u5EFA\u540E\u89D2\u8272 ID \u4E0D\u53EF\u4FEE\u6539\u3002","yeaft.vp.crud.saving":"\u4FDD\u5B58\u4E2D\u2026\u2026","yeaft.vp.crud.saveFailed":"\u4FDD\u5B58\u5931\u8D25\uFF1A{error}","yeaft.vp.crud.deleteFailed":"\u5220\u9664\u5931\u8D25\uFF1A{error}","yeaft.vp.crud.viewPrompt":"\u67E5\u770B prompt","yeaft.vp.crud.view.title":"VP \u63D0\u793A\u8BCD","yeaft.vp.crud.view.personaEmpty":"\uFF08\u672A\u5B9A\u4E49 persona \u6B63\u6587\uFF0C\u53EA\u6709\u57FA\u7840\u5143\u6570\u636E\uFF09","yeaft.vp.crud.view.back":"\u8FD4\u56DE","yeaft.vp.crud.view.editFromHere":"\u7F16\u8F91\u8BE5 VP","yeaft.vp.crud.view.removed":"\u8BE5 VP \u5DF2\u5728\u522B\u5904\u88AB\u5220\u9664\uFF0C\u8FD4\u56DE\u5217\u8868\u3002","yeaft.vp.crud.stockBadge":"\u9884\u88C5","yeaft.vp.crud.stockReadOnly":"\u9884\u88C5 VP \u968F agent \u51FA\u5382\uFF0C\u4E0D\u80FD\u7F16\u8F91\u6216\u5220\u9664\u3002","yeaft.vp.idError.empty_or_non_string":"\u89D2\u8272 ID \u4E0D\u80FD\u4E3A\u7A7A\u3002","yeaft.vp.idError.too_long":"\u89D2\u8272 ID \u592A\u957F\uFF08\u6700\u591A 40 \u5B57\u7B26\uFF09\u3002","yeaft.vp.idError.illegal_character":'\u53EA\u80FD\u4F7F\u7528\u5B57\u6BCD\u3001\u6570\u5B57\u3001"-" \u548C "_"\u3002',"yeaft.vp.idError.underscore_prefix_reserved":'\u89D2\u8272 ID \u4E0D\u80FD\u4EE5 "_" \u5F00\u5934\uFF08\u9884\u7559\u7ED9\u7CFB\u7EDF\u89D2\u8272\uFF09\u3002',"yeaft.vp.idError.pure_digits":"\u89D2\u8272 ID \u4E0D\u80FD\u662F\u7EAF\u6570\u5B57\u3002","yeaft.vp.idError.reserved":"\u89D2\u8272 ID \u4E0D\u80FD\u7528\u4FDD\u7559\u540D\uFF08all / user / system / everyone\uFF09\u3002","yeaft.vp.idError.duplicate":"\u5DF2\u7ECF\u5B58\u5728\u540C ID \u7684\u89D2\u8272\u3002","yeaft.vp.idError.not_found":"\u8BE5 VP \u4E0D\u5B58\u5728\uFF0C\u53EF\u80FD\u5DF2\u88AB\u5220\u9664\u3002","yeaft.vp.idError.stock_readonly":"\u9884\u88C5 VP \u4E0D\u80FD\u7F16\u8F91\u6216\u5220\u9664\u3002","yeaft.vp.idError.unknown":"\u53D1\u751F\u672A\u77E5\u9519\u8BEF\uFF0C\u8BF7\u91CD\u8BD5\u3002","yeaft.vp.reason.personaEdit":"\u4EBA\u8BBE\u5DF2\u66F4\u65B0","yeaft.vp.reason.traitsEdit":"\u7279\u5F81\u5DF2\u66F4\u65B0","yeaft.vp.reason.manualReload":"\u5DF2\u91CD\u65B0\u8F7D\u5165","yeaft.vp.reason.fileRemoved":"\u5DF2\u79FB\u9664","yeaft.vp.reason.toast.updated":"{name}\uFF1A{reason}","yeaft.vp.reason.toast.removed":"{name} \u5DF2\u88AB\u79FB\u9664","yeaft.message.timeAria":"\u53D1\u9001\u4E8E {time}","yeaft.message.llmCall":"{count} \u6B21 LLM \u8C03\u7528","yeaft.message.llmCalls":"{count} \u6B21 LLM \u8C03\u7528","yeaft.message.tokenUsage":"\u603B\u8BA1 {total} \xB7 \u8F93\u5165 {input} \xB7 \u8F93\u51FA {output}","yeaft.user.youLabel":"\u6211","yeaft.session.sidebarTitle":"\u4F1A\u8BDD","yeaft.session.sidebarAria":"\u4F1A\u8BDD\u5217\u8868","yeaft.session.newButton":"+ \u65B0\u5EFA\u4F1A\u8BDD","yeaft.session.newButtonAria":"\u521B\u5EFA\u65B0\u4F1A\u8BDD","yeaft.session.empty":"\u6682\u65E0\u4F1A\u8BDD\u3002","yeaft.session.membersCount":"{count} \u4F4D\u6210\u5458","yeaft.session.oneMember":"1 \u4F4D\u6210\u5458","yeaft.session.noMembers":"\u7A7A\u4F1A\u8BDD \u2014 \u8BF7\u9080\u8BF7 VP","yeaft.session.defaultBadge":"\u9ED8\u8BA4","yeaft.session.defaultName":"\u9ED8\u8BA4\u4F1A\u8BDD","yeaft.session.moreActions":"\u66F4\u591A\u64CD\u4F5C","yeaft.session.archive":"\u5F52\u6863","yeaft.session.archiveConfirm":"\u5F52\u6863\u300C{name}\u300D\uFF1F\u7A0D\u540E\u53EF\u4ECE\u78C1\u76D8\u6062\u590D\u3002","yeaft.session.archivingEllipsis":"\u5F52\u6863\u4E2D\u2026","yeaft.session.delete":"\u5220\u9664","yeaft.session.deleteConfirm":"\u5220\u9664\u300C{name}\u300D\uFF1F\u5C06\u6C38\u4E45\u5220\u9664\u8BE5\u4F1A\u8BDD\u53CA\u5176\u6240\u6709\u6570\u636E\uFF0C\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002","yeaft.session.deletingEllipsis":"\u5220\u9664\u4E2D\u2026","yeaft.session.rename":"\u91CD\u547D\u540D","yeaft.session.copy":"\u590D\u5236\u4F1A\u8BDD","yeaft.session.copying":"\u6B63\u5728\u590D\u5236\u4F1A\u8BDD\u2026","yeaft.session.copyComplete":"\u4F1A\u8BDD\u590D\u5236\u5B8C\u6210","yeaft.session.copyFailed":"\u65E0\u6CD5\u590D\u5236\u4F1A\u8BDD\uFF1A{message}","yeaft.session.openSettings":"\u8BBE\u7F6E","yeaft.session.removeFromList":"\u79FB\u9664","yeaft.session.manageMembers":"\u7BA1\u7406\u6210\u5458","yeaft.session.memberCount.one":"1 \u4F4D\u6210\u5458","yeaft.session.memberCount.other":"{count} \u4F4D\u6210\u5458","yeaft.session.renamePrompt":"\u4E3A\u300C{name}\u300D\u8F93\u5165\u65B0\u540D\u79F0\uFF1A","yeaft.session.renamingEllipsis":"\u91CD\u547D\u540D\u4E2D\u2026","yeaft.session.editModal.renameTitle":"\u91CD\u547D\u540D\u4F1A\u8BDD","yeaft.session.editModal.renameBody":"\u4E3A\u300C{name}\u300D\u9009\u62E9\u4E00\u4E2A\u65B0\u540D\u79F0\u3002","yeaft.session.editModal.renameSubmit":"\u4FDD\u5B58","yeaft.session.editModal.archiveTitle":"\u5F52\u6863\u4F1A\u8BDD","yeaft.session.editModal.archiveBody":"\u5F52\u6863\u300C{name}\u300D\uFF1F\u7A0D\u540E\u53EF\u4ECE\u78C1\u76D8\u6062\u590D\u3002","yeaft.session.editModal.archiveSubmit":"\u5F52\u6863","yeaft.session.editModal.deleteTitle":"\u5220\u9664\u4F1A\u8BDD","yeaft.session.editModal.deleteBody":"\u5220\u9664\u300C{name}\u300D\uFF1F\u5C06\u6C38\u4E45\u5220\u9664\u8BE5\u4F1A\u8BDD\u53CA\u5176\u6240\u6709\u6570\u636E\uFF0C\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002","yeaft.session.editModal.deleteSubmit":"\u5220\u9664","yeaft.session.editModal.newNameLabel":"\u65B0\u540D\u79F0","yeaft.session.editModal.cancel":"\u53D6\u6D88","yeaft.session.editModal.close":"\u5173\u95ED","yeaft.session.error.invalid_name":"\u4F1A\u8BDD\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A\u3002","yeaft.session.error.duplicate":"\u8BE5\u4F1A\u8BDD id \u5DF2\u5B58\u5728\u3002","yeaft.session.error.not_found":"\u672A\u627E\u5230\u8BE5\u4F1A\u8BDD\u3002","yeaft.session.error.agent_offline":"\u8BF7\u8FDE\u63A5 Agent \u540E\u518D\u590D\u5236\u4F1A\u8BDD\u3002","yeaft.session.error.fork_pending":"\u6B63\u5728\u590D\u5236\u4F1A\u8BDD\uFF0C\u8BF7\u7A0D\u5019\u3002","yeaft.session.error.project_inheritance_failed":"\u526F\u672C\u5DF2\u521B\u5EFA\uFF0C\u4F46\u4FDD\u5B58 Project \u5F52\u5C5E\u5931\u8D25\u3002\u8BF7\u5728\u4FA7\u680F\u5C06\u65B0\u4F1A\u8BDD\u79FB\u5165\u539F Project\uFF0C\u4E0D\u8981\u91CD\u590D\u590D\u5236\u3002","yeaft.session.error.session_running":"\u8BF7\u7B49\u5F85\u8BE5\u4F1A\u8BDD\u7684\u5F53\u524D\u56DE\u590D\u5B8C\u6210\u540E\u518D\u590D\u5236\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.workDir.heading":"\u5DE5\u4F5C\u76EE\u5F55","yeaft.session.settings.workDir.help":"\u4E0B\u4E2A\u56DE\u5408\u5C06\u4ECE\u6B64\u76EE\u5F55\u52A0\u8F7D\u9879\u76EE\u6587\u4EF6\u548C\u9879\u76EE\u6307\u4EE4\u3002\u4F1A\u8BDD\u5386\u53F2\u4ECD\u4FDD\u5B58\u5728 Agent \u6570\u636E\u76EE\u5F55\u4E2D\u3002","yeaft.session.settings.workDir.label":"\u8DEF\u5F84","yeaft.session.settings.workDir.placeholder":"/path/to/project","yeaft.session.settings.workDir.save":"\u4FDD\u5B58\u76EE\u5F55","yeaft.session.settings.workDir.saving":"\u4FDD\u5B58\u4E2D\u2026","yeaft.session.settings.workDir.saveFailed":"\u65E0\u6CD5\u4FDD\u5B58\u5DE5\u4F5C\u76EE\u5F55\uFF1A{error}","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.itemInfo":"\u4EFB\u52A1\u4FE1\u606F","workCenter.infoTab.requirement":"\u9700\u6C42","workCenter.infoTab.progress":"\u8FDB\u5EA6","workCenter.infoTab.outputs":"\u4EA7\u51FA","workCenter.infoTab.goals":"\u76EE\u6807","workCenter.infoTab.usage":"\u7528\u91CF","workCenter.infoProgressEmpty":"\u6682\u65E0 Action\u3002","workCenter.infoOutputsEmpty":"\u6682\u65E0\u4EA7\u51FA\u3002","workCenter.infoConversationEmpty":"\u6682\u65E0\u5BF9\u8BDD\u6D88\u606F\u3002","workCenter.workbenchUnavailable":"\u8BF7\u5728\u65B0\u7248 Agent \u548C Server \u4E0A\u6253\u5F00\u6709\u5DE5\u4F5C\u76EE\u5F55\u7684\u5DE5\u4F5C\u9879\u4EE5\u4F7F\u7528\u5DE5\u4F5C\u53F0\u3002","workCenter.openOutputFile":"\u6253\u5F00\u6587\u4EF6\uFF1A{name}","workCenter.returnToSession":"\u8FD4\u56DE Session","workCenter.showNavigation":"\u5C55\u5F00\u5DE5\u4F5C\u4E2D\u5FC3\u5BFC\u822A","workCenter.hideNavigation":"\u6536\u8D77\u5DE5\u4F5C\u4E2D\u5FC3\u5BFC\u822A","workCenter.agents":"Agents","workCenter.expandItemActivity":"\u5C55\u5F00 {title} \u7684\u6267\u884C\u72B6\u6001","workCenter.collapseItemActivity":"\u6536\u8D77 {title} \u7684\u6267\u884C\u72B6\u6001","workCenter.activity":"\u6B63\u5728\u63A8\u8FDB","workCenter.noActivity":"\u6682\u65E0\u6B63\u5728\u63A8\u8FDB\u7684\u5DE5\u4F5C\u9879","workCenter.activityOffline":"\u8FDE\u63A5\u5DF2\u65AD\u5F00 \xB7 \u72B6\u6001\u53EF\u80FD\u4E0D\u662F\u6700\u65B0","workCenter.online":"\u5728\u7EBF","workCenter.offline":"\u79BB\u7EBF","workCenter.close":"\u5173\u95ED\u5DE5\u4F5C\u4E2D\u5FC3","workCenter.searchAndFilters":"\u641C\u7D22\u4E0E\u7B5B\u9009","workCenter.moreActions":"\u66F4\u591A\u64CD\u4F5C","workCenter.navigation":"\u5DE5\u4F5C\u9879\u5BFC\u822A","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.checkingAgents":"\u6B63\u5728\u68C0\u67E5\u5DE5\u4F5C\u4E2D\u5FC3\u53EF\u7528\u72B6\u6001\u2026","workCenter.agentStatusLoadFailed":"\u65E0\u6CD5\u68C0\u67E5\u5DE5\u4F5C\u4E2D\u5FC3\u72B6\u6001\uFF0C\u8BF7\u91CD\u8BD5\u3002","workCenter.retryAgentStatus":"\u91CD\u8BD5\u72B6\u6001\u68C0\u67E5","workCenter.unavailableAgents":"\u5DE5\u4F5C\u4E2D\u5FC3\u5DF2\u914D\u7F6E\u4E3A\u542F\u7528\uFF0C\u4F46\u8FD0\u884C\u65F6\u5F53\u524D\u4E0D\u53EF\u7528\uFF1B\u8BF7\u68C0\u67E5\u6B64 Agent \u7684\u8BBE\u7F6E\u548C\u65E5\u5FD7\u3002","workCenter.disabledAgents":"\u5728\u7EBF Agent \u5C1A\u672A\u542F\u7528\u5DE5\u4F5C\u4E2D\u5FC3\u3002","workCenter.disabledAgentsMany":"{count} \u4E2A\u5728\u7EBF Agent \u5C1A\u672A\u542F\u7528\u5DE5\u4F5C\u4E2D\u5FC3\u3002","workCenter.openAgentSettings":"\u6253\u5F00 Agent \u8BBE\u7F6E","workCenter.openAgentSettingsUpgrade":"\u6253\u5F00 Agent \u8BBE\u7F6E\u5E76\u5347\u7EA7","workCenter.upgradeAgents":"\u5728\u7EBF Agent \u6682\u4E0D\u652F\u6301\u5DE5\u4F5C\u4E2D\u5FC3\u8BBE\u7F6E\u3002","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.executionDuration":"\u6267\u884C\u7528\u65F6","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.resource.title":"\u8D44\u6E90\u9884\u7B97","workCenter.resource.requests":"\u8BF7\u6C42","workCenter.resource.chargedTokens":"Token \u9884\u7B97\u5360\u7528","workCenter.resource.details":"\u6D88\u8017\u660E\u7EC6\u4E0E\u9650\u989D","workCenter.resource.total":"\u603B\u8BA1 \xB7 \u5168\u751F\u547D\u5468\u671F","workCenter.resource.coordinator":"\u534F\u8C03\u5668","workCenter.resource.actions":"Actions","workCenter.resource.usage":"{requests} \u6B21\u8BF7\u6C42 \xB7 \u5360\u7528 {charged} token","workCenter.resource.tokens":"\u5DF2\u62A5\u544A {reported} \xB7 \u9884\u7559 / \u672A\u77E5\u5360\u7528 {reserved} token","workCenter.resource.unknown":"\u7528\u91CF\u672A\u77E5\uFF1A{unknown} \u6B21\u8BF7\u6C42 \xB7 \u5728\u9014\uFF1A{inflight}","workCenter.resource.accounting":"\u9884\u7B97\u5360\u7528\u5DF2\u542B\u9884\u7559\uFF0C\u8BF7\u52FF\u91CD\u590D\u76F8\u52A0\u3002\u5DF2\u62A5\u544A token \u662F\u5DF2\u77E5\u7528\u91CF\uFF0C\u4E0D\u4EE3\u8868\u5B8C\u6574\u8D26\u5355\u3002\u51C6\u5165\u57FA\u4E8E\u4F30\u7B97\uFF0C\u4E0D\u662F\u786C\u6027\u8D39\u7528\u4E0A\u9650\u3002","workCenter.resource.maxRequests":"\u7D2F\u8BA1\u8BF7\u6C42\u4E0A\u9650","workCenter.resource.maxTokens":"\u7D2F\u8BA1 token \u4E0A\u9650","workCenter.resource.maxRunRequests":"\u6BCF\u4E2A Run \u8BF7\u6C42\u4E0A\u9650","workCenter.resource.maxActionAttempts":"\u6BCF\u4E2A Action \u5C1D\u8BD5\u4E0A\u9650","workCenter.resource.maxCoordinatorFailures":"\u534F\u8C03\u5668\u5931\u8D25\u4E0A\u9650","workCenter.resource.attemptLimit":"Action \u5C1D\u8BD5\u8DE8\u4EE3\u7D2F\u8BA1\uFF0C\u540C\u65F6\u53D7\u5404 Action \u539F\u59CB\u4E0A\u9650\u4E0E\u663E\u5F0F\u8FFD\u52A0\u989D\u5EA6\u7EA6\u675F\u3002\u5DF2\u7528 / \u6709\u6548\u4E0A\u9650\uFF1A","workCenter.resource.attemptExtension":"\u8FFD\u52A0 Action \u5C1D\u8BD5\u989D\u5EA6\u4F1A\u6388\u6743\u6B64\u5DE5\u4F5C\u9879\u7684\u6240\u6709\u5F53\u524D\u53CA\u672A\u6765 Action \u589E\u52A0\u5C1D\u8BD5\u6B21\u6570\u3002","workCenter.resource.stopped":"\u6267\u884C\u5DF2\u88AB\u8D44\u6E90\u63A7\u5236\u505C\u6B62\u3002","workCenter.resource.stop.work_item_requests_exhausted":"\u5DF2\u505C\u6B62\uFF1A\u7D2F\u8BA1\u8BF7\u6C42\u9884\u7B97\u8017\u5C3D\u3002","workCenter.resource.stop.work_item_tokens_exhausted":"\u5DF2\u505C\u6B62\uFF1Atoken \u9884\u7B97\u4E0D\u8DB3\u4EE5\u51C6\u5165\u4E0B\u4E00\u6B21\u8BF7\u6C42\u3002","workCenter.resource.stop.run_requests_exhausted":"\u5DF2\u505C\u6B62\uFF1ARun \u8BF7\u6C42\u6570\u8FBE\u5230\u4E0A\u9650\u3002\u6062\u590D\u5C06\u542F\u52A8\u65B0\u7684 Run\u3002","workCenter.resource.stop.action_attempts_exhausted":"\u5DF2\u505C\u6B62\uFF1AAction \u5C1D\u8BD5\u6B21\u6570\u8FBE\u5230\u4E0A\u9650\u3002","workCenter.resource.stop.coordinator_failures_exhausted":"\u5DF2\u505C\u6B62\uFF1A\u534F\u8C03\u5668\u5931\u8D25\u6B21\u6570\u8FBE\u5230\u4E0A\u9650\u3002","workCenter.resource.offline":"Agent \u5DF2\u65AD\u5F00\u3002\u8BF7\u91CD\u65B0\u8FDE\u63A5\u5E76\u5237\u65B0\u540E\u518D\u4FEE\u6539\u8D44\u6E90\u9884\u7B97\u3002","workCenter.resource.stale":"\u8D44\u6E90\u72B6\u6001\u5DF2\u53D8\u5316\u6216\u5C1A\u672A\u786E\u8BA4\u3002\u8BF7\u5237\u65B0\u540E\u91CD\u65B0\u786E\u8BA4\uFF1B\u4E0D\u4F1A\u81EA\u52A8\u91CD\u8BD5\u4EFB\u4F55\u4FEE\u6539\u3002","workCenter.resource.refresh":"\u5237\u65B0\u8D44\u6E90\u72B6\u6001","workCenter.resource.reconfirm":"\u5DF2\u52A0\u8F7D\u6700\u65B0\u72B6\u6001\u3002\u8BF7\u68C0\u67E5\u9650\u989D\uFF0C\u9700\u8981\u65F6\u91CD\u65B0\u786E\u8BA4\u64CD\u4F5C\u3002","workCenter.resource.extend":"\u8FFD\u52A0\u9884\u7B97","workCenter.resource.confirmExtend":"\u786E\u8BA4\u8FFD\u52A0\u9884\u7B97","workCenter.resource.extendHelp":"\u8F93\u5165\u8981\u8FFD\u52A0\u7684\u6B63\u6574\u6570\u989D\u5EA6\uFF0C\u800C\u975E\u65B0\u7684\u603B\u4E0A\u9650\uFF1B\u4E0D\u4FEE\u6539\u7684\u5B57\u6BB5\u7559\u7A7A\u3002\u8FFD\u52A0\u4E0D\u4F1A\u6062\u590D\u6267\u884C\u6216\u6E05\u96F6\u7528\u91CF\u3002","workCenter.resource.current":"\u5F53\u524D\uFF1A{count}","workCenter.resource.invalid":"\u53EA\u80FD\u586B\u5199\u6B63\u5B89\u5168\u6574\u6570\uFF0C\u8FFD\u52A0\u540E\u7684\u4E0A\u9650\u4E5F\u5FC5\u987B\u662F\u5B89\u5168\u6574\u6570\u3002","workCenter.resource.extended":"\u9884\u7B97\u5DF2\u8FFD\u52A0\u3002\u672A\u6062\u590D\u6267\u884C\uFF1B\u51C6\u5907\u597D\u540E\u8BF7\u660E\u786E\u70B9\u51FB\u6062\u590D\u3002","workCenter.resource.resumed":"\u6062\u590D\u8BF7\u6C42\u5DF2\u63A5\u53D7\u3002","workCenter.resource.pending":"\u6B63\u5728\u66F4\u65B0\u8D44\u6E90\u72B6\u6001\u2026","workCenter.resource.close":"\u5173\u95ED\u9884\u7B97\u8868\u5355","workCenter.breadcrumbs":"Work Center \u5BFC\u822A","workCenter.actionNumber":"Action {number}","workCenter.actionBreadcrumb":"Action {number}\uFF1A{description}","workCenter.sourceUnavailable":"\u6765\u6E90 Action \u4E0D\u53EF\u7528","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.goalProgress":"\u76EE\u6807\u8FDB\u5EA6","workCenter.criteriaProgress":"{completed} / {total} \u9879\u9A8C\u6536\u6761\u4EF6\u5DF2\u9A8C\u8BC1","workCenter.criteriaRemaining":"\u5269\u4F59 {count} \u9879","workCenter.criteriaOmitted":"\u6B64\u6709\u754C\u89C6\u56FE\u7701\u7565\u4E86 {count} \u9879\u6761\u4EF6\uFF0C\u603B\u6570\u4ECD\u5305\u542B\u8FD9\u4E9B\u6761\u4EF6\u3002","workCenter.criteriaVerified":"\u6240\u6709\u9A8C\u6536\u6761\u4EF6\u5DF2\u9A8C\u8BC1","workCenter.criteriaPending":"\u5C1A\u672A\u5B9A\u4E49\u9A8C\u6536\u6761\u4EF6","workCenter.goalStatus.passed":"\u5DF2\u9A8C\u8BC1","workCenter.goalStatus.failed":"\u672A\u901A\u8FC7","workCenter.goalStatus.unmet":"\u5F85\u9A8C\u8BC1","workCenter.goalBlockers":"\u963B\u585E\u539F\u56E0","workCenter.evidenceRuns":"\u8BC1\u636E Run","workCenter.deliveredResponse":"\u4EA4\u4ED8\u56DE\u590D","workCenter.responseEvidence":"\u56DE\u590D\u6765\u6E90\u4E0E\u8BC1\u636E","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.resizeActions":"\u8C03\u6574 Actions \u680F\u5BBD\u5EA6\uFF08\u65B9\u5411\u952E\u8C03\u6574\uFF0CHome \u91CD\u7F6E\uFF09","workCenter.closeActions":"\u5173\u95ED Actions","workCenter.actionCount":"{count} \u4E2A Action","workCenter.noActionSummary":"\u6682\u65E0\u6458\u8981","workCenter.actionProgress":"{completed} / {total} \u4E2A Action","workCenter.currentAction":"\u5F53\u524D Action","workCenter.expandActions":"\u5C55\u5F00 Action","workCenter.collapseActions":"\u6536\u8D77","workCenter.actionObjective":"\u8FD9\u6B21\u8981\u505A\u4EC0\u4E48","workCenter.actionApproach":"\u51C6\u5907\u600E\u4E48\u505A","workCenter.actionExpectedOutcome":"\u671F\u5F85\u7684\u7ED3\u679C","workCenter.dependencies":"\u6765\u6E90 Action","workCenter.actionResult":"\u6700\u65B0\u7ED3\u679C","workCenter.currentProgress":"\u5F53\u524D\u8FDB\u5EA6","workCenter.requirementAndAcceptance":"\u9700\u6C42\u4E0E\u9A8C\u6536","workCenter.taskInformation":"\u4EFB\u52A1\u4FE1\u606F\u4E0E\u7528\u91CF","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.replyToAction":"\u56DE\u590D\u8FD9\u4E2A Action","workCenter.replyToCoordinator":"\u56DE\u590D\u534F\u8C03\u8005","workCenter.replyHelp":"\u5728\u4E0B\u65B9\u5BF9\u8BDD\u4E2D\u56DE\u590D\u4F60\u7684\u51B3\u5B9A\u6216\u5904\u7406\u8981\u6C42\uFF1B\u53D1\u9001\u524D\u4E0D\u4F1A\u6267\u884C\u4EFB\u4F55\u786E\u8BA4\u3002","workCenter.inputStale":"\u76EE\u6807\u72B6\u6001\u5DF2\u53D8\u5316\uFF0C\u56DE\u7B54\u5C1A\u672A\u5E94\u7528\u3002\u8F93\u5165\u5DF2\u4FDD\u7559\uFF0C\u8BF7\u6838\u5BF9\u5237\u65B0\u540E\u7684\u76EE\u6807\u518D\u53D1\u9001\u3002","workCenter.actionInputRetryHint":"\u8865\u5145\u4FEE\u6B63\u8BF4\u660E\u6216\u6587\u4EF6\u540E\uFF0C\u4F7F\u7528\u65B0\u4E0A\u4E0B\u6587\u91CD\u65B0\u6267\u884C\u8FD9\u4E2A Action\u3002","workCenter.actionInputContinueHint":"\u8FD9\u91CC\u53EA\u76F4\u63A5\u5E72\u9884\u5F53\u524D Action\u3002","workCenter.actionFailedTitle":"\u8FD9\u4E2A Action \u4E3A\u4EC0\u4E48\u5931\u8D25","workCenter.actionClosedTitle":"\u8FD9\u4E2A Action \u4E3A\u4EC0\u4E48\u88AB\u5173\u95ED","workCenter.failedAt":"\u5931\u8D25\u65F6\u95F4","workCenter.closedAt":"\u5173\u95ED\u65F6\u95F4","workCenter.actionFailureRecovery":"\u5728\u5DE5\u4F5C\u9879\u8F93\u5165\u6846\u4E2D\u9009\u62E9\u6B64 Action\uFF0C\u518D\u53D1\u9001\u4FEE\u6B63\u8BF4\u660E\u3002","workCenter.sendInput":"\u53D1\u9001\u7ED9 Action","workCenter.sendingInput":"\u6B63\u5728\u53D1\u9001\u2026","workCenter.retryAction":"\u91CD\u8BD5 Action","workCenter.sendAndRetryAction":"\u53D1\u9001\u5E76\u91CD\u8BD5 Action","workCenter.coordinatorDecision.guide_actions":"\u5DF2\u66F4\u65B0 Action \u6307\u4EE4","workCenter.coordinatorDecision.replan":"\u5DF2\u66F4\u65B0\u76EE\u6807\u6216\u8BA1\u5212","workCenter.coordinatorDecision.request_human":"\u9700\u8981\u4EBA\u5DE5\u8865\u5145\u4FE1\u606F","workCenter.conversation":"\u5BF9\u8BDD","workCenter.contentPane":"\u5185\u5BB9","workCenter.workItemPanes":"\u5DE5\u4F5C\u9879\u9762\u677F","workCenter.coordinator":"\u534F\u8C03\u8005","workCenter.coordinatorTargetHint":"\u5DE5\u4F5C\u9879\u89C4\u5212\u4E0E\u534F\u8C03","workCenter.composerTarget":"\u6D88\u606F\u76EE\u6807","workCenter.targetUnavailable":"\u6240\u9009 Action \u5DF2\u4E0D\u53EF\u7528","workCenter.targetUnavailableHelp":"\u53D1\u9001\u524D\u8BF7\u9009\u62E9\u5176\u4ED6\u76EE\u6807\uFF1B\u7CFB\u7EDF\u6CA1\u6709\u91CD\u5B9A\u5411\u8FD9\u4EFD\u8349\u7A3F\u3002","workCenter.sendToCoordinatorInstead":"\u6539\u53D1\u7ED9 Coordinator","workCenter.sendToTarget":"\u53D1\u9001\u7ED9 {target}","workCenter.answerWithTarget":"\u5728\u5BF9\u8BDD\u8F93\u5165\u6846\u4E2D\u9009\u62E9\u76F8\u5173\u76EE\u6807\uFF0C\u7136\u540E\u56DE\u590D\u3002","workCenter.conversationThinking":"\u5904\u7406\u4E2D\u2026","workCenter.conversationReadOnly":"\u8FD9\u4E2A\u5DE5\u4F5C\u9879\u5DF2\u5173\u95ED\uFF0C\u5BF9\u8BDD\u8BB0\u5F55\u4ECD\u53EF\u67E5\u770B\u3002","workCenter.conversationPlaceholder":"\u7EE7\u7EED\u8BA8\u8BBA\u8FD9\u4E2A\u5DE5\u4F5C\u9879","workCenter.sendMessage":"\u53D1\u9001\u6D88\u606F","workCenter.messageSpeakerRole":"{name} \xB7 {role}","workCenter.originalRequest":"\u539F\u59CB\u9700\u6C42","workCenter.actionMessageScopeTitle":"\u7ED9\u8FD9\u4E2A Action \u53D1\u6D88\u606F","workCenter.actionMessageScope":"\u6D88\u606F\u53EA\u53D1\u9001\u7ED9\u5F53\u524D Action\u3002","workCenter.actionConversation":"\u5BF9\u8BDD","workCenter.actionConversationWith":"Action \u6267\u884C\u8005","workCenter.actionViews":"Action \u89C6\u56FE","workCenter.actionExecutor":"\u6267\u884C\u8005","workCenter.actionExecutorPending":"\u7B49\u5F85\u5206\u914D\u6267\u884C\u8005","workCenter.actionInformation":"Action \u4FE1\u606F","workCenter.messageExecutor":"\u7ED9 {name} \u53D1\u6D88\u606F","workCenter.actionChatPlaceholder":"\u5728\u5BF9\u8BDD\u8F93\u5165\u6846\u4E2D\u7ED9 {name} \u53D1\u6D88\u606F","workCenter.statusLabel":"\u72B6\u6001","workCenter.llmRequestsLabel":"LLM \u8BF7\u6C42","workCenter.loopsLabel":"Loops","workCenter.toolsLabel":"\u5DE5\u5177","workCenter.tokensLabel":"Tokens","workCenter.workItemMessagePlaceholder":"\u8865\u5145\u6574\u4E2A Work Item \u7684\u65B9\u5411\u6216\u7EA6\u675F","workCenter.sendWorkItemMessage":"\u53D1\u9001\u7ED9 Work Item","workCenter.fromSession":"\u4ECE\u5F53\u524D Session \u521B\u5EFA\u5DE5\u4F5C\u9879","workCenter.llmRequestCount":"{count} \u6B21 LLM \u8BF7\u6C42","workCenter.loopCount":"{count} \u6B21 Loop","workCenter.toolCount":"{count} \u4E2A\u5DE5\u5177","workCenter.tokenCount":"{count} tokens","workCenter.tokenBreakdown":"\u8F93\u5165 {input} / \u8F93\u51FA {output} / \u7F13\u5B58 {cache}","workCenter.guidance":"\u7ED9\u5F53\u524D Action \u8865\u5145\u63D0\u793A","workCenter.guidanceHint":"\u8865\u5145\u7EA6\u675F\uFF0C\u6216\u8C03\u6574\u5F53\u524D Action \u7684\u6267\u884C\u65B9\u5411","workCenter.guidanceRestartHint":"\u53D1\u9001\u540E\u4F1A\u4F7F\u7528\u65B0\u63D0\u793A\u91CD\u542F\u5F53\u524D Action\u3002","workCenter.sendGuidance":"\u53D1\u9001\u63D0\u793A","workCenter.reuseMemory":"\u4F7F\u7528\u76F8\u5173 Agent memory \u548C\u6B64\u9879\u76EE\u7684\u5DF2\u5B8C\u6210\u5DE5\u4F5C","workCenter.reuseMemoryHelp":"\u5305\u62EC\u53D7 scope \u7EA6\u675F\u7684 Agent memory\uFF0C\u4EE5\u53CA canonical \u9879\u76EE\u76EE\u5F55\u76F8\u540C\u7684\u5DF2\u5B8C\u6210 Work Item \u7ED3\u6784\u5316\u6458\u8981\u548C\u8BC1\u636E\uFF1B\u4E0D\u4F1A\u590D\u7528\u539F\u59CB\u5DE5\u5177\u8F93\u51FA\u3002","workCenter.resumeAnswer":"\u56DE\u7B54\u7B49\u5F85\u4E2D\u7684\u95EE\u9898","workCenter.resumeAnswerHint":"\u63D0\u4F9B\u7EE7\u7EED\u6267\u884C\u6240\u9700\u7684\u4FE1\u606F","workCenter.answerInActionDetail":"\u5728\u5BF9\u8BDD\u8F93\u5165\u6846\u4E2D\u5C06\u76EE\u6807\u8BBE\u4E3A\u5F53\u524D Action\uFF0C\u7136\u540E\u56DE\u590D\u3002","workCenter.selectPrompt":"\u9009\u62E9\u4E00\u4E2A\u5DE5\u4F5C\u9879\uFF0C\u67E5\u770B\u5B83\u7684\u6D41\u7A0B\u3002","workCenter.createHint":"\u63CF\u8FF0\u4F60\u9700\u8981\u4EC0\u4E48\uFF0CCoordinator \u4F1A\u6301\u7EED\u521B\u5EFA\u5F53\u524D\u5FC5\u8981\u7684 Actions\uFF0C\u76F4\u5230\u9A8C\u6536\u6761\u4EF6\u5F97\u5230\u9A8C\u8BC1\u3002","workCenter.requirement":"\u9700\u6C42","workCenter.requirementHint":"\u7528\u81EA\u7136\u8BED\u8A00\u63CF\u8FF0\u95EE\u9898\u3001\u671F\u671B\u7ED3\u679C\u548C\u5FC5\u8981\u7EA6\u675F","workCenter.requirementHelp":"Coordinator \u4F1A\u5B8C\u5584\u76EE\u6807\u4E0E\u9A8C\u6536\u6761\u4EF6\uFF0C\u5E76\u968F\u7740\u8BC1\u636E\u4EA7\u751F\u52A8\u6001\u521B\u5EFA Actions\u3002","workCenter.titleField":"\u6807\u9898","workCenter.titleHint":"\u7B80\u77ED\u3001\u660E\u786E\u5730\u63CF\u8FF0\u9884\u671F\u7ED3\u679C","workCenter.goalHint":"\u8BF4\u660E Agent \u5FC5\u987B\u4EA4\u4ED8\u7684\u6700\u7EC8\u7ED3\u679C","workCenter.criteriaHint":"\u6BCF\u884C\u4E00\u6761\u9A8C\u6536\u6761\u4EF6","workCenter.attachments":"\u9644\u4EF6","workCenter.outputs":"\u4EA7\u51FA","workCenter.deliveryTarget":"\u4EA4\u4ED8\u76EE\u6807","workCenter.deliveryTargetAsk":"\u4EA4\u4ED8\u524D\u8BE2\u95EE\u6211","workCenter.deliveryTargetResponse":"\u56DE\u590D","workCenter.deliveryTargetFiles":"\u5DE5\u4F5C\u76EE\u5F55\u4E2D\u7684\u6587\u4EF6","workCenter.deliveryTargetPr":"\u521B\u5EFA\u62C9\u53D6\u8BF7\u6C42","workCenter.deliveryTargetMerge":"\u5408\u5E76\u5DF2\u6279\u51C6\u7684\u62C9\u53D6\u8BF7\u6C42","workCenter.deliveryTargetHelp":"\u201C\u56DE\u590D\u201D\u4EA4\u4ED8\u6709\u8BC1\u636E\u652F\u6301\u7684\u7B54\u590D\uFF0C\u4E0D\u8981\u6C42\u4EE3\u7801\u4EA7\u7269\u3002\u4EE3\u7801\u7C7B\u4EA4\u4ED8\u4ECD\u987B\u9075\u5B88\u8BC4\u5BA1\u4E0E\u5408\u5E76\u7B56\u7565\u3002","workCenter.deliveryInstructions":"\u4EA4\u4ED8\u76EE\u6807\u8BF4\u660E","workCenter.deliveryInstructionsHint":"\u4F8B\u5982\uFF1A\u53D1\u5E03\u7248\u672C\u5E76\u603B\u7ED3\u6539\u52A8","workCenter.deliveryInstructionsHelp":"\u53EF\u9009\u62E9\u4EE5\u524D\u7528\u8FC7\u7684\u76EE\u6807\uFF0C\u4E5F\u53EF\u76F4\u63A5\u8F93\u5165\u65B0\u76EE\u6807\uFF1B\u4E0D\u4F1A\u56E0\u6B64\u83B7\u5F97\u989D\u5916\u4EA4\u4ED8\u6743\u9650\u3002","workCenter.attachmentsHelp":"\u56FE\u7247\u3001PDF \u548C\u6587\u672C\u6587\u4EF6\u4F1A\u6301\u7EED\u7ED1\u5B9A\u5230\u6B64 Work Item\uFF0C\u5E76\u63D0\u4F9B\u7ED9\u6BCF\u4E2A Action\u3002","workCenter.attachmentsUnsupported":"\u6240\u9009 Agent \u4E0D\u652F\u6301 Work Item \u9644\u4EF6\u3002","workCenter.addAttachments":"\u6DFB\u52A0\u6587\u4EF6","workCenter.attachmentsUploading":"\u4E0A\u4F20\u4E2D\u2026","workCenter.attachmentsUploadFailed":"\u9644\u4EF6\u4E0A\u4F20\u5931\u8D25","workCenter.pendingEnvelopeLocked":"\u6709\u4E00\u6761\u672A\u786E\u8BA4\u8BF7\u6C42\u5DF2\u9501\u5B9A\u5230\u539F\u59CB\u8EAB\u4EFD\u3002","workCenter.replacePendingAttachments":"\u66FF\u6362\u9644\u4EF6","workCenter.discardPendingEnvelope":"\u653E\u5F03\u5F85\u786E\u8BA4\u8BF7\u6C42","workCenter.pendingEnvelopeChanged":"\u5F85\u786E\u8BA4\u8BF7\u6C42\u5DF2\u53D8\u5316\uFF0C\u8BF7\u91CD\u65B0\u6253\u5F00\u8BE5\u5DE5\u4F5C\u9879\u540E\u518D\u8BD5\u3002","workCenter.removeAttachment":"\u4ECE\u8349\u7A3F\u4E2D\u79FB\u9664","workCenter.previewAttachment":"\u6253\u5F00\u9644\u4EF6","workCenter.openAttachmentNamed":"\u6253\u5F00\u9644\u4EF6 {name}","workCenter.openingAttachment":"\u6B63\u5728\u6253\u5F00\u9644\u4EF6\u2026","workCenter.attachmentPreviewFailed":"\u65E0\u6CD5\u6253\u5F00\u9644\u4EF6\uFF0C\u8BF7\u91CD\u8BD5\u3002","workCenter.attachmentOpenBlocked":"\u6D4F\u89C8\u5668\u963B\u6B62\u4E86\u9644\u4EF6\u7A97\u53E3\uFF0C\u8BF7\u5141\u8BB8\u5F39\u51FA\u7A97\u53E3\u540E\u91CD\u8BD5\u3002","workCenter.execution":"\u6267\u884C\u65B9\u5F0F","workCenter.executionHint":"\u9009\u62E9\u5DE5\u4F5C\u9879\u5728\u54EA\u91CC\u6267\u884C\uFF0C\u4EE5\u53CA\u521B\u5EFA\u540E\u662F\u5426\u7ACB\u5373\u5F00\u59CB\u3002","workCenter.workDir":"\u5DE5\u4F5C\u76EE\u5F55","workCenter.workDirHint":"\u9009\u62E9\u4E00\u4E2A\u5DF2\u5B58\u5728\u7684\u9879\u76EE\u76EE\u5F55","workCenter.chooseFolder":"\u9009\u62E9\u6587\u4EF6\u5939","workCenter.workDirPickerHelp":"\u4ECE\u5F53\u524D Agent \u7684\u771F\u5B9E\u76EE\u5F55\u4E2D\u9009\u62E9\u5DF2\u5B58\u5728\u7684\u6587\u4EF6\u5939\u3002","workCenter.folderPickerHint":"\u9009\u62E9\u8FD9\u4E2A\u5DE5\u4F5C\u9879\u53EF\u4EE5\u8BFB\u53D6\u548C\u4FEE\u6539\u7684\u9879\u76EE\u76EE\u5F55\u3002","workCenter.folderPickerSelectionHint":"\u53CC\u51FB\u8FDB\u5165\u76EE\u5F55\uFF0C\u6216\u9009\u4E2D\u76EE\u5F55\u540E\u786E\u8BA4\u3002","workCenter.schedule":"\u8BA1\u5212","workCenter.scheduleStatus":"\u8BA1\u5212\u72B6\u6001","workCenter.scheduleEnabled":"\u5DF2\u542F\u7528","workCenter.scheduleDisabled":"\u5DF2\u505C\u7528","workCenter.scheduleRunsAt":"\u8BA1\u5212\u6267\u884C\u4E8E","workCenter.scheduleTriggered":"\u8BA1\u5212\u5DF2\u89E6\u53D1","workCenter.schedulePaused":"\u8BA1\u5212\u5DF2\u6682\u505C","workCenter.scheduleWorkItem":"\u5B9A\u65F6\u6267\u884C\u6B64\u5DE5\u4F5C\u9879","workCenter.scheduleWorkItemHint":"\u5C06\u5176\u6301\u4E45\u4FDD\u5B58\u4E3A\u8349\u7A3F\uFF0C\u5E76\u5728\u6240\u9009\u672C\u5730\u65F6\u95F4\u6267\u884C\u4E00\u6B21\u3002","workCenter.scheduleAt":"\u5F00\u59CB\u65F6\u95F4","workCenter.enableSchedule":"\u542F\u7528\u8BA1\u5212","workCenter.disableSchedule":"\u505C\u7528\u8BA1\u5212","workCenter.startImmediately":"\u7ACB\u5373\u5F00\u59CB","workCenter.startImmediatelyHint":"\u5173\u95ED\u540E\u5C06\u521B\u5EFA\u4E3A\u8349\u7A3F\uFF0C\u786E\u8BA4\u65E0\u8BEF\u540E\u518D\u5F00\u59CB\u3002","workCenter.creating":"\u521B\u5EFA\u4E2D\u2026","workCenter.create":"\u521B\u5EFA","workCenter.status.draft":"\u8349\u7A3F","workCenter.status.ready":"\u5F85\u6267\u884C","workCenter.status.running":"\u6267\u884C\u4E2D","workCenter.status.waiting":"\u7B49\u5F85\u4E2D","workCenter.status.needs_attention":"\u9700\u8981\u5904\u7406","workCenter.status.done":"\u5DF2\u5B8C\u6210","workCenter.status.cancelled":"\u5DF2\u53D6\u6D88","workCenter.status.completed":"\u5DF2\u5B8C\u6210","workCenter.status.failed":"\u5931\u8D25","workCenter.status.closed":"\u5DF2\u5173\u95ED","workCenter.status.superseded":"\u5DF2\u66FF\u4EE3","workCenter.action.triage":"\u5206\u6790","workCenter.action.implement":"\u5B9E\u73B0","workCenter.action.review":"\u8BC4\u5BA1","workCenter.action.integrate":"\u96C6\u6210","workCenter.action.deliver":"\u4EA4\u4ED8","workCenter.action.test":"\u6D4B\u8BD5","workCenter.action.research":"\u7814\u7A76","workCenter.action.design":"\u8BBE\u8BA1","workCenter.action.diagnose":"\u8BCA\u65AD","workCenter.action.migrate":"\u8FC1\u79FB","workCenter.action.document":"\u6587\u6863","workCenter.action.operate":"\u8FD0\u7EF4","workCenter.action.write":"\u5199\u4F5C","workCenter.action.create_vp":"\u521B\u5EFA VP","workCenter.action.custom":"\u81EA\u5B9A\u4E49","workCenter.assignment.auto":"\u4F7F\u7528\u4EFB\u52A1\u6D41\u7B56\u7565","workCenter.model.inherit":"\u4F7F\u7528\u4EFB\u52A1\u6D41\u6A21\u578B","workCenter.model.defaultProvider":"\u9ED8\u8BA4 Provider","workCenter.planPreview":"\u6267\u884C\u8BA1\u5212","workCenter.planPreviewHelp":"\u6839\u636E\u5F53\u524D Agent \u7684 VP \u6C60\u548C\u6A21\u578B\u8BBE\u7F6E\u5B9E\u65F6\u89E3\u6790\u3002","workCenter.settings.title":"\u5DE5\u4F5C\u4E2D\u5FC3\u8BBE\u7F6E","workCenter.settings.subtitle":"\u914D\u7F6E Coordinator\uFF0C\u4EE5\u53CA AI \u52A8\u6001\u89C4\u5212\u4F7F\u7528\u7684 Action \u63D0\u793A\u8BCD\u3001\u6A21\u578B\u548C effort\u3002","workCenter.settings.workflow":"\u4EFB\u52A1\u6D41","workCenter.settings.workflowHelp":"Coordinator \u4F1A\u9488\u5BF9\u4EFB\u52A1\u52A8\u6001\u9009\u62E9 Action \u548C\u6267\u884C\u8005\u3002","workCenter.settings.aiWorkflowHelp":"Coordinator \u53EA\u521B\u5EFA\u5F53\u524D\u5FC5\u8981\u7684\u4EFB\u52A1\u4E13\u5C5E Action\u3002\u5185\u7F6E Action \u7B56\u7565\u662F\u53EF\u590D\u7528\u6A21\u677F\uFF1B\u9700\u8981\u65F6 Coordinator \u53EF\u4EE5\u521B\u5EFA\u7CBE\u786E\u7684\u9886\u57DF\u7C7B\u578B\u3002","workCenter.settings.globalInstructions":"Agent \u5168\u5C40\u6307\u4EE4","workCenter.settings.globalInstructionsHint":"\u4F8B\u5982\uFF1A\u9075\u5FAA\u4ED3\u5E93\u53D1\u5E03\u6D41\u7A0B\u3001\u5FC5\u987B\u72EC\u7ACB\u8BC4\u5BA1\uFF0C\u672A\u7ECF\u660E\u786E\u6279\u51C6\u4E0D\u5F97\u521B\u5EFA\u90E8\u7F72 tag\u3002","workCenter.settings.globalInstructionsHelp":"\u4FDD\u5B58\u5728 Agent \u7EA7\uFF0C\u5E76\u51BB\u7ED3\u8FDB\u6BCF\u4E2A\u65B0 Work Item\uFF1B\u5BF9 triage \u548C\u6240\u6709\u751F\u6210\u7684 Action \u751F\u6548\uFF0C\u4F18\u5148\u7EA7\u4F4E\u4E8E Work Item \u5951\u7EA6\u53CA\u7CFB\u7EDF/\u5DE5\u5177\u5B89\u5168\u89C4\u5219\u3002\u5DF2\u6709 Work Item \u4FDD\u7559\u539F\u5FEB\u7167\u3002","workCenter.settings.actionPolicies":"\u5185\u7F6E Action \u7B56\u7565","workCenter.settings.actionPoliciesHelp":"\u8FD9\u4E9B\u662F\u53EF\u590D\u7528\u7684\u6267\u884C\u57FA\u7EBF\uFF0C\u4E0D\u662F\u56FA\u5B9A\u5DE5\u4F5C\u6D41\u3002\u672A\u77E5\u7684\u9886\u57DF Action \u7C7B\u578B\u4F1A\u4F7F\u7528\u201C\u81EA\u5B9A\u4E49\u201D\u7B56\u7565\uFF0C\u5E76\u4FDD\u7559 triage \u751F\u6210\u7684\u7C7B\u578B\u548C\u4EFB\u52A1\u76EE\u6807\u3002","workCenter.settings.dynamicInstructionHelp":"AI \u4F1A\u52A0\u5165 Work Item \u5951\u7EA6\u3001\u5168\u5C40\u6307\u4EE4\u3001\u524D\u5E8F Action \u4E0A\u4E0B\u6587\u3001memory \u548C\u4EFB\u52A1\u4E13\u5C5E\u76EE\u6807\uFF1B\u8FD9\u91CC\u5B9A\u4E49\u8BE5 Action \u7C7B\u578B\u7684\u53EF\u590D\u7528\u884C\u4E3A\u3002","workCenter.settings.models":"\u6A21\u578B","workCenter.settings.modelsHelp":"Provider \u548C\u51ED\u8BC1\u4ECD\u7531 Agent LLM \u8BBE\u7F6E\u7BA1\u7406\uFF1B\u5DE5\u4F5C\u4E2D\u5FC3\u53EA\u9009\u62E9\u53EF\u7528\u6A21\u578B\u3002","workCenter.settings.dynamicModelsHelp":"Coordinator \u4E0E\u5B9E\u9645\u6267\u884C Action \u7684\u6A21\u578B\u53EF\u4EE5\u5206\u522B\u914D\u7F6E\u3002","workCenter.settings.coordinatorModel":"Coordinator","workCenter.settings.coordinatorModelHelp":"\u7528\u4E8E Work Item \u5BF9\u8BDD\u3001\u4FEE\u6539\u76EE\u6807\u548C\u91CD\u65B0\u89C4\u5212\uFF1B\u4E0D\u4F1A\u6267\u884C\u9879\u76EE\u5DE5\u5177\u3002","workCenter.settings.allActions":"\u6240\u6709 Action \u7684\u515C\u5E95\u7B56\u7565","workCenter.settings.maxConcurrentActions":"\u6700\u5927\u5E76\u53D1 Action \u6570","workCenter.settings.maxConcurrentActionsHelp":"\u9ED8\u8BA4 3\u3002\u975E Git\u3001\u810F\u5DE5\u4F5C\u533A\u3001\u5171\u4EAB\u526F\u4F5C\u7528\u548C\u96C6\u6210 Action \u4ECD\u4F1A\u4E32\u884C\u6267\u884C\u3002","workCenter.workItemType":"\u7C7B\u578B","workCenter.typeAuto":"Auto \u2014 \u7531 LLM \u63A8\u65AD","workCenter.typeHelp":"\u53EF\u9009\u62E9\u4EFB\u52A1\u7C7B\u522B\uFF0C\u4E5F\u53EF\u8BA9 AI \u81EA\u52A8\u63A8\u65AD\uFF1B\u5177\u4F53 Actions \u59CB\u7EC8\u7531 AI \u89C4\u5212\u3002","workCenter.planning":"\u89C4\u5212\u4E2D","workCenter.aiPlan":"Coordinator \u9A71\u52A8\u6267\u884C","workCenter.aiPlanHelp":"Coordinator \u4F1A\u4F9D\u636E\u5F53\u524D\u8BC1\u636E\u9009\u62E9\u4E0B\u4E00\u6279 Action \u548C\u6267\u884C\u8005\uFF0C\u4E0D\u518D\u9884\u5148\u751F\u6210\u5DE5\u4F5C\u6D41\u56FE\uFF1B\u6A21\u578B\u4E0E effort \u7531 Work Center \u8BBE\u7F6E\u63A7\u5236\u3002","workCenter.settings.manageProviders":"\u7BA1\u7406 Agent \u6A21\u578B","workCenter.settings.assignment":"VP \u9009\u62E9","workCenter.settings.assignment.auto":"\u4ECE\u5168\u90E8 VP \u81EA\u52A8\u9009\u62E9","workCenter.settings.assignment.pool":"\u5019\u9009\u6C60","workCenter.settings.assignment.fixed":"\u56FA\u5B9A VP","workCenter.settings.capability":"\u6240\u9700\u80FD\u529B","workCenter.settings.vp":"Virtual Person","workCenter.settings.poolMembers":"\u5019\u9009 VP","workCenter.settings.modelPolicy":"\u6A21\u578B\u7B56\u7565","workCenter.settings.model.inherit":"\u7EE7\u627F VP \u504F\u597D","workCenter.settings.model.primary":"Agent \u4E3B\u6A21\u578B","workCenter.settings.model.fast":"Agent \u5FEB\u6A21\u578B","workCenter.settings.model.specific":"\u6307\u5B9A\u6A21\u578B","workCenter.settings.model.tag":"\u6A21\u578B\u6807\u7B7E","workCenter.settings.modelTag":"\u6807\u7B7E","workCenter.settings.modelTag.fast":"\u5FEB\u901F","workCenter.settings.modelTag.balanced":"\u6B63\u5E38","workCenter.settings.modelTag.ultimate":"\u6781\u81F4","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 pf,gf=V(()=>{bc();wc();pf={...of,...lf,"quickSend.composer.label":"Quick send","quickSend.composer.send":"Quick send {number}: {name}","common.loading":"Loading...","common.confirm":"OK","common.apply":"Apply","common.cancel":"Cancel","common.delete":"Delete","common.copy":"Copy","common.copied":"Copied","common.close":"Close","common.refresh":"Refresh","common.open":"Open","common.save":"Save","common.saving":"Saving...","common.search":"Search","common.back":"Back","common.noSubdirectories":"No subdirectories","common.drives":"Drives","common.rootDir":"Root","common.comma":", ","common.select":"Select","common.retry":"Retry","mermaid.export":"Export","mermaid.exportMd":"Export MD","mermaid.exportPng":"Export PNG","mermaid.exportJpg":"Export JPG","login.subtitle":"Yeaft Web Code Agent","login.username":"Username","login.password":"Password","login.login":"Login","login.loggingIn":"Logging in...","login.enterUsername":"Please enter your username","login.enterPassword":"Please enter your password","login.noAccount":"Don't have an account?","login.registerWithCode":"Register","login.or":"or","login.usePassword":"Sign in with username & password","login.useSso":"Back to single sign-on","login.noProviders":"No third-party sign-in providers are enabled.","login.microsoft":"Sign in with Microsoft","login.github":"Sign in with GitHub","login.google":"Sign in with Google","login.wechat":"Sign in with WeChat","login.alipay":"Sign in with Alipay","login.wechat.mobileUnsupported":"Sign in with WeChat is only available on PC. Please scan the QR code from a desktop browser.","login.alipay.mobileWaiting":"Waiting for you to confirm in the Alipay app\u2026 Once you finish, return to this page and you will be signed in automatically.","login.alipay.relaunch":"Open Alipay again","login.qr.title":"Scan to sign in","login.qr.titleAlipay":"Sign in with Alipay","login.qr.titleWechat":"Sign in with WeChat","login.qr.hint":"Scan the QR code with your phone to authorize.","login.error.enterUsername":"Please enter your username","login.error.enterPassword":"Please enter your password","login.error.enter6Digit":"Please enter a 6-digit code","login.error.enterInviteCode":"Please enter the invite code","login.error.usernameMinLen":"Username must be at least 2 characters","login.error.passwordMinLen":"Password must be at least 6 characters","login.error.passwordMismatch":"Passwords do not match","login.error.enterVerifyCode":"Please enter the verification code","login.error.loginFailed":"Login failed","login.forgot.link":"Forgot password?","login.forgot.title":"Reset your password","login.forgot.emailHint":"Enter the email address on your account. We will send a 6-digit reset code.","login.forgot.sendCode":"Send Reset Code","login.forgot.sending":"Sending...","login.forgot.codeSent":"If the email is on file, a 6-digit reset code has been sent. Enter it below along with your new password.","login.forgot.resetBtn":"Reset Password","login.forgot.resetting":"Resetting...","login.forgot.success":"Password reset. You can now sign in with your new password.","login.forgot.emailInvalid":"Please enter a valid email","login.register.title":"New User Registration","login.register.inviteCode":"Invite Code","login.register.username":"Username","login.register.password":"Password (min 6 characters)","login.register.confirmPassword":"Confirm Password","login.register.email":"Email (optional)","login.register.submit":"Register","login.register.submitting":"Registering...","login.register.back":"Back to Login","login.register.success":"Registration successful, please login","login.register.enterCode":"Please enter the invite code","login.register.usernameMin":"Username must be at least 2 characters","login.register.passwordMin":"Password must be at least 6 characters","login.register.passwordMismatch":"Passwords do not match","login.totp.setupTitle":"Set Up Two-Factor Authentication","login.totp.setupHint":"Scan the QR code below with Microsoft Authenticator or Google Authenticator","login.totp.manualKey":"Or enter the key manually:","login.totp.enterCode":"Enter 6-digit code","login.totp.complete":"Complete Setup","login.totp.verifying":"Verifying...","login.totp.verify":"Verify","login.totp.prompt":"Enter the code from your Authenticator app","login.totp.invalidCode":"Please enter a 6-digit code","login.email.codeSent":"Verification code sent to {email}","login.email.enterCode":"Enter verification code","login.email.verify":"Verify","login.email.verifying":"Verifying...","login.email.enterCodeError":"Please enter the verification code","chat.agent.select":"Select Agent","chat.agent.manage":"Manage Agents","chat.agent.count":"{count} agents","chat.agent.updatesAvailable":"{count} Agent update(s) available","chat.agent.updateAvailable":"Update available: v{version}","chat.agent.none":"No Agents","chat.agent.restarting":"Restarting","agentSettings.open":"Agent settings","agentSettings.manage":"Manage","agentSettings.eyebrow":"Local runtime","agentSettings.title":"Agent settings","agentSettings.description":"Inspect and configure each connected Agent without mixing runtime controls into account settings.","agentSettings.agentList":"Agent","agentSettings.categories":"Agent setting categories","agentSettings.categories.operations":"Operations","agentSettings.categories.trace":"Trace","agentSettings.categories.llm":"LLM configuration","agentSettings.selectedAgent":"Selected Agent","agentSettings.online":"Online","agentSettings.offline":"Offline","agentSettings.empty":"No Agents are available.","agentSettings.runtime.title":"Runtime","agentSettings.runtime.description":"Identity, workspace, and local background processing.","agentSettings.runtime.version":"Version","agentSettings.runtime.updateAvailable":"Update available: v{version}","agentSettings.runtime.updateUnknown":"Update status unavailable","agentSettings.runtime.workDir":"Working directory","agentSettings.workCenter.title":"Work Center","agentSettings.workCenter.enabled":"Enabled","agentSettings.workCenter.disabled":"Disabled","agentSettings.workCenter.runtimeUnavailable":"Startup failed","agentSettings.workCenter.runtimeUnavailableMessage":"Work Center is configured on, but its runtime did not start. Review the Agent logs and try again.","agentSettings.workCenter.runtimeUnavailableHint":"Configured on, but the Work Center runtime is currently unavailable.","agentSettings.workCenter.enabledHint":"Persistent work is available on this Agent. New Sessions can also create Work Items.","agentSettings.workCenter.disabledHint":"Enable persistent Work Items and background execution on this Agent.","agentSettings.workCenter.environmentManaged":"Managed by YEAFT_WORK_CENTER_ENABLED and cannot be changed here.","agentSettings.workCenter.upgradeRequired":"Upgrade this Agent to manage Work Center availability.","agentSettings.workCenter.unsupported":"Upgrade required","agentSettings.workCenter.loadFailed":"Failed to load Work Center status.","agentSettings.workCenter.loadFailedStatus":"Load failed","agentSettings.workCenter.saveFailed":"Failed to update Work Center.","agentSettings.telemetry.title":"Diagnostics","agentSettings.telemetry.saved":"Diagnostics settings saved.","agentSettings.telemetry.loadFailed":"Failed to load diagnostics settings.","agentSettings.telemetry.saveFailed":"Failed to save diagnostics settings.","agentSettings.maintenance.title":"Maintenance","agentSettings.maintenance.description":"These operations interrupt work running on the selected Agent.","agentSettings.maintenance.upgradeFailed":"Agent upgrade failed.","chat.agent.dream":"Dream","chat.agent.dreamHint":"Enable automatic Dream memory processing","chat.agent.restart":"Restart","chat.agent.restartConfirm":`Are you sure you want to restart Agent "{name}"?
|
|
14
14
|
All active conversations will be interrupted.`,"chat.agent.upgrade":"Upgrade","chat.agent.upgrading":"Upgrading","chat.agent.upgradeConfirm":`Upgrade Agent "{name}" to the latest version?
|
|
15
15
|
The agent will restart after upgrading.`,"chat.agent.upgradeAll":"Upgrade all","chat.agent.upgradingAll":"Upgrading all\u2026","chat.agent.upgradeAllConfirm":`Upgrade {count} eligible Agent(s) to the latest version?
|
|
16
|
-
They will restart after upgrading. {skipped} other Agent(s) will be skipped because they are currently unavailable or do not support safe remote upgrades.`,"chat.agent.upgradeAllSummary":"Agent upgrades finished: {upgraded} upgraded, {latest} already current, {failed} failed, {skipped} skipped.","chat.agent.alreadyLatest":"Agent is already at the latest version (v{version}), no upgrade needed.","chat.agent.nodeIncompatible":"Agent upgrade aborted: target version v{version} requires Node {required}, but this machine is running Node {current}. Please upgrade Node.js first, then retry.","chat.agent.manualUpgradeRequired":'Agent v{version} does not advertise the safe remote-upgrade contract. Older clients do not report enough platform information to rule out the Windows package-lock failure, so this request was blocked instead of repeating a known-bad upgrade. First stop the selected Agent/service on that machine: if it runs under PM2 or another service manager, stop that exact instance there; if it runs in a foreground terminal, terminate that process. Confirm that process has exited, then run "npm install -g @yeaft/webchat-agent@latest --registry=https://pkg.yeaft.com/". Finally, start the same Agent instance again with its original configuration. Browser upgrades will work after this one-time bridge.',"chat.agent.containerImageUpgradeRequired":'Container Agent v{version} is managed as a Docker image and cannot upgrade itself with npm. On the Docker Host, run "docker pull <configured-agent-image>", then recreate the same container through the existing Server/Sandbox lifecycle or the original "yeaft-agent container install" command. Keep the existing /home/yeaft/.yeaft and /workspace persistent volumes and reuse the original host-side 0600 agent-secret file. Do not remove those volumes during recreation.',"chat.agent.online":"{count} Agent(s) online","chat.agent.selectFirst":"Please select an Agent first","chat.agent.yeaft":"Yeaft Chat","sidebar.toggle.chat":"Switch to Chat","sidebar.toggle.yeaft":"Switch to Yeaft","sidebar.surface.label":"Sidebar view","sidebar.surface.sessions":"Sessions","sidebar.provider.label":"Session provider","sidebar.provider.claude":"Claude","sidebar.sessions.new":"New session","sidebar.sessions.newChat":"New chat","sidebar.sessions.emptyProvider":"No sessions for this provider","sidebar.sessions.menu":"Session menu","sidebar.sessions.unread":"Unread","sidebar.sessions.pinned":"Pinned","sidebar.sessions.processing":"Reply in progress","sidebar.sessions.hidden":"Hidden sessions","sidebar.sessions.remove":"Remove from sidebar","sidebar.sessions.agent":"Agent","sidebar.sessions.provider":"Provider","sidebar.projects.title":"Projects","sidebar.projects.menu":"Project menu","sidebar.projects.new":"New project","sidebar.projects.newSession":"New Session in {name}","sidebar.projects.assignFailed":"Session created, but it could not be added to {name}. Error: {message}","sidebar.projects.empty":"No projects yet","sidebar.projects.noSessions":"Drag a Yeaft chat here","sidebar.projects.namePrompt":"Project name","sidebar.projects.renamePrompt":"Rename project","sidebar.projects.rename":"Rename project","sidebar.projects.delete":"Delete project","sidebar.projects.deleteConfirm":'Delete project "{name}"? Its chats will move to Recents.',"sidebar.projects.remove":"Remove from project","sidebar.projects.moveMenu":"Move to Projects","sidebar.projects.moveBack":"Back","sidebar.projects.moveEmpty":"No other projects","sidebar.projects.moveTo":"Move to {name}","sidebar.projects.instructions":"Project instructions","sidebar.projects.instructionsTitle":"{name} instructions","sidebar.projects.instructionsHint":"These instructions are added to the system prompt for every Session in this Project.","sidebar.projects.instructionsPlaceholder":"Add shared coding conventions, constraints, or workflow guidance...","sidebar.recents.title":"Recents","sidebar.recents.empty":"No chats found","yeaft.back":"Back","yeaft.session.people":"People","yeaft.session.peopleEmpty":"No people","yeaft.session.runningTasks":"Running tasks","yeaft.session.tasksEmpty":"No running tasks","yeaft.session.owner":"Owner","yeaft.session.started":"Started","yeaft.breadcrumb.label":"Thread filter","yeaft.breadcrumb.mainStream":"Main stream","yeaft.breadcrumb.backHint":"Return to full stream (Esc)","yeaft.featureDetail.ariaLabel":"Task detail","yeaft.featureDetail.replyTo":"Reply in:","yeaft.featureDetail.forkHint":"No active thread \u2014 fork a new one to reply.","yeaft.featureDetail.empty":"No messages for this task yet.","yeaft.featureDetail.threadPillHint":"Open thread","yeaft.featureDetail.summary.aria":"Task summary timeline","yeaft.featureDetail.summary.title":"Summary timeline","yeaft.featureDetail.summary.loading":"Loading summary history\u2026","yeaft.featureDetail.summary.empty":"No summaries yet.","yeaft.featureDetail.summary.error":"Summary history failed: {error}","yeaft.featureDetail.summary.showArchived":"Show archived","yeaft.featureDetail.related.aria":"Related tasks","yeaft.featureDetail.related.title":"Related tasks","yeaft.featureDetail.related.unlink":"Unlink","yeaft.featureDetail.members.aria":"Task members","yeaft.featureDetail.members.title":"Members","yeaft.featureDetail.members.abort":"Abort","yeaft.featureDetail.members.kick":"Kick","yeaft.model":"Model","yeaft.placeholder":"Ask anything...","yeaft.inbox":"Inbox","yeaft.inbox.tooltip":"Your default thread \u2014 one-on-one chat with Yeaft. New threads can be created for specific topics or tasks.","yeaft.sidebar.activeThreads":"Active","yeaft.sidebar.idleThreads":"Idle","yeaft.sidebar.archivedThreads":"Archived","yeaft.sidebar.tasks":"Tasks","yeaft.sidebar.emptyActive":"No active threads","yeaft.sidebar.emptyIdle":"No idle threads","yeaft.sidebar.emptyArchived":"No archived threads","yeaft.sidebar.emptyTasks":"No tasks match","yeaft.sidebar.results":"Results","yeaft.sidebar.resultsThreads":"Threads","yeaft.sidebar.kindThread":"thread","yeaft.sidebar.cancel":"Cancel","yeaft.sidebar.mergeInto":"Merge into\u2026","yeaft.sidebar.mergeNoCandidates":"No other threads to merge into","yeaft.sidebar.mergeConfirmTitle":"Merge this thread?","yeaft.sidebar.mergeIrreversible":"This cannot be undone. The source thread will be archived and its messages moved to the target.","yeaft.sidebar.mergeConfirm":"Merge","yeaft.settings.sidebarV2":"Experimental: Sidebar V2","yeaft.settings.sidebarV2Hint":"Thread list + task tree (preview).","yeaft.clearConfirm":"Clear all messages?","yeaft.mode":"Mode","yeaft.agent":"Agent","yeaft.connecting":"Connecting...","yeaft.ready":"Ready","yeaft.tools":"tools","yeaft.skills":"skills","yeaft.mcp":"MCP","yeaft.showSidebar":"Show sidebar","yeaft.hideSidebar":"Hide sidebar","yeaft.debug":"Debug","yeaft.debugClose":"Close debug panel","yeaft.debugTurns":"turns","yeaft.debugTabToolStats":"Tool Stats","yeaft.debugTabDream":"Dream","yeaft.debugTabRequestLog":"Request Log","yeaft.debugHistoryLoad":"Load request history","yeaft.debugHistoryLoading":"Loading...","yeaft.debugHistoryLoaded":"{count} loaded","yeaft.debugHistoryUnavailable":"The debug trace request timed out. The Agent may be offline or the response may have been dropped. Try again.","yeaft.debugHistoryTruncated":"This trace was too large for one response. Large fields are previewed here; the full trace remains on the Agent.","yeaft.debugSearchPlaceholder":"Regex search request logs","yeaft.debugSearchHint":"Shows the latest 10 globally by default; search matches request summaries across Sessions.","yeaft.debugTurnAction":"View debug trace for this turn","yeaft.debugTurnContext":"Trace","yeaft.debugPanelEmpty":"Hover over an AI turn and click the debug icon to view its trace.","yeaft.dreamDebug.title":"Dream lifecycle","yeaft.dreamDebug.trigger":"Trigger","yeaft.dreamDebug.status":"Status","yeaft.dreamDebug.started":"Started","yeaft.dreamDebug.finished":"Finished","yeaft.dreamDebug.time":"Time","yeaft.dreamDebug.phase":"Phase","yeaft.dreamDebug.call":"Call","yeaft.dreamDebug.location":"Location","yeaft.dreamDebug.result":"Result","yeaft.dreamDebug.noLatest":"No dream check has been recorded for this session yet.","yeaft.dreamDebug.noEvents":"No dream events yet for this session.","yeaft.dreamDebug.outputTitle":"Dream output loaded for this session","yeaft.dreamDebug.scope":"Scope","yeaft.dreamDebug.lastDream":"Last dream","yeaft.dreamDebug.messagesCovered":"Messages covered","yeaft.dreamDebug.noOutput":"No dream output has been written for this session yet.","yeaft.dreamDebug.promptLoadTitle":"Dream memory loaded into system prompt","yeaft.dreamDebug.loadedInto":"Loaded into","yeaft.dreamDebug.vp":"VP","yeaft.dreamDebug.summaryToPrompt":"summary.md -> system prompt","yeaft.dreamDebug.itemList":"Dream runs and scopes","yeaft.dreamDebug.searchPlaceholder":"Search Dream sessions by title, id, or summary...","yeaft.dreamDebug.noSearchResults":"No Dream sessions match this search.","yeaft.dreamDebug.noSummary":"No summary available","yeaft.dreamDebug.segments":"segments","yeaft.dreamDebug.lastError":"Last error","yeaft.dreamDebug.overview":"Overview","yeaft.dreamDebug.sessionId":"Session ID","yeaft.dreamDebug.loadedAt":"Loaded at","yeaft.dreamDebug.layers":"Layers","yeaft.dreamDebug.summaryLayer":"Resident summary","yeaft.dreamDebug.noPromptLoad":"No prompt-load record is available for this scope.","yeaft.dreamDebug.segmentTitle":"Segments","yeaft.dreamDebug.sourceMessages":"Source messages","yeaft.dreamDebug.createdAt":"Created","yeaft.dreamDebug.updatedAt":"Updated","yeaft.dreamDebug.noSegments":"No memory segments are available for this scope.","yeaft.dreamDebug.requestResponse":"Request / Response","yeaft.dreamDebug.noRequestResponse":"No Dream request/response log has been persisted for this scope yet.","yeaft.dreamDebug.empty":"No Dream debug data has been recorded yet.","yeaft.debugGroupFollowMain":"Follow main pane","yeaft.debugGroupAll":"All sessions","yeaft.debugAssistantResponse":"Assistant response","yeaft.debugViewAssistantResponse":"View response","yeaft.debugLatestRequestBody":"Latest available request body","yeaft.debugLatestSystemPrompt":"Latest available system prompt","yeaft.debugRequestBodyUnavailable":"No request body is available for this turn yet.","yeaft.debugSystemPromptUnavailable":"No system prompt is available for this turn yet.","yeaft.debugInputSystemShort":"system","yeaft.debugInputHistoryShort":"history","yeaft.debugInputToolsShort":"tool definitions","yeaft.debugInputCurrentShort":"current","yeaft.debugInputTokenBreakdown":"Provider input {total}: system prompt {system}, history messages {history}, tool definitions {tools}, current turn {current} (estimated split)","yeaft.debugToolInput":"Input","yeaft.debugToolResult":"Result","yeaft.debugToolRunning":"running","yeaft.debugToolRunningNoResult":"Running; no result yet","yeaft.debugShowDetails":"show","yeaft.debugHideDetails":"hide","yeaft.debugTurnStartedAt":"turn started at","yeaft.debugRequestAt":"request time","yeaft.debugRequestAtDerived":"derived from turn start (legacy loop)","yeaft.turn":"Turn {n}","yeaft.systemPrompt":"System Prompt","yeaft.messagesLabel":"Messages","yeaft.response":"Response","yeaft.toolCalls":"Tool Calls","yeaft.functionCalls":"Function Calls","yeaft.request":"Request","yeaft.pending":"(pending)","yeaft.inputTokens":"Input","yeaft.outputTokens":"Output","yeaft.duration":"Duration","yeaft.noDebugData":"No debug data yet","yeaft.showDebug":"Show debug panel","yeaft.hideDebug":"Hide debug panel","yeaft.reloadPage":"Reload page","yeaft.reloadMessages":"Reload messages","sidebar.sessions.syncing":"Syncing latest messages","yeaft.historySearch.label":"Search Session history","yeaft.historySearch.button":"Search messages","yeaft.historySearch.placeholder":"Search messages in this Session","yeaft.historySearch.searching":"Searching\u2026","yeaft.historySearch.minChars":"Type at least 2 characters","yeaft.historySearch.empty":"No matching messages","yeaft.historySearch.error":"Search failed. Try again.","yeaft.historySearch.unsupported":"Upgrade this Agent to search Session history.","yeaft.historySearch.more":"Load more results","yeaft.historySearch.you":"You","yeaft.historySearch.assistant":"Assistant","yeaft.outline.label":"Message history","yeaft.outline.sender":"Sender","yeaft.outline.allSenders":"All senders","yeaft.outline.title":"Message history","yeaft.outline.placeholder":"Search this conversation","yeaft.outline.searching":"Searching\u2026","yeaft.outline.loading":"Loading\u2026","yeaft.outline.older":"Load older messages","yeaft.outline.moreMatches":"Load more matches","yeaft.outline.minChars":"Type at least 2 characters","yeaft.outline.empty":"No messages yet","yeaft.outline.noMatches":"No matching messages","yeaft.outline.error":"Could not load the outline. Try again.","yeaft.outline.unsupported":"Upgrade this Agent to use the conversation outline.","yeaft.outline.you":"You","yeaft.outline.assistant":"Assistant","yeaft.outline.nonText":"Non-text response","yeaft.switchModel":"Switch model","yeaft.modelMenu.title":"Model and LLM settings","yeaft.modelMenu.label":"Model","yeaft.modelMenu.effort":"Effort","yeaft.modelMenu.effort.openaiReasoning":"Reasoning effort","yeaft.modelMenu.effort.anthropicBudget":"Thinking budget","yeaft.modelMenu.effort.anthropicAdaptive":"Adaptive thinking effort","yeaft.modelMenu.effort.minimal":"Minimal","yeaft.modelMenu.effort.low":"Low","yeaft.modelMenu.effort.medium":"Medium","yeaft.modelMenu.effort.high":"High","yeaft.modelMenu.effort.xhigh":"X-High","yeaft.modelMenu.effort.max":"Max","yeaft.modelMenu.effort.ultra":"Ultra","yeaft.modelMenu.noEffort":"This model does not expose a compatible effort control.","yeaft.modelMenu.configureHint":"Providers, keys, model list","yeaft.settings.title":"Settings","settings.yeaft.tabs.vp":"VP Library","settings.yeaft.tabs.search":"Search","settings.yeaft.tabs.mcp":"MCP","yeaft.settings.tabs.vp":"VP Library","yeaft.settings.tabs.search":"Search","yeaft.settings.tabs.mcp":"MCP","settings.mcp.title":"MCP servers","settings.mcp.description":"Connect Model Context Protocol servers to extend Yeaft with extra tools. Servers are stored in ~/.yeaft/config.json on the agent; tools appear in the LLM's catalogue as mcp__<server>__<tool>.","settings.mcp.reloadAll":"Reload all","settings.mcp.reloadOne":"Reconnect this server","settings.mcp.loading":"Working\u2026","settings.mcp.connected":"connected","settings.mcp.disconnected":"disconnected","settings.mcp.tools":"tools","settings.mcp.remove":"Remove","settings.mcp.empty":"No MCP servers configured yet. Add one below.","settings.mcp.addServer":"Add server","settings.mcp.addServerDesc":"Most MCP servers run as a local command \u2014 Yeaft launches it via stdio and discovers its tools.","settings.mcp.serverName":"Name","settings.mcp.command":"Command","settings.mcp.args":"Arguments","settings.mcp.argsPlaceholder":"e.g. -y @modelcontextprotocol/server-filesystem /tmp","settings.mcp.env":"Environment","settings.mcp.envPlaceholder":"KEY=value per line. Lines starting with # are ignored.","settings.mcp.saving":"Saving\u2026","settings.mcp.add":"Add","settings.mcp.cancel":"Clear","settings.mcp.connectFailed":"Saved but failed to connect","settings.mcp.addSuccess":"Server added","settings.mcp.removeSuccess":"Server removed","settings.mcp.reloadSuccess":"Reload requested","settings.mcp.confirmRemove":'Remove MCP server "{name}"? Its tools will disappear from the next LLM turn.',"settings.mcp.errors.nameRequired":"Name is required","settings.mcp.errors.nameFormat":"Name must be lowercase letters, digits, dashes or underscores only","settings.mcp.errors.commandRequired":"Command is required","settings.mcp.errors.argsParse":"Could not parse arguments","settings.mcp.errors.envParse":"Could not parse environment","search.settings.backendTitle":"Search backend","search.settings.backendDesc":"Choose the primary backend for the WebSearch tool. If the primary fails, the engine automatically falls back to HTML scraping.","search.settings.backend.tavily":"Tavily","search.settings.backend.tavilyHint":"Hosted search API. Free tier: 1000 queries/month. Recommended.","search.settings.backend.playwright":"Playwright service","search.settings.backend.playwrightHint":"Self-hosted browser-based search/fetch. Best for cloud IPs that get bot-blocked. Service not yet shipped.","search.settings.comingSoon":"Coming soon","search.settings.tavilyKeyTitle":"Tavily API key","search.settings.tavilyKeyDesc":"Stored on the agent in ~/.yeaft/config.json. Get a free key at","search.settings.tavilyKeyUnchanged":"(unchanged)","search.settings.clearKey":"Clear","search.settings.usageTitle":"Usage this month","search.settings.usageRefresh":"Refresh","search.settings.usageLoading":"Loading\u2026","search.settings.usagePlan":"Plan","search.settings.usageUsed":"Used","search.settings.usagePaygo":"Pay-as-you-go","search.settings.usageError":"Failed to load usage","search.settings.save":"Save","search.settings.saving":"Saving\u2026","search.settings.saveSuccess":"Saved","search.settings.cancel":"Reset","yeaft.settings.yeaftTitle":"Thread Concurrency & Archive","yeaft.settings.yeaftDesc":"Tune how many threads can run at once and when idle threads are auto-archived.","yeaft.settings.maxConcurrentLabel":"Max concurrent threads","yeaft.settings.maxConcurrentHint":"Maximum number of live threads at once (includes the always-on main thread). New threads beyond this cap are refused until an existing thread is archived or terminated. Range: 1-50.","yeaft.settings.archiveIdleDaysLabel":"Auto-archive idle threads after (days)","yeaft.settings.archiveIdleDaysHint":"Threads with no activity for this many days will be archived. Range: 1-3650.","yeaft.settings.yeaftSaveBtn":"Save","yeaft.settings.yeaftSaving":"Saving...","yeaft.settings.yeaftSaved":"Saved","yeaft.settings.yeaftLoading":"Loading...","yeaft.settings.yeaftLoadError":"Failed to load Yeaft settings","yeaft.settings.yeaftSaveError":"Failed to save Yeaft settings","yeaft.settings.rangeErrorConcurrent":"Must be between 1 and 50","yeaft.settings.rangeErrorArchive":"Must be between 1 and 3650","chat.session.creating":"Creating conversation...","chat.session.loadingHistory":"Loading conversation history...","yeaft.historyLoad.error":"Conversation history could not be loaded. Your messages are still stored on the Agent.","yeaft.historyLoad.retry":"Retry loading","yeaft.sessionInventory.error":"Sessions could not be loaded. Your conversations are still stored on the Agent.","yeaft.sessionInventory.retry":"Retry Sessions","chat.session.closed":"Conversation closed","chat.session.agentOffline":"Agent is offline. This session will be available when the agent reconnects.","chat.execution.cancelled":"Execution cancelled","chat.sidebar.expand":"Expand menu","chat.sidebar.collapse":"Collapse sidebar","chat.sidebar.workbench":"Workbench","chat.sidebar.newConv":"Conversation","chat.sidebar.recentChats":"Recent Chats","chat.sidebar.resumeConv":"Resume Conversation","chat.sidebar.lightMode":"Light Mode","chat.sidebar.darkMode":"Dark Mode","chat.sidebar.settings":"Settings","chat.sidebar.emptyHint":"Click the button above to create a new conversation","chat.sidebar.closeConv":"Close Conversation","chat.sidebar.renameConv":"Rename","chat.sidebar.pin":"Pin to top","chat.sidebar.unpin":"Unpin","chat.connection.connecting":"Connecting...","chat.connection.reconnecting":"Reconnecting ({current}/{max})...","chat.connection.updating":"Server is updating, please wait...","chat.connection.disconnected":"Disconnected","chat.connection.reconnect":"Reconnect","chat.connection.reconnectFailed":"Connection lost. Please click reconnect to retry.","chat.time.justNow":"Just now","chat.time.minutesAgo":"{count}m ago","chat.time.daysAgo":"{count}d ago","chat.time.today":"Today","chat.time.yesterday":"Yesterday","chat.delete.confirm":"Are you sure you want to close this conversation? This will terminate the corresponding Claude process.","chat.delete.enterWorkDir":"Please enter the working directory path","modal.newConv.workDir":"Work Directory","modal.newConv.inputOrSelect":"Enter or select a work directory","modal.newConv.browse":"Browse","modal.newConv.noWorkDirs":"No work directories","modal.newConv.selectAgent":"Please select an online Agent first","modal.newConv.create":"Create Conversation","modal.newConv.folderLabel":"\u{1F4C1} Work Directories","modal.newConv.provider":"Provider","modal.newConv.model":"Model","provider.claudeCode":"Claude Code","provider.copilot":"Copilot","modal.resume.workDir":"Work Directory","modal.resume.inputOrSelect":"Enter or select a work directory","modal.resume.browse":"Browse","modal.resume.tabFolders":"Directories","modal.resume.tabSessions":"History","modal.resume.noWorkDirs":"No work directories","modal.resume.selectWorkDir":"Please select a work directory first","modal.resume.noSessions":"No history sessions in this directory","modal.resume.untitled":"Untitled Session","modal.resume.folderLabel":"\u{1F4C1} Work Directories","modal.resume.sessionLabel":"\u{1F4AC} History Sessions","modal.resume.selectAgent":"Please select an online Agent first","modal.folderPicker.title":"Select Work Directory","modal.folderPicker.root":"Root / drives","modal.folderPicker.path":"Directory path","modal.folderPicker.go":"Go","modal.folderPicker.ancestors":"Directory ancestors","modal.folderPicker.directories":"Subdirectories","modal.folderPicker.navigationHint":"Click a folder to open it, then select the current directory.","modal.folderPicker.selectCurrent":"Select this directory","modal.folderPicker.loadFailed":"Cannot open this directory. Check the path and permissions, or retry.","modal.folderPicker.unavailable":"Agent unavailable. Reconnect and retry.","modal.folderPicker.timeout":"Directory request timed out. Please retry.","modal.folderPicker.parentDir":"Parent Directory","welcome.subtitle":"Web Code Agent for sessions, tools, and VP collaboration","welcome.agentOnline":"{count} Agent(s) online","welcome.noAgents":"No Agents Online","welcome.noAgentsHint":"Please start an Agent and connect it to the server","welcome.noAgent":"No Agents Online","welcome.noAgentHint":"Please start an Agent and connect it to the server","welcome.setupAgent":"Set Up Agent","welcome.setupTitle":"Connect your Agent","welcome.setupDesc":"Run the installer on your computer to start chatting. Your code and tools stay on your machine.","welcome.setupSecretLoading":"Preparing your Agent secret...","welcome.setupSecretError":"Could not prepare the Agent secret. Open Security settings to retry.","installer.platformLabel":"Target operating system","installer.posix":"Linux / macOS","installer.powershell":"Windows PowerShell","installer.copyCommand":"Copy install command","installer.instruction":"Paste into a terminal on the computer where you want to run your Agent.","installer.viewCommand":"View command","installer.copying":"Copying\u2026","installer.copyFailed":"Copy failed","installer.secretLoading":"Preparing your Agent secret\u2026","installer.secretError":"Could not prepare the Agent secret.","installer.secretRequired":"Generate an Agent secret before copying this command.","installer.commandUnavailable":"Command available after an Agent secret is generated.","installer.copyError":"Copy failed. Select and copy the command manually.","installer.copySuccess":"Command copied.","installer.openSecurity":"Open Security settings","installer.note":"Includes Node.js and a private Agent instance. Only run commands from a trusted server. Contains your access secret \u2014 do not share.","welcome.openSecuritySettings":"Open Security Settings","welcome.newConv":"Conversation","welcome.resumeHistory":"Resume History","messages.loadingMore":"Loading more messages...","messages.loadMore":"\u2191 Click or scroll up to load more","message.loadingMore":"Loading more messages...","message.loadMore":"\u2191 Click or scroll up to load more","message.navigation":"Conversation navigation","message.currentTurn":"\u2191 Turn","message.scrollToLatest":"\u2193 Latest","message.backToCurrentTurn":"Back to this turn\u2019s question","message.showResponses":"Show {count} response(s)","message.hideResponses":"Hide response(s)","message.assistant":"Assistant","chat.waiting.disconnected":"Connection lost","chat.connecting":"Connecting to provider session...","chat.waiting.compacting":"Compacting context...","chat.waiting.agentOffline":"Agent offline","chat.waiting.sessionLost":"Session lost, refreshed, waiting for update...","chat.waiting.cliExited":"Claude process exited, refreshed, waiting for update...","chat.waiting.refresh":"Refresh","chat.waiting.thinking":"AI is thinking, please wait...","btw.hint":"esc to exit","btw.placeholder":"Ask a side question...","btw.close":"Exit BTW mode","message.copyContent":"Copy content","message.copy":"Copy content","message.copied":"Copied","message.copyCode":"Copy code","message.copyAll":"Copy all","message.screenshot":"Screenshot","message.screenshotting":"Taking screenshot...","message.exportMd":"Export MD","message.askInput":"Your input needed","message.askAnswered":"\u2713 Answered","message.askCustom":"Or type a custom answer...","message.askCustomPlaceholder":"Or type a custom answer...","message.askSubmit":"Submit Answer","message.askWaiting":"Waiting for question...","message.askSubmitting":"Answer sent. Waiting for Agent confirmation\u2026","message.askUnconfirmed":"No confirmation yet. Check the connection, then resend the same answer.","message.askRetry":"Resend answer","message.askSendFailed":"Answer was not sent. Check the connection and try again.","message.askAgentUnavailable":"Agent is unavailable. Reconnect, then resend your answer.","message.askIdentityMismatch":"This question no longer matches the active request. Ask the role to re-ask.","message.askExpired":"This question has expired. Ask the role to re-ask.","message.openInEditor":"Open in editor","message.resultDone":"Done","message.done":"Done","message.resultRead":"Read {file}","message.readFile":"Read {name}","message.file":"file","message.attachImages":"{count} image(s)","message.imageCount":"{count} image(s)","message.imagePreview":"Image preview","message.zoomOut":"Zoom out","message.zoomIn":"Zoom in","message.resetZoom":"Reset image zoom","message.previousImage":"Previous image","message.nextImage":"Next image","message.imagePosition":"Image {current} of {total}","message.imageUnavailable":"Image unavailable","message.attachFiles":"{count} file(s)","message.fileCount":"{count} file(s)","message.quote":"Quote","message.removeQuote":"Remove quote","message.replyingTo":"Replying to {author}","message.quotedFrom":"Quoted from {author}","message.editAsNew":"Edit","message.you":"You","input.upload":"Upload file","input.placeholder":"Type a message...","input.send":"Send","input.stopExecution":"Stop execution","chatInput.upload":"Upload file","chatInput.uploading":"Uploading...","chatInput.uploadFailed":"Upload failed","chatInput.retryUpload":"Retry","chatInput.removeAttachment":"Remove attachment","chatInput.placeholder":"Type a message...","chatInput.send":"Send","chatInput.stop":"Stop execution","tools.thinking":"Thinking...","tools.read":"Reading file","tools.write":"Writing file","tools.edit":"Editing file","tools.bash":"Running command","tools.glob":"Searching files","tools.grep":"Searching content","tools.task":"Running task","tools.webFetch":"Fetching web page","tools.webSearch":"Searching the web","tools.todoWrite":"Updating tasks","tools.executing":"Running {name}","status.thinking":"Thinking...","status.reading":"Reading file","status.writing":"Writing file","status.editing":"Editing file","status.executing":"Running command","status.searchingFiles":"Searching files","status.searchingContent":"Searching content","status.executingTask":"Running task","status.fetching":"Fetching web page","status.searching":"Searching the web","status.updatingTasks":"Updating tasks","status.executingTool":"Running {name}","header.compacting":"Compressing context...","header.compacted":"Context compression complete","chatHeader.newConv":"Conversation","chatHeader.compacting":"Compressing context...","chatHeader.compactDone":"Context compression complete","chatHeader.compact":"Compact context","chatHeader.resume":"Resume session","chatHeader.refresh":"Refresh messages","chatHeader.reloadPage":"Reload page","chatHeader.clear":"Clear messages","chatHeader.clearing":"Clearing context...","chatHeader.clearDone":"Context cleared","chatHeader.confirmClear":"Are you sure you want to clear all messages in this conversation?","chatHeader.mcpConfig":"MCP Servers","chatHeader.mcpNeedRestart":"Changes will take effect after restarting the session.","chatHeader.expertPanel":"Expert Panel","chatHeader.subAgentPanel":"Sub-Agents","settings.close":"Close settings","settings.tabs.account":"Account","settings.tabs.security":"Security","settings.tabs.general":"General","settings.tabs.sandbox":"Sandbox","settings.tabs.invitations":"Invitations","auth.sessionExpired":"Session expired. Please log in again.","settings.sandbox.description":"Run a persistent Yeaft Agent in a Docker container managed by this Server.","settings.sandbox.containerAgent":"Dockerized Yeaft Agent","settings.sandbox.serverManaged":"The Server manages only this container\u2019s start, stop, and removal. The Agent itself uses the normal Yeaft connection.","settings.sandbox.agentName":"Agent name","settings.sandbox.sizeLabel":"Size","settings.sandbox.enable":"Enable Sandbox","settings.sandbox.creating":"Setting up...","settings.sandbox.start":"Start","settings.sandbox.stop":"Stop","settings.sandbox.retry":"Retry","settings.sandbox.remove":"Remove","settings.sandbox.removeConfirm":"Permanently remove this Sandbox, including its home and workspace data? This cannot be undone.","settings.sandbox.size.small":"Small","settings.sandbox.size.normal":"Normal","settings.sandbox.state.reserving":"Setting up","settings.sandbox.state.provisioning":"Preparing Sandbox","settings.sandbox.state.starting":"Starting","settings.sandbox.state.waiting_for_agent":"Waiting for Agent","settings.sandbox.state.stopping":"Stopping","settings.sandbox.state.removing":"Removing","settings.sandbox.state.removed":"Removed","settings.sandbox.state.running":"Running","settings.sandbox.state.stopped":"Stopped","settings.sandbox.state.failed":"Failed","settings.sandbox.state.remove_failed":"Remove failed","settings.sandbox.state.recovery_required":"Recovery required","settings.sandbox.stage.reserving_capacity":"Reserving capacity","settings.sandbox.stage.starting":"Starting Sandbox","settings.sandbox.stage.stopping":"Stopping Sandbox","settings.sandbox.stage.retrying":"Retrying operation","settings.sandbox.stage.removing":"Removing Sandbox","settings.sandbox.stage.complete":"Complete","settings.sandbox.stage.dispatching":"Dispatching securely","settings.sandbox.stage.capacity_rejected":"Waiting for capacity","settings.sandbox.unavailable.disabled":"Sandbox is not enabled on this Server. Updating a local Agent does not enable it; a Server administrator must enable Docker management.","settings.sandbox.unavailable.dockerUnavailable":"Docker is unavailable to the Server. Check the Sandbox Server deployment.","settings.sandbox.unavailable.notEntitled":"Sandbox is not available for this account.","settings.sandbox.unavailable.capacityUnavailable":"Sandbox is temporarily unavailable.","settings.sandbox.error.SANDBOX_LOAD_FAILED":"Sandbox status could not be loaded.","settings.sandbox.retryLoad":"Retry","settings.sandbox.error.SANDBOX_CREATE_FAILED":"Sandbox could not be created. Try again later.","settings.sandbox.error.SANDBOX_ACTION_FAILED":"Sandbox action could not be scheduled. Try again later.","settings.sandbox.error.SANDBOX_OPERATION_TIMEOUT":"The operation timed out. Retry or remove the Sandbox.","settings.sandbox.error.SANDBOX_RUNTIME_FAILED":"The Sandbox runtime reported a failure.","settings.sandbox.error.SANDBOX_CGROUP_SLICE_UNAVAILABLE":"The shared resource slice could not be initialized on the host (cgroup v2 + root required). Contact your administrator or remove SANDBOX_CGROUP_PARENT to disable resource caps.","settings.account.username":"Username","settings.account.role":"Role","settings.account.email":"Email","settings.account.emailNotSet":"Not set","settings.account.profileLoadFailed":"Failed to load account profile","settings.account.logout":"Log Out","settings.account.roleAdmin":"Admin","settings.account.rolePro":"Pro","settings.account.linkedAccounts":"Linked Accounts","settings.account.linkedDesc":"Link external sign-in providers so you can log in with any of them.","settings.account.bind":"Link","settings.account.unbind":"Unlink","settings.account.linked":"Linked","settings.account.providerDisabled":"Not configured","settings.account.cantUnbindLast":"Cannot unlink the only login method","settings.account.unbindFailed":"Failed to unlink: {error}","settings.account.bindFailed":"Failed to link account","settings.account.ssoBoundMsg":"Successfully linked {provider}.","settings.account.ssoConflictMsg":"This {provider} account is already linked to another user.","settings.account.providerMicrosoft":"Microsoft","settings.account.providerGithub":"GitHub","settings.account.providerGoogle":"Google","settings.account.providerWechat":"WeChat","settings.account.providerAlipay":"Alipay","settings.security.agentKey":"Agent Secret","settings.security.agentKeyDesc":"Shared secret for Agent connection authentication","settings.security.agentSetupCommands":"Agent setup commands","settings.security.agentCmdInstall":"Install and connect Agent","settings.security.agentCmdService":"Run Agent server","settings.security.agentCmdContainer":"Run Agent in Docker","settings.security.agentCmdContainerDesc":"One command. The first run initializes shared CPU/memory limits automatically (sudo password prompt once); pass --no-slice to run without resource protection. Docker must be installed on the machine.","settings.security.agentCmdNeedsSecret":"Generate an Agent Secret first to create the server command.","settings.security.agentCmdLlm":"Manual Copilot fallback","settings.security.agentCmdLlmDesc":"After the Agent connects, configure its optional LLM in Agent settings. The installer also prints the absolute management command for terminal use.","settings.security.none":"None","settings.security.show":"Show","settings.security.hide":"Hide","settings.security.generateKey":"Generate Secret","settings.security.resetKey":"Reset Secret","settings.security.resetting":"Resetting...","settings.security.resetWarning":"All Agents need to be reconfigured after reset","settings.security.changePassword":"Change Password","settings.security.currentPassword":"Current password","settings.security.newPassword":"New password (min 6 characters)","settings.security.confirmPassword":"Confirm new password","settings.security.changeBtn":"Change Password","settings.security.changing":"Changing...","settings.security.enterCurrentPwd":"Please enter your current password","settings.security.newPwdMin":"New password must be at least 6 characters","settings.security.pwdMismatch":"Passwords do not match","settings.security.pwdChanged":"Password changed successfully","settings.security.setPassword":"Set a Password","settings.security.setPasswordDesc":"You signed in via SSO and have no password yet. Set one so you can also log in with username + password.","settings.security.setBtn":"Set Password","settings.security.pwdSet":"Password set successfully","settings.security.deleteAccount":"Delete Account","settings.security.deleteAccountDesc":"Permanently delete your account and all associated data. This cannot be undone.","settings.security.deleteBtn":"Delete Account","settings.security.deleteConfirmBtn":"Confirm Delete","settings.security.deleteConfirmPlaceholder":"Type DELETE to confirm","settings.security.deleteConfirmRequired":"Type DELETE to confirm account removal","settings.security.deleteFailed":"Failed to delete account","settings.security.deleting":"Deleting...","settings.general.theme":"Theme","settings.general.lightTheme":"Light","settings.general.darkTheme":"Dark","settings.general.language":"Language","settings.general.currentValue":"Current: {value}","settings.general.workCenter":"Work Center entry","settings.general.workCenterDesc":"Show the Work Center entry in the sidebar header. Available Agents are selected inside Work Center.","settings.general.workCenterOn":"Enabled","settings.general.workCenterOff":"Disabled","settings.general.telemetry":"Performance telemetry","settings.general.telemetryDesc":"Buffer local timing diagnostics without sending trace content to the server.","settings.general.telemetryOn":"Enabled","settings.general.telemetryOff":"Disabled","settings.general.telemetryLoading":"Loading\u2026","settings.general.telemetrySaving":"Saving\u2026","settings.general.telemetryUnavailable":"Unavailable","settings.general.telemetryLoadFailed":"Could not load the saved telemetry setting. Try reopening Settings.","settings.general.telemetrySaveFailed":"Could not confirm the telemetry change. The displayed setting was restored; reopen Settings to check.","settings.general.telemetryRawLimit":"Raw provider exchange limit (bytes)","settings.general.telemetryTraceTextLimit":"Debug prompt and message limit (bytes)","settings.invite.create":"Create Invite Code","settings.invite.normalUser":"Regular User","settings.invite.proUser":"Pro User","settings.invite.createBtn":"Create Invite","settings.invite.creating":"Creating...","settings.invite.list":"Invite Codes","settings.invite.used":"Used","settings.invite.expired":"Expired","settings.invite.available":"Available","settings.invite.usedBy":"Used by: {user}","settings.invite.expiredAt":"Expired at: {time}","settings.invite.expiresAt":"Expires at: {time}","settings.invite.noInvites":"No invite codes","settings.msg.copiedClipboard":"Copied to clipboard","settings.msg.copyFailed":"Copy failed","settings.msg.keyReset":"Secret has been reset","settings.msg.resetFailed":"Reset failed","settings.msg.changeFailed":"Change failed","settings.msg.inviteCreated":"Invite code created","settings.msg.createFailed":"Create failed","settings.msg.inviteCopied":"Invite code copied","settings.msg.inviteDeleted":"Invite code deleted","settings.msg.deleteFailed":"Delete failed","settings.tabs.llm":"LLM","settings.tabs.yeaft":"Yeaft","yeaft.session.title":"Sessions","yeaft.session.new":"+ New session","yeaft.session.create.title":"New session","yeaft.session.create.subtitle":"Choose where it runs and which provider should handle it.","yeaft.session.create.close":"Close","yeaft.session.create.nameLabel":"Name","yeaft.session.create.namePlaceholder":"Session name (optional)","yeaft.session.create.workDirLabel":"Work Directory","yeaft.session.create.agentLabel":"Agent","yeaft.session.create.vpPicker":"Pick VPs","yeaft.session.create.vpNone":"No VPs selected","yeaft.session.create.vpCount":"{n} VPs selected","yeaft.session.create.untitled":"Untitled session","yeaft.session.create.rosterEmpty":"No VPs available \u2014 create one from the VP Library first.","yeaft.session.create.rosterLoading":"Loading VPs\u2026","yeaft.session.create.rosterError":"VPs could not be loaded from this Agent.","yeaft.session.create.rosterRetry":"Retry","yeaft.vp.domain.general":"General & coordination","yeaft.vp.domain.productDesign":"Product & experience design","yeaft.vp.domain.softwareSystems":"Software & systems","yeaft.vp.domain.securityReliability":"Security & reliability","yeaft.vp.domain.scienceAnalysis":"Science & analysis","yeaft.vp.domain.philosophyPsychology":"Philosophy & psychology","yeaft.vp.domain.strategyHistory":"Strategy & history","yeaft.vp.domain.businessManagement":"Business & management","yeaft.vp.domain.artsCulture":"Arts & culture","yeaft.vp.domain.other":"Other specialties","yeaft.vp.domain.custom":"Custom VPs","yeaft.session.create.defaultVpHint":"The VP that answers when no one is @-mentioned.","yeaft.session.create.folderLabel":"\u{1F4C1} Work directories","yeaft.session.create.sessionLabel":"\u{1F4AC} Sessions in this directory","yeaft.session.create.noWorkDirs":"No prior sessions yet \u2014 pick or type a work directory above.","yeaft.session.create.back":"Back","yeaft.session.create.creating":"Creating\u2026","yeaft.session.create.submit":"Create","yeaft.plugins.title":"Plugins","yeaft.plugins.subtitle":"Choose which tools, skills, and MCP servers this Agent makes available to Sessions.","yeaft.plugins.agentLabel":"Agent","yeaft.plugins.overviewLabel":"Plugin availability overview","yeaft.plugins.noAgent":"No Agent selected","yeaft.plugins.allAvailable":"All available capabilities are enabled.","yeaft.plugins.selectedSummary":"{count} capabilities enabled.","yeaft.plugins.enabledLabel":"enabled","yeaft.plugins.useAll":"Use all available","yeaft.plugins.loading":"Loading plugins\u2026","yeaft.plugins.empty":"No configurable plugins are available on this Agent.","yeaft.plugins.loadError":"Failed to load plugins: {error}","yeaft.plugins.upgradeRequired":"This Agent does not support Plugins. Upgrade and restart the Agent.","yeaft.plugins.retry":"Retry","yeaft.plugins.searchPlaceholder":"Search tools, skills, and MCP servers","yeaft.plugins.resultCount":"{count} results","yeaft.plugins.categoryLabel":"Plugin categories","yeaft.plugins.all":"All","yeaft.plugins.noMatchesTitle":"No matching plugins","yeaft.plugins.noMatchesBody":"Try a different search or category.","yeaft.plugins.toolDescription":"Built-in Agent capability","yeaft.plugins.skillDescription":"Reusable Agent workflow","yeaft.plugins.mcpDescription":"{count} tools available","yeaft.plugins.unsavedChanges":"Unsaved changes","yeaft.plugins.tools":"Tools","yeaft.plugins.skills":"Skills","yeaft.plugins.mcpServers":"MCP servers","yeaft.plugins.toolsCount":"tools","yeaft.plugins.manageSkills":"Manage skills","yeaft.plugins.manageSkillsDescription":"Create reusable Skills for this Agent or the active project. Project Skills override same-named user Skills.","yeaft.plugins.createSkill":"Create skill","yeaft.plugins.removeSkill":"Remove","yeaft.plugins.confirmRemoveSkill":'Remove Skill "{name}"? This deletes only the native Skill in its selected scope.',"yeaft.plugins.skillManagementUpgradeRequired":"This Agent must be upgraded before it can create or remove Skills.","yeaft.plugins.skillManagementVersionUnknown":"This Agent has not reported Skill management support yet. Upgrade and restart it before creating or removing Skills.","yeaft.plugins.skillScope":"Scope","yeaft.plugins.userScope":"User","yeaft.plugins.projectScope":"Project","yeaft.plugins.userScopeDescription":"Available to every project run by this Agent.","yeaft.plugins.projectScopeDescription":"Available only to the active project and overrides a same-named user Skill.","yeaft.plugins.projectScopeUnavailable":"Select a Session with a project directory to manage project-level Skills.","yeaft.plugins.skillName":"Name","yeaft.plugins.skillDescriptionLabel":"Description","yeaft.plugins.skillTrigger":"Trigger (optional)","yeaft.plugins.skillInstructions":"Instructions","yeaft.plugins.resetSkillForm":"Reset","yeaft.plugins.skillTier.bundled":"Bundled \xB7 read-only","yeaft.plugins.skillTier.user":"User","yeaft.plugins.skillTier.project":"Project","yeaft.plugins.skillTier.project-claude":"Claude project \xB7 read-only","yeaft.plugins.skillTier.project-codex":"Codex project \xB7 read-only","yeaft.onboarding.ariaLabel":"Yeaft getting started guide","yeaft.onboarding.topbarTitle":"Get started with Yeaft","yeaft.onboarding.eyebrow":"Yeaft setup guide","yeaft.onboarding.title":"Connect an Agent before chatting","yeaft.onboarding.subtitle":"Run these commands on the machine that should execute tools. The agent secret is generated automatically for your account if it does not exist yet.","yeaft.onboarding.createSession":"Create or restore Session","yeaft.onboarding.secretLoading":"Generating agent secret\u2026","yeaft.onboarding.secretError":"Failed to load agent secret.","yeaft.onboarding.secretPending":"<loading-agent-secret>","yeaft.onboarding.installTitle":"Install and connect Agent","yeaft.onboarding.installDesc":"Run one command on the target machine to install prerequisites, create a private instance, and connect it to this server.","yeaft.onboarding.connectTitle":"Connect this Agent","yeaft.onboarding.connectDesc":"The installer uses this server URL and your generated secret.","yeaft.restore.modal.empty":"No yeaft sessions found in this directory","yeaft.restore.modal.scanError":"Failed to scan: {message}","yeaft.restore.modal.restoreError":"Failed to restore: {message}","settings.llm.noAgent":"Please select an Agent first to manage LLM configuration.","settings.llm.agentOffline":"Agent is currently offline. LLM configuration will load when the agent comes online.","settings.llm.loading":"Loading configuration...","settings.llm.loadError":"Failed to load configuration","settings.llm.configureAgent":"Configure this agent LLM","settings.llm.configureMenu":"LLM Settings","settings.llm.simpleCopilotTitle":"Recommended: GitHub Copilot","settings.llm.useGitHubCopilot":"Use GitHub Copilot","settings.llm.refreshingModels":"Refreshing models...","settings.llm.managedCopilotTitle":"Managed GitHub Copilot","settings.llm.managedCopilotDesc":"Base URL, authentication, model catalog, and per-model API protocol are managed automatically. Claude models use Anthropic Messages; GPT/o models use OpenAI Responses.","settings.llm.providersTitle":"Providers","settings.llm.testFailed":"Connection test failed","settings.llm.saveSuccess":"LLM settings saved","settings.llm.saveFailed":"Failed to save LLM settings","settings.llm.presets.title":"Quick setup","settings.llm.providersDesc":"Choose a provider, save it, and use it in Sessions.","settings.llm.agentProviders":"This agent providers","settings.llm.agentBadge":"This agent","settings.llm.addProvider":"Add Provider","settings.llm.addFromPreset":"Add from Catalog","settings.llm.preset.title":"Provider Catalog (models.dev)","settings.llm.preset.refresh":"Refresh catalog","settings.llm.preset.loading":"Loading catalog\u2026","settings.llm.preset.empty":"No providers available.","settings.llm.preset.pickProvider":"Pick a provider on the left to see its models.","settings.llm.preset.filterProviders":"Filter providers\u2026","settings.llm.preset.filterModels":"Filter models\u2026","settings.llm.preset.selectAll":"Select all","settings.llm.preset.selectNone":"Clear","settings.llm.preset.cancel":"Cancel","settings.llm.preset.add":"Add to providers","settings.llm.preset.fetchedAt":"Catalog updated {minutes}m ago","settings.llm.addModel":"Add Model","settings.llm.removeModel":"Remove Model","settings.llm.providerName":"Name","settings.llm.providerNamePlaceholder":"e.g. my-proxy","settings.llm.baseUrl":"Base URL","settings.llm.baseUrlPlaceholder":"e.g. http://localhost:6628/v1","settings.llm.apiKey":"API Key","settings.llm.apiKeyPlaceholder":"Enter API key","settings.llm.protocol":"Protocol","settings.llm.protocolOpenAI":"OpenAI Compatible","settings.llm.protocolOpenAIResponses":"OpenAI Responses (GPT-5)","settings.llm.protocolAnthropic":"Anthropic Native","settings.llm.protocolHint.anthropic":"Claude native Messages API.","settings.llm.protocolHint.openai":"Chat Completions /v1/chat/completions \u2014 GPT-4 and most compatible proxies.","settings.llm.protocolHint.openaiResponses":"Responses API /v1/responses \u2014 required for GPT-5 series.","settings.llm.modelCtxPlaceholder":"ctx","settings.llm.modelMaxPlaceholder":"max","settings.llm.models":"Candidate Model IDs","settings.llm.modelsPlaceholder":"Model IDs, comma or newline separated, e.g. claude-sonnet-4-20250514, gpt-5","settings.llm.modelsHint":"Comma or newline separated.","settings.llm.removeProvider":"Remove","settings.llm.modelSelectionTitle":"Model Selection","settings.llm.modelSelectionDesc":"Choose the default models.","settings.llm.primaryModel":"Primary Model","settings.llm.primaryModelDesc":"Used for user-facing conversations","settings.llm.fastModel":"Fast Model","settings.llm.fastModelDesc":"Used for internal tasks (memory, consolidation)","settings.llm.noModels":"No models available. Add a provider first.","settings.llm.selectModel":"Select a model...","settings.llm.debugTitle":"Debug traces","settings.llm.debugDesc":"Per-agent opt-in for collecting per-turn debug traces (system prompts, LLM calls, tool payloads).","settings.llm.enableDebug":"Enable debug traces","settings.llm.save":"Save Changes","settings.llm.saving":"Saving...","settings.llm.saved":"Configuration saved","settings.llm.savedRefreshWarning":"Configuration was saved, but the live model catalog could not refresh: {error}","settings.llm.unsavedChanges":"You have unsaved changes","settings.llm.confirmRemoveProvider":"Remove this provider?","settings.llm.setupTitle":"Connect a model","settings.llm.setupDesc":"GitHub Copilot is recommended. You can also add your own API provider.","settings.llm.providerSectionHint":"Only the fields required to connect a model.","settings.tabs.dashboard":"Dashboard","settings.dashboard.totalUsers":"Total Users","settings.dashboard.onlineUsers":"Online Users","settings.dashboard.activeUsers":"Active Users","settings.dashboard.onlineAgents":"Online Agents","settings.dashboard.totalSessions":"Total Sessions","settings.dashboard.todayActive":"Today Active","settings.dashboard.todayMessages":"Today Messages","settings.dashboard.todayUserTurns":"Today User Turns","settings.dashboard.totalTokens":"Total Tokens","settings.dashboard.tokenAccuracy":"Provider-reported usage, accumulated from the version that enabled per-user token tracking. Heartbeats are excluded.","settings.dashboard.agentTurns":"Agent Turns","settings.dashboard.agentSessions":"Agent Sessions","settings.dashboard.turns":"Turns","settings.dashboard.tokens":"Tokens","settings.dashboard.inputTokens":"Input","settings.dashboard.outputTokens":"Output","settings.dashboard.cacheTokens":"Cache","settings.dashboard.today":"Today","settings.dashboard.thisWeek":"This Week","settings.dashboard.thisMonth":"This Month","settings.dashboard.all":"All","settings.dashboard.general":"General","settings.dashboard.detailed":"Detailed","settings.dashboard.users":"Users","settings.dashboard.agents":"Agents","settings.dashboard.time":"Time","settings.dashboard.active":"Active","settings.dashboard.inactive":"Inactive","settings.dashboard.activeOnly":"Active only","settings.dashboard.inactiveOnly":"Inactive only","settings.dashboard.userUsage":"User Usage","settings.dashboard.refresh":"Refresh","settings.dashboard.name":"Name","settings.dashboard.messages":"Messages","settings.dashboard.userTurns":"User Turns","settings.dashboard.sessions":"Sessions","settings.dashboard.requests":"Requests","settings.dashboard.traffic":"Traffic","settings.dashboard.lastTurnCompleted":"Last Turn Completed","settings.dashboard.status":"Status","settings.dashboard.latency":"Latency","settings.dashboard.version":"Version","settings.dashboard.owner":"Owner","settings.dashboard.role":"Role","settings.dashboard.agent":"Agent","settings.dashboard.online":"Online","settings.dashboard.offline":"Offline","settings.dashboard.noAgents":"No agents registered","settings.dashboard.noUserData":"No user data","settings.dashboard.noOnlineUsers":"No users online","settings.dashboard.loading":"Loading...","settings.dashboard.error":"Failed to load data","settings.dashboard.ago":"{time} ago","settings.dashboard.loadMore":"Load more ({remaining} remaining)","workbench.title":"Workbench","workbench.openItems":"Open Workbench items","workbench.addItem":"Add Workbench item","workbench.addItemHint":"Use + to open Files, Terminal, Git, or Browser.","workbench.closeItem":"Close {name}","workbench.chooseCapability":"Choose a capability","workbench.chooseCapabilityHint":"Choose a tool to start. Open tools stay available as tabs.","workbench.terminal":"Terminal","workbench.terminalDescription":"Run commands and manage terminal panes in the current working directory.","workbench.git":"Git","workbench.gitDescription":"Review repository status, diffs, and changed files.","workbench.files":"Files","workbench.filesDescription":"Browse, preview, and edit files on the selected Agent.","workbench.browser":"Browser","workbench.browserDescription":"View the Agent-local browser over a live WebRTC stream.","workbench.available":"Available","workbench.enableRequired":"Enable required","workbench.unavailable":"Unavailable on this Agent","workbench.capabilityUnavailable":"The selected Agent does not provide this capability.","workbench.browserUnavailable":"Browser is disabled by the administrator or unsupported by this Agent. Upgrade the Agent or ask an administrator to enable Browser routes.","workbench.browserReadyHint":"Enter an address to start an isolated Agent-local browser. Click the live view to use its mouse and keyboard.","workbench.browserStart":"Start browser","workbench.browserAddressLabel":"Browser address","workbench.browserAddressPlaceholder":"example.com","workbench.browserAddressInvalid":"Enter a valid HTTP or HTTPS address.","workbench.browserInteractionUnavailable":"Browser input is not connected yet. Wait for WebRTC, then retry.","workbench.browserGo":"Go","workbench.browserStarting":"Starting the Agent-local browser\u2026","workbench.browserConnecting":"Connecting the live WebRTC viewer\u2026","workbench.browserIceServersMissing":"The Browser viewer could not reach this Agent, and this Server has no STUN or TURN service configured. Ask an administrator to configure Browser ICE/TURN, then retry.","workbench.browserIceConnectionFailed":"The Browser WebRTC connection failed. Check that the configured TURN service is reachable from both the Web browser and Agent, then retry.","workbench.browserPeerAttachTimeout":"The Browser viewer timed out while establishing WebRTC. Check Browser ICE/TURN connectivity, then retry.","workbench.browserEnd":"End browser","workbench.browserVideoLabel":"Live Agent browser view","workbench.browserInputLabel":"Browser keyboard input","workbench.browserStatusConnecting":"Connecting","workbench.browserProtocolUnavailable":"Browser Runtime protocol is unavailable on this Server connection.","workbench.browserChecking":"Checking Browser Runtime on the selected Agent\u2026","workbench.browserPlatformUnsupported":"The selected Agent cannot host the current Browser Runtime data plane.","workbench.browserSetupTitle":"Enable Browser","workbench.browserOptionalInstall":"Browser needs a pinned Chrome for Testing build on this Agent. Enabling downloads approximately {size}, verifies and installs build {build}, then checks the media path.","workbench.browserInstallDiskNote":"Nothing downloads until you click Enable Browser. The extracted browser is stored only in this Agent instance data directory.","workbench.browserInstallAction":"Enable Browser ({size})","workbench.browserInstalling":"Enabling Browser: downloading and verifying Chrome for Testing {build}\u2026","workbench.browserInstallKeepOpen":"You may leave this panel. Reopening Browser resumes the visible install state; it will not start a second download.","workbench.browserInstallProgressLabel":"Browser download progress","workbench.browserInstallProgress":"{downloaded} of {total}","workbench.browserInstalledEnable":"The browser files are already installed. Enable Browser and check the media path.","workbench.browserEnableAction":"Enable Browser","workbench.browserEnabling":"Finishing setup and checking the media path\u2026","workbench.browserStatusInstalling":"Installing","workbench.browserStatusProbing":"Probing","workbench.backToCapabilities":"Back to capabilities","workbench.closeCapability":"Close capability","workbench.maximize":"Maximize panel","workbench.restore":"Restore panel","workbench.collapse":"Collapse panel","theme.switchToLight":"Switch to light theme","theme.switchToDark":"Switch to dark theme","theme.toLight":"Switch to light theme","theme.toDark":"Switch to dark theme","terminal.splitH":"Split horizontally (left-right)","terminal.splitV":"Split vertically (top-bottom)","terminal.close":"Close current terminal","terminal.autoCreate":"A terminal will be created when you open Terminal","terminal.xtermError":"xterm.js not loaded, please refresh the page","terminal.xtermNotLoaded":"xterm.js not loaded, please refresh the page","terminal.mountError":"Terminal container mount failed","terminal.mountFailed":"Terminal container mount failed","terminal.createError":"Terminal creation failed","terminal.createFailed":"Terminal creation failed","terminal.error":"Terminal error","git.selectFolder":"Select folder","git.repoPath":"Enter Git repository path...","git.repoPathPlaceholder":"Enter Git repository path...","git.workDir":"Git working directory","git.loadStatus":"Load Git status","git.loading":"Loading Git status...","git.loadingStatus":"Loading Git status...","git.clean":"Working directory clean, no changes","git.cleanWorkDir":"Working directory clean, no changes","git.selectAgent":"Select an Agent to load Git status","git.selectAgentFirst":"Select an Agent to load Git status","git.workItemRootRequired":"Git is unavailable because this Work Item uses a repository subfolder. Files and Terminal remain available; Git operations require a Work Item at the repository root.","git.diffOnly":"Diff only","git.fullFile":"Full file","git.zoomIn":"Zoom in","git.zoomOut":"Zoom out","git.loadingDiff":"Loading Diff...","git.clickToView":"Click a file to view diff","git.clickFileToView":"Click a file to view diff","git.selectRepo":"Select Git Repository","git.noDiff":"(No differences)","git.binaryFile":"(Binary file)","files.notLoaded":"Not loaded","files.newFile":"New File","files.newFolder":"New Folder","files.openFolder":"Open Folder","files.showTree":"Show folders","files.hideTree":"Hide folders","files.deleteSelected":"Delete selected","files.moveSelected":"Move selected","files.enterPath":"Enter path...","files.searchFiles":"Search files... (Ctrl+P)","files.noMatch":"No matches found","files.searching":"Searching...","files.loadingTree":"Loading...","files.emptyDir":"Empty directory","files.loadingFile":"Loading file...","files.readSendFailed":"The file request was not sent. Check the connection, then click the file again to retry.","files.readInterrupted":"The file read was interrupted. Reconnect, then click the file again to retry.","files.searchPlaceholder":"Search...","files.replacePlaceholder":"Replace...","files.replace":"Replace","files.replaceAll":"All","files.replaceCurrent":"Replace current","files.replaceAllTitle":"Replace all","files.clickToView":"Click a file to view content","files.selectFolder":"Select Folder","files.enterFolderName":"Enter folder name...","files.enterFileName":"Enter file name...","files.moveTarget":"Enter target directory path...","files.moveItems":"Move {count} item(s) to the specified directory","files.workDir":"Work directory: {dir}","files.enterDirPath":"Enter directory path...","files.unsavedConfirm":'"{name}" has unsaved changes. Close anyway?',"files.unsavedBatchConfirm":"{count} files have unsaved changes. Close them anyway?","files.showOpenTabs":"Show open files","files.closeTab":"Close {name}","files.closeTabAction":"Close","files.closeOtherTabs":"Close Others","files.closeTabsToLeft":"Close to the Left","files.closeTabsToRight":"Close to the Right","files.closeAllTabs":"Close All","files.deleteConfirm":'Are you sure you want to delete "{name}"?',"files.deleteDirHint":" (this will delete the folder and all its contents)","files.deleteSelectedConfirm":"Are you sure you want to delete {count} selected item(s)? This action cannot be undone.","files.findPrev":"Previous (Shift+Enter)","files.findNext":"Next (Enter)","files.caseSensitive":"Case sensitive","files.regex":"Regular expression","files.unsaved":"Unsaved","files.clearSelection":"Clear selection","files.rename":"Rename","files.copyHere":"Copy","files.moveTo":"Move to...","files.download":"Download","files.enterNewName":"Enter new name...","files.loadingPreview":"Loading preview...","files.previewTooLarge":"This file is {size} MB and exceeds the {limit} MB preview and download limit.","files.previewLoadFailed":"The image preview could not be loaded.","files.videoPreviewLoadFailed":"The video could not be played. Its codec may not be supported by this browser.","files.videoStreamUnavailable":"Video streaming is unavailable for this Agent or Session.","files.preview":"Preview","files.edit":"Edit","files.pptxNotSupported":"PPTX local preview is not supported. Please switch to Office Online mode in Settings.","files.officePreviewMode":"Office Preview Mode","files.officeOnline":"Office Online","files.localRender":"Local Rendering","proxy.port":"Port","proxy.label":"Label","proxy.add":"Add port mapping","proxy.addPort":"Add port mapping","proxy.enable":"Click to enable","proxy.clickEnable":"Click to enable","proxy.disable":"Click to disable","proxy.clickDisable":"Click to disable","proxy.openNewTab":"Open in new tab","proxy.openInBrowser":"Open in new tab","proxy.noMappings":"No port mappings","proxy.noPorts":"No port mappings","proxy.hint":"After adding ports, you can access local services on the agent machine through proxy URLs","proxy.noPortsHint":"After adding ports, you can access local services on the agent machine through proxy URLs","proxy.selectAgent":"Please select an Agent first","store.selectAgent":"Please select an Agent first","store.creatingConv":"Creating conversation...","store.loadingHistory":"Loading conversation history...","store.executionCancelled":"Execution cancelled","store.loginFailed":"Login failed","store.convClosed":"Conversation closed","store.convCreated":"New conversation created [{agent}], work directory: {workDir}","store.convResumed":"Conversation resumed [{agent}]: {sessionId}","roleplay.creating":"Creating Role Play session...","roleplay.working":"Working","roleplay.selectTeam":"Select team template","roleplay.teamDev":"Software Dev","roleplay.teamCustom":"Custom","roleplay.editRoles":"Edit Roles","roleplay.roleName":"Role ID","roleplay.roleDisplayName":"Display Name","roleplay.roleIcon":"Icon","roleplay.roleDesc":"Role Description","roleplay.rolePrompt":"Role Prompt","roleplay.removeRole":"Remove Role","roleplay.addRole":"Add Role","roleplay.start":"Start Role Play","roleplay.sidebarTitle":"Role Play","roleplay.configTitle":"Role Play","roleplay.newSession":"New Role Play","roleplay.emptyHint":"Send a message to start multi-role collaboration","roleplay.askingYou":"is asking you","roleplay.language":"Language","roleplay.rolePreview":"Role Configuration","roleplay.noAgents":"No online agents available","roleplay.inputPlaceholder":"Type a message\u2026 Use @ to mention a role","roleplay.existingSessions":"Existing Teams","roleplay.restore":"Restore","roleplay.restoring":"Restoring Role Play session...","roleplay.createNew":"Create New Team","expertPanel.title":"Expert Panel","expertPanel.search":"Search roles or actions...","expertPanel.noResults":"No results","expertPanel.clearAll":"Clear","expertPanel.persona":"Persona Prompt","expertPanel.template":"With Input \xB7 Prefix","expertPanel.templateHint":"When user types text: this prefix + user text = final prompt","expertPanel.defaultMsg":"No Input \xB7 Full Prompt","expertPanel.defaultMsgHint":"When user sends without typing: this full prompt is used as-is","expertPanel.loading":"Loading role definitions...","expertPanel.viewPrompt":"View prompt","expertPanel.customRoles":"Custom Roles","expertPanel.addRole":"Add role","expertPanel.editRole":"Edit role","expertPanel.deleteRole":"Delete role","expertPanel.noCustomRoles":"No custom roles yet","expertPanel.createFirst":"Create your first custom role","expertPanel.noActions":"No actions defined","expertPanel.deleteConfirm":'Delete role "{name}"? This cannot be undone.',"expertPanel.deleteConfirmBtn":"Delete","expertEditor.createTitle":"Create Custom Role","expertEditor.editTitle":"Edit Custom Role","expertEditor.basicInfo":"Basic Info","expertEditor.roleName":"Role Name","expertEditor.roleNamePlaceholder":"e.g. Data Analyst","expertEditor.roleTitle":"Title","expertEditor.roleTitlePlaceholder":"e.g. Senior Data Analyst","expertEditor.fullName":"Full Name","expertEditor.fullNamePlaceholder":"Optional","expertEditor.titleEn":"English Title","expertEditor.titleEnPlaceholder":"Optional","expertEditor.rolePrompt":"Role Prompt","expertEditor.messagePrefix":"Message Prefix (Chinese)","expertEditor.messagePrefixPlaceholder":"e.g. As a senior data analyst, ","expertEditor.messagePrefixEn":"Message Prefix (English)","expertEditor.messagePrefixEnPlaceholder":"As a senior data analyst, ","expertEditor.actions":"Actions","expertEditor.addAction":"Add Action","expertEditor.removeAction":"Remove","expertEditor.actionName":"Action Name","expertEditor.actionNamePlaceholder":"e.g. Data Analysis","expertEditor.actionNameEn":"English Name","expertEditor.actionNameEnPlaceholder":"Optional","expertEditor.messageTemplate":"With Input \xB7 Prefix (Chinese)","expertEditor.messageTemplatePlaceholder":"Prepended to user text when user types something","expertEditor.messageTemplateEn":"With Input \xB7 Prefix (English)","expertEditor.messageTemplateEnPlaceholder":"Prepended to user text when user types something","expertEditor.defaultMessage":"No Input \xB7 Full Prompt (Chinese)","expertEditor.defaultMessagePlaceholder":"Used as-is when user sends without typing","expertEditor.defaultMessageEn":"No Input \xB7 Full Prompt (English)","expertEditor.defaultMessageEnPlaceholder":"Used as-is when user sends without typing","expertEditor.cancel":"Cancel","expertEditor.save":"Save","expertEditor.saving":"Saving...","subAgentPanel.title":"Sub-Agents","subAgentPanel.back":"Back to list","subAgentPanel.running":"Running","subAgentPanel.completed":"Completed","subAgentPanel.waitingMessages":"Waiting for messages...","subAgentPanel.toolCount":"{count} tools","subAgentPanel.toolSummary":"{count} tool calls completed","subAgentPanel.empty":"No sub-agents","subAgentPanel.emptyHint":"Sub-agents will appear here when Claude delegates tasks","splitScreen.split":"Split screen","splitScreen.closePane":"Close pane","splitScreen.newChat":"New Chat","splitScreen.noSessions":"No sessions","splitScreen.splitToPanel":"Open in new panel","splitScreen.selectFromSidebar":"Select a conversation from the sidebar","yeaft.vp.library":"VP Library","yeaft.vp.createFirst":"+ Create your first role","yeaft.vp.empty.aria":"No virtual persons yet","yeaft.vp.avatar.aria":"{name} avatar","yeaft.vp.speaker.stateCauseAria":"State change: {cause}","yeaft.vp.status.thinking":"thinking\u2026","yeaft.vp.status.tool":"using {name}","yeaft.vp.status.done":"done \xB7 {count} tools","yeaft.vp.status.aborted":"aborted","yeaft.vp.crud.title":"VP Library","yeaft.vp.crud.close":"Close","yeaft.vp.crud.addNew":"+ New role","yeaft.vp.crud.empty":"No virtual persons yet. Create your first role to start collaborating.","yeaft.vp.crud.edit":"Edit","yeaft.vp.crud.delete":"Delete","yeaft.vp.crud.deleteConfirm":'Delete "{name}"? This removes the role.md file on disk.',"yeaft.vp.crud.form.create":"Create role","yeaft.vp.crud.form.update":"Edit role","yeaft.vp.crud.form.vpId":"VP id","yeaft.vp.crud.form.vpId.tooltip":'Letters / digits / - / _ only. Cannot start with "_", cannot be all digits, cannot be one of: all, user, system, everyone.',"yeaft.vp.crud.form.displayName":"Display name (English)","yeaft.vp.crud.form.displayNameZh":"Display name (Chinese)","yeaft.vp.crud.form.description":"Capability description (English)","yeaft.vp.crud.form.descriptionZh":"Capability description (Chinese)","yeaft.vp.crud.form.descriptionPlaceholder":"e.g. API design, migration planning, and compatibility reviews","yeaft.vp.crud.form.descriptionZhPlaceholder":"\u4F8B\u5982\uFF1AAPI \u8BBE\u8BA1\u3001\u8FC1\u79FB\u89C4\u5212\u4E0E\u517C\u5BB9\u6027\u8BC4\u5BA1","yeaft.vp.crud.form.role":"Role","yeaft.vp.crud.form.rolePlaceholder":"e.g. Product Manager","yeaft.vp.crud.form.traits":"Traits","yeaft.vp.crud.form.traitsHint":"Comma-separated short tags (e.g. curious, pragmatic).","yeaft.vp.crud.form.modelHint":"Model hint","yeaft.vp.crud.form.modelHint.none":"\u2014 default \u2014","yeaft.vp.crud.form.modelHint.primary":"primary","yeaft.vp.crud.form.modelHint.fast":"fast","yeaft.vp.crud.form.persona":"Persona (markdown)","yeaft.vp.crud.form.personaPlaceholder":"Describe how this role should think, speak, and decide...","yeaft.vp.crud.form.submit":"Save","yeaft.vp.crud.form.cancel":"Cancel","yeaft.vp.crud.form.ok":"Looks good","yeaft.vp.crud.form.idLocked":"VP id cannot be changed after creation.","yeaft.vp.crud.saving":"Saving\u2026","yeaft.vp.crud.saveFailed":"Save failed: {error}","yeaft.vp.crud.deleteFailed":"Delete failed: {error}","yeaft.vp.crud.viewPrompt":"View prompt","yeaft.vp.crud.view.title":"VP prompt","yeaft.vp.crud.view.personaEmpty":"(no persona body \u2014 only metadata is defined)","yeaft.vp.crud.view.back":"Back","yeaft.vp.crud.view.editFromHere":"Edit this VP","yeaft.vp.crud.view.removed":"This VP was removed elsewhere \u2014 returning to the list.","yeaft.vp.crud.stockBadge":"Stock","yeaft.vp.crud.stockReadOnly":"Stock VPs ship with the agent and cannot be edited or deleted.","yeaft.vp.idError.empty_or_non_string":"VP id is required.","yeaft.vp.idError.too_long":"VP id is too long (max 40 characters).","yeaft.vp.idError.illegal_character":'Only letters, digits, "-" and "_" are allowed.',"yeaft.vp.idError.underscore_prefix_reserved":'VP id cannot start with "_" (reserved for system roles).',"yeaft.vp.idError.pure_digits":"VP id cannot be all digits.","yeaft.vp.idError.reserved":"VP id cannot be one of the reserved names (all, user, system, everyone).","yeaft.vp.idError.duplicate":"A role with this VP id already exists.","yeaft.vp.idError.not_found":"This VP does not exist \u2014 it may have been deleted.","yeaft.vp.idError.stock_readonly":"Stock VPs cannot be edited or deleted.","yeaft.vp.idError.unknown":"An unexpected error occurred. Please try again.","yeaft.vp.reason.personaEdit":"Persona updated","yeaft.vp.reason.traitsEdit":"Traits updated","yeaft.vp.reason.manualReload":"Reloaded","yeaft.vp.reason.fileRemoved":"Removed","yeaft.vp.reason.toast.updated":"{name}: {reason}","yeaft.vp.reason.toast.removed":"{name} was removed","yeaft.message.timeAria":"Sent at {time}","yeaft.message.llmCall":"{count} LLM call","yeaft.message.llmCalls":"{count} LLM calls","yeaft.message.tokenUsage":"Total {total} \xB7 Input {input} \xB7 Output {output}","yeaft.user.youLabel":"You","yeaft.session.sidebarTitle":"Sessions","yeaft.session.sidebarAria":"Sessions section","yeaft.session.newButton":"+ New session","yeaft.session.newButtonAria":"Create a new session","yeaft.session.defaultName":"Default","yeaft.session.moreActions":"More actions","yeaft.session.archivingEllipsis":"Archiving\u2026","yeaft.session.deletingEllipsis":"Deleting\u2026","yeaft.session.renamingEllipsis":"Renaming\u2026","yeaft.session.empty":"No sessions yet.","yeaft.session.membersCount":"{count} members","yeaft.session.oneMember":"1 member","yeaft.session.noMembers":"Empty \u2014 invite a VP","yeaft.session.defaultBadge":"default","yeaft.session.archive":"Archive","yeaft.session.archiveConfirm":'Archive "{name}"? You can recover it from disk later.',"yeaft.session.delete":"Delete","yeaft.session.deleteConfirm":'Delete "{name}"? This permanently removes the session and all its data \u2014 this cannot be undone.',"yeaft.session.rename":"Rename","yeaft.session.copy":"Copy session","yeaft.session.copying":"Copying session\u2026","yeaft.session.copyComplete":"Session copied","yeaft.session.copyFailed":"Could not copy the session: {message}","yeaft.session.openSettings":"Settings","yeaft.session.removeFromList":"Remove","yeaft.session.manageMembers":"Manage members","yeaft.session.memberCount.one":"1 member","yeaft.session.memberCount.other":"{count} members","yeaft.session.renamePrompt":'New name for "{name}":',"yeaft.session.editModal.renameTitle":"Rename session","yeaft.session.editModal.renameBody":'Choose a new name for "{name}".',"yeaft.session.editModal.renameSubmit":"Save","yeaft.session.editModal.archiveTitle":"Archive session","yeaft.session.editModal.archiveBody":'Archive "{name}"? You can recover it from disk later.',"yeaft.session.editModal.archiveSubmit":"Archive","yeaft.session.editModal.deleteTitle":"Delete session","yeaft.session.editModal.deleteBody":'Delete "{name}"? This permanently removes the session and all its data \u2014 this cannot be undone.',"yeaft.session.editModal.deleteSubmit":"Delete","yeaft.session.editModal.newNameLabel":"New name","yeaft.session.editModal.cancel":"Cancel","yeaft.session.editModal.close":"Close","yeaft.session.error.invalid_name":"Session name cannot be empty.","yeaft.session.error.duplicate":"A session with this id already exists.","yeaft.session.error.not_found":"Session not found.","yeaft.session.error.agent_offline":"Reconnect to the Agent before copying this session.","yeaft.session.error.fork_pending":"A Session copy is already in progress.","yeaft.session.error.project_inheritance_failed":"The copy was created, but its Project could not be saved. Move the new Session into the original Project from the sidebar; do not copy it again.","yeaft.session.error.session_running":"Wait for this session's current response to finish before copying it.","yeaft.session.error.default_not_in_roster":"The default VP must be in the roster.","yeaft.session.error.no_default_vp":"This session has no members. Add a VP from the library to start chatting.","yeaft.session.error.reserved":"One of the selected ids is reserved (all, user, system, everyone).","yeaft.session.error.unknown":"Session operation failed: {message}","yeaft.session.error.timeout":"Session operation timed out \u2014 try again.","yeaft.session.invite.title":"Invite a VP","yeaft.session.invite.body":'"{name}" has no members yet. Add a VP from your library to start chatting.',"yeaft.session.invite.openLibrary":"Open VP Library","yeaft.session.invite.dismiss":"Not now","yeaft.session.empty.title":"Empty session","yeaft.session.empty.hint":'"{name}" has no members yet. Add a VP to start chatting.',"yeaft.session.empty.cta":"Manage members","yeaft.session.members.title":'Manage members of "{name}"',"yeaft.session.members.aria":"Session members manager","yeaft.session.members.close":"Close","yeaft.session.members.done":"Done","yeaft.session.members.empty":"No VPs available \u2014 create one in the VP Library first.","yeaft.session.members.loading":"Loading VPs\u2026","yeaft.session.members.defaultHint":"Default VP (replies when no @mention is given)","yeaft.session.members.memberCount":"{count} selected","yeaft.session.members.actionFailed":"Action failed: {error}","yeaft.session.members.openLibrary":"Open VP Library","yeaft.session.members.openLibraryHint":"Create a new VP or view a VP's prompt.","yeaft.session.announcement.label":"Announcement","yeaft.session.announcement.hintEmpty":"No announcement \u2014 click \u270F\uFE0F to add one.","yeaft.session.announcement.emptyBody":"No announcement set. Add a message that every VP in this session will see at the top of its system prompt \u2014 useful for shared context, ground rules, or a CLAUDE.md-style brief.","yeaft.session.announcement.placeholder":"Write a shared briefing for all VPs in this session\u2026","yeaft.session.announcement.edit":"Edit announcement","yeaft.session.announcement.editTitle":"Edit session announcement","yeaft.session.announcement.saving":"Saving\u2026","yeaft.session.announcement.saveFailed":"Save failed: {error}","yeaft.session.announcement.openSettings":"Open session settings","yeaft.session.settings.title":"{name} \u2014 session settings","yeaft.session.settings.short":"Session","yeaft.session.settings.close":"Close","yeaft.session.settings.nav.session":"Session","yeaft.session.settings.nav.members":"Members","yeaft.session.settings.nav.memory":"Memory","yeaft.session.settings.announcement.heading":"Session announcement","yeaft.session.settings.announcement.help":"Shared at the top of every VP's system prompt while in this session. Like a CLAUDE.md for the team.","yeaft.session.settings.members.heading":"Members","yeaft.session.settings.rename.heading":"Rename session","yeaft.session.settings.rename.label":"New name","yeaft.session.settings.rename.save":"Save name","yeaft.session.settings.rename.saving":"Saving\u2026","yeaft.session.settings.workDir.heading":"Working directory","yeaft.session.settings.workDir.help":"Project files and instructions are loaded from this directory on the next turn. Session history remains in Agent storage.","yeaft.session.settings.workDir.label":"Path","yeaft.session.settings.workDir.placeholder":"/path/to/project","yeaft.session.settings.workDir.save":"Save directory","yeaft.session.settings.workDir.saving":"Saving\u2026","yeaft.session.settings.workDir.saveFailed":"Could not save the working directory: {error}","yeaft.session.settings.memory.heading":"Session memory","yeaft.session.settings.memory.help":"Run the dream consolidation now. Reads new messages since the last run, extracts facts, and merges them into the session's summary so the Resident layer reflects the latest conversation.","yeaft.session.settings.memory.runNow":"Run dream now","yeaft.session.settings.memory.running":"Running\u2026","yeaft.session.settings.memory.lastSuccess":"Last run {time} \u2014 {count} target(s) updated.","yeaft.session.settings.memory.lastError":"Last run failed: {error}","yeaft.session.settings.danger.heading":"Delete session","yeaft.session.settings.danger.deleteHelp":"This permanently deletes the session, removing session.json and all message history on disk. It cannot be undone.","yeaft.session.settings.danger.deleteBtn":"Delete session","yeaft.vp.mention.placeholder":"Search role by id or name\u2026","yeaft.vp.mention.noMatch":"No matching role","yeaft.vp.mention.count":"{count} mentions","yeaft.feature.reject.missing_group_id":"Message send failed: session not specified.","yeaft.feature.reject.missing_feature_id":"Message send failed: task context lost.","yeaft.feature.reject.missing_vp_id":"Message send failed: speaker not set.","yeaft.feature.reject.invalid_vp_id":"Message send failed: invalid speaker id.","yeaft.feature.reject.empty_text":"Message send failed: empty message.","yeaft.feature.reject.text_too_long":"Message send failed: text too long (max 16 KiB).","yeaft.feature.reject.unknown":"Message send failed.","yeaft.feature.pill.label":"task","yeaft.feature.messageTime.aria":"Sent at {time}","yeaft.vp.turnBlock.elapsedTitle":"Time elapsed since this turn started","yeaft.vp.turnBlock.retryingRequest":"Response stalled; retrying with a fresh request ({attempt}/{max})","yeaft.vp.turnBlock.retryingContinue":"Response stalled; continuing with a fresh request ({attempt}/{max})","yeaft.sessionStatus.aria":"Session status","yeaft.sessionStatus.title":"Session status","yeaft.sessionStatus.announcement":"Announcement","yeaft.sessionStatus.announcementEmpty":"No announcement","yeaft.sessionStatus.announcementAdd":"Add announcement","yeaft.sessionStatus.announcementEdit":"Edit announcement","yeaft.sessionStatus.vps":"VPs","yeaft.sessionStatus.backgroundTasks":"Background tasks","yeaft.sessionStatus.noLogPreview":"No log output yet.","yeaft.sessionStatus.task.subAgentStarted":"{name} started","yeaft.sessionStatus.task.subAgentStartedWithMission":"{name} started: {mission}","yeaft.sessionStatus.task.subAgentStatus":"{name} is {status}","yeaft.sessionStatus.task.subAgentStatusUpdated":"{name} status updated","yeaft.sessionStatus.task.subAgentResult":"{name} result: {text}","yeaft.sessionStatus.task.subAgentProducedResult":"{name} produced a result","yeaft.sessionStatus.task.subAgentUsedTool":"{name} used {tool}","yeaft.sessionStatus.task.subAgentFinishedTool":"{name} finished {tool}","yeaft.sessionStatus.task.subAgentUsage":"{name} used {tokens} tokens","yeaft.sessionStatus.task.subAgentEvent":"{name}: {text}","yeaft.sessionStatus.task.subAgentUserPrompt":"You: {text}","yeaft.sessionStatus.task.subAgentToolSummary":"{count} tool calls completed","yeaft.sessionStatus.task.subAgentError":"{name} error: {error}","yeaft.sessionStatus.task.subAgentHitError":"{name} hit an error","yeaft.sessionStatus.task.subAgentNoReadableEvents":"No readable sub-agent activity yet.","yeaft.sessionStatus.task.promptPlaceholder":"Add guidance for this sub-agent\u2026","yeaft.sessionStatus.task.promptSend":"Send","yeaft.sessionStatus.task.promptSending":"Sending\u2026","yeaft.sessionStatus.task.promptFailed":"Failed to send prompt.","yeaft.sessionStatus.task.title":"Task","yeaft.sessionStatus.task.command":"Command","yeaft.sessionStatus.task.stop":"Stop task","yeaft.sessionStatus.task.stopping":"Stopping\u2026","yeaft.sessionStatus.task.kind.subAgent":"sub-agent","yeaft.sessionStatus.task.kind.shell":"shell","yeaft.sessionStatus.show":"Show Session status","yeaft.sessionStatus.hide":"Hide Session status","yeaft.sessionStatus.close":"Close Session status","yeaft.vpTimeline.empty":"No VPs in this Session yet.","yeaft.vpTimeline.resizeTitle":"Drag to resize","yeaft.vpTimeline.status.idle":"idle","yeaft.vpTimeline.status.typing":"typing\u2026","yeaft.vpTimeline.status.thinking":"thinking\u2026","yeaft.vpTimeline.status.retrying":"retrying request\u2026","yeaft.vpTimeline.status.streaming":"streaming","yeaft.vpTimeline.status.tool":"using tool\u2026","yeaft.vpTimeline.status.error":"error","yeaft.vpTimeline.status.offline":"offline","yeaft.vpTimeline.abort":"Abort","yeaft.vpTimeline.edit":"Edit VP","yeaft.vpTimeline.mention":"Click to @-mention this VP","yeaft.vpTimeline.expand":"Toggle task details","yeaft.toolStats.title":"Tool Usage Stats","yeaft.toolStats.refresh":"Refresh","yeaft.toolStats.close":"Close","yeaft.toolStats.tabAll":"All tools","yeaft.toolStats.tabUnused":"Unused","yeaft.toolStats.loading":"Loading\u2026","yeaft.toolStats.notLoaded":"No data yet \u2014 click refresh.","yeaft.toolStats.empty":"(no tool calls recorded yet)","yeaft.toolStats.noneUnused":"(every registered tool has been called at least once)","yeaft.toolStats.fetchedAt":"Fetched at","yeaft.toolStats.col.name":"Tool","yeaft.toolStats.col.calls":"Calls","yeaft.toolStats.col.errors":"Errors","yeaft.toolStats.col.errRate":"Err%","yeaft.toolStats.col.p50":"p50","yeaft.toolStats.col.p95":"p95","yeaft.toolStats.col.avg":"Avg","yeaft.toolStats.col.last":"Last","yeaft.toolStats.buttonLabel":"Tool Stats","workCenter.itemInfo":"Work item info","workCenter.infoTab.requirement":"Requirement","workCenter.infoTab.progress":"Progress","workCenter.infoTab.outputs":"Outputs","workCenter.infoTab.goals":"Goals","workCenter.infoTab.usage":"Usage","workCenter.infoProgressEmpty":"No Actions yet.","workCenter.infoOutputsEmpty":"No outputs yet.","workCenter.infoConversationEmpty":"No messages yet.","workCenter.workbenchUnavailable":"Open a Work Item with a workspace on an updated Agent and Server to use Workbench.","workCenter.openOutputFile":"Open file: {name}","workCenter.returnToSession":"Return to Session","workCenter.showNavigation":"Show Work Center navigation","workCenter.hideNavigation":"Hide Work Center navigation","workCenter.agents":"Agents","workCenter.expandItemActivity":"Expand activity for {title}","workCenter.collapseItemActivity":"Collapse activity for {title}","workCenter.activity":"In progress","workCenter.noActivity":"No work in progress","workCenter.activityOffline":"Disconnected \xB7 status may be out of date","workCenter.online":"Online","workCenter.offline":"Offline","workCenter.close":"Close Work Center","workCenter.searchAndFilters":"Search and filters","workCenter.moreActions":"More actions","workCenter.navigation":"Work item navigation","workCenter.title":"Work Center","workCenter.subtitle":"Persistent work owned by this Agent","workCenter.agent":"Agent","workCenter.selectAgent":"Select Agent","workCenter.noOnlineAgents":"No online agents","workCenter.noAvailableAgents":"No compatible online Agents","workCenter.checkingAgents":"Checking Work Center availability\u2026","workCenter.agentStatusLoadFailed":"Could not check Work Center status. Try again.","workCenter.retryAgentStatus":"Retry status check","workCenter.unavailableAgents":"Work Center is configured on, but its runtime is unavailable. Review this Agent\u2019s settings and logs.","workCenter.disabledAgents":"Work Center is disabled on the online Agent.","workCenter.disabledAgentsMany":"Work Center is disabled on {count} online Agents.","workCenter.openAgentSettings":"Open Agent settings","workCenter.openAgentSettingsUpgrade":"Open Agent settings to upgrade","workCenter.upgradeAgents":"The online Agents do not support Work Center settings.","workCenter.new":"New","workCenter.newWorkItem":"New work item","workCenter.workItem":"Work item","workCenter.createFirst":"Create first work item","workCenter.backToChat":"Back to chat","workCenter.refresh":"Refresh","workCenter.search":"Search work items","workCenter.filter":"Filter","workCenter.filterAttention":"Needs attention","workCenter.filterActive":"Active","workCenter.filterAll":"All","workCenter.filterDone":"Done","workCenter.attentionItems":"Needs attention","workCenter.board.active":"Active","workCenter.board.needsAttention":"Needs attention","workCenter.board.closed":"Closed","workCenter.board.emptyLane":"No work items","workCenter.board.lanes":"Work item lanes","workCenter.filterVp":"Filter by VP","workCenter.filterType":"Filter by type","workCenter.filterUpdated":"Filter by update time","workCenter.allVps":"All VPs","workCenter.allTypes":"All types","workCenter.anyTime":"Any time","workCenter.lastDay":"Last 24 hours","workCenter.lastWeek":"Last 7 days","workCenter.deleteWorkItem":"Delete Work Item","workCenter.deleteConfirm":"Permanently delete this Work Item, its execution history, and attachments?","workCenter.deleteRequiresStop":"Stop this Work Item before deleting it","workCenter.lastMonth":"Last 30 days","workCenter.assignment.planned":"Planned assignment","workCenter.created":"Created","workCenter.executionDuration":"Runtime","workCenter.files":"files","workCenter.loadMore":"Load more","workCenter.activeItems":"Active work","workCenter.allItems":"All work items","workCenter.completedItems":"Completed","workCenter.watcherActive":"Watcher active","workCenter.loading":"Loading work items\u2026","workCenter.noTimestamp":"No timestamp","workCenter.updated":"Updated","workCenter.emptyTitle":"No work items yet","workCenter.emptyBody":"Create a persistent task when work must continue beyond one conversation turn.","workCenter.noAttentionTitle":"Nothing needs attention","workCenter.noAttentionBody":"Work Items waiting for you or needing recovery will appear here.","workCenter.noActiveTitle":"No active work items","workCenter.noActiveBody":"Draft, ready, and running Work Items will appear here.","workCenter.noCompletedTitle":"No completed work items","workCenter.noCompletedBody":"Completed work items will appear here.","workCenter.noMatchesTitle":"No matching work items","workCenter.noMatchesBody":"Try a different search or filter.","workCenter.selectTitle":"Work item details","workCenter.detailLoading":"Loading full details\u2026","workCenter.detailLoadFailed":"Could not load full details","workCenter.start":"Start","workCenter.retry":"Retry","workCenter.cancel":"Cancel","workCenter.closeWorkItem":"Close details","workCenter.cancelWorkItem":"Stop work item","workCenter.cancelWorkItemHint":"Stop this Work Item and all unfinished Actions.","workCenter.cancelConfirm":"Stop this work item and its unfinished Actions?","workCenter.stopWorkItem":"Stop work item","workCenter.resumeWorkItem":"Resume work item","workCenter.resource.title":"Resource budget","workCenter.resource.requests":"Requests","workCenter.resource.chargedTokens":"Budgeted tokens","workCenter.resource.details":"Usage breakdown and limits","workCenter.resource.total":"Total \xB7 lifetime","workCenter.resource.coordinator":"Coordinator","workCenter.resource.actions":"Actions","workCenter.resource.usage":"{requests} requests \xB7 {charged} budgeted tokens","workCenter.resource.tokens":"Reported {reported} \xB7 reserved / unknown {reserved} tokens","workCenter.resource.unknown":"Unknown usage: {unknown} requests \xB7 in flight: {inflight}","workCenter.resource.accounting":"Budgeted tokens include reservations; do not add them again. Reported tokens are known usage, not the total bill. Admission is estimated, not a hard spending ceiling.","workCenter.resource.maxRequests":"Lifetime requests","workCenter.resource.maxTokens":"Lifetime tokens","workCenter.resource.maxRunRequests":"Requests per Run","workCenter.resource.maxActionAttempts":"Attempts per Action","workCenter.resource.maxCoordinatorFailures":"Coordinator failures","workCenter.resource.attemptLimit":"Action attempts are cumulative across generations and also capped by each Action\u2019s original limit plus explicit extensions. Used / effective limit:","workCenter.resource.attemptExtension":"Adding Action attempts authorizes extra attempts for ALL current and future Actions in this WorkItem.","workCenter.resource.stopped":"Execution stopped by resource control.","workCenter.resource.stop.work_item_requests_exhausted":"Stopped: lifetime request budget exhausted.","workCenter.resource.stop.work_item_tokens_exhausted":"Stopped: token budget cannot admit another request.","workCenter.resource.stop.run_requests_exhausted":"Stopped: Run request limit reached. Resume starts a new Run.","workCenter.resource.stop.action_attempts_exhausted":"Stopped: Action attempt limit reached.","workCenter.resource.stop.coordinator_failures_exhausted":"Stopped: Coordinator failure limit reached.","workCenter.resource.offline":"Agent disconnected. Reconnect and refresh before changing resources.","workCenter.resource.stale":"Resource state changed or is unconfirmed. Refresh and confirm again; nothing will be retried automatically.","workCenter.resource.refresh":"Refresh resource state","workCenter.resource.reconfirm":"Latest state loaded. Review the limits and confirm a new operation if needed.","workCenter.resource.extend":"Extend budget","workCenter.resource.confirmExtend":"Confirm budget addition","workCenter.resource.extendHelp":"Enter positive whole-number additions, not replacement limits. Leave other fields blank. Adding budget does not resume execution or reset usage.","workCenter.resource.current":"Current: {count}","workCenter.resource.invalid":"Use positive safe integers only; the resulting limits must also be safe integers.","workCenter.resource.extended":"Budget added. Execution was not resumed; resume explicitly when ready.","workCenter.resource.resumed":"Resume accepted.","workCenter.resource.pending":"Updating resource state\u2026","workCenter.resource.close":"Close budget form","workCenter.breadcrumbs":"Work Center navigation","workCenter.actionNumber":"Action {number}","workCenter.actionBreadcrumb":"Action {number}: {description}","workCenter.sourceUnavailable":"Source Action unavailable","workCenter.untitledAction":"Untitled Action","workCenter.workItems":"Work items","workCenter.description":"Description","workCenter.goal":"Goal","workCenter.acceptanceCriteria":"Acceptance criteria","workCenter.goalProgress":"Goal progress","workCenter.criteriaProgress":"{completed} / {total} criteria verified","workCenter.criteriaRemaining":"{count} remaining","workCenter.criteriaOmitted":"{count} more criteria omitted from this bounded view; totals include them.","workCenter.criteriaVerified":"All criteria verified","workCenter.criteriaPending":"Acceptance criteria have not been defined yet","workCenter.goalStatus.passed":"Verified","workCenter.goalStatus.failed":"Failed","workCenter.goalStatus.unmet":"Not yet verified","workCenter.goalBlockers":"Blockers","workCenter.evidenceRuns":"Evidence Runs","workCenter.deliveredResponse":"Delivered response","workCenter.responseEvidence":"Response source and evidence","workCenter.noCriteria":"No criteria provided","workCenter.failureReason":"Failure reason","workCenter.workflow":"Workflow","workCenter.triageSummary":"Triage summary","workCenter.actionFlow":"Action flow","workCenter.viewActions":"View Actions","workCenter.actionsPanel":"Actions","workCenter.resizeActions":"Resize Actions panel (arrow keys to adjust, Home to reset)","workCenter.closeActions":"Close Actions","workCenter.actionCount":"{count} Actions","workCenter.noActionSummary":"No summary yet","workCenter.actionProgress":"{completed} / {total} Actions","workCenter.currentAction":"Current Action","workCenter.expandActions":"Show Actions","workCenter.collapseActions":"Collapse","workCenter.actionObjective":"What to do","workCenter.actionApproach":"How to do it","workCenter.actionExpectedOutcome":"Expected result","workCenter.dependencies":"Source Actions","workCenter.actionResult":"Latest result","workCenter.currentProgress":"Current progress","workCenter.requirementAndAcceptance":"Requirement and acceptance","workCenter.taskInformation":"Task information and usage","workCenter.actionMessages":"Messages","workCenter.loops":"loops","workCenter.tools":"tools","workCenter.noActionMessages":"No messages yet.","workCenter.actionDetails":"Action details","workCenter.selectAction":"Select an Action","workCenter.backToWorkItems":"Work items","workCenter.backToActions":"Back to Actions","workCenter.you":"You","workCenter.noRequestDetails":"No execution records are available for this Action yet.","workCenter.loadingRequests":"Loading execution records\u2026","workCenter.loadingRequestDetail":"Loading tool evidence\u2026","workCenter.requestDetailUnavailable":"Tool evidence is unavailable. Try again.","workCenter.noRequestLoops":"This execution has no retained Loop details.","workCenter.requestDetailTruncated":"Large execution: {summarized} Loops are summarized and {omitted} older Loops are omitted.","workCenter.loopDetailTruncated":"Large Loop: showing retained tool evidence.","workCenter.loadEarlierMessages":"Load earlier messages","workCenter.loadingEarlierMessages":"Loading earlier messages\u2026","workCenter.unknownModel":"Unknown model","workCenter.loop":"Loop","workCenter.actionBrief":"Task brief","workCenter.executionSummary":"Execution summary","workCenter.toolParameters":"Parameters","workCenter.toolResult":"Result","workCenter.noToolCalls":"No tool calls in this Loop.","workCenter.actionInputPlaceholder":"Add context, answer a question, or redirect this Action","workCenter.actionInputResumeHint":"Your input resumes this Action with the additional context.","workCenter.waitingQuestionTitle":"Input required","workCenter.replyToAction":"Reply to this Action","workCenter.replyToCoordinator":"Reply to Coordinator","workCenter.replyHelp":"Reply with your decision or instructions in the conversation below. Nothing is approved until you send.","workCenter.inputStale":"Your reply was not applied because the target changed. Your draft is saved; check the refreshed target and send again.","workCenter.actionInputRetryHint":"Add instructions or files, then rerun this Action with the new context.","workCenter.actionInputContinueHint":"Direct intervention for this Action only.","workCenter.actionFailedTitle":"Why this Action failed","workCenter.actionClosedTitle":"Why this Action was closed","workCenter.failedAt":"Failed at","workCenter.closedAt":"Closed at","workCenter.actionFailureRecovery":"Choose this Action in the Work Item composer to send corrected instructions.","workCenter.sendInput":"Send to Action","workCenter.sendingInput":"Sending\u2026","workCenter.retryAction":"Retry Action","workCenter.sendAndRetryAction":"Send and retry Action","workCenter.coordinatorDecision.guide_actions":"Action instructions updated","workCenter.coordinatorDecision.replan":"Goal or plan updated","workCenter.coordinatorDecision.request_human":"Human input requested","workCenter.conversation":"Conversation","workCenter.contentPane":"Content","workCenter.workItemPanes":"Work item panes","workCenter.coordinator":"Coordinator","workCenter.coordinatorTargetHint":"Work Item planning and coordination","workCenter.composerTarget":"Message target","workCenter.targetUnavailable":"Selected Action is no longer available","workCenter.targetUnavailableHelp":"Choose another target before sending. This draft was not redirected.","workCenter.sendToCoordinatorInstead":"Send to Coordinator instead","workCenter.sendToTarget":"Send to {target}","workCenter.answerWithTarget":"Choose the relevant target in the Conversation composer, then reply.","workCenter.conversationThinking":"Working\u2026","workCenter.conversationReadOnly":"This work item is closed. The conversation remains available.","workCenter.conversationPlaceholder":"Message about this work item","workCenter.sendMessage":"Send message","workCenter.messageSpeakerRole":"{name} \xB7 {role}","workCenter.originalRequest":"Original request","workCenter.actionMessageScopeTitle":"Message this Action","workCenter.actionMessageScope":"Only this Action receives the message.","workCenter.actionConversation":"Conversation","workCenter.actionConversationWith":"Action executor","workCenter.actionViews":"Action views","workCenter.actionExecutor":"Executor","workCenter.actionExecutorPending":"Executor pending","workCenter.actionInformation":"Action information","workCenter.messageExecutor":"Message {name}","workCenter.actionChatPlaceholder":"Message {name} from the Conversation composer","workCenter.statusLabel":"Status","workCenter.llmRequestsLabel":"LLM requests","workCenter.loopsLabel":"Loops","workCenter.toolsLabel":"Tools","workCenter.tokensLabel":"Tokens","workCenter.workItemMessagePlaceholder":"Add direction for the whole Work Item","workCenter.sendWorkItemMessage":"Send to Work Item","workCenter.fromSession":"Create a work item from this Session","workCenter.llmRequestCount":"{count} LLM requests","workCenter.loopCount":"{count} loops","workCenter.toolCount":"{count} tools","workCenter.tokenCount":"{count} tokens","workCenter.tokenBreakdown":"{input} input / {output} output / {cache} cached","workCenter.guidance":"Add guidance to the current Action","workCenter.guidanceHint":"Clarify constraints or redirect the current Action","workCenter.guidanceRestartHint":"This restarts the current Action with the new guidance.","workCenter.sendGuidance":"Send guidance","workCenter.reuseMemory":"Use relevant Agent memory and completed work from this project","workCenter.reuseMemoryHelp":"Includes scope-bounded Agent memory plus structured summaries and evidence from completed WorkItems with the same canonical project directory. Raw tool output is not reused.","workCenter.resumeAnswer":"Answer the waiting question","workCenter.resumeAnswerHint":"Provide the information required to continue","workCenter.answerInActionDetail":"Target the current Action in the Conversation composer, then reply.","workCenter.selectPrompt":"Select a work item to inspect its workflow.","workCenter.createHint":"Describe what you need. The Coordinator will keep creating the next justified Actions until the acceptance criteria are verified.","workCenter.requirement":"Requirement","workCenter.requirementHint":"Describe the problem, desired outcome, and any constraints in your own words","workCenter.requirementHelp":"The Coordinator will refine the goal and acceptance criteria, then create Actions dynamically as evidence arrives.","workCenter.titleField":"Title","workCenter.titleHint":"A short, specific outcome","workCenter.goalHint":"Describe the result the Agent must deliver","workCenter.criteriaHint":"One criterion per line","workCenter.attachments":"Attachments","workCenter.outputs":"Outputs","workCenter.deliveryTarget":"Delivery target","workCenter.deliveryTargetAsk":"Ask me before delivery","workCenter.deliveryTargetResponse":"Response","workCenter.deliveryTargetFiles":"Workspace files","workCenter.deliveryTargetPr":"Open a pull request","workCenter.deliveryTargetMerge":"Merge an approved pull request","workCenter.deliveryTargetHelp":"Response delivers an answer with evidence, without requiring code artifacts. Code targets still follow review and merge policy.","workCenter.attachmentsHelp":"Images, PDFs, and text files stay bound to this Work Item and are available to every Action.","workCenter.attachmentsUnsupported":"The selected Agent does not support Work Item attachments.","workCenter.addAttachments":"Add files","workCenter.attachmentsUploading":"Uploading\u2026","workCenter.attachmentsUploadFailed":"Attachment upload failed","workCenter.pendingEnvelopeLocked":"An unconfirmed request is locked to its original identity.","workCenter.replacePendingAttachments":"Replace attachments","workCenter.discardPendingEnvelope":"Discard pending request","workCenter.pendingEnvelopeChanged":"The pending request changed; reopen this Work Item and try again.","workCenter.removeAttachment":"Remove from draft","workCenter.previewAttachment":"Open attachment","workCenter.openAttachmentNamed":"Open attachment {name}","workCenter.openingAttachment":"Opening attachment\u2026","workCenter.attachmentPreviewFailed":"Could not open the attachment. Try again.","workCenter.attachmentOpenBlocked":"The browser blocked the attachment window. Allow pop-ups and try again.","workCenter.execution":"Execution","workCenter.executionHint":"Choose where and how this work item starts.","workCenter.workDir":"Working directory","workCenter.workDirHint":"Choose an existing project directory","workCenter.chooseFolder":"Choose folder","workCenter.workDirPickerHelp":"Select an existing folder on the chosen Agent.","workCenter.folderPickerHint":"Choose the project folder this Work Item can read and modify.","workCenter.folderPickerSelectionHint":"Double-click to open a folder, or select it and confirm.","workCenter.schedule":"Schedule","workCenter.scheduleStatus":"Schedule status","workCenter.scheduleEnabled":"Enabled","workCenter.scheduleDisabled":"Disabled","workCenter.scheduleRunsAt":"Scheduled for","workCenter.scheduleTriggered":"Schedule triggered","workCenter.schedulePaused":"Schedule paused","workCenter.scheduleWorkItem":"Schedule this work item","workCenter.scheduleWorkItemHint":"Keep it as a persisted draft and start it once at the selected local time.","workCenter.scheduleAt":"Start at","workCenter.enableSchedule":"Enable schedule","workCenter.disableSchedule":"Disable schedule","workCenter.startImmediately":"Start immediately","workCenter.startImmediatelyHint":"Turn this off to create a draft you can review first.","workCenter.creating":"Creating\u2026","workCenter.create":"Create","workCenter.status.draft":"draft","workCenter.status.ready":"ready","workCenter.status.running":"running","workCenter.status.waiting":"waiting","workCenter.status.needs_attention":"needs attention","workCenter.status.done":"done","workCenter.status.cancelled":"cancelled","workCenter.status.completed":"completed","workCenter.status.failed":"failed","workCenter.status.closed":"closed","workCenter.status.superseded":"superseded","workCenter.action.triage":"Triage","workCenter.action.implement":"Implement","workCenter.action.review":"Review","workCenter.action.integrate":"Integrate","workCenter.action.deliver":"Deliver","workCenter.action.test":"Test","workCenter.action.research":"Research","workCenter.action.design":"Design","workCenter.action.diagnose":"Diagnose","workCenter.action.migrate":"Migrate","workCenter.action.document":"Document","workCenter.action.operate":"Operate","workCenter.action.write":"Write","workCenter.action.create_vp":"Create VP","workCenter.action.custom":"Custom","workCenter.assignment.auto":"Use workflow policy","workCenter.model.inherit":"Use workflow model","workCenter.model.defaultProvider":"default provider","workCenter.planPreview":"Execution plan","workCenter.planPreviewHelp":"Resolved from this Agent\u2019s VP pool and model settings.","workCenter.settings.title":"Work Center settings","workCenter.settings.subtitle":"Configure the Coordinator plus reusable Action prompts, models, and effort for AI-planned work.","workCenter.settings.workflow":"Workflow","workCenter.settings.workflowHelp":"The Coordinator chooses task-specific Actions and executors dynamically.","workCenter.settings.aiWorkflowHelp":"The Coordinator creates only the next justified task-specific Actions. Built-in Action policies are reusable templates, and the Coordinator may create a precise domain type when needed.","workCenter.settings.globalInstructions":"Global Agent instructions","workCenter.settings.globalInstructionsHint":"Example: Follow the repository release policy, require independent review, and never create deployment tags without explicit approval.","workCenter.settings.globalInstructionsHelp":"Stored at Agent level and frozen into every new WorkItem. Applied to triage and every generated Action, below the WorkItem contract and system/tool safety rules. Existing WorkItems keep their original snapshot.","workCenter.settings.actionPolicies":"Built-in Action policies","workCenter.settings.actionPoliciesHelp":"These are reusable execution baselines, not a fixed workflow. Unknown domain-specific Action types use the Custom policy plus their triage-generated type and objective.","workCenter.settings.dynamicInstructionHelp":"The AI adds the WorkItem contract, global instructions, prior Action context, memory, and a task-specific objective. This prompt defines the reusable behavior for this Action type.","workCenter.settings.models":"Models","workCenter.settings.modelsHelp":"Providers and credentials stay in Agent LLM settings. Work Center only selects available models.","workCenter.settings.dynamicModelsHelp":"Choose the Coordinator model separately from the models that execute Actions.","workCenter.settings.coordinatorModel":"Coordinator","workCenter.settings.coordinatorModelHelp":"Used for Work Item conversation, goal changes, and replanning. It never executes repository tools.","workCenter.settings.allActions":"Fallback for all Actions","workCenter.settings.maxConcurrentActions":"Maximum concurrent Actions","workCenter.settings.maxConcurrentActionsHelp":"Defaults to 3. Non-Git, dirty, shared, and integration work remains serial.","workCenter.workItemType":"Type","workCenter.typeAuto":"Auto \u2014 let the LLM infer","workCenter.typeHelp":"Choose a task category, or use Auto for AI inference. AI still plans the concrete Actions.","workCenter.planning":"Planning","workCenter.aiPlan":"Coordinator-driven execution","workCenter.aiPlanHelp":"The Coordinator chooses the next Actions and executors from the current evidence instead of precomputing a workflow graph. Work Center settings control model and effort.","workCenter.settings.manageProviders":"Manage Agent models","workCenter.settings.assignment":"VP selection","workCenter.settings.assignment.auto":"Auto from all VPs","workCenter.settings.assignment.pool":"Candidate pool","workCenter.settings.assignment.fixed":"Fixed VP","workCenter.settings.capability":"Required capability","workCenter.settings.vp":"Virtual Person","workCenter.settings.poolMembers":"Candidate VPs","workCenter.settings.modelPolicy":"Model policy","workCenter.settings.model.inherit":"Inherit from VP","workCenter.settings.model.primary":"Agent primary model","workCenter.settings.model.fast":"Agent fast model","workCenter.settings.model.specific":"Specific model","workCenter.settings.model.tag":"Model tag","workCenter.settings.modelTag":"Tag","workCenter.settings.modelTag.fast":"Fast","workCenter.settings.modelTag.balanced":"Balanced","workCenter.settings.modelTag.ultimate":"Ultimate","workCenter.settings.model":"Model","workCenter.settings.effort":"Reasoning effort","workCenter.settings.effortDefault":"Model default","workCenter.settings.effortHelp":"Overrides the selected model\u2019s default reasoning effort for every Work Center Action.","workCenter.settings.effortChooseModelHelp":"Select the Agent primary model, fast model, or a specific model to configure effort. Inherit from VP uses each VP\u2019s model default.","workCenter.settings.effortUnsupportedHelp":"The selected model does not expose configurable effort, so its model default is used.","workCenter.settings.saving":"Saving\u2026","workCenter.settings.reload":"Reload settings","workCenter.settings.conflict":"Settings changed elsewhere. Reload before saving again.","workCenter.settings.upgradeRequired":"This Agent version cannot save Work Center settings. The current values are shown read-only; upgrade the Agent to edit and save them.","workCenter.settings.saveNotConfirmed":"The Agent did not confirm the submitted prompts and model policy. Settings were not closed; reload or upgrade the Agent before trying again.","workCenter.settings.addWorkflow":"Duplicate workflow","workCenter.settings.removeWorkflow":"Remove","workCenter.settings.newWorkflow":"Workflow {index}","workCenter.settings.workflowName":"Workflow name","workCenter.settings.newStage":"New stage","workCenter.settings.addStage":"Add stage","workCenter.settings.removeStage":"Remove stage","workCenter.settings.moveUp":"Move stage up","workCenter.settings.moveDown":"Move stage down","workCenter.settings.stageType":"Stage type","workCenter.settings.reviewReturnStage":"Return to stage when changes are requested","workCenter.settings.instruction":"Stage prompt","workCenter.settings.instructionHint":"Define what this stage must do.","workCenter.settings.instructionHelp":"The WorkItem goal, acceptance criteria, and reusable context are added automatically at run time.","workCenter.settings.instructionReset":"Restore default"}});function kc(){return typeof navigator>"u"||!navigator?"":navigator.userAgent||""}function pr(){let e=kc();return/Android|iPhone|iPad|iPod|Windows Phone|IEMobile|BlackBerry|Opera Mini/i.test(e)}function jo(){return/MicroMessenger/i.test(kc())}function Uo(){return/AlipayClient/i.test(kc())}var Sc=V(()=>{});var ff,hf=V(()=>{Ot();rs();Sc();ff={name:"LoginPage",template:`
|
|
16
|
+
They will restart after upgrading. {skipped} other Agent(s) will be skipped because they are currently unavailable or do not support safe remote upgrades.`,"chat.agent.upgradeAllSummary":"Agent upgrades finished: {upgraded} upgraded, {latest} already current, {failed} failed, {skipped} skipped.","chat.agent.alreadyLatest":"Agent is already at the latest version (v{version}), no upgrade needed.","chat.agent.nodeIncompatible":"Agent upgrade aborted: target version v{version} requires Node {required}, but this machine is running Node {current}. Please upgrade Node.js first, then retry.","chat.agent.manualUpgradeRequired":'Agent v{version} does not advertise the safe remote-upgrade contract. Older clients do not report enough platform information to rule out the Windows package-lock failure, so this request was blocked instead of repeating a known-bad upgrade. First stop the selected Agent/service on that machine: if it runs under PM2 or another service manager, stop that exact instance there; if it runs in a foreground terminal, terminate that process. Confirm that process has exited, then run "npm install -g @yeaft/webchat-agent@latest --registry=https://pkg.yeaft.com/". Finally, start the same Agent instance again with its original configuration. Browser upgrades will work after this one-time bridge.',"chat.agent.containerImageUpgradeRequired":'Container Agent v{version} is managed as a Docker image and cannot upgrade itself with npm. On the Docker Host, run "docker pull <configured-agent-image>", then recreate the same container through the existing Server/Sandbox lifecycle or the original "yeaft-agent container install" command. Keep the existing /home/yeaft/.yeaft and /workspace persistent volumes and reuse the original host-side 0600 agent-secret file. Do not remove those volumes during recreation.',"chat.agent.online":"{count} Agent(s) online","chat.agent.selectFirst":"Please select an Agent first","chat.agent.yeaft":"Yeaft Chat","sidebar.toggle.chat":"Switch to Chat","sidebar.toggle.yeaft":"Switch to Yeaft","sidebar.surface.label":"Sidebar view","sidebar.surface.sessions":"Sessions","sidebar.provider.label":"Session provider","sidebar.provider.claude":"Claude","sidebar.sessions.new":"New session","sidebar.sessions.newChat":"New chat","sidebar.sessions.emptyProvider":"No sessions for this provider","sidebar.sessions.menu":"Session menu","sidebar.sessions.unread":"Unread","sidebar.sessions.pinned":"Pinned","sidebar.sessions.processing":"Reply in progress","sidebar.sessions.hidden":"Hidden sessions","sidebar.sessions.remove":"Remove from sidebar","sidebar.sessions.agent":"Agent","sidebar.sessions.provider":"Provider","sidebar.projects.title":"Projects","sidebar.projects.menu":"Project menu","sidebar.projects.new":"New project","sidebar.projects.newSession":"New Session in {name}","sidebar.projects.assignFailed":"Session created, but it could not be added to {name}. Error: {message}","sidebar.projects.empty":"No projects yet","sidebar.projects.noSessions":"Drag a Yeaft chat here","sidebar.projects.namePrompt":"Project name","sidebar.projects.renamePrompt":"Rename project","sidebar.projects.rename":"Rename project","sidebar.projects.delete":"Delete project","sidebar.projects.deleteConfirm":'Delete project "{name}"? Its chats will move to Recents.',"sidebar.projects.remove":"Remove from project","sidebar.projects.moveMenu":"Move to Projects","sidebar.projects.moveBack":"Back","sidebar.projects.moveEmpty":"No other projects","sidebar.projects.moveTo":"Move to {name}","sidebar.projects.instructions":"Project instructions","sidebar.projects.instructionsTitle":"{name} instructions","sidebar.projects.instructionsHint":"These instructions are added to the system prompt for every Session in this Project.","sidebar.projects.instructionsPlaceholder":"Add shared coding conventions, constraints, or workflow guidance...","sidebar.recents.title":"Recents","sidebar.recents.empty":"No chats found","yeaft.back":"Back","yeaft.session.people":"People","yeaft.session.peopleEmpty":"No people","yeaft.session.runningTasks":"Running tasks","yeaft.session.tasksEmpty":"No running tasks","yeaft.session.owner":"Owner","yeaft.session.started":"Started","yeaft.breadcrumb.label":"Thread filter","yeaft.breadcrumb.mainStream":"Main stream","yeaft.breadcrumb.backHint":"Return to full stream (Esc)","yeaft.featureDetail.ariaLabel":"Task detail","yeaft.featureDetail.replyTo":"Reply in:","yeaft.featureDetail.forkHint":"No active thread \u2014 fork a new one to reply.","yeaft.featureDetail.empty":"No messages for this task yet.","yeaft.featureDetail.threadPillHint":"Open thread","yeaft.featureDetail.summary.aria":"Task summary timeline","yeaft.featureDetail.summary.title":"Summary timeline","yeaft.featureDetail.summary.loading":"Loading summary history\u2026","yeaft.featureDetail.summary.empty":"No summaries yet.","yeaft.featureDetail.summary.error":"Summary history failed: {error}","yeaft.featureDetail.summary.showArchived":"Show archived","yeaft.featureDetail.related.aria":"Related tasks","yeaft.featureDetail.related.title":"Related tasks","yeaft.featureDetail.related.unlink":"Unlink","yeaft.featureDetail.members.aria":"Task members","yeaft.featureDetail.members.title":"Members","yeaft.featureDetail.members.abort":"Abort","yeaft.featureDetail.members.kick":"Kick","yeaft.model":"Model","yeaft.placeholder":"Ask anything...","yeaft.inbox":"Inbox","yeaft.inbox.tooltip":"Your default thread \u2014 one-on-one chat with Yeaft. New threads can be created for specific topics or tasks.","yeaft.sidebar.activeThreads":"Active","yeaft.sidebar.idleThreads":"Idle","yeaft.sidebar.archivedThreads":"Archived","yeaft.sidebar.tasks":"Tasks","yeaft.sidebar.emptyActive":"No active threads","yeaft.sidebar.emptyIdle":"No idle threads","yeaft.sidebar.emptyArchived":"No archived threads","yeaft.sidebar.emptyTasks":"No tasks match","yeaft.sidebar.results":"Results","yeaft.sidebar.resultsThreads":"Threads","yeaft.sidebar.kindThread":"thread","yeaft.sidebar.cancel":"Cancel","yeaft.sidebar.mergeInto":"Merge into\u2026","yeaft.sidebar.mergeNoCandidates":"No other threads to merge into","yeaft.sidebar.mergeConfirmTitle":"Merge this thread?","yeaft.sidebar.mergeIrreversible":"This cannot be undone. The source thread will be archived and its messages moved to the target.","yeaft.sidebar.mergeConfirm":"Merge","yeaft.settings.sidebarV2":"Experimental: Sidebar V2","yeaft.settings.sidebarV2Hint":"Thread list + task tree (preview).","yeaft.clearConfirm":"Clear all messages?","yeaft.mode":"Mode","yeaft.agent":"Agent","yeaft.connecting":"Connecting...","yeaft.ready":"Ready","yeaft.tools":"tools","yeaft.skills":"skills","yeaft.mcp":"MCP","yeaft.showSidebar":"Show sidebar","yeaft.hideSidebar":"Hide sidebar","yeaft.debug":"Debug","yeaft.debugClose":"Close debug panel","yeaft.debugTurns":"turns","yeaft.debugTabToolStats":"Tool Stats","yeaft.debugTabDream":"Dream","yeaft.debugTabRequestLog":"Request Log","yeaft.debugHistoryLoad":"Load request history","yeaft.debugHistoryLoading":"Loading...","yeaft.debugHistoryLoaded":"{count} loaded","yeaft.debugHistoryUnavailable":"The debug trace request timed out. The Agent may be offline or the response may have been dropped. Try again.","yeaft.debugHistoryTruncated":"This trace was too large for one response. Large fields are previewed here; the full trace remains on the Agent.","yeaft.debugSearchPlaceholder":"Regex search request logs","yeaft.debugSearchHint":"Shows the latest 10 globally by default; search matches request summaries across Sessions.","yeaft.debugTurnAction":"View debug trace for this turn","yeaft.debugTurnContext":"Trace","yeaft.debugPanelEmpty":"Hover over an AI turn and click the debug icon to view its trace.","yeaft.dreamDebug.title":"Dream lifecycle","yeaft.dreamDebug.trigger":"Trigger","yeaft.dreamDebug.status":"Status","yeaft.dreamDebug.started":"Started","yeaft.dreamDebug.finished":"Finished","yeaft.dreamDebug.time":"Time","yeaft.dreamDebug.phase":"Phase","yeaft.dreamDebug.call":"Call","yeaft.dreamDebug.location":"Location","yeaft.dreamDebug.result":"Result","yeaft.dreamDebug.noLatest":"No dream check has been recorded for this session yet.","yeaft.dreamDebug.noEvents":"No dream events yet for this session.","yeaft.dreamDebug.outputTitle":"Dream output loaded for this session","yeaft.dreamDebug.scope":"Scope","yeaft.dreamDebug.lastDream":"Last dream","yeaft.dreamDebug.messagesCovered":"Messages covered","yeaft.dreamDebug.noOutput":"No dream output has been written for this session yet.","yeaft.dreamDebug.promptLoadTitle":"Dream memory loaded into system prompt","yeaft.dreamDebug.loadedInto":"Loaded into","yeaft.dreamDebug.vp":"VP","yeaft.dreamDebug.summaryToPrompt":"summary.md -> system prompt","yeaft.dreamDebug.itemList":"Dream runs and scopes","yeaft.dreamDebug.searchPlaceholder":"Search Dream sessions by title, id, or summary...","yeaft.dreamDebug.noSearchResults":"No Dream sessions match this search.","yeaft.dreamDebug.noSummary":"No summary available","yeaft.dreamDebug.segments":"segments","yeaft.dreamDebug.lastError":"Last error","yeaft.dreamDebug.overview":"Overview","yeaft.dreamDebug.sessionId":"Session ID","yeaft.dreamDebug.loadedAt":"Loaded at","yeaft.dreamDebug.layers":"Layers","yeaft.dreamDebug.summaryLayer":"Resident summary","yeaft.dreamDebug.noPromptLoad":"No prompt-load record is available for this scope.","yeaft.dreamDebug.segmentTitle":"Segments","yeaft.dreamDebug.sourceMessages":"Source messages","yeaft.dreamDebug.createdAt":"Created","yeaft.dreamDebug.updatedAt":"Updated","yeaft.dreamDebug.noSegments":"No memory segments are available for this scope.","yeaft.dreamDebug.requestResponse":"Request / Response","yeaft.dreamDebug.noRequestResponse":"No Dream request/response log has been persisted for this scope yet.","yeaft.dreamDebug.empty":"No Dream debug data has been recorded yet.","yeaft.debugGroupFollowMain":"Follow main pane","yeaft.debugGroupAll":"All sessions","yeaft.debugAssistantResponse":"Assistant response","yeaft.debugViewAssistantResponse":"View response","yeaft.debugLatestRequestBody":"Latest available request body","yeaft.debugLatestSystemPrompt":"Latest available system prompt","yeaft.debugRequestBodyUnavailable":"No request body is available for this turn yet.","yeaft.debugSystemPromptUnavailable":"No system prompt is available for this turn yet.","yeaft.debugInputSystemShort":"system","yeaft.debugInputHistoryShort":"history","yeaft.debugInputToolsShort":"tool definitions","yeaft.debugInputCurrentShort":"current","yeaft.debugInputTokenBreakdown":"Provider input {total}: system prompt {system}, history messages {history}, tool definitions {tools}, current turn {current} (estimated split)","yeaft.debugToolInput":"Input","yeaft.debugToolResult":"Result","yeaft.debugToolRunning":"running","yeaft.debugToolRunningNoResult":"Running; no result yet","yeaft.debugShowDetails":"show","yeaft.debugHideDetails":"hide","yeaft.debugTurnStartedAt":"turn started at","yeaft.debugRequestAt":"request time","yeaft.debugRequestAtDerived":"derived from turn start (legacy loop)","yeaft.turn":"Turn {n}","yeaft.systemPrompt":"System Prompt","yeaft.messagesLabel":"Messages","yeaft.response":"Response","yeaft.toolCalls":"Tool Calls","yeaft.functionCalls":"Function Calls","yeaft.request":"Request","yeaft.pending":"(pending)","yeaft.inputTokens":"Input","yeaft.outputTokens":"Output","yeaft.duration":"Duration","yeaft.noDebugData":"No debug data yet","yeaft.showDebug":"Show debug panel","yeaft.hideDebug":"Hide debug panel","yeaft.reloadPage":"Reload page","yeaft.reloadMessages":"Reload messages","sidebar.sessions.syncing":"Syncing latest messages","yeaft.historySearch.label":"Search Session history","yeaft.historySearch.button":"Search messages","yeaft.historySearch.placeholder":"Search messages in this Session","yeaft.historySearch.searching":"Searching\u2026","yeaft.historySearch.minChars":"Type at least 2 characters","yeaft.historySearch.empty":"No matching messages","yeaft.historySearch.error":"Search failed. Try again.","yeaft.historySearch.unsupported":"Upgrade this Agent to search Session history.","yeaft.historySearch.more":"Load more results","yeaft.historySearch.you":"You","yeaft.historySearch.assistant":"Assistant","yeaft.outline.label":"Message history","yeaft.outline.sender":"Sender","yeaft.outline.allSenders":"All senders","yeaft.outline.title":"Message history","yeaft.outline.placeholder":"Search this conversation","yeaft.outline.searching":"Searching\u2026","yeaft.outline.loading":"Loading\u2026","yeaft.outline.older":"Load older messages","yeaft.outline.moreMatches":"Load more matches","yeaft.outline.minChars":"Type at least 2 characters","yeaft.outline.empty":"No messages yet","yeaft.outline.noMatches":"No matching messages","yeaft.outline.error":"Could not load the outline. Try again.","yeaft.outline.unsupported":"Upgrade this Agent to use the conversation outline.","yeaft.outline.you":"You","yeaft.outline.assistant":"Assistant","yeaft.outline.nonText":"Non-text response","yeaft.switchModel":"Switch model","yeaft.modelMenu.title":"Model and LLM settings","yeaft.modelMenu.label":"Model","yeaft.modelMenu.effort":"Effort","yeaft.modelMenu.effort.openaiReasoning":"Reasoning effort","yeaft.modelMenu.effort.anthropicBudget":"Thinking budget","yeaft.modelMenu.effort.anthropicAdaptive":"Adaptive thinking effort","yeaft.modelMenu.effort.minimal":"Minimal","yeaft.modelMenu.effort.low":"Low","yeaft.modelMenu.effort.medium":"Medium","yeaft.modelMenu.effort.high":"High","yeaft.modelMenu.effort.xhigh":"X-High","yeaft.modelMenu.effort.max":"Max","yeaft.modelMenu.effort.ultra":"Ultra","yeaft.modelMenu.noEffort":"This model does not expose a compatible effort control.","yeaft.modelMenu.configureHint":"Providers, keys, model list","yeaft.settings.title":"Settings","settings.yeaft.tabs.vp":"VP Library","settings.yeaft.tabs.search":"Search","settings.yeaft.tabs.mcp":"MCP","yeaft.settings.tabs.vp":"VP Library","yeaft.settings.tabs.search":"Search","yeaft.settings.tabs.mcp":"MCP","settings.mcp.title":"MCP servers","settings.mcp.description":"Connect Model Context Protocol servers to extend Yeaft with extra tools. Servers are stored in ~/.yeaft/config.json on the agent; tools appear in the LLM's catalogue as mcp__<server>__<tool>.","settings.mcp.reloadAll":"Reload all","settings.mcp.reloadOne":"Reconnect this server","settings.mcp.loading":"Working\u2026","settings.mcp.connected":"connected","settings.mcp.disconnected":"disconnected","settings.mcp.tools":"tools","settings.mcp.remove":"Remove","settings.mcp.empty":"No MCP servers configured yet. Add one below.","settings.mcp.addServer":"Add server","settings.mcp.addServerDesc":"Most MCP servers run as a local command \u2014 Yeaft launches it via stdio and discovers its tools.","settings.mcp.serverName":"Name","settings.mcp.command":"Command","settings.mcp.args":"Arguments","settings.mcp.argsPlaceholder":"e.g. -y @modelcontextprotocol/server-filesystem /tmp","settings.mcp.env":"Environment","settings.mcp.envPlaceholder":"KEY=value per line. Lines starting with # are ignored.","settings.mcp.saving":"Saving\u2026","settings.mcp.add":"Add","settings.mcp.cancel":"Clear","settings.mcp.connectFailed":"Saved but failed to connect","settings.mcp.addSuccess":"Server added","settings.mcp.removeSuccess":"Server removed","settings.mcp.reloadSuccess":"Reload requested","settings.mcp.confirmRemove":'Remove MCP server "{name}"? Its tools will disappear from the next LLM turn.',"settings.mcp.errors.nameRequired":"Name is required","settings.mcp.errors.nameFormat":"Name must be lowercase letters, digits, dashes or underscores only","settings.mcp.errors.commandRequired":"Command is required","settings.mcp.errors.argsParse":"Could not parse arguments","settings.mcp.errors.envParse":"Could not parse environment","search.settings.backendTitle":"Search backend","search.settings.backendDesc":"Choose the primary backend for the WebSearch tool. If the primary fails, the engine automatically falls back to HTML scraping.","search.settings.backend.tavily":"Tavily","search.settings.backend.tavilyHint":"Hosted search API. Free tier: 1000 queries/month. Recommended.","search.settings.backend.playwright":"Playwright service","search.settings.backend.playwrightHint":"Self-hosted browser-based search/fetch. Best for cloud IPs that get bot-blocked. Service not yet shipped.","search.settings.comingSoon":"Coming soon","search.settings.tavilyKeyTitle":"Tavily API key","search.settings.tavilyKeyDesc":"Stored on the agent in ~/.yeaft/config.json. Get a free key at","search.settings.tavilyKeyUnchanged":"(unchanged)","search.settings.clearKey":"Clear","search.settings.usageTitle":"Usage this month","search.settings.usageRefresh":"Refresh","search.settings.usageLoading":"Loading\u2026","search.settings.usagePlan":"Plan","search.settings.usageUsed":"Used","search.settings.usagePaygo":"Pay-as-you-go","search.settings.usageError":"Failed to load usage","search.settings.save":"Save","search.settings.saving":"Saving\u2026","search.settings.saveSuccess":"Saved","search.settings.cancel":"Reset","yeaft.settings.yeaftTitle":"Thread Concurrency & Archive","yeaft.settings.yeaftDesc":"Tune how many threads can run at once and when idle threads are auto-archived.","yeaft.settings.maxConcurrentLabel":"Max concurrent threads","yeaft.settings.maxConcurrentHint":"Maximum number of live threads at once (includes the always-on main thread). New threads beyond this cap are refused until an existing thread is archived or terminated. Range: 1-50.","yeaft.settings.archiveIdleDaysLabel":"Auto-archive idle threads after (days)","yeaft.settings.archiveIdleDaysHint":"Threads with no activity for this many days will be archived. Range: 1-3650.","yeaft.settings.yeaftSaveBtn":"Save","yeaft.settings.yeaftSaving":"Saving...","yeaft.settings.yeaftSaved":"Saved","yeaft.settings.yeaftLoading":"Loading...","yeaft.settings.yeaftLoadError":"Failed to load Yeaft settings","yeaft.settings.yeaftSaveError":"Failed to save Yeaft settings","yeaft.settings.rangeErrorConcurrent":"Must be between 1 and 50","yeaft.settings.rangeErrorArchive":"Must be between 1 and 3650","chat.session.creating":"Creating conversation...","chat.session.loadingHistory":"Loading conversation history...","yeaft.historyLoad.error":"Conversation history could not be loaded. Your messages are still stored on the Agent.","yeaft.historyLoad.retry":"Retry loading","yeaft.sessionInventory.error":"Sessions could not be loaded. Your conversations are still stored on the Agent.","yeaft.sessionInventory.retry":"Retry Sessions","chat.session.closed":"Conversation closed","chat.session.agentOffline":"Agent is offline. This session will be available when the agent reconnects.","chat.execution.cancelled":"Execution cancelled","chat.sidebar.expand":"Expand menu","chat.sidebar.collapse":"Collapse sidebar","chat.sidebar.workbench":"Workbench","chat.sidebar.newConv":"Conversation","chat.sidebar.recentChats":"Recent Chats","chat.sidebar.resumeConv":"Resume Conversation","chat.sidebar.lightMode":"Light Mode","chat.sidebar.darkMode":"Dark Mode","chat.sidebar.settings":"Settings","chat.sidebar.emptyHint":"Click the button above to create a new conversation","chat.sidebar.closeConv":"Close Conversation","chat.sidebar.renameConv":"Rename","chat.sidebar.pin":"Pin to top","chat.sidebar.unpin":"Unpin","chat.connection.connecting":"Connecting...","chat.connection.reconnecting":"Reconnecting ({current}/{max})...","chat.connection.updating":"Server is updating, please wait...","chat.connection.disconnected":"Disconnected","chat.connection.reconnect":"Reconnect","chat.connection.reconnectFailed":"Connection lost. Please click reconnect to retry.","chat.time.justNow":"Just now","chat.time.minutesAgo":"{count}m ago","chat.time.daysAgo":"{count}d ago","chat.time.today":"Today","chat.time.yesterday":"Yesterday","chat.delete.confirm":"Are you sure you want to close this conversation? This will terminate the corresponding Claude process.","chat.delete.enterWorkDir":"Please enter the working directory path","modal.newConv.workDir":"Work Directory","modal.newConv.inputOrSelect":"Enter or select a work directory","modal.newConv.browse":"Browse","modal.newConv.noWorkDirs":"No work directories","modal.newConv.selectAgent":"Please select an online Agent first","modal.newConv.create":"Create Conversation","modal.newConv.folderLabel":"\u{1F4C1} Work Directories","modal.newConv.provider":"Provider","modal.newConv.model":"Model","provider.claudeCode":"Claude Code","provider.copilot":"Copilot","modal.resume.workDir":"Work Directory","modal.resume.inputOrSelect":"Enter or select a work directory","modal.resume.browse":"Browse","modal.resume.tabFolders":"Directories","modal.resume.tabSessions":"History","modal.resume.noWorkDirs":"No work directories","modal.resume.selectWorkDir":"Please select a work directory first","modal.resume.noSessions":"No history sessions in this directory","modal.resume.untitled":"Untitled Session","modal.resume.folderLabel":"\u{1F4C1} Work Directories","modal.resume.sessionLabel":"\u{1F4AC} History Sessions","modal.resume.selectAgent":"Please select an online Agent first","modal.folderPicker.title":"Select Work Directory","modal.folderPicker.root":"Root / drives","modal.folderPicker.path":"Directory path","modal.folderPicker.go":"Go","modal.folderPicker.ancestors":"Directory ancestors","modal.folderPicker.directories":"Subdirectories","modal.folderPicker.navigationHint":"Click a folder to open it, then select the current directory.","modal.folderPicker.selectCurrent":"Select this directory","modal.folderPicker.loadFailed":"Cannot open this directory. Check the path and permissions, or retry.","modal.folderPicker.unavailable":"Agent unavailable. Reconnect and retry.","modal.folderPicker.timeout":"Directory request timed out. Please retry.","modal.folderPicker.parentDir":"Parent Directory","welcome.subtitle":"Web Code Agent for sessions, tools, and VP collaboration","welcome.agentOnline":"{count} Agent(s) online","welcome.noAgents":"No Agents Online","welcome.noAgentsHint":"Please start an Agent and connect it to the server","welcome.noAgent":"No Agents Online","welcome.noAgentHint":"Please start an Agent and connect it to the server","welcome.setupAgent":"Set Up Agent","welcome.setupTitle":"Connect your Agent","welcome.setupDesc":"Run the installer on your computer to start chatting. Your code and tools stay on your machine.","welcome.setupSecretLoading":"Preparing your Agent secret...","welcome.setupSecretError":"Could not prepare the Agent secret. Open Security settings to retry.","installer.platformLabel":"Target operating system","installer.posix":"Linux / macOS","installer.powershell":"Windows PowerShell","installer.copyCommand":"Copy install command","installer.instruction":"Paste into a terminal on the computer where you want to run your Agent.","installer.viewCommand":"View command","installer.copying":"Copying\u2026","installer.copyFailed":"Copy failed","installer.secretLoading":"Preparing your Agent secret\u2026","installer.secretError":"Could not prepare the Agent secret.","installer.secretRequired":"Generate an Agent secret before copying this command.","installer.commandUnavailable":"Command available after an Agent secret is generated.","installer.copyError":"Copy failed. Select and copy the command manually.","installer.copySuccess":"Command copied.","installer.openSecurity":"Open Security settings","installer.note":"Includes Node.js and a private Agent instance. Only run commands from a trusted server. Contains your access secret \u2014 do not share.","welcome.openSecuritySettings":"Open Security Settings","welcome.newConv":"Conversation","welcome.resumeHistory":"Resume History","messages.loadingMore":"Loading more messages...","messages.loadMore":"\u2191 Click or scroll up to load more","message.loadingMore":"Loading more messages...","message.loadMore":"\u2191 Click or scroll up to load more","message.navigation":"Conversation navigation","message.currentTurn":"\u2191 Turn","message.scrollToLatest":"\u2193 Latest","message.backToCurrentTurn":"Back to this turn\u2019s question","message.showResponses":"Show {count} response(s)","message.hideResponses":"Hide response(s)","message.assistant":"Assistant","chat.waiting.disconnected":"Connection lost","chat.connecting":"Connecting to provider session...","chat.waiting.compacting":"Compacting context...","chat.waiting.agentOffline":"Agent offline","chat.waiting.sessionLost":"Session lost, refreshed, waiting for update...","chat.waiting.cliExited":"Claude process exited, refreshed, waiting for update...","chat.waiting.refresh":"Refresh","chat.waiting.thinking":"AI is thinking, please wait...","btw.hint":"esc to exit","btw.placeholder":"Ask a side question...","btw.close":"Exit BTW mode","message.copyContent":"Copy content","message.copy":"Copy content","message.copied":"Copied","message.copyCode":"Copy code","message.copyAll":"Copy all","message.screenshot":"Screenshot","message.screenshotting":"Taking screenshot...","message.exportMd":"Export MD","message.askInput":"Your input needed","message.askAnswered":"\u2713 Answered","message.askCustom":"Or type a custom answer...","message.askCustomPlaceholder":"Or type a custom answer...","message.askSubmit":"Submit Answer","message.askWaiting":"Waiting for question...","message.askSubmitting":"Answer sent. Waiting for Agent confirmation\u2026","message.askUnconfirmed":"No confirmation yet. Check the connection, then resend the same answer.","message.askRetry":"Resend answer","message.askSendFailed":"Answer was not sent. Check the connection and try again.","message.askAgentUnavailable":"Agent is unavailable. Reconnect, then resend your answer.","message.askIdentityMismatch":"This question no longer matches the active request. Ask the role to re-ask.","message.askExpired":"This question has expired. Ask the role to re-ask.","message.openInEditor":"Open in editor","message.resultDone":"Done","message.done":"Done","message.resultRead":"Read {file}","message.readFile":"Read {name}","message.file":"file","message.attachImages":"{count} image(s)","message.imageCount":"{count} image(s)","message.imagePreview":"Image preview","message.zoomOut":"Zoom out","message.zoomIn":"Zoom in","message.resetZoom":"Reset image zoom","message.previousImage":"Previous image","message.nextImage":"Next image","message.imagePosition":"Image {current} of {total}","message.imageUnavailable":"Image unavailable","message.attachFiles":"{count} file(s)","message.fileCount":"{count} file(s)","message.quote":"Quote","message.removeQuote":"Remove quote","message.replyingTo":"Replying to {author}","message.quotedFrom":"Quoted from {author}","message.editAsNew":"Edit","message.you":"You","input.upload":"Upload file","input.placeholder":"Type a message...","input.send":"Send","input.stopExecution":"Stop execution","chatInput.upload":"Upload file","chatInput.uploading":"Uploading...","chatInput.uploadFailed":"Upload failed","chatInput.retryUpload":"Retry","chatInput.removeAttachment":"Remove attachment","chatInput.placeholder":"Type a message...","chatInput.send":"Send","chatInput.stop":"Stop execution","tools.thinking":"Thinking...","tools.read":"Reading file","tools.write":"Writing file","tools.edit":"Editing file","tools.bash":"Running command","tools.glob":"Searching files","tools.grep":"Searching content","tools.task":"Running task","tools.webFetch":"Fetching web page","tools.webSearch":"Searching the web","tools.todoWrite":"Updating tasks","tools.executing":"Running {name}","status.thinking":"Thinking...","status.reading":"Reading file","status.writing":"Writing file","status.editing":"Editing file","status.executing":"Running command","status.searchingFiles":"Searching files","status.searchingContent":"Searching content","status.executingTask":"Running task","status.fetching":"Fetching web page","status.searching":"Searching the web","status.updatingTasks":"Updating tasks","status.executingTool":"Running {name}","header.compacting":"Compressing context...","header.compacted":"Context compression complete","chatHeader.newConv":"Conversation","chatHeader.compacting":"Compressing context...","chatHeader.compactDone":"Context compression complete","chatHeader.compact":"Compact context","chatHeader.resume":"Resume session","chatHeader.refresh":"Refresh messages","chatHeader.reloadPage":"Reload page","chatHeader.clear":"Clear messages","chatHeader.clearing":"Clearing context...","chatHeader.clearDone":"Context cleared","chatHeader.confirmClear":"Are you sure you want to clear all messages in this conversation?","chatHeader.mcpConfig":"MCP Servers","chatHeader.mcpNeedRestart":"Changes will take effect after restarting the session.","chatHeader.expertPanel":"Expert Panel","chatHeader.subAgentPanel":"Sub-Agents","settings.close":"Close settings","settings.tabs.account":"Account","settings.tabs.security":"Security","settings.tabs.general":"General","settings.tabs.sandbox":"Sandbox","settings.tabs.invitations":"Invitations","auth.sessionExpired":"Session expired. Please log in again.","settings.sandbox.description":"Run a persistent Yeaft Agent in a Docker container managed by this Server.","settings.sandbox.containerAgent":"Dockerized Yeaft Agent","settings.sandbox.serverManaged":"The Server manages only this container\u2019s start, stop, and removal. The Agent itself uses the normal Yeaft connection.","settings.sandbox.agentName":"Agent name","settings.sandbox.sizeLabel":"Size","settings.sandbox.enable":"Enable Sandbox","settings.sandbox.creating":"Setting up...","settings.sandbox.start":"Start","settings.sandbox.stop":"Stop","settings.sandbox.retry":"Retry","settings.sandbox.remove":"Remove","settings.sandbox.removeConfirm":"Permanently remove this Sandbox, including its home and workspace data? This cannot be undone.","settings.sandbox.size.small":"Small","settings.sandbox.size.normal":"Normal","settings.sandbox.state.reserving":"Setting up","settings.sandbox.state.provisioning":"Preparing Sandbox","settings.sandbox.state.starting":"Starting","settings.sandbox.state.waiting_for_agent":"Waiting for Agent","settings.sandbox.state.stopping":"Stopping","settings.sandbox.state.removing":"Removing","settings.sandbox.state.removed":"Removed","settings.sandbox.state.running":"Running","settings.sandbox.state.stopped":"Stopped","settings.sandbox.state.failed":"Failed","settings.sandbox.state.remove_failed":"Remove failed","settings.sandbox.state.recovery_required":"Recovery required","settings.sandbox.stage.reserving_capacity":"Reserving capacity","settings.sandbox.stage.starting":"Starting Sandbox","settings.sandbox.stage.stopping":"Stopping Sandbox","settings.sandbox.stage.retrying":"Retrying operation","settings.sandbox.stage.removing":"Removing Sandbox","settings.sandbox.stage.complete":"Complete","settings.sandbox.stage.dispatching":"Dispatching securely","settings.sandbox.stage.capacity_rejected":"Waiting for capacity","settings.sandbox.unavailable.disabled":"Sandbox is not enabled on this Server. Updating a local Agent does not enable it; a Server administrator must enable Docker management.","settings.sandbox.unavailable.dockerUnavailable":"Docker is unavailable to the Server. Check the Sandbox Server deployment.","settings.sandbox.unavailable.notEntitled":"Sandbox is not available for this account.","settings.sandbox.unavailable.capacityUnavailable":"Sandbox is temporarily unavailable.","settings.sandbox.error.SANDBOX_LOAD_FAILED":"Sandbox status could not be loaded.","settings.sandbox.retryLoad":"Retry","settings.sandbox.error.SANDBOX_CREATE_FAILED":"Sandbox could not be created. Try again later.","settings.sandbox.error.SANDBOX_ACTION_FAILED":"Sandbox action could not be scheduled. Try again later.","settings.sandbox.error.SANDBOX_OPERATION_TIMEOUT":"The operation timed out. Retry or remove the Sandbox.","settings.sandbox.error.SANDBOX_RUNTIME_FAILED":"The Sandbox runtime reported a failure.","settings.sandbox.error.SANDBOX_CGROUP_SLICE_UNAVAILABLE":"The shared resource slice could not be initialized on the host (cgroup v2 + root required). Contact your administrator or remove SANDBOX_CGROUP_PARENT to disable resource caps.","settings.account.username":"Username","settings.account.role":"Role","settings.account.email":"Email","settings.account.emailNotSet":"Not set","settings.account.profileLoadFailed":"Failed to load account profile","settings.account.logout":"Log Out","settings.account.roleAdmin":"Admin","settings.account.rolePro":"Pro","settings.account.linkedAccounts":"Linked Accounts","settings.account.linkedDesc":"Link external sign-in providers so you can log in with any of them.","settings.account.bind":"Link","settings.account.unbind":"Unlink","settings.account.linked":"Linked","settings.account.providerDisabled":"Not configured","settings.account.cantUnbindLast":"Cannot unlink the only login method","settings.account.unbindFailed":"Failed to unlink: {error}","settings.account.bindFailed":"Failed to link account","settings.account.ssoBoundMsg":"Successfully linked {provider}.","settings.account.ssoConflictMsg":"This {provider} account is already linked to another user.","settings.account.providerMicrosoft":"Microsoft","settings.account.providerGithub":"GitHub","settings.account.providerGoogle":"Google","settings.account.providerWechat":"WeChat","settings.account.providerAlipay":"Alipay","settings.security.agentKey":"Agent Secret","settings.security.agentKeyDesc":"Shared secret for Agent connection authentication","settings.security.agentSetupCommands":"Agent setup commands","settings.security.agentCmdInstall":"Install and connect Agent","settings.security.agentCmdService":"Run Agent server","settings.security.agentCmdContainer":"Run Agent in Docker","settings.security.agentCmdContainerDesc":"One command. The first run initializes shared CPU/memory limits automatically (sudo password prompt once); pass --no-slice to run without resource protection. Docker must be installed on the machine.","settings.security.agentCmdNeedsSecret":"Generate an Agent Secret first to create the server command.","settings.security.agentCmdLlm":"Manual Copilot fallback","settings.security.agentCmdLlmDesc":"After the Agent connects, configure its optional LLM in Agent settings. The installer also prints the absolute management command for terminal use.","settings.security.none":"None","settings.security.show":"Show","settings.security.hide":"Hide","settings.security.generateKey":"Generate Secret","settings.security.resetKey":"Reset Secret","settings.security.resetting":"Resetting...","settings.security.resetWarning":"All Agents need to be reconfigured after reset","settings.security.changePassword":"Change Password","settings.security.currentPassword":"Current password","settings.security.newPassword":"New password (min 6 characters)","settings.security.confirmPassword":"Confirm new password","settings.security.changeBtn":"Change Password","settings.security.changing":"Changing...","settings.security.enterCurrentPwd":"Please enter your current password","settings.security.newPwdMin":"New password must be at least 6 characters","settings.security.pwdMismatch":"Passwords do not match","settings.security.pwdChanged":"Password changed successfully","settings.security.setPassword":"Set a Password","settings.security.setPasswordDesc":"You signed in via SSO and have no password yet. Set one so you can also log in with username + password.","settings.security.setBtn":"Set Password","settings.security.pwdSet":"Password set successfully","settings.security.deleteAccount":"Delete Account","settings.security.deleteAccountDesc":"Permanently delete your account and all associated data. This cannot be undone.","settings.security.deleteBtn":"Delete Account","settings.security.deleteConfirmBtn":"Confirm Delete","settings.security.deleteConfirmPlaceholder":"Type DELETE to confirm","settings.security.deleteConfirmRequired":"Type DELETE to confirm account removal","settings.security.deleteFailed":"Failed to delete account","settings.security.deleting":"Deleting...","settings.general.theme":"Theme","settings.general.lightTheme":"Light","settings.general.darkTheme":"Dark","settings.general.language":"Language","settings.general.currentValue":"Current: {value}","settings.general.workCenter":"Work Center entry","settings.general.workCenterDesc":"Show the Work Center entry in the sidebar header. Available Agents are selected inside Work Center.","settings.general.workCenterOn":"Enabled","settings.general.workCenterOff":"Disabled","settings.general.telemetry":"Performance telemetry","settings.general.telemetryDesc":"Buffer local timing diagnostics without sending trace content to the server.","settings.general.telemetryOn":"Enabled","settings.general.telemetryOff":"Disabled","settings.general.telemetryLoading":"Loading\u2026","settings.general.telemetrySaving":"Saving\u2026","settings.general.telemetryUnavailable":"Unavailable","settings.general.telemetryLoadFailed":"Could not load the saved telemetry setting. Try reopening Settings.","settings.general.telemetrySaveFailed":"Could not confirm the telemetry change. The displayed setting was restored; reopen Settings to check.","settings.general.telemetryRawLimit":"Raw provider exchange limit (bytes)","settings.general.telemetryTraceTextLimit":"Debug prompt and message limit (bytes)","settings.invite.create":"Create Invite Code","settings.invite.normalUser":"Regular User","settings.invite.proUser":"Pro User","settings.invite.createBtn":"Create Invite","settings.invite.creating":"Creating...","settings.invite.list":"Invite Codes","settings.invite.used":"Used","settings.invite.expired":"Expired","settings.invite.available":"Available","settings.invite.usedBy":"Used by: {user}","settings.invite.expiredAt":"Expired at: {time}","settings.invite.expiresAt":"Expires at: {time}","settings.invite.noInvites":"No invite codes","settings.msg.copiedClipboard":"Copied to clipboard","settings.msg.copyFailed":"Copy failed","settings.msg.keyReset":"Secret has been reset","settings.msg.resetFailed":"Reset failed","settings.msg.changeFailed":"Change failed","settings.msg.inviteCreated":"Invite code created","settings.msg.createFailed":"Create failed","settings.msg.inviteCopied":"Invite code copied","settings.msg.inviteDeleted":"Invite code deleted","settings.msg.deleteFailed":"Delete failed","settings.tabs.llm":"LLM","settings.tabs.yeaft":"Yeaft","yeaft.session.title":"Sessions","yeaft.session.new":"+ New session","yeaft.session.create.title":"New session","yeaft.session.create.subtitle":"Choose where it runs and which provider should handle it.","yeaft.session.create.close":"Close","yeaft.session.create.nameLabel":"Name","yeaft.session.create.namePlaceholder":"Session name (optional)","yeaft.session.create.workDirLabel":"Work Directory","yeaft.session.create.agentLabel":"Agent","yeaft.session.create.vpPicker":"Pick VPs","yeaft.session.create.vpNone":"No VPs selected","yeaft.session.create.vpCount":"{n} VPs selected","yeaft.session.create.untitled":"Untitled session","yeaft.session.create.rosterEmpty":"No VPs available \u2014 create one from the VP Library first.","yeaft.session.create.rosterLoading":"Loading VPs\u2026","yeaft.session.create.rosterError":"VPs could not be loaded from this Agent.","yeaft.session.create.rosterRetry":"Retry","yeaft.vp.domain.general":"General & coordination","yeaft.vp.domain.productDesign":"Product & experience design","yeaft.vp.domain.softwareSystems":"Software & systems","yeaft.vp.domain.securityReliability":"Security & reliability","yeaft.vp.domain.scienceAnalysis":"Science & analysis","yeaft.vp.domain.philosophyPsychology":"Philosophy & psychology","yeaft.vp.domain.strategyHistory":"Strategy & history","yeaft.vp.domain.businessManagement":"Business & management","yeaft.vp.domain.artsCulture":"Arts & culture","yeaft.vp.domain.other":"Other specialties","yeaft.vp.domain.custom":"Custom VPs","yeaft.session.create.defaultVpHint":"The VP that answers when no one is @-mentioned.","yeaft.session.create.folderLabel":"\u{1F4C1} Work directories","yeaft.session.create.sessionLabel":"\u{1F4AC} Sessions in this directory","yeaft.session.create.noWorkDirs":"No prior sessions yet \u2014 pick or type a work directory above.","yeaft.session.create.back":"Back","yeaft.session.create.creating":"Creating\u2026","yeaft.session.create.submit":"Create","yeaft.plugins.title":"Plugins","yeaft.plugins.subtitle":"Choose which tools, skills, and MCP servers this Agent makes available to Sessions.","yeaft.plugins.agentLabel":"Agent","yeaft.plugins.overviewLabel":"Plugin availability overview","yeaft.plugins.noAgent":"No Agent selected","yeaft.plugins.allAvailable":"All available capabilities are enabled.","yeaft.plugins.selectedSummary":"{count} capabilities enabled.","yeaft.plugins.enabledLabel":"enabled","yeaft.plugins.useAll":"Use all available","yeaft.plugins.loading":"Loading plugins\u2026","yeaft.plugins.empty":"No configurable plugins are available on this Agent.","yeaft.plugins.loadError":"Failed to load plugins: {error}","yeaft.plugins.upgradeRequired":"This Agent does not support Plugins. Upgrade and restart the Agent.","yeaft.plugins.retry":"Retry","yeaft.plugins.searchPlaceholder":"Search tools, skills, and MCP servers","yeaft.plugins.resultCount":"{count} results","yeaft.plugins.categoryLabel":"Plugin categories","yeaft.plugins.all":"All","yeaft.plugins.noMatchesTitle":"No matching plugins","yeaft.plugins.noMatchesBody":"Try a different search or category.","yeaft.plugins.toolDescription":"Built-in Agent capability","yeaft.plugins.skillDescription":"Reusable Agent workflow","yeaft.plugins.mcpDescription":"{count} tools available","yeaft.plugins.unsavedChanges":"Unsaved changes","yeaft.plugins.tools":"Tools","yeaft.plugins.skills":"Skills","yeaft.plugins.mcpServers":"MCP servers","yeaft.plugins.toolsCount":"tools","yeaft.plugins.manageSkills":"Manage skills","yeaft.plugins.manageSkillsDescription":"Create reusable Skills for this Agent or the active project. Project Skills override same-named user Skills.","yeaft.plugins.createSkill":"Create skill","yeaft.plugins.removeSkill":"Remove","yeaft.plugins.confirmRemoveSkill":'Remove Skill "{name}"? This deletes only the native Skill in its selected scope.',"yeaft.plugins.skillManagementUpgradeRequired":"This Agent must be upgraded before it can create or remove Skills.","yeaft.plugins.skillManagementVersionUnknown":"This Agent has not reported Skill management support yet. Upgrade and restart it before creating or removing Skills.","yeaft.plugins.skillScope":"Scope","yeaft.plugins.userScope":"User","yeaft.plugins.projectScope":"Project","yeaft.plugins.userScopeDescription":"Available to every project run by this Agent.","yeaft.plugins.projectScopeDescription":"Available only to the active project and overrides a same-named user Skill.","yeaft.plugins.projectScopeUnavailable":"Select a Session with a project directory to manage project-level Skills.","yeaft.plugins.skillName":"Name","yeaft.plugins.skillDescriptionLabel":"Description","yeaft.plugins.skillTrigger":"Trigger (optional)","yeaft.plugins.skillInstructions":"Instructions","yeaft.plugins.resetSkillForm":"Reset","yeaft.plugins.skillTier.bundled":"Bundled \xB7 read-only","yeaft.plugins.skillTier.user":"User","yeaft.plugins.skillTier.project":"Project","yeaft.plugins.skillTier.project-claude":"Claude project \xB7 read-only","yeaft.plugins.skillTier.project-codex":"Codex project \xB7 read-only","yeaft.onboarding.ariaLabel":"Yeaft getting started guide","yeaft.onboarding.topbarTitle":"Get started with Yeaft","yeaft.onboarding.eyebrow":"Yeaft setup guide","yeaft.onboarding.title":"Connect an Agent before chatting","yeaft.onboarding.subtitle":"Run these commands on the machine that should execute tools. The agent secret is generated automatically for your account if it does not exist yet.","yeaft.onboarding.createSession":"Create or restore Session","yeaft.onboarding.secretLoading":"Generating agent secret\u2026","yeaft.onboarding.secretError":"Failed to load agent secret.","yeaft.onboarding.secretPending":"<loading-agent-secret>","yeaft.onboarding.installTitle":"Install and connect Agent","yeaft.onboarding.installDesc":"Run one command on the target machine to install prerequisites, create a private instance, and connect it to this server.","yeaft.onboarding.connectTitle":"Connect this Agent","yeaft.onboarding.connectDesc":"The installer uses this server URL and your generated secret.","yeaft.restore.modal.empty":"No yeaft sessions found in this directory","yeaft.restore.modal.scanError":"Failed to scan: {message}","yeaft.restore.modal.restoreError":"Failed to restore: {message}","settings.llm.noAgent":"Please select an Agent first to manage LLM configuration.","settings.llm.agentOffline":"Agent is currently offline. LLM configuration will load when the agent comes online.","settings.llm.loading":"Loading configuration...","settings.llm.loadError":"Failed to load configuration","settings.llm.configureAgent":"Configure this agent LLM","settings.llm.configureMenu":"LLM Settings","settings.llm.simpleCopilotTitle":"Recommended: GitHub Copilot","settings.llm.useGitHubCopilot":"Use GitHub Copilot","settings.llm.refreshingModels":"Refreshing models...","settings.llm.managedCopilotTitle":"Managed GitHub Copilot","settings.llm.managedCopilotDesc":"Base URL, authentication, model catalog, and per-model API protocol are managed automatically. Claude models use Anthropic Messages; GPT/o models use OpenAI Responses.","settings.llm.providersTitle":"Providers","settings.llm.testFailed":"Connection test failed","settings.llm.saveSuccess":"LLM settings saved","settings.llm.saveFailed":"Failed to save LLM settings","settings.llm.presets.title":"Quick setup","settings.llm.providersDesc":"Choose a provider, save it, and use it in Sessions.","settings.llm.agentProviders":"This agent providers","settings.llm.agentBadge":"This agent","settings.llm.addProvider":"Add Provider","settings.llm.addFromPreset":"Add from Catalog","settings.llm.preset.title":"Provider Catalog (models.dev)","settings.llm.preset.refresh":"Refresh catalog","settings.llm.preset.loading":"Loading catalog\u2026","settings.llm.preset.empty":"No providers available.","settings.llm.preset.pickProvider":"Pick a provider on the left to see its models.","settings.llm.preset.filterProviders":"Filter providers\u2026","settings.llm.preset.filterModels":"Filter models\u2026","settings.llm.preset.selectAll":"Select all","settings.llm.preset.selectNone":"Clear","settings.llm.preset.cancel":"Cancel","settings.llm.preset.add":"Add to providers","settings.llm.preset.fetchedAt":"Catalog updated {minutes}m ago","settings.llm.addModel":"Add Model","settings.llm.removeModel":"Remove Model","settings.llm.providerName":"Name","settings.llm.providerNamePlaceholder":"e.g. my-proxy","settings.llm.baseUrl":"Base URL","settings.llm.baseUrlPlaceholder":"e.g. http://localhost:6628/v1","settings.llm.apiKey":"API Key","settings.llm.apiKeyPlaceholder":"Enter API key","settings.llm.protocol":"Protocol","settings.llm.protocolOpenAI":"OpenAI Compatible","settings.llm.protocolOpenAIResponses":"OpenAI Responses (GPT-5)","settings.llm.protocolAnthropic":"Anthropic Native","settings.llm.protocolHint.anthropic":"Claude native Messages API.","settings.llm.protocolHint.openai":"Chat Completions /v1/chat/completions \u2014 GPT-4 and most compatible proxies.","settings.llm.protocolHint.openaiResponses":"Responses API /v1/responses \u2014 required for GPT-5 series.","settings.llm.modelCtxPlaceholder":"ctx","settings.llm.modelMaxPlaceholder":"max","settings.llm.models":"Candidate Model IDs","settings.llm.modelsPlaceholder":"Model IDs, comma or newline separated, e.g. claude-sonnet-4-20250514, gpt-5","settings.llm.modelsHint":"Comma or newline separated.","settings.llm.removeProvider":"Remove","settings.llm.modelSelectionTitle":"Model Selection","settings.llm.modelSelectionDesc":"Choose the default models.","settings.llm.primaryModel":"Primary Model","settings.llm.primaryModelDesc":"Used for user-facing conversations","settings.llm.fastModel":"Fast Model","settings.llm.fastModelDesc":"Used for internal tasks (memory, consolidation)","settings.llm.noModels":"No models available. Add a provider first.","settings.llm.selectModel":"Select a model...","settings.llm.debugTitle":"Debug traces","settings.llm.debugDesc":"Per-agent opt-in for collecting per-turn debug traces (system prompts, LLM calls, tool payloads).","settings.llm.enableDebug":"Enable debug traces","settings.llm.save":"Save Changes","settings.llm.saving":"Saving...","settings.llm.saved":"Configuration saved","settings.llm.savedRefreshWarning":"Configuration was saved, but the live model catalog could not refresh: {error}","settings.llm.unsavedChanges":"You have unsaved changes","settings.llm.confirmRemoveProvider":"Remove this provider?","settings.llm.setupTitle":"Connect a model","settings.llm.setupDesc":"GitHub Copilot is recommended. You can also add your own API provider.","settings.llm.providerSectionHint":"Only the fields required to connect a model.","settings.tabs.dashboard":"Dashboard","settings.dashboard.totalUsers":"Total Users","settings.dashboard.onlineUsers":"Online Users","settings.dashboard.activeUsers":"Active Users","settings.dashboard.onlineAgents":"Online Agents","settings.dashboard.totalSessions":"Total Sessions","settings.dashboard.todayActive":"Today Active","settings.dashboard.todayMessages":"Today Messages","settings.dashboard.todayUserTurns":"Today User Turns","settings.dashboard.totalTokens":"Total Tokens","settings.dashboard.tokenAccuracy":"Provider-reported usage, accumulated from the version that enabled per-user token tracking. Heartbeats are excluded.","settings.dashboard.agentTurns":"Agent Turns","settings.dashboard.agentSessions":"Agent Sessions","settings.dashboard.turns":"Turns","settings.dashboard.tokens":"Tokens","settings.dashboard.inputTokens":"Input","settings.dashboard.outputTokens":"Output","settings.dashboard.cacheTokens":"Cache","settings.dashboard.today":"Today","settings.dashboard.thisWeek":"This Week","settings.dashboard.thisMonth":"This Month","settings.dashboard.all":"All","settings.dashboard.general":"General","settings.dashboard.detailed":"Detailed","settings.dashboard.users":"Users","settings.dashboard.agents":"Agents","settings.dashboard.time":"Time","settings.dashboard.active":"Active","settings.dashboard.inactive":"Inactive","settings.dashboard.activeOnly":"Active only","settings.dashboard.inactiveOnly":"Inactive only","settings.dashboard.userUsage":"User Usage","settings.dashboard.refresh":"Refresh","settings.dashboard.name":"Name","settings.dashboard.messages":"Messages","settings.dashboard.userTurns":"User Turns","settings.dashboard.sessions":"Sessions","settings.dashboard.requests":"Requests","settings.dashboard.traffic":"Traffic","settings.dashboard.lastTurnCompleted":"Last Turn Completed","settings.dashboard.status":"Status","settings.dashboard.latency":"Latency","settings.dashboard.version":"Version","settings.dashboard.owner":"Owner","settings.dashboard.role":"Role","settings.dashboard.agent":"Agent","settings.dashboard.online":"Online","settings.dashboard.offline":"Offline","settings.dashboard.noAgents":"No agents registered","settings.dashboard.noUserData":"No user data","settings.dashboard.noOnlineUsers":"No users online","settings.dashboard.loading":"Loading...","settings.dashboard.error":"Failed to load data","settings.dashboard.ago":"{time} ago","settings.dashboard.loadMore":"Load more ({remaining} remaining)","workbench.title":"Workbench","workbench.openItems":"Open Workbench items","workbench.addItem":"Add Workbench item","workbench.addItemHint":"Use + to open Files, Terminal, Git, or Browser.","workbench.closeItem":"Close {name}","workbench.chooseCapability":"Choose a capability","workbench.chooseCapabilityHint":"Choose a tool to start. Open tools stay available as tabs.","workbench.terminal":"Terminal","workbench.terminalDescription":"Run commands and manage terminal panes in the current working directory.","workbench.git":"Git","workbench.gitDescription":"Review repository status, diffs, and changed files.","workbench.files":"Files","workbench.filesDescription":"Browse, preview, and edit files on the selected Agent.","workbench.browser":"Browser","workbench.browserDescription":"View the Agent-local browser over a live WebRTC stream.","workbench.available":"Available","workbench.enableRequired":"Enable required","workbench.unavailable":"Unavailable on this Agent","workbench.capabilityUnavailable":"The selected Agent does not provide this capability.","workbench.browserUnavailable":"Browser is disabled by the administrator or unsupported by this Agent. Upgrade the Agent or ask an administrator to enable Browser routes.","workbench.browserReadyHint":"Enter an address to start an isolated Agent-local browser. Click the live view to use its mouse and keyboard.","workbench.browserStart":"Start browser","workbench.browserAddressLabel":"Browser address","workbench.browserAddressPlaceholder":"example.com","workbench.browserAddressInvalid":"Enter a valid HTTP or HTTPS address.","workbench.browserInteractionUnavailable":"Browser input is not connected yet. Wait for WebRTC, then retry.","workbench.browserGo":"Go","workbench.browserStarting":"Starting the Agent-local browser\u2026","workbench.browserConnecting":"Connecting the live WebRTC viewer\u2026","workbench.browserIceServersMissing":"The Browser viewer could not reach this Agent, and this Server has no STUN or TURN service configured. Ask an administrator to configure Browser ICE/TURN, then retry.","workbench.browserIceConnectionFailed":"The Browser WebRTC connection failed. Check that the configured TURN service is reachable from both the Web browser and Agent, then retry.","workbench.browserPeerAttachTimeout":"The Browser viewer timed out while establishing WebRTC. Check Browser ICE/TURN connectivity, then retry.","workbench.browserEnd":"End browser","workbench.browserVideoLabel":"Live Agent browser view","workbench.browserInputLabel":"Browser keyboard input","workbench.browserStatusConnecting":"Connecting","workbench.browserProtocolUnavailable":"Browser Runtime protocol is unavailable on this Server connection.","workbench.browserChecking":"Checking Browser Runtime on the selected Agent\u2026","workbench.browserPlatformUnsupported":"The selected Agent cannot host the current Browser Runtime data plane.","workbench.browserSetupTitle":"Enable Browser","workbench.browserOptionalInstall":"Browser needs a pinned Chrome for Testing build on this Agent. Enabling downloads approximately {size}, verifies and installs build {build}, then checks the media path.","workbench.browserInstallDiskNote":"Nothing downloads until you click Enable Browser. The extracted browser is stored only in this Agent instance data directory.","workbench.browserInstallAction":"Enable Browser ({size})","workbench.browserInstalling":"Enabling Browser: downloading and verifying Chrome for Testing {build}\u2026","workbench.browserInstallKeepOpen":"You may leave this panel. Reopening Browser resumes the visible install state; it will not start a second download.","workbench.browserInstallProgressLabel":"Browser download progress","workbench.browserInstallProgress":"{downloaded} of {total}","workbench.browserInstalledEnable":"The browser files are already installed. Enable Browser and check the media path.","workbench.browserEnableAction":"Enable Browser","workbench.browserEnabling":"Finishing setup and checking the media path\u2026","workbench.browserStatusInstalling":"Installing","workbench.browserStatusProbing":"Probing","workbench.backToCapabilities":"Back to capabilities","workbench.closeCapability":"Close capability","workbench.maximize":"Maximize panel","workbench.restore":"Restore panel","workbench.collapse":"Collapse panel","theme.switchToLight":"Switch to light theme","theme.switchToDark":"Switch to dark theme","theme.toLight":"Switch to light theme","theme.toDark":"Switch to dark theme","terminal.splitH":"Split horizontally (left-right)","terminal.splitV":"Split vertically (top-bottom)","terminal.close":"Close current terminal","terminal.autoCreate":"A terminal will be created when you open Terminal","terminal.xtermError":"xterm.js not loaded, please refresh the page","terminal.xtermNotLoaded":"xterm.js not loaded, please refresh the page","terminal.mountError":"Terminal container mount failed","terminal.mountFailed":"Terminal container mount failed","terminal.createError":"Terminal creation failed","terminal.createFailed":"Terminal creation failed","terminal.error":"Terminal error","git.selectFolder":"Select folder","git.repoPath":"Enter Git repository path...","git.repoPathPlaceholder":"Enter Git repository path...","git.workDir":"Git working directory","git.loadStatus":"Load Git status","git.loading":"Loading Git status...","git.loadingStatus":"Loading Git status...","git.clean":"Working directory clean, no changes","git.cleanWorkDir":"Working directory clean, no changes","git.selectAgent":"Select an Agent to load Git status","git.selectAgentFirst":"Select an Agent to load Git status","git.workItemRootRequired":"Git is unavailable because this Work Item uses a repository subfolder. Files and Terminal remain available; Git operations require a Work Item at the repository root.","git.diffOnly":"Diff only","git.fullFile":"Full file","git.zoomIn":"Zoom in","git.zoomOut":"Zoom out","git.loadingDiff":"Loading Diff...","git.clickToView":"Click a file to view diff","git.clickFileToView":"Click a file to view diff","git.selectRepo":"Select Git Repository","git.noDiff":"(No differences)","git.binaryFile":"(Binary file)","files.notLoaded":"Not loaded","files.newFile":"New File","files.newFolder":"New Folder","files.openFolder":"Open Folder","files.showTree":"Show folders","files.hideTree":"Hide folders","files.deleteSelected":"Delete selected","files.moveSelected":"Move selected","files.enterPath":"Enter path...","files.searchFiles":"Search files... (Ctrl+P)","files.noMatch":"No matches found","files.searching":"Searching...","files.loadingTree":"Loading...","files.emptyDir":"Empty directory","files.loadingFile":"Loading file...","files.readSendFailed":"The file request was not sent. Check the connection, then click the file again to retry.","files.readInterrupted":"The file read was interrupted. Reconnect, then click the file again to retry.","files.searchPlaceholder":"Search...","files.replacePlaceholder":"Replace...","files.replace":"Replace","files.replaceAll":"All","files.replaceCurrent":"Replace current","files.replaceAllTitle":"Replace all","files.clickToView":"Click a file to view content","files.selectFolder":"Select Folder","files.enterFolderName":"Enter folder name...","files.enterFileName":"Enter file name...","files.moveTarget":"Enter target directory path...","files.moveItems":"Move {count} item(s) to the specified directory","files.workDir":"Work directory: {dir}","files.enterDirPath":"Enter directory path...","files.unsavedConfirm":'"{name}" has unsaved changes. Close anyway?',"files.unsavedBatchConfirm":"{count} files have unsaved changes. Close them anyway?","files.showOpenTabs":"Show open files","files.closeTab":"Close {name}","files.closeTabAction":"Close","files.closeOtherTabs":"Close Others","files.closeTabsToLeft":"Close to the Left","files.closeTabsToRight":"Close to the Right","files.closeAllTabs":"Close All","files.deleteConfirm":'Are you sure you want to delete "{name}"?',"files.deleteDirHint":" (this will delete the folder and all its contents)","files.deleteSelectedConfirm":"Are you sure you want to delete {count} selected item(s)? This action cannot be undone.","files.findPrev":"Previous (Shift+Enter)","files.findNext":"Next (Enter)","files.caseSensitive":"Case sensitive","files.regex":"Regular expression","files.unsaved":"Unsaved","files.clearSelection":"Clear selection","files.rename":"Rename","files.copyHere":"Copy","files.moveTo":"Move to...","files.download":"Download","files.enterNewName":"Enter new name...","files.loadingPreview":"Loading preview...","files.previewTooLarge":"This file is {size} MB and exceeds the {limit} MB preview and download limit.","files.previewLoadFailed":"The image preview could not be loaded.","files.videoPreviewLoadFailed":"The video could not be played. Its codec may not be supported by this browser.","files.videoStreamUnavailable":"Video streaming is unavailable for this Agent or Session.","files.preview":"Preview","files.edit":"Edit","files.pptxNotSupported":"PPTX local preview is not supported. Please switch to Office Online mode in Settings.","files.officePreviewMode":"Office Preview Mode","files.officeOnline":"Office Online","files.localRender":"Local Rendering","proxy.port":"Port","proxy.label":"Label","proxy.add":"Add port mapping","proxy.addPort":"Add port mapping","proxy.enable":"Click to enable","proxy.clickEnable":"Click to enable","proxy.disable":"Click to disable","proxy.clickDisable":"Click to disable","proxy.openNewTab":"Open in new tab","proxy.openInBrowser":"Open in new tab","proxy.noMappings":"No port mappings","proxy.noPorts":"No port mappings","proxy.hint":"After adding ports, you can access local services on the agent machine through proxy URLs","proxy.noPortsHint":"After adding ports, you can access local services on the agent machine through proxy URLs","proxy.selectAgent":"Please select an Agent first","store.selectAgent":"Please select an Agent first","store.creatingConv":"Creating conversation...","store.loadingHistory":"Loading conversation history...","store.executionCancelled":"Execution cancelled","store.loginFailed":"Login failed","store.convClosed":"Conversation closed","store.convCreated":"New conversation created [{agent}], work directory: {workDir}","store.convResumed":"Conversation resumed [{agent}]: {sessionId}","roleplay.creating":"Creating Role Play session...","roleplay.working":"Working","roleplay.selectTeam":"Select team template","roleplay.teamDev":"Software Dev","roleplay.teamCustom":"Custom","roleplay.editRoles":"Edit Roles","roleplay.roleName":"Role ID","roleplay.roleDisplayName":"Display Name","roleplay.roleIcon":"Icon","roleplay.roleDesc":"Role Description","roleplay.rolePrompt":"Role Prompt","roleplay.removeRole":"Remove Role","roleplay.addRole":"Add Role","roleplay.start":"Start Role Play","roleplay.sidebarTitle":"Role Play","roleplay.configTitle":"Role Play","roleplay.newSession":"New Role Play","roleplay.emptyHint":"Send a message to start multi-role collaboration","roleplay.askingYou":"is asking you","roleplay.language":"Language","roleplay.rolePreview":"Role Configuration","roleplay.noAgents":"No online agents available","roleplay.inputPlaceholder":"Type a message\u2026 Use @ to mention a role","roleplay.existingSessions":"Existing Teams","roleplay.restore":"Restore","roleplay.restoring":"Restoring Role Play session...","roleplay.createNew":"Create New Team","expertPanel.title":"Expert Panel","expertPanel.search":"Search roles or actions...","expertPanel.noResults":"No results","expertPanel.clearAll":"Clear","expertPanel.persona":"Persona Prompt","expertPanel.template":"With Input \xB7 Prefix","expertPanel.templateHint":"When user types text: this prefix + user text = final prompt","expertPanel.defaultMsg":"No Input \xB7 Full Prompt","expertPanel.defaultMsgHint":"When user sends without typing: this full prompt is used as-is","expertPanel.loading":"Loading role definitions...","expertPanel.viewPrompt":"View prompt","expertPanel.customRoles":"Custom Roles","expertPanel.addRole":"Add role","expertPanel.editRole":"Edit role","expertPanel.deleteRole":"Delete role","expertPanel.noCustomRoles":"No custom roles yet","expertPanel.createFirst":"Create your first custom role","expertPanel.noActions":"No actions defined","expertPanel.deleteConfirm":'Delete role "{name}"? This cannot be undone.',"expertPanel.deleteConfirmBtn":"Delete","expertEditor.createTitle":"Create Custom Role","expertEditor.editTitle":"Edit Custom Role","expertEditor.basicInfo":"Basic Info","expertEditor.roleName":"Role Name","expertEditor.roleNamePlaceholder":"e.g. Data Analyst","expertEditor.roleTitle":"Title","expertEditor.roleTitlePlaceholder":"e.g. Senior Data Analyst","expertEditor.fullName":"Full Name","expertEditor.fullNamePlaceholder":"Optional","expertEditor.titleEn":"English Title","expertEditor.titleEnPlaceholder":"Optional","expertEditor.rolePrompt":"Role Prompt","expertEditor.messagePrefix":"Message Prefix (Chinese)","expertEditor.messagePrefixPlaceholder":"e.g. As a senior data analyst, ","expertEditor.messagePrefixEn":"Message Prefix (English)","expertEditor.messagePrefixEnPlaceholder":"As a senior data analyst, ","expertEditor.actions":"Actions","expertEditor.addAction":"Add Action","expertEditor.removeAction":"Remove","expertEditor.actionName":"Action Name","expertEditor.actionNamePlaceholder":"e.g. Data Analysis","expertEditor.actionNameEn":"English Name","expertEditor.actionNameEnPlaceholder":"Optional","expertEditor.messageTemplate":"With Input \xB7 Prefix (Chinese)","expertEditor.messageTemplatePlaceholder":"Prepended to user text when user types something","expertEditor.messageTemplateEn":"With Input \xB7 Prefix (English)","expertEditor.messageTemplateEnPlaceholder":"Prepended to user text when user types something","expertEditor.defaultMessage":"No Input \xB7 Full Prompt (Chinese)","expertEditor.defaultMessagePlaceholder":"Used as-is when user sends without typing","expertEditor.defaultMessageEn":"No Input \xB7 Full Prompt (English)","expertEditor.defaultMessageEnPlaceholder":"Used as-is when user sends without typing","expertEditor.cancel":"Cancel","expertEditor.save":"Save","expertEditor.saving":"Saving...","subAgentPanel.title":"Sub-Agents","subAgentPanel.back":"Back to list","subAgentPanel.running":"Running","subAgentPanel.completed":"Completed","subAgentPanel.waitingMessages":"Waiting for messages...","subAgentPanel.toolCount":"{count} tools","subAgentPanel.toolSummary":"{count} tool calls completed","subAgentPanel.empty":"No sub-agents","subAgentPanel.emptyHint":"Sub-agents will appear here when Claude delegates tasks","splitScreen.split":"Split screen","splitScreen.closePane":"Close pane","splitScreen.newChat":"New Chat","splitScreen.noSessions":"No sessions","splitScreen.splitToPanel":"Open in new panel","splitScreen.selectFromSidebar":"Select a conversation from the sidebar","yeaft.vp.library":"VP Library","yeaft.vp.createFirst":"+ Create your first role","yeaft.vp.empty.aria":"No virtual persons yet","yeaft.vp.avatar.aria":"{name} avatar","yeaft.vp.speaker.stateCauseAria":"State change: {cause}","yeaft.vp.status.thinking":"thinking\u2026","yeaft.vp.status.tool":"using {name}","yeaft.vp.status.done":"done \xB7 {count} tools","yeaft.vp.status.aborted":"aborted","yeaft.vp.crud.title":"VP Library","yeaft.vp.crud.close":"Close","yeaft.vp.crud.addNew":"+ New role","yeaft.vp.crud.empty":"No virtual persons yet. Create your first role to start collaborating.","yeaft.vp.crud.edit":"Edit","yeaft.vp.crud.delete":"Delete","yeaft.vp.crud.deleteConfirm":'Delete "{name}"? This removes the role.md file on disk.',"yeaft.vp.crud.form.create":"Create role","yeaft.vp.crud.form.update":"Edit role","yeaft.vp.crud.form.vpId":"VP id","yeaft.vp.crud.form.vpId.tooltip":'Letters / digits / - / _ only. Cannot start with "_", cannot be all digits, cannot be one of: all, user, system, everyone.',"yeaft.vp.crud.form.displayName":"Display name (English)","yeaft.vp.crud.form.displayNameZh":"Display name (Chinese)","yeaft.vp.crud.form.description":"Capability description (English)","yeaft.vp.crud.form.descriptionZh":"Capability description (Chinese)","yeaft.vp.crud.form.descriptionPlaceholder":"e.g. API design, migration planning, and compatibility reviews","yeaft.vp.crud.form.descriptionZhPlaceholder":"\u4F8B\u5982\uFF1AAPI \u8BBE\u8BA1\u3001\u8FC1\u79FB\u89C4\u5212\u4E0E\u517C\u5BB9\u6027\u8BC4\u5BA1","yeaft.vp.crud.form.role":"Role","yeaft.vp.crud.form.rolePlaceholder":"e.g. Product Manager","yeaft.vp.crud.form.traits":"Traits","yeaft.vp.crud.form.traitsHint":"Comma-separated short tags (e.g. curious, pragmatic).","yeaft.vp.crud.form.modelHint":"Model hint","yeaft.vp.crud.form.modelHint.none":"\u2014 default \u2014","yeaft.vp.crud.form.modelHint.primary":"primary","yeaft.vp.crud.form.modelHint.fast":"fast","yeaft.vp.crud.form.persona":"Persona (markdown)","yeaft.vp.crud.form.personaPlaceholder":"Describe how this role should think, speak, and decide...","yeaft.vp.crud.form.submit":"Save","yeaft.vp.crud.form.cancel":"Cancel","yeaft.vp.crud.form.ok":"Looks good","yeaft.vp.crud.form.idLocked":"VP id cannot be changed after creation.","yeaft.vp.crud.saving":"Saving\u2026","yeaft.vp.crud.saveFailed":"Save failed: {error}","yeaft.vp.crud.deleteFailed":"Delete failed: {error}","yeaft.vp.crud.viewPrompt":"View prompt","yeaft.vp.crud.view.title":"VP prompt","yeaft.vp.crud.view.personaEmpty":"(no persona body \u2014 only metadata is defined)","yeaft.vp.crud.view.back":"Back","yeaft.vp.crud.view.editFromHere":"Edit this VP","yeaft.vp.crud.view.removed":"This VP was removed elsewhere \u2014 returning to the list.","yeaft.vp.crud.stockBadge":"Stock","yeaft.vp.crud.stockReadOnly":"Stock VPs ship with the agent and cannot be edited or deleted.","yeaft.vp.idError.empty_or_non_string":"VP id is required.","yeaft.vp.idError.too_long":"VP id is too long (max 40 characters).","yeaft.vp.idError.illegal_character":'Only letters, digits, "-" and "_" are allowed.',"yeaft.vp.idError.underscore_prefix_reserved":'VP id cannot start with "_" (reserved for system roles).',"yeaft.vp.idError.pure_digits":"VP id cannot be all digits.","yeaft.vp.idError.reserved":"VP id cannot be one of the reserved names (all, user, system, everyone).","yeaft.vp.idError.duplicate":"A role with this VP id already exists.","yeaft.vp.idError.not_found":"This VP does not exist \u2014 it may have been deleted.","yeaft.vp.idError.stock_readonly":"Stock VPs cannot be edited or deleted.","yeaft.vp.idError.unknown":"An unexpected error occurred. Please try again.","yeaft.vp.reason.personaEdit":"Persona updated","yeaft.vp.reason.traitsEdit":"Traits updated","yeaft.vp.reason.manualReload":"Reloaded","yeaft.vp.reason.fileRemoved":"Removed","yeaft.vp.reason.toast.updated":"{name}: {reason}","yeaft.vp.reason.toast.removed":"{name} was removed","yeaft.message.timeAria":"Sent at {time}","yeaft.message.llmCall":"{count} LLM call","yeaft.message.llmCalls":"{count} LLM calls","yeaft.message.tokenUsage":"Total {total} \xB7 Input {input} \xB7 Output {output}","yeaft.user.youLabel":"You","yeaft.session.sidebarTitle":"Sessions","yeaft.session.sidebarAria":"Sessions section","yeaft.session.newButton":"+ New session","yeaft.session.newButtonAria":"Create a new session","yeaft.session.defaultName":"Default","yeaft.session.moreActions":"More actions","yeaft.session.archivingEllipsis":"Archiving\u2026","yeaft.session.deletingEllipsis":"Deleting\u2026","yeaft.session.renamingEllipsis":"Renaming\u2026","yeaft.session.empty":"No sessions yet.","yeaft.session.membersCount":"{count} members","yeaft.session.oneMember":"1 member","yeaft.session.noMembers":"Empty \u2014 invite a VP","yeaft.session.defaultBadge":"default","yeaft.session.archive":"Archive","yeaft.session.archiveConfirm":'Archive "{name}"? You can recover it from disk later.',"yeaft.session.delete":"Delete","yeaft.session.deleteConfirm":'Delete "{name}"? This permanently removes the session and all its data \u2014 this cannot be undone.',"yeaft.session.rename":"Rename","yeaft.session.copy":"Copy session","yeaft.session.copying":"Copying session\u2026","yeaft.session.copyComplete":"Session copied","yeaft.session.copyFailed":"Could not copy the session: {message}","yeaft.session.openSettings":"Settings","yeaft.session.removeFromList":"Remove","yeaft.session.manageMembers":"Manage members","yeaft.session.memberCount.one":"1 member","yeaft.session.memberCount.other":"{count} members","yeaft.session.renamePrompt":'New name for "{name}":',"yeaft.session.editModal.renameTitle":"Rename session","yeaft.session.editModal.renameBody":'Choose a new name for "{name}".',"yeaft.session.editModal.renameSubmit":"Save","yeaft.session.editModal.archiveTitle":"Archive session","yeaft.session.editModal.archiveBody":'Archive "{name}"? You can recover it from disk later.',"yeaft.session.editModal.archiveSubmit":"Archive","yeaft.session.editModal.deleteTitle":"Delete session","yeaft.session.editModal.deleteBody":'Delete "{name}"? This permanently removes the session and all its data \u2014 this cannot be undone.',"yeaft.session.editModal.deleteSubmit":"Delete","yeaft.session.editModal.newNameLabel":"New name","yeaft.session.editModal.cancel":"Cancel","yeaft.session.editModal.close":"Close","yeaft.session.error.invalid_name":"Session name cannot be empty.","yeaft.session.error.duplicate":"A session with this id already exists.","yeaft.session.error.not_found":"Session not found.","yeaft.session.error.agent_offline":"Reconnect to the Agent before copying this session.","yeaft.session.error.fork_pending":"A Session copy is already in progress.","yeaft.session.error.project_inheritance_failed":"The copy was created, but its Project could not be saved. Move the new Session into the original Project from the sidebar; do not copy it again.","yeaft.session.error.session_running":"Wait for this session's current response to finish before copying it.","yeaft.session.error.default_not_in_roster":"The default VP must be in the roster.","yeaft.session.error.no_default_vp":"This session has no members. Add a VP from the library to start chatting.","yeaft.session.error.reserved":"One of the selected ids is reserved (all, user, system, everyone).","yeaft.session.error.unknown":"Session operation failed: {message}","yeaft.session.error.timeout":"Session operation timed out \u2014 try again.","yeaft.session.invite.title":"Invite a VP","yeaft.session.invite.body":'"{name}" has no members yet. Add a VP from your library to start chatting.',"yeaft.session.invite.openLibrary":"Open VP Library","yeaft.session.invite.dismiss":"Not now","yeaft.session.empty.title":"Empty session","yeaft.session.empty.hint":'"{name}" has no members yet. Add a VP to start chatting.',"yeaft.session.empty.cta":"Manage members","yeaft.session.members.title":'Manage members of "{name}"',"yeaft.session.members.aria":"Session members manager","yeaft.session.members.close":"Close","yeaft.session.members.done":"Done","yeaft.session.members.empty":"No VPs available \u2014 create one in the VP Library first.","yeaft.session.members.loading":"Loading VPs\u2026","yeaft.session.members.defaultHint":"Default VP (replies when no @mention is given)","yeaft.session.members.memberCount":"{count} selected","yeaft.session.members.actionFailed":"Action failed: {error}","yeaft.session.members.openLibrary":"Open VP Library","yeaft.session.members.openLibraryHint":"Create a new VP or view a VP's prompt.","yeaft.session.announcement.label":"Announcement","yeaft.session.announcement.hintEmpty":"No announcement \u2014 click \u270F\uFE0F to add one.","yeaft.session.announcement.emptyBody":"No announcement set. Add a message that every VP in this session will see at the top of its system prompt \u2014 useful for shared context, ground rules, or a CLAUDE.md-style brief.","yeaft.session.announcement.placeholder":"Write a shared briefing for all VPs in this session\u2026","yeaft.session.announcement.edit":"Edit announcement","yeaft.session.announcement.editTitle":"Edit session announcement","yeaft.session.announcement.saving":"Saving\u2026","yeaft.session.announcement.saveFailed":"Save failed: {error}","yeaft.session.announcement.openSettings":"Open session settings","yeaft.session.settings.title":"{name} \u2014 session settings","yeaft.session.settings.short":"Session","yeaft.session.settings.close":"Close","yeaft.session.settings.nav.session":"Session","yeaft.session.settings.nav.members":"Members","yeaft.session.settings.nav.memory":"Memory","yeaft.session.settings.announcement.heading":"Session announcement","yeaft.session.settings.announcement.help":"Shared at the top of every VP's system prompt while in this session. Like a CLAUDE.md for the team.","yeaft.session.settings.members.heading":"Members","yeaft.session.settings.rename.heading":"Rename session","yeaft.session.settings.rename.label":"New name","yeaft.session.settings.rename.save":"Save name","yeaft.session.settings.rename.saving":"Saving\u2026","yeaft.session.settings.workDir.heading":"Working directory","yeaft.session.settings.workDir.help":"Project files and instructions are loaded from this directory on the next turn. Session history remains in Agent storage.","yeaft.session.settings.workDir.label":"Path","yeaft.session.settings.workDir.placeholder":"/path/to/project","yeaft.session.settings.workDir.save":"Save directory","yeaft.session.settings.workDir.saving":"Saving\u2026","yeaft.session.settings.workDir.saveFailed":"Could not save the working directory: {error}","yeaft.session.settings.memory.heading":"Session memory","yeaft.session.settings.memory.help":"Run the dream consolidation now. Reads new messages since the last run, extracts facts, and merges them into the session's summary so the Resident layer reflects the latest conversation.","yeaft.session.settings.memory.runNow":"Run dream now","yeaft.session.settings.memory.running":"Running\u2026","yeaft.session.settings.memory.lastSuccess":"Last run {time} \u2014 {count} target(s) updated.","yeaft.session.settings.memory.lastError":"Last run failed: {error}","yeaft.session.settings.danger.heading":"Delete session","yeaft.session.settings.danger.deleteHelp":"This permanently deletes the session, removing session.json and all message history on disk. It cannot be undone.","yeaft.session.settings.danger.deleteBtn":"Delete session","yeaft.vp.mention.placeholder":"Search role by id or name\u2026","yeaft.vp.mention.noMatch":"No matching role","yeaft.vp.mention.count":"{count} mentions","yeaft.feature.reject.missing_group_id":"Message send failed: session not specified.","yeaft.feature.reject.missing_feature_id":"Message send failed: task context lost.","yeaft.feature.reject.missing_vp_id":"Message send failed: speaker not set.","yeaft.feature.reject.invalid_vp_id":"Message send failed: invalid speaker id.","yeaft.feature.reject.empty_text":"Message send failed: empty message.","yeaft.feature.reject.text_too_long":"Message send failed: text too long (max 16 KiB).","yeaft.feature.reject.unknown":"Message send failed.","yeaft.feature.pill.label":"task","yeaft.feature.messageTime.aria":"Sent at {time}","yeaft.vp.turnBlock.elapsedTitle":"Time elapsed since this turn started","yeaft.vp.turnBlock.retryingRequest":"Response stalled; retrying with a fresh request ({attempt}/{max})","yeaft.vp.turnBlock.retryingContinue":"Response stalled; continuing with a fresh request ({attempt}/{max})","yeaft.sessionStatus.aria":"Session status","yeaft.sessionStatus.title":"Session status","yeaft.sessionStatus.announcement":"Announcement","yeaft.sessionStatus.announcementEmpty":"No announcement","yeaft.sessionStatus.announcementAdd":"Add announcement","yeaft.sessionStatus.announcementEdit":"Edit announcement","yeaft.sessionStatus.vps":"VPs","yeaft.sessionStatus.backgroundTasks":"Background tasks","yeaft.sessionStatus.noLogPreview":"No log output yet.","yeaft.sessionStatus.task.subAgentStarted":"{name} started","yeaft.sessionStatus.task.subAgentStartedWithMission":"{name} started: {mission}","yeaft.sessionStatus.task.subAgentStatus":"{name} is {status}","yeaft.sessionStatus.task.subAgentStatusUpdated":"{name} status updated","yeaft.sessionStatus.task.subAgentResult":"{name} result: {text}","yeaft.sessionStatus.task.subAgentProducedResult":"{name} produced a result","yeaft.sessionStatus.task.subAgentUsedTool":"{name} used {tool}","yeaft.sessionStatus.task.subAgentFinishedTool":"{name} finished {tool}","yeaft.sessionStatus.task.subAgentUsage":"{name} used {tokens} tokens","yeaft.sessionStatus.task.subAgentEvent":"{name}: {text}","yeaft.sessionStatus.task.subAgentUserPrompt":"You: {text}","yeaft.sessionStatus.task.subAgentToolSummary":"{count} tool calls completed","yeaft.sessionStatus.task.subAgentError":"{name} error: {error}","yeaft.sessionStatus.task.subAgentHitError":"{name} hit an error","yeaft.sessionStatus.task.subAgentNoReadableEvents":"No readable sub-agent activity yet.","yeaft.sessionStatus.task.promptPlaceholder":"Add guidance for this sub-agent\u2026","yeaft.sessionStatus.task.promptSend":"Send","yeaft.sessionStatus.task.promptSending":"Sending\u2026","yeaft.sessionStatus.task.promptFailed":"Failed to send prompt.","yeaft.sessionStatus.task.title":"Task","yeaft.sessionStatus.task.command":"Command","yeaft.sessionStatus.task.stop":"Stop task","yeaft.sessionStatus.task.stopping":"Stopping\u2026","yeaft.sessionStatus.task.kind.subAgent":"sub-agent","yeaft.sessionStatus.task.kind.shell":"shell","yeaft.sessionStatus.show":"Show Session status","yeaft.sessionStatus.hide":"Hide Session status","yeaft.sessionStatus.close":"Close Session status","yeaft.vpTimeline.empty":"No VPs in this Session yet.","yeaft.vpTimeline.resizeTitle":"Drag to resize","yeaft.vpTimeline.status.idle":"idle","yeaft.vpTimeline.status.typing":"typing\u2026","yeaft.vpTimeline.status.thinking":"thinking\u2026","yeaft.vpTimeline.status.retrying":"retrying request\u2026","yeaft.vpTimeline.status.streaming":"streaming","yeaft.vpTimeline.status.tool":"using tool\u2026","yeaft.vpTimeline.status.error":"error","yeaft.vpTimeline.status.offline":"offline","yeaft.vpTimeline.abort":"Abort","yeaft.vpTimeline.edit":"Edit VP","yeaft.vpTimeline.mention":"Click to @-mention this VP","yeaft.vpTimeline.expand":"Toggle task details","yeaft.toolStats.title":"Tool Usage Stats","yeaft.toolStats.refresh":"Refresh","yeaft.toolStats.close":"Close","yeaft.toolStats.tabAll":"All tools","yeaft.toolStats.tabUnused":"Unused","yeaft.toolStats.loading":"Loading\u2026","yeaft.toolStats.notLoaded":"No data yet \u2014 click refresh.","yeaft.toolStats.empty":"(no tool calls recorded yet)","yeaft.toolStats.noneUnused":"(every registered tool has been called at least once)","yeaft.toolStats.fetchedAt":"Fetched at","yeaft.toolStats.col.name":"Tool","yeaft.toolStats.col.calls":"Calls","yeaft.toolStats.col.errors":"Errors","yeaft.toolStats.col.errRate":"Err%","yeaft.toolStats.col.p50":"p50","yeaft.toolStats.col.p95":"p95","yeaft.toolStats.col.avg":"Avg","yeaft.toolStats.col.last":"Last","yeaft.toolStats.buttonLabel":"Tool Stats","workCenter.itemInfo":"Work item info","workCenter.infoTab.requirement":"Requirement","workCenter.infoTab.progress":"Progress","workCenter.infoTab.outputs":"Outputs","workCenter.infoTab.goals":"Goals","workCenter.infoTab.usage":"Usage","workCenter.infoProgressEmpty":"No Actions yet.","workCenter.infoOutputsEmpty":"No outputs yet.","workCenter.infoConversationEmpty":"No messages yet.","workCenter.workbenchUnavailable":"Open a Work Item with a workspace on an updated Agent and Server to use Workbench.","workCenter.openOutputFile":"Open file: {name}","workCenter.returnToSession":"Return to Session","workCenter.showNavigation":"Show Work Center navigation","workCenter.hideNavigation":"Hide Work Center navigation","workCenter.agents":"Agents","workCenter.expandItemActivity":"Expand activity for {title}","workCenter.collapseItemActivity":"Collapse activity for {title}","workCenter.activity":"In progress","workCenter.noActivity":"No work in progress","workCenter.activityOffline":"Disconnected \xB7 status may be out of date","workCenter.online":"Online","workCenter.offline":"Offline","workCenter.close":"Close Work Center","workCenter.searchAndFilters":"Search and filters","workCenter.moreActions":"More actions","workCenter.navigation":"Work item navigation","workCenter.title":"Work Center","workCenter.subtitle":"Persistent work owned by this Agent","workCenter.agent":"Agent","workCenter.selectAgent":"Select Agent","workCenter.noOnlineAgents":"No online agents","workCenter.noAvailableAgents":"No compatible online Agents","workCenter.checkingAgents":"Checking Work Center availability\u2026","workCenter.agentStatusLoadFailed":"Could not check Work Center status. Try again.","workCenter.retryAgentStatus":"Retry status check","workCenter.unavailableAgents":"Work Center is configured on, but its runtime is unavailable. Review this Agent\u2019s settings and logs.","workCenter.disabledAgents":"Work Center is disabled on the online Agent.","workCenter.disabledAgentsMany":"Work Center is disabled on {count} online Agents.","workCenter.openAgentSettings":"Open Agent settings","workCenter.openAgentSettingsUpgrade":"Open Agent settings to upgrade","workCenter.upgradeAgents":"The online Agents do not support Work Center settings.","workCenter.new":"New","workCenter.newWorkItem":"New work item","workCenter.workItem":"Work item","workCenter.createFirst":"Create first work item","workCenter.backToChat":"Back to chat","workCenter.refresh":"Refresh","workCenter.search":"Search work items","workCenter.filter":"Filter","workCenter.filterAttention":"Needs attention","workCenter.filterActive":"Active","workCenter.filterAll":"All","workCenter.filterDone":"Done","workCenter.attentionItems":"Needs attention","workCenter.board.active":"Active","workCenter.board.needsAttention":"Needs attention","workCenter.board.closed":"Closed","workCenter.board.emptyLane":"No work items","workCenter.board.lanes":"Work item lanes","workCenter.filterVp":"Filter by VP","workCenter.filterType":"Filter by type","workCenter.filterUpdated":"Filter by update time","workCenter.allVps":"All VPs","workCenter.allTypes":"All types","workCenter.anyTime":"Any time","workCenter.lastDay":"Last 24 hours","workCenter.lastWeek":"Last 7 days","workCenter.deleteWorkItem":"Delete Work Item","workCenter.deleteConfirm":"Permanently delete this Work Item, its execution history, and attachments?","workCenter.deleteRequiresStop":"Stop this Work Item before deleting it","workCenter.lastMonth":"Last 30 days","workCenter.assignment.planned":"Planned assignment","workCenter.created":"Created","workCenter.executionDuration":"Runtime","workCenter.files":"files","workCenter.loadMore":"Load more","workCenter.activeItems":"Active work","workCenter.allItems":"All work items","workCenter.completedItems":"Completed","workCenter.watcherActive":"Watcher active","workCenter.loading":"Loading work items\u2026","workCenter.noTimestamp":"No timestamp","workCenter.updated":"Updated","workCenter.emptyTitle":"No work items yet","workCenter.emptyBody":"Create a persistent task when work must continue beyond one conversation turn.","workCenter.noAttentionTitle":"Nothing needs attention","workCenter.noAttentionBody":"Work Items waiting for you or needing recovery will appear here.","workCenter.noActiveTitle":"No active work items","workCenter.noActiveBody":"Draft, ready, and running Work Items will appear here.","workCenter.noCompletedTitle":"No completed work items","workCenter.noCompletedBody":"Completed work items will appear here.","workCenter.noMatchesTitle":"No matching work items","workCenter.noMatchesBody":"Try a different search or filter.","workCenter.selectTitle":"Work item details","workCenter.detailLoading":"Loading full details\u2026","workCenter.detailLoadFailed":"Could not load full details","workCenter.start":"Start","workCenter.retry":"Retry","workCenter.cancel":"Cancel","workCenter.closeWorkItem":"Close details","workCenter.cancelWorkItem":"Stop work item","workCenter.cancelWorkItemHint":"Stop this Work Item and all unfinished Actions.","workCenter.cancelConfirm":"Stop this work item and its unfinished Actions?","workCenter.stopWorkItem":"Stop work item","workCenter.resumeWorkItem":"Resume work item","workCenter.resource.title":"Resource budget","workCenter.resource.requests":"Requests","workCenter.resource.chargedTokens":"Budgeted tokens","workCenter.resource.details":"Usage breakdown and limits","workCenter.resource.total":"Total \xB7 lifetime","workCenter.resource.coordinator":"Coordinator","workCenter.resource.actions":"Actions","workCenter.resource.usage":"{requests} requests \xB7 {charged} budgeted tokens","workCenter.resource.tokens":"Reported {reported} \xB7 reserved / unknown {reserved} tokens","workCenter.resource.unknown":"Unknown usage: {unknown} requests \xB7 in flight: {inflight}","workCenter.resource.accounting":"Budgeted tokens include reservations; do not add them again. Reported tokens are known usage, not the total bill. Admission is estimated, not a hard spending ceiling.","workCenter.resource.maxRequests":"Lifetime requests","workCenter.resource.maxTokens":"Lifetime tokens","workCenter.resource.maxRunRequests":"Requests per Run","workCenter.resource.maxActionAttempts":"Attempts per Action","workCenter.resource.maxCoordinatorFailures":"Coordinator failures","workCenter.resource.attemptLimit":"Action attempts are cumulative across generations and also capped by each Action\u2019s original limit plus explicit extensions. Used / effective limit:","workCenter.resource.attemptExtension":"Adding Action attempts authorizes extra attempts for ALL current and future Actions in this WorkItem.","workCenter.resource.stopped":"Execution stopped by resource control.","workCenter.resource.stop.work_item_requests_exhausted":"Stopped: lifetime request budget exhausted.","workCenter.resource.stop.work_item_tokens_exhausted":"Stopped: token budget cannot admit another request.","workCenter.resource.stop.run_requests_exhausted":"Stopped: Run request limit reached. Resume starts a new Run.","workCenter.resource.stop.action_attempts_exhausted":"Stopped: Action attempt limit reached.","workCenter.resource.stop.coordinator_failures_exhausted":"Stopped: Coordinator failure limit reached.","workCenter.resource.offline":"Agent disconnected. Reconnect and refresh before changing resources.","workCenter.resource.stale":"Resource state changed or is unconfirmed. Refresh and confirm again; nothing will be retried automatically.","workCenter.resource.refresh":"Refresh resource state","workCenter.resource.reconfirm":"Latest state loaded. Review the limits and confirm a new operation if needed.","workCenter.resource.extend":"Extend budget","workCenter.resource.confirmExtend":"Confirm budget addition","workCenter.resource.extendHelp":"Enter positive whole-number additions, not replacement limits. Leave other fields blank. Adding budget does not resume execution or reset usage.","workCenter.resource.current":"Current: {count}","workCenter.resource.invalid":"Use positive safe integers only; the resulting limits must also be safe integers.","workCenter.resource.extended":"Budget added. Execution was not resumed; resume explicitly when ready.","workCenter.resource.resumed":"Resume accepted.","workCenter.resource.pending":"Updating resource state\u2026","workCenter.resource.close":"Close budget form","workCenter.breadcrumbs":"Work Center navigation","workCenter.actionNumber":"Action {number}","workCenter.actionBreadcrumb":"Action {number}: {description}","workCenter.sourceUnavailable":"Source Action unavailable","workCenter.untitledAction":"Untitled Action","workCenter.workItems":"Work items","workCenter.description":"Description","workCenter.goal":"Goal","workCenter.acceptanceCriteria":"Acceptance criteria","workCenter.goalProgress":"Goal progress","workCenter.criteriaProgress":"{completed} / {total} criteria verified","workCenter.criteriaRemaining":"{count} remaining","workCenter.criteriaOmitted":"{count} more criteria omitted from this bounded view; totals include them.","workCenter.criteriaVerified":"All criteria verified","workCenter.criteriaPending":"Acceptance criteria have not been defined yet","workCenter.goalStatus.passed":"Verified","workCenter.goalStatus.failed":"Failed","workCenter.goalStatus.unmet":"Not yet verified","workCenter.goalBlockers":"Blockers","workCenter.evidenceRuns":"Evidence Runs","workCenter.deliveredResponse":"Delivered response","workCenter.responseEvidence":"Response source and evidence","workCenter.noCriteria":"No criteria provided","workCenter.failureReason":"Failure reason","workCenter.workflow":"Workflow","workCenter.triageSummary":"Triage summary","workCenter.actionFlow":"Action flow","workCenter.viewActions":"View Actions","workCenter.actionsPanel":"Actions","workCenter.resizeActions":"Resize Actions panel (arrow keys to adjust, Home to reset)","workCenter.closeActions":"Close Actions","workCenter.actionCount":"{count} Actions","workCenter.noActionSummary":"No summary yet","workCenter.actionProgress":"{completed} / {total} Actions","workCenter.currentAction":"Current Action","workCenter.expandActions":"Show Actions","workCenter.collapseActions":"Collapse","workCenter.actionObjective":"What to do","workCenter.actionApproach":"How to do it","workCenter.actionExpectedOutcome":"Expected result","workCenter.dependencies":"Source Actions","workCenter.actionResult":"Latest result","workCenter.currentProgress":"Current progress","workCenter.requirementAndAcceptance":"Requirement and acceptance","workCenter.taskInformation":"Task information and usage","workCenter.actionMessages":"Messages","workCenter.loops":"loops","workCenter.tools":"tools","workCenter.noActionMessages":"No messages yet.","workCenter.actionDetails":"Action details","workCenter.selectAction":"Select an Action","workCenter.backToWorkItems":"Work items","workCenter.backToActions":"Back to Actions","workCenter.you":"You","workCenter.noRequestDetails":"No execution records are available for this Action yet.","workCenter.loadingRequests":"Loading execution records\u2026","workCenter.loadingRequestDetail":"Loading tool evidence\u2026","workCenter.requestDetailUnavailable":"Tool evidence is unavailable. Try again.","workCenter.noRequestLoops":"This execution has no retained Loop details.","workCenter.requestDetailTruncated":"Large execution: {summarized} Loops are summarized and {omitted} older Loops are omitted.","workCenter.loopDetailTruncated":"Large Loop: showing retained tool evidence.","workCenter.loadEarlierMessages":"Load earlier messages","workCenter.loadingEarlierMessages":"Loading earlier messages\u2026","workCenter.unknownModel":"Unknown model","workCenter.loop":"Loop","workCenter.actionBrief":"Task brief","workCenter.executionSummary":"Execution summary","workCenter.toolParameters":"Parameters","workCenter.toolResult":"Result","workCenter.noToolCalls":"No tool calls in this Loop.","workCenter.actionInputPlaceholder":"Add context, answer a question, or redirect this Action","workCenter.actionInputResumeHint":"Your input resumes this Action with the additional context.","workCenter.waitingQuestionTitle":"Input required","workCenter.replyToAction":"Reply to this Action","workCenter.replyToCoordinator":"Reply to Coordinator","workCenter.replyHelp":"Reply with your decision or instructions in the conversation below. Nothing is approved until you send.","workCenter.inputStale":"Your reply was not applied because the target changed. Your draft is saved; check the refreshed target and send again.","workCenter.actionInputRetryHint":"Add instructions or files, then rerun this Action with the new context.","workCenter.actionInputContinueHint":"Direct intervention for this Action only.","workCenter.actionFailedTitle":"Why this Action failed","workCenter.actionClosedTitle":"Why this Action was closed","workCenter.failedAt":"Failed at","workCenter.closedAt":"Closed at","workCenter.actionFailureRecovery":"Choose this Action in the Work Item composer to send corrected instructions.","workCenter.sendInput":"Send to Action","workCenter.sendingInput":"Sending\u2026","workCenter.retryAction":"Retry Action","workCenter.sendAndRetryAction":"Send and retry Action","workCenter.coordinatorDecision.guide_actions":"Action instructions updated","workCenter.coordinatorDecision.replan":"Goal or plan updated","workCenter.coordinatorDecision.request_human":"Human input requested","workCenter.conversation":"Conversation","workCenter.contentPane":"Content","workCenter.workItemPanes":"Work item panes","workCenter.coordinator":"Coordinator","workCenter.coordinatorTargetHint":"Work Item planning and coordination","workCenter.composerTarget":"Message target","workCenter.targetUnavailable":"Selected Action is no longer available","workCenter.targetUnavailableHelp":"Choose another target before sending. This draft was not redirected.","workCenter.sendToCoordinatorInstead":"Send to Coordinator instead","workCenter.sendToTarget":"Send to {target}","workCenter.answerWithTarget":"Choose the relevant target in the Conversation composer, then reply.","workCenter.conversationThinking":"Working\u2026","workCenter.conversationReadOnly":"This work item is closed. The conversation remains available.","workCenter.conversationPlaceholder":"Message about this work item","workCenter.sendMessage":"Send message","workCenter.messageSpeakerRole":"{name} \xB7 {role}","workCenter.originalRequest":"Original request","workCenter.actionMessageScopeTitle":"Message this Action","workCenter.actionMessageScope":"Only this Action receives the message.","workCenter.actionConversation":"Conversation","workCenter.actionConversationWith":"Action executor","workCenter.actionViews":"Action views","workCenter.actionExecutor":"Executor","workCenter.actionExecutorPending":"Executor pending","workCenter.actionInformation":"Action information","workCenter.messageExecutor":"Message {name}","workCenter.actionChatPlaceholder":"Message {name} from the Conversation composer","workCenter.statusLabel":"Status","workCenter.llmRequestsLabel":"LLM requests","workCenter.loopsLabel":"Loops","workCenter.toolsLabel":"Tools","workCenter.tokensLabel":"Tokens","workCenter.workItemMessagePlaceholder":"Add direction for the whole Work Item","workCenter.sendWorkItemMessage":"Send to Work Item","workCenter.fromSession":"Create a work item from this Session","workCenter.llmRequestCount":"{count} LLM requests","workCenter.loopCount":"{count} loops","workCenter.toolCount":"{count} tools","workCenter.tokenCount":"{count} tokens","workCenter.tokenBreakdown":"{input} input / {output} output / {cache} cached","workCenter.guidance":"Add guidance to the current Action","workCenter.guidanceHint":"Clarify constraints or redirect the current Action","workCenter.guidanceRestartHint":"This restarts the current Action with the new guidance.","workCenter.sendGuidance":"Send guidance","workCenter.reuseMemory":"Use relevant Agent memory and completed work from this project","workCenter.reuseMemoryHelp":"Includes scope-bounded Agent memory plus structured summaries and evidence from completed WorkItems with the same canonical project directory. Raw tool output is not reused.","workCenter.resumeAnswer":"Answer the waiting question","workCenter.resumeAnswerHint":"Provide the information required to continue","workCenter.answerInActionDetail":"Target the current Action in the Conversation composer, then reply.","workCenter.selectPrompt":"Select a work item to inspect its workflow.","workCenter.createHint":"Describe what you need. The Coordinator will keep creating the next justified Actions until the acceptance criteria are verified.","workCenter.requirement":"Requirement","workCenter.requirementHint":"Describe the problem, desired outcome, and any constraints in your own words","workCenter.requirementHelp":"The Coordinator will refine the goal and acceptance criteria, then create Actions dynamically as evidence arrives.","workCenter.titleField":"Title","workCenter.titleHint":"A short, specific outcome","workCenter.goalHint":"Describe the result the Agent must deliver","workCenter.criteriaHint":"One criterion per line","workCenter.attachments":"Attachments","workCenter.outputs":"Outputs","workCenter.deliveryTarget":"Delivery target","workCenter.deliveryTargetAsk":"Ask me before delivery","workCenter.deliveryTargetResponse":"Response","workCenter.deliveryTargetFiles":"Workspace files","workCenter.deliveryTargetPr":"Open a pull request","workCenter.deliveryTargetMerge":"Merge an approved pull request","workCenter.deliveryTargetHelp":"Response delivers an answer with evidence, without requiring code artifacts. Code targets still follow review and merge policy.","workCenter.deliveryInstructions":"Delivery goal","workCenter.deliveryInstructionsHint":"For example: publish a release and summarize the changes","workCenter.deliveryInstructionsHelp":"Choose a previous goal or enter a new one. This does not grant extra delivery permissions.","workCenter.attachmentsHelp":"Images, PDFs, and text files stay bound to this Work Item and are available to every Action.","workCenter.attachmentsUnsupported":"The selected Agent does not support Work Item attachments.","workCenter.addAttachments":"Add files","workCenter.attachmentsUploading":"Uploading\u2026","workCenter.attachmentsUploadFailed":"Attachment upload failed","workCenter.pendingEnvelopeLocked":"An unconfirmed request is locked to its original identity.","workCenter.replacePendingAttachments":"Replace attachments","workCenter.discardPendingEnvelope":"Discard pending request","workCenter.pendingEnvelopeChanged":"The pending request changed; reopen this Work Item and try again.","workCenter.removeAttachment":"Remove from draft","workCenter.previewAttachment":"Open attachment","workCenter.openAttachmentNamed":"Open attachment {name}","workCenter.openingAttachment":"Opening attachment\u2026","workCenter.attachmentPreviewFailed":"Could not open the attachment. Try again.","workCenter.attachmentOpenBlocked":"The browser blocked the attachment window. Allow pop-ups and try again.","workCenter.execution":"Execution","workCenter.executionHint":"Choose where and how this work item starts.","workCenter.workDir":"Working directory","workCenter.workDirHint":"Choose an existing project directory","workCenter.chooseFolder":"Choose folder","workCenter.workDirPickerHelp":"Select an existing folder on the chosen Agent.","workCenter.folderPickerHint":"Choose the project folder this Work Item can read and modify.","workCenter.folderPickerSelectionHint":"Double-click to open a folder, or select it and confirm.","workCenter.schedule":"Schedule","workCenter.scheduleStatus":"Schedule status","workCenter.scheduleEnabled":"Enabled","workCenter.scheduleDisabled":"Disabled","workCenter.scheduleRunsAt":"Scheduled for","workCenter.scheduleTriggered":"Schedule triggered","workCenter.schedulePaused":"Schedule paused","workCenter.scheduleWorkItem":"Schedule this work item","workCenter.scheduleWorkItemHint":"Keep it as a persisted draft and start it once at the selected local time.","workCenter.scheduleAt":"Start at","workCenter.enableSchedule":"Enable schedule","workCenter.disableSchedule":"Disable schedule","workCenter.startImmediately":"Start immediately","workCenter.startImmediatelyHint":"Turn this off to create a draft you can review first.","workCenter.creating":"Creating\u2026","workCenter.create":"Create","workCenter.status.draft":"draft","workCenter.status.ready":"ready","workCenter.status.running":"running","workCenter.status.waiting":"waiting","workCenter.status.needs_attention":"needs attention","workCenter.status.done":"done","workCenter.status.cancelled":"cancelled","workCenter.status.completed":"completed","workCenter.status.failed":"failed","workCenter.status.closed":"closed","workCenter.status.superseded":"superseded","workCenter.action.triage":"Triage","workCenter.action.implement":"Implement","workCenter.action.review":"Review","workCenter.action.integrate":"Integrate","workCenter.action.deliver":"Deliver","workCenter.action.test":"Test","workCenter.action.research":"Research","workCenter.action.design":"Design","workCenter.action.diagnose":"Diagnose","workCenter.action.migrate":"Migrate","workCenter.action.document":"Document","workCenter.action.operate":"Operate","workCenter.action.write":"Write","workCenter.action.create_vp":"Create VP","workCenter.action.custom":"Custom","workCenter.assignment.auto":"Use workflow policy","workCenter.model.inherit":"Use workflow model","workCenter.model.defaultProvider":"default provider","workCenter.planPreview":"Execution plan","workCenter.planPreviewHelp":"Resolved from this Agent\u2019s VP pool and model settings.","workCenter.settings.title":"Work Center settings","workCenter.settings.subtitle":"Configure the Coordinator plus reusable Action prompts, models, and effort for AI-planned work.","workCenter.settings.workflow":"Workflow","workCenter.settings.workflowHelp":"The Coordinator chooses task-specific Actions and executors dynamically.","workCenter.settings.aiWorkflowHelp":"The Coordinator creates only the next justified task-specific Actions. Built-in Action policies are reusable templates, and the Coordinator may create a precise domain type when needed.","workCenter.settings.globalInstructions":"Global Agent instructions","workCenter.settings.globalInstructionsHint":"Example: Follow the repository release policy, require independent review, and never create deployment tags without explicit approval.","workCenter.settings.globalInstructionsHelp":"Stored at Agent level and frozen into every new WorkItem. Applied to triage and every generated Action, below the WorkItem contract and system/tool safety rules. Existing WorkItems keep their original snapshot.","workCenter.settings.actionPolicies":"Built-in Action policies","workCenter.settings.actionPoliciesHelp":"These are reusable execution baselines, not a fixed workflow. Unknown domain-specific Action types use the Custom policy plus their triage-generated type and objective.","workCenter.settings.dynamicInstructionHelp":"The AI adds the WorkItem contract, global instructions, prior Action context, memory, and a task-specific objective. This prompt defines the reusable behavior for this Action type.","workCenter.settings.models":"Models","workCenter.settings.modelsHelp":"Providers and credentials stay in Agent LLM settings. Work Center only selects available models.","workCenter.settings.dynamicModelsHelp":"Choose the Coordinator model separately from the models that execute Actions.","workCenter.settings.coordinatorModel":"Coordinator","workCenter.settings.coordinatorModelHelp":"Used for Work Item conversation, goal changes, and replanning. It never executes repository tools.","workCenter.settings.allActions":"Fallback for all Actions","workCenter.settings.maxConcurrentActions":"Maximum concurrent Actions","workCenter.settings.maxConcurrentActionsHelp":"Defaults to 3. Non-Git, dirty, shared, and integration work remains serial.","workCenter.workItemType":"Type","workCenter.typeAuto":"Auto \u2014 let the LLM infer","workCenter.typeHelp":"Choose a task category, or use Auto for AI inference. AI still plans the concrete Actions.","workCenter.planning":"Planning","workCenter.aiPlan":"Coordinator-driven execution","workCenter.aiPlanHelp":"The Coordinator chooses the next Actions and executors from the current evidence instead of precomputing a workflow graph. Work Center settings control model and effort.","workCenter.settings.manageProviders":"Manage Agent models","workCenter.settings.assignment":"VP selection","workCenter.settings.assignment.auto":"Auto from all VPs","workCenter.settings.assignment.pool":"Candidate pool","workCenter.settings.assignment.fixed":"Fixed VP","workCenter.settings.capability":"Required capability","workCenter.settings.vp":"Virtual Person","workCenter.settings.poolMembers":"Candidate VPs","workCenter.settings.modelPolicy":"Model policy","workCenter.settings.model.inherit":"Inherit from VP","workCenter.settings.model.primary":"Agent primary model","workCenter.settings.model.fast":"Agent fast model","workCenter.settings.model.specific":"Specific model","workCenter.settings.model.tag":"Model tag","workCenter.settings.modelTag":"Tag","workCenter.settings.modelTag.fast":"Fast","workCenter.settings.modelTag.balanced":"Balanced","workCenter.settings.modelTag.ultimate":"Ultimate","workCenter.settings.model":"Model","workCenter.settings.effort":"Reasoning effort","workCenter.settings.effortDefault":"Model default","workCenter.settings.effortHelp":"Overrides the selected model\u2019s default reasoning effort for every Work Center Action.","workCenter.settings.effortChooseModelHelp":"Select the Agent primary model, fast model, or a specific model to configure effort. Inherit from VP uses each VP\u2019s model default.","workCenter.settings.effortUnsupportedHelp":"The selected model does not expose configurable effort, so its model default is used.","workCenter.settings.saving":"Saving\u2026","workCenter.settings.reload":"Reload settings","workCenter.settings.conflict":"Settings changed elsewhere. Reload before saving again.","workCenter.settings.upgradeRequired":"This Agent version cannot save Work Center settings. The current values are shown read-only; upgrade the Agent to edit and save them.","workCenter.settings.saveNotConfirmed":"The Agent did not confirm the submitted prompts and model policy. Settings were not closed; reload or upgrade the Agent before trying again.","workCenter.settings.addWorkflow":"Duplicate workflow","workCenter.settings.removeWorkflow":"Remove","workCenter.settings.newWorkflow":"Workflow {index}","workCenter.settings.workflowName":"Workflow name","workCenter.settings.newStage":"New stage","workCenter.settings.addStage":"Add stage","workCenter.settings.removeStage":"Remove stage","workCenter.settings.moveUp":"Move stage up","workCenter.settings.moveDown":"Move stage down","workCenter.settings.stageType":"Stage type","workCenter.settings.reviewReturnStage":"Return to stage when changes are requested","workCenter.settings.instruction":"Stage prompt","workCenter.settings.instructionHint":"Define what this stage must do.","workCenter.settings.instructionHelp":"The WorkItem goal, acceptance criteria, and reusable context are added automatically at run time.","workCenter.settings.instructionReset":"Restore default"}});function kc(){return typeof navigator>"u"||!navigator?"":navigator.userAgent||""}function pr(){let e=kc();return/Android|iPhone|iPad|iPod|Windows Phone|IEMobile|BlackBerry|Opera Mini/i.test(e)}function jo(){return/MicroMessenger/i.test(kc())}function Uo(){return/AlipayClient/i.test(kc())}var Sc=V(()=>{});var ff,hf=V(()=>{Ot();rs();Sc();ff={name:"LoginPage",template:`
|
|
17
17
|
<div class="login-page">
|
|
18
18
|
<button class="login-lang-toggle" @click="toggleLang">
|
|
19
19
|
{{ currentLocale === 'zh-CN' ? 'EN' : '\u4E2D\u6587' }}
|
|
@@ -311,34 +311,42 @@ They will restart after upgrading. {skipped} other Agent(s) will be skipped beca
|
|
|
311
311
|
<div class="folder-picker-dialog" ref="dialog" role="dialog" aria-modal="true" :aria-label="$t('modal.folderPicker.title')">
|
|
312
312
|
<header class="folder-picker-header">
|
|
313
313
|
<h3>{{ $t('modal.folderPicker.title') }}</h3>
|
|
314
|
-
<button class="btn-ghost" type="button" @click="$emit('close')" :aria-label="$t('common.close')"
|
|
314
|
+
<button class="btn btn-ghost folder-picker-icon" type="button" @click="$emit('close')" :aria-label="$t('common.close')" :title="$t('common.close')">
|
|
315
|
+
<svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" aria-hidden="true"><path d="m6 6 12 12M18 6 6 18"/></svg>
|
|
316
|
+
</button>
|
|
315
317
|
</header>
|
|
316
318
|
<div class="folder-picker-path">
|
|
317
|
-
<div class="folder-picker-navigation">
|
|
318
|
-
<button class="btn-secondary" type="button" @click="navigate('')">{{ $t('modal.folderPicker.root') }}</button>
|
|
319
|
-
<button class="btn-ghost" type="button" @click="navigate(parentPath)" :disabled="!state.path || state.path === parentPath">{{ $t('modal.folderPicker.parentDir') }}</button>
|
|
320
|
-
</div>
|
|
321
319
|
<div class="folder-picker-address">
|
|
322
|
-
<input ref="pathInput" class="folder-picker-input" type="text" :value="state.draft"
|
|
320
|
+
<input ref="pathInput" class="resume-input folder-picker-input" type="text" :value="state.draft"
|
|
323
321
|
:aria-label="$t('modal.folderPicker.path')" :placeholder="$t('modal.folderPicker.path')"
|
|
324
322
|
autocomplete="off" autocapitalize="off" spellcheck="false"
|
|
325
323
|
@input="$emit('edit-path', $event.target.value)" @keydown.enter.prevent.stop="go" />
|
|
326
|
-
<button class="btn-secondary" type="button" @click="go" :disabled="!state.draft.trim()"
|
|
324
|
+
<button class="btn btn-secondary folder-picker-icon" type="button" @click="go" :disabled="!state.draft.trim()" :aria-label="$t('modal.folderPicker.go')" :title="$t('modal.folderPicker.go')">
|
|
325
|
+
<svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14m-6-6 6 6-6 6"/></svg>
|
|
326
|
+
</button>
|
|
327
|
+
</div>
|
|
328
|
+
<div class="folder-picker-navigation">
|
|
329
|
+
<button class="btn btn-ghost folder-picker-root" type="button" @click="navigate('')">
|
|
330
|
+
<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m5 4-3 10v5a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1v-5L19 4Z"/><path d="M2 14h20M6 17h.01M10 17h.01"/></svg>
|
|
331
|
+
{{ $t('modal.folderPicker.root') }}
|
|
332
|
+
</button>
|
|
333
|
+
<button class="btn btn-ghost folder-picker-icon" type="button" @click="navigate(parentPath)" :disabled="!state.path || state.path === parentPath" :aria-label="$t('modal.folderPicker.parentDir')" :title="$t('modal.folderPicker.parentDir')">
|
|
334
|
+
<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 19V5m-6 6 6-6 6 6"/></svg>
|
|
335
|
+
</button>
|
|
336
|
+
<nav class="folder-picker-breadcrumbs" :aria-label="$t('modal.folderPicker.ancestors')">
|
|
337
|
+
<template v-for="(crumb, index) in breadcrumbs" :key="crumb.path">
|
|
338
|
+
<span v-if="index" aria-hidden="true">/</span>
|
|
339
|
+
<button class="btn btn-ghost" type="button" @click="navigate(crumb.path)" :aria-current="index === breadcrumbs.length - 1 ? 'location' : undefined" :title="crumb.path">{{ crumb.label }}</button>
|
|
340
|
+
</template>
|
|
341
|
+
</nav>
|
|
327
342
|
</div>
|
|
328
|
-
<nav class="folder-picker-breadcrumbs" :aria-label="$t('modal.folderPicker.ancestors')">
|
|
329
|
-
<template v-for="(crumb, index) in breadcrumbs" :key="crumb.path">
|
|
330
|
-
<span v-if="index" aria-hidden="true">\u203A</span>
|
|
331
|
-
<button class="btn-ghost" type="button" @click="navigate(crumb.path)" :aria-current="index === breadcrumbs.length - 1 ? 'location' : undefined" :title="crumb.path">{{ crumb.label }}</button>
|
|
332
|
-
</template>
|
|
333
|
-
<span v-if="!breadcrumbs.length">{{ state.path || $t('modal.folderPicker.root') }}</span>
|
|
334
|
-
</nav>
|
|
335
343
|
</div>
|
|
336
344
|
<div class="folder-picker-list" ref="list" tabindex="0" :aria-label="$t('modal.folderPicker.directories')" :aria-busy="state.loading" @keydown="onListKeydown">
|
|
337
345
|
<div class="folder-picker-state" v-if="state.loading" role="status"><span class="spinner-mini"></span> {{ $t('common.loading') }}</div>
|
|
338
346
|
<div class="folder-picker-state folder-picker-error" v-else-if="state.error" role="alert">
|
|
339
347
|
<span>{{ $t('modal.folderPicker.' + state.error) }}</span>
|
|
340
348
|
<span v-if="state.errorDetail" class="folder-picker-error-detail">{{ state.errorDetail }}</span>
|
|
341
|
-
<button class="btn-secondary" type="button" @click="navigate(state.path)">{{ $t('common.retry') }}</button>
|
|
349
|
+
<button class="btn btn-secondary" type="button" @click="navigate(state.path)">{{ $t('common.retry') }}</button>
|
|
342
350
|
</div>
|
|
343
351
|
<template v-else>
|
|
344
352
|
<button v-for="entry in state.entries" :key="entry.name" class="folder-picker-item" type="button" @click="enter(entry)">
|
|
@@ -351,8 +359,8 @@ They will restart after upgrading. {skipped} other Agent(s) will be skipped beca
|
|
|
351
359
|
<footer class="folder-picker-footer">
|
|
352
360
|
<p>{{ $t('modal.folderPicker.navigationHint') }}</p>
|
|
353
361
|
<div>
|
|
354
|
-
<button class="btn-secondary" type="button" @click="$emit('close')">{{ $t('common.cancel') }}</button>
|
|
355
|
-
<button class="btn-primary" type="button" @click="$emit('confirm')" :disabled="!state.canConfirm">{{ $t('modal.folderPicker.selectCurrent') }}</button>
|
|
362
|
+
<button class="btn btn-secondary" type="button" @click="$emit('close')">{{ $t('common.cancel') }}</button>
|
|
363
|
+
<button class="btn btn-primary" type="button" @click="$emit('confirm')" :disabled="!state.canConfirm">{{ $t('modal.folderPicker.selectCurrent') }}</button>
|
|
356
364
|
</div>
|
|
357
365
|
</footer>
|
|
358
366
|
</div>
|
|
@@ -6341,6 +6349,7 @@ ${String(e||"").trim()}
|
|
|
6341
6349
|
<template v-if="name === 'activity'"><rect x="3" y="4" width="18" height="16" rx="3"/><path d="M8 9h8M8 14h5"/></template>
|
|
6342
6350
|
<template v-else-if="name === 'search'"><circle cx="11" cy="11" r="7"/><path d="m20 20-3.5-3.5"/></template>
|
|
6343
6351
|
<template v-else-if="name === 'refresh'"><polyline points="23 4 23 10 17 10"/><path d="M20.49 15a9 9 0 1 1-2.12-9.36L23 10"/></template>
|
|
6352
|
+
<path v-else-if="name === 'add'" d="M12 5v14M5 12h14"/>
|
|
6344
6353
|
<path v-else-if="name === 'close'" d="m6 6 12 12M18 6 6 18"/>
|
|
6345
6354
|
<path v-else-if="name === 'chevron'" d="m9 5 7 7-7 7"/>
|
|
6346
6355
|
</g>
|
|
@@ -6768,9 +6777,9 @@ ${String(e||"").trim()}
|
|
|
6768
6777
|
</section>
|
|
6769
6778
|
</div>
|
|
6770
6779
|
</aside>
|
|
6771
|
-
`}});function Er(e){return typeof e=="string"?e.trim():""}function pC(e){try{let t=new URL(e);return t.protocol==="http:"||t.protocol==="https:"?t.href:""}catch{return""}}function Fv(e){let t=Er(e).replace(/\\/g,"/"),s=t.match(/^[A-Za-z]:/)?.[0]||"",n=t.startsWith("/")||!!s,r=t.slice(s.length).split("/"),i=[];for(let o of r)if(!(!o||o==="."))if(o===".."){if(!i.length)return"";i.pop()}else i.push(o);return`${s}${n&&!s||s?"/":""}${i.join("/")}`}function Dd(e,t){let s=Er(e?.ref);if(!s)return null;let n=pC(s);if(e?.kind==="link"||e?.kind==="pr"||n)return n?{type:"url",url:n}:null;if(e?.kind!=="file"||!/^(?:[A-Za-z]:[\\/]|[\\/])/.test(Er(t)))return null;let r=Fv(t),i=/^(?:[A-Za-z]:[\\/]|[\\/])/.test(s),o=Fv(i?s:`${r}/${s}`);if(!r||!o)return null;let a=/^[A-Za-z]:/.test(r)?r.toLowerCase():r,l=/^[A-Za-z]:/.test(o)?o.toLowerCase():o,c=a.endsWith("/")?a:`${a}/`;return l!==a&&!l.startsWith(c)?null:{type:"file",filePath:o}}function qv({agentId:e,workItem:t,routeProtocolSupported:s=!1,hasAgentCapability:n=()=>!1}={}){let r=Er(t?.id),i=Er(t?.workbench?.workDir),o={runtimeProvider:"work-center",agentId:Er(e),workItemId:r},a=lt(o),l=uC.filter(u=>!n(o.agentId,u)),c=s===!0&&!!(a&&i)&&l.length===0,d=c?Es(a,i):"";return{available:c,browserAvailable:!1,missingCapabilities:l,ownerRoute:o,ownerWorkDir:i,routeKey:a,workspaceGeneration:d,openOutput(u){if(!c)return!1;let g=Dd(u,i);return g?.type!=="file"?!1:(window.dispatchEvent(new CustomEvent("open-file-in-explorer",{detail:{filePath:g.filePath,agentId:o.agentId,conversationId:Dn(a),workbenchRoute:o,workbenchRouteKey:a,workspaceGeneration:d}})),!0)}}}var uC,Vv=V(()=>{ps();uC=Object.freeze(["workbench_session_routes","workbench_request_correlation","workbench_terminal_cleanup_fence","work_center_workbench"])});function gC(){try{let e=Number(localStorage.getItem("work-center-actions-width"));if(Number.isFinite(e)&&e>=280&&e<=1e4)return e}catch{}return 400}function Wa(e){let t=(Number(e?.workCenterUrlRestoreGeneration)||0)+1;return e&&(e.workCenterUrlRestoreGeneration=t),t}var ja,$d=V(()=>{Ii();Rr();zc();It();Va();Av();Mv();Ev();rd();na();sa();Ra();Mr();xa();$v();Ov();Vv();Ci();en();xi();Po();ja={name:"WorkCenterPage",components:{FolderPickerDialog:nn,NavigationIcon:ks,MessageComposer:ha,UserTurnBlock:yr,VpTurnBlock:vr,WorkCenterActionDetail:Iv,WorkCenterActionReference:_r,WorkCenterSettingsModal:_v,AgentSettingsPanel:Pr,ModernSelect:ws,WorkCenterResourceControl:Tv,WorkbenchPanel:Ar,PaneResizeHandle:Dv,WorkCenterSidebar:Lv},mixins:[Ko],data(){return{sidebarExpanded:window.innerWidth>1100,mobileNavigation:window.innerWidth<=1100,selectedId:null,infoTab:"requirement",workbenchExpanded:!1,selectedActionId:null,narrowPane:"items",contentPanelOpen:!1,actionsPaneWidth:gC(),contentStack:[{type:"action-list"}],staleComposerTarget:null,composerTargetValue:"coordinator",actionInputRequestGeneration:0,workCenterUrlRestoreGeneration:0,workItemMessage:"",workItemMessageQuote:null,workItemMessageAttachments:[],workItemMessageAttachmentUploadCount:0,workItemMessageAttachmentsUploading:!1,workItemMessageSending:!1,workItemMessageError:"",workItemComposerGeneration:0,preserveComposerOnEnvelopeClear:!1,detailLoading:!1,detailError:"",createOpen:!1,settingsOpen:!1,saving:!1,createGeneration:0,llmConfigOpen:!1,agentSettingsOpen:!1,agentSettingsTargetId:null,unavailableAgentStateGeneration:0,unavailableAgentStateLoading:!1,unavailableAgentStateError:"",search:"",filtersOpen:!1,headerMenuOpen:!1,boardVpId:"",boardWorkItemType:"",boardUpdatedRange:"week",mobileBoardLane:"active",deletingWorkItemIds:{},deleteWorkItemError:"",boardQueryTimer:null,actionNowMs:Date.now(),workDirTouched:!1,startTouched:!1,createAttachments:[],createAttachmentUploadCount:0,attachmentsUploading:!1,createAttachmentError:"",previewingAttachmentId:null,attachmentPreviewError:"",attachmentPreviewGeneration:0,form:{requirement:"",workDir:"",deliveryTarget:"",reuseMemory:!0,start:!0,scheduled:!1,scheduleAt:""}}},computed:{store(){return Pinia.useChatStore()},chat(){return this.store},agents(){return this.store.agents||[]},onlineAgents(){return this.agents.filter(e=>e?.online&&Array.isArray(e.capabilities)&&e.capabilities.includes("work_center"))},configurableDisabledAgents(){return this.agents.filter(e=>{let t=this.store.workCenterFeatureSettingsByAgent?.[e?.id];return e?.online&&Array.isArray(e.capabilities)&&e.capabilities.includes("work_center_feature_settings")&&!e.capabilities.includes("work_center")&&t?.loaded===!0&&!t.error&&t.enabled!==!0})},configurableUnavailableAgents(){return this.agents.filter(e=>{let t=this.store.workCenterFeatureSettingsByAgent?.[e?.id];return e?.online&&Array.isArray(e.capabilities)&&e.capabilities.includes("work_center_feature_settings")&&!e.capabilities.includes("work_center")&&t?.loaded===!0&&!t.error&&t.enabled===!0})},configurableAgentSettingsLoading(){return this.unavailableAgentStateLoading},configurableAgentSettingsFailed(){return!!this.unavailableAgentStateError},hasConfigurableOnlineAgents(){return this.agents.some(e=>e?.online&&e.capabilities?.includes("work_center_feature_settings"))},hasOnlineAgents(){return this.agents.some(e=>e?.online)},agentId(){let e=this.store.workCenterAgentId;return this.onlineAgents.some(t=>t.id===e)?e:this.onlineAgents[0]?.id||null},sidebarAgents(){return this.agents.filter(e=>e.capabilities?.includes("work_center"))},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(){let e=this.agents.find(t=>t?.id===this.agentId);return e?.capabilityMetadataProvided===!0?e.capabilities?.includes("work_item_attachments")===!0: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},workbenchContext(){return qv({agentId:this.agentId,workItem:this.narrowPane!=="items"?this.selected:null,routeProtocolSupported:this.store.workCenterWorkbenchProtocolSupported===!0&&this.store.workbenchRouteProtocolSupported===!0,hasAgentCapability:(e,t)=>this.store.hasAgentCapability(e,t)})},infoTabs(){return["requirement","progress","outputs","goals","usage"].map(e=>({id:e,label:this.$t(`workCenter.infoTab.${e}`)}))},requirementText(){return this.selected?.requirement||this.selected?.goal||""},goalProgress(){let e=this.selected?.goalProgress;return Array.isArray(e?.criteria)?e:null},finalResponses(){let e=this.selected?.finalResult?.responses;return Array.isArray(e)?e.filter(t=>typeof t?.summary=="string"&&t.summary.trim()):[]},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"},waitingPrompt(){if(this.selected?.status!=="waiting")return null;let e=this.selected.messages?.findLast(r=>r.role==="assistant"&&r.decision),t=this.selected.actions||[];if(e?.role==="assistant"&&e.decision?.kind==="request_human"){let r=t.find(i=>i.id===e.recovery?.actionId&&i.generation===e.recovery?.actionGeneration&&i.status==="waiting");return{question:e.decision.question||this.selected.waitingReason||e.text,action:r||null}}let s=t.find(r=>r.id===this.selected.currentActionId&&r.status==="waiting"),n=s?.canonicalResult?.waitingReason||this.selected.waitingReason;return n?{question:n,action:s||null}:null},replyEntryDisabled(){return this.coordinatorReadOnly||this.detailLoading||!!this.detailError||this.workItemMessageSending||this.workItemMessageAttachmentsUploading||!!this.pendingMessageEnvelope},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?ar(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:Mt(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(`
|
|
6780
|
+
`}});function Er(e){return typeof e=="string"?e.trim():""}function pC(e){try{let t=new URL(e);return t.protocol==="http:"||t.protocol==="https:"?t.href:""}catch{return""}}function Fv(e){let t=Er(e).replace(/\\/g,"/"),s=t.match(/^[A-Za-z]:/)?.[0]||"",n=t.startsWith("/")||!!s,r=t.slice(s.length).split("/"),i=[];for(let o of r)if(!(!o||o==="."))if(o===".."){if(!i.length)return"";i.pop()}else i.push(o);return`${s}${n&&!s||s?"/":""}${i.join("/")}`}function Dd(e,t){let s=Er(e?.ref);if(!s)return null;let n=pC(s);if(e?.kind==="link"||e?.kind==="pr"||n)return n?{type:"url",url:n}:null;if(e?.kind!=="file"||!/^(?:[A-Za-z]:[\\/]|[\\/])/.test(Er(t)))return null;let r=Fv(t),i=/^(?:[A-Za-z]:[\\/]|[\\/])/.test(s),o=Fv(i?s:`${r}/${s}`);if(!r||!o)return null;let a=/^[A-Za-z]:/.test(r)?r.toLowerCase():r,l=/^[A-Za-z]:/.test(o)?o.toLowerCase():o,c=a.endsWith("/")?a:`${a}/`;return l!==a&&!l.startsWith(c)?null:{type:"file",filePath:o}}function qv({agentId:e,workItem:t,routeProtocolSupported:s=!1,hasAgentCapability:n=()=>!1}={}){let r=Er(t?.id),i=Er(t?.workbench?.workDir),o={runtimeProvider:"work-center",agentId:Er(e),workItemId:r},a=lt(o),l=uC.filter(u=>!n(o.agentId,u)),c=s===!0&&!!(a&&i)&&l.length===0,d=c?Es(a,i):"";return{available:c,browserAvailable:!1,missingCapabilities:l,ownerRoute:o,ownerWorkDir:i,routeKey:a,workspaceGeneration:d,openOutput(u){if(!c)return!1;let g=Dd(u,i);return g?.type!=="file"?!1:(window.dispatchEvent(new CustomEvent("open-file-in-explorer",{detail:{filePath:g.filePath,agentId:o.agentId,conversationId:Dn(a),workbenchRoute:o,workbenchRouteKey:a,workspaceGeneration:d}})),!0)}}}var uC,Vv=V(()=>{ps();uC=Object.freeze(["workbench_session_routes","workbench_request_correlation","workbench_terminal_cleanup_fence","work_center_workbench"])});function gC(){try{let e=Number(localStorage.getItem("work-center-actions-width"));if(Number.isFinite(e)&&e>=280&&e<=1e4)return e}catch{}return 400}function Wa(e){let t=(Number(e?.workCenterUrlRestoreGeneration)||0)+1;return e&&(e.workCenterUrlRestoreGeneration=t),t}var ja,$d=V(()=>{Ii();Rr();zc();It();Va();Av();Mv();Ev();rd();na();sa();Ra();Mr();xa();$v();Ov();Vv();Ci();en();xi();Po();ja={name:"WorkCenterPage",components:{FolderPickerDialog:nn,NavigationIcon:ks,MessageComposer:ha,UserTurnBlock:yr,VpTurnBlock:vr,WorkCenterActionDetail:Iv,WorkCenterActionReference:_r,WorkCenterSettingsModal:_v,AgentSettingsPanel:Pr,ModernSelect:ws,WorkCenterResourceControl:Tv,WorkbenchPanel:Ar,PaneResizeHandle:Dv,WorkCenterSidebar:Lv},mixins:[Ko],data(){return{sidebarExpanded:window.innerWidth>1100,mobileNavigation:window.innerWidth<=1100,selectedId:null,infoTab:"requirement",workbenchExpanded:!1,selectedActionId:null,narrowPane:"items",contentPanelOpen:!1,actionsPaneWidth:gC(),contentStack:[{type:"action-list"}],staleComposerTarget:null,composerTargetValue:"coordinator",actionInputRequestGeneration:0,workCenterUrlRestoreGeneration:0,workItemMessage:"",workItemMessageQuote:null,workItemMessageAttachments:[],workItemMessageAttachmentUploadCount:0,workItemMessageAttachmentsUploading:!1,workItemMessageSending:!1,workItemMessageError:"",workItemComposerGeneration:0,preserveComposerOnEnvelopeClear:!1,detailLoading:!1,detailError:"",createOpen:!1,settingsOpen:!1,saving:!1,createGeneration:0,llmConfigOpen:!1,agentSettingsOpen:!1,agentSettingsTargetId:null,unavailableAgentStateGeneration:0,unavailableAgentStateLoading:!1,unavailableAgentStateError:"",search:"",filtersOpen:!1,headerMenuOpen:!1,boardVpId:"",boardWorkItemType:"",boardUpdatedRange:"week",mobileBoardLane:"active",deletingWorkItemIds:{},deleteWorkItemError:"",boardQueryTimer:null,actionNowMs:Date.now(),workDirTouched:!1,startTouched:!1,createAttachments:[],createAttachmentUploadCount:0,attachmentsUploading:!1,createAttachmentError:"",deliveryInstructionOptions:[],deliveryInstructionsGeneration:0,previewingAttachmentId:null,attachmentPreviewError:"",attachmentPreviewGeneration:0,form:{requirement:"",workDir:"",deliveryTarget:"",deliveryInstructions:"",reuseMemory:!0,start:!0,scheduled:!1,scheduleAt:""}}},computed:{store(){return Pinia.useChatStore()},chat(){return this.store},agents(){return this.store.agents||[]},onlineAgents(){return this.agents.filter(e=>e?.online&&Array.isArray(e.capabilities)&&e.capabilities.includes("work_center"))},configurableDisabledAgents(){return this.agents.filter(e=>{let t=this.store.workCenterFeatureSettingsByAgent?.[e?.id];return e?.online&&Array.isArray(e.capabilities)&&e.capabilities.includes("work_center_feature_settings")&&!e.capabilities.includes("work_center")&&t?.loaded===!0&&!t.error&&t.enabled!==!0})},configurableUnavailableAgents(){return this.agents.filter(e=>{let t=this.store.workCenterFeatureSettingsByAgent?.[e?.id];return e?.online&&Array.isArray(e.capabilities)&&e.capabilities.includes("work_center_feature_settings")&&!e.capabilities.includes("work_center")&&t?.loaded===!0&&!t.error&&t.enabled===!0})},configurableAgentSettingsLoading(){return this.unavailableAgentStateLoading},configurableAgentSettingsFailed(){return!!this.unavailableAgentStateError},hasConfigurableOnlineAgents(){return this.agents.some(e=>e?.online&&e.capabilities?.includes("work_center_feature_settings"))},hasOnlineAgents(){return this.agents.some(e=>e?.online)},agentId(){let e=this.store.workCenterAgentId;return this.onlineAgents.some(t=>t.id===e)?e:this.onlineAgents[0]?.id||null},sidebarAgents(){return this.agents.filter(e=>e.capabilities?.includes("work_center"))},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(){let e=this.agents.find(t=>t?.id===this.agentId);return e?.capabilityMetadataProvided===!0?e.capabilities?.includes("work_item_attachments")===!0: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},workbenchContext(){return qv({agentId:this.agentId,workItem:this.narrowPane!=="items"?this.selected:null,routeProtocolSupported:this.store.workCenterWorkbenchProtocolSupported===!0&&this.store.workbenchRouteProtocolSupported===!0,hasAgentCapability:(e,t)=>this.store.hasAgentCapability(e,t)})},infoTabs(){return["requirement","progress","outputs","goals","usage"].map(e=>({id:e,label:this.$t(`workCenter.infoTab.${e}`)}))},requirementText(){return this.selected?.requirement||this.selected?.goal||""},goalProgress(){let e=this.selected?.goalProgress;return Array.isArray(e?.criteria)?e:null},finalResponses(){let e=this.selected?.finalResult?.responses;return Array.isArray(e)?e.filter(t=>typeof t?.summary=="string"&&t.summary.trim()):[]},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"},waitingPrompt(){if(this.selected?.status!=="waiting")return null;let e=this.selected.messages?.findLast(r=>r.role==="assistant"&&r.decision),t=this.selected.actions||[];if(e?.role==="assistant"&&e.decision?.kind==="request_human"){let r=t.find(i=>i.id===e.recovery?.actionId&&i.generation===e.recovery?.actionGeneration&&i.status==="waiting");return{question:e.decision.question||this.selected.waitingReason||e.text,action:r||null}}let s=t.find(r=>r.id===this.selected.currentActionId&&r.status==="waiting"),n=s?.canonicalResult?.waitingReason||this.selected.waitingReason;return n?{question:n,action:s||null}:null},replyEntryDisabled(){return this.coordinatorReadOnly||this.detailLoading||!!this.detailError||this.workItemMessageSending||this.workItemMessageAttachmentsUploading||!!this.pendingMessageEnvelope},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?ar(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:Mt(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(`
|
|
6772
6781
|
|
|
6773
|
-
`),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=ui(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 ui(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:[];return Ul(e)},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:{selectedId(){this.infoTab="requirement"},"workbenchContext.workspaceGeneration"(){this.workbenchExpanded=!1},agents:{immediate:!0,deep:!0,handler(){this.loadUnavailableAgentStates()}},agentId:{immediate:!0,handler(e,t){if(Wa(this),this.createGeneration=(Number(this.createGeneration)||0)+1,this.createAttachmentUploadCount=0,this.attachmentsUploading=!1,this.saving=!1,this.selectedId=null,this.selectedActionId=null,this.contentPanelOpen=!1,this.resetWorkItemComposer?.(),this.resetContentStack?.(),this.composerTargetValue="coordinator",this.narrowPane="items",this.filtersOpen=!1,this.headerMenuOpen=!1,this.previewingAttachmentId=null,this.attachmentPreviewError="",this.attachmentPreviewGeneration=(Number(this.attachmentPreviewGeneration)||0)+1,t&&e!==t&&(this.closeFolderPicker(),this.resetCreateExecutionContext(e)),this.store.workCenterAgentId!==e){this.store.enterWorkCenter(e);return}e&&((typeof this.boardFilters=="function"?this.store.listWorkItems(e,this.boardFilters()):this.store.listWorkItems(e)).catch(()=>{}),this.store.loadWorkCenterSettings(e).catch(()=>{}))}},actionsPaneWidth(e){try{localStorage.setItem("work-center-actions-width",String(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(){Wa(this),this.createGeneration=(Number(this.createGeneration)||0)+1,this.workItemComposerGeneration+=1,this.unavailableAgentStateGeneration+=1,this.boardQueryTimer&&clearTimeout(this.boardQueryTimer),clearInterval(this.actionClockTimer),window.removeEventListener("popstate",this.restoreWorkCenterUrl),document.removeEventListener("click",this.closeHeaderPopovers),this.navigationMedia?.removeEventListener("change",this.onNavigationResize)},mounted(){this.actionClockTimer=setInterval(()=>{this.actionNowMs=Date.now()},1e3),this.returnFocusElement=document.activeElement,this.navigationMedia=window.matchMedia("(max-width: 1100px)"),this.navigationMedia.addEventListener("change",this.onNavigationResize),this.$nextTick(()=>this.focusNavigationReturn()),window.addEventListener("popstate",this.restoreWorkCenterUrl),document.addEventListener("click",this.closeHeaderPopovers),this.restoreWorkCenterUrl();let e=this.store.workCenterCreateDraft;e&&(this.form={requirement:e.requirement||e.goal||e.title||"",workDir:e.workDir||"",deliveryTarget:e.deliveryTarget||"",reuseMemory:!0,start:this.settings?.startImmediately!==!1},this.createOpen=!0,this.workDirTouched=!!String(e.workDir||"").trim(),this.startTouched=!1,this.applyCreateDefaults())},methods:{selectInfoTab(e){this.infoTab=e,this.$nextTick(()=>{let t=this.$refs.shell?.querySelector(`#work-item-info-panel-${e}`);t&&(t.scrollTop=0)})},onInfoTabKeydown(e,t){let s=this.infoTabs.map(r=>r.id),n=s.indexOf(t);if(e.key==="ArrowRight")n=(n+1)%s.length;else if(e.key==="ArrowLeft")n=(n+s.length-1)%s.length;else if(e.key==="Home")n=0;else if(e.key==="End")n=s.length-1;else return;e.preventDefault(),this.selectInfoTab(s[n]),this.$nextTick(()=>this.$refs.shell?.querySelector(`#work-item-info-tab-${s[n]}`)?.focus())},onNavigationResize(e){this.mobileNavigation=e.matches,this.sidebarExpanded=!e.matches},toggleNavigation(){this.sidebarExpanded=!this.sidebarExpanded,this.$nextTick(()=>this.sidebarExpanded&&this.mobileNavigation?this.$refs.navigation?.focusReturn():this.focusNavigationReturn())},focusNavigationReturn(){this.mobileNavigation?[...this.$refs.header?.querySelectorAll(".work-center-navigation-toggle")||[]].find(e=>e.getClientRects().length)?.focus({preventScroll:!0}):this.$refs.navigation?.focusReturn()},async selectActivity({item:e,actionId:t}){let s=this.agentId;if(await this.selectItem(e),!(this.agentId!==s||this.selectedId!==e.id||this.detailError)&&t){let n=this.selected?.actions?.find(r=>r.id===t);n&&this.selectAction(n)}},toggleWorkbench(){this.$refs.workbench?.toggle()},canOpenOutput(e){return this.workbenchContext.available&&this.store.hasAgentCapability(this.agentId,"file_editor")&&Dd(e,this.workbenchContext.ownerWorkDir)?.type==="file"},openOutput(e){this.canOpenOutput(e)&&this.workbenchContext.openOutput(e)},closeHeaderPopovers(e){e?.target?.closest?.(".work-center-filter-menu, .work-center-search")||(this.filtersOpen=!1),e?.target?.closest?.(".work-center-header-menu")||(this.headerMenuOpen=!1)},backToChat(){this.store.leaveWorkCenter(),this.$nextTick(()=>{let e=this.returnFocusElement,t=n=>n?.isConnected&&n.getClientRects().length&&getComputedStyle(n).visibility!=="hidden"&&n.getBoundingClientRect().right>0;(t(e)&&e!==document.body?e:[...document.querySelectorAll(".sidebar-work-center-trigger, .header-sidebar-toggle, .yeaft-topbar-sidebar-toggle")].find(t))?.focus({preventScroll:!0})})},tr(e,t){let s=this.$t?this.$t(e):e;return s&&s!==e?s:t},async loadUnavailableAgentStates(){let e=++this.unavailableAgentStateGeneration,t=this.agents.filter(r=>r?.online&&r.capabilities?.includes("work_center_feature_settings")&&!r.capabilities.includes("work_center")&&(this.store.workCenterFeatureSettingsByAgent?.[r.id]?.loaded!==!0||this.store.workCenterFeatureSettingsByAgent?.[r.id]?.error));if(this.unavailableAgentStateLoading=t.length>0,this.unavailableAgentStateError="",t.length===0)return;let s=await Promise.allSettled(t.map(r=>this.store.loadWorkCenterFeatureSettings(r.id)));if(e!==this.unavailableAgentStateGeneration)return;let n=s.filter(r=>r.status==="rejected");this.unavailableAgentStateError=n.length?n[0].reason?.message||this.tr("workCenter.agentStatusLoadFailed","Could not check Work Center status."):"",this.unavailableAgentStateLoading=!1},openWorkCenterAgentSettings(){let e=this.configurableDisabledAgents[0]||this.configurableUnavailableAgents[0]||this.agents.find(t=>t?.online)||null;this.agentSettingsTargetId=e?.id||null,this.agentSettingsOpen=!0},closeWorkCenterAgentSettings({focusBack:e=!1}={}){this.agentSettingsOpen=!1,e&&this.$nextTick(()=>this.focusNavigationReturn())},selectWorkCenterAgent(e){if(this.mobileNavigation&&(this.sidebarExpanded=!1),!e||e===this.agentId){this.showItemsPane();return}this.saveComposerDraft(),this.showItemsPane(),this.store.enterWorkCenter(e)},statusLabel(e){return this.tr(`workCenter.status.${e}`,String(e||"").replace("_"," "))},goalStatusLabel(e){return this.tr(`workCenter.goalStatus.${e}`,this.statusLabel(e))},deliveryTargetLabel(e){let t={response:"Response",workspace_files:"Files",pull_request:"Pr",merge:"Merge"};return t[e]?this.tr(`workCenter.deliveryTarget${t[e]}`,e):e||this.tr("workCenter.deliveryTargetAsk","Ask me before delivery")},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){if(this.coordinatorReadOnly)return;let t=Mt(e);t&&(this.workItemMessageQuote=t,this.saveComposerDraft(),this.$nextTick(()=>this.$refs.workItemComposer?.getTextarea?.()?.focus?.()))},removeWorkItemMessageQuote(){this.workItemMessageQuote=null,this.saveComposerDraft()},editWorkItemMessageAsNew(e){this.coordinatorReadOnly||(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})},actionDuration(e){let t=e?.executionDurationMs;if(!Number.isFinite(t)||t<0)return"\u2014";let s=e.executionStartedAt,n=e.status==="running"&&Number.isFinite(s)&&s>0?Math.max(0,this.actionNowMs-s):0;return _i(t+n)||"\u2014"},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.agentId?this.store.listWorkItems(this.agentId,this.boardFilters()).catch(()=>{}):Promise.resolve([])},refreshWorkCenterRuntime(e){if(!(!e||e!==this.agentId))return this.store.refreshWorkCenterRuntime(e).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(),this.$nextTick(()=>{this.$refs.actionsButton?.getClientRects().length||this.$refs.contentClose?.focus({preventScroll:!0})})},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){Wa(this);let t=new URL(window.location.href);this.selectedId?(t.searchParams.set("workAgentId",this.agentId||""),t.searchParams.set("workItemId",this.selectedId),t.searchParams.set("workContent",this.contentPanelOpen?this.contentStackParam():"none")):(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=Wa(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?(this.$refs.shell?.clientWidth||window.innerWidth)>900:t.content!=="none",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.workItemMessageAttachmentUploadCount=0,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=Mt(s?.quote),this.workItemMessageAttachments=[...s?.attachments||[]],this.composerTargetValue=this.targetValue(s?.target),this.workItemMessageError=s?.error||"",this.staleComposerTarget=null,this.workItemMessageSending=!1,this.workItemMessageAttachmentUploadCount=0,this.workItemMessageAttachmentsUploading=!1,this.workItemComposerGeneration+=1},openWorkItem(e,{syncUrl:t=!0,contentRefs:s=[{type:"action-list"}],contentOpen:n=(this.$refs.shell?.clientWidth||window.innerWidth)>900}={}){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.mobileNavigation&&(this.sidebarExpanded=!1),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),this.$nextTick(()=>this.$refs.actionBack?.focus({preventScroll:!0}))},loadLatestActionMessages(e=this.selectedAction){if(!this.selected?.id||!e?.id||Array.isArray(e.messages))return null;let t=ar(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(),this.$nextTick(()=>this.$refs.contentClose?.focus({preventScroll:!0}))},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))},replyToWaitingPrompt(e=null){this.replyEntryDisabled||e&&!this.canMessageAction(e)||!e&&this.coordinatorThinking||(this.composerTargetValue=e?`action:${e.id}:${e.generation}`:"coordinator",this.staleComposerTarget=null,this.workItemMessageError="",this.saveComposerDraft(),(this.$refs.shell?.clientWidth||window.innerWidth)<=900&&this.closeContentPanel(),this.$nextTick(()=>{let t=this.$refs.workItemComposer?.getTextarea?.();t?.scrollIntoView?.({block:"nearest"}),t?.focus?.()}))},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:"",deliveryTarget:s.deliveryTarget||"",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},onCreateScheduledInput(){if(this.form.scheduled&&(this.form.start=!1,this.startTouched=!0,!this.form.scheduleAt)){let e=new Date(Date.now()+36e5);e.setSeconds(0,0);let t=new Date(e.getTime()-e.getTimezoneOffset()*60*1e3);this.form.scheduleAt=t.toISOString().slice(0,16)}},async setSelectedScheduleEnabled(e){let t=this.selected?.schedule;!this.selected||!t||this.selected.status!=="draft"||await this.store.updateWorkItemSchedule(this.selected.id,{scheduledFor:t.scheduledFor,enabled:e},this.agentId)},clipboardFiles(e){return Array.from(e?.clipboardData?.items||[]).filter(t=>t?.kind==="file").map(t=>t.getAsFile?.()).filter(Boolean)},clipboardIncludesText(e){return Array.from(e?.clipboardData?.types||[]).some(t=>String(t).toLowerCase().startsWith("text/"))},attachmentUploadName(e,t){let s=String(e?.name||"").trim();if(s)return s;let n={"image/png":".png","image/jpeg":".jpg","image/gif":".gif","image/webp":".webp","application/pdf":".pdf","application/json":".json","text/plain":".txt"};return`${String(e?.type||"").startsWith("image/")?"pasted-image":"pasted-file"}-${Date.now()}-${t+1}${n[e?.type]||""}`},async uploadPendingAttachments(e){let t=new FormData;e.forEach((a,l)=>{t.append("files",a,this.attachmentUploadName(a,l))});let s=Pinia.useAuthStore(),n=s.getActiveToken?.()||s.token||null,r=n?{Authorization:`Bearer ${n}`}:{},i=await fetch("/api/upload",{method:"POST",headers:r,body:t});if(!i.ok)throw new Error(this.tr("workCenter.attachmentsUploadFailed","Attachment upload failed"));let o=await i.json();return Array.isArray(o.files)?o.files:[]},async addCreateAttachments(e){if(!this.workItemAttachmentsSupported){this.createAttachmentError=this.tr("workCenter.attachmentsUnsupported","The selected Agent does not support Work Item attachments.");return}let t=Math.max(0,10-this.createAttachments.length),s=Array.from(e||[]).slice(0,t);if(s.length===0)return;let n=this.createGeneration;this.createAttachmentUploadCount+=1,this.attachmentsUploading=!0,this.createAttachmentError="";try{let r=await this.uploadPendingAttachments(s);if(!this.createOpen||this.createGeneration!==n)return;this.createAttachments=[...this.createAttachments,...r].slice(0,10)}catch(r){this.createOpen&&this.createGeneration===n&&(this.createAttachmentError=r?.message||String(r))}finally{this.createGeneration===n&&(this.createAttachmentUploadCount=Math.max(0,this.createAttachmentUploadCount-1),this.attachmentsUploading=this.createAttachmentUploadCount>0)}},async onCreateAttachmentInput(e){let t=Array.from(e.target.files||[]);e.target.value="",await this.addCreateAttachments(t)},async onCreateRequirementPaste(e){let t=this.clipboardFiles(e);t.length!==0&&(this.clipboardIncludesText(e)||e.preventDefault(),await this.addCreateAttachments(t))},removeCreateAttachment(e){this.createAttachments=this.createAttachments.filter((t,s)=>s!==e)},discardPendingMessageEnvelope(){this.clearPendingMessageEnvelope()&&this.saveComposerDraft()},async addWorkItemMessageAttachments(e){if(!this.workItemAttachmentsSupported){this.workItemMessageError=this.tr("workCenter.attachmentsUnsupported","The selected Agent does not support Work Item attachments.");return}if(!e.length)return;let t=this.workItemComposerScope;if(!t)return;let s=this.pendingEnvelopeAttachmentRecovery,n=Array.isArray(this.selected?.attachments)?this.selected.attachments.length:0,r=Math.max(0,10-n-(s?0:this.workItemMessageAttachments.length)),i=Array.from(e).slice(0,r);if(i.length===0)return;let o=this.workItemComposerGeneration;this.workItemMessageAttachmentUploadCount+=1,this.workItemMessageAttachmentsUploading=!0,this.workItemMessageError="";try{let a=(await this.uploadPendingAttachments(i)).slice(0,Math.max(0,10-n));if(this.workItemComposerScope!==t||this.workItemComposerGeneration!==o)return;if(s){let l=this.store.replaceWorkCenterMessageEnvelopeAttachments(this.agentId,this.selectedId,a);if(!l)throw new Error(this.tr("workCenter.pendingEnvelopeChanged","The pending request changed; reopen this Work Item and try again."));this.workItemMessageAttachments=[...l.attachments],this.workItemMessageError=""}else this.workItemMessageAttachments=[...this.workItemMessageAttachments,...a].slice(0,Math.max(0,10-n)),this.saveComposerDraft()}catch(a){this.workItemComposerScope===t&&this.workItemComposerGeneration===o&&(this.workItemMessageError=a?.message||String(a))}finally{this.workItemComposerScope===t&&this.workItemComposerGeneration===o&&(this.workItemMessageAttachmentUploadCount=Math.max(0,this.workItemMessageAttachmentUploadCount-1),this.workItemMessageAttachmentsUploading=this.workItemMessageAttachmentUploadCount>0)}},async onWorkItemMessageAttachmentInput(e){let t=Array.from(e.target.files||[]);e.target.value="",await this.addWorkItemMessageAttachments(t)},async onWorkItemMessagePaste(e){let t=this.clipboardFiles(e);t.length!==0&&(this.clipboardIncludesText(e)||e.preventDefault(),await this.addWorkItemMessageAttachments(t))},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?Fs(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)}},isExternalOutput(e){return["link","pr"].includes(e?.kind)&&/^https?:\/\//i.test(String(e?.ref||""))},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.createGeneration=(Number(this.createGeneration)||0)+1,this.createAttachmentUploadCount=0,this.attachmentsUploading=!1,this.createOpen=!0,this.workDirTouched=!1,this.startTouched=!1,this.createAttachmentError="",this.applyCreateDefaults()},closeCreate(){this.saving||(this.createGeneration=(Number(this.createGeneration)||0)+1,this.createAttachmentUploadCount=0,this.attachmentsUploading=!1,this.closeFolderPicker(),this.createOpen=!1,this.createAttachments=[],this.createAttachmentError="",this.store.workCenterCreateDraft=null)},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.replace(/\s+/g," ").slice(0,80),titleSource:"coordinator_pending",goal:e,acceptanceCriteria:[],workItemType:"auto",workDir:this.form.workDir.trim(),deliveryTarget:this.form.deliveryTarget||null,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.scheduled?!1:this.form.start,scheduledFor:this.form.scheduled?new Date(this.form.scheduleAt).getTime():null},t);if(this.agentId!==t||this.createGeneration!==s)return;this.openWorkItem(i.id),this.form={requirement:"",workDir:"",deliveryTarget:"",reuseMemory:!0,start:this.settings?.startImmediately!==!1,scheduled:!1,scheduleAt:""},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=Mt(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){if(this.workItemComposerScope===e&&this.actionInputRequestGeneration===l)if(c?.code==="WORK_CENTER_INPUT_STALE"){if(this.clearPendingMessageEnvelope({preserveAttachments:!0}),await this.$nextTick(),this.workItemComposerScope!==e)return;this.workItemMessageError=this.$t("workCenter.inputStale"),this.saveComposerDraft(),this.store.getWorkItem(n,this.agentId).catch(()=>{})}else 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(await We(t,{destructive:!0})){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?");await We(e,{destructive:!0})&&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,this.selected.executionControl?.revision)}},template:`
|
|
6782
|
+
`),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=ui(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 ui(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:[];return Ul(e)},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:{selectedId(){this.infoTab="requirement"},"workbenchContext.workspaceGeneration"(){this.workbenchExpanded=!1},agents:{immediate:!0,deep:!0,handler(){this.loadUnavailableAgentStates()}},agentId:{immediate:!0,handler(e,t){if(Wa(this),this.createGeneration=(Number(this.createGeneration)||0)+1,this.createAttachmentUploadCount=0,this.attachmentsUploading=!1,this.deliveryInstructionOptions=[],this.deliveryInstructionsGeneration+=1,this.saving=!1,this.selectedId=null,this.selectedActionId=null,this.contentPanelOpen=!1,this.resetWorkItemComposer?.(),this.resetContentStack?.(),this.composerTargetValue="coordinator",this.narrowPane="items",this.filtersOpen=!1,this.headerMenuOpen=!1,this.previewingAttachmentId=null,this.attachmentPreviewError="",this.attachmentPreviewGeneration=(Number(this.attachmentPreviewGeneration)||0)+1,t&&e!==t&&(this.closeFolderPicker(),this.resetCreateExecutionContext(e)),this.store.workCenterAgentId!==e){this.store.enterWorkCenter(e);return}e&&((typeof this.boardFilters=="function"?this.store.listWorkItems(e,this.boardFilters()):this.store.listWorkItems(e)).catch(()=>{}),this.store.loadWorkCenterSettings(e).catch(()=>{}),this.createOpen&&this.loadDeliveryInstructionOptions())}},actionsPaneWidth(e){try{localStorage.setItem("work-center-actions-width",String(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(){Wa(this),this.createGeneration=(Number(this.createGeneration)||0)+1,this.workItemComposerGeneration+=1,this.unavailableAgentStateGeneration+=1,this.deliveryInstructionsGeneration+=1,this.boardQueryTimer&&clearTimeout(this.boardQueryTimer),clearInterval(this.actionClockTimer),window.removeEventListener("popstate",this.restoreWorkCenterUrl),document.removeEventListener("click",this.closeHeaderPopovers),this.navigationMedia?.removeEventListener("change",this.onNavigationResize)},mounted(){this.actionClockTimer=setInterval(()=>{this.actionNowMs=Date.now()},1e3),this.returnFocusElement=document.activeElement,this.navigationMedia=window.matchMedia("(max-width: 1100px)"),this.navigationMedia.addEventListener("change",this.onNavigationResize),this.$nextTick(()=>this.focusNavigationReturn()),window.addEventListener("popstate",this.restoreWorkCenterUrl),document.addEventListener("click",this.closeHeaderPopovers),this.restoreWorkCenterUrl();let e=this.store.workCenterCreateDraft;e&&(this.form={requirement:e.requirement||e.goal||e.title||"",workDir:e.workDir||"",deliveryTarget:e.deliveryTarget||"",deliveryInstructions:e.deliveryInstructions||"",reuseMemory:!0,start:this.settings?.startImmediately!==!1},this.createOpen=!0,this.workDirTouched=!!String(e.workDir||"").trim(),this.startTouched=!1,this.applyCreateDefaults())},methods:{selectInfoTab(e){this.infoTab=e,this.$nextTick(()=>{let t=this.$refs.shell?.querySelector(`#work-item-info-panel-${e}`);t&&(t.scrollTop=0)})},onInfoTabKeydown(e,t){let s=this.infoTabs.map(r=>r.id),n=s.indexOf(t);if(e.key==="ArrowRight")n=(n+1)%s.length;else if(e.key==="ArrowLeft")n=(n+s.length-1)%s.length;else if(e.key==="Home")n=0;else if(e.key==="End")n=s.length-1;else return;e.preventDefault(),this.selectInfoTab(s[n]),this.$nextTick(()=>this.$refs.shell?.querySelector(`#work-item-info-tab-${s[n]}`)?.focus())},onNavigationResize(e){this.mobileNavigation=e.matches,this.sidebarExpanded=!e.matches},toggleNavigation(){this.sidebarExpanded=!this.sidebarExpanded,this.$nextTick(()=>this.sidebarExpanded&&this.mobileNavigation?this.$refs.navigation?.focusReturn():this.focusNavigationReturn())},focusNavigationReturn(){this.mobileNavigation?[...this.$refs.header?.querySelectorAll(".work-center-navigation-toggle")||[]].find(e=>e.getClientRects().length)?.focus({preventScroll:!0}):this.$refs.navigation?.focusReturn()},async selectActivity({item:e,actionId:t}){let s=this.agentId;if(await this.selectItem(e),!(this.agentId!==s||this.selectedId!==e.id||this.detailError)&&t){let n=this.selected?.actions?.find(r=>r.id===t);n&&this.selectAction(n)}},toggleWorkbench(){this.$refs.workbench?.toggle()},canOpenOutput(e){return this.workbenchContext.available&&this.store.hasAgentCapability(this.agentId,"file_editor")&&Dd(e,this.workbenchContext.ownerWorkDir)?.type==="file"},openOutput(e){this.canOpenOutput(e)&&this.workbenchContext.openOutput(e)},closeHeaderPopovers(e){e?.target?.closest?.(".work-center-filter-menu, .work-center-search")||(this.filtersOpen=!1),e?.target?.closest?.(".work-center-header-menu")||(this.headerMenuOpen=!1)},backToChat(){this.store.leaveWorkCenter(),this.$nextTick(()=>{let e=this.returnFocusElement,t=n=>n?.isConnected&&n.getClientRects().length&&getComputedStyle(n).visibility!=="hidden"&&n.getBoundingClientRect().right>0;(t(e)&&e!==document.body?e:[...document.querySelectorAll(".sidebar-work-center-trigger, .header-sidebar-toggle, .yeaft-topbar-sidebar-toggle")].find(t))?.focus({preventScroll:!0})})},tr(e,t){let s=this.$t?this.$t(e):e;return s&&s!==e?s:t},async loadUnavailableAgentStates(){let e=++this.unavailableAgentStateGeneration,t=this.agents.filter(r=>r?.online&&r.capabilities?.includes("work_center_feature_settings")&&!r.capabilities.includes("work_center")&&(this.store.workCenterFeatureSettingsByAgent?.[r.id]?.loaded!==!0||this.store.workCenterFeatureSettingsByAgent?.[r.id]?.error));if(this.unavailableAgentStateLoading=t.length>0,this.unavailableAgentStateError="",t.length===0)return;let s=await Promise.allSettled(t.map(r=>this.store.loadWorkCenterFeatureSettings(r.id)));if(e!==this.unavailableAgentStateGeneration)return;let n=s.filter(r=>r.status==="rejected");this.unavailableAgentStateError=n.length?n[0].reason?.message||this.tr("workCenter.agentStatusLoadFailed","Could not check Work Center status."):"",this.unavailableAgentStateLoading=!1},openWorkCenterAgentSettings(){let e=this.configurableDisabledAgents[0]||this.configurableUnavailableAgents[0]||this.agents.find(t=>t?.online)||null;this.agentSettingsTargetId=e?.id||null,this.agentSettingsOpen=!0},closeWorkCenterAgentSettings({focusBack:e=!1}={}){this.agentSettingsOpen=!1,e&&this.$nextTick(()=>this.focusNavigationReturn())},selectWorkCenterAgent(e){if(this.mobileNavigation&&(this.sidebarExpanded=!1),!e||e===this.agentId){this.showItemsPane();return}this.saveComposerDraft(),this.showItemsPane(),this.store.enterWorkCenter(e)},statusLabel(e){return this.tr(`workCenter.status.${e}`,String(e||"").replace("_"," "))},goalStatusLabel(e){return this.tr(`workCenter.goalStatus.${e}`,this.statusLabel(e))},deliveryTargetLabel(e){let t={response:"Response",workspace_files:"Files",pull_request:"Pr",merge:"Merge"};return t[e]?this.tr(`workCenter.deliveryTarget${t[e]}`,e):e||this.tr("workCenter.deliveryTargetAsk","Ask me before delivery")},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){if(this.coordinatorReadOnly)return;let t=Mt(e);t&&(this.workItemMessageQuote=t,this.saveComposerDraft(),this.$nextTick(()=>this.$refs.workItemComposer?.getTextarea?.()?.focus?.()))},removeWorkItemMessageQuote(){this.workItemMessageQuote=null,this.saveComposerDraft()},editWorkItemMessageAsNew(e){this.coordinatorReadOnly||(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})},actionDuration(e){let t=e?.executionDurationMs;if(!Number.isFinite(t)||t<0)return"\u2014";let s=e.executionStartedAt,n=e.status==="running"&&Number.isFinite(s)&&s>0?Math.max(0,this.actionNowMs-s):0;return _i(t+n)||"\u2014"},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.agentId?this.store.listWorkItems(this.agentId,this.boardFilters()).catch(()=>{}):Promise.resolve([])},refreshWorkCenterRuntime(e){if(!(!e||e!==this.agentId))return this.store.refreshWorkCenterRuntime(e).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(),this.$nextTick(()=>{this.$refs.actionsButton?.getClientRects().length||this.$refs.contentClose?.focus({preventScroll:!0})})},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){Wa(this);let t=new URL(window.location.href);this.selectedId?(t.searchParams.set("workAgentId",this.agentId||""),t.searchParams.set("workItemId",this.selectedId),t.searchParams.set("workContent",this.contentPanelOpen?this.contentStackParam():"none")):(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=Wa(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?(this.$refs.shell?.clientWidth||window.innerWidth)>900:t.content!=="none",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.workItemMessageAttachmentUploadCount=0,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=Mt(s?.quote),this.workItemMessageAttachments=[...s?.attachments||[]],this.composerTargetValue=this.targetValue(s?.target),this.workItemMessageError=s?.error||"",this.staleComposerTarget=null,this.workItemMessageSending=!1,this.workItemMessageAttachmentUploadCount=0,this.workItemMessageAttachmentsUploading=!1,this.workItemComposerGeneration+=1},openWorkItem(e,{syncUrl:t=!0,contentRefs:s=[{type:"action-list"}],contentOpen:n=(this.$refs.shell?.clientWidth||window.innerWidth)>900}={}){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.mobileNavigation&&(this.sidebarExpanded=!1),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),this.$nextTick(()=>this.$refs.actionBack?.focus({preventScroll:!0}))},loadLatestActionMessages(e=this.selectedAction){if(!this.selected?.id||!e?.id||Array.isArray(e.messages))return null;let t=ar(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(),this.$nextTick(()=>this.$refs.contentClose?.focus({preventScroll:!0}))},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))},replyToWaitingPrompt(e=null){this.replyEntryDisabled||e&&!this.canMessageAction(e)||!e&&this.coordinatorThinking||(this.composerTargetValue=e?`action:${e.id}:${e.generation}`:"coordinator",this.staleComposerTarget=null,this.workItemMessageError="",this.saveComposerDraft(),(this.$refs.shell?.clientWidth||window.innerWidth)<=900&&this.closeContentPanel(),this.$nextTick(()=>{let t=this.$refs.workItemComposer?.getTextarea?.();t?.scrollIntoView?.({block:"nearest"}),t?.focus?.()}))},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:"",deliveryTarget:s.deliveryTarget||"",deliveryInstructions:s.deliveryInstructions||"",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},onCreateScheduledInput(){if(this.form.scheduled&&(this.form.start=!1,this.startTouched=!0,!this.form.scheduleAt)){let e=new Date(Date.now()+36e5);e.setSeconds(0,0);let t=new Date(e.getTime()-e.getTimezoneOffset()*60*1e3);this.form.scheduleAt=t.toISOString().slice(0,16)}},async setSelectedScheduleEnabled(e){let t=this.selected?.schedule;!this.selected||!t||this.selected.status!=="draft"||await this.store.updateWorkItemSchedule(this.selected.id,{scheduledFor:t.scheduledFor,enabled:e},this.agentId)},clipboardFiles(e){return Array.from(e?.clipboardData?.items||[]).filter(t=>t?.kind==="file").map(t=>t.getAsFile?.()).filter(Boolean)},clipboardIncludesText(e){return Array.from(e?.clipboardData?.types||[]).some(t=>String(t).toLowerCase().startsWith("text/"))},attachmentUploadName(e,t){let s=String(e?.name||"").trim();if(s)return s;let n={"image/png":".png","image/jpeg":".jpg","image/gif":".gif","image/webp":".webp","application/pdf":".pdf","application/json":".json","text/plain":".txt"};return`${String(e?.type||"").startsWith("image/")?"pasted-image":"pasted-file"}-${Date.now()}-${t+1}${n[e?.type]||""}`},async uploadPendingAttachments(e){let t=new FormData;e.forEach((a,l)=>{t.append("files",a,this.attachmentUploadName(a,l))});let s=Pinia.useAuthStore(),n=s.getActiveToken?.()||s.token||null,r=n?{Authorization:`Bearer ${n}`}:{},i=await fetch("/api/upload",{method:"POST",headers:r,body:t});if(!i.ok)throw new Error(this.tr("workCenter.attachmentsUploadFailed","Attachment upload failed"));let o=await i.json();return Array.isArray(o.files)?o.files:[]},async addCreateAttachments(e){if(!this.workItemAttachmentsSupported){this.createAttachmentError=this.tr("workCenter.attachmentsUnsupported","The selected Agent does not support Work Item attachments.");return}let t=Math.max(0,10-this.createAttachments.length),s=Array.from(e||[]).slice(0,t);if(s.length===0)return;let n=this.createGeneration;this.createAttachmentUploadCount+=1,this.attachmentsUploading=!0,this.createAttachmentError="";try{let r=await this.uploadPendingAttachments(s);if(!this.createOpen||this.createGeneration!==n)return;this.createAttachments=[...this.createAttachments,...r].slice(0,10)}catch(r){this.createOpen&&this.createGeneration===n&&(this.createAttachmentError=r?.message||String(r))}finally{this.createGeneration===n&&(this.createAttachmentUploadCount=Math.max(0,this.createAttachmentUploadCount-1),this.attachmentsUploading=this.createAttachmentUploadCount>0)}},async onCreateAttachmentInput(e){let t=Array.from(e.target.files||[]);e.target.value="",await this.addCreateAttachments(t)},async onCreateRequirementPaste(e){let t=this.clipboardFiles(e);t.length!==0&&(this.clipboardIncludesText(e)||e.preventDefault(),await this.addCreateAttachments(t))},removeCreateAttachment(e){this.createAttachments=this.createAttachments.filter((t,s)=>s!==e)},discardPendingMessageEnvelope(){this.clearPendingMessageEnvelope()&&this.saveComposerDraft()},async addWorkItemMessageAttachments(e){if(!this.workItemAttachmentsSupported){this.workItemMessageError=this.tr("workCenter.attachmentsUnsupported","The selected Agent does not support Work Item attachments.");return}if(!e.length)return;let t=this.workItemComposerScope;if(!t)return;let s=this.pendingEnvelopeAttachmentRecovery,n=Array.isArray(this.selected?.attachments)?this.selected.attachments.length:0,r=Math.max(0,10-n-(s?0:this.workItemMessageAttachments.length)),i=Array.from(e).slice(0,r);if(i.length===0)return;let o=this.workItemComposerGeneration;this.workItemMessageAttachmentUploadCount+=1,this.workItemMessageAttachmentsUploading=!0,this.workItemMessageError="";try{let a=(await this.uploadPendingAttachments(i)).slice(0,Math.max(0,10-n));if(this.workItemComposerScope!==t||this.workItemComposerGeneration!==o)return;if(s){let l=this.store.replaceWorkCenterMessageEnvelopeAttachments(this.agentId,this.selectedId,a);if(!l)throw new Error(this.tr("workCenter.pendingEnvelopeChanged","The pending request changed; reopen this Work Item and try again."));this.workItemMessageAttachments=[...l.attachments],this.workItemMessageError=""}else this.workItemMessageAttachments=[...this.workItemMessageAttachments,...a].slice(0,Math.max(0,10-n)),this.saveComposerDraft()}catch(a){this.workItemComposerScope===t&&this.workItemComposerGeneration===o&&(this.workItemMessageError=a?.message||String(a))}finally{this.workItemComposerScope===t&&this.workItemComposerGeneration===o&&(this.workItemMessageAttachmentUploadCount=Math.max(0,this.workItemMessageAttachmentUploadCount-1),this.workItemMessageAttachmentsUploading=this.workItemMessageAttachmentUploadCount>0)}},async onWorkItemMessageAttachmentInput(e){let t=Array.from(e.target.files||[]);e.target.value="",await this.addWorkItemMessageAttachments(t)},async onWorkItemMessagePaste(e){let t=this.clipboardFiles(e);t.length!==0&&(this.clipboardIncludesText(e)||e.preventDefault(),await this.addWorkItemMessageAttachments(t))},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?Fs(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)}},isExternalOutput(e){return["link","pr"].includes(e?.kind)&&/^https?:\/\//i.test(String(e?.ref||""))},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`},async loadDeliveryInstructionOptions(){let e=this.agentId,t=++this.deliveryInstructionsGeneration;if(e)try{let s=await this.store.loadWorkCenterDeliveryInstructions(e);this.agentId===e&&this.deliveryInstructionsGeneration===t&&(this.deliveryInstructionOptions=s)}catch{this.agentId===e&&this.deliveryInstructionsGeneration===t&&(this.deliveryInstructionOptions=[])}},openCreate(){this.createGeneration=(Number(this.createGeneration)||0)+1,this.createAttachmentUploadCount=0,this.attachmentsUploading=!1,this.createOpen=!0,this.workDirTouched=!1,this.startTouched=!1,this.createAttachmentError="",this.applyCreateDefaults(),this.loadDeliveryInstructionOptions()},closeCreate(){this.saving||(this.createGeneration=(Number(this.createGeneration)||0)+1,this.createAttachmentUploadCount=0,this.attachmentsUploading=!1,this.closeFolderPicker(),this.createOpen=!1,this.createAttachments=[],this.createAttachmentError="",this.store.workCenterCreateDraft=null)},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.replace(/\s+/g," ").slice(0,80),titleSource:"coordinator_pending",goal:e,acceptanceCriteria:[],workItemType:"auto",workDir:this.form.workDir.trim(),deliveryTarget:this.form.deliveryTarget||null,deliveryInstructions:this.form.deliveryInstructions.trim()||null,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.scheduled?!1:this.form.start,scheduledFor:this.form.scheduled?new Date(this.form.scheduleAt).getTime():null},t);if(this.agentId!==t||this.createGeneration!==s)return;this.openWorkItem(i.id),this.form={requirement:"",workDir:"",deliveryTarget:"",deliveryInstructions:"",reuseMemory:!0,start:this.settings?.startImmediately!==!1,scheduled:!1,scheduleAt:""},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=Mt(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){if(this.workItemComposerScope===e&&this.actionInputRequestGeneration===l)if(c?.code==="WORK_CENTER_INPUT_STALE"){if(this.clearPendingMessageEnvelope({preserveAttachments:!0}),await this.$nextTick(),this.workItemComposerScope!==e)return;this.workItemMessageError=this.$t("workCenter.inputStale"),this.saveComposerDraft(),this.store.getWorkItem(n,this.agentId).catch(()=>{})}else 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(await We(t,{destructive:!0})){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?");await We(e,{destructive:!0})&&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,this.selected.executionControl?.revision)}},template:`
|
|
6774
6783
|
<main class="work-center-main" :class="{ 'navigation-open': sidebarExpanded && mobileNavigation }" :aria-label="tr('workCenter.title', 'Work Center')">
|
|
6775
6784
|
<WorkCenterSidebar ref="navigation" :agents="sidebarAgents" :agent-id="agentId" :item-id="selectedId"
|
|
6776
6785
|
:action-id="selectedActionId" :expanded="sidebarExpanded"
|
|
@@ -6851,6 +6860,14 @@ ${String(e||"").trim()}
|
|
|
6851
6860
|
:aria-label="$t('workbench.title')" @click="toggleWorkbench">
|
|
6852
6861
|
<NavigationIcon name="workbench" :size="16" />
|
|
6853
6862
|
</button>
|
|
6863
|
+
<button v-if="agentId" class="work-center-icon-button work-center-header-refresh" type="button" @click="refresh" :disabled="loading"
|
|
6864
|
+
:title="tr('workCenter.refresh', 'Refresh')" :aria-label="tr('workCenter.refresh', 'Refresh')">
|
|
6865
|
+
<NavigationIcon name="refresh" :size="16" />
|
|
6866
|
+
</button>
|
|
6867
|
+
<button v-if="agentId" class="work-center-icon-button work-center-header-create" type="button" @click="openCreate"
|
|
6868
|
+
:title="tr('workCenter.newWorkItem', 'New work item')" :aria-label="tr('workCenter.newWorkItem', 'New work item')">
|
|
6869
|
+
<NavigationIcon name="add" :size="16" />
|
|
6870
|
+
</button>
|
|
6854
6871
|
<div v-if="agentId" class="work-center-header-menu" @keydown.esc.stop="headerMenuOpen = false; $refs.headerMenuButton.focus()">
|
|
6855
6872
|
<button ref="headerMenuButton" class="work-center-icon-button" type="button" :aria-expanded="headerMenuOpen" aria-controls="work-center-header-options" @click="headerMenuOpen = !headerMenuOpen"
|
|
6856
6873
|
:title="tr('workCenter.moreActions', 'More actions')" :aria-label="tr('workCenter.moreActions', 'More actions')">
|
|
@@ -6858,14 +6875,8 @@ ${String(e||"").trim()}
|
|
|
6858
6875
|
</button>
|
|
6859
6876
|
<div v-if="headerMenuOpen" id="work-center-header-options" class="work-center-header-popover">
|
|
6860
6877
|
<button type="button" @click="headerMenuOpen = false; settingsOpen = true">{{ tr('workCenter.settings.title', 'Work Center settings') }}</button>
|
|
6861
|
-
<button type="button" @click="headerMenuOpen = false; refresh()" :disabled="loading">{{ tr('workCenter.refresh', 'Refresh') }}</button>
|
|
6862
|
-
<button class="work-center-menu-create" type="button" @click="headerMenuOpen = false; openCreate()">{{ tr('workCenter.newWorkItem', 'New work item') }}</button>
|
|
6863
6878
|
</div>
|
|
6864
6879
|
</div>
|
|
6865
|
-
<button v-if="agentId" class="work-center-icon-button work-center-header-create" type="button" @click="openCreate"
|
|
6866
|
-
:title="tr('workCenter.newWorkItem', 'New work item')" :aria-label="tr('workCenter.newWorkItem', 'New work item')">
|
|
6867
|
-
<svg viewBox="0 0 24 24" width="16" height="16" aria-hidden="true"><path fill="currentColor" d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2Z"/></svg>
|
|
6868
|
-
</button>
|
|
6869
6880
|
<template v-if="narrowPane !== 'items' && selected">
|
|
6870
6881
|
<button
|
|
6871
6882
|
ref="actionsButton"
|
|
@@ -7144,6 +7155,7 @@ ${String(e||"").trim()}
|
|
|
7144
7155
|
<div v-if="goalProgress.delivery" class="work-center-goal-delivery">
|
|
7145
7156
|
<h3>{{ tr('workCenter.deliveryTarget', 'Delivery target') }}</h3>
|
|
7146
7157
|
<p>{{ deliveryTargetLabel(goalProgress.delivery.target) }} \xB7 <span class="work-center-goal-status" :data-status="goalProgress.delivery.status">{{ goalStatusLabel(goalProgress.delivery.status) }}</span></p>
|
|
7158
|
+
<p v-if="selected.deliveryInstructions" class="work-center-muted">{{ selected.deliveryInstructions }}</p>
|
|
7147
7159
|
<details v-if="goalProgress.delivery.evidenceRunIds?.length" class="work-center-goal-evidence">
|
|
7148
7160
|
<summary>{{ tr('workCenter.evidenceRuns', 'Evidence Runs') }}</summary>
|
|
7149
7161
|
<ul><li v-for="runId in goalProgress.delivery.evidenceRunIds" :key="runId"><WorkCenterActionReference :actions="selected.actions || []" :run-id="runId" :run-references="selected.runReferences || []" @select-action="selectAction" /></li></ul>
|
|
@@ -7429,6 +7441,7 @@ ${String(e||"").trim()}
|
|
|
7429
7441
|
</label>
|
|
7430
7442
|
<div class="work-center-create-options">
|
|
7431
7443
|
<label><span>{{ tr('workCenter.deliveryTarget', 'Delivery target') }}</span><select v-model="form.deliveryTarget"><option value="">{{ tr('workCenter.deliveryTargetAsk', 'Ask me before delivery') }}</option><option value="response">{{ tr('workCenter.deliveryTargetResponse', 'Response') }}</option><option value="workspace_files">{{ tr('workCenter.deliveryTargetFiles', 'Workspace files') }}</option><option value="pull_request">{{ tr('workCenter.deliveryTargetPr', 'Open a pull request') }}</option><option value="merge">{{ tr('workCenter.deliveryTargetMerge', 'Merge an approved pull request') }}</option></select><small class="work-center-field-help">{{ tr('workCenter.deliveryTargetHelp', 'This is the completion boundary, not permission to bypass review or merge policy.') }}</small></label>
|
|
7444
|
+
<label><span>{{ tr('workCenter.deliveryInstructions', 'Delivery goal') }}</span><input v-model="form.deliveryInstructions" type="text" maxlength="500" list="work-center-delivery-instructions" :placeholder="tr('workCenter.deliveryInstructionsHint', 'For example: publish a release and summarize the changes')"><datalist id="work-center-delivery-instructions"><option v-for="value in deliveryInstructionOptions" :key="value" :value="value"></option></datalist><small class="work-center-field-help">{{ tr('workCenter.deliveryInstructionsHelp', 'Choose a previous goal or enter a new one. This does not grant extra delivery permissions.') }}</small></label>
|
|
7432
7445
|
<label class="work-center-checkbox"><input v-model="form.reuseMemory" type="checkbox"><span><strong>{{ tr('workCenter.reuseMemory', 'Use relevant Agent memory and completed work from this project') }}</strong><small>{{ tr('workCenter.reuseMemoryHelp', 'Uses scope-bounded Agent memory and structured results from completed WorkItems in the same project.') }}</small></span></label>
|
|
7433
7446
|
<label class="work-center-checkbox"><input v-model="form.scheduled" type="checkbox" @change="onCreateScheduledInput"><span><strong>{{ tr('workCenter.scheduleWorkItem', 'Schedule this work item') }}</strong><small>{{ tr('workCenter.scheduleWorkItemHint', 'Keep it as a persisted draft and start it once at the selected local time.') }}</small></span></label>
|
|
7434
7447
|
<label v-if="form.scheduled"><span>{{ tr('workCenter.scheduleAt', 'Start at') }}</span><input v-model="form.scheduleAt" type="datetime-local" required></label>
|