fuli-context 0.9.0-beta.1 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/README.md +1 -1
  2. package/README.zh-CN.md +1 -1
  3. package/dist/web/assets/AboutPage-D-GyJNv1.js +1 -0
  4. package/dist/web/assets/AboutPage-c4dQpUiP.css +1 -0
  5. package/dist/web/assets/AgentConversations-DOuZgUeA.js +2 -0
  6. package/dist/web/assets/AgentConversations-DS8h3yKn.css +1 -0
  7. package/dist/web/assets/AgentHand-Y83Oo36U.css +1 -0
  8. package/dist/web/assets/AgentHand-eGsXoGSq.js +1 -0
  9. package/dist/web/assets/AgentName-BQTFCWn0.css +1 -0
  10. package/dist/web/assets/AgentName-Dtmu9Ff5.js +1 -0
  11. package/dist/web/assets/AgentProfilePage-D8Tvayn7.js +1 -0
  12. package/dist/web/assets/AgentsDirectoryPage-BTEfKZjF.js +1 -0
  13. package/dist/web/assets/ConnectionsPage-C1w99yN3.css +1 -0
  14. package/dist/web/assets/ConnectionsPage-DwOIcvl9.js +1 -0
  15. package/dist/web/assets/EmployeeRecruitDialog-BrIMRblq.css +1 -0
  16. package/dist/web/assets/EmployeeRecruitDialog-D11blfwU.js +1 -0
  17. package/dist/web/assets/EmployeeWorkbenchPage-BcEzYt65.css +1 -0
  18. package/dist/web/assets/EmployeeWorkbenchPage-CK2BAoGt.js +3 -0
  19. package/dist/web/assets/GrowthLoading-CIuQ1icy.css +1 -0
  20. package/dist/web/assets/GrowthLoading-KTjE2e50.js +1 -0
  21. package/dist/web/assets/KnowledgeEditDialog-B3x8vs3c.css +1 -0
  22. package/dist/web/assets/KnowledgeEditDialog-n9trHQ5d.js +1 -0
  23. package/dist/web/assets/KnowledgeInspector-BcNjgw9H.js +1 -0
  24. package/dist/web/assets/KnowledgeInspector-pgDELOEf.css +1 -0
  25. package/dist/web/assets/KnowledgeOrganizerPage-BzgxP-nG.css +1 -0
  26. package/dist/web/assets/KnowledgeOrganizerPage-DMBpGxLr.js +1 -0
  27. package/dist/web/assets/KnowledgePage-POkCMW8f.js +1 -0
  28. package/dist/web/assets/KnowledgeWorkspace-2FvQadhB.js +4 -0
  29. package/dist/web/assets/NotFoundPage-BCMZbeB8.js +1 -0
  30. package/dist/web/assets/OverviewPage-0CFWCG9-.css +1 -0
  31. package/dist/web/assets/OverviewPage-0mYifpjp.js +1 -0
  32. package/dist/web/assets/PersonalProfilePage-Chv2a2pi.css +1 -0
  33. package/dist/web/assets/PersonalProfilePage-JW6Muix6.js +1 -0
  34. package/dist/web/assets/PersonalProjectsPage-CRbi64JP.js +1 -0
  35. package/dist/web/assets/ProjectAgentFirstTask-DJ0wTbh8.js +1 -0
  36. package/dist/web/assets/ProjectAgentsPage-BgQLIpxg.css +1 -0
  37. package/dist/web/assets/ProjectAgentsPage-CQemHFxy.js +12 -0
  38. package/dist/web/assets/ProjectScopePicker-BwB7gK-7.js +1 -0
  39. package/dist/web/assets/ProjectScopePicker-DYA7L1Ex.css +1 -0
  40. package/dist/web/assets/PublicProjectsPage-CB272Sq-.js +1 -0
  41. package/dist/web/assets/ReviewPage-CelTZU4C.js +1 -0
  42. package/dist/web/assets/RoundtablesPage-ByVeZlgC.js +2 -0
  43. package/dist/web/assets/{SearchableSelect-Do6X3fXi.js → SearchableSelect-f7EHbyDL.js} +1 -1
  44. package/dist/web/assets/SettingsPage-5g7mRN2F.css +1 -0
  45. package/dist/web/assets/SettingsPage-nAijmm5f.js +1 -0
  46. package/dist/web/assets/SharedJefaReportPage-CjpJ9bkk.js +1 -0
  47. package/dist/web/assets/SharedJefaReportPage-D92FSPru.css +1 -0
  48. package/dist/web/assets/UiDisclosure-CWlC91Zt.js +1 -0
  49. package/dist/web/assets/WritingTastePage-DaHWY61P.js +1 -0
  50. package/dist/web/assets/WritingTastePage-SMGF39mf.css +1 -0
  51. package/dist/web/assets/agent-profile-CBvJHGjt.css +1 -0
  52. package/dist/web/assets/{task-evidence-DTiPCs7r.js → agent-work-summary-LeW-Al_S.js} +1 -1
  53. package/dist/web/assets/attention-store-Dk-_P4Oi.js +1 -0
  54. package/dist/web/assets/{catalog-JmKyJnKL.js → catalog-DN72452f.js} +1 -1
  55. package/dist/web/assets/{client-DTQ_tUr2.js → client-B2cRl-7c.js} +1 -1
  56. package/dist/web/assets/console-BtPqo79j.js +1 -0
  57. package/dist/web/assets/{conversation-launcher-settings-fUWCt3XG.js → conversation-launcher-settings-jkHRmWai.js} +1 -1
  58. package/dist/web/assets/{copy-CX6pyzAG.js → copy-D2LqwtPZ.js} +1 -1
  59. package/dist/web/assets/{i18n-CIIxzhPZ.js → i18n-D2CJkEYK.js} +2 -2
  60. package/dist/web/assets/{identity-CdFITIOu.js → identity-B3zEw-1u.js} +1 -1
  61. package/dist/web/assets/index-CNp0tRNp.css +1 -0
  62. package/dist/web/assets/index-UygXwZDZ.js +5 -0
  63. package/dist/web/assets/{model-CJsrDUNb.js → model-S7ehAjky.js} +1 -1
  64. package/dist/web/assets/{personal-profile-graph-CQLOait6.js → personal-profile-graph--GG3Mizo.js} +1 -1
  65. package/dist/web/assets/shared-report-CGlCpmNd.css +1 -0
  66. package/dist/web/assets/shared-report-DEK9wvhl.js +1 -0
  67. package/dist/web/assets/useAgentRoster-BAPKWZ9y.js +1 -0
  68. package/dist/web/assets/{useApi-CROJJdhE-fcdVGInY.js → useApi-CROJJdhE-BtFMXFjw.js} +1 -1
  69. package/dist/web/assets/{useModalDialog-B-45idX9.js → useModalDialog-D8tiJfbc.js} +1 -1
  70. package/dist/web/assets/{vue-router-BUX6njIv.js → vue-router-DkaTtPn0.js} +1 -1
  71. package/dist/web/index.html +16 -15
  72. package/docs/project-agent-memory.md +6 -0
  73. package/docs/roundtable-beta-validation.md +10 -2
  74. package/graph-provider/fuli_graph/app.py +3 -1
  75. package/graph-provider/pyproject.toml +1 -1
  76. package/npm-shrinkwrap.json +2 -2
  77. package/package.json +1 -1
  78. package/skills/capturing-session-knowledge/SKILL.md +4 -0
  79. package/skills/operating-fuli/SKILL.md +4 -0
  80. package/src/agent-tools/graph-definitions.js +2 -2
  81. package/src/agents/codex/lifecycle-hook.js +7 -0
  82. package/src/agents/codex/roundtable-config.js +3 -0
  83. package/src/agents/cursor/lifecycle-hook.js +1 -0
  84. package/src/agents/identity-receipt.js +11 -4
  85. package/src/cli/command-registry.js +1 -1
  86. package/src/cli/roundtable-command.js +29 -9
  87. package/src/conversations/current-task-lookup.js +40 -0
  88. package/src/conversations/sync-transcript.js +4 -2
  89. package/src/graphiti/federated-application.js +1 -0
  90. package/src/graphiti/provider-client.js +7 -4
  91. package/src/graphiti/task-entry-preferences.js +6 -7
  92. package/src/http/static-handler.js +3 -1
  93. package/src/mcp/instructions.js +8 -7
  94. package/src/mcp/tool-result.js +20 -8
  95. package/src/native-runtime/runtime.js +41 -6
  96. package/src/roundtables/turn-prompt.js +3 -0
  97. package/dist/web/assets/AboutPage-u2Bv6cO-.js +0 -1
  98. package/dist/web/assets/AboutPage-vYIBifKw.css +0 -1
  99. package/dist/web/assets/AgentHand-CsMcNXUm.js +0 -1
  100. package/dist/web/assets/AgentHand-D9sQu2vc.css +0 -1
  101. package/dist/web/assets/AgentName-BboCA-Fd.js +0 -1
  102. package/dist/web/assets/AgentName-Cydd0UI4.css +0 -1
  103. package/dist/web/assets/AgentProfilePage-Dyux6qE3.js +0 -1
  104. package/dist/web/assets/AgentsDirectoryPage-BEJdvmX7.js +0 -1
  105. package/dist/web/assets/ConnectionsPage-CBHAdZXT.css +0 -1
  106. package/dist/web/assets/ConnectionsPage-Dw_hK_EM.js +0 -1
  107. package/dist/web/assets/EmployeeRecruitDialog-B59X3rOi.css +0 -1
  108. package/dist/web/assets/EmployeeRecruitDialog-DP_ktv3w.js +0 -1
  109. package/dist/web/assets/EmployeeWorkbenchPage-CAt8lVnr.js +0 -3
  110. package/dist/web/assets/EmployeeWorkbenchPage-CQwZnTA0.css +0 -1
  111. package/dist/web/assets/GrowthLoading-B_Hh0CRS.css +0 -1
  112. package/dist/web/assets/GrowthLoading-DIwqGFSc.js +0 -1
  113. package/dist/web/assets/KnowledgeEditDialog-D9NuRHvp.css +0 -1
  114. package/dist/web/assets/KnowledgeEditDialog-Degd9AGD.js +0 -1
  115. package/dist/web/assets/KnowledgeInspector--1NujtXW.css +0 -1
  116. package/dist/web/assets/KnowledgeInspector-yms1ysZ4.js +0 -1
  117. package/dist/web/assets/KnowledgeOrganizerPage-C64wNn8a.js +0 -1
  118. package/dist/web/assets/KnowledgeOrganizerPage-h2iKvQpO.css +0 -1
  119. package/dist/web/assets/KnowledgePage-BTFEXzgi.js +0 -1
  120. package/dist/web/assets/KnowledgeWorkspace-BsF1X4Aq.js +0 -4
  121. package/dist/web/assets/NotFoundPage-DfaNTiD1.js +0 -1
  122. package/dist/web/assets/OverviewPage-VXMfcWFI.js +0 -1
  123. package/dist/web/assets/PersonalProfilePage-C1LBhcYu.js +0 -1
  124. package/dist/web/assets/PersonalProfilePage-L8T5xMEC.css +0 -1
  125. package/dist/web/assets/PersonalProjectsPage-B5lV4ZJW.js +0 -1
  126. package/dist/web/assets/ProjectAgentFirstTask-DF-IvEqp.js +0 -1
  127. package/dist/web/assets/ProjectAgentsPage-CgL92gng.js +0 -13
  128. package/dist/web/assets/ProjectAgentsPage-CoJ4qQlA.css +0 -1
  129. package/dist/web/assets/ProjectScopePicker-BvaGTMFx.css +0 -1
  130. package/dist/web/assets/ProjectScopePicker-CZUMdyYz.js +0 -1
  131. package/dist/web/assets/PublicProjectsPage-e4CpxHk9.js +0 -1
  132. package/dist/web/assets/ReviewPage-DugEaFvI.js +0 -1
  133. package/dist/web/assets/RoundtablesPage-642YtZBC.js +0 -2
  134. package/dist/web/assets/SettingsPage-Brl-SL33.css +0 -1
  135. package/dist/web/assets/SettingsPage-wqYxDPyu.js +0 -1
  136. package/dist/web/assets/SharedJefaReportPage-CNQDezJr.js +0 -1
  137. package/dist/web/assets/SharedJefaReportPage-DXbj_JhO.css +0 -1
  138. package/dist/web/assets/WritingTastePage-Bzg6AvnB.css +0 -1
  139. package/dist/web/assets/WritingTastePage-CAUvbDlL.js +0 -1
  140. package/dist/web/assets/agent-profile-CdKOh5xw.css +0 -1
  141. package/dist/web/assets/agent-profile.css_vue_type_style_index_0_src_true_lang-DHOcWSe_.js +0 -1
  142. package/dist/web/assets/console-CrhIK67Y.js +0 -1
  143. package/dist/web/assets/employee-dialog-Bh5ccIbK.css +0 -1
  144. package/dist/web/assets/index-CYZi7E1e.css +0 -1
  145. package/dist/web/assets/index-DMoxVzDU.js +0 -2
  146. package/dist/web/assets/shared-report-Cll2Yj8W.js +0 -1
  147. package/dist/web/assets/shared-report-ezeb8dW4.css +0 -1
