fuli-context 0.9.0-beta.2 → 0.10.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.
- package/README.md +17 -43
- package/README.zh-CN.md +14 -40
- package/dist/web/assets/AboutPage-D-GyJNv1.js +1 -0
- package/dist/web/assets/AboutPage-c4dQpUiP.css +1 -0
- package/dist/web/assets/AgentConversations-DOuZgUeA.js +2 -0
- package/dist/web/assets/AgentConversations-DS8h3yKn.css +1 -0
- package/dist/web/assets/AgentHand-Y83Oo36U.css +1 -0
- package/dist/web/assets/AgentHand-eGsXoGSq.js +1 -0
- package/dist/web/assets/AgentName-BQTFCWn0.css +1 -0
- package/dist/web/assets/AgentName-Dtmu9Ff5.js +1 -0
- package/dist/web/assets/AgentProfilePage-D8Tvayn7.js +1 -0
- package/dist/web/assets/AgentsDirectoryPage-BTEfKZjF.js +1 -0
- package/dist/web/assets/ConnectionsPage-C1w99yN3.css +1 -0
- package/dist/web/assets/ConnectionsPage-DwOIcvl9.js +1 -0
- package/dist/web/assets/EmployeeRecruitDialog-BrIMRblq.css +1 -0
- package/dist/web/assets/EmployeeRecruitDialog-D11blfwU.js +1 -0
- package/dist/web/assets/EmployeeWorkbenchPage-BcEzYt65.css +1 -0
- package/dist/web/assets/EmployeeWorkbenchPage-CK2BAoGt.js +3 -0
- package/dist/web/assets/GrowthLoading-CIuQ1icy.css +1 -0
- package/dist/web/assets/GrowthLoading-KTjE2e50.js +1 -0
- package/dist/web/assets/KnowledgeEditDialog-B3x8vs3c.css +1 -0
- package/dist/web/assets/KnowledgeEditDialog-n9trHQ5d.js +1 -0
- package/dist/web/assets/KnowledgeInspector-BcNjgw9H.js +1 -0
- package/dist/web/assets/KnowledgeInspector-pgDELOEf.css +1 -0
- package/dist/web/assets/KnowledgeOrganizerPage-BzgxP-nG.css +1 -0
- package/dist/web/assets/KnowledgeOrganizerPage-DMBpGxLr.js +1 -0
- package/dist/web/assets/KnowledgePage-POkCMW8f.js +1 -0
- package/dist/web/assets/KnowledgeWorkspace-2FvQadhB.js +4 -0
- package/dist/web/assets/NotFoundPage-BCMZbeB8.js +1 -0
- package/dist/web/assets/OverviewPage-0CFWCG9-.css +1 -0
- package/dist/web/assets/OverviewPage-0mYifpjp.js +1 -0
- package/dist/web/assets/PersonalProfilePage-Chv2a2pi.css +1 -0
- package/dist/web/assets/PersonalProfilePage-JW6Muix6.js +1 -0
- package/dist/web/assets/PersonalProjectsPage-CRbi64JP.js +1 -0
- package/dist/web/assets/ProjectAgentFirstTask-DJ0wTbh8.js +1 -0
- package/dist/web/assets/ProjectAgentsPage-CPgKVLgg.js +12 -0
- package/dist/web/assets/ProjectAgentsPage-DeuRkMp1.css +1 -0
- package/dist/web/assets/ProjectScopePicker-BwB7gK-7.js +1 -0
- package/dist/web/assets/ProjectScopePicker-DYA7L1Ex.css +1 -0
- package/dist/web/assets/PublicProjectsPage-CB272Sq-.js +1 -0
- package/dist/web/assets/ReviewPage-CelTZU4C.js +1 -0
- package/dist/web/assets/RoundtablesPage-C9dXfWCl.js +2 -0
- package/dist/web/assets/{SearchableSelect-Do6X3fXi.js → SearchableSelect-f7EHbyDL.js} +1 -1
- package/dist/web/assets/SettingsPage-5g7mRN2F.css +1 -0
- package/dist/web/assets/SettingsPage-nAijmm5f.js +1 -0
- package/dist/web/assets/SharedJefaReportPage-CjpJ9bkk.js +1 -0
- package/dist/web/assets/SharedJefaReportPage-D92FSPru.css +1 -0
- package/dist/web/assets/UiDisclosure-CWlC91Zt.js +1 -0
- package/dist/web/assets/WritingTastePage-DaHWY61P.js +1 -0
- package/dist/web/assets/WritingTastePage-SMGF39mf.css +1 -0
- package/dist/web/assets/agent-profile-CBvJHGjt.css +1 -0
- package/dist/web/assets/{task-evidence-DTiPCs7r.js → agent-work-summary-LeW-Al_S.js} +1 -1
- package/dist/web/assets/attention-store-Dk-_P4Oi.js +1 -0
- package/dist/web/assets/{catalog-JmKyJnKL.js → catalog-DN72452f.js} +1 -1
- package/dist/web/assets/{client-DTQ_tUr2.js → client-B2cRl-7c.js} +1 -1
- package/dist/web/assets/console-BtPqo79j.js +1 -0
- package/dist/web/assets/{conversation-launcher-settings-fUWCt3XG.js → conversation-launcher-settings-jkHRmWai.js} +1 -1
- package/dist/web/assets/{copy-CX6pyzAG.js → copy-D2LqwtPZ.js} +1 -1
- package/dist/web/assets/{i18n-CIIxzhPZ.js → i18n-D2CJkEYK.js} +2 -2
- package/dist/web/assets/{identity-CdFITIOu.js → identity-B3zEw-1u.js} +1 -1
- package/dist/web/assets/index-CNp0tRNp.css +1 -0
- package/dist/web/assets/index-ulISYH02.js +5 -0
- package/dist/web/assets/{model-CJsrDUNb.js → model-S7ehAjky.js} +1 -1
- package/dist/web/assets/{personal-profile-graph-CQLOait6.js → personal-profile-graph--GG3Mizo.js} +1 -1
- package/dist/web/assets/shared-report-CGlCpmNd.css +1 -0
- package/dist/web/assets/shared-report-DEK9wvhl.js +1 -0
- package/dist/web/assets/useAgentRoster-BAPKWZ9y.js +1 -0
- package/dist/web/assets/{useApi-CROJJdhE-fcdVGInY.js → useApi-CROJJdhE-BtFMXFjw.js} +1 -1
- package/dist/web/assets/{useModalDialog-B-45idX9.js → useModalDialog-D8tiJfbc.js} +1 -1
- package/dist/web/assets/{vue-router-BUX6njIv.js → vue-router-DkaTtPn0.js} +1 -1
- package/dist/web/index.html +16 -15
- package/docs/project-agent-memory.md +6 -0
- package/docs/roundtable.md +46 -0
- package/graph-provider/fuli_graph/app.py +3 -1
- package/graph-provider/pyproject.toml +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -4
- package/skills/capturing-session-knowledge/SKILL.md +5 -1
- package/skills/operating-fuli/SKILL.md +4 -0
- package/src/agent-tools/graph-definitions.js +2 -2
- package/src/agents/claude-code/lifecycle-hook.js +6 -19
- package/src/agents/codex/lifecycle-hook.js +58 -27
- package/src/agents/codex/roundtable-config.js +3 -0
- package/src/agents/codex/token-usage.js +235 -0
- package/src/agents/cursor/lifecycle-hook.js +4 -9
- package/src/agents/identity-receipt.js +11 -4
- package/src/agents/token-usage-resolver.js +147 -0
- package/src/conversations/current-task-lookup.js +40 -0
- package/src/conversations/sync-transcript.js +4 -2
- package/src/graphiti/federated-application.js +6 -1
- package/src/graphiti/project-agent-mapping.js +1 -1
- package/src/graphiti/project-agent-workflows.js +6 -1
- package/src/graphiti/provider-client.js +7 -4
- package/src/graphiti/task-entry-preferences.js +6 -7
- package/src/http/static-handler.js +3 -1
- package/src/mcp/instructions.js +8 -7
- package/src/mcp/session-id.js +1 -1
- package/src/mcp/tool-annotations.js +3 -1
- package/src/mcp/tool-result.js +20 -8
- package/src/native-runtime/runtime.js +41 -6
- package/src/roundtables/domain.js +3 -3
- package/src/roundtables/http-router.js +5 -3
- package/src/roundtables/mcp-server.js +15 -8
- package/src/roundtables/profiles.js +84 -0
- package/src/roundtables/service.js +86 -2
- package/src/roundtables/store.js +4 -0
- package/src/roundtables/tool-contract.js +22 -5
- package/src/roundtables/turn-prompt.js +3 -0
- package/dist/web/assets/AboutPage-u2Bv6cO-.js +0 -1
- package/dist/web/assets/AboutPage-vYIBifKw.css +0 -1
- package/dist/web/assets/AgentHand-CsMcNXUm.js +0 -1
- package/dist/web/assets/AgentHand-D9sQu2vc.css +0 -1
- package/dist/web/assets/AgentName-BboCA-Fd.js +0 -1
- package/dist/web/assets/AgentName-Cydd0UI4.css +0 -1
- package/dist/web/assets/AgentProfilePage-Dyux6qE3.js +0 -1
- package/dist/web/assets/AgentsDirectoryPage-BEJdvmX7.js +0 -1
- package/dist/web/assets/ConnectionsPage-CBHAdZXT.css +0 -1
- package/dist/web/assets/ConnectionsPage-Dw_hK_EM.js +0 -1
- package/dist/web/assets/EmployeeRecruitDialog-B59X3rOi.css +0 -1
- package/dist/web/assets/EmployeeRecruitDialog-DP_ktv3w.js +0 -1
- package/dist/web/assets/EmployeeWorkbenchPage-CAt8lVnr.js +0 -3
- package/dist/web/assets/EmployeeWorkbenchPage-CQwZnTA0.css +0 -1
- package/dist/web/assets/GrowthLoading-B_Hh0CRS.css +0 -1
- package/dist/web/assets/GrowthLoading-DIwqGFSc.js +0 -1
- package/dist/web/assets/KnowledgeEditDialog-D9NuRHvp.css +0 -1
- package/dist/web/assets/KnowledgeEditDialog-Degd9AGD.js +0 -1
- package/dist/web/assets/KnowledgeInspector--1NujtXW.css +0 -1
- package/dist/web/assets/KnowledgeInspector-yms1ysZ4.js +0 -1
- package/dist/web/assets/KnowledgeOrganizerPage-C64wNn8a.js +0 -1
- package/dist/web/assets/KnowledgeOrganizerPage-h2iKvQpO.css +0 -1
- package/dist/web/assets/KnowledgePage-BTFEXzgi.js +0 -1
- package/dist/web/assets/KnowledgeWorkspace-BsF1X4Aq.js +0 -4
- package/dist/web/assets/NotFoundPage-DfaNTiD1.js +0 -1
- package/dist/web/assets/OverviewPage-VXMfcWFI.js +0 -1
- package/dist/web/assets/PersonalProfilePage-C1LBhcYu.js +0 -1
- package/dist/web/assets/PersonalProfilePage-L8T5xMEC.css +0 -1
- package/dist/web/assets/PersonalProjectsPage-B5lV4ZJW.js +0 -1
- package/dist/web/assets/ProjectAgentFirstTask-DF-IvEqp.js +0 -1
- package/dist/web/assets/ProjectAgentsPage-CgL92gng.js +0 -13
- package/dist/web/assets/ProjectAgentsPage-CoJ4qQlA.css +0 -1
- package/dist/web/assets/ProjectScopePicker-BvaGTMFx.css +0 -1
- package/dist/web/assets/ProjectScopePicker-CZUMdyYz.js +0 -1
- package/dist/web/assets/PublicProjectsPage-e4CpxHk9.js +0 -1
- package/dist/web/assets/ReviewPage-DugEaFvI.js +0 -1
- package/dist/web/assets/RoundtablesPage-642YtZBC.js +0 -2
- package/dist/web/assets/SettingsPage-Brl-SL33.css +0 -1
- package/dist/web/assets/SettingsPage-wqYxDPyu.js +0 -1
- package/dist/web/assets/SharedJefaReportPage-CNQDezJr.js +0 -1
- package/dist/web/assets/SharedJefaReportPage-DXbj_JhO.css +0 -1
- package/dist/web/assets/WritingTastePage-Bzg6AvnB.css +0 -1
- package/dist/web/assets/WritingTastePage-CAUvbDlL.js +0 -1
- package/dist/web/assets/agent-profile-CdKOh5xw.css +0 -1
- package/dist/web/assets/agent-profile.css_vue_type_style_index_0_src_true_lang-DHOcWSe_.js +0 -1
- package/dist/web/assets/console-CrhIK67Y.js +0 -1
- package/dist/web/assets/employee-dialog-Bh5ccIbK.css +0 -1
- package/dist/web/assets/index-CYZi7E1e.css +0 -1
- package/dist/web/assets/index-Dsgn8o4-.js +0 -2
- package/dist/web/assets/shared-report-Cll2Yj8W.js +0 -1
- package/dist/web/assets/shared-report-ezeb8dW4.css +0 -1
- package/docs/roundtable-beta-testing.md +0 -102
- package/docs/roundtable-beta-validation.md +0 -133
- package/docs/roundtable-research.md +0 -142
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import{A as e,C as t,F as n,H as r,I as i,M as a,N as o,T as s,V as c,Z as l,_ as u,a as d,at as f,b as p,c as m,d as h,f as g,h as _,k as v,m as y,n as b,nt as x,rt as S,u as C,v as w,w as T,x as E,y as D,z as O}from"./i18n-CIIxzhPZ.js";import{t as k}from"./console-CrhIK67Y.js";import{t as A}from"./GrowthLoading-DIwqGFSc.js";import{t as j}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{m as M}from"./useApi-CROJJdhE-fcdVGInY.js";import{t as N}from"./vue-router-BUX6njIv.js";import{a as ee,i as te,n as P,r as F,t as I}from"./client-DTQ_tUr2.js";import{a as L,i as ne,s as R}from"./catalog-JmKyJnKL.js";import{t as z}from"./AgentHand-CsMcNXUm.js";import{t as B}from"./useModalDialog-B-45idX9.js";import{_ as V,a as H,c as U,d as W,f as re,g as G,h as K,i as ie,l as ae,m as q,n as J,o as Y,p as oe,r as se,s as ce,t as le,u as ue}from"./task-evidence-DTiPCs7r.js";import{t as de}from"./ProjectAgentFirstTask-DF-IvEqp.js";import{t as fe}from"./ProjectScopePicker-CZUMdyYz.js";import{t as pe}from"./SearchableSelect-Do6X3fXi.js";import{t as me}from"./EmployeeRecruitDialog-DP_ktv3w.js";function he(){let e=new Date,t=new Date(e);return t.setUTCFullYear(t.getUTCFullYear()-1),{fromDate:ge(t),toDate:ge(e)}}function ge(e){return e.toISOString().slice(0,10)}function _e(e,t){let n=K(e),r=J(n.days);if(!r.length&&!(`days`in n))return null;let i=r.map(e=>{let t=K(e);return{date:q(t,`date`,`date`)??``,completed:typeof t.completed==`number`?t.completed:0,failed:typeof t.failed==`number`?t.failed:0,cancelled:typeof t.cancelled==`number`?t.cancelled:0,total:typeof t.total==`number`?t.total:0,tasks:J(t.tasks).map(ye).filter(e=>!!e)}}).filter(({date:e})=>e),a=q(n,`fromDate`,`from_date`),o=q(n,`toDate`,`to_date`),s=i.some(({total:e,tasks:t})=>e>0||!!t?.length),c=a??(i.length?i.map(({date:e})=>e).sort()[0]:void 0),l=o??(i.length?i.map(({date:e})=>e).sort().at(-1):void 0),u=s&&c&&l?ve(i,c,l):[];return{agentId:q(n,`agentId`,`agent_id`)??t.agentId,personalSpaceId:q(n,`personalSpaceId`,`personal_space_id`)??t.personalSpaceId,fromDate:c,toDate:l,days:u}}function ve(e,t,n){let r=new Map(e.map(e=>[e.date,e])),i=new Date(`${t}T00:00:00Z`),a=new Date(`${n}T00:00:00Z`);if(Number.isNaN(i.valueOf())||Number.isNaN(a.valueOf())||i>a)return e;let o=[];for(let e=new Date(i);e<=a;e.setUTCDate(e.getUTCDate()+1)){let t=ge(e);o.push(r.get(t)??{date:t,completed:0,failed:0,cancelled:0,total:0,tasks:[]})}return o.reverse()}function ye(e){let t=K(e),n=q(t,`taskId`,`task_id`);if(!n)return null;let r=ie(G(t,`actualExecution`,`actual_execution`))??ie({executor:q(t,`actualExecutor`,`actual_executor`),provider:q(t,`actualModelProvider`,`actual_model_provider`),model:q(t,`actualModel`,`actual_model`),client:q(t,`sourceApplication`,`source_application`)});return{taskId:n,title:q(t,`title`,`title`)??n,status:q(t,`status`,`status`),summary:q(t,`summary`,`summary`)??``,occurredAt:q(t,`occurredAt`,`occurred_at`)??``,personalProjectId:q(t,`personalProjectId`,`personal_project_id`),assignmentId:q(t,`assignmentId`,`assignment_id`),collaborators:J(t.collaborators).map(Y),sourceApplication:q(t,`sourceApplication`,`source_application`),sourceSessionId:q(t,`sourceSessionId`,`source_session_id`),sourceSessionUrl:q(t,`sourceSessionUrl`,`source_session_url`),workerRuntime:W(G(t,`workerRuntime`,`worker_runtime`)),toolsUsed:oe(t,`toolsUsed`,`tools_used`),tokenUsage:ue(G(t,`tokenUsage`,`token_usage`)),actualExecution:r,actualModelProvider:q(t,`actualModelProvider`,`actual_model_provider`),actualModel:q(t,`actualModel`,`actual_model`)}}var be={class:`project-agent-assignment-dialog-header`},xe={id:`project-agent-assignment-dialog-title`},Se=[`disabled`],Ce={class:`project-agent-assignment-dialog-fields`},we={key:0},Te={key:1},Ee=[`value`],De={key:2},X={key:3,class:`project-agent-assignment-wide-field`},Oe=[`disabled`],ke={key:4},Ae=[`disabled`],je={key:5},Me=[`disabled`,`placeholder`],Ne={class:`project-agent-assignment-wide-field`},Pe=[`disabled`,`placeholder`],Fe={key:0,class:`project-agent-assignment-dialog-error`,role:`alert`},Ie={class:`project-agent-assignment-dialog-actions`},Le=[`disabled`],Re=[`disabled`],ze={key:1},Be=j(s({__name:`AgentAssignmentDialog`,props:{open:{type:Boolean},agent:{},assignment:{default:null},action:{default:`assign`},projects:{},availableAgents:{default:()=>[]},defaultProjectId:{default:null}},emits:[`close`,`saved`,`changed`],setup(e,{emit:t}){let n=e,i=t,a=l(``),s=l(``),c=l(``),m=l(``),g=l(``),_=l(``),v=l(!1),b=l(``),{dialogRef:S,initialFocusRef:C,onCancel:k,onKeydown:j}=B(()=>n.open,()=>i(`close`)),M=u(()=>n.action!==`assign`),N=u(()=>n.projects.map(e=>({value:e.project_id,label:e.profile.name,meta:e.project_id}))),ee=u(()=>n.availableAgents.filter(e=>e.agentId!==n.agent?.agentId&&e.profile.status===`active`).map(e=>({value:e.agentId,label:e.profile.displayName||e.profile.name,meta:e.profile.name})));O(()=>[n.open,n.agent,n.assignment,n.action,n.defaultProjectId],()=>{n.open&&(a.value=n.assignment?.personalProjectId??n.defaultProjectId??n.projects[0]?.project_id??``,s.value=``,c.value=n.assignment?.responsibility??n.agent?.profile.responsibility??``,m.value=n.assignment?.scope??``,g.value=n.assignment?.workKinds?.join(`
|
|
2
|
-
`)??``,_.value=``,b.value=``)},{immediate:!0});async function P(){if(!n.agent)return;b.value=``;let e=_.value.trim(),t=c.value.trim();if(!e||n.action===`assign`&&!t){b.value=d(`projectAgents.assignmentDialog.required`);return}if(n.action===`replace`&&!s.value){b.value=d(`projectAgents.assignmentDialog.replacementRequired`);return}v.value=!0;try{if(n.action===`assign`){let r=await te(`/api/project-agent-assignments`,{personalSpaceId:n.agent.personalSpaceId,personalProjectId:a.value,agentId:n.agent.agentId,idempotencyKey:I(),responsibility:t,workKinds:F(g.value),capabilities:[],reason:e});i(`saved`,r)}else{if(!n.assignment)return;await te(`/api/project-agent-assignments/${encodeURIComponent(n.assignment.assignmentId)}/${n.action}`,n.action===`replace`?{personalSpaceId:n.agent.personalSpaceId,personalProjectId:n.assignment.personalProjectId,assignmentId:n.assignment.assignmentId,expectedRevision:n.assignment.revision??0,replacementAgentId:s.value,idempotencyKey:I(),responsibility:t||n.assignment.responsibility,workKinds:F(g.value),capabilities:n.assignment.capabilities??[],reason:e}:{personalSpaceId:n.agent.personalSpaceId,personalProjectId:n.assignment.personalProjectId,assignmentId:n.assignment.assignmentId,expectedRevision:n.assignment.revision??0,reason:e}),i(`changed`)}i(`close`)}catch(e){b.value=e instanceof Error?e.message:d(`projectAgents.assignmentDialog.saveFailed`)}finally{v.value=!1}}function F(e){return[...new Set(e.split(`
|
|
3
|
-
`).map(e=>e.trim()).filter(Boolean))]}function I(){return`project-agent-assignment-${typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}`}return(t,l)=>e.open?(o(),E(`dialog`,{key:0,ref_key:`dialogRef`,ref:S,class:`project-agent-assignment-dialog vue-dialog`,"aria-modal":`true`,"aria-labelledby":`project-agent-assignment-dialog-title`,onCancel:l[8]||=(...e)=>x(k)&&x(k)(...e),onKeydown:l[9]||=(...e)=>x(j)&&x(j)(...e)},[w(`form`,{class:`project-agent-assignment-dialog-shell`,onSubmit:y(P,[`prevent`])},[w(`header`,be,[w(`h3`,xe,f(x(d)(`projectAgents.assignmentDialog.${M.value?e.action:`assign`}Title`)),1),w(`button`,{ref_key:`initialFocusRef`,ref:C,"data-dialog-initial-focus":``,class:`quiet-button`,type:`button`,disabled:v.value,onClick:l[0]||=e=>i(`close`)},f(x(d)(`common.actions.close`)),9,Se)]),w(`div`,Ce,[M.value?(o(),E(`label`,Te,[w(`span`,null,f(x(d)(`projectAgents.fields.project`)),1),w(`input`,{value:n.assignment?n.assignment.personalProjectId:``,disabled:``},null,8,Ee)])):(o(),E(`label`,we,[w(`span`,null,f(x(d)(`projectAgents.fields.project`)),1),T(pe,{modelValue:a.value,"onUpdate:modelValue":l[1]||=e=>a.value=e,"control-id":`project-agent-assignment-project`,options:N.value,label:x(d)(`projectAgents.fields.project`),placeholder:x(d)(`projectAgents.dialog.projectPlaceholder`),disabled:v.value,required:``},null,8,[`modelValue`,`options`,`label`,`placeholder`,`disabled`])])),M.value&&e.action===`replace`?(o(),E(`label`,De,[w(`span`,null,f(x(d)(`projectAgents.assignmentDialog.replacement`)),1),T(pe,{modelValue:s.value,"onUpdate:modelValue":l[2]||=e=>s.value=e,"control-id":`project-agent-assignment-replacement`,options:ee.value,label:x(d)(`projectAgents.assignmentDialog.replacement`),placeholder:x(d)(`projectAgents.assignmentDialog.replacementPlaceholder`),disabled:v.value,required:``},null,8,[`modelValue`,`options`,`label`,`placeholder`,`disabled`])])):p(``,!0),M.value?p(``,!0):(o(),E(`label`,X,[w(`span`,null,f(x(d)(`projectAgents.fields.responsibility`)),1),r(w(`textarea`,{"onUpdate:modelValue":l[3]||=e=>c.value=e,rows:`3`,maxlength:`4096`,disabled:v.value,required:``},null,8,Oe),[[h,c.value]])])),M.value?p(``,!0):(o(),E(`label`,ke,[w(`span`,null,f(x(d)(`projectAgents.fields.scope`)),1),r(w(`input`,{"onUpdate:modelValue":l[4]||=e=>m.value=e,maxlength:`4096`,disabled:v.value},null,8,Ae),[[h,m.value]])])),M.value?p(``,!0):(o(),E(`label`,je,[w(`span`,null,f(x(d)(`projectAgents.assignmentDialog.workKinds`)),1),r(w(`textarea`,{"onUpdate:modelValue":l[5]||=e=>g.value=e,rows:`3`,disabled:v.value,placeholder:x(d)(`projectAgents.assignmentDialog.workKindsPlaceholder`)},null,8,Me),[[h,g.value]])])),w(`label`,Ne,[w(`span`,null,f(x(d)(`projectAgents.fields.reason`)),1),r(w(`textarea`,{"onUpdate:modelValue":l[6]||=e=>_.value=e,rows:`3`,maxlength:`2048`,disabled:v.value,placeholder:x(d)(`projectAgents.assignmentDialog.reasonPlaceholder`),required:``},null,8,Pe),[[h,_.value]])])]),b.value?(o(),E(`p`,Fe,f(b.value),1)):p(``,!0),w(`footer`,Ie,[w(`button`,{class:`quiet-button`,type:`button`,disabled:v.value,onClick:l[7]||=e=>i(`close`)},f(x(d)(`common.actions.cancel`)),9,Le),w(`button`,{class:`project-agent-primary-action`,type:`submit`,disabled:v.value},[v.value?(o(),D(A,{key:0,variant:`inline`,label:x(d)(`projectAgents.assignmentDialog.saving`)},null,8,[`label`])):(o(),E(`span`,ze,f(x(d)(`projectAgents.assignmentDialog.${M.value?`saveChange`:`saveAssign`}`)),1))],8,Re)])],32)],544)):p(``,!0)}}),[[`__scopeId`,`data-v-ee37776b`]]),Ve={class:`project-agent-dialog-header`},Z={id:`executor-routing-dialog-title`},He=[`disabled`],Ue={class:`project-agent-dialog-fields`},We=[`disabled`],Ge=[`disabled`],Ke=[`disabled`],qe=[`disabled`],Je={class:`project-agent-wide-field`},Ye=[`disabled`],Xe={class:`project-agent-dialog-check`},Q=[`disabled`],Ze={class:`project-agent-dialog-note project-agent-wide-field`},Qe=[`disabled`],$e=[`disabled`],et={key:0},tt={key:1},nt=[`disabled`],rt=[`disabled`],it={class:`project-agent-wide-field`},at=[`placeholder`,`disabled`],ot={class:`project-agent-wide-field`},st=[`disabled`],ct={class:`project-agent-wide-field`},$=[`disabled`],lt={class:`project-agent-dialog-note project-agent-wide-field`},ut={key:0,class:`project-agent-dialog-error`,role:`alert`},dt={class:`project-agent-dialog-actions`},ft=[`disabled`],pt=[`disabled`],mt={key:1},ht=j(s({__name:`ExecutorRoutingDialog`,props:{open:{type:Boolean},mode:{},personalSpaceId:{},executor:{default:null},rule:{default:null},projects:{default:()=>[]},availableExecutors:{default:()=>[]}},emits:[`close`,`saved`],setup(e,{emit:n}){let i=e,a=n,s=l(``),c=l(``),g=l(`external`),v=l(``),b=l(100),S=l(!1),k=l(`space`),j=l(``),M=l(``),N=l(``),te=l(``),P=l(``),F=l(``),I=l(!1),L=l(``),{dialogRef:ne,initialFocusRef:R,onCancel:z,onKeydown:V}=B(()=>i.open,()=>a(`close`)),H=u(()=>!!i.executor),U=u(()=>i.mode===`executor`?H.value?`executorEditTitle`:`executorCreateTitle`:`ruleCreateTitle`),W=u(()=>i.mode===`executor`?d(`projectAgents.routing.editor.savingExecutor`):d(`projectAgents.routing.editor.savingRule`)),re=u(()=>i.projects.map(e=>({value:e.project_id,label:e.profile.name,meta:e.project_id})));O(()=>[i.open,i.mode,i.executor,i.rule],([e])=>{if(!e)return;let t=i.executor,n=i.rule;s.value=t?.executorId??``,c.value=t?.displayName??t?.label??``,g.value=t?.executorKind??`external`,v.value=t?.capabilities?.join(`
|
|
4
|
-
`)??``,b.value=t?.globalPriority??n?.priority??100,S.value=t?.healthRequired===!0,k.value=n?.scope??`space`,j.value=n?.personalProjectId??``,M.value=n?.taskId??``,N.value=n?.workKind??``,te.value=n?.requiredCapabilities?.join(`
|
|
5
|
-
`)??``,P.value=n?.executorIds?.join(`
|
|
6
|
-
`)??``,F.value=``,L.value=``},{immediate:!0});function G(e){return[...new Set(e.split(`
|
|
7
|
-
`).map(e=>e.trim()).filter(Boolean))]}function K(e){return`${e}-${typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}`}async function ie(){if(I.value)return;let e=G(v.value),t=F.value.trim();if(i.mode===`executor`){if(!s.value.trim()||!c.value.trim()||b.value<1){L.value=d(`projectAgents.routing.editor.executorRequired`);return}}else if(!N.value.trim()||!G(P.value).length||!t){L.value=d(`projectAgents.routing.editor.ruleRequired`);return}I.value=!0,L.value=``;try{if(i.mode===`executor`){let t=await ee(`/api/executors`,{personalSpaceId:i.personalSpaceId,executorId:s.value.trim(),displayName:c.value.trim(),executorKind:g.value.trim()||`external`,capabilities:e,advertisedModels:i.executor?.advertisedModels??i.executor?.availableModels??[],globalPriority:b.value,healthRequired:S.value,expectedRevision:i.executor?.revision,idempotencyKey:K(`executor-directory`)});a(`saved`,t)}else{let e=await ee(`/api/executor-routing-rules`,{personalSpaceId:k.value===`global`?void 0:i.personalSpaceId,scope:k.value,personalProjectId:(k.value===`project`||k.value===`task`)&&j.value||void 0,taskId:k.value===`task`&&M.value||void 0,workKind:N.value.trim(),requiredCapabilities:G(te.value),executorIds:G(P.value),priority:b.value,reason:t,idempotencyKey:K(`executor-rule`)});a(`saved`,e)}a(`close`)}catch(e){L.value=e instanceof Error?e.message:d(`projectAgents.routing.editor.saveFailed`)}finally{I.value=!1}}return(n,i)=>e.open?(o(),E(`dialog`,{key:0,ref_key:`dialogRef`,ref:ne,class:`project-agent-dialog vue-dialog`,"aria-modal":`true`,"aria-labelledby":`executor-routing-dialog-title`,onCancel:i[16]||=(...e)=>x(z)&&x(z)(...e),onKeydown:i[17]||=(...e)=>x(V)&&x(V)(...e)},[w(`form`,{class:`project-agent-dialog-shell`,onSubmit:y(ie,[`prevent`])},[w(`header`,Ve,[w(`h3`,Z,f(x(d)(`projectAgents.routing.editor.${U.value}`)),1),w(`button`,{ref_key:`initialFocusRef`,ref:R,"data-dialog-initial-focus":``,class:`quiet-button`,type:`button`,disabled:I.value,onClick:i[0]||=e=>a(`close`)},f(x(d)(`common.actions.close`)),9,He)]),w(`div`,Ue,[e.mode===`executor`?(o(),E(_,{key:0},[w(`label`,null,[w(`span`,null,f(x(d)(`projectAgents.routing.editor.executorId`)),1),r(w(`input`,{"onUpdate:modelValue":i[1]||=e=>s.value=e,maxlength:`128`,disabled:H.value||I.value,required:``},null,8,We),[[h,s.value]])]),w(`label`,null,[w(`span`,null,f(x(d)(`projectAgents.routing.editor.displayName`)),1),r(w(`input`,{"onUpdate:modelValue":i[2]||=e=>c.value=e,maxlength:`160`,disabled:I.value,required:``},null,8,Ge),[[h,c.value]])]),w(`label`,null,[w(`span`,null,f(x(d)(`projectAgents.routing.editor.executorKind`)),1),r(w(`input`,{"onUpdate:modelValue":i[3]||=e=>g.value=e,maxlength:`128`,disabled:I.value},null,8,Ke),[[h,g.value]])]),w(`label`,null,[w(`span`,null,f(x(d)(`projectAgents.routing.editor.priority`)),1),r(w(`input`,{"onUpdate:modelValue":i[4]||=e=>b.value=e,type:`number`,min:`1`,max:`1000000`,disabled:I.value,required:``},null,8,qe),[[h,b.value,void 0,{number:!0}]])]),w(`label`,Je,[w(`span`,null,f(x(d)(`projectAgents.routing.editor.capabilities`)),1),r(w(`textarea`,{"onUpdate:modelValue":i[5]||=e=>v.value=e,rows:`3`,disabled:I.value},null,8,Ye),[[h,v.value]])]),w(`label`,Xe,[r(w(`input`,{"onUpdate:modelValue":i[6]||=e=>S.value=e,type:`checkbox`,disabled:I.value},null,8,Q),[[m,S.value]]),i[18]||=t(),w(`span`,null,f(x(d)(`projectAgents.routing.editor.healthRequired`)),1)]),w(`p`,Ze,f(x(d)(`projectAgents.routing.editor.evidenceNote`)),1)],64)):(o(),E(_,{key:1},[w(`label`,null,[w(`span`,null,f(x(d)(`projectAgents.routing.editor.scope`)),1),r(w(`select`,{"onUpdate:modelValue":i[7]||=e=>k.value=e,disabled:I.value},[...i[19]||=[w(`option`,{value:`space`},`space`,-1),w(`option`,{value:`project`},`project`,-1),w(`option`,{value:`task`},`task`,-1)]],8,Qe),[[C,k.value]])]),w(`label`,null,[w(`span`,null,f(x(d)(`projectAgents.routing.editor.priority`)),1),r(w(`input`,{"onUpdate:modelValue":i[8]||=e=>b.value=e,type:`number`,min:`1`,max:`1000000`,disabled:I.value,required:``},null,8,$e),[[h,b.value,void 0,{number:!0}]])]),k.value===`project`||k.value===`task`?(o(),E(`label`,et,[w(`span`,null,f(x(d)(`projectAgents.fields.project`)),1),T(pe,{modelValue:j.value,"onUpdate:modelValue":i[9]||=e=>j.value=e,"control-id":`executor-rule-project`,options:re.value,label:x(d)(`projectAgents.fields.project`),disabled:I.value},null,8,[`modelValue`,`options`,`label`,`disabled`])])):p(``,!0),k.value===`task`?(o(),E(`label`,tt,[w(`span`,null,f(x(d)(`projectAgents.routing.editor.taskId`)),1),r(w(`input`,{"onUpdate:modelValue":i[10]||=e=>M.value=e,maxlength:`128`,disabled:I.value},null,8,nt),[[h,M.value]])])):p(``,!0),w(`label`,null,[w(`span`,null,f(x(d)(`projectAgents.routing.editor.workKind`)),1),r(w(`input`,{"onUpdate:modelValue":i[11]||=e=>N.value=e,maxlength:`128`,disabled:I.value,required:``},null,8,rt),[[h,N.value]])]),w(`label`,it,[w(`span`,null,f(x(d)(`projectAgents.routing.editor.executorIds`)),1),r(w(`textarea`,{"onUpdate:modelValue":i[12]||=e=>P.value=e,rows:`3`,placeholder:x(d)(`projectAgents.routing.editor.executorIdsPlaceholder`),disabled:I.value,required:``},null,8,at),[[h,P.value]])]),w(`label`,ot,[w(`span`,null,f(x(d)(`projectAgents.routing.editor.requiredCapabilities`)),1),r(w(`textarea`,{"onUpdate:modelValue":i[13]||=e=>te.value=e,rows:`3`,disabled:I.value},null,8,st),[[h,te.value]])]),w(`label`,ct,[w(`span`,null,f(x(d)(`projectAgents.fields.reason`)),1),r(w(`textarea`,{"onUpdate:modelValue":i[14]||=e=>F.value=e,rows:`3`,disabled:I.value,required:``},null,8,$),[[h,F.value]])]),w(`p`,lt,f(x(d)(`projectAgents.routing.editor.ruleNote`)),1)],64))]),L.value?(o(),E(`p`,ut,f(L.value),1)):p(``,!0),w(`footer`,dt,[w(`button`,{class:`quiet-button`,type:`button`,disabled:I.value,onClick:i[15]||=e=>a(`close`)},f(x(d)(`common.actions.cancel`)),9,ft),w(`button`,{class:`project-agent-primary-action`,type:`submit`,disabled:I.value},[I.value?(o(),D(A,{key:0,variant:`inline`,label:W.value},null,8,[`label`])):(o(),E(`span`,mt,f(x(d)(`projectAgents.routing.editor.save`)),1))],8,pt)])],32)],544)):p(``,!0)}}),[[`__scopeId`,`data-v-4d36bcaf`]]),gt=[`aria-label`,`aria-busy`],_t={key:1,class:`project-agent-policy-options`},vt=[`checked`,`disabled`],yt=[`checked`,`disabled`],bt=[`checked`,`disabled`],xt={key:2,class:`project-team`},St={class:`project-team-peers`},Ct={key:1},wt={key:2},Tt={class:`project-team-summary`},Et={key:0,class:`project-team-members`},Dt=[`onClick`],Ot={class:`team-lead-field`},kt=[`disabled`],At={value:``},jt=[`value`],Mt=[`disabled`],Nt=[`onChange`],Pt=[`value`],Ft=[`disabled`],It={class:`project-agent-policy-feedback`,"aria-live":`polite`},Lt={key:0,role:`alert`},Rt=[`disabled`],zt={key:2,role:`status`},Bt=j(s({__name:`ProjectAgentAutomationPolicyPanel`,props:{personalSpaceId:{},personalProjectId:{},projectName:{},agents:{}},emits:[`select`],setup(e,{emit:i}){let a=e,s=i,c=l(W()),h=l(!1),g=l(!1),v=l(``),y=l(``),b=l(!1),S=l(``),T=l([]),k=0,j=u(()=>h.value||g.value),M=u(()=>(a.agents??[]).filter(e=>e.profile.status===`active`&&(e.profile.agentType??`durable`)===`durable`&&!e.agentId.startsWith(`employee.`)&&!e.profile.capabilities.some(e=>e.startsWith(`fuli.employee:`))&&e.assignments?.some(e=>e.status===`active`&&e.personalProjectId===a.personalProjectId))),N=M,ee=u(()=>M.value.filter(e=>e.agentId!==S.value)),te=u(()=>T.value.filter(e=>!ee.value.some(t=>t.agentId===e)).map(e=>({id:e,name:(a.agents??[]).find(t=>t.agentId===e)?.profile.displayName||(a.agents??[]).find(t=>t.agentId===e)?.profile.name||d(`projectAgents.team.unavailableMember`)}))),I=u(()=>M.value.find(e=>e.agentId===c.value.teamLeadAgentId)),L=u(()=>M.value.filter(e=>c.value.teamMemberAgentIds?.includes(e.agentId))),ne=u(()=>S.value!==(c.value.teamLeadAgentId??``)||JSON.stringify([...T.value].sort())!==JSON.stringify([...c.value.teamMemberAgentIds??[]].sort()));O(S,e=>{T.value=e?T.value.filter(t=>t!==e):[]});function R(e){return e.profile.displayName||e.profile.name}function z(){S.value=c.value.teamLeadAgentId??``,T.value=[...c.value.teamMemberAgentIds??[]]}O(()=>[a.personalSpaceId,a.personalProjectId],()=>void B(),{immediate:!0});async function B(){let e=++k;if(c.value=W(),z(),g.value=!1,h.value=!1,b.value=!1,y.value=``,!(!a.personalSpaceId||!a.personalProjectId)){h.value=!0,v.value=``;try{let t=await P(`/api/project-agent-coordination-policy?${new URLSearchParams({personalSpaceId:a.personalSpaceId,personalProjectId:a.personalProjectId})}`);e===k&&(c.value=re(t),z())}catch(t){e===k&&(v.value=t instanceof Error?t.message:d(`projectAgents.coordination.loadFailed`))}finally{e===k&&(h.value=!1)}}}async function V(e,t){if(j.value||v.value)return;let n={...c.value},r=t.currentTarget.checked;c.value={...c.value,[e]:r},await U(n)}async function H(){j.value||v.value||!ne.value||await U({...c.value},{teamLeadAgentId:S.value||null,teamMemberAgentIds:[...T.value]})}async function U(e,t){let n=k;g.value=!0,b.value=!1,y.value=``;try{let r=await F(`/api/project-agent-coordination-policy`,{personalSpaceId:a.personalSpaceId,personalProjectId:a.personalProjectId,askBeforeRecruitment:c.value.askBeforeRecruitment,autoReusePreviousAgent:c.value.autoReusePreviousAgent,autoGrowTeam:c.value.autoGrowTeam??!0,expectedUpdatedAt:e.updatedAt,...t});if(n!==k)return;c.value=re(r),t&&z(),b.value=!0}catch(t){if(n!==k)return;c.value=e,y.value=t instanceof Error?t.message:d(`projectAgents.coordination.saveFailed`)}finally{n===k&&(g.value=!1)}}function W(){return{personalSpaceId:a.personalSpaceId,personalProjectId:a.personalProjectId,askBeforeRecruitment:!0,autoReusePreviousAgent:!0,autoGrowTeam:!0,updatedAt:null,teamLeadAgentId:null,teamMemberAgentIds:[]}}function re(e){let t=e&&typeof e==`object`?e:{};return{personalSpaceId:K(t.personalSpaceId??t.personal_space_id)||a.personalSpaceId,personalProjectId:K(t.personalProjectId??t.personal_project_id)||a.personalProjectId,askBeforeRecruitment:G(t.askBeforeRecruitment??t.ask_before_recruitment,!0),autoReusePreviousAgent:G(t.autoReusePreviousAgent??t.auto_reuse_previous_agent,!0),updatedAt:K(t.updatedAt??t.updated_at),autoGrowTeam:G(t.autoGrowTeam??t.auto_grow_team,!0),teamLeadAgentId:K(t.teamLeadAgentId??t.team_lead_agent_id),teamMemberAgentIds:Array.isArray(t.teamMemberAgentIds??t.team_member_agent_ids)?t.teamMemberAgentIds??t.team_member_agent_ids:[]}}function G(e,t){return typeof e==`boolean`?e:t}function K(e){return typeof e==`string`&&e?e:null}return(i,a)=>(o(),E(`section`,{class:`project-agent-automation-policy`,"aria-label":x(d)(`projectAgents.coordination.aria`,{project:e.projectName}),"aria-busy":j.value},[w(`header`,null,[w(`h3`,null,f(x(d)(`projectAgents.coordination.title`)),1),w(`span`,null,f(e.projectName),1)]),h.value?(o(),D(A,{key:0,variant:`compact`,label:x(d)(`projectAgents.coordination.loading`)},null,8,[`label`])):(o(),E(`div`,_t,[w(`label`,null,[w(`span`,null,[w(`strong`,null,f(x(d)(`projectAgents.coordination.autoReuse`)),1),w(`small`,null,f(x(d)(`projectAgents.coordination.autoReuseMeta`)),1)]),w(`input`,{checked:c.value.autoReusePreviousAgent,disabled:j.value||!!v.value,type:`checkbox`,role:`switch`,onChange:a[0]||=e=>V(`autoReusePreviousAgent`,e)},null,40,vt)]),w(`label`,null,[w(`span`,null,[w(`strong`,null,f(x(d)(`projectAgents.coordination.askBeforeRecruitment`)),1),w(`small`,null,f(x(d)(`projectAgents.coordination.askBeforeRecruitmentMeta`)),1)]),w(`input`,{checked:c.value.askBeforeRecruitment,disabled:j.value||!!v.value,type:`checkbox`,role:`switch`,onChange:a[1]||=e=>V(`askBeforeRecruitment`,e)},null,40,yt)]),w(`label`,null,[w(`span`,null,[w(`strong`,null,f(x(d)(`projectAgents.team.autoGrow`)),1),w(`small`,null,f(x(d)(`projectAgents.team.autoGrowMeta`)),1)]),w(`input`,{checked:c.value.autoGrowTeam,disabled:j.value||!!v.value,type:`checkbox`,role:`switch`,onChange:a[2]||=e=>V(`autoGrowTeam`,e)},null,40,bt)])])),e.agents&&!h.value&&!v.value?(o(),E(`div`,xt,[w(`div`,St,[w(`span`,null,f(x(d)(`projectAgents.team.hr`)),1),w(`span`,null,f(x(d)(`projectAgents.team.manager`)),1),I.value?(o(),E(`button`,{key:0,type:`button`,onClick:a[3]||=e=>s(`select`,I.value.agentId)},f(x(d)(`projectAgents.team.lead`))+` · `+f(R(I.value)),1)):c.value.teamLeadAgentId?(o(),E(`span`,Ct,f(x(d)(`projectAgents.team.unavailable`)),1)):(o(),E(`span`,wt,f(x(d)(`projectAgents.team.noLead`)),1))]),w(`p`,Tt,f(x(d)(`projectAgents.team.summary`)),1),L.value.length?(o(),E(`ul`,Et,[(o(!0),E(_,null,n(L.value,e=>(o(),E(`li`,{key:e.agentId},[w(`button`,{type:`button`,onClick:t=>s(`select`,e.agentId)},[w(`strong`,null,f(R(e)),1),w(`span`,null,f(e.profile.responsibility),1)],8,Dt)]))),128))])):p(``,!0),w(`details`,null,[w(`summary`,null,f(x(d)(`projectAgents.team.edit`)),1),w(`label`,Ot,[t(f(x(d)(`projectAgents.team.lead`))+` `,1),r(w(`select`,{"onUpdate:modelValue":a[4]||=e=>S.value=e,disabled:j.value},[w(`option`,At,f(x(d)(`projectAgents.team.noLead`)),1),(o(!0),E(_,null,n(x(N),e=>(o(),E(`option`,{key:e.agentId,value:e.agentId},f(R(e)),9,jt))),128))],8,kt),[[C,S.value]])]),w(`fieldset`,{disabled:j.value||!S.value},[w(`legend`,null,f(x(d)(`projectAgents.team.members`)),1),(o(!0),E(_,null,n(te.value,e=>(o(),E(`label`,{key:e.id,class:`unavailable-team-member`},[w(`input`,{type:`checkbox`,checked:``,onChange:t=>T.value=T.value.filter(t=>t!==e.id)},null,40,Nt),t(` `+f(e.name)+` · `+f(x(d)(`projectAgents.team.removeUnavailable`)),1)]))),128)),(o(!0),E(_,null,n(ee.value,e=>(o(),E(`label`,{key:e.agentId},[r(w(`input`,{"onUpdate:modelValue":a[5]||=e=>T.value=e,type:`checkbox`,value:e.agentId},null,8,Pt),[[m,T.value]]),t(f(R(e)),1)]))),128))],8,Mt),w(`button`,{type:`button`,disabled:j.value||!ne.value,onClick:H},f(x(d)(`projectAgents.team.save`)),9,Ft)])])):p(``,!0),w(`div`,It,[v.value||y.value?(o(),E(`p`,Lt,[t(f(v.value||y.value)+` `,1),v.value?(o(),E(`button`,{key:0,type:`button`,disabled:j.value,onClick:B},f(x(d)(`projectAgents.retry`)),9,Rt)):p(``,!0)])):g.value?(o(),D(A,{key:1,variant:`compact`,label:x(d)(`projectAgents.coordination.saving`)},null,8,[`label`])):b.value?(o(),E(`p`,zt,f(x(d)(`projectAgents.coordination.saved`)),1)):p(``,!0)])],8,gt))}}),[[`__scopeId`,`data-v-077ab7fe`]]),Vt={key:0,class:`project-agent-source-state`,role:`status`},Ht={key:1,class:`project-agent-source-state`},Ut={key:2,class:`project-agent-source-state is-error`,role:`alert`},Wt=j(s({__name:`ProjectAgentDetailState`,props:{status:{},error:{},label:{}},emits:[`retry`],setup(e){return(t,n)=>e.status===`idle`?(o(),E(`div`,Vt,f(x(d)(`projectAgents.detail.notLoaded`)),1)):e.status===`loading`?(o(),E(`div`,Ht,[T(A,{variant:`inline`,label:e.label},null,8,[`label`])])):e.status===`error`?(o(),E(`div`,Ut,[w(`span`,null,f(e.error||x(d)(`projectAgents.detail.sectionUnavailable`)),1),w(`button`,{class:`quiet-button`,type:`button`,onClick:n[0]||=e=>t.$emit(`retry`)},f(x(d)(`projectAgents.retry`)),1)])):i(t.$slots,`default`,{},void 0,!0,3)}}),[[`__scopeId`,`data-v-ca9a5880`]]),Gt=[`aria-label`],Kt={"data-task-project-state":``},qt={key:0},Jt={"data-task-assignment-state":``},Yt={"data-task-execution-state":``},Xt={key:0,class:`project-agent-task-scope-hint`},Zt={key:1,"data-task-summary-reason":``},Qt=j(s({__name:`ProjectAgentTaskDiagnostics`,props:{task:{},projectName:{}},setup(e){let t=e,n=u(()=>!!(t.task.ownerAgentId||t.task.leadAgentId||t.task.participants.some(e=>e.agentId))),r=u(()=>t.task.projectScope?.type===`temporary`?`temporary`:t.task.personalProjectId?`identified`:`unresolved`),i=u(()=>{if(t.task.executionSummary!==void 0)return t.task.executionSummary;let e=new Map;for(let n of V(t.task)){let t=n.workerId||n.agentId||n.workerLabel||n.eventId,r=e.get(t);(!r||n.createdAt>=r.createdAt)&&e.set(t,{status:n.workerStatus,createdAt:n.createdAt})}return[...e.values()]}),a=u(()=>{let e=i.value;return e.length?e.some(e=>e.status===`running`)?`running`:e.every(e=>e.status===`queued`)?`queued`:e.every(e=>[`completed`,`failed`,`cancelled`].includes(e.status??``))?`ended`:`reported`:`unreported`}),s=u(()=>t.task.executionSummary?.length?``:i.value.length?`eventsOnly`:n.value?`assignedOnly`:`unassigned`);return(t,i)=>(o(),E(`section`,{class:`project-agent-task-diagnostics`,"aria-label":x(d)(`projectAgents.diagnostics.title`)},[w(`dl`,null,[w(`div`,Kt,[w(`dt`,null,f(x(d)(`projectAgents.diagnostics.project`)),1),w(`dd`,null,f(x(d)(`projectAgents.diagnostics.projectState.${r.value}`)),1),e.task.personalProjectId?(o(),E(`small`,qt,f(e.projectName),1)):p(``,!0)]),w(`div`,Jt,[w(`dt`,null,f(x(d)(`projectAgents.diagnostics.assignment`)),1),w(`dd`,null,f(x(d)(`projectAgents.diagnostics.assignmentState.${n.value?`assigned`:`unreported`}`)),1)]),w(`div`,Yt,[w(`dt`,null,f(x(d)(`projectAgents.diagnostics.execution`)),1),w(`dd`,null,f(x(d)(`projectAgents.diagnostics.executionState.${a.value}`)),1)])]),r.value===`temporary`?(o(),E(`p`,Xt,f(x(d)(`projectAgents.diagnostics.temporaryHint`)),1)):p(``,!0),s.value?(o(),E(`p`,Zt,f(x(d)(`projectAgents.diagnostics.summaryReason.${s.value}`)),1)):p(``,!0)],8,Gt))}}),[[`__scopeId`,`data-v-f960dcef`]]),$t={key:0},en=[`value`],tn={key:2,role:`alert`},nn={key:3},rn={class:`work-record-meta`},an=[`datetime`],on={key:4},sn=j(s({__name:`EmployeeWorkHistory`,props:{personalSpaceId:{},agentId:{},projects:{}},setup(e){let i=e,a=l(``),s=l(!1),c=l(!1),u=l(``),m=l([]),h=0;O(()=>[i.agentId,i.personalSpaceId,i.projects.map(e=>e.id).join(`
|
|
8
|
-
`)],()=>{let e=i.projects.some(e=>e.id===a.value)?a.value:i.projects[0]?.id??``;e===a.value?g():a.value=e},{immediate:!0}),O(a,()=>void g());async function g(){let e=++h;if(m.value=[],u.value=``,c.value=!1,!(!s.value||!a.value)){c.value=!0;try{let t=new URLSearchParams({personalSpaceId:i.personalSpaceId,personalProjectId:a.value}),n=await P(`/api/project-agents/${encodeURIComponent(i.agentId)}/memory?${t}`);e===h&&(m.value=n.workLog??[])}catch(t){e===h&&(u.value=t instanceof Error?t.message:d(`projectAgents.workHistory.loadFailed`))}finally{e===h&&(c.value=!1)}}}function v(e){let t=e.target.open;t!==s.value&&(s.value=t,s.value?g():++h)}function y(e){let t=new Date(e);return Number.isNaN(t.getTime())?d(`projectAgents.notReported`):new Intl.DateTimeFormat(b(),{dateStyle:`short`,timeStyle:`short`}).format(t)}function S(e){return d(`projectAgents.workHistory.${[`reported`,`completed`,`incomplete`,`failed`,`no_change`,`unreported`,`running`].includes(e)?e:`unreported`}`)}return(i,s)=>(o(),E(`details`,{class:`employee-work-history`,onToggle:v},[w(`summary`,null,f(x(d)(`projectAgents.workHistory.title`)),1),e.projects.length?(o(),E(`label`,$t,[t(f(x(d)(`projectAgents.fields.project`))+` `,1),r(w(`select`,{"onUpdate:modelValue":s[0]||=e=>a.value=e},[(o(!0),E(_,null,n(e.projects,e=>(o(),E(`option`,{key:e.id,value:e.id},f(e.name),9,en))),128))],512),[[C,a.value]])])):p(``,!0),c.value?(o(),D(A,{key:1,variant:`compact`,label:x(d)(`projectAgents.workHistory.loading`)},null,8,[`label`])):u.value?(o(),E(`div`,tn,[w(`p`,null,f(u.value),1),w(`button`,{type:`button`,class:`quiet-button`,onClick:g},f(x(d)(`projectAgents.retry`)),1)])):m.value.length?(o(),E(`ol`,nn,[(o(!0),E(_,null,n(m.value,e=>(o(),E(`li`,{key:e.taskContextToken},[w(`div`,rn,[w(`strong`,null,f(S(e.status)),1),w(`span`,null,f(e.sourceApplication),1),w(`time`,{datetime:e.createdAt},f(y(e.createdAt)),9,an)]),w(`p`,null,f(e.summary),1)]))),128))])):(o(),E(`p`,on,f(x(d)(`projectAgents.workHistory.empty`)),1))],32))}}),[[`__scopeId`,`data-v-bf7d05b1`]]),cn={key:0},ln=[`value`],un={class:`conversation-hint`},dn={key:2,role:`alert`},fn={key:3,class:`conversation-list`},pn=[`aria-pressed`,`disabled`,`onClick`],mn=[`datetime`],hn=[`data-copy-continuation`,`onClick`],gn={key:1,"data-continuation-feedback":``},_n={key:0,role:`status`,class:`conversation-hint`},vn={role:`alert`,class:`conversation-hint`},yn=[`aria-label`,`value`],bn={key:2,class:`conversation-messages`},xn={key:0,class:`conversation-hint`},Sn={key:2,role:`alert`},Cn=[`onClick`],wn=[`onClick`],Tn={key:4,class:`conversation-hint`},En={key:4},Dn=[`disabled`],On={class:`capture-toggle`},kn={class:`conversation-hint`},An={class:`quiet-button`,type:`submit`},jn={key:1},Mn={key:2,role:`alert`},Nn={key:3,role:`status`},Pn=j(s({__name:`AgentConversations`,props:{personalSpaceId:{},agentId:{},projects:{}},setup(e){let i=e,a=l(``),s=l(!1),c=l(!1),u=l([]),g=l(!1),v=l(``),S=l(``),T=l([]),k=l(!1),j=l(``),M=l(),N=l(!1),P=l(!1),F=l(!1),I=l(``),L=l(!1),ne=l(!1),R=l(7),z=l(2e3),B=l(!0),V=l(),H=0,U=0,W=0,re=0;function G(){return{personalSpaceId:i.personalSpaceId,personalProjectId:a.value,agentId:i.agentId}}function K(e){return e instanceof Error?e.message:d(`projectAgents.conversations.loadFailed`)}O(()=>[i.agentId,i.personalSpaceId,i.projects.map(e=>e.id).join(`
|
|
9
|
-
`)],()=>{let e=i.projects.some(e=>e.id===a.value)?a.value:i.projects[0]?.id??``;e===a.value?ie():a.value=e},{immediate:!0}),O(a,()=>void ie());async function ie(){let e=++H;if(++U,++W,++re,u.value=[],T.value=[],S.value=``,v.value=``,j.value=``,V.value=void 0,P.value=!1,F.value=!1,I.value=``,ne.value=!1,L.value=!1,g.value=!1,k.value=!1,N.value=!1,!(!s.value||!a.value)){g.value=!0,c.value&&oe();try{let t=await te(`/api/agent-conversations/query`,{...G(),mode:`list`,limit:20});e===H&&(u.value=t.conversations)}catch(t){e===H&&(v.value=K(t))}finally{e===H&&(g.value=!1)}}}function ae(e){let t=e.target.open;t!==s.value&&(s.value=t,t?ie():(++H,++U,++W,++re,V.value=void 0,c.value=!1))}async function q(e,t=!1){if(k.value||!a.value)return;let n=++U;S.value=e,j.value=``,k.value=!0,t||(T.value=[],M.value=void 0,N.value=!1);try{let r=await te(`/api/agent-conversations/query`,{...G(),mode:`events`,conversationId:e,limit:20,...t&&M.value!==void 0?{after:M.value}:{}});if(n!==U)return;T.value=t?[...T.value,...r.events]:r.events,M.value=r.next_cursor,N.value=r.has_more===!0&&r.next_cursor!==void 0}catch(e){n===U&&(j.value=K(e))}finally{n===U&&(k.value=!1)}}function J(e){c.value=e.target.open,c.value&&!P.value&&!F.value&&s.value&&oe()}function Y(e){R.value=e.idle_days,z.value=e.context_budget,B.value=e.enabled}async function oe(){let e=++W;F.value=!0,I.value=``,ne.value=!1;try{let t=await te(`/api/agent-conversations/query`,{...G(),mode:`policy`});e===W&&(Y(t),P.value=!0)}catch(t){e===W&&(I.value=K(t))}finally{e===W&&(F.value=!1)}}async function se(){if(L.value||!P.value)return;if(ne.value=!1,I.value=``,!Number.isInteger(R.value)||R.value<1||R.value>365||!Number.isInteger(z.value)||z.value<512||z.value>16e3){I.value=d(`projectAgents.conversations.invalidPolicy`);return}let e=W;L.value=!0;try{let t=await ee(`/api/agent-conversations/policy`,{...G(),idleDays:R.value,contextBudget:z.value,enabled:B.value});e===W&&(Y(t),ne.value=!0)}catch(t){e===W&&(I.value=K(t))}finally{e===W&&(L.value=!1)}}function ce(e){let t=new Date(e);return Number.isNaN(t.getTime())?d(`projectAgents.notReported`):new Intl.DateTimeFormat(b(),{dateStyle:`short`,timeStyle:`short`}).format(t)}function le(e){return[`user`,`assistant`,`tool`].includes(e)?d(`projectAgents.conversations.${e}`):e}function ue(e){return typeof e==`string`?e:JSON.stringify(e,null,2)}async function de(e){let t=e.continuation_prompt;if(!t)return;let n=++re,r=a.value;V.value=void 0;try{let i=globalThis.navigator?.clipboard;if(!i?.writeText)throw Error(`Clipboard unavailable`);await i.writeText(t),n===re&&r===a.value&&(V.value={conversationId:e.id,state:`copied`})}catch{n===re&&r===a.value&&(V.value={conversationId:e.id,state:`fallback`})}}function fe(e){e.target.select()}return(i,c)=>(o(),E(`details`,{class:`agent-conversations`,onToggle:ae},[w(`summary`,null,f(x(d)(`projectAgents.conversations.title`)),1),s.value?(o(),E(_,{key:0},[e.projects.length?(o(),E(`label`,cn,[t(f(x(d)(`projectAgents.fields.project`))+` `,1),r(w(`select`,{"onUpdate:modelValue":c[0]||=e=>a.value=e},[(o(!0),E(_,null,n(e.projects,e=>(o(),E(`option`,{key:e.id,value:e.id},f(e.name),9,ln))),128))],512),[[C,a.value]])])):p(``,!0),w(`p`,un,f(x(d)(`projectAgents.conversations.hint`)),1),g.value?(o(),D(A,{key:1,variant:`compact`,label:x(d)(`projectAgents.conversations.loading`)},null,8,[`label`])):v.value?(o(),E(`div`,dn,[w(`p`,null,f(v.value),1),w(`button`,{"data-retry-list":``,class:`quiet-button`,type:`button`,onClick:ie},f(x(d)(`projectAgents.retry`)),1)])):u.value.length?(o(),E(`ol`,fn,[(o(!0),E(_,null,n(u.value,e=>(o(),E(`li`,{key:e.id},[w(`button`,{"data-read-conversation":``,class:`conversation-link`,type:`button`,"aria-pressed":S.value===e.id,disabled:k.value,onClick:t=>q(e.id)},[w(`strong`,null,f(e.summary||x(d)(`projectAgents.conversations.untitled`)),1),w(`span`,null,[t(f(e.archived?x(d)(`projectAgents.conversations.archived`):x(d)(`projectAgents.conversations.recent`))+` · `,1),w(`time`,{datetime:e.last_activity},f(ce(e.last_activity)),9,mn)])],8,pn),e.continuation_prompt?(o(),E(`button`,{key:0,"data-copy-continuation":e.id,class:`quiet-button continuation-copy`,type:`button`,onClick:t=>de(e)},f(x(d)(`projectAgents.conversations.copyContinuation`)),9,hn)):p(``,!0),V.value?.conversationId===e.id?(o(),E(`div`,gn,[V.value.state===`copied`?(o(),E(`p`,_n,f(x(d)(`projectAgents.conversations.copiedContinuation`)),1)):(o(),E(_,{key:1},[w(`p`,vn,f(x(d)(`projectAgents.conversations.copyContinuationFailed`)),1),w(`textarea`,{"data-continuation-fallback":``,readonly:``,rows:`3`,"aria-label":x(d)(`projectAgents.conversations.manualContinuation`),value:e.continuation_prompt,onFocus:fe},null,40,yn)],64))])):p(``,!0),S.value===e.id?(o(),E(`div`,bn,[e.raw_retained?(o(),E(`p`,xn,f(x(d)(`projectAgents.conversations.rawRetained`)),1)):p(``,!0),w(`ol`,null,[(o(!0),E(_,null,n(T.value,e=>(o(),E(`li`,{key:e.sequence},[w(`strong`,null,f(le(e.role)),1),w(`pre`,null,f(ue(e.content)),1)]))),128))]),k.value?(o(),D(A,{key:1,variant:`compact`,label:x(d)(`projectAgents.conversations.loadingMessages`)},null,8,[`label`])):j.value?(o(),E(`div`,Sn,[w(`p`,null,f(j.value),1),w(`button`,{class:`quiet-button`,type:`button`,onClick:t=>q(e.id,T.value.length>0)},f(x(d)(`projectAgents.retry`)),9,Cn)])):N.value?(o(),E(`button`,{key:3,"data-more-messages":``,class:`quiet-button`,type:`button`,onClick:t=>q(e.id,!0)},f(x(d)(`projectAgents.conversations.more`)),9,wn)):T.value.length?p(``,!0):(o(),E(`p`,Tn,f(x(d)(`projectAgents.conversations.noMessages`)),1))])):p(``,!0)]))),128))])):(o(),E(`p`,En,f(x(d)(`projectAgents.conversations.empty`)),1)),a.value?(o(),E(`details`,{key:5,"data-memory-settings":``,onToggle:y(J,[`stop`])},[w(`summary`,null,f(x(d)(`projectAgents.conversations.settings`)),1),F.value?(o(),D(A,{key:0,variant:`compact`,label:x(d)(`projectAgents.conversations.loadingPolicy`)},null,8,[`label`])):p(``,!0),P.value?(o(),E(`form`,{key:1,onSubmit:y(se,[`prevent`])},[w(`fieldset`,{disabled:L.value},[w(`label`,On,[r(w(`input`,{"onUpdate:modelValue":c[1]||=e=>B.value=e,type:`checkbox`},null,512),[[m,B.value]]),t(f(x(d)(`projectAgents.conversations.capture`)),1)]),w(`label`,null,[t(f(x(d)(`projectAgents.conversations.idleDays`)),1),r(w(`input`,{"onUpdate:modelValue":c[2]||=e=>R.value=e,name:`idleDays`,type:`number`,min:`1`,max:`365`,required:``},null,512),[[h,R.value,void 0,{number:!0}]])]),w(`label`,null,[t(f(x(d)(`projectAgents.conversations.budget`)),1),r(w(`input`,{"onUpdate:modelValue":c[3]||=e=>z.value=e,name:`contextBudget`,type:`number`,min:`512`,max:`16000`,required:``},null,512),[[h,z.value,void 0,{number:!0}]])]),w(`p`,kn,f(x(d)(`projectAgents.conversations.budgetHint`)),1),w(`button`,An,[L.value?(o(),D(A,{key:0,variant:`inline`,label:x(d)(`projectAgents.conversations.saving`)},null,8,[`label`])):(o(),E(`span`,jn,f(x(d)(`projectAgents.conversations.save`)),1))])],8,Dn)],32)):p(``,!0),I.value?(o(),E(`div`,Mn,[w(`p`,null,f(I.value),1),P.value?p(``,!0):(o(),E(`button`,{key:0,class:`quiet-button`,type:`button`,onClick:oe},f(x(d)(`projectAgents.retry`)),1))])):p(``,!0),ne.value?(o(),E(`p`,Nn,f(x(d)(`projectAgents.conversations.saved`)),1)):p(``,!0)],32)):p(``,!0)],64)):p(``,!0)],32))}}),[[`__scopeId`,`data-v-6d3f7a53`]]),Fn={class:`project-agent-dialog-header`},In={id:`project-agent-dialog-title`},Ln=[`disabled`],Rn={class:`project-agent-dialog-fields`},zn=[`disabled`],Bn={value:`active`},Vn={value:`inactive`},Hn={value:`archived`},Un=[`disabled`],Wn={value:`durable`},Gn={value:`hr`},Kn={key:0,value:`temporary`,disabled:``},qn={key:1,value:`coordinator`,disabled:``},Jn=[`disabled`,`placeholder`],Yn=[`disabled`,`placeholder`],Xn=[`disabled`],Zn=[`disabled`,`placeholder`],Qn={key:0,class:`project-agent-id-note`},$n={class:`project-agent-wide-field`},er=[`disabled`,`placeholder`],tr={class:`project-agent-wide-field`},nr=[`disabled`,`placeholder`],rr={class:`project-agent-wide-field`},ir=[`disabled`,`placeholder`],ar={class:`project-agent-wide-field project-agent-strategy-fields`},or=[`disabled`],sr={value:`flexible`},cr={value:`locked`},lr=[`disabled`],ur={class:`project-agent-wide-field`},dr=[`disabled`,`placeholder`],fr={key:0,class:`project-agent-dialog-error`,role:`alert`},pr={class:`project-agent-dialog-actions`},mr=[`disabled`],hr=[`disabled`],gr={key:1},_r=j(s({__name:`ProjectAgentDialog`,props:{open:{type:Boolean},agent:{},projects:{},defaultProjectId:{},personalSpaceId:{}},emits:[`close`,`saved`],setup(e,{emit:t}){let n=e,i=t,a=l(``),s=l(``),c=l(``),m=l(``),g=l(``),_=l(``),v=l(``),b=l(``),S=l(`active`),k=l(`durable`),j=l(`adaptive`),M=l(`flexible`),N=l(``),P=l(!1),F=l(``),{dialogRef:I,initialFocusRef:L,onCancel:ne,onKeydown:R}=B(()=>n.open,()=>i(`close`)),z=u(()=>!!n.agent),V=u(()=>n.projects.map(e=>({value:e.project_id,label:e.profile.name,meta:e.project_id})));O(()=>[n.open,n.agent,n.defaultProjectId],([e,t,r])=>{if(!e)return;a.value=t?.personalProjectId??r??n.projects[0]?.project_id??``,s.value=t?.agentId??``,c.value=t?.profile.name??``,m.value=t?.profile.displayName??``,g.value=t?.profile.occupationEmoji??``,_.value=t?.profile.responsibility??``,v.value=(t?.profile.capabilities??[]).join(`
|
|
10
|
-
`),b.value=(t?.profile.initialPreferences??[]).join(`
|
|
11
|
-
`),S.value=t?.profile.status??`active`,k.value=t?.profile.agentType??`durable`,j.value=t?.profile.defaultModelStrategy?.mode??`adaptive`,M.value=t?.profile.executorPolicy?.mode??`flexible`;let i=t?.profile.executorPolicy,o=i?.mode===`locked`?i.lockedExecutorIds:i?.preferredExecutorIds;N.value=(o?.length?o:i?.allowList?.map(({executorId:e})=>e)??[]).join(`
|
|
12
|
-
`),F.value=``},{immediate:!0});function H(e){let t=e.split(`
|
|
13
|
-
`).map(e=>e.trim()).filter(Boolean),n=t.map(e=>e.toLocaleLowerCase());return new Set(n).size===n.length?t:null}async function U(){if(P.value)return;let e=a.value.trim(),t=s.value.trim(),r=c.value.trim(),o=g.value.trim(),l=_.value.trim();if(!t||!r||!l){F.value=d(`projectAgents.dialog.required`);return}let u=n.projects.find(({project_id:t})=>t===e);if(e&&!u){F.value=d(`projectAgents.dialog.projectUnavailable`);return}if(o&&!W(o)){F.value=d(`projectAgents.dialog.occupationEmojiInvalid`);return}let f=u?.personal_space_id??n.personalSpaceId??n.agent?.personalSpaceId;if(!f){F.value=d(`projectAgents.dialog.spaceUnavailable`);return}let p=H(v.value),h=H(b.value);if(!p||!h){F.value=d(`projectAgents.dialog.duplicate`);return}let y=H(N.value);if(!y||M.value===`locked`&&!y.length){F.value=d(`projectAgents.dialog.duplicate`);return}P.value=!0,F.value=``;try{let a={...n.agent?.profile,name:r,responsibility:l,capabilities:p,initialPreferences:h,status:S.value};m.value.trim()&&(a.displayName=m.value.trim()),o&&(a.occupationEmoji=o),k.value!==`durable`&&(a.agentType=k.value),j.value!==`adaptive`&&(a.defaultModelStrategy={mode:j.value}),(M.value!==`flexible`||y.length)&&(a.executorPolicy={mode:M.value,lockedExecutorIds:M.value===`locked`?y:[],preferredExecutorIds:M.value===`flexible`?y:[]});let s=await ee(`/api/project-agents`,{personalSpaceId:f,personalProjectId:null,agentId:t,profile:a}),c=s;if(e&&!z.value){let n=await te(`/api/project-agent-assignments`,{personalSpaceId:f,personalProjectId:e,agentId:t,idempotencyKey:`directory:${t}:${Date.now()}`,responsibility:l,capabilities:p,reason:d(`projectAgents.dialog.initialAssignmentReason`)});c={...s,personalProjectId:e,assignments:[n]}}i(`saved`,c),i(`close`)}catch(e){F.value=e instanceof Error?e.message:d(`projectAgents.dialog.saveFailed`)}finally{P.value=!1}}function W(e){return Array.from(e).length>32||/\s/u.test(e)||Array.from(new Intl.Segmenter(void 0,{granularity:`grapheme`}).segment(e)).length!==1?!1:/\p{Extended_Pictographic}|\p{Regional_Indicator}{2}|[#*0-9]\uFE0F?\u20E3/u.test(e)&&/^[\p{Extended_Pictographic}\p{Emoji_Component}\uFE0E\uFE0F\u200D\u{E0020}-\u{E007F}#*0-9]+$/u.test(e)}return(t,n)=>e.open?(o(),E(`dialog`,{key:0,ref_key:`dialogRef`,ref:I,class:`project-agent-dialog vue-dialog`,"aria-modal":`true`,"aria-labelledby":`project-agent-dialog-title`,onCancel:n[15]||=(...e)=>x(ne)&&x(ne)(...e),onKeydown:n[16]||=(...e)=>x(R)&&x(R)(...e)},[w(`form`,{class:`project-agent-dialog-shell`,onSubmit:y(U,[`prevent`])},[w(`header`,Fn,[w(`h3`,In,f(z.value?x(d)(`projectAgents.dialog.editTitle`):x(d)(`projectAgents.dialog.createTitle`)),1),w(`button`,{ref_key:`initialFocusRef`,ref:L,"data-dialog-initial-focus":``,class:`quiet-button`,type:`button`,disabled:P.value,onClick:n[0]||=e=>i(`close`)},f(x(d)(`common.actions.close`)),9,Ln)]),w(`div`,Rn,[w(`label`,null,[w(`span`,null,f(x(d)(`projectAgents.fields.project`)),1),T(pe,{modelValue:a.value,"onUpdate:modelValue":n[1]||=e=>a.value=e,"control-id":`project-agent-project`,options:V.value,label:x(d)(`projectAgents.fields.project`),placeholder:x(d)(`projectAgents.dialog.projectPlaceholder`),disabled:z.value||P.value},null,8,[`modelValue`,`options`,`label`,`placeholder`,`disabled`])]),w(`label`,null,[w(`span`,null,f(x(d)(`projectAgents.fields.status`)),1),r(w(`select`,{"onUpdate:modelValue":n[2]||=e=>S.value=e,name:`project-agent-status`,disabled:P.value},[w(`option`,Bn,f(x(d)(`projectAgents.status.active`)),1),w(`option`,Vn,f(x(d)(`projectAgents.status.inactive`)),1),w(`option`,Hn,f(x(d)(`projectAgents.status.archived`)),1)],8,zn),[[C,S.value]])]),w(`label`,null,[w(`span`,null,f(x(d)(`projectAgents.fields.agentType`)),1),r(w(`select`,{"onUpdate:modelValue":n[3]||=e=>k.value=e,name:`project-agent-type`,disabled:P.value},[w(`option`,Wn,f(x(d)(`projectAgents.agentType.durable`)),1),w(`option`,Gn,f(x(d)(`projectAgents.agentType.hr`)),1),z.value&&k.value===`temporary`?(o(),E(`option`,Kn,f(x(d)(`projectAgents.agentType.temporary`)),1)):p(``,!0),z.value&&k.value===`coordinator`?(o(),E(`option`,qn,f(x(d)(`projectAgents.agentType.coordinator`)),1)):p(``,!0)],8,Un),[[C,k.value]])]),w(`label`,null,[w(`span`,null,f(x(d)(`projectAgents.fields.agentId`)),1),r(w(`input`,{"onUpdate:modelValue":n[4]||=e=>s.value=e,name:`project-agent-id`,maxlength:`128`,required:``,disabled:z.value||P.value,placeholder:x(d)(`projectAgents.dialog.agentIdPlaceholder`)},null,8,Jn),[[h,s.value]])]),w(`label`,null,[w(`span`,null,f(x(d)(`attention.roleName`)),1),r(w(`input`,{"onUpdate:modelValue":n[5]||=e=>c.value=e,name:`project-agent-name`,maxlength:`160`,required:``,disabled:P.value,placeholder:x(d)(`projectAgents.dialog.namePlaceholder`)},null,8,Yn),[[h,c.value]])]),w(`label`,null,[w(`span`,null,f(x(d)(`attention.displayName`)),1),r(w(`input`,{"onUpdate:modelValue":n[6]||=e=>m.value=e,name:`project-agent-display-name`,maxlength:`160`,disabled:P.value},null,8,Xn),[[h,m.value]])]),w(`label`,null,[w(`span`,null,f(x(d)(`projectAgents.fields.occupationEmoji`)),1),r(w(`input`,{"onUpdate:modelValue":n[7]||=e=>g.value=e,name:`project-agent-occupation-emoji`,maxlength:`64`,autocomplete:`off`,disabled:P.value,placeholder:x(d)(`projectAgents.dialog.occupationEmojiPlaceholder`)},null,8,Zn),[[h,g.value]])]),z.value?(o(),E(`small`,Qn,f(x(d)(`projectAgents.dialog.idLocked`)),1)):p(``,!0),w(`label`,$n,[w(`span`,null,f(x(d)(`projectAgents.fields.responsibility`)),1),r(w(`textarea`,{"onUpdate:modelValue":n[8]||=e=>_.value=e,name:`project-agent-responsibility`,maxlength:`4096`,rows:`4`,required:``,disabled:P.value,placeholder:x(d)(`projectAgents.dialog.responsibilityPlaceholder`)},null,8,er),[[h,_.value]])]),w(`label`,tr,[w(`span`,null,f(x(d)(`projectAgents.fields.capabilities`)),1),r(w(`textarea`,{"onUpdate:modelValue":n[9]||=e=>v.value=e,name:`project-agent-capabilities`,maxlength:`8192`,rows:`4`,disabled:P.value,placeholder:x(d)(`projectAgents.dialog.capabilitiesPlaceholder`)},null,8,nr),[[h,v.value]])]),w(`label`,rr,[w(`span`,null,f(x(d)(`projectAgents.fields.initialPreferences`)),1),r(w(`textarea`,{"onUpdate:modelValue":n[10]||=e=>b.value=e,name:`project-agent-preferences`,maxlength:`8192`,rows:`4`,disabled:P.value,placeholder:x(d)(`projectAgents.dialog.preferencesPlaceholder`)},null,8,ir),[[h,b.value]])]),w(`fieldset`,ar,[w(`legend`,null,f(x(d)(`projectAgents.fields.defaultModelStrategy`)),1),w(`label`,null,[w(`span`,null,f(x(d)(`projectAgents.fields.executorPolicy`)),1),r(w(`select`,{"onUpdate:modelValue":n[11]||=e=>M.value=e,name:`project-agent-selection-mode`,disabled:P.value},[w(`option`,sr,f(x(d)(`projectAgents.strategy.flexible`)),1),w(`option`,cr,f(x(d)(`projectAgents.strategy.locked`)),1)],8,or),[[C,M.value]])]),w(`label`,null,[w(`span`,null,f(x(d)(`projectAgents.fields.modelIntent`)),1),r(w(`select`,{"onUpdate:modelValue":n[12]||=e=>j.value=e,name:`project-agent-model-mode`,disabled:P.value},[...n[17]||=[w(`option`,{value:`adaptive`},`adaptive`,-1),w(`option`,{value:`fast`},`fast`,-1),w(`option`,{value:`balanced`},`balanced`,-1),w(`option`,{value:`deep`},`deep`,-1)]],8,lr),[[C,j.value]])]),w(`label`,ur,[w(`span`,null,f(x(d)(`projectAgents.fields.allowList`)),1),r(w(`textarea`,{"onUpdate:modelValue":n[13]||=e=>N.value=e,name:`project-agent-allow-list`,rows:`3`,disabled:P.value,placeholder:x(d)(`projectAgents.dialog.allowListPlaceholder`)},null,8,dr),[[h,N.value]])]),w(`small`,null,f(M.value===`locked`?x(d)(`projectAgents.strategy.lockedUnavailable`):x(d)(`projectAgents.strategy.providerNeutral`)),1)])]),F.value?(o(),E(`p`,fr,f(F.value),1)):p(``,!0),w(`footer`,pr,[w(`button`,{class:`quiet-button`,type:`button`,disabled:P.value,onClick:n[14]||=e=>i(`close`)},f(x(d)(`common.actions.cancel`)),9,mr),w(`button`,{class:`project-agent-primary-action`,type:`submit`,disabled:P.value},[P.value?(o(),D(A,{key:0,variant:`inline`,label:x(d)(`projectAgents.dialog.saving`)},null,8,[`label`])):(o(),E(`span`,gr,f(z.value?x(d)(`projectAgents.dialog.saveEdit`):x(d)(`projectAgents.dialog.saveCreate`)),1))],8,hr)])],32)],544)):p(``,!0)}}),[[`__scopeId`,`data-v-95db0a3d`]]),vr=[`aria-label`],yr={class:`project-agents-header`},br={key:0,class:`project-agents-header-meta`},xr={class:`project-agent-header-actions`},Sr=[`disabled`],Cr=[`disabled`],wr={key:0,class:`project-agents-summary`,"aria-live":`polite`},Tr={class:`project-agents-toolbar`},Er={class:`project-agents-search`},Dr={class:`sr-only`},Or=[`placeholder`],kr=[`aria-label`],Ar=[`aria-pressed`,`onClick`],jr={key:4,class:`project-agents-state is-error`,role:`alert`},Mr={key:5,class:`project-agents-state`},Nr=[`disabled`],Pr={key:6,class:`project-agents-state`},Fr={key:7,class:`project-agents-directory`},Ir=[`aria-label`],Lr=[`aria-current`,`onClick`],Rr={class:`project-agent-row-heading`},zr=[`aria-label`],Br={class:`project-agent-kind`},Vr={class:`project-agent-row-projects`},Hr={key:0},Ur={key:1},Wr={class:`project-agent-row-responsibility`},Gr={class:`project-agent-row-work`},Kr=[`aria-label`],qr={class:`project-agent-detail-heading`},Jr=[`aria-label`],Yr={key:0},Xr={key:0},Zr={class:`project-agent-detail-actions`},Qr=[`disabled`],$r=[`disabled`],ei={key:1},ti={key:0,class:`project-agent-detail-notice`,role:`status`},ni={key:1,class:`employee-project-overview`,"aria-labelledby":`employee-project-overview-title`},ri={class:`employee-project-overview-heading`},ii={id:`employee-project-overview-title`},ai={key:0,class:`employee-assigned-projects`},oi={key:1,class:`employee-project-overview-hint`},si={class:`project-agent-detail-section is-responsibility`},ci={key:0,class:`project-agent-tags`},li={class:`project-agent-detail-source`,"data-detail-section":`tasks`},ui={class:`project-agent-detail-section`},di={class:`project-agent-section-heading`},fi={key:0,class:`project-agent-task-list`},pi=[`id`],mi={key:0},hi={key:1,class:`project-agent-inline-list`},gi={class:`project-agent-disclosure`,"data-task-details":``},_i=[`aria-label`],vi={class:`project-agent-section-heading`},yi=[`aria-label`],bi={class:`project-agent-execution-summary-table`},xi={class:`sr-only`},Si={scope:`col`},Ci={scope:`col`},wi={scope:`col`},Ti={scope:`col`},Ei={scope:`col`},Di={scope:`col`},Oi={scope:`col`},ki={scope:`row`},Ai={class:`project-agent-execution-worker`},ji=[`aria-label`],Mi={key:0},Ni=[`data-label`],Pi=[`data-label`],Fi=[`data-label`],Ii={key:0},Li={key:1},Ri=[`data-label`],zi=[`href`],Bi={key:1},Vi={class:`project-agent-reporter-label`},Hi=[`href`],Ui={key:1},Wi=[`data-label`],Gi=[`data-label`],Ki={key:1},qi={key:1,class:`project-agent-muted`},Ji=[`aria-label`],Yi={class:`project-agent-section-heading`},Xi={class:`project-agent-execution-summary-list`},Zi=[`aria-label`],Qi={key:1},$i={class:`project-agent-execution-summary-meta`},ea={key:0},ta={key:0},na={key:1},ra={key:2},ia={key:2},aa={key:3,class:`project-agent-routing-decision`},oa={class:`project-agent-section-heading`},sa={key:0},ca={key:1},la={key:2},ua={key:0},da={key:3},fa={key:0},pa={key:4},ma={class:`project-agent-execution-line`},ha={key:0},ga={key:1},_a={key:2},va={key:4},ya={key:5},ba={key:1,class:`project-agent-muted`},xa={class:`project-agent-disclosure`},Sa={class:`project-agent-detail-source`,"data-detail-section":`assignments`},Ca={class:`project-agent-detail-section`},wa={class:`project-agent-section-heading`},Ta={class:`project-agent-section-tools`},Ea={key:0,class:`project-agent-assignment-list`},Da={class:`project-agent-card-actions`},Oa=[`onClick`],ka=[`onClick`],Aa={key:0},ja={key:1,class:`project-agent-inline-list`},Ma={class:`project-agent-strategy-note`},Na={key:0},Pa={key:2,class:`project-agent-tags`},Fa={key:3},Ia={key:1,class:`project-agent-muted`},La={class:`project-agent-disclosure`},Ra={class:`project-agent-detail-source`,"data-detail-section":`activity`},za={class:`project-agent-detail-section`},Ba={class:`project-agent-section-heading`},Va={key:0},Ha={key:0,class:`project-agent-heatmap-wrap project-agent-heatmap-viewport`},Ua=[`aria-label`],Wa=[`aria-label`,`aria-pressed`,`onClick`],Ga={class:`sr-only`},Ka={key:0,class:`project-agent-day-detail`},qa={key:0,class:`project-agent-muted`},Ja={key:1},Ya={key:1,class:`project-agent-muted`},Xa={class:`project-agent-disclosure`},Za={class:`project-agent-detail-meta`},Qa={key:0},$a=[`open`],eo={class:`project-agent-detail-source`,"data-detail-section":`recruitment`},to={class:`project-agent-detail-section`,"aria-labelledby":`project-agent-recruitment-heading`},no={class:`project-agent-section-heading`},ro={id:`project-agent-recruitment-heading`},io={key:0,class:`project-agent-recruitment-list`},ao={class:`project-agent-card-actions`},oo=[`disabled`,`onClick`],so={key:1},co=[`disabled`,`onClick`],lo={key:1},uo={class:`project-agent-compact-meta`},fo={key:1,class:`project-agent-muted`},po={class:`project-agent-detail-source`,"data-detail-section":`executors`},mo={class:`project-agent-detail-section`},ho={class:`project-agent-section-heading`},go={class:`project-agent-muted`},_o={key:0,class:`project-agent-tags`},vo={key:1,class:`project-agent-blocked`},yo={key:2,class:`project-agent-muted`},bo={class:`project-agent-section-tools`},xo={key:3,class:`project-agent-executor-list`},So=[`onClick`],Co=[`disabled`,`onClick`],wo={key:1},To=[`disabled`,`onClick`],Eo={key:1},Do={class:`project-agent-detail-source`,"data-detail-section":`clients`},Oo={class:`project-agent-detail-section`},ko={class:`project-agent-section-heading`},Ao={key:0,class:`project-agent-client-list`},jo={key:0},Mo={key:1},No={key:2},Po={key:1,class:`project-agent-muted`},Fo={class:`project-agent-detail-source`,"data-detail-section":`routing`},Io={class:`project-agent-detail-section`},Lo={class:`project-agent-section-heading`},Ro={class:`project-agent-section-tools`},zo={key:0,class:`project-agent-rule-list`},Bo=[`disabled`,`onClick`],Vo={key:1},Ho={key:1,class:`project-agent-muted`},Uo={class:`project-agent-note`},Wo={class:`project-agent-detail-source`,"data-detail-section":`learning`},Go={class:`project-agent-detail-section`},Ko={class:`project-agent-section-heading`},qo={key:0,class:`project-agent-learning-list`},Jo={key:0},Yo={key:1,class:`project-agent-inline-list`},Xo={key:0},Zo={key:2,class:`project-agent-evidence-list`},Qo=[`disabled`,`onClick`],$o={key:1},es={key:3,class:`project-agent-learning-actions`},ts=[`disabled`,`onClick`],ns={key:1},rs={key:1,class:`project-agent-muted`},is={class:`project-agent-note`},as={key:1,class:`project-agent-detail-placeholder`},os=j(s({__name:`ProjectAgentsPage`,setup(i){let s=[`assignments`,`tasks`,`activity`,`recruitments`,`executors`,`routingRules`,`learning`],m=k(),y=M(),C=l([]),j=l(!1),ee=l(``),B=l(null),W=l(`all`),ie=l(``),Y=l(``);O(()=>y.query.agent,e=>{typeof e==`string`&&(Y.value=e)},{immediate:!0});let oe=l(!1),ue=l(!1),pe=l(``),ge=l(null),ve=l(!1),ye=l(`assign`),be=l(null),xe=l(!1),Se=l({}),Ce=l(``),we=l(``),Te=l(!1),Ee=l(``),De=l(``),X=l(``),Oe=l(``),ke=l(``),Ae=l(``),je=l(!1),Me=l(`executor`),Ne=l(null),Pe=l(null),Fe=0,Ie=0,Le=new Set([`awaiting_recruitment`,`queued`,`running`,`paused`,`awaiting_review`,`blocked`]);function Re(e){return`${e}:${typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}`}let ze=u(()=>m.state?.personalProjects??[]);async function Ve(e){await ct(),Xe.value.some(t=>t.agentId===e.agent.agentId)||(B.value=null,W.value=`all`,ie.value=``);let t=Y.value===e.agent.agentId;Y.value=e.agent.agentId,t&&$()}let Z=u(()=>m.activePersonalSpace?.id??``),He=u(()=>j.value||!m.state&&(m.runtimeStatus===`idle`||m.runtimeStatus===`loading`)),Ue=u(()=>ee.value||(!m.state&&m.runtimeStatus===`error`?m.feedback?.message||d(`projectAgents.loadError`):``));function We(){m.state?ct():m.refresh()}let Ge=u(()=>new Map(ze.value.map(e=>[e.project_id,e]))),Ke=u(()=>ze.value.map(e=>({id:e.project_id,name:e.profile.name}))),qe=u({get:()=>B.value??Ke.value.map(e=>e.id),set:e=>{let t=Ke.value.filter(t=>e.includes(t.id)).map(e=>e.id);B.value=t.length===Ke.value.length?null:t}}),Je=u(()=>B.value?.length===1?B.value[0]:``);O([()=>y.query.project,Ke],([e,t])=>{typeof e==`string`&&t.some(t=>t.id===e)&&(B.value=[e])},{immediate:!0});let Ye=u(()=>[{value:`all`,label:d(`projectAgents.status.all`)},{value:`active`,label:d(`projectAgents.status.active`)},{value:`inactive`,label:d(`projectAgents.status.inactive`)},{value:`archived`,label:d(`projectAgents.status.archived`)}]),Xe=u(()=>{let e=ie.value.trim().toLocaleLowerCase(b());return C.value.filter(e=>B.value===null||Ft(e).some(({id:e})=>B.value.includes(e))).filter(e=>W.value===`all`||e.profile.status===W.value).filter(t=>!e||Lt(t).toLocaleLowerCase(b()).includes(e)).sort(jt)}),Q=u(()=>Xe.value.find(e=>e.agentId===Y.value)??null),Ze=u(()=>Q.value?ne(Q.value):null),Qe=u(()=>L.value.find(e=>e.id===Ze.value)),$e=u(()=>Q.value?Ft(Q.value).filter(e=>Ge.value.get(e.id)?.profile.lifecycle!==`archived`):[]),et=u(()=>C.value.filter(({profile:e})=>e.status===`active`).length),tt=u(()=>C.value.reduce((e,t)=>e+Pt(t).length,0)),nt=u(()=>new Set(C.value.flatMap(e=>Pt(e).map(({personalProjectId:e})=>e))).size),rt=u(()=>Je.value?Je.value:Q.value?.assignments?.find(({status:e})=>e===`active`)?.personalProjectId??Q.value?.personalProjectId??ze.value[0]?.project_id??null),it=u(()=>Q.value?.activity??null),at=u(()=>it.value?.days.find(({date:e})=>e===we.value)??null),ot=u(()=>Object.entries(Q.value?.learningEvidence??{})),st=u(()=>Q.value?.recruitments??[]);a(()=>{m.runtimeStatus===`idle`&&m.refresh()}),O(Z,e=>{++Fe,++Ie,Se.value={},Y.value=``,C.value=[],B.value=typeof y.query.project==`string`&&Ke.value.some(e=>e.id===y.query.project)?[y.query.project]:null,ee.value=``,e?ct(e):j.value=!1},{immediate:!0}),O(Xe,e=>{if(!e.some(e=>e.agentId===Y.value)){let t=e.find(e=>e.agentId===y.query.agent||typeof y.query.agent==`string`&&e.legacyAgentIds?.includes(y.query.agent));Y.value=t?.agentId??e[0]?.agentId??``}e.some(e=>e.activity?.days.some(({date:e})=>e===we.value))||(we.value=``)},{immediate:!0}),O([Y,Z],([e,t])=>{we.value=``,e&&t&&$(e,t)},{immediate:!0});async function ct(e=Z.value){if(!e)return;let t=++Fe;j.value=!0,ee.value=``;try{let n=new URLSearchParams({personalSpaceId:e}),[r,i]=await Promise.allSettled([P(`/api/project-agents?${n}`),P(`/api/project-agent-tasks?${n}`)]);if(t!==Fe)return;if(R(e),r.status===`rejected`)throw r.reason;if(t===Fe){let e=qn(le(r.value)),t=i.status===`fulfilled`?Bn(i.value).filter(e=>Le.has(e.status)):[];C.value=jn(e,t)}}catch(e){t===Fe&&(ee.value=e instanceof Error?e.message:d(`projectAgents.loadError`))}finally{t===Fe&&(j.value=!1)}}async function $(e=Y.value,t=Z.value){let n=C.value.find(t=>t.agentId===e);if(!n||!t)return;let r=++Ie;xe.value=!0,Ce.value=``,dt(e,`loading`);let i=new URLSearchParams({personalSpaceId:t,agentId:e}),a=he(),o=new URLSearchParams({personalSpaceId:t,agentId:e,fromDate:a.fromDate,toDate:a.toDate}),c={assignments:P(`/api/project-agent-assignments?${i}`),tasks:lt(i),activity:P(`/api/project-agent-activity?${o}`),recruitments:P(`/api/project-agent-recruitments?personalSpaceId=${encodeURIComponent(t)}`),executors:P(`/api/executors?personalSpaceId=${encodeURIComponent(t)}`),routingRules:P(`/api/executor-routing-rules?personalSpaceId=${encodeURIComponent(t)}`),learning:P(`/api/project-agent-routing-learning?${i}`)};await Promise.all(s.map(async i=>{try{let a=await c[i];if(!gt(r,e,t))return;_t(n,i,a),ft(e,i,{status:`ready`,error:``})}catch(n){if(!gt(r,e,t))return;ft(e,i,{status:`error`,error:n instanceof Error?n.message:d(`projectAgents.detail.sectionUnavailable`)})}})),gt(r,e,t)&&(xe.value=!1)}async function lt(e){let t=typeof y.query.project==`string`?y.query.project:``,n=typeof y.query.task==`string`?y.query.task:``;t&&(e=new URLSearchParams([...e,[`personalProjectId`,t]]));let r=await P(`/api/project-agent-tasks?${e}`);if(!n||!t)return r;let i=Bn(r);if(!i.some(e=>e.taskId===n)){let r=ae(await P(`/api/project-agent-tasks/${encodeURIComponent(n)}?${e}`));r&&r.personalProjectId===t&&r.participants.some(t=>t.agentId===e.get(`agentId`))&&i.unshift(r)}return i}O([()=>y.query.task,xe],async([t,n])=>{n||typeof t!=`string`||(await e(),document.getElementById(`task-${t}`)?.scrollIntoView?.({block:`nearest`}))});function ut(e=`idle`){return Object.fromEntries(s.map(t=>[t,{status:e,error:``}]))}function dt(e,t){Se.value={...Se.value,[e]:ut(t)}}function ft(e,t,n){Se.value={...Se.value,[e]:{...Se.value[e]??ut(),[t]:n}}}function pt(e){let t=(Array.isArray(e)?e:[e]).map(e=>Se.value[Y.value]?.[e]??{status:`idle`,error:``});return t.find(({status:e})=>e===`error`)??t.find(({status:e})=>e===`loading`)??t.find(({status:e})=>e===`idle`)??{status:`ready`,error:``}}function mt(e){return d(`projectAgents.detail.loading.`+e)}function gt(e,t,n){return e===Ie&&t===Y.value&&n===Z.value}function _t(e,t,n){let r;switch(t){case`assignments`:vt(n,[`assignments`,`items`]),r={assignments:Fn(n,e)};break;case`tasks`:vt(n,[`tasks`,`items`]),r={tasks:Bn(n)};break;case`activity`:{let e=_e(n,{agentId:Y.value,personalSpaceId:Z.value});if(!e)throw Error(d(`projectAgents.detail.sectionUnavailable`));r={activity:e};break}case`recruitments`:vt(n,[`recruitments`,`items`]),r={recruitments:Hn(n).filter(t=>Un(t,e))};break;case`executors`:vt(n,[`executors`,`items`]),r={executorDirectory:Ln(n),clientEvidence:Wn(n)};break;case`routingRules`:vt(n,[`rules`,`items`]),r={routingRules:Gn(n)};break;case`learning`:vt(n,[`learningEvidence`,`learning_evidence`,`items`],!0),r={learningEvidence:Kn(n)};break}C.value=C.value.map(t=>t.agentId===e.agentId?{...t,...r}:t)}function vt(e,t,n=!1){if(Array.isArray(e))return;let r=K(e);if(!t.some(e=>Array.isArray(r[e])||n&&yt(r[e])))throw Error(d(`projectAgents.detail.sectionUnavailable`))}function yt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function bt(e,t,n){let r=t===`ignore`?n:e.learningKey??e.modelStrategyKey,i=Q.value;if(!(!r||!i||!Z.value||Ee.value)){if(t===`reset`&&(!e.personalProjectId||!e.workKind||!e.executor)){Ce.value=d(`projectAgents.learning.resetUnavailable`);return}Ee.value=r,De.value=t;try{await F(`/api/project-agent-learning/${encodeURIComponent(r)}`,{action:t,personalSpaceId:Z.value,personalProjectId:e.personalProjectId,agentId:i.agentId,workKind:e.workKind,executorId:e.executor,modelStrategy:e.modelStrategy,modelStrategyKey:e.modelStrategyKey,resetAt:t===`reset`?new Date().toISOString():void 0,idempotencyKey:t===`ignore`?`console-learning:${r}:ignore`:Re(`console-learning:${r}:reset`),reason:`Console requested ${t} for explicit evidence`}),await $()}catch(e){Ce.value=e instanceof Error?e.message:d(`projectAgents.learning.updateFailed`)}finally{Ee.value=``,De.value=``}}}async function xt(e,t){if(!(!Z.value||X.value)){X.value=e.recruitmentId,Oe.value=t;try{await te(`/api/project-agent-recruitments/decision`,{personalSpaceId:Z.value,personalProjectId:e.personalProjectId,recruitmentId:e.recruitmentId,expectedRevision:e.revision??0,decision:t,reason:d(`projectAgents.recruitment.${t}Reason`)}),await $()}catch(e){Ce.value=e instanceof Error?e.message:d(`projectAgents.recruitment.decisionFailed`)}finally{X.value=``,Oe.value=``}}}async function St(e,t){if(!(!Z.value||ke.value)){ke.value=e.executorId,Ae.value=t===`authorized`?`authorize`:`revoke`;try{await te(`/api/executors/authorization`,{personalSpaceId:Z.value,executorId:e.executorId,status:t,expectedRevision:e.permissionRevision??0,idempotencyKey:Re(`console-executor:${e.executorId}:${t}`),reason:d(`projectAgents.routing.${t===`authorized`?`authorizeReason`:`revokeReason`}`)}),await $()}catch(e){Ce.value=e instanceof Error?e.message:d(`projectAgents.routing.authorizationFailed`)}finally{ke.value=``,Ae.value=``}}}function Ct(e=null){Me.value=`executor`,Ne.value=e,Pe.value=null,je.value=!0}function wt(e=null){Me.value=`rule`,Pe.value=e,Ne.value=null,je.value=!0}function Tt(){je.value=!1,Ne.value=null,Pe.value=null}function Et(e){Q.value&&(C.value=C.value.map(t=>t.agentId===Q.value?.agentId?{...t,executorDirectory:Jn([...t.executorDirectory??[],e],({executorId:e})=>e)}:t),Tt())}function Dt(e){Q.value&&(C.value=C.value.map(t=>t.agentId===Q.value?.agentId?{...t,routingRules:Jn([...t.routingRules??[],e],({ruleId:e})=>e)}:t),Tt())}function Ot(e){Me.value===`executor`?Et(e):Dt(e)}async function kt(e){if(!(!Z.value||!e.ruleId||X.value)){X.value=`rule:${e.ruleId}`,Oe.value=`disable`;try{await F(`/api/executor-routing-rules/${encodeURIComponent(e.ruleId)}`,{personalSpaceId:Z.value,ruleId:e.ruleId,expectedRevision:e.revision??0,status:`disabled`,idempotencyKey:`console-rule:${e.ruleId}:disable`,reason:`Console disabled explicit routing rule`}),await $()}catch(e){Ce.value=e instanceof Error?e.message:d(`projectAgents.routing.updateFailed`)}finally{X.value=``,Oe.value=``}}}async function At(e){if(e.profile.cleanupEligible){Te.value=!0,xe.value=!0;try{await I(`/api/project-agents/${encodeURIComponent(e.agentId)}?personalSpaceId=${encodeURIComponent(e.personalSpaceId)}&reason=archived%20test%20role`),await ct()}catch(e){Ce.value=e instanceof Error?e.message:d(`projectAgents.source.cleanupFailed`)}finally{Te.value=!1,xe.value=!1}}}function jt(e,t){let n={active:0,inactive:1,archived:2};return n[e.profile.status]-n[t.profile.status]||e.profile.name.localeCompare(t.profile.name,b())||e.agentId.localeCompare(t.agentId,b())}function Mt(e){return e?Ge.value.get(e)?.profile.name??e:d(`projectAgents.notReported`)}function Nt(e){return e.assignments??(e.personalProjectId?[It(e)]:[])}function Pt(e){return[...new Map(Nt(e).filter(e=>e.status===`active`).map(e=>[e.personalProjectId,e])).values()]}function Ft(e){let t=ne(e);return(t?L.value.find(e=>e.id===t):void 0)?.managedProjects??Pt(e).map(e=>({id:e.personalProjectId,name:Mt(e.personalProjectId)}))}function It(e){return{assignmentId:`legacy:${e.agentId}:${e.personalProjectId}`,personalSpaceId:e.personalSpaceId,personalProjectId:e.personalProjectId??``,agentId:e.agentId,responsibility:e.profile.responsibility,capabilities:e.profile.capabilities,status:e.profile.status===`active`?`active`:`ended`,assignedAt:e.createdAt,updatedAt:e.updatedAt,reason:null}}function Lt(e){return[e.agentId,e.profile.name,e.profile.displayName??``,e.profile.occupationEmoji??``,e.profile.responsibility,...e.profile.capabilities??[],...e.profile.workKinds??[],...Nt(e).flatMap(e=>[e.personalProjectId,e.responsibility,e.scope??``,...e.workKinds??[]]),...(e.tasks??[]).flatMap(e=>[e.taskId,e.title,e.workKind??``])].join(` `)}function Rt(){ge.value=null,oe.value=!0}function zt(e=``){pe.value=e,ue.value=!0}function Vt(e){ge.value=e,oe.value=!0}function Ht(){oe.value=!1,ge.value=null}function Ut(e,t=null,n=`assign`){let r=ne(e);if(n===`assign`&&r){zt(r);return}ge.value=e,be.value=t,ye.value=n,ve.value=!0}function Gt(){ve.value=!1,be.value=null,ye.value=`assign`}function Kt(e){ge.value&&(C.value=C.value.map(t=>t.agentId===ge.value?.agentId?{...t,assignments:Jn([...t.assignments??[],e],({assignmentId:e})=>e)}:t),Y.value=ge.value.agentId,Gt())}function qt(){Gt(),$()}function Jt(e){let t=Mn(e),n=C.value.filter(e=>!(e.agentId===t.agentId&&t.personalProjectId&&e.personalProjectId===t.personalProjectId));C.value=qn([...n,t]),t.personalProjectId&&(B.value=[t.personalProjectId]),W.value=`all`,ie.value=``,Y.value=t.agentId,m.notify(d(`projectAgents.saved`))}function Yt(e){if(!e)return d(`projectAgents.notReported`);let t=new Date(e);return Number.isNaN(t.valueOf())?d(`projectAgents.notReported`):new Intl.DateTimeFormat(b(),{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`}).format(t)}function Xt(e){if(!e)return d(`projectAgents.notReported`);let t=new Date(`${e}T00:00:00Z`);return Number.isNaN(t.valueOf())?e:new Intl.DateTimeFormat(b(),{month:`short`,day:`numeric`}).format(t)}function Zt(e){return e?.mode??`adaptive`}function $t(e){return e?.mode??`flexible`}function en(e){return e?.mode===`locked`}function tn(e){return e?e.allowList?.length?e.allowList:((e.mode===`locked`?e.lockedExecutorIds:e.preferredExecutorIds)??[]).map(e=>({executorId:e})):[]}function nn(e){if(e.actualExecution)return e.actualExecution;let t=[...e.events??[]].reverse().find(e=>e.actualExecution);return t?se(t):null}function rn(e){return e.workerLabel&&e.workerId&&e.workerLabel!==e.workerId?`${e.workerLabel} · ${e.workerId}`:e.workerLabel||e.workerId||d(`projectAgents.notReported`)}function an(e){return e.workerOccupationEmoji||``}function on(e){return un(e.workerStatus||e.status)}function cn(e){return e.workerLabel||e.agentName||e.workerId||e.agentId||d(`projectAgents.notReported`)}function ln(e){return e.workerOccupationEmoji||e.occupationEmoji||``}function un(e){return e?vn(e):d(`projectAgents.notReported`)}function dn(e){if(!e)return d(`projectAgents.notReported`);let t=`projectAgents.participantRoles.${e}`,n=d(t);return n===t?e:n}function fn(e){return d(`projectAgents.tokenSources.${e}`)}function pn(e){return e?`${new Intl.NumberFormat(b()).format(e.totalTokens)} Token · ${fn(e.source)}`:d(`projectAgents.notReported`)}function mn(e){return hn(e.workerRuntime?e.workerRuntime.sessionUrl:e.sourceSessionUrl)}function hn(e){let t=e?.trim();if(!t)return null;try{let e=new URL(t);if(e.username||e.password||e.search||e.hash)return null;if(e.protocol===`https:`||e.protocol===`http:`&&[`127.0.0.1`,`localhost`,`[::1]`].includes(e.hostname)||e.protocol===`codex:`&&e.hostname===`threads`&&e.pathname!==`/`)return t}catch{return null}return null}function gn(e){return e.workerRuntime?e.workerRuntime.sessionId:e.sourceSessionId}function _n(e){return(e.tasks??[]).find(e=>Le.has(e.status))??null}function vn(e){let t=`projectAgents.taskStatus.${e}`,n=d(t);return n===t?e:n}function yn(e){return d(`projectAgents.agentType.${e??`durable`}`)}function bn(e){return d(e?`projectAgents.clients.${e}`:`projectAgents.notReported`)}function xn(e){return Yn([...e.profile.allowedClients??[],...e.observedClients??[],...(e.clientEvidence??[]).map(({client:e})=>e)])}function Sn(e,t){return e.clientEvidence?.find(e=>e.client===t)}function Cn(e,t){return Sn(e,t)?.actualUse?.count??0}function wn(e){return e.neutral!==!1||e.sampleCount<=0}function Tn(e){return wn(e)?d(`projectAgents.learning.neutral`):d(`projectAgents.learning.recorded`)}function En(e){return e.recentWeightedSamples??d(`projectAgents.notReported`)}function Dn(e){return e.score??``}function On(e,t){let n=Math.max(...t.days.map(({total:e})=>e),0);return!n||!e.total?0:Math.min(4,Math.ceil(e.total/n*4))}function kn(e){we.value=e.date}function An(e,t){return t.ownerAgentId===e.agentId||t.leadAgentId===e.agentId||t.coordinatorAgentId===e.agentId||t.participants.some(t=>t.agentId===e.agentId)}function jn(e,t){return e.map(e=>{let n=t.filter(t=>An(e,t));return n.length?{...e,tasks:Jn([...e.tasks??[],...n],({taskId:e})=>e)}:e})}function Mn(e){let t=K(e),n=K(t.profile),r=q(t,`agentId`,`agent_id`)??``,i=q(t,`createdAt`,`created_at`)??``,a=q(t,`updatedAt`,`updated_at`)??i,o={name:q(n,`name`,`name`)??r,displayName:q(n,`displayName`,`display_name`),responsibility:q(n,`responsibility`,`responsibility`)??``,capabilities:J(n.capabilities).filter(e=>typeof e==`string`),initialPreferences:J(G(n,`initialPreferences`,`initial_preferences`)).filter(e=>typeof e==`string`),status:q(n,`status`,`status`)??`active`,occupationEmoji:q(n,`occupationEmoji`,`occupation_emoji`),agentType:q(n,`agentType`,`agent_type`),workKinds:J(G(n,`workKinds`,`work_kinds`)).filter(e=>typeof e==`string`),defaultModelStrategy:U(G(n,`defaultModelStrategy`,`default_model_strategy`)),executorPolicy:ce(G(n,`executorPolicy`,`executor_policy`)),allowedClients:J(G(n,`allowedClients`,`allowed_clients`)).filter(e=>typeof e==`string`),character:{judgment:String(K(n.character).judgment??``),taste:String(K(n.character).taste??``),personality:String(K(n.character).personality??``)},expectations:q(n,`expectations`,`expectations`)??``,testSource:q(n,`testSource`,`test_source`),cleanupEligible:G(n,`cleanupEligible`,`cleanup_eligible`)===!0},s={agentId:r,personalSpaceId:q(t,`personalSpaceId`,`personal_space_id`)??Z.value,personalProjectId:q(t,`personalProjectId`,`personal_project_id`),profile:o,createdAt:i,updatedAt:a};return{...s,memoryScope:q(t,`memoryScope`,`memory_scope`)??void 0,assignments:Array.isArray(t.assignments)?t.assignments.map(e=>H(e,s)).filter(Boolean):void 0,legacyAgentIds:J(t.legacyAgentIds??t.legacy_agent_ids).filter(e=>typeof e==`string`),recruitments:Hn(t.recruitments??t.recruitmentHistory).filter(e=>Un(e,s)),recruitmentId:q(t,`recruitmentId`,`recruitment_id`),temporaryTaskId:q(t,`temporaryTaskId`,`temporary_task_id`),workStatus:q(t,`workStatus`,`work_status`),openTaskCount:typeof t.openTaskCount==`number`?t.openTaskCount:typeof t.open_task_count==`number`?t.open_task_count:void 0,currentTaskId:q(t,`currentTaskId`,`current_task_id`),observedClients:J(t.observedClients??t.observed_clients).filter(e=>typeof e==`string`),recruitedAt:q(t,`recruitedAt`,`recruited_at`),recruitmentReason:q(t,`recruitmentReason`,`recruitment_reason`),recruitmentSourceApplication:q(t,`recruitmentSourceApplication`,`recruitment_source_application`),isTestRole:!!o.testSource||o.cleanupEligible||t.isTestRole===!0||t.is_test_role===!0,tasks:J(t.tasks??t.taskHistory).map(ae).filter(Boolean),activity:_e(t.activity,{agentId:Y.value,personalSpaceId:Z.value}),clientEvidence:Wn(t.clientEvidence??t.client_evidence),routingRules:Gn(t.routingRules??t.routing_rules),learningEvidence:zn(t.learningEvidence??t.learning_evidence)}}function Nn(e){let t=K(e),n=q(t,`client`,`client`);if(!n)return null;let r=K(G(t,`actualUse`,`actual_use`));return{client:n,allowed:t.allowed===!0,integrationStatus:q(t,`integrationStatus`,`integration_status`)??void 0,actualUse:Object.keys(r).length?{count:typeof r.count==`number`?r.count:0,lastUsedAt:q(r,`lastUsedAt`,`last_used_at`)}:null}}function Fn(e,t){let n=K(e);return J(Array.isArray(e)?e:n.assignments??n.items).map(e=>H(e,t)).filter(e=>!!e)}function In(e){let t=K(e),n=q(t,`provider`,`provider`),r=q(t,`model`,`model`);return!n||!r?null:{provider:n,model:r,capabilities:J(t.capabilities).filter(e=>typeof e==`string`),available:typeof t.available==`boolean`?t.available:void 0,strategyModes:J(G(t,`strategyModes`,`strategy_modes`)).filter(e=>typeof e==`string`),reasoningEfforts:J(G(t,`reasoningEfforts`,`reasoning_efforts`)).filter(e=>typeof e==`string`),observedAt:q(t,`observedAt`,`observed_at`),unavailableReason:q(t,`unavailableReason`,`unavailable_reason`)}}function Ln(e){let t=K(e);return J(Array.isArray(e)?e:t.executors??t.items).map(e=>{let t=K(e),n=q(t,`executorId`,`executor_id`);if(!n)return null;let r=K(G(t,`actualUse`,`actual_use`));return{executorId:n,label:q(t,`label`,`label`),provider:q(t,`provider`,`provider`),model:q(t,`model`,`model`),client:q(t,`client`,`client`),availabilityStatus:q(t,`availabilityStatus`,`availability_status`),personalSpaceId:q(t,`personalSpaceId`,`personal_space_id`),displayName:q(t,`displayName`,`display_name`),executorKind:q(t,`executorKind`,`executor_kind`),capabilities:J(G(t,`capabilities`,`capabilities`)).filter(e=>typeof e==`string`),globalPriority:typeof G(t,`globalPriority`,`global_priority`)==`number`?G(t,`globalPriority`,`global_priority`):null,healthRequired:G(t,`healthRequired`,`health_required`)===!0,registrationStatus:q(t,`registrationStatus`,`registration_status`),permissionStatus:q(t,`permissionStatus`,`permission_status`),preflightStatus:q(t,`preflightStatus`,`preflight_status`),healthStatus:q(t,`healthStatus`,`health_status`),workspacePermission:typeof G(t,`workspacePermission`,`workspace_permission`)==`boolean`?G(t,`workspacePermission`,`workspace_permission`):null,revision:typeof t.revision==`number`?t.revision:void 0,permissionRevision:typeof G(t,`permissionRevision`,`permission_revision`)==`number`?G(t,`permissionRevision`,`permission_revision`):void 0,registeredAt:q(t,`registeredAt`,`registered_at`),updatedAt:q(t,`updatedAt`,`updated_at`),testSource:q(t,`testSource`,`test_source`),cleanupEligible:G(t,`cleanupEligible`,`cleanup_eligible`)===!0,advertisedModels:J(G(t,`advertisedModels`,`advertised_models`)).map(In).filter(e=>e!==null),availableModels:J(G(t,`availableModels`,`available_models`)).map(In).filter(e=>e!==null),actualUse:Object.keys(r).length?{count:typeof r.count==`number`?r.count:0,lastUsedAt:q(r,`lastUsedAt`,`last_used_at`)}:null}}).filter(e=>e!==null)}function Rn(e){let t=K(e),n=q(t,`ruleId`,`rule_id`);if(!n)return null;let r=q(t,`status`,`status`);return{ruleId:n,scope:q(t,`scope`,`scope`)??`global`,priority:typeof t.priority==`number`?t.priority:0,personalProjectId:q(t,`personalProjectId`,`personal_project_id`),taskId:q(t,`taskId`,`task_id`),workKind:q(t,`workKind`,`work_kind`),agentId:q(t,`agentId`,`agent_id`),enabled:t.enabled!==!1&&(!r||r===`active`),executorIds:J(G(t,`executorIds`,`executor_ids`)).filter(e=>typeof e==`string`),requiredCapabilities:J(G(t,`requiredCapabilities`,`required_capabilities`)).filter(e=>typeof e==`string`),modelStrategy:U(G(t,`modelStrategy`,`model_strategy`)),reason:q(t,`reason`,`reason`),revision:typeof t.revision==`number`?t.revision:void 0,status:r??void 0,createdAt:q(t,`createdAt`,`created_at`),updatedAt:q(t,`updatedAt`,`updated_at`)}}function zn(e){let t=K(e),n=Array.isArray(e)?e:t.learningEvidence??t.learning_evidence??t.items,r=(Array.isArray(n)?n:Object.values(K(n))).map((e,t)=>{let n=K(e),r=q(n,`personalProjectId`,`personal_project_id`),i=q(n,`workKind`,`work_kind`),a=q(n,`executorId`,`executor_id`)??q(n,`executor`,`executor`),o=U(G(n,`modelStrategy`,`model_strategy`)),s=q(n,`modelStrategyKey`,`model_strategy_key`),c=s??[r,i,a,String(t)].filter(Boolean).join(`:`),l=J(G(n,`evidenceContributions`,`evidence_contributions`)).map(e=>{let t=K(e),n=q(t,`signal`,`signal`),r=q(t,`evidenceKind`,`evidence_kind`)??`evidence`,i=typeof G(t,`decayWeight`,`decay_weight`)==`number`?G(t,`decayWeight`,`decay_weight`):null;return{evidenceId:q(t,`evidenceId`,`evidence_id`)??void 0,kind:r,count:typeof t.value==`number`?t.value:void 0,summary:n?`${n}${i===null?``:` · ${i.toFixed(3)}`}`:null,occurredAt:q(t,`occurredAt`,`occurred_at`)}}),u=typeof G(n,`weightedSuccess`,`weighted_success`)==`number`?G(n,`weightedSuccess`,`weighted_success`):0,d=typeof G(n,`weightedFailure`,`weighted_failure`)==`number`?G(n,`weightedFailure`,`weighted_failure`):0,f=G(n,`halfLife`,`decay_half_life_days`);return[c,{learningKey:c,personalProjectId:r,workKind:i,executor:a,modelStrategy:o,modelStrategyKey:s,sampleCount:typeof G(n,`sampleCount`,`sample_count`)==`number`?G(n,`sampleCount`,`sample_count`):0,recentWeightedSamples:typeof G(n,`recentCount`,`recent_count`)==`number`?G(n,`recentCount`,`recent_count`):null,decayBasis:typeof f==`number`?`half-life ${f}d`:null,updatedAt:q(n,`asOf`,`as_of`)??q(n,`updatedAt`,`updated_at`),outcomes:{success:typeof G(n,`successCount`,`success_count`)==`number`?G(n,`successCount`,`success_count`):void 0,rework:typeof G(n,`reworkCount`,`rework_count`)==`number`?G(n,`reworkCount`,`rework_count`):void 0,failure:typeof G(n,`failureCount`,`failure_count`)==`number`?G(n,`failureCount`,`failure_count`):void 0,scoreCount:typeof G(n,`ratingCount`,`rating_count`)==`number`?G(n,`ratingCount`,`rating_count`):void 0},evidence:l,score:u-d,neutral:G(n,`neutralDueToInsufficientEvidence`,`neutral_due_to_insufficient_evidence`)===!0}]});return Object.fromEntries(r)}function Bn(e){let t=K(e);return J(Array.isArray(e)?e:t.tasks??t.items).map(ae).filter(Boolean)}function Vn(e){let t=K(e),n=q(t,`recruitmentId`,`recruitment_id`);return n?{recruitmentId:n,personalSpaceId:q(t,`personalSpaceId`,`personal_space_id`)??Z.value,personalProjectId:q(t,`personalProjectId`,`personal_project_id`)??``,taskId:q(t,`taskId`,`task_id`)??``,coordinatorAgentId:q(t,`coordinatorAgentId`,`coordinator_agent_id`)??``,hrAgentId:q(t,`hrAgentId`,`hr_agent_id`),positionKind:q(t,`positionKind`,`position_kind`)??`durable`,workKind:q(t,`workKind`,`work_kind`)??``,requiredCapabilities:J(G(t,`requiredCapabilities`,`required_capabilities`)).filter(e=>typeof e==`string`),reasonCode:q(t,`reasonCode`,`reason_code`)??``,reason:q(t,`reason`,`reason`)??``,status:q(t,`status`,`status`)??`unknown`,confirmationMode:q(t,`confirmationMode`,`confirmation_mode`),proposedAgentId:q(t,`proposedAgentId`,`proposed_agent_id`)??``,revision:typeof t.revision==`number`?t.revision:void 0,recruitedAgentId:q(t,`recruitedAgentId`,`recruited_agent_id`),triggerSourceApplication:q(t,`triggerSourceApplication`,`trigger_source_application`),triggerSourceSessionId:q(t,`triggerSourceSessionId`,`trigger_source_session_id`),testSource:q(t,`testSource`,`test_source`),cleanupEligible:G(t,`cleanupEligible`,`cleanup_eligible`)===!0,createdAt:q(t,`createdAt`,`created_at`)??``,updatedAt:q(t,`updatedAt`,`updated_at`)??``,fulfilledAt:q(t,`fulfilledAt`,`fulfilled_at`)}:null}function Hn(e){let t=K(e);return J(Array.isArray(e)?e:t.recruitments??t.items).map(Vn).filter(e=>!!e)}function Un(e,t){return e.recruitedAgentId===t.agentId||e.proposedAgentId===t.agentId||e.recruitmentId===t.recruitmentId}function Wn(e){let t=K(e);return J(Array.isArray(e)?e:t.clients??t.executors??t.items).map(Nn).filter(Boolean)}function Gn(e){let t=K(e);return J(Array.isArray(e)?e:t.rules??t.items).map(Rn).filter(Boolean)}function Kn(e){let t=K(e);return zn(t.learningEvidence??t.learning_evidence??e)}function qn(e){let t=new Map;return e.map(Mn).forEach(e=>{let n=t.get(e.agentId);if(!n){t.set(e.agentId,e);return}let r=[...Nt(n),...Nt(e)],i=[...n.tasks??[],...e.tasks??[]];t.set(e.agentId,{...n,personalProjectId:n.personalProjectId??e.personalProjectId,profile:{...n.profile,occupationEmoji:n.profile.occupationEmoji??e.profile.occupationEmoji,capabilities:Yn([...n.profile.capabilities,...e.profile.capabilities]),workKinds:Yn([...n.profile.workKinds??[],...e.profile.workKinds??[]]),defaultModelStrategy:n.profile.defaultModelStrategy??e.profile.defaultModelStrategy,executorPolicy:n.profile.executorPolicy??e.profile.executorPolicy,allowedClients:Yn([...n.profile.allowedClients??[],...e.profile.allowedClients??[]])},assignments:Jn(r,({assignmentId:e})=>e),recruitments:Jn([...n.recruitments??[],...e.recruitments??[]],({recruitmentId:e})=>e),tasks:Jn(i,({taskId:e})=>e),activity:n.activity??e.activity,clientEvidence:n.clientEvidence?.length?n.clientEvidence:e.clientEvidence,routingRules:n.routingRules?.length?n.routingRules:e.routingRules,learningEvidence:{...e.learningEvidence??{},...n.learningEvidence??{}},observedClients:Yn([...n.observedClients??[],...e.observedClients??[]]),openTaskCount:Math.max(n.openTaskCount??0,e.openTaskCount??0)||void 0,currentTaskId:n.currentTaskId??e.currentTaskId,workStatus:n.workStatus??e.workStatus})}),[...t.values()]}function Jn(e,t){return[...new Map(e.map(e=>[t(e),e])).values()]}function Yn(e){return[...new Set(e)]}return(e,i)=>(o(),E(`section`,{class:`view project-agents-view`,"aria-label":x(d)(`projectAgents.aria`)},[w(`header`,yr,[w(`div`,null,[w(`h2`,null,f(x(d)(`projectAgents.title`)),1),!He.value&&!Ue.value?(o(),E(`p`,br,f(x(d)(`projectAgents.stats.total`,{count:C.value.length}))+` · `+f(x(d)(`projectAgents.stats.assignments`,{count:tt.value}))+` · `+f(x(d)(`projectAgents.stats.projects`,{count:nt.value})),1)):p(``,!0)]),w(`div`,xr,[w(`button`,{class:`quiet-button`,type:`button`,disabled:!Z.value,onClick:Rt},f(x(d)(`projectAgents.add`)),9,Sr),w(`button`,{class:`project-agent-add`,type:`button`,disabled:!Z.value,onClick:i[0]||=e=>zt()},f(x(d)(`employees.recruit`)),9,Cr)])]),T(me,{open:ue.value,"personal-space-id":Z.value,projects:ze.value,"template-id":pe.value,"default-project-ids":B.value??[],onClose:i[1]||=e=>ue.value=!1,onRecruited:Ve},null,8,[`open`,`personal-space-id`,`projects`,`template-id`,`default-project-ids`]),!He.value&&!Ue.value?(o(),E(`div`,wr,[w(`span`,null,f(x(d)(`projectAgents.stats.active`,{count:et.value})),1),w(`span`,null,f(x(d)(`projectAgents.stats.noOnlineClaim`)),1)])):p(``,!0),!He.value&&!Ue.value&&!ze.value.length?(o(),D(de,{key:1,"personal-space-id":Z.value},null,8,[`personal-space-id`])):p(``,!0),w(`div`,Tr,[T(fe,{modelValue:qe.value,"onUpdate:modelValue":i[2]||=e=>qe.value=e,class:`project-agents-project-filter`,compact:``,projects:Ke.value,label:x(d)(`employees.filterLabel`),hint:x(d)(`employees.filterHint`),"empty-label":x(d)(`employees.filterEmpty`)},null,8,[`modelValue`,`projects`,`label`,`hint`,`empty-label`]),w(`label`,Er,[w(`span`,Dr,f(x(d)(`projectAgents.searchLabel`)),1),r(w(`input`,{"onUpdate:modelValue":i[3]||=e=>ie.value=e,type:`search`,placeholder:x(d)(`projectAgents.searchPlaceholder`)},null,8,Or),[[h,ie.value]])]),w(`div`,{class:`project-agents-status-filter`,"aria-label":x(d)(`projectAgents.fields.status`)},[(o(!0),E(_,null,n(Ye.value,e=>(o(),E(`button`,{key:e.value,type:`button`,"aria-pressed":W.value===e.value,onClick:t=>W.value=e.value},f(e.label),9,Ar))),128))],8,kr)]),Je.value?(o(),D(Bt,{key:Je.value,"personal-space-id":Z.value,"personal-project-id":Je.value,"project-name":Mt(Je.value),agents:C.value,onSelect:i[4]||=e=>Y.value=e},null,8,[`personal-space-id`,`personal-project-id`,`project-name`,`agents`])):p(``,!0),He.value?(o(),D(A,{key:3,label:x(m).state?x(d)(`projectAgents.loading`):x(d)(`common.status.loadingConsole`)},null,8,[`label`])):Ue.value?(o(),E(`div`,jr,[w(`p`,null,f(Ue.value),1),w(`button`,{class:`quiet-button`,type:`button`,onClick:We},f(x(d)(`projectAgents.retry`)),1)])):C.value.length?Xe.value.length?(o(),E(`div`,Fr,[w(`div`,{class:`project-agent-list`,role:`list`,"aria-label":x(d)(`projectAgents.listLabel`)},[(o(!0),E(_,null,n(Xe.value,e=>(o(),E(`div`,{key:e.agentId,class:`project-agent-row-shell`},[w(`button`,{type:`button`,class:S([`project-agent-row`,{selected:Y.value===e.agentId}]),"aria-current":Y.value===e.agentId?`true`:void 0,onClick:t=>Y.value=e.agentId},[w(`span`,Rr,[e.profile.occupationEmoji?(o(),E(`span`,{key:0,class:`project-agent-occupation-emoji`,role:`img`,"aria-label":`${x(d)(`projectAgents.fields.occupationEmoji`)}: ${e.profile.occupationEmoji}`},f(e.profile.occupationEmoji),9,zr)):p(``,!0),w(`strong`,null,f(e.profile.displayName||e.profile.name),1),w(`i`,Br,f(yn(e.profile.agentType)),1),w(`i`,{class:S(`is-${e.profile.status}`)},f(x(d)(`projectAgents.status.${e.profile.status}`)),3)]),w(`span`,Vr,[(o(!0),E(_,null,n(Ft(e).slice(0,3),e=>(o(),E(`b`,{key:e.id},f(e.name),1))),128)),Ft(e).length>3?(o(),E(`b`,Hr,`+`+f(Ft(e).length-3),1)):p(``,!0),Ft(e).length?p(``,!0):(o(),E(`em`,Ur,f(x(d)(`employees.noAssignedProjects`)),1))]),w(`span`,Wr,f(e.profile.responsibility||x(d)(`projectAgents.notReported`)),1),w(`span`,Gr,[_n(e)?(o(),E(_,{key:0},[w(`i`,{class:S([`project-agent-work-dot`,{"is-live":_n(e).status===`running`}]),"aria-hidden":`true`},null,2),t(f(vn(_n(e).status))+` · `+f(_n(e).title),1)],64)):e.workStatus===`blocked`||e.workStatus===`queued`?(o(),E(_,{key:1},[t(f(vn(e.workStatus))+` · `+f(x(d)(`projectAgents.detail.stateReported`)),1)],64)):(o(),E(_,{key:2},[t(f(x(d)(`projectAgents.detail.noRun`)),1)],64))])],10,Lr),T(z,{"agent-id":e.agentId},null,8,[`agent-id`])]))),128))],8,Ir),Q.value?(o(),E(`aside`,{key:0,class:`project-agent-detail`,"aria-label":Q.value.profile.displayName||Q.value.profile.name},[w(`header`,null,[w(`div`,qr,[w(`h3`,null,[Q.value.profile.occupationEmoji?(o(),E(`span`,{key:0,class:`project-agent-occupation-emoji`,role:`img`,"aria-label":`${x(d)(`projectAgents.fields.occupationEmoji`)}: ${Q.value.profile.occupationEmoji}`},f(Q.value.profile.occupationEmoji),9,Jr)):p(``,!0),t(f(Q.value.profile.displayName||Q.value.profile.name)+` `,1),T(z,{"agent-id":Q.value.agentId},null,8,[`agent-id`])]),w(`p`,null,[t(f(yn(Q.value.profile.agentType)),1),Q.value.isTestRole?(o(),E(`span`,Yr,[t(` · `+f(x(d)(`projectAgents.source.testRole`)),1),Q.value.profile.testSource?(o(),E(`span`,Xr,` · `+f(Q.value.profile.testSource),1)):p(``,!0)])):p(``,!0)])]),w(`div`,Zr,[w(`button`,{class:`quiet-button`,type:`button`,disabled:xe.value,onClick:i[5]||=e=>$()},f(x(d)(`projectAgents.detail.refresh`)),9,Qr),w(`button`,{class:`quiet-button`,type:`button`,onClick:i[6]||=e=>Vt(Q.value)},f(x(d)(`projectAgents.edit`)),1),Q.value.profile.cleanupEligible?(o(),E(`button`,{key:0,class:`quiet-button`,type:`button`,disabled:xe.value,onClick:i[7]||=e=>At(Q.value)},[Te.value?(o(),D(A,{key:0,variant:`inline`,label:x(d)(`projectAgents.source.cleanupLoading`)},null,8,[`label`])):(o(),E(`span`,ei,f(x(d)(`projectAgents.source.cleanup`)),1))],8,$r)):p(``,!0)])]),Ce.value?(o(),E(`p`,ti,f(Ce.value),1)):p(``,!0),Ze.value?(o(),E(`section`,ni,[w(`div`,ri,[w(`div`,null,[w(`h4`,ii,f(Qe.value?.management?.mode===`all`?x(d)(`employees.scope.continuousAll`):x(d)(`employees.scope.label`)),1),w(`p`,null,f(x(d)(`employees.assignedCount`,{count:$e.value.length})),1)]),w(`button`,{class:`project-agent-add`,type:`button`,onClick:i[8]||=e=>zt(Ze.value)},f(x(d)(`employees.manageProjects`)),1)]),$e.value.length?(o(),E(`div`,ai,[(o(!0),E(_,null,n($e.value,e=>(o(),D(x(N),{key:e.id,to:`/employees/${encodeURIComponent(Ze.value)}?project=${encodeURIComponent(e.id)}`},{default:c(()=>[w(`span`,null,f(e.name),1),i[12]||=w(`svg`,{viewBox:`0 0 20 20`,width:`16`,height:`16`,"aria-hidden":`true`},[w(`path`,{d:`M4 10h12m-5-5 5 5-5 5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`})],-1)]),_:2},1032,[`to`]))),128))])):(o(),E(`p`,oi,f(x(d)(`employees.manageHint`)),1))])):p(``,!0),w(`section`,si,[w(`h4`,null,f(x(d)(`projectAgents.fields.responsibility`)),1),w(`p`,null,f(Q.value.profile.responsibility||x(d)(`projectAgents.notReported`)),1),Q.value.profile.capabilities.length?(o(),E(`div`,ci,[(o(!0),E(_,null,n(Q.value.profile.capabilities,e=>(o(),E(`span`,{key:e},f(e),1))),128))])):p(``,!0)]),w(`div`,li,[T(Wt,v(pt(`tasks`),{label:mt(`tasks`),onRetry:$}),{default:c(()=>[w(`section`,ui,[w(`div`,di,[w(`h4`,null,f(x(d)(`projectAgents.sections.tasks`)),1),w(`span`,null,f(Q.value.tasks?.length??0),1)]),Q.value.tasks?.length?(o(),E(`div`,fi,[(o(!0),E(_,null,n(Q.value.tasks,e=>(o(),E(`article`,{id:`task-${e.taskId}`,key:e.taskId,class:S([`project-agent-task-card`,{"is-linked":e.taskId===x(y).query.task}])},[w(`header`,null,[w(`div`,null,[w(`strong`,null,f(e.title),1),w(`small`,null,f(Mt(e.personalProjectId)),1)]),w(`i`,{class:S(`is-${e.status}`)},f(vn(e.status)),3)]),e.resultSummary||e.failureReason?(o(),E(`p`,mi,f(e.resultSummary||e.failureReason),1)):p(``,!0),w(`small`,null,f(x(d)(`projectAgents.fields.collaborators`))+` · `+f(e.participants.length),1),e.participants.length?(o(),E(`div`,hi,[(o(!0),E(_,null,n(e.participants,t=>(o(),E(`span`,{key:`${e.taskId}:${t.agentId}`},f(C.value.find(e=>e.agentId===t.agentId)?.profile.displayName||C.value.find(e=>e.agentId===t.agentId)?.profile.name||t.agentId)+` · `+f(dn(t.role)),1))),128))])):p(``,!0),T(Qt,{task:e,"project-name":Mt(e.personalProjectId)},null,8,[`task`,`project-name`]),w(`details`,gi,[w(`summary`,null,f(x(d)(`projectAgents.taskDetails`)),1),w(`small`,null,f(e.taskId),1),e.executionSummary===void 0?p(``,!0):(o(),E(`section`,{key:0,class:`project-agent-execution-summary`,"aria-label":x(d)(`projectAgents.fields.executionSummary`)},[w(`div`,vi,[w(`h5`,null,f(x(d)(`projectAgents.fields.executionSummary`)),1),w(`span`,null,f(e.executionSummary.length),1)]),e.executionSummary.length?(o(),E(`div`,{key:0,class:`project-agent-execution-summary-table-wrap`,role:`region`,tabindex:`0`,"aria-label":x(d)(`projectAgents.fields.executionSummary`)},[w(`table`,bi,[w(`caption`,xi,f(x(d)(`projectAgents.fields.executionSummary`)),1),w(`thead`,null,[w(`tr`,null,[w(`th`,Si,f(x(d)(`projectAgents.fields.worker`)),1),w(`th`,Ci,f(x(d)(`projectAgents.fields.workSummary`)),1),w(`th`,wi,f(x(d)(`projectAgents.fields.toolsUsed`)),1),w(`th`,Ti,f(x(d)(`projectAgents.fields.executionEnvironment`)),1),w(`th`,Ei,f(x(d)(`projectAgents.fields.sourceSession`)),1),w(`th`,Di,f(x(d)(`projectAgents.fields.tokenUsage`)),1),w(`th`,Oi,f(x(d)(`projectAgents.fields.terminalStatus`)),1)])]),w(`tbody`,null,[(o(!0),E(_,null,n(e.executionSummary,(n,r)=>(o(),E(`tr`,{key:e.taskId+`:execution:`+(n.workerId||n.agentId||r),class:`project-agent-execution-summary-row`},[w(`th`,ki,[w(`span`,Ai,[ln(n)?(o(),E(`span`,{key:0,class:`project-agent-occupation-emoji`,role:`img`,"aria-label":x(d)(`projectAgents.fields.occupationEmoji`)+`: `+ln(n)},f(ln(n)),9,ji)):p(``,!0),t(` `+f(cn(n)),1)]),n.agentId||n.workerId?(o(),E(`small`,Mi,f(n.workerId||n.agentId),1)):p(``,!0),w(`small`,null,f(dn(n.participantRole)),1)]),w(`td`,{"data-label":x(d)(`projectAgents.fields.workSummary`)},f(n.workSummary||x(d)(`projectAgents.notReported`)),9,Ni),w(`td`,{"data-label":x(d)(`projectAgents.fields.toolsUsed`)},f(n.toolsUsed?n.toolsUsed.join(` · `)||x(d)(`projectAgents.noToolsUsed`):x(d)(`projectAgents.notReported`)),9,Pi),w(`td`,{"data-label":x(d)(`projectAgents.fields.executionEnvironment`)},[w(`strong`,null,f(n.executor||x(d)(`projectAgents.notReported`)),1),n.executorId&&n.executorId!==n.executor?(o(),E(`small`,Ii,f(n.executorId),1)):p(``,!0),n.actualModelProvider||n.actualModel?(o(),E(`small`,Li,f([n.actualModelProvider,n.actualModel].filter(Boolean).join(` · `)),1)):p(``,!0)],8,Fi),w(`td`,{"data-label":x(d)(`projectAgents.fields.sourceSession`)},[w(`span`,null,[n.workerRuntime?(o(),E(_,{key:0},[t(f(x(d)(`projectAgents.fields.workerSession`))+` · `,1)],64)):p(``,!0),t(f(bn(n.workerRuntime?.application||n.sourceApplication)),1)]),mn(n)?(o(),E(`a`,{key:0,href:mn(n)||void 0,target:`_blank`,rel:`noreferrer`},f(gn(n)||mn(n)),9,zi)):(o(),E(`small`,Bi,f(gn(n)||x(d)(`projectAgents.notReported`)),1)),n.workerRuntime?(o(),E(_,{key:2},[w(`small`,Vi,f(x(d)(`projectAgents.fields.reporterSession`))+` · `+f(bn(n.sourceApplication)),1),hn(n.sourceSessionUrl)?(o(),E(`a`,{key:0,href:hn(n.sourceSessionUrl)||void 0,target:`_blank`,rel:`noreferrer`},f(n.sourceSessionId||n.sourceSessionUrl),9,Hi)):(o(),E(`small`,Ui,f(n.sourceSessionId||x(d)(`projectAgents.notReported`)),1))],64)):p(``,!0)],8,Ri),w(`td`,{"data-label":x(d)(`projectAgents.fields.tokenUsage`)},f(pn(n.tokenUsage)),9,Wi),w(`td`,{"data-label":x(d)(`projectAgents.fields.terminalStatus`)},[n.status?(o(),E(`i`,{key:0,class:S(`is-`+n.status)},f(un(n.status)),3)):(o(),E(`span`,Ki,f(x(d)(`projectAgents.notReported`)),1))],8,Gi)]))),128))])])],8,yi)):(o(),E(`p`,qi,f(x(d)(`projectAgents.detail.noExecutionSummary`)),1))],8,_i)),x(V)(e).length?(o(),E(`section`,{key:1,class:`project-agent-worker-event-evidence`,"aria-label":x(d)(`projectAgents.fields.workerEventEvidence`)},[w(`div`,Yi,[w(`h5`,null,f(x(d)(`projectAgents.fields.workerEventEvidence`)),1),w(`span`,null,f(x(V)(e).length),1)]),w(`ul`,Xi,[(o(!0),E(_,null,n(x(V)(e),n=>(o(),E(`li`,{key:`${e.taskId}:worker-event:${n.eventId}`,class:`project-agent-worker-event-row`},[w(`header`,null,[w(`strong`,null,[an(n)?(o(),E(`span`,{key:0,class:`project-agent-occupation-emoji`,role:`img`,"aria-label":`${x(d)(`projectAgents.fields.occupationEmoji`)}: ${an(n)}`},f(an(n)),9,Zi)):p(``,!0),t(f(rn(n)),1),n.agentId?(o(),E(`small`,Qi,f(x(d)(`projectAgents.fields.agentId`))+` · `+f(n.agentId),1)):p(``,!0)]),w(`i`,{class:S(`is-${n.workerStatus||n.status}`)},f(on(n)),3)]),w(`dl`,$i,[w(`div`,null,[w(`dt`,null,f(x(d)(`projectAgents.fields.workSummary`)),1),w(`dd`,null,f(n.summary||x(d)(`projectAgents.notReported`)),1)]),w(`div`,null,[w(`dt`,null,f(x(d)(`projectAgents.fields.sourceApplication`)),1),w(`dd`,null,f(bn(n.sourceApplication)),1)]),w(`div`,null,[w(`dt`,null,f(x(d)(`projectAgents.fields.sourceSession`)),1),w(`dd`,null,f(n.sourceSessionId||x(d)(`projectAgents.notReported`)),1)]),w(`div`,null,[w(`dt`,null,f(x(d)(`projectAgents.fields.tokenUsage`)),1),w(`dd`,null,f(pn(n.tokenUsage)),1)]),n.actualModelProvider||n.actualModel?(o(),E(`div`,ea,[w(`dt`,null,f(x(d)(`projectAgents.fields.actualModel`)),1),w(`dd`,null,[n.actualModelProvider?(o(),E(`span`,ta,f(n.actualModelProvider),1)):p(``,!0),n.actualModelProvider&&n.actualModel?(o(),E(`span`,na,` · `)):p(``,!0),n.actualModel?(o(),E(`span`,ra,f(n.actualModel),1)):p(``,!0)])])):p(``,!0),w(`div`,null,[w(`dt`,null,f(x(d)(`projectAgents.fields.reportedAt`)),1),w(`dd`,null,f(Yt(n.createdAt)),1)])])]))),128))])],8,Ji)):p(``,!0),e.effectiveModelStrategy?(o(),E(`small`,ia,f(x(d)(`projectAgents.fields.strategySource`))+` · `+f(e.modelStrategySource||x(d)(`projectAgents.notReported`))+` · `+f(Zt(e.effectiveModelStrategy))+` · `+f($t(e.effectiveExecutorPolicy)),1)):p(``,!0),e.routingDecision?(o(),E(`div`,aa,[w(`div`,oa,[w(`span`,null,f(x(d)(`projectAgents.fields.reportedStaffingDecision`)),1),w(`strong`,null,f(e.routingDecision.outcome||x(d)(`projectAgents.notReported`)),1)]),e.routingDecision.coordinatorAgentId||e.coordinatorAgentId?(o(),E(`small`,sa,f(x(d)(`projectAgents.fields.coordinator`))+` · `+f(e.routingDecision.coordinatorAgentId||e.coordinatorAgentId),1)):p(``,!0),w(`small`,null,f(x(d)(`projectAgents.fields.matchBasis`))+` · `+f(e.routingDecision.matchBasis?.join(` · `)||x(d)(`projectAgents.notReported`))+` · `+f(e.routingDecision.reason||x(d)(`projectAgents.notReported`)),1),e.routingDecision.candidateAgentIds?.length?(o(),E(`small`,ca,f(x(d)(`projectAgents.fields.candidateAgents`))+` · `+f(e.routingDecision.candidateAgentIds.join(` · `)),1)):p(``,!0),e.routingDecision.complexity!==null&&e.routingDecision.complexity!==void 0?(o(),E(`small`,la,[t(f(x(d)(`projectAgents.fields.complexity`))+` · `+f(e.routingDecision.complexity),1),e.routingDecision.complexityBasis?.length?(o(),E(`span`,ua,` · `+f(e.routingDecision.complexityBasis.join(` · `)),1)):p(``,!0)])):p(``,!0),x(re)(e.routingDecision.parallelPlan)?(o(),E(`small`,da,[t(f(x(d)(`projectAgents.fields.parallelPlan`))+` · `+f(e.routingDecision.parallelPlan?.reason||x(d)(`projectAgents.notReported`)),1),e.routingDecision.parallelPlan?.workstreamBoundaries?.length?(o(),E(`span`,fa,` · `+f(e.routingDecision.parallelPlan.workstreamBoundaries.join(` · `)),1)):p(``,!0)])):p(``,!0),e.routingDecision.ruleId||e.routingDecision.fallback?(o(),E(`small`,pa,f(e.routingDecision.ruleId||x(d)(`projectAgents.notReported`))+` · `+f(e.routingDecision.fallback||x(d)(`projectAgents.notReported`)),1)):p(``,!0)])):p(``,!0),w(`div`,ma,[w(`span`,null,f(x(d)(`projectAgents.fields.actualExecution`)),1),nn(e)?(o(),E(`strong`,ha,f(nn(e)?.executor||nn(e)?.provider||x(d)(`projectAgents.notReported`))+` / `+f(nn(e)?.model||x(d)(`projectAgents.notReported`))+` / `+f(bn(nn(e)?.client)),1)):(o(),E(`span`,ga,f(x(d)(`projectAgents.detail.notReportedActualExecution`)),1)),nn(e)?.rule||nn(e)?.fallback?(o(),E(`small`,_a,f(nn(e)?.rule||x(d)(`projectAgents.notReported`))+` · `+f(nn(e)?.fallback||x(d)(`projectAgents.notReported`)),1)):p(``,!0)]),e.runId?(o(),E(`small`,va,f(x(d)(`projectAgents.fields.run`))+` · `+f(e.runId),1)):(o(),E(`small`,ya,f(x(d)(`projectAgents.detail.noRun`)),1))])],10,pi))),128))])):(o(),E(`p`,ba,f(x(d)(`projectAgents.detail.noTasks`)),1))])]),_:1},16,[`label`])]),w(`details`,xa,[w(`summary`,null,f(x(d)(`projectAgents.sections.assignments`)),1),w(`div`,Sa,[T(Wt,v(pt(`assignments`),{label:mt(`assignments`),onRetry:$}),{default:c(()=>[w(`section`,Ca,[w(`div`,wa,[w(`h4`,null,f(x(d)(`projectAgents.sections.assignments`)),1),w(`div`,Ta,[w(`span`,null,f(Nt(Q.value).length),1),w(`button`,{class:`quiet-button`,type:`button`,onClick:i[9]||=e=>Ut(Q.value)},f(x(d)(`projectAgents.assignmentDialog.assign`)),1)])]),Nt(Q.value).length?(o(),E(`div`,Ea,[(o(!0),E(_,null,n(Nt(Q.value),e=>(o(),E(`article`,{key:e.assignmentId,class:`project-agent-assignment-card`},[w(`header`,null,[w(`strong`,null,f(Mt(e.personalProjectId)),1),w(`div`,Da,[w(`i`,{class:S(`is-${e.status}`)},f(x(d)(`projectAgents.assignmentStatus.${e.status}`)),3),e.status===`active`?(o(),E(`button`,{key:0,class:`quiet-button`,type:`button`,onClick:t=>Ut(Q.value,e,`end`)},f(x(d)(`projectAgents.assignmentDialog.end`)),9,Oa)):p(``,!0),e.status===`active`?(o(),E(`button`,{key:1,class:`quiet-button`,type:`button`,onClick:t=>Ut(Q.value,e,`replace`)},f(x(d)(`projectAgents.assignmentDialog.replace`)),9,ka)):p(``,!0)])]),w(`p`,null,f(e.responsibility||x(d)(`projectAgents.notReported`)),1),e.scope?(o(),E(`small`,Aa,f(x(d)(`projectAgents.fields.scope`))+` · `+f(e.scope),1)):p(``,!0),w(`small`,null,f(Yt(e.assignedAt))+` → `+f(e.endedAt?Yt(e.endedAt):x(d)(`projectAgents.assignmentStatus.${e.status}`)),1),e.workKinds?.length?(o(),E(`div`,ja,[(o(!0),E(_,null,n(e.workKinds,e=>(o(),E(`span`,{key:e},f(e),1))),128))])):p(``,!0),w(`div`,Ma,[w(`span`,null,f(x(d)(`projectAgents.fields.assignmentModel`)),1),w(`strong`,null,f(Zt(e.modelStrategyOverride))+` · `+f($t(e.executorPolicyOverride)),1),en(e.executorPolicyOverride)&&!tn(e.executorPolicyOverride).length?(o(),E(`small`,Na,f(x(d)(`projectAgents.strategy.lockedUnavailable`)),1)):p(``,!0)]),tn(e.executorPolicyOverride).length?(o(),E(`div`,Pa,[(o(!0),E(_,null,n(tn(e.executorPolicyOverride),e=>(o(),E(`span`,{key:e.executorId},f(e.label||e.executorId),1))),128))])):p(``,!0),e.reason?(o(),E(`small`,Fa,f(x(d)(`projectAgents.fields.reason`))+` · `+f(e.reason),1)):p(``,!0)]))),128))])):(o(),E(`p`,Ia,f(x(d)(`projectAgents.detail.noAssignments`)),1))])]),_:1},16,[`label`])])]),w(`details`,La,[w(`summary`,null,f(x(d)(`projectAgents.sections.activity`)),1),w(`div`,Ra,[T(Wt,v(pt(`activity`),{label:mt(`activity`),onRetry:$}),{default:c(()=>[w(`section`,za,[w(`div`,Ba,[w(`h4`,null,f(x(d)(`projectAgents.sections.activity`)),1),it.value?(o(),E(`span`,Va,f(it.value.days.length),1)):p(``,!0)]),it.value?.days.length?(o(),E(`div`,Ha,[w(`div`,{class:`project-agent-heatmap`,role:`list`,"aria-label":x(d)(`projectAgents.activity.aria`)},[(o(!0),E(_,null,n(it.value.days,e=>(o(),E(`button`,{key:e.date,type:`button`,role:`listitem`,class:S([`project-agent-heat-cell`,`intensity-${On(e,it.value)}`,{selected:we.value===e.date}]),"aria-label":`${Xt(e.date)} · ${e.total}`,"aria-pressed":we.value===e.date,onClick:t=>kn(e)},[w(`span`,Ga,f(Xt(e.date))+` · `+f(e.total),1)],10,Wa))),128))],8,Ua),at.value?(o(),E(`article`,Ka,[w(`header`,null,[w(`strong`,null,f(Xt(at.value.date)),1),w(`span`,null,f(at.value.total),1)]),at.value.tasks?.length?(o(),E(`ul`,Ja,[(o(!0),E(_,null,n(at.value.tasks,e=>(o(),E(`li`,{key:e.taskId},[w(`strong`,null,f(e.title),1),w(`span`,null,f(vn(e.status))+` · `+f(Mt(e.personalProjectId)),1),w(`small`,null,f(e.summary||x(d)(`projectAgents.notReported`)),1)]))),128))])):(o(),E(`p`,qa,f(x(d)(`projectAgents.activity.noTasks`)),1))])):p(``,!0)])):(o(),E(`p`,Ya,f(x(d)(`projectAgents.activity.empty`)),1))])]),_:1},16,[`label`])])]),Q.value.memoryScope===`reviewed_agent`?(o(),D(Pn,{key:Q.value.agentId,"personal-space-id":Z.value,"agent-id":Q.value.agentId,projects:$e.value},null,8,[`personal-space-id`,`agent-id`,`projects`])):p(``,!0),Q.value.memoryScope===`reviewed_agent`?(o(),D(sn,{key:3,"personal-space-id":Z.value,"agent-id":Q.value.agentId,projects:$e.value},null,8,[`personal-space-id`,`agent-id`,`projects`])):p(``,!0),w(`details`,Xa,[w(`summary`,null,f(x(d)(`projectAgents.profileDetails`)),1),w(`dl`,Za,[w(`div`,null,[w(`dt`,null,f(x(d)(`projectAgents.fields.assignments`)),1),w(`dd`,null,f(Pt(Q.value).length),1)]),w(`div`,null,[w(`dt`,null,f(x(d)(`projectAgents.fields.memoryScope`)),1),w(`dd`,null,f(Q.value.memoryScope??x(d)(`projectAgents.notReported`)),1)]),w(`div`,null,[w(`dt`,null,f(x(d)(`projectAgents.fields.status`)),1),w(`dd`,null,f(x(d)(`projectAgents.status.${Q.value.profile.status}`)),1)]),w(`div`,null,[w(`dt`,null,f(x(d)(`projectAgents.fields.recruitment`)),1),w(`dd`,null,[t(f(bn(Q.value.recruitmentSourceApplication)),1),Q.value.recruitmentReason?(o(),E(`small`,Qa,f(Q.value.recruitmentReason),1)):p(``,!0)])]),w(`div`,null,[w(`dt`,null,f(x(d)(`projectAgents.fields.updatedAt`)),1),w(`dd`,null,f(Yt(Q.value.updatedAt)),1)])])]),w(`details`,{class:`project-agent-disclosure`,open:st.value.some(e=>e.status===`awaiting_confirmation`)},[w(`summary`,null,f(x(d)(`projectAgents.sections.recruitment`)),1),w(`div`,eo,[T(Wt,v(pt(`recruitments`),{label:mt(`recruitments`),onRetry:$}),{default:c(()=>[w(`section`,to,[w(`div`,no,[w(`h4`,ro,f(x(d)(`projectAgents.sections.recruitment`)),1),w(`span`,null,f(st.value.length),1)]),st.value.length?(o(),E(`div`,io,[(o(!0),E(_,null,n(st.value,e=>(o(),E(`article`,{key:e.recruitmentId,class:`project-agent-recruitment-card`},[w(`header`,null,[w(`strong`,null,f(e.positionKind)+` · `+f(e.workKind||x(d)(`projectAgents.notReported`)),1),w(`div`,ao,[w(`i`,null,f(e.status),1),e.status===`awaiting_confirmation`?(o(),E(`button`,{key:0,class:`quiet-button`,type:`button`,disabled:!!X.value,onClick:t=>xt(e,`approve`)},[X.value===e.recruitmentId&&Oe.value===`approve`?(o(),D(A,{key:0,variant:`inline`,label:x(d)(`projectAgents.recruitment.approving`)},null,8,[`label`])):(o(),E(`span`,so,f(x(d)(`projectAgents.recruitment.approve`)),1))],8,oo)):p(``,!0),e.status===`awaiting_confirmation`?(o(),E(`button`,{key:1,class:`quiet-button`,type:`button`,disabled:!!X.value,onClick:t=>xt(e,`cancel`)},[X.value===e.recruitmentId&&Oe.value===`cancel`?(o(),D(A,{key:0,variant:`inline`,label:x(d)(`projectAgents.recruitment.cancelling`)},null,8,[`label`])):(o(),E(`span`,lo,f(x(d)(`projectAgents.recruitment.cancel`)),1))],8,co)):p(``,!0)])]),w(`dl`,uo,[w(`div`,null,[w(`dt`,null,f(x(d)(`projectAgents.recruitment.hr`)),1),w(`dd`,null,f(e.hrAgentId||x(d)(`projectAgents.notReported`)),1)]),w(`div`,null,[w(`dt`,null,f(x(d)(`projectAgents.recruitment.trigger`)),1),w(`dd`,null,f(bn(e.triggerSourceApplication)),1)]),w(`div`,null,[w(`dt`,null,f(x(d)(`projectAgents.recruitment.reason`)),1),w(`dd`,null,f(e.reason||e.reasonCode||x(d)(`projectAgents.notReported`)),1)]),w(`div`,null,[w(`dt`,null,f(x(d)(`projectAgents.recruitment.time`)),1),w(`dd`,null,f(Yt(e.fulfilledAt||e.createdAt)),1)])]),w(`small`,null,f(x(d)(`projectAgents.recruitment.testSource`))+` · `+f(e.testSource||x(d)(`projectAgents.notReported`)),1)]))),128))])):(o(),E(`p`,fo,f(x(d)(`projectAgents.recruitment.empty`)),1))])]),_:1},16,[`label`])])],8,$a),(o(),E(`details`,{key:`advanced:${Q.value.agentId}`,class:`project-agent-disclosure`,"data-agent-advanced":``},[w(`summary`,null,f(x(d)(`projectAgents.advanced`)),1),w(`div`,po,[T(Wt,v(pt(`executors`),{label:mt(`executors`),onRetry:$}),{default:c(()=>[w(`section`,mo,[w(`div`,ho,[w(`h4`,null,f(x(d)(`projectAgents.sections.strategy`)),1),w(`span`,null,f(Zt(Q.value.profile.defaultModelStrategy))+` · `+f($t(Q.value.profile.executorPolicy)),1)]),w(`p`,go,f(x(d)(`projectAgents.strategy.providerNeutral`)),1),tn(Q.value.profile.executorPolicy).length?(o(),E(`div`,_o,[(o(!0),E(_,null,n(tn(Q.value.profile.executorPolicy),e=>(o(),E(`span`,{key:e.executorId},f(e.label||e.executorId),1))),128))])):en(Q.value.profile.executorPolicy)?(o(),E(`p`,vo,f(x(d)(`projectAgents.strategy.lockedUnavailable`)),1)):(o(),E(`p`,yo,f(x(d)(`projectAgents.strategy.noAllowList`)),1)),w(`div`,bo,[w(`button`,{class:`quiet-button`,type:`button`,onClick:i[10]||=e=>Ct()},f(x(d)(`projectAgents.routing.addExecutor`)),1)]),Q.value.executorDirectory?.length?(o(),E(`div`,xo,[(o(!0),E(_,null,n(Q.value.executorDirectory,e=>(o(),E(`div`,{key:e.executorId,class:`project-agent-executor-row`},[w(`strong`,null,f(e.displayName||e.label||e.executorId),1),w(`span`,null,f(e.provider||x(d)(`projectAgents.notReported`))+` / `+f(e.model||x(d)(`projectAgents.notReported`)),1),w(`span`,null,f(e.globalPriority??x(d)(`projectAgents.notReported`)),1),w(`small`,null,f(e.registrationStatus||x(d)(`projectAgents.notReported`))+` · `+f(e.permissionStatus||x(d)(`projectAgents.notReported`))+` · `+f(e.preflightStatus||x(d)(`projectAgents.strategy.availabilityUnreported`))+` · `+f(e.healthStatus||x(d)(`projectAgents.notReported`)),1),w(`button`,{class:`quiet-button`,type:`button`,onClick:t=>Ct(e)},f(x(d)(`projectAgents.routing.editExecutor`)),9,So),e.permissionStatus===`authorized`?(o(),E(`button`,{key:1,class:`quiet-button`,type:`button`,disabled:!!ke.value,onClick:t=>St(e,`revoked`)},[ke.value===e.executorId&&Ae.value===`revoke`?(o(),D(A,{key:0,variant:`inline`,label:x(d)(`projectAgents.routing.revoking`)},null,8,[`label`])):(o(),E(`span`,Eo,f(x(d)(`projectAgents.routing.revoke`)),1))],8,To)):(o(),E(`button`,{key:0,class:`quiet-button`,type:`button`,disabled:!!ke.value,onClick:t=>St(e,`authorized`)},[ke.value===e.executorId&&Ae.value===`authorize`?(o(),D(A,{key:0,variant:`inline`,label:x(d)(`projectAgents.routing.authorizing`)},null,8,[`label`])):(o(),E(`span`,wo,f(x(d)(`projectAgents.routing.authorize`)),1))],8,Co))]))),128))])):p(``,!0)])]),_:1},16,[`label`])]),w(`div`,Do,[T(Wt,v(pt(`executors`),{label:mt(`executors`),onRetry:$}),{default:c(()=>[w(`section`,Oo,[w(`div`,ko,[w(`h4`,null,f(x(d)(`projectAgents.sections.clients`)),1),w(`span`,null,f(xn(Q.value).length),1)]),xn(Q.value).length?(o(),E(`div`,Ao,[(o(!0),E(_,null,n(xn(Q.value),e=>(o(),E(`div`,{key:e,class:`project-agent-client-row`},[w(`strong`,null,f(bn(e)),1),w(`span`,null,f(Sn(Q.value,e)?.allowed||Q.value.profile.allowedClients?.includes(e)?x(d)(`projectAgents.clients.allowed`):x(d)(`projectAgents.clients.notAllowed`)),1),Cn(Q.value,e)?(o(),E(`span`,jo,f(x(d)(`projectAgents.clients.observed`,{count:Cn(Q.value,e)})),1)):Q.value.observedClients?.includes(e)?(o(),E(`span`,Mo,f(x(d)(`projectAgents.clients.observedAny`)),1)):(o(),E(`span`,No,f(x(d)(`projectAgents.clients.unreported`)),1)),w(`small`,null,f(Sn(Q.value,e)?.integrationStatus||x(d)(`projectAgents.clients.integrationUnreported`)),1)]))),128))])):(o(),E(`p`,Po,f(x(d)(`projectAgents.clients.empty`)),1))])]),_:1},16,[`label`])]),w(`div`,Fo,[T(Wt,v(pt(`routingRules`),{label:mt(`routingRules`),onRetry:$}),{default:c(()=>[w(`section`,Io,[w(`div`,Lo,[w(`h4`,null,f(x(d)(`projectAgents.sections.routing`)),1),w(`div`,Ro,[w(`span`,null,f(Q.value.routingRules?.length??0),1),w(`button`,{class:`quiet-button`,type:`button`,onClick:i[11]||=e=>wt()},f(x(d)(`projectAgents.routing.addRule`)),1)])]),Q.value.routingRules?.length?(o(),E(`div`,zo,[(o(!0),E(_,null,n(Q.value.routingRules,e=>(o(),E(`div`,{key:e.ruleId,class:`project-agent-rule-row`},[w(`strong`,null,f(e.scope)+` · `+f(e.priority),1),w(`span`,null,f(e.workKind||e.reason||x(d)(`projectAgents.notReported`))+` · `+f(e.executorIds?.join(`, `)||x(d)(`projectAgents.notReported`)),1),e.enabled?(o(),E(`button`,{key:0,class:`quiet-button`,type:`button`,disabled:!!X.value,onClick:t=>kt(e)},[X.value===`rule:${e.ruleId}`&&Oe.value===`disable`?(o(),D(A,{key:0,variant:`inline`,label:x(d)(`projectAgents.routing.disabling`)},null,8,[`label`])):(o(),E(`span`,Vo,f(x(d)(`projectAgents.routing.disable`)),1))],8,Bo)):p(``,!0)]))),128))])):(o(),E(`p`,Ho,f(x(d)(`projectAgents.routing.empty`)),1)),w(`small`,Uo,f(x(d)(`projectAgents.routing.priorityNote`)),1)])]),_:1},16,[`label`])]),w(`div`,Wo,[T(Wt,v(pt(`learning`),{label:mt(`learning`),onRetry:$}),{default:c(()=>[w(`section`,Go,[w(`div`,Ko,[w(`h4`,null,f(x(d)(`projectAgents.sections.learning`)),1),w(`span`,null,f(ot.value.length),1)]),ot.value.length?(o(),E(`div`,qo,[(o(!0),E(_,null,n(ot.value,([e,t])=>(o(),E(`article`,{key:e,class:`project-agent-learning-card`},[w(`header`,null,[w(`strong`,null,f(e),1),w(`i`,null,f(Tn(t)),1)]),t.personalProjectId||t.workKind||t.executor||t.modelStrategy?(o(),E(`small`,Jo,f(Mt(t.personalProjectId))+` · `+f(t.workKind||x(d)(`projectAgents.notReported`))+` · `+f(t.executor||x(d)(`projectAgents.notReported`))+` / `+f(t.modelStrategy?Zt(t.modelStrategy):x(d)(`projectAgents.notReported`)),1)):p(``,!0),w(`p`,null,f(x(d)(`projectAgents.learning.samples`,{count:t.sampleCount}))+` · `+f(x(d)(`projectAgents.learning.recent`,{count:En(t)})),1),w(`small`,null,f(t.decayBasis||x(d)(`projectAgents.learning.decayUnreported`))+` · `+f(Yt(t.updatedAt)),1),t.outcomes?(o(),E(`div`,Yo,[(o(!0),E(_,null,n(t.outcomes,(e,t)=>r((o(),E(`span`,{key:t},f(t)+` · `+f(e??x(d)(`projectAgents.notReported`)),1)),[[g,e!==void 0]])),128)),t.score!==null&&t.score!==void 0?(o(),E(`span`,Xo,f(x(d)(`projectAgents.learning.score`,{score:Dn(t)})),1)):p(``,!0)])):p(``,!0),t.evidence?.length?(o(),E(`ul`,Zo,[(o(!0),E(_,null,n(t.evidence,e=>(o(),E(`li`,{key:`${e.evidenceId}:${e.kind}:${e.occurredAt}`},[w(`span`,null,f(e.kind)+` · `+f(e.count??0)+` · `+f(e.summary||x(d)(`projectAgents.notReported`)),1),e.evidenceId?(o(),E(`button`,{key:0,class:`quiet-button`,type:`button`,disabled:!!Ee.value,onClick:n=>bt(t,`ignore`,e.evidenceId)},[Ee.value===e.evidenceId&&De.value===`ignore`?(o(),D(A,{key:0,variant:`inline`,label:x(d)(`projectAgents.learning.ignoring`)},null,8,[`label`])):(o(),E(`span`,$o,f(x(d)(`projectAgents.learning.ignore`)),1))],8,Qo)):p(``,!0)]))),128))])):p(``,!0),t.learningKey?(o(),E(`div`,es,[w(`button`,{class:`quiet-button`,type:`button`,disabled:!!Ee.value||!t.personalProjectId||!t.workKind||!t.executor,onClick:e=>bt(t,`reset`)},[Ee.value===t.learningKey&&De.value===`reset`?(o(),D(A,{key:0,variant:`inline`,label:x(d)(`projectAgents.learning.resetting`)},null,8,[`label`])):(o(),E(`span`,ns,f(x(d)(`projectAgents.learning.reset`)),1))],8,ts)])):p(``,!0)]))),128))])):(o(),E(`p`,rs,f(x(d)(`projectAgents.learning.empty`)),1)),w(`small`,is,f(x(d)(`projectAgents.learning.note`)),1)])]),_:1},16,[`label`])])]))],8,Kr)):(o(),E(`div`,as,f(x(d)(`projectAgents.detail.choose`)),1))])):(o(),E(`div`,Pr,[w(`strong`,null,f(x(d)(`projectAgents.noMatchTitle`)),1),w(`p`,null,f(x(d)(`projectAgents.noMatchCopy`)),1)])):(o(),E(`div`,Mr,[w(`strong`,null,f(x(d)(`projectAgents.emptyTitle`)),1),w(`p`,null,f(x(d)(`projectAgents.emptyCopy`)),1),w(`button`,{class:`project-agent-add`,type:`button`,disabled:!Z.value,onClick:Rt},f(x(d)(`projectAgents.add`)),9,Nr)])),T(_r,{open:oe.value,agent:ge.value,projects:ze.value,"default-project-id":rt.value,"personal-space-id":Z.value,onClose:Ht,onSaved:Jt},null,8,[`open`,`agent`,`projects`,`default-project-id`,`personal-space-id`]),T(Be,{open:ve.value,agent:ge.value,assignment:be.value,action:ye.value,projects:ze.value,"available-agents":C.value,"default-project-id":rt.value,onClose:Gt,onSaved:Kt,onChanged:qt},null,8,[`open`,`agent`,`assignment`,`action`,`projects`,`available-agents`,`default-project-id`]),T(ht,{open:je.value,mode:Me.value,"personal-space-id":Z.value,executor:Ne.value,rule:Pe.value,projects:ze.value,"available-executors":Q.value?.executorDirectory??[],onClose:Tt,onSaved:Ot},null,8,[`open`,`mode`,`personal-space-id`,`executor`,`rule`,`projects`,`available-executors`])],8,vr))}}),[[`__scopeId`,`data-v-35adaf6b`]]);export{os as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.project-agent-assignment-dialog[data-v-ee37776b]{background:0 0;border:0;border-radius:12px;width:min(620px,100vw - 32px);max-height:calc(100vh - 32px);padding:0}.project-agent-assignment-dialog-shell[data-v-ee37776b]{background:#fbfcfb;border:1px solid #d5dcd7;border-radius:12px;flex-direction:column;max-height:calc(100vh - 32px);display:flex;overflow:hidden;box-shadow:0 18px 48px #212d262e}.project-agent-assignment-dialog-header[data-v-ee37776b],.project-agent-assignment-dialog-actions[data-v-ee37776b]{justify-content:space-between;align-items:center;gap:16px;padding:16px 18px;display:flex}.project-agent-assignment-dialog-header[data-v-ee37776b]{border-bottom:1px solid #e1e6e2}.project-agent-assignment-dialog-header h3[data-v-ee37776b]{color:#283a31;font-size:16px}.project-agent-assignment-dialog-fields[data-v-ee37776b]{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;min-height:0;padding:18px;display:grid;overflow:auto}.project-agent-assignment-dialog-fields label[data-v-ee37776b]{color:#626d66;gap:6px;font-size:11px;font-weight:650;display:grid}.project-agent-assignment-dialog-fields input[data-v-ee37776b],.project-agent-assignment-dialog-fields textarea[data-v-ee37776b]{color:#28342d;background:#fff;border:1px solid #ccd5ce;border-radius:8px;width:100%;padding:8px 9px;font-size:12px;line-height:1.5}.project-agent-assignment-dialog-fields textarea[data-v-ee37776b]{resize:vertical}.project-agent-assignment-dialog-fields input[data-v-ee37776b]:focus-visible,.project-agent-assignment-dialog-fields textarea[data-v-ee37776b]:focus-visible{outline-offset:1px;outline:2px solid #91a398}.project-agent-assignment-wide-field[data-v-ee37776b]{grid-column:1/-1}.project-agent-assignment-dialog-error[data-v-ee37776b]{color:#8b3f38;margin:0 18px;font-size:11px}.project-agent-assignment-dialog-actions[data-v-ee37776b]{border-top:1px solid #e1e6e2;justify-content:flex-end}.project-agent-primary-action[data-v-ee37776b]{color:#fff;background:#344c3d;border:0;border-radius:8px;padding:8px 13px;font-size:11px;font-weight:700}.project-agent-primary-action[data-v-ee37776b]:focus-visible{outline-offset:2px;outline:2px solid #91a398}@media (width<=620px){.project-agent-assignment-dialog-fields[data-v-ee37776b]{grid-template-columns:1fr}.project-agent-assignment-wide-field[data-v-ee37776b]{grid-column:auto}}.project-agent-dialog[data-v-4d36bcaf]{background:0 0;border:0;border-radius:12px;width:min(760px,100vw - 64px);max-height:calc(100vh - 64px);padding:0;overflow:hidden}.project-agent-dialog-shell[data-v-4d36bcaf]{background:#fbfcfb;border:1px solid #d5dcd7;border-radius:12px;flex-direction:column;min-height:0;max-height:calc(100vh - 64px);display:flex;overflow:hidden;box-shadow:0 18px 48px #212d262e}.project-agent-dialog-header[data-v-4d36bcaf],.project-agent-dialog-actions[data-v-4d36bcaf]{justify-content:space-between;align-items:center;gap:16px;padding:18px 20px;display:flex}.project-agent-dialog-header[data-v-4d36bcaf]{border-bottom:1px solid #e1e6e2}.project-agent-dialog-header h3[data-v-4d36bcaf]{color:#283a31;font-size:17px}.project-agent-dialog-fields[data-v-4d36bcaf]{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;min-height:0;padding:20px;display:grid;overflow:auto}.project-agent-dialog-fields label[data-v-4d36bcaf]{color:#626d66;align-content:start;gap:6px;min-width:0;font-size:11px;font-weight:650;display:grid}.project-agent-dialog-fields input[data-v-4d36bcaf],.project-agent-dialog-fields select[data-v-4d36bcaf],.project-agent-dialog-fields textarea[data-v-4d36bcaf]{color:#28342d;background:#fff;border:1px solid #ccd5ce;border-radius:8px;width:100%;padding:9px 10px;font-size:12px;line-height:1.5}.project-agent-dialog-fields textarea[data-v-4d36bcaf]{resize:vertical}.project-agent-dialog-fields input[data-v-4d36bcaf]:focus-visible,.project-agent-dialog-fields select[data-v-4d36bcaf]:focus-visible,.project-agent-dialog-fields textarea[data-v-4d36bcaf]:focus-visible{outline-offset:1px;outline:2px solid #91a398}.project-agent-wide-field[data-v-4d36bcaf],.project-agent-id-note[data-v-4d36bcaf]{grid-column:1/-1}.project-agent-dialog-error[data-v-4d36bcaf]{color:#8b3f38;margin:0 20px;font-size:11px}.project-agent-dialog-actions[data-v-4d36bcaf]{border-top:1px solid #e1e6e2;justify-content:flex-end}.project-agent-primary-action[data-v-4d36bcaf]{color:#fff;background:#344c3d;border:0;border-radius:8px;padding:8px 14px;font-size:12px;font-weight:700}.project-agent-primary-action[data-v-4d36bcaf]:hover{background:#2b4234}.project-agent-primary-action[data-v-4d36bcaf]:focus-visible{outline-offset:2px;outline:2px solid #91a398}.project-agent-primary-action[data-v-4d36bcaf]:disabled,.project-agent-dialog-fields[data-v-4d36bcaf] :disabled{cursor:not-allowed;opacity:.6}.project-agent-dialog-check[data-v-4d36bcaf]{align-items:center;gap:7px!important;display:flex!important}.project-agent-dialog-check input[data-v-4d36bcaf]{width:auto!important}.project-agent-dialog-note[data-v-4d36bcaf]{color:#7b857e;font-size:10px;line-height:1.55}.project-team[data-v-077ab7fe]{border-top:1px solid #dfe5e0;grid-column:1/-1;min-width:0;padding-block:12px}.project-team-peers[data-v-077ab7fe]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.project-team-peers[data-v-077ab7fe]>*{color:#31453a;background:#edf3ee;border:1px solid #cad9cd;border-radius:6px;padding:7px 10px;font-size:12px}.project-team-summary[data-v-077ab7fe]{color:#53665a;margin:9px 0;font-size:12px}.project-team-members[data-v-077ab7fe]{gap:9px;margin:10px 0 16px 18px;padding:0;list-style:none;display:grid}.project-team-members button[data-v-077ab7fe]{text-align:start;color:#31453a;background:0 0;border:0;gap:3px;max-width:100%;display:grid}.project-team-members span[data-v-077ab7fe]{color:#596b60;overflow-wrap:anywhere;font-size:12px;line-height:1.5}.project-team summary[data-v-077ab7fe]{cursor:pointer;font-size:12px}.team-lead-field[data-v-077ab7fe]{flex-wrap:wrap;align-items:center;gap:12px;margin-block:14px;display:flex}.team-lead-field select[data-v-077ab7fe]{max-width:100%;padding:7px}.project-team fieldset[data-v-077ab7fe]{border:0;flex-wrap:wrap;gap:12px;margin-bottom:14px;padding:0;display:flex}.project-team fieldset label[data-v-077ab7fe]{align-items:center;gap:5px;font-size:12px;display:flex}.project-team legend[data-v-077ab7fe]{margin-bottom:8px;font-size:12px}.project-agent-automation-policy[data-v-077ab7fe]{border-block:1px solid #dfe5e0;grid-template-columns:minmax(110px,150px) minmax(0,1fr);align-items:center;gap:14px;padding:11px 0;display:grid}.project-agent-automation-policy>header[data-v-077ab7fe]{min-width:0}.project-agent-automation-policy h3[data-v-077ab7fe]{color:#31453a;font-size:12px;line-height:1.35}.project-agent-automation-policy header span[data-v-077ab7fe]{color:#68756d;text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:9px;display:block;overflow:hidden}.project-agent-policy-options[data-v-077ab7fe]{grid-template-columns:repeat(2,minmax(0,1fr));min-width:0;display:grid}.project-agent-policy-options label[data-v-077ab7fe]{cursor:pointer;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;min-width:0;padding:2px 16px;display:grid}.project-agent-policy-options label+label[data-v-077ab7fe]{border-inline-start:1px solid #e2e7e3}.project-agent-policy-options label>span[data-v-077ab7fe]{gap:3px;min-width:0;display:grid}.project-agent-policy-options strong[data-v-077ab7fe]{color:#3d5045;font-size:10px;line-height:1.4}.project-agent-policy-options small[data-v-077ab7fe]{color:#6d7971;overflow-wrap:anywhere;max-width:54ch;font-size:9px;line-height:1.45}.project-agent-policy-options input[data-v-077ab7fe]{appearance:none;cursor:pointer;background:#e8ece9;border:1px solid #aeb8b1;border-radius:999px;width:34px;height:19px;margin:0;transition:background-color .14s ease-out,border-color .14s ease-out;position:relative}.project-agent-policy-options input[data-v-077ab7fe]:after{content:"";background:#fff;border-radius:50%;width:13px;height:13px;transition:transform .14s ease-out;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #24372c38}.project-agent-policy-options input[data-v-077ab7fe]:checked{background:#4d8164;border-color:#3f7658}.project-agent-policy-options input[data-v-077ab7fe]:checked:after{transform:translate(15px)}.project-agent-policy-options input[data-v-077ab7fe]:focus-visible{outline-offset:3px;outline:2px solid #355f49}.project-agent-policy-options input[data-v-077ab7fe]:disabled{cursor:wait;opacity:.62}.project-agent-policy-feedback[data-v-077ab7fe]{grid-column:2;min-height:14px;padding-inline:16px}.project-agent-policy-state[data-v-077ab7fe],.project-agent-policy-feedback p[data-v-077ab7fe]{color:#66736b;font-size:9px;line-height:1.45}.project-agent-policy-feedback p[role=alert][data-v-077ab7fe]{color:#874b43}.project-agent-policy-feedback button[data-v-077ab7fe]{color:#355f49;font:inherit;cursor:pointer;background:0 0;border:0;margin-inline-start:6px;padding:0;font-weight:700}@media (width<=760px){.project-agent-automation-policy[data-v-077ab7fe],.project-agent-policy-options[data-v-077ab7fe]{grid-template-columns:minmax(0,1fr)}.project-agent-policy-options label[data-v-077ab7fe]{padding:8px 0}.project-agent-policy-options label+label[data-v-077ab7fe]{border-block-start:1px solid #e2e7e3;border-inline-start:0}.project-agent-policy-feedback[data-v-077ab7fe]{grid-column:1;padding-inline:0}}.project-agent-source-state[data-v-ca9a5880]{color:#727d75;background:#f7f9f7;border:1px solid #e1e6e2;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;margin-top:22px;padding:10px 12px;font-size:10px;display:flex}.project-agent-source-state.is-error[data-v-ca9a5880]{color:#8c4f49;background:#fbf3f1;border-color:#ebd5d0}.project-agent-task-diagnostics[data-v-f960dcef]{color:#334b3c;background:#f1f5f2;border-radius:8px;margin:12px 0;padding:12px}.project-agent-task-diagnostics dl[data-v-f960dcef]{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0;display:grid}.project-agent-task-diagnostics dt[data-v-f960dcef]{color:#65766b;margin-bottom:4px;font-size:11px}.project-agent-task-diagnostics dd[data-v-f960dcef]{overflow-wrap:anywhere;margin:0;font-size:12px;line-height:1.5}.project-agent-task-diagnostics small[data-v-f960dcef]{color:#65766b;overflow-wrap:anywhere;margin-top:4px;font-size:11px;display:block}.project-agent-task-diagnostics p[data-v-f960dcef]{color:#52665a;margin:10px 0 0;font-size:12px;line-height:1.6}@media (width<=540px){.project-agent-task-diagnostics dl[data-v-f960dcef]{grid-template-columns:1fr;gap:10px}}.employee-work-history[data-v-bf7d05b1]{margin-block:24px;font-size:14px}summary[data-v-bf7d05b1]{cursor:pointer;padding-block:12px;font-weight:650}label[data-v-bf7d05b1]{flex-wrap:wrap;align-items:center;gap:12px;display:flex}select[data-v-bf7d05b1]{max-width:100%;font:inherit;padding:8px}ol[data-v-bf7d05b1]{margin:12px 0;padding:0;list-style:none}li[data-v-bf7d05b1]{border-top:1px solid #dce3de;padding-block:14px}.work-record-meta[data-v-bf7d05b1]{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}p[data-v-bf7d05b1]{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.65}@media (width<=640px){.employee-work-history[data-v-bf7d05b1]{font-size:16px}}.agent-conversations[data-v-6d3f7a53]{color:#39483f;margin-block:20px;font-size:14px}summary[data-v-6d3f7a53]{cursor:pointer;padding-block:12px;font-weight:650}summary[data-v-6d3f7a53]:focus-visible,button[data-v-6d3f7a53]:focus-visible,input[data-v-6d3f7a53]:focus-visible,select[data-v-6d3f7a53]:focus-visible,textarea[data-v-6d3f7a53]:focus-visible{outline-offset:3px;outline:2px solid #315c43}label[data-v-6d3f7a53]{flex-wrap:wrap;align-items:center;gap:12px;display:flex}select[data-v-6d3f7a53],input[type=number][data-v-6d3f7a53]{max-width:100%;font:inherit;color:inherit;background:#fff;border:1px solid #a8b7ad;border-radius:6px;padding:8px}input[type=number][data-v-6d3f7a53]{width:100px}input[type=checkbox][data-v-6d3f7a53]{width:18px;height:18px}fieldset[data-v-6d3f7a53]{border:0;gap:16px;min-width:0;margin:0;padding:8px 0;display:grid}fieldset button[data-v-6d3f7a53]{justify-self:start}.conversation-hint[data-v-6d3f7a53]{color:#58675d;margin-block:12px;line-height:1.65}ol[data-v-6d3f7a53]{margin:0;padding:0;list-style:none}.conversation-list>li[data-v-6d3f7a53]{border-bottom:1px solid #dce3de}.continuation-copy[data-v-6d3f7a53]{margin-bottom:12px}.conversation-link[data-v-6d3f7a53]{text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;gap:6px;padding:14px 0;display:grid}.conversation-link:hover strong[data-v-6d3f7a53]{text-underline-offset:3px;text-decoration:underline}.conversation-link[aria-pressed=true] strong[data-v-6d3f7a53]{color:#315c43}.conversation-link span[data-v-6d3f7a53]{color:#58675d;font-size:12px}.conversation-link strong[data-v-6d3f7a53]{overflow-wrap:anywhere}.conversation-messages[data-v-6d3f7a53]{padding-bottom:16px}.conversation-messages li[data-v-6d3f7a53]{padding-block:12px}pre[data-v-6d3f7a53]{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;max-height:320px;margin-block:8px;line-height:1.65;overflow:auto}textarea[data-v-6d3f7a53]{box-sizing:border-box;width:100%;font:inherit;color:inherit;resize:vertical;background:#fff;border:1px solid #a8b7ad;border-radius:6px;padding:8px}button[data-v-6d3f7a53]:disabled{cursor:wait;opacity:.65}@media (width<=640px){.agent-conversations[data-v-6d3f7a53]{font-size:16px}}.project-agent-dialog[data-v-95db0a3d]{background:0 0;border:0;border-radius:12px;width:min(760px,100vw - 64px);max-height:calc(100vh - 64px);padding:0;overflow:hidden}.project-agent-dialog-shell[data-v-95db0a3d]{background:#fbfcfb;border:1px solid #d5dcd7;border-radius:12px;flex-direction:column;min-height:0;max-height:calc(100vh - 64px);display:flex;overflow:hidden;box-shadow:0 18px 48px #212d262e}.project-agent-dialog-header[data-v-95db0a3d],.project-agent-dialog-actions[data-v-95db0a3d]{justify-content:space-between;align-items:center;gap:16px;padding:18px 20px;display:flex}.project-agent-dialog-header[data-v-95db0a3d]{border-bottom:1px solid #e1e6e2}.project-agent-dialog-header h3[data-v-95db0a3d]{color:#283a31;font-size:17px}.project-agent-dialog-fields[data-v-95db0a3d]{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;min-height:0;padding:20px;display:grid;overflow:auto}.project-agent-dialog-fields label[data-v-95db0a3d]{color:#626d66;align-content:start;gap:6px;min-width:0;font-size:11px;font-weight:650;display:grid}.project-agent-dialog-fields input[data-v-95db0a3d],.project-agent-dialog-fields select[data-v-95db0a3d],.project-agent-dialog-fields textarea[data-v-95db0a3d]{color:#28342d;background:#fff;border:1px solid #ccd5ce;border-radius:8px;width:100%;padding:9px 10px;font-size:12px;line-height:1.5}.project-agent-dialog-fields textarea[data-v-95db0a3d]{resize:vertical}.project-agent-dialog-fields input[data-v-95db0a3d]:focus-visible,.project-agent-dialog-fields select[data-v-95db0a3d]:focus-visible,.project-agent-dialog-fields textarea[data-v-95db0a3d]:focus-visible{outline-offset:1px;outline:2px solid #91a398}.project-agent-wide-field[data-v-95db0a3d],.project-agent-id-note[data-v-95db0a3d]{grid-column:1/-1}.project-agent-strategy-fields[data-v-95db0a3d]{border:1px solid #dfe5e0;border-radius:9px;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:0;margin:0;padding:12px;display:grid}.project-agent-strategy-fields legend[data-v-95db0a3d]{color:#59665d;padding:0 5px;font-size:10px;font-weight:700}.project-agent-strategy-fields>small[data-v-95db0a3d]{color:#818a84;grid-column:1/-1;font-size:9px;line-height:1.5}.project-agent-id-note[data-v-95db0a3d]{color:#7b847e;margin-top:-8px;font-size:10px}.project-agent-dialog-error[data-v-95db0a3d]{color:#8b3f38;margin:0 20px;font-size:11px}.project-agent-dialog-actions[data-v-95db0a3d]{border-top:1px solid #e1e6e2;justify-content:flex-end}.project-agent-primary-action[data-v-95db0a3d]{color:#fff;background:#344c3d;border:0;border-radius:8px;padding:8px 14px;font-size:12px;font-weight:700}.project-agent-primary-action[data-v-95db0a3d]:hover{background:#2b4234}.project-agent-primary-action[data-v-95db0a3d]:focus-visible{outline-offset:2px;outline:2px solid #91a398}.project-agent-primary-action[data-v-95db0a3d]:disabled,.project-agent-dialog-fields[data-v-95db0a3d] :disabled{cursor:not-allowed;opacity:.6}@media (width<=720px){.project-agent-dialog-fields[data-v-95db0a3d]{grid-template-columns:1fr}.project-agent-wide-field[data-v-95db0a3d],.project-agent-id-note[data-v-95db0a3d]{grid-column:1}}.project-agent-row-shell[data-v-35adaf6b]{align-items:flex-start;gap:6px;min-width:0;display:flex}.project-agent-row-shell>.project-agent-row[data-v-35adaf6b]{flex:1;min-width:0}.project-agent-row-shell>.agent-hand[data-v-35adaf6b]{margin-top:14px}.project-agent-header-actions[data-v-35adaf6b]{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.project-agents-view[data-v-35adaf6b]{flex-direction:column;gap:12px;min-height:0;padding:18px 32px 20px;display:flex;overflow:hidden}.project-agents-header[data-v-35adaf6b],.project-agent-section-heading[data-v-35adaf6b],.project-agent-section-tools[data-v-35adaf6b],.project-agent-detail-actions[data-v-35adaf6b],.project-agent-assignment-card header[data-v-35adaf6b],.project-agent-task-card header[data-v-35adaf6b],.project-agent-learning-card header[data-v-35adaf6b],.project-agent-day-detail header[data-v-35adaf6b]{justify-content:space-between;align-items:center;gap:12px;display:flex}.project-agents-header h2[data-v-35adaf6b]{color:#283a31;font-size:18px}.project-agents-header-meta[data-v-35adaf6b]{color:#7a847d;font-size:10px}.project-agents-summary[data-v-35adaf6b]{color:#58675d;gap:18px;padding:2px 0 4px;font-size:12px;line-height:1.5;display:flex}.project-agents-summary span[data-v-35adaf6b]:first-child{color:#2f493b;font-weight:700}.project-agent-add[data-v-35adaf6b]{color:#fff;cursor:pointer;background:#344c3d;border:0;border-radius:8px;min-height:40px;padding:9px 14px;font-size:12px;font-weight:600}.project-agent-add[data-v-35adaf6b]:hover{background:#2b4234}.project-agent-add[data-v-35adaf6b]:focus-visible,.quiet-button[data-v-35adaf6b]:focus-visible{outline-offset:2px;outline:2px solid #91a398}.project-agent-add[data-v-35adaf6b]:disabled{cursor:not-allowed;opacity:.55}.project-agents-toolbar[data-v-35adaf6b]{grid-template-columns:minmax(240px,320px) minmax(200px,1fr) auto;align-items:center;gap:12px;display:grid}.project-agents-search input[data-v-35adaf6b]{color:#2e3932;background:#fff;border:1px solid #cfd7d1;border-radius:8px;width:100%;min-height:44px;padding:10px 12px;font-size:13px}.project-agents-search input[data-v-35adaf6b]:focus-visible{outline-offset:1px;outline:2px solid #91a398}.project-agents-status-filter[data-v-35adaf6b]{background:#f5f7f5;border:1px solid #d8ded9;border-radius:8px;gap:3px;padding:3px;display:flex}.project-agents-status-filter button[data-v-35adaf6b],.quiet-button[data-v-35adaf6b]{color:#58675d;cursor:pointer;background:0 0;border:0;border-radius:6px;min-height:34px;padding:7px 10px;font-size:12px}.project-agents-status-filter button[aria-pressed=true][data-v-35adaf6b]{color:#315440;background:#fff;font-weight:700;box-shadow:0 1px 3px #27392f1f}.project-agents-directory[data-v-35adaf6b]{background:#fff;border:1px solid #cfd7d1;border-radius:10px;flex:1;grid-template-columns:minmax(360px,.94fr) minmax(390px,1.06fr);min-height:0;display:grid;overflow:hidden}.project-agent-list[data-v-35adaf6b]{border-right:1px solid #dfe4e0;min-width:0;min-height:0;overflow:auto}.project-agent-row[data-v-35adaf6b]{width:100%;color:inherit;text-align:left;background:#fff;border:0;border-bottom:1px solid #e6eae7;grid-template-columns:minmax(0,1fr) auto;gap:5px 14px;padding:14px 16px;display:grid}.project-agent-row[data-v-35adaf6b]:hover{background:#f7f9f7}.project-agent-row.selected[data-v-35adaf6b]{background:#edf3ef}.project-agent-row[data-v-35adaf6b]:focus-visible{z-index:1;outline-offset:-3px;outline:2px solid #91a398;position:relative}.project-agent-row-heading[data-v-35adaf6b]{align-items:center;gap:7px;min-width:0;display:flex}.project-agent-occupation-emoji[data-v-35adaf6b]{flex:none;justify-content:center;align-items:center;min-width:1.2em;font-size:15px;line-height:1;display:inline-flex}.project-agent-row-heading strong[data-v-35adaf6b]{color:#293b31;text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.project-agent-row-heading i[data-v-35adaf6b],.project-agent-assignment-card header i[data-v-35adaf6b],.project-agent-task-card header i[data-v-35adaf6b],.project-agent-learning-card header i[data-v-35adaf6b]{color:#66716a;background:#e6eae7;border-radius:999px;flex:none;padding:2px 7px;font-size:9px;font-style:normal;font-weight:700}.project-agent-row-heading i.is-active[data-v-35adaf6b]{color:#2f6947;background:#e1eee6}.project-agent-row-heading i.is-archived[data-v-35adaf6b]{color:#75695d;background:#eeeae5}.project-agent-kind[data-v-35adaf6b]{color:#53647b!important;background:#eef2f7!important}.project-agent-row-id[data-v-35adaf6b]{color:#8a938d;overflow-wrap:anywhere;text-align:right;font-size:9px}.project-agent-row-projects[data-v-35adaf6b]{flex-wrap:wrap;grid-column:1/-1;gap:4px;display:flex}.project-agent-row-projects b[data-v-35adaf6b],.project-agent-tags span[data-v-35adaf6b],.project-agent-inline-list span[data-v-35adaf6b]{color:#5f6b64;background:#eef1ef;border-radius:999px;padding:3px 7px;font-size:9px;font-weight:650}.project-agent-row-projects em[data-v-35adaf6b]{color:#8a938d;font-size:9px;font-style:normal}.project-agent-row-responsibility[data-v-35adaf6b]{color:#59645d;text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;font-size:11px;line-height:1.5;overflow:hidden}.project-agent-row-work[data-v-35adaf6b]{color:#59645d;grid-column:1/-1;font-size:10px;line-height:1.5}.project-agent-work-dot[data-v-35adaf6b]{background:#4b8d63;border-radius:50%;width:6px;height:6px;margin-right:4px;display:inline-block}.project-agent-detail[data-v-35adaf6b]{min-width:0;min-height:0;padding:20px;overflow:auto;container-type:inline-size}.employee-project-overview[data-v-35adaf6b]{border-bottom:1px solid #e1e6e2;margin:22px 0;padding-bottom:18px}.employee-project-overview-heading[data-v-35adaf6b]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.employee-project-overview-heading h4[data-v-35adaf6b]{color:#33483c;margin:0;font-size:14px}.employee-project-overview-heading p[data-v-35adaf6b],.employee-project-overview-hint[data-v-35adaf6b]{color:#58675d;margin:5px 0 0;font-size:12px;line-height:1.6}.employee-project-overview-hint[data-v-35adaf6b]{margin-top:12px}.employee-assigned-projects[data-v-35adaf6b]{grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 20px;margin-top:12px;display:grid}.employee-assigned-projects a[data-v-35adaf6b]{color:#315c43;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;font-size:13px;line-height:1.5;text-decoration:none;display:flex}.employee-assigned-projects a[data-v-35adaf6b]:hover{text-underline-offset:3px;text-decoration:underline}.employee-assigned-projects a[data-v-35adaf6b]:focus-visible{outline-offset:3px;outline:2px solid #91a398}.employee-assigned-projects a span[data-v-35adaf6b]{overflow-wrap:anywhere}.employee-assigned-projects svg[data-v-35adaf6b]{flex-shrink:0}@container (width<=480px){.employee-assigned-projects[data-v-35adaf6b]{grid-template-columns:minmax(0,1fr)}}.project-agent-detail>header[data-v-35adaf6b]{border-bottom:1px solid #e1e6e2;grid-template-columns:minmax(0,1fr) max-content;align-items:flex-start;gap:16px;padding-bottom:16px;display:grid}.project-agent-detail-heading[data-v-35adaf6b]{min-width:0}.project-agent-detail h3[data-v-35adaf6b]{color:#263b30;text-wrap:balance;font-size:17px;line-height:1.32}.project-agent-detail header p[data-v-35adaf6b]{color:#7a847d;overflow-wrap:anywhere;max-width:72ch;margin-top:5px;font-size:10px;line-height:1.5}.project-agent-detail-actions[data-v-35adaf6b]{grid-auto-columns:78px;grid-auto-flow:column;justify-content:end;gap:8px;display:grid}.project-agent-detail-actions .quiet-button[data-v-35adaf6b]{white-space:nowrap;width:78px}.project-agent-detail-meta[data-v-35adaf6b],.project-agent-compact-meta[data-v-35adaf6b]{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0 0;display:grid}.project-agent-detail-meta div[data-v-35adaf6b],.project-agent-compact-meta div[data-v-35adaf6b]{min-width:0}.project-agent-detail-meta dt[data-v-35adaf6b],.project-agent-compact-meta dt[data-v-35adaf6b],.project-agent-detail-section h4[data-v-35adaf6b]{color:#7a847d;letter-spacing:.06em;text-transform:uppercase;font-size:9px;font-weight:700}.project-agent-detail-meta dd[data-v-35adaf6b],.project-agent-compact-meta dd[data-v-35adaf6b]{overflow-wrap:anywhere;color:#39483f;margin:4px 0 0;font-size:11px}.project-agent-detail-meta dd small[data-v-35adaf6b]{color:#818a84;margin-top:3px;font-size:9px;line-height:1.4;display:block}.project-agent-detail-section[data-v-35adaf6b]{margin-top:22px}.project-agent-detail-section.is-responsibility[data-v-35adaf6b]{background:#f2f5f2;border-radius:10px;padding:14px}.project-agent-detail-section p[data-v-35adaf6b],.project-agent-detail-section li[data-v-35adaf6b]{color:#4f5c54;font-size:11px;line-height:1.65}.project-agent-tags[data-v-35adaf6b],.project-agent-inline-list[data-v-35adaf6b]{flex-wrap:wrap;gap:6px;margin-top:9px;display:flex}.project-agent-muted[data-v-35adaf6b]{color:#8a928d!important}.project-agent-detail-notice[data-v-35adaf6b]{background:#f5f5f1;border-radius:7px;margin:12px 0 0;padding:8px 10px;color:#6f705f!important}.project-agent-detail-placeholder[data-v-35adaf6b],.project-agents-state[data-v-35adaf6b]{color:#737d76;text-align:center;place-content:center;justify-items:center;gap:8px;min-height:240px;font-size:11px;display:grid}.project-agents-state[data-v-35adaf6b]{background:#fafbfa;border:1px solid #d9dfda;border-radius:10px;flex:1}.project-agents-state strong[data-v-35adaf6b]{color:#36473e;font-size:14px}.project-agents-state p[data-v-35adaf6b]{max-width:52ch;line-height:1.6}.project-agents-state.is-error[data-v-35adaf6b]{color:#8b3f38}.project-agent-assignment-list[data-v-35adaf6b],.project-agent-task-list[data-v-35adaf6b],.project-agent-learning-list[data-v-35adaf6b],.project-agent-recruitment-list[data-v-35adaf6b]{gap:8px;margin-top:9px;display:grid}.project-agent-task-list[data-v-35adaf6b]{grid-template-columns:minmax(0,1fr);min-width:0}.project-agent-execution-summary[data-v-35adaf6b]{border-top:1px solid #dfe5e0;min-width:0;margin-top:13px;padding-top:12px}.project-agent-worker-event-evidence[data-v-35adaf6b]{background:#f8faf8;border:1px dashed #d8dfd9;border-radius:8px;margin-top:13px;padding:10px 10px 0}.project-agent-execution-summary .project-agent-section-heading[data-v-35adaf6b]{gap:8px}.project-agent-execution-summary h5[data-v-35adaf6b]{color:#65736a;letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:11px;font-weight:700}.project-agent-execution-summary-table-wrap[data-v-35adaf6b]{box-sizing:border-box;overscroll-behavior-inline:contain;background:#fff;border:1px solid #dce3de;border-radius:8px;width:100%;max-width:100%;margin-top:7px;overflow-x:auto}.project-agent-execution-summary-table-wrap[data-v-35adaf6b]:focus-visible{outline-offset:2px;outline:2px solid #91a398}.project-agent-execution-summary-table[data-v-35adaf6b]{border-collapse:collapse;table-layout:fixed;color:#4f5e54;width:100%;min-width:1040px;font-size:12px;line-height:1.5}.project-agent-execution-summary-table th[data-v-35adaf6b],.project-agent-execution-summary-table td[data-v-35adaf6b]{overflow-wrap:anywhere;text-align:left;vertical-align:top;border-bottom:1px solid #e6ebe7;border-right:1px solid #e6ebe7;min-width:0;padding:8px 9px}.project-agent-execution-summary-table tr[data-v-35adaf6b]>:last-child{border-right:0}.project-agent-execution-summary-table tbody tr[data-v-35adaf6b]:last-child>*{border-bottom:0}.project-agent-execution-summary-table thead th[data-v-35adaf6b]{color:#65736a;letter-spacing:.04em;text-transform:uppercase;background:#f3f6f4;font-size:11px;font-weight:750}.project-agent-execution-summary-table thead th[data-v-35adaf6b]:first-child{width:14%}.project-agent-execution-summary-table thead th[data-v-35adaf6b]:nth-child(2){width:20%}.project-agent-execution-summary-table thead th[data-v-35adaf6b]:nth-child(3){width:13%}.project-agent-execution-summary-table thead th[data-v-35adaf6b]:nth-child(4),.project-agent-execution-summary-table thead th[data-v-35adaf6b]:nth-child(5){width:15%}.project-agent-execution-summary-table thead th[data-v-35adaf6b]:nth-child(6){width:12%}.project-agent-execution-summary-table tbody tr[data-v-35adaf6b]:hover{background:#fafcfb}.project-agent-execution-summary-table tbody th[data-v-35adaf6b]{color:#3f5647;font-weight:700}.project-agent-execution-summary-table tbody strong[data-v-35adaf6b],.project-agent-execution-summary-table tbody span[data-v-35adaf6b],.project-agent-execution-summary-table tbody small[data-v-35adaf6b],.project-agent-execution-summary-table tbody a[data-v-35adaf6b]{display:block}.project-agent-execution-summary-table tbody small[data-v-35adaf6b]{color:#647168;margin-top:3px;font-size:11px;font-weight:500}.project-agent-execution-summary-table tbody .project-agent-reporter-label[data-v-35adaf6b]{margin-top:8px}.project-agent-execution-summary-table tbody a[data-v-35adaf6b]{color:#386c50;text-underline-offset:2px;margin-top:3px;text-decoration-thickness:1px}.project-agent-execution-summary-table tbody a[data-v-35adaf6b]:focus-visible{outline-offset:2px;border-radius:2px;outline:2px solid #91a398}.project-agent-execution-worker[data-v-35adaf6b]{align-items:center;gap:4px;display:flex!important}.project-agent-execution-summary-row i[data-v-35adaf6b]{color:#66716a;background:#e6eae7;border-radius:999px;padding:2px 6px;font-size:11px;font-style:normal;font-weight:700;display:inline-flex}.project-agent-execution-summary-row i.is-completed[data-v-35adaf6b]{color:#2f6947;background:#e1eee6}.project-agent-execution-summary-row i.is-failed[data-v-35adaf6b]{color:#8c4f49;background:#f7e9e6}.project-agent-execution-summary-row i.is-cancelled[data-v-35adaf6b]{color:#75695d;background:#eeeae5}.project-agent-execution-summary-list[data-v-35adaf6b]{margin:7px 0 0;padding:0;list-style:none;display:grid}.project-agent-worker-event-row[data-v-35adaf6b]{border-top:1px solid #e6ebe7;min-width:0;padding:10px 0}.project-agent-worker-event-row[data-v-35adaf6b]:first-child{border-top:0}.project-agent-worker-event-row header[data-v-35adaf6b]{align-items:flex-start}.project-agent-worker-event-row header strong[data-v-35adaf6b]{overflow-wrap:anywhere;color:#3f5647;align-items:center;gap:5px;min-width:0;font-size:10px;display:flex}.project-agent-worker-event-row header strong small[data-v-35adaf6b]{color:#89948c;margin:0;font-size:8px;font-weight:500;display:inline}.project-agent-worker-event-row header i[data-v-35adaf6b]{color:#66716a;background:#e6eae7;border-radius:999px;flex:none;padding:2px 6px;font-size:8px;font-style:normal;font-weight:700}.project-agent-worker-event-row header i.is-completed[data-v-35adaf6b]{color:#2f6947;background:#e1eee6}.project-agent-worker-event-row header i.is-failed[data-v-35adaf6b]{color:#8c4f49;background:#f7e9e6}.project-agent-worker-event-row header i.is-cancelled[data-v-35adaf6b]{color:#75695d;background:#eeeae5}.project-agent-execution-summary-meta[data-v-35adaf6b]{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 10px;margin:8px 0 0;display:grid}.project-agent-execution-summary-meta div[data-v-35adaf6b]{min-width:0}.project-agent-execution-summary-meta dt[data-v-35adaf6b]{color:#89948c;letter-spacing:.04em;text-transform:uppercase;font-size:8px;font-weight:700}.project-agent-execution-summary-meta dd[data-v-35adaf6b]{overflow-wrap:anywhere;color:#4f5e54;margin:2px 0 0;font-size:9px;line-height:1.45}.project-agent-execution-summary-meta dd small[data-v-35adaf6b]{color:#89948c;margin-top:2px;font-size:8px;display:block}.project-agent-assignment-card[data-v-35adaf6b],.project-agent-task-card[data-v-35adaf6b],.project-agent-learning-card[data-v-35adaf6b]{background:#fbfcfb;border:1px solid #e0e6e1;border-radius:9px;min-width:0;padding:11px 12px}.project-agent-recruitment-card[data-v-35adaf6b]{background:#fbfcfb;border:1px solid #e0e6e1;border-radius:9px;padding:11px 12px}.project-agent-assignment-card header strong[data-v-35adaf6b],.project-agent-task-card header strong[data-v-35adaf6b],.project-agent-learning-card header strong[data-v-35adaf6b]{color:#33483a;font-size:11px}.project-agent-card-actions[data-v-35adaf6b]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:4px;display:flex}.project-agent-assignment-card p[data-v-35adaf6b],.project-agent-task-card p[data-v-35adaf6b],.project-agent-learning-card p[data-v-35adaf6b]{margin:7px 0 0}.project-agent-assignment-card small[data-v-35adaf6b],.project-agent-task-card small[data-v-35adaf6b],.project-agent-learning-card small[data-v-35adaf6b]{color:#818a84;margin-top:6px;font-size:9px;line-height:1.5;display:block}.project-agent-assignment-card header i.is-ended[data-v-35adaf6b],.project-agent-assignment-card header i.is-replaced[data-v-35adaf6b]{color:#75695d;background:#eeeae5}.project-agent-strategy-note[data-v-35adaf6b],.project-agent-execution-line[data-v-35adaf6b]{color:#7a847d;flex-wrap:wrap;align-items:baseline;gap:6px;margin-top:8px;font-size:9px;display:flex}.project-agent-strategy-note strong[data-v-35adaf6b],.project-agent-execution-line strong[data-v-35adaf6b]{color:#53685a;font-size:10px}.project-agent-strategy-note small[data-v-35adaf6b]{color:#8c5d54;flex-basis:100%}.project-agent-routing-decision[data-v-35adaf6b]{color:#65736a;background:#f3f7f3;border:1px solid #dce5de;border-radius:7px;gap:5px;margin-top:10px;padding:9px 10px;font-size:9px;display:grid}.project-agent-routing-decision .project-agent-section-heading[data-v-35adaf6b]{align-items:baseline;gap:8px}.project-agent-routing-decision .project-agent-section-heading strong[data-v-35adaf6b]{color:#3f604b;font-size:10px}.project-agent-routing-decision small[data-v-35adaf6b]{color:#65736a;line-height:1.45}.project-agent-blocked[data-v-35adaf6b]{color:#8c5d54!important}.project-agent-task-card header[data-v-35adaf6b]{align-items:flex-start}.project-agent-task-card header small[data-v-35adaf6b]{margin-top:3px}.project-agent-task-card header i[data-v-35adaf6b]{color:#53647b;background:#eef2f7}.project-agent-task-card header i.is-completed[data-v-35adaf6b]{color:#2f6947;background:#e1eee6}.project-agent-task-card header i.is-failed[data-v-35adaf6b]{color:#8c4f49;background:#f7e9e6}.project-agent-task-card header i.is-cancelled[data-v-35adaf6b]{color:#75695d;background:#eeeae5}.project-agent-heatmap-viewport[data-v-35adaf6b]{contain:layout inline-size paint;min-width:0;max-width:100%;overflow-x:clip}.project-agent-heatmap[data-v-35adaf6b]{grid-template-rows:repeat(7,minmax(10px,1fr));grid-auto-columns:minmax(10px,1fr);grid-auto-flow:column;gap:3px;width:100%;max-width:100%;margin-top:9px;padding:0;display:grid;overflow-x:auto}.project-agent-heat-cell[data-v-35adaf6b]{appearance:none;box-sizing:border-box;aspect-ratio:1;background:#f2f4f2;border:1px solid #dfe6e0;border-radius:3px;min-width:9px;margin:0;padding:0}.project-agent-heat-cell.intensity-1[data-v-35adaf6b]{background:#dce9df}.project-agent-heat-cell.intensity-2[data-v-35adaf6b]{background:#b9d3bf}.project-agent-heat-cell.intensity-3[data-v-35adaf6b]{background:#87b493}.project-agent-heat-cell.intensity-4[data-v-35adaf6b]{background:#548466}.project-agent-heat-cell[data-v-35adaf6b]:focus-visible,.project-agent-heat-cell.selected[data-v-35adaf6b]{box-shadow:none;border:2px solid #2f5740;outline:none}.project-agent-day-detail[data-v-35adaf6b]{background:#f6f8f6;border-radius:8px;margin-top:10px;padding:10px}.project-agent-day-detail ul[data-v-35adaf6b]{margin:8px 0 0;padding-left:17px}.project-agent-day-detail li[data-v-35adaf6b]{margin-top:6px}.project-agent-day-detail li strong[data-v-35adaf6b],.project-agent-day-detail li span[data-v-35adaf6b],.project-agent-day-detail li small[data-v-35adaf6b]{display:block}.project-agent-day-detail li span[data-v-35adaf6b]{color:#66736b;font-size:9px}.project-agent-day-detail li small[data-v-35adaf6b]{color:#7e8981;font-size:9px}.project-agent-client-list[data-v-35adaf6b],.project-agent-rule-list[data-v-35adaf6b]{gap:5px;margin-top:9px;display:grid}.project-agent-client-row[data-v-35adaf6b],.project-agent-rule-row[data-v-35adaf6b]{color:#68736c;background:#f7f9f7;border-radius:7px;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:7px;padding:8px 10px;font-size:9px;display:grid}.project-agent-client-row strong[data-v-35adaf6b],.project-agent-rule-row strong[data-v-35adaf6b]{color:#43584a;font-size:10px}.project-agent-client-row small[data-v-35adaf6b]{color:#8a938d;grid-column:1/-1}.project-agent-executor-list[data-v-35adaf6b]{gap:5px;margin-top:9px;display:grid}.project-agent-executor-row[data-v-35adaf6b]{color:#68736c;background:#f7f9f7;border-radius:7px;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:7px;padding:8px 10px;font-size:9px;display:grid}.project-agent-executor-row strong[data-v-35adaf6b]{color:#43584a;font-size:10px}.project-agent-executor-row small[data-v-35adaf6b]{color:#8a938d;grid-column:1/-1}.project-agent-learning-card header i[data-v-35adaf6b]{color:#6c776f;background:#f1f3f1}.project-agent-evidence-list[data-v-35adaf6b]{margin:8px 0 0;padding-left:17px}.project-agent-evidence-list li[data-v-35adaf6b]{color:#768179;font-size:9px}.project-agent-learning-actions[data-v-35adaf6b]{gap:6px;margin-top:8px;display:flex}.project-agent-note[data-v-35adaf6b]{color:#818a84;margin-top:9px;font-size:9px;line-height:1.5;display:block}.sr-only[data-v-35adaf6b]{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=1180px){.project-agents-toolbar[data-v-35adaf6b]{grid-template-columns:minmax(220px,280px) 1fr}.project-agents-status-filter[data-v-35adaf6b]{grid-column:1/-1;justify-self:start}.project-agents-directory[data-v-35adaf6b]{grid-template-columns:minmax(320px,.9fr) minmax(330px,1fr)}.project-agent-detail-meta[data-v-35adaf6b],.project-agent-compact-meta[data-v-35adaf6b]{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (width<=420px){.project-agent-detail>header[data-v-35adaf6b]{grid-template-columns:minmax(0,1fr)}.project-agent-detail-actions[data-v-35adaf6b]{justify-content:start}}@media (width<=760px){.project-agents-view[data-v-35adaf6b]{padding:14px 16px 18px;overflow:auto}.project-agents-header[data-v-35adaf6b],.project-agents-summary[data-v-35adaf6b],.project-agent-section-heading[data-v-35adaf6b],.project-agent-assignment-card header[data-v-35adaf6b]{flex-wrap:wrap;align-items:flex-start}.project-agents-toolbar[data-v-35adaf6b]{grid-template-columns:minmax(0,1fr)}.project-agents-project-filter[data-v-35adaf6b],.project-agents-search[data-v-35adaf6b],.project-agents-status-filter[data-v-35adaf6b]{grid-column:1}.project-agents-status-filter[data-v-35adaf6b]{flex-wrap:wrap;justify-self:stretch;width:100%}.project-agents-directory[data-v-35adaf6b]{flex:none;grid-template-columns:minmax(0,1fr);overflow:visible}.project-agent-list[data-v-35adaf6b]{border-bottom:1px solid #dfe4e0;border-right:0;max-height:340px}.project-agent-detail[data-v-35adaf6b]{min-height:520px;padding:16px}.project-agent-client-row[data-v-35adaf6b],.project-agent-rule-row[data-v-35adaf6b],.project-agent-executor-row[data-v-35adaf6b]{grid-template-columns:minmax(0,1fr);align-items:start}.project-agent-client-row small[data-v-35adaf6b],.project-agent-executor-row small[data-v-35adaf6b]{grid-column:1}.project-agent-execution-summary-meta[data-v-35adaf6b]{grid-template-columns:minmax(0,1fr)}.project-agent-worker-event-row header[data-v-35adaf6b]{gap:8px}}.project-agent-disclosure[data-v-35adaf6b]{margin-top:18px}.project-agent-disclosure>summary[data-v-35adaf6b]{cursor:pointer;color:#39483f;padding-block:10px;font-size:13px;font-weight:650}.project-agent-disclosure>summary[data-v-35adaf6b]:focus-visible{outline-offset:3px;outline:2px solid #315c43}.project-agent-disclosure .project-agent-detail-section[data-v-35adaf6b]:first-child{margin-top:12px}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.project-scope-picker[data-v-bbd9c029]{min-width:0;margin-bottom:18px;position:relative}.project-scope-heading[data-v-bbd9c029]{justify-content:space-between;align-items:center;gap:12px;margin-bottom:9px;display:flex}.project-scope-label[data-v-bbd9c029]{color:#33483c;font-size:13px;font-weight:600}.project-scope-count[data-v-bbd9c029]{color:#58675d;font-size:12px}.project-scope-trigger[data-v-bbd9c029]{color:#25392e;width:100%;min-height:44px;font:inherit;text-align:left;cursor:pointer;background:#fff;border:1px solid #bdcbbf;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.project-scope-trigger svg[data-v-bbd9c029]{flex-shrink:0}.project-scope-value[data-v-bbd9c029]{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.has-count .project-scope-value[data-v-bbd9c029]{white-space:normal;line-height:1.4;overflow:visible}.project-scope-multiple[data-v-bbd9c029]{color:#58675d;white-space:nowrap;font-size:11px}.project-scope-trigger[data-v-bbd9c029]:hover:not(:disabled),.project-scope-trigger[aria-expanded=true][data-v-bbd9c029]{border-color:#315c43}.project-scope-trigger[data-v-bbd9c029]:disabled{color:#65746a;cursor:default;background:#f2f5f2}.project-scope-panel[data-v-bbd9c029]{z-index:5;background:#fff;border:0;border-radius:12px;margin-top:6px;padding:8px;position:absolute;inset:auto 0;box-shadow:0 8px 30px #12291c2e}.project-scope-search[data-v-bbd9c029]{box-sizing:border-box;color:#25392e;width:100%;min-height:40px;font:inherit;background:#f1f5f2;border:0;border-radius:6px;padding:8px 10px;display:block}.project-scope-search[data-v-bbd9c029]::placeholder{color:#59695f}.project-scope-bulk[data-v-bbd9c029],.project-scope-footer[data-v-bbd9c029]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.project-scope-bulk[data-v-bbd9c029]{margin-top:4px}.project-scope-bulk button[data-v-bbd9c029],.project-scope-footer button[data-v-bbd9c029]{color:#315c43;min-height:40px;font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:6px;padding:8px 10px;font-size:13px}.project-scope-bulk button[data-v-bbd9c029]:hover:not(:disabled),.project-scope-footer button[data-v-bbd9c029]:hover{background:#edf3ee}.project-scope-bulk button[data-v-bbd9c029]:disabled{color:#65746a;cursor:default}.project-scope-list[data-v-bbd9c029]{overscroll-behavior:contain;scrollbar-gutter:stable;max-height:min(240px,32dvh);overflow-y:auto}.project-scope-option[data-v-bbd9c029]{color:#344a3c;cursor:pointer;box-sizing:border-box;border-radius:6px;align-items:center;gap:10px;min-height:42px;padding:8px 10px;display:flex}.project-scope-option[data-v-bbd9c029]:hover{background:#f1f5f2}.project-scope-option>span[data-v-bbd9c029]{overflow-wrap:anywhere;min-width:0}.project-scope-project-id[data-v-bbd9c029]{color:#58675d;margin-top:2px;font-size:12px;line-height:1.4;display:block}.project-scope-option.is-selected[data-v-bbd9c029]{color:#244b34;background:#f1f6f2}.project-scope-option.is-selected[data-v-bbd9c029]:hover{background:#e7f0e9}.project-scope-option input[data-v-bbd9c029]{appearance:none;cursor:pointer;background:#fff;border:1px solid #8da292;border-radius:4px;flex:0 0 17px;place-content:center;width:17px;height:17px;margin:0;display:grid}.project-scope-option input[data-v-bbd9c029]:checked,.project-scope-option input[data-v-bbd9c029]:indeterminate{background:#315c43;border-color:#315c43}.project-scope-option input[data-v-bbd9c029]:checked:after{content:"";border-bottom:1.6px solid #fff;border-left:1.6px solid #fff;width:7px;height:4px;transform:translateY(-1px)rotate(-45deg)}.project-scope-option input[data-v-bbd9c029]:indeterminate:after{content:"";background:#fff;width:7px;height:1.5px}.project-scope-option input[data-v-bbd9c029]:disabled{opacity:.55;cursor:default}.project-scope-all[data-v-bbd9c029]{flex:1;font-weight:600}.project-scope-all small[data-v-bbd9c029]{color:#59695f;margin-left:4px;font-size:12px;font-weight:400}.project-scope-footer[data-v-bbd9c029]{color:#59695f;padding-top:4px;font-size:12px}.project-scope-footer>span[data-v-bbd9c029]{padding-left:10px}.project-scope-empty[data-v-bbd9c029]{color:#59695f;margin:16px 10px;font-size:13px}.project-scope-hint[data-v-bbd9c029]{color:#58675d;margin:7px 0 0;font-size:12px}.is-inline .project-scope-panel[data-v-bbd9c029]{box-shadow:none;border-radius:0;margin:0;padding:0;position:static}.is-inline .project-scope-search[data-v-bbd9c029]{background:#f3f5f3;min-height:42px}.is-inline .project-scope-list[data-v-bbd9c029]{gap:3px;display:grid}.is-inline .project-scope-hint[data-v-bbd9c029]{margin-top:12px}.is-compact[data-v-bbd9c029]{margin-bottom:0;font-size:13px}.is-compact .project-scope-heading[data-v-bbd9c029]{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.is-compact .project-scope-panel[data-v-bbd9c029]{z-index:10;min-width:min(320px,100vw - 40px)}.is-compact .project-scope-hint[data-v-bbd9c029]{padding:0 10px 6px;line-height:1.5}.project-scope-picker[data-v-bbd9c029] :is(button,input):focus-visible{outline-offset:2px;outline:2px solid #356448}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as e,C as t,F as ee,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,nt as g,p as te,rt as _,v,x as y,z as b}from"./i18n-CIIxzhPZ.js";import{t as x}from"./_plugin-vue_export-helper-BDNMzG2s.js";var ne={class:`project-scope-heading`},S=[`id`],C={key:0,class:`project-scope-count`,role:`status`},w=[`disabled`,`aria-expanded`,`aria-controls`,`aria-labelledby`],re={key:0,viewBox:`0 0 20 20`,width:`18`,height:`18`,"aria-hidden":`true`},ie=[`id`],ae={key:1,class:`project-scope-multiple`},oe=[`id`,`aria-labelledby`],se=[`placeholder`,`aria-label`,`disabled`],T={class:`project-scope-bulk`},E={class:`project-scope-option project-scope-all`},D=[`checked`,`indeterminate`,`disabled`],O=[`disabled`],k=[`disabled`],A={class:`project-scope-list`},j=[`value`,`checked`,`disabled`,`onChange`],M={key:0,class:`project-scope-project-id`},N={key:0,class:`project-scope-empty`},P={key:0,class:`project-scope-footer`},F={role:`status`},I={key:1,class:`project-scope-hint`},L={key:2,class:`project-scope-hint`},R=x(o({__name:`ProjectScopePicker`,props:{modelValue:{},projects:{},disabled:{type:Boolean},inline:{type:Boolean},label:{},hint:{},emptyLabel:{},compact:{type:Boolean},allLabel:{},showCount:{type:Boolean},resettable:{type:Boolean}},emits:[`update:modelValue`,`reset`],setup(o,{emit:x}){let R=o,z=x,B=s(null),V=s(null),H=s(null),U=s(!1),W=s(``),G=`employee-projects-${a().replace(/[^a-zA-Z0-9_-]/g,``)}`,K=c(()=>new Set(R.modelValue)),q=c(()=>R.projects.filter(e=>K.value.has(e.id)).length),J=c(()=>R.projects.length>0&&q.value===R.projects.length),ce=c(()=>R.label??l(`employees.scope.label`)),Y=c(()=>{let e=new Map;for(let t of R.projects)e.set(t.name,(e.get(t.name)??0)+1);return new Set([...e].filter(([,e])=>e>1).map(([e])=>e))}),le=c(()=>{let e=R.projects.find(e=>K.value.has(e.id));return e?`${e.name}${Y.value.has(e.name)?` · ${e.id}`:``}`:``}),ue=c(()=>R.showCount?l(`employees.scope.count`,{selected:q.value,total:R.projects.length}):J.value?R.allLabel??l(`employees.scope.allSummary`,{count:q.value}):q.value===1?le.value:q.value?l(`employees.scope.selected`,{count:q.value}):R.emptyLabel??l(`employees.unassigned`)),X=c(()=>{let e=W.value.trim().toLocaleLowerCase();return R.projects.filter(t=>`${t.name} ${t.id}`.toLocaleLowerCase().includes(e))});b(()=>R.disabled,e=>{e&&Z()}),r(()=>document.addEventListener(`pointerdown`,Q)),m(()=>document.removeEventListener(`pointerdown`,Q));async function de(){if(!R.disabled){if(U.value){Z();return}W.value=``,U.value=!0,await e(),H.value?.focus()}}function Z(t=!1){U.value=!1,t&&e(()=>V.value?.focus())}function Q(e){U.value&&!B.value?.contains(e.target)&&Z()}function fe(e){e.relatedTarget&&!B.value?.contains(e.relatedTarget)&&Z()}function pe(e){U.value&&e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),Z(!0))}function $(e){R.disabled||z(`update:modelValue`,e)}function me(){$(J.value?[]:R.projects.map(e=>e.id))}function he(){$(R.projects.filter(e=>!K.value.has(e.id)).map(e=>e.id))}function ge(e){let t=new Set(R.modelValue);t.has(e)?t.delete(e):t.add(e),$(R.projects.filter(e=>t.has(e.id)).map(e=>e.id))}return(e,r)=>(i(),y(`div`,{ref_key:`root`,ref:B,class:_([`project-scope-picker`,{"is-inline":o.inline,"is-compact":o.compact,"has-count":o.showCount}]),onFocusout:fe,onKeydown:pe},[v(`div`,ne,[v(`span`,{id:`${G}-label`,class:`project-scope-label`},u(ce.value),9,S),o.inline?(i(),y(`span`,C,u(g(l)(`employees.scope.count`,{selected:q.value,total:o.projects.length})),1)):d(``,!0)]),o.inline?d(``,!0):(i(),y(`button`,{key:0,ref_key:`trigger`,ref:V,type:`button`,class:`project-scope-trigger`,disabled:o.disabled,"aria-expanded":U.value,"aria-controls":`${G}-panel`,"aria-labelledby":`${G}-label ${G}-value`,onClick:de},[o.compact?(i(),y(`svg`,re,[...r[4]||=[v(`path`,{d:`M3 5h14M5.5 10h9M8 15h4`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.6`,"stroke-linecap":`round`},null,-1)]])):d(``,!0),v(`span`,{id:`${G}-value`,class:`project-scope-value`},u(ue.value),9,ie),o.compact&&!o.showCount?(i(),y(`small`,ae,u(g(l)(`employees.scope.multiple`)),1)):d(``,!0),r[5]||=v(`svg`,{viewBox:`0 0 20 20`,width:`18`,height:`18`,"aria-hidden":`true`},[v(`path`,{d:`m5 7.5 5 5 5-5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.6`,"stroke-linecap":`round`,"stroke-linejoin":`round`})],-1)],8,w)),o.inline||U.value?(i(),y(`div`,{key:1,id:`${G}-panel`,class:`project-scope-panel`,role:`group`,"aria-labelledby":`${G}-label`},[n(v(`input`,{ref_key:`search`,ref:H,"onUpdate:modelValue":r[0]||=e=>W.value=e,type:`search`,class:`project-scope-search`,placeholder:g(l)(`employees.scope.search`),"aria-label":g(l)(`employees.scope.search`),disabled:o.disabled,onKeydown:r[1]||=te(h(()=>{},[`prevent`]),[`enter`])},null,40,se),[[f,W.value]]),v(`div`,T,[v(`label`,E,[v(`input`,{type:`checkbox`,checked:J.value,indeterminate:q.value>0&&!J.value,disabled:o.disabled||!o.projects.length,onChange:me},null,40,D),v(`span`,null,[t(u(o.allLabel??g(l)(`employees.scope.all`))+` `,1),v(`small`,null,u(o.projects.length),1)])]),v(`button`,{type:`button`,disabled:o.disabled||!o.projects.length,onClick:he},u(g(l)(`employees.scope.invert`)),9,O),o.resettable?(i(),y(`button`,{key:0,class:`project-scope-reset`,type:`button`,disabled:o.disabled,onClick:r[2]||=e=>z(`reset`)},u(g(l)(`employees.scope.reset`)),9,k)):d(``,!0)]),v(`div`,A,[(i(!0),y(p,null,ee(X.value,e=>(i(),y(`label`,{key:e.id,class:_([`project-scope-option`,{"is-selected":K.value.has(e.id)}])},[v(`input`,{type:`checkbox`,value:e.id,checked:K.value.has(e.id),disabled:o.disabled,onChange:t=>ge(e.id)},null,40,j),v(`span`,null,[t(u(e.name),1),Y.value.has(e.name)?(i(),y(`small`,M,u(e.id),1)):d(``,!0)])],2))),128)),X.value.length?d(``,!0):(i(),y(`p`,N,u(g(l)(o.projects.length?`employees.scope.noMatch`:`employees.scope.empty`)),1))]),o.inline?d(``,!0):(i(),y(`div`,P,[v(`span`,F,u(g(l)(`employees.scope.count`,{selected:q.value,total:o.projects.length})),1),v(`button`,{type:`button`,onClick:r[3]||=e=>Z(!0)},u(g(l)(`employees.scope.done`)),1)])),o.compact&&o.hint?(i(),y(`p`,I,u(o.hint),1)):d(``,!0)],8,oe)):d(``,!0),!o.compact&&o.hint!==``?(i(),y(`p`,L,u(o.hint??g(l)(`employees.scope.snapshotHint`)),1)):d(``,!0)],34))}}),[[`__scopeId`,`data-v-bbd9c029`]]);export{R as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as e,F as t,H as n,N as r,T as i,Z as a,_ as o,a as s,at as c,b as l,d as ee,h as u,j as te,m as ne,n as re,nt as d,rt as ie,v as f,w as p,x as m,y as h}from"./i18n-CIIxzhPZ.js";import{t as ae}from"./console-CrhIK67Y.js";import{t as g}from"./GrowthLoading-DIwqGFSc.js";import{h as oe}from"./useApi-CROJJdhE-fcdVGInY.js";import{i as _,n as v,t as y}from"./client-DTQ_tUr2.js";import{t as b}from"./useModalDialog-B-45idX9.js";import{t as se}from"./paths-CDREouhi.js";import{t as x}from"./SearchableSelect-Do6X3fXi.js";import{r as S,t as C}from"./identity-CdFITIOu.js";var ce={class:`view`},le={class:`space-heading public-space-heading`},ue=[`aria-label`],de={class:`project-grid`},fe={class:`project-card-heading`},pe={class:`project-card-heading-actions`},me=[`onClick`],he={class:`completion-badge`},ge={class:`project-purpose`},_e={class:`evidence-row`},ve={key:0,class:`muted`},ye={class:`project-access`},be={class:`muted`},xe={key:0,class:`project-release-meta`},Se={class:`project-card-footer`},Ce=[`onClick`],we=[`onClick`],Te={key:0,class:`empty-state project-empty`},Ee={class:`project-section`},De={class:`section-toolbar compact-toolbar relation-section-toolbar`},Oe=[`disabled`],ke={key:0,class:`muted`},Ae={class:`compact-relation-preview`,"aria-live":`polite`},je={key:0},Me={key:1},Ne={class:`primary-action`,type:`submit`},Pe={key:0,class:`project-dialog-shell`},Fe={class:`project-dialog-header`},Ie={id:`public-project-details-title`},Le={class:`project-latest-release`},Re={key:0},ze={key:1,class:`muted`},Be={class:`project-detail-columns`},Ve={key:1,class:`muted`},He={key:0,class:`muted`},Ue={key:1,class:`project-latest-release`},We={class:`muted`},Ge={class:`project-dialog-actions`},Ke={key:0,class:`project-dialog-shell`},qe={class:`project-dialog-header`},Je={id:`public-project-deletion-title`},Ye=[`disabled`],Xe={class:`project-delete-confirmation`},Ze=[`disabled`],Qe={key:0,class:`publish-dialog-error`,role:`alert`},$e={class:`project-dialog-actions`},et=[`disabled`],tt={key:1},nt=`fuli-workspace-v1`,w=i({__name:`PublicProjectsPage`,setup(i){let w=ae(),rt=oe(),T=a(null),E=a([]),D=a([]),O=a(!1),k=a(!1),A=a(``),j=a(``),M=a(`RELATED_TO`),N=a(null),P=a(``),F=a(!1),I=a(``),L=0,R=null,z=o(()=>w.state?.projects??[]),it=o(()=>w.state?.providers?.workspaces??[]),B=o(()=>new Set((w.state?.subscriptions??[]).map(({provider_url:e,project_id:t})=>`${e}::${t}`))),V=o(()=>z.value.filter(({role:e,isOwner:t})=>e===`maintainer`||t)),H=o(()=>V.value.filter(({providerUrl:e})=>X(e))),at=o(()=>H.value.map(e=>({value:e.id,label:e.name,meta:`#${C(e.id,26)}`,search:S(e.id)}))),ot=o(()=>{let e=z.value.find(({id:e})=>e===A.value);return!e||!X(e.providerUrl)?[]:z.value.filter(({id:t,providerUrl:n})=>t!==e.id&&n===e.providerUrl&&X(n))}),st=o(()=>ot.value.map(e=>({value:e.id,label:e.name,meta:`#${C(e.id,26)}`,search:S(e.id)}))),ct=o(()=>z.value.find(({id:e})=>e===A.value)??null),lt=o(()=>z.value.find(({id:e})=>e===j.value)??null),ut=o(()=>W.value.find(({value:e})=>e===M.value)?.label??s(`pages.publicProjects.relationLabels.relatedTo`)),dt=o(()=>T.value?X(T.value.providerUrl):!1),U=o(()=>!!(N.value&&P.value===N.value.name)),W=o(()=>[{value:`PART_OF`,label:s(`pages.publicProjects.relationLabels.partOf`)},{value:`USES_KNOWLEDGE_FROM`,label:s(`pages.publicProjects.relationLabels.usesKnowledgeFrom`)},{value:`DEPENDS_ON`,label:s(`pages.publicProjects.relationLabels.dependsOn`)},{value:`PROVIDES_TO`,label:s(`pages.publicProjects.relationLabels.providesTo`)},{value:`SHARES_CAPABILITY_WITH`,label:s(`pages.publicProjects.relationLabels.sharesCapabilityWith`)},{value:`SUCCESSOR_OF`,label:s(`pages.publicProjects.relationLabels.successorOf`)},{value:`RELATED_TO`,label:s(`pages.publicProjects.relationLabels.relatedTo`)}]),{dialogRef:ft,initialFocusRef:pt,onCancel:G,onKeydown:K}=b(()=>!!T.value,Q),{dialogRef:mt,initialFocusRef:ht,onCancel:q,onKeydown:J}=b(()=>!!N.value,xt);function Y(e){return`${e.providerUrl}::${e.id}`}function X(e){return it.value.find(({providerUrl:t})=>t===e)?.protocol!==nt}function Z(e){return e.profile?.purpose||e.profile?.scope||e.profile?.technical_summary||e.description||s(`pages.publicProjects.fallbackDescription`)}async function gt(e){try{if(B.value.has(Y(e))){let t=new URLSearchParams({personalSpaceId:w.activePersonalSpace?.id??``,providerUrl:e.providerUrl});await y(`/api/subscriptions/${encodeURIComponent(e.id)}?${t}`),w.notify(s(`pages.publicProjects.unsubscribed`,{name:e.name}))}else await _(`/api/subscriptions`,{personalSpaceId:w.activePersonalSpace?.id,projectId:e.id,providerUrl:e.providerUrl,projectName:e.name}),w.notify(s(`pages.publicProjects.subscribed`,{name:e.name}));await w.refresh()}catch(e){w.reportError(e)}}async function _t(e){if(Q(),T.value=e,E.value=[],D.value=[],!X(e.providerUrl))return;let t=++L,n=new AbortController;R=n,O.value=!0;try{let r=new URLSearchParams({providerUrl:e.providerUrl}),[i,a]=await Promise.all([v(`/api/projects/${encodeURIComponent(e.id)}/releases?${r}`,{signal:n.signal}),v(`/api/project-relations?${new URLSearchParams({projectId:e.id,providerUrl:e.providerUrl})}`,{signal:n.signal})]);if(t!==L||n.signal.aborted)return;E.value=i.releases??[],D.value=a.relations??[]}catch(e){if(t!==L||n.signal.aborted)return;w.reportError(e)}finally{if(t!==L||n.signal.aborted)return;O.value=!1,R===n&&(R=null)}}async function vt(e){Q(),await rt.push(se(`public`,e.id,`graph`))}function yt(){L+=1,R?.abort(),R=null,O.value=!1}function Q(){yt(),T.value=null,E.value=[],D.value=[]}function bt(e){X(e.providerUrl)&&(N.value=e,P.value=``,I.value=``)}function xt(){F.value||(N.value=null,P.value=``,I.value=``)}async function St(){let e=N.value;if(!e||!U.value){I.value=s(`pages.publicProjects.deleteNameRequired`);return}if(!X(e.providerUrl)){I.value=s(`pages.publicProjects.providerOperationsUnavailable`);return}F.value=!0,I.value=``;try{let t=new URLSearchParams({providerUrl:e.providerUrl});await y(`/api/projects/${encodeURIComponent(e.id)}?${t}`),T.value=null,N.value=null,w.notify(s(`pages.publicProjects.deleted`,{name:e.name})),await w.refresh()}catch(e){I.value=e instanceof Error?e.message:s(`pages.publicProjects.deleteFailed`),w.reportError(e)}finally{F.value=!1}}async function Ct(){let e=z.value.find(({id:e})=>e===A.value),t=z.value.find(({id:e})=>e===j.value);if(!e||!t){w.reportError(Error(s(`pages.publicProjects.chooseRelationProjects`)));return}if(!X(e.providerUrl)){w.reportError(Error(s(`pages.publicProjects.providerOperationsUnavailable`)));return}try{await _(`/api/project-relations`,{sourceProjectId:e.id,targetProjectId:t.id,providerUrl:e.providerUrl,relationType:M.value,note:null}),k.value=!1,A.value=``,j.value=``,w.notify(M.value===`PART_OF`?s(`pages.publicProjects.parentRelationSubmitted`):s(`pages.publicProjects.relationCreated`))}catch(e){w.reportError(e)}}te(yt);function $(e){return e?new Date(e).toLocaleString(re()):s(`pages.publicProjects.timeNotRecorded`)}return(i,a)=>(r(),m(`section`,ce,[f(`div`,le,[a[11]||=f(`span`,{class:`space-heading-icon`,"aria-hidden":`true`},[f(`span`,{class:`nav-icon nav-icon-public-project`})],-1),f(`div`,null,[f(`p`,null,c(d(s)(`pages.publicProjects.intro`)),1)]),f(`div`,{class:`public-space-stats`,"aria-label":d(s)(`pages.publicProjects.overviewAria`)},[f(`span`,null,[f(`strong`,null,c(z.value.length),1),e(c(d(s)(`pages.publicProjects.discoverable`)),1)]),f(`span`,null,[f(`strong`,null,c(d(w).state?.subscriptions.length??0),1),e(c(d(s)(`pages.publicProjects.subscribedCount`)),1)])],8,ue)]),f(`div`,de,[(r(!0),m(u,null,t(z.value,e=>(r(),m(`article`,{key:Y(e),class:`project-card`},[f(`div`,fe,[f(`div`,null,[f(`h4`,null,c(e.name),1)]),f(`div`,pe,[e.can_manage&&X(e.providerUrl)?(r(),m(`button`,{key:0,class:`management-action`,type:`button`,onClick:t=>bt(e)},c(d(s)(`pages.publicProjects.manage`)),9,me)):l(``,!0),f(`div`,he,[f(`strong`,null,c(e.profile?.assessment?.score??`—`),1),f(`span`,null,c(e.profile?.assessment?d(s)(`pages.publicProjects.coverage`):d(s)(`pages.publicProjects.noSummary`)),1)])])]),f(`p`,ge,c(Z(e)),1),f(`div`,_e,[(r(!0),m(u,null,t(e.profile?.sources??[],(e,t)=>(r(),m(`span`,{key:t,class:`status-chip`},c(e.kind??d(s)(`pages.publicProjects.material`)),1))),128)),e.profile?.sources?.length?l(``,!0):(r(),m(`span`,ve,c(d(s)(`pages.publicProjects.noSources`)),1))]),f(`div`,ye,[f(`span`,{class:ie([`status-chip`,{owner:e.isOwner}])},c(e.isOwner?`Owner`:e.role??`Reader`),3),f(`span`,be,c(e.isOwner?d(s)(`pages.publicProjects.publishedByYou`):d(s)(`pages.publicProjects.publiclyDiscoverable`)),1),e.current_release&&X(e.providerUrl)?(r(),m(`span`,xe,[f(`strong`,null,c(e.current_release.version),1),f(`span`,null,c($(e.current_release.published_at)),1)])):l(``,!0)]),f(`footer`,Se,[f(`button`,{class:`secondary-action`,type:`button`,onClick:t=>gt(e)},c(B.value.has(Y(e))?d(s)(`pages.publicProjects.unsubscribe`):d(s)(`pages.publicProjects.subscribe`)),9,Ce),f(`button`,{class:`primary-action`,type:`button`,onClick:t=>_t(e)},c(d(s)(`common.actions.viewDetails`)),9,we)])]))),128)),z.value.length?l(``,!0):(r(),m(`div`,Te,c(d(s)(`pages.publicProjects.noProjects`)),1))]),f(`section`,Ee,[f(`div`,De,[f(`div`,null,[f(`h3`,null,c(d(s)(`pages.publicProjects.relationsTitle`)),1),f(`p`,null,c(d(s)(`pages.publicProjects.relationsCopy`)),1)]),f(`button`,{class:`primary-action`,type:`button`,disabled:!H.value.length,onClick:a[0]||=e=>k.value=!k.value},c(d(s)(`pages.publicProjects.addRelation`)),9,Oe)]),V.value.length&&!H.value.length?(r(),m(`p`,ke,c(d(s)(`pages.publicProjects.providerOperationsUnavailable`)),1)):l(``,!0),k.value?(r(),m(`form`,{key:1,class:`relation-composer relation-composer-form compact-relation-form`,onSubmit:ne(Ct,[`prevent`])},[f(`label`,null,[e(c(d(s)(`pages.publicProjects.sourceProject`))+` `,1),p(x,{modelValue:A.value,"onUpdate:modelValue":a[1]||=e=>A.value=e,options:at.value,label:d(s)(`pages.publicProjects.sourceProjectLabel`),placeholder:d(s)(`pages.publicProjects.chooseProject`),searchable:``,required:``,onChange:a[2]||=e=>j.value=``},null,8,[`modelValue`,`options`,`label`,`placeholder`])]),f(`label`,null,[e(c(d(s)(`pages.publicProjects.relation`))+` `,1),p(x,{modelValue:M.value,"onUpdate:modelValue":a[3]||=e=>M.value=e,options:W.value,label:d(s)(`pages.publicProjects.relationTypeLabel`)},null,8,[`modelValue`,`options`,`label`])]),f(`label`,null,[e(c(d(s)(`pages.publicProjects.targetProject`))+` `,1),p(x,{modelValue:j.value,"onUpdate:modelValue":a[4]||=e=>j.value=e,options:st.value,label:d(s)(`pages.publicProjects.targetProjectLabel`),placeholder:d(s)(`pages.publicProjects.chooseProject`),searchable:``,required:``},null,8,[`modelValue`,`options`,`label`,`placeholder`])]),f(`div`,Ae,[f(`span`,null,c(d(s)(`pages.publicProjects.preview`)),1),f(`strong`,null,c(ct.value?.name||d(s)(`pages.publicProjects.sourceProject`))+` `+c(ut.value)+` `+c(lt.value?.name||d(s)(`pages.publicProjects.targetProject`)),1),M.value===`PART_OF`?(r(),m(`p`,je,c(d(s)(`pages.publicProjects.parentConfirmation`)),1)):(r(),m(`p`,Me,c(d(s)(`pages.publicProjects.relationBoundary`)),1))]),f(`button`,Ne,c(d(s)(`pages.publicProjects.addRelation`)),1)],32)):l(``,!0)]),f(`dialog`,{ref_key:`detailsDialogRef`,ref:ft,class:`project-dialog vue-dialog`,"aria-modal":`true`,"aria-labelledby":`public-project-details-title`,onCancel:a[6]||=(...e)=>d(G)&&d(G)(...e),onKeydown:a[7]||=(...e)=>d(K)&&d(K)(...e)},[T.value?(r(),m(`div`,Pe,[f(`header`,Fe,[f(`div`,null,[f(`h3`,Ie,c(T.value.name),1),f(`p`,null,c(Z(T.value)),1)]),f(`button`,{ref_key:`detailsInitialFocusRef`,ref:pt,class:`secondary-action`,type:`button`,onClick:Q},c(d(s)(`common.actions.close`)),513)]),dt.value?(r(),m(u,{key:0},[f(`section`,Le,[f(`h4`,null,c(d(s)(`pages.publicProjects.latestRelease`)),1),T.value.current_release?(r(),m(`p`,Re,[f(`strong`,null,c(T.value.current_release.version),1),e(` · `+c($(T.value.current_release.published_at)),1)])):(r(),m(`p`,ze,c(d(s)(`pages.publicProjects.noRelease`)),1))]),f(`div`,Be,[f(`section`,null,[f(`h4`,null,c(d(s)(`pages.publicProjects.releaseHistory`)),1),O.value?(r(),h(g,{key:0,variant:`compact`,label:d(s)(`pages.publicProjects.loading`)},null,8,[`label`])):l(``,!0),(r(!0),m(u,null,t(E.value,e=>(r(),m(`article`,{key:e.version,class:`project-release-item`},[f(`strong`,null,c(e.version),1),f(`p`,null,c(e.update_summary),1),f(`small`,null,c($(e.published_at)),1)]))),128)),!O.value&&!E.value.length?(r(),m(`p`,Ve,c(d(s)(`pages.publicProjects.noReleaseHistory`)),1)):l(``,!0)]),f(`section`,null,[f(`h4`,null,c(d(s)(`pages.publicProjects.relationsTitle`)),1),(r(!0),m(u,null,t(D.value,e=>(r(),m(`article`,{key:e.id,class:`project-detail-relation`},[f(`strong`,null,c(e.relation_type),1),f(`small`,null,c(e.status??`active`),1)]))),128)),!O.value&&!D.value.length?(r(),m(`p`,He,c(d(s)(`pages.publicProjects.noRelations`)),1)):l(``,!0)])])],64)):(r(),m(`section`,Ue,[f(`p`,We,c(d(s)(`pages.publicProjects.providerOperationsUnavailableTitle`)),1)])),f(`footer`,Ge,[f(`span`,null,c(d(s)(`pages.publicProjects.contentManagementSeparated`)),1),f(`button`,{class:`primary-action`,type:`button`,onClick:a[5]||=e=>vt(T.value)},c(d(s)(`pages.publicProjects.viewGraph`)),1)])])):l(``,!0)],544),f(`dialog`,{ref_key:`deletionDialogRef`,ref:mt,class:`project-dialog vue-dialog`,"aria-modal":`true`,"aria-labelledby":`public-project-deletion-title`,onCancel:a[9]||=(...e)=>d(q)&&d(q)(...e),onKeydown:a[10]||=(...e)=>d(J)&&d(J)(...e)},[N.value?(r(),m(`div`,Ke,[f(`header`,qe,[f(`div`,null,[f(`h3`,Je,c(d(s)(`pages.publicProjects.deleteTitle`)),1),f(`p`,null,c(d(s)(`pages.publicProjects.deleteCopy`)),1)]),f(`button`,{class:`secondary-action`,type:`button`,disabled:F.value,onClick:xt},c(d(s)(`common.actions.close`)),9,Ye)]),f(`label`,Xe,[e(c(d(s)(`pages.publicProjects.enterFullName`))+` `,1),f(`strong`,null,c(N.value.name),1),n(f(`input`,{ref_key:`deletionInitialFocusRef`,ref:ht,"onUpdate:modelValue":a[8]||=e=>P.value=e,autocomplete:`off`,disabled:F.value},null,8,Ze),[[ee,P.value]])]),I.value?(r(),m(`p`,Qe,c(I.value),1)):l(``,!0),f(`footer`,$e,[f(`span`,null,c(d(s)(`pages.publicProjects.deleteWarning`)),1),f(`button`,{class:`reject`,type:`button`,disabled:!U.value||F.value,onClick:St},[F.value?(r(),h(g,{key:0,variant:`inline`,label:d(s)(`pages.publicProjects.deleting`)},null,8,[`label`])):(r(),m(`span`,tt,c(d(s)(`pages.publicProjects.deletePermanently`)),1))],8,et)])])):l(``,!0)],544)]))}});export{w as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{F as e,N as t,T as n,Z as r,_ as i,a,at as o,b as s,h as c,j as ee,nt as l,v as u,w as te,x as d,y as f,z as p}from"./i18n-CIIxzhPZ.js";import{t as ne}from"./console-CrhIK67Y.js";import{t as m}from"./GrowthLoading-DIwqGFSc.js";import{i as h,n as g}from"./client-DTQ_tUr2.js";import{t as re}from"./SearchableSelect-Do6X3fXi.js";import{r as ie,t as _}from"./identity-CdFITIOu.js";import{u as v}from"./model-CJsrDUNb.js";var ae={class:`view`},oe={class:`section-title`},se={class:`review-list`,"data-review-queue":`personal`},ce={key:1,class:`review-error`,role:`alert`},le=[`disabled`],y={class:`review-stage`},ue={class:`review-meta`},de={class:`review-actions stacked-actions`},fe=[`disabled`,`onClick`],pe=[`disabled`,`onClick`],me=[`disabled`,`onClick`],he={key:2,class:`empty-state`},ge={key:0,class:`project-section`},_e={class:`section-toolbar`},ve={class:`review-list`,"data-review-queue":`shared`},b={key:1,class:`review-error`,role:`alert`},ye=[`disabled`],be={class:`review-stage`},xe={class:`review-meta`},Se={class:`review-actions`},Ce=[`disabled`,`onClick`],we=[`disabled`,`onClick`],Te={key:2,class:`empty-state`},x=n({__name:`ReviewPage`,setup(n){let x=ne(),S=r([]),C=r([]),w=r(``),T=r(!1),E=r(``),D=r(!1),O=r(``),k=r(new Set),A=r(new Set),j=0,M=null,N=0,P=null,F=i(()=>(x.state?.projects??[]).filter(e=>e.role===`maintainer`&&Oe(e))),Ee=i(()=>F.value.map(e=>({value:e.id,label:e.name,meta:`#`+_(e.id,26),search:ie(e.id)}))),I=i(()=>F.value.find(({id:e})=>e===w.value)??null),De=i(()=>{let e=I.value;return e?e.id+`\0`+e.providerUrl:``});function Oe(e){return L(x.state,e)}function L(e,t){if(e?.capabilities?.reviewProposals!==!0)return!1;let n=e.providers?.workspaces?.find(({providerUrl:e})=>e===t.providerUrl);if(!n||n.status!==`ready`)return!1;let r=n.capabilities;return!!(r&&typeof r==`object`&&r.reviewProposals===!0)}function R(e){return e?e.personalSpaces.find(({id:t})=>t===e.activePersonalSpaceId)?.id??e.personalSpaces[0]?.id??``:``}function z(e,t){let n=(e?.projects??[]).find(n=>n.id===t&&n.role===`maintainer`&&L(e,n));return n?n.id+`\0`+n.providerUrl:``}function B(e){return e instanceof Error&&e.message?e.message:a(`common.errors.loadFailed`)}function V(e){return!!(e&&typeof e==`object`&&`name`in e&&e.name===`AbortError`)}function H(e,t,n){let r=new Set(e.value);n?r.add(t):r.delete(t),e.value=r}function U(){j+=1,M?.abort(),M=null,S.value=[],E.value=``,T.value=!1}function W(){N+=1,P?.abort(),P=null,C.value=[],O.value=``,D.value=!1}function G(e,t){return t===j&&x.activePersonalSpace?.id===e}function K(e,t){let n=I.value;return t===N&&n?.id===e.id&&n.providerUrl===e.providerUrl}function q(e,t,n){return G(n,t)&&S.value.some(({id:t})=>t===e.id)}function J(e,t,n){return K(t,n)&&C.value.some(({id:t})=>t===e.id)}function Y(e,t){return e+`\0`+t}async function X(e=x.activePersonalSpace?.id){M?.abort();let t=++j,n=new AbortController;if(M=n,T.value=!0,E.value=``,!e){T.value=!1,M===n&&(M=null);return}try{let r=await g(`/api/personal-review?`+new URLSearchParams({personalSpaceId:e,status:`pending`}),{signal:n.signal});if(!G(e,t)||n.signal.aborted)return;S.value=r.drafts??[]}catch(r){if(!G(e,t)||n.signal.aborted||V(r))return;E.value=B(r)}finally{t===j&&M===n&&(T.value=!1,M=null)}}async function Z(){let e=I.value;if(!e)return;P?.abort();let t=++N,n=new AbortController;P=n,D.value=!0,O.value=``;try{let r=await g(`/api/review?`+new URLSearchParams({projectId:e.id,providerUrl:e.providerUrl,status:`pending`}),{signal:n.signal});if(!K(e,t)||n.signal.aborted)return;C.value=r.proposals??[]}catch(r){if(!K(e,t)||n.signal.aborted||V(r))return;O.value=B(r)}finally{t===N&&P===n&&(D.value=!1,P=null)}}async function Q(e,t){let n=x.activePersonalSpace?.id,r=j;if(!(!n||T.value||E.value||!q(e,r,n))&&!k.value.has(e.id)){H(k,e.id,!0);try{if(T.value||E.value||!q(e,r,n)||(await h(`/api/personal-review/`+encodeURIComponent(e.id)+`/decision`,{decision:t}),!G(n,r)))return;await Promise.all([X(n),x.refresh()])}catch(e){G(n,r)&&!V(e)&&(E.value=B(e))}finally{H(k,e.id,!1)}}}async function $(e,t){let n=I.value,r=N;if(!n||D.value||O.value||!J(e,n,r))return;let i=Y(n.id,e.id);if(!A.value.has(i)){H(A,i,!0);try{if(D.value||O.value||!J(e,n,r)||(await h(`/api/review/`+encodeURIComponent(e.id)+`/decision`,{projectId:n.id,providerUrl:n.providerUrl,decision:t,note:null}),!K(n,r)))return;await Z()}catch(e){K(n,r)&&!V(e)&&(O.value=B(e))}finally{H(A,i,!1)}}}return p(()=>x.state,(e,t)=>{if(!e||!t)return;let n=R(t),r=R(e);r&&r===n&&X(r);let i=w.value,a=z(t,i),o=z(e,i);o&&o===a&&Z()},{flush:`sync`}),p(()=>x.activePersonalSpace?.id??``,e=>{U(),e&&X(e)},{immediate:!0,flush:`sync`}),p(F,e=>{e.some(({id:e})=>e===w.value)||(w.value=e[0]?.id??``)},{immediate:!0,flush:`sync`}),p(De,()=>{W(),I.value&&Z()},{immediate:!0,flush:`sync`}),ee(()=>{U(),W()}),(n,r)=>(t(),d(`section`,ae,[u(`div`,oe,[u(`h3`,null,o(l(a)(`pages.review.personalTitle`)),1),u(`p`,null,o(l(a)(`pages.review.personalCopy`)),1)]),u(`div`,se,[T.value?(t(),f(m,{key:0,variant:`compact`,label:l(a)(`pages.review.loadingPersonal`)},null,8,[`label`])):s(``,!0),E.value?(t(),d(`div`,ce,[u(`span`,null,o(E.value),1),u(`button`,{class:`secondary-action`,type:`button`,disabled:T.value,onClick:r[0]||=e=>X()},o(l(a)(`common.actions.retry`)),9,le)])):s(``,!0),(t(!0),d(c,null,e(S.value,e=>(t(),d(`article`,{key:e.id,class:`review-item review-item-detailed`},[u(`div`,null,[u(`div`,y,o(l(a)(`pages.review.beforePublic`)),1),u(`h4`,null,o(e.episode.name),1),u(`p`,null,o(e.episode.summary||e.episode.source_description),1),u(`div`,ue,[u(`span`,null,o(l(a)(`common.counts.entities`,{count:e.episode.entities?.length??0})),1),u(`span`,null,o(l(a)(`common.counts.relationships`,{count:e.episode.relationships?.length??0})),1),u(`span`,null,o(l(v)(e.created_at)),1)])]),u(`div`,de,[k.value.has(e.id)?(t(),f(m,{key:0,variant:`inline`,label:l(a)(`pages.review.savingDecision`)},null,8,[`label`])):s(``,!0),u(`button`,{class:`secondary-action`,type:`button`,disabled:T.value||E.value!==``||k.value.has(e.id),onClick:t=>Q(e,`keep_personal`)},o(l(a)(`pages.review.keepPersonal`)),9,fe),u(`button`,{class:`reject`,type:`button`,disabled:T.value||E.value!==``||k.value.has(e.id),onClick:t=>Q(e,`ignore`)},o(l(a)(`pages.review.ignore`)),9,pe),l(x).state?.capabilities?.submitKnowledge?(t(),d(`button`,{key:1,class:`approve`,type:`button`,disabled:T.value||E.value!==``||k.value.has(e.id),onClick:t=>Q(e,`submit_public`)},o(l(a)(`pages.review.submitPublic`)),9,me)):s(``,!0)])]))),128)),!T.value&&!E.value&&!S.value.length?(t(),d(`div`,he,o(l(a)(`pages.review.noPersonalDrafts`)),1)):s(``,!0)]),l(x).state?.capabilities?.reviewProposals&&F.value.length?(t(),d(`section`,ge,[u(`div`,_e,[u(`div`,null,[u(`h3`,null,o(l(a)(`pages.review.publicTitle`)),1),u(`p`,null,o(l(a)(`pages.review.publicCopy`)),1)]),te(re,{modelValue:w.value,"onUpdate:modelValue":r[1]||=e=>w.value=e,options:Ee.value,label:l(a)(`pages.review.projectLabel`),"control-id":`review-project`,searchable:``},null,8,[`modelValue`,`options`,`label`])]),u(`div`,ve,[D.value?(t(),f(m,{key:0,variant:`compact`,label:l(a)(`pages.review.loadingPublic`)},null,8,[`label`])):s(``,!0),O.value?(t(),d(`div`,b,[u(`span`,null,o(O.value),1),u(`button`,{class:`secondary-action`,type:`button`,disabled:D.value,onClick:r[2]||=e=>Z()},o(l(a)(`common.actions.retry`)),9,ye)])):s(``,!0),(t(!0),d(c,null,e(C.value,e=>(t(),d(`article`,{key:e.id,class:`review-item`},[u(`div`,null,[u(`div`,be,o(l(a)(`pages.review.maintainerReview`)),1),u(`h4`,null,o(e.episode.name),1),u(`p`,null,o(e.episode.summary||e.episode.source_description),1),u(`div`,xe,[u(`span`,null,o(l(v)(e.created_at)),1)])]),u(`div`,Se,[A.value.has(Y(w.value,e.id))?(t(),f(m,{key:0,variant:`inline`,label:l(a)(`pages.review.savingDecision`)},null,8,[`label`])):s(``,!0),u(`button`,{class:`reject`,type:`button`,disabled:D.value||O.value!==``||A.value.has(Y(w.value,e.id)),onClick:t=>$(e,`reject`)},o(l(a)(`pages.review.reject`)),9,Ce),u(`button`,{class:`approve`,type:`button`,disabled:D.value||O.value!==``||A.value.has(Y(w.value,e.id)),onClick:t=>$(e,`approve`)},o(l(a)(`pages.review.approve`)),9,we)])]))),128)),!D.value&&!O.value&&!C.value.length?(t(),d(`div`,Te,o(l(a)(`pages.review.noProposals`)),1)):s(``,!0)])])):s(``,!0)]))}});export{x as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{C as e,F as t,H as n,N as r,T as i,V as a,Z as o,_ as s,at as c,b as l,c as u,d,h as f,j as p,m,nt as h,rt as g,u as _,v,w as y,x as b,y as x,z as S}from"./i18n-CIIxzhPZ.js";import{t as C}from"./GrowthLoading-DIwqGFSc.js";import{h as w,m as T}from"./useApi-CROJJdhE-fcdVGInY.js";import{t as E}from"./vue-router-BUX6njIv.js";import{a as D,i as O,n as k,r as A,t as j}from"./copy-CX6pyzAG.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=i({__name:`RoundtableCreate`,emits:[`created`,`cancel`],setup(i,{emit:a}){let p=a,g=o(``),y=o(`discussion`),S=o([{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=o(``),D=o(``),O=o(),j=o(3),M=o(30),q=o(30),J=o(5),Y=o(!1),X=o(``),Z=o({}),Q=o({}),ke=3,$=s(()=>g.value.trim()&&S.value.length>=2&&S.value.length<=6&&S.value.every(e=>e.name.trim())&&S.value.filter(e=>e.role===`moderator`).length===1&&S.value.every(e=>y.value!==`collaboration`||e.role!==`implementer`||!Z.value[e.id]||Q.value[e.id]?.trim())&&(y.value===`discussion`||S.value.some(e=>e.role===`implementer`)&&S.value.some(e=>e.role===`reviewer`)));function Ae(){S.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:g.value.trim(),mode:y.value,seats:S.value.map(e=>({...e,name:e.name.trim(),...e.role===`implementer`&&y.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}:{}}}:{}});p(`created`,e.id)}catch(e){X.value=e instanceof Error?e.message:k(`创建失败`,`Creation failed`)}finally{Y.value=!1}}}return(i,a)=>(r(),b(`section`,P,[v(`div`,F,[v(`h2`,I,c(h(k)(`创建圆桌`,`Create a roundtable`)),1),v(`button`,{type:`button`,onClick:a[0]||=e=>p(`cancel`),disabled:Y.value},c(h(k)(`关闭`,`Close`)),9,L)]),v(`form`,{onSubmit:m(je,[`prevent`])},[v(`label`,R,[e(c(h(k)(`共同目标`,`Shared goal`)),1),n(v(`textarea`,{"onUpdate:modelValue":a[1]||=e=>g.value=e,required:``,maxlength:`12000`,rows:`3`,placeholder:h(k)(`描述要一起解决的问题和期望的交付`,`Describe the problem and expected deliverable`)},null,8,z),[[d,g.value]])]),v(`label`,B,[e(c(h(k)(`方式`,`Mode`)),1),n(v(`select`,{"onUpdate:modelValue":a[2]||=e=>y.value=e},[v(`option`,V,c(h(A)(`discussion`)),1),v(`option`,H,c(h(A)(`collaboration`)),1)],512),[[_,y.value]])]),v(`div`,U,[v(`h3`,null,c(h(k)(`参与席位`,`Seats`)),1),v(`span`,null,c(S.value.length)+` / 6`,1)]),v(`p`,W,c(h(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),b(f,null,t(S.value,(i,a)=>(r(),b(`div`,{key:i.id,class:`rt-seat-form`},[v(`label`,G,[e(c(h(k)(`姓名`,`Name`)),1),n(v(`input`,{"onUpdate:modelValue":e=>i.name=e,required:``,maxlength:`120`,"aria-label":`${h(k)(`姓名`,`Name`)} ${a+1}`},null,8,K),[[d,i.name]])]),v(`label`,ee,[e(c(h(k)(`职责`,`Role`)),1),n(v(`select`,{"onUpdate:modelValue":e=>i.role=e,"aria-label":`${h(k)(`职责`,`Role`)} ${a+1}`},[(r(),b(f,null,t(w,e=>v(`option`,{key:e,value:e},c(h(A)(e)),9,ne)),64))],8,te),[[_,i.role]])]),v(`label`,re,[e(c(h(k)(`参与方式`,`Adapter`)),1),n(v(`select`,{"onUpdate:modelValue":e=>i.runtime=e,"aria-label":`${h(k)(`参与方式`,`Adapter`)} ${a+1}`},[(r(),b(f,null,t(T,e=>v(`option`,{key:e,value:e},c(h(A)(e)),9,ae)),64))],8,ie),[[_,i.runtime]])]),v(`button`,{type:`button`,disabled:S.value.length<=2||Y.value,"aria-label":`${h(k)(`移除`,`Remove`)} ${i.name||a+1}`,onClick:e=>S.value.splice(a,1)},`×`,8,oe),i.role===`implementer`&&y.value===`collaboration`?(r(),b(`div`,se,[v(`label`,null,[n(v(`input`,{"onUpdate:modelValue":e=>Z.value[i.id]=e,type:`checkbox`},null,8,ce),[[u,Z.value[i.id]]]),e(` `+c(h(k)(`允许此实施席位写入指定工作区`,`Allow this implementer to write to the specified workspace`)),1)]),Z.value[i.id]?(r(),b(`label`,le,[e(c(h(k)(`获授权工作区路径`,`Authorized workspace path`)),1),n(v(`input`,{"onUpdate:modelValue":e=>Q.value[i.id]=e,required:``},null,8,ue),[[d,Q.value[i.id]]])])):l(``,!0)])):l(``,!0)]))),128)),v(`button`,{type:`button`,disabled:S.value.length>=6||Y.value,onClick:Ae},c(h(k)(`添加席位`,`Add seat`)),9,de),!$.value&&g.value.trim()?(r(),b(`p`,fe,c(h(k)(`需要 2–6 个有姓名的席位和一位主持人;协作任务还需要实施者和审查者。`,`Use 2–6 named seats and exactly one moderator. Collaborative tasks also require an implementer and a reviewer.`)),1)):l(``,!0),v(`details`,pe,[v(`summary`,null,c(h(k)(`停止条件与项目`,`Limits and project`)),1),v(`label`,me,[e(c(h(k)(`已登记项目的本机路径(可选)`,`Registered local project path (optional)`)),1),n(v(`input`,{"onUpdate:modelValue":a[3]||=e=>E.value=e,placeholder:h(k)(`留空建立独立临时圆桌`,`Leave blank for an independent temporary room`)},null,8,he),[[d,E.value]])]),v(`p`,ge,c(h(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(),b(f,{key:0},[v(`label`,_e,[e(c(h(k)(`关联已有 Fuli 任务 ID(可选)`,`Existing Fuli task ID (optional)`)),1),n(v(`input`,{"onUpdate:modelValue":a[4]||=e=>D.value=e},null,512),[[d,D.value]])]),D.value.trim()?(r(),b(`label`,ve,[e(c(h(k)(`产物版本(用于任务验证)`,`Artifact revision (for task verification)`)),1),n(v(`input`,{"onUpdate:modelValue":a[5]||=e=>O.value=e,type:`number`,min:`0`,step:`1`},null,512),[[d,O.value,void 0,{number:!0}]])])):l(``,!0),v(`p`,ye,c(h(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)):l(``,!0),v(`div`,be,[v(`label`,xe,[e(c(h(k)(`讨论轮数`,`Discussion rounds`)),1),n(v(`input`,{"onUpdate:modelValue":a[6]||=e=>j.value=e,type:`number`,min:`1`,max:`3`,required:``},null,512),[[d,j.value,void 0,{number:!0}]])]),v(`label`,Se,[e(c(h(k)(`Agent 发言上限`,`Agent message limit`)),1),n(v(`input`,{"onUpdate:modelValue":a[7]||=e=>M.value=e,type:`number`,min:`1`,max:`30`,required:``},null,512),[[d,M.value,void 0,{number:!0}]])]),v(`label`,Ce,[e(c(h(k)(`总时限(分钟)`,`Total minutes`)),1),n(v(`input`,{"onUpdate:modelValue":a[8]||=e=>q.value=e,type:`number`,min:`1`,max:`30`,required:``},null,512),[[d,q.value,void 0,{number:!0}]])]),v(`label`,we,[e(c(h(k)(`单回合(分钟)`,`Minutes per turn`)),1),n(v(`input`,{"onUpdate:modelValue":a[9]||=e=>J.value=e,type:`number`,min:`1`,max:`5`,required:``},null,512),[[d,J.value,void 0,{number:!0}]])])])]),y.value===`collaboration`?(r(),b(`p`,Te,c(h(k)(`实施席位仍需要在工作端明确授权工作区写入;审查默认只读。执行结果等待你的验收。`,`Implementation still requires explicit workspace write permission on the worker. Reviews default to read only. Results await your acceptance.`)),1)):l(``,!0),X.value?(r(),b(`p`,Ee,c(X.value),1)):l(``,!0),v(`button`,{type:`submit`,class:`rt-primary`,disabled:!$.value||Y.value},[Y.value?(r(),x(C,{key:0,variant:`inline`,label:`创建圆桌 · Creating roundtable`})):(r(),b(`span`,Oe,c(h(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=i({__name:`RoundtableSeats`,props:{room:{},activeSeatId:{}},emits:[`changed`],setup(i,{emit:a}){let s=i,m=a,_=o(null),y=o(``),w=o(``),T=o(``),E=o(``),D=o(typeof window>`u`?``:window.location.origin),j=o(!1),M=o(``),P=o(``),F=!1;S(()=>s.room.id,()=>{_.value=null,w.value=``,T.value=``}),p(()=>{F=!0,_.value=null});async function I(e){if(y.value)return;y.value=`invite:${e}`,w.value=``,_.value=null,T.value=``;let t=s.room.id;try{let n=await N.invite(t,e);!F&&s.room.id===t&&(_.value=n)}catch(e){w.value=e instanceof Error?e.message:k(`创建邀请失败`,`Invitation failed`)}finally{y.value=``}}async function L(e){if(!y.value){y.value=`revoke:${e}`,w.value=``;try{await N.revoke(s.room.id,e),_.value?.seatId===e&&(_.value=null),m(`changed`)}catch(e){w.value=e instanceof Error?e.message:k(`撤销失败`,`Revocation failed`)}finally{y.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=s.room.seats.find(e=>e.id===_.value?.seatId);if(!e||e.runtime===`mcp`)return``;let t=e=>`'${e.replaceAll(`'`,`''`)}'`;return`fl roundtable worker --url ${t(D.value)} --room ${t(s.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(s.room.id)}/mcp`}return(a,o)=>(r(),b(`section`,J,[v(`div`,Y,[v(`h2`,X,c(h(k)(`圆桌席位`,`Seats`)),1),v(`span`,null,c(i.room.seats.length),1)]),v(`p`,Z,c(h(k)(`邀请仅授予一个席位的权限。加入记录是历史证据,当前在线状态由工作端轮询和回合回执确定。`,`An invitation grants access to one seat. Join records are historical evidence; worker polling and turn receipts determine current activity.`)),1),v(`div`,Q,[(r(!0),b(f,null,t(i.room.seats,e=>(r(),b(`article`,{key:e.id,class:g([`rt-seat`,{"rt-seat-current":e.id===i.activeSeatId}])},[v(`div`,ke,[v(`strong`,null,c(e.name),1),v(`span`,$,c(h(A)(e.role)),1)]),v(`p`,null,c(h(A)(e.runtime)),1),v(`p`,Ae,c(e.identityKind===`fuli`?h(k)(`已绑定 Fuli 身份`,`Bound Fuli identity`):h(k)(`独立任务席位`,`Independent task seat`)),1),v(`p`,je,c(e.joinedAt?`${h(k)(`加入于`,`Joined`)} ${h(O)(e.joinedAt)}`:h(k)(`尚无加入记录`,`No join recorded`)),1),e.execution?(r(),b(`p`,Me,c(h(A)(e.execution.permission))+` · `+c(e.execution.workspace),1)):l(``,!0),v(`div`,Ne,[v(`button`,{type:`button`,disabled:!!y.value,onClick:t=>I(e.id)},[y.value===`invite:${e.id}`?(r(),x(C,{key:0,variant:`inline`,label:`创建席位邀请 · Creating seat invitation`})):(r(),b(`span`,Fe,c(h(k)(`邀请参与`,`Invite participant`)),1))],8,Pe),v(`button`,{type:`button`,disabled:!!y.value,onClick:t=>L(e.id)},[y.value===`revoke:${e.id}`?(r(),x(C,{key:0,variant:`inline`,label:`撤销席位凭据 · Revoking seat credentials`})):(r(),b(`span`,Le,c(h(k)(`撤销凭据`,`Revoke credentials`)),1))],8,Ie)])],2))),128))]),w.value?(r(),b(`p`,Re,c(w.value),1)):l(``,!0),_.value?(r(),b(`section`,ze,[v(`div`,Be,[v(`h3`,Ve,c(h(k)(`席位邀请 · 仅此次显示`,`Seat invitation · shown once`)),1),v(`button`,{type:`button`,onClick:o[0]||=e=>{_.value=null,T.value=``}},c(h(k)(`隐藏凭据`,`Hide credential`)),1)]),v(`p`,null,c(i.room.seats.find(e=>e.id===_.value?.seatId)?.name)+` · `+c(h(k)(`有效期至`,`Expires`))+` `+c(h(O)(_.value.expiresAt)),1),v(`label`,He,[e(c(h(k)(`席位访问凭据`,`Seat credential`)),1),v(`input`,{value:_.value.seatToken,readonly:``,autocomplete:`off`,spellcheck:`false`,type:`password`,"data-testid":`seat-token`,onFocus:o[1]||=e=>e.target.select()},null,40,Ue)]),v(`button`,{type:`button`,onClick:o[2]||=e=>R(_.value.seatToken,`token`)},c(T.value===`token`?h(k)(`凭据已复制`,`Credential copied`):h(k)(`复制凭据`,`Copy credential`)),1),v(`p`,We,c(h(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),v(`label`,Ge,[e(c(h(k)(`参与者可访问的协调端地址`,`Coordinator URL reachable by participant`)),1),n(v(`input`,{"onUpdate:modelValue":o[3]||=e=>D.value=e,type:`url`},null,512),[[d,D.value]])]),v(`p`,Ke,c(h(k)(`另一台电脑需要可访问的 HTTPS 地址,并在协调端设置 public-url;本机测试可使用回环地址。`,`Another computer needs a reachable HTTPS URL configured as public-url on the coordinator. Loopback works for local testing.`)),1),i.room.seats.find(e=>e.id===_.value?.seatId)?.runtime===`mcp`?(r(),b(f,{key:1},[v(`p`,$e,c(h(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),v(`pre`,null,[v(`code`,null,c(B()),1)]),v(`button`,{type:`button`,onClick:o[9]||=e=>R(B(),`mcp`)},c(T.value===`mcp`?h(k)(`地址已复制`,`URL copied`):h(k)(`复制 MCP 地址`,`Copy MCP URL`)),1),v(`p`,et,c(h(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(),b(f,{key:0},[v(`label`,qe,[e(c(h(k)(`参与端本地工作区`,`Worker local workspace`)),1),n(v(`input`,{"onUpdate:modelValue":o[4]||=e=>E.value=e,placeholder:h(k)(`填写参与者电脑上的路径`,`Path on the participant’s computer`)},null,8,Je),[[d,E.value]])]),i.room.seats.find(e=>e.id===_.value?.seatId)?.execution?.permission===`workspace-write`?(r(),b(`label`,Ye,[n(v(`input`,{"onUpdate:modelValue":o[5]||=e=>j.value=e,type:`checkbox`},null,512),[[u,j.value]]),e(` `+c(h(k)(`工作端用户明确允许写入此工作区`,`The worker’s user explicitly permits writing to this workspace`)),1)])):l(``,!0),i.room.seats.find(e=>e.id===_.value?.seatId)?.runtime===`a2a`?(r(),b(`label`,Xe,[e(c(h(k)(`A2A 端点`,`A2A endpoint`)),1),n(v(`input`,{"onUpdate:modelValue":o[6]||=e=>M.value=e,type:`url`,placeholder:`https://…`},null,512),[[d,M.value]])])):l(``,!0),i.room.seats.find(e=>e.id===_.value?.seatId)?.runtime===`pi`?(r(),b(`label`,Ze,[e(c(h(k)(`参与电脑上的 Ollama 模型`,`Ollama model on participant computer`)),1),n(v(`input`,{"onUpdate:modelValue":o[7]||=e=>P.value=e,placeholder:`fuli-roundtable-qwen3-32k:latest`},null,512),[[d,P.value]])])):l(``,!0),v(`p`,null,c(h(k)(`在参与端 PowerShell 中,先设置环境变量,再启动工作端:`,`In the worker’s PowerShell, set the environment variable and start the worker:`)),1),v(`pre`,null,[v(`code`,null,`$env:FULI_ROUNDTABLE_TOKEN = '<`+c(h(k)(`粘贴席位凭据`,`PASTE_SEAT_CREDENTIAL`))+`>'
|
|
2
|
-
`+c(z()),1)]),v(`button`,{type:`button`,onClick:o[8]||=e=>R(z(),`command`)},c(T.value===`command`?h(k)(`命令已复制`,`Command copied`):h(k)(`复制工作端命令`,`Copy worker command`)),1),v(`p`,Qe,c(h(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)),v(`p`,tt,c(h(k)(`协调端地址`,`Coordinator URL`))+`: `+c(D.value)+` · `+c(h(k)(`圆桌`,`Room`))+`: `+c(i.room.id)+` · `+c(h(k)(`席位`,`Seat`))+`: `+c(_.value.seatId),1)])):l(``,!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=i({__name:`RoundtableResults`,props:{snapshot:{}},setup(n){let i=n,a=s(()=>i.snapshot.messages.filter(e=>e.actual)),o=s(()=>i.snapshot.messages.filter(e=>e.kind===`dissent`)),u=s(()=>[...i.snapshot.outcome?.artifacts??[],...i.snapshot.tasks.flatMap(e=>e.artifacts??[])]),d=e=>i.snapshot.room.seats.find(t=>t.id===e)?.name??e??k(`系统`,`System`);function p(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 m(e){return e==null?k(`未报告`,`Not reported`):typeof e==`string`?e:JSON.stringify(e,null,2)}function g(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(i,s)=>(r(),b(`section`,rt,[v(`div`,it,[v(`h2`,at,c(h(k)(`结果与证据`,`Results and evidence`)),1),n.snapshot.outcome?(r(),b(`span`,ot,c(h(A)(n.snapshot.outcome.acceptance)),1)):l(``,!0)]),n.snapshot.outcome?(r(),b(f,{key:0},[v(`p`,st,c(n.snapshot.outcome.body),1),v(`p`,ct,c(h(k)(`Agent 报告的结论保留为报告;人工验收和任务验证分别记录。`,`Agent conclusions remain reports. Human acceptance and task verification are recorded separately.`)),1),n.snapshot.outcome.verification?.reported==null?l(``,!0):(r(),b(`details`,lt,[v(`summary`,null,c(h(k)(`汇总验证报告`,`Outcome verification report`)),1),v(`p`,ut,c(m(n.snapshot.outcome.verification.reported)),1),v(`p`,dt,c(n.snapshot.outcome.verification.confirmed?h(k)(`服务端记录为已确认`,`Recorded as confirmed by server`):h(k)(`参与端报告,尚未确认`,`Participant report, not confirmed`)),1)]))],64)):(r(),b(`p`,ft,c(h(k)(`尚未提交最终结论。讨论、任务报告与实际执行记录会持续保留。`,`No final outcome has been submitted. Discussion, task reports and execution records are preserved.`)),1)),v(`h3`,null,c(h(k)(`任务`,`Tasks`)),1),n.snapshot.tasks.length?(r(),b(`div`,pt,[v(`table`,null,[v(`thead`,null,[v(`tr`,null,[v(`th`,null,c(h(k)(`任务 / 阶段`,`Task / phase`)),1),v(`th`,null,c(h(k)(`负责人`,`Assignee`)),1),v(`th`,null,c(h(k)(`权限`,`Permission`)),1),v(`th`,null,c(h(k)(`状态`,`Status`)),1),v(`th`,null,c(h(k)(`依赖`,`Dependencies`)),1)])]),v(`tbody`,null,[(r(!0),b(f,null,t(n.snapshot.tasks,t=>(r(),b(`tr`,{key:t.id},[v(`td`,null,[e(c(t.title||t.id),1),v(`small`,null,c(h(A)(t.phase)),1)]),v(`td`,null,c(d(t.seatId)),1),v(`td`,null,c(h(A)(t.permission)),1),v(`td`,null,c(h(A)(t.status)),1),v(`td`,null,c(t.dependencies?.join(`, `)||`—`),1)]))),128))])])])):(r(),b(`p`,mt,c(h(k)(`本圆桌尚无执行任务。讨论消息不算工作进程执行。`,`No execution tasks in this room. Discussion messages are not worker execution.`)),1)),(r(!0),b(f,null,t(n.snapshot.tasks.filter(e=>e.verification!=null),e=>(r(),b(`div`,{key:e.id},[v(`details`,ht,[v(`summary`,null,c(h(k)(`任务验证报告`,`Task verification report`))+` · `+c(e.title||e.id),1),v(`p`,gt,c(m(e.verification)),1)])]))),128)),v(`h3`,null,c(h(k)(`保留的分歧`,`Retained dissent`)),1),(r(!0),b(f,null,t(o.value,e=>(r(),b(`article`,{key:e.id,class:`rt-dissent`},[v(`strong`,null,c(d(e.seatId))+` · #`+c(e.seq),1),v(`p`,_t,c(e.body),1)]))),128)),(r(!0),b(f,null,t(n.snapshot.outcome?.dissent??[],(e,t)=>(r(),b(`p`,{key:t,class:`rt-message-body`},c(p(e)),1))),128)),!o.value.length&&!n.snapshot.outcome?.dissent?.length?(r(),b(`p`,vt,c(h(k)(`尚未记录分歧。`,`No dissent recorded.`)),1)):l(``,!0),v(`h3`,null,c(h(k)(`产物引用`,`Artifact references`)),1),u.value.length?(r(),b(`ul`,yt,[(r(!0),b(f,null,t(u.value,(e,t)=>(r(),b(`li`,{key:t},c(h(j)(e)),1))),128))])):(r(),b(`p`,bt,c(h(k)(`尚无产物引用。`,`No artifact references reported.`)),1)),v(`h3`,null,c(h(k)(`实际运行回执`,`Actual runtime receipts`)),1),v(`p`,xt,c(h(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),a.value.length?(r(),b(`div`,St,[v(`table`,Ct,[v(`thead`,null,[v(`tr`,null,[v(`th`,null,c(h(k)(`席位 / 消息`,`Seat / message`)),1),v(`th`,null,c(h(k)(`报告的应用`,`Reported application`)),1),v(`th`,null,c(h(k)(`报告的模型`,`Reported model`)),1),v(`th`,null,c(h(k)(`会话`,`Session`)),1),v(`th`,null,c(h(k)(`用量`,`Usage`)),1),v(`th`,null,c(h(k)(`证据来源`,`Provenance`)),1),v(`th`,null,c(h(k)(`时间`,`Time`)),1)])]),v(`tbody`,null,[(r(!0),b(f,null,t(a.value,t=>(r(),b(`tr`,{key:t.id},[v(`td`,null,[e(c(d(t.seatId)),1),v(`small`,null,`#`+c(t.seq)+` · `+c(h(A)(t.kind)),1)]),v(`td`,null,c(t.actual?.applicationLabel||t.actual?.reportedApplication||t.actual?.sourceApplication||h(k)(`未知`,`Unknown`)),1),v(`td`,null,c(t.actual?.model||h(k)(`未知`,`Unknown`)),1),v(`td`,null,c(t.actual?.sessionId||h(k)(`未知`,`Unknown`)),1),v(`td`,null,c(g(t.actual?.usage)),1),v(`td`,null,[e(c(h(k)(`参与端报告`,`Participant reported`)),1),v(`small`,null,c(h(k)(`身份未独立验证`,`Identity not independently verified`)),1)]),v(`td`,null,c(h(O)(t.createdAt)),1)]))),128))])])])):(r(),b(`p`,wt,c(h(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=i({__name:`RoundtableEvents`,props:{snapshot:{}},setup(n){let i=n,a=e=>i.snapshot.room.seats.find(t=>t.id===e)?.name??e;return(i,o)=>(r(),b(`details`,Et,[v(`summary`,null,c(h(k)(`回合尝试、恢复与历史事件`,`Turn attempts, recovery and history`)),1),v(`p`,Dt,c(h(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),n.snapshot.attempts?.length?(r(),b(`div`,Ot,[v(`table`,kt,[v(`thead`,null,[v(`tr`,null,[v(`th`,null,c(h(k)(`参与者`,`Participant`)),1),v(`th`,null,c(h(k)(`尝试`,`Attempt`)),1),v(`th`,null,c(h(k)(`状态`,`Status`)),1),v(`th`,null,c(h(k)(`领取时间`,`Claimed at`)),1),v(`th`,null,c(h(k)(`结束时间`,`Finished at`)),1)])]),v(`tbody`,null,[(r(!0),b(f,null,t(n.snapshot.attempts,e=>(r(),b(`tr`,{key:`${e.turnId}:${e.id}`},[v(`td`,null,c(a(e.seatId)),1),v(`td`,null,c(e.id),1),v(`td`,null,c(h(A)(e.status)),1),v(`td`,null,c(h(O)(e.startedAt)),1),v(`td`,null,c(e.finishedAt?h(O)(e.finishedAt):`—`),1)]))),128))])])])):(r(),b(`p`,At,c(h(k)(`尚无回合尝试。`,`No turn attempts yet.`)),1)),v(`h3`,null,c(h(k)(`过期结果存档`,`Stale result archive`)),1),v(`p`,jt,c(h(k)(`晚到结果保留在历史中,不替代当前讨论或交付结论。`,`Late results remain in history and do not replace current discussion or delivery outcomes.`)),1),(r(!0),b(f,null,t(n.snapshot.lateResults??[],e=>(r(),b(`article`,{key:`${e.turnId}:${e.attemptId}`,class:`rt-message`},[v(`strong`,null,c(a(e.seatId))+` · `+c(h(O)(e.receivedAt)),1),v(`p`,Mt,c(e.body),1),v(`small`,null,c(e.turnId)+` / `+c(e.attemptId),1)]))),128)),n.snapshot.lateResults?.length?l(``,!0):(r(),b(`p`,Nt,c(h(k)(`没有过期结果。`,`No stale results.`)),1)),v(`h3`,null,c(h(k)(`状态事件`,`Status events`)),1),v(`ol`,Pt,[(r(!0),b(f,null,t(n.snapshot.events??[],t=>(r(),b(`li`,{key:t.id},[v(`span`,null,c(h(A)(t.kind)),1),e(` · `+c(h(O)(t.createdAt)),1),t.kind===`cancellation_requested`&&t.confirmed!==!0?(r(),b(`small`,Ft,` · `+c(h(k)(`取消尚未确认`,`Cancellation not confirmed`)),1)):l(``,!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=i({__name:`RoundtableDetail`,props:{snapshot:{},refreshing:{type:Boolean}},emits:[`refresh`],setup(i,{emit:a}){let u=i,p=a,_=o(``),w=o(``),T=o(``),E=o(``),D=o(!1),j=o(!1),M=o(3),P=o(30),F=o(30),I=o(5),L=s(()=>u.snapshot.room),R=s(()=>[`concluded`,`failed`,`cancelled`].includes(L.value.status)),z=s(()=>L.value.seats.every(e=>e.joinedAt)),B=s(()=>L.value.status===`active`&&L.value.phase===`discussion`&&(L.value.round??1)>1&&u.snapshot.currentTurn?.status===`pending`&&L.value.phaseIndex===0),V=s(()=>[`paused`,`waiting_input`].includes(L.value.status)&&u.snapshot.currentTurn&&![`pending`,`claimed`].includes(u.snapshot.currentTurn.status)),H=s(()=>u.snapshot.currentTurn&&u.snapshot.currentTurn.status!==`claimed`&&[`discussion`,`planning`].includes(L.value.phase)),U=s(()=>!u.snapshot.currentTurn||[`pending`,`claimed`].includes(u.snapshot.currentTurn.status)),W=e=>L.value.seats.find(t=>t.id===e)?.name??e??k(`系统`,`System`);S(()=>L.value.id,()=>{_.value=``,w.value=``,D.value=!1,j.value=!1}),S(()=>`${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)}),p(`refresh`)}catch(e){w.value=e instanceof Error?e.message:k(`更新停止条件失败`,`Could not update limits`),p(`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=``,p(`refresh`)}catch(e){w.value=e instanceof Error?e.message:k(`操作失败`,`Action failed`),p(`refresh`)}finally{T.value=``}}}async function ee(){if(!(!_.value.trim()||T.value)){T.value=`message`,w.value=``;try{await N.message(L.value.id,_.value.trim()),_.value=``,p(`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(a,o)=>(r(),b(`div`,Lt,[v(`section`,Rt,[v(`div`,zt,[v(`span`,Bt,c(h(A)(L.value.mode))+` · `+c(L.value.binding?.projectId||h(k)(`独立临时任务`,`Independent temporary task`)),1),v(`span`,{class:`rt-tag`,"data-status":L.value.status},c(h(A)(L.value.status)),9,Vt)]),v(`h1`,null,c(L.value.goal),1),v(`div`,Ht,[v(`span`,null,c(h(k)(`阶段`,`Phase`))+`: `+c(h(A)(L.value.phase)),1),v(`span`,null,c(h(k)(`讨论轮数`,`Discussion rounds`))+`: `+c(L.value.round??0)+` / `+c(L.value.limits.maxRounds),1),v(`span`,null,c(h(k)(`Agent 发言`,`Agent messages`))+`: `+c(L.value.agentMessageCount??0)+` / `+c(L.value.limits.maxMessages),1),v(`span`,null,c(h(k)(`总时限`,`Time limit`))+`: `+c(Math.round(L.value.limits.maxDurationMs/6e4))+` `+c(h(k)(`分钟`,`min`)),1)]),L.value.stopReason?(r(),b(`p`,Ut,c(h(k)(`当前原因`,`Current reason`))+`: `+c(L.value.stopReason),1)):l(``,!0),v(`div`,Wt,[L.value.status===`draft`?(r(),b(`button`,{key:0,class:`rt-primary`,type:`button`,disabled:!!T.value||!z.value,onClick:o[0]||=e=>K(`start`)},c(h(k)(`开始圆桌`,`Start roundtable`)),9,Gt)):l(``,!0),L.value.status===`active`?(r(),b(`button`,{key:1,type:`button`,disabled:!!T.value,onClick:o[1]||=e=>K(`pause`)},c(h(k)(`暂停`,`Pause`)),9,Kt)):l(``,!0),[`paused`,`waiting_auth`,`waiting_input`].includes(L.value.status)&&!(L.value.phase===`synthesis`&&i.snapshot.outcome&&!i.snapshot.currentTurn)?(r(),b(`button`,{key:2,type:`button`,disabled:!!T.value||!U.value,onClick:o[2]||=e=>K(`resume`)},c(h(k)(`恢复`,`Resume`)),9,qt)):l(``,!0),R.value?l(``,!0):(r(),b(`button`,{key:3,type:`button`,disabled:!!T.value,onClick:o[3]||=e=>D.value=!D.value},c(h(k)(`停止`,`Stop`)),9,Jt)),v(`button`,{type:`button`,disabled:i.refreshing||!!T.value,onClick:o[4]||=e=>p(`refresh`)},c(h(k)(`刷新`,`Refresh`)),9,Yt)]),L.value.status===`draft`&&!z.value?(r(),b(`p`,Xt,c(h(k)(`先邀请所有席位,在各参与端完成预检并加入后开始。选择平台不会自动启动工作端。`,`Invite every seat and complete preflight and joining on each worker before starting. Choosing an adapter does not start a worker.`)),1)):l(``,!0),T.value&&T.value!==`message`?(r(),x(C,{key:2,variant:`inline`,label:te[T.value]||`更新圆桌 · Updating roundtable`},null,8,[`label`])):l(``,!0),D.value?(r(),b(`div`,Zt,[v(`p`,null,c(h(k)(`停止将拒绝新回合并请求取消当前运行。外部进程是否已取消,以工作端回执为准。`,`Stopping blocks new turns and requests cancellation of the current run. Worker receipts confirm whether external execution stopped.`)),1),v(`label`,Qt,[e(c(h(k)(`停止原因(可选)`,`Stop reason (optional)`)),1),n(v(`input`,{"onUpdate:modelValue":o[5]||=e=>E.value=e,maxlength:`2000`},null,512),[[d,E.value]])]),v(`button`,{type:`button`,disabled:!!T.value,onClick:o[6]||=e=>K(`stop`)},c(h(k)(`确认停止`,`Confirm stop`)),9,$t)])):l(``,!0),w.value?(r(),b(`p`,en,c(w.value),1)):l(``,!0),R.value?l(``,!0):(r(),b(`details`,tn,[v(`summary`,null,c(h(k)(`由你修改停止条件`,`Change limits explicitly`)),1),v(`p`,nn,c(h(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),v(`form`,{class:`rt-budget-form`,onSubmit:m(G,[`prevent`])},[v(`div`,rn,[v(`label`,an,[e(c(h(k)(`讨论轮数`,`Discussion rounds`)),1),n(v(`input`,{"onUpdate:modelValue":o[7]||=e=>M.value=e,type:`number`,min:`1`,max:`3`,required:``},null,512),[[d,M.value,void 0,{number:!0}]])]),v(`label`,on,[e(c(h(k)(`Agent 发言上限`,`Agent message limit`)),1),n(v(`input`,{"onUpdate:modelValue":o[8]||=e=>P.value=e,type:`number`,min:`1`,max:`30`,required:``},null,512),[[d,P.value,void 0,{number:!0}]])]),v(`label`,sn,[e(c(h(k)(`总时限(分钟)`,`Total minutes`)),1),n(v(`input`,{"onUpdate:modelValue":o[9]||=e=>F.value=e,type:`number`,min:`0.1`,step:`0.1`,max:`30`,required:``},null,512),[[d,F.value,void 0,{number:!0}]])]),v(`label`,cn,[e(c(h(k)(`单回合(分钟)`,`Minutes per turn`)),1),n(v(`input`,{"onUpdate:modelValue":o[10]||=e=>I.value=e,type:`number`,min:`0.1`,step:`0.1`,max:`5`,required:``},null,512),[[d,I.value,void 0,{number:!0}]])])]),v(`button`,{type:`submit`,disabled:!!T.value},c(h(k)(`确认修改停止条件`,`Confirm limit changes`)),9,ln)],32)]))]),y(nt,{room:L.value,"active-seat-id":i.snapshot.currentTurn?.seatId,onChanged:o[11]||=e=>p(`refresh`)},null,8,[`room`,`active-seat-id`]),v(`section`,un,[v(`div`,dn,[v(`h2`,fn,c(h(k)(`公开讨论`,`Shared discussion`)),1),v(`span`,null,c(i.snapshot.messages.length)+` `+c(h(k)(`条记录`,`records`)),1)]),i.snapshot.currentTurn?(r(),b(`div`,pn,[v(`strong`,null,c(h(k)(`当前回合`,`Current turn`))+` · `+c(W(i.snapshot.currentTurn.seatId)),1),v(`span`,null,c(h(A)(i.snapshot.currentTurn.status))+` · `+c(h(A)(i.snapshot.currentTurn.phase)),1),i.snapshot.currentTurn.deadline?(r(),b(`small`,mn,c(h(k)(`期限`,`Deadline`))+`: `+c(h(O)(i.snapshot.currentTurn.deadline)),1)):l(``,!0)])):l(``,!0),v(`div`,hn,[(r(!0),b(f,null,t(i.snapshot.messages,e=>(r(),b(`article`,{key:e.id,class:g([`rt-message`,{"rt-message-user":[`user`,`human`].includes(e.kind),"rt-message-system":e.kind===`system`}])},[v(`div`,gn,[v(`strong`,null,c(e.kind===`human`?h(k)(`你`,`You`):W(e.seatId)),1),v(`span`,null,c(h(A)(e.kind))+` · #`+c(e.seq),1)]),v(`p`,_n,c(e.body),1),v(`small`,null,c(h(O)(e.createdAt)),1)],2))),128)),i.snapshot.messages.length?l(``,!0):(r(),b(`p`,vn,c(h(k)(`这里会保存按顺序发布的提案、审查、交接和补充要求。`,`Ordered proposals, reviews, handoffs and your additions will appear here.`)),1))]),i.snapshot.hasMore?(r(),b(`button`,{key:1,type:`button`,disabled:i.refreshing,onClick:o[12]||=e=>p(`refresh`)},c(h(k)(`读取后续消息`,`Load remaining messages`)),9,yn)):l(``,!0),R.value?l(``,!0):(r(),b(`form`,{key:2,class:`rt-input-form`,onSubmit:m(ee,[`prevent`])},[v(`label`,bn,[e(c(h(k)(`补充要求`,`Add a requirement`)),1),n(v(`textarea`,{"onUpdate:modelValue":o[13]||=e=>_.value=e,maxlength:`16000`,rows:`3`,placeholder:h(k)(`所有获授权席位可见。不要填写凭据或他人的私有记忆。`,`Visible to all authorized seats. Keep credentials and others’ private memory out.`)},null,8,xn),[[d,_.value]])]),v(`button`,{type:`submit`,disabled:!_.value.trim()||!!T.value},[T.value===`message`?(r(),x(C,{key:0,variant:`inline`,label:`发送补充要求 · Sending requirement`})):(r(),b(`span`,Cn,c(h(k)(`发送`,`Send`)),1))],8,Sn)],32)),R.value?l(``,!0):(r(),b(`details`,wn,[v(`summary`,null,c(h(k)(`主持与恢复操作`,`Moderation and recovery`)),1),v(`p`,Tn,c(h(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),v(`label`,En,[e(c(h(k)(`操作原因(跳过回合时必填)`,`Reason (required when skipping a turn)`)),1),n(v(`input`,{"onUpdate:modelValue":o[14]||=e=>E.value=e,maxlength:`2000`},null,512),[[d,E.value]])]),v(`div`,Dn,[v(`button`,{type:`button`,disabled:!!T.value||!B.value,onClick:o[15]||=e=>K(`advance_phase`)},c(h(k)(`提前推进阶段`,`Advance phase early`)),9,On),v(`button`,{type:`button`,disabled:!!T.value||!V.value,onClick:o[16]||=e=>K(`retry_turn`)},c(h(k)(`重试回合`,`Retry turn`)),9,kn),v(`button`,{type:`button`,disabled:!!T.value||!H.value||!E.value.trim(),onClick:o[17]||=e=>K(`skip_turn`)},c(h(k)(`记录并跳过回合`,`Record and skip turn`)),9,An)])]))]),y(Tt,{snapshot:i.snapshot},null,8,[`snapshot`]),y(It,{snapshot:i.snapshot},null,8,[`snapshot`]),L.value.status===`waiting_input`&&L.value.phase===`synthesis`&&i.snapshot.outcome?(r(),b(`section`,jn,[v(`h2`,null,c(h(k)(`由你验收`,`Your acceptance`)),1),v(`p`,null,c(h(k)(`检查结论、保留分歧、产物和验证报告后,明确记录是否接受交付。人工接受不会制造模型用量或工作进程证据。`,`Review the conclusion, dissent, artifacts and verification reports before accepting delivery. Acceptance does not create model usage or worker evidence.`)),1),v(`button`,{type:`button`,disabled:!!T.value,onClick:o[18]||=e=>j.value=!j.value},c(h(k)(`检查并接受交付`,`Review and accept delivery`)),9,Mn),j.value?(r(),b(`div`,Nn,[v(`p`,null,c(h(k)(`此操作记录你的人工验收,并结束本圆桌。`,`This records your acceptance and concludes this room.`)),1),v(`button`,{class:`rt-primary`,type:`button`,disabled:!!T.value,onClick:o[19]||=e=>K(`complete`)},c(h(k)(`确认接受交付`,`Confirm acceptance`)),9,Pn),v(`button`,{type:`button`,onClick:o[20]||=e=>j.value=!1},c(h(k)(`继续检查`,`Keep reviewing`)),1)])):l(``,!0)])):l(``,!0)]))}});function In(e){let t=o([]),n=o(null),r=o(!1),i=o(``),a=o(!1),s=0,c=!1,l;async function u(){if(r.value||c)return;let o=s,l=e.value;r.value=!0;try{let e=n.value?.messages.at(-1)?.seq??0,r=l?await N.read(l,e):await N.list();if(c||o!==s)return;if(`room`in r){let e=new Map([...n.value?.messages??[],...r.messages].map(e=>[e.id,e]));n.value={...r,messages:[...e.values()].sort((e,t)=>e.seq-t.seq)}}else t.value=r.rooms;a.value=!0,i.value=``}catch(e){!c&&o===s&&(i.value=e instanceof Error?e.message:k(`读取圆桌失败`,`Could not read roundtable`))}finally{o===s&&(r.value=!1)}}function d(){c||(l=setTimeout(async()=>{await u(),d()},4e3))}return S(e,async()=>{s++,r.value=!1,n.value=null,i.value=``,a.value=!1;let e=s;l&&clearTimeout(l),await u(),e===s&&d()},{immediate:!0}),p(()=>{c=!0,s++,l&&clearTimeout(l)}),{rooms:t,snapshot:n,loading:r,loaded:a,error:i,refresh:u}}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=i({__name:`RoundtablesPage`,setup(n){let i=T(),u=w(),d=s(()=>typeof i.params.roomId==`string`?i.params.roomId:``),{rooms:p,snapshot:m,loading:g,loaded:_,error:S,refresh:j}=In(d),M=o(!1),N=s(()=>d.value?!!m.value:_.value||M.value);async function P(e){M.value=!1,await u.push(`/roundtables/${encodeURIComponent(e)}`)}return(n,i)=>(r(),b(`main`,Ln,[v(`header`,Rn,[v(`div`,null,[y(h(E),{class:`rt-brand`,to:`/`},{default:a(()=>[i[4]||=e(`Fuli `,-1),v(`span`,null,c(h(k)(`复利`,``)),1)]),_:1}),v(`div`,zn,[y(h(E),{to:`/roundtables`},{default:a(()=>[e(c(h(k)(`Agent 圆桌`,`Agent Roundtable`)),1)]),_:1}),i[5]||=v(`span`,{class:`rt-tag`},`Beta`,-1)])]),v(`div`,Bn,[d.value?(r(),x(h(E),{key:0,to:`/roundtables`},{default:a(()=>[e(c(h(k)(`全部圆桌`,`All roundtables`)),1)]),_:1})):l(``,!0),y(h(E),{to:`/project-agents`},{default:a(()=>[e(c(h(k)(`Agent 目录`,`Agent directory`)),1)]),_:1}),y(D)])]),v(`div`,Vn,[h(S)?(r(),b(`div`,Hn,[v(`strong`,null,c(h(k)(`读取失败,保留已加载内容`,`Could not refresh; loaded content is preserved`)),1),v(`p`,null,c(h(S)),1),v(`button`,{type:`button`,disabled:h(g),onClick:i[0]||=(...e)=>h(j)&&h(j)(...e)},c(h(k)(`重试`,`Retry`)),9,Un)])):l(``,!0),h(g)&&!N.value?(r(),x(C,{key:1,label:d.value?`读取圆桌与公开消息 · Loading roundtable and shared messages`:`读取圆桌列表 · Loading roundtable list`},null,8,[`label`])):l(``,!0),h(g)&&N.value?(r(),b(`div`,Wn,[y(C,{variant:`inline`,label:d.value?`刷新圆桌与公开消息 · Refreshing roundtable and shared messages`:`刷新圆桌列表 · Refreshing roundtable list`},null,8,[`label`])])):l(``,!0),h(m)?(r(),x(Fn,{key:h(m).room.id,snapshot:h(m),refreshing:h(g),onRefresh:h(j)},null,8,[`snapshot`,`refreshing`,`onRefresh`])):d.value?l(``,!0):(r(),b(f,{key:4},[v(`section`,Gn,[v(`div`,null,[v(`p`,Kn,c(h(k)(`一起讨论,分别执行,共同交付`,`Discuss together. Execute independently. Deliver with evidence.`)),1),v(`h1`,null,c(h(k)(`让不同 Agent 围绕同一个目标工作。`,`Bring different agents around one shared goal.`)),1),v(`p`,null,c(h(k)(`身份和长期知识由 Fuli 管理。本次讨论、分工、回合与结果留在圆桌里,执行由获授权的参与端完成。`,`Fuli manages identity and lasting knowledge. This roundtable keeps discussion, tasks, turns and outcomes; authorized participant workers perform execution.`)),1)]),v(`button`,{class:`rt-primary`,type:`button`,onClick:i[1]||=e=>M.value=!M.value},c(h(k)(`创建圆桌`,`Create roundtable`)),1)]),M.value?(r(),x(q,{key:0,onCreated:P,onCancel:i[2]||=e=>M.value=!1})):l(``,!0),v(`section`,qn,[v(`div`,Jn,[v(`h2`,Yn,c(h(k)(`你的圆桌`,`Your roundtables`)),1),v(`button`,{type:`button`,disabled:h(g),onClick:i[3]||=(...e)=>h(j)&&h(j)(...e)},c(h(k)(`刷新`,`Refresh`)),9,Xn)]),h(p).length?(r(),b(`div`,Zn,[(r(!0),b(f,null,t(h(p),e=>(r(),x(h(E),{key:e.id,class:`rt-room-card`,to:`/roundtables/${encodeURIComponent(e.id)}`},{default:a(()=>[v(`div`,Qn,[v(`span`,$n,c(h(A)(e.status)),1),v(`small`,null,c(h(A)(e.mode)),1)]),v(`h3`,null,c(e.goal),1),v(`p`,null,c(h(A)(e.phase))+` · `+c(e.seats.length)+` `+c(h(k)(`位参与者`,`participants`)),1),v(`small`,null,c(h(O)(e.updatedAt||e.createdAt)),1)]),_:2},1032,[`to`]))),128))])):!h(g)&&!h(S)?(r(),b(`p`,er,c(h(k)(`还没有圆桌。创建一个目标明确的讨论或协作任务,邀请独立参与者加入。`,`No roundtables yet. Create a focused discussion or collaborative task and invite independent participants.`)),1)):l(``,!0)]),v(`section`,tr,[v(`p`,nr,c(h(k)(`完整产品版图`,`Product capability map`)),1),v(`h2`,rr,c(h(k)(`同一个协作层,连接长期知识与实际工作。`,`One collaboration layer connects lasting knowledge to real work.`)),1),v(`ol`,null,[v(`li`,null,[v(`span`,ir,c(h(k)(`已提供`,`Available`)),1),v(`strong`,null,c(h(k)(`身份与知识`,`Identity and knowledge`)),1),v(`p`,null,c(h(k)(`Agent 职责、项目范围、确认状态与时间历史。按需读取,不因同桌共享私有记忆。`,`Agent roles, project scope, confirmation and temporal history. Retrieved on demand; shared rooms do not expose private memory.`)),1)]),v(`li`,null,[i[6]||=v(`span`,{class:`rt-tag`},`Beta`,-1),v(`strong`,null,c(h(k)(`圆桌协作`,`Roundtable coordination`)),1),v(`p`,null,c(h(k)(`共同目标 → 讨论 → 分工 → 实施 → 审查 → 汇总与人工验收。`,`Shared goal → discussion → planning → implementation → review → synthesis and human acceptance.`)),1)]),v(`li`,null,[i[7]||=v(`span`,{class:`rt-tag`},`Beta`,-1),v(`strong`,null,c(h(k)(`开放接入`,`Open adapters`)),1),v(`p`,null,c(h(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)]),v(`li`,null,[i[8]||=v(`span`,{class:`rt-tag`},`Beta`,-1),v(`strong`,null,c(h(k)(`跨电脑交付`,`Delivery across computers`)),1),v(`p`,null,c(h(k)(`一台协调端,各参与端主动领取授权回合;公开消息、分歧、产物和实际来源一起保留。`,`One coordinator; workers pull authorized turns. Shared messages, dissent, artifacts and actual sources stay together.`)),1)])]),v(`p`,ar,c(h(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};
|