@@ -0,0 +1,2 @@
1
+ import{A as e,B as t,C as n,M as r,P as i,R as a,S as o,V as s,X as c,_ as l,b as u,c as d,d as f,h as p,it as m,m as h,nt as g,tt as _,u as v,v as y,w as b,x,y as S}from"./i18n-D2CJkEYK.js";import{t as C}from"./GrowthLoading-KTjE2e50.js";import{h as w,m as T}from"./useApi-CROJJdhE-BtFMXFjw.js";import{t as E}from"./vue-router-DkaTtPn0.js";import{a as D,i as O,n as k,r as A,t as j}from"./copy-D2LqwtPZ.js";async function M(e,t){let n=await fetch(`/api/roundtables${e}`,{method:t===void 0?`GET`:`POST`,credentials:`same-origin`,headers:t===void 0?{Accept:`application/json`}:{Accept:`application/json`,"Content-Type":`application/json`},...t===void 0?{}:{body:JSON.stringify(t)}}),r=await n.json().catch(()=>null);if(!n.ok)throw Error(typeof r?.error?.message==`string`?r.error.message:typeof r?.error==`string`?r.error:`HTTP ${n.status}`);if(r===null)throw Error(`Invalid roundtable response`);return r}var N={list:()=>M(``),read:(e,t=0)=>M(`/${encodeURIComponent(e)}?after=${t}&limit=100`),create:async e=>{let t=await M(``,e);return`room`in t?t.room:t},control:(e,t,n,r,i)=>M(`/${encodeURIComponent(e)}/control`,{action:t,expectedRevision:n,...r?{reason:r}:{},...i?{limits:i}:{}}),message:(e,t)=>M(`/${encodeURIComponent(e)}/messages`,{body:t}),invite:(e,t)=>M(`/${encodeURIComponent(e)}/invites`,{seatId:t}),revoke:(e,t)=>M(`/${encodeURIComponent(e)}/revoke`,{seatId:t})},P={class:`rt-panel rt-create`,"aria-labelledby":`rt-create-title`},F={class:`rt-section-heading`},I={id:`rt-create-title`},L=[`disabled`],R={class:`rt-field`},z=[`placeholder`],B={class:`rt-field`},V={value:`discussion`},H={value:`collaboration`},U={class:`rt-section-heading`},W={class:`rt-muted`},G={class:`rt-field`},K=[`onUpdate:modelValue`,`aria-label`],ee={class:`rt-field`},te=[`onUpdate:modelValue`,`aria-label`],ne=[`value`],re={class:`rt-field`},ie=[`onUpdate:modelValue`,`aria-label`],ae=[`value`],oe=[`disabled`,`aria-label`,`onClick`],se={key:0,class:`rt-seat-permission`},ce=[`onUpdate:modelValue`],le={key:0,class:`rt-field`},ue=[`onUpdate:modelValue`],de=[`disabled`],fe={key:0,class:`rt-warning`},pe={class:`rt-advanced`},me={class:`rt-field`},he=[`placeholder`],ge={class:`rt-muted`},_e={class:`rt-field`},ve={key:0,class:`rt-field`},ye={class:`rt-muted`},be={class:`rt-limit-form`},xe={class:`rt-field`},Se={class:`rt-field`},Ce={class:`rt-field`},we={class:`rt-field`},Te={key:1,class:`rt-muted`},Ee={key:2,role:`alert`,class:`rt-error`},De=[`disabled`],Oe={key:1},q=b({__name:`RoundtableCreate`,emits:[`created`,`cancel`],setup(e,{emit:t}){let n=t,a=c(``),g=c(`discussion`),b=c([{id:`seat-1`,name:`Codex`,role:`moderator`,runtime:`codex`},{id:`seat-2`,name:`Claude`,role:`reviewer`,runtime:`claude-code`}]),w=[`moderator`,`specialist`,`implementer`,`reviewer`],T=[`codex`,`claude-code`,`pi`,`mcp`,`grok`,`a2a`],E=c(``),D=c(``),O=c(),j=c(3),M=c(30),q=c(30),J=c(5),Y=c(!1),X=c(``),Z=c({}),Q=c({}),ke=3,$=l(()=>a.value.trim()&&b.value.length>=2&&b.value.length<=6&&b.value.every(e=>e.name.trim())&&b.value.filter(e=>e.role===`moderator`).length===1&&b.value.every(e=>g.value!==`collaboration`||e.role!==`implementer`||!Z.value[e.id]||Q.value[e.id]?.trim())&&(g.value===`discussion`||b.value.some(e=>e.role===`implementer`)&&b.value.some(e=>e.role===`reviewer`)));function Ae(){b.value.push({id:`seat-${ke++}`,name:``,role:`specialist`,runtime:`mcp`})}async function je(){if(!(!$.value||Y.value)){Y.value=!0,X.value=``;try{let e=await N.create({goal:a.value.trim(),mode:g.value,seats:b.value.map(e=>({...e,name:e.name.trim(),...e.role===`implementer`&&g.value===`collaboration`&&Z.value[e.id]?{execution:{permission:`workspace-write`,workspace:Q.value[e.id].trim()}}:{}})),limits:{maxRounds:j.value,maxMessages:M.value,maxDurationMs:q.value*6e4,turnTimeoutMs:J.value*6e4},...E.value.trim()?{projectPath:E.value.trim()}:{},...E.value.trim()&&D.value.trim()?{binding:{taskId:D.value.trim(),...Number.isSafeInteger(O.value)?{artifactRevision:O.value}:{}}}:{}});n(`created`,e.id)}catch(e){X.value=e instanceof Error?e.message:k(`创建失败`,`Creation failed`)}finally{Y.value=!1}}}return(e,t)=>(r(),x(`section`,P,[y(`div`,F,[y(`h2`,I,m(_(k)(`创建圆桌`,`Create a roundtable`)),1),y(`button`,{type:`button`,onClick:t[0]||=e=>n(`cancel`),disabled:Y.value},m(_(k)(`关闭`,`Close`)),9,L)]),y(`form`,{onSubmit:h(je,[`prevent`])},[y(`label`,R,[o(m(_(k)(`共同目标`,`Shared goal`)),1),s(y(`textarea`,{"onUpdate:modelValue":t[1]||=e=>a.value=e,required:``,maxlength:`12000`,rows:`3`,placeholder:_(k)(`描述要一起解决的问题和期望的交付`,`Describe the problem and expected deliverable`)},null,8,z),[[f,a.value]])]),y(`label`,B,[o(m(_(k)(`方式`,`Mode`)),1),s(y(`select`,{"onUpdate:modelValue":t[2]||=e=>g.value=e},[y(`option`,V,m(_(A)(`discussion`)),1),y(`option`,H,m(_(A)(`collaboration`)),1)],512),[[v,g.value]])]),y(`div`,U,[y(`h3`,null,m(_(k)(`参与席位`,`Seats`)),1),y(`span`,null,m(b.value.length)+` / 6`,1)]),y(`p`,W,m(_(k)(`每位参与者有独立席位。选择入口后,还需要在参与者的电脑上启动工作端,或从 MCP 客户端主动加入。`,`Each participant has its own seat. After choosing an adapter, start a worker on the participant’s computer or actively join from an MCP client.`)),1),(r(!0),x(p,null,i(b.value,(e,t)=>(r(),x(`div`,{key:e.id,class:`rt-seat-form`},[y(`label`,G,[o(m(_(k)(`姓名`,`Name`)),1),s(y(`input`,{"onUpdate:modelValue":t=>e.name=t,required:``,maxlength:`120`,"aria-label":`${_(k)(`姓名`,`Name`)} ${t+1}`},null,8,K),[[f,e.name]])]),y(`label`,ee,[o(m(_(k)(`职责`,`Role`)),1),s(y(`select`,{"onUpdate:modelValue":t=>e.role=t,"aria-label":`${_(k)(`职责`,`Role`)} ${t+1}`},[(r(),x(p,null,i(w,e=>y(`option`,{key:e,value:e},m(_(A)(e)),9,ne)),64))],8,te),[[v,e.role]])]),y(`label`,re,[o(m(_(k)(`参与方式`,`Adapter`)),1),s(y(`select`,{"onUpdate:modelValue":t=>e.runtime=t,"aria-label":`${_(k)(`参与方式`,`Adapter`)} ${t+1}`},[(r(),x(p,null,i(T,e=>y(`option`,{key:e,value:e},m(_(A)(e)),9,ae)),64))],8,ie),[[v,e.runtime]])]),y(`button`,{type:`button`,disabled:b.value.length<=2||Y.value,"aria-label":`${_(k)(`移除`,`Remove`)} ${e.name||t+1}`,onClick:e=>b.value.splice(t,1)},`×`,8,oe),e.role===`implementer`&&g.value===`collaboration`?(r(),x(`div`,se,[y(`label`,null,[s(y(`input`,{"onUpdate:modelValue":t=>Z.value[e.id]=t,type:`checkbox`},null,8,ce),[[d,Z.value[e.id]]]),o(` `+m(_(k)(`允许此实施席位写入指定工作区`,`Allow this implementer to write to the specified workspace`)),1)]),Z.value[e.id]?(r(),x(`label`,le,[o(m(_(k)(`获授权工作区路径`,`Authorized workspace path`)),1),s(y(`input`,{"onUpdate:modelValue":t=>Q.value[e.id]=t,required:``},null,8,ue),[[f,Q.value[e.id]]])])):u(``,!0)])):u(``,!0)]))),128)),y(`button`,{type:`button`,disabled:b.value.length>=6||Y.value,onClick:Ae},m(_(k)(`添加席位`,`Add seat`)),9,de),!$.value&&a.value.trim()?(r(),x(`p`,fe,m(_(k)(`需要 2–6 个有姓名的席位和一位主持人;协作任务还需要实施者和审查者。`,`Use 2–6 named seats and exactly one moderator. Collaborative tasks also require an implementer and a reviewer.`)),1)):u(``,!0),y(`details`,pe,[y(`summary`,null,m(_(k)(`停止条件与项目`,`Limits and project`)),1),y(`label`,me,[o(m(_(k)(`已登记项目的本机路径(可选)`,`Registered local project path (optional)`)),1),s(y(`input`,{"onUpdate:modelValue":t[3]||=e=>E.value=e,placeholder:_(k)(`留空建立独立临时圆桌`,`Leave blank for an independent temporary room`)},null,8,he),[[f,E.value]])]),y(`p`,ge,m(_(k)(`项目绑定由服务端验证。跨电脑工作端的本地路径单独设置;加入席位不会授权读取他人的私有记忆。`,`The server validates project binding. Each worker sets its own local path; joining does not authorize access to another participant’s private memory.`)),1),E.value.trim()?(r(),x(p,{key:0},[y(`label`,_e,[o(m(_(k)(`关联已有 Fuli 任务 ID(可选)`,`Existing Fuli task ID (optional)`)),1),s(y(`input`,{"onUpdate:modelValue":t[4]||=e=>D.value=e},null,512),[[f,D.value]])]),D.value.trim()?(r(),x(`label`,ve,[o(m(_(k)(`产物版本(用于任务验证)`,`Artifact revision (for task verification)`)),1),s(y(`input`,{"onUpdate:modelValue":t[5]||=e=>O.value=e,type:`number`,min:`0`,step:`1`},null,512),[[f,O.value,void 0,{number:!0}]])])):u(``,!0),y(`p`,ye,m(_(k)(`关联项目本身不会完成 Fuli 任务。关联已有任务时,交付还要通过该任务的验证门槛;独立圆桌的人工验收只结束圆桌。`,`A project link alone does not complete a Fuli task. Linking an existing task adds its verification gate; human acceptance of an independent room concludes only the room.`)),1)],64)):u(``,!0),y(`div`,be,[y(`label`,xe,[o(m(_(k)(`讨论轮数`,`Discussion rounds`)),1),s(y(`input`,{"onUpdate:modelValue":t[6]||=e=>j.value=e,type:`number`,min:`1`,max:`3`,required:``},null,512),[[f,j.value,void 0,{number:!0}]])]),y(`label`,Se,[o(m(_(k)(`Agent 发言上限`,`Agent message limit`)),1),s(y(`input`,{"onUpdate:modelValue":t[7]||=e=>M.value=e,type:`number`,min:`1`,max:`30`,required:``},null,512),[[f,M.value,void 0,{number:!0}]])]),y(`label`,Ce,[o(m(_(k)(`总时限(分钟)`,`Total minutes`)),1),s(y(`input`,{"onUpdate:modelValue":t[8]||=e=>q.value=e,type:`number`,min:`1`,max:`30`,required:``},null,512),[[f,q.value,void 0,{number:!0}]])]),y(`label`,we,[o(m(_(k)(`单回合(分钟)`,`Minutes per turn`)),1),s(y(`input`,{"onUpdate:modelValue":t[9]||=e=>J.value=e,type:`number`,min:`1`,max:`5`,required:``},null,512),[[f,J.value,void 0,{number:!0}]])])])]),g.value===`collaboration`?(r(),x(`p`,Te,m(_(k)(`实施席位仍需要在工作端明确授权工作区写入;审查默认只读。执行结果等待你的验收。`,`Implementation still requires explicit workspace write permission on the worker. Reviews default to read only. Results await your acceptance.`)),1)):u(``,!0),X.value?(r(),x(`p`,Ee,m(X.value),1)):u(``,!0),y(`button`,{type:`submit`,class:`rt-primary`,disabled:!$.value||Y.value},[Y.value?(r(),S(C,{key:0,variant:`inline`,label:`创建圆桌 · Creating roundtable`})):(r(),x(`span`,Oe,m(_(k)(`创建草案`,`Create draft`)),1))],8,De)],32)]))}}),J={class:`rt-panel`,"aria-labelledby":`rt-seats-title`},Y={class:`rt-section-heading`},X={id:`rt-seats-title`},Z={class:`rt-muted`},Q={class:`rt-seats`},ke={class:`rt-section-heading`},$={class:`rt-tag`},Ae={class:`rt-muted`},je={class:`rt-muted`},Me={key:0,class:`rt-muted`},Ne={class:`rt-actions`},Pe=[`disabled`,`onClick`],Fe={key:1},Ie=[`disabled`,`onClick`],Le={key:1},Re={key:0,class:`rt-error`,role:`alert`},ze={key:1,class:`rt-invite`,"aria-labelledby":`rt-invite-title`},Be={class:`rt-section-heading`},Ve={id:`rt-invite-title`},He={class:`rt-field`},Ue=[`value`],We={class:`rt-muted`},Ge={class:`rt-field`},Ke={class:`rt-muted`},qe={class:`rt-field`},Je=[`placeholder`],Ye={key:0},Xe={key:1,class:`rt-field`},Ze={key:2,class:`rt-field`},Qe={class:`rt-muted`},$e={class:`rt-muted`},et={class:`rt-muted`},tt={class:`rt-muted`},nt=b({__name:`RoundtableSeats`,props:{room:{},activeSeatId:{}},emits:[`changed`],setup(t,{emit:n}){let l=t,h=n,v=c(null),b=c(``),w=c(``),T=c(``),E=c(``),D=c(typeof window>`u`?``:window.location.origin),j=c(!1),M=c(``),P=c(``),F=!1;a(()=>l.room.id,()=>{v.value=null,w.value=``,T.value=``}),e(()=>{F=!0,v.value=null});async function I(e){if(b.value)return;b.value=`invite:${e}`,w.value=``,v.value=null,T.value=``;let t=l.room.id;try{let n=await N.invite(t,e);!F&&l.room.id===t&&(v.value=n)}catch(e){w.value=e instanceof Error?e.message:k(`创建邀请失败`,`Invitation failed`)}finally{b.value=``}}async function L(e){if(!b.value){b.value=`revoke:${e}`,w.value=``;try{await N.revoke(l.room.id,e),v.value?.seatId===e&&(v.value=null),h(`changed`)}catch(e){w.value=e instanceof Error?e.message:k(`撤销失败`,`Revocation failed`)}finally{b.value=``}}}async function R(e,t){try{await navigator.clipboard.writeText(e),T.value=t}catch{w.value=k(`剪贴板不可用,请手动选择并复制。`,`Clipboard unavailable. Select and copy manually.`)}}function z(){let e=l.room.seats.find(e=>e.id===v.value?.seatId);if(!e||e.runtime===`mcp`)return``;let t=e=>`'${e.replaceAll(`'`,`''`)}'`;return`fl roundtable worker --url ${t(D.value)} --room ${t(l.room.id)} --runtime ${e.runtime} --workspace ${t(E.value||k(`参与端本地工作区`,`LOCAL_WORKSPACE`))}${j.value&&e.role===`implementer`&&e.execution?.permission===`workspace-write`?` --allow-write`:``}${e.runtime===`a2a`?` --a2a-url ${t(M.value||`https://A2A_ENDPOINT`)}`:``}${e.runtime===`pi`?` --model ${t(P.value||`LOCAL_MODEL`)}`:``}`}function B(){return`${D.value.replace(/\/$/,``)}/roundtable-peer/v1/rooms/${encodeURIComponent(l.room.id)}/mcp`}return(e,n)=>(r(),x(`section`,J,[y(`div`,Y,[y(`h2`,X,m(_(k)(`圆桌席位`,`Seats`)),1),y(`span`,null,m(t.room.seats.length),1)]),y(`p`,Z,m(_(k)(`邀请仅授予一个席位的权限。加入记录是历史证据,当前在线状态由工作端轮询和回合回执确定。`,`An invitation grants access to one seat. Join records are historical evidence; worker polling and turn receipts determine current activity.`)),1),y(`div`,Q,[(r(!0),x(p,null,i(t.room.seats,e=>(r(),x(`article`,{key:e.id,class:g([`rt-seat`,{"rt-seat-current":e.id===t.activeSeatId}])},[y(`div`,ke,[y(`strong`,null,m(e.name),1),y(`span`,$,m(_(A)(e.role)),1)]),y(`p`,null,m(_(A)(e.runtime)),1),y(`p`,Ae,m(e.identityKind===`fuli`?_(k)(`已绑定 Fuli 身份`,`Bound Fuli identity`):_(k)(`独立任务席位`,`Independent task seat`)),1),y(`p`,je,m(e.joinedAt?`${_(k)(`加入于`,`Joined`)} ${_(O)(e.joinedAt)}`:_(k)(`尚无加入记录`,`No join recorded`)),1),e.execution?(r(),x(`p`,Me,m(_(A)(e.execution.permission))+` · `+m(e.execution.workspace),1)):u(``,!0),y(`div`,Ne,[y(`button`,{type:`button`,disabled:!!b.value,onClick:t=>I(e.id)},[b.value===`invite:${e.id}`?(r(),S(C,{key:0,variant:`inline`,label:`创建席位邀请 · Creating seat invitation`})):(r(),x(`span`,Fe,m(_(k)(`邀请参与`,`Invite participant`)),1))],8,Pe),y(`button`,{type:`button`,disabled:!!b.value,onClick:t=>L(e.id)},[b.value===`revoke:${e.id}`?(r(),S(C,{key:0,variant:`inline`,label:`撤销席位凭据 · Revoking seat credentials`})):(r(),x(`span`,Le,m(_(k)(`撤销凭据`,`Revoke credentials`)),1))],8,Ie)])],2))),128))]),w.value?(r(),x(`p`,Re,m(w.value),1)):u(``,!0),v.value?(r(),x(`section`,ze,[y(`div`,Be,[y(`h3`,Ve,m(_(k)(`席位邀请 · 仅此次显示`,`Seat invitation · shown once`)),1),y(`button`,{type:`button`,onClick:n[0]||=e=>{v.value=null,T.value=``}},m(_(k)(`隐藏凭据`,`Hide credential`)),1)]),y(`p`,null,m(t.room.seats.find(e=>e.id===v.value?.seatId)?.name)+` · `+m(_(k)(`有效期至`,`Expires`))+` `+m(_(O)(v.value.expiresAt)),1),y(`label`,He,[o(m(_(k)(`席位访问凭据`,`Seat credential`)),1),y(`input`,{value:v.value.seatToken,readonly:``,autocomplete:`off`,spellcheck:`false`,type:`password`,"data-testid":`seat-token`,onFocus:n[1]||=e=>e.target.select()},null,40,Ue)]),y(`button`,{type:`button`,onClick:n[2]||=e=>R(v.value.seatToken,`token`)},m(T.value===`token`?_(k)(`凭据已复制`,`Credential copied`):_(k)(`复制凭据`,`Copy credential`)),1),y(`p`,We,m(_(k)(`只发给这一席位的参与者。凭据仅保留在当前页面内存;关闭后重新创建邀请,或撤销此前凭据。`,`Share only with this seat’s participant. This page keeps the credential only in memory. After closing, create a new invite or revoke previous credentials.`)),1),y(`label`,Ge,[o(m(_(k)(`参与者可访问的协调端地址`,`Coordinator URL reachable by participant`)),1),s(y(`input`,{"onUpdate:modelValue":n[3]||=e=>D.value=e,type:`url`},null,512),[[f,D.value]])]),y(`p`,Ke,m(_(k)(`另一台电脑需要可访问的 HTTPS 地址,并在协调端设置 public-url;本机测试可使用回环地址。`,`Another computer needs a reachable HTTPS URL configured as public-url on the coordinator. Loopback works for local testing.`)),1),t.room.seats.find(e=>e.id===v.value?.seatId)?.runtime===`mcp`?(r(),x(p,{key:1},[y(`p`,$e,m(_(k)(`在 MCP 客户端配置下面的远程地址,将席位凭据作为 Bearer 认证秘密保存。Grok Team Bot 可在官方自定义 MCP 设置中配置此地址。`,`Configure this remote URL in the MCP client and save the seat credential as a Bearer authentication secret. Grok Team Bots can configure it through their official custom MCP settings.`)),1),y(`pre`,null,[y(`code`,null,m(B()),1)]),y(`button`,{type:`button`,onClick:n[9]||=e=>R(B(),`mcp`)},m(T.value===`mcp`?_(k)(`地址已复制`,`URL copied`):_(k)(`复制 MCP 地址`,`Copy MCP URL`)),1),y(`p`,et,m(_(k)(`主动调用 join_roundtable,再通过 read_roundtable、claim_roundtable_turn、submit_roundtable_turn 参与自己的回合;参数 roomId 为下面的圆桌 ID。MCP 不会后台唤醒现有聊天。`,`Actively call join_roundtable, then use read_roundtable, claim_roundtable_turn and submit_roundtable_turn for your own turns, passing the room ID below as roomId. MCP does not wake existing chats in the background.`)),1)],64)):(r(),x(p,{key:0},[y(`label`,qe,[o(m(_(k)(`参与端本地工作区`,`Worker local workspace`)),1),s(y(`input`,{"onUpdate:modelValue":n[4]||=e=>E.value=e,placeholder:_(k)(`填写参与者电脑上的路径`,`Path on the participant’s computer`)},null,8,Je),[[f,E.value]])]),t.room.seats.find(e=>e.id===v.value?.seatId)?.execution?.permission===`workspace-write`?(r(),x(`label`,Ye,[s(y(`input`,{"onUpdate:modelValue":n[5]||=e=>j.value=e,type:`checkbox`},null,512),[[d,j.value]]),o(` `+m(_(k)(`工作端用户明确允许写入此工作区`,`The worker’s user explicitly permits writing to this workspace`)),1)])):u(``,!0),t.room.seats.find(e=>e.id===v.value?.seatId)?.runtime===`a2a`?(r(),x(`label`,Xe,[o(m(_(k)(`A2A 端点`,`A2A endpoint`)),1),s(y(`input`,{"onUpdate:modelValue":n[6]||=e=>M.value=e,type:`url`,placeholder:`https://…`},null,512),[[f,M.value]])])):u(``,!0),t.room.seats.find(e=>e.id===v.value?.seatId)?.runtime===`pi`?(r(),x(`label`,Ze,[o(m(_(k)(`参与电脑上的 Ollama 模型`,`Ollama model on participant computer`)),1),s(y(`input`,{"onUpdate:modelValue":n[7]||=e=>P.value=e,placeholder:`fuli-roundtable-qwen3-32k:latest`},null,512),[[f,P.value]])])):u(``,!0),y(`p`,null,m(_(k)(`在参与端 PowerShell 中,先设置环境变量,再启动工作端:`,`In the worker’s PowerShell, set the environment variable and start the worker:`)),1),y(`pre`,null,[y(`code`,null,`$env:FULI_ROUNDTABLE_TOKEN = '<`+m(_(k)(`粘贴席位凭据`,`PASTE_SEAT_CREDENTIAL`))+`>'
2
+ `+m(z()),1)]),y(`button`,{type:`button`,onClick:n[8]||=e=>R(z(),`command`)},m(T.value===`command`?_(k)(`命令已复制`,`Command copied`):_(k)(`复制工作端命令`,`Copy worker command`)),1),y(`p`,Qe,m(_(k)(`默认只读。实施写入还需工作端用户明确授权。Grok 需要工作端配置 XAI_API_KEY;A2A 需要配置可验证的端点。`,`Workers default to read only. Writing also requires explicit permission from the worker’s user. Grok requires XAI_API_KEY on the worker; A2A requires a verified endpoint.`)),1)],64)),y(`p`,tt,m(_(k)(`协调端地址`,`Coordinator URL`))+`: `+m(D.value)+` · `+m(_(k)(`圆桌`,`Room`))+`: `+m(t.room.id)+` · `+m(_(k)(`席位`,`Seat`))+`: `+m(v.value.seatId),1)])):u(``,!0)]))}}),rt={class:`rt-panel`,"aria-labelledby":`rt-results-title`},it={class:`rt-section-heading`},at={id:`rt-results-title`},ot={key:0,class:`rt-tag`},st={class:`rt-message-body`},ct={class:`rt-muted`},lt={key:0,class:`rt-advanced`},ut={class:`rt-message-body`},dt={class:`rt-muted`},ft={key:1,class:`rt-empty`},pt={key:2,class:`rt-table-scroll`},mt={key:3,class:`rt-muted`},ht={class:`rt-advanced`},gt={class:`rt-message-body`},_t={class:`rt-message-body`},vt={key:4,class:`rt-muted`},yt={key:5,class:`rt-artifacts`},bt={key:6,class:`rt-muted`},xt={class:`rt-muted`},St={key:7,class:`rt-table-scroll`},Ct={"data-testid":`runtime-receipts`},wt={key:8,class:`rt-empty`,"data-testid":`no-runtime-receipts`},Tt=b({__name:`RoundtableResults`,props:{snapshot:{}},setup(e){let t=e,n=l(()=>t.snapshot.messages.filter(e=>e.actual)),a=l(()=>t.snapshot.messages.filter(e=>e.kind===`dissent`)),s=l(()=>[...t.snapshot.outcome?.artifacts??[],...t.snapshot.tasks.flatMap(e=>e.artifacts??[])]),c=e=>t.snapshot.room.seats.find(t=>t.id===e)?.name??e??k(`系统`,`System`);function d(e){if(typeof e==`string`)return e;if(e&&typeof e==`object`){let t=e;if(typeof t.body==`string`)return t.body;if(typeof t.reason==`string`)return t.reason}return j(e)}function f(e){return e==null?k(`未报告`,`Not reported`):typeof e==`string`?e:JSON.stringify(e,null,2)}function h(e){return!e||!Object.keys(e).length?k(`未知`,`Unknown`):Object.entries(e).filter(([,e])=>typeof e==`number`).map(([e,t])=>`${e}: ${t}`).join(` · `)||k(`未知`,`Unknown`)}return(t,l)=>(r(),x(`section`,rt,[y(`div`,it,[y(`h2`,at,m(_(k)(`结果与证据`,`Results and evidence`)),1),e.snapshot.outcome?(r(),x(`span`,ot,m(_(A)(e.snapshot.outcome.acceptance)),1)):u(``,!0)]),e.snapshot.outcome?(r(),x(p,{key:0},[y(`p`,st,m(e.snapshot.outcome.body),1),y(`p`,ct,m(_(k)(`Agent 报告的结论保留为报告;人工验收和任务验证分别记录。`,`Agent conclusions remain reports. Human acceptance and task verification are recorded separately.`)),1),e.snapshot.outcome.verification?.reported==null?u(``,!0):(r(),x(`details`,lt,[y(`summary`,null,m(_(k)(`汇总验证报告`,`Outcome verification report`)),1),y(`p`,ut,m(f(e.snapshot.outcome.verification.reported)),1),y(`p`,dt,m(e.snapshot.outcome.verification.confirmed?_(k)(`服务端记录为已确认`,`Recorded as confirmed by server`):_(k)(`参与端报告,尚未确认`,`Participant report, not confirmed`)),1)]))],64)):(r(),x(`p`,ft,m(_(k)(`尚未提交最终结论。讨论、任务报告与实际执行记录会持续保留。`,`No final outcome has been submitted. Discussion, task reports and execution records are preserved.`)),1)),y(`h3`,null,m(_(k)(`任务`,`Tasks`)),1),e.snapshot.tasks.length?(r(),x(`div`,pt,[y(`table`,null,[y(`thead`,null,[y(`tr`,null,[y(`th`,null,m(_(k)(`任务 / 阶段`,`Task / phase`)),1),y(`th`,null,m(_(k)(`负责人`,`Assignee`)),1),y(`th`,null,m(_(k)(`权限`,`Permission`)),1),y(`th`,null,m(_(k)(`状态`,`Status`)),1),y(`th`,null,m(_(k)(`依赖`,`Dependencies`)),1)])]),y(`tbody`,null,[(r(!0),x(p,null,i(e.snapshot.tasks,e=>(r(),x(`tr`,{key:e.id},[y(`td`,null,[o(m(e.title||e.id),1),y(`small`,null,m(_(A)(e.phase)),1)]),y(`td`,null,m(c(e.seatId)),1),y(`td`,null,m(_(A)(e.permission)),1),y(`td`,null,m(_(A)(e.status)),1),y(`td`,null,m(e.dependencies?.join(`, `)||`—`),1)]))),128))])])])):(r(),x(`p`,mt,m(_(k)(`本圆桌尚无执行任务。讨论消息不算工作进程执行。`,`No execution tasks in this room. Discussion messages are not worker execution.`)),1)),(r(!0),x(p,null,i(e.snapshot.tasks.filter(e=>e.verification!=null),e=>(r(),x(`div`,{key:e.id},[y(`details`,ht,[y(`summary`,null,m(_(k)(`任务验证报告`,`Task verification report`))+` · `+m(e.title||e.id),1),y(`p`,gt,m(f(e.verification)),1)])]))),128)),y(`h3`,null,m(_(k)(`保留的分歧`,`Retained dissent`)),1),(r(!0),x(p,null,i(a.value,e=>(r(),x(`article`,{key:e.id,class:`rt-dissent`},[y(`strong`,null,m(c(e.seatId))+` · #`+m(e.seq),1),y(`p`,_t,m(e.body),1)]))),128)),(r(!0),x(p,null,i(e.snapshot.outcome?.dissent??[],(e,t)=>(r(),x(`p`,{key:t,class:`rt-message-body`},m(d(e)),1))),128)),!a.value.length&&!e.snapshot.outcome?.dissent?.length?(r(),x(`p`,vt,m(_(k)(`尚未记录分歧。`,`No dissent recorded.`)),1)):u(``,!0),y(`h3`,null,m(_(k)(`产物引用`,`Artifact references`)),1),s.value.length?(r(),x(`ul`,yt,[(r(!0),x(p,null,i(s.value,(e,t)=>(r(),x(`li`,{key:t},m(_(j)(e)),1))),128))])):(r(),x(`p`,bt,m(_(k)(`尚无产物引用。`,`No artifact references reported.`)),1)),y(`h3`,null,m(_(k)(`实际运行回执`,`Actual runtime receipts`)),1),y(`p`,xt,m(_(k)(`只展示提交了运行来源的回执;来源由参与端报告,未独立验证运行时身份。加入、选择平台或配置席位不产生执行行;用量缺失时显示未知。`,`Only submitted runtime source receipts appear here. Sources are participant reports; runtime identity is not independently verified. Joining or configuring a seat does not create an execution row; missing usage stays unknown.`)),1),n.value.length?(r(),x(`div`,St,[y(`table`,Ct,[y(`thead`,null,[y(`tr`,null,[y(`th`,null,m(_(k)(`席位 / 消息`,`Seat / message`)),1),y(`th`,null,m(_(k)(`报告的应用`,`Reported application`)),1),y(`th`,null,m(_(k)(`报告的模型`,`Reported model`)),1),y(`th`,null,m(_(k)(`会话`,`Session`)),1),y(`th`,null,m(_(k)(`用量`,`Usage`)),1),y(`th`,null,m(_(k)(`证据来源`,`Provenance`)),1),y(`th`,null,m(_(k)(`时间`,`Time`)),1)])]),y(`tbody`,null,[(r(!0),x(p,null,i(n.value,e=>(r(),x(`tr`,{key:e.id},[y(`td`,null,[o(m(c(e.seatId)),1),y(`small`,null,`#`+m(e.seq)+` · `+m(_(A)(e.kind)),1)]),y(`td`,null,m(e.actual?.applicationLabel||e.actual?.reportedApplication||e.actual?.sourceApplication||_(k)(`未知`,`Unknown`)),1),y(`td`,null,m(e.actual?.model||_(k)(`未知`,`Unknown`)),1),y(`td`,null,m(e.actual?.sessionId||_(k)(`未知`,`Unknown`)),1),y(`td`,null,m(h(e.actual?.usage)),1),y(`td`,null,[o(m(_(k)(`参与端报告`,`Participant reported`)),1),y(`small`,null,m(_(k)(`身份未独立验证`,`Identity not independently verified`)),1)]),y(`td`,null,m(_(O)(e.createdAt)),1)]))),128))])])])):(r(),x(`p`,wt,m(_(k)(`尚无实际运行回执。`,`No actual runtime receipts yet.`)),1))]))}}),Et={class:`rt-panel rt-event-details`},Dt={class:`rt-muted`},Ot={key:0,class:`rt-table-scroll`},kt={"data-testid":`turn-attempts`},At={key:1,class:`rt-muted`},jt={class:`rt-muted`},Mt={class:`rt-message-body`},Nt={key:2,class:`rt-muted`},Pt={class:`rt-events`},Ft={key:0},It=b({__name:`RoundtableEvents`,props:{snapshot:{}},setup(e){let t=e,n=e=>t.snapshot.room.seats.find(t=>t.id===e)?.name??e;return(t,a)=>(r(),x(`details`,Et,[y(`summary`,null,m(_(k)(`回合尝试、恢复与历史事件`,`Turn attempts, recovery and history`)),1),y(`p`,Dt,m(_(k)(`领取回合代表运行租约。下表保留失败、受阻、中断与取消请求,领取本身不证明已调用模型。`,`Claiming a turn creates a lease. This history retains failed, blocked and interrupted attempts and cancellation requests. A claim alone does not prove model execution.`)),1),e.snapshot.attempts?.length?(r(),x(`div`,Ot,[y(`table`,kt,[y(`thead`,null,[y(`tr`,null,[y(`th`,null,m(_(k)(`参与者`,`Participant`)),1),y(`th`,null,m(_(k)(`尝试`,`Attempt`)),1),y(`th`,null,m(_(k)(`状态`,`Status`)),1),y(`th`,null,m(_(k)(`领取时间`,`Claimed at`)),1),y(`th`,null,m(_(k)(`结束时间`,`Finished at`)),1)])]),y(`tbody`,null,[(r(!0),x(p,null,i(e.snapshot.attempts,e=>(r(),x(`tr`,{key:`${e.turnId}:${e.id}`},[y(`td`,null,m(n(e.seatId)),1),y(`td`,null,m(e.id),1),y(`td`,null,m(_(A)(e.status)),1),y(`td`,null,m(_(O)(e.startedAt)),1),y(`td`,null,m(e.finishedAt?_(O)(e.finishedAt):`—`),1)]))),128))])])])):(r(),x(`p`,At,m(_(k)(`尚无回合尝试。`,`No turn attempts yet.`)),1)),y(`h3`,null,m(_(k)(`过期结果存档`,`Stale result archive`)),1),y(`p`,jt,m(_(k)(`晚到结果保留在历史中,不替代当前讨论或交付结论。`,`Late results remain in history and do not replace current discussion or delivery outcomes.`)),1),(r(!0),x(p,null,i(e.snapshot.lateResults??[],e=>(r(),x(`article`,{key:`${e.turnId}:${e.attemptId}`,class:`rt-message`},[y(`strong`,null,m(n(e.seatId))+` · `+m(_(O)(e.receivedAt)),1),y(`p`,Mt,m(e.body),1),y(`small`,null,m(e.turnId)+` / `+m(e.attemptId),1)]))),128)),e.snapshot.lateResults?.length?u(``,!0):(r(),x(`p`,Nt,m(_(k)(`没有过期结果。`,`No stale results.`)),1)),y(`h3`,null,m(_(k)(`状态事件`,`Status events`)),1),y(`ol`,Pt,[(r(!0),x(p,null,i(e.snapshot.events??[],e=>(r(),x(`li`,{key:e.id},[y(`span`,null,m(_(A)(e.kind)),1),o(` · `+m(_(O)(e.createdAt)),1),e.kind===`cancellation_requested`&&e.confirmed!==!0?(r(),x(`small`,Ft,` · `+m(_(k)(`取消尚未确认`,`Cancellation not confirmed`)),1)):u(``,!0)]))),128))])]))}}),Lt={class:`rt-detail`},Rt={class:`rt-panel rt-room-heading`},zt={class:`rt-section-heading`},Bt={class:`rt-eyebrow`},Vt=[`data-status`],Ht={class:`rt-meta`},Ut={key:0,class:`rt-warning`},Wt={class:`rt-actions`},Gt=[`disabled`],Kt=[`disabled`],qt=[`disabled`],Jt=[`disabled`],Yt=[`disabled`],Xt={key:1,class:`rt-muted`},Zt={key:3,class:`rt-confirm`},Qt={class:`rt-field`},$t=[`disabled`],en={key:4,class:`rt-error`,role:`alert`},tn={key:5,class:`rt-advanced`},nn={class:`rt-muted`},rn={class:`rt-limit-form`},an={class:`rt-field`},on={class:`rt-field`},sn={class:`rt-field`},cn={class:`rt-field`},ln=[`disabled`],un={class:`rt-panel`,"aria-labelledby":`rt-messages-title`},dn={class:`rt-section-heading`},fn={id:`rt-messages-title`},pn={key:0,class:`rt-current-turn`},mn={key:0},hn={class:`rt-messages`,"aria-live":`polite`,"aria-relevant":`additions`},gn={class:`rt-section-heading`},_n={class:`rt-message-body`},vn={key:0,class:`rt-empty`},yn=[`disabled`],bn={class:`rt-field`},xn=[`placeholder`],Sn=[`disabled`],Cn={key:1},wn={key:3,class:`rt-advanced`},Tn={class:`rt-muted`},En={class:`rt-field`},Dn={class:`rt-actions`},On=[`disabled`],kn=[`disabled`],An=[`disabled`],jn={key:0,class:`rt-panel`},Mn=[`disabled`],Nn={key:0,class:`rt-confirm`},Pn=[`disabled`],Fn=b({__name:`RoundtableDetail`,props:{snapshot:{},refreshing:{type:Boolean}},emits:[`refresh`],setup(e,{emit:t}){let d=e,v=t,b=c(``),w=c(``),T=c(``),E=c(``),D=c(!1),j=c(!1),M=c(3),P=c(30),F=c(30),I=c(5),L=l(()=>d.snapshot.room),R=l(()=>[`concluded`,`failed`,`cancelled`].includes(L.value.status)),z=l(()=>L.value.seats.every(e=>e.joinedAt)),B=l(()=>L.value.status===`active`&&L.value.phase===`discussion`&&(L.value.round??1)>1&&d.snapshot.currentTurn?.status===`pending`&&L.value.phaseIndex===0),V=l(()=>[`paused`,`waiting_input`].includes(L.value.status)&&d.snapshot.currentTurn&&![`pending`,`claimed`].includes(d.snapshot.currentTurn.status)),H=l(()=>d.snapshot.currentTurn&&d.snapshot.currentTurn.status!==`claimed`&&[`discussion`,`planning`].includes(L.value.phase)),U=l(()=>!d.snapshot.currentTurn||[`pending`,`claimed`].includes(d.snapshot.currentTurn.status)),W=e=>L.value.seats.find(t=>t.id===e)?.name??e??k(`系统`,`System`);a(()=>L.value.id,()=>{b.value=``,w.value=``,D.value=!1,j.value=!1}),a(()=>`${L.value.id}:${JSON.stringify(L.value.limits)}`,()=>{let e=L.value.limits;M.value=e.maxRounds,P.value=e.maxMessages,F.value=e.maxDurationMs/6e4,I.value=e.turnTimeoutMs/6e4},{immediate:!0});async function G(){if(!T.value){T.value=`update_limits`,w.value=``;try{await N.control(L.value.id,`update_limits`,L.value.revision,``,{maxRounds:M.value,maxMessages:P.value,maxDurationMs:Math.round(F.value*6e4),turnTimeoutMs:Math.round(I.value*6e4)}),v(`refresh`)}catch(e){w.value=e instanceof Error?e.message:k(`更新停止条件失败`,`Could not update limits`),v(`refresh`)}finally{T.value=``}}}async function K(e){if(!T.value){T.value=e,w.value=``;try{await N.control(L.value.id,e,L.value.revision,E.value.trim()),D.value=!1,j.value=!1,E.value=``,v(`refresh`)}catch(e){w.value=e instanceof Error?e.message:k(`操作失败`,`Action failed`),v(`refresh`)}finally{T.value=``}}}async function ee(){if(!(!b.value.trim()||T.value)){T.value=`message`,w.value=``;try{await N.message(L.value.id,b.value.trim()),b.value=``,v(`refresh`)}catch(e){w.value=e instanceof Error?e.message:k(`发送失败`,`Could not send`)}finally{T.value=``}}}let te={start:`开始圆桌 · Starting roundtable`,pause:`暂停圆桌 · Pausing roundtable`,resume:`恢复圆桌 · Resuming roundtable`,stop:`停止圆桌 · Stopping roundtable`,advance_phase:`推进圆桌阶段 · Advancing roundtable phase`,next_round:`开启下一轮讨论 · Starting next discussion round`,retry_turn:`重试当前回合 · Retrying current turn`,skip_turn:`记录跳过回合 · Recording skipped turn`,complete:`记录人工验收 · Recording human acceptance`,update_limits:`更新圆桌停止条件 · Updating roundtable limits`};return(t,a)=>(r(),x(`div`,Lt,[y(`section`,Rt,[y(`div`,zt,[y(`span`,Bt,m(_(A)(L.value.mode))+` · `+m(L.value.binding?.projectId||_(k)(`独立临时任务`,`Independent temporary task`)),1),y(`span`,{class:`rt-tag`,"data-status":L.value.status},m(_(A)(L.value.status)),9,Vt)]),y(`h1`,null,m(L.value.goal),1),y(`div`,Ht,[y(`span`,null,m(_(k)(`阶段`,`Phase`))+`: `+m(_(A)(L.value.phase)),1),y(`span`,null,m(_(k)(`讨论轮数`,`Discussion rounds`))+`: `+m(L.value.round??0)+` / `+m(L.value.limits.maxRounds),1),y(`span`,null,m(_(k)(`Agent 发言`,`Agent messages`))+`: `+m(L.value.agentMessageCount??0)+` / `+m(L.value.limits.maxMessages),1),y(`span`,null,m(_(k)(`总时限`,`Time limit`))+`: `+m(Math.round(L.value.limits.maxDurationMs/6e4))+` `+m(_(k)(`分钟`,`min`)),1)]),L.value.stopReason?(r(),x(`p`,Ut,m(_(k)(`当前原因`,`Current reason`))+`: `+m(L.value.stopReason),1)):u(``,!0),y(`div`,Wt,[L.value.status===`draft`?(r(),x(`button`,{key:0,class:`rt-primary`,type:`button`,disabled:!!T.value||!z.value,onClick:a[0]||=e=>K(`start`)},m(_(k)(`开始圆桌`,`Start roundtable`)),9,Gt)):u(``,!0),L.value.status===`active`?(r(),x(`button`,{key:1,type:`button`,disabled:!!T.value,onClick:a[1]||=e=>K(`pause`)},m(_(k)(`暂停`,`Pause`)),9,Kt)):u(``,!0),[`paused`,`waiting_auth`,`waiting_input`].includes(L.value.status)&&!(L.value.phase===`synthesis`&&e.snapshot.outcome&&!e.snapshot.currentTurn)?(r(),x(`button`,{key:2,type:`button`,disabled:!!T.value||!U.value,onClick:a[2]||=e=>K(`resume`)},m(_(k)(`恢复`,`Resume`)),9,qt)):u(``,!0),R.value?u(``,!0):(r(),x(`button`,{key:3,type:`button`,disabled:!!T.value,onClick:a[3]||=e=>D.value=!D.value},m(_(k)(`停止`,`Stop`)),9,Jt)),y(`button`,{type:`button`,disabled:e.refreshing||!!T.value,onClick:a[4]||=e=>v(`refresh`)},m(_(k)(`刷新`,`Refresh`)),9,Yt)]),L.value.status===`draft`&&!z.value?(r(),x(`p`,Xt,m(_(k)(`先邀请所有席位,在各参与端完成预检并加入后开始。选择平台不会自动启动工作端。`,`Invite every seat and complete preflight and joining on each worker before starting. Choosing an adapter does not start a worker.`)),1)):u(``,!0),T.value&&T.value!==`message`?(r(),S(C,{key:2,variant:`inline`,label:te[T.value]||`更新圆桌 · Updating roundtable`},null,8,[`label`])):u(``,!0),D.value?(r(),x(`div`,Zt,[y(`p`,null,m(_(k)(`停止将拒绝新回合并请求取消当前运行。外部进程是否已取消,以工作端回执为准。`,`Stopping blocks new turns and requests cancellation of the current run. Worker receipts confirm whether external execution stopped.`)),1),y(`label`,Qt,[o(m(_(k)(`停止原因(可选)`,`Stop reason (optional)`)),1),s(y(`input`,{"onUpdate:modelValue":a[5]||=e=>E.value=e,maxlength:`2000`},null,512),[[f,E.value]])]),y(`button`,{type:`button`,disabled:!!T.value,onClick:a[6]||=e=>K(`stop`)},m(_(k)(`确认停止`,`Confirm stop`)),9,$t)])):u(``,!0),w.value?(r(),x(`p`,en,m(w.value),1)):u(``,!0),R.value?u(``,!0):(r(),x(`details`,tn,[y(`summary`,null,m(_(k)(`由你修改停止条件`,`Change limits explicitly`)),1),y(`p`,nn,m(_(k)(`修改后仍需明确恢复;总时限从最初开始时间计算。服务端限制可设置的最大预算,Agent 不会自动扩展。`,`After updating, resume explicitly. Total duration is measured from the original start. The server caps the allowed budget; agents do not increase it automatically.`)),1),y(`form`,{class:`rt-budget-form`,onSubmit:h(G,[`prevent`])},[y(`div`,rn,[y(`label`,an,[o(m(_(k)(`讨论轮数`,`Discussion rounds`)),1),s(y(`input`,{"onUpdate:modelValue":a[7]||=e=>M.value=e,type:`number`,min:`1`,max:`3`,required:``},null,512),[[f,M.value,void 0,{number:!0}]])]),y(`label`,on,[o(m(_(k)(`Agent 发言上限`,`Agent message limit`)),1),s(y(`input`,{"onUpdate:modelValue":a[8]||=e=>P.value=e,type:`number`,min:`1`,max:`30`,required:``},null,512),[[f,P.value,void 0,{number:!0}]])]),y(`label`,sn,[o(m(_(k)(`总时限(分钟)`,`Total minutes`)),1),s(y(`input`,{"onUpdate:modelValue":a[9]||=e=>F.value=e,type:`number`,min:`0.1`,step:`0.1`,max:`30`,required:``},null,512),[[f,F.value,void 0,{number:!0}]])]),y(`label`,cn,[o(m(_(k)(`单回合(分钟)`,`Minutes per turn`)),1),s(y(`input`,{"onUpdate:modelValue":a[10]||=e=>I.value=e,type:`number`,min:`0.1`,step:`0.1`,max:`5`,required:``},null,512),[[f,I.value,void 0,{number:!0}]])])]),y(`button`,{type:`submit`,disabled:!!T.value},m(_(k)(`确认修改停止条件`,`Confirm limit changes`)),9,ln)],32)]))]),n(nt,{room:L.value,"active-seat-id":e.snapshot.currentTurn?.seatId,onChanged:a[11]||=e=>v(`refresh`)},null,8,[`room`,`active-seat-id`]),y(`section`,un,[y(`div`,dn,[y(`h2`,fn,m(_(k)(`公开讨论`,`Shared discussion`)),1),y(`span`,null,m(e.snapshot.messages.length)+` `+m(_(k)(`条记录`,`records`)),1)]),e.snapshot.currentTurn?(r(),x(`div`,pn,[y(`strong`,null,m(_(k)(`当前回合`,`Current turn`))+` · `+m(W(e.snapshot.currentTurn.seatId)),1),y(`span`,null,m(_(A)(e.snapshot.currentTurn.status))+` · `+m(_(A)(e.snapshot.currentTurn.phase)),1),e.snapshot.currentTurn.deadline?(r(),x(`small`,mn,m(_(k)(`期限`,`Deadline`))+`: `+m(_(O)(e.snapshot.currentTurn.deadline)),1)):u(``,!0)])):u(``,!0),y(`div`,hn,[(r(!0),x(p,null,i(e.snapshot.messages,e=>(r(),x(`article`,{key:e.id,class:g([`rt-message`,{"rt-message-user":[`user`,`human`].includes(e.kind),"rt-message-system":e.kind===`system`}])},[y(`div`,gn,[y(`strong`,null,m(e.kind===`human`?_(k)(`你`,`You`):W(e.seatId)),1),y(`span`,null,m(_(A)(e.kind))+` · #`+m(e.seq),1)]),y(`p`,_n,m(e.body),1),y(`small`,null,m(_(O)(e.createdAt)),1)],2))),128)),e.snapshot.messages.length?u(``,!0):(r(),x(`p`,vn,m(_(k)(`这里会保存按顺序发布的提案、审查、交接和补充要求。`,`Ordered proposals, reviews, handoffs and your additions will appear here.`)),1))]),e.snapshot.hasMore?(r(),x(`button`,{key:1,type:`button`,disabled:e.refreshing,onClick:a[12]||=e=>v(`refresh`)},m(_(k)(`读取后续消息`,`Load remaining messages`)),9,yn)):u(``,!0),R.value?u(``,!0):(r(),x(`form`,{key:2,class:`rt-input-form`,onSubmit:h(ee,[`prevent`])},[y(`label`,bn,[o(m(_(k)(`补充要求`,`Add a requirement`)),1),s(y(`textarea`,{"onUpdate:modelValue":a[13]||=e=>b.value=e,maxlength:`16000`,rows:`3`,placeholder:_(k)(`所有获授权席位可见。不要填写凭据或他人的私有记忆。`,`Visible to all authorized seats. Keep credentials and others’ private memory out.`)},null,8,xn),[[f,b.value]])]),y(`button`,{type:`submit`,disabled:!b.value.trim()||!!T.value},[T.value===`message`?(r(),S(C,{key:0,variant:`inline`,label:`发送补充要求 · Sending requirement`})):(r(),x(`span`,Cn,m(_(k)(`发送`,`Send`)),1))],8,Sn)],32)),R.value?u(``,!0):(r(),x(`details`,wn,[y(`summary`,null,m(_(k)(`主持与恢复操作`,`Moderation and recovery`)),1),y(`p`,Tn,m(_(k)(`每位参与者完成回合后自动安排下一位和下一轮。完整一轮之后,可在下一轮开始前提前推进阶段。服务端检查阶段、预算与任务依赖,必需实施和审查不能跳过。`,`Turns and rounds advance automatically as participants finish. After a complete round, you may advance the phase before the next round starts. The server checks phases, limits and dependencies; required implementation and review cannot be skipped.`)),1),y(`label`,En,[o(m(_(k)(`操作原因(跳过回合时必填)`,`Reason (required when skipping a turn)`)),1),s(y(`input`,{"onUpdate:modelValue":a[14]||=e=>E.value=e,maxlength:`2000`},null,512),[[f,E.value]])]),y(`div`,Dn,[y(`button`,{type:`button`,disabled:!!T.value||!B.value,onClick:a[15]||=e=>K(`advance_phase`)},m(_(k)(`提前推进阶段`,`Advance phase early`)),9,On),y(`button`,{type:`button`,disabled:!!T.value||!V.value,onClick:a[16]||=e=>K(`retry_turn`)},m(_(k)(`重试回合`,`Retry turn`)),9,kn),y(`button`,{type:`button`,disabled:!!T.value||!H.value||!E.value.trim(),onClick:a[17]||=e=>K(`skip_turn`)},m(_(k)(`记录并跳过回合`,`Record and skip turn`)),9,An)])]))]),n(Tt,{snapshot:e.snapshot},null,8,[`snapshot`]),n(It,{snapshot:e.snapshot},null,8,[`snapshot`]),L.value.status===`waiting_input`&&L.value.phase===`synthesis`&&e.snapshot.outcome?(r(),x(`section`,jn,[y(`h2`,null,m(_(k)(`由你验收`,`Your acceptance`)),1),y(`p`,null,m(_(k)(`检查结论、保留分歧、产物和验证报告后,明确记录是否接受交付。人工接受不会制造模型用量或工作进程证据。`,`Review the conclusion, dissent, artifacts and verification reports before accepting delivery. Acceptance does not create model usage or worker evidence.`)),1),y(`button`,{type:`button`,disabled:!!T.value,onClick:a[18]||=e=>j.value=!j.value},m(_(k)(`检查并接受交付`,`Review and accept delivery`)),9,Mn),j.value?(r(),x(`div`,Nn,[y(`p`,null,m(_(k)(`此操作记录你的人工验收,并结束本圆桌。`,`This records your acceptance and concludes this room.`)),1),y(`button`,{class:`rt-primary`,type:`button`,disabled:!!T.value,onClick:a[19]||=e=>K(`complete`)},m(_(k)(`确认接受交付`,`Confirm acceptance`)),9,Pn),y(`button`,{type:`button`,onClick:a[20]||=e=>j.value=!1},m(_(k)(`继续检查`,`Keep reviewing`)),1)])):u(``,!0)])):u(``,!0)]))}});function In(t){let n=c([]),r=c(null),i=c(!1),o=c(``),s=c(!1),l=0,u=!1,d;async function f(){if(i.value||u)return;let e=l,a=t.value;i.value=!0;try{let t=r.value?.messages.at(-1)?.seq??0,i=a?await N.read(a,t):await N.list();if(u||e!==l)return;if(`room`in i){let e=new Map([...r.value?.messages??[],...i.messages].map(e=>[e.id,e]));r.value={...i,messages:[...e.values()].sort((e,t)=>e.seq-t.seq)}}else n.value=i.rooms;s.value=!0,o.value=``}catch(t){!u&&e===l&&(o.value=t instanceof Error?t.message:k(`读取圆桌失败`,`Could not read roundtable`))}finally{e===l&&(i.value=!1)}}function p(){u||(d=setTimeout(async()=>{await f(),p()},4e3))}return a(t,async()=>{l++,i.value=!1,r.value=null,o.value=``,s.value=!1;let e=l;d&&clearTimeout(d),await f(),e===l&&p()},{immediate:!0}),e(()=>{u=!0,l++,d&&clearTimeout(d)}),{rooms:n,snapshot:r,loading:i,loaded:s,error:o,refresh:f}}var Ln={class:`rt-workspace`},Rn={class:`rt-page-header`},zn={class:`rt-breadcrumb`},Bn={class:`rt-actions`},Vn={class:`rt-page-content`},Hn={key:0,class:`rt-error rt-panel`,role:`alert`},Un=[`disabled`],Wn={key:2,class:`rt-refresh-status`},Gn={class:`rt-intro`},Kn={class:`rt-eyebrow`},qn={class:`rt-panel`,"aria-labelledby":`rt-list-title`},Jn={class:`rt-section-heading`},Yn={id:`rt-list-title`},Xn=[`disabled`],Zn={key:0,class:`rt-room-list`},Qn={class:`rt-section-heading`},$n={class:`rt-tag`},er={key:1,class:`rt-empty`},tr={class:`rt-panel rt-capability-map`,"aria-labelledby":`rt-map-title`},nr={class:`rt-eyebrow`},rr={id:`rt-map-title`},ir={class:`rt-tag`},ar={class:`rt-muted`},or=b({__name:`RoundtablesPage`,setup(e){let a=T(),s=w(),d=l(()=>typeof a.params.roomId==`string`?a.params.roomId:``),{rooms:f,snapshot:h,loading:g,loaded:v,error:b,refresh:j}=In(d),M=c(!1),N=l(()=>d.value?!!h.value:v.value||M.value);async function P(e){M.value=!1,await s.push(`/roundtables/${encodeURIComponent(e)}`)}return(e,a)=>(r(),x(`main`,Ln,[y(`header`,Rn,[y(`div`,null,[n(_(E),{class:`rt-brand`,to:`/`},{default:t(()=>[a[4]||=o(`Fuli `,-1),y(`span`,null,m(_(k)(`复利`,``)),1)]),_:1}),y(`div`,zn,[n(_(E),{to:`/roundtables`},{default:t(()=>[o(m(_(k)(`Agent 圆桌`,`Agent Roundtable`)),1)]),_:1}),a[5]||=y(`span`,{class:`rt-tag`},`Beta`,-1)])]),y(`div`,Bn,[d.value?(r(),S(_(E),{key:0,to:`/roundtables`},{default:t(()=>[o(m(_(k)(`全部圆桌`,`All roundtables`)),1)]),_:1})):u(``,!0),n(_(E),{to:`/project-agents`},{default:t(()=>[o(m(_(k)(`Agent 目录`,`Agent directory`)),1)]),_:1}),n(D)])]),y(`div`,Vn,[_(b)?(r(),x(`div`,Hn,[y(`strong`,null,m(_(k)(`读取失败,保留已加载内容`,`Could not refresh; loaded content is preserved`)),1),y(`p`,null,m(_(b)),1),y(`button`,{type:`button`,disabled:_(g),onClick:a[0]||=(...e)=>_(j)&&_(j)(...e)},m(_(k)(`重试`,`Retry`)),9,Un)])):u(``,!0),_(g)&&!N.value?(r(),S(C,{key:1,label:d.value?`读取圆桌与公开消息 · Loading roundtable and shared messages`:`读取圆桌列表 · Loading roundtable list`},null,8,[`label`])):u(``,!0),_(g)&&N.value?(r(),x(`div`,Wn,[n(C,{variant:`inline`,label:d.value?`刷新圆桌与公开消息 · Refreshing roundtable and shared messages`:`刷新圆桌列表 · Refreshing roundtable list`},null,8,[`label`])])):u(``,!0),_(h)?(r(),S(Fn,{key:_(h).room.id,snapshot:_(h),refreshing:_(g),onRefresh:_(j)},null,8,[`snapshot`,`refreshing`,`onRefresh`])):d.value?u(``,!0):(r(),x(p,{key:4},[y(`section`,Gn,[y(`div`,null,[y(`p`,Kn,m(_(k)(`一起讨论,分别执行,共同交付`,`Discuss together. Execute independently. Deliver with evidence.`)),1),y(`h1`,null,m(_(k)(`让不同 Agent 围绕同一个目标工作。`,`Bring different agents around one shared goal.`)),1),y(`p`,null,m(_(k)(`身份和长期知识由 Fuli 管理。本次讨论、分工、回合与结果留在圆桌里,执行由获授权的参与端完成。`,`Fuli manages identity and lasting knowledge. This roundtable keeps discussion, tasks, turns and outcomes; authorized participant workers perform execution.`)),1)]),y(`button`,{class:`rt-primary`,type:`button`,onClick:a[1]||=e=>M.value=!M.value},m(_(k)(`创建圆桌`,`Create roundtable`)),1)]),M.value?(r(),S(q,{key:0,onCreated:P,onCancel:a[2]||=e=>M.value=!1})):u(``,!0),y(`section`,qn,[y(`div`,Jn,[y(`h2`,Yn,m(_(k)(`你的圆桌`,`Your roundtables`)),1),y(`button`,{type:`button`,disabled:_(g),onClick:a[3]||=(...e)=>_(j)&&_(j)(...e)},m(_(k)(`刷新`,`Refresh`)),9,Xn)]),_(f).length?(r(),x(`div`,Zn,[(r(!0),x(p,null,i(_(f),e=>(r(),S(_(E),{key:e.id,class:`rt-room-card`,to:`/roundtables/${encodeURIComponent(e.id)}`},{default:t(()=>[y(`div`,Qn,[y(`span`,$n,m(_(A)(e.status)),1),y(`small`,null,m(_(A)(e.mode)),1)]),y(`h3`,null,m(e.goal),1),y(`p`,null,m(_(A)(e.phase))+` · `+m(e.seats.length)+` `+m(_(k)(`位参与者`,`participants`)),1),y(`small`,null,m(_(O)(e.updatedAt||e.createdAt)),1)]),_:2},1032,[`to`]))),128))])):!_(g)&&!_(b)?(r(),x(`p`,er,m(_(k)(`还没有圆桌。创建一个目标明确的讨论或协作任务,邀请独立参与者加入。`,`No roundtables yet. Create a focused discussion or collaborative task and invite independent participants.`)),1)):u(``,!0)]),y(`section`,tr,[y(`p`,nr,m(_(k)(`完整产品版图`,`Product capability map`)),1),y(`h2`,rr,m(_(k)(`同一个协作层,连接长期知识与实际工作。`,`One collaboration layer connects lasting knowledge to real work.`)),1),y(`ol`,null,[y(`li`,null,[y(`span`,ir,m(_(k)(`已提供`,`Available`)),1),y(`strong`,null,m(_(k)(`身份与知识`,`Identity and knowledge`)),1),y(`p`,null,m(_(k)(`Agent 职责、项目范围、确认状态与时间历史。按需读取,不因同桌共享私有记忆。`,`Agent roles, project scope, confirmation and temporal history. Retrieved on demand; shared rooms do not expose private memory.`)),1)]),y(`li`,null,[a[6]||=y(`span`,{class:`rt-tag`},`Beta`,-1),y(`strong`,null,m(_(k)(`圆桌协作`,`Roundtable coordination`)),1),y(`p`,null,m(_(k)(`共同目标 → 讨论 → 分工 → 实施 → 审查 → 汇总与人工验收。`,`Shared goal → discussion → planning → implementation → review → synthesis and human acceptance.`)),1)]),y(`li`,null,[a[7]||=y(`span`,{class:`rt-tag`},`Beta`,-1),y(`strong`,null,m(_(k)(`开放接入`,`Open adapters`)),1),y(`p`,null,m(_(k)(`CLI、MCP、xAI API;A2A 按已验证的协议能力试验接入。需要可调用接口、凭据和运行端。`,`CLI, MCP and xAI API. A2A is experimental within verified protocol capabilities. Requires a callable interface, credentials and a worker.`)),1)]),y(`li`,null,[a[8]||=y(`span`,{class:`rt-tag`},`Beta`,-1),y(`strong`,null,m(_(k)(`跨电脑交付`,`Delivery across computers`)),1),y(`p`,null,m(_(k)(`一台协调端,各参与端主动领取授权回合;公开消息、分歧、产物和实际来源一起保留。`,`One coordinator; workers pull authorized turns. Shared messages, dissent, artifacts and actual sources stay together.`)),1)])]),y(`p`,ar,m(_(k)(`Grok API 席位与现有 Grok Bot 分开:前者由工作端调用 xAI,后者需要在官方自定义 HTTPS MCP 设置中主动配置。没有开放接口的平台、云端常驻和完整 A2A 兼容仍待支持。Beta 能力不等于已通过每种模型、客户端和电脑的真实验收。`,`Grok API seats and existing Grok Bots are distinct: workers call xAI for the former; the latter require explicit setup through official HTTPS MCP settings. Closed platforms, always-on cloud hosting and full A2A compatibility remain future work. Beta availability does not imply live verification of every model, client and computer.`)),1)])],64))])]))}});export{or as default};
@@ -1 +1 @@
1
- import{A as e,F as t,H as n,M as r,N as i,R as a,T as o,Z as s,_ as c,a as l,at as u,b as d,d as f,h as p,j as m,m as h,n as ee,nt as g,rt as _,v,x as y,z as b}from"./i18n-CIIxzhPZ.js";var x=[`data-select-id`],S=[`value`,`name`,`required`,`disabled`],C=[`value`,`disabled`],w=[`aria-expanded`,`aria-controls`,`aria-label`,`disabled`],T={class:`searchable-select-current`},E={class:`searchable-select-current-label`},D={key:0,class:`searchable-select-current-meta`},O=[`hidden`],te={key:0,class:`searchable-select-search`},ne=[`placeholder`,`aria-label`],re=[`id`],ie=[`aria-selected`,`disabled`,`onClick`,`onKeydown`],ae={class:`searchable-select-option-copy`},oe={key:0},se={key:1,class:`searchable-select-empty`},k=o({__name:`SearchableSelect`,props:{modelValue:{},options:{},label:{},controlId:{default:void 0},placeholder:{default:void 0},searchPlaceholder:{default:void 0},searchable:{type:Boolean,default:void 0},disabled:{type:Boolean,default:!1},required:{type:Boolean,default:!1},name:{default:void 0}},emits:[`update:modelValue`,`change`],setup(o,{emit:k}){let A=o,j=k,M=s(null),N=s(null),P=s(null),F=s(null),I=s(!1),L=s(!1),R=s(``),z=a().replace(/[^A-Za-z0-9_-]/g,``),B=c(()=>A.label),V=c(()=>A.placeholder??l(`common.searchableSelect.placeholder`)),H=c(()=>A.searchPlaceholder??l(`common.searchableSelect.searchPlaceholder`)),U=c(()=>`${A.controlId||`searchable-select-${z}`}-options`),W=c(()=>A.options.find(({value:e})=>e===A.modelValue)??null),G=c(()=>A.searchable??A.options.length>5),K=c(()=>{let e=ee(),t=R.value.trim().toLocaleLowerCase(e);return t?A.options.filter(n=>[n.label,n.value,n.meta,n.search].filter(Boolean).join(` `).toLocaleLowerCase(e).includes(t)):A.options});b(()=>A.disabled,e=>{e&&J()}),r(()=>{document.addEventListener(`pointerdown`,X)}),m(()=>{document.removeEventListener(`pointerdown`,X)});async function ce(){I.value?J():await q()}async function q(){A.disabled||(R.value=``,pe(),I.value=!0,await e(),G.value?P.value?.focus():fe()?.focus())}function J({restoreFocus:t=!1}={}){I.value=!1,L.value=!1,R.value=``,t&&e(()=>N.value?.focus())}function Y(e){A.disabled||e.disabled||(j(`update:modelValue`,e.value),j(`change`,e.value),J({restoreFocus:!0}))}function le(e){[`ArrowDown`,`Enter`,` `].includes(e.key)&&(e.preventDefault(),q())}function ue(e){if(e.key===`Escape`){e.preventDefault(),J({restoreFocus:!0});return}if(e.key===`ArrowDown`){e.preventDefault(),$()?.focus();return}e.key===`Enter`&&(e.preventDefault(),$()?.click())}function de(e,t){if(e.key===`Enter`||e.key===` `){e.preventDefault(),Y(t);return}if(e.key===`Escape`){e.preventDefault(),J({restoreFocus:!0});return}if(![`ArrowDown`,`ArrowUp`,`Home`,`End`].includes(e.key))return;e.preventDefault();let n=Q(),r=n.indexOf(e.currentTarget);n[e.key===`Home`?0:e.key===`End`?n.length-1:e.key===`ArrowDown`?Math.min(n.length-1,r+1):Math.max(0,r-1)]?.focus()}function X(e){I.value&&!M.value?.contains(e.target)&&J()}function Z(e){let t=e.relatedTarget;t&&M.value?.contains(t)||queueMicrotask(()=>{I.value&&!M.value?.contains(document.activeElement)&&J()})}function Q(){return[...F.value?.querySelectorAll(`.searchable-select-option:not(:disabled)`)??[]]}function $(){return Q()[0]??null}function fe(){return Q().find(e=>e.getAttribute(`aria-selected`)===`true`)??$()}function pe(){let e=N.value?.getBoundingClientRect();L.value=!!(e&&window.innerHeight-e.bottom<270&&e.top>270)}return(e,r)=>(i(),y(`div`,{ref_key:`root`,ref:M,class:_([`searchable-select`,{open:I.value,"open-up":L.value,disabled:o.disabled}]),"data-select-id":o.controlId,onFocusout:Z},[v(`select`,{class:`searchable-select-native`,value:o.modelValue,name:o.name,required:o.required,disabled:o.disabled,tabindex:`-1`,"aria-hidden":`true`},[(i(!0),y(p,null,t(o.options,e=>(i(),y(`option`,{key:e.value,value:e.value,disabled:e.disabled},u(e.label),9,C))),128))],8,S),v(`button`,{ref_key:`trigger`,ref:N,type:`button`,class:`searchable-select-trigger`,role:`combobox`,"aria-haspopup":`listbox`,"aria-expanded":I.value,"aria-controls":U.value,"aria-label":B.value,disabled:o.disabled,onPointerdown:r[0]||=h(()=>{},[`stop`]),onClick:h(ce,[`stop`]),onKeydown:le},[v(`span`,T,[v(`span`,E,u(W.value?.label||V.value),1),W.value?.meta?(i(),y(`small`,D,u(W.value.meta),1)):d(``,!0)]),r[3]||=v(`i`,{class:`searchable-select-arrow`,"aria-hidden":`true`},null,-1)],40,w),v(`div`,{class:`searchable-select-panel`,hidden:!I.value},[G.value?(i(),y(`div`,te,[n(v(`input`,{ref_key:`searchInput`,ref:P,"onUpdate:modelValue":r[1]||=e=>R.value=e,type:`search`,autocomplete:`off`,placeholder:H.value,"aria-label":g(l)(`common.searchableSelect.searchAria`,{label:B.value}),onKeydown:ue},null,40,ne),[[f,R.value]])])):d(``,!0),v(`div`,{id:U.value,ref_key:`optionsList`,ref:F,class:`searchable-select-options`,role:`listbox`},[(i(!0),y(p,null,t(K.value,e=>(i(),y(`button`,{key:e.value,type:`button`,class:`searchable-select-option`,role:`option`,"aria-selected":e.value===o.modelValue,disabled:e.disabled,onMousedown:r[2]||=h(()=>{},[`prevent`]),onClick:t=>Y(e),onKeydown:t=>de(t,e)},[v(`span`,ae,[v(`strong`,null,u(e.label),1),e.meta?(i(),y(`small`,oe,u(e.meta),1)):d(``,!0)]),r[4]||=v(`i`,{class:`searchable-select-check`,"aria-hidden":`true`},null,-1)],40,ie))),128))],8,re),K.value.length===0?(i(),y(`p`,se,u(g(l)(`common.searchableSelect.noMatches`)),1)):d(``,!0)],8,O)],42,x))}});export{k as t};
1
+ import{A as e,L as t,M as n,P as r,R as i,V as a,X as o,_ as s,a as c,b as l,d as u,h as d,it as f,j as p,k as m,m as h,n as ee,nt as g,tt as _,v,w as y,x as b}from"./i18n-D2CJkEYK.js";var x=[`data-select-id`],S=[`value`,`name`,`required`,`disabled`],C=[`value`,`disabled`],w=[`aria-expanded`,`aria-controls`,`aria-label`,`disabled`],T={class:`searchable-select-current`},E={class:`searchable-select-current-label`},D={key:0,class:`searchable-select-current-meta`},O=[`hidden`],te={key:0,class:`searchable-select-search`},ne=[`placeholder`,`aria-label`],re=[`id`],ie=[`aria-selected`,`disabled`,`onClick`,`onKeydown`],ae={class:`searchable-select-option-copy`},oe={key:0},se={key:1,class:`searchable-select-empty`},k=y({__name:`SearchableSelect`,props:{modelValue:{},options:{},label:{},controlId:{default:void 0},placeholder:{default:void 0},searchPlaceholder:{default:void 0},searchable:{type:Boolean,default:void 0},disabled:{type:Boolean,default:!1},required:{type:Boolean,default:!1},name:{default:void 0}},emits:[`update:modelValue`,`change`],setup(y,{emit:k}){let A=y,j=k,M=o(null),N=o(null),P=o(null),F=o(null),I=o(!1),L=o(!1),R=o(``),z=t().replace(/[^A-Za-z0-9_-]/g,``),B=s(()=>A.label),V=s(()=>A.placeholder??c(`common.searchableSelect.placeholder`)),H=s(()=>A.searchPlaceholder??c(`common.searchableSelect.searchPlaceholder`)),U=s(()=>`${A.controlId||`searchable-select-${z}`}-options`),W=s(()=>A.options.find(({value:e})=>e===A.modelValue)??null),G=s(()=>A.searchable??A.options.length>5),K=s(()=>{let e=ee(),t=R.value.trim().toLocaleLowerCase(e);return t?A.options.filter(n=>[n.label,n.value,n.meta,n.search].filter(Boolean).join(` `).toLocaleLowerCase(e).includes(t)):A.options});i(()=>A.disabled,e=>{e&&J()}),p(()=>{document.addEventListener(`pointerdown`,X)}),e(()=>{document.removeEventListener(`pointerdown`,X)});async function ce(){I.value?J():await q()}async function q(){A.disabled||(R.value=``,pe(),I.value=!0,await m(),G.value?P.value?.focus():fe()?.focus())}function J({restoreFocus:e=!1}={}){I.value=!1,L.value=!1,R.value=``,e&&m(()=>N.value?.focus())}function Y(e){A.disabled||e.disabled||(j(`update:modelValue`,e.value),j(`change`,e.value),J({restoreFocus:!0}))}function le(e){[`ArrowDown`,`Enter`,` `].includes(e.key)&&(e.preventDefault(),q())}function ue(e){if(e.key===`Escape`){e.preventDefault(),J({restoreFocus:!0});return}if(e.key===`ArrowDown`){e.preventDefault(),$()?.focus();return}e.key===`Enter`&&(e.preventDefault(),$()?.click())}function de(e,t){if(e.key===`Enter`||e.key===` `){e.preventDefault(),Y(t);return}if(e.key===`Escape`){e.preventDefault(),J({restoreFocus:!0});return}if(![`ArrowDown`,`ArrowUp`,`Home`,`End`].includes(e.key))return;e.preventDefault();let n=Q(),r=n.indexOf(e.currentTarget);n[e.key===`Home`?0:e.key===`End`?n.length-1:e.key===`ArrowDown`?Math.min(n.length-1,r+1):Math.max(0,r-1)]?.focus()}function X(e){I.value&&!M.value?.contains(e.target)&&J()}function Z(e){let t=e.relatedTarget;t&&M.value?.contains(t)||queueMicrotask(()=>{I.value&&!M.value?.contains(document.activeElement)&&J()})}function Q(){return[...F.value?.querySelectorAll(`.searchable-select-option:not(:disabled)`)??[]]}function $(){return Q()[0]??null}function fe(){return Q().find(e=>e.getAttribute(`aria-selected`)===`true`)??$()}function pe(){let e=N.value?.getBoundingClientRect();L.value=!!(e&&window.innerHeight-e.bottom<270&&e.top>270)}return(e,t)=>(n(),b(`div`,{ref_key:`root`,ref:M,class:g([`searchable-select`,{open:I.value,"open-up":L.value,disabled:y.disabled}]),"data-select-id":y.controlId,onFocusout:Z},[v(`select`,{class:`searchable-select-native`,value:y.modelValue,name:y.name,required:y.required,disabled:y.disabled,tabindex:`-1`,"aria-hidden":`true`},[(n(!0),b(d,null,r(y.options,e=>(n(),b(`option`,{key:e.value,value:e.value,disabled:e.disabled},f(e.label),9,C))),128))],8,S),v(`button`,{ref_key:`trigger`,ref:N,type:`button`,class:`searchable-select-trigger`,role:`combobox`,"aria-haspopup":`listbox`,"aria-expanded":I.value,"aria-controls":U.value,"aria-label":B.value,disabled:y.disabled,onPointerdown:t[0]||=h(()=>{},[`stop`]),onClick:h(ce,[`stop`]),onKeydown:le},[v(`span`,T,[v(`span`,E,f(W.value?.label||V.value),1),W.value?.meta?(n(),b(`small`,D,f(W.value.meta),1)):l(``,!0)]),t[3]||=v(`i`,{class:`searchable-select-arrow`,"aria-hidden":`true`},null,-1)],40,w),v(`div`,{class:`searchable-select-panel`,hidden:!I.value},[G.value?(n(),b(`div`,te,[a(v(`input`,{ref_key:`searchInput`,ref:P,"onUpdate:modelValue":t[1]||=e=>R.value=e,type:`search`,autocomplete:`off`,placeholder:H.value,"aria-label":_(c)(`common.searchableSelect.searchAria`,{label:B.value}),onKeydown:ue},null,40,ne),[[u,R.value]])])):l(``,!0),v(`div`,{id:U.value,ref_key:`optionsList`,ref:F,class:`searchable-select-options`,role:`listbox`},[(n(!0),b(d,null,r(K.value,e=>(n(),b(`button`,{key:e.value,type:`button`,class:`searchable-select-option`,role:`option`,"aria-selected":e.value===y.modelValue,disabled:e.disabled,onMousedown:t[2]||=h(()=>{},[`prevent`]),onClick:t=>Y(e),onKeydown:t=>de(t,e)},[v(`span`,ae,[v(`strong`,null,f(e.label),1),e.meta?(n(),b(`small`,oe,f(e.meta),1)):l(``,!0)]),t[4]||=v(`i`,{class:`searchable-select-check`,"aria-hidden":`true`},null,-1)],40,ie))),128))],8,re),K.value.length===0?(n(),b(`p`,se,f(_(c)(`common.searchableSelect.noMatches`)),1)):l(``,!0)],8,O)],42,x))}});export{k as t};
@@ -0,0 +1 @@
1
+ .settings-fields[data-v-a4c2b855]{border:0;min-width:0;margin:0;padding:0;display:contents}.settings-view[data-v-a4c2b855]{background:var(--color-bg);padding-top:24px}.settings-content[data-v-a4c2b855]{gap:18px;width:min(1120px,100%);margin:0 auto;display:grid}.settings-form[data-v-a4c2b855]{gap:18px;display:grid}.settings-card[data-v-a4c2b855]{border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);padding:26px}.section-heading[data-v-a4c2b855]{justify-content:space-between;align-items:center;gap:18px;margin-bottom:22px;display:flex}.settings-card h3[data-v-a4c2b855]{color:var(--color-ink);font-size:16px}.section-heading p[data-v-a4c2b855]{color:var(--color-muted);margin-top:5px;font-size:12px}.resource-totals[data-v-a4c2b855]{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.resource-totals article[data-v-a4c2b855]{border:1px solid var(--color-border);background:var(--color-surface);border-radius:10px;align-content:center;gap:7px;min-height:126px;padding:20px 22px;display:grid}.resource-totals span[data-v-a4c2b855]{color:var(--color-muted);font-size:12px}.resource-totals strong[data-v-a4c2b855]{color:var(--color-ink);letter-spacing:-.04em;font-size:clamp(25px,3vw,34px)}.resource-totals small[data-v-a4c2b855]{color:var(--color-muted);font-size:12px}.resource-breakdowns[data-v-a4c2b855]{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;margin-top:26px;display:grid}.resource-group[data-v-a4c2b855]{gap:13px;display:grid}.resource-group h4[data-v-a4c2b855],.port-section h4[data-v-a4c2b855]{color:var(--color-ink);font-size:12px}.resource-row[data-v-a4c2b855]{gap:6px;display:grid}.resource-row>div[data-v-a4c2b855]{color:var(--color-muted);justify-content:space-between;gap:12px;font-size:12px;display:flex}.resource-row strong[data-v-a4c2b855]{color:var(--color-ink);font-weight:650}.resource-row i[data-v-a4c2b855]{background:var(--color-surface-subtle);border-radius:999px;height:5px;overflow:hidden}.resource-row b[data-v-a4c2b855]{border-radius:inherit;background:var(--color-muted);height:100%;display:block}.resource-group:last-child .resource-row b[data-v-a4c2b855]{background:var(--color-muted)}.resource-notes[data-v-a4c2b855]{color:var(--color-muted);flex-wrap:wrap;gap:8px 18px;margin-top:22px;font-size:12px;display:flex}.restart-chip[data-v-a4c2b855]{border:1px solid var(--color-warning);color:var(--color-warning);background:var(--color-warning-soft);border-radius:999px;padding:5px 9px;font-size:12px;font-weight:700}.port-section[data-v-a4c2b855]{gap:13px;display:grid}.port-section+.port-section[data-v-a4c2b855]{border-top:1px solid var(--color-border);margin-top:25px;padding-top:22px}.development-section>div[data-v-a4c2b855]{align-items:center;gap:9px;display:flex}.development-section>div>span[data-v-a4c2b855]{color:var(--color-warning);background:var(--color-warning-soft);border-radius:999px;padding:4px 8px;font-size:12px;font-weight:700}.development-section>p[data-v-a4c2b855]{color:var(--color-muted);font-size:12px}.port-grid[data-v-a4c2b855]{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.port-grid label[data-v-a4c2b855]{color:var(--color-muted);gap:7px;font-size:12px;display:grid}.port-grid input[data-v-a4c2b855]{width:100%}.port-grid small[data-v-a4c2b855]{color:var(--color-muted);font-size:12px}.behavior-card>h3[data-v-a4c2b855],.conversation-launcher-card>h3[data-v-a4c2b855]{margin-bottom:14px}.conversation-launcher-list[data-v-a4c2b855]{display:grid}.conversation-launcher-row[data-v-a4c2b855]{border-top:1px solid var(--color-border);padding:16px 0}.conversation-launcher-row[data-v-a4c2b855]:first-child{border-top:0}.conversation-launcher-heading[data-v-a4c2b855]{justify-content:space-between;align-items:center;gap:20px;min-height:34px;display:flex}.conversation-launcher-heading>span[data-v-a4c2b855]{gap:4px;display:grid}.conversation-launcher-heading strong[data-v-a4c2b855]{color:var(--color-ink);font-size:12px}.conversation-launcher-heading small[data-v-a4c2b855]{color:var(--color-muted);font-size:12px}.conversation-launcher-switch[data-v-a4c2b855]{color:var(--color-muted);align-items:center;gap:9px;font-size:12px;display:flex}.conversation-launcher-switch input[role=switch][data-v-a4c2b855]{margin:0}.conversation-launcher-note[data-v-a4c2b855]{max-width:760px;color:var(--color-muted);margin-top:9px;font-size:12px;line-height:1.45;display:block}.conversation-launcher-fields[data-v-a4c2b855]{grid-template-columns:minmax(150px,.7fr) minmax(160px,.8fr) minmax(280px,1.5fr);align-items:start;gap:12px;margin-top:14px;display:grid}.conversation-launcher-fields>label[data-v-a4c2b855]{min-width:0;color:var(--color-muted);grid-template-rows:18px 40px;align-content:start;gap:7px;font-size:12px;display:grid}.conversation-launcher-fields>label>span[data-v-a4c2b855]{text-overflow:ellipsis;white-space:nowrap;min-width:0;line-height:18px;display:block;overflow:hidden}.conversation-launcher-fields code[data-v-a4c2b855]{color:var(--color-muted);font-size:12px}.conversation-launcher-fields[data-v-a4c2b855] .launcher-select{width:100%;min-width:0;height:40px}.conversation-launcher-fields input[data-v-a4c2b855]{width:100%}.conversation-launcher-fields[data-v-a4c2b855] .launcher-select .searchable-select-current{align-items:center}.conversation-launcher-fields[data-v-a4c2b855] .launcher-select .searchable-select-current-label{font-weight:500}.conversation-launcher-fields[data-v-a4c2b855] .launcher-select .searchable-select-panel{width:100%;min-width:0}.setting-list[data-v-a4c2b855]{display:grid}.setting-row[data-v-a4c2b855]{border-top:1px solid var(--color-border);cursor:pointer;justify-content:space-between;align-items:center;gap:24px;min-height:64px;display:flex}.setting-row[data-v-a4c2b855]:first-child{border-top:0}.setting-row>span[data-v-a4c2b855]{gap:4px;display:grid}.setting-row strong[data-v-a4c2b855]{color:var(--color-ink);font-size:14px}.setting-row small[data-v-a4c2b855]{color:var(--color-muted);font-size:12px}.setting-row input[role=switch][data-v-a4c2b855],.conversation-launcher-switch input[role=switch][data-v-a4c2b855]{appearance:none;background:var(--color-muted);cursor:pointer;border-radius:999px;width:38px;height:21px;transition:background .18s;position:relative}.setting-row input[role=switch][data-v-a4c2b855]:after,.conversation-launcher-switch input[role=switch][data-v-a4c2b855]:after{content:"";background:var(--color-surface);border-radius:50%;width:17px;height:17px;transition:transform .18s;position:absolute;top:50%;left:2px;transform:translateY(-50%);box-shadow:0 0 4px #0000002e}.setting-row input[role=switch][data-v-a4c2b855]:checked,.conversation-launcher-switch input[role=switch][data-v-a4c2b855]:checked{background:var(--color-accent)}.setting-row input[role=switch][data-v-a4c2b855]:checked:after,.conversation-launcher-switch input[role=switch][data-v-a4c2b855]:checked:after{transform:translate(17px,-50%)}.select-row .settings-select[data-v-a4c2b855]{width:180px;min-width:0}.select-row[data-v-a4c2b855] .settings-select .searchable-select-current{align-items:center}.select-row[data-v-a4c2b855] .settings-select .searchable-select-current-label{font-weight:500}.select-row[data-v-a4c2b855] .settings-select .searchable-select-arrow{border-width:1.5px;width:8px;height:8px;margin-right:1px}.select-row[data-v-a4c2b855] .settings-select .searchable-select-panel{width:100%;min-width:0}.settings-top-status[data-v-a4c2b855]{color:var(--color-muted);flex-wrap:wrap;align-items:center;gap:6px 16px;padding:0 4px 2px;font-size:12px;display:flex}.settings-top-status strong[data-v-a4c2b855]{color:var(--color-muted);font-weight:700}.settings-error[data-v-a4c2b855]{border-radius:var(--radius-control);color:var(--color-danger);background:var(--color-surface);padding:11px 13px;font-size:12px}@media (width<=900px){.port-grid[data-v-a4c2b855],.conversation-launcher-fields[data-v-a4c2b855]{grid-template-columns:repeat(2,minmax(0,1fr))}.conversation-launcher-template[data-v-a4c2b855]{grid-column:1/-1}}@media (width<=680px){.settings-card[data-v-a4c2b855]{padding:20px}.resource-totals[data-v-a4c2b855],.resource-breakdowns[data-v-a4c2b855],.port-grid[data-v-a4c2b855],.conversation-launcher-fields[data-v-a4c2b855]{grid-template-columns:1fr}.conversation-launcher-template[data-v-a4c2b855]{grid-column:auto}.select-row[data-v-a4c2b855]{flex-direction:column;align-items:flex-start;padding:14px 0}.select-row .settings-select[data-v-a4c2b855]{width:100%}}
@@ -0,0 +1 @@
1
+ import{A as e,B as t,C as n,M as r,P as i,R as a,S as ee,V as o,X as s,_ as c,a as l,b as u,c as d,d as f,h as p,i as m,it as h,j as te,m as ne,n as re,r as ie,rt as g,tt as _,v,w as ae,x as y,y as b}from"./i18n-D2CJkEYK.js";import{t as oe}from"./console-BtPqo79j.js";import{t as x}from"./GrowthLoading-KTjE2e50.js";import{t as S}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{a as se,n as C}from"./client-B2cRl-7c.js";import{t as w}from"./UiDisclosure-CWlC91Zt.js";import{t as T}from"./SearchableSelect-f7EHbyDL.js";import{i as ce,n as E,s as le,t as D}from"./conversation-launcher-settings-jkHRmWai.js";var ue=[`aria-label`],de={class:`settings-content`},fe={key:1,class:`settings-top-status`,role:`status`},pe={key:0},me={key:1},he=[`aria-busy`],ge=[`disabled`],_e={class:`settings-card behavior-card`},ve={class:`setting-list`},ye={class:`setting-row`},O=[`checked`],k={class:`setting-row`},A=[`checked`],j={class:`setting-row`},M={class:`setting-row select-row`},N={class:`setting-row select-row`},P={class:`setting-row select-row`},be={key:0,class:`restart-chip`},xe={class:`port-section`},Se={class:`port-grid`},Ce=[`onUpdate:modelValue`],we={class:`port-section development-section`},Te={class:`conversation-launcher-list`},Ee={class:`conversation-launcher-heading`},De={class:`conversation-launcher-switch`},Oe=[`onUpdate:modelValue`],ke={key:0,class:`conversation-launcher-note`},Ae={key:1,class:`conversation-launcher-fields`},je=[`onUpdate:modelValue`],Me={class:`conversation-launcher-template`},Ne=[`onUpdate:modelValue`],Pe={key:0,class:`settings-error`,role:`alert`},Fe={class:`settings-card resource-card`},Ie={class:`section-heading`},Le={key:0},Re=[`disabled`],ze={key:1,class:`settings-error`,role:`alert`},Be={class:`resource-totals`},Ve={class:`resource-breakdowns`},He={class:`resource-group`},Ue={class:`resource-group`},We={class:`resource-notes`},Ge={key:0},Ke={key:1},qe={key:4,class:`settings-error`,role:`alert`},F=S(ae({__name:`SettingsPage`,setup(ae){let S=oe(),F=s(null),I=s(null),L=s(null),R=s(!0),z=c({get:()=>S.settingsSaving,set:e=>{S.settingsSaving=e}}),B=s(!1),V=s(``),H=s(``),U=s(!1),W=null,Je=[`console`,`personalProvider`,`personalNeo4jHttp`,`personalNeo4jBolt`],G=c({get:()=>re(),set:e=>m(e)}),K=[5,10,30,60],Ye=ce,Xe=c(()=>[{value:`zh-CN`,label:l(`settings.behavior.zh`)},{value:`en-US`,label:l(`settings.behavior.en`)}]),Ze=c(()=>K.map(e=>({value:String(e),label:l(`settings.resources.refreshUnit`,{seconds:e})}))),Qe=c(()=>[{value:`native`,label:l(`settings.behavior.runtimeModes.native`)},{value:`container`,label:l(`settings.behavior.runtimeModes.container`)}]),$e=c(()=>[{value:`any`,label:l(`settings.conversationLaunchers.idFormats.any`)},{value:`uuid`,label:l(`settings.conversationLaunchers.idFormats.uuid`)}]),et=c(()=>S.state?.capturePolicy?.enabled!==!1),tt=c(()=>S.state?.agentAccessPolicy?.enabled!==!1),nt=c(()=>Math.max(1,...L.value?.memory.components.map(({bytes:e})=>e)??[1])),rt=c(()=>Math.max(1,...L.value?.disk.components.map(({bytes:e})=>e)??[1])),it=c(()=>I.value?.graphRuntimeMode===`container`&&Number.isFinite(L.value?.memory.hostTotalBytes)&&Number(L.value?.memory.hostTotalBytes)<=16*1024**3);te(async()=>{S.runtimeStatus===`idle`&&S.refresh(),await Promise.all([at(),q()]),R.value=!1}),e(Y),a(()=>I.value?.resourceRefreshSeconds,()=>J());async function at(){try{let e=await C(`/api/system/settings`);F.value=e,I.value={...structuredClone(e.configured),conversationLaunchers:D(e.configured.conversationLaunchers)},E(e.configured.conversationLaunchers),V.value=``}catch(e){V.value=e instanceof Error?e.message:l(`settings.loadError`)}}async function q(){if(!(B.value||document.visibilityState===`hidden`)){B.value=!0;try{L.value=await C(`/api/system/resources`),H.value=``}catch(e){H.value=e instanceof Error?e.message:l(`settings.resources.unavailable`)}finally{B.value=!1}}}async function ot(){if(!(!I.value||z.value)){z.value=!0,U.value=!1;try{let e=await se(`/api/system/settings`,I.value);F.value=e,I.value={...structuredClone(e.configured),conversationLaunchers:D(e.configured.conversationLaunchers)},E(e.configured.conversationLaunchers),U.value=!0,V.value=``,window.setTimeout(()=>{U.value=!1},2400)}catch(e){V.value=e instanceof Error?e.message:l(`settings.saveError`)}finally{z.value=!1}}}function J(){Y();let e=I.value?.resourceRefreshSeconds;e&&(W=setInterval(()=>void q(),e*1e3))}function Y(){W&&clearInterval(W),W=null}function st(e){S.updateCapturePolicy(e.currentTarget.checked)}function ct(e){S.updateAgentAccessPolicy(e.currentTarget.checked)}function lt(e){(e===`zh-CN`||e===`en-US`)&&m(e)}function ut(e){let t=K.find(t=>String(t)===e);t===void 0||!I.value||(I.value.resourceRefreshSeconds=t)}function dt(e){!I.value||e!==`native`&&e!==`container`||(I.value.graphRuntimeMode=e)}function ft(e){let t=l(`settings.conversationLaunchers.applications.${e}`);return t===`settings.conversationLaunchers.applications.${e}`?le(e):t}function pt(e){return F.value?.active.ports[e]??`—`}function X(e){let t=`settings.resources.components.${e.id.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}`;return ie.global.te(t)?l(t):e.label}function Z(e){if(!Number.isFinite(e))return`—`;let t=Number(e),n=[`B`,`KiB`,`MiB`,`GiB`,`TiB`],r=t,i=0;for(;r>=1024&&i<n.length-1;)r/=1024,i+=1;let a=i===0||r>=100?0:r>=10?1:2;return`${r.toFixed(a)} ${n[i]}`}function Q(e,t){return`${Math.max(3,Math.round(e/t*100))}%`}function $(e){return e?new Intl.DateTimeFormat(G.value,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`}).format(new Date(e)):`—`}function mt(e){let t=e.target.closest(`details`);for(;t;)t.open=!0,t=t.parentElement?.closest(`details`)??null}return(e,a)=>(r(),y(`section`,{class:`view settings-view`,"aria-label":_(l)(`settings.aria`)},[v(`div`,de,[z.value?(r(),b(x,{key:0,variant:`inline`,label:_(l)(`settings.saving`)},null,8,[`label`])):u(``,!0),U.value||F.value?.restartRequired?(r(),y(`div`,fe,[U.value?(r(),y(`strong`,pe,h(_(l)(`settings.saved`)),1)):u(``,!0),F.value?.restartRequired?(r(),y(`span`,me,h(_(l)(`settings.restartCopy`)),1)):u(``,!0)])):u(``,!0),R.value&&!I.value?(r(),b(x,{key:2,variant:`compact`,label:_(l)(`settings.loading`)},null,8,[`label`])):u(``,!0),I.value?(r(),y(`form`,{key:3,id:`settings-form`,class:`settings-form`,"aria-busy":z.value,onSubmit:ne(ot,[`prevent`]),onInvalidCapture:mt},[v(`fieldset`,{class:`settings-fields`,disabled:z.value},[v(`section`,_e,[v(`h3`,null,h(_(l)(`settings.behavior.title`)),1),v(`div`,ve,[v(`label`,ye,[v(`span`,null,[v(`strong`,null,h(_(l)(`settings.behavior.capture`)),1),v(`small`,null,h(_(l)(`settings.behavior.captureMeta`)),1)]),v(`input`,{type:`checkbox`,role:`switch`,checked:et.value,onChange:st},null,40,O)]),v(`label`,k,[v(`span`,null,[v(`strong`,null,h(_(l)(`settings.behavior.agentAccess`)),1),v(`small`,null,h(_(l)(`settings.behavior.agentAccessMeta`)),1)]),v(`input`,{type:`checkbox`,role:`switch`,checked:tt.value,onChange:ct},null,40,A)]),v(`label`,j,[v(`span`,null,[v(`strong`,null,h(_(l)(`settings.behavior.lanAccess`)),1),v(`small`,null,h(_(l)(`settings.behavior.lanAccessMeta`)),1)]),o(v(`input`,{"onUpdate:modelValue":a[0]||=e=>I.value.lanAccess=e,type:`checkbox`,role:`switch`},null,512),[[d,I.value.lanAccess]])]),v(`div`,M,[v(`span`,null,[v(`strong`,null,h(_(l)(`settings.behavior.runtimeMode`)),1),v(`small`,null,h(it.value?_(l)(`settings.behavior.runtimeRecommendation`):_(l)(`settings.behavior.runtimeModeMeta`,{mode:_(l)(`settings.behavior.runtimeModes.${F.value?.active.graphRuntimeMode??I.value.graphRuntimeMode}`)})),1)]),n(T,{class:`settings-select`,"control-id":`settings-runtime-mode`,"model-value":I.value.graphRuntimeMode,options:Qe.value,label:_(l)(`settings.behavior.runtimeMode`),"onUpdate:modelValue":dt},null,8,[`model-value`,`options`,`label`])]),v(`div`,N,[v(`span`,null,[v(`strong`,null,h(_(l)(`settings.behavior.language`)),1)]),n(T,{class:`settings-select`,"control-id":`settings-language`,"model-value":G.value,options:Xe.value,label:_(l)(`settings.behavior.language`),"onUpdate:modelValue":lt},null,8,[`model-value`,`options`,`label`])]),v(`div`,P,[v(`span`,null,[v(`strong`,null,h(_(l)(`settings.resources.refresh`)),1)]),n(T,{class:`settings-select`,"control-id":`settings-refresh-interval`,"model-value":String(I.value.resourceRefreshSeconds),options:Ze.value,label:_(l)(`settings.resources.refresh`),"onUpdate:modelValue":ut},null,8,[`model-value`,`options`,`label`])])])]),n(w,{class:`settings-card ports-card`,title:_(l)(`settings.ports.title`)},{default:t(()=>[F.value?.restartRequired?(r(),y(`span`,be,h(_(l)(`settings.restartRequired`)),1)):u(``,!0),v(`div`,xe,[v(`h4`,null,h(_(l)(`settings.ports.personal`)),1),v(`div`,Se,[(r(),y(p,null,i(Je,e=>v(`label`,{key:e},[v(`span`,null,h(_(l)(`settings.ports.${e}`)),1),o(v(`input`,{"onUpdate:modelValue":t=>I.value.ports[e]=t,type:`number`,min:`1`,max:`65535`,required:``},null,8,Ce),[[f,I.value.ports[e],void 0,{number:!0}]]),v(`small`,null,h(_(l)(`settings.ports.active`,{port:pt(e)})),1)])),64))])]),v(`div`,we,[v(`div`,null,[v(`h4`,null,h(_(l)(`settings.ports.development`)),1),v(`span`,null,h(_(l)(`settings.ports.developing`)),1)]),v(`p`,null,h(_(l)(`settings.ports.developmentMeta`)),1)])]),_:1},8,[`title`]),n(w,{id:`conversation-launchers`,class:`settings-card conversation-launcher-card`,title:_(l)(`settings.conversationLaunchers.title`)},{default:t(()=>[v(`div`,Te,[(r(!0),y(p,null,i(_(Ye),e=>(r(),y(`article`,{key:e,class:`conversation-launcher-row`},[v(`div`,Ee,[v(`span`,null,[v(`strong`,null,h(ft(e)),1),v(`small`,null,h(_(l)(`settings.conversationLaunchers.sourceId`,{id:e})),1)]),v(`label`,De,[v(`span`,null,h(_(l)(`settings.conversationLaunchers.enabled`)),1),o(v(`input`,{"onUpdate:modelValue":t=>I.value.conversationLaunchers[e].enabled=t,type:`checkbox`,role:`switch`},null,8,Oe),[[d,I.value.conversationLaunchers[e].enabled]])])]),I.value.conversationLaunchers[e].enabled&&e===`codex`?(r(),y(`small`,ke,h(_(l)(`settings.conversationLaunchers.idFormatMeta`)),1)):u(``,!0),I.value.conversationLaunchers[e].enabled?(r(),y(`div`,Ae,[v(`label`,null,[v(`span`,null,h(_(l)(`settings.conversationLaunchers.idFormat`)),1),n(T,{modelValue:I.value.conversationLaunchers[e].idFormat,"onUpdate:modelValue":t=>I.value.conversationLaunchers[e].idFormat=t,class:`launcher-select`,"control-id":`settings-conversation-${e}-id-format`,options:$e.value,label:_(l)(`settings.conversationLaunchers.idFormat`)},null,8,[`modelValue`,`onUpdate:modelValue`,`control-id`,`options`,`label`])]),v(`label`,null,[v(`span`,null,h(_(l)(`settings.conversationLaunchers.appName`)),1),o(v(`input`,{"onUpdate:modelValue":t=>I.value.conversationLaunchers[e].appName=t,type:`text`,maxlength:`64`,required:``},null,8,je),[[f,I.value.conversationLaunchers[e].appName,void 0,{trim:!0}]])]),v(`label`,Me,[v(`span`,null,[ee(h(_(l)(`settings.conversationLaunchers.urlTemplate`))+` `,1),a[1]||=v(`small`,null,[v(`code`,null,`{id}`)],-1)]),o(v(`input`,{"onUpdate:modelValue":t=>I.value.conversationLaunchers[e].urlTemplate=t,type:`text`,maxlength:`1024`,spellcheck:`false`,required:``},null,8,Ne),[[f,I.value.conversationLaunchers[e].urlTemplate,void 0,{trim:!0}]])])])):u(``,!0)]))),128))])]),_:1},8,[`title`])],8,ge),V.value?(r(),y(`p`,Pe,h(V.value),1)):u(``,!0)],40,he)):u(``,!0),v(`section`,Fe,[v(`header`,Ie,[v(`div`,null,[v(`h3`,null,h(_(l)(`settings.resources.title`)),1),L.value?(r(),y(`p`,Le,h(_(l)(`settings.resources.measuredAt`,{time:$(L.value.sampledAt)})),1)):u(``,!0)]),v(`button`,{class:`quiet-button`,type:`button`,disabled:B.value,onClick:q},h(_(l)(`common.actions.refresh`)),9,Re)]),B.value?(r(),b(x,{key:0,variant:L.value?`inline`:`compact`,label:_(l)(`settings.resources.loading`)},null,8,[`variant`,`label`])):u(``,!0),H.value?(r(),y(`p`,ze,h(H.value),1)):L.value?(r(),y(p,{key:2},[v(`div`,Be,[v(`article`,null,[v(`span`,null,h(_(l)(`settings.resources.memory`)),1),v(`strong`,null,h(Z(L.value.memory.usedBytes)),1),v(`small`,null,h(_(l)(`settings.resources.available`,{value:Z(L.value.memory.hostFreeBytes)})),1)]),v(`article`,null,[v(`span`,null,h(_(l)(`settings.resources.disk`)),1),v(`strong`,null,h(Z(L.value.disk.usedBytes)),1),v(`small`,null,h(_(l)(`settings.resources.available`,{value:Z(L.value.disk.hostFreeBytes)})),1)])]),n(w,{title:_(l)(`ui.usageDetails`)},{default:t(()=>[v(`div`,Ve,[v(`div`,He,[v(`h4`,null,h(_(l)(`settings.resources.memory`)),1),(r(!0),y(p,null,i(L.value.memory.components,e=>(r(),y(`div`,{key:e.id,class:`resource-row`},[v(`div`,null,[v(`span`,null,h(X(e)),1),v(`strong`,null,h(Z(e.bytes)),1)]),v(`i`,null,[v(`b`,{style:g({width:Q(e.bytes,nt.value)})},null,4)])]))),128))]),v(`div`,Ue,[v(`h4`,null,h(_(l)(`settings.resources.disk`)),1),(r(!0),y(p,null,i(L.value.disk.components,e=>(r(),y(`div`,{key:e.id,class:`resource-row`},[v(`div`,null,[v(`span`,null,h(X(e)),1),v(`strong`,null,h(Z(e.bytes)),1)]),v(`i`,null,[v(`b`,{style:g({width:Q(e.bytes,rt.value)})},null,4)])]))),128))])]),v(`div`,We,[v(`span`,null,h(_(l)(`settings.resources.diskMeasuredAt`,{time:$(L.value.disk.measuredAt)})),1),L.value.status===`partial`?(r(),y(`span`,Ge,h(_(l)(`settings.resources.partial`)),1)):u(``,!0),L.value.disk.temporaryBytes?(r(),y(`span`,Ke,h(_(l)(`settings.resources.temporary`,{value:Z(L.value.disk.temporaryBytes)})),1)):u(``,!0),v(`span`,null,h(_(l)(L.value.exclusions.includes(`shared-container-vm-overhead`)?`settings.resources.exclusionsContainer`:`settings.resources.exclusionsNative`)),1)])]),_:1},8,[`title`])],64)):u(``,!0)]),!R.value&&!I.value?(r(),y(`p`,qe,h(V.value||_(l)(`settings.loadError`)),1)):u(``,!0)])],8,ue))}}),[[`__scopeId`,`data-v-a4c2b855`]]);export{F as default};
@@ -0,0 +1 @@
1
+ import{M as e,R as t,X as n,_ as r,a as i,b as a,h as o,it as s,tt as c,v as l,w as u,x as d,y as f}from"./i18n-D2CJkEYK.js";import{t as p}from"./GrowthLoading-KTjE2e50.js";import{t as m}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{m as h}from"./useApi-CROJJdhE-BtFMXFjw.js";import{i as g,n as _,t as v}from"./shared-report-DEK9wvhl.js";var y={class:`shared-jefa-report`},b={key:1,class:`report-state`,role:`alert`},x={key:0,class:`report-warning`},S={key:1,class:`report-state`,role:`status`},C=m(u({__name:`SharedJefaReportPage`,setup(u){let m=h(),C=n([]),w=n([]),T=n(!1),E=n(0),D=n(``),O=r(()=>C.value.reduce((e,t)=>e+t.items.length,0)),k=r(()=>m.fullPath.includes(`#`)?m.fullPath.slice(m.fullPath.indexOf(`#`)):m.hash),A=0;t(k,()=>{j()},{immediate:!0});async function j(){let e=++A;C.value=[],D.value=``,E.value=0,T.value=!0;try{let t=_(k.value),n=await Promise.allSettled(t.map(v));if(e!==A)return;C.value=n.flatMap(e=>e.status===`fulfilled`?[e.value]:[]),w.value=C.value.map(e=>e.project.id),E.value=n.filter(e=>e.status===`rejected`).length,C.value.length||(D.value=i(`employees.share.unavailable`))}catch{e===A&&(D.value=i(`employees.share.unavailable`))}finally{e===A&&(T.value=!1)}}return(t,n)=>(e(),d(`main`,y,[l(`header`,null,[n[1]||=l(`strong`,null,`Jefa`,-1),l(`h1`,null,s(c(i)(`employees.share.title`)),1),l(`span`,null,s(c(i)(`employees.share.readOnly`)),1)]),T.value?(e(),f(p,{key:0,label:c(i)(`employees.loadingReport`)},null,8,[`label`])):D.value?(e(),d(`div`,b,[l(`p`,null,s(D.value),1),l(`button`,{type:`button`,onClick:j},s(c(i)(`employees.retry`)),1)])):(e(),d(o,{key:2},[E.value?(e(),d(`p`,x,s(c(i)(`employees.share.unavailableCount`,{count:E.value})),1)):a(``,!0),O.value?(e(),f(g,{key:2,"visible-project-ids":w.value,"onUpdate:visibleProjectIds":n[0]||=e=>w.value=e,boards:C.value.filter(e=>w.value.includes(e.project.id)),projects:C.value.map(e=>e.project),"failed-projects":0,"can-move-tasks":!1,"read-only":``,onRetry:j},null,8,[`visible-project-ids`,`boards`,`projects`])):(e(),d(`div`,S,[l(`h2`,null,s(c(i)(`employees.shareContent.emptyTitle`)),1),l(`p`,null,s(c(i)(`employees.shareContent.emptyReport`,{count:C.value.length})),1),l(`button`,{type:`button`,onClick:j},s(c(i)(`common.actions.refresh`)),1)]))],64))]))}}),[[`__scopeId`,`data-v-79d38b0c`]]);export{C as default};
@@ -0,0 +1 @@
1
+ .shared-jefa-report[data-v-79d38b0c]{background:var(--color-surface);flex-direction:column;height:100dvh;min-height:0;display:flex;overflow:hidden}.shared-jefa-report>header[data-v-79d38b0c]{border-bottom:1px solid var(--color-border);align-items:center;gap:16px;padding:20px 24px;display:flex}header strong[data-v-79d38b0c]{color:var(--color-ink);font-size:22px}header h1[data-v-79d38b0c]{margin:0;font-size:18px}header span[data-v-79d38b0c]{color:var(--color-muted);margin-left:auto;font-size:12px}.report-state[data-v-79d38b0c]{text-align:center;margin:auto;padding:24px}.report-state h2[data-v-79d38b0c]{font-size:18px}.report-state p[data-v-79d38b0c]{max-width:44ch;color:var(--color-muted);line-height:1.7}.report-state button[data-v-79d38b0c]{border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);min-height:44px;color:var(--color-ink);padding:8px 16px}.report-warning[data-v-79d38b0c]{color:var(--color-warning);margin:12px 24px 0;font-size:13px}
@@ -0,0 +1 @@
1
+ import{F as e,M as t,S as n,it as r,v as i,w as a,x as o}from"./i18n-D2CJkEYK.js";var s=[`open`],c=a({__name:`UiDisclosure`,props:{title:{},open:{type:Boolean,default:!1}},setup(a){return(c,l)=>(t(),o(`details`,{class:`ui-disclosure`,open:a.open},[i(`summary`,null,[n(r(a.title),1),e(c.$slots,`summary`)]),e(c.$slots,`default`)],8,s))}});export{c as t};
@@ -0,0 +1 @@
1
+ import{A as e,B as t,C as n,M as r,P as i,R as a,S as o,X as s,_ as c,a as l,b as u,h as d,it as f,nt as p,tt as m,v as h,w as g,x as _,y as v}from"./i18n-D2CJkEYK.js";import{t as ee}from"./console-BtPqo79j.js";import{t as y}from"./GrowthLoading-KTjE2e50.js";import{t as b}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as te}from"./vue-router-DkaTtPn0.js";import{n as ne}from"./client-B2cRl-7c.js";import{t as re}from"./UiDisclosure-CWlC91Zt.js";import{i as ie,n as ae,t as oe}from"./KnowledgeEditDialog-n9trHQ5d.js";import{u as se,x as ce}from"./model-S7ehAjky.js";import{t as le}from"./personal-profile-graph--GG3Mizo.js";var x={class:`view writing-taste-view`},ue={key:2,class:`view-loading`,"aria-busy":`true`},de={key:3,class:`writing-taste-unavailable`},fe=[`role`],pe={class:`writing-taste-hero__copy`},me={class:`writing-taste-status`},S={class:`writing-taste-hero__score`,"aria-hidden":`true`},C=[`aria-label`],w={"aria-hidden":`true`},T={class:`writing-taste-rules`},E={key:0,class:`writing-taste-rule-list`},D={class:`writing-taste-rule__status`},O={key:0,class:`conflict`},k={class:`writing-taste-rule__body`},A={key:0},j={key:1},M={key:0},N={key:0,class:`writing-taste-rule__actions`},P=[`onClick`],F=[`onClick`],I={key:1,class:`writing-taste-empty`},L={key:0,class:`writing-taste-agent-preview`},R={key:0},z=b(g({__name:`WritingTastePage`,setup(g){let b=ee(),z=s(null),B=s(null),V=s(!1),H=s(!1),U=s(null),W=s(null),G=s(!1),K=0,q=null,J=c(()=>V.value&&!z.value),Y=ie(J),X=c(()=>ce(B.value)),Z=c(()=>new Map(X.value.map(e=>[`${e.itemKind}:${e.id}`,e]))),he=c(()=>z.value?.status===`active`?l(`writingTaste.page.activeTitle`):z.value?.status===`preview_ready`?l(`writingTaste.page.previewTitle`):l(`writingTaste.page.collectingTitle`)),ge=c(()=>z.value?.status===`active`?l(`writingTaste.page.activeCopy`):z.value?.status===`preview_ready`?l(`writingTaste.page.previewCopy`):l(`writingTaste.page.collectingCopy`));a(()=>b.activePersonalSpace?.id,e=>{z.value=null,B.value=null,U.value=null,W.value=null,G.value=!1,Q(e)},{immediate:!0,flush:`sync`});async function Q(e=b.activePersonalSpace?.id){let t=++K;if(q?.abort(),q=null,H.value=!1,!e){V.value=!1;return}let n=new AbortController;q=n,V.value=!0;try{let r=new URLSearchParams({personalSpaceId:e,limit:`500`}),[i,a]=await Promise.all([ne(`/api/writing-taste-profile?${r}`,{signal:n.signal}),le(e,n.signal)]);if(t!==K)return;z.value=Se(i)?i:null,B.value=Ce(a)?a:null,xe()}catch{if(t!==K)return;z.value=null,B.value=null,H.value=!0}finally{t===K&&(V.value=!1,q=null)}}e(()=>{K+=1,q?.abort()});function $(e){return Z.value.get(`${e.item_kind}:${e.item_id}`)??null}function _e(e){U.value=$(e)}function ve(e){W.value=$(e)}function ye(e){if(e.preference_scope!==`project`||!e.preference_project_id)return l(`writingTaste.page.globalScope`);let t=b.state?.personalProjects?.find(({project_id:t})=>t===e.preference_project_id);return l(`writingTaste.page.projectScope`,{project:t?.profile.name??e.preference_project_id})}function be(e){return e.key===`conflicts`?l(`writingTaste.criteria.conflictsProgress`,{current:e.current}):l(`writingTaste.criteria.progress`,{current:e.current,target:e.target})}function xe(){U.value&&=Z.value.get(`${U.value.itemKind}:${U.value.id}`)??null,W.value&&=Z.value.get(`${W.value.itemKind}:${W.value.id}`)??null}function Se(e){if(!e||typeof e!=`object`)return!1;let t=e;return[`collecting`,`preview_ready`,`active`].includes(t.status??``)&&!!t.readiness&&Array.isArray(t.rules)}function Ce(e){if(!e||typeof e!=`object`)return!1;let t=e;return Array.isArray(t.nodes)&&Array.isArray(t.edges)}return(e,a)=>(r(),_(`section`,x,[n(m(te),{class:`writing-taste-back`,to:`/preferences`},{default:t(()=>[a[6]||=h(`span`,{"aria-hidden":`true`},`←`,-1),o(` `+f(m(l)(`writingTaste.page.back`)),1)]),_:1}),V.value&&z.value&&!m(Y)?(r(),v(y,{key:0,variant:`inline`,label:m(l)(`writingTaste.page.loading`)},null,8,[`label`])):u(``,!0),m(Y)?(r(),v(y,{key:1,label:m(l)(`writingTaste.page.loading`)},null,8,[`label`])):J.value?(r(),_(`div`,ue)):z.value?(r(),_(d,{key:4},[h(`header`,{class:p([`writing-taste-hero`,`status-${z.value.status}`])},[h(`div`,pe,[h(`span`,me,[a[7]||=h(`i`,{"aria-hidden":`true`},null,-1),o(` `+f(m(l)(`writingTaste.status.${z.value.status}`)),1)]),h(`h2`,null,f(he.value),1),h(`p`,null,f(ge.value),1)]),h(`div`,S,[h(`strong`,null,f(z.value.readiness.rule_count),1),h(`span`,null,`/ `+f(z.value.readiness.thresholds.rule_count),1),h(`small`,null,f(m(l)(`writingTaste.criteria.rules`)),1)])],2),h(`section`,{class:`writing-taste-readiness`,"aria-label":m(l)(`writingTaste.page.readinessAria`)},[(r(!0),_(d,null,i(z.value.readiness.criteria,e=>(r(),_(`article`,{key:e.key,class:p({met:e.met})},[h(`span`,w,f(e.met?`✓`:`·`),1),h(`div`,null,[h(`strong`,null,f(m(l)(`writingTaste.criteria.${e.key}`)),1),h(`small`,null,f(be(e)),1)])],2))),128))],8,C),h(`section`,T,[h(`header`,null,[h(`h2`,null,f(m(l)(`writingTaste.page.rulesTitle`)),1),h(`span`,null,f(z.value.rules.length),1)]),z.value.rules.length?(r(),_(`div`,E,[(r(!0),_(d,null,i(z.value.rules,e=>(r(),_(`article`,{key:`${e.item_kind}:${e.item_id}`,class:p([`writing-taste-rule`,{"has-conflict":e.has_conflict,"is-hypothesis":e.evidence_status===`Working hypothesis`}])},[h(`div`,D,[h(`span`,{class:p(e.evidence_status.replaceAll(` `,`-`).toLowerCase())},f(m(l)(`writingTaste.evidenceStatus.${e.evidence_status}`)),3),h(`span`,null,f(ye(e)),1),e.has_conflict?(r(),_(`span`,O,f(m(l)(`writingTaste.page.conflict`)),1)):u(``,!0)]),h(`div`,k,[h(`h3`,null,f(e.title),1),h(`p`,null,f(e.instruction),1),e.reason||e.contexts.length?(r(),v(re,{key:0,title:m(l)(`ui.details`)},{default:t(()=>[e.reason?(r(),_(`p`,A,f(e.reason),1)):u(``,!0),e.contexts.length?(r(),_(`p`,j,f(m(l)(`writingTaste.page.contexts`,{contexts:e.contexts.join(`、`)})),1)):u(``,!0)]),_:2},1032,[`title`])):u(``,!0)]),h(`footer`,null,[h(`div`,null,[h(`span`,null,f(m(l)(`writingTaste.page.evidence`,{evidence:e.evidence_count})),1),h(`span`,null,f(m(l)(`writingTaste.page.sessions`,{sessions:e.session_count})),1),e.updated_at?(r(),_(`span`,M,f(m(l)(`writingTaste.page.updated`,{time:m(se)(e.updated_at)})),1)):u(``,!0)]),$(e)?(r(),_(`div`,N,[h(`button`,{class:`secondary-action`,type:`button`,onClick:t=>ve(e)},f(m(l)(`writingTaste.page.edit`)),9,P),e.evidence_status===`Confirmed`?u(``,!0):(r(),_(`button`,{key:0,class:`primary-action`,type:`button`,onClick:t=>_e(e)},f(m(l)(`writingTaste.page.confirm`)),9,F))])):u(``,!0)])],2))),128))])):(r(),_(`div`,I,f(m(l)(`writingTaste.page.rulesEmpty`)),1))]),z.value.ready&&z.value.agent_markdown?(r(),_(`section`,L,[h(`div`,null,[h(`h2`,null,f(m(l)(`writingTaste.page.agentPreviewTitle`)),1)]),h(`button`,{class:`secondary-action`,type:`button`,onClick:a[1]||=e=>G.value=!G.value},f(G.value?m(l)(`writingTaste.page.hideAgentPreview`):m(l)(`writingTaste.page.showAgentPreview`)),1),G.value?(r(),_(`pre`,R,f(z.value.agent_markdown),1)):u(``,!0)])):u(``,!0)],64)):(r(),_(`div`,de,[h(`p`,{role:H.value?`alert`:void 0},f(m(l)(H.value?`common.errors.loadFailed`:`writingTaste.page.profileUnavailable`)),9,fe),m(b).activePersonalSpace?(r(),_(`button`,{key:0,type:`button`,class:`secondary-action`,onClick:a[0]||=e=>Q()},f(m(l)(`common.actions.retry`)),1)):u(``,!0)])),n(oe,{item:W.value,"personal-space-id":m(b).activePersonalSpace?.id??``,"personal-project-id":null,projects:m(b).state?.personalProjects??[],"replacement-items":X.value,onClose:a[2]||=e=>W.value=null,onSaved:a[3]||=e=>Q()},null,8,[`item`,`personal-space-id`,`projects`,`replacement-items`]),n(ae,{item:U.value,"personal-space-id":m(b).activePersonalSpace?.id??``,"personal-project-id":null,onClose:a[4]||=e=>U.value=null,onSaved:a[5]||=e=>Q()},null,8,[`item`,`personal-space-id`])]))}}),[[`__scopeId`,`data-v-8c7fa696`]]);export{z as default};
@@ -0,0 +1 @@
1
+ .writing-taste-view[data-v-8c7fa696]{background:var(--color-surface-subtle);padding:18px 32px 40px;overflow:auto}.writing-taste-view[data-v-8c7fa696]>:not(.vue-dialog){width:min(980px,100%);margin-inline:auto}.writing-taste-back[data-v-8c7fa696]{color:var(--color-muted);align-items:center;gap:7px;margin-bottom:14px;font-size:12px;font-weight:700;text-decoration:none;display:inline-flex}.writing-taste-back[data-v-8c7fa696]:hover{color:var(--color-ink)}.writing-taste-hero[data-v-8c7fa696]{border:1px solid var(--color-border);background:var(--color-surface);border-radius:14px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px;padding:24px 26px;display:grid;box-shadow:0 12px 32px #2d3d340f}.writing-taste-hero.status-preview_ready[data-v-8c7fa696],.writing-taste-hero.status-active[data-v-8c7fa696]{border-color:var(--color-success-soft)}.writing-taste-hero__copy[data-v-8c7fa696]{gap:7px;display:grid}.writing-taste-status[data-v-8c7fa696]{color:var(--color-muted);background:var(--color-surface-subtle);border-radius:999px;justify-self:start;align-items:center;gap:6px;padding:3px 8px;font-size:12px;font-weight:800;display:inline-flex}.writing-taste-status i[data-v-8c7fa696]{background:var(--color-muted);border-radius:50%;width:5px;height:5px}.writing-taste-hero h2[data-v-8c7fa696],.writing-taste-hero p[data-v-8c7fa696]{margin:0}.writing-taste-hero h2[data-v-8c7fa696]{color:var(--color-ink);letter-spacing:-.015em;font-size:22px}.writing-taste-hero p[data-v-8c7fa696]{max-width:680px;color:var(--color-muted);font-size:12px;line-height:1.65}.writing-taste-hero__score[data-v-8c7fa696]{border-left:1px solid var(--color-border);min-width:104px;color:var(--color-muted);grid-template-columns:auto 1fr;align-items:baseline;padding:14px 16px;display:grid}.writing-taste-hero__score strong[data-v-8c7fa696]{color:var(--color-ink);font-size:28px}.writing-taste-hero__score span[data-v-8c7fa696]{font-size:12px}.writing-taste-hero__score small[data-v-8c7fa696]{grid-column:1/-1;font-size:12px}.writing-taste-readiness[data-v-8c7fa696]{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.writing-taste-readiness article[data-v-8c7fa696]{border:1px solid var(--color-border);border-radius:var(--radius-control);min-width:0;color:var(--color-muted);background:var(--color-surface);grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px;padding:10px;display:grid}.writing-taste-readiness article.met[data-v-8c7fa696]{color:var(--color-muted);border-color:var(--color-border-strong);background:var(--color-surface)}.writing-taste-readiness article>span[data-v-8c7fa696]{background:var(--color-surface-subtle);border-radius:50%;place-items:center;width:18px;height:18px;font-size:12px;font-weight:800;display:grid}.writing-taste-readiness article.met>span[data-v-8c7fa696]{color:var(--color-surface);background:var(--color-muted)}.writing-taste-readiness article div[data-v-8c7fa696]{gap:2px;min-width:0;display:grid}.writing-taste-readiness strong[data-v-8c7fa696],.writing-taste-readiness small[data-v-8c7fa696]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.writing-taste-readiness strong[data-v-8c7fa696]{color:var(--color-ink);font-size:12px}.writing-taste-readiness small[data-v-8c7fa696]{font-size:12px}.writing-taste-rules[data-v-8c7fa696]{margin-top:24px}.writing-taste-rules>header[data-v-8c7fa696]{align-items:center;gap:8px;padding:0 2px 10px;display:flex}.writing-taste-rules>header h2[data-v-8c7fa696]{color:var(--color-ink);margin:0;font-size:15px}.writing-taste-rules>header span[data-v-8c7fa696]{min-width:20px;color:var(--color-muted);background:var(--color-surface-subtle);text-align:center;border-radius:999px;padding:2px 6px;font-size:12px;font-weight:800}.writing-taste-rule-list[data-v-8c7fa696]{gap:9px;display:grid}.writing-taste-rule[data-v-8c7fa696]{border:1px solid var(--color-border);background:var(--color-surface);border-radius:11px;gap:10px;padding:15px 17px;display:grid}.writing-taste-rule.is-hypothesis[data-v-8c7fa696]{background:var(--color-surface)}.writing-taste-rule.has-conflict[data-v-8c7fa696]{border-color:var(--color-border-strong)}.writing-taste-rule__status[data-v-8c7fa696]{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.writing-taste-rule__status span[data-v-8c7fa696]{color:var(--color-muted);background:var(--color-surface-subtle);border-radius:999px;padding:2px 7px;font-size:12px;font-weight:800}.writing-taste-rule__status .confirmed[data-v-8c7fa696],.writing-taste-rule__status .observed[data-v-8c7fa696]{color:var(--color-success);background:var(--color-success-soft)}.writing-taste-rule__status .conflict[data-v-8c7fa696]{color:var(--color-danger);background:var(--color-danger-soft)}.writing-taste-rule__body[data-v-8c7fa696]{gap:5px;display:grid}.writing-taste-rule h3[data-v-8c7fa696],.writing-taste-rule p[data-v-8c7fa696]{margin:0}.writing-taste-rule h3[data-v-8c7fa696]{color:var(--color-ink);font-size:13px}.writing-taste-rule p[data-v-8c7fa696]{color:var(--color-ink);font-size:12px;line-height:1.65}.writing-taste-rule__body small[data-v-8c7fa696]{color:var(--color-muted);font-size:12px;line-height:1.5}.writing-taste-rule footer[data-v-8c7fa696]{border-top:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:14px;padding-top:9px;display:flex}.writing-taste-rule footer>div[data-v-8c7fa696]:first-child{color:var(--color-muted);flex-wrap:wrap;gap:10px;font-size:12px;display:flex}.writing-taste-rule__actions[data-v-8c7fa696]{gap:7px;display:flex}.writing-taste-rule__actions button[data-v-8c7fa696],.writing-taste-agent-preview button[data-v-8c7fa696]{padding:6px 10px;font-size:12px}.writing-taste-empty[data-v-8c7fa696],.writing-taste-unavailable[data-v-8c7fa696]{border:1px dashed var(--color-border);min-height:180px;color:var(--color-muted);border-radius:11px;place-items:center;font-size:12px;display:grid}.writing-taste-agent-preview[data-v-8c7fa696]{border:1px solid var(--color-border);background:var(--color-surface-subtle);border-radius:11px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;margin-top:22px;padding:16px 18px;display:grid}.writing-taste-agent-preview h2[data-v-8c7fa696],.writing-taste-agent-preview p[data-v-8c7fa696]{margin:0}.writing-taste-agent-preview h2[data-v-8c7fa696]{color:var(--color-ink);font-size:13px}.writing-taste-agent-preview p[data-v-8c7fa696]{color:var(--color-muted);margin-top:4px;font-size:12px;line-height:1.5}.writing-taste-agent-preview pre[data-v-8c7fa696]{border-radius:var(--radius-control);max-height:360px;color:var(--color-surface-subtle);background:var(--color-ink);white-space:pre-wrap;overflow-wrap:anywhere;grid-column:1/-1;margin:0;padding:14px;font:10px/1.65 ui-monospace,SFMono-Regular,Menlo,monospace;overflow:auto}@media (width<=980px){.writing-taste-readiness[data-v-8c7fa696]{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=680px){.writing-taste-view[data-v-8c7fa696]{padding-inline:18px}.writing-taste-hero[data-v-8c7fa696]{grid-template-columns:1fr}.writing-taste-hero__score[data-v-8c7fa696]{border-top:1px solid var(--color-border);border-left:0}.writing-taste-readiness[data-v-8c7fa696]{grid-template-columns:repeat(2,minmax(0,1fr))}.writing-taste-rule footer[data-v-8c7fa696],.writing-taste-agent-preview[data-v-8c7fa696]{flex-direction:column;grid-template-columns:1fr;align-items:start}.writing-taste-agent-preview pre[data-v-8c7fa696]{grid-column:1}}
@@ -0,0 +1 @@
1
+ .agents-directory,.agent-profile-page{min-width:0;color:var(--color-ink,#1d2129)}.agents-directory-heading{margin-bottom:var(--space-6,24px)}.agents-directory-count{color:var(--color-muted,#667085);margin:0;font-size:14px}.agent-directory-work-error{justify-content:space-between;align-items:center;gap:var(--space-3,12px);margin:calc(var(--space-6,24px) * -1) 0 var(--space-4,16px);color:var(--color-danger,#b93838);font-size:13px;display:flex}.agent-profile-actions{justify-content:flex-end;align-items:center;gap:var(--space-2,8px);flex-wrap:wrap;flex-shrink:0;display:flex}.agents-directory-filters{margin-bottom:var(--space-6,24px);align-items:stretch}.agents-directory-search{flex:280px;min-width:160px}.agents-directory-search input,.agents-directory-filters select{box-sizing:border-box;width:100%}.agents-directory-filters>select{width:auto;min-width:150px}.agents-directory-grid{gap:var(--space-4,16px);grid-template-columns:minmax(0,1fr);margin:0;padding:0;list-style:none;display:grid}.agents-directory-grid>li{min-width:0}.agent-card{box-sizing:border-box;gap:var(--space-3,12px);height:100%;padding:var(--space-4,16px);transition:border-color var(--motion-fast,.16s);flex-direction:column;display:flex}.agent-card:hover{border-color:var(--color-border-strong,#c5cbd5)}.agent-card-topline,.agent-card-meta,.agent-section-heading,.agent-resume-name-row{justify-content:space-between;align-items:center;gap:var(--space-3,12px);display:flex}.agent-card-topline{align-items:flex-start}.agent-card-status-stack{flex-direction:column;align-items:flex-end;gap:4px;min-width:0;display:flex}.agent-card-body{flex:1;min-width:0}.agent-portrait{background:var(--color-accent-soft,#edf3ff);width:72px;height:72px;color:var(--color-accent,#2563eb);border-radius:20px;flex:0 0 72px;place-items:center;font-size:34px;line-height:1;display:grid}.agent-portrait.small{border-radius:14px;flex-basis:46px;width:46px;height:46px;font-size:22px}.agent-directory-name{align-items:center;gap:var(--space-2,8px);min-width:0;margin-top:var(--space-2,8px);font-size:17px;font-weight:650;display:flex}.agent-directory-name a{overflow-wrap:anywhere;min-width:0;color:var(--color-ink,#1d2129);text-decoration:none}.agent-directory-name a:hover{color:var(--color-accent,#2563eb)}.agent-card-responsibility{color:var(--color-muted,#667085);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:6px 0 0;line-height:1.45;display:-webkit-box;overflow:hidden}.agent-inline-skills,.agent-card-project-list{gap:var(--space-2,8px);flex-wrap:wrap;display:flex}.agent-inline-skills{margin-top:var(--space-2,8px)}.agent-inline-skills>span{overflow-wrap:anywhere;background:var(--color-surface-subtle,#f0f2f5);max-width:100%;color:var(--color-muted,#667085);border-radius:6px;padding:3px 7px;font-size:12px;line-height:1.4}.agent-card-meta{border-top:1px solid var(--color-border,#e2e5ea);padding-top:var(--space-3,12px);align-items:flex-end}.agent-card-projects{min-width:0}.agent-card-meta-label{color:var(--color-muted,#667085);margin-bottom:4px;font-size:12px;display:block}.agent-card-project-list .ui-badge{text-overflow:ellipsis;white-space:nowrap;max-width:130px;overflow:hidden}.agent-card-project-count{color:var(--color-accent,#2563eb);background:var(--color-accent-soft,#edf3ff)}.agent-card-no-project{color:var(--color-muted,#667085);font-size:12px}.agent-card-status.is-active,.agent-profile-membership.is-active{color:var(--color-success,#23734f);background:var(--color-success-soft,#edf7f1)}.agent-card-status.is-inactive,.agent-profile-membership.is-inactive{color:var(--color-warning,#936016);background:var(--color-warning-soft,#fff7e8)}.agent-card-status.is-archived,.agent-profile-membership.is-archived{color:var(--color-muted,#667085);background:var(--color-surface-subtle,#f0f2f5)}.agent-card-work-status{text-overflow:ellipsis;white-space:nowrap;max-width:150px;overflow:hidden}.agent-card-work-status.is-running{color:var(--color-accent,#2563eb);background:var(--color-accent-soft,#edf3ff)}.agent-card-work-status.is-awaiting_review{color:var(--color-warning,#936016);background:var(--color-warning-soft,#fff7e8)}.agent-card-work-status.is-blocked,.agent-card-work-status.is-unavailable{color:var(--color-danger,#b93838);background:var(--color-danger-soft,#fff1f0)}.agent-card-work-status.is-queued,.agent-card-work-status.is-paused,.agent-card-work-status.is-awaiting_recruitment{color:var(--color-warning,#936016);background:var(--color-warning-soft,#fff7e8)}.agent-card-work-status.is-none,.agent-card-work-status.is-loading,.agent-card-work-status.is-unreported{color:var(--color-muted,#667085);background:var(--color-surface-subtle,#f0f2f5)}.agent-directory-open{white-space:nowrap;flex:none;min-height:32px;padding:6px 9px;font-size:12px}.agent-profile-empty{box-sizing:border-box;min-height:140px}.agents-directory .sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.agent-profile-page{box-sizing:border-box;width:100%;max-width:1120px;margin:0 auto}.agent-profile-back{align-items:center;gap:var(--space-2,8px);margin-bottom:var(--space-5,20px);color:var(--color-muted,#667085);font-size:14px;text-decoration:none;display:inline-flex}.agent-profile-back:hover,.agent-profile-footer a,.agent-section-heading>a{color:var(--color-accent,#2563eb)}.agent-resume-header{align-items:start;gap:var(--space-5,20px);padding:var(--space-6,24px);grid-template-columns:auto minmax(0,1fr) auto;display:grid}.agent-resume-intro{min-width:0}.agent-resume-intro h1{overflow-wrap:anywhere;letter-spacing:-.025em;min-width:0;margin:0;font-size:clamp(26px,3vw,36px);line-height:1.15}.agent-resume-name-row{flex-wrap:wrap;justify-content:flex-start;align-items:baseline}.agent-profile-membership{flex:none}.agent-resume-intro>p{max-width:650px;margin:var(--space-3,12px) 0;overflow-wrap:anywhere;color:var(--color-muted,#667085);line-height:1.65}.agent-resume-meta{gap:var(--space-3,12px);color:var(--color-muted,#667085);flex-wrap:wrap;font-size:12px;display:flex}.agent-profile-refresh-status,.agent-profile-partial{margin:var(--space-4,16px) 0 0;color:var(--color-muted,#667085);font-size:13px}.agent-profile-tabs{gap:var(--space-5,20px);margin-top:var(--space-6,24px);border-bottom:1px solid var(--color-border,#e2e5ea);display:flex;overflow-x:auto}.agent-profile-tab{min-height:44px;color:var(--color-muted,#667085);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;flex:none;padding:8px 2px;font-size:13px;position:relative}.agent-profile-tab:hover,.agent-profile-tab[aria-selected=true]{color:var(--color-accent,#2563eb)}.agent-profile-tab[aria-selected=true]{border-bottom-color:var(--color-accent,#2563eb);font-weight:650}.agent-profile-panel{min-width:0;margin-top:var(--space-4,16px)}.agent-profile-panel>.ui-card+.ui-card{margin-top:var(--space-4,16px)}.agent-profile-primary-grid{gap:var(--space-4,16px);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.agent-resume-section{box-sizing:border-box;min-width:0;padding:var(--space-6,24px)}.agent-resume-section h2{letter-spacing:-.01em;margin:0;font-size:18px}.agent-resume-section>h2{margin-bottom:var(--space-4,16px)}.agent-resume-section h3{margin:0 0 var(--space-2,8px);font-size:14px}.agent-resume-section p{margin:var(--space-2,8px) 0;overflow-wrap:anywhere;white-space:pre-line;line-height:1.7}.agent-section-heading{margin-bottom:var(--space-4,16px)}.agent-section-heading>span{color:var(--color-muted,#667085);font-size:12px}.agent-resume-list{margin:0;padding:0;list-style:none}.agent-resume-list li{padding:var(--space-3,12px) 0}.agent-resume-list li+li{border-top:1px solid var(--color-border,#e2e5ea)}.agent-project-link{color:var(--color-accent,#2563eb);text-decoration:none}.agent-project-link:hover{text-decoration:underline}.agent-project-overflow{margin-top:var(--space-3,12px)}.agent-project-overflow summary{color:var(--color-accent,#2563eb);cursor:pointer;font-size:13px}.agent-current-work-list{gap:var(--space-2,8px);margin:0;padding:0;list-style:none;display:grid}.agent-current-work-list li{justify-content:space-between;align-items:center;gap:var(--space-3,12px);min-width:0;padding:var(--space-3,12px);border:1px solid var(--color-border,#e2e5ea);border-radius:var(--radius-control,10px);display:flex}.agent-current-work-list .ui-badge,.agent-work-timeline .agent-section-heading>span{white-space:nowrap;flex:none}.agent-current-work-list a{overflow-wrap:anywhere;min-width:0;color:var(--color-accent,#2563eb);font-weight:600;text-decoration:none}.agent-muted,.agent-work-timeline small,.agent-collaborators span{color:var(--color-muted,#667085)}.agent-character{gap:var(--space-5,20px);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.agent-character p{font-size:14px}.agent-strengths{margin-top:var(--space-5,20px)}.agent-strengths h3{margin-bottom:var(--space-3,12px)}.agent-expectation{padding:var(--space-4,16px);border-radius:var(--radius-control,10px);color:var(--color-ink,#1d2129);background:var(--color-accent-soft,#edf3ff)}.agent-expectation strong{margin-bottom:var(--space-2,8px);font-size:13px;display:block}.agent-organization{padding:var(--space-4,16px) 0}.agent-org-lead,.agent-org-members{gap:var(--space-4,16px);padding:var(--space-2,8px) 0;display:flex}.agent-org-lead>span,.agent-org-members>span{min-width:70px;color:var(--color-muted,#667085);font-size:12px}.agent-org-members{margin-left:var(--space-3,12px);padding-left:var(--space-4,16px);border-left:2px solid var(--color-border,#e2e5ea)}.agent-org-members ul{gap:var(--space-3,12px);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.agent-work-timeline{margin:var(--space-5,20px) 0 0 var(--space-2,8px);padding:0 0 0 var(--space-6,24px);border-left:1px solid var(--color-border-strong,#c5cbd5);list-style:none}.agent-work-timeline>li{margin:0 0 var(--space-6,24px);position:relative}.agent-work-timeline>li:before{background:var(--color-accent,#2563eb);content:"";border-radius:50%;width:8px;height:8px;position:absolute;top:5px;left:-29px}.agent-work-timeline .agent-section-heading{margin-bottom:var(--space-2,8px)}.agent-work-timeline a{color:var(--color-accent,#2563eb);font-weight:600;text-decoration:none}.agent-work-timeline p{font-size:14px}.agent-work-timeline small{font-size:12px}.agent-collaborators{gap:var(--space-5,20px) var(--space-8,32px);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.agent-collaborators li{gap:var(--space-2,8px);flex-direction:column;min-width:120px;display:flex}.agent-profile-management-links{gap:var(--space-2,8px);margin-top:var(--space-5,20px);flex-wrap:wrap;display:flex}.agent-profile-footer{gap:var(--space-5,20px);margin-top:var(--space-5,20px);padding:var(--space-5,20px) 0;border-top:1px solid var(--color-border,#e2e5ea);flex-wrap:wrap;font-size:13px;display:flex}.agent-simple-settings{box-sizing:border-box;margin-top:var(--space-4,16px);padding:var(--space-6,24px);border:1px solid var(--color-border,#e2e5ea);border-radius:var(--radius-card,16px);background:var(--color-surface,#fff)}.agent-simple-settings h3{margin:0 0 var(--space-5,20px)}.agent-simple-settings label{gap:var(--space-2,8px);margin-bottom:var(--space-5,20px);color:var(--color-ink,#1d2129);flex-direction:column;font-size:14px;display:flex}.agent-simple-settings small{color:var(--color-muted,#667085);font-size:12px}.agent-simple-settings details{margin:var(--space-5,20px) 0}.agent-simple-settings summary{margin-bottom:var(--space-4,16px);color:var(--color-ink,#1d2129);cursor:pointer;font-size:13px}.agent-simple-settings textarea{min-height:70px}.agent-simple-settings button:disabled{cursor:wait}.agent-locked-platforms p{color:var(--color-ink,#1d2129)}@media (width>=640px){.agents-directory-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=900px){.agents-directory-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=760px){.agents-directory-heading{align-items:flex-start}.agents-directory-heading .agent-profile-actions{gap:var(--space-2,8px)}.agents-directory-filters{align-items:stretch}.agents-directory-search{flex-basis:100%}.agents-directory-filters>select{flex:1;min-width:0}.agent-resume-header{grid-template-columns:auto minmax(0,1fr)}.agent-resume-header .agent-profile-actions{grid-column:1/-1;justify-content:flex-start}.agent-profile-primary-grid,.agent-character{grid-template-columns:1fr}.agent-profile-tabs{gap:var(--space-4,16px)}}@media (width<=480px){.agent-resume-header,.agent-resume-section,.agent-simple-settings{padding:var(--space-4,16px)}.agent-resume-header{grid-template-columns:1fr}.agent-resume-header .agent-profile-actions{grid-column:auto}.agent-portrait{border-radius:16px;flex-basis:56px;width:56px;height:56px;font-size:28px}.agent-current-work-list li{flex-direction:column;align-items:flex-start}}
@@ -1 +1 @@
1
- function e(e){return e&&typeof e==`object`?e:{}}function t(e,t,n){return e[t]??e[n]}function n(e,n,r){let i=t(e,n,r);return typeof i==`string`?i:null}function r(e,n,r){let i=t(e,n,r);return Array.isArray(i)&&i.every(e=>typeof e==`string`)?i:null}function i(e,n,r){let i=t(e,n,r);return typeof i==`number`&&Number.isInteger(i)&&i>=0?i:null}function a(t){if(!t||typeof t!=`object`)return null;let r=e(t),a=n(r,`source`,`source`),o=i(r,`totalTokens`,`total_tokens`);return![`executor`,`host`,`dingdong`].includes(a??``)||o===null?null:{source:a,totalTokens:o,inputTokens:i(r,`inputTokens`,`input_tokens`),outputTokens:i(r,`outputTokens`,`output_tokens`),cachedInputTokens:i(r,`cachedInputTokens`,`cached_input_tokens`),cacheWriteInputTokens:i(r,`cacheWriteInputTokens`,`cache_write_input_tokens`),reasoningOutputTokens:i(r,`reasoningOutputTokens`,`reasoning_output_tokens`)}}function o(t){if(!t||typeof t!=`object`)return null;let r=e(t),i=n(r,`application`,`application`);return[`codex`,`claude`,`claude_code`,`cursor`,`kiro`,`other`].includes(i??``)?{application:i,sessionId:n(r,`sessionId`,`session_id`),sessionUrl:n(r,`sessionUrl`,`session_url`)}:null}function s(e){return Array.isArray(e)?e:[]}function c(t){let n=e(t);return Array.isArray(t)?t:s(n.agents??n.items)}function l(r){if(!r||typeof r!=`object`)return null;let i=e(r);return{mode:n(i,`mode`,`mode`)??null,reasoningEffort:n(i,`reasoningEffort`,`reasoning_effort`)??null,capabilityHints:s(t(i,`capabilityHints`,`capability_hints`)).filter(e=>typeof e==`string`)}}function u(r){if(!r||typeof r!=`object`)return null;let i=e(r);return{enabled:typeof i.enabled==`boolean`?i.enabled:null,independentVerification:typeof t(i,`independentVerification`,`independent_verification`)==`boolean`?t(i,`independentVerification`,`independent_verification`):null,conflictFreeScopes:typeof t(i,`conflictFreeScopes`,`conflict_free_scopes`)==`boolean`?t(i,`conflictFreeScopes`,`conflict_free_scopes`):null,reason:n(i,`reason`,`reason`),workstreamBoundaries:s(t(i,`workstreamBoundaries`,`workstream_boundaries`)).filter(e=>typeof e==`string`)}}function d(r){if(!r||typeof r!=`object`)return null;let i=e(r),a=s(t(i,`allowList`,`allow_list`)).map(t=>{if(typeof t==`string`)return{executorId:t};let r=e(t);return{executorId:n(r,`executorId`,`executor_id`)??``,label:n(r,`label`,`label`),provider:n(r,`provider`,`provider`),model:n(r,`model`,`model`),client:n(r,`client`,`client`)}}).filter(({executorId:e})=>e),o=s(t(i,`lockedExecutorIds`,`locked_executor_ids`)).filter(e=>typeof e==`string`),c=s(t(i,`preferredExecutorIds`,`preferred_executor_ids`)).filter(e=>typeof e==`string`);return{mode:n(i,`mode`,`mode`)??`flexible`,allowList:a,lockedExecutorIds:o,preferredExecutorIds:c}}function f(t){if(!t||typeof t!=`object`)return null;let r=e(t),i={executor:n(r,`executor`,`executor`),provider:n(r,`provider`,`provider`)??n(r,`actualModelProvider`,`actual_model_provider`),model:n(r,`model`,`model`)??n(r,`actualModel`,`actual_model`),client:n(r,`client`,`client`)??n(r,`sourceApplication`,`source_application`),rule:n(r,`rule`,`rule`),fallback:n(r,`fallback`,`fallback`),reportedAt:n(r,`reportedAt`,`reported_at`)};return[i.executor,i.provider,i.model,i.rule,i.fallback].some(Boolean)?i:null}function p(r,i){let a=e(r),o=n(a,`personalProjectId`,`personal_project_id`),c=n(a,`assignmentId`,`assignment_id`);return!o||!c?null:{assignmentId:c,personalSpaceId:n(a,`personalSpaceId`,`personal_space_id`)??i.personalSpaceId,personalProjectId:o,agentId:n(a,`agentId`,`agent_id`)??i.agentId,responsibility:n(a,`responsibility`,`responsibility`)??i.profile.responsibility,scope:n(a,`scope`,`scope`),workKinds:s(t(a,`workKinds`,`work_kinds`)).filter(e=>typeof e==`string`),capabilities:s(a.capabilities).filter(e=>typeof e==`string`),modelStrategyOverride:l(t(a,`modelStrategyOverride`,`model_strategy_override`)),executorPolicyOverride:d(t(a,`executorPolicyOverride`,`executor_policy_override`)),reason:n(a,`reason`,`reason`),status:n(a,`status`,`status`)??`active`,revision:typeof a.revision==`number`?a.revision:void 0,sourceApplication:n(a,`sourceApplication`,`source_application`),sourceSessionId:n(a,`sourceSessionId`,`source_session_id`),assignedAt:n(a,`assignedAt`,`assigned_at`)??i.createdAt,updatedAt:n(a,`updatedAt`,`updated_at`)??i.updatedAt,endedAt:n(a,`endedAt`,`ended_at`),endReason:n(a,`endReason`,`end_reason`),replacedByAssignmentId:n(a,`replacedByAssignmentId`,`replaced_by_assignment_id`)}}function m(t){let r=e(t);return{agentId:n(r,`agentId`,`agent_id`)??``,assignmentId:n(r,`assignmentId`,`assignment_id`),role:n(r,`role`,`role`)??`collaborator`,status:n(r,`status`,`status`),assignmentSummary:n(r,`assignmentSummary`,`assignment_summary`),joinedAt:n(r,`joinedAt`,`joined_at`),updatedAt:n(r,`updatedAt`,`updated_at`),endedAt:n(r,`endedAt`,`ended_at`)}}function h(i){if(Array.isArray(i))return i.map(i=>{let s=e(i);return{agentId:n(s,`agentId`,`agent_id`),agentName:n(s,`agentName`,`agent_name`),occupationEmoji:n(s,`occupationEmoji`,`occupation_emoji`),workerId:n(s,`workerId`,`worker_id`),workerLabel:n(s,`workerLabel`,`worker_label`),workerOccupationEmoji:n(s,`workerOccupationEmoji`,`worker_occupation_emoji`),participantRole:n(s,`participantRole`,`participant_role`),executor:n(s,`executor`,`executor`),executorId:n(s,`executorId`,`executor_id`),sourceApplication:n(s,`sourceApplication`,`source_application`),sourceSessionId:n(s,`sourceSessionId`,`source_session_id`),sourceSessionUrl:n(s,`sourceSessionUrl`,`source_session_url`),workerRuntime:o(t(s,`workerRuntime`,`worker_runtime`)),toolsUsed:r(s,`toolsUsed`,`tools_used`),actualModelProvider:n(s,`actualModelProvider`,`actual_model_provider`),actualModel:n(s,`actualModel`,`actual_model`),tokenUsage:a(t(s,`tokenUsage`,`token_usage`)),workSummary:n(s,`workSummary`,`work_summary`),status:n(s,`status`,`status`)}})}function g(i){let s=e(i),c=n(s,`eventId`,`event_id`),l=n(s,`taskId`,`task_id`);if(!c||!l)return null;let u=f(t(s,`actualExecution`,`actual_execution`))??f({executor:n(s,`actualExecutor`,`actual_executor`),provider:n(s,`actualModelProvider`,`actual_model_provider`),model:n(s,`actualModel`,`actual_model`),client:n(s,`sourceApplication`,`source_application`),rule:n(s,`routingRuleId`,`routing_rule_id`)??n(s,`matchedExecutorRuleId`,`matched_executor_rule_id`),fallback:n(s,`fallbackReason`,`fallback_reason`)??n(s,`executorFallbackReason`,`executor_fallback_reason`),reportedAt:n(s,`createdAt`,`created_at`)});return{eventId:c,taskId:l,agentId:n(s,`agentId`,`agent_id`),status:n(s,`status`,`status`),actorKind:n(s,`actorKind`,`actor_kind`)??void 0,summary:n(s,`summary`,`summary`)??``,sourceApplication:n(s,`sourceApplication`,`source_application`),sourceSessionId:n(s,`sourceSessionId`,`source_session_id`),sourceSessionUrl:n(s,`sourceSessionUrl`,`source_session_url`),workerRuntime:o(t(s,`workerRuntime`,`worker_runtime`)),toolsUsed:r(s,`toolsUsed`,`tools_used`),tokenUsage:a(t(s,`tokenUsage`,`token_usage`)),actualExecution:u,actualModelProvider:n(s,`actualModelProvider`,`actual_model_provider`),actualModel:n(s,`actualModel`,`actual_model`),workerId:n(s,`workerId`,`worker_id`),workerLabel:n(s,`workerLabel`,`worker_label`),workerOccupationEmoji:n(s,`workerOccupationEmoji`,`worker_occupation_emoji`),workerStatus:n(s,`workerStatus`,`worker_status`),createdAt:n(s,`createdAt`,`created_at`)??``}}function _(r){if(!r||typeof r!=`object`)return null;let i=e(r);return{decisionId:n(i,`decisionId`,`decision_id`)??void 0,taskId:n(i,`taskId`,`task_id`)??void 0,coordinatorAgentId:n(i,`coordinatorAgentId`,`coordinator_agent_id`),complexity:(()=>{let e=t(i,`complexity`,`complexity`);return typeof e==`string`||typeof e==`number`?e:null})(),complexityBasis:s(t(i,`complexityBasis`,`complexity_basis`)).filter(e=>typeof e==`string`),outcome:n(i,`outcome`,`outcome`)??n(i,`routingOutcome`,`routing_outcome`),reason:n(i,`reason`,`reason`)??n(i,`routingReason`,`routing_reason`),matchBasis:s(t(i,`matchBasis`,`match_basis`)).filter(e=>typeof e==`string`),candidateAgentIds:s(t(i,`candidateAgentIds`,`candidate_agent_ids`)).filter(e=>typeof e==`string`),optimizationPriority:s(t(i,`optimizationPriority`,`optimization_priority`)).filter(e=>typeof e==`string`),parallelPlan:u(t(i,`parallelPlan`,`parallel_plan`)),selectedModelStrategy:l(t(i,`selectedModelStrategy`,`selected_model_strategy`)),modelStrategySource:n(i,`modelStrategySource`,`model_strategy_source`)??void 0,ruleId:n(i,`ruleId`,`rule_id`)??n(i,`matchedExecutorRuleId`,`matched_executor_rule_id`)??n(i,`executorRuleId`,`executor_rule_id`),fallback:n(i,`fallback`,`fallback`)??n(i,`fallbackReason`,`fallback_reason`)??n(i,`executorFallbackReason`,`executor_fallback_reason`)}}function v(e){return e!=null&&(typeof e!=`string`||e.length>0)&&(!Array.isArray(e)||e.length>0)}function y(e){return[`staffingIntent`,`staffing_intent`,`routingOutcome`,`routing_outcome`,`routingReason`,`routing_reason`,`routingExplanation`,`routing_explanation`,`coordinatorAgentId`,`coordinator_agent_id`,`complexity`,`complexityBasis`,`complexity_basis`,`matchBasis`,`match_basis`,`candidateAgentIds`,`candidate_agent_ids`].some(t=>v(e[t]))?_({outcome:t(e,`routingOutcome`,`routing_outcome`),reason:t(e,`routingReason`,`routing_reason`),matchBasis:t(e,`matchBasis`,`match_basis`),coordinatorAgentId:t(e,`coordinatorAgentId`,`coordinator_agent_id`),complexity:t(e,`complexity`,`complexity`),complexityBasis:t(e,`complexityBasis`,`complexity_basis`),candidateAgentIds:t(e,`candidateAgentIds`,`candidate_agent_ids`)}):null}function b(r){let i=e(r),a=n(i,`taskId`,`task_id`);if(!a)return null;let o=e(t(i,`projectScope`,`project_scope`)),c=o.type===`temporary`||o.type===`registered`?{type:o.type,lifetime:n(o,`lifetime`,`lifetime`),...typeof o.persisted==`boolean`?{persisted:o.persisted}:{}}:void 0,u=f(t(i,`actualExecution`,`actual_execution`))??f({executor:n(i,`actualExecutor`,`actual_executor`),provider:n(i,`actualModelProvider`,`actual_model_provider`),model:n(i,`actualModel`,`actual_model`),client:n(i,`sourceApplication`,`source_application`),rule:n(i,`routingRuleId`,`routing_rule_id`)??n(i,`matchedExecutorRuleId`,`matched_executor_rule_id`),fallback:n(i,`fallbackReason`,`fallback_reason`)??n(i,`executorFallbackReason`,`executor_fallback_reason`)}),p=_(t(i,`routingDecision`,`routing_decision`))??y(i);return{taskId:a,personalSpaceId:n(i,`personalSpaceId`,`personal_space_id`)??void 0,personalProjectId:n(i,`personalProjectId`,`personal_project_id`),projectScope:c,title:n(i,`title`,`title`)??a,objective:n(i,`objective`,`objective`),workKind:n(i,`workKind`,`work_kind`),status:n(i,`status`,`status`),runId:n(i,`runId`,`run_id`),executionId:n(i,`executionId`,`execution_id`),ownerAgentId:n(i,`ownerAgentId`,`owner_agent_id`),leadAgentId:n(i,`leadAgentId`,`lead_agent_id`),coordinatorAgentId:n(i,`coordinatorAgentId`,`coordinator_agent_id`),hrAgentId:n(i,`hrAgentId`,`hr_agent_id`),recruitmentId:n(i,`recruitmentId`,`recruitment_id`),participants:s(i.participants).map(m),sourceApplication:n(i,`sourceApplication`,`source_application`),sourceSessionId:n(i,`sourceSessionId`,`source_session_id`),resultSummary:n(i,`resultSummary`,`result_summary`),failureReason:n(i,`failureReason`,`failure_reason`),createdAt:n(i,`createdAt`,`created_at`),updatedAt:n(i,`updatedAt`,`updated_at`),completedAt:n(i,`completedAt`,`completed_at`),effectiveModelStrategy:l(t(i,`effectiveModelStrategy`,`effective_model_strategy`)),effectiveExecutorPolicy:d(t(i,`effectiveExecutorPolicy`,`effective_executor_policy`)??t(i,`executorPolicy`,`executor_policy`)),staffingIntent:n(i,`staffingIntent`,`staffing_intent`),requiredCapabilities:s(t(i,`requiredCapabilities`,`required_capabilities`)).filter(e=>typeof e==`string`),executorCapabilityHints:s(t(i,`executorCapabilityHints`,`executor_capability_hints`)).filter(e=>typeof e==`string`),routingOutcome:n(i,`routingOutcome`,`routing_outcome`),routingReason:n(i,`routingReason`,`routing_reason`),routingExplanation:n(i,`routingExplanation`,`routing_explanation`),matchBasis:s(t(i,`matchBasis`,`match_basis`)).filter(e=>typeof e==`string`),complexity:(()=>{let e=t(i,`complexity`,`complexity`);return typeof e==`string`||typeof e==`number`?e:null})(),complexityBasis:s(t(i,`complexityBasis`,`complexity_basis`)).filter(e=>typeof e==`string`),modelStrategySource:n(i,`modelStrategySource`,`model_strategy_source`)??void 0,actualExecution:u,executionSummary:h(t(i,`executionSummary`,`execution_summary`)),routingDecision:p,events:s(i.events).map(g).filter(Boolean)}}function x(e){return e.executionSummary===void 0?(e.events??[]).filter(e=>!!(e.workerId||e.workerLabel||e.workerOccupationEmoji||e.workerStatus)):[]}function S(e){return!!(e&&(e.enabled||e.independentVerification||e.conflictFreeScopes||e.reason||e.workstreamBoundaries?.length))}function C(e){return e.actualExecution??{provider:e.actualModelProvider??null,model:e.actualModel??null,client:e.sourceApplication??null,reportedAt:e.createdAt}}export{x as _,p as a,l as c,o as d,S as f,t as g,e as h,f as i,b as l,n as m,s as n,m as o,r as p,C as r,d as s,c as t,a as u};
1
+ function e(e){return e&&typeof e==`object`?e:{}}function t(e,t,n){return e[t]??e[n]}function n(e,n,r){let i=t(e,n,r);return typeof i==`string`?i:null}function r(e,n,r){let i=t(e,n,r);return Array.isArray(i)&&i.every(e=>typeof e==`string`)?i:null}function i(e,n,r){let i=t(e,n,r);return typeof i==`number`&&Number.isInteger(i)&&i>=0?i:null}function a(t){if(!t||typeof t!=`object`)return null;let r=e(t),a=n(r,`source`,`source`),o=i(r,`totalTokens`,`total_tokens`);return![`executor`,`host`,`dingdong`].includes(a??``)||o===null?null:{source:a,totalTokens:o,inputTokens:i(r,`inputTokens`,`input_tokens`),outputTokens:i(r,`outputTokens`,`output_tokens`),cachedInputTokens:i(r,`cachedInputTokens`,`cached_input_tokens`),cacheWriteInputTokens:i(r,`cacheWriteInputTokens`,`cache_write_input_tokens`),reasoningOutputTokens:i(r,`reasoningOutputTokens`,`reasoning_output_tokens`)}}function o(t){if(!t||typeof t!=`object`)return null;let r=e(t),i=n(r,`application`,`application`);return[`codex`,`claude`,`claude_code`,`cursor`,`kiro`,`other`].includes(i??``)?{application:i,sessionId:n(r,`sessionId`,`session_id`),sessionUrl:n(r,`sessionUrl`,`session_url`)}:null}function s(e){return Array.isArray(e)?e:[]}function c(t){let n=e(t);return Array.isArray(t)?t:s(n.agents??n.items)}function l(r){if(!r||typeof r!=`object`)return null;let i=e(r);return{mode:n(i,`mode`,`mode`)??null,reasoningEffort:n(i,`reasoningEffort`,`reasoning_effort`)??null,capabilityHints:s(t(i,`capabilityHints`,`capability_hints`)).filter(e=>typeof e==`string`)}}function u(r){if(!r||typeof r!=`object`)return null;let i=e(r);return{enabled:typeof i.enabled==`boolean`?i.enabled:null,independentVerification:typeof t(i,`independentVerification`,`independent_verification`)==`boolean`?t(i,`independentVerification`,`independent_verification`):null,conflictFreeScopes:typeof t(i,`conflictFreeScopes`,`conflict_free_scopes`)==`boolean`?t(i,`conflictFreeScopes`,`conflict_free_scopes`):null,reason:n(i,`reason`,`reason`),workstreamBoundaries:s(t(i,`workstreamBoundaries`,`workstream_boundaries`)).filter(e=>typeof e==`string`)}}function d(r){if(!r||typeof r!=`object`)return null;let i=e(r),a=s(t(i,`allowList`,`allow_list`)).map(t=>{if(typeof t==`string`)return{executorId:t};let r=e(t);return{executorId:n(r,`executorId`,`executor_id`)??``,label:n(r,`label`,`label`),provider:n(r,`provider`,`provider`),model:n(r,`model`,`model`),client:n(r,`client`,`client`)}}).filter(({executorId:e})=>e),o=s(t(i,`lockedExecutorIds`,`locked_executor_ids`)).filter(e=>typeof e==`string`),c=s(t(i,`preferredExecutorIds`,`preferred_executor_ids`)).filter(e=>typeof e==`string`);return{mode:n(i,`mode`,`mode`)??`flexible`,allowList:a,lockedExecutorIds:o,preferredExecutorIds:c}}function f(t){if(!t||typeof t!=`object`)return null;let r=e(t),i={executor:n(r,`executor`,`executor`),provider:n(r,`provider`,`provider`)??n(r,`actualModelProvider`,`actual_model_provider`),model:n(r,`model`,`model`)??n(r,`actualModel`,`actual_model`),client:n(r,`client`,`client`)??n(r,`sourceApplication`,`source_application`),rule:n(r,`rule`,`rule`),fallback:n(r,`fallback`,`fallback`),reportedAt:n(r,`reportedAt`,`reported_at`)};return[i.executor,i.provider,i.model,i.rule,i.fallback].some(Boolean)?i:null}function p(r,i){let a=e(r),o=n(a,`personalProjectId`,`personal_project_id`),c=n(a,`assignmentId`,`assignment_id`);return!o||!c?null:{assignmentId:c,personalSpaceId:n(a,`personalSpaceId`,`personal_space_id`)??i.personalSpaceId,personalProjectId:o,agentId:n(a,`agentId`,`agent_id`)??i.agentId,responsibility:n(a,`responsibility`,`responsibility`)??i.profile.responsibility,scope:n(a,`scope`,`scope`),workKinds:s(t(a,`workKinds`,`work_kinds`)).filter(e=>typeof e==`string`),capabilities:s(a.capabilities).filter(e=>typeof e==`string`),modelStrategyOverride:l(t(a,`modelStrategyOverride`,`model_strategy_override`)),executorPolicyOverride:d(t(a,`executorPolicyOverride`,`executor_policy_override`)),reason:n(a,`reason`,`reason`),status:n(a,`status`,`status`)??`active`,revision:typeof a.revision==`number`?a.revision:void 0,sourceApplication:n(a,`sourceApplication`,`source_application`),sourceSessionId:n(a,`sourceSessionId`,`source_session_id`),assignedAt:n(a,`assignedAt`,`assigned_at`)??i.createdAt,updatedAt:n(a,`updatedAt`,`updated_at`)??i.updatedAt,endedAt:n(a,`endedAt`,`ended_at`),endReason:n(a,`endReason`,`end_reason`),replacedByAssignmentId:n(a,`replacedByAssignmentId`,`replaced_by_assignment_id`)}}function m(t){let r=e(t);return{agentId:n(r,`agentId`,`agent_id`)??``,assignmentId:n(r,`assignmentId`,`assignment_id`),role:n(r,`role`,`role`)??`collaborator`,status:n(r,`status`,`status`),assignmentSummary:n(r,`assignmentSummary`,`assignment_summary`),joinedAt:n(r,`joinedAt`,`joined_at`),updatedAt:n(r,`updatedAt`,`updated_at`),endedAt:n(r,`endedAt`,`ended_at`)}}function h(i){if(Array.isArray(i))return i.map(i=>{let s=e(i);return{agentId:n(s,`agentId`,`agent_id`),agentName:n(s,`agentName`,`agent_name`),occupationEmoji:n(s,`occupationEmoji`,`occupation_emoji`),workerId:n(s,`workerId`,`worker_id`),workerLabel:n(s,`workerLabel`,`worker_label`),workerOccupationEmoji:n(s,`workerOccupationEmoji`,`worker_occupation_emoji`),participantRole:n(s,`participantRole`,`participant_role`),executor:n(s,`executor`,`executor`),executorId:n(s,`executorId`,`executor_id`),sourceApplication:n(s,`sourceApplication`,`source_application`),sourceSessionId:n(s,`sourceSessionId`,`source_session_id`),sourceSessionUrl:n(s,`sourceSessionUrl`,`source_session_url`),workerRuntime:o(t(s,`workerRuntime`,`worker_runtime`)),toolsUsed:r(s,`toolsUsed`,`tools_used`),actualModelProvider:n(s,`actualModelProvider`,`actual_model_provider`),actualModel:n(s,`actualModel`,`actual_model`),tokenUsage:a(t(s,`tokenUsage`,`token_usage`)),workSummary:n(s,`workSummary`,`work_summary`),status:n(s,`status`,`status`)}})}function g(i){let s=e(i),c=n(s,`eventId`,`event_id`),l=n(s,`taskId`,`task_id`);if(!c||!l)return null;let u=f(t(s,`actualExecution`,`actual_execution`))??f({executor:n(s,`actualExecutor`,`actual_executor`),provider:n(s,`actualModelProvider`,`actual_model_provider`),model:n(s,`actualModel`,`actual_model`),client:n(s,`sourceApplication`,`source_application`),rule:n(s,`routingRuleId`,`routing_rule_id`)??n(s,`matchedExecutorRuleId`,`matched_executor_rule_id`),fallback:n(s,`fallbackReason`,`fallback_reason`)??n(s,`executorFallbackReason`,`executor_fallback_reason`),reportedAt:n(s,`createdAt`,`created_at`)});return{eventId:c,taskId:l,agentId:n(s,`agentId`,`agent_id`),status:n(s,`status`,`status`),actorKind:n(s,`actorKind`,`actor_kind`)??void 0,summary:n(s,`summary`,`summary`)??``,sourceApplication:n(s,`sourceApplication`,`source_application`),sourceSessionId:n(s,`sourceSessionId`,`source_session_id`),sourceSessionUrl:n(s,`sourceSessionUrl`,`source_session_url`),workerRuntime:o(t(s,`workerRuntime`,`worker_runtime`)),toolsUsed:r(s,`toolsUsed`,`tools_used`),tokenUsage:a(t(s,`tokenUsage`,`token_usage`)),actualExecution:u,actualModelProvider:n(s,`actualModelProvider`,`actual_model_provider`),actualModel:n(s,`actualModel`,`actual_model`),workerId:n(s,`workerId`,`worker_id`),workerLabel:n(s,`workerLabel`,`worker_label`),workerOccupationEmoji:n(s,`workerOccupationEmoji`,`worker_occupation_emoji`),workerStatus:n(s,`workerStatus`,`worker_status`),createdAt:n(s,`createdAt`,`created_at`)??``}}function _(r){if(!r||typeof r!=`object`)return null;let i=e(r);return{decisionId:n(i,`decisionId`,`decision_id`)??void 0,taskId:n(i,`taskId`,`task_id`)??void 0,coordinatorAgentId:n(i,`coordinatorAgentId`,`coordinator_agent_id`),complexity:(()=>{let e=t(i,`complexity`,`complexity`);return typeof e==`string`||typeof e==`number`?e:null})(),complexityBasis:s(t(i,`complexityBasis`,`complexity_basis`)).filter(e=>typeof e==`string`),outcome:n(i,`outcome`,`outcome`)??n(i,`routingOutcome`,`routing_outcome`),reason:n(i,`reason`,`reason`)??n(i,`routingReason`,`routing_reason`),matchBasis:s(t(i,`matchBasis`,`match_basis`)).filter(e=>typeof e==`string`),candidateAgentIds:s(t(i,`candidateAgentIds`,`candidate_agent_ids`)).filter(e=>typeof e==`string`),optimizationPriority:s(t(i,`optimizationPriority`,`optimization_priority`)).filter(e=>typeof e==`string`),parallelPlan:u(t(i,`parallelPlan`,`parallel_plan`)),selectedModelStrategy:l(t(i,`selectedModelStrategy`,`selected_model_strategy`)),modelStrategySource:n(i,`modelStrategySource`,`model_strategy_source`)??void 0,ruleId:n(i,`ruleId`,`rule_id`)??n(i,`matchedExecutorRuleId`,`matched_executor_rule_id`)??n(i,`executorRuleId`,`executor_rule_id`),fallback:n(i,`fallback`,`fallback`)??n(i,`fallbackReason`,`fallback_reason`)??n(i,`executorFallbackReason`,`executor_fallback_reason`)}}function v(e){return e!=null&&(typeof e!=`string`||e.length>0)&&(!Array.isArray(e)||e.length>0)}function y(e){return[`staffingIntent`,`staffing_intent`,`routingOutcome`,`routing_outcome`,`routingReason`,`routing_reason`,`routingExplanation`,`routing_explanation`,`coordinatorAgentId`,`coordinator_agent_id`,`complexity`,`complexityBasis`,`complexity_basis`,`matchBasis`,`match_basis`,`candidateAgentIds`,`candidate_agent_ids`].some(t=>v(e[t]))?_({outcome:t(e,`routingOutcome`,`routing_outcome`),reason:t(e,`routingReason`,`routing_reason`),matchBasis:t(e,`matchBasis`,`match_basis`),coordinatorAgentId:t(e,`coordinatorAgentId`,`coordinator_agent_id`),complexity:t(e,`complexity`,`complexity`),complexityBasis:t(e,`complexityBasis`,`complexity_basis`),candidateAgentIds:t(e,`candidateAgentIds`,`candidate_agent_ids`)}):null}function b(r){let i=e(r),a=n(i,`taskId`,`task_id`);if(!a)return null;let o=e(t(i,`projectScope`,`project_scope`)),c=o.type===`temporary`||o.type===`registered`?{type:o.type,lifetime:n(o,`lifetime`,`lifetime`),...typeof o.persisted==`boolean`?{persisted:o.persisted}:{}}:void 0,u=f(t(i,`actualExecution`,`actual_execution`))??f({executor:n(i,`actualExecutor`,`actual_executor`),provider:n(i,`actualModelProvider`,`actual_model_provider`),model:n(i,`actualModel`,`actual_model`),client:n(i,`sourceApplication`,`source_application`),rule:n(i,`routingRuleId`,`routing_rule_id`)??n(i,`matchedExecutorRuleId`,`matched_executor_rule_id`),fallback:n(i,`fallbackReason`,`fallback_reason`)??n(i,`executorFallbackReason`,`executor_fallback_reason`)}),p=_(t(i,`routingDecision`,`routing_decision`))??y(i);return{taskId:a,personalSpaceId:n(i,`personalSpaceId`,`personal_space_id`)??void 0,personalProjectId:n(i,`personalProjectId`,`personal_project_id`),projectScope:c,title:n(i,`title`,`title`)??a,objective:n(i,`objective`,`objective`),workKind:n(i,`workKind`,`work_kind`),status:n(i,`status`,`status`),runId:n(i,`runId`,`run_id`),executionId:n(i,`executionId`,`execution_id`),ownerAgentId:n(i,`ownerAgentId`,`owner_agent_id`),leadAgentId:n(i,`leadAgentId`,`lead_agent_id`),coordinatorAgentId:n(i,`coordinatorAgentId`,`coordinator_agent_id`),hrAgentId:n(i,`hrAgentId`,`hr_agent_id`),recruitmentId:n(i,`recruitmentId`,`recruitment_id`),participants:s(i.participants).map(m),sourceApplication:n(i,`sourceApplication`,`source_application`),sourceSessionId:n(i,`sourceSessionId`,`source_session_id`),resultSummary:n(i,`resultSummary`,`result_summary`),failureReason:n(i,`failureReason`,`failure_reason`),createdAt:n(i,`createdAt`,`created_at`),updatedAt:n(i,`updatedAt`,`updated_at`),completedAt:n(i,`completedAt`,`completed_at`),effectiveModelStrategy:l(t(i,`effectiveModelStrategy`,`effective_model_strategy`)),effectiveExecutorPolicy:d(t(i,`effectiveExecutorPolicy`,`effective_executor_policy`)??t(i,`executorPolicy`,`executor_policy`)),staffingIntent:n(i,`staffingIntent`,`staffing_intent`),requiredCapabilities:s(t(i,`requiredCapabilities`,`required_capabilities`)).filter(e=>typeof e==`string`),executorCapabilityHints:s(t(i,`executorCapabilityHints`,`executor_capability_hints`)).filter(e=>typeof e==`string`),routingOutcome:n(i,`routingOutcome`,`routing_outcome`),routingReason:n(i,`routingReason`,`routing_reason`),routingExplanation:n(i,`routingExplanation`,`routing_explanation`),matchBasis:s(t(i,`matchBasis`,`match_basis`)).filter(e=>typeof e==`string`),complexity:(()=>{let e=t(i,`complexity`,`complexity`);return typeof e==`string`||typeof e==`number`?e:null})(),complexityBasis:s(t(i,`complexityBasis`,`complexity_basis`)).filter(e=>typeof e==`string`),modelStrategySource:n(i,`modelStrategySource`,`model_strategy_source`)??void 0,actualExecution:u,executionSummary:h(t(i,`executionSummary`,`execution_summary`)),routingDecision:p,events:s(i.events).map(g).filter(Boolean)}}function x(e){return e.executionSummary===void 0?(e.events??[]).filter(e=>!!(e.workerId||e.workerLabel||e.workerOccupationEmoji||e.workerStatus)):[]}function S(e){return!!(e&&(e.enabled||e.independentVerification||e.conflictFreeScopes||e.reason||e.workstreamBoundaries?.length))}function C(e){return e.actualExecution??{provider:e.actualModelProvider??null,model:e.actualModel??null,client:e.sourceApplication??null,reportedAt:e.createdAt}}var w=new Set([`awaiting_recruitment`,`queued`,`running`,`paused`,`awaiting_review`,`blocked`]);function T(t,n){let r=e(t);return s(Array.isArray(t)?t:r.tasks??r.items).map(b).filter(e=>!!(e&&(!n||!e.personalSpaceId||e.personalSpaceId===n)))}function E(e,t=6){return e.filter(e=>w.has(e.status)).sort(A).slice(0,t)}function D(e,t,n=6){let r=new Map(t.map(e=>[e.project_id,e.profile.name])),i=new Map;for(let t of e){let e=t.personalProjectId;if(!e)continue;let n=t.updatedAt??t.createdAt??null,a=i.get(e);if(!a){i.set(e,{id:e,name:r.get(e)??e,updatedAt:n,taskCount:1});continue}a.taskCount+=1,M(n,a.updatedAt)<0&&(a.updatedAt=n)}return i.size?[...i.values()].sort(j).slice(0,n):t.slice(0,n).map(e=>({id:e.project_id,name:e.profile.name,updatedAt:null,taskCount:0}))}function O(e){let t=new URLSearchParams,n=e.leadAgentId??e.ownerAgentId??e.participants.find(e=>e.agentId)?.agentId;return n&&t.set(`agent`,n),e.personalProjectId&&t.set(`project`,e.personalProjectId),t.set(`task`,e.taskId),`/project-agents/manage?${t}#task-${encodeURIComponent(e.taskId)}`}function k(e){return`/project-agents/manage?${new URLSearchParams({agent:e.agentId,project:e.personalProjectId,task:e.taskId})}#task-${encodeURIComponent(e.taskId)}`}function A(e,t){return M(e.updatedAt??e.createdAt??null,t.updatedAt??t.createdAt??null)||t.taskId.localeCompare(e.taskId)}function j(e,t){return M(e.updatedAt,t.updatedAt)||t.taskCount-e.taskCount||e.name.localeCompare(t.name)}function M(e,t){let n=e?Date.parse(e):NaN,r=t?Date.parse(t):NaN;return!Number.isNaN(n)&&!Number.isNaN(r)?r-n:Number.isNaN(n)?Number.isNaN(r)?String(t??``).localeCompare(String(e??``)):1:-1}var N=[`awaiting_recruitment`,`queued`,`running`,`paused`,`awaiting_review`,`blocked`],P={blocked:6,awaiting_review:5,running:4,paused:3,queued:2,awaiting_recruitment:1},F=new Set([`completed`,`cancelled`,`failed`]);function I(e){return N.includes(e)}function L(e,t){let n=P[e.status],r=P[t.status];if(n!==r)return n>r;let i=e.updatedAt?Date.parse(e.updatedAt):NaN,a=t.updatedAt?Date.parse(t.updatedAt):NaN;return!Number.isNaN(i)&&!Number.isNaN(a)?i>a:!Number.isNaN(i)}function R(e,t){let n=e.participants.find(e=>e.agentId===t);if(F.has(e.status)||n&&F.has(n.status))return null;let r=n?.status??e.status,i=I(r)?r:I(e.status)?e.status:null;return i?{status:i,taskId:e.taskId,title:e.title,updatedAt:e.updatedAt??e.createdAt}:null}function z(e){let t=new Set;for(let n of e.participants)n.agentId&&t.add(n.agentId);for(let n of[e.ownerAgentId,e.leadAgentId,e.coordinatorAgentId])n&&t.add(n);return t}function B(e,t){return z(e).has(t)}function V(e,t){let n={},r={},i=T(e,t);for(let e of i)for(let t of z(e)){let i=R(e,t);if(!i)continue;let a=r[t];a&&!L(i,a)||(r[t]=i,n[t]={status:i.status,taskId:i.taskId,title:i.title})}return n}function H(t,n=200){let r=e(t),i=Array.isArray(t)?t:Array.isArray(r.tasks)?r.tasks:Array.isArray(r.items)?r.items:null;if(!i)return!1;let a=r.hasMore??r.has_more??r.truncated;if(a===!0)return!1;if(a===!1)return!0;let o=r.total??r.totalCount??r.total_count;return typeof o==`number`&&Number.isFinite(o)&&o>=0?o<=i.length:i.length<n}export{n as C,x as E,r as S,t as T,l as _,E as a,o as b,O as c,s as d,C as f,d as g,m as h,w as i,D as l,p as m,V as n,T as o,f as p,B as r,k as s,H as t,c as u,b as v,e as w,S as x,a as y};
@@ -0,0 +1 @@
1
+ import{X as e,a as t}from"./i18n-D2CJkEYK.js";import{r as n}from"./console-BtPqo79j.js";import{i as r,n as i}from"./client-B2cRl-7c.js";var a=n(`agent-attention`,()=>{let n=e(``),a=e({}),o=e(0),s=e([]),c=e(0),l=e([]),u=e(0),d=e(``),f=e(!1),p=e(!1),m=e(``),h=e(``),g=e(!1),_=e(!1),v=e(``),y=0,b=0;function x(e,t){d.value=e,l.value=t.items.filter(t=>t.personalSpaceId===e).slice(0,5),u.value=t.total,p.value=!0,m.value=``}function S(){b++,d.value=``,l.value=[],u.value=0,p.value=!1,f.value=!1,m.value=``}async function C(){let e=++y;if(!n.value)return;_.value=!0;let t=++b;d.value=n.value,f.value=!0,m.value=``;try{let r=new URLSearchParams({personalSpaceId:n.value,status:`open`}),l=await i(`/api/agent-attention?${r}&limit=5`);if(e!==y)return;if(a.value=l.counts,o.value=l.total,t===b&&(x(n.value,l),f.value=!1),g.value){h.value&&r.set(`agentId`,h.value);let t=await i(`/api/agent-attention?${r}&limit=100`);if(e!==y)return;s.value=t.items.filter(e=>e.personalSpaceId===n.value&&(!h.value||e.agentId===h.value)),c.value=t.total}v.value=``}catch(n){e===y&&(v.value=n instanceof Error?n.message:String(n)),t===b&&(m.value=n instanceof Error?n.message:String(n),f.value=!1)}finally{e===y&&(_.value=!1),t===b&&(f.value=!1)}}async function w(e=n.value,t={}){if(!e||!t.force&&d.value===e&&(f.value||p.value))return;let r=++b;d.value!==e&&(l.value=[],u.value=0,p.value=!1),d.value=e,f.value=!0,m.value=``;try{let t=await i(`/api/agent-attention?${new URLSearchParams({personalSpaceId:e,status:`open`,limit:`5`})}`);if(r!==b)return;x(e,t)}catch(e){r===b&&(m.value=e instanceof Error?e.message:String(e))}finally{r===b&&(f.value=!1)}}function T(e){n.value!==e&&(y++,n.value=e,a.value={},s.value=[],o.value=0,c.value=0,v.value=``,g.value=!1,_.value=!1,h.value=``,S(),e&&C())}function E(e=``){h.value=e,s.value=[],c.value=0,g.value=!0,C()}async function D(){if(_.value)return;let e=++y;_.value=!0;try{let t=new URLSearchParams({personalSpaceId:n.value,status:`open`,limit:`100`,offset:String(s.value.length)});h.value&&t.set(`agentId`,h.value);let r=await i(`/api/agent-attention?${t}`);if(e!==y)return;let a=new Set(s.value.map(e=>e.requestId));s.value.push(...r.items.filter(e=>e.personalSpaceId===n.value&&(!h.value||e.agentId===h.value)&&!a.has(e.requestId))),c.value=r.total}catch(t){e===y&&(v.value=String(t))}finally{e===y&&(_.value=!1)}}async function O(e,i){let f=n.value;if(!f||e.personalSpaceId!==f)throw Error(t(`attention.wrongSpace`));await r(`/api/agent-attention/respond`,{personalSpaceId:f,personalProjectId:e.personalProjectId,requestId:e.requestId,expectedRevision:e.revision,response:i}),n.value===f&&(s.value=s.value.filter(t=>t.requestId!==e.requestId),o.value=Math.max(0,o.value-1),a.value={...a.value,[e.agentId]:Math.max(0,(a.value[e.agentId]??0)-1)},(!h.value||h.value===e.agentId)&&(c.value=Math.max(0,c.value-1)),d.value===f&&(l.value=l.value.filter(t=>t.requestId!==e.requestId),u.value=Math.max(0,u.value-1)),await C())}return{spaceId:n,counts:a,total:o,items:s,filteredTotal:c,previewItems:l,previewTotal:u,previewSpaceId:d,previewLoading:f,previewLoaded:p,previewError:m,agentId:h,open:g,loading:_,error:v,setSpace:T,show:E,refresh:C,refreshPreview:w,more:D,respond:O}});function o(e){let t=new URLSearchParams({agent:e.agentId,project:e.personalProjectId});return e.taskId&&t.set(`task`,e.taskId),`/project-agents?${t}${e.taskId?`#task-${encodeURIComponent(e.taskId)}`:``}`}export{a as n,o as t};
@@ -1 +1 @@
1
- import{Z as e,a as t}from"./i18n-CIIxzhPZ.js";import{n}from"./client-DTQ_tUr2.js";function r(e){let t=/^employee\.([a-z][a-z0-9-]{0,63})$/.exec(e.agentId)?.[1];return t&&e.profile.capabilities.includes(`fuli.employee:${t}`)?t:null}var i=e([]),a=e(!1),o=e(``),s=``,c=null,l=0;async function u(e){if(!e)return[];let t=await n(`/api/employee-templates?${new URLSearchParams({personalSpaceId:e})}`);return Array.isArray(t.templates)?t.templates:[]}function d(e){if(e===s&&c)return c;let t=++l;return e!==s&&(i.value=[]),s=e,o.value=``,e?(a.value=!0,c=u(e).then(e=>{t===l&&(i.value=e)}).catch(e=>{t===l&&(i.value=[],o.value=f(e))}).finally(()=>{t===l&&(a.value=!1,c=null)}),c):(i.value=[],a.value=!1,Promise.resolve())}function f(e){let n=e instanceof Error?e.message:``;try{let e=JSON.parse(n);return e.code&&[`runtime_unavailable`,`assignment_required`,`project_not_found`,`identity_conflict`,`reactivation_required`,`assignment_scope_conflict`,`assignment_update_incomplete`].includes(e.code)?t(`employees.errors.${e.code}`):e.error||t(`employees.loadError`)}catch{return n||t(`employees.loadError`)}}export{i as a,r as i,a as n,u as o,f as r,d as s,o as t};
1
+ import{X as e,a as t}from"./i18n-D2CJkEYK.js";import{n}from"./client-B2cRl-7c.js";function r(e){let t=/^employee\.([a-z][a-z0-9-]{0,63})$/.exec(e.agentId)?.[1];return t&&e.profile.capabilities.includes(`fuli.employee:${t}`)?t:null}var i=e([]),a=e(!1),o=e(``),s=``,c=null,l=0;async function u(e){if(!e)return[];let t=await n(`/api/employee-templates?${new URLSearchParams({personalSpaceId:e})}`);return Array.isArray(t.templates)?t.templates:[]}function d(e){if(e===s&&c)return c;let t=++l;return e!==s&&(i.value=[]),s=e,o.value=``,e?(a.value=!0,c=u(e).then(e=>{t===l&&(i.value=e)}).catch(e=>{t===l&&(i.value=[],o.value=f(e))}).finally(()=>{t===l&&(a.value=!1,c=null)}),c):(i.value=[],a.value=!1,Promise.resolve())}function f(e){let n=e instanceof Error?e.message:``;try{let e=JSON.parse(n);return e.code&&[`runtime_unavailable`,`assignment_required`,`project_not_found`,`identity_conflict`,`reactivation_required`,`assignment_scope_conflict`,`assignment_update_incomplete`].includes(e.code)?t(`employees.errors.${e.code}`):e.error||t(`employees.loadError`)}catch{return n||t(`employees.loadError`)}}export{i as a,r as i,a as n,u as o,f as r,d as s,o as t};
@@ -1 +1 @@
1
- import{a as e}from"./i18n-CIIxzhPZ.js";var t=class extends Error{status;detail;constructor(e,t,n=``){super(e),this.name=`ApiError`,this.status=t,this.detail=n}};async function n(n,r){let i=await fetch(n,r);if(!i.ok){let n=(await i.text()).trim();throw new t(i.status>=500?e(`common.errors.serviceUnavailable`,{status:i.status}):n||e(`common.errors.requestFailed`,{status:i.status}),i.status,n)}return i.json()}function r(e,t){return n(e,t)}function i(e,t){return n(e,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}function a(e,t){return n(e,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}function o(e,t){return n(e,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}function s(e){return n(e,{method:`DELETE`})}export{a,i,r as n,o as r,s as t};
1
+ import{a as e}from"./i18n-D2CJkEYK.js";var t=class extends Error{status;detail;constructor(e,t,n=``){super(e),this.name=`ApiError`,this.status=t,this.detail=n}};async function n(n,r){let i=await fetch(n,r);if(!i.ok){let n=(await i.text()).trim();throw new t(i.status>=500?e(`common.errors.serviceUnavailable`,{status:i.status}):n||e(`common.errors.requestFailed`,{status:i.status}),i.status,n)}return i.json()}function r(e,t){return n(e,t)}function i(e,t){return n(e,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}function a(e,t){return n(e,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}function o(e,t){return n(e,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}function s(e){return n(e,{method:`DELETE`})}export{a,i,r as n,o as r,s as t};
@@ -0,0 +1 @@
1
+ import{$ as e,D as t,E as n,G as r,H as i,J as a,K as o,Q as s,R as c,U as l,W as u,X as d,_ as f,a as p,et as m,k as h,q as g}from"./i18n-D2CJkEYK.js";import{n as _,r as v}from"./client-B2cRl-7c.js";var y=typeof window<`u`,b,x=e=>b=e,S=Symbol();function C(e){return e&&typeof e==`object`&&Object.prototype.toString.call(e)===`[object Object]`&&typeof e.toJSON!=`function`}var w=typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:typeof globalThis==`object`?globalThis:{HTMLElement:null};function T(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function E(e,t,n){let r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){j(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function D(e){let t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return t.status>=200&&t.status<=299}function O(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{let t=new MouseEvent(`click`,{bubbles:!0,cancelable:!0,view:window,detail:0,screenX:80,screenY:20,clientX:80,clientY:20,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null});e.dispatchEvent(t)}}var k=typeof navigator==`object`?navigator:{userAgent:``},A=/Macintosh/.test(k.userAgent)&&/AppleWebKit/.test(k.userAgent)&&!/Safari/.test(k.userAgent),j=y?typeof HTMLAnchorElement<`u`&&`download`in HTMLAnchorElement.prototype&&!A?M:`msSaveOrOpenBlob`in k?N:P:()=>{};function M(e,t=`download`,n){let r=document.createElement(`a`);r.download=t,r.rel=`noopener`,typeof e==`string`?(r.href=e,r.origin===location.origin?O(r):D(r.href)?E(e,t,n):(r.target=`_blank`,O(r))):(r.href=URL.createObjectURL(e),setTimeout(function(){URL.revokeObjectURL(r.href)},4e4),setTimeout(function(){O(r)},0))}function N(e,t=`download`,n){if(typeof e==`string`)if(D(e))E(e,t,n);else{let t=document.createElement(`a`);t.href=e,t.target=`_blank`,setTimeout(function(){O(t)})}else navigator.msSaveOrOpenBlob(T(e,n),t)}function P(e,t,n,r){if(r||=open(``,`_blank`),r&&(r.document.title=r.document.body.innerText=`downloading...`),typeof e==`string`)return E(e,t,n);let i=e.type===`application/octet-stream`,a=/constructor/i.test(String(w.HTMLElement))||`safari`in w,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||i&&a||A)&&typeof FileReader<`u`){let t=new FileReader;t.onloadend=function(){let e=t.result;if(typeof e!=`string`)throw r=null,Error(`Wrong reader.result type`);e=o?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{let t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout(function(){URL.revokeObjectURL(t)},4e4)}}var{assign:F}=Object;function I(){let e=i(!0),t=e.run(()=>d({})),n=[],r=[],a=o({install(e){x(a),a._a=e,e.provide(S,a),e.config.globalProperties.$pinia=a,r.forEach(e=>n.push(e)),r=[]},use(e){return this._a?n.push(e):r.push(e),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return a}var L=()=>{};function R(e,t,n,r=L){e.add(t);let i=()=>{e.delete(t)&&r()};return!n&&l()&&g(i),i}function z(e,...t){e.forEach(e=>{e(...t)})}var B=e=>e(),V=Symbol(),H=Symbol();function U(e,t){e instanceof Map&&t instanceof Map?t.forEach((t,n)=>e.set(n,t)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(let n in t){if(!Object.hasOwn(t,n))continue;let i=t[n],a=e[n];C(a)&&C(i)&&Object.hasOwn(e,n)&&!r(i)&&!u(i)?e[n]=U(a,i):e[n]=i}return e}var W=Symbol();function G(e){return!e||typeof e!=`object`||!Object.hasOwn(e,W)}var{assign:K}=Object;function q(e){return!!(r(e)&&e.effect)}function J(e,t,n,r){let{state:i,actions:a,getters:s}=t,c=n.state.value[e],l;function u(){return c||(n.state.value[e]=i?i():{}),K(m(n.state.value[e]),a,Object.keys(s||{}).reduce((t,r)=>(t[r]=o(f(()=>{x(n);let t=n._s.get(e);return s[r].call(t,t)})),t),{}))}return l=Y(e,u,t,n,r,!0),l}function Y(t,n,o={},s,l,d){let f,p=K({actions:{}},o),m={deep:!0},g,_,v=new Set,y=new Set,b=s.state.value[t];!d&&!b&&(s.state.value[t]={});let S;function C(e){let n;g=_=!1,typeof e==`function`?(e(s.state.value[t]),n={type:`patch function`,storeId:t,events:void 0}):(U(s.state.value[t],e),n={type:`patch object`,payload:e,storeId:t,events:void 0});let r=S=Symbol();h().then(()=>{S===r&&(g=!0)}),_=!0,z(v,n,s.state.value[t])}let w=d?function(){let{state:e}=o,t=e?e():{};this.$patch(e=>{K(e,t)})}:L;function T(){f.stop(),v.clear(),y.clear(),s._s.delete(t)}let E=(e,n=``)=>{if(V in e)return e[H]=n,e;let r=function(){x(s);let n=Array.from(arguments),i=new Set,a=new Set;function o(e){i.add(e)}function c(e){a.add(e)}z(y,{args:n,name:r[H],store:D,after:o,onError:c});let l;try{l=e.apply(this&&this.$id===t?this:D,n)}catch(e){throw z(a,e),e}return l instanceof Promise?l.then(e=>(z(i,e),e)).catch(e=>(z(a,e),Promise.reject(e))):(z(i,l),l)};return r[V]=!0,r[H]=n,r},D=a({_p:s,$id:t,$onAction:R.bind(null,y),$patch:C,$reset:w,$subscribe(e,n={}){if(v.has(e))return L;let r=R(v,e,n.detached,()=>i()),i=f.run(()=>c(()=>s.state.value[t],r=>{(n.flush===`sync`?_:g)&&e({storeId:t,type:`direct`,events:void 0},r)},K({},m,n)));return r},$dispose:T});s._s.set(t,D);let O=(s._a&&s._a.runWithContext||B)(()=>s._e.run(()=>(f=i()).run(()=>n({action:E}))));for(let e in O){let n=O[e];r(n)&&!q(n)||u(n)?d||(b&&G(n)&&(r(n)?n.value=b[e]:U(n,b[e])),s.state.value[t][e]=n):typeof n==`function`&&(O[e]=E(n,e),p.actions[e]=n)}return K(D,O),K(e(D),O),Object.defineProperty(D,"$state",{get:()=>s.state.value[t],set:e=>{C(t=>{K(t,e)})}}),s._p.forEach(e=>{let t=f.run(()=>e({store:D,app:s._a,pinia:s,options:p}));K(D,t)}),b&&d&&o.hydrate&&o.hydrate(D.$state,b),g=!0,_=!0,D}function X(e,r,i){let a,o=typeof r==`function`;a=o?i:r;function s(i,s){let c=n();return i||=c?t(S,null):null,i&&x(i),i=b,i._s.has(e)||(o?Y(e,r,a,i):J(e,a,i)),i._s.get(e)}return s.$id=e,s}var Z=X(`console`,()=>{let e=s(null),t=d(`idle`),n=d(!1),r=d(null),i=f(()=>{let t=e.value;return t?t.personalSpaces.find(({id:e})=>e===t.activePersonalSpaceId)??t.personalSpaces[0]??null:null}),a=f(()=>e.value?.mode===`connected`?`ready`:e.value?.mode===`degraded`?`error`:`disconnected`);async function o(){t.value=`loading`;try{e.value=await _(`/api/state`),t.value=`ready`}catch(e){t.value=`error`,h(e)}}async function c(t){try{let n=await v(`/api/capture-policy`,{enabled:t});e.value&&={...e.value,capturePolicy:n},m(p(t?`console.captureNotices.enabled`:`console.captureNotices.disabled`))}catch(e){h(e)}}async function l(t){try{let n=await v(`/api/agent-access-policy`,{enabled:t});e.value&&={...e.value,agentAccessPolicy:n},m(p(t?`console.agentAccess.enabledNotice`:`console.agentAccess.disabledNotice`))}catch(e){h(e)}}function u(t){return e.value?.capabilities?.[t]===!0}function m(e){r.value={message:e,tone:`success`}}function h(e){r.value={message:e instanceof Error?e.message:p(`common.errors.operationFailed`),tone:`error`}}function g(){r.value=null}return{state:e,runtimeStatus:t,settingsSaving:n,feedback:r,activePersonalSpace:i,publicRuntimeStatus:a,refresh:o,updateCapturePolicy:c,updateAgentAccessPolicy:l,hasCapability:u,notify:m,reportError:h,clearFeedback:g}});export{I as n,X as r,Z as t};
@@ -1 +1 @@
1
- import{$ as e,X as t,a as n}from"./i18n-CIIxzhPZ.js";import{n as r}from"./client-DTQ_tUr2.js";var i=[`codex`,`claude`,`claude_code`,`cursor`,`gemini_cli`,`kiro`,`other`],a={codex:`Codex`,claude:`Claude`,claude_code:`Claude Code`,cursor:`Cursor`,gemini_cli:`Gemini CLI`,kiro:`Kiro`,other:`Other Agent`},o=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,s=/^[^\u0000-\u001f\u007f]{1,512}$/,c=new Set([`about`,`blob`,`data`,`file`,`javascript`]),l={codex:{enabled:!0,idFormat:`uuid`,appName:`Codex`,urlTemplate:`codex://threads/{id}`},claude:{enabled:!1,idFormat:`any`,appName:`Claude`,urlTemplate:``},claude_code:{enabled:!1,idFormat:`any`,appName:`Claude Code`,urlTemplate:``},cursor:{enabled:!1,idFormat:`any`,appName:`Cursor`,urlTemplate:``},gemini_cli:{enabled:!1,idFormat:`any`,appName:`Gemini CLI`,urlTemplate:``},kiro:{enabled:!1,idFormat:`any`,appName:`Kiro`,urlTemplate:``},other:{enabled:!1,idFormat:`any`,appName:`Other Agent`,urlTemplate:``}};function u(e={}){let t=e.source_application?.trim().toLocaleLowerCase().replaceAll(`-`,`_`).replaceAll(` `,`_`);if(t&&a[t])return t;let n=`${e.source_kind??``} ${e.source_description??``}`.toLocaleLowerCase();return n.includes(`claude`)?`claude_code`:n.includes(`cursor`)?`cursor`:n.includes(`gemini`)?`gemini_cli`:n.includes(`kiro`)?`kiro`:n.includes(`codex`)?`codex`:`other`}function d(e){let t=u(e);return t===`other`?n(`knowledge.domain.actors.otherAgent`):a[t]}function f(e){return a[e]}function p(e={},t=l){if(m(e,t)!==`available`)return null;let n=t[u(e)],r=e.session_id.trim();return n.urlTemplate.replace(`{id}`,encodeURIComponent(r))}function m(e={},t=l){let n=t[u(e)];return n?.enabled?_(e.session_id?.trim()??``,n.idFormat)?v(n.urlTemplate)?`available`:`invalid_template`:`invalid_id`:`disabled`}function h(e={},t=l){let n=t[u(e)];return n?.enabled&&n.appName.trim()?n.appName.trim():null}async function g(e={},t=globalThis.navigator?.clipboard){return!e.session_id||!t?.writeText?!1:(await t.writeText(e.session_id),!0)}function _(e,t){return s.test(e)?t===`any`||o.test(e):!1}function v(e){if(e.split(`{id}`).length!==2||/\s/.test(e))return!1;let t=/^([a-z][a-z0-9+.-]*):/i.exec(e)?.[1]?.toLocaleLowerCase();return!!t&&!c.has(t)}var y=e(w(l)),b=null;function x(){return C(),t(y)}function S(e){y.value=w(e)}function C({force:e=!1}={}){return!e&&b||(b=r(`/api/system/settings`).then(e=>{S(e.configured.conversationLaunchers)}).catch(()=>void 0)),b}function w(e){return Object.fromEntries(i.map(t=>[t,{...l[t],...e?.[t]??{}}]))}export{g as a,h as c,i,p as l,S as n,d as o,x as r,f as s,w as t};
1
+ import{Q as e,Y as t,a as n}from"./i18n-D2CJkEYK.js";import{n as r}from"./client-B2cRl-7c.js";var i=[`codex`,`claude`,`claude_code`,`cursor`,`gemini_cli`,`kiro`,`other`],a={codex:`Codex`,claude:`Claude`,claude_code:`Claude Code`,cursor:`Cursor`,gemini_cli:`Gemini CLI`,kiro:`Kiro`,other:`Other Agent`},o=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,s=/^[^\u0000-\u001f\u007f]{1,512}$/,c=new Set([`about`,`blob`,`data`,`file`,`javascript`]),l={codex:{enabled:!0,idFormat:`uuid`,appName:`Codex`,urlTemplate:`codex://threads/{id}`},claude:{enabled:!1,idFormat:`any`,appName:`Claude`,urlTemplate:``},claude_code:{enabled:!1,idFormat:`any`,appName:`Claude Code`,urlTemplate:``},cursor:{enabled:!1,idFormat:`any`,appName:`Cursor`,urlTemplate:``},gemini_cli:{enabled:!1,idFormat:`any`,appName:`Gemini CLI`,urlTemplate:``},kiro:{enabled:!1,idFormat:`any`,appName:`Kiro`,urlTemplate:``},other:{enabled:!1,idFormat:`any`,appName:`Other Agent`,urlTemplate:``}};function u(e={}){let t=e.source_application?.trim().toLocaleLowerCase().replaceAll(`-`,`_`).replaceAll(` `,`_`);if(t&&a[t])return t;let n=`${e.source_kind??``} ${e.source_description??``}`.toLocaleLowerCase();return n.includes(`claude`)?`claude_code`:n.includes(`cursor`)?`cursor`:n.includes(`gemini`)?`gemini_cli`:n.includes(`kiro`)?`kiro`:n.includes(`codex`)?`codex`:`other`}function d(e){let t=u(e);return t===`other`?n(`knowledge.domain.actors.otherAgent`):a[t]}function f(e){return a[e]}function p(e={},t=l){if(m(e,t)!==`available`)return null;let n=t[u(e)],r=e.session_id.trim();return n.urlTemplate.replace(`{id}`,encodeURIComponent(r))}function m(e={},t=l){let n=t[u(e)];return n?.enabled?_(e.session_id?.trim()??``,n.idFormat)?v(n.urlTemplate)?`available`:`invalid_template`:`invalid_id`:`disabled`}function h(e={},t=l){let n=t[u(e)];return n?.enabled&&n.appName.trim()?n.appName.trim():null}async function g(e={},t=globalThis.navigator?.clipboard){return!e.session_id||!t?.writeText?!1:(await t.writeText(e.session_id),!0)}function _(e,t){return s.test(e)?t===`any`||o.test(e):!1}function v(e){if(e.split(`{id}`).length!==2||/\s/.test(e))return!1;let t=/^([a-z][a-z0-9+.-]*):/i.exec(e)?.[1]?.toLocaleLowerCase();return!!t&&!c.has(t)}var y=e(w(l)),b=null;function x(){return C(),t(y)}function S(e){y.value=w(e)}function C({force:e=!1}={}){return!e&&b||(b=r(`/api/system/settings`).then(e=>{S(e.configured.conversationLaunchers)}).catch(()=>void 0)),b}function w(e){return Object.fromEntries(i.map(t=>[t,{...l[t],...e?.[t]??{}}]))}export{g as a,h as c,i,p as l,S as n,d as o,x as r,f as s,w as t};
@@ -1 +1 @@
1
- import{F as e,N as t,T as n,_ as r,a as i,at as a,h as o,i as s,n as c,nt as l,t as u,x as d}from"./i18n-CIIxzhPZ.js";var f=[`aria-label`],p=[`lang`,`aria-label`,`aria-pressed`,`onClick`],m=n({__name:`LocaleSwitcher`,setup(n){let m=r(()=>c()),h={"zh-CN":`中`,"en-US":`EN`};function g(e){e!==m.value&&s(e)}return(n,r)=>(t(),d(`div`,{class:`locale-switcher`,role:`group`,"aria-label":l(i)(`common.language.label`)},[(t(!0),d(o,null,e(l(u),e=>(t(),d(`button`,{key:e,type:`button`,lang:e,"aria-label":l(i)(e===`zh-CN`?`common.language.chinese`:`common.language.english`),"aria-pressed":m.value===e,onClick:t=>g(e)},a(h[e]),9,p))),128))],8,f))}});function h(e,t){return c()===`zh-CN`?e:t}var g={draft:[`草案`,`Draft`],active:[`进行中`,`Active`],paused:[`已暂停`,`Paused`],waiting_input:[`等待你的判断`,`Awaiting your decision`],waiting_auth:[`等待授权`,`Awaiting authorization`],concluded:[`已结束`,`Concluded`],failed:[`失败`,`Failed`],cancelled:[`已停止`,`Stopped`],discussion:[`讨论`,`Discussion`],collaboration:[`协作任务`,`Collaborative task`],planning:[`分工`,`Planning`],implementation:[`实施`,`Implementation`],review:[`审查`,`Review`],synthesis:[`汇总`,`Synthesis`],moderator:[`主持人`,`Moderator`],specialist:[`专家`,`Specialist`],implementer:[`实施者`,`Implementer`],reviewer:[`审查者`,`Reviewer`],pending:[`待处理`,`Pending`],claimed:[`已领取`,`Claimed`],running:[`运行中`,`Running`],reported_complete:[`已报告完成`,`Completion reported`],completed:[`已提交回合`,`Turn submitted`],interrupted:[`已中断`,`Interrupted`],blocked:[`受阻`,`Blocked`],expired:[`已过期`,`Expired`],cancellation_requested:[`已请求取消`,`Cancellation requested`],human_accepted:[`已由人确认`,`Accepted by human`],task_verified:[`任务验证通过`,`Task verified`],"read-only":[`只读`,`Read only`],"workspace-write":[`允许写入工作区`,`Workspace write`],mcp:[`MCP · 主动参与`,`MCP · active participation`],codex:[`Codex CLI`,`Codex CLI`],"claude-code":[`Claude Code CLI`,`Claude Code CLI`],pi:[`Pi · 本地 Ollama`,`Pi · local Ollama`],grok:[`Grok · xAI API`,`Grok · xAI API`],a2a:[`A2A · 协议适配`,`A2A · protocol adapter`],proposal:[`提案`,`Proposal`],question:[`提问`,`Question`],handoff:[`交接`,`Handoff`],result:[`结果`,`Result`],dissent:[`分歧`,`Dissent`],user:[`你的补充`,`Your input`],human:[`你的补充`,`Your input`],system:[`系统事件`,`System event`],seat_joined:[`席位加入`,`Seat joined`],turn_claimed:[`回合被领取`,`Turn claimed`],phase_changed:[`阶段改变`,`Phase changed`],attempt_failed:[`尝试失败`,`Attempt failed`],attempt_interrupted:[`尝试中断`,`Attempt interrupted`],owner_control:[`所有者操作`,`Owner control`],invitation_issued:[`邀请已签发`,`Invitation issued`],invitation_revoked:[`邀请已撤销`,`Invitation revoked`],owner_completed:[`所有者验收`,`Owner acceptance`],turn_skipped:[`回合被跳过`,`Turn skipped`]};function _(e){if(!e)return h(`未知`,`Unknown`);let t=g[e];return t?h(...t):e}function v(e){if(!e)return h(`未知`,`Unknown`);let t=new Date(e);return Number.isNaN(t.getTime())?String(e):t.toLocaleString(c(),{hour12:!1})}function y(e){if(typeof e==`string`)return e;if(!e||typeof e!=`object`)return h(`未提供标识`,`No identifier reported`);let t=e;return[t.title??t.name,t.uri??t.path??t.id].filter(e=>typeof e==`string`).join(` · `)||h(`未提供标识`,`No identifier reported`)}export{m as a,v as i,h as n,_ as r,y as t};
1
+ import{M as e,P as t,_ as n,a as r,h as i,i as a,it as o,n as s,t as c,tt as l,w as u,x as d}from"./i18n-D2CJkEYK.js";var f=[`aria-label`],p=[`lang`,`aria-label`,`aria-pressed`,`onClick`],m=u({__name:`LocaleSwitcher`,setup(u){let m=n(()=>s()),h={"zh-CN":`中`,"en-US":`EN`};function g(e){e!==m.value&&a(e)}return(n,a)=>(e(),d(`div`,{class:`locale-switcher`,role:`group`,"aria-label":l(r)(`common.language.label`)},[(e(!0),d(i,null,t(l(c),t=>(e(),d(`button`,{key:t,type:`button`,lang:t,"aria-label":l(r)(t===`zh-CN`?`common.language.chinese`:`common.language.english`),"aria-pressed":m.value===t,onClick:e=>g(t)},o(h[t]),9,p))),128))],8,f))}});function h(e,t){return s()===`zh-CN`?e:t}var g={draft:[`草案`,`Draft`],active:[`进行中`,`Active`],paused:[`已暂停`,`Paused`],waiting_input:[`等待你的判断`,`Awaiting your decision`],waiting_auth:[`等待授权`,`Awaiting authorization`],concluded:[`已结束`,`Concluded`],failed:[`失败`,`Failed`],cancelled:[`已停止`,`Stopped`],discussion:[`讨论`,`Discussion`],collaboration:[`协作任务`,`Collaborative task`],planning:[`分工`,`Planning`],implementation:[`实施`,`Implementation`],review:[`审查`,`Review`],synthesis:[`汇总`,`Synthesis`],moderator:[`主持人`,`Moderator`],specialist:[`专家`,`Specialist`],implementer:[`实施者`,`Implementer`],reviewer:[`审查者`,`Reviewer`],pending:[`待处理`,`Pending`],claimed:[`已领取`,`Claimed`],running:[`运行中`,`Running`],reported_complete:[`已报告完成`,`Completion reported`],completed:[`已提交回合`,`Turn submitted`],interrupted:[`已中断`,`Interrupted`],blocked:[`受阻`,`Blocked`],expired:[`已过期`,`Expired`],cancellation_requested:[`已请求取消`,`Cancellation requested`],human_accepted:[`已由人确认`,`Accepted by human`],task_verified:[`任务验证通过`,`Task verified`],"read-only":[`只读`,`Read only`],"workspace-write":[`允许写入工作区`,`Workspace write`],mcp:[`MCP · 主动参与`,`MCP · active participation`],codex:[`Codex CLI`,`Codex CLI`],"claude-code":[`Claude Code CLI`,`Claude Code CLI`],pi:[`Pi · 本地 Ollama`,`Pi · local Ollama`],grok:[`Grok · xAI API`,`Grok · xAI API`],a2a:[`A2A · 协议适配`,`A2A · protocol adapter`],proposal:[`提案`,`Proposal`],question:[`提问`,`Question`],handoff:[`交接`,`Handoff`],result:[`结果`,`Result`],dissent:[`分歧`,`Dissent`],user:[`你的补充`,`Your input`],human:[`你的补充`,`Your input`],system:[`系统事件`,`System event`],seat_joined:[`席位加入`,`Seat joined`],turn_claimed:[`回合被领取`,`Turn claimed`],phase_changed:[`阶段改变`,`Phase changed`],attempt_failed:[`尝试失败`,`Attempt failed`],attempt_interrupted:[`尝试中断`,`Attempt interrupted`],owner_control:[`所有者操作`,`Owner control`],invitation_issued:[`邀请已签发`,`Invitation issued`],invitation_revoked:[`邀请已撤销`,`Invitation revoked`],owner_completed:[`所有者验收`,`Owner acceptance`],turn_skipped:[`回合被跳过`,`Turn skipped`]};function _(e){if(!e)return h(`未知`,`Unknown`);let t=g[e];return t?h(...t):e}function v(e){if(!e)return h(`未知`,`Unknown`);let t=new Date(e);return Number.isNaN(t.getTime())?String(e):t.toLocaleString(s(),{hour12:!1})}function y(e){if(typeof e==`string`)return e;if(!e||typeof e!=`object`)return h(`未提供标识`,`No identifier reported`);let t=e;return[t.title??t.name,t.uri??t.path??t.id].filter(e=>typeof e==`string`).join(` · `)||h(`未提供标识`,`No identifier reported`)}export{m as a,v as i,h as n,_ as r,y as t